Merge "Add phpdoc for some ApiQueryInfo properties"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Mon, 1 Feb 2016 22:40:29 +0000 (22:40 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Mon, 1 Feb 2016 22:40:29 +0000 (22:40 +0000)
1236 files changed:
CREDITS
RELEASE-NOTES-1.27
autoload.php
composer.json
docs/deferred.txt
docs/hooks.txt
images/.htaccess
includes/DefaultSettings.php
includes/DerivativeRequest.php
includes/EditPage.php
includes/FauxRequest.php
includes/GlobalFunctions.php
includes/Linker.php
includes/MediaWiki.php
includes/MimeMagic.php
includes/OutputPage.php
includes/Revision.php
includes/Sanitizer.php
includes/Setup.php
includes/Title.php
includes/WatchedItem.php
includes/WebRequest.php
includes/WebResponse.php
includes/ZhConversion.php [deleted file]
includes/actions/HistoryAction.php
includes/actions/RawAction.php
includes/actions/SubmitAction.php
includes/api/ApiBase.php
includes/api/ApiCreateAccount.php
includes/api/ApiHelp.php
includes/api/ApiLogin.php
includes/api/ApiLogout.php
includes/api/ApiMain.php
includes/api/ApiParamInfo.php
includes/api/ApiQueryInfo.php
includes/api/ApiQuerySiteinfo.php
includes/api/ApiStashEdit.php
includes/api/ApiUpload.php
includes/api/i18n/ce.json
includes/api/i18n/de.json
includes/api/i18n/en.json
includes/api/i18n/es.json
includes/api/i18n/fr.json
includes/api/i18n/gl.json
includes/api/i18n/he.json
includes/api/i18n/it.json
includes/api/i18n/ja.json
includes/api/i18n/ksh.json
includes/api/i18n/lki.json
includes/api/i18n/nl.json
includes/api/i18n/pt-br.json
includes/api/i18n/qqq.json
includes/api/i18n/uk.json
includes/api/i18n/zh-hans.json
includes/cache/LinkBatch.php
includes/changes/CategoryMembershipChange.php
includes/content/WikitextContent.php
includes/context/RequestContext.php
includes/db/DBConnRef.php
includes/db/Database.php
includes/db/DatabaseMysqlBase.php
includes/db/DatabasePostgres.php
includes/db/IDatabase.php
includes/db/loadbalancer/LBFactory.php
includes/db/loadbalancer/LoadBalancer.php
includes/debug/MWDebug.php
includes/debug/logger/monolog/KafkaHandler.php
includes/filerepo/file/LocalFile.php
includes/gallery/ImageGalleryBase.php
includes/htmlform/HTMLFormField.php
includes/htmlform/HTMLRadioField.php
includes/htmlform/HTMLUserTextField.php
includes/installer/DatabaseUpdater.php
includes/installer/LocalSettingsGenerator.php
includes/installer/MysqlUpdater.php
includes/installer/PostgresUpdater.php
includes/installer/SqliteUpdater.php
includes/installer/i18n/be-tarask.json
includes/installer/i18n/bg.json
includes/installer/i18n/br.json
includes/installer/i18n/ca.json
includes/installer/i18n/de.json
includes/installer/i18n/el.json
includes/installer/i18n/en.json
includes/installer/i18n/es.json
includes/installer/i18n/fa.json
includes/installer/i18n/fi.json
includes/installer/i18n/fr.json
includes/installer/i18n/gl.json
includes/installer/i18n/gor.json
includes/installer/i18n/he.json
includes/installer/i18n/hr.json
includes/installer/i18n/hrx.json
includes/installer/i18n/hsb.json
includes/installer/i18n/hu.json
includes/installer/i18n/ia.json
includes/installer/i18n/id.json
includes/installer/i18n/it.json
includes/installer/i18n/ja.json
includes/installer/i18n/ko.json
includes/installer/i18n/mk.json
includes/installer/i18n/nap.json
includes/installer/i18n/nb.json
includes/installer/i18n/nl-informal.json
includes/installer/i18n/nl.json
includes/installer/i18n/pl.json
includes/installer/i18n/pms.json
includes/installer/i18n/pt.json
includes/installer/i18n/ru.json
includes/installer/i18n/sl.json
includes/installer/i18n/sv.json
includes/installer/i18n/te.json
includes/installer/i18n/tl.json
includes/installer/i18n/tr.json
includes/installer/i18n/uk.json
includes/installer/i18n/vi.json
includes/installer/i18n/zh-hans.json
includes/installer/i18n/zh-hant.json
includes/jobqueue/JobRunner.php
includes/jobqueue/jobs/ActivityUpdateJob.php
includes/jobqueue/jobs/CategoryMembershipChangeJob.php
includes/jobqueue/jobs/HTMLCacheUpdateJob.php
includes/jobqueue/jobs/RecentChangesUpdateJob.php
includes/jobqueue/jobs/UploadFromUrlJob.php [deleted file]
includes/logging/LogEntry.php
includes/logging/LogFormatter.php
includes/logging/TagLogFormatter.php
includes/mail/EmailNotification.php
includes/media/Bitmap.php
includes/media/IPTC.php
includes/media/TransformationalImageHandler.php
includes/mime.info
includes/mime.types
includes/objectcache/ObjectCacheSessionHandler.php [new file with mode: 0644]
includes/objectcache/SqlBagOStuff.php
includes/page/Article.php
includes/page/WikiFilePage.php
includes/page/WikiPage.php
includes/parser/Parser.php
includes/parser/ParserOutput.php
includes/parser/Preprocessor_DOM.php
includes/parser/Preprocessor_Hash.php
includes/rcfeed/IRCColourfulRCFeedFormatter.php
includes/resourceloader/ResourceLoader.php
includes/resourceloader/ResourceLoaderFileModule.php
includes/resourceloader/ResourceLoaderImage.php
includes/resourceloader/ResourceLoaderModule.php
includes/session/BotPasswordSessionProvider.php [deleted file]
includes/session/CookieSessionProvider.php [deleted file]
includes/session/ImmutableSessionProviderWithCookie.php [deleted file]
includes/session/PHPSessionHandler.php [deleted file]
includes/session/Session.php [deleted file]
includes/session/SessionBackend.php [deleted file]
includes/session/SessionId.php [deleted file]
includes/session/SessionInfo.php [deleted file]
includes/session/SessionManager.php [deleted file]
includes/session/SessionManagerInterface.php [deleted file]
includes/session/SessionProvider.php [deleted file]
includes/session/SessionProviderInterface.php [deleted file]
includes/session/UserInfo.php [deleted file]
includes/specialpage/SpecialPageFactory.php
includes/specials/SpecialBotPasswords.php [deleted file]
includes/specials/SpecialMovepage.php
includes/specials/SpecialRecentchanges.php
includes/specials/SpecialUserlogin.php
includes/specials/SpecialUserlogout.php
includes/specials/SpecialVersion.php
includes/specials/SpecialWatchlist.php
includes/title/ForeignTitle.php
includes/upload/UploadBase.php
includes/upload/UploadFromStash.php
includes/upload/UploadFromUrl.php
includes/user/BotPassword.php [deleted file]
includes/user/CentralIdLookup.php
includes/user/LocalIdLookup.php
includes/user/User.php
includes/utils/BatchRowWriter.php
includes/utils/UIDGenerator.php
languages/Language.php
languages/Names.php [deleted file]
languages/classes/LanguageGan.php
languages/classes/LanguageIu.php
languages/classes/LanguageKk.php
languages/classes/LanguageKu.php
languages/classes/LanguageLa.php
languages/classes/LanguageShi.php
languages/classes/LanguageSr.php
languages/classes/LanguageTg.php
languages/classes/LanguageUz.php
languages/classes/LanguageZh.php
languages/data/Names.php [new file with mode: 0644]
languages/data/ZhConversion.php [new file with mode: 0644]
languages/i18n/af.json
languages/i18n/ar.json
languages/i18n/arz.json
languages/i18n/ast.json
languages/i18n/azb.json
languages/i18n/ba.json
languages/i18n/be-tarask.json
languages/i18n/be.json
languages/i18n/bg.json
languages/i18n/bn.json
languages/i18n/br.json
languages/i18n/bs.json
languages/i18n/ca.json
languages/i18n/cdo.json
languages/i18n/ce.json
languages/i18n/ckb.json
languages/i18n/cs.json
languages/i18n/cu.json
languages/i18n/cv.json
languages/i18n/da.json
languages/i18n/de.json
languages/i18n/diq.json
languages/i18n/el.json
languages/i18n/en.json
languages/i18n/eo.json
languages/i18n/es.json
languages/i18n/et.json
languages/i18n/eu.json
languages/i18n/fa.json
languages/i18n/fi.json
languages/i18n/fr.json
languages/i18n/fur.json
languages/i18n/gd.json
languages/i18n/gl.json
languages/i18n/gsw.json
languages/i18n/gu.json
languages/i18n/hak.json
languages/i18n/he.json
languages/i18n/hi.json
languages/i18n/hr.json
languages/i18n/hu.json
languages/i18n/ia.json
languages/i18n/ilo.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/jam.json
languages/i18n/ka.json
languages/i18n/kiu.json
languages/i18n/ko.json
languages/i18n/ksh.json
languages/i18n/la.json
languages/i18n/lb.json
languages/i18n/lki.json
languages/i18n/lt.json
languages/i18n/lv.json
languages/i18n/lzh.json
languages/i18n/mai.json
languages/i18n/mk.json
languages/i18n/ml.json
languages/i18n/mn.json
languages/i18n/ms.json
languages/i18n/my.json
languages/i18n/nap.json
languages/i18n/nb.json
languages/i18n/ne.json
languages/i18n/nl.json
languages/i18n/nn.json
languages/i18n/pa.json
languages/i18n/pl.json
languages/i18n/pms.json
languages/i18n/ps.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/ro.json
languages/i18n/roa-tara.json
languages/i18n/ru.json
languages/i18n/sah.json
languages/i18n/scn.json
languages/i18n/sd.json
languages/i18n/sgs.json
languages/i18n/sh.json
languages/i18n/sk.json
languages/i18n/sl.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/sv.json
languages/i18n/tg-cyrl.json
languages/i18n/th.json
languages/i18n/tr.json
languages/i18n/tt-cyrl.json
languages/i18n/tyv.json
languages/i18n/uk.json
languages/i18n/ur.json
languages/i18n/vi.json
languages/i18n/vo.json
languages/i18n/wuu.json
languages/i18n/xmf.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
languages/messages/MessagesEn.php
maintenance/Maintenance.php
maintenance/archives/patch-bot_passwords.sql [deleted file]
maintenance/attachLatest.php
maintenance/benchmarks/bench_HTTP_HTTPS.php
maintenance/benchmarks/bench_Wikimedia_base_convert.php
maintenance/benchmarks/bench_delete_truncate.php
maintenance/benchmarks/bench_if_switch.php
maintenance/benchmarks/bench_strtr_str_replace.php
maintenance/benchmarks/bench_utf8_title_check.php
maintenance/benchmarks/bench_wfIsWindows.php
maintenance/benchmarks/benchmarkHooks.php
maintenance/benchmarks/benchmarkPurge.php
maintenance/changePassword.php
maintenance/checkBadRedirects.php
maintenance/checkComposerLockUpToDate.php
maintenance/checkImages.php
maintenance/checkLess.php
maintenance/checkSyntax.php
maintenance/checkUsernames.php
maintenance/cleanupAncientTables.php
maintenance/cleanupBlocks.php
maintenance/cleanupCaps.php
maintenance/cleanupImages.php
maintenance/cleanupRemovedModules.php
maintenance/cleanupSpam.php
maintenance/cleanupTitles.php
maintenance/cleanupUploadStash.php
maintenance/cleanupWatchlist.php
maintenance/clearInterwikiCache.php
maintenance/compareParserCache.php
maintenance/compareParsers.php
maintenance/convertExtensionToRegistration.php
maintenance/convertLinks.php
maintenance/convertUserOptions.php
maintenance/copyFileBackend.php
maintenance/copyJobQueue.php
maintenance/createAndPromote.php
maintenance/createCommonPasswordCdb.php
maintenance/deleteArchivedFiles.php
maintenance/deleteArchivedRevisions.php
maintenance/deleteBatch.php
maintenance/deleteDefaultMessages.php
maintenance/deleteEqualMessages.php
maintenance/deleteOldRevisions.php
maintenance/deleteOrphanedRevisions.php
maintenance/deleteRevision.php
maintenance/deleteSelfExternals.php
maintenance/dictionary/mediawiki.dic
maintenance/dumpBackup.php
maintenance/dumpIterator.php
maintenance/dumpLinks.php
maintenance/dumpTextPass.php
maintenance/dumpUploads.php
maintenance/edit.php
maintenance/eraseArchivedFile.php
maintenance/exportSites.php
maintenance/fetchText.php
maintenance/fileOpPerfTest.php
maintenance/findDeprecated.php
maintenance/findHooks.php
maintenance/findMissingFiles.php
maintenance/findOrphanedFiles.php
maintenance/fixDefaultJsonContentPages.php
maintenance/fixDoubleRedirects.php
maintenance/fixExtLinksProtocolRelative.php
maintenance/fixTimestamps.php
maintenance/fixUserRegistration.php
maintenance/generateJsonI18n.php
maintenance/generateSitemap.php
maintenance/getConfiguration.php
maintenance/getLagTimes.php
maintenance/getSlaveServer.php
maintenance/getText.php
maintenance/importDump.php
maintenance/importSiteScripts.php
maintenance/importSites.php
maintenance/importTextFiles.php
maintenance/initEditCount.php
maintenance/initSiteStats.php
maintenance/jsparse.php
maintenance/lag.php
maintenance/language/alltrans.php
maintenance/language/date-formats.php
maintenance/language/digit2html.php
maintenance/language/dumpMessages.php
maintenance/language/generateNormalizerDataAr.php
maintenance/language/generateNormalizerDataMl.php
maintenance/language/generateUtf8Case.php
maintenance/language/langmemusage.php
maintenance/language/listVariants.php
maintenance/language/zhtable/Makefile
maintenance/language/zhtable/Makefile.py
maintenance/makeTestEdits.php
maintenance/mctest.php
maintenance/mergeMessageFileList.php
maintenance/migrateFileRepoLayout.php
maintenance/migrateUserGroup.php
maintenance/minify.php
maintenance/moveBatch.php
maintenance/mwdocgen.php
maintenance/namespaceDupes.php
maintenance/nukeNS.php
maintenance/nukePage.php
maintenance/oracle/alterSharedConstraints.php
maintenance/orphans.php
maintenance/pageExists.php
maintenance/parse.php
maintenance/patchSql.php
maintenance/populateBacklinkNamespace.php
maintenance/populateCategory.php
maintenance/populateContentModel.php
maintenance/populateFilearchiveSha1.php
maintenance/populateImageSha1.php
maintenance/populateLogSearch.php
maintenance/populateLogUsertext.php
maintenance/populateParentId.php
maintenance/populateRecentChangesSource.php
maintenance/populateRevisionLength.php
maintenance/populateRevisionSha1.php
maintenance/postgres/archives/patch-bot_passwords.sql [deleted file]
maintenance/postgres/tables.sql
maintenance/protect.php
maintenance/pruneFileCache.php
maintenance/purgeChangedFiles.php
maintenance/purgeChangedPages.php
maintenance/purgeList.php
maintenance/purgeOldText.php
maintenance/reassignEdits.php
maintenance/rebuildFileCache.php
maintenance/rebuildImages.php
maintenance/rebuildLocalisationCache.php
maintenance/rebuildSitesCache.php
maintenance/rebuildall.php
maintenance/rebuildmessages.php
maintenance/rebuildrecentchanges.php
maintenance/rebuildtextindex.php
maintenance/refreshFileHeaders.php
maintenance/refreshImageMetadata.php
maintenance/refreshLinks.php
maintenance/renderDump.php
maintenance/resetUserEmail.php [new file with mode: 0644]
maintenance/resetUserTokens.php
maintenance/rollbackEdits.php
maintenance/runBatchedQuery.php
maintenance/runJobs.php
maintenance/showJobs.php
maintenance/showSiteStats.php
maintenance/sql.php
maintenance/sqlite.php
maintenance/storage/compressOld.php
maintenance/storage/fixBug20757.php
maintenance/storage/orphanStats.php
maintenance/syncFileBackend.php
maintenance/tables.sql
maintenance/undelete.php
maintenance/update.php
maintenance/updateArticleCount.php
maintenance/updateCollation.php
maintenance/updateDoubleWidthSearch.php
maintenance/updateRestrictions.php
maintenance/updateSearchIndex.php
maintenance/wrapOldPasswords.php
resources/Resources.php
resources/lib/oojs-ui/i18n/ce.json
resources/lib/oojs-ui/i18n/glk.json
resources/lib/oojs-ui/i18n/ka.json
resources/lib/oojs-ui/i18n/tr.json
resources/lib/oojs-ui/i18n/tt-cyrl.json
resources/lib/oojs-ui/oojs-ui-apex-noimages.css
resources/lib/oojs-ui/oojs-ui-apex.js
resources/lib/oojs-ui/oojs-ui-mediawiki-noimages.css
resources/lib/oojs-ui/oojs-ui-mediawiki.js
resources/lib/oojs-ui/oojs-ui.js
resources/lib/oojs-ui/themes/apex/images/icons/advanced.png
resources/lib/oojs-ui/themes/apex/images/icons/advanced.svg
resources/lib/oojs-ui/themes/apex/images/icons/align-center.svg
resources/lib/oojs-ui/themes/apex/images/icons/align-float-left.svg
resources/lib/oojs-ui/themes/apex/images/icons/align-float-right.svg
resources/lib/oojs-ui/themes/apex/images/icons/arched-arrow-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/arched-arrow-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/arrow-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/arrow-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/articleRedirect-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/articleRedirect-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/block.svg
resources/lib/oojs-ui/themes/apex/images/icons/blockUndo-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/blockUndo-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/bold-a.svg
resources/lib/oojs-ui/themes/apex/images/icons/bold-arab-ain.png
resources/lib/oojs-ui/themes/apex/images/icons/bold-arab-ain.svg
resources/lib/oojs-ui/themes/apex/images/icons/bold-arab-dad.png
resources/lib/oojs-ui/themes/apex/images/icons/bold-arab-dad.svg
resources/lib/oojs-ui/themes/apex/images/icons/bold-armn-to.png
resources/lib/oojs-ui/themes/apex/images/icons/bold-armn-to.svg
resources/lib/oojs-ui/themes/apex/images/icons/bold-cyrl-be.svg
resources/lib/oojs-ui/themes/apex/images/icons/bold-cyrl-zhe.png
resources/lib/oojs-ui/themes/apex/images/icons/bold-cyrl-zhe.svg
resources/lib/oojs-ui/themes/apex/images/icons/bold-g.png
resources/lib/oojs-ui/themes/apex/images/icons/bold-g.svg
resources/lib/oojs-ui/themes/apex/images/icons/bookmark-rtl-invert.svg
resources/lib/oojs-ui/themes/apex/images/icons/bookmark-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/browser-rtl-invert.svg
resources/lib/oojs-ui/themes/apex/images/icons/browser-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/calendar-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/calendar-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/cancel.png
resources/lib/oojs-ui/themes/apex/images/icons/cancel.svg
resources/lib/oojs-ui/themes/apex/images/icons/caret-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/caretDown.svg
resources/lib/oojs-ui/themes/apex/images/icons/caretUp.svg
resources/lib/oojs-ui/themes/apex/images/icons/case-sensitive.png
resources/lib/oojs-ui/themes/apex/images/icons/case-sensitive.svg
resources/lib/oojs-ui/themes/apex/images/icons/check.svg
resources/lib/oojs-ui/themes/apex/images/icons/clock-invert.png
resources/lib/oojs-ui/themes/apex/images/icons/clock-invert.svg
resources/lib/oojs-ui/themes/apex/images/icons/clock.png
resources/lib/oojs-ui/themes/apex/images/icons/clock.svg
resources/lib/oojs-ui/themes/apex/images/icons/code.png
resources/lib/oojs-ui/themes/apex/images/icons/code.svg
resources/lib/oojs-ui/themes/apex/images/icons/comment.png
resources/lib/oojs-ui/themes/apex/images/icons/comment.svg
resources/lib/oojs-ui/themes/apex/images/icons/edit-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/edit-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/editLock-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/editLock-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/editUndo-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/editUndo-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/ellipsis.svg
resources/lib/oojs-ui/themes/apex/images/icons/find-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/find-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/find-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/find-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/flag-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/flag-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/flagUndo-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/flagUndo-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/funnel-ltr-invert.svg
resources/lib/oojs-ui/themes/apex/images/icons/funnel-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/funnel-rtl-invert.svg
resources/lib/oojs-ui/themes/apex/images/icons/funnel-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/help-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/help-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/history.png
resources/lib/oojs-ui/themes/apex/images/icons/history.svg
resources/lib/oojs-ui/themes/apex/images/icons/image.svg
resources/lib/oojs-ui/themes/apex/images/icons/imageGallery-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/imageGallery-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/indent-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/indent-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/indent-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/info.svg
resources/lib/oojs-ui/themes/apex/images/icons/italic-arab-keheh-jeem.png
resources/lib/oojs-ui/themes/apex/images/icons/italic-arab-keheh-jeem.svg
resources/lib/oojs-ui/themes/apex/images/icons/italic-arab-meem.png
resources/lib/oojs-ui/themes/apex/images/icons/italic-arab-meem.svg
resources/lib/oojs-ui/themes/apex/images/icons/italic-armn-sha.png
resources/lib/oojs-ui/themes/apex/images/icons/italic-armn-sha.svg
resources/lib/oojs-ui/themes/apex/images/icons/italic-c.png
resources/lib/oojs-ui/themes/apex/images/icons/italic-c.svg
resources/lib/oojs-ui/themes/apex/images/icons/italic-d.png
resources/lib/oojs-ui/themes/apex/images/icons/italic-d.svg
resources/lib/oojs-ui/themes/apex/images/icons/italic-geor-kan.png
resources/lib/oojs-ui/themes/apex/images/icons/italic-geor-kan.svg
resources/lib/oojs-ui/themes/apex/images/icons/italic-s.png
resources/lib/oojs-ui/themes/apex/images/icons/italic-s.svg
resources/lib/oojs-ui/themes/apex/images/icons/key-rtl-invert.svg
resources/lib/oojs-ui/themes/apex/images/icons/key-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/keyboard-ltr-invert.svg
resources/lib/oojs-ui/themes/apex/images/icons/keyboard-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/keyboard-rtl-invert.svg
resources/lib/oojs-ui/themes/apex/images/icons/keyboard-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/language-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/language-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/language-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/language-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/link.svg
resources/lib/oojs-ui/themes/apex/images/icons/listBullet-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/listBullet-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/listBullet-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/listNumbered-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/listNumbered-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/listNumbered-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/lock.png
resources/lib/oojs-ui/themes/apex/images/icons/lock.svg
resources/lib/oojs-ui/themes/apex/images/icons/logOut-ltr-invert.svg
resources/lib/oojs-ui/themes/apex/images/icons/logOut-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/logOut-rtl-invert.svg
resources/lib/oojs-ui/themes/apex/images/icons/logOut-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/menu.svg
resources/lib/oojs-ui/themes/apex/images/icons/move-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/newWindow-ltr-invert.svg
resources/lib/oojs-ui/themes/apex/images/icons/newWindow-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/newWindow-rtl-invert.svg
resources/lib/oojs-ui/themes/apex/images/icons/newWindow-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/newline-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/newline-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/noWikiText-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/noWikiText-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/notice.png
resources/lib/oojs-ui/themes/apex/images/icons/notice.svg
resources/lib/oojs-ui/themes/apex/images/icons/outdent-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/outdent-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/outdent-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/printer-rtl-invert.svg
resources/lib/oojs-ui/themes/apex/images/icons/printer-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/puzzle-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/puzzle-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/quotes-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/quotes-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/quotes-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/quotes-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/quotesAdd-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/quotesAdd-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/quotesAdd-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/quotesAdd-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/regular-expression.png
resources/lib/oojs-ui/themes/apex/images/icons/regular-expression.svg
resources/lib/oojs-ui/themes/apex/images/icons/ribbonPrize-invert.svg
resources/lib/oojs-ui/themes/apex/images/icons/ribbonPrize.svg
resources/lib/oojs-ui/themes/apex/images/icons/search.png
resources/lib/oojs-ui/themes/apex/images/icons/search.svg
resources/lib/oojs-ui/themes/apex/images/icons/secure-link.png
resources/lib/oojs-ui/themes/apex/images/icons/secure-link.svg
resources/lib/oojs-ui/themes/apex/images/icons/settings.svg
resources/lib/oojs-ui/themes/apex/images/icons/specialCharacter.png
resources/lib/oojs-ui/themes/apex/images/icons/specialCharacter.svg
resources/lib/oojs-ui/themes/apex/images/icons/strikethrough-s.png
resources/lib/oojs-ui/themes/apex/images/icons/strikethrough-s.svg
resources/lib/oojs-ui/themes/apex/images/icons/sun-rtl-invert.svg
resources/lib/oojs-ui/themes/apex/images/icons/sun-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/tag.png
resources/lib/oojs-ui/themes/apex/images/icons/tag.svg
resources/lib/oojs-ui/themes/apex/images/icons/templateAdd-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/templateAdd-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/templateAdd-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/templateAdd-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/text-dir-lefttoright.svg
resources/lib/oojs-ui/themes/apex/images/icons/text-dir-righttoleft.svg
resources/lib/oojs-ui/themes/apex/images/icons/trash.svg
resources/lib/oojs-ui/themes/apex/images/icons/trashUndo-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/trashUndo-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/unLock-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/unLock-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/unLock-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/underline-u.svg
resources/lib/oojs-ui/themes/apex/images/icons/watchlist-ltr-invert.svg
resources/lib/oojs-ui/themes/apex/images/icons/watchlist-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/watchlist-rtl-invert.svg
resources/lib/oojs-ui/themes/apex/images/icons/watchlist-rtl.svg
resources/lib/oojs-ui/themes/apex/images/indicators/alert.png
resources/lib/oojs-ui/themes/apex/images/indicators/alert.svg
resources/lib/oojs-ui/themes/apex/images/indicators/required.svg
resources/lib/oojs-ui/themes/apex/images/indicators/search-ltr.png
resources/lib/oojs-ui/themes/apex/images/indicators/search-ltr.svg
resources/lib/oojs-ui/themes/apex/images/indicators/search-rtl.png
resources/lib/oojs-ui/themes/apex/images/indicators/search-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/icons-accessibility.json
resources/lib/oojs-ui/themes/mediawiki/icons-alerts.json
resources/lib/oojs-ui/themes/mediawiki/icons-content.json
resources/lib/oojs-ui/themes/mediawiki/icons-editing-advanced.json
resources/lib/oojs-ui/themes/mediawiki/icons-editing-core.json
resources/lib/oojs-ui/themes/mediawiki/icons-editing-list.json
resources/lib/oojs-ui/themes/mediawiki/icons-editing-styling.json
resources/lib/oojs-ui/themes/mediawiki/icons-interactions.json
resources/lib/oojs-ui/themes/mediawiki/icons-layout.json
resources/lib/oojs-ui/themes/mediawiki/icons-location.json
resources/lib/oojs-ui/themes/mediawiki/icons-media.json
resources/lib/oojs-ui/themes/mediawiki/icons-moderation.json
resources/lib/oojs-ui/themes/mediawiki/icons-movement.json
resources/lib/oojs-ui/themes/mediawiki/icons-user.json
resources/lib/oojs-ui/themes/mediawiki/icons-wikimedia.json
resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/align-center-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/align-center.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-left-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-left.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-right-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-right.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/article-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/article-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/article-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/article-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/block-destructive.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/block-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/block.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/blockUndo-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/blockUndo-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/blockUndo-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/blockUndo-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-a-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-a.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-be-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-be.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/book-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/book-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bright-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bright-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bright.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-destructive.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-destructive.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/caretDown-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/caretDown.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/caretUp-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/caretUp.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/check-constructive.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/check-destructive.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/check-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/check-progressive.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/check.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/clock-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/clock.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/code-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/code-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/code.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/code.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/comment-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/comment-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/comment.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/comment.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/die-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/die-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/download-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/download-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/download-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/download-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-ltr-progressive.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-rtl-progressive.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/ellipsis-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/ellipsis.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/eye-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/eye.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/flagUndo-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/flagUndo-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/flagUndo-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/flagUndo-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/halfBright-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/halfBright-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/halfBright.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/help-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/help-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/help-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/help-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/history-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/history-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/history.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/history.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/info-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/info.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/key-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/key-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/link-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/link-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-destructive.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-destructive.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-cc-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-cc.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikipedia-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikipedia.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/map-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/map-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPin-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPin.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/menu-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/menu.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/message-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/message-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/message-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/message-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/moon-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/moon-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/moon.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/notBright-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/notBright-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/notBright.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/notice-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/notice-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/notice.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/notice.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-ltr-progressive.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl-progressive.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl-progressive.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/play-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/play-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/play-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/play-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/ribbonPrize-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/ribbonPrize.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/settings-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/settings.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-ltr-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-ltr-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-rtl-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-rtl-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSideMenu-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSideMenu.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-ltr-progressive.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-rtl-progressive.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-constructive.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-constructive.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-destructive.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-destructive.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-progressive.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-progressive.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-warning.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-warning.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/tag.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/tag.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-lefttoright-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-lefttoright.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-righttoleft-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-righttoleft.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/trashUndo-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/trashUndo-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/trashUndo-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/trashUndo-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-destructive.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-destructive.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-u-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-u.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator-invert.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator-invert.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-rtl-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-rtl.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert.png
resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert.svg
resources/lib/oojs-ui/themes/mediawiki/images/indicators/required-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/indicators/required.svg
resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr.png
resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl.png
resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl.svg
resources/src/jquery/images/sort_both.gif [deleted file]
resources/src/jquery/images/sort_both.png [new file with mode: 0644]
resources/src/jquery/images/sort_both.svg [new file with mode: 0644]
resources/src/jquery/images/sort_down.gif [deleted file]
resources/src/jquery/images/sort_down.png [new file with mode: 0644]
resources/src/jquery/images/sort_down.svg [new file with mode: 0644]
resources/src/jquery/images/sort_none.gif [deleted file]
resources/src/jquery/images/sort_up.gif [deleted file]
resources/src/jquery/images/sort_up.png [new file with mode: 0644]
resources/src/jquery/images/sort_up.svg [new file with mode: 0644]
resources/src/jquery/jquery.arrowSteps.js
resources/src/jquery/jquery.tablesorter.css [deleted file]
resources/src/jquery/jquery.tablesorter.less [new file with mode: 0644]
resources/src/mediawiki.skinning/content.css
resources/src/mediawiki.skinning/images/sort_both_readonly.png [new file with mode: 0644]
resources/src/mediawiki.skinning/images/sort_both_readonly.svg [new file with mode: 0644]
resources/src/mediawiki.special/mediawiki.special.pageLanguage.js
resources/src/mediawiki.widgets/mw.widgets.CategorySelector.js
resources/src/mediawiki.widgets/mw.widgets.DateInputWidget.js
resources/src/mediawiki.widgets/mw.widgets.TitleInputWidget.js
resources/src/mediawiki/api/upload.js
resources/src/mediawiki/mediawiki.ForeignStructuredUpload.BookletLayout.js
resources/src/mediawiki/mediawiki.ForeignUpload.js
resources/src/mediawiki/mediawiki.Title.js
resources/src/mediawiki/mediawiki.Upload.BookletLayout.js
resources/src/mediawiki/mediawiki.htmlform.ooui.css
resources/src/mediawiki/mediawiki.js
resources/src/mediawiki/mediawiki.searchSuggest.js
resources/src/mediawiki/mediawiki.util.js
resources/src/mediawiki/page/patrol.ajax.js
resources/src/startup.js
tests/TestsAutoLoader.php
tests/parser/parserTests.txt
tests/phpunit/MediaWikiTestCase.php
tests/phpunit/data/helpers/WellProtectedClass.php
tests/phpunit/includes/EditPageTest.php
tests/phpunit/includes/GlobalFunctions/GlobalTest.php
tests/phpunit/includes/MimeMagicTest.php
tests/phpunit/includes/OutputPageTest.php
tests/phpunit/includes/SanitizerTest.php
tests/phpunit/includes/StatusTest.php
tests/phpunit/includes/TestLogger.php [deleted file]
tests/phpunit/includes/TestingAccessWrapper.php
tests/phpunit/includes/TestingAccessWrapperTest.php
tests/phpunit/includes/TitleArrayFromResultTest.php
tests/phpunit/includes/api/ApiLoginTest.php
tests/phpunit/includes/api/ApiTestCase.php
tests/phpunit/includes/api/ApiTestCaseUpload.php
tests/phpunit/includes/api/ApiUploadTest.php
tests/phpunit/includes/changes/CategoryMembershipChangeTest.php
tests/phpunit/includes/content/JsonContentTest.php
tests/phpunit/includes/content/WikitextContentHandlerTest.php
tests/phpunit/includes/context/RequestContextTest.php
tests/phpunit/includes/diff/ArrayDiffFormatterTest.php
tests/phpunit/includes/diff/DiffOpTest.php
tests/phpunit/includes/diff/DiffTest.php
tests/phpunit/includes/exception/BadTitleErrorTest.php
tests/phpunit/includes/exception/ErrorPageErrorTest.php
tests/phpunit/includes/exception/ReadOnlyErrorTest.php
tests/phpunit/includes/exception/ThrottledErrorTest.php
tests/phpunit/includes/exception/UserNotLoggedInTest.php
tests/phpunit/includes/jobqueue/JobTest.php
tests/phpunit/includes/logging/PageLangLogFormatterTest.php
tests/phpunit/includes/media/BitmapScalingTest.php
tests/phpunit/includes/media/IPTCTest.php
tests/phpunit/includes/page/WikiPageTest.php
tests/phpunit/includes/parser/PreprocessorTest.php
tests/phpunit/includes/session/BotPasswordSessionProviderTest.php [deleted file]
tests/phpunit/includes/session/CookieSessionProviderTest.php [deleted file]
tests/phpunit/includes/session/ImmutableSessionProviderWithCookieTest.php [deleted file]
tests/phpunit/includes/session/PHPSessionHandlerTest.php [deleted file]
tests/phpunit/includes/session/SessionBackendTest.php [deleted file]
tests/phpunit/includes/session/SessionIdTest.php [deleted file]
tests/phpunit/includes/session/SessionInfoTest.php [deleted file]
tests/phpunit/includes/session/SessionManagerTest.php [deleted file]
tests/phpunit/includes/session/SessionProviderTest.php [deleted file]
tests/phpunit/includes/session/SessionTest.php [deleted file]
tests/phpunit/includes/session/TestBagOStuff.php [deleted file]
tests/phpunit/includes/session/TestUtils.php [deleted file]
tests/phpunit/includes/session/UserInfoTest.php [deleted file]
tests/phpunit/includes/specials/SpecialBlankPageTest.php
tests/phpunit/includes/specials/SpecialPageTestBase.php
tests/phpunit/includes/upload/UploadFromUrlTest.php
tests/phpunit/includes/user/BotPasswordTest.php [deleted file]
tests/phpunit/includes/user/UserArrayFromResultTest.php
tests/phpunit/includes/user/UserTest.php
tests/phpunit/mocks/session/DummySessionBackend.php [deleted file]
tests/phpunit/mocks/session/DummySessionProvider.php [deleted file]
tests/phpunit/phpunit.php
tests/phpunit/structure/ApiDocumentationTest.php [new file with mode: 0644]
tests/phpunit/tests/MediaWikiTestCaseTest.php
tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.test.js

diff --git a/CREDITS b/CREDITS
index fe7b81e..a54bd90 100644 (file)
--- a/CREDITS
+++ b/CREDITS
@@ -138,6 +138,7 @@ following names for their contribution to the product.
 * Erwin Dokter
 * Étienne Beaulé
 * Federico Leva
+* Florian Schmidt
 * fomafix
 * FunPika
 * Gabriel Wicke
index def80ea..f4e4815 100644 (file)
@@ -62,35 +62,13 @@ production.
   $wgSharedDB and $wgSharedTables are properly set even on the "central" wiki
   that all others are sharing from and that $wgLocalDatabases is set to the
   full list of sharing wikis on all those wikis.
-* Massive overhaul to session handling:
-** $wgSessionsInObjectCache is no longer supported and must be true, due to
-   MediaWiki\Session\SessionManager. $wgSessionHandler is similarly no longer
-   used.
-** ObjectCacheSessionHandler is removed, replaced with
-   MediaWiki\Session\PhpSessionHandler.
-** PHP session handling in general ($_SESSION, session_id(), and so on) is
-   deprecated. Use MediaWiki\Session\SessionManager instead. A new config
-   variable, $wgPHPSessionHandling, is available to cause use of $_SESSION to
-   issue a deprecation warning or to cause most PHP session handling to throw
-   exceptions.
-** Deprecated UserSetCookies hook. Session-handling extensions should generally
-   be creating a custom subclass of CookieSessionProvider. Other extensions
-   messing with cookies can no longer count on user data being saved in cookies
-   versus other methods.
-** Deprecated UserLoadFromSession hook, extensions should create a
-   MediaWiki\Session\SessionProvider.
-** The User cannot be loaded from session until after Setup.php completes.
-   Attempts to do so will be ignored and the User will remain unloaded.
-* MediaWiki will now auto-create users as necessary, removing the need for
-  extensions to do so. An 'autocreateaccount' right is added to allow
-  auto-creation when 'createaccount' is not granted to all users.
-* Deprecated AuthPluginAutoCreate hook in favor of LocalUserCreated.
-* Most cookie-handling methods in User are deprecated.
+* $wgAllowAsyncCopyUploads and $CopyUploadAsyncTimeout were removed. This was an
+  experimental feature that has never worked.
+* $wgEnotifUseJobQ was removed and the job queue is always used.
 
 === New features in 1.27 ===
-* $wgDataCenterId and $wgDataCenterRoles where added, which will serve as
-  basic configuration settings needed for multi-datacenter setups.
-  $wgDataCenterUpdateStickTTL was also added.
+* $wgDataCenterUpdateStickTTL was also added. This decides how long a user
+  sticks to the primary DC (via cookies) after they make changes to the site.
 * Added a new hook, 'UserMailerTransformContent', to transform the contents
   of an email. This is similar to the EmailUser hook but applies to all mail
   sent via UserMailer.
@@ -130,10 +108,6 @@ production.
 * It is now possible to patrol file uploads (both for new files and new versions
   of existing files). Special:NewFiles has gained an option to filter by patrol
   status. This functionality can be disabled using $wgUseFilePatrol.
-* MediaWiki\Session infrastructure allows for easier use of session mechanisms
-  other than the usual cookies.
-** SessionMetadata and SessionCheckInfo hooks allow for setting and checking
-   custom session metadata.
 * Added MWGrants and associated configuration settings $wgGrantPermissions and
   $wgGrantPermissionGroups to hold configuration for authentication features
   such as OAuth that want to allow restricting the user rights a user may make
@@ -143,7 +117,10 @@ production.
    $wgMWOAuthGrantPermissionGroups.
 * Added MWRestrictions as a class to check restrictions on a WebRequest, e.g.
   to assert that the request comes from a particular IP range.
-* Added bot passwords, a rights-restricted login mechanism for API-using bots.
+* Whitelisted the following HTML attributes for all elements in wikitext:
+  aria-describedby, aria-flowto, aria-label, aria-labelledby, aria-owns.
+* Removed "presentation" restriction on the HTML role attribute in wikitext.
+  All values are now allowed for the role attribute.
 
 === External library changes in 1.27 ===
 
@@ -157,7 +134,6 @@ production.
 * Added wikimedia/cldr-plural-rule-parser v1.0.0.
 * Added wikimedia/relpath v1.0.3.
 * Added wikimedia/running-stat v1.1.0.
-* Added wikimedia/php-session-serializer v1.0.3.
 
 ==== Removed and replaced external libraries ====
 
@@ -180,9 +156,7 @@ production.
 * The following response properties from action=login are deprecated, and may
   be removed in the future: lgtoken, cookieprefix, sessionid. Clients should
   handle cookies to properly manage session state.
-* action=login transparently allows login using bot passwords. Clients should
-  merely need to change the username and password used after setting up a bot
-  password.
+* action=upload no longer understands statuskey, asyncdownload or leavemessage.
 
 === Action API internal changes in 1.27 ===
 * ApiQueryORM removed.
@@ -196,6 +170,7 @@ production.
 * ApiQueryBase::getDirectionDescription() was removed (deprecated since 1.25).
 * ApiQuery::getModules() was removed (deprecated since 1.21).
 * ApiMain::getModules() was removed (deprecated since 1.21).
+* ApiBase::getVersion() was removed (deprecated since 1.21).
 
 === Languages updated in 1.27 ===
 
@@ -287,6 +262,12 @@ changes to languages because of Phabricator reports.
 * ParserOutput::hasCustomDataUpdates() was removed (deprecated since 1.25).
 * ParserOutput::addSecondaryDataUpdate() was removed (deprecated since 1.25).
 * ParserOutput::getSecondaryDataUpdates() was removed (deprecated since 1.25).
+* Gallery images with multiple caption pipes no longer concatenate them all
+  together but instead pick the final one, similar to image syntax.
+* XML-like parser tags (such as <gallery>), when unclosed, will be left unparsed
+  rather than consume everything until the end of the page.
+* New maintenance script resetUserEmail.php allows sysadmins to reset user emails in case
+  a user forgot password/account was stolen.
 
 == Compatibility ==
 
index 24a4d72..8720186 100644 (file)
@@ -72,7 +72,6 @@ $wgAutoloadLocalClasses = array(
        'ApiQueryAllMessages' => __DIR__ . '/includes/api/ApiQueryAllMessages.php',
        'ApiQueryAllPages' => __DIR__ . '/includes/api/ApiQueryAllPages.php',
        'ApiQueryAllRevisions' => __DIR__ . '/includes/api/ApiQueryAllRevisions.php',
-       'ApiQueryMyStashedFiles' => __DIR__ . '/includes/api/ApiQueryMyStashedFiles.php',
        'ApiQueryAllUsers' => __DIR__ . '/includes/api/ApiQueryAllUsers.php',
        'ApiQueryBacklinks' => __DIR__ . '/includes/api/ApiQueryBacklinks.php',
        'ApiQueryBacklinksprop' => __DIR__ . '/includes/api/ApiQueryBacklinksprop.php',
@@ -101,6 +100,7 @@ $wgAutoloadLocalClasses = array(
        'ApiQueryLangLinks' => __DIR__ . '/includes/api/ApiQueryLangLinks.php',
        'ApiQueryLinks' => __DIR__ . '/includes/api/ApiQueryLinks.php',
        'ApiQueryLogEvents' => __DIR__ . '/includes/api/ApiQueryLogEvents.php',
+       'ApiQueryMyStashedFiles' => __DIR__ . '/includes/api/ApiQueryMyStashedFiles.php',
        'ApiQueryPagePropNames' => __DIR__ . '/includes/api/ApiQueryPagePropNames.php',
        'ApiQueryPageProps' => __DIR__ . '/includes/api/ApiQueryPageProps.php',
        'ApiQueryPagesWithProp' => __DIR__ . '/includes/api/ApiQueryPagesWithProp.php',
@@ -181,7 +181,6 @@ $wgAutoloadLocalClasses = array(
        'BlockListPager' => __DIR__ . '/includes/specials/SpecialBlockList.php',
        'BlockLogFormatter' => __DIR__ . '/includes/logging/BlockLogFormatter.php',
        'BmpHandler' => __DIR__ . '/includes/media/BMP.php',
-       'BotPassword' => __DIR__ . '/includes/user/BotPassword.php',
        'BrokenRedirectsPage' => __DIR__ . '/includes/specials/SpecialBrokenRedirects.php',
        'BufferingStatsdDataFactory' => __DIR__ . '/includes/libs/BufferingStatsdDataFactory.php',
        'CLIParser' => __DIR__ . '/maintenance/parse.php',
@@ -771,6 +770,8 @@ $wgAutoloadLocalClasses = array(
        'MediaWikiSite' => __DIR__ . '/includes/site/MediaWikiSite.php',
        'MediaWikiTitleCodec' => __DIR__ . '/includes/title/MediaWikiTitleCodec.php',
        'MediaWikiVersionFetcher' => __DIR__ . '/includes/MediaWikiVersionFetcher.php',
+       'MediaWiki\\Languages\\Data\\Names' => __DIR__ . '/languages/data/Names.php',
+       'MediaWiki\\Languages\\Data\\ZhConversion' => __DIR__ . '/languages/data/ZhConversion.php',
        'MediaWiki\\Logger\\LegacyLogger' => __DIR__ . '/includes/debug/logger/LegacyLogger.php',
        'MediaWiki\\Logger\\LegacySpi' => __DIR__ . '/includes/debug/logger/LegacySpi.php',
        'MediaWiki\\Logger\\LoggerFactory' => __DIR__ . '/includes/debug/logger/LoggerFactory.php',
@@ -785,19 +786,6 @@ $wgAutoloadLocalClasses = array(
        'MediaWiki\\Logger\\Monolog\\WikiProcessor' => __DIR__ . '/includes/debug/logger/monolog/WikiProcessor.php',
        'MediaWiki\\Logger\\NullSpi' => __DIR__ . '/includes/debug/logger/NullSpi.php',
        'MediaWiki\\Logger\\Spi' => __DIR__ . '/includes/debug/logger/Spi.php',
-       'MediaWiki\\Session\\BotPasswordSessionProvider' => __DIR__ . '/includes/session/BotPasswordSessionProvider.php',
-       'MediaWiki\\Session\\CookieSessionProvider' => __DIR__ . '/includes/session/CookieSessionProvider.php',
-       'MediaWiki\\Session\\ImmutableSessionProviderWithCookie' => __DIR__ . '/includes/session/ImmutableSessionProviderWithCookie.php',
-       'MediaWiki\\Session\\PHPSessionHandler' => __DIR__ . '/includes/session/PHPSessionHandler.php',
-       'MediaWiki\\Session\\Session' => __DIR__ . '/includes/session/Session.php',
-       'MediaWiki\\Session\\SessionBackend' => __DIR__ . '/includes/session/SessionBackend.php',
-       'MediaWiki\\Session\\SessionId' => __DIR__ . '/includes/session/SessionId.php',
-       'MediaWiki\\Session\\SessionInfo' => __DIR__ . '/includes/session/SessionInfo.php',
-       'MediaWiki\\Session\\SessionManager' => __DIR__ . '/includes/session/SessionManager.php',
-       'MediaWiki\\Session\\SessionManagerInterface' => __DIR__ . '/includes/session/SessionManagerInterface.php',
-       'MediaWiki\\Session\\SessionProvider' => __DIR__ . '/includes/session/SessionProvider.php',
-       'MediaWiki\\Session\\SessionProviderInterface' => __DIR__ . '/includes/session/SessionProviderInterface.php',
-       'MediaWiki\\Session\\UserInfo' => __DIR__ . '/includes/session/UserInfo.php',
        'MediaWiki\\Site\\MediaWikiPageNameNormalizer' => __DIR__ . '/includes/site/MediaWikiPageNameNormalizer.php',
        'MediaWiki\\Tidy\\Html5Depurate' => __DIR__ . '/includes/tidy/Html5Depurate.php',
        'MediaWiki\\Tidy\\RaggettBase' => __DIR__ . '/includes/tidy/RaggettBase.php',
@@ -882,6 +870,7 @@ $wgAutoloadLocalClasses = array(
        'ORAField' => __DIR__ . '/includes/db/DatabaseOracle.php',
        'ORAResult' => __DIR__ . '/includes/db/DatabaseOracle.php',
        'ObjectCache' => __DIR__ . '/includes/objectcache/ObjectCache.php',
+       'ObjectCacheSessionHandler' => __DIR__ . '/includes/objectcache/ObjectCacheSessionHandler.php',
        'ObjectFactory' => __DIR__ . '/includes/libs/ObjectFactory.php',
        'ObjectFileCache' => __DIR__ . '/includes/cache/ObjectFileCache.php',
        'OldChangesList' => __DIR__ . '/includes/changes/OldChangesList.php',
@@ -1048,6 +1037,7 @@ $wgAutoloadLocalClasses = array(
        'ReplicatedBagOStuff' => __DIR__ . '/includes/libs/objectcache/ReplicatedBagOStuff.php',
        'RepoGroup' => __DIR__ . '/includes/filerepo/RepoGroup.php',
        'RequestContext' => __DIR__ . '/includes/context/RequestContext.php',
+       'ResetUserEmail' => __DIR__ . '/maintenance/resetUserEmail.php',
        'ResetUserTokens' => __DIR__ . '/maintenance/resetUserTokens.php',
        'ResourceFileCache' => __DIR__ . '/includes/cache/ResourceFileCache.php',
        'ResourceLoader' => __DIR__ . '/includes/resourceloader/ResourceLoader.php',
@@ -1166,7 +1156,6 @@ $wgAutoloadLocalClasses = array(
        'SpecialBlock' => __DIR__ . '/includes/specials/SpecialBlock.php',
        'SpecialBlockList' => __DIR__ . '/includes/specials/SpecialBlockList.php',
        'SpecialBookSources' => __DIR__ . '/includes/specials/SpecialBooksources.php',
-       'SpecialBotPasswords' => __DIR__ . '/includes/specials/SpecialBotPasswords.php',
        'SpecialCachedPage' => __DIR__ . '/includes/specials/SpecialCachedPage.php',
        'SpecialCategories' => __DIR__ . '/includes/specials/SpecialCategories.php',
        'SpecialChangeContentModel' => __DIR__ . '/includes/specials/SpecialChangeContentModel.php',
@@ -1338,7 +1327,6 @@ $wgAutoloadLocalClasses = array(
        'UploadFromFile' => __DIR__ . '/includes/upload/UploadFromFile.php',
        'UploadFromStash' => __DIR__ . '/includes/upload/UploadFromStash.php',
        'UploadFromUrl' => __DIR__ . '/includes/upload/UploadFromUrl.php',
-       'UploadFromUrlJob' => __DIR__ . '/includes/jobqueue/jobs/UploadFromUrlJob.php',
        'UploadLogFormatter' => __DIR__ . '/includes/logging/UploadLogFormatter.php',
        'UploadSourceAdapter' => __DIR__ . '/includes/import/UploadSourceAdapter.php',
        'UploadSourceField' => __DIR__ . '/includes/specials/SpecialUpload.php',
index 94de20e..9ff39ad 100644 (file)
@@ -21,7 +21,7 @@
                "ext-iconv": "*",
                "liuggio/statsd-php-client": "1.0.18",
                "mediawiki/at-ease": "1.1.0",
-               "oojs/oojs-ui": "0.15.0",
+               "oojs/oojs-ui": "0.15.1",
                "oyejorge/less.php": "1.7.0.9",
                "php": ">=5.3.3",
                "psr/log": "1.0.0",
@@ -31,7 +31,6 @@
                "wikimedia/cldr-plural-rule-parser": "1.0.0",
                "wikimedia/composer-merge-plugin": "1.3.0",
                "wikimedia/ip-set": "1.0.1",
-               "wikimedia/php-session-serializer": "1.0.3",
                "wikimedia/relpath": "1.0.3",
                "wikimedia/running-stat": "1.1.0",
                "wikimedia/utfnormal": "1.0.3",
index 495e659..b8ec76b 100644 (file)
@@ -33,4 +33,4 @@ Currently there are a few different types of jobs:
     Each job clears $wgUpdateRowsPerJob pages (500 by default).
 
   enotifNotify
-    Used when $wgEnotifUseJobQ is true to send mail using the job queue.
+    Used to send mail using the job queue.
index 2b5e1e0..a2b8592 100644 (file)
@@ -741,9 +741,8 @@ viewing.
 redirect was followed.
 &$article: target article (object)
 
-'AuthPluginAutoCreate': DEPRECATED! Use the 'LocalUserCreated' hook instead.
-Called when creating a local account for an user logged in from an external
-authentication method.
+'AuthPluginAutoCreate': Called when creating a local account for an user logged
+in from an external authentication method.
 $user: User object created locally
 
 'AuthPluginSetup': Update or replace authentication plugin object ($wgAuth).
@@ -2346,6 +2345,11 @@ run. Use when page save hooks require the presence of custom tables to ensure
 that tests continue to run properly.
 &$tables: array of table names
 
+'ParserOutputStashForEdit': Called when an edit stash parse finishes, before the output is cached.
+$page: the WikiPage of the candidate edit
+$content: the Content object of the candidate edit
+$output: the ParserOutput result of the candidate edit
+
 'PasswordPoliciesForUser': Alter the effective password policy for a user.
 $user: User object whose policy you are modifying
 &$effectivePolicy: Array of policy statements that apply to this user
@@ -2580,20 +2584,6 @@ $targetUser: the user whom to send watchlist email notification
 $title: the page title
 $enotif: EmailNotification object
 
-'SessionCheckInfo': Validate a MediaWiki\Session\SessionInfo as it's being
-loaded from storage. Return false to prevent it from being used.
-&$reason: String rejection reason to be logged
-$info: MediaWiki\Session\SessionInfo being validated
-$request: WebRequest being loaded from
-$metadata: Array|false Metadata array for the MediaWiki\Session\Session
-$data: Array|false Data array for the MediaWiki\Session\Session
-
-'SessionMetadata': Add metadata to a session being saved.
-$backend: MediaWiki\Session\SessionBackend being saved.
-&$metadata: Array Metadata to be stored. Add new keys here.
-$requests: Array of WebRequests potentially being saved to. Generally 0-1 real
-  request and 0+ FauxRequests.
-
 'SetupAfterCache': Called in Setup.php, after cache objects are set
 
 'ShortPagesQuery': Allow extensions to modify the query used by
@@ -3312,9 +3302,8 @@ $name: user name
 $user: user object
 &$s: database query object
 
-'UserLoadFromSession': DEPRECATED! Create a MediaWiki\Session\SessionProvider instead.
-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 authentication
   process
@@ -3405,13 +3394,9 @@ $user: User object
 'UserSaveSettings': Called when saving user settings.
 $user: User object
 
-'UserSetCookies': DEPRECATED! If you're trying to replace core session cookie
-handling, you want to create a subclass of MediaWiki\Session\CookieSessionProvider
-instead. Otherwise, you can no longer count on user data being saved to cookies
-versus some other mechanism.
-Called when setting user cookies.
+'UserSetCookies': Called when setting user cookies.
 $user: User object
-&$session: session array, will be added to the session
+&$session: session array, will be added to $_SESSION
 &$cookies: cookies array mapping cookie name to its value
 
 'UserSetEmail': Called when changing user email address.
index 8c46bbb..3f3d41e 100644 (file)
@@ -1,6 +1,7 @@
 # Protect against bug 28235
 <IfModule rewrite_module>
        RewriteEngine On
+       RewriteOptions inherit
        RewriteCond %{QUERY_STRING} \.[^\\/:*?\x22<>|%]+(#|\?|$) [nocase]
        RewriteRule . - [forbidden]
        # Fix for bug T64289
index 9e945ea..4aed617 100644 (file)
@@ -661,12 +661,6 @@ $wgCacheSharedUploads = true;
  */
 $wgAllowCopyUploads = false;
 
-/**
- * Allow asynchronous copy uploads.
- * This feature is experimental and broken as of r81612.
- */
-$wgAllowAsyncCopyUploads = false;
-
 /**
  * A list of domains copy uploads can come from
  *
@@ -697,17 +691,6 @@ $wgCopyUploadProxy = false;
  */
 $wgCopyUploadTimeout = false;
 
-/**
- * Different timeout for upload by url when run as a background job
- * This could be useful since when fetching large files via job queue,
- * you may want a different timeout, especially because there is no
- * http request being kept alive.
- *
- * false means fallback to $wgCopyUploadTimeout.
- * @since 1.22
- */
-$wgCopyUploadAsyncTimeout = false;
-
 /**
  * Max size for uploads, in bytes. If not set to an array, applies to all
  * uploads. If set to an array, per upload type maximums can be set, using the
@@ -960,6 +943,12 @@ $wgUseImageMagick = false;
  */
 $wgImageMagickConvertCommand = '/usr/bin/convert';
 
+/**
+ * Array of max pixel areas for interlacing per MIME type
+ * @since 1.27
+ */
+$wgMaxInterlacingAreas = array();
+
 /**
  * Sharpening parameter to ImageMagick
  */
@@ -1639,12 +1628,6 @@ $wgEnotifImpersonal = false;
  */
 $wgEnotifMaxRecips = 500;
 
-/**
- * Send mails via the job queue. This can be useful to reduce the time it
- * takes to save a page that a lot of people are watching.
- */
-$wgEnotifUseJobQ = false;
-
 /**
  * Use real name instead of username in e-mail "from" field.
  */
@@ -1882,24 +1865,6 @@ $wgDBservers = false;
  */
 $wgLBFactoryConf = array( 'class' => 'LBFactorySimple' );
 
-/**
- * The ID of the current data center
- * @since 1.27
- */
-$wgDataCenterId = 'default';
-
-/**
- * Map of data center IDs to their role ("master" or "slave")
- *
- * Multiple data centers can be setup to handle MediaWiki, with HTTP
- * POSTs routed to the master data center and GET/HEAD/OPTION routed to
- * any data center (usually the closest to the end user). In such setups,
- * this setting should be set to the appropriate value in the site
- * config for each data center.
- * @since 1.27
- */
-$wgDataCenterRoles = array( 'default' => 'master' );
-
 /**
  * After a state-changing request is done by a client, this determines
  * how many seconds that client should keep using the master datacenter.
@@ -2181,7 +2146,7 @@ $wgMessageCacheType = CACHE_ANYTHING;
 $wgParserCacheType = CACHE_ANYTHING;
 
 /**
- * The cache type for storing session data.
+ * The cache type for storing session data. Used if $wgSessionsInObjectCache is true.
  *
  * For available types see $wgMainCacheType.
  */
@@ -2316,29 +2281,30 @@ $wgParserCacheExpireTime = 86400;
  *
  * @deprecated since 1.20; Use $wgSessionsInObjectCache
  */
-$wgSessionsInMemcached = true;
+$wgSessionsInMemcached = false;
 
 /**
- * @deprecated since 1.27, session data is always stored in object cache.
+ * Store sessions in an object cache, configured by $wgSessionCacheType. This
+ * can be useful to improve performance, or to avoid the locking behavior of
+ * PHP's default session handler, which tends to prevent multiple requests for
+ * the same user from acting concurrently.
  */
-$wgSessionsInObjectCache = true;
+$wgSessionsInObjectCache = false;
 
 /**
- * The expiry time to use for session storage, in seconds.
+ * The expiry time to use for session storage when $wgSessionsInObjectCache is
+ * enabled, in seconds.
  */
 $wgObjectCacheSessionExpiry = 3600;
 
 /**
- * @deprecated since 1.27, MediaWiki\\Session\\SessionManager doesn't use PHP session storage.
+ * 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 = null;
 
-/**
- * Whether to use PHP session handling ($_SESSION and session_*() functions)
- * @var string 'enable', 'warn', or 'disable'
- */
-$wgPHPSessionHandling = 'enable';
-
 /**
  * If enabled, will send MemCached debugging information to $wgDebugLogFile
  */
@@ -2737,7 +2703,7 @@ $wgUsePrivateIPs = false;
  */
 
 /**
- * Site language code. See languages/Names.php for languages supported by
+ * Site language code. See languages/data/Names.php for languages supported by
  * MediaWiki out of the box. Not all languages listed there have translations,
  * see languages/messages/ for the list of languages with some localisation.
  *
@@ -3705,7 +3671,15 @@ $wgResourceLoaderValidateStaticJS = false;
  * @endcode
  * @since 1.22
  */
-$wgResourceLoaderLESSVars = array();
+$wgResourceLoaderLESSVars = array(
+       /**
+        * Minimum available screen width at which a device can be considered a tablet/desktop
+        * The number is currently based on the device width of a Samsung Galaxy S5 mini and is low
+        * enough to cover iPad (768px). Number is prone to change with new information.
+        * @since 1.27
+        */
+       'deviceWidthTablet' => '720px',
+);
 
 /**
  * Default import paths for LESS modules. LESS files referenced in @import
@@ -4659,30 +4633,6 @@ $wgUserrightsInterwikiDelimiter = '@';
  */
 $wgSecureLogin = false;
 
-/**
- * MediaWiki\Session\SessionProvider configuration.
- *
- * Value is an array of ObjectFactory specifications for the SessionProviders
- * to be used. Keys in the array are ignored. Order is not significant.
- *
- * @since 1.27
- */
-$wgSessionProviders = array(
-       'MediaWiki\\Session\\CookieSessionProvider' => array(
-               'class' => 'MediaWiki\\Session\\CookieSessionProvider',
-               'args' => array( array(
-                       'priority' => 30,
-                       'callUserSetCookiesHook' => true,
-               ) ),
-       ),
-       'MediaWiki\\Session\\BotPasswordSessionProvider' => array(
-               'class' => 'MediaWiki\\Session\\BotPasswordSessionProvider',
-               'args' => array( array(
-                       'priority' => 40,
-               ) ),
-       ),
-);
-
 /** @} */ # end user accounts }
 
 /************************************************************************//**
@@ -5519,29 +5469,6 @@ $wgGrantPermissionGroups = array(
        'highvolume'          => 'high-volume',
 );
 
-/**
- * @var bool Whether to enable bot passwords
- * @since 1.27
- */
-$wgEnableBotPasswords = true;
-
-/**
- * Cluster for the bot_passwords table
- * @var string|bool If false, the normal cluster will be used
- * @since 1.27
- */
-$wgBotPasswordsCluster = false;
-
-/**
- * Database name for the bot_passwords table
- *
- * To use a database with a table prefix, set this variable to
- * "{$database}-{$prefix}".
- * @var string|bool If false, the normal database will be used
- * @since 1.27
- */
-$wgBotPasswordsDatabase = false;
-
 /** @} */ # end of user rights settings
 
 /************************************************************************//**
@@ -6908,7 +6835,6 @@ $wgJobClasses = array(
        'sendMail' => 'EmaillingJob',
        'enotifNotify' => 'EnotifNotifyJob',
        'fixDoubleRedirect' => 'DoubleRedirectJob',
-       'uploadFromUrl' => 'UploadFromUrlJob',
        'AssembleUploadChunks' => 'AssembleUploadChunksJob',
        'PublishStashedFile' => 'PublishStashedFileJob',
        'ThumbnailRender' => 'ThumbnailRenderJob',
@@ -7694,7 +7620,6 @@ $wgHTTPConnectTimeout = 5e0;
 
 /************************************************************************//**
  * @name   Job queue
- * See also $wgEnotifUseJobQ.
  * @{
  */
 
index 4c149ae..dda1358 100644 (file)
@@ -61,10 +61,6 @@ class DerivativeRequest extends FauxRequest {
                return $this->base->getAllHeaders();
        }
 
-       public function getSession() {
-               return $this->base->getSession();
-       }
-
        public function getSessionData( $key ) {
                return $this->base->getSessionData( $key );
        }
index 47912cb..277a6cc 100644 (file)
@@ -3457,6 +3457,9 @@ HTML
                global $wgOut;
 
                if ( Hooks::run( 'EditPageBeforeConflictDiff', array( &$this, &$wgOut ) ) ) {
+                       $stats = $wgOut->getContext()->getStats();
+                       $stats->increment( 'edit.failures.conflict' );
+
                        $wgOut->wrapWikiMsg( '<h2>$1</h2>', "yourdiff" );
 
                        $content1 = $this->toEditContent( $this->textbox1 );
index f049d2e..888f853 100644 (file)
@@ -23,8 +23,6 @@
  * @file
  */
 
-use MediaWiki\Session\SessionManager;
-
 /**
  * WebRequest clone which takes values from a provided array.
  *
@@ -32,6 +30,7 @@ use MediaWiki\Session\SessionManager;
  */
 class FauxRequest extends WebRequest {
        private $wasPosted = false;
+       private $session = array();
        private $requestUrl;
        protected $cookies = array();
 
@@ -39,8 +38,7 @@ class FauxRequest extends WebRequest {
         * @param array $data Array of *non*-urlencoded key => value pairs, the
         *   fake GET/POST values
         * @param bool $wasPosted Whether to treat the data as POST
-        * @param MediaWiki\\Session\\Session|array|null $session Session, session
-        *  data array, or null
+        * @param array|null $session Session array or null
         * @param string $protocol 'http' or 'https'
         * @throws MWException
         */
@@ -55,16 +53,8 @@ class FauxRequest extends WebRequest {
                        throw new MWException( "FauxRequest() got bogus data" );
                }
                $this->wasPosted = $wasPosted;
-               if ( $session instanceof MediaWiki\Session\Session ) {
-                       $this->sessionId = $session->getSessionId();
-               } elseif ( is_array( $session ) ) {
-                       $mwsession = SessionManager::singleton()->getEmptySession( $this );
-                       $this->sessionId = $mwsession->getSessionId();
-                       foreach ( $session as $key => $value ) {
-                               $mwsession->set( $key, $value );
-                       }
-               } elseif ( $session !== null ) {
-                       throw new MWException( "FauxRequest() got bogus session" );
+               if ( $session ) {
+                       $this->session = $session;
                }
                $this->protocol = $protocol;
        }
@@ -150,6 +140,10 @@ class FauxRequest extends WebRequest {
                }
        }
 
+       public function checkSessionCookie() {
+               return false;
+       }
+
        /**
         * @since 1.25
         */
@@ -192,15 +186,31 @@ class FauxRequest extends WebRequest {
        }
 
        /**
+        * @param string $key
         * @return array|null
         */
-       public function getSessionArray() {
-               if ( $this->sessionId !== null ) {
-                       return iterator_to_array( $this->getSession() );
+       public function getSessionData( $key ) {
+               if ( isset( $this->session[$key] ) ) {
+                       return $this->session[$key];
                }
                return null;
        }
 
+       /**
+        * @param string $key
+        * @param array $data
+        */
+       public function setSessionData( $key, $data ) {
+               $this->session[$key] = $data;
+       }
+
+       /**
+        * @return array|mixed|null
+        */
+       public function getSessionArray() {
+               return $this->session;
+       }
+
        /**
         * FauxRequests shouldn't depend on raw request data (but that could be implemented here)
         * @return string
index f797e5b..1f9d14e 100644 (file)
@@ -26,7 +26,6 @@ if ( !defined( 'MEDIAWIKI' ) ) {
 
 use Liuggio\StatsdClient\Sender\SocketSender;
 use MediaWiki\Logger\LoggerFactory;
-use MediaWiki\Session\SessionManager;
 
 // Hide compatibility functions from Doxygen
 /// @cond
@@ -1475,7 +1474,7 @@ function wfMsgReplaceArgs( $message, $args ) {
        $message = str_replace( "\r", '', $message );
 
        // Replace arguments
-       if ( count( $args ) ) {
+       if ( is_array( $args ) && $args ) {
                if ( is_array( $args[0] ) ) {
                        $args = array_values( $args[0] );
                }
@@ -2162,8 +2161,8 @@ function wfIsHHVM() {
 /**
  * Tries to get the system directory for temporary files. First
  * $wgTmpDirectory is checked, and then the TMPDIR, TMP, and TEMP
- * environment variables are then checked in sequence, and if none are
- * set try sys_get_temp_dir().
+ * environment variables are then checked in sequence, then
+ * sys_get_temp_dir(), then upload_tmp_dir from php.ini.
  *
  * NOTE: When possible, use instead the tmpfile() function to create
  * temporary files to avoid race conditions on file creation, etc.
@@ -2178,13 +2177,16 @@ function wfTempDir() {
        }
 
        $tmpDir = array_map( "getenv", array( 'TMPDIR', 'TMP', 'TEMP' ) );
+       $tmpDir[] = sys_get_temp_dir();
+       $tmpDir[] = ini_get( 'upload_tmp_dir' );
 
        foreach ( $tmpDir as $tmp ) {
                if ( $tmp && file_exists( $tmp ) && is_dir( $tmp ) && is_writable( $tmp ) ) {
                        return $tmp;
                }
        }
-       return sys_get_temp_dir();
+       throw new MWException( 'No writable temporary directory could be found. ' .
+               'Please set $wgTmpDirectory to a writable directory.' );
 }
 
 /**
@@ -3008,12 +3010,9 @@ function wfBaseConvert( $input, $sourceBase, $destBase, $pad = 1,
 /**
  * Check if there is sufficient entropy in php's built-in session generation
  *
- * @deprecated since 1.27, PHP's session generation isn't used with
- *  MediaWiki\\Session\\SessionManager
  * @return bool True = there is sufficient entropy
  */
 function wfCheckEntropy() {
-       wfDeprecated( __FUNCTION__, '1.27' );
        return (
                        ( wfIsWindows() && version_compare( PHP_VERSION, '5.3.3', '>=' ) )
                        || ini_get( 'session.entropy_file' )
@@ -3022,65 +3021,83 @@ function wfCheckEntropy() {
 }
 
 /**
- * @deprecated since 1.27, PHP's session generation isn't used with
- *  MediaWiki\\Session\\SessionManager
+ * Override session_id before session startup if php's built-in
+ * session generation code is not secure.
  */
 function wfFixSessionID() {
-       wfDeprecated( __FUNCTION__, '1.27' );
+       // If the cookie or session id is already set we already have a session and should abort
+       if ( isset( $_COOKIE[session_name()] ) || session_id() ) {
+               return;
+       }
+
+       // PHP's built-in session entropy is enabled if:
+       // - entropy_file is set or you're on Windows with php 5.3.3+
+       // - AND entropy_length is > 0
+       // We treat it as disabled if it doesn't have an entropy length of at least 32
+       $entropyEnabled = wfCheckEntropy();
+
+       // If built-in entropy is not enabled or not sufficient override PHP's
+       // built in session id generation code
+       if ( !$entropyEnabled ) {
+               wfDebug( __METHOD__ . ": PHP's built in entropy is disabled or not sufficient, " .
+                       "overriding session id generation using our cryptrand source.\n" );
+               session_id( MWCryptRand::generateHex( 32 ) );
+       }
 }
 
 /**
- * Reset the session id
+ * Reset the session_id
  *
- * @deprecated since 1.27, use MediaWiki\\Session\\SessionManager instead
  * @since 1.22
  */
 function wfResetSessionID() {
-       wfDeprecated( __FUNCTION__, '1.27' );
-       $session = SessionManager::getGlobalSession();
-       $delay = $session->delaySave();
-
-       $session->resetId();
-
-       // Make sure a session is started, since that's what the old
-       // wfResetSessionID() did.
-       if ( session_id() !== $session->getId() ) {
-               wfSetupSession( $session->getId() );
+       global $wgCookieSecure;
+       $oldSessionId = session_id();
+       $cookieParams = session_get_cookie_params();
+       if ( wfCheckEntropy() && $wgCookieSecure == $cookieParams['secure'] ) {
+               session_regenerate_id( false );
+       } else {
+               $tmp = $_SESSION;
+               session_destroy();
+               wfSetupSession( MWCryptRand::generateHex( 32 ) );
+               $_SESSION = $tmp;
        }
-
-       ScopedCallback::consume( $delay );
+       $newSessionId = session_id();
 }
 
 /**
  * Initialise php session
  *
- * @deprecated since 1.27, use MediaWiki\\Session\\SessionManager instead.
- *  Generally, "using" SessionManager will be calling ->getSessionById() or
- *  ::getGlobalSession() (depending on whether you were passing $sessionId
- *  here), then calling $session->persist().
- * @param bool|string $sessionId
+ * @param bool $sessionId
  */
 function wfSetupSession( $sessionId = false ) {
-       wfDeprecated( __FUNCTION__, '1.27' );
+       global $wgSessionsInObjectCache, $wgSessionHandler;
+       global $wgCookiePath, $wgCookieDomain, $wgCookieSecure, $wgCookieHttpOnly;
 
-       // If they're calling this, they probably want our session management even
-       // if NO_SESSION was set for Setup.php.
-       if ( !MediaWiki\Session\PHPSessionHandler::isInstalled() ) {
-               MediaWiki\Session\PHPSessionHandler::install( SessionManager::singleton() );
+       if ( $wgSessionsInObjectCache ) {
+               ObjectCacheSessionHandler::install();
+       } 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 );
        }
 
+       session_set_cookie_params(
+               0, $wgCookiePath, $wgCookieDomain, $wgCookieSecure, $wgCookieHttpOnly );
+       session_cache_limiter( 'private, must-revalidate' );
        if ( $sessionId ) {
                session_id( $sessionId );
+       } else {
+               wfFixSessionID();
        }
 
-       $session = SessionManager::getGlobalSession();
-       $session->persist();
+       MediaWiki\suppressWarnings();
+       session_start();
+       MediaWiki\restoreWarnings();
 
-       if ( session_id() !== $session->getId() ) {
-               session_id( $session->getId() );
+       if ( $wgSessionsInObjectCache ) {
+               ObjectCacheSessionHandler::renewCurrentSession();
        }
-
-       MediaWiki\quietCall( 'session_start' );
 }
 
 /**
index 0dd4c47..4b9b963 100644 (file)
@@ -346,7 +346,10 @@ class Linker {
                } elseif ( in_array( 'known', $options ) ) {
                        $defaults['title'] = $target->getPrefixedText();
                } else {
-                       $defaults['title'] = wfMessage( 'red-link-title', $target->getPrefixedText() )->text();
+                       // This ends up in parser cache!
+                       $defaults['title'] = wfMessage( 'red-link-title', $target->getPrefixedText() )
+                               ->inContentLanguage()
+                               ->text();
                }
 
                # Finally, merge the custom attribs with the default ones, and iterate
@@ -2010,7 +2013,7 @@ class Linker {
         * directly paste it in as the link (escaping needs to be done manually).
         * Finally, if $more is a Message, call toString().
         *
-        * @param array $templates Array of templates from Article::getUsedTemplate or similar
+        * @param Title[] $templates Array of templates
         * @param bool $preview Whether this is for a preview
         * @param bool $section Whether this is for a section edit
         * @param Title|Message|string|null $more An escaped link for "More..." of the templates
index 6342d71..7846ca4 100644 (file)
@@ -551,21 +551,12 @@ class MediaWiki {
                $config = $context->getConfig();
 
                $factory = wfGetLBFactory();
-               // Check if any transaction was too big
-               $limit = $config->get( 'MaxUserDBWriteDuration' );
-               $factory->forEachLB( function ( LoadBalancer $lb ) use ( $limit ) {
-                       $lb->forEachOpenConnection( function ( IDatabase $db ) use ( $limit ) {
-                               $time = $db->pendingWriteQueryDuration();
-                               if ( $limit > 0 && $time > $limit ) {
-                                       throw new DBTransactionError(
-                                               $db,
-                                               wfMessage( 'transaction-duration-limit-exceeded', $time, $limit )->text()
-                                       );
-                               }
-                       } );
-               } );
                // Commit all changes
-               $factory->commitMasterChanges( __METHOD__ );
+               $factory->commitMasterChanges(
+                       __METHOD__,
+                       // Abort if any transaction was too big
+                       array( 'maxWriteDuration' => $config->get( 'MaxUserDBWriteDuration' ) )
+               );
                // Record ChronologyProtector positions
                $factory->shutdown();
                wfDebug( __METHOD__ . ': all transactions committed' );
@@ -680,10 +671,8 @@ class MediaWiki {
                if (
                        $request->getProtocol() == 'http' &&
                        (
-                               $request->getSession()->shouldForceHTTPS() ||
-                               // Check the cookie manually, for paranoia
                                $request->getCookie( 'forceHTTPS', '' ) ||
-                               // check for prefixed version that was used for a time in older MW versions
+                               // check for prefixed version for currently logged in users
                                $request->getCookie( 'forceHTTPS' ) ||
                                // Avoid checking the user and groups unless it's enabled.
                                (
index 8ab92b4..d619f2d 100644 (file)
@@ -59,7 +59,7 @@ application/vnd.oasis.opendocument.text odt
 application/vnd.oasis.opendocument.text-master otm
 application/vnd.oasis.opendocument.text-template ott
 application/vnd.oasis.opendocument.text-web oth
-application/x-javascript js
+application/javascript js
 application/x-shockwave-flash swf
 audio/midi mid midi kar
 audio/mpeg mpga mpa mp2 mp3
@@ -110,7 +110,7 @@ application/vnd.oasis.opendocument.text [OFFICE]
 application/vnd.oasis.opendocument.text-template [OFFICE]
 application/vnd.oasis.opendocument.text-master [OFFICE]
 application/vnd.oasis.opendocument.text-web [OFFICE]
-text/javascript application/x-javascript [EXECUTABLE]
+application/javascript text/javascript application/x-javascript [EXECUTABLE]
 application/x-shockwave-flash [MULTIMEDIA]
 audio/midi [AUDIO]
 audio/x-aiff [AUDIO]
index 93ba702..97165b4 100644 (file)
@@ -21,7 +21,6 @@
  */
 
 use MediaWiki\Logger\LoggerFactory;
-use MediaWiki\Session\SessionManager;
 use WrappedString\WrappedString;
 
 /**
@@ -1978,9 +1977,11 @@ class OutputPage extends ContextSource {
                if ( $cookies === null ) {
                        $config = $this->getConfig();
                        $cookies = array_merge(
-                               SessionManager::singleton()->getVaryCookies(),
                                array(
-                                       'forceHTTPS',
+                                       $config->get( 'CookiePrefix' ) . 'Token',
+                                       $config->get( 'CookiePrefix' ) . 'LoggedOut',
+                                       "forceHTTPS",
+                                       session_name()
                                ),
                                $config->get( 'CacheVaryCookies' )
                        );
@@ -2032,9 +2033,6 @@ class OutputPage extends ContextSource {
         * @return string
         */
        public function getVaryHeader() {
-               foreach ( SessionManager::singleton()->getVaryHeaders() as $header => $options ) {
-                       $this->addVaryHeader( $header, $options );
-               }
                return 'Vary: ' . join( ', ', array_keys( $this->mVaryHeader ) );
        }
 
@@ -2052,10 +2050,6 @@ class OutputPage extends ContextSource {
                }
                $this->addVaryHeader( 'Cookie', $cookiesOption );
 
-               foreach ( SessionManager::singleton()->getVaryHeaders() as $header => $options ) {
-                       $this->addVaryHeader( $header, $options );
-               }
-
                $headers = array();
                foreach ( $this->mVaryHeader as $header => $option ) {
                        $newheader = $header;
@@ -2179,8 +2173,8 @@ class OutputPage extends ContextSource {
 
                if ( $this->mEnableClientCache ) {
                        if (
-                               $config->get( 'UseSquid' ) && !SessionManager::getGlobalSession()->isPersistent() &&
-                               !$this->isPrintable() && $this->mCdnMaxage != 0 && !$this->haveCacheVaryCookies()
+                               $config->get( 'UseSquid' ) && session_id() == '' && !$this->isPrintable() &&
+                               $this->mCdnMaxage != 0 && !$this->haveCacheVaryCookies()
                        ) {
                                if ( $config->get( 'UseESI' ) ) {
                                        # We'll purge the proxy cache explicitly, but require end user agents
index bce9781..f4f6dca 100644 (file)
@@ -1639,8 +1639,10 @@ class Revision implements IDBAccessObject {
                        array(
                                'page_id' => $pageId,
                                'page_latest=rev_id',
-                               ),
-                       __METHOD__ );
+                       ),
+                       __METHOD__,
+                       array( 'FOR UPDATE' ) // T51581
+               );
 
                if ( $current ) {
                        if ( !$user ) {
index d41e559..60c9498 100644 (file)
@@ -721,7 +721,7 @@ class Sanitizer {
         * Take an array of attribute names and values and normalize or discard
         * illegal values for the given whitelist.
         *
-        * - Discards attributes not the given whitelist
+        * - Discards attributes not on the given whitelist
         * - Unsafe style attributes are discarded
         * - Invalid id attributes are re-encoded
         *
@@ -770,18 +770,18 @@ class Sanitizer {
                                $value = Sanitizer::checkCss( $value );
                        }
 
+                       # Escape HTML id attributes
                        if ( $attribute === 'id' ) {
                                $value = Sanitizer::escapeId( $value, 'noninitial' );
                        }
 
-                       # WAI-ARIA
-                       # http://www.w3.org/TR/wai-aria/
-                       # http://www.whatwg.org/html/elements.html#wai-aria
-                       # For now we only support role="presentation" until we work out what roles should be
-                       # usable by content and we ensure that our code explicitly rejects patterns that
-                       # violate HTML5's ARIA restrictions.
-                       if ( $attribute === 'role' && $value !== 'presentation' ) {
-                               continue;
+                       # Escape HTML id reference lists
+                       if ( $attribute === 'aria-describedby'
+                               || $attribute === 'aria-flowto'
+                               || $attribute === 'aria-labelledby'
+                               || $attribute === 'aria-owns'
+                       ) {
+                               $value = Sanitizer::escapeIdReferenceList( $value, 'noninitial' );
                        }
 
                        // RDFa and microdata properties allow URLs, URIs and/or CURIs.
@@ -1163,6 +1163,39 @@ class Sanitizer {
                return $id;
        }
 
+       /**
+        * Given a string containing a space delimited list of ids, escape each id
+        * to match ids escaped by the escapeId() function.
+        *
+        * @since 1.27
+        *
+        * @param string $referenceString Space delimited list of ids
+        * @param string|array $options 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.  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 escapeIdReferenceList( $referenceString, $options = array() ) {
+               # Explode the space delimited list string into an array of tokens
+               $references = preg_split( '/\s+/', "{$referenceString}", -1, PREG_SPLIT_NO_EMPTY );
+
+               # Escape each token as an id
+               foreach ( $references as &$ref ) {
+                       $ref = Sanitizer::escapeId( $ref, $options );
+               }
+
+               # Merge the array back to a space delimited list string
+               # If the array is empty, the result will be an empty string ('')
+               $referenceString = implode( ' ', $references );
+
+               return $referenceString;
+       }
+
        /**
         * Given a value, escape it so that it can be used as a CSS class and
         * return it.
@@ -1208,7 +1241,7 @@ class Sanitizer {
 
        /**
         * Return an associative array of attribute names and values from
-        * a partial tag string. Attribute names are forces to lowercase,
+        * a partial tag string. Attribute names are forced to lowercase,
         * character references are decoded to UTF-8 text.
         *
         * @param string $text
@@ -1546,6 +1579,11 @@ class Sanitizer {
                        'title',
 
                        # WAI-ARIA
+                       'aria-describedby',
+                       'aria-flowto',
+                       'aria-label',
+                       'aria-labelledby',
+                       'aria-owns',
                        'role',
                );
 
index e962a49..06962c1 100644 (file)
@@ -357,7 +357,6 @@ if ( $wgEnableEmail ) {
        $wgEnotifMaxRecips = 0;
        $wgEnotifMinorEdits = false;
        $wgEnotifRevealEditorAddress = false;
-       $wgEnotifUseJobQ = false;
        $wgEnotifUseRealName = false;
        $wgEnotifUserTalk = false;
        $wgEnotifWatchlist = false;
@@ -497,25 +496,10 @@ if ( $wgMaximalPasswordLength !== false ) {
        $wgPasswordPolicy['policies']['default']['MaximalPasswordLength'] = $wgMaximalPasswordLength;
 }
 
-// Backwards compatibility warning
-if ( !$wgSessionsInObjectCache && !$wgSessionsInMemcached ) {
-       wfDeprecated( '$wgSessionsInObjectCache = false', '1.27' );
-       if ( $wgSessionHandler ) {
-               wfDeprecated( '$wgSessionsHandler', '1.27' );
-       }
-       $cacheType = get_class( ObjectCache::getInstance( $wgSessionCacheType ) );
-       wfDebugLog(
-               "Session data will be stored in \"$cacheType\" cache with " .
-                       "expiry $wgObjectCacheSessionExpiry seconds"
-       );
-}
-$wgSessionsInObjectCache = true;
-
-if ( $wgPHPSessionHandling !== 'enable' &&
-       $wgPHPSessionHandling !== 'warn' &&
-       $wgPHPSessionHandling !== 'disable'
-) {
-       $wgPHPSessionHandling = 'warn';
+// Backwards compatibility with deprecated alias
+// Must be before call to wfSetupSession()
+if ( $wgSessionsInMemcached ) {
+       $wgSessionsInObjectCache = true;
 }
 
 Profiler::instance()->scopedProfileOut( $ps_default );
@@ -672,6 +656,20 @@ Profiler::instance()->scopedProfileOut( $ps_memcached );
 // Most of the config is out, some might want to run hooks here.
 Hooks::run( 'SetupAfterCache' );
 
+$ps_session = Profiler::instance()->scopedProfileIn( $fname . '-session' );
+
+if ( !defined( 'MW_NO_SESSION' ) && !$wgCommandLineMode ) {
+       // If session.auto_start is there, we can't touch session name
+       if ( !wfIniGetBool( 'session.auto_start' ) ) {
+               session_name( $wgSessionName ? $wgSessionName : $wgCookiePrefix . '_session' );
+       }
+
+       if ( $wgRequest->checkSessionCookie() || isset( $_COOKIE[$wgCookiePrefix . 'Token'] ) ) {
+               wfSetupSession();
+       }
+}
+
+Profiler::instance()->scopedProfileOut( $ps_session );
 $ps_globals = Profiler::instance()->scopedProfileIn( $fname . '-globals' );
 
 /**
@@ -684,56 +682,6 @@ $wgContLang->initContLang();
 // Now that variant lists may be available...
 $wgRequest->interpolateTitle();
 
-if ( !is_object( $wgAuth ) ) {
-       $wgAuth = new AuthPlugin;
-       Hooks::run( 'AuthPluginSetup', array( &$wgAuth ) );
-}
-
-// Set up the session
-$ps_session = Profiler::instance()->scopedProfileIn( $fname . '-session' );
-if ( !defined( 'MW_NO_SESSION' ) && !$wgCommandLineMode ) {
-       // If session.auto_start is there, we can't touch session name
-       if ( $wgPHPSessionHandling !== 'disable' && !wfIniGetBool( 'session.auto_start' ) ) {
-               session_name( $wgSessionName ? $wgSessionName : $wgCookiePrefix . '_session' );
-       }
-
-       // Create the SessionManager singleton and set up our session handler
-       MediaWiki\Session\PHPSessionHandler::install(
-               MediaWiki\Session\SessionManager::singleton()
-       );
-
-       // Initialize the session
-       try {
-               $session = MediaWiki\Session\SessionManager::getGlobalSession();
-       } catch ( OverflowException $ex ) {
-               if ( isset( $ex->sessionInfos ) && count( $ex->sessionInfos ) >= 2 ) {
-                       // The exception is because the request had multiple possible
-                       // sessions tied for top priority. Report this to the user.
-                       $list = array();
-                       foreach ( $ex->sessionInfos as $info ) {
-                               $list[] = $info->getProvider()->describe( $wgContLang );
-                       }
-                       $list = $wgContLang->listToText( $list );
-                       throw new HttpError( 400,
-                               Message::newFromKey( 'sessionmanager-tie', $list )->inLanguage( $wgContLang )->plain()
-                       );
-               }
-
-               // Not the one we want, rethrow
-               throw $ex;
-       }
-
-       $session->renew();
-       if ( MediaWiki\Session\PHPSessionHandler::isEnabled() &&
-               ( $session->isPersistent() || $session->shouldRememberUser() )
-       ) {
-               // Start the PHP-session for backwards compatibility
-               session_id( $session->getId() );
-               MediaWiki\quietCall( 'session_start' );
-       }
-}
-Profiler::instance()->scopedProfileOut( $ps_session );
-
 /**
  * @var User $wgUser
  */
@@ -754,6 +702,11 @@ $wgOut = RequestContext::getMain()->getOutput(); // BackCompat
  */
 $wgParser = new StubObject( 'wgParser', $wgParserConf['class'], array( $wgParserConf ) );
 
+if ( !is_object( $wgAuth ) ) {
+       $wgAuth = new AuthPlugin;
+       Hooks::run( 'AuthPluginSetup', array( &$wgAuth ) );
+}
+
 /**
  * @var Title $wgTitle
  */
@@ -785,16 +738,6 @@ foreach ( $wgExtensionFunctions as $func ) {
        Profiler::instance()->scopedProfileOut( $ps_ext_func );
 }
 
-// If the session user has a 0 id but a valid name, that means we need to
-// autocreate it.
-$sessionUser = MediaWiki\Session\SessionManager::getGlobalSession()->getUser();
-if ( $sessionUser->getId() === 0 && User::isValidUserName( $sessionUser->getName() ) ) {
-       $ps_autocreate = Profiler::instance()->scopedProfileIn( $fname . '-autocreate' );
-       MediaWiki\Session\SessionManager::autoCreateUser( $sessionUser );
-       Profiler::instance()->scopedProfileOut( $ps_autocreate );
-}
-unset( $sessionUser );
-
 wfDebug( "Fully initialised\n" );
 $wgFullyInitialised = true;
 
index e549037..882b7dd 100644 (file)
@@ -246,7 +246,7 @@ class Title {
         * Create a new Title from text, such as what one would find in a link. De-
         * codes any HTML entities in the text.
         *
-        * @param string|null $text The link text; spaces, prefixes, and an
+        * @param string|int|null $text The link text; spaces, prefixes, and an
         *   initial ':' indicating the main namespace are accepted.
         * @param int $defaultNamespace The namespace to use if none is specified
         *   by a prefix.  If you want to force a specific namespace even if
@@ -259,7 +259,8 @@ class Title {
                if ( is_object( $text ) ) {
                        throw new InvalidArgumentException( '$text must be a string.' );
                }
-               if ( $text !== null && !is_string( $text ) ) {
+               // DWIM: Integers can be passed in here when page titles are used as array keys.
+               if ( $text !== null && !is_string( $text ) && !is_int( $text ) ) {
                        wfDebugLog( 'T76305', wfGetAllCallers( 5 ) );
                        return null;
                }
@@ -268,7 +269,7 @@ class Title {
                }
 
                try {
-                       return Title::newFromTextThrow( $text, $defaultNamespace );
+                       return Title::newFromTextThrow( strval( $text ), $defaultNamespace );
                } catch ( MalformedTitleException $ex ) {
                        return null;
                }
index 0ef2373..49aca0c 100644 (file)
  */
 class WatchedItem {
        /** @var Title */
-       public $mTitle;
+       private $mTitle;
 
        /** @var User */
-       public $mUser;
+       private $mUser;
 
        /** @var int */
-       public $mCheckRights;
+       private $mCheckRights;
 
        /** @var bool */
        private $loaded = false;
@@ -59,17 +59,6 @@ class WatchedItem {
         */
        const CHECK_USER_RIGHTS = 1;
 
-       /**
-        * Do DB master updates right now
-        * @since 1.26
-        */
-       const IMMEDIATE = 0;
-       /**
-        * Do DB master updates via the job queue
-        * @since 1.26
-        */
-       const DEFERRED = 1;
-
        /**
         * Create a WatchedItem object with the given user and title
         * @since 1.22 $checkRights parameter added
@@ -219,10 +208,9 @@ class WatchedItem {
         * @param bool $force Whether to force the write query to be executed even if the
         *    page is not watched or the notification timestamp is already NULL.
         * @param int $oldid The revision id being viewed. If not given or 0, latest revision is assumed.
-        * @mode int $mode WatchedItem::DEFERRED/IMMEDIATE
         */
        public function resetNotificationTimestamp(
-               $force = '', $oldid = 0, $mode = self::IMMEDIATE
+               $force = '', $oldid = 0
        ) {
                // Only loggedin user can have a watchlist
                if ( wfReadOnly() || $this->mUser->isAnon() || !$this->isAllowed( 'editmywatchlist' ) ) {
@@ -273,28 +261,19 @@ class WatchedItem {
                }
 
                // If the page is watched by the user (or may be watched), update the timestamp
-               if ( $mode === self::DEFERRED ) {
-                       $job = new ActivityUpdateJob(
-                               $title,
-                               array(
-                                       'type'      => 'updateWatchlistNotification',
-                                       'userid'    => $this->getUserId(),
-                                       'notifTime' => $notificationTimestamp,
-                                       'curTime'   => time()
-                               )
-                       );
-                       // Try to run this post-send
-                       DeferredUpdates::addCallableUpdate( function() use ( $job ) {
-                               $job->run();
-                       } );
-               } else {
-                       $dbw = wfGetDB( DB_MASTER );
-                       $dbw->update( 'watchlist',
-                               array( 'wl_notificationtimestamp' => $dbw->timestampOrNull( $notificationTimestamp ) ),
-                               $this->dbCond(),
-                               __METHOD__
-                       );
-               }
+               $job = new ActivityUpdateJob(
+                       $title,
+                       array(
+                               'type'      => 'updateWatchlistNotification',
+                               'userid'    => $this->getUserId(),
+                               'notifTime' => $notificationTimestamp,
+                               'curTime'   => time()
+                       )
+               );
+               // Try to run this post-send
+               DeferredUpdates::addCallableUpdate( function() use ( $job ) {
+                       $job->run();
+               } );
 
                $this->timestamp = null;
        }
index 7306105..7b76592 100644 (file)
@@ -23,8 +23,6 @@
  * @file
  */
 
-use MediaWiki\Session\SessionManager;
-
 /**
  * The WebRequest class encapsulates getting at data passed in the
  * URL or via a POSTed form stripping illegal input characters and
@@ -65,13 +63,6 @@ class WebRequest {
         */
        protected $protocol;
 
-       /**
-        * @var \\MediaWiki\\Session\\SessionId|null Session ID to use for this
-        *  request. We can't save the session directly due to reference cycles not
-        *  working too well (slow GC in Zend and never collected in HHVM).
-        */
-       protected $sessionId = null;
-
        public function __construct() {
                $this->requestTime = isset( $_SERVER['REQUEST_TIME_FLOAT'] )
                        ? $_SERVER['REQUEST_TIME_FLOAT'] : microtime( true );
@@ -647,44 +638,18 @@ class WebRequest {
        }
 
        /**
-        * Return the session for this request
-        * @since 1.27
-        * @note For performance, keep the session locally if you will be making
-        *  much use of it instead of calling this method repeatedly.
-        * @return MediaWiki\\Session\\Session
-        */
-       public function getSession() {
-               if ( $this->sessionId !== null ) {
-                       return SessionManager::singleton()->getSessionById( (string)$this->sessionId, false, $this );
-               }
-
-               $session = SessionManager::singleton()->getSessionForRequest( $this );
-               $this->sessionId = $session->getSessionId();
-               return $session;
-       }
-
-       /**
-        * Set the session for this request
-        * @since 1.27
-        * @private For use by MediaWiki\\Session classes only
-        * @param MediaWiki\\Session\\SessionId $sessionId
-        */
-       public function setSessionId( MediaWiki\Session\SessionId $sessionId ) {
-               $this->sessionId = $sessionId;
-       }
-
-       /**
-        * Returns true if the request has a persistent session.
+        * Returns true if there is a session cookie set.
         * This does not necessarily mean that the user is logged in!
         *
-        * @deprecated since 1.27, use
-        *  \\MediaWiki\\Session\\SessionManager::singleton()->getPersistedSessionId()
-        *  instead.
+        * If you want to check for an open session, use session_id()
+        * instead; that will also tell you if the session was opened
+        * during the current request (in which case the cookie will
+        * be sent back to the client at the end of the script run).
+        *
         * @return bool
         */
        public function checkSessionCookie() {
-               wfDeprecated( __METHOD__, '1.27' );
-               return SessionManager::singleton()->getPersistedSessionId( $this ) !== null;
+               return isset( $_COOKIE[session_name()] );
        }
 
        /**
@@ -942,25 +907,26 @@ class WebRequest {
        }
 
        /**
-        * Get data from the session
+        * Get data from $_SESSION
         *
-        * @note Prefer $this->getSession() instead if making multiple calls.
-        * @param string $key Name of key in the session
+        * @param string $key Name of key in $_SESSION
         * @return mixed
         */
        public function getSessionData( $key ) {
-               return $this->getSession()->get( $key );
+               if ( !isset( $_SESSION[$key] ) ) {
+                       return null;
+               }
+               return $_SESSION[$key];
        }
 
        /**
         * Set session data
         *
-        * @note Prefer $this->getSession() instead if making multiple calls.
-        * @param string $key Name of key in the session
+        * @param string $key Name of key in $_SESSION
         * @param mixed $data
         */
        public function setSessionData( $key, $data ) {
-               return $this->getSession()->set( $key, $data );
+               $_SESSION[$key] = $data;
        }
 
        /**
index f14cf22..fd48005 100644 (file)
@@ -131,23 +131,38 @@ class WebResponse {
                if ( Hooks::run( 'WebResponseSetCookie', array( &$name, &$value, &$expire, $options ) ) ) {
                        $cookie = $options['prefix'] . $name;
                        $data = array(
-                               (string)$cookie,
-                               (string)$value,
-                               (int)$expire,
-                               (string)$options['path'],
-                               (string)$options['domain'],
-                               (bool)$options['secure'],
-                               (bool)$options['httpOnly'],
+                               'name' => (string)$cookie,
+                               'value' => (string)$value,
+                               'expire' => (int)$expire,
+                               'path' => (string)$options['path'],
+                               'domain' => (string)$options['domain'],
+                               'secure' => (bool)$options['secure'],
+                               'httpOnly' => (bool)$options['httpOnly'],
                        );
-                       if ( !isset( self::$setCookies[$cookie] ) ||
-                               self::$setCookies[$cookie] !== array( $func, $data )
+
+                       // Per RFC 6265, key is name + domain + path
+                       $key = "{$data['name']}\n{$data['domain']}\n{$data['path']}";
+
+                       // If this cookie name was in the request, fake an entry in
+                       // self::$setCookies for it so the deleting check works right.
+                       if ( isset( $_COOKIE[$cookie] ) && !array_key_exists( $key, self::$setCookies ) ) {
+                               self::$setCookies[$key] = array();
+                       }
+
+                       // PHP deletes if value is the empty string; also, a past expiry is deleting
+                       $deleting = ( $data['value'] === '' || $data['expire'] > 0 && $data['expire'] <= time() );
+
+                       if ( $deleting && !isset( self::$setCookies[$key] ) ) { // isset( null ) is false
+                               wfDebugLog( 'cookie', 'already deleted ' . $func . ': "' . implode( '", "', $data ) . '"' );
+                       } elseif ( !$deleting && isset( self::$setCookies[$key] ) &&
+                               self::$setCookies[$key] === array( $func, $data )
                        ) {
+                               wfDebugLog( 'cookie', 'already set ' . $func . ': "' . implode( '", "', $data ) . '"' );
+                       } else {
                                wfDebugLog( 'cookie', $func . ': "' . implode( '", "', $data ) . '"' );
-                               if ( call_user_func_array( $func, $data ) ) {
-                                       self::$setCookies[$cookie] = array( $func, $data );
+                               if ( call_user_func_array( $func, array_values( $data ) ) ) {
+                                       self::$setCookies[$key] = $deleting ? null : array( $func, $data );
                                }
-                       } else {
-                               wfDebugLog( 'cookie', 'already set ' . $func . ': "' . implode( '", "', $data ) . '"' );
                        }
                }
        }
diff --git a/includes/ZhConversion.php b/includes/ZhConversion.php
deleted file mode 100644 (file)
index 6c768ff..0000000
+++ /dev/null
@@ -1,20277 +0,0 @@
-<?php
-/**
- * Simplified / Traditional Chinese conversion tables
- *
- * Automatically generated using code and data in maintenance/language/zhtable/
- * Do not modify directly!
- *
- * @file
- */
-
-$zh2Hant = array(
-'㐷' => '傌',
-'㐹' => '㑶',
-'㐽' => '偑',
-'㑇' => '㑳',
-'㑈' => '倲',
-'㑔' => '㑯',
-'㑩' => '儸',
-'㓥' => '劏',
-'㔉' => '劚',
-'㖊' => '噚',
-'㖞' => '喎',
-'㘎' => '㘚',
-'㚯' => '㜄',
-'㛀' => '媰',
-'㛟' => '𡞵',
-'㛠' => '𡢃',
-'㛣' => '㜏',
-'㛤' => '孋',
-'㛿' => '𡠹',
-'㟆' => '㠏',
-'㟜' => '𡾱',
-'㤘' => '㥮',
-'㧏' => '掆',
-'㧐' => '㩳',
-'㧑' => '撝',
-'㧟' => '擓',
-'㧰' => '擽',
-'㨫' => '㩜',
-'㭎' => '棡',
-'㭏' => '椲',
-'㭣' => '𣙎',
-'㭤' => '樢',
-'㭴' => '樫',
-'㱩' => '殰',
-'㱮' => '殨',
-'㲿' => '瀇',
-'㳔' => '濧',
-'㳠' => '澾',
-'㳡' => '濄',
-'㳢' => '𣾷',
-'㳽' => '瀰',
-'㶉' => '鸂',
-'㶶' => '燶',
-'㶽' => '煱',
-'㺍' => '獱',
-'㻅' => '璯',
-'㻏' => '𤫩',
-'㻘' => '𤪺',
-'䀥' => '䁻',
-'䁖' => '瞜',
-'䂵' => '碽',
-'䅉' => '稏',
-'䅪' => '𥢢',
-'䇲' => '筴',
-'䉤' => '籔',
-'䌶' => '䊷',
-'䌷' => '紬',
-'䌸' => '縳',
-'䌹' => '絅',
-'䌺' => '䋙',
-'䌻' => '䋚',
-'䌼' => '綐',
-'䌽' => '綵',
-'䌾' => '䋻',
-'䌿' => '䋹',
-'䍀' => '繿',
-'䍁' => '繸',
-'䎬' => '䎱',
-'䏝' => '膞',
-'䓖' => '藭',
-'䗖' => '螮',
-'䘛' => '𧝞',
-'䘞' => '𧜗',
-'䙊' => '𧜵',
-'䙌' => '䙡',
-'䙓' => '襬',
-'䜣' => '訢',
-'䜥' => '𧩙',
-'䜧' => '䜀',
-'䜩' => '讌',
-'䝙' => '貙',
-'䞌' => '𧵳',
-'䞍' => '䝼',
-'䞎' => '𧶧',
-'䞐' => '賰',
-'䟢' => '躎',
-'䢀' => '𨊰',
-'䢁' => '𨊸',
-'䢂' => '𨋢',
-'䥺' => '釾',
-'䥽' => '鏺',
-'䥾' => '䥱',
-'䥿' => '𨯅',
-'䦀' => '𨦫',
-'䦁' => '𨧜',
-'䦂' => '䥇',
-'䦃' => '鐯',
-'䦅' => '鐥',
-'䦶' => '䦛',
-'䦷' => '䦟',
-'䭪' => '𩞯',
-'䯃' => '𩣑',
-'䯄' => '騧',
-'䯅' => '䯀',
-'䲝' => '䱽',
-'䲞' => '𩶘',
-'䲟' => '鮣',
-'䲠' => '鰆',
-'䲡' => '鰌',
-'䲢' => '鰧',
-'䲣' => '䱷',
-'䴓' => '鳾',
-'䴔' => '鵁',
-'䴕' => '鴷',
-'䴖' => '鶄',
-'䴗' => '鶪',
-'䴘' => '鷈',
-'䴙' => '鷿',
-'䶮' => '龑',
-'万' => '萬',
-'与' => '與',
-'专' => '專',
-'业' => '業',
-'丛' => '叢',
-'东' => '東',
-'丝' => '絲',
-'丢' => '丟',
-'两' => '兩',
-'严' => '嚴',
-'丧' => '喪',
-'个' => '個',
-'丰' => '豐',
-'临' => '臨',
-'为' => '為',
-'丽' => '麗',
-'举' => '舉',
-'么' => '麼',
-'义' => '義',
-'乌' => '烏',
-'乐' => '樂',
-'乔' => '喬',
-'习' => '習',
-'乡' => '鄉',
-'书' => '書',
-'买' => '買',
-'乱' => '亂',
-'争' => '爭',
-'于' => '於',
-'亏' => '虧',
-'云' => '雲',
-'亚' => '亞',
-'产' => '產',
-'亩' => '畝',
-'亲' => '親',
-'亵' => '褻',
-'亸' => '嚲',
-'亿' => '億',
-'仅' => '僅',
-'从' => '從',
-'仑' => '侖',
-'仓' => '倉',
-'仪' => '儀',
-'们' => '們',
-'价' => '價',
-'众' => '眾',
-'优' => '優',
-'会' => '會',
-'伛' => '傴',
-'伞' => '傘',
-'伟' => '偉',
-'传' => '傳',
-'伡' => '俥',
-'伣' => '俔',
-'伤' => '傷',
-'伥' => '倀',
-'伦' => '倫',
-'伧' => '傖',
-'伪' => '偽',
-'伫' => '佇',
-'体' => '體',
-'佣' => '傭',
-'佥' => '僉',
-'侠' => '俠',
-'侣' => '侶',
-'侥' => '僥',
-'侦' => '偵',
-'侧' => '側',
-'侨' => '僑',
-'侩' => '儈',
-'侪' => '儕',
-'侬' => '儂',
-'俣' => '俁',
-'俦' => '儔',
-'俨' => '儼',
-'俩' => '倆',
-'俪' => '儷',
-'俫' => '倈',
-'俭' => '儉',
-'债' => '債',
-'倾' => '傾',
-'偬' => '傯',
-'偻' => '僂',
-'偾' => '僨',
-'偿' => '償',
-'傥' => '儻',
-'傧' => '儐',
-'储' => '儲',
-'傩' => '儺',
-'儿' => '兒',
-'兑' => '兌',
-'兖' => '兗',
-'党' => '黨',
-'兰' => '蘭',
-'关' => '關',
-'兴' => '興',
-'兹' => '茲',
-'养' => '養',
-'兽' => '獸',
-'冁' => '囅',
-'内' => '內',
-'冈' => '岡',
-'册' => '冊',
-'写' => '寫',
-'军' => '軍',
-'农' => '農',
-'冯' => '馮',
-'冲' => '沖',
-'决' => '決',
-'况' => '況',
-'冻' => '凍',
-'净' => '淨',
-'凄' => '淒',
-'凉' => '涼',
-'减' => '減',
-'凑' => '湊',
-'凛' => '凜',
-'几' => '幾',
-'凤' => '鳳',
-'凫' => '鳧',
-'凭' => '憑',
-'凯' => '凱',
-'击' => '擊',
-'凿' => '鑿',
-'刍' => '芻',
-'划' => '劃',
-'刘' => '劉',
-'则' => '則',
-'刚' => '剛',
-'创' => '創',
-'删' => '刪',
-'别' => '別',
-'刬' => '剗',
-'刭' => '剄',
-'刹' => '剎',
-'刽' => '劊',
-'刾' => '㓨',
-'刿' => '劌',
-'剀' => '剴',
-'剂' => '劑',
-'剐' => '剮',
-'剑' => '劍',
-'剥' => '剝',
-'剧' => '劇',
-'劝' => '勸',
-'办' => '辦',
-'务' => '務',
-'劢' => '勱',
-'动' => '動',
-'励' => '勵',
-'劲' => '勁',
-'劳' => '勞',
-'势' => '勢',
-'勋' => '勛',
-'勚' => '勩',
-'匀' => '勻',
-'匦' => '匭',
-'匮' => '匱',
-'区' => '區',
-'医' => '醫',
-'华' => '華',
-'协' => '協',
-'单' => '單',
-'卖' => '賣',
-'卢' => '盧',
-'卤' => '鹵',
-'卧' => '臥',
-'卫' => '衛',
-'却' => '卻',
-'厂' => '廠',
-'厅' => '廳',
-'历' => '歷',
-'厉' => '厲',
-'压' => '壓',
-'厌' => '厭',
-'厍' => '厙',
-'厐' => '龎',
-'厕' => '廁',
-'厢' => '廂',
-'厣' => '厴',
-'厦' => '廈',
-'厨' => '廚',
-'厩' => '廄',
-'厮' => '廝',
-'县' => '縣',
-'叁' => '叄',
-'参' => '參',
-'叆' => '靉',
-'叇' => '靆',
-'双' => '雙',
-'发' => '發',
-'变' => '變',
-'叙' => '敘',
-'叠' => '疊',
-'叶' => '葉',
-'号' => '號',
-'叹' => '嘆',
-'叽' => '嘰',
-'后' => '後',
-'吓' => '嚇',
-'吕' => '呂',
-'吗' => '嗎',
-'吣' => '唚',
-'吨' => '噸',
-'听' => '聽',
-'启' => '啟',
-'吴' => '吳',
-'呐' => '吶',
-'呒' => '嘸',
-'呓' => '囈',
-'呕' => '嘔',
-'呖' => '嚦',
-'呗' => '唄',
-'员' => '員',
-'呙' => '咼',
-'呛' => '嗆',
-'呜' => '嗚',
-'咏' => '詠',
-'咙' => '嚨',
-'咛' => '嚀',
-'咝' => '噝',
-'响' => '響',
-'哑' => '啞',
-'哒' => '噠',
-'哓' => '嘵',
-'哔' => '嗶',
-'哕' => '噦',
-'哗' => '嘩',
-'哙' => '噲',
-'哜' => '嚌',
-'哝' => '噥',
-'哟' => '喲',
-'唛' => '嘜',
-'唝' => '嗊',
-'唠' => '嘮',
-'唡' => '啢',
-'唢' => '嗩',
-'唤' => '喚',
-'啧' => '嘖',
-'啬' => '嗇',
-'啭' => '囀',
-'啮' => '齧',
-'啯' => '嘓',
-'啰' => '囉',
-'啴' => '嘽',
-'啸' => '嘯',
-'喂' => '餵',
-'喷' => '噴',
-'喽' => '嘍',
-'喾' => '嚳',
-'嗫' => '囁',
-'嗳' => '噯',
-'嘘' => '噓',
-'嘤' => '嚶',
-'嘱' => '囑',
-'噜' => '嚕',
-'嚣' => '囂',
-'团' => '團',
-'园' => '園',
-'囱' => '囪',
-'围' => '圍',
-'囵' => '圇',
-'国' => '國',
-'图' => '圖',
-'圆' => '圓',
-'圣' => '聖',
-'圹' => '壙',
-'场' => '場',
-'坏' => '壞',
-'块' => '塊',
-'坚' => '堅',
-'坛' => '壇',
-'坜' => '壢',
-'坝' => '壩',
-'坞' => '塢',
-'坟' => '墳',
-'坠' => '墜',
-'垄' => '壟',
-'垅' => '壠',
-'垆' => '壚',
-'垒' => '壘',
-'垦' => '墾',
-'垩' => '堊',
-'垫' => '墊',
-'垭' => '埡',
-'垱' => '壋',
-'垲' => '塏',
-'埘' => '塒',
-'埙' => '塤',
-'埚' => '堝',
-'埯' => '垵',
-'堑' => '塹',
-'堕' => '墮',
-'墙' => '牆',
-'壮' => '壯',
-'声' => '聲',
-'壳' => '殼',
-'壶' => '壺',
-'壸' => '壼',
-'处' => '處',
-'备' => '備',
-'复' => '復',
-'够' => '夠',
-'头' => '頭',
-'夹' => '夾',
-'夺' => '奪',
-'奁' => '奩',
-'奂' => '奐',
-'奋' => '奮',
-'奖' => '獎',
-'奥' => '奧',
-'妆' => '妝',
-'妇' => '婦',
-'妈' => '媽',
-'妩' => '嫵',
-'妪' => '嫗',
-'妫' => '媯',
-'姗' => '姍',
-'姹' => '奼',
-'娄' => '婁',
-'娅' => '婭',
-'娆' => '嬈',
-'娇' => '嬌',
-'娈' => '孌',
-'娱' => '娛',
-'娲' => '媧',
-'娴' => '嫻',
-'婳' => '嫿',
-'婴' => '嬰',
-'婵' => '嬋',
-'婶' => '嬸',
-'媪' => '媼',
-'媭' => '嬃',
-'嫒' => '嬡',
-'嫔' => '嬪',
-'嫱' => '嬙',
-'嬷' => '嬤',
-'孙' => '孫',
-'学' => '學',
-'孪' => '孿',
-'宁' => '寧',
-'宝' => '寶',
-'实' => '實',
-'宠' => '寵',
-'审' => '審',
-'宪' => '憲',
-'宫' => '宮',
-'宽' => '寬',
-'宾' => '賓',
-'寝' => '寢',
-'对' => '對',
-'寻' => '尋',
-'导' => '導',
-'寿' => '壽',
-'将' => '將',
-'尔' => '爾',
-'尘' => '塵',
-'尝' => '嘗',
-'尧' => '堯',
-'尴' => '尷',
-'尸' => '屍',
-'尽' => '盡',
-'层' => '層',
-'屃' => '屓',
-'屉' => '屜',
-'届' => '屆',
-'属' => '屬',
-'屡' => '屢',
-'屦' => '屨',
-'屿' => '嶼',
-'岁' => '歲',
-'岂' => '豈',
-'岖' => '嶇',
-'岗' => '崗',
-'岘' => '峴',
-'岚' => '嵐',
-'岛' => '島',
-'岭' => '嶺',
-'岽' => '崬',
-'岿' => '巋',
-'峃' => '嶨',
-'峄' => '嶧',
-'峡' => '峽',
-'峣' => '嶢',
-'峤' => '嶠',
-'峥' => '崢',
-'峦' => '巒',
-'崂' => '嶗',
-'崃' => '崍',
-'崄' => '嶮',
-'崭' => '嶄',
-'嵘' => '嶸',
-'嵚' => '嶔',
-'嵝' => '嶁',
-'巅' => '巔',
-'巩' => '鞏',
-'巯' => '巰',
-'币' => '幣',
-'帅' => '帥',
-'师' => '師',
-'帏' => '幃',
-'帐' => '帳',
-'帘' => '簾',
-'帜' => '幟',
-'带' => '帶',
-'帧' => '幀',
-'帮' => '幫',
-'帱' => '幬',
-'帻' => '幘',
-'帼' => '幗',
-'幂' => '冪',
-'并' => '並',
-'幺' => '么',
-'广' => '廣',
-'庄' => '莊',
-'庆' => '慶',
-'庐' => '廬',
-'庑' => '廡',
-'库' => '庫',
-'应' => '應',
-'庙' => '廟',
-'庞' => '龐',
-'废' => '廢',
-'庼' => '廎',
-'廪' => '廩',
-'开' => '開',
-'异' => '異',
-'弃' => '棄',
-'弑' => '弒',
-'张' => '張',
-'弥' => '彌',
-'弪' => '弳',
-'弯' => '彎',
-'弹' => '彈',
-'强' => '強',
-'归' => '歸',
-'当' => '當',
-'录' => '錄',
-'彟' => '彠',
-'彦' => '彥',
-'彨' => '彲',
-'彻' => '徹',
-'径' => '徑',
-'徕' => '徠',
-'忆' => '憶',
-'忏' => '懺',
-'忧' => '憂',
-'忾' => '愾',
-'怀' => '懷',
-'态' => '態',
-'怂' => '慫',
-'怃' => '憮',
-'怄' => '慪',
-'怅' => '悵',
-'怆' => '愴',
-'怜' => '憐',
-'总' => '總',
-'怼' => '懟',
-'怿' => '懌',
-'恋' => '戀',
-'恒' => '恆',
-'恳' => '懇',
-'恶' => '惡',
-'恸' => '慟',
-'恹' => '懨',
-'恺' => '愷',
-'恻' => '惻',
-'恼' => '惱',
-'恽' => '惲',
-'悦' => '悅',
-'悫' => '愨',
-'悬' => '懸',
-'悭' => '慳',
-'悮' => '悞',
-'悯' => '憫',
-'惊' => '驚',
-'惧' => '懼',
-'惨' => '慘',
-'惩' => '懲',
-'惫' => '憊',
-'惬' => '愜',
-'惭' => '慚',
-'惮' => '憚',
-'惯' => '慣',
-'愠' => '慍',
-'愤' => '憤',
-'愦' => '憒',
-'愿' => '願',
-'慑' => '懾',
-'懑' => '懣',
-'懒' => '懶',
-'懔' => '懍',
-'戆' => '戇',
-'戋' => '戔',
-'戏' => '戲',
-'戗' => '戧',
-'战' => '戰',
-'戬' => '戩',
-'戯' => '戱',
-'户' => '戶',
-'扑' => '撲',
-'执' => '執',
-'扩' => '擴',
-'扪' => '捫',
-'扫' => '掃',
-'扬' => '揚',
-'扰' => '擾',
-'抚' => '撫',
-'抛' => '拋',
-'抟' => '摶',
-'抠' => '摳',
-'抡' => '掄',
-'抢' => '搶',
-'护' => '護',
-'报' => '報',
-'担' => '擔',
-'拟' => '擬',
-'拢' => '攏',
-'拣' => '揀',
-'拥' => '擁',
-'拦' => '攔',
-'拧' => '擰',
-'拨' => '撥',
-'择' => '擇',
-'挂' => '掛',
-'挚' => '摯',
-'挛' => '攣',
-'挜' => '掗',
-'挝' => '撾',
-'挞' => '撻',
-'挟' => '挾',
-'挠' => '撓',
-'挡' => '擋',
-'挢' => '撟',
-'挣' => '掙',
-'挤' => '擠',
-'挥' => '揮',
-'挦' => '撏',
-'捝' => '挩',
-'捞' => '撈',
-'损' => '損',
-'捡' => '撿',
-'换' => '換',
-'捣' => '搗',
-'据' => '據',
-'掳' => '擄',
-'掴' => '摑',
-'掷' => '擲',
-'掸' => '撣',
-'掺' => '摻',
-'掼' => '摜',
-'揽' => '攬',
-'揾' => '搵',
-'揿' => '撳',
-'搀' => '攙',
-'搁' => '擱',
-'搂' => '摟',
-'搅' => '攪',
-'携' => '攜',
-'摄' => '攝',
-'摅' => '攄',
-'摆' => '擺',
-'摇' => '搖',
-'摈' => '擯',
-'摊' => '攤',
-'撄' => '攖',
-'撑' => '撐',
-'撵' => '攆',
-'撷' => '擷',
-'撸' => '擼',
-'撺' => '攛',
-'擞' => '擻',
-'攒' => '攢',
-'敌' => '敵',
-'敛' => '斂',
-'敩' => '斆',
-'数' => '數',
-'斋' => '齋',
-'斓' => '斕',
-'斩' => '斬',
-'断' => '斷',
-'无' => '無',
-'旧' => '舊',
-'时' => '時',
-'旷' => '曠',
-'旸' => '暘',
-'昙' => '曇',
-'昼' => '晝',
-'昽' => '曨',
-'显' => '顯',
-'晋' => '晉',
-'晒' => '曬',
-'晓' => '曉',
-'晔' => '曄',
-'晕' => '暈',
-'晖' => '暉',
-'暂' => '暫',
-'暧' => '曖',
-'术' => '術',
-'机' => '機',
-'杀' => '殺',
-'杂' => '雜',
-'权' => '權',
-'杠' => '槓',
-'条' => '條',
-'来' => '來',
-'杨' => '楊',
-'杩' => '榪',
-'杰' => '傑',
-'极' => '極',
-'构' => '構',
-'枞' => '樅',
-'枢' => '樞',
-'枣' => '棗',
-'枥' => '櫪',
-'枧' => '梘',
-'枨' => '棖',
-'枪' => '槍',
-'枫' => '楓',
-'枭' => '梟',
-'柜' => '櫃',
-'柠' => '檸',
-'柽' => '檉',
-'栀' => '梔',
-'栅' => '柵',
-'标' => '標',
-'栈' => '棧',
-'栉' => '櫛',
-'栊' => '櫳',
-'栋' => '棟',
-'栌' => '櫨',
-'栎' => '櫟',
-'栏' => '欄',
-'树' => '樹',
-'栖' => '棲',
-'样' => '樣',
-'栾' => '欒',
-'桠' => '椏',
-'桡' => '橈',
-'桢' => '楨',
-'档' => '檔',
-'桤' => '榿',
-'桥' => '橋',
-'桦' => '樺',
-'桧' => '檜',
-'桨' => '槳',
-'桩' => '樁',
-'桪' => '樳',
-'梦' => '夢',
-'梼' => '檮',
-'梾' => '棶',
-'梿' => '槤',
-'检' => '檢',
-'棁' => '梲',
-'棂' => '欞',
-'椁' => '槨',
-'椝' => '槼',
-'椟' => '櫝',
-'椠' => '槧',
-'椢' => '槶',
-'椤' => '欏',
-'椫' => '樿',
-'椭' => '橢',
-'椮' => '槮',
-'楼' => '樓',
-'榄' => '欖',
-'榅' => '榲',
-'榇' => '櫬',
-'榈' => '櫚',
-'榉' => '櫸',
-'槚' => '檟',
-'槛' => '檻',
-'槟' => '檳',
-'槠' => '櫧',
-'横' => '橫',
-'樯' => '檣',
-'樱' => '櫻',
-'橥' => '櫫',
-'橱' => '櫥',
-'橹' => '櫓',
-'橼' => '櫞',
-'檩' => '檁',
-'欢' => '歡',
-'欤' => '歟',
-'欧' => '歐',
-'歼' => '殲',
-'殁' => '歿',
-'殇' => '殤',
-'残' => '殘',
-'殒' => '殞',
-'殓' => '殮',
-'殚' => '殫',
-'殡' => '殯',
-'殴' => '毆',
-'毁' => '毀',
-'毂' => '轂',
-'毕' => '畢',
-'毙' => '斃',
-'毡' => '氈',
-'毵' => '毿',
-'氇' => '氌',
-'气' => '氣',
-'氢' => '氫',
-'氩' => '氬',
-'氲' => '氳',
-'汇' => '匯',
-'汉' => '漢',
-'汤' => '湯',
-'汹' => '洶',
-'沟' => '溝',
-'没' => '沒',
-'沣' => '灃',
-'沤' => '漚',
-'沥' => '瀝',
-'沦' => '淪',
-'沧' => '滄',
-'沨' => '渢',
-'沩' => '溈',
-'沪' => '滬',
-'泞' => '濘',
-'泪' => '淚',
-'泶' => '澩',
-'泷' => '瀧',
-'泸' => '瀘',
-'泺' => '濼',
-'泻' => '瀉',
-'泼' => '潑',
-'泽' => '澤',
-'泾' => '涇',
-'洁' => '潔',
-'洒' => '灑',
-'洼' => '窪',
-'浃' => '浹',
-'浅' => '淺',
-'浆' => '漿',
-'浇' => '澆',
-'浈' => '湞',
-'浉' => '溮',
-'浊' => '濁',
-'测' => '測',
-'浍' => '澮',
-'济' => '濟',
-'浏' => '瀏',
-'浐' => '滻',
-'浑' => '渾',
-'浒' => '滸',
-'浓' => '濃',
-'浔' => '潯',
-'浕' => '濜',
-'涂' => '塗',
-'涛' => '濤',
-'涝' => '澇',
-'涞' => '淶',
-'涟' => '漣',
-'涠' => '潿',
-'涡' => '渦',
-'涢' => '溳',
-'涣' => '渙',
-'涤' => '滌',
-'润' => '潤',
-'涧' => '澗',
-'涨' => '漲',
-'涩' => '澀',
-'渊' => '淵',
-'渌' => '淥',
-'渍' => '漬',
-'渎' => '瀆',
-'渐' => '漸',
-'渑' => '澠',
-'渔' => '漁',
-'渖' => '瀋',
-'渗' => '滲',
-'温' => '溫',
-'湾' => '灣',
-'湿' => '濕',
-'溃' => '潰',
-'溅' => '濺',
-'溆' => '漵',
-'溇' => '漊',
-'滗' => '潷',
-'滚' => '滾',
-'滞' => '滯',
-'滟' => '灩',
-'滠' => '灄',
-'满' => '滿',
-'滢' => '瀅',
-'滤' => '濾',
-'滥' => '濫',
-'滦' => '灤',
-'滨' => '濱',
-'滩' => '灘',
-'滪' => '澦',
-'漤' => '灠',
-'潆' => '瀠',
-'潇' => '瀟',
-'潋' => '瀲',
-'潍' => '濰',
-'潜' => '潛',
-'潴' => '瀦',
-'澛' => '瀂',
-'澜' => '瀾',
-'濑' => '瀨',
-'濒' => '瀕',
-'灏' => '灝',
-'灭' => '滅',
-'灯' => '燈',
-'灵' => '靈',
-'灾' => '災',
-'灿' => '燦',
-'炀' => '煬',
-'炉' => '爐',
-'炖' => '燉',
-'炜' => '煒',
-'炝' => '熗',
-'点' => '點',
-'炼' => '煉',
-'炽' => '熾',
-'烁' => '爍',
-'烂' => '爛',
-'烃' => '烴',
-'烛' => '燭',
-'烟' => '煙',
-'烦' => '煩',
-'烧' => '燒',
-'烨' => '燁',
-'烩' => '燴',
-'烫' => '燙',
-'烬' => '燼',
-'热' => '熱',
-'焕' => '煥',
-'焖' => '燜',
-'焘' => '燾',
-'煴' => '熅',
-'爱' => '愛',
-'爷' => '爺',
-'牍' => '牘',
-'牦' => '氂',
-'牵' => '牽',
-'牺' => '犧',
-'犊' => '犢',
-'状' => '狀',
-'犷' => '獷',
-'犸' => '獁',
-'犹' => '猶',
-'狈' => '狽',
-'狝' => '獮',
-'狞' => '獰',
-'独' => '獨',
-'狭' => '狹',
-'狮' => '獅',
-'狯' => '獪',
-'狰' => '猙',
-'狱' => '獄',
-'狲' => '猻',
-'猃' => '獫',
-'猎' => '獵',
-'猕' => '獼',
-'猡' => '玀',
-'猪' => '豬',
-'猫' => '貓',
-'猬' => '蝟',
-'献' => '獻',
-'獭' => '獺',
-'玑' => '璣',
-'玙' => '璵',
-'玚' => '瑒',
-'玛' => '瑪',
-'玮' => '瑋',
-'环' => '環',
-'现' => '現',
-'玱' => '瑲',
-'玺' => '璽',
-'珐' => '琺',
-'珑' => '瓏',
-'珰' => '璫',
-'珲' => '琿',
-'琎' => '璡',
-'琏' => '璉',
-'琐' => '瑣',
-'琼' => '瓊',
-'瑶' => '瑤',
-'瑷' => '璦',
-'瑸' => '璸',
-'璎' => '瓔',
-'瓒' => '瓚',
-'瓯' => '甌',
-'电' => '電',
-'画' => '畫',
-'畅' => '暢',
-'畴' => '疇',
-'疖' => '癤',
-'疗' => '療',
-'疟' => '瘧',
-'疠' => '癘',
-'疡' => '瘍',
-'疬' => '癧',
-'疭' => '瘲',
-'疮' => '瘡',
-'疯' => '瘋',
-'疱' => '皰',
-'痈' => '癰',
-'痉' => '痙',
-'痒' => '癢',
-'痖' => '瘂',
-'痨' => '癆',
-'痪' => '瘓',
-'痫' => '癇',
-'痳' => '痲',
-'瘅' => '癉',
-'瘆' => '瘮',
-'瘗' => '瘞',
-'瘘' => '瘺',
-'瘪' => '癟',
-'瘫' => '癱',
-'瘾' => '癮',
-'瘿' => '癭',
-'癞' => '癩',
-'癣' => '癬',
-'癫' => '癲',
-'皑' => '皚',
-'皱' => '皺',
-'皲' => '皸',
-'盏' => '盞',
-'盐' => '鹽',
-'监' => '監',
-'盖' => '蓋',
-'盗' => '盜',
-'盘' => '盤',
-'眍' => '瞘',
-'眦' => '眥',
-'眬' => '矓',
-'睁' => '睜',
-'睐' => '睞',
-'睑' => '瞼',
-'瞆' => '瞶',
-'瞒' => '瞞',
-'瞩' => '矚',
-'矫' => '矯',
-'矶' => '磯',
-'矾' => '礬',
-'矿' => '礦',
-'砀' => '碭',
-'码' => '碼',
-'砖' => '磚',
-'砗' => '硨',
-'砚' => '硯',
-'砜' => '碸',
-'砺' => '礪',
-'砻' => '礱',
-'砾' => '礫',
-'础' => '礎',
-'硁' => '硜',
-'硕' => '碩',
-'硖' => '硤',
-'硗' => '磽',
-'硙' => '磑',
-'硚' => '礄',
-'确' => '確',
-'硵' => '磠',
-'硷' => '鹼',
-'碍' => '礙',
-'碛' => '磧',
-'碜' => '磣',
-'碱' => '鹼',
-'礼' => '禮',
-'祃' => '禡',
-'祎' => '禕',
-'祢' => '禰',
-'祯' => '禎',
-'祷' => '禱',
-'祸' => '禍',
-'禀' => '稟',
-'禄' => '祿',
-'禅' => '禪',
-'离' => '離',
-'秃' => '禿',
-'秆' => '稈',
-'种' => '種',
-'积' => '積',
-'称' => '稱',
-'秽' => '穢',
-'秾' => '穠',
-'稆' => '穭',
-'税' => '稅',
-'稣' => '穌',
-'稳' => '穩',
-'穑' => '穡',
-'穷' => '窮',
-'窃' => '竊',
-'窍' => '竅',
-'窎' => '窵',
-'窑' => '窯',
-'窜' => '竄',
-'窝' => '窩',
-'窥' => '窺',
-'窦' => '竇',
-'窭' => '窶',
-'竖' => '豎',
-'竞' => '競',
-'笃' => '篤',
-'笋' => '筍',
-'笔' => '筆',
-'笕' => '筧',
-'笺' => '箋',
-'笼' => '籠',
-'笾' => '籩',
-'筑' => '築',
-'筚' => '篳',
-'筛' => '篩',
-'筜' => '簹',
-'筝' => '箏',
-'筹' => '籌',
-'筼' => '篔',
-'签' => '簽',
-'简' => '簡',
-'箓' => '籙',
-'箦' => '簀',
-'箧' => '篋',
-'箨' => '籜',
-'箩' => '籮',
-'箪' => '簞',
-'箫' => '簫',
-'篑' => '簣',
-'篓' => '簍',
-'篮' => '籃',
-'篯' => '籛',
-'篱' => '籬',
-'簖' => '籪',
-'籁' => '籟',
-'籴' => '糴',
-'类' => '類',
-'籼' => '秈',
-'粜' => '糶',
-'粝' => '糲',
-'粤' => '粵',
-'粪' => '糞',
-'粮' => '糧',
-'糁' => '糝',
-'糇' => '餱',
-'紧' => '緊',
-'絷' => '縶',
-'纟' => '糹',
-'纠' => '糾',
-'纡' => '紆',
-'红' => '紅',
-'纣' => '紂',
-'纤' => '纖',
-'纥' => '紇',
-'约' => '約',
-'级' => '級',
-'纨' => '紈',
-'纩' => '纊',
-'纪' => '紀',
-'纫' => '紉',
-'纬' => '緯',
-'纭' => '紜',
-'纮' => '紘',
-'纯' => '純',
-'纰' => '紕',
-'纱' => '紗',
-'纲' => '綱',
-'纳' => '納',
-'纴' => '紝',
-'纵' => '縱',
-'纶' => '綸',
-'纷' => '紛',
-'纸' => '紙',
-'纹' => '紋',
-'纺' => '紡',
-'纻' => '紵',
-'纼' => '紖',
-'纽' => '紐',
-'纾' => '紓',
-'线' => '線',
-'绀' => '紺',
-'绁' => '紲',
-'绂' => '紱',
-'练' => '練',
-'组' => '組',
-'绅' => '紳',
-'细' => '細',
-'织' => '織',
-'终' => '終',
-'绉' => '縐',
-'绊' => '絆',
-'绋' => '紼',
-'绌' => '絀',
-'绍' => '紹',
-'绎' => '繹',
-'经' => '經',
-'绐' => '紿',
-'绑' => '綁',
-'绒' => '絨',
-'结' => '結',
-'绔' => '絝',
-'绕' => '繞',
-'绖' => '絰',
-'绗' => '絎',
-'绘' => '繪',
-'给' => '給',
-'绚' => '絢',
-'绛' => '絳',
-'络' => '絡',
-'绝' => '絕',
-'绞' => '絞',
-'统' => '統',
-'绠' => '綆',
-'绡' => '綃',
-'绢' => '絹',
-'绣' => '繡',
-'绤' => '綌',
-'绥' => '綏',
-'绦' => '絛',
-'继' => '繼',
-'绨' => '綈',
-'绩' => '績',
-'绪' => '緒',
-'绫' => '綾',
-'绬' => '緓',
-'续' => '續',
-'绮' => '綺',
-'绯' => '緋',
-'绰' => '綽',
-'绱' => '鞝',
-'绲' => '緄',
-'绳' => '繩',
-'维' => '維',
-'绵' => '綿',
-'绶' => '綬',
-'绷' => '繃',
-'绸' => '綢',
-'绹' => '綯',
-'绺' => '綹',
-'绻' => '綣',
-'综' => '綜',
-'绽' => '綻',
-'绾' => '綰',
-'绿' => '綠',
-'缀' => '綴',
-'缁' => '緇',
-'缂' => '緙',
-'缃' => '緗',
-'缄' => '緘',
-'缅' => '緬',
-'缆' => '纜',
-'缇' => '緹',
-'缈' => '緲',
-'缉' => '緝',
-'缊' => '縕',
-'缋' => '繢',
-'缌' => '緦',
-'缍' => '綞',
-'缎' => '緞',
-'缏' => '緶',
-'缐' => '線',
-'缑' => '緱',
-'缒' => '縋',
-'缓' => '緩',
-'缔' => '締',
-'缕' => '縷',
-'编' => '編',
-'缗' => '緡',
-'缘' => '緣',
-'缙' => '縉',
-'缚' => '縛',
-'缛' => '縟',
-'缜' => '縝',
-'缝' => '縫',
-'缞' => '縗',
-'缟' => '縞',
-'缠' => '纏',
-'缡' => '縭',
-'缢' => '縊',
-'缣' => '縑',
-'缤' => '繽',
-'缥' => '縹',
-'缦' => '縵',
-'缧' => '縲',
-'缨' => '纓',
-'缩' => '縮',
-'缪' => '繆',
-'缫' => '繅',
-'缬' => '纈',
-'缭' => '繚',
-'缮' => '繕',
-'缯' => '繒',
-'缰' => '韁',
-'缱' => '繾',
-'缲' => '繰',
-'缳' => '繯',
-'缴' => '繳',
-'缵' => '纘',
-'罂' => '罌',
-'网' => '網',
-'罗' => '羅',
-'罚' => '罰',
-'罢' => '罷',
-'罴' => '羆',
-'羁' => '羈',
-'羟' => '羥',
-'羡' => '羨',
-'翘' => '翹',
-'翙' => '翽',
-'翚' => '翬',
-'耢' => '耮',
-'耧' => '耬',
-'耸' => '聳',
-'耻' => '恥',
-'聂' => '聶',
-'聋' => '聾',
-'职' => '職',
-'聍' => '聹',
-'联' => '聯',
-'聩' => '聵',
-'聪' => '聰',
-'肃' => '肅',
-'肠' => '腸',
-'肤' => '膚',
-'肮' => '骯',
-'肴' => '餚',
-'肾' => '腎',
-'肿' => '腫',
-'胀' => '脹',
-'胁' => '脅',
-'胆' => '膽',
-'胜' => '勝',
-'胧' => '朧',
-'胨' => '腖',
-'胪' => '臚',
-'胫' => '脛',
-'胶' => '膠',
-'脉' => '脈',
-'脍' => '膾',
-'脏' => '髒',
-'脐' => '臍',
-'脑' => '腦',
-'脓' => '膿',
-'脔' => '臠',
-'脚' => '腳',
-'脱' => '脫',
-'脶' => '腡',
-'脸' => '臉',
-'腊' => '臘',
-'腌' => '醃',
-'腘' => '膕',
-'腭' => '齶',
-'腻' => '膩',
-'腼' => '靦',
-'腽' => '膃',
-'腾' => '騰',
-'膑' => '臏',
-'臜' => '臢',
-'舆' => '輿',
-'舣' => '艤',
-'舰' => '艦',
-'舱' => '艙',
-'舻' => '艫',
-'艰' => '艱',
-'艳' => '艷',
-'艺' => '藝',
-'节' => '節',
-'芈' => '羋',
-'芗' => '薌',
-'芜' => '蕪',
-'芦' => '蘆',
-'苁' => '蓯',
-'苇' => '葦',
-'苈' => '藶',
-'苋' => '莧',
-'苌' => '萇',
-'苍' => '蒼',
-'苎' => '苧',
-'苏' => '蘇',
-'苧' => '薴',
-'茎' => '莖',
-'茏' => '蘢',
-'茑' => '蔦',
-'茔' => '塋',
-'茕' => '煢',
-'茧' => '繭',
-'荆' => '荊',
-'荐' => '薦',
-'荙' => '薘',
-'荚' => '莢',
-'荛' => '蕘',
-'荜' => '蓽',
-'荝' => '萴',
-'荞' => '蕎',
-'荟' => '薈',
-'荠' => '薺',
-'荡' => '盪',
-'荣' => '榮',
-'荤' => '葷',
-'荥' => '滎',
-'荦' => '犖',
-'荧' => '熒',
-'荨' => '蕁',
-'荩' => '藎',
-'荪' => '蓀',
-'荫' => '蔭',
-'荬' => '蕒',
-'荭' => '葒',
-'荮' => '葤',
-'药' => '藥',
-'莅' => '蒞',
-'莱' => '萊',
-'莲' => '蓮',
-'莳' => '蒔',
-'莴' => '萵',
-'莶' => '薟',
-'获' => '獲',
-'莸' => '蕕',
-'莹' => '瑩',
-'莺' => '鶯',
-'莼' => '蓴',
-'萚' => '蘀',
-'萝' => '蘿',
-'萤' => '螢',
-'营' => '營',
-'萦' => '縈',
-'萧' => '蕭',
-'萨' => '薩',
-'葱' => '蔥',
-'蒇' => '蕆',
-'蒉' => '蕢',
-'蒋' => '蔣',
-'蒌' => '蔞',
-'蓝' => '藍',
-'蓟' => '薊',
-'蓠' => '蘺',
-'蓣' => '蕷',
-'蓥' => '鎣',
-'蓦' => '驀',
-'蔂' => '虆',
-'蔷' => '薔',
-'蔹' => '蘞',
-'蔺' => '藺',
-'蔼' => '藹',
-'蕰' => '薀',
-'蕲' => '蘄',
-'蕴' => '蘊',
-'薮' => '藪',
-'藓' => '蘚',
-'蘖' => '櫱',
-'虏' => '虜',
-'虑' => '慮',
-'虚' => '虛',
-'虫' => '蟲',
-'虮' => '蟣',
-'虽' => '雖',
-'虾' => '蝦',
-'虿' => '蠆',
-'蚀' => '蝕',
-'蚁' => '蟻',
-'蚂' => '螞',
-'蚃' => '蠁',
-'蚕' => '蠶',
-'蚬' => '蜆',
-'蛊' => '蠱',
-'蛎' => '蠣',
-'蛏' => '蟶',
-'蛮' => '蠻',
-'蛰' => '蟄',
-'蛱' => '蛺',
-'蛲' => '蟯',
-'蛳' => '螄',
-'蛴' => '蠐',
-'蜕' => '蛻',
-'蜗' => '蝸',
-'蜡' => '蠟',
-'蝇' => '蠅',
-'蝈' => '蟈',
-'蝉' => '蟬',
-'蝎' => '蠍',
-'蝼' => '螻',
-'蝾' => '蠑',
-'螀' => '螿',
-'螨' => '蟎',
-'蟏' => '蠨',
-'衅' => '釁',
-'衔' => '銜',
-'补' => '補',
-'衬' => '襯',
-'衮' => '袞',
-'袄' => '襖',
-'袅' => '裊',
-'袆' => '褘',
-'袜' => '襪',
-'袭' => '襲',
-'袯' => '襏',
-'装' => '裝',
-'裆' => '襠',
-'裈' => '褌',
-'裢' => '褳',
-'裣' => '襝',
-'裤' => '褲',
-'裥' => '襉',
-'褛' => '褸',
-'褴' => '襤',
-'襕' => '襴',
-'见' => '見',
-'观' => '觀',
-'觃' => '覎',
-'规' => '規',
-'觅' => '覓',
-'视' => '視',
-'觇' => '覘',
-'览' => '覽',
-'觉' => '覺',
-'觊' => '覬',
-'觋' => '覡',
-'觌' => '覿',
-'觍' => '覥',
-'觎' => '覦',
-'觏' => '覯',
-'觐' => '覲',
-'觑' => '覷',
-'觞' => '觴',
-'触' => '觸',
-'觯' => '觶',
-'訚' => '誾',
-'詟' => '讋',
-'誉' => '譽',
-'誊' => '謄',
-'讠' => '訁',
-'计' => '計',
-'订' => '訂',
-'讣' => '訃',
-'认' => '認',
-'讥' => '譏',
-'讦' => '訐',
-'讧' => '訌',
-'讨' => '討',
-'让' => '讓',
-'讪' => '訕',
-'讫' => '訖',
-'讬' => '託',
-'训' => '訓',
-'议' => '議',
-'讯' => '訊',
-'记' => '記',
-'讱' => '訒',
-'讲' => '講',
-'讳' => '諱',
-'讴' => '謳',
-'讵' => '詎',
-'讶' => '訝',
-'讷' => '訥',
-'许' => '許',
-'讹' => '訛',
-'论' => '論',
-'讻' => '訩',
-'讼' => '訟',
-'讽' => '諷',
-'设' => '設',
-'访' => '訪',
-'诀' => '訣',
-'证' => '證',
-'诂' => '詁',
-'诃' => '訶',
-'评' => '評',
-'诅' => '詛',
-'识' => '識',
-'诇' => '詗',
-'诈' => '詐',
-'诉' => '訴',
-'诊' => '診',
-'诋' => '詆',
-'诌' => '謅',
-'词' => '詞',
-'诎' => '詘',
-'诏' => '詔',
-'诐' => '詖',
-'译' => '譯',
-'诒' => '詒',
-'诓' => '誆',
-'诔' => '誄',
-'试' => '試',
-'诖' => '詿',
-'诗' => '詩',
-'诘' => '詰',
-'诙' => '詼',
-'诚' => '誠',
-'诛' => '誅',
-'诜' => '詵',
-'话' => '話',
-'诞' => '誕',
-'诟' => '詬',
-'诠' => '詮',
-'诡' => '詭',
-'询' => '詢',
-'诣' => '詣',
-'诤' => '諍',
-'该' => '該',
-'详' => '詳',
-'诧' => '詫',
-'诨' => '諢',
-'诩' => '詡',
-'诪' => '譸',
-'诫' => '誡',
-'诬' => '誣',
-'语' => '語',
-'诮' => '誚',
-'误' => '誤',
-'诰' => '誥',
-'诱' => '誘',
-'诲' => '誨',
-'诳' => '誑',
-'说' => '說',
-'诵' => '誦',
-'诶' => '誒',
-'请' => '請',
-'诸' => '諸',
-'诹' => '諏',
-'诺' => '諾',
-'读' => '讀',
-'诼' => '諑',
-'诽' => '誹',
-'课' => '課',
-'诿' => '諉',
-'谀' => '諛',
-'谁' => '誰',
-'谂' => '諗',
-'调' => '調',
-'谄' => '諂',
-'谅' => '諒',
-'谆' => '諄',
-'谇' => '誶',
-'谈' => '談',
-'谊' => '誼',
-'谋' => '謀',
-'谌' => '諶',
-'谍' => '諜',
-'谎' => '謊',
-'谏' => '諫',
-'谐' => '諧',
-'谑' => '謔',
-'谒' => '謁',
-'谓' => '謂',
-'谔' => '諤',
-'谕' => '諭',
-'谖' => '諼',
-'谗' => '讒',
-'谘' => '諮',
-'谙' => '諳',
-'谚' => '諺',
-'谛' => '諦',
-'谜' => '謎',
-'谝' => '諞',
-'谞' => '諝',
-'谟' => '謨',
-'谠' => '讜',
-'谡' => '謖',
-'谢' => '謝',
-'谣' => '謠',
-'谤' => '謗',
-'谥' => '諡',
-'谦' => '謙',
-'谧' => '謐',
-'谨' => '謹',
-'谩' => '謾',
-'谪' => '謫',
-'谫' => '譾',
-'谬' => '謬',
-'谭' => '譚',
-'谮' => '譖',
-'谯' => '譙',
-'谰' => '讕',
-'谱' => '譜',
-'谲' => '譎',
-'谳' => '讞',
-'谴' => '譴',
-'谵' => '譫',
-'谶' => '讖',
-'豮' => '豶',
-'贝' => '貝',
-'贞' => '貞',
-'负' => '負',
-'贠' => '貟',
-'贡' => '貢',
-'财' => '財',
-'责' => '責',
-'贤' => '賢',
-'败' => '敗',
-'账' => '賬',
-'货' => '貨',
-'质' => '質',
-'贩' => '販',
-'贪' => '貪',
-'贫' => '貧',
-'贬' => '貶',
-'购' => '購',
-'贮' => '貯',
-'贯' => '貫',
-'贰' => '貳',
-'贱' => '賤',
-'贲' => '賁',
-'贳' => '貰',
-'贴' => '貼',
-'贵' => '貴',
-'贶' => '貺',
-'贷' => '貸',
-'贸' => '貿',
-'费' => '費',
-'贺' => '賀',
-'贻' => '貽',
-'贼' => '賊',
-'贽' => '贄',
-'贾' => '賈',
-'贿' => '賄',
-'赀' => '貲',
-'赁' => '賃',
-'赂' => '賂',
-'赃' => '贓',
-'资' => '資',
-'赅' => '賅',
-'赆' => '贐',
-'赇' => '賕',
-'赈' => '賑',
-'赉' => '賚',
-'赊' => '賒',
-'赋' => '賦',
-'赌' => '賭',
-'赍' => '齎',
-'赎' => '贖',
-'赏' => '賞',
-'赐' => '賜',
-'赑' => '贔',
-'赒' => '賙',
-'赓' => '賡',
-'赔' => '賠',
-'赕' => '賧',
-'赖' => '賴',
-'赗' => '賵',
-'赘' => '贅',
-'赙' => '賻',
-'赚' => '賺',
-'赛' => '賽',
-'赜' => '賾',
-'赝' => '贗',
-'赞' => '贊',
-'赟' => '贇',
-'赠' => '贈',
-'赡' => '贍',
-'赢' => '贏',
-'赣' => '贛',
-'赪' => '赬',
-'赵' => '趙',
-'赶' => '趕',
-'趋' => '趨',
-'趱' => '趲',
-'趸' => '躉',
-'跃' => '躍',
-'跄' => '蹌',
-'跞' => '躒',
-'践' => '踐',
-'跶' => '躂',
-'跷' => '蹺',
-'跸' => '蹕',
-'跹' => '躚',
-'跻' => '躋',
-'踊' => '踴',
-'踌' => '躊',
-'踪' => '蹤',
-'踬' => '躓',
-'踯' => '躑',
-'蹑' => '躡',
-'蹒' => '蹣',
-'蹰' => '躕',
-'蹿' => '躥',
-'躏' => '躪',
-'躜' => '躦',
-'躯' => '軀',
-'车' => '車',
-'轧' => '軋',
-'轨' => '軌',
-'轩' => '軒',
-'轪' => '軑',
-'轫' => '軔',
-'转' => '轉',
-'轭' => '軛',
-'轮' => '輪',
-'软' => '軟',
-'轰' => '轟',
-'轱' => '軲',
-'轲' => '軻',
-'轳' => '轤',
-'轴' => '軸',
-'轵' => '軹',
-'轶' => '軼',
-'轷' => '軤',
-'轸' => '軫',
-'轹' => '轢',
-'轺' => '軺',
-'轻' => '輕',
-'轼' => '軾',
-'载' => '載',
-'轾' => '輊',
-'轿' => '轎',
-'辀' => '輈',
-'辁' => '輇',
-'辂' => '輅',
-'较' => '較',
-'辄' => '輒',
-'辅' => '輔',
-'辆' => '輛',
-'辇' => '輦',
-'辈' => '輩',
-'辉' => '輝',
-'辊' => '輥',
-'辋' => '輞',
-'辌' => '輬',
-'辍' => '輟',
-'辎' => '輜',
-'辏' => '輳',
-'辐' => '輻',
-'辑' => '輯',
-'辒' => '轀',
-'输' => '輸',
-'辔' => '轡',
-'辕' => '轅',
-'辖' => '轄',
-'辗' => '輾',
-'辘' => '轆',
-'辙' => '轍',
-'辚' => '轔',
-'辞' => '辭',
-'辩' => '辯',
-'辫' => '辮',
-'边' => '邊',
-'辽' => '遼',
-'达' => '達',
-'迁' => '遷',
-'过' => '過',
-'迈' => '邁',
-'运' => '運',
-'还' => '還',
-'这' => '這',
-'进' => '進',
-'远' => '遠',
-'违' => '違',
-'连' => '連',
-'迟' => '遲',
-'迩' => '邇',
-'迳' => '逕',
-'迹' => '跡',
-'适' => '適',
-'选' => '選',
-'逊' => '遜',
-'递' => '遞',
-'逦' => '邐',
-'逻' => '邏',
-'遗' => '遺',
-'遥' => '遙',
-'邓' => '鄧',
-'邝' => '鄺',
-'邬' => '鄔',
-'邮' => '郵',
-'邹' => '鄒',
-'邺' => '鄴',
-'邻' => '鄰',
-'郏' => '郟',
-'郐' => '鄶',
-'郑' => '鄭',
-'郓' => '鄆',
-'郦' => '酈',
-'郧' => '鄖',
-'郸' => '鄲',
-'酂' => '酇',
-'酝' => '醞',
-'酦' => '醱',
-'酱' => '醬',
-'酽' => '釅',
-'酾' => '釃',
-'酿' => '釀',
-'释' => '釋',
-'鉴' => '鑒',
-'銮' => '鑾',
-'錾' => '鏨',
-'钅' => '釒',
-'钆' => '釓',
-'钇' => '釔',
-'针' => '針',
-'钉' => '釘',
-'钊' => '釗',
-'钋' => '釙',
-'钌' => '釕',
-'钍' => '釷',
-'钎' => '釺',
-'钏' => '釧',
-'钐' => '釤',
-'钑' => '鈒',
-'钒' => '釩',
-'钓' => '釣',
-'钔' => '鍆',
-'钕' => '釹',
-'钖' => '鍚',
-'钗' => '釵',
-'钘' => '鈃',
-'钙' => '鈣',
-'钚' => '鈈',
-'钛' => '鈦',
-'钜' => '鉅',
-'钝' => '鈍',
-'钞' => '鈔',
-'钟' => '鍾',
-'钠' => '鈉',
-'钡' => '鋇',
-'钢' => '鋼',
-'钣' => '鈑',
-'钤' => '鈐',
-'钥' => '鑰',
-'钦' => '欽',
-'钧' => '鈞',
-'钨' => '鎢',
-'钩' => '鈎',
-'钪' => '鈧',
-'钫' => '鈁',
-'钬' => '鈥',
-'钭' => '鈄',
-'钮' => '鈕',
-'钯' => '鈀',
-'钰' => '鈺',
-'钱' => '錢',
-'钲' => '鉦',
-'钳' => '鉗',
-'钴' => '鈷',
-'钵' => '缽',
-'钶' => '鈳',
-'钷' => '鉕',
-'钸' => '鈽',
-'钹' => '鈸',
-'钺' => '鉞',
-'钻' => '鑽',
-'钼' => '鉬',
-'钽' => '鉭',
-'钾' => '鉀',
-'钿' => '鈿',
-'铀' => '鈾',
-'铁' => '鐵',
-'铂' => '鉑',
-'铃' => '鈴',
-'铄' => '鑠',
-'铅' => '鉛',
-'铆' => '鉚',
-'铇' => '鉋',
-'铈' => '鈰',
-'铉' => '鉉',
-'铊' => '鉈',
-'铋' => '鉍',
-'铌' => '鈮',
-'铍' => '鈹',
-'铎' => '鐸',
-'铏' => '鉶',
-'铐' => '銬',
-'铑' => '銠',
-'铒' => '鉺',
-'铓' => '鋩',
-'铔' => '錏',
-'铕' => '銪',
-'铖' => '鋮',
-'铗' => '鋏',
-'铘' => '鋣',
-'铙' => '鐃',
-'铚' => '銍',
-'铛' => '鐺',
-'铜' => '銅',
-'铝' => '鋁',
-'铞' => '銱',
-'铟' => '銦',
-'铠' => '鎧',
-'铡' => '鍘',
-'铢' => '銖',
-'铣' => '銑',
-'铤' => '鋌',
-'铥' => '銩',
-'铦' => '銛',
-'铧' => '鏵',
-'铨' => '銓',
-'铩' => '鎩',
-'铪' => '鉿',
-'铫' => '銚',
-'铬' => '鉻',
-'铭' => '銘',
-'铮' => '錚',
-'铯' => '銫',
-'铰' => '鉸',
-'铱' => '銥',
-'铲' => '鏟',
-'铳' => '銃',
-'铴' => '鐋',
-'铵' => '銨',
-'银' => '銀',
-'铷' => '銣',
-'铸' => '鑄',
-'铹' => '鐒',
-'铺' => '鋪',
-'铻' => '鋙',
-'铼' => '錸',
-'铽' => '鋱',
-'链' => '鏈',
-'铿' => '鏗',
-'销' => '銷',
-'锁' => '鎖',
-'锂' => '鋰',
-'锃' => '鋥',
-'锄' => '鋤',
-'锅' => '鍋',
-'锆' => '鋯',
-'锇' => '鋨',
-'锈' => '銹',
-'锉' => '銼',
-'锊' => '鋝',
-'锋' => '鋒',
-'锌' => '鋅',
-'锍' => '鋶',
-'锎' => '鐦',
-'锏' => '鐧',
-'锐' => '銳',
-'锑' => '銻',
-'锒' => '鋃',
-'锓' => '鋟',
-'锔' => '鋦',
-'锕' => '錒',
-'锖' => '錆',
-'锗' => '鍺',
-'锘' => '鍩',
-'错' => '錯',
-'锚' => '錨',
-'锛' => '錛',
-'锜' => '錡',
-'锝' => '鍀',
-'锞' => '錁',
-'锟' => '錕',
-'锠' => '錩',
-'锡' => '錫',
-'锢' => '錮',
-'锣' => '鑼',
-'锤' => '錘',
-'锥' => '錐',
-'锦' => '錦',
-'锧' => '鑕',
-'锨' => '杴',
-'锩' => '錈',
-'锪' => '鍃',
-'锫' => '錇',
-'锬' => '錟',
-'锭' => '錠',
-'键' => '鍵',
-'锯' => '鋸',
-'锰' => '錳',
-'锱' => '錙',
-'锲' => '鍥',
-'锳' => '鍈',
-'锴' => '鍇',
-'锵' => '鏘',
-'锶' => '鍶',
-'锷' => '鍔',
-'锸' => '鍤',
-'锹' => '鍬',
-'锺' => '鍾',
-'锻' => '鍛',
-'锼' => '鎪',
-'锽' => '鍠',
-'锾' => '鍰',
-'锿' => '鎄',
-'镀' => '鍍',
-'镁' => '鎂',
-'镂' => '鏤',
-'镃' => '鎡',
-'镄' => '鐨',
-'镅' => '鎇',
-'镆' => '鏌',
-'镇' => '鎮',
-'镈' => '鎛',
-'镉' => '鎘',
-'镊' => '鑷',
-'镋' => '钂',
-'镌' => '鐫',
-'镍' => '鎳',
-'镎' => '鎿',
-'镏' => '鎦',
-'镐' => '鎬',
-'镑' => '鎊',
-'镒' => '鎰',
-'镓' => '鎵',
-'镔' => '鑌',
-'镕' => '鎔',
-'镖' => '鏢',
-'镗' => '鏜',
-'镘' => '鏝',
-'镙' => '鏍',
-'镚' => '鏰',
-'镛' => '鏞',
-'镜' => '鏡',
-'镝' => '鏑',
-'镞' => '鏃',
-'镟' => '鏇',
-'镠' => '鏐',
-'镡' => '鐔',
-'镢' => '钁',
-'镣' => '鐐',
-'镤' => '鏷',
-'镥' => '鑥',
-'镦' => '鐓',
-'镧' => '鑭',
-'镨' => '鐠',
-'镩' => '鑹',
-'镪' => '鏹',
-'镫' => '鐙',
-'镬' => '鑊',
-'镭' => '鐳',
-'镮' => '鐶',
-'镯' => '鐲',
-'镰' => '鐮',
-'镱' => '鐿',
-'镲' => '鑔',
-'镳' => '鑣',
-'镴' => '鑞',
-'镵' => '鑱',
-'镶' => '鑲',
-'长' => '長',
-'门' => '門',
-'闩' => '閂',
-'闪' => '閃',
-'闫' => '閆',
-'闬' => '閈',
-'闭' => '閉',
-'问' => '問',
-'闯' => '闖',
-'闰' => '閏',
-'闱' => '闈',
-'闲' => '閒',
-'闳' => '閎',
-'间' => '間',
-'闵' => '閔',
-'闶' => '閌',
-'闷' => '悶',
-'闸' => '閘',
-'闹' => '鬧',
-'闺' => '閨',
-'闻' => '聞',
-'闼' => '闥',
-'闽' => '閩',
-'闾' => '閭',
-'闿' => '闓',
-'阀' => '閥',
-'阁' => '閣',
-'阂' => '閡',
-'阃' => '閫',
-'阄' => '鬮',
-'阅' => '閱',
-'阆' => '閬',
-'阇' => '闍',
-'阈' => '閾',
-'阉' => '閹',
-'阊' => '閶',
-'阋' => '鬩',
-'阌' => '閿',
-'阍' => '閽',
-'阎' => '閻',
-'阏' => '閼',
-'阐' => '闡',
-'阑' => '闌',
-'阒' => '闃',
-'阓' => '闠',
-'阔' => '闊',
-'阕' => '闋',
-'阖' => '闔',
-'阗' => '闐',
-'阘' => '闒',
-'阙' => '闕',
-'阚' => '闞',
-'阛' => '闤',
-'队' => '隊',
-'阳' => '陽',
-'阴' => '陰',
-'阵' => '陣',
-'阶' => '階',
-'际' => '際',
-'陆' => '陸',
-'陇' => '隴',
-'陈' => '陳',
-'陉' => '陘',
-'陕' => '陝',
-'陧' => '隉',
-'陨' => '隕',
-'险' => '險',
-'随' => '隨',
-'隐' => '隱',
-'隶' => '隸',
-'隽' => '雋',
-'难' => '難',
-'雏' => '雛',
-'雠' => '讎',
-'雳' => '靂',
-'雾' => '霧',
-'霁' => '霽',
-'霡' => '霢',
-'霭' => '靄',
-'靓' => '靚',
-'静' => '靜',
-'靥' => '靨',
-'鞑' => '韃',
-'鞒' => '鞽',
-'鞯' => '韉',
-'韦' => '韋',
-'韧' => '韌',
-'韨' => '韍',
-'韩' => '韓',
-'韪' => '韙',
-'韫' => '韞',
-'韬' => '韜',
-'韵' => '韻',
-'页' => '頁',
-'顶' => '頂',
-'顷' => '頃',
-'顸' => '頇',
-'项' => '項',
-'顺' => '順',
-'须' => '須',
-'顼' => '頊',
-'顽' => '頑',
-'顾' => '顧',
-'顿' => '頓',
-'颀' => '頎',
-'颁' => '頒',
-'颂' => '頌',
-'颃' => '頏',
-'预' => '預',
-'颅' => '顱',
-'领' => '領',
-'颇' => '頗',
-'颈' => '頸',
-'颉' => '頡',
-'颊' => '頰',
-'颋' => '頲',
-'颌' => '頜',
-'颍' => '潁',
-'颎' => '熲',
-'颏' => '頦',
-'颐' => '頤',
-'频' => '頻',
-'颒' => '頮',
-'颓' => '頹',
-'颔' => '頷',
-'颕' => '頴',
-'颖' => '穎',
-'颗' => '顆',
-'题' => '題',
-'颙' => '顒',
-'颚' => '顎',
-'颛' => '顓',
-'颜' => '顏',
-'额' => '額',
-'颞' => '顳',
-'颟' => '顢',
-'颠' => '顛',
-'颡' => '顙',
-'颢' => '顥',
-'颣' => '纇',
-'颤' => '顫',
-'颥' => '顬',
-'颦' => '顰',
-'颧' => '顴',
-'风' => '風',
-'飏' => '颺',
-'飐' => '颭',
-'飑' => '颮',
-'飒' => '颯',
-'飓' => '颶',
-'飔' => '颸',
-'飕' => '颼',
-'飖' => '颻',
-'飗' => '飀',
-'飘' => '飄',
-'飙' => '飆',
-'飚' => '飈',
-'飞' => '飛',
-'飨' => '饗',
-'餍' => '饜',
-'饣' => '飠',
-'饤' => '飣',
-'饥' => '飢',
-'饦' => '飥',
-'饧' => '餳',
-'饨' => '飩',
-'饩' => '餼',
-'饪' => '飪',
-'饫' => '飫',
-'饬' => '飭',
-'饭' => '飯',
-'饮' => '飲',
-'饯' => '餞',
-'饰' => '飾',
-'饱' => '飽',
-'饲' => '飼',
-'饳' => '飿',
-'饴' => '飴',
-'饵' => '餌',
-'饶' => '饒',
-'饷' => '餉',
-'饸' => '餄',
-'饹' => '餎',
-'饺' => '餃',
-'饻' => '餏',
-'饼' => '餅',
-'饽' => '餑',
-'饾' => '餖',
-'饿' => '餓',
-'馀' => '餘',
-'馁' => '餒',
-'馂' => '餕',
-'馃' => '餜',
-'馄' => '餛',
-'馅' => '餡',
-'馆' => '館',
-'馇' => '餷',
-'馈' => '饋',
-'馉' => '餶',
-'馊' => '餿',
-'馋' => '饞',
-'馌' => '饁',
-'馍' => '饃',
-'馎' => '餺',
-'馏' => '餾',
-'馐' => '饈',
-'馑' => '饉',
-'馒' => '饅',
-'馓' => '饊',
-'馔' => '饌',
-'馕' => '饢',
-'马' => '馬',
-'驭' => '馭',
-'驮' => '馱',
-'驯' => '馴',
-'驰' => '馳',
-'驱' => '驅',
-'驲' => '馹',
-'驳' => '駁',
-'驴' => '驢',
-'驵' => '駔',
-'驶' => '駛',
-'驷' => '駟',
-'驸' => '駙',
-'驹' => '駒',
-'驺' => '騶',
-'驻' => '駐',
-'驼' => '駝',
-'驽' => '駑',
-'驾' => '駕',
-'驿' => '驛',
-'骀' => '駘',
-'骁' => '驍',
-'骂' => '罵',
-'骃' => '駰',
-'骄' => '驕',
-'骅' => '驊',
-'骆' => '駱',
-'骇' => '駭',
-'骈' => '駢',
-'骉' => '驫',
-'骊' => '驪',
-'骋' => '騁',
-'验' => '驗',
-'骍' => '騂',
-'骎' => '駸',
-'骏' => '駿',
-'骐' => '騏',
-'骑' => '騎',
-'骒' => '騍',
-'骓' => '騅',
-'骔' => '騌',
-'骕' => '驌',
-'骖' => '驂',
-'骗' => '騙',
-'骘' => '騭',
-'骙' => '騤',
-'骚' => '騷',
-'骛' => '騖',
-'骜' => '驁',
-'骝' => '騮',
-'骞' => '騫',
-'骟' => '騸',
-'骠' => '驃',
-'骡' => '騾',
-'骢' => '驄',
-'骣' => '驏',
-'骤' => '驟',
-'骥' => '驥',
-'骦' => '驦',
-'骧' => '驤',
-'髅' => '髏',
-'髋' => '髖',
-'髌' => '髕',
-'鬓' => '鬢',
-'鬶' => '鬹',
-'魇' => '魘',
-'魉' => '魎',
-'鱼' => '魚',
-'鱽' => '魛',
-'鱾' => '魢',
-'鱿' => '魷',
-'鲀' => '魨',
-'鲁' => '魯',
-'鲂' => '魴',
-'鲃' => '䰾',
-'鲄' => '魺',
-'鲅' => '鮁',
-'鲆' => '鮃',
-'鲇' => '鯰',
-'鲈' => '鱸',
-'鲉' => '鮋',
-'鲊' => '鮓',
-'鲋' => '鮒',
-'鲌' => '鮊',
-'鲍' => '鮑',
-'鲎' => '鱟',
-'鲏' => '鮍',
-'鲐' => '鮐',
-'鲑' => '鮭',
-'鲒' => '鮚',
-'鲓' => '鮳',
-'鲔' => '鮪',
-'鲕' => '鮞',
-'鲖' => '鮦',
-'鲗' => '鰂',
-'鲘' => '鮜',
-'鲙' => '鱠',
-'鲚' => '鱭',
-'鲛' => '鮫',
-'鲜' => '鮮',
-'鲝' => '鮺',
-'鲞' => '鯗',
-'鲟' => '鱘',
-'鲠' => '鯁',
-'鲡' => '鱺',
-'鲢' => '鰱',
-'鲣' => '鰹',
-'鲤' => '鯉',
-'鲥' => '鰣',
-'鲦' => '鰷',
-'鲧' => '鯀',
-'鲨' => '鯊',
-'鲩' => '鯇',
-'鲪' => '鮶',
-'鲫' => '鯽',
-'鲬' => '鯒',
-'鲭' => '鯖',
-'鲮' => '鯪',
-'鲯' => '鯕',
-'鲰' => '鯫',
-'鲱' => '鯡',
-'鲲' => '鯤',
-'鲳' => '鯧',
-'鲴' => '鯝',
-'鲵' => '鯢',
-'鲷' => '鯛',
-'鲸' => '鯨',
-'鲹' => '鰺',
-'鲺' => '鯴',
-'鲻' => '鯔',
-'鲼' => '鱝',
-'鲽' => '鰈',
-'鲾' => '鰏',
-'鲿' => '鱨',
-'鳀' => '鯷',
-'鳁' => '鰮',
-'鳂' => '鰃',
-'鳃' => '鰓',
-'鳄' => '鱷',
-'鳅' => '鰍',
-'鳆' => '鰒',
-'鳇' => '鰉',
-'鳈' => '鰁',
-'鳉' => '鱂',
-'鳊' => '鯿',
-'鳋' => '鰠',
-'鳌' => '鰲',
-'鳍' => '鰭',
-'鳎' => '鰨',
-'鳏' => '鰥',
-'鳐' => '鰩',
-'鳑' => '鰟',
-'鳒' => '鰜',
-'鳓' => '鰳',
-'鳔' => '鰾',
-'鳕' => '鱈',
-'鳖' => '鱉',
-'鳗' => '鰻',
-'鳘' => '鰵',
-'鳙' => '鱅',
-'鳚' => '䲁',
-'鳛' => '鰼',
-'鳜' => '鱖',
-'鳝' => '鱔',
-'鳞' => '鱗',
-'鳟' => '鱒',
-'鳠' => '鱯',
-'鳡' => '鱤',
-'鳢' => '鱧',
-'鳣' => '鱣',
-'鳤' => '䲘',
-'鸟' => '鳥',
-'鸠' => '鳩',
-'鸡' => '雞',
-'鸢' => '鳶',
-'鸣' => '鳴',
-'鸤' => '鳲',
-'鸥' => '鷗',
-'鸦' => '鴉',
-'鸧' => '鶬',
-'鸨' => '鴇',
-'鸩' => '鴆',
-'鸪' => '鴣',
-'鸫' => '鶇',
-'鸬' => '鸕',
-'鸭' => '鴨',
-'鸮' => '鴞',
-'鸯' => '鴦',
-'鸰' => '鴒',
-'鸱' => '鴟',
-'鸲' => '鴝',
-'鸳' => '鴛',
-'鸴' => '鷽',
-'鸵' => '鴕',
-'鸶' => '鷥',
-'鸷' => '鷙',
-'鸸' => '鴯',
-'鸹' => '鴰',
-'鸺' => '鵂',
-'鸻' => '鴴',
-'鸼' => '鵃',
-'鸽' => '鴿',
-'鸾' => '鸞',
-'鸿' => '鴻',
-'鹀' => '鵐',
-'鹁' => '鵓',
-'鹂' => '鸝',
-'鹃' => '鵑',
-'鹄' => '鵠',
-'鹅' => '鵝',
-'鹆' => '鵒',
-'鹇' => '鷳',
-'鹈' => '鵜',
-'鹉' => '鵡',
-'鹊' => '鵲',
-'鹋' => '鶓',
-'鹌' => '鵪',
-'鹍' => '鵾',
-'鹎' => '鵯',
-'鹏' => '鵬',
-'鹐' => '鵮',
-'鹑' => '鶉',
-'鹒' => '鶊',
-'鹓' => '鵷',
-'鹔' => '鷫',
-'鹕' => '鶘',
-'鹖' => '鶡',
-'鹗' => '鶚',
-'鹘' => '鶻',
-'鹙' => '鶖',
-'鹚' => '鶿',
-'鹛' => '鶥',
-'鹜' => '鶩',
-'鹝' => '鷊',
-'鹞' => '鷂',
-'鹟' => '鶲',
-'鹠' => '鶹',
-'鹡' => '鶺',
-'鹢' => '鷁',
-'鹣' => '鶼',
-'鹤' => '鶴',
-'鹥' => '鷖',
-'鹦' => '鸚',
-'鹧' => '鷓',
-'鹨' => '鷚',
-'鹩' => '鷯',
-'鹪' => '鷦',
-'鹫' => '鷲',
-'鹬' => '鷸',
-'鹭' => '鷺',
-'鹮' => '䴉',
-'鹯' => '鸇',
-'鹰' => '鷹',
-'鹱' => '鸌',
-'鹲' => '鸏',
-'鹳' => '鸛',
-'鹴' => '鸘',
-'鹾' => '鹺',
-'麦' => '麥',
-'麸' => '麩',
-'麹' => '麴',
-'黄' => '黃',
-'黉' => '黌',
-'黡' => '黶',
-'黩' => '黷',
-'黪' => '黲',
-'黾' => '黽',
-'鼋' => '黿',
-'鼍' => '鼉',
-'鼗' => '鞀',
-'鼹' => '鼴',
-'齐' => '齊',
-'齑' => '齏',
-'齿' => '齒',
-'龀' => '齔',
-'龁' => '齕',
-'龂' => '齗',
-'龃' => '齟',
-'龄' => '齡',
-'龅' => '齙',
-'龆' => '齠',
-'龇' => '齜',
-'龈' => '齦',
-'龉' => '齬',
-'龊' => '齪',
-'龋' => '齲',
-'龌' => '齷',
-'龙' => '龍',
-'龚' => '龔',
-'龛' => '龕',
-'龟' => '龜',
-'𠆲' => '儣',
-'𠆿' => '𠌥',
-'𠉂' => '㒓',
-'𠉗' => '𠏢',
-'𠚳' => '𠠎',
-'𠛅' => '剾',
-'𠛆' => '𠞆',
-'𠯟' => '哯',
-'𠯠' => '噅',
-'𠲥' => '𡅏',
-'𠴢' => '𡄔',
-'𠵸' => '𡄣',
-'𠵾' => '㗲',
-'𡋀' => '𡓾',
-'𡋗' => '𡑭',
-'𡒄' => '壈',
-'𡝠' => '㜷',
-'𡞱' => '㜢',
-'𡭜' => '𡮉',
-'𡭬' => '𡮣',
-'𡶴' => '嵼',
-'𢋈' => '㢝',
-'𢘝' => '𢣚',
-'𢘞' => '𢣭',
-'𢙓' => '懀',
-'𢛯' => '㦎',
-'𢫊' => '𢷮',
-'𢫞' => '𢶫',
-'𢫬' => '摋',
-'𢬦' => '𢹿',
-'𢭏' => '擣',
-'𢽾' => '斅',
-'𣆐' => '曥',
-'𣍨' => '𦢈',
-'𣍯' => '腪',
-'𣍰' => '脥',
-'𣎑' => '臗',
-'𣐤' => '欍',
-'𣑶' => '𣠲',
-'𣗋' => '欓',
-'𣘓' => '𣞻',
-'𣘴' => '檭',
-'𣘷' => '𣝕',
-'𣭤' => '𣯴',
-'𣶩' => '澅',
-'𣶫' => '𣿉',
-'𣸣' => '濆',
-'𣺼' => '灙',
-'𣺽' => '𤁣',
-'𣽷' => '瀃',
-'𤆡' => '熓',
-'𤇃' => '爄',
-'𤇄' => '熌',
-'𤈶' => '熉',
-'𤈷' => '㷿',
-'𤊀' => '𤒎',
-'𤋏' => '熡',
-'𤞤' => '玁',
-'𤠋' => '㺏',
-'𤦀' => '瓕',
-'𤳄' => '𤳸',
-'𤶧' => '𤸫',
-'𤽯' => '㿧',
-'𤾀' => '皟',
-'𥅘' => '𥌃',
-'𥅴' => '䀹',
-'𥆧' => '瞤',
-'𥇢' => '䁪',
-'𥐟' => '礒',
-'𥐯' => '𥖅',
-'𥐰' => '𥕥',
-'𥐻' => '碙',
-'𥧂' => '𥨐',
-'𥬀' => '䉙',
-'𥬞' => '籋',
-'𥬠' => '篘',
-'𥭉' => '𥵊',
-'𥮋' => '𥸠',
-'𥮜' => '䉲',
-'𥱔' => '𥵃',
-'𥹥' => '𥼽',
-'𥺅' => '䊭',
-'𥺇' => '𥽖',
-'𦈈' => '𥿊',
-'𦈉' => '緷',
-'𦈋' => '綇',
-'𦈌' => '綀',
-'𦈎' => '繟',
-'𦈏' => '緍',
-'𦈐' => '縺',
-'𦈑' => '緸',
-'𦈒' => '𦂅',
-'𦈓' => '䋿',
-'𦈔' => '縎',
-'𦈕' => '緰',
-'𦈖' => '䌈',
-'𦈗' => '𦃄',
-'𦈘' => '䌋',
-'𦈙' => '䌰',
-'𦈚' => '縬',
-'𦈛' => '繓',
-'𦈜' => '䌖',
-'𦈝' => '繏',
-'𦈞' => '䌟',
-'𦈟' => '䌝',
-'𦈠' => '䌥',
-'𦈡' => '繻',
-'𦛨' => '朥',
-'𦝼' => '膢',
-'𦟗' => '𦣎',
-'𦨩' => '𦪽',
-'𦰴' => '䕳',
-'𧉞' => '䗿',
-'𧒭' => '𧔥',
-'𧮪' => '詀',
-'𧳕' => '𧳟',
-'𧹑' => '䞈',
-'𧹓' => '𧶔',
-'𧹕' => '䝻',
-'𧹖' => '賟',
-'𧹗' => '贃',
-'𧿈' => '𨇁',
-'𨀱' => '𨄣',
-'𨁴' => '𨅍',
-'𨂺' => '𨈊',
-'𨄄' => '𨈌',
-'𨅫' => '𨇞',
-'𨅬' => '躝',
-'𨉗' => '軉',
-'𨐅' => '軗',
-'𨐆' => '𨊻',
-'𨐇' => '𨏠',
-'𨐈' => '輄',
-'𨐉' => '𨎮',
-'𨐊' => '𨏥',
-'𨑹' => '䢨',
-'𨤰' => '𨤻',
-'𨰾' => '鎷',
-'𨰿' => '釳',
-'𨱀' => '𨥛',
-'𨱁' => '鈠',
-'𨱂' => '鈋',
-'𨱃' => '鈲',
-'𨱄' => '鈯',
-'𨱅' => '鉁',
-'𨱆' => '龯',
-'𨱇' => '銶',
-'𨱈' => '鋉',
-'𨱉' => '鍄',
-'𨱊' => '𨧱',
-'𨱋' => '錂',
-'𨱌' => '鏆',
-'𨱍' => '鎯',
-'𨱎' => '鍮',
-'𨱏' => '鎝',
-'𨱐' => '𨫒',
-'𨱑' => '鐄',
-'𨱒' => '鏉',
-'𨱓' => '鐎',
-'𨱔' => '鐏',
-'𨱕' => '𨮂',
-'𨱖' => '䥩',
-'𨷿' => '䦳',
-'𨸀' => '𨳕',
-'𨸁' => '𨳑',
-'𨸂' => '閍',
-'𨸃' => '閐',
-'𨸄' => '䦘',
-'𨸅' => '𨴗',
-'𨸆' => '𨵩',
-'𨸇' => '𨵸',
-'𨸉' => '𨶀',
-'𨸊' => '𨶏',
-'𨸋' => '𨶲',
-'𨸌' => '𨶮',
-'𨸎' => '𨷲',
-'𨸘' => '𨽏',
-'𨸟' => '䧢',
-'𩏼' => '䪏',
-'𩏽' => '𩏪',
-'𩏾' => '𩎢',
-'𩏿' => '䪘',
-'𩐀' => '䪗',
-'𩖕' => '𩓣',
-'𩖖' => '顃',
-'𩖗' => '䫴',
-'𩙥' => '颰',
-'𩙦' => '𩗀',
-'𩙧' => '𩗡',
-'𩙨' => '𩘹',
-'𩙩' => '𩘀',
-'𩙪' => '颷',
-'𩙫' => '颾',
-'𩙬' => '𩘺',
-'𩙭' => '𩘝',
-'𩙮' => '䬘',
-'𩙯' => '䬝',
-'𩙰' => '𩙈',
-'𩟿' => '𩚛',
-'𩠀' => '𩚥',
-'𩠁' => '𩚵',
-'𩠂' => '𩛆',
-'𩠃' => '𩛩',
-'𩠅' => '𩟐',
-'𩠆' => '𩜦',
-'𩠇' => '䭀',
-'𩠈' => '䭃',
-'𩠉' => '𩜇',
-'𩠊' => '𩜵',
-'𩠋' => '𩝔',
-'𩠌' => '餸',
-'𩠎' => '𩞄',
-'𩠏' => '𩞦',
-'𩠠' => '𩠴',
-'𩧦' => '𩡺',
-'𩧨' => '駎',
-'𩧩' => '𩤊',
-'𩧪' => '䮾',
-'𩧫' => '駚',
-'𩧬' => '𩢡',
-'𩧭' => '䭿',
-'𩧮' => '𩢾',
-'𩧯' => '驋',
-'𩧰' => '䮝',
-'𩧱' => '𩥉',
-'𩧲' => '駧',
-'𩧳' => '𩢸',
-'𩧴' => '駩',
-'𩧵' => '𩢴',
-'𩧶' => '𩣏',
-'𩧺' => '駶',
-'𩧻' => '𩣵',
-'𩧼' => '𩣺',
-'𩧿' => '䮠',
-'𩨀' => '騔',
-'𩨁' => '䮞',
-'𩨃' => '騝',
-'𩨄' => '騪',
-'𩨅' => '𩤸',
-'𩨆' => '𩤙',
-'𩨇' => '䮫',
-'𩨈' => '騟',
-'𩨉' => '𩤲',
-'𩨊' => '騚',
-'𩨋' => '𩥄',
-'𩨌' => '𩥑',
-'𩨍' => '𩥇',
-'𩨎' => '龭',
-'𩨏' => '䮳',
-'𩨐' => '𩧆',
-'𩬣' => '𩭙',
-'𩬤' => '𩰀',
-'𩯒' => '𩯳',
-'𩲒' => '𩳤',
-'𩽹' => '魥',
-'𩽺' => '𩵩',
-'𩽻' => '𩵹',
-'𩽼' => '鯶',
-'𩽽' => '𩶱',
-'𩽾' => '鮟',
-'𩽿' => '𩶰',
-'𩾁' => '鯄',
-'𩾂' => '䲖',
-'𩾃' => '鮸',
-'𩾄' => '𩷰',
-'𩾅' => '𩸃',
-'𩾆' => '𩸦',
-'𩾇' => '鯱',
-'𩾈' => '䱙',
-'𩾊' => '䱬',
-'𩾋' => '䱰',
-'𩾌' => '鱇',
-'𩾎' => '𩽇',
-'𪉂' => '䲰',
-'𪉃' => '鳼',
-'𪉄' => '𩿪',
-'𪉅' => '𪀦',
-'𪉆' => '鴲',
-'𪉈' => '鴜',
-'𪉉' => '𪁈',
-'𪉊' => '鷨',
-'𪉋' => '𪀾',
-'𪉌' => '𪁖',
-'𪉍' => '鵚',
-'𪉎' => '𪂆',
-'𪉏' => '𪃏',
-'𪉐' => '𪃍',
-'𪉑' => '鷔',
-'𪉒' => '𪄕',
-'𪉓' => '𪈼',
-'𪉔' => '𪄆',
-'𪉕' => '𪇳',
-'𪎈' => '䴬',
-'𪎉' => '麲',
-'𪎊' => '麨',
-'𪎋' => '䴴',
-'𪎌' => '麳',
-'𪎍' => '𪋿',
-'𪔭' => '𪔵',
-'𪚏' => '𪘀',
-'𪚐' => '𪘯',
-'𪞝' => '凙',
-'𪡏' => '嗹',
-'𪢮' => '圞',
-'𪨊' => '㞞',
-'𪨗' => '屩',
-'𪻐' => '瑽',
-'𪾢' => '睍',
-'𫁡' => '鴗',
-'𫂈' => '䉬',
-'𫄨' => '絺',
-'𫄸' => '纁',
-'𫌀' => '襀',
-'𫌨' => '覼',
-'𫍙' => '訑',
-'𫍢' => '譊',
-'𫍰' => '諰',
-'𫍲' => '謏',
-'𫏋' => '蹻',
-'𫐄' => '軏',
-'𫐆' => '轣',
-'𫐉' => '軨',
-'𫐐' => '輗',
-'𫐓' => '輮',
-'𫓧' => '鈇',
-'𫓩' => '鏦',
-'𫔎' => '鐍',
-'𫖸' => '願',
-'𫗠' => '餦',
-'𫗦' => '餔',
-'𫗧' => '餗',
-'𫗮' => '餭',
-'𫗴' => '饘',
-'𫘝' => '駃',
-'𫘣' => '駻',
-'𫘤' => '騃',
-'𫘨' => '騠',
-'𫚈' => '鱮',
-'𫚉' => '魟',
-'𫚒' => '鮄',
-'𫚔' => '鮰',
-'𫚕' => '鰤',
-'𫚙' => '鯆',
-'𫛛' => '鳷',
-'𫛞' => '鴃',
-'𫛢' => '鸋',
-'𫛶' => '鶒',
-'𫛸' => '鶗',
-'0出现' => '0出現',
-'0出現' => '0出現',
-'0出線' => '0出線',
-'0出线' => '0出線',
-'0只支持' => '0只支持',
-'0只支援' => '0只支援',
-'0周后' => '0周後',
-'0天后' => '0天後',
-'0年' => '0年',
-'0只' => '0隻',
-'0余' => '0餘',
-'0出' => '0齣',
-'1只支持' => '1只支持',
-'1只支援' => '1只支援',
-'1周后' => '1周後',
-'1天后' => '1天後',
-'1年' => '1年',
-'1只' => '1隻',
-'1余' => '1餘',
-'2只支持' => '2只支持',
-'2只支援' => '2只支援',
-'2周后' => '2周後',
-'2天后' => '2天後',
-'2年' => '2年',
-'2只' => '2隻',
-'2余' => '2餘',
-'3只支持' => '3只支持',
-'3只支援' => '3只支援',
-'3周后' => '3周後',
-'3天后' => '3天後',
-'3年' => '3年',
-'3只' => '3隻',
-'3余' => '3餘',
-'4只支持' => '4只支持',
-'4只支援' => '4只支援',
-'4周后' => '4周後',
-'4天后' => '4天後',
-'4年' => '4年',
-'4只' => '4隻',
-'4余' => '4餘',
-'5只支持' => '5只支持',
-'5只支援' => '5只支援',
-'5周后' => '5周後',
-'5天后' => '5天後',
-'5年' => '5年',
-'5只' => '5隻',
-'5余' => '5餘',
-'6只支持' => '6只支持',
-'6只支援' => '6只支援',
-'6周后' => '6周後',
-'6天后' => '6天後',
-'6年' => '6年',
-'6只' => '6隻',
-'6余' => '6餘',
-'7只支持' => '7只支持',
-'7只支援' => '7只支援',
-'7周后' => '7周後',
-'7天后' => '7天後',
-'7年' => '7年',
-'7只' => '7隻',
-'7余' => '7餘',
-'8只支持' => '8只支持',
-'8只支援' => '8只支援',
-'8周后' => '8周後',
-'8天后' => '8天後',
-'8年' => '8年',
-'8只' => '8隻',
-'8余' => '8餘',
-'9只支持' => '9只支持',
-'9只支援' => '9只支援',
-'9周后' => '9周後',
-'9天后' => '9天後',
-'9年' => '9年',
-'9只' => '9隻',
-'9余' => '9餘',
-'·范' => '·范',
-'’s' => '’s',
-'、面点' => '、麵點',
-'。个中' => '。箇中',
-'〇周后' => '〇周後',
-'〇年' => '〇年',
-'〇只' => '〇隻',
-'〇余' => '〇餘',
-'“' => '「',
-'”' => '」',
-'‘' => '『',
-'’' => '』',
-'一干二净' => '一乾二淨',
-'一伙人' => '一伙人',
-'一伙头' => '一伙頭',
-'一伙食' => '一伙食',
-'一并' => '一併',
-'一个' => '一個',
-'一个准' => '一個準',
-'一划' => '一划',
-'一半只' => '一半只',
-'一吊钱' => '一吊錢',
-'一周后' => '一周後',
-'一地里' => '一地裡',
-'一伙' => '一夥',
-'一天后' => '一天後',
-'一天钟' => '一天鐘',
-'一干人' => '一干人',
-'一干家中' => '一干家中',
-'一干弟兄' => '一干弟兄',
-'一干弟子' => '一干弟子',
-'一干部下' => '一干部下',
-'一年' => '一年',
-'一年里' => '一年裡',
-'一别头' => '一彆頭',
-'一斗斗' => '一斗斗',
-'一树百获' => '一樹百穫',
-'一准' => '一準',
-'一争两丑' => '一爭兩醜',
-'一物克一物' => '一物剋一物',
-'一目了然' => '一目了然',
-'一碗面' => '一碗麵',
-'一扎' => '一紮',
-'一冲' => '一衝',
-'一厘一毫' => '一釐一毫',
-'一锅面' => '一鍋麵',
-'一只' => '一隻',
-'一面食' => '一面食',
-'一余' => '一餘',
-'一发千钧' => '一髮千鈞',
-'一哄而散' => '一鬨而散',
-'一出剧' => '一齣劇',
-'一出喜剧' => '一齣喜劇',
-'一出好戏' => '一齣好戲',
-'一出子' => '一齣子',
-'一出悲剧' => '一齣悲劇',
-'一出戏' => '一齣戲',
-'一出电影' => '一齣電影',
-'丁丁当当' => '丁丁當當',
-'丁丑' => '丁丑',
-'七个' => '七個',
-'七周后' => '七周後',
-'七天后' => '七天後',
-'七年' => '七年',
-'七情六欲' => '七情六慾',
-'七扎' => '七紮',
-'七只' => '七隻',
-'七余' => '七餘',
-'万俟' => '万俟',
-'万旗' => '万旗',
-'三个' => '三個',
-'三周后' => '三周後',
-'三天后' => '三天後',
-'三年' => '三年',
-'三征七辟' => '三徵七辟',
-'三准' => '三準',
-'三扎' => '三紮',
-'三统历' => '三統曆',
-'三统历史' => '三統歷史',
-'三只' => '三隻',
-'三余' => '三餘',
-'三出戏' => '三齣戲',
-'上天里' => '上天里',
-'上梁山' => '上梁山',
-'上梁' => '上樑',
-'上台面' => '上檯面',
-'上签名' => '上簽名',
-'上签字' => '上簽字',
-'上签定' => '上簽定',
-'上签写' => '上簽寫',
-'上签收' => '上簽收',
-'上签发' => '上簽發',
-'上签约' => '上簽約',
-'上签署' => '上簽署',
-'上签订' => '上簽訂',
-'上签' => '上籤',
-'上系上' => '上繫上',
-'上课钟' => '上課鐘',
-'上面糊' => '上面糊',
-'下于' => '下於',
-'下梁' => '下樑',
-'下注解' => '下注解',
-'下签名' => '下簽名',
-'下签字' => '下簽字',
-'下签定' => '下簽定',
-'下签写' => '下簽寫',
-'下签收' => '下簽收',
-'下签发' => '下簽發',
-'下签约' => '下簽約',
-'下签署' => '下簽署',
-'下签订' => '下簽訂',
-'下签' => '下籤',
-'下课钟' => '下課鐘',
-'不干不净' => '不乾不淨',
-'不干胶' => '不乾膠',
-'不克自制' => '不克自制',
-'不加自制' => '不加自制',
-'不占凶吉' => '不占凶吉',
-'不占卜' => '不占卜',
-'不占吉凶' => '不占吉凶',
-'不占算' => '不占算',
-'不只' => '不只',
-'不太准' => '不太準',
-'不好干涉' => '不好干涉',
-'不好干預' => '不好干預',
-'不好干预' => '不好干預',
-'不嫌母丑' => '不嫌母醜',
-'不寒而栗' => '不寒而慄',
-'不吊' => '不弔',
-'不卷' => '不捲',
-'不采' => '不採',
-'不斗胆' => '不斗膽',
-'不斗膽' => '不斗膽',
-'不断发' => '不斷發',
-'不每只' => '不每只',
-'不谷' => '不穀',
-'不托' => '不託',
-'不负所托' => '不負所托',
-'不通吊庆' => '不通弔慶',
-'不丑' => '不醜',
-'不采声' => '不采聲',
-'不采聲' => '不采聲',
-'不锈钢' => '不鏽鋼',
-'不食干腊' => '不食乾腊',
-'不斗' => '不鬥',
-'丑三' => '丑三',
-'丑年' => '丑年',
-'丑日' => '丑日',
-'丑旦' => '丑旦',
-'丑时' => '丑時',
-'丑月' => '丑月',
-'丑表功' => '丑表功',
-'丑角' => '丑角',
-'且于' => '且於',
-'世田谷' => '世田谷',
-'世界杯' => '世界盃',
-'世纪里' => '世紀裡',
-'世纪钟' => '世紀鐘',
-'世纪钟表' => '世紀鐘錶',
-'丢丑' => '丟醜',
-'并曰入淀' => '並曰入澱',
-'并发动' => '並發動',
-'并发展' => '並發展',
-'并发布' => '並發布',
-'并发现' => '並發現',
-'并发表' => '並發表',
-'并行' => '並行',
-'中国国际信托投资公司' => '中國國際信托投資公司',
-'中型钟' => '中型鐘',
-'中型钟表面' => '中型鐘表面',
-'中型钟表' => '中型鐘錶',
-'中型钟面' => '中型鐘面',
-'中境里' => '中境里',
-'中岳' => '中嶽',
-'中庄子' => '中庄子',
-'中文里' => '中文裡',
-'中于' => '中於',
-'中签名' => '中簽名',
-'中签字' => '中簽字',
-'中签定' => '中簽定',
-'中签写' => '中簽寫',
-'中签收' => '中簽收',
-'中签发' => '中簽發',
-'中签约' => '中簽約',
-'中签署' => '中簽署',
-'中签订' => '中簽訂',
-'中签' => '中籤',
-'中风后' => '中風後',
-'丰仪' => '丰儀',
-'丰儀' => '丰儀',
-'丰南' => '丰南',
-'丰姿' => '丰姿',
-'丰容' => '丰容',
-'丰情' => '丰情',
-'丰标' => '丰標',
-'丰标不凡' => '丰標不凡',
-'丰標不凡' => '丰標不凡',
-'丰神' => '丰神',
-'丰茸' => '丰茸',
-'丰采' => '丰采',
-'丰韵' => '丰韻',
-'丰韻' => '丰韻',
-'丹棱' => '丹稜',
-'主仆' => '主僕',
-'主干' => '主幹',
-'主钟差' => '主鐘差',
-'主钟曲线' => '主鐘曲線',
-'乃系' => '乃係',
-'么么唱唱' => '么么唱唱',
-'么九' => '么九',
-'么儿' => '么兒',
-'么半' => '么半',
-'么喝' => '么喝',
-'么女' => '么女',
-'么妹' => '么妹',
-'么子' => '么子',
-'么弟' => '么弟',
-'么正' => '么正',
-'么爷' => '么爺',
-'么雞' => '么雞',
-'么么小丑' => '么麼小丑',
-'之一只' => '之一只',
-'之二只' => '之二只',
-'之八九只' => '之八九只',
-'之征' => '之徵',
-'之托' => '之託',
-'之钟' => '之鐘',
-'之鉴' => '之鑑',
-'之余' => '之餘',
-'乙丑' => '乙丑',
-'九世之仇' => '九世之讎',
-'九个' => '九個',
-'九周后' => '九周後',
-'九天后' => '九天後',
-'九年' => '九年',
-'九谷' => '九穀',
-'九扎' => '九紮',
-'九只' => '九隻',
-'九余' => '九餘',
-'干干' => '乾乾',
-'干干净净' => '乾乾淨淨',
-'干井' => '乾井',
-'干个够' => '乾個夠',
-'干儿' => '乾兒',
-'干冰' => '乾冰',
-'干冷' => '乾冷',
-'干刻版' => '乾刻版',
-'干剥剥' => '乾剝剝',
-'干卦' => '乾卦',
-'干和' => '乾和',
-'干咳' => '乾咳',
-'干咽' => '乾咽',
-'干哥' => '乾哥',
-'干哭' => '乾哭',
-'干唱' => '乾唱',
-'干啼' => '乾啼',
-'干乔' => '乾喬',
-'干呕' => '乾嘔',
-'干哕' => '乾噦',
-'干嚎' => '乾嚎',
-'干回付' => '乾回付',
-'干圆洁净' => '乾圓潔淨',
-'干地' => '乾地',
-'干坞' => '乾塢',
-'干女' => '乾女',
-'干奴才' => '乾奴才',
-'干妹' => '乾妹',
-'干姊' => '乾姊',
-'干姐' => '乾姐',
-'干娘' => '乾娘',
-'干妈' => '乾媽',
-'干子' => '乾子',
-'干季' => '乾季',
-'干尸' => '乾屍',
-'干屎橛' => '乾屎橛',
-'干巴' => '乾巴',
-'干式' => '乾式',
-'干弟' => '乾弟',
-'干急' => '乾急',
-'干性' => '乾性',
-'干打雷' => '乾打雷',
-'干折' => '乾折',
-'干撂台' => '乾撂台',
-'干撇下' => '乾撇下',
-'干擦' => '乾擦',
-'干支剌' => '乾支剌',
-'干支支' => '乾支支',
-'干料' => '乾料',
-'干旱' => '乾旱',
-'干暖' => '乾暖',
-'干材' => '乾材',
-'干村沙' => '乾村沙',
-'干杯' => '乾杯',
-'干果' => '乾果',
-'干枯' => '乾枯',
-'干柴' => '乾柴',
-'干柴烈火' => '乾柴烈火',
-'干梅' => '乾梅',
-'干死' => '乾死',
-'干池' => '乾池',
-'干没' => '乾沒',
-'干洗' => '乾洗',
-'干涸' => '乾涸',
-'干凉' => '乾涼',
-'干净' => '乾淨',
-'干渠' => '乾渠',
-'干渴' => '乾渴',
-'干沟' => '乾溝',
-'干漆' => '乾漆',
-'干涩' => '乾澀',
-'干湿' => '乾濕',
-'干熬' => '乾熬',
-'干热' => '乾熱',
-'干灯盏' => '乾燈盞',
-'干燥' => '乾燥',
-'干爸' => '乾爸',
-'干爹' => '乾爹',
-'干爽' => '乾爽',
-'干片' => '乾片',
-'干物' => '乾物',
-'干生受' => '乾生受',
-'干生子' => '乾生子',
-'干产' => '乾產',
-'干田' => '乾田',
-'干疥' => '乾疥',
-'干瘦' => '乾瘦',
-'干瘪' => '乾癟',
-'干癣' => '乾癬',
-'干瘾' => '乾癮',
-'干白儿' => '乾白兒',
-'干白葡萄酒' => '乾白葡萄酒',
-'干的' => '乾的',
-'干眼' => '乾眼',
-'干瞪眼' => '乾瞪眼',
-'干礼' => '乾禮',
-'干稿' => '乾稿',
-'干笑' => '乾笑',
-'干等' => '乾等',
-'干篾片' => '乾篾片',
-'干粉' => '乾粉',
-'干粮' => '乾糧',
-'干红葡萄酒' => '乾紅葡萄酒',
-'干结' => '乾結',
-'干丝' => '乾絲',
-'干纲' => '乾綱',
-'干绷' => '乾繃',
-'干耗' => '乾耗',
-'干肉片' => '乾肉片',
-'干股' => '乾股',
-'干肥' => '乾肥',
-'干脆' => '乾脆',
-'干脆面' => '乾脆麵',
-'干花' => '乾花',
-'干刍' => '乾芻',
-'干苔' => '乾苔',
-'干茨腊' => '乾茨臘',
-'干茶钱' => '乾茶錢',
-'干草' => '乾草',
-'干菜' => '乾菜',
-'干落' => '乾落',
-'干姜' => '乾薑',
-'干薪' => '乾薪',
-'干虔' => '乾虔',
-'干号' => '乾號',
-'干血浆' => '乾血漿',
-'干衣' => '乾衣',
-'干裂' => '乾裂',
-'干亲' => '乾親',
-'乾象历' => '乾象曆',
-'乾象曆' => '乾象曆',
-'干贝' => '乾貝',
-'干货' => '乾貨',
-'干躁' => '乾躁',
-'干逼' => '乾逼',
-'干酪' => '乾酪',
-'干酵母' => '乾酵母',
-'干醋' => '乾醋',
-'干重' => '乾重',
-'干量' => '乾量',
-'干锅' => '乾鍋',
-'干阿奶' => '乾阿奶',
-'干雷' => '乾雷',
-'干电' => '乾電',
-'干霍乱' => '乾霍亂',
-'干颡' => '乾顙',
-'干台' => '乾颱',
-'干食' => '乾食',
-'干饭' => '乾飯',
-'干馆' => '乾館',
-'干糇' => '乾餱',
-'干馏' => '乾餾',
-'干鱼' => '乾魚',
-'干鲜' => '乾鮮',
-'干面' => '乾麵',
-'乱发生' => '亂發生',
-'乱发脾气' => '亂發脾氣',
-'乱发' => '亂髮',
-'乱哄哄' => '亂鬨鬨',
-'了然后' => '了然後',
-'事有斗巧' => '事有鬥巧',
-'事里' => '事裡',
-'二不棱登' => '二不稜登',
-'二个' => '二個',
-'二只得' => '二只得',
-'二周后' => '二周後',
-'二天后' => '二天後',
-'二年' => '二年',
-'二缶钟惑' => '二缶鐘惑',
-'二老板' => '二老板',
-'二虎相斗' => '二虎相鬥',
-'二里头' => '二里頭',
-'二里頭' => '二里頭',
-'二只' => '二隻',
-'二余' => '二餘',
-'于丹' => '于丹',
-'于于' => '于于',
-'于仁泰' => '于仁泰',
-'于仲文' => '于仲文',
-'于佳卉' => '于佳卉',
-'于来山' => '于來山',
-'于伟国' => '于偉國',
-'于偉國' => '于偉國',
-'于光新' => '于光新',
-'于光远' => '于光遠',
-'于光遠' => '于光遠',
-'于克-兰多县' => '于克-蘭多縣',
-'于克-蘭多縣' => '于克-蘭多縣',
-'于克勒' => '于克勒',
-'于再清' => '于再清',
-'于冕' => '于冕',
-'于冠华' => '于冠華',
-'于凌奎' => '于凌奎',
-'于凌辰' => '于凌辰',
-'于勒' => '于勒',
-'于化虎' => '于化虎',
-'于占元' => '于占元',
-'于友泽' => '于友澤',
-'于台烟' => '于台煙',
-'于台煙' => '于台煙',
-'于右任' => '于右任',
-'于吉' => '于吉',
-'于和伟' => '于和偉',
-'于品海' => '于品海',
-'于国桢' => '于國楨',
-'于國楨' => '于國楨',
-'于国治' => '于國治',
-'于國治' => '于國治',
-'于坚' => '于堅',
-'于堅' => '于堅',
-'于大宝' => '于大寶',
-'于大寶' => '于大寶',
-'于天仁' => '于天仁',
-'于天龙' => '于天龍',
-'于奇库杜克' => '于奇庫杜克',
-'于奇庫杜克' => '于奇庫杜克',
-'于姓' => '于姓',
-'于娜' => '于娜',
-'于娟' => '于娟',
-'于子千' => '于子千',
-'于孔兼' => '于孔兼',
-'于学忠' => '于學忠',
-'于學忠' => '于學忠',
-'于家堡' => '于家堡',
-'于寘' => '于寘',
-'于宝轩' => '于寶軒',
-'于小伟' => '于小偉',
-'于小偉' => '于小偉',
-'于小彤' => '于小彤',
-'于小惠' => '于小惠',
-'于少保' => '于少保',
-'于山' => '于山',
-'于山国' => '于山國',
-'于山國' => '于山國',
-'于帅' => '于帥',
-'于帥' => '于帥',
-'于幼军' => '于幼軍',
-'于幼軍' => '于幼軍',
-'于康震' => '于康震',
-'于广洲' => '于廣洲',
-'于廣洲' => '于廣洲',
-'于式枚' => '于式枚',
-'于从濂' => '于從濂',
-'于從濂' => '于從濂',
-'于德海' => '于德海',
-'于志宁' => '于志寧',
-'于志寧' => '于志寧',
-'于忠肃集' => '于忠肅集',
-'于思' => '于思',
-'于慎行' => '于慎行',
-'于慧' => '于慧',
-'于成龍' => '于成龍',
-'于成龙' => '于成龍',
-'于承惠' => '于承惠',
-'于振' => '于振',
-'于振武' => '于振武',
-'于敏' => '于敏',
-'于敏中' => '于敏中',
-'于斌' => '于斌',
-'于斯塔德' => '于斯塔德',
-'于斯納爾斯貝里' => '于斯納爾斯貝里',
-'于斯纳尔斯贝里' => '于斯納爾斯貝里',
-'于斯达尔' => '于斯達爾',
-'于斯達爾' => '于斯達爾',
-'于明涛' => '于明濤',
-'于明濤' => '于明濤',
-'于是之' => '于是之',
-'于晨楠' => '于晨楠',
-'于晴' => '于晴',
-'于会泳' => '于會泳',
-'于會泳' => '于會泳',
-'于根伟' => '于根偉',
-'于根偉' => '于根偉',
-'于格' => '于格',
-'于枫' => '于楓',
-'于楓' => '于楓',
-'于荣光' => '于榮光',
-'于樂' => '于樂',
-'于树洁' => '于樹潔',
-'于樹潔' => '于樹潔',
-'于欣' => '于欣',
-'于欣源' => '于欣源',
-'于正昇' => '于正昇',
-'于正昌' => '于正昌',
-'于归' => '于歸',
-'于氏' => '于氏',
-'于永波' => '于永波',
-'于江震' => '于江震',
-'于波' => '于波',
-'于洋' => '于洋',
-'于洪区' => '于洪區',
-'于洪區' => '于洪區',
-'于浩威' => '于浩威',
-'于海' => '于海',
-'于海洋' => '于海洋',
-'于湘兰' => '于湘蘭',
-'于湘蘭' => '于湘蘭',
-'于汉超' => '于漢超',
-'于漢超' => '于漢超',
-'于澄' => '于澄',
-'于泽尔' => '于澤爾',
-'于澤爾' => '于澤爾',
-'于涛' => '于濤',
-'于濤' => '于濤',
-'于熙珍' => '于熙珍',
-'于尔岑' => '于爾岑',
-'于爾岑' => '于爾岑',
-'于尔根' => '于爾根',
-'于爾根' => '于爾根',
-'于尔里克' => '于爾里克',
-'于爾里克' => '于爾里克',
-'于特森' => '于特森',
-'于玉立' => '于玉立',
-'于田' => '于田',
-'于禁' => '于禁',
-'于秀敏' => '于秀敏',
-'于立成' => '于立成',
-'于素秋' => '于素秋',
-'于美人' => '于美人',
-'于耘婕' => '于耘婕',
-'于若木' => '于若木',
-'于荫霖' => '于蔭霖',
-'于蔭霖' => '于蔭霖',
-'于衡' => '于衡',
-'于西翰' => '于西翰',
-'于謙' => '于謙',
-'于谦' => '于謙',
-'于谨' => '于謹',
-'于貝爾' => '于貝爾',
-'于贝尔' => '于貝爾',
-'于贈' => '于贈',
-'于赠' => '于贈',
-'于越' => '于越',
-'于軍' => '于軍',
-'于逸堯' => '于逸堯',
-'于道泉' => '于道泉',
-'于远伟' => '于遠偉',
-'于遠偉' => '于遠偉',
-'于都县' => '于都縣',
-'于都縣' => '于都縣',
-'于里察' => '于里察',
-'于阗' => '于闐',
-'于双戈' => '于雙戈',
-'于雙戈' => '于雙戈',
-'于云鹤' => '于雲鶴',
-'于震' => '于震',
-'于震寰' => '于震寰',
-'于震环' => '于震環',
-'于震環' => '于震環',
-'于靖' => '于靖',
-'于非暗' => '于非闇',
-'于非闇' => '于非闇',
-'于韋斯屈萊' => '于韋斯屈萊',
-'于韦斯屈莱' => '于韋斯屈萊',
-'于風政' => '于風政',
-'于风政' => '于風政',
-'于飛' => '于飛',
-'于飞' => '于飛',
-'于余曲折' => '于餘曲折',
-'于鬯' => '于鬯',
-'于魁智' => '于魁智',
-'于凤桐' => '于鳳桐',
-'于鳳桐' => '于鳳桐',
-'于凤至' => '于鳳至',
-'于鳳至' => '于鳳至',
-'于默奥' => '于默奧',
-'于默奧' => '于默奧',
-'云乎' => '云乎',
-'云云' => '云云',
-'云何' => '云何',
-'云敞' => '云敞',
-'云为' => '云為',
-'云為' => '云為',
-'云然' => '云然',
-'云尔' => '云爾',
-'云:' => '云:',
-'五个' => '五個',
-'五周后' => '五周後',
-'五天后' => '五天後',
-'五峰县' => '五峯縣',
-'五岳' => '五嶽',
-'五年' => '五年',
-'五谷' => '五穀',
-'五扎' => '五紮',
-'五脏' => '五臟',
-'五行生克' => '五行生剋',
-'五谷王北街' => '五谷王北街',
-'五谷王南街' => '五谷王南街',
-'五只' => '五隻',
-'五余' => '五餘',
-'井干' => '井幹',
-'井里' => '井裡',
-'亚于' => '亞於',
-'亚美尼亚历' => '亞美尼亞曆',
-'交托' => '交託',
-'交游' => '交遊',
-'交哄' => '交鬨',
-'亦云' => '亦云',
-'京沈' => '京瀋',
-'亮丑' => '亮醜',
-'亮钟' => '亮鐘',
-'人云' => '人云',
-'人如风后入江云' => '人如風後入江雲',
-'人干的' => '人幹的',
-'人欲' => '人慾',
-'人数只' => '人數只',
-'人数里' => '人數裡',
-'人物志' => '人物誌',
-'人生天里' => '人生天里',
-'人发指' => '人髮指',
-'什锦面' => '什錦麵',
-'仁贵' => '仁貴',
-'介胄' => '介冑',
-'他干的' => '他幹的',
-'他钟' => '他鐘',
-'付托' => '付託',
-'仙后' => '仙后',
-'仙后座' => '仙后座',
-'仙游' => '仙遊',
-'代数里' => '代數裡',
-'代理发行' => '代理發行',
-'代码表' => '代碼表',
-'代表' => '代表',
-'以自制' => '以自制',
-'仲裁制' => '仲裁制',
-'件钟' => '件鐘',
-'价川' => '价川',
-'任何钟' => '任何鐘',
-'任何钟表' => '任何鐘錶',
-'任教于' => '任教於',
-'任于' => '任於',
-'仿制' => '仿製',
-'伊于湖底' => '伊于湖底',
-'伊府面' => '伊府麵',
-'伊斯兰教历' => '伊斯蘭教曆',
-'伊斯兰教历史' => '伊斯蘭教歷史',
-'伊斯兰历' => '伊斯蘭曆',
-'伊斯兰历史' => '伊斯蘭歷史',
-'伊东怜' => '伊東怜',
-'伊尔汗历表' => '伊爾汗曆表',
-'伊达里子' => '伊達里子',
-'伊适杰' => '伊適杰',
-'伊里布' => '伊里布',
-'伊郁' => '伊鬱',
-'伏几' => '伏几',
-'伐罪吊民' => '伐罪弔民',
-'休克期' => '休克期',
-'休征' => '休徵',
-'伙头' => '伙頭',
-'伴游' => '伴遊',
-'似于' => '似於',
-'但云' => '但云',
-'位于' => '位於',
-'位准' => '位準',
-'低洼' => '低洼',
-'住扎' => '住紮',
-'占毕' => '佔畢',
-'占头筹' => '佔頭籌',
-'占高枝儿' => '佔高枝兒',
-'何杰' => '何杰',
-'余三勝' => '余三勝',
-'余三胜' => '余三勝',
-'余光中' => '余光中',
-'余光生' => '余光生',
-'余力为' => '余力為',
-'余威德' => '余威德',
-'余子明' => '余子明',
-'余思敏' => '余思敏',
-'佛罗棱萨' => '佛羅稜薩',
-'佛钟' => '佛鐘',
-'作品里' => '作品裡',
-'作准' => '作準',
-'你夸' => '你誇',
-'佣金' => '佣金',
-'佣鈿' => '佣鈿',
-'佣钿' => '佣鈿',
-'佣錢' => '佣錢',
-'佣钱' => '佣錢',
-'佳肴' => '佳肴',
-'佳里鎮' => '佳里鎮',
-'并一不二' => '併一不二',
-'并入' => '併入',
-'并兼' => '併兼',
-'并到' => '併到',
-'并合' => '併合',
-'并名' => '併名',
-'并吞下' => '併吞下',
-'并拢' => '併攏',
-'并案' => '併案',
-'并流' => '併流',
-'并火' => '併火',
-'并为一家' => '併為一家',
-'并为一体' => '併為一體',
-'并叠' => '併疊',
-'并发型模式' => '併發型模式',
-'并发模式' => '併發模式',
-'并发症' => '併發症',
-'并发重症' => '併發重症',
-'并科' => '併科',
-'并网' => '併網',
-'并线' => '併線',
-'并肩子' => '併肩子',
-'并购' => '併購',
-'并骨' => '併骨',
-'使其斗' => '使其鬥',
-'来于' => '來於',
-'侍仆' => '侍僕',
-'供制' => '供製',
-'依依不舍' => '依依不捨',
-'依托' => '依託',
-'侵并' => '侵併',
-'局促' => '侷促',
-'便于' => '便於',
-'系数' => '係數',
-'系为' => '係為',
-'保险柜' => '保險柜',
-'信托贸易' => '信托貿易',
-'信托' => '信託',
-'修杰楷' => '修杰楷',
-'修杰麟' => '修杰麟',
-'修筑前' => '修築前',
-'修筑后' => '修築後',
-'修胡刀' => '修鬍刀',
-'俯冲' => '俯衝',
-'个月里' => '個月裡',
-'个里' => '個裡',
-'个钟' => '個鐘',
-'个钟表' => '個鐘錶',
-'们干的' => '們幹的',
-'幸免' => '倖免',
-'幸存' => '倖存',
-'幸幸' => '倖幸',
-'候复' => '候覆',
-'倚闲' => '倚閑',
-'倛丑' => '倛醜',
-'借鉴' => '借鑑',
-'倦游' => '倦遊',
-'假里' => '假裡',
-'假托' => '假託',
-'假发' => '假髮',
-'偎干' => '偎乾',
-'停停当当' => '停停當當',
-'停征' => '停徵',
-'停制' => '停製',
-'备注' => '備註',
-'家伙' => '傢伙',
-'催并' => '催併',
-'佣仆' => '傭僕',
-'傲游' => '傲遊',
-'傲霜斗雪' => '傲霜鬥雪',
-'传位于四太子' => '傳位于四太子',
-'傳位于四太子' => '傳位于四太子',
-'传于' => '傳於',
-'债累累' => '債纍纍',
-'傻里傻气' => '傻裡傻氣',
-'仅余' => '僅餘',
-'仆人' => '僕人',
-'仆使' => '僕使',
-'仆仆' => '僕僕',
-'仆僮' => '僕僮',
-'仆吏' => '僕吏',
-'仆固怀恩' => '僕固懷恩',
-'仆夫' => '僕夫',
-'仆姑' => '僕姑',
-'仆婢' => '僕婢',
-'仆妇' => '僕婦',
-'仆射' => '僕射',
-'仆少' => '僕少',
-'仆役' => '僕役',
-'仆从' => '僕從',
-'仆憎' => '僕憎',
-'仆欧' => '僕歐',
-'仆程' => '僕程',
-'仆虽罢驽' => '僕雖罷駑',
-'侥幸' => '僥倖',
-'僮仆' => '僮僕',
-'雇主' => '僱主',
-'雇人' => '僱人',
-'雇佣' => '僱傭',
-'雇到' => '僱到',
-'雇工' => '僱工',
-'雇船' => '僱船',
-'雇请' => '僱請',
-'雇车' => '僱車',
-'雇农' => '僱農',
-'仪范' => '儀範',
-'亿个' => '億個',
-'亿周后' => '億周後',
-'亿天后' => '億天後',
-'亿年' => '億年',
-'亿只' => '億隻',
-'亿余' => '億餘',
-'俭仆' => '儉僕',
-'俭朴' => '儉樸',
-'俭确之教' => '儉确之教',
-'儒略改革历' => '儒略改革曆',
-'儒略改革历史' => '儒略改革歷史',
-'儒略历' => '儒略曆',
-'儒略历史' => '儒略歷史',
-'尽尽' => '儘儘',
-'尽先' => '儘先',
-'尽其所有' => '儘其所有',
-'尽可能' => '儘可能',
-'尽快' => '儘快',
-'尽早' => '儘早',
-'尽是' => '儘是',
-'尽管' => '儘管',
-'尽自' => '儘自',
-'尽速' => '儘速',
-'尽量' => '儘量',
-'优于' => '優於',
-'优游' => '優遊',
-'兀术' => '兀朮',
-'元凶' => '元兇',
-'兆个' => '兆個',
-'兆余' => '兆餘',
-'凶刀' => '兇刀',
-'凶器' => '兇器',
-'凶嫌' => '兇嫌',
-'凶巴巴' => '兇巴巴',
-'凶徒' => '兇徒',
-'凶悍' => '兇悍',
-'凶恶' => '兇惡',
-'凶手' => '兇手',
-'凶案' => '兇案',
-'凶枪' => '兇槍',
-'凶横' => '兇橫',
-'凶残' => '兇殘',
-'凶杀' => '兇殺',
-'凶犯' => '兇犯',
-'凶狠' => '兇狠',
-'凶猛' => '兇猛',
-'凶疑' => '兇疑',
-'凶相' => '兇相',
-'凶险' => '兇險',
-'先采' => '先採',
-'光致致' => '光緻緻',
-'克期间' => '克期間',
-'免征' => '免徵',
-'党太尉' => '党太尉',
-'党姓' => '党姓',
-'党家' => '党家',
-'党怀英' => '党懷英',
-'党进' => '党進',
-'党項' => '党項',
-'党项' => '党項',
-'内脏' => '內臟',
-'内制' => '內製',
-'内面包' => '內面包',
-'内面包的' => '內面包的',
-'内斗' => '內鬥',
-'内哄' => '內鬨',
-'全干' => '全乾',
-'两个' => '兩個',
-'两周后' => '兩周後',
-'两天后' => '兩天後',
-'两年' => '兩年',
-'两杆' => '兩桿',
-'两扎' => '兩紮',
-'两虎共斗' => '兩虎共鬥',
-'两只' => '兩隻',
-'两余' => '兩餘',
-'两鼠斗穴' => '兩鼠鬥穴',
-'两出' => '兩齣',
-'八个' => '八個',
-'八周后' => '八周後',
-'八天后' => '八天後',
-'八字胡' => '八字鬍',
-'八年' => '八年',
-'八扎' => '八紮',
-'八蜡' => '八蜡',
-'八只' => '八隻',
-'八余' => '八餘',
-'公仔面' => '公仔麵',
-'公仆' => '公僕',
-'公孙丑' => '公孫丑',
-'公干' => '公幹',
-'公历' => '公曆',
-'公历史' => '公歷史',
-'公里海' => '公里海',
-'公余' => '公餘',
-'六么' => '六么',
-'六个' => '六個',
-'六周后' => '六周後',
-'六天后' => '六天後',
-'六年' => '六年',
-'六楼后座' => '六樓后座',
-'六谷' => '六穀',
-'六扎' => '六紮',
-'六冲' => '六衝',
-'六只' => '六隻',
-'六余' => '六餘',
-'共和历' => '共和曆',
-'共和历史' => '共和歷史',
-'其一只' => '其一只',
-'其二只' => '其二只',
-'其八九只' => '其八九只',
-'其次辟地' => '其次辟地',
-'其余' => '其餘',
-'典范' => '典範',
-'兼并' => '兼并',
-'冉有仆' => '冉有僕',
-'冗余' => '冗餘',
-'冤仇' => '冤讎',
-'冥蒙' => '冥濛',
-'冬山庄' => '冬山庄',
-'冬游' => '冬遊',
-'冰山里' => '冰山裡',
-'冶游' => '冶遊',
-'冷面相' => '冷面相',
-'冷面' => '冷麵',
-'准三后' => '准三后',
-'准保护' => '准保護',
-'准保護' => '准保護',
-'准保释' => '准保釋',
-'准保釋' => '准保釋',
-'凌蒙初' => '凌濛初',
-'凝炼' => '凝鍊',
-'几上' => '几上',
-'几几' => '几几',
-'几凳' => '几凳',
-'几子' => '几子',
-'几旁' => '几旁',
-'几杖' => '几杖',
-'几案' => '几案',
-'几椅' => '几椅',
-'几榻' => '几榻',
-'几净窗明' => '几淨窗明',
-'几筵' => '几筵',
-'几面上' => '几面上',
-'凶征' => '凶徵',
-'凶相毕露' => '凶相畢露',
-'出乖弄丑' => '出乖弄醜',
-'出乖露丑' => '出乖露醜',
-'出征收' => '出征收',
-'出于' => '出於',
-'出游' => '出遊',
-'出丑' => '出醜',
-'函数里' => '函數裡',
-'分别致' => '分别致',
-'分半钟' => '分半鐘',
-'分多钟' => '分多鐘',
-'分子钟' => '分子鐘',
-'分子云' => '分子雲',
-'分布于' => '分布於',
-'分钟' => '分鐘',
-'分钟里' => '分鐘裡',
-'刑余' => '刑餘',
-'划一桨' => '划一槳',
-'划上' => '划上',
-'划下' => '划下',
-'划不來' => '划不來',
-'划不来' => '划不來',
-'划了一会' => '划了一會',
-'划來划去' => '划來划去',
-'划来划去' => '划來划去',
-'划具' => '划具',
-'划到岸' => '划到岸',
-'划到江心' => '划到江心',
-'划动' => '划動',
-'划動' => '划動',
-'划去' => '划去',
-'划子' => '划子',
-'划得來' => '划得來',
-'划得来' => '划得來',
-'划拳' => '划拳',
-'划桨' => '划槳',
-'划槳' => '划槳',
-'划水' => '划水',
-'划着独木舟' => '划着獨木舟',
-'划着竹筏' => '划着竹筏',
-'划着船' => '划着船',
-'划算' => '划算',
-'划船' => '划船',
-'划艇' => '划艇',
-'划行' => '划行',
-'划走' => '划走',
-'划起' => '划起',
-'划进' => '划進',
-'划進' => '划進',
-'划过' => '划過',
-'划過' => '划過',
-'划龍舟' => '划龍舟',
-'划龙舟' => '划龍舟',
-'判断发' => '判斷發',
-'别辟' => '別闢',
-'利欲' => '利慾',
-'利于' => '利於',
-'刮来刮去' => '刮來刮去',
-'刮起来' => '刮起來',
-'刮胡' => '刮鬍',
-'到山里' => '到山裡',
-'制冷机' => '制冷機',
-'制签' => '制籤',
-'制钟' => '制鐘',
-'刻半钟' => '刻半鐘',
-'刻多钟' => '刻多鐘',
-'刻钟' => '刻鐘',
-'剃发' => '剃髮',
-'剃胡' => '剃鬍',
-'剃须' => '剃鬚',
-'削发' => '削髮',
-'削面' => '削麵',
-'克剥' => '剋剝',
-'克扣' => '剋扣',
-'克期' => '剋期',
-'克死' => '剋死',
-'克薄' => '剋薄',
-'前往' => '前往',
-'前面店' => '前面店',
-'剖厘' => '剖釐',
-'刚干' => '剛乾',
-'刚雇' => '剛僱',
-'剥制' => '剝製',
-'剩余' => '剩餘',
-'剪其发' => '剪其髮',
-'剪发' => '剪髮',
-'割舍' => '割捨',
-'创获' => '創穫',
-'创制' => '創製',
-'铲出' => '剷出',
-'铲刈' => '剷刈',
-'铲平' => '剷平',
-'铲除' => '剷除',
-'铲头' => '剷頭',
-'划入' => '劃入',
-'划为' => '劃為',
-'划著' => '劃著名',
-'刘佳怜' => '劉佳怜',
-'劉佳怜' => '劉佳怜',
-'刘芸后' => '劉芸后',
-'力拼' => '力拚',
-'力拼众敌' => '力拼眾敵',
-'力争上游' => '力爭上遊',
-'功勋' => '功勳',
-'加氢精制' => '加氫精制',
-'劣于' => '劣於',
-'助于' => '助於',
-'劫余' => '劫餘',
-'勃郁' => '勃鬱',
-'胜于' => '勝於',
-'勤仆' => '勤僕',
-'勤朴' => '勤樸',
-'勋劳' => '勳勞',
-'勋业' => '勳業',
-'勋爵' => '勳爵',
-'勋章' => '勳章',
-'勋绩' => '勳績',
-'勾干' => '勾幹',
-'勾心斗角' => '勾心鬥角',
-'勾魂荡魄' => '勾魂蕩魄',
-'包括' => '包括',
-'包准' => '包準',
-'包谷' => '包穀',
-'包扎' => '包紮',
-'匏系' => '匏繫',
-'北山索面' => '北山索麵',
-'北仑河' => '北崙河',
-'北岳' => '北嶽',
-'北回线' => '北迴線',
-'北回铁路' => '北迴鐵路',
-'匪干' => '匪幹',
-'匿于' => '匿於',
-'十个' => '十個',
-'十出家' => '十出家',
-'十出击' => '十出擊',
-'十出生' => '十出生',
-'十出祁山' => '十出祁山',
-'十出头' => '十出頭',
-'十周后' => '十周後',
-'十天后' => '十天後',
-'十年' => '十年',
-'十扎' => '十紮',
-'十只' => '十隻',
-'十余' => '十餘',
-'十出' => '十齣',
-'千个' => '千個',
-'千只可' => '千只可',
-'千只够' => '千只夠',
-'千只夠' => '千只夠',
-'千只怕' => '千只怕',
-'千只能' => '千只能',
-'千只足够' => '千只足夠',
-'千只足夠' => '千只足夠',
-'千周后' => '千周後',
-'千天后' => '千天後',
-'千年' => '千年',
-'千扎' => '千紮',
-'千回百折' => '千迴百折',
-'千回百转' => '千迴百轉',
-'千钧一发' => '千鈞一髮',
-'千只' => '千隻',
-'千余' => '千餘',
-'升高后' => '升高後',
-'半制品' => '半制品',
-'半只可' => '半只可',
-'半只够' => '半只夠',
-'半于' => '半於',
-'半只' => '半隻',
-'协防' => '協防',
-'南京钟' => '南京鐘',
-'南京钟表' => '南京鐘錶',
-'南宫适' => '南宮适',
-'南宮适' => '南宮适',
-'南屏晚钟' => '南屏晚鐘',
-'南岳' => '南嶽',
-'南筑' => '南筑',
-'南回线' => '南迴線',
-'南回铁路' => '南迴鐵路',
-'南游' => '南遊',
-'博采' => '博採',
-'博尔术' => '博爾朮',
-'卜云吉' => '卜云吉',
-'占了卜' => '占了卜',
-'印累绶若' => '印纍綬若',
-'印制' => '印製',
-'印鉴' => '印鑑',
-'危于' => '危於',
-'卵与石斗' => '卵與石鬥',
-'卷须' => '卷鬚',
-'厂部' => '厂部',
-'原子钟' => '原子鐘',
-'原钟' => '原鐘',
-'历物之意' => '厤物之意',
-'去山里' => '去山裡',
-'参数只' => '參數只',
-'参数里' => '參數裡',
-'反反复复' => '反反覆覆',
-'反应制得' => '反應製得',
-'反朴' => '反樸',
-'反冲' => '反衝',
-'反复制' => '反複製',
-'反复' => '反覆',
-'反覆' => '反覆',
-'取舍' => '取捨',
-'取决于' => '取決於',
-'受雇' => '受僱',
-'受托' => '受託',
-'丛林里' => '叢林裡',
-'口干' => '口乾',
-'口干冒' => '口干冒',
-'口干政' => '口干政',
-'口干涉' => '口干涉',
-'口干犯' => '口干犯',
-'口干预' => '口干預',
-'口燥唇干' => '口燥唇乾',
-'口腹之欲' => '口腹之慾',
-'口里' => '口裡',
-'口钟' => '口鐘',
-'古人有云' => '古人有云',
-'古书云' => '古書云',
-'古書云' => '古書云',
-'古柯咸' => '古柯鹹',
-'古朴' => '古樸',
-'古語云' => '古語云',
-'古语云' => '古語云',
-'古迹' => '古蹟',
-'古钟' => '古鐘',
-'古钟表' => '古鐘錶',
-'另辟' => '另闢',
-'叩钟' => '叩鐘',
-'只占卜' => '只占卜',
-'只占吉' => '只占吉',
-'只占神问卜' => '只占神問卜',
-'只占算' => '只占算',
-'只影响' => '只影響',
-'只影響' => '只影響',
-'只采' => '只採',
-'只冲' => '只衝',
-'只要功夫深,铁杵磨成锈花针' => '只要功夫深,鐵杵磨成鏽花針',
-'只身上已' => '只身上已',
-'只身上有' => '只身上有',
-'只身上沒' => '只身上沒',
-'只身上没' => '只身上沒',
-'只身上无' => '只身上無',
-'只身上無' => '只身上無',
-'只身上的' => '只身上的',
-'只身世' => '只身世',
-'只身份' => '只身份',
-'只身前' => '只身前',
-'只身受' => '只身受',
-'只身子' => '只身子',
-'只身形' => '只身形',
-'只身影' => '只身影',
-'只身后' => '只身後',
-'只身後' => '只身後',
-'只身心' => '只身心',
-'只身旁' => '只身旁',
-'只身材' => '只身材',
-'只身段' => '只身段',
-'只身为' => '只身為',
-'只身為' => '只身為',
-'只身边' => '只身邊',
-'只身邊' => '只身邊',
-'只身首' => '只身首',
-'只身体' => '只身體',
-'只身體' => '只身體',
-'只身高' => '只身高',
-'只采声' => '只采聲',
-'叮叮当当' => '叮叮噹噹',
-'叮当' => '叮噹',
-'可紧可松' => '可緊可鬆',
-'可自制' => '可自制',
-'可鉴' => '可鑑',
-'台子女' => '台子女',
-'台子孙' => '台子孫',
-'台州' => '台州',
-'台布景' => '台布景',
-'台历史' => '台歷史',
-'台钟' => '台鐘',
-'台风奖' => '台風獎',
-'台风稳健' => '台風穩健',
-'史鉴' => '史鑑',
-'叶不二子' => '叶不二子',
-'叶志穗' => '叶志穗',
-'叶恭弘' => '叶恭弘',
-'叶音' => '叶音',
-'叶韵' => '叶韻',
-'吃板刀面' => '吃板刀麵',
-'吃碗面' => '吃碗麵',
-'吃姜' => '吃薑',
-'吃里扒外' => '吃裡扒外',
-'吃里爬外' => '吃裡爬外',
-'吃面' => '吃麵',
-'各辟' => '各闢',
-'各类钟' => '各類鐘',
-'合伙人' => '合伙人',
-'合并' => '合併',
-'合伙' => '合夥',
-'合府上' => '合府上',
-'合采' => '合採',
-'合历' => '合曆',
-'合历史' => '合歷史',
-'合准' => '合準',
-'吉凶庆吊' => '吉凶慶弔',
-'吉征' => '吉徵',
-'吊钟' => '吊鐘',
-'同人志' => '同人誌',
-'同伙' => '同夥',
-'同于' => '同於',
-'同余' => '同餘',
-'名单于' => '名單於',
-'后冠' => '后冠',
-'后北街' => '后北街',
-'后土' => '后土',
-'后妃' => '后妃',
-'后姓' => '后姓',
-'后安路' => '后安路',
-'后平路' => '后平路',
-'后庄' => '后庄',
-'后座' => '后座',
-'后母戊' => '后母戊',
-'后海湾' => '后海灣',
-'后海灣' => '后海灣',
-'后瑞站' => '后瑞站',
-'后稷' => '后稷',
-'后綜' => '后綜',
-'后羿' => '后羿',
-'后街' => '后街',
-'后角' => '后角',
-'后丰' => '后豐',
-'后豐' => '后豐',
-'后里' => '后里',
-'后发FK型星' => '后髮FK型星',
-'后髮FK型星' => '后髮FK型星',
-'后发座' => '后髮座',
-'后髮座' => '后髮座',
-'后发星系团' => '后髮星系團',
-'后髮星系團' => '后髮星系團',
-'吐哺捉发' => '吐哺捉髮',
-'吐哺握发' => '吐哺握髮',
-'向往来' => '向往來',
-'向往常' => '向往常',
-'向往日' => '向往日',
-'向往时' => '向往時',
-'吞并' => '吞併',
-'吟游' => '吟遊',
-'吧台' => '吧檯',
-'含齿戴发' => '含齒戴髮',
-'吹干' => '吹乾',
-'吹发' => '吹髮',
-'吹胡' => '吹鬍',
-'吾为之范我驰驱' => '吾爲之範我馳驅',
-'吕后' => '呂后',
-'呂后' => '呂后',
-'呆致致' => '呆緻緻',
-'呆里呆气' => '呆裡呆氣',
-'告札' => '告劄',
-'呦喂' => '呦喂',
-'周后' => '周后',
-'周惠后' => '周惠后',
-'周历' => '周曆',
-'周杰' => '周杰',
-'周历史' => '周歷史',
-'周游列国' => '周遊列國',
-'呵喂' => '呵喂',
-'呼吁' => '呼籲',
-'命中注定' => '命中注定',
-'和奸' => '和姦',
-'和制汉' => '和製漢',
-'和制英语' => '和製英語',
-'咎征' => '咎徵',
-'咕咕钟' => '咕咕鐘',
-'咪表' => '咪錶',
-'咬姜呷醋' => '咬薑呷醋',
-'咯当' => '咯噹',
-'哀吊' => '哀弔',
-'哀挽' => '哀輓',
-'品鉴' => '品鑑',
-'哄堂大笑' => '哄堂大笑',
-'員山庄' => '員山庄',
-'哪里' => '哪裡',
-'唁吊' => '唁弔',
-'呗赞' => '唄讚',
-'唇干' => '唇乾',
-'唯一只' => '唯一只',
-'唱游' => '唱遊',
-'唾面自干' => '唾面自乾',
-'唾余' => '唾餘',
-'商历' => '商曆',
-'商标准许' => '商標准許',
-'商历史' => '商歷史',
-'啊喂' => '啊喂',
-'启发式' => '啟發式',
-'啷当' => '啷噹',
-'喂了一声' => '喂了一聲',
-'喂喂' => '喂喂',
-'喂哟' => '喂喲',
-'喂!' => '喂!',
-'喂,' => '喂,',
-'善于' => '善於',
-'喜向往' => '喜向往',
-'喜欢表' => '喜歡錶',
-'喜欢钟' => '喜歡鐘',
-'喜欢钟表' => '喜歡鐘錶',
-'喝干' => '喝乾',
-'喧哗' => '喧譁',
-'喧哄' => '喧鬨',
-'丧钟' => '喪鐘',
-'乔岳' => '喬嶽',
-'单于' => '單于',
-'單于' => '單于',
-'单单于' => '單單於',
-'单干' => '單幹',
-'单打独斗' => '單打獨鬥',
-'哟喂' => '喲喂',
-'喲喂' => '喲喂',
-'嘉谷' => '嘉穀',
-'嘉肴' => '嘉肴',
-'嘴里' => '嘴裡',
-'恶心' => '噁心',
-'噙齿戴发' => '噙齒戴髮',
-'喷洒' => '噴洒',
-'当啷' => '噹啷',
-'当当' => '噹噹',
-'噜苏' => '嚕囌',
-'啮合' => '嚙合',
-'啮齿类' => '嚙齒類',
-'向导' => '嚮導',
-'向往' => '嚮往',
-'向慕' => '嚮慕',
-'向迩' => '嚮邇',
-'严云农' => '嚴云農',
-'严于' => '嚴於',
-'嚼谷' => '嚼穀',
-'啰啰苏苏' => '囉囉囌囌',
-'啰苏' => '囉囌',
-'嘱托' => '囑託',
-'啮虫' => '囓蟲',
-'四个' => '四個',
-'四出征收' => '四出徵收',
-'四分历' => '四分曆',
-'四分历史' => '四分歷史',
-'四周后' => '四周後',
-'四天后' => '四天後',
-'四年' => '四年',
-'四舍五入' => '四捨五入',
-'四舍六入' => '四捨六入',
-'四杆铁笔' => '四桿鐵筆',
-'四扎' => '四紮',
-'四只' => '四隻',
-'四面包' => '四面包',
-'四面钟' => '四面鐘',
-'四余' => '四餘',
-'回佣' => '回佣',
-'回采' => '回採',
-'回旋加速' => '回旋加速',
-'回历' => '回曆',
-'回历史' => '回歷史',
-'回复中' => '回覆中',
-'回复你' => '回覆你',
-'回复帖子' => '回覆帖子',
-'回复意见' => '回覆意見',
-'回复说' => '回覆說',
-'回复邮件' => '回覆郵件',
-'回复:' => '回覆:',
-'回游' => '回遊',
-'因于' => '因於',
-'困倦起来' => '困倦起來',
-'困于' => '困於',
-'困兽之斗' => '困獸之鬥',
-'困兽犹斗' => '困獸猶鬥',
-'困斗' => '困鬥',
-'固定制' => '固定制',
-'固征' => '固徵',
-'囿于' => '囿於',
-'圈梁' => '圈樑',
-'圈里' => '圈裡',
-'国之桢干' => '國之楨榦',
-'国于' => '國於',
-'国历' => '國曆',
-'国历代' => '國歷代',
-'国历任' => '國歷任',
-'国历来' => '國歷來',
-'国历史' => '國歷史',
-'国历届' => '國歷屆',
-'国历经' => '國歷經',
-'国仇' => '國讎',
-'园里' => '園裡',
-'园游会' => '園遊會',
-'图里的' => '圖裡的',
-'图里,' => '圖裡,',
-'图鉴' => '圖鑑',
-'土索面' => '土索麵',
-'土里' => '土裡',
-'土制' => '土製',
-'在制品' => '在制品',
-'在山里' => '在山裡',
-'在于' => '在於',
-'地图里' => '地圖裡',
-'地心历表' => '地心曆表',
-'地方志' => '地方志',
-'地志' => '地誌',
-'地丑德齐' => '地醜德齊',
-'坏于' => '坏於',
-'坐如钟' => '坐如鐘',
-'坐台' => '坐檯',
-'坐钟' => '坐鐘',
-'坑里' => '坑裡',
-'坤范' => '坤範',
-'坦荡' => '坦蕩',
-'坦荡荡' => '坦蕩蕩',
-'坱郁' => '坱鬱',
-'垂于' => '垂於',
-'垂范' => '垂範',
-'垂发' => '垂髮',
-'型范' => '型範',
-'埃及历' => '埃及曆',
-'埃及历史' => '埃及歷史',
-'埃及艳后' => '埃及豔后',
-'埃荣冲' => '埃榮衝',
-'城市里' => '城市裡',
-'城里' => '城裡',
-'埔子里' => '埔子里',
-'埔里社' => '埔裏社',
-'域里' => '域裡',
-'基干' => '基幹',
-'基于' => '基於',
-'基准' => '基準',
-'坚致' => '堅緻',
-'堙淀' => '堙澱',
-'堡子里' => '堡子里',
-'场里' => '場裡',
-'塞耳盗钟' => '塞耳盜鐘',
-'境里' => '境裡',
-'境里程' => '境里程',
-'墓志铭' => '墓志銘',
-'墓志' => '墓誌',
-'增辟' => '增闢',
-'墨子里' => '墨子里',
-'墨斗' => '墨斗',
-'墨沈沈' => '墨沈沈',
-'墨沈' => '墨瀋',
-'垦辟' => '墾闢',
-'压制出' => '壓製出',
-'压制机' => '壓製機',
-'壮游' => '壯遊',
-'壮面' => '壯麵',
-'壹郁' => '壹鬱',
-'壶里' => '壺裡',
-'壸范' => '壼範',
-'壽天里' => '壽天里',
-'寿面' => '壽麵',
-'夏于乔' => '夏于喬',
-'夏于喬' => '夏于喬',
-'夏历' => '夏曆',
-'夏历史' => '夏歷史',
-'夏游' => '夏遊',
-'外强中干' => '外強中乾',
-'外制' => '外製',
-'多半只' => '多半只',
-'多只包括' => '多只包括',
-'多只可' => '多只可',
-'多只含' => '多只含',
-'多只在' => '多只在',
-'多只是' => '多只是',
-'多只会' => '多只會',
-'多只會' => '多只會',
-'多只有' => '多只有',
-'多只比' => '多只比',
-'多只用' => '多只用',
-'多只能' => '多只能',
-'多只限' => '多只限',
-'多只需' => '多只需',
-'多只須' => '多只須',
-'多只须' => '多只須',
-'多周后' => '多周後',
-'多天后' => '多天後',
-'多于' => '多於',
-'多冲' => '多衝',
-'多丑' => '多醜',
-'多只' => '多隻',
-'多余' => '多餘',
-'多出电影' => '多齣電影',
-'夜晚里' => '夜晚裡',
-'夜里' => '夜裡',
-'夜游' => '夜遊',
-'梦里' => '夢裡',
-'梦游' => '夢遊',
-'伙伴' => '夥伴',
-'伙友' => '夥友',
-'伙同' => '夥同',
-'伙众' => '夥眾',
-'伙计' => '夥計',
-'大伙儿' => '大伙兒',
-'大只可' => '大只可',
-'大只在' => '大只在',
-'大只是' => '大只是',
-'大只会' => '大只會',
-'大只有' => '大只有',
-'大只能' => '大只能',
-'大只需' => '大只需',
-'大周后' => '大周后',
-'大型钟' => '大型鐘',
-'大型钟表面' => '大型鐘表面',
-'大型钟表' => '大型鐘錶',
-'大型钟面' => '大型鐘面',
-'大多只' => '大多只',
-'大伙' => '大夥',
-'大干' => '大幹',
-'大批涌到' => '大批湧到',
-'大折儿' => '大摺兒',
-'大明历' => '大明曆',
-'大明历史' => '大明歷史',
-'大历' => '大曆',
-'大本钟' => '大本鐘',
-'大本钟敲' => '大本鐘敲',
-'大历史' => '大歷史',
-'大病初愈' => '大病初癒',
-'大目干连' => '大目乾連',
-'大笨钟' => '大笨鐘',
-'大笨钟敲' => '大笨鐘敲',
-'大蜡' => '大蜡',
-'大衍历' => '大衍曆',
-'大衍历史' => '大衍歷史',
-'大言非夸' => '大言非夸',
-'大夸' => '大誇',
-'大赞' => '大讚',
-'大周折' => '大週摺',
-'大丑' => '大醜',
-'大金发苔' => '大金髮苔',
-'大钟' => '大鐘',
-'大只' => '大隻',
-'大风后' => '大風後',
-'天克地冲' => '天克地衝',
-'天台' => '天台',
-'天后' => '天后',
-'天后宫' => '天后宮',
-'天地志狼' => '天地志狼',
-'天地为范' => '天地為範',
-'天干地支' => '天干地支',
-'天后来' => '天後來',
-'天后半' => '天後半',
-'天后天' => '天後天',
-'天文学钟' => '天文學鐘',
-'天文历表' => '天文曆表',
-'天文钟' => '天文鐘',
-'天历' => '天曆',
-'天历史' => '天歷史',
-'天神之后' => '天神之后',
-'天里' => '天裡',
-'天里昂' => '天里昂',
-'天里村' => '天里村',
-'太仆' => '太僕',
-'太凶' => '太兇',
-'太初历' => '太初曆',
-'太初历史' => '太初歷史',
-'太后' => '太后',
-'太丑' => '太醜',
-'太阁' => '太閤',
-'夸克' => '夸克',
-'夸父' => '夸父',
-'夸特' => '夸特',
-'夸脱' => '夸脫',
-'奇勋' => '奇勳',
-'奇迹' => '奇蹟',
-'奇丑' => '奇醜',
-'奏折' => '奏摺',
-'夺斗' => '奪鬥',
-'奋斗' => '奮鬥',
-'女丑' => '女丑',
-'女仆' => '女僕',
-'奴仆' => '奴僕',
-'奸淫掳掠' => '奸淫擄掠',
-'好家伙' => '好傢夥',
-'好凶' => '好兇',
-'好勇斗狠' => '好勇鬥狠',
-'好斗大' => '好斗大',
-'好斗室' => '好斗室',
-'好斗笠' => '好斗笠',
-'好斗篷' => '好斗篷',
-'好斗胆' => '好斗膽',
-'好斗膽' => '好斗膽',
-'好斗蓬' => '好斗蓬',
-'好于' => '好於',
-'好困' => '好睏',
-'好签' => '好籤',
-'好丑' => '好醜',
-'好斗' => '好鬥',
-'如果干' => '如果幹',
-'如饥似渴' => '如饑似渴',
-'妖后' => '妖后',
-'妖气冲天' => '妖氣衝天',
-'妆台' => '妝檯',
-'始于' => '始於',
-'委托' => '委託',
-'委托书' => '委託書',
-'奸夫' => '姦夫',
-'奸妇' => '姦婦',
-'奸情' => '姦情',
-'奸杀' => '姦殺',
-'奸污' => '姦污',
-'奸淫' => '姦淫',
-'威棱' => '威稜',
-'婢仆' => '婢僕',
-'嫁祸于' => '嫁禍於',
-'嫌凶' => '嫌兇',
-'嫌好道丑' => '嫌好道醜',
-'嫩姜' => '嫩薑',
-'嬉游' => '嬉遊',
-'嬖幸' => '嬖倖',
-'嬴余' => '嬴餘',
-'子之丰兮' => '子之丰兮',
-'子云' => '子云',
-'子里' => '子裡',
-'子里甲' => '子里甲',
-'字汇' => '字彙',
-'字母后' => '字母後',
-'字码表' => '字碼表',
-'字里行间' => '字裡行間',
-'存折' => '存摺',
-'存于' => '存於',
-'孛里海' => '孛里海',
-'孝惠后' => '孝惠后',
-'孙杰' => '孫杰',
-'孫杰' => '孫杰',
-'学家' => '學家',
-'学里' => '學裡',
-'宇宙志' => '宇宙誌',
-'安于' => '安於',
-'安沈铁路' => '安瀋鐵路',
-'宋王台' => '宋王臺',
-'宗周钟' => '宗周鐘',
-'官不怕大只怕管' => '官不怕大只怕管',
-'官地为采' => '官地為寀',
-'官历' => '官曆',
-'官历史' => '官歷史',
-'定于' => '定於',
-'定准' => '定準',
-'定制' => '定製',
-'宜云' => '宜云',
-'宣泄' => '宣洩',
-'宦游' => '宦遊',
-'宫里' => '宮裡',
-'害于' => '害於',
-'宴游' => '宴遊',
-'家仆' => '家僕',
-'家里' => '家裡',
-'家丑' => '家醜',
-'容于' => '容於',
-'容范' => '容範',
-'宿舍' => '宿舍',
-'寄托在' => '寄托在',
-'寄托' => '寄託',
-'密致' => '密緻',
-'寇准' => '寇準',
-'寇仇' => '寇讎',
-'富余' => '富餘',
-'寒栗' => '寒慄',
-'寒于' => '寒於',
-'寓于' => '寓於',
-'寡欲' => '寡慾',
-'实干' => '實幹',
-'实累累' => '實纍纍',
-'写字台' => '寫字檯',
-'宽于' => '寬於',
-'宽余' => '寬餘',
-'宽松' => '寬鬆',
-'宽松松' => '寬鬆鬆',
-'寮采' => '寮寀',
-'寶山庄' => '寶山庄',
-'宝历' => '寶曆',
-'寶曆' => '寶曆',
-'宝历史' => '寶歷史',
-'宝里宝气' => '寶裡寶氣',
-'宝鉴' => '寶鑑',
-'寸发千金' => '寸髮千金',
-'寺钟' => '寺鐘',
-'封后' => '封后',
-'封为后' => '封為后',
-'封面里' => '封面裡',
-'射雕' => '射鵰',
-'专向往' => '專向往',
-'专辑里' => '專輯裡',
-'尊后' => '尊后',
-'对不准' => '對不準',
-'对折' => '對摺',
-'对于' => '對於',
-'对准' => '對準',
-'对准表' => '對準錶',
-'对准钟' => '對準鐘',
-'对准钟表' => '對準鐘錶',
-'对着干' => '對着幹',
-'对华发' => '對華發',
-'对表中' => '對表中',
-'对表扬' => '對表揚',
-'对表明' => '對表明',
-'对表演' => '對表演',
-'对表现' => '對表現',
-'对表达' => '對表達',
-'导游' => '導遊',
-'小丑' => '小丑',
-'小井里' => '小井里',
-'小价' => '小价',
-'小仆' => '小僕',
-'小几' => '小几',
-'小只可' => '小只可',
-'小只在' => '小只在',
-'小只是' => '小只是',
-'小只会' => '小只會',
-'小只有' => '小只有',
-'小只能' => '小只能',
-'小只需' => '小只需',
-'小周后' => '小周后',
-'小型钟' => '小型鐘',
-'小型钟表面' => '小型鐘表面',
-'小型钟表' => '小型鐘錶',
-'小型钟面' => '小型鐘面',
-'小时里' => '小時裡',
-'小米面' => '小米麵',
-'小只' => '小隻',
-'少采' => '少採',
-'就范' => '就範',
-'就里' => '就裡',
-'尸位素餐' => '尸位素餐',
-'尸佼' => '尸佼',
-'尸利' => '尸利',
-'尸子' => '尸子',
-'尸居余气' => '尸居餘氣',
-'尸弃佛' => '尸棄佛',
-'尸祝' => '尸祝',
-'尸禄' => '尸祿',
-'尸罗精舍' => '尸羅精舍',
-'尸羅精舍' => '尸羅精舍',
-'尸臣' => '尸臣',
-'尸谏' => '尸諫',
-'尸魂界' => '尸魂界',
-'尸鸠' => '尸鳩',
-'局促不安' => '局促不安',
-'局里' => '局裡',
-'屋梁' => '屋樑',
-'屋里' => '屋裡',
-'屏风后' => '屏風後',
-'屑于' => '屑於',
-'屡顾尔仆' => '屢顧爾僕',
-'属于' => '屬於',
-'属托' => '屬託',
-'屯扎' => '屯紮',
-'屯里' => '屯裡',
-'山仔后' => '山仔后',
-'山崩钟应' => '山崩鐘應',
-'山岳' => '山嶽',
-'山梁' => '山樑',
-'山棱' => '山稜',
-'山羊胡' => '山羊鬍',
-'山里有' => '山裡有',
-'山里的' => '山裡的',
-'山谷' => '山谷',
-'山重水复' => '山重水複',
-'岫岩' => '岫巖',
-'岱岳' => '岱嶽',
-'峇里海' => '峇里海',
-'峰回' => '峰迴',
-'峻岭' => '峻岭',
-'崑剧' => '崑劇',
-'昆剧' => '崑劇',
-'崑山' => '崑山',
-'昆山' => '崑山',
-'昆冈' => '崑岡',
-'昆仑' => '崑崙',
-'昆嵛' => '崑嵛',
-'昆承湖' => '崑承湖',
-'崑曲' => '崑曲',
-'昆曲' => '崑曲',
-'崑腔' => '崑腔',
-'昆腔' => '崑腔',
-'崑苏' => '崑蘇',
-'昆苏' => '崑蘇',
-'崑调' => '崑調',
-'昆调' => '崑調',
-'崖广' => '崖广',
-'嶒棱' => '嶒稜',
-'岳岳' => '嶽嶽',
-'岳麓' => '嶽麓',
-'川谷' => '川穀',
-'巡回医疗' => '巡回醫療',
-'巡回' => '巡迴',
-'巡游' => '巡遊',
-'工作台' => '工作檯',
-'左冲右突' => '左衝右突',
-'巧干' => '巧幹',
-'巧历' => '巧曆',
-'巧历史' => '巧歷史',
-'巨制' => '巨製',
-'差之毫厘' => '差之毫厘',
-'差于' => '差於',
-'己丑' => '己丑',
-'已占卜' => '已占卜',
-'已占算' => '已占算',
-'巴尔干' => '巴爾幹',
-'巷里' => '巷裡',
-'市里的' => '市裡的',
-'布谷' => '布穀',
-'布谷鸟' => '布穀鳥',
-'布谷鸟钟' => '布穀鳥鐘',
-'布里海' => '布里海',
-'希伯来历' => '希伯來曆',
-'希伯来历史' => '希伯來歷史',
-'帘子' => '帘子',
-'帘布' => '帘布',
-'帝后台' => '帝后臺',
-'师范' => '師範',
-'席卷' => '席捲',
-'带征' => '帶徵',
-'带余' => '帶餘',
-'带发修行' => '帶髮修行',
-'幅图里' => '幅圖裡',
-'干系' => '干係',
-'平平当当' => '平平當當',
-'平准' => '平準',
-'年代里' => '年代裡',
-'年历' => '年曆',
-'年历史' => '年歷史',
-'年谷' => '年穀',
-'年里' => '年裡',
-'年鉴' => '年鑑',
-'并力' => '并力',
-'并吞' => '并吞',
-'并州' => '并州',
-'并日而食' => '并日而食',
-'并迭' => '并迭',
-'幸免于难' => '幸免於難',
-'幸于' => '幸於',
-'幸运胡' => '幸運鬍',
-'干上' => '幹上',
-'干下去' => '幹下去',
-'干不了' => '幹不了',
-'干不成' => '幹不成',
-'干了' => '幹了',
-'干事' => '幹事',
-'干些' => '幹些',
-'干什么' => '幹什麼',
-'干仗' => '幹仗',
-'干个' => '幹個',
-'干劲' => '幹勁',
-'干吏' => '幹吏',
-'干员' => '幹員',
-'干啥' => '幹啥',
-'干吗' => '幹嗎',
-'干嘛' => '幹嘛',
-'干坏事' => '幹壞事',
-'干大事' => '幹大事',
-'干完' => '幹完',
-'干家' => '幹家',
-'干得' => '幹得',
-'干性油' => '幹性油',
-'干才' => '幹才',
-'干掉' => '幹掉',
-'干探' => '幹探',
-'干校' => '幹校',
-'干活' => '幹活',
-'干流' => '幹流',
-'干济' => '幹濟',
-'干营生' => '幹營生',
-'干父之蛊' => '幹父之蠱',
-'干球温度' => '幹球溫度',
-'干甚么' => '幹甚麼',
-'干略' => '幹略',
-'干当' => '幹當',
-'干的事' => '幹的事',
-'干的好事' => '幹的好事',
-'干细胞' => '幹細胞',
-'干线' => '幹線',
-'干练' => '幹練',
-'干缺' => '幹缺',
-'干群关系' => '幹群關係',
-'干蛊' => '幹蠱',
-'干警' => '幹警',
-'干起来' => '幹起來',
-'干路' => '幹路',
-'干办' => '幹辦',
-'干这' => '幹這',
-'干道' => '幹道',
-'干部' => '幹部',
-'干革命' => '幹革命',
-'干头' => '幹頭',
-'干么' => '幹麼',
-'几个' => '幾個',
-'几周后' => '幾周後',
-'几天后' => '幾天後',
-'几进几出' => '幾進幾出',
-'几只' => '幾隻',
-'几出' => '幾齣',
-'广部' => '广部',
-'庄司' => '庄司',
-'床席' => '床蓆',
-'店里' => '店裡',
-'府干卿' => '府干卿',
-'府干扰' => '府干擾',
-'府干擾' => '府干擾',
-'府干政' => '府干政',
-'府干涉' => '府干涉',
-'府干犯' => '府干犯',
-'府干預' => '府干預',
-'府干预' => '府干預',
-'府干' => '府幹',
-'座钟' => '座鐘',
-'廍子里' => '廍子里',
-'廓子里' => '廓子里',
-'厨余' => '廚餘',
-'厮斗' => '廝鬥',
-'庙里' => '廟裡',
-'废后' => '廢后',
-'廢后' => '廢后',
-'广征' => '廣徵',
-'广舍' => '廣捨',
-'广播里' => '廣播裡',
-'延历' => '延曆',
-'建于' => '建於',
-'建筑前' => '建築前',
-'建筑后' => '建築後',
-'弄干' => '弄乾',
-'弄丑' => '弄醜',
-'弄脏胸' => '弄髒胸',
-'弄松' => '弄鬆',
-'弄鬼吊猴' => '弄鬼弔猴',
-'吊卷' => '弔卷',
-'吊取' => '弔取',
-'吊古' => '弔古',
-'吊唁' => '弔唁',
-'吊问' => '弔問',
-'吊喉' => '弔喉',
-'吊丧' => '弔喪',
-'吊喭' => '弔喭',
-'吊奠' => '弔奠',
-'吊孝' => '弔孝',
-'吊客' => '弔客',
-'吊宴' => '弔宴',
-'吊带' => '弔帶',
-'吊影' => '弔影',
-'吊恤' => '弔恤',
-'吊慰' => '弔慰',
-'吊扣' => '弔扣',
-'吊拷' => '弔拷',
-'吊挂' => '弔掛',
-'吊撒' => '弔撒',
-'吊文' => '弔文',
-'吊旗' => '弔旗',
-'吊死' => '弔死',
-'吊民' => '弔民',
-'吊祭' => '弔祭',
-'吊纸' => '弔紙',
-'吊者大悦' => '弔者大悅',
-'吊腰撒跨' => '弔腰撒跨',
-'吊脚儿事' => '弔腳兒事',
-'吊膀子' => '弔膀子',
-'吊词' => '弔詞',
-'吊诡' => '弔詭',
-'吊谎' => '弔謊',
-'吊贺迎送' => '弔賀迎送',
-'吊头' => '弔頭',
-'吊鹤' => '弔鶴',
-'引斗' => '引鬥',
-'弘历' => '弘曆',
-'弘历史' => '弘歷史',
-'弱于' => '弱於',
-'弱水三千只取一瓢' => '弱水三千只取一瓢',
-'张三丰' => '張三丰',
-'張三丰' => '張三丰',
-'张勋' => '張勳',
-'张杰' => '張杰',
-'張杰' => '張杰',
-'张乐于张徐' => '張樂于張徐',
-'强制作用' => '強制作用',
-'强奸' => '強姦',
-'强干' => '強幹',
-'强于' => '強於',
-'别口气' => '彆口氣',
-'别强' => '彆強',
-'别扭' => '彆扭',
-'别拗' => '彆拗',
-'别气' => '彆氣',
-'弹子台' => '彈子檯',
-'弹珠台' => '彈珠檯',
-'汇刊' => '彙刊',
-'汇算' => '彙算',
-'汇纂' => '彙纂',
-'汇辑' => '彙輯',
-'形单影只' => '形單影隻',
-'形于' => '形於',
-'彭于晏' => '彭于晏',
-'影后' => '影后',
-'影相吊' => '影相弔',
-'役于' => '役於',
-'往复式' => '往復式',
-'往日无仇' => '往日無讎',
-'往里' => '往裡',
-'待复' => '待覆',
-'很干' => '很乾',
-'很凶' => '很兇',
-'很准' => '很準',
-'很丑' => '很醜',
-'很松' => '很鬆',
-'律历志' => '律曆志',
-'后印' => '後印',
-'后台老板' => '後台老板',
-'后天' => '後天',
-'後庄' => '後庄',
-'后面店' => '後面店',
-'徐干' => '徐幹',
-'徒杠' => '徒杠',
-'徒托空言' => '徒託空言',
-'得到回复' => '得到回覆',
-'得力干将' => '得力幹將',
-'从仆' => '從僕',
-'从图里' => '從圖裡',
-'从山里' => '從山裡',
-'从于' => '從於',
-'从里到外' => '從裡到外',
-'从里向外' => '從裡向外',
-'御岳山' => '御嶽山',
-'御制' => '御製',
-'复始' => '復始',
-'复活节历表' => '復活節曆表',
-'复苏' => '復甦',
-'征人' => '徵人',
-'征令' => '徵令',
-'征信' => '徵信',
-'征候' => '徵候',
-'征兆' => '徵兆',
-'征兵' => '徵兵',
-'征到' => '徵到',
-'征募' => '徵募',
-'征友' => '徵友',
-'征召' => '徵召',
-'征名责实' => '徵名責實',
-'征吏' => '徵吏',
-'征咎' => '徵咎',
-'征启' => '徵啟',
-'征士' => '徵士',
-'征婚' => '徵婚',
-'征实' => '徵實',
-'征庸' => '徵庸',
-'征引' => '徵引',
-'征得' => '徵得',
-'征怪' => '徵怪',
-'征才' => '徵才',
-'征招' => '徵招',
-'征收' => '徵收',
-'征效' => '徵效',
-'征文' => '徵文',
-'征求' => '徵求',
-'征状' => '徵狀',
-'征用' => '徵用',
-'征发' => '徵發',
-'征税' => '徵稅',
-'征稿' => '徵稿',
-'征答' => '徵答',
-'征结' => '徵結',
-'征圣' => '徵聖',
-'征聘' => '徵聘',
-'征训' => '徵訓',
-'征询' => '徵詢',
-'征调' => '徵調',
-'征象' => '徵象',
-'征购' => '徵購',
-'征迹' => '徵跡',
-'征车' => '徵車',
-'征辟' => '徵辟',
-'征逐' => '徵逐',
-'征选' => '徵選',
-'征集' => '徵集',
-'征风召雨' => '徵風召雨',
-'征验' => '徵驗',
-'心愿' => '心愿',
-'心于' => '心於',
-'心理' => '心理',
-'心细如发' => '心細如髮',
-'心系一' => '心繫一',
-'心系世' => '心繫世',
-'心系中' => '心繫中',
-'心系乔' => '心繫乔',
-'心系五' => '心繫五',
-'心系京' => '心繫京',
-'心系人' => '心繫人',
-'心系他' => '心繫他',
-'心系伊' => '心繫伊',
-'心系何' => '心繫何',
-'心系你' => '心繫你',
-'心系健' => '心繫健',
-'心系传' => '心繫傳',
-'心系全' => '心繫全',
-'心系两' => '心繫兩',
-'心系农' => '心繫农',
-'心系功' => '心繫功',
-'心系动' => '心繫動',
-'心系募' => '心繫募',
-'心系北' => '心繫北',
-'心系十' => '心繫十',
-'心系千' => '心繫千',
-'心系南' => '心繫南',
-'心系台' => '心繫台',
-'心系和' => '心繫和',
-'心系哪' => '心繫哪',
-'心系唐' => '心繫唐',
-'心系嘱' => '心繫囑',
-'心系四' => '心繫四',
-'心系困' => '心繫困',
-'心系国' => '心繫國',
-'心系在' => '心繫在',
-'心系地' => '心繫地',
-'心系大' => '心繫大',
-'心系天' => '心繫天',
-'心系夫' => '心繫夫',
-'心系奥' => '心繫奧',
-'心系女' => '心繫女',
-'心系她' => '心繫她',
-'心系妻' => '心繫妻',
-'心系妇' => '心繫婦',
-'心系子' => '心繫子',
-'心系它' => '心繫它',
-'心系宣' => '心繫宣',
-'心系家' => '心繫家',
-'心系富' => '心繫富',
-'心系小' => '心繫小',
-'心系山' => '心繫山',
-'心系川' => '心繫川',
-'心系幼' => '心繫幼',
-'心系广' => '心繫廣',
-'心系彼' => '心繫彼',
-'心系德' => '心繫德',
-'心系您' => '心繫您',
-'心系慈' => '心繫慈',
-'心系我' => '心繫我',
-'心系摩' => '心繫摩',
-'心系故' => '心繫故',
-'心系新' => '心繫新',
-'心系日' => '心繫日',
-'心系昌' => '心繫昌',
-'心系晓' => '心繫曉',
-'心系曼' => '心繫曼',
-'心系东' => '心繫東',
-'心系林' => '心繫林',
-'心系母' => '心繫母',
-'心系民' => '心繫民',
-'心系江' => '心繫江',
-'心系汶' => '心繫汶',
-'心系沈' => '心繫沈',
-'心系沙' => '心繫沙',
-'心系泰' => '心繫泰',
-'心系浙' => '心繫浙',
-'心系港' => '心繫港',
-'心系湖' => '心繫湖',
-'心系澳' => '心繫澳',
-'心系灾' => '心繫災',
-'心系父' => '心繫父',
-'心系生' => '心繫生',
-'心系病' => '心繫病',
-'心系百' => '心繫百',
-'心系的' => '心繫的',
-'心系众' => '心繫眾',
-'心系社' => '心繫社',
-'心系祖' => '心繫祖',
-'心系神' => '心繫神',
-'心系红' => '心繫紅',
-'心系美' => '心繫美',
-'心系群' => '心繫群',
-'心系老' => '心繫老',
-'心系舞' => '心繫舞',
-'心系英' => '心繫英',
-'心系茶' => '心繫茶',
-'心系万' => '心繫萬',
-'心系兰' => '心繫蘭',
-'心系西' => '心繫西',
-'心系贫' => '心繫貧',
-'心系输' => '心繫輸',
-'心系近' => '心繫近',
-'心系远' => '心繫遠',
-'心系选' => '心繫選',
-'心系重' => '心繫重',
-'心系长' => '心繫長',
-'心系阮' => '心繫阮',
-'心系震' => '心繫震',
-'心系非' => '心繫非',
-'心系风' => '心繫風',
-'心系香' => '心繫香',
-'心系高' => '心繫高',
-'心系麦' => '心繫麥',
-'心系黄' => '心繫黃',
-'心脏' => '心臟',
-'心脏痳痹' => '心臟痲痺',
-'心荡' => '心蕩',
-'心里面' => '心裏面',
-'心里' => '心裡',
-'心长发短' => '心長髮短',
-'心余' => '心餘',
-'必须' => '必須',
-'忙里' => '忙裡',
-'忙里偷闲' => '忙裡偷閒',
-'忠人之托' => '忠人之托',
-'忠仆' => '忠僕',
-'忠于' => '忠於',
-'快快当当' => '快快當當',
-'快冲' => '快衝',
-'怎么干' => '怎麼幹',
-'怒于' => '怒於',
-'怒气冲天' => '怒氣衝天',
-'怒火冲天' => '怒火衝天',
-'怒发冲冠' => '怒髮衝冠',
-'思如泉涌' => '思如泉湧',
-'怠于' => '怠於',
-'急于' => '急於',
-'急冲而下' => '急衝而下',
-'性征' => '性徵',
-'性欲' => '性慾',
-'怨气冲天' => '怨氣衝天',
-'怪里怪气' => '怪裡怪氣',
-'怫郁' => '怫鬱',
-'恂栗' => '恂慄',
-'恒基' => '恒基',
-'恒生' => '恒生',
-'恒隆' => '恒隆',
-'恕乏价催' => '恕乏价催',
-'息交绝游' => '息交絕遊',
-'息谷' => '息穀',
-'悒郁' => '悒鬱',
-'悠悠荡荡' => '悠悠蕩蕩',
-'悠荡' => '悠蕩',
-'悠游' => '悠遊',
-'悲凄' => '悲悽',
-'悲筑' => '悲筑',
-'悲郁' => '悲鬱',
-'悸栗' => '悸慄',
-'凄厉' => '悽厲',
-'凄怨' => '悽怨',
-'凄惋' => '悽惋',
-'凄惶' => '悽惶',
-'凄恻' => '悽惻',
-'凄怆' => '悽愴',
-'凄惨' => '悽慘',
-'凄戾' => '悽戾',
-'凄然' => '悽然',
-'凄美' => '悽美',
-'凄苦' => '悽苦',
-'凄酸' => '悽酸',
-'情欲' => '情慾',
-'惇朴' => '惇樸',
-'惠文后' => '惠文后',
-'恶仆' => '惡僕',
-'恶直丑正' => '惡直醜正',
-'恶斗' => '惡鬥',
-'惴栗' => '惴慄',
-'意大利面' => '意大利麵',
-'爱困' => '愛睏',
-'感于' => '感於',
-'愿朴' => '愿樸',
-'愿樸' => '愿樸',
-'愿而恭' => '愿而恭',
-'栗冽' => '慄冽',
-'栗栗' => '慄慄',
-'慈溪' => '慈谿',
-'慌里慌张' => '慌裡慌張',
-'惨淡' => '慘澹',
-'庆吊' => '慶弔',
-'庆历' => '慶曆',
-'庆历史' => '慶歷史',
-'欲令智昏' => '慾令智昏',
-'欲壑难填' => '慾壑難填',
-'欲念' => '慾念',
-'欲海' => '慾海',
-'欲火' => '慾火',
-'欲障' => '慾障',
-'忧郁' => '憂鬱',
-'凭几' => '憑几',
-'凭吊' => '憑弔',
-'凭折' => '憑摺',
-'凭准' => '憑準',
-'凭借' => '憑藉',
-'凭闲' => '憑閑',
-'宪法里' => '憲法裡',
-'恳托' => '懇託',
-'懈松' => '懈鬆',
-'应制得' => '應制得',
-'應制得' => '應制得',
-'应征' => '應徵',
-'应钟' => '應鐘',
-'懔栗' => '懍慄',
-'懞懞懂懂' => '懞懞懂懂',
-'懞直' => '懞直',
-'惩忿窒欲' => '懲忿窒欲',
-'怀里' => '懷裡',
-'怀钟' => '懷鐘',
-'悬挂' => '懸掛',
-'悬梁' => '懸樑',
-'悬臂梁' => '懸臂樑',
-'悬钟' => '懸鐘',
-'懿范' => '懿範',
-'恋恋不舍' => '戀戀不捨',
-'成于' => '成於',
-'成于思' => '成於思',
-'戬谷' => '戩穀',
-'截发' => '截髮',
-'战天斗地' => '戰天鬥地',
-'战栗' => '戰慄',
-'战于' => '戰於',
-'战斗' => '戰鬥',
-'戏里' => '戲裡',
-'戲院里' => '戲院里',
-'戴表元' => '戴表元',
-'戴发含齿' => '戴髮含齒',
-'房里' => '房裡',
-'所云' => '所云',
-'所云云' => '所云云',
-'所占卜' => '所占卜',
-'所占星' => '所占星',
-'所占算' => '所占算',
-'所托' => '所託',
-'扁拟谷盗虫' => '扁擬穀盜蟲',
-'手塚治虫' => '手塚治虫',
-'手折' => '手摺',
-'手表态' => '手表態',
-'手表態' => '手表態',
-'手表明' => '手表明',
-'手表决' => '手表決',
-'手表決' => '手表決',
-'手表演' => '手表演',
-'手表现' => '手表現',
-'手表現' => '手表現',
-'手表示' => '手表示',
-'手表达' => '手表達',
-'手表達' => '手表達',
-'手表露' => '手表露',
-'手表面' => '手表面',
-'手里剑' => '手裏劍',
-'手里' => '手裡',
-'手游' => '手遊',
-'手表' => '手錶',
-'手链' => '手鍊',
-'手松' => '手鬆',
-'才干休' => '才干休',
-'才干戈' => '才干戈',
-'才干扰' => '才干擾',
-'才干政' => '才干政',
-'才干涉' => '才干涉',
-'才干预' => '才干預',
-'才干' => '才幹',
-'扎好底子' => '扎好底子',
-'扎好根' => '扎好根',
-'扑作教刑' => '扑作教刑',
-'扑打' => '扑打',
-'扑挞' => '扑撻',
-'打干哕' => '打乾噦',
-'打出吊入' => '打出弔入',
-'打卡钟' => '打卡鐘',
-'打吨' => '打吨',
-'打干' => '打幹',
-'打拼' => '打拚',
-'打断发' => '打斷發',
-'打卤' => '打滷',
-'打谷' => '打穀',
-'打钟' => '打鐘',
-'打风后' => '打風後',
-'打斗' => '打鬥',
-'托管国' => '托管國',
-'扛大梁' => '扛大樑',
-'扯面' => '扯麵',
-'扶余' => '扶餘',
-'批准的' => '批准的',
-'批准确定' => '批准確定',
-'批复' => '批覆',
-'批注' => '批註',
-'批斗' => '批鬥',
-'抑制' => '抑制',
-'抑郁' => '抑鬱',
-'抓奸' => '抓姦',
-'抓斗' => '抓鬥',
-'抗御' => '抗禦',
-'折向往' => '折向往',
-'折子戏' => '折子戲',
-'折子戲' => '折子戲',
-'折戟沈河' => '折戟沈河',
-'折冲' => '折衝',
-'披榛采兰' => '披榛採蘭',
-'披头散发' => '披頭散髮',
-'披发' => '披髮',
-'抱朴而长吟兮' => '抱朴而長吟兮',
-'抱素怀朴' => '抱素懷樸',
-'抵御' => '抵禦',
-'抹干' => '抹乾',
-'抽公签' => '抽公籤',
-'抽签' => '抽籤',
-'抿发' => '抿髮',
-'拂钟无声' => '拂鐘無聲',
-'拆伙' => '拆夥',
-'拈须' => '拈鬚',
-'拉克施尔德钟' => '拉克施爾德鐘',
-'拉纤' => '拉縴',
-'拉面上' => '拉面上',
-'拉面具' => '拉面具',
-'拉面前' => '拉面前',
-'拉面巾' => '拉面巾',
-'拉面无' => '拉面無',
-'拉面皮' => '拉面皮',
-'拉面罩' => '拉面罩',
-'拉面色' => '拉面色',
-'拉面部' => '拉面部',
-'拉面' => '拉麵',
-'拒人于' => '拒人於',
-'拒于' => '拒於',
-'拓朴' => '拓樸',
-'拔发' => '拔髮',
-'拔须' => '拔鬚',
-'拗别' => '拗彆',
-'拘于' => '拘於',
-'拙于' => '拙於',
-'拙朴' => '拙樸',
-'拼却' => '拚卻',
-'拼命' => '拚命',
-'拼舍' => '拚捨',
-'拼死' => '拚死',
-'拼生尽死' => '拚生盡死',
-'拼绝' => '拚絕',
-'拼老命' => '拚老命',
-'拼斗' => '拚鬥',
-'拜托' => '拜託',
-'括发' => '括髮',
-'拭干' => '拭乾',
-'拮据' => '拮据',
-'拳局' => '拳跼',
-'拼死拼活' => '拼死拼活',
-'拾沈' => '拾瀋',
-'拿下表' => '拿下錶',
-'拿下钟' => '拿下鐘',
-'拿准' => '拿準',
-'拿破仑' => '拿破崙',
-'挂图' => '挂圖',
-'挂帅' => '挂帥',
-'挂彩' => '挂彩',
-'挂念' => '挂念',
-'挂号' => '挂號',
-'挂车' => '挂車',
-'挌斗' => '挌鬥',
-'挑大梁' => '挑大樑',
-'挑斗' => '挑鬥',
-'振荡' => '振蕩',
-'捉奸徒' => '捉奸徒',
-'捉奸细' => '捉奸細',
-'捉奸贼' => '捉奸賊',
-'捉奸党' => '捉奸黨',
-'捉奸' => '捉姦',
-'捉发' => '捉髮',
-'捍御' => '捍禦',
-'捏面人' => '捏麵人',
-'舍不得' => '捨不得',
-'舍入' => '捨入',
-'舍出' => '捨出',
-'舍去' => '捨去',
-'舍命' => '捨命',
-'舍堕' => '捨墮',
-'舍安就危' => '捨安就危',
-'舍实' => '捨實',
-'舍己从人' => '捨己從人',
-'舍己救人' => '捨己救人',
-'舍己为人' => '捨己為人',
-'舍己为公' => '捨己為公',
-'舍己为国' => '捨己為國',
-'舍得' => '捨得',
-'舍我其谁' => '捨我其誰',
-'舍本逐末' => '捨本逐末',
-'舍弃' => '捨棄',
-'舍死忘生' => '捨死忘生',
-'舍生' => '捨生',
-'舍短取长' => '捨短取長',
-'舍身' => '捨身',
-'舍车保帅' => '捨車保帥',
-'舍近求远' => '捨近求遠',
-'卷住' => '捲住',
-'卷来' => '捲來',
-'卷儿' => '捲兒',
-'卷入' => '捲入',
-'卷动' => '捲動',
-'卷去' => '捲去',
-'卷图' => '捲圖',
-'卷土重来' => '捲土重來',
-'卷地' => '捲地',
-'卷尺' => '捲尺',
-'卷尾猴' => '捲尾猴',
-'卷心菜' => '捲心菜',
-'卷成' => '捲成',
-'卷曲' => '捲曲',
-'卷款' => '捲款',
-'卷毛' => '捲毛',
-'卷烟盒' => '捲煙盒',
-'卷积云' => '捲積雲',
-'卷筒' => '捲筒',
-'卷帘' => '捲簾',
-'卷纸' => '捲紙',
-'卷缩' => '捲縮',
-'卷舌' => '捲舌',
-'卷烟' => '捲菸',
-'卷叶蛾' => '捲葉蛾',
-'卷袖' => '捲袖',
-'卷走' => '捲走',
-'卷起' => '捲起',
-'卷轴' => '捲軸',
-'卷逃' => '捲逃',
-'卷铺盖' => '捲鋪蓋',
-'卷云' => '捲雲',
-'卷风' => '捲風',
-'卷发' => '捲髮',
-'捵面' => '捵麵',
-'捶炼' => '捶鍊',
-'扫荡' => '掃蕩',
-'授勋' => '授勳',
-'掌柜' => '掌柜',
-'排骨面' => '排骨麵',
-'挂名' => '掛名',
-'挂帘' => '掛帘',
-'挂历' => '掛曆',
-'挂钩' => '掛鈎',
-'挂钟' => '掛鐘',
-'挂面' => '掛麵',
-'采下' => '採下',
-'采伐' => '採伐',
-'采住' => '採住',
-'采信' => '採信',
-'采光' => '採光',
-'采到' => '採到',
-'采制' => '採制',
-'采区' => '採區',
-'采去' => '採去',
-'采取' => '採取',
-'采回' => '採回',
-'采在' => '採在',
-'采好' => '採好',
-'采得' => '採得',
-'采拾' => '採拾',
-'采挖' => '採挖',
-'采掘' => '採掘',
-'采摘' => '採摘',
-'采摭' => '採摭',
-'采择' => '採擇',
-'采撷' => '採擷',
-'采收' => '採收',
-'采料' => '採料',
-'采暖' => '採暖',
-'采桑' => '採桑',
-'采样' => '採樣',
-'采樵人' => '採樵人',
-'采树种' => '採樹種',
-'采气' => '採氣',
-'采油' => '採油',
-'采为' => '採為',
-'采煤' => '採煤',
-'采获' => '採獲',
-'采猎' => '採獵',
-'采珠' => '採珠',
-'采生折割' => '採生折割',
-'采用' => '採用',
-'采石' => '採石',
-'采砂场' => '採砂場',
-'采矿' => '採礦',
-'采种' => '採種',
-'采空区' => '採空區',
-'采空采穗' => '採空採穗',
-'采納' => '採納',
-'采纳' => '採納',
-'采给' => '採給',
-'采花' => '採花',
-'采芹人' => '採芹人',
-'采茶' => '採茶',
-'采菊' => '採菊',
-'采莲' => '採蓮',
-'采薇' => '採薇',
-'采薪' => '採薪',
-'采药' => '採藥',
-'采血' => '採血',
-'采行' => '採行',
-'采补' => '採補',
-'采访' => '採訪',
-'采证' => '採證',
-'采买' => '採買',
-'采购' => '採購',
-'采办' => '採辦',
-'采运' => '採運',
-'采过' => '採過',
-'采选' => '採選',
-'采金' => '採金',
-'采录' => '採錄',
-'采铁' => '採鐵',
-'采集' => '採集',
-'采风' => '採風',
-'采风问俗' => '採風問俗',
-'采食' => '採食',
-'采盐' => '採鹽',
-'掣签' => '掣籤',
-'控制' => '控制',
-'推情准理' => '推情準理',
-'推托之词' => '推托之詞',
-'推托' => '推託',
-'提子干' => '提子乾',
-'提心吊胆' => '提心弔膽',
-'提摩太后书' => '提摩太後書',
-'提高后' => '提高後',
-'插于' => '插於',
-'换签' => '換籤',
-'换只' => '換隻',
-'换发' => '換髮',
-'握发' => '握髮',
-'揩干' => '揩乾',
-'揪采' => '揪採',
-'揪发' => '揪髮',
-'揪须' => '揪鬚',
-'揭丑' => '揭醜',
-'挥手表' => '揮手表',
-'揮手表' => '揮手表',
-'搋面' => '搋麵',
-'损于' => '損於',
-'搏斗' => '搏鬥',
-'捣鬼吊白' => '搗鬼弔白',
-'扼肮' => '搤肮',
-'扼肮拊背' => '搤肮拊背',
-'搬斗' => '搬鬥',
-'搭干铺' => '搭乾鋪',
-'搭伙' => '搭夥',
-'摧坚获丑' => '摧堅獲醜',
-'摭采' => '摭採',
-'摸棱' => '摸稜',
-'摸钟' => '摸鐘',
-'折奏' => '摺奏',
-'折子' => '摺子',
-'折尺' => '摺尺',
-'折扇' => '摺扇',
-'折梯' => '摺梯',
-'折椅' => '摺椅',
-'折台' => '摺檯',
-'折叠' => '摺疊',
-'折痕' => '摺痕',
-'折篷' => '摺篷',
-'折纸' => '摺紙',
-'折裙' => '摺裙',
-'撇吊' => '撇弔',
-'捞干' => '撈乾',
-'捞面' => '撈麵',
-'撚须' => '撚鬚',
-'撞钟' => '撞鐘',
-'撞阵冲军' => '撞陣衝軍',
-'撤并' => '撤併',
-'拨谷' => '撥穀',
-'撩斗' => '撩鬥',
-'播于' => '播於',
-'扑冬' => '撲鼕',
-'扑咚' => '撲鼕',
-'扑咚咚' => '撲鼕鼕',
-'擀面' => '擀麵',
-'击扑' => '擊扑',
-'击钟' => '擊鐘',
-'操作钟' => '操作鐘',
-'担仔面' => '擔仔麵',
-'担担面' => '擔擔麵',
-'据云' => '據云',
-'擢发' => '擢髮',
-'擦干' => '擦乾',
-'拧干' => '擰乾',
-'摆钟' => '擺鐘',
-'摄制' => '攝製',
-'支干' => '支幹',
-'支配欲' => '支配慾',
-'收获' => '收穫',
-'改制成' => '改制成',
-'改征' => '改徵',
-'改采' => '改採',
-'放懞挣' => '放懞掙',
-'放荡' => '放蕩',
-'放松' => '放鬆',
-'政斗' => '政鬥',
-'故云' => '故云',
-'敏于' => '敏於',
-'败于' => '敗於',
-'教学钟' => '教學鐘',
-'教于' => '教於',
-'教范' => '教範',
-'敢干' => '敢幹',
-'敢情欲' => '敢情欲',
-'敢斗了胆' => '敢斗了膽',
-'散伙' => '散夥',
-'散于' => '散於',
-'散荡' => '散蕩',
-'敦朴' => '敦樸',
-'敬挽' => '敬輓',
-'敲扑' => '敲扑',
-'敲钟' => '敲鐘',
-'整只' => '整隻',
-'整风后' => '整風後',
-'整发用品' => '整髮用品',
-'整出剧' => '整齣劇',
-'整出戏' => '整齣戲',
-'整出电影' => '整齣電影',
-'敌忾同仇' => '敵愾同讎',
-'数只包括' => '數只包括',
-'数只可' => '數只可',
-'数只含' => '數只含',
-'数只在' => '數只在',
-'数只应' => '數只應',
-'数只是' => '數只是',
-'数只会' => '數只會',
-'数只有' => '數只有',
-'数只比' => '數只比',
-'数只能' => '數只能',
-'数只限' => '數只限',
-'数只需' => '數只需',
-'数只须' => '數只須',
-'数天后' => '數天後',
-'数字钟' => '數字鐘',
-'数字钟表' => '數字鐘錶',
-'数罪并罚' => '數罪併罰',
-'数与虏确' => '數與虜确',
-'数只' => '數隻',
-'文丑' => '文丑',
-'文学志' => '文學誌',
-'文征明' => '文徵明',
-'文思泉涌' => '文思泉湧',
-'文杰' => '文杰',
-'文采郁郁' => '文采郁郁',
-'斗牛星' => '斗牛星',
-'斫雕为朴' => '斫雕為樸',
-'新井里美' => '新井里美',
-'新干县' => '新幹縣',
-'新历' => '新曆',
-'新历史' => '新歷史',
-'新扎' => '新紮',
-'斲雕为朴' => '斲雕為樸',
-'断发' => '斷髮',
-'断发文身' => '斷髮文身',
-'方便面' => '方便麵',
-'方向往' => '方向往',
-'方志恒' => '方志恒',
-'方法里' => '方法裡',
-'方志' => '方誌',
-'于后' => '於後',
-'于征' => '於徵',
-'于海上' => '於海上',
-'于海边' => '於海邊',
-'于震中' => '於震中',
-'于震前' => '於震前',
-'于震后' => '於震後',
-'施舍' => '施捨',
-'施于' => '施於',
-'施舍之道' => '施舍之道',
-'旁征博引' => '旁徵博引',
-'旁注' => '旁註',
-'旅游' => '旅遊',
-'旋回' => '旋迴',
-'族里' => '族裡',
-'日心历表' => '日心曆表',
-'日历' => '日曆',
-'日历史' => '日歷史',
-'日里' => '日裡',
-'日志' => '日誌',
-'早于' => '早於',
-'旱干' => '旱乾',
-'升州' => '昇州',
-'升平' => '昇平',
-'升阳' => '昇陽',
-'昊天不吊' => '昊天不弔',
-'明征' => '明徵',
-'明目张胆' => '明目張胆',
-'明窗净几' => '明窗淨几',
-'明范' => '明範',
-'明鉴' => '明鑑',
-'易于' => '易於',
-'昔人有云' => '昔人有云',
-'星历' => '星曆',
-'星期后' => '星期後',
-'星历史' => '星歷史',
-'春游' => '春遊',
-'春香斗学' => '春香鬥學',
-'昭惠后' => '昭惠后',
-'是发小' => '是髮小',
-'时钟' => '時鐘',
-'时间不准' => '時間不準',
-'晃荡' => '晃蕩',
-'晚于' => '晚於',
-'晚钟' => '晚鐘',
-'晞发' => '晞髮',
-'晨钟' => '晨鐘',
-'普咚咚' => '普鼕鼕',
-'晾干' => '晾乾',
-'暗地里' => '暗地裡',
-'暗沟里' => '暗溝裡',
-'暗里' => '暗裡',
-'暗斗' => '暗鬥',
-'畅游' => '暢遊',
-'昵称' => '暱稱',
-'暴敛横征' => '暴斂橫徵',
-'历元' => '曆元',
-'历命' => '曆命',
-'历始' => '曆始',
-'历室' => '曆室',
-'历尾' => '曆尾',
-'历局' => '曆局',
-'历数书' => '曆數書',
-'历日' => '曆日',
-'历书' => '曆書',
-'历本' => '曆本',
-'历法' => '曆法',
-'历狱' => '曆獄',
-'历纪' => '曆紀',
-'历象' => '曆象',
-'晒干' => '曬乾',
-'晒谷' => '曬穀',
-'曰云' => '曰云',
-'更仆难数' => '更僕難數',
-'更签' => '更籤',
-'更钟' => '更鐘',
-'书签' => '書籤',
-'书面' => '書面',
-'曹子里' => '曹子里',
-'曼谷' => '曼谷',
-'曾朴' => '曾樸',
-'最多' => '最多',
-'最多只' => '最多只',
-'会干扰' => '會干擾',
-'會干擾' => '會干擾',
-'会干' => '會幹',
-'会吊' => '會弔',
-'会里' => '會裡',
-'月历' => '月曆',
-'月历史' => '月歷史',
-'月球历表' => '月球曆表',
-'月里来' => '月裡來',
-'月面' => '月面',
-'有事之无范' => '有事之無範',
-'有仆' => '有僕',
-'有只不' => '有只不',
-'有只允' => '有只允',
-'有只容' => '有只容',
-'有只採' => '有只採',
-'有只采' => '有只採',
-'有只是' => '有只是',
-'有只用' => '有只用',
-'有回复' => '有回覆',
-'有够赞' => '有夠讚',
-'有征伐' => '有征伐',
-'有征战' => '有征戰',
-'有征戰' => '有征戰',
-'有征服' => '有征服',
-'有征討' => '有征討',
-'有征讨' => '有征討',
-'有征' => '有徵',
-'有恒街' => '有恒街',
-'有栖川' => '有栖川',
-'有准' => '有準',
-'有棱有角' => '有稜有角',
-'有只' => '有隻',
-'有余' => '有餘',
-'有发头陀寺' => '有髮頭陀寺',
-'服于' => '服於',
-'望了望' => '望了望',
-'望后石' => '望后石',
-'朝乾夕惕' => '朝乾夕惕',
-'朝钟' => '朝鐘',
-'朝鲜于' => '朝鮮於',
-'朦胧' => '朦朧',
-'蒙胧' => '朦朧',
-'木偶戏扎' => '木偶戲紮',
-'木材干馏' => '木材乾餾',
-'木梁' => '木樑',
-'木签' => '木籤',
-'木制' => '木製',
-'木钟' => '木鐘',
-'未干' => '未乾',
-'未干涉' => '未干涉',
-'未干預' => '未干預',
-'未干预' => '未干預',
-'本庄' => '本庄',
-'本征' => '本徵',
-'本出戏' => '本齣戲',
-'术赤' => '朮赤',
-'朱庆余' => '朱慶餘',
-'朱理安历' => '朱理安曆',
-'朱理安历史' => '朱理安歷史',
-'朴子里' => '朴子里',
-'李志喜' => '李志喜',
-'李适' => '李适',
-'李连杰' => '李連杰',
-'李連杰' => '李連杰',
-'材干' => '材幹',
-'村落发' => '村落發',
-'村里' => '村裡',
-'村里長' => '村里長',
-'村里长' => '村里長',
-'杜老志道' => '杜老誌道',
-'杞宋无征' => '杞宋無徵',
-'束发' => '束髮',
-'杠人' => '杠人',
-'杠梁' => '杠梁',
-'杠毂' => '杠轂',
-'杠轂' => '杠轂',
-'杯干' => '杯乾',
-'杯面' => '杯麵',
-'杰伦' => '杰倫',
-'杰倫' => '杰倫',
-'杰威尔' => '杰威爾',
-'杰威爾' => '杰威爾',
-'东周钟' => '東周鐘',
-'东岳' => '東嶽',
-'東湖里' => '東湖里',
-'东冲西突' => '東衝西突',
-'东游' => '東遊',
-'松口镇' => '松口鎮',
-'松山庄' => '松山庄',
-'松溪县' => '松谿縣',
-'板荡' => '板蕩',
-'林宏岳' => '林宏嶽',
-'林杰樑' => '林杰樑',
-'林郁方' => '林郁方',
-'林钟' => '林鐘',
-'林鹅峰' => '林鵞峰',
-'果干' => '果乾',
-'果子干' => '果子乾',
-'果累累' => '果纍纍',
-'枝干' => '枝幹',
-'枯干' => '枯乾',
-'架钟' => '架鐘',
-'某只' => '某隻',
-'染指于' => '染指於',
-'染殿后' => '染殿后',
-'染发' => '染髮',
-'柜上' => '柜上',
-'柜子' => '柜子',
-'柜柳' => '柜柳',
-'查封后' => '查封後',
-'柱梁' => '柱樑',
-'柳斌杰' => '柳斌杰',
-'柳诒征' => '柳詒徵',
-'栖栖皇皇' => '栖栖皇皇',
-'栗栖溪' => '栗栖溪',
-'校准' => '校準',
-'校舍' => '校舍',
-'核准的' => '核准的',
-'格于' => '格於',
-'格范' => '格範',
-'格里历' => '格里曆',
-'格里高利历' => '格里高利曆',
-'格斗' => '格鬥',
-'桂圆干' => '桂圓乾',
-'框里' => '框裡',
-'桌几' => '桌几',
-'桌历' => '桌曆',
-'桌历史' => '桌歷史',
-'桌游' => '桌遊',
-'桑干' => '桑乾',
-'杆枪' => '桿槍',
-'杆秤' => '桿秤',
-'杆菌' => '桿菌',
-'梁上君子' => '梁上君子',
-'梁启超' => '梁啓超',
-'条干' => '條幹',
-'梨干' => '梨乾',
-'梯冲' => '梯衝',
-'械系' => '械繫',
-'械斗' => '械鬥',
-'弃舍' => '棄捨',
-'棉里' => '棉裡',
-'棉制' => '棉製',
-'棒子面' => '棒子麵',
-'栋梁' => '棟樑',
-'棫朴' => '棫樸',
-'森林里' => '森林裡',
-'棺材里' => '棺材裡',
-'植发' => '植髮',
-'椒面' => '椒麵',
-'椰枣干' => '椰棗乾',
-'杨雅筑' => '楊雅筑',
-'楊雅筑' => '楊雅筑',
-'桢干' => '楨幹',
-'业余' => '業餘',
-'榨干' => '榨乾',
-'枪杆' => '槍桿',
-'杠杆' => '槓桿',
-'乐器钟' => '樂器鐘',
-'乐游原' => '樂遊原',
-'樊于期' => '樊於期',
-'梁上' => '樑上',
-'梁柱' => '樑柱',
-'樗里子' => '樗里子',
-'标标致致' => '標標致致',
-'标准' => '標準',
-'标签' => '標籤',
-'标致' => '標緻',
-'标注' => '標註',
-'标志' => '標誌',
-'模棱' => '模稜',
-'模范' => '模範',
-'模范七棒' => '模范七棒',
-'模范三军' => '模范三軍',
-'模范三軍' => '模范三軍',
-'模范棒棒堂' => '模范棒棒堂',
-'模制' => '模製',
-'样范' => '樣範',
-'樵采' => '樵採',
-'朴修斯' => '樸修斯',
-'朴厚' => '樸厚',
-'朴学' => '樸學',
-'朴实' => '樸實',
-'朴念仁' => '樸念仁',
-'朴拙' => '樸拙',
-'朴樕' => '樸樕',
-'朴父' => '樸父',
-'朴直' => '樸直',
-'朴素' => '樸素',
-'朴讷' => '樸訥',
-'朴质' => '樸質',
-'朴鄙' => '樸鄙',
-'朴重' => '樸重',
-'朴野' => '樸野',
-'朴钝' => '樸鈍',
-'朴陋' => '樸陋',
-'朴马' => '樸馬',
-'朴鲁' => '樸魯',
-'树干' => '樹幹',
-'树林里' => '樹林裡',
-'树梁' => '樹樑',
-'桥梁' => '橋樑',
-'机械系' => '機械系',
-'機械系' => '機械系',
-'机械表' => '機械錶',
-'机械钟' => '機械鐘',
-'机械钟表' => '機械鐘錶',
-'横峰县' => '橫峯縣',
-'横征暴敛' => '橫徵暴斂',
-'横梁' => '橫樑',
-'横冲' => '橫衝',
-'台布' => '檯布',
-'台历' => '檯曆',
-'台灯' => '檯燈',
-'台球' => '檯球',
-'台面上' => '檯面上',
-'台面化' => '檯面化',
-'柜台' => '櫃檯',
-'柜里' => '櫃裡',
-'栉发工' => '櫛髮工',
-'欲海难填' => '欲海難填',
-'欺蒙' => '欺矇',
-'歌后' => '歌后',
-'歌钟' => '歌鐘',
-'欧游' => '歐遊',
-'止于' => '止於',
-'正官庄' => '正官庄',
-'正杰' => '正杰',
-'武丑' => '武丑',
-'武后' => '武后',
-'武斗' => '武鬥',
-'岁聿云暮' => '歲聿云暮',
-'历史里' => '歷史裡',
-'归并' => '歸併',
-'归于' => '歸於',
-'归余' => '歸餘',
-'歹斗' => '歹鬥',
-'死于' => '死於',
-'死里求生' => '死裡求生',
-'死里逃生' => '死裡逃生',
-'殖谷' => '殖穀',
-'残肴' => '殘肴',
-'残余' => '殘餘',
-'僵尸' => '殭屍',
-'殷师牛斗' => '殷師牛鬥',
-'殷鉴' => '殷鑑',
-'壳里' => '殼裡',
-'殿钟自鸣' => '殿鐘自鳴',
-'毁于' => '毀於',
-'毁钟为铎' => '毀鐘為鐸',
-'殴斗' => '毆鬥',
-'母后' => '母后',
-'母范' => '母範',
-'母丑' => '母醜',
-'每每只' => '每每只',
-'每只' => '每隻',
-'毗婆尸佛' => '毗婆尸佛',
-'毛坏' => '毛坏',
-'毛姜' => '毛薑',
-'毛发' => '毛髮',
-'毫厘' => '毫釐',
-'毫发' => '毫髮',
-'气冲斗牛' => '氣沖斗牛',
-'气郁' => '氣鬱',
-'氤郁' => '氤鬱',
-'水来汤里去' => '水來湯裡去',
-'水准' => '水準',
-'水无怜奈' => '水無怜奈',
-'水表示' => '水表示',
-'水表面' => '水表面',
-'水里' => '水裡',
-'水里商工' => '水里商工',
-'水里溪' => '水里溪',
-'水里濁水溪' => '水里濁水溪',
-'水里鄉' => '水里鄉',
-'水里高級商工' => '水里高級商工',
-'水里鳳林' => '水里鳳林',
-'水表' => '水錶',
-'永历' => '永曆',
-'永历史' => '永歷史',
-'永志不忘' => '永誌不忘',
-'求知欲' => '求知慾',
-'求签' => '求籤',
-'池里' => '池裡',
-'污蔑' => '污衊',
-'汤卤' => '汤滷',
-'汲于' => '汲於',
-'决斗' => '決鬥',
-'沈淀' => '沈澱',
-'沈郁' => '沈鬱',
-'沉淀' => '沉澱',
-'沉郁' => '沉鬱',
-'没干没净' => '沒乾沒淨',
-'没事干' => '沒事幹',
-'没干' => '沒幹',
-'没折至' => '沒摺至',
-'没样范' => '沒樣範',
-'没准' => '沒準',
-'冲冠发怒' => '沖冠髮怒',
-'冲天' => '沖天',
-'沙琅' => '沙瑯',
-'沙羡' => '沙羡',
-'沙里淘金' => '沙裡淘金',
-'河岳' => '河嶽',
-'河里' => '河裡',
-'油泼面' => '油潑麵',
-'油斗' => '油鬥',
-'油面' => '油麵',
-'治愈' => '治癒',
-'沿溯' => '沿泝',
-'法自制' => '法自制',
-'法里,' => '法裡,',
-'泛游' => '泛遊',
-'泡制' => '泡製',
-'泡面' => '泡麵',
-'波棱菜' => '波稜菜',
-'波发藻' => '波髮藻',
-'泥于' => '泥於',
-'注云' => '注云',
-'注释' => '注釋',
-'泰山梁木' => '泰山梁木',
-'泱郁' => '泱鬱',
-'泳气钟' => '泳氣鐘',
-'洄游' => '洄遊',
-'洋河大曲' => '洋河大麯',
-'洒家' => '洒家',
-'洒扫' => '洒掃',
-'洒水' => '洒水',
-'洒洒' => '洒洒',
-'洒淅' => '洒淅',
-'洒涤' => '洒滌',
-'洒濯' => '洒濯',
-'洒然' => '洒然',
-'洒脱' => '洒脫',
-'洗炼' => '洗鍊',
-'洗练' => '洗鍊',
-'洗发' => '洗髮',
-'洛钟东应' => '洛鐘東應',
-'洞里' => '洞裡',
-'洞里萨' => '洞里薩',
-'洞里薩' => '洞里薩',
-'泄欲' => '洩慾',
-'洪范' => '洪範',
-'洪谷子' => '洪谷子',
-'洪适' => '洪适',
-'洪钟' => '洪鐘',
-'汹涌' => '洶湧',
-'流征' => '流徵',
-'流于' => '流於',
-'流荡' => '流蕩',
-'流风余俗' => '流風餘俗',
-'流风余韵' => '流風餘韻',
-'浩浩荡荡' => '浩浩蕩蕩',
-'浩荡' => '浩蕩',
-'浪荡' => '浪蕩',
-'浪游' => '浪遊',
-'浮于' => '浮於',
-'浮荡' => '浮蕩',
-'浮夸' => '浮誇',
-'浮松' => '浮鬆',
-'海干' => '海乾',
-'海淀山后' => '海淀山後',
-'海淀山後' => '海淀山後',
-'浸卤' => '浸滷',
-'涂善妮' => '涂善妮',
-'涂坤' => '涂坤',
-'涂壮勋' => '涂壯勳',
-'涂壯勳' => '涂壯勳',
-'涂天相' => '涂天相',
-'涂姓' => '涂姓',
-'涂序瑄' => '涂序瑄',
-'涂敏恆' => '涂敏恆',
-'涂敏恒' => '涂敏恆',
-'涂泽民' => '涂澤民',
-'涂澤民' => '涂澤民',
-'涂绍煃' => '涂紹煃',
-'涂羽卿' => '涂羽卿',
-'涂謹申' => '涂謹申',
-'涂谨申' => '涂謹申',
-'涂逢年' => '涂逢年',
-'涂醒哲' => '涂醒哲',
-'涂長望' => '涂長望',
-'涂长望' => '涂長望',
-'涂鴻欽' => '涂鴻欽',
-'涂鸿钦' => '涂鴻欽',
-'涌水塘' => '涌水塘',
-'涳蒙' => '涳濛',
-'涸干' => '涸乾',
-'凉席' => '涼蓆',
-'凉面' => '涼麵',
-'淋余土' => '淋餘土',
-'淑范' => '淑範',
-'泪干' => '淚乾',
-'泪如泉涌' => '淚如泉湧',
-'淡于' => '淡於',
-'淡蒙蒙' => '淡濛濛',
-'净余' => '淨餘',
-'净发' => '淨髮',
-'淫欲' => '淫慾',
-'淫荡' => '淫蕩',
-'淬炼' => '淬鍊',
-'深山何处钟' => '深山何處鐘',
-'深山里' => '深山裡',
-'淳于' => '淳于',
-'淳朴' => '淳樸',
-'渊淳岳峙' => '淵淳嶽峙',
-'渊里' => '淵裡',
-'浅淀' => '淺澱',
-'清心寡欲' => '清心寡欲',
-'渠冲' => '渠衝',
-'测不准' => '測不準',
-'港制' => '港製',
-'游离' => '游離',
-'浑朴' => '渾樸',
-'浑个' => '渾箇',
-'湖里' => '湖裡',
-'湘累' => '湘纍',
-'涌上' => '湧上',
-'涌来' => '湧來',
-'涌入' => '湧入',
-'涌出' => '湧出',
-'涌向' => '湧向',
-'涌水' => '湧水',
-'涌泉' => '湧泉',
-'涌现' => '湧現',
-'涌起' => '湧起',
-'涌进' => '湧進',
-'湮郁' => '湮鬱',
-'汤下面' => '湯下麵',
-'汤团' => '湯糰',
-'汤面' => '湯麵',
-'源于' => '源於',
-'准不准' => '準不準',
-'准例' => '準例',
-'准保' => '準保',
-'准备' => '準備',
-'准儿' => '準兒',
-'准分子' => '準分子',
-'准则' => '準則',
-'准噶尔' => '準噶爾',
-'准定' => '準定',
-'准平原' => '準平原',
-'准度' => '準度',
-'准式' => '準式',
-'准拿督' => '準拿督',
-'准据' => '準據',
-'准拟' => '準擬',
-'准新娘' => '準新娘',
-'准新郎' => '準新郎',
-'准星' => '準星',
-'准是' => '準是',
-'准时' => '準時',
-'准会' => '準會',
-'准决赛' => '準決賽',
-'准的' => '準的',
-'准直' => '準直',
-'准确' => '準確',
-'准线' => '準線',
-'准绳' => '準繩',
-'准话' => '準話',
-'准谱' => '準譜',
-'准货币' => '準貨幣',
-'准军事' => '準軍事',
-'准头' => '準頭',
-'准点' => '準點',
-'沟大曲' => '溝大麯',
-'沟谷' => '溝谷',
-'溟蒙' => '溟濛',
-'溢于' => '溢於',
-'温洛克期' => '溫洛克期',
-'溲面' => '溲麵',
-'溺于' => '溺於',
-'滃郁' => '滃鬱',
-'滑借' => '滑藉',
-'汇丰' => '滙豐',
-'渗漓' => '滲灕',
-'卤了' => '滷了',
-'卤五花' => '滷五花',
-'卤味' => '滷味',
-'卤好' => '滷好',
-'卤子' => '滷子',
-'卤料' => '滷料',
-'卤水' => '滷水',
-'卤汁' => '滷汁',
-'卤湖' => '滷湖',
-'卤煮' => '滷煮',
-'卤牛' => '滷牛',
-'卤的' => '滷的',
-'卤肉' => '滷肉',
-'卤菜' => '滷菜',
-'卤蛋' => '滷蛋',
-'卤虾' => '滷蝦',
-'卤制' => '滷製',
-'卤豆' => '滷豆',
-'卤鸡' => '滷雞',
-'卤鸭' => '滷鴨',
-'卤鹅' => '滷鵝',
-'卤面' => '滷麵',
-'满拼自尽' => '滿拚自盡',
-'满满当当' => '滿滿當當',
-'满头洋发' => '滿頭洋髮',
-'漂荡' => '漂蕩',
-'漕挽' => '漕輓',
-'沤郁' => '漚鬱',
-'漠里' => '漠裡',
-'汉弥登钟' => '漢彌登鐘',
-'漫卷' => '漫捲',
-'漫游' => '漫遊',
-'潜意识里' => '潛意識裡',
-'潜水表' => '潛水錶',
-'潜水钟' => '潛水鐘',
-'潜水钟表' => '潛水鐘錶',
-'潭里' => '潭裡',
-'潮涌' => '潮湧',
-'溃于' => '潰於',
-'涩谷区' => '澀谷區',
-'澄江县' => '澂江縣',
-'澄澹精致' => '澄澹精致',
-'澒蒙' => '澒濛',
-'淀乃不耕之地' => '澱乃不耕之地',
-'淀北片' => '澱北片',
-'淀山' => '澱山',
-'淀淀' => '澱澱',
-'淀积' => '澱積',
-'淀粉' => '澱粉',
-'淀解物' => '澱解物',
-'淀谓之滓' => '澱謂之滓',
-'澹台' => '澹臺',
-'澹荡' => '澹蕩',
-'激斗' => '激鬥',
-'浓发' => '濃髮',
-'蒙汜' => '濛汜',
-'蒙蒙细雨' => '濛濛細雨',
-'蒙雾' => '濛霧',
-'蒙鸿' => '濛鴻',
-'浚州' => '濬州',
-'浚县' => '濬縣',
-'滨田里佳子' => '濱田里佳子',
-'沈丹客运' => '瀋丹客運',
-'沈丹线' => '瀋丹線',
-'沈丹铁路' => '瀋丹鐵路',
-'沈丹高' => '瀋丹高',
-'沈北' => '瀋北',
-'沈吉' => '瀋吉',
-'沈大线' => '瀋大線',
-'沈大铁路' => '瀋大鐵路',
-'沈大高速' => '瀋大高速',
-'沈山线' => '瀋山線',
-'沈山铁路' => '瀋山鐵路',
-'沈州' => '瀋州',
-'沈抚' => '瀋撫',
-'沈水' => '瀋水',
-'沈河' => '瀋河',
-'沈海铁路' => '瀋海鐵路',
-'沈海高速' => '瀋海高速',
-'沈阳' => '瀋陽',
-'泸州大曲' => '瀘州大麯',
-'沥干' => '瀝乾',
-'潇洒' => '瀟洒',
-'弥山遍野' => '瀰山遍野',
-'弥漫' => '瀰漫',
-'弥弥' => '瀰瀰',
-'漓水' => '灕水',
-'漓江' => '灕江',
-'漓湘' => '灕湘',
-'漓然' => '灕然',
-'滩涂' => '灘涂',
-'滩席' => '灘蓆',
-'火并非' => '火並非',
-'火并' => '火併',
-'火山里' => '火山裡',
-'火拼' => '火拚',
-'火折子' => '火摺子',
-'火签' => '火籤',
-'灰蒙' => '灰濛',
-'灰蒙蒙' => '灰濛濛',
-'炆面' => '炆麵',
-'炒面' => '炒麵',
-'炮制' => '炮製',
-'炸酱面' => '炸醬麵',
-'为准' => '為準',
-'为鉴' => '為鑑',
-'乌兹冲锋枪' => '烏茲衝鋒槍',
-'乌苏里' => '烏蘇里',
-'乌发' => '烏髮',
-'乌龙面' => '烏龍麵',
-'烘干' => '烘乾',
-'烘制' => '烘製',
-'烤干' => '烤乾',
-'烤卤' => '烤滷',
-'烹制' => '烹製',
-'焙干' => '焙乾',
-'无征不信' => '無徵不信',
-'无业游民' => '無業游民',
-'无梁楼盖' => '無樑樓蓋',
-'无余' => '無餘',
-'炼制' => '煉製',
-'煎面' => '煎麵',
-'烟卷' => '煙捲',
-'烟台' => '煙臺',
-'照入签' => '照入籤',
-'照相干片' => '照相乾片',
-'煨干' => '煨乾',
-'煮面' => '煮麵',
-'熊杰' => '熊杰',
-'荧郁' => '熒鬱',
-'燎发' => '燎髮',
-'烧干' => '燒乾',
-'燕几' => '燕几',
-'燕游' => '燕遊',
-'烫一个发' => '燙一個髮',
-'烫一次发' => '燙一次髮',
-'烫个发' => '燙個髮',
-'烫完发' => '燙完髮',
-'烫次发' => '燙次髮',
-'烫发' => '燙髮',
-'烫面' => '燙麵',
-'营干' => '營幹',
-'烩面' => '燴麵',
-'烬余' => '燼餘',
-'爆发指数' => '爆發指數',
-'争奇斗妍' => '爭奇鬥妍',
-'争奇斗异' => '爭奇鬥異',
-'争奇斗艳' => '爭奇鬥豔',
-'争妍斗奇' => '爭妍鬥奇',
-'争妍斗艳' => '爭妍鬥豔',
-'争红斗紫' => '爭紅鬥紫',
-'争斗' => '爭鬥',
-'爰定祥历' => '爰定祥厤',
-'爽荡' => '爽蕩',
-'尔冬陞' => '爾冬陞',
-'墙里' => '牆裡',
-'片里' => '片裡',
-'片言只语' => '片言隻語',
-'版图里' => '版圖裡',
-'牙签' => '牙籤',
-'牛只' => '牛隻',
-'物欲' => '物慾',
-'抵牾' => '牴牾',
-'抵触' => '牴觸',
-'特别致' => '特别致',
-'特制住' => '特制住',
-'特制定' => '特制定',
-'特制止' => '特制止',
-'特制订' => '特制訂',
-'特征' => '特徵',
-'特制' => '特製',
-'牵一发' => '牽一髮',
-'牵系' => '牽繫',
-'荦确' => '犖确',
-'狂并潮' => '狂併潮',
-'狃于' => '狃於',
-'狄志杰' => '狄志杰',
-'狐借虎威' => '狐藉虎威',
-'猛于' => '猛於',
-'猛冲' => '猛衝',
-'猜三划五' => '猜三划五',
-'犹如表' => '猶如錶',
-'犹如钟' => '猶如鐘',
-'犹如钟表' => '猶如鐘錶',
-'狱里' => '獄裡',
-'奖杯' => '獎盃',
-'独裁制' => '獨裁制',
-'独辟蹊径' => '獨闢蹊徑',
-'获匪其丑' => '獲匪其醜',
-'兽欲' => '獸慾',
-'献丑' => '獻醜',
-'玉历' => '玉曆',
-'玉历史' => '玉歷史',
-'玉米面' => '玉米面',
-'王侯后' => '王侯后',
-'王后' => '王后',
-'王添灯' => '王添灯',
-'王田里' => '王田里',
-'王鉴' => '王鑑',
-'王余鱼' => '王餘魚',
-'珍肴异馔' => '珍肴異饌',
-'班里' => '班裡',
-'现于' => '現於',
-'球台' => '球檯',
-'理一个发' => '理一個髮',
-'理一次发' => '理一次髮',
-'理个发' => '理個髮',
-'理完发' => '理完髮',
-'理次发' => '理次髮',
-'理发' => '理髮',
-'琴钟' => '琴鐘',
-'珐琅' => '琺瑯',
-'瑞城里' => '瑞城里',
-'瑞征' => '瑞徵',
-'瑶签' => '瑤籤',
-'环游' => '環遊',
-'瓷制' => '瓷製',
-'甄后' => '甄后',
-'瓮安' => '甕安',
-'甚于' => '甚於',
-'甜水面' => '甜水麵',
-'甜面酱' => '甜麵醬',
-'生力面' => '生力麵',
-'生于' => '生於',
-'生殖洄游' => '生殖洄游',
-'生物钟' => '生物鐘',
-'生发生' => '生發生',
-'生华发' => '生華髮',
-'生姜' => '生薑',
-'生锈' => '生鏽',
-'生发' => '生髮',
-'产卵洄游' => '產卵洄游',
-'苏醒' => '甦醒',
-'用于' => '用於',
-'用法里' => '用法裡',
-'甩发' => '甩髮',
-'田子里' => '田子里',
-'田庄英雄' => '田庄英雄',
-'田谷' => '田穀',
-'田里' => '田裡',
-'由余' => '由余',
-'由于' => '由於',
-'甲胄' => '甲冑',
-'甲后路' => '甲后路',
-'男仆' => '男僕',
-'界里' => '界裡',
-'畏于' => '畏於',
-'留长发' => '留長髮',
-'留发' => '留髮',
-'毕于' => '畢於',
-'毕业于' => '畢業於',
-'毕生发展' => '畢生發展',
-'当准' => '當準',
-'当当丁丁' => '當當丁丁',
-'当当网' => '當當網',
-'叠席' => '疊蓆',
-'疏松' => '疏鬆',
-'疑系' => '疑係',
-'疑凶' => '疑兇',
-'疲于' => '疲於',
-'疲困' => '疲睏',
-'病征' => '病徵',
-'病愈' => '病癒',
-'病余' => '病餘',
-'痊愈' => '痊癒',
-'痒疹' => '痒疹',
-'痒痒' => '痒痒',
-'痳木' => '痳木',
-'痳疹' => '痳疹',
-'痳病' => '痳病',
-'痳痹' => '痳痺',
-'痳疯' => '痳瘋',
-'愈合' => '癒合',
-'症结' => '癥結',
-'癸丑' => '癸丑',
-'发干' => '發乾',
-'发呆' => '發獃',
-'发签' => '發籤',
-'发松' => '發鬆',
-'发面' => '發麵',
-'白干儿' => '白乾兒',
-'白术' => '白朮',
-'白朴' => '白樸',
-'白净面皮' => '白淨面皮',
-'白发其事' => '白發其事',
-'白皮松' => '白皮松',
-'白粉面' => '白粉麵',
-'白里透红' => '白裡透紅',
-'白面包青天' => '白面包青天',
-'白发' => '白髮',
-'白胡' => '白鬍',
-'白霉' => '白黴',
-'百个' => '百個',
-'百只可' => '百只可',
-'百只够' => '百只夠',
-'百只夠' => '百只夠',
-'百只怕' => '百只怕',
-'百只足够' => '百只足夠',
-'百只足夠' => '百只足夠',
-'百周后' => '百周後',
-'百天后' => '百天後',
-'百子里' => '百子里',
-'百年' => '百年',
-'百拙千丑' => '百拙千醜',
-'百科里' => '百科裡',
-'百谷' => '百穀',
-'百扎' => '百紮',
-'百花历' => '百花曆',
-'百花历史' => '百花歷史',
-'百炼' => '百鍊',
-'百只' => '百隻',
-'百余' => '百餘',
-'的回复' => '的回覆',
-'的图里' => '的圖裡',
-'的山里' => '的山裡',
-'的干将' => '的幹將',
-'的个中' => '的箇中',
-'的钟' => '的鐘',
-'的长发' => '的長髮',
-'的发小' => '的髮小',
-'皆可作淀' => '皆可作澱',
-'皆准' => '皆準',
-'皇后' => '皇后',
-'皇历' => '皇曆',
-'皇极历' => '皇極曆',
-'皇极历史' => '皇極歷史',
-'皇历史' => '皇歷史',
-'皓发' => '皓髮',
-'皮制服' => '皮制服',
-'皮托管' => '皮托管',
-'皮肤' => '皮膚',
-'皮里春秋' => '皮裡春秋',
-'皮里阳秋' => '皮裡陽秋',
-'皮制' => '皮製',
-'皮松' => '皮鬆',
-'皱别' => '皺彆',
-'皱折' => '皺摺',
-'盆吊' => '盆弔',
-'盈余' => '盈餘',
-'益于' => '益於',
-'盒里' => '盒裡',
-'盛赞' => '盛讚',
-'盗采' => '盜採',
-'盗钟' => '盜鐘',
-'监制' => '監製',
-'盘里' => '盤裡',
-'盘回' => '盤迴',
-'卢棱伽' => '盧稜伽',
-'荡气回肠' => '盪氣迴腸',
-'盲干' => '盲幹',
-'直于' => '直於',
-'直冲' => '直衝',
-'相并' => '相併',
-'相克制' => '相克制',
-'相克服' => '相克服',
-'相克' => '相剋',
-'相干' => '相干',
-'相于' => '相於',
-'相冲' => '相衝',
-'相斗' => '相鬥',
-'看下表' => '看下錶',
-'看下钟' => '看下鐘',
-'看法里' => '看法裡',
-'看准' => '看準',
-'看表面' => '看表面',
-'看表' => '看錶',
-'看钟' => '看鐘',
-'真凶' => '真兇',
-'真个' => '真箇',
-'真丑' => '真醜',
-'眼干' => '眼乾',
-'眼帘' => '眼帘',
-'眼眶里' => '眼眶裡',
-'眼睛里' => '眼睛裡',
-'眼里' => '眼裡',
-'着眼于' => '着眼於',
-'困乏' => '睏乏',
-'困了' => '睏了',
-'困倦' => '睏倦',
-'困觉' => '睏覺',
-'睡游病' => '睡遊病',
-'瞄准' => '瞄準',
-'瞅下表' => '瞅下錶',
-'瞅下钟' => '瞅下鐘',
-'瞎蒙' => '瞎矇',
-'了望' => '瞭望',
-'了然' => '瞭然',
-'了若指掌' => '瞭若指掌',
-'瞳蒙' => '瞳矇',
-'蒙事' => '矇事',
-'蒙昧无知' => '矇昧無知',
-'蒙松雨' => '矇松雨',
-'蒙混' => '矇混',
-'蒙瞍' => '矇瞍',
-'蒙眬' => '矇矓',
-'蒙聩' => '矇聵',
-'蒙头转' => '矇頭轉',
-'蒙骗' => '矇騙',
-'瞩托' => '矚託',
-'矜夸' => '矜誇',
-'短几' => '短几',
-'短于' => '短於',
-'短发生' => '短發生',
-'短发' => '短髮',
-'矮几' => '矮几',
-'石几' => '石几',
-'石杠' => '石杠',
-'石梁' => '石樑',
-'石英钟' => '石英鐘',
-'石英钟表' => '石英鐘錶',
-'石钟' => '石鐘',
-'研制' => '研製',
-'砰当' => '砰噹',
-'破鉴' => '破鑑',
-'朱砂' => '硃砂',
-'硬干' => '硬幹',
-'确瘠' => '确瘠',
-'碑志' => '碑誌',
-'碗里' => '碗裡',
-'碰钟' => '碰鐘',
-'确系' => '確係',
-'码表' => '碼錶',
-'磁制' => '磁製',
-'磨蝎' => '磨蝎',
-'磨制' => '磨製',
-'磨炼' => '磨鍊',
-'磬钟' => '磬鐘',
-'硗确' => '磽确',
-'砻谷' => '礱穀',
-'示范' => '示範',
-'社里' => '社裡',
-'祝赞' => '祝讚',
-'祝发' => '祝髮',
-'神荼郁垒' => '神荼鬱壘',
-'神游' => '神遊',
-'神雕像' => '神雕像',
-'神雕' => '神鵰',
-'祭吊' => '祭弔',
-'禁欲' => '禁慾',
-'禁欲主义' => '禁欲主義',
-'祸于' => '禍於',
-'御侮' => '禦侮',
-'御寇' => '禦寇',
-'御寒' => '禦寒',
-'御敌' => '禦敵',
-'礼赞' => '禮讚',
-'禾谷' => '禾穀',
-'秃妃之发' => '禿妃之髮',
-'秃发' => '禿髮',
-'秀发动' => '秀發動',
-'秀发展' => '秀發展',
-'秀发布' => '秀發布',
-'秀发村' => '秀發村',
-'秀发现' => '秀發現',
-'秀发生' => '秀發生',
-'秀发表' => '秀發表',
-'秀发起' => '秀發起',
-'秀发' => '秀髮',
-'私下里' => '私下裡',
-'私欲' => '私慾',
-'私斗' => '私鬥',
-'秋游' => '秋遊',
-'种丹妮' => '种丹妮',
-'种师中' => '种師中',
-'种师道' => '种師道',
-'种放' => '种放',
-'科尼亚克期' => '科尼亞克期',
-'科斗' => '科斗',
-'科范' => '科範',
-'秒表明' => '秒表明',
-'秒表示' => '秒表示',
-'秒钟' => '秒鐘',
-'秤杆' => '秤桿',
-'秦沈客运' => '秦瀋客運',
-'移祸于' => '移禍於',
-'稀松' => '稀鬆',
-'棱台' => '稜台',
-'棱子' => '稜子',
-'棱层' => '稜層',
-'棱柱' => '稜柱',
-'棱登' => '稜登',
-'棱棱' => '稜稜',
-'棱等登' => '稜等登',
-'棱线' => '稜線',
-'棱缝' => '稜縫',
-'棱角' => '稜角',
-'棱锥' => '稜錐',
-'棱镜' => '稜鏡',
-'棱体' => '稜體',
-'种谷' => '種穀',
-'称赞' => '稱讚',
-'稻谷' => '稻穀',
-'稽征' => '稽徵',
-'谷人' => '穀人',
-'谷保家商' => '穀保家商',
-'谷仓' => '穀倉',
-'谷圭' => '穀圭',
-'谷场' => '穀場',
-'谷子' => '穀子',
-'谷日' => '穀日',
-'谷旦' => '穀旦',
-'谷梁' => '穀梁',
-'谷壳' => '穀殼',
-'谷物' => '穀物',
-'谷皮' => '穀皮',
-'谷神' => '穀神',
-'谷禄' => '穀祿',
-'谷谷' => '穀穀',
-'谷米' => '穀米',
-'谷粒' => '穀粒',
-'谷舱' => '穀艙',
-'谷苗' => '穀苗',
-'谷草' => '穀草',
-'谷贵饿农' => '穀貴餓農',
-'谷贱伤农' => '穀賤傷農',
-'谷雨' => '穀雨',
-'谷类' => '穀類',
-'谷食' => '穀食',
-'穆棱' => '穆稜',
-'穆罕默德历' => '穆罕默德曆',
-'穆罕默德历史' => '穆罕默德歷史',
-'积淀' => '積澱',
-'积谷' => '積穀',
-'积谷防饥' => '積穀防饑',
-'积郁' => '積鬱',
-'稳健的台风' => '穩健的台風',
-'稳扎' => '穩紮',
-'空蒙' => '空濛',
-'空荡' => '空蕩',
-'空荡荡' => '空蕩蕩',
-'空钟' => '空鐘',
-'空余' => '空餘',
-'窒欲' => '窒慾',
-'窗明几亮' => '窗明几亮',
-'窗明几净' => '窗明几淨',
-'窗帘' => '窗簾',
-'窝里' => '窩裡',
-'窝里斗' => '窩裡鬥',
-'穷于' => '窮於',
-'穷追不舍' => '窮追不捨',
-'穷发' => '窮髮',
-'窃钟掩耳' => '竊鐘掩耳',
-'立于' => '立於',
-'立范' => '立範',
-'童仆' => '童僕',
-'竞斗' => '競鬥',
-'竹几' => '竹几',
-'竹林之游' => '竹林之遊',
-'竹签' => '竹籤',
-'竹席' => '竹蓆',
-'竹制' => '竹製',
-'竹溪县' => '竹谿縣',
-'笑里藏刀' => '笑裡藏刀',
-'第一出现' => '第一出現',
-'第一出現' => '第一出現',
-'第一出線' => '第一出線',
-'第一出线' => '第一出線',
-'第一出' => '第一齣',
-'第七出' => '第七齣',
-'第三出局' => '第三出局',
-'第三出' => '第三齣',
-'第九出' => '第九齣',
-'第二出線' => '第二出線',
-'第二出线' => '第二出線',
-'第二出' => '第二齣',
-'第五出局' => '第五出局',
-'第五出' => '第五齣',
-'第八出' => '第八齣',
-'第六出' => '第六齣',
-'第四出局' => '第四出局',
-'第四出' => '第四齣',
-'笔杆' => '筆桿',
-'笔秃墨干' => '筆禿墨乾',
-'等于' => '等於',
-'笋干' => '筍乾',
-'筑前' => '筑前',
-'筑北' => '筑北',
-'筑州' => '筑州',
-'筑后' => '筑後',
-'筑後' => '筑後',
-'筑波' => '筑波',
-'筑紫' => '筑紫',
-'筑肥' => '筑肥',
-'筑西' => '筑西',
-'筑邦' => '筑邦',
-'筑阳' => '筑陽',
-'筑陽' => '筑陽',
-'答复' => '答覆',
-'筵几' => '筵几',
-'个中原因' => '箇中原因',
-'个中奥' => '箇中奧',
-'个中好手' => '箇中好手',
-'个中强手' => '箇中強手',
-'个中滋味' => '箇中滋味',
-'个中玄机' => '箇中玄機',
-'个中理由' => '箇中理由',
-'个中翘楚' => '箇中翹楚',
-'个中道理' => '箇中道理',
-'个中高手' => '箇中高手',
-'个旧' => '箇舊',
-'算历' => '算曆',
-'算历史' => '算歷史',
-'算准' => '算準',
-'管制' => '管制',
-'管干' => '管幹',
-'箱里' => '箱裡',
-'节欲' => '節慾',
-'节目里' => '節目裡',
-'节余' => '節餘',
-'范亭' => '範亭',
-'范例' => '範例',
-'范围' => '範圍',
-'范字' => '範字',
-'范式' => '範式',
-'范性形变' => '範性形變',
-'范数' => '範數',
-'范文' => '範文',
-'范本' => '範本',
-'范畴' => '範疇',
-'范金' => '範金',
-'简并' => '簡併',
-'简朴' => '簡樸',
-'简短发' => '簡短發',
-'简筑翎' => '簡筑翎',
-'簡筑翎' => '簡筑翎',
-'簸荡' => '簸蕩',
-'签幐' => '籤幐',
-'签押' => '籤押',
-'签条' => '籤條',
-'签诗' => '籤詩',
-'吁天' => '籲天',
-'吁求' => '籲求',
-'吁请' => '籲請',
-'米沈' => '米瀋',
-'米谷' => '米穀',
-'米团' => '米糰',
-'米余' => '米餘',
-'米面' => '米麵',
-'粉签子' => '粉籤子',
-'粗制' => '粗製',
-'精制伏' => '精制伏',
-'精制住' => '精制住',
-'精制服' => '精制服',
-'精干' => '精幹',
-'精于' => '精於',
-'精准' => '精準',
-'精致' => '精緻',
-'精制' => '精製',
-'精炼' => '精鍊',
-'精辟' => '精闢',
-'精松' => '精鬆',
-'糊里糊涂' => '糊裡糊塗',
-'糕干' => '糕乾',
-'粪秽蔑面' => '糞穢衊面',
-'团子' => '糰子',
-'系列里' => '系列裡',
-'系里' => '系裡',
-'纪历' => '紀曆',
-'纪历史' => '紀歷史',
-'红后假说' => '紅后假說',
-'红绳系足' => '紅繩繫足',
-'红钟' => '紅鐘',
-'红发' => '紅髮',
-'纡回' => '紆迴',
-'纡余' => '紆餘',
-'纡郁' => '紆鬱',
-'纳征' => '納徵',
-'纯朴' => '純樸',
-'纸扎' => '紙紮',
-'素数里' => '素數裡',
-'素朴' => '素樸',
-'素发' => '素髮',
-'素面' => '素麵',
-'索馬里' => '索馬里',
-'索马里' => '索馬里',
-'索面' => '索麵',
-'紫姜' => '紫薑',
-'扎上' => '紮上',
-'扎下' => '紮下',
-'扎囮' => '紮囮',
-'扎好' => '紮好',
-'扎实' => '紮實',
-'扎寨' => '紮寨',
-'扎带子' => '紮帶子',
-'扎成' => '紮成',
-'扎根' => '紮根',
-'扎营' => '紮營',
-'扎紧' => '紮緊',
-'扎脚' => '紮腳',
-'扎裹' => '紮裹',
-'扎诈' => '紮詐',
-'扎起' => '紮起',
-'扎铁' => '紮鐵',
-'细不容发' => '細不容髮',
-'细如发' => '細如髮',
-'细致' => '細緻',
-'细炼' => '細鍊',
-'终于' => '終於',
-'组里' => '組裡',
-'结伴同游' => '結伴同遊',
-'结伙' => '結夥',
-'结扎' => '結紮',
-'结余' => '結餘',
-'结发' => '結髮',
-'绝于' => '絕於',
-'绞干' => '絞乾',
-'络腮胡' => '絡腮鬍',
-'给于' => '給於',
-'丝恩发怨' => '絲恩髮怨',
-'丝制' => '絲製',
-'丝发' => '絲髮',
-'绑扎' => '綁紮',
-'绥棱' => '綏稜',
-'捆扎' => '綑紮',
-'經有云' => '經有云',
-'经有云' => '經有云',
-'综合征' => '綜合徵',
-'绿发' => '綠髮',
-'维系' => '維繫',
-'绾发' => '綰髮',
-'纲鉴' => '綱鑑',
-'網球台' => '網球台',
-'网球台' => '網球台',
-'网站里' => '網站裡',
-'网里' => '網裡',
-'网志' => '網誌',
-'网游' => '網遊',
-'紧致' => '緊緻',
-'紧追不舍' => '緊追不捨',
-'绪余' => '緒餘',
-'线图里' => '線圖裡',
-'缉凶' => '緝兇',
-'编制法' => '編制法',
-'编采' => '編採',
-'编码表' => '編碼表',
-'编钟' => '編鐘',
-'编余' => '編餘',
-'编发' => '編髮',
-'缓征' => '緩徵',
-'缓冲' => '緩衝',
-'致密' => '緻密',
-'萦回' => '縈迴',
-'缜致' => '縝緻',
-'县里' => '縣裡',
-'县志' => '縣誌',
-'缝里' => '縫裡',
-'缝制' => '縫製',
-'缩栗' => '縮慄',
-'缩短发' => '縮短發',
-'纵欲' => '縱慾',
-'纤夫' => '縴夫',
-'纤手' => '縴手',
-'纤绳' => '縴繩',
-'总数只' => '總數只',
-'总数里' => '總數裡',
-'总裁制' => '總裁制',
-'繁复' => '繁複',
-'繁钟' => '繁鐘',
-'绷扒吊拷' => '繃扒弔拷',
-'绕梁' => '繞樑',
-'绘制' => '繪製',
-'系上。' => '繫上。',
-'系上了' => '繫上了',
-'系上安全' => '繫上安全',
-'系上红' => '繫上紅',
-'系上丝' => '繫上絲',
-'系上绳' => '繫上繩',
-'系上头' => '繫上頭',
-'系上黑' => '繫上黑',
-'系上,' => '繫上,',
-'系世' => '繫世',
-'系到' => '繫到',
-'系囚' => '繫囚',
-'系心' => '繫心',
-'系念' => '繫念',
-'系怀' => '繫懷',
-'系恋' => '繫戀',
-'系于' => '繫於',
-'系于一发' => '繫於一髮',
-'系着' => '繫着',
-'系结' => '繫結',
-'系紧' => '繫緊',
-'系绳' => '繫繩',
-'系累' => '繫纍',
-'系舟' => '繫舟',
-'系船' => '繫船',
-'系辞' => '繫辭',
-'系鞋带' => '繫鞋帶',
-'系风捕影' => '繫風捕影',
-'累囚' => '纍囚',
-'累堆' => '纍堆',
-'累瓦结绳' => '纍瓦結繩',
-'累绁' => '纍紲',
-'累臣' => '纍臣',
-'缠斗' => '纏鬥',
-'坛子' => '罈子',
-'坛坛罐罐' => '罈罈罐罐',
-'坛騞' => '罈騞',
-'置于' => '置於',
-'置言成范' => '置言成範',
-'罢于' => '罷於',
-'罗马历' => '羅馬曆',
-'罗马历代' => '羅馬歷代',
-'罗马历史' => '羅馬歷史',
-'羁系' => '羈繫',
-'美容美发' => '美容美髮',
-'美于' => '美於',
-'美丑' => '美醜',
-'美发学' => '美髮學',
-'美发师' => '美髮師',
-'美发店' => '美髮店',
-'美发业' => '美髮業',
-'美发沙龙' => '美髮沙龍',
-'美发馆' => '美髮館',
-'群丑' => '群醜',
-'羡余' => '羨餘',
-'义仆' => '義僕',
-'義联' => '義联',
-'翁子里' => '翁子里',
-'翕辟' => '翕闢',
-'翱游' => '翱遊',
-'翻涌' => '翻湧',
-'翻松' => '翻鬆',
-'老么' => '老么',
-'老干' => '老乾',
-'老仆' => '老僕',
-'老干部' => '老幹部',
-'老懞' => '老懞',
-'老于' => '老於',
-'老爷钟' => '老爺鐘',
-'老白干' => '老白乾',
-'老姜' => '老薑',
-'老板' => '老闆',
-'老面皮' => '老面皮',
-'考征' => '考徵',
-'耍斗' => '耍鬥',
-'耕获' => '耕穫',
-'耳余' => '耳餘',
-'耿于' => '耿於',
-'聊斋志异' => '聊齋志異',
-'圣人历' => '聖人曆',
-'圣后' => '聖后',
-'圣马尔谷日' => '聖馬爾谷日',
-'聖馬爾谷日' => '聖馬爾谷日',
-'聘雇' => '聘僱',
-'聚药雄蕊' => '聚葯雄蕊',
-'闻风后' => '聞風後',
-'联系' => '聯繫',
-'声母后' => '聲母後',
-'听于' => '聽於',
-'肉干' => '肉乾',
-'肉欲' => '肉慾',
-'肉丝面' => '肉絲麵',
-'肉羹面' => '肉羹麵',
-'肉松' => '肉鬆',
-'肉面' => '肉麵',
-'肚里' => '肚裡',
-'肝脏' => '肝臟',
-'肝郁' => '肝鬱',
-'股栗' => '股慄',
-'肥筑方言' => '肥筑方言',
-'肴馔' => '肴饌',
-'肺脏' => '肺臟',
-'胃脏' => '胃臟',
-'胃里' => '胃裡',
-'背地里' => '背地裡',
-'胎发' => '胎髮',
-'胜肽' => '胜肽',
-'胜键' => '胜鍵',
-'胡云' => '胡云',
-'胡子婴' => '胡子嬰',
-'胡子昂' => '胡子昂',
-'胡杰' => '胡杰',
-'胡朴安' => '胡樸安',
-'胡里胡涂' => '胡裡胡塗',
-'胰脏' => '胰臟',
-'能干休' => '能干休',
-'能干戈' => '能干戈',
-'能干扰' => '能干擾',
-'能干政' => '能干政',
-'能干涉' => '能干涉',
-'能干预' => '能干預',
-'能干' => '能幹',
-'能自制' => '能自制',
-'脉冲' => '脈衝',
-'脊梁背' => '脊梁背',
-'脊梁骨' => '脊梁骨',
-'脊梁' => '脊樑',
-'脱谷机' => '脫穀機',
-'脱发' => '脫髮',
-'脺脏' => '脺臟',
-'脾脏' => '脾臟',
-'腊之以为饵' => '腊之以為餌',
-'腊味' => '腊味',
-'腊毒' => '腊毒',
-'腊笔' => '腊筆',
-'腌臜' => '腌臢',
-'肾脏' => '腎臟',
-'腐干' => '腐乾',
-'腐余' => '腐餘',
-'腑脏' => '腑臟',
-'腕表' => '腕錶',
-'脑干' => '腦幹',
-'腰里' => '腰裡',
-'脚注' => '腳註',
-'脚炼' => '腳鍊',
-'肠脏' => '腸臟',
-'胶卷' => '膠捲',
-'膨松' => '膨鬆',
-'膵脏' => '膵臟',
-'臊子面' => '臊子麵',
-'脏器' => '臟器',
-'脏胸' => '臟胸',
-'脏腑' => '臟腑',
-'臣仆' => '臣僕',
-'卧游' => '臥遊',
-'臧谷亡羊' => '臧穀亡羊',
-'临潼斗宝' => '臨潼鬥寶',
-'自干五' => '自乾五',
-'自制一下' => '自制一下',
-'自制下来' => '自制下來',
-'自制不' => '自制不',
-'自制之力' => '自制之力',
-'自制之能' => '自制之能',
-'自制他' => '自制他',
-'自制伏' => '自制伏',
-'自制你' => '自制你',
-'自制力' => '自制力',
-'自制地' => '自制地',
-'自制她' => '自制她',
-'自制情' => '自制情',
-'自制我' => '自制我',
-'自制服' => '自制服',
-'自制的能' => '自制的能',
-'自制能力' => '自制能力',
-'自于' => '自於',
-'自然数里' => '自然數裡',
-'自由钟' => '自由鐘',
-'自制' => '自製',
-'自觉自愿' => '自覺自愿',
-'自夸' => '自誇',
-'臭气冲天' => '臭氣衝天',
-'至多' => '至多',
-'至多只' => '至多只',
-'至于' => '至於',
-'致于' => '致於',
-'台佟' => '臺佟',
-'台静农' => '臺靜農',
-'臻于' => '臻於',
-'舂谷' => '舂穀',
-'举手表' => '舉手表',
-'舉手表' => '舉手表',
-'舊庄' => '舊庄',
-'旧历' => '舊曆',
-'旧历史' => '舊歷史',
-'旧游' => '舊遊',
-'旧表' => '舊錶',
-'旧钟' => '舊鐘',
-'旧钟表' => '舊鐘錶',
-'舌干唇焦' => '舌乾唇焦',
-'舍入口' => '舍入口',
-'舒卷' => '舒捲',
-'舞后' => '舞后',
-'航海历' => '航海曆',
-'航海历史' => '航海歷史',
-'船只得' => '船只得',
-'船只有' => '船只有',
-'船只能' => '船只能',
-'船钟' => '船鐘',
-'船只' => '船隻',
-'舰只' => '艦隻',
-'色欲' => '色慾',
-'色长发' => '色長髮',
-'艳后' => '艷后',
-'艷后' => '艷后',
-'艸木丰丰' => '艸木丰丰',
-'芒果干' => '芒果乾',
-'花不要采' => '花不要採',
-'花卷' => '花捲',
-'花盆里' => '花盆裡',
-'花菴词选' => '花菴詞選',
-'花药' => '花葯',
-'花钟' => '花鐘',
-'花马吊嘴' => '花馬弔嘴',
-'花哄' => '花鬨',
-'苑里' => '苑裡',
-'若干' => '若干',
-'苦干' => '苦幹',
-'苦于' => '苦於',
-'苦里' => '苦裡',
-'苦斗' => '苦鬥',
-'苧麻' => '苧麻',
-'茂都淀' => '茂都澱',
-'范文同' => '范文同',
-'范文正公' => '范文正公',
-'范文澜' => '范文瀾',
-'范文瀾' => '范文瀾',
-'范文照' => '范文照',
-'范文程' => '范文程',
-'范文芳' => '范文芳',
-'范文藤' => '范文藤',
-'范文虎' => '范文虎',
-'范登堡' => '范登堡',
-'范賢惠' => '范賢惠',
-'范贤惠' => '范賢惠',
-'茅于軾' => '茅于軾',
-'茅于轼' => '茅于軾',
-'茶几' => '茶几',
-'茶余' => '茶餘',
-'茶面' => '茶麵',
-'草丛里' => '草叢裡',
-'草荐' => '草荐',
-'草席' => '草蓆',
-'荐居' => '荐居',
-'荐臻' => '荐臻',
-'荐饥' => '荐饑',
-'荷花淀' => '荷花澱',
-'庄里' => '莊裡',
-'茎干' => '莖幹',
-'莜面' => '莜麵',
-'莽荡' => '莽蕩',
-'菜干' => '菜乾',
-'菜坛' => '菜罈',
-'菜肴' => '菜餚',
-'菠棱菜' => '菠稜菜',
-'菠萝干' => '菠蘿乾',
-'华严钟' => '華嚴鐘',
-'万一只' => '萬一只',
-'萬一只' => '萬一只',
-'万个' => '萬個',
-'万周后' => '萬周後',
-'万天后' => '萬天後',
-'万年' => '萬年',
-'万年历' => '萬年曆',
-'万年历表' => '萬年曆錶',
-'万历' => '萬曆',
-'万历史' => '萬歷史',
-'万签插架' => '萬籤插架',
-'万扎' => '萬紮',
-'万象' => '萬象',
-'万只' => '萬隻',
-'万余' => '萬餘',
-'落于' => '落於',
-'落腮胡' => '落腮鬍',
-'落发' => '落髮',
-'叶叶琴' => '葉叶琴',
-'叶叶琹' => '葉叶琹',
-'叶阳后' => '葉陽后',
-'葉陽后' => '葉陽后',
-'葡萄干' => '葡萄乾',
-'董氏封发' => '董氏封髮',
-'葫芦里卖甚么药' => '葫蘆裡賣甚麼藥',
-'葬于' => '葬於',
-'蒙雾露' => '蒙霧露',
-'蒜发' => '蒜髮',
-'蒲席' => '蒲蓆',
-'蒸干' => '蒸乾',
-'蒸制' => '蒸製',
-'苍术' => '蒼朮',
-'苍发' => '蒼髮',
-'苍郁' => '蒼鬱',
-'蓄发' => '蓄髮',
-'蓄胡' => '蓄鬍',
-'蓄须' => '蓄鬚',
-'席子' => '蓆子',
-'蓊郁' => '蓊鬱',
-'蓬发' => '蓬髮',
-'蓬松' => '蓬鬆',
-'蓬松松' => '蓬鬆鬆',
-'参绥' => '蔘綏',
-'葱郁' => '蔥鬱',
-'荞麦面' => '蕎麥麵',
-'芸薹' => '蕓薹',
-'荡来荡去' => '蕩來蕩去',
-'荡女' => '蕩女',
-'荡妇' => '蕩婦',
-'荡寇' => '蕩寇',
-'荡平' => '蕩平',
-'荡气' => '蕩氣',
-'荡涤' => '蕩滌',
-'荡漾' => '蕩漾',
-'荡然' => '蕩然',
-'荡产' => '蕩產',
-'荡舟' => '蕩舟',
-'荡船' => '蕩船',
-'荡荡' => '蕩蕩',
-'萧参' => '蕭蔘',
-'薄幸' => '薄倖',
-'薄干' => '薄幹',
-'姜啤' => '薑啤',
-'姜是老的辣' => '薑是老的辣',
-'姜末' => '薑末',
-'姜桂' => '薑桂',
-'姜母' => '薑母',
-'姜汁' => '薑汁',
-'姜汤' => '薑湯',
-'姜片' => '薑片',
-'姜糖' => '薑糖',
-'姜丝' => '薑絲',
-'姜老辣' => '薑老辣',
-'姜茶' => '薑茶',
-'姜蓉' => '薑蓉',
-'姜饼' => '薑餅',
-'姜黄' => '薑黃',
-'薙发' => '薙髮',
-'薝卜' => '薝蔔',
-'熏心' => '薰心',
-'熏染' => '薰染',
-'熏沐' => '薰沐',
-'熏习' => '薰習',
-'熏陶' => '薰陶',
-'熏风' => '薰風',
-'熏香' => '薰香',
-'苧悴' => '薴悴',
-'苧烯' => '薴烯',
-'薴烯' => '薴烯',
-'借以' => '藉以',
-'借助' => '藉助',
-'借口' => '藉口',
-'借寇兵' => '藉寇兵',
-'借手' => '藉手',
-'借故' => '藉故',
-'借机' => '藉機',
-'借此' => '藉此',
-'借由' => '藉由',
-'借箸代筹' => '藉箸代籌',
-'借资' => '藉資',
-'蓝淀' => '藍澱',
-'藏于' => '藏於',
-'藏历' => '藏曆',
-'藏历史' => '藏歷史',
-'藏蒙歌儿' => '藏矇歌兒',
-'藤席' => '藤蓆',
-'藤制' => '藤製',
-'药签' => '藥籤',
-'药面儿' => '藥麵兒',
-'苏崑' => '蘇崑',
-'苏昆' => '蘇崑',
-'苹果' => '蘋果',
-'苹果干' => '蘋果乾',
-'兰溪市' => '蘭谿市',
-'萝卜' => '蘿蔔',
-'萝卜干' => '蘿蔔乾',
-'虎须' => '虎鬚',
-'虎斗' => '虎鬥',
-'处于' => '處於',
-'虚夸' => '虛誇',
-'号志' => '號誌',
-'虫部' => '虫部',
-'蚊动牛斗' => '蚊動牛鬥',
-'蛇发女妖' => '蛇髮女妖',
-'蜂后' => '蜂后',
-'蜂涌' => '蜂湧',
-'蜂准' => '蜂準',
-'蜜里调油' => '蜜裡調油',
-'蜡月' => '蜡月',
-'蜡祭' => '蜡祭',
-'蝎虎' => '蝎虎',
-'蝎蝎螫螫' => '蝎蝎螫螫',
-'蝎谮' => '蝎譖',
-'虾面' => '蝦麵',
-'虮虱相吊' => '蟣蝨相弔',
-'蛏干' => '蟶乾',
-'蚁后' => '蟻后',
-'蟻后' => '蟻后',
-'蚃干' => '蠁幹',
-'蛮干' => '蠻幹',
-'血拼' => '血拚',
-'血余' => '血餘',
-'行事历' => '行事曆',
-'行事历史' => '行事歷史',
-'行凶' => '行兇',
-'行家里手' => '行家裡手',
-'行于' => '行於',
-'卫后庄公' => '衛後莊公',
-'卫星钟' => '衛星鐘',
-'冲上' => '衝上',
-'冲下' => '衝下',
-'冲来' => '衝來',
-'冲倒' => '衝倒',
-'冲冠' => '衝冠',
-'冲出' => '衝出',
-'冲到' => '衝到',
-'冲刺' => '衝刺',
-'冲克' => '衝剋',
-'冲力' => '衝力',
-'冲劲' => '衝勁',
-'冲动' => '衝動',
-'冲去' => '衝去',
-'冲口' => '衝口',
-'冲垮' => '衝垮',
-'冲堂' => '衝堂',
-'冲坚陷阵' => '衝堅陷陣',
-'冲压' => '衝壓',
-'冲天炮' => '衝天炮',
-'冲州撞府' => '衝州撞府',
-'冲心' => '衝心',
-'冲掉' => '衝掉',
-'冲撞' => '衝撞',
-'冲击' => '衝擊',
-'冲散' => '衝散',
-'冲杀' => '衝殺',
-'冲决' => '衝決',
-'冲波' => '衝波',
-'冲浪' => '衝浪',
-'冲激' => '衝激',
-'冲然' => '衝然',
-'冲盹' => '衝盹',
-'冲着' => '衝着',
-'冲破' => '衝破',
-'冲程' => '衝程',
-'冲突' => '衝突',
-'冲线' => '衝線',
-'冲要' => '衝要',
-'冲起' => '衝起',
-'冲车' => '衝車',
-'冲进' => '衝進',
-'冲过' => '衝過',
-'冲量' => '衝量',
-'冲锋' => '衝鋒',
-'冲锋枪' => '衝鋒鎗',
-'冲陷' => '衝陷',
-'冲头阵' => '衝頭陣',
-'冲风' => '衝風',
-'衡鉴' => '衡鑑',
-'表面包' => '表面包',
-'衷于' => '衷於',
-'袋杆' => '袋桿',
-'袋里' => '袋裡',
-'袋表' => '袋錶',
-'袖里' => '袖裡',
-'被废后' => '被廢後',
-'被系上' => '被繫上',
-'被里' => '被裡',
-'被夸' => '被誇',
-'被发佯狂' => '被髮佯狂',
-'被发入山' => '被髮入山',
-'被发左衽' => '被髮左衽',
-'被发缨冠' => '被髮纓冠',
-'被发阳狂' => '被髮陽狂',
-'夹衣' => '袷衣',
-'夹裙' => '袷裙',
-'裁并' => '裁併',
-'裁制' => '裁製',
-'里水镇' => '裏水鎮',
-'里海' => '裏海',
-'里白' => '裏白',
-'里运河' => '裏運河',
-'补于' => '補於',
-'补注' => '補註',
-'装折' => '裝摺',
-'里勾外连' => '裡勾外連',
-'里屋' => '裡屋',
-'里层' => '裡層',
-'里带' => '裡帶',
-'里弦' => '裡弦',
-'里应外合' => '裡應外合',
-'里脊' => '裡脊',
-'里衣' => '裡衣',
-'里通外国' => '裡通外國',
-'里通外敌' => '裡通外敵',
-'里边' => '裡邊',
-'里间' => '裡間',
-'里面' => '裡面',
-'里面包' => '裡面包',
-'里头' => '裡頭',
-'制件' => '製件',
-'制作' => '製作',
-'制做' => '製做',
-'制备' => '製備',
-'制冰' => '製冰',
-'制冷' => '製冷',
-'制剂' => '製劑',
-'制取' => '製取',
-'制品' => '製品',
-'制图' => '製圖',
-'制得' => '製得',
-'制成' => '製成',
-'制毒' => '製毒',
-'制法' => '製法',
-'制浆' => '製漿',
-'制片' => '製片',
-'制版' => '製版',
-'制程' => '製程',
-'制糖' => '製糖',
-'制纸' => '製紙',
-'制药' => '製藥',
-'制衣' => '製衣',
-'制表键' => '製表鍵',
-'制贩' => '製販',
-'制造' => '製造',
-'制革' => '製革',
-'制鞋' => '製鞋',
-'制盐' => '製鹽',
-'复元音' => '複元音',
-'复函数' => '複函數',
-'复分数' => '複分數',
-'复分析' => '複分析',
-'复分解' => '複分解',
-'复列' => '複列',
-'复利' => '複利',
-'复印' => '複印',
-'复句' => '複句',
-'复合' => '複合',
-'复壁' => '複壁',
-'复姓' => '複姓',
-'复字键' => '複字鍵',
-'复审' => '複審',
-'复写' => '複寫',
-'复对数' => '複對數',
-'复平面' => '複平面',
-'复式' => '複式',
-'复数' => '複數',
-'复方' => '複方',
-'复本' => '複本',
-'复查' => '複查',
-'复次' => '複次',
-'复比' => '複比',
-'复决' => '複決',
-'复流' => '複流',
-'复测' => '複測',
-'复目' => '複目',
-'复眼' => '複眼',
-'复种' => '複種',
-'复线' => '複線',
-'复习' => '複習',
-'复色' => '複色',
-'复叶' => '複葉',
-'复制' => '複製',
-'复诊' => '複診',
-'复评' => '複評',
-'复词' => '複詞',
-'复试' => '複試',
-'复课' => '複課',
-'复议' => '複議',
-'复变函数' => '複變函數',
-'复赛' => '複賽',
-'复辅音' => '複輔音',
-'复述' => '複述',
-'复选' => '複選',
-'复钱' => '複錢',
-'复阅' => '複閱',
-'复杂' => '複雜',
-'复音' => '複音',
-'复韵' => '複韻',
-'褒赞' => '褒讚',
-'衬里' => '襯裡',
-'西井里' => '西井里',
-'西周钟' => '西周鐘',
-'西昆' => '西崑',
-'西岳' => '西嶽',
-'西历' => '西曆',
-'西历史' => '西歷史',
-'西湖里' => '西湖里',
-'西米谷' => '西米谷',
-'西西里' => '西西里',
-'西谷米' => '西谷米',
-'西游' => '西遊',
-'要自制' => '要自制',
-'要冲' => '要衝',
-'复信' => '覆信',
-'复核' => '覆核',
-'见于' => '見於',
-'见棱见角' => '見稜見角',
-'见素抱朴' => '見素抱樸',
-'见钟不打' => '見鐘不打',
-'规范' => '規範',
-'视于' => '視於',
-'观采' => '觀採',
-'角抵' => '角牴',
-'角落发' => '角落發',
-'角落里' => '角落裡',
-'觚棱' => '觚稜',
-'解雇' => '解僱',
-'解封后' => '解封後',
-'解铃仍须系铃人' => '解鈴仍須繫鈴人',
-'解铃还须系铃人' => '解鈴還須繫鈴人',
-'解发佯狂' => '解髮佯狂',
-'触须' => '觸鬚',
-'言云' => '言云',
-'言大而夸' => '言大而夸',
-'言里' => '言裡',
-'言辩而确' => '言辯而确',
-'订制' => '訂製',
-'计划' => '計劃',
-'计时表' => '計時錶',
-'托了' => '託了',
-'托事' => '託事',
-'托交' => '託交',
-'托人' => '託人',
-'托付' => '託付',
-'托克逊' => '託克遜',
-'托儿' => '託兒',
-'托古讽今' => '託古諷今',
-'托名' => '託名',
-'托命' => '託命',
-'托咎' => '託咎',
-'托梦' => '託夢',
-'托孤' => '託孤',
-'托庇' => '託庇',
-'托故' => '託故',
-'托疾' => '託疾',
-'托病' => '託病',
-'托管' => '託管',
-'托言' => '託言',
-'托词' => '託詞',
-'托买' => '託買',
-'托卖' => '託賣',
-'托身' => '託身',
-'托辞' => '託辭',
-'托运' => '託運',
-'托过' => '託過',
-'托里县' => '託里縣',
-'托附' => '託附',
-'许愿起经' => '許愿起經',
-'許聖杰' => '許聖杰',
-'注上' => '註上',
-'注册' => '註冊',
-'注失' => '註失',
-'注定' => '註定',
-'注明' => '註明',
-'注标' => '註標',
-'注生娘娘' => '註生娘娘',
-'注疏' => '註疏',
-'注脚' => '註腳',
-'注解' => '註解',
-'注记' => '註記',
-'注译' => '註譯',
-'注销' => '註銷',
-'注:' => '註:',
-'证谏' => '証諫',
-'评断发' => '評斷發',
-'评注' => '評註',
-'评鉴' => '評鑑',
-'词干' => '詞幹',
-'词汇' => '詞彙',
-'词余' => '詞餘',
-'询于' => '詢於',
-'试制' => '試製',
-'詩云' => '詩云',
-'诗云' => '詩云',
-'诗赞' => '詩讚',
-'诗钟' => '詩鐘',
-'诗余' => '詩餘',
-'话里有话' => '話裡有話',
-'该钟' => '該鐘',
-'详征博引' => '詳徵博引',
-'详注' => '詳註',
-'诔赞' => '誄讚',
-'夸下海口' => '誇下海口',
-'夸了' => '誇了',
-'夸人' => '誇人',
-'夸他' => '誇他',
-'夸你' => '誇你',
-'夸来夸去' => '誇來誇去',
-'夸别' => '誇別',
-'夸功' => '誇功',
-'夸胜道强' => '誇勝道強',
-'夸口' => '誇口',
-'夸嘴' => '誇嘴',
-'夸多斗靡' => '誇多鬥靡',
-'夸大' => '誇大',
-'夸她' => '誇她',
-'夸姣' => '誇姣',
-'夸官' => '誇官',
-'夸容' => '誇容',
-'夸张' => '誇張',
-'夸强说会' => '誇強說會',
-'夸得' => '誇得',
-'夸成' => '誇成',
-'夸我' => '誇我',
-'夸才' => '誇才',
-'夸毗' => '誇毗',
-'夸海口' => '誇海口',
-'夸奖' => '誇獎',
-'夸示' => '誇示',
-'夸称' => '誇稱',
-'夸耀' => '誇耀',
-'夸能' => '誇能',
-'夸能斗智' => '誇能鬥智',
-'夸诩' => '誇詡',
-'夸夸' => '誇誇',
-'夸夸其谈' => '誇誇其談',
-'夸诞' => '誇誕',
-'夸说' => '誇說',
-'夸赞' => '誇讚',
-'夸起' => '誇起',
-'夸辩' => '誇辯',
-'夸过' => '誇過',
-'夸饰' => '誇飾',
-'夸丽' => '誇麗',
-'志哀' => '誌哀',
-'志喜' => '誌喜',
-'志庆' => '誌慶',
-'志异' => '誌異',
-'认准' => '認準',
-'诱奸' => '誘姦',
-'语云' => '語云',
-'语汇' => '語彙',
-'語有云' => '語有云',
-'语有云' => '語有云',
-'语法里' => '語法裡',
-'语里' => '語裡',
-'诚征' => '誠徵',
-'诚朴' => '誠樸',
-'诬蔑' => '誣衊',
-'说不准' => '說不準',
-'谁干的' => '誰幹的',
-'课征' => '課徵',
-'课余' => '課餘',
-'调准' => '調準',
-'调制' => '調製',
-'调表' => '調錶',
-'调钟表' => '調鐘錶',
-'谈征' => '談徵',
-'请君入瓮' => '請君入甕',
-'请托' => '請託',
-'咨询' => '諮詢',
-'诸余' => '諸餘',
-'谋干' => '謀幹',
-'謝杰' => '謝杰',
-'谢杰' => '謝杰',
-'谢华后' => '謝華后',
-'谬采虚声' => '謬採虛聲',
-'谬赞' => '謬讚',
-'謷丑' => '謷醜',
-'謹愿' => '謹愿',
-'谨愿' => '謹愿',
-'哗噪' => '譁噪',
-'哗嚣' => '譁囂',
-'哗然' => '譁然',
-'哗众' => '譁眾',
-'哗笑' => '譁笑',
-'哗变' => '譁變',
-'噪诈' => '譟詐',
-'警世钟' => '警世鐘',
-'警报钟' => '警報鐘',
-'警示钟' => '警示鐘',
-'警钟' => '警鐘',
-'译制' => '譯製',
-'译注' => '譯註',
-'护发' => '護髮',
-'变征' => '變徵',
-'变丑' => '變醜',
-'仇隙' => '讎隙',
-'赞一个' => '讚一個',
-'赞不绝口' => '讚不絕口',
-'赞佩' => '讚佩',
-'赞呗' => '讚唄',
-'赞叹' => '讚嘆',
-'赞扬' => '讚揚',
-'赞乐' => '讚樂',
-'赞歌' => '讚歌',
-'赞美' => '讚美',
-'赞羡' => '讚羨',
-'赞许' => '讚許',
-'赞词' => '讚詞',
-'赞誉' => '讚譽',
-'赞赏' => '讚賞',
-'赞辞' => '讚辭',
-'赞颂' => '讚頌',
-'谷子敬' => '谷子敬',
-'豆干' => '豆乾',
-'豆腐干' => '豆腐乾',
-'竖起脊梁' => '豎起脊梁',
-'丰度' => '豐度',
-'丰滨' => '豐濱',
-'丰滨乡' => '豐濱鄉',
-'丰台' => '豐臺',
-'豔后' => '豔后',
-'象征' => '象徵',
-'贪欲' => '貪慾',
-'贵价' => '貴价',
-'貴子里' => '貴子里',
-'贵干' => '貴幹',
-'贵征' => '貴徵',
-'买凶' => '買兇',
-'买断发' => '買斷發',
-'費米面' => '費米面',
-'费米面' => '費米面',
-'贻范' => '貽範',
-'賈后' => '賈后',
-'贾后' => '賈后',
-'赈饥' => '賑饑',
-'赏赞' => '賞讚',
-'賢后' => '賢后',
-'贤后' => '賢后',
-'卖断发' => '賣斷發',
-'賦范' => '賦范',
-'赋范' => '賦范',
-'质数里' => '質數裡',
-'质朴' => '質樸',
-'赌后' => '賭后',
-'赌台' => '賭檯',
-'赌斗' => '賭鬥',
-'购并' => '購併',
-'购买欲' => '購買慾',
-'赢余' => '贏餘',
-'赤术' => '赤朮',
-'赤绳系足' => '赤繩繫足',
-'走回路' => '走回路',
-'起哄' => '起鬨',
-'超级杯' => '超級盃',
-'超赞' => '超讚',
-'赶制' => '趕製',
-'赶面棍' => '趕麵棍',
-'赵威后' => '趙威后',
-'赵惠后' => '趙惠后',
-'赵治勋' => '趙治勳',
-'趱干' => '趲幹',
-'足于' => '足於',
-'足球台' => '足球台',
-'跌扑' => '跌扑',
-'路图里' => '路圖裡',
-'路签' => '路籤',
-'路面' => '路面',
-'跳梁小丑' => '跳樑小丑',
-'跳荡' => '跳蕩',
-'局蹐' => '跼蹐',
-'局躅' => '跼躅',
-'踡局' => '踡跼',
-'逾闲' => '踰閑',
-'蹒局' => '蹣跼',
-'蹪于' => '蹪於',
-'蹭棱子' => '蹭稜子',
-'躁郁' => '躁鬱',
-'身于' => '身於',
-'身体发肤' => '身體髮膚',
-'躯干' => '軀幹',
-'车库里' => '車庫裡',
-'车站里' => '車站裡',
-'车里' => '車裡',
-'车里雅宾斯克' => '車里雅賓斯克',
-'轨范' => '軌範',
-'轩辟' => '軒闢',
-'较于' => '較於',
-'挽曲' => '輓曲',
-'挽歌' => '輓歌',
-'挽联' => '輓聯',
-'挽词' => '輓詞',
-'挽诗' => '輓詩',
-'挽车' => '輓車',
-'挽输' => '輓輸',
-'挽辞' => '輓辭',
-'轻于' => '輕於',
-'轻松' => '輕鬆',
-'轻松松' => '輕鬆鬆',
-'轮奸' => '輪姦',
-'轮回' => '輪迴',
-'转向往' => '轉向往',
-'转托' => '轉託',
-'转斗千里' => '轉鬥千里',
-'辛丑' => '辛丑',
-'辟谷' => '辟穀',
-'辣面' => '辣麵',
-'办公台' => '辦公檯',
-'辞汇' => '辭彙',
-'辫发' => '辮髮',
-'辩斗' => '辯鬥',
-'辰溪县' => '辰谿縣',
-'农历' => '農曆',
-'农历史' => '農歷史',
-'农民历' => '農民曆',
-'农民历史' => '農民歷史',
-'迂回' => '迂迴',
-'近日无仇' => '近日無讎',
-'返朴' => '返樸',
-'迥然回异' => '迥然迴異',
-'迫于' => '迫於',
-'回光返照' => '迴光返照',
-'回圈' => '迴圈',
-'回廊' => '迴廊',
-'回形夹' => '迴形夾',
-'回文序列' => '迴文序列',
-'回文数' => '迴文數',
-'回文构词' => '迴文構詞',
-'回文结构' => '迴文結構',
-'回文联' => '迴文聯',
-'回文诗' => '迴文詩',
-'回文锦' => '迴文錦',
-'回旋' => '迴旋',
-'回环' => '迴環',
-'回纹针' => '迴紋針',
-'回绕' => '迴繞',
-'回翔' => '迴翔',
-'回肠' => '迴腸',
-'回肠荡气' => '迴腸盪氣',
-'回荡' => '迴蕩',
-'回诵' => '迴誦',
-'回路' => '迴路',
-'回转' => '迴轉',
-'回递性' => '迴遞性',
-'回避' => '迴避',
-'回銮' => '迴鑾',
-'回响' => '迴響',
-'回风' => '迴風',
-'迷于' => '迷於',
-'迷蒙' => '迷濛',
-'追凶' => '追兇',
-'退伙' => '退夥',
-'逆钟' => '逆鐘',
-'逆钟向' => '逆鐘向',
-'逆风后' => '逆風後',
-'逋发' => '逋髮',
-'逍遥游' => '逍遙遊',
-'透辟' => '透闢',
-'这出世' => '這出世',
-'这出乎' => '這出乎',
-'这出人' => '這出人',
-'这出版' => '這出版',
-'这出现' => '這出現',
-'这出生' => '這出生',
-'这出色' => '這出色',
-'这出身' => '這出身',
-'这出道' => '這出道',
-'这只不' => '這只不',
-'这只不过' => '這只不過',
-'这只允' => '這只允',
-'这只包括' => '這只包括',
-'这只可' => '這只可',
-'这只在' => '這只在',
-'这只容' => '這只容',
-'这只应' => '這只應',
-'这只采' => '這只採',
-'这只是' => '這只是',
-'这只会' => '這只會',
-'这只比' => '這只比',
-'这只用' => '這只用',
-'这只能' => '這只能',
-'这只限' => '這只限',
-'这只需' => '這只需',
-'这只须' => '這只須',
-'这伙人' => '這夥人',
-'这里' => '這裡',
-'这钟' => '這鐘',
-'这只' => '這隻',
-'这么干' => '這麼幹',
-'这出' => '這齣',
-'通奸' => '通姦',
-'通心面' => '通心麵',
-'通于' => '通於',
-'通历' => '通曆',
-'通历史' => '通歷史',
-'通鉴' => '通鑑',
-'逞凶斗狠' => '逞兇鬥狠',
-'造钟' => '造鐘',
-'连三并四' => '連三併四',
-'连采' => '連採',
-'连发式' => '連發式',
-'连系' => '連繫',
-'周游' => '週遊',
-'进两出' => '進兩出',
-'进制' => '進制',
-'進制' => '進制',
-'逼并' => '逼併',
-'遇风后' => '遇風後',
-'游了' => '遊了',
-'游人' => '遊人',
-'游仙' => '遊仙',
-'游伴' => '遊伴',
-'游侠' => '遊俠',
-'游冶' => '遊冶',
-'游刃' => '遊刃',
-'游动' => '遊動',
-'游园' => '遊園',
-'游子' => '遊子',
-'游学' => '遊學',
-'游客' => '遊客',
-'游宦' => '遊宦',
-'游山玩水' => '遊山玩水',
-'游必有方' => '遊必有方',
-'游憩' => '遊憩',
-'游戏' => '遊戲',
-'游戏里' => '遊戲裡',
-'游手好闲' => '遊手好閒',
-'游方' => '遊方',
-'游星' => '遊星',
-'游乐' => '遊樂',
-'游标卡尺' => '遊標卡尺',
-'游历' => '遊歷',
-'游民' => '遊民',
-'游河' => '遊河',
-'游牧' => '遊牧',
-'游猎' => '遊獵',
-'游玩' => '遊玩',
-'游目骋怀' => '遊目騁懷',
-'游程' => '遊程',
-'游丝' => '遊絲',
-'游美学务' => '遊美學務',
-'游兴' => '遊興',
-'游船' => '遊船',
-'游艇' => '遊艇',
-'游荡' => '遊蕩',
-'游艺' => '遊藝',
-'游行' => '遊行',
-'游街' => '遊街',
-'游览' => '遊覽',
-'游记' => '遊記',
-'游说' => '遊說',
-'游资' => '遊資',
-'游走' => '遊走',
-'游踪' => '遊蹤',
-'游轮' => '遊輪',
-'游逛' => '遊逛',
-'游错' => '遊錯',
-'游骑兵' => '遊騎兵',
-'游魂' => '遊魂',
-'过于' => '過於',
-'过水面' => '過水麵',
-'遏制' => '遏制',
-'道范' => '道範',
-'逊于' => '遜於',
-'递回' => '遞迴',
-'远游' => '遠遊',
-'遨游' => '遨遊',
-'适于' => '適於',
-'遮丑' => '遮醜',
-'迁于' => '遷於',
-'选手表明' => '選手表明',
-'选手表决' => '選手表決',
-'选手表现' => '選手表現',
-'选手表示' => '選手表示',
-'选手表达' => '選手表達',
-'遗传钟' => '遺傳鐘',
-'遗范' => '遺範',
-'遗迹' => '遺蹟',
-'辽沈' => '遼瀋',
-'邀天之幸' => '邀天之倖',
-'还采' => '還採',
-'还冲' => '還衝',
-'邋里邋遢' => '邋裡邋遢',
-'那只不过' => '那只不過',
-'那只包括' => '那只包括',
-'那只可' => '那只可',
-'那只在' => '那只在',
-'那只怕' => '那只怕',
-'那只应' => '那只應',
-'那只是' => '那只是',
-'那只会' => '那只會',
-'那只有' => '那只有',
-'那只比' => '那只比',
-'那只用' => '那只用',
-'那只能' => '那只能',
-'那只限' => '那只限',
-'那只需' => '那只需',
-'那只须' => '那只須',
-'那卷' => '那捲',
-'那里' => '那裡',
-'那只' => '那隻',
-'邱于庭' => '邱于庭',
-'郁朴' => '郁樸',
-'郁郁菲菲' => '郁郁菲菲',
-'郁郁青青' => '郁郁青青',
-'郊游' => '郊遊',
-'郘钟' => '郘鐘',
-'部子里' => '部子里',
-'部落发' => '部落發',
-'郭后' => '郭后',
-'都市里' => '都市裡',
-'都于' => '都於',
-'乡愿' => '鄉愿',
-'鄉愿' => '鄉愿',
-'郑凯云' => '鄭凱云',
-'鄭凱云' => '鄭凱云',
-'配制饲料' => '配制飼料',
-'配图里' => '配圖裡',
-'配制' => '配製',
-'酒帘' => '酒帘',
-'酒气冲天' => '酒氣衝天',
-'酒坛' => '酒罈',
-'酒肴' => '酒肴',
-'酒曲' => '酒麴',
-'酒麹' => '酒麴',
-'酥松' => '酥鬆',
-'酸姜' => '酸薑',
-'腌制' => '醃製',
-'醇朴' => '醇樸',
-'醉于' => '醉於',
-'醋坛' => '醋罈',
-'丑丫头' => '醜丫頭',
-'丑事' => '醜事',
-'丑人' => '醜人',
-'丑侪' => '醜儕',
-'丑八怪' => '醜八怪',
-'丑剌剌' => '醜剌剌',
-'丑剧' => '醜劇',
-'丑化' => '醜化',
-'丑史' => '醜史',
-'丑名' => '醜名',
-'丑吒' => '醜吒',
-'丑地' => '醜地',
-'丑夷' => '醜夷',
-'丑女' => '醜女',
-'丑女效颦' => '醜女效顰',
-'丑奴儿' => '醜奴兒',
-'丑妇' => '醜婦',
-'丑媳' => '醜媳',
-'丑媳妇' => '醜媳婦',
-'丑小鸭' => '醜小鴨',
-'丑巴怪' => '醜巴怪',
-'丑徒' => '醜徒',
-'丑恶' => '醜惡',
-'丑态' => '醜態',
-'丑毙了' => '醜斃了',
-'丑于' => '醜於',
-'丑末' => '醜末',
-'丑样' => '醜樣',
-'丑死' => '醜死',
-'丑比' => '醜比',
-'丑沮' => '醜沮',
-'丑男' => '醜男',
-'丑闻' => '醜聞',
-'丑声' => '醜聲',
-'丑声远播' => '醜聲遠播',
-'丑脸' => '醜臉',
-'丑虏' => '醜虜',
-'丑行' => '醜行',
-'丑言' => '醜言',
-'丑诋' => '醜詆',
-'丑话' => '醜話',
-'丑语' => '醜語',
-'丑贼生' => '醜賊生',
-'丑辞' => '醜辭',
-'丑辱' => '醜辱',
-'丑逆' => '醜逆',
-'丑丑' => '醜醜',
-'丑陋' => '醜陋',
-'丑杂' => '醜雜',
-'丑头怪脸' => '醜頭怪臉',
-'丑类' => '醜類',
-'酿制' => '釀製',
-'衅钟' => '釁鐘',
-'采石之役' => '采石之役',
-'采石之战' => '采石之戰',
-'采石之戰' => '采石之戰',
-'采石矶' => '采石磯',
-'采石磯' => '采石磯',
-'里海大学' => '里海大學',
-'里海大學' => '里海大學',
-'里海崖' => '里海崖',
-'里海茨' => '里海茨',
-'里铺' => '里舖',
-'重回' => '重回',
-'重折' => '重摺',
-'重于' => '重於',
-'重罗面' => '重羅麵',
-'重制' => '重製',
-'重复' => '重複',
-'重托' => '重託',
-'重游' => '重遊',
-'野姜' => '野薑',
-'野游' => '野遊',
-'量不准' => '量不準',
-'厘改' => '釐改',
-'厘整' => '釐整',
-'厘正' => '釐正',
-'厘毫' => '釐毫',
-'厘清' => '釐清',
-'厘订' => '釐訂',
-'厘革' => '釐革',
-'金仆姑' => '金僕姑',
-'金城里' => '金城里',
-'金范' => '金範',
-'金圣叹' => '金聖歎',
-'金表情' => '金表情',
-'金表态' => '金表態',
-'金表扬' => '金表揚',
-'金表明' => '金表明',
-'金表演' => '金表演',
-'金表现' => '金表現',
-'金表示' => '金表示',
-'金表达' => '金表達',
-'金表露' => '金表露',
-'金表面' => '金表面',
-'金装玉里' => '金裝玉裡',
-'金溪县' => '金谿縣',
-'金链' => '金鍊',
-'金钟' => '金鐘',
-'金发' => '金髮',
-'钩心斗角' => '鈎心鬥角',
-'银朱' => '銀硃',
-'银发' => '銀髮',
-'铜范' => '銅範',
-'铜制' => '銅製',
-'铜钟' => '銅鐘',
-'铯钟' => '銫鐘',
-'铝制' => '鋁製',
-'钢之炼金术师' => '鋼之鍊金術師',
-'钢梁' => '鋼樑',
-'钢制' => '鋼製',
-'录制' => '錄製',
-'锤炼' => '錘鍊',
-'钱谷' => '錢穀',
-'钱范' => '錢範',
-'锦卤' => '錦滷',
-'锦绣花园' => '錦綉花園',
-'表停' => '錶停',
-'表冠' => '錶冠',
-'表带' => '錶帶',
-'表快' => '錶快',
-'表慢' => '錶慢',
-'表板' => '錶板',
-'表王' => '錶王',
-'表盘' => '錶盤',
-'表蒙子' => '錶蒙子',
-'表转' => '錶轉',
-'表速' => '錶速',
-'表针' => '錶針',
-'炼冶' => '鍊冶',
-'炼句' => '鍊句',
-'炼字' => '鍊字',
-'炼师' => '鍊師',
-'炼度' => '鍊度',
-'炼形' => '鍊形',
-'炼气' => '鍊氣',
-'炼汞' => '鍊汞',
-'炼石' => '鍊石',
-'链表' => '鍊表',
-'炼贫' => '鍊貧',
-'炼金术' => '鍊金術',
-'锲而不舍' => '鍥而不捨',
-'镰仓' => '鎌倉',
-'镜图里' => '鏡圖裡',
-'锈病' => '鏽病',
-'锈菌' => '鏽菌',
-'锈蚀' => '鏽蝕',
-'钟上' => '鐘上',
-'钟下' => '鐘下',
-'钟不' => '鐘不',
-'钟不扣不鸣' => '鐘不扣不鳴',
-'钟不撞不鸣' => '鐘不撞不鳴',
-'钟不敲不响' => '鐘不敲不響',
-'钟不空则哑' => '鐘不空則啞',
-'钟乳洞' => '鐘乳洞',
-'钟乳石' => '鐘乳石',
-'钟停' => '鐘停',
-'钟匠' => '鐘匠',
-'钟口' => '鐘口',
-'钟在寺里' => '鐘在寺裡',
-'钟塔' => '鐘塔',
-'钟壁' => '鐘壁',
-'钟太' => '鐘太',
-'钟好' => '鐘好',
-'钟山' => '鐘山',
-'钟左右' => '鐘左右',
-'钟差' => '鐘差',
-'钟座' => '鐘座',
-'钟形' => '鐘形',
-'钟形虫' => '鐘形蟲',
-'钟律' => '鐘律',
-'钟快' => '鐘快',
-'钟慢' => '鐘慢',
-'钟摆' => '鐘擺',
-'钟敲' => '鐘敲',
-'钟有' => '鐘有',
-'钟楼' => '鐘樓',
-'钟模' => '鐘模',
-'钟没' => '鐘沒',
-'钟漏' => '鐘漏',
-'钟王' => '鐘王',
-'钟琴' => '鐘琴',
-'钟发音' => '鐘發音',
-'钟的' => '鐘的',
-'钟盘' => '鐘盤',
-'钟相' => '鐘相',
-'钟磬' => '鐘磬',
-'钟纽' => '鐘紐',
-'钟罩' => '鐘罩',
-'钟声' => '鐘聲',
-'钟腰' => '鐘腰',
-'钟花' => '鐘花',
-'钟螺' => '鐘螺',
-'钟行' => '鐘行',
-'钟表面' => '鐘表面',
-'钟被' => '鐘被',
-'钟调' => '鐘調',
-'钟身' => '鐘身',
-'钟速' => '鐘速',
-'钟表' => '鐘錶',
-'钟表停' => '鐘錶停',
-'钟表快' => '鐘錶快',
-'钟表慢' => '鐘錶慢',
-'钟表王' => '鐘錶王',
-'钟表盘' => '鐘錶盤',
-'钟表速' => '鐘錶速',
-'钟关' => '鐘關',
-'钟陈列' => '鐘陳列',
-'钟面' => '鐘面',
-'钟响' => '鐘響',
-'钟顶' => '鐘頂',
-'钟头' => '鐘頭',
-'钟体' => '鐘體',
-'钟鸣' => '鐘鳴',
-'钟点' => '鐘點',
-'钟鼎' => '鐘鼎',
-'钟鼓' => '鐘鼓',
-'铁锈' => '鐵鏽',
-'铁钟' => '鐵鐘',
-'铸钟' => '鑄鐘',
-'鉴别' => '鑑別',
-'鉴古' => '鑑古',
-'鉴定' => '鑑定',
-'鉴察' => '鑑察',
-'鉴往知来' => '鑑往知來',
-'鉴戒' => '鑑戒',
-'鉴湖' => '鑑湖',
-'鉴藏' => '鑑藏',
-'鉴谅' => '鑑諒',
-'鉴证' => '鑑證',
-'鉴识' => '鑑識',
-'鉴赏' => '鑑賞',
-'鉴于' => '鑒於',
-'长几' => '長几',
-'长于' => '長於',
-'长历' => '長曆',
-'长历史' => '長歷史',
-'长发公主' => '長髮公主',
-'长发妹' => '長髮妹',
-'长发姑娘' => '長髮姑娘',
-'长胡' => '長鬍',
-'门帘' => '門帘',
-'门吊儿' => '門弔兒',
-'门里' => '門裡',
-'闫怀礼' => '閆懷禮',
-'開山辟谷' => '開山辟谷',
-'开山辟谷' => '開山闢谷',
-'开吊' => '開弔',
-'开征' => '開徵',
-'开采' => '開採',
-'开发' => '開發',
-'开辟' => '開闢',
-'开哄' => '開鬨',
-'闲邪' => '閑邪',
-'闲情逸致' => '閒情逸緻',
-'闲荡' => '閒蕩',
-'闲游' => '閒遊',
-'间不容发' => '間不容髮',
-'间里' => '間裡',
-'闵采尔' => '閔採爾',
-'阁府' => '閤府',
-'闺范' => '閨範',
-'阃范' => '閫範',
-'闯荡' => '闖蕩',
-'闯炼' => '闖鍊',
-'关系' => '關係',
-'关弓与我确' => '關弓與我确',
-'关于' => '關於',
-'辟佛' => '闢佛',
-'辟作' => '闢作',
-'辟划' => '闢劃',
-'辟土' => '闢土',
-'辟地' => '闢地',
-'辟室' => '闢室',
-'辟建' => '闢建',
-'辟为' => '闢為',
-'辟田' => '闢田',
-'辟筑' => '闢築',
-'辟谣' => '闢謠',
-'辟辟' => '闢辟',
-'辟邪以律' => '闢邪以律',
-'防水表' => '防水錶',
-'防御' => '防禦',
-'防范' => '防範',
-'防锈' => '防鏽',
-'阻于' => '阻於',
-'阿里' => '阿里',
-'附于' => '附於',
-'附注' => '附註',
-'限制' => '限制',
-'院里' => '院裡',
-'陪吊' => '陪弔',
-'阴干' => '陰乾',
-'阴历' => '陰曆',
-'阴历史' => '陰歷史',
-'阴沟里翻船' => '陰溝裡翻船',
-'阴郁' => '陰鬱',
-'陳冲' => '陳冲',
-'陳士杰' => '陳士杰',
-'陈升' => '陳昇',
-'陈有后' => '陳有后',
-'陳有后' => '陳有后',
-'陈杰' => '陳杰',
-'陳杰' => '陳杰',
-'陈炼' => '陳鍊',
-'陆游' => '陸遊',
-'阳春面' => '陽春麵',
-'阳历' => '陽曆',
-'阳历史' => '陽歷史',
-'阳谷' => '陽穀',
-'隆准许' => '隆准許',
-'隆准' => '隆準',
-'随于' => '隨於',
-'隐占' => '隱佔',
-'隐几' => '隱几',
-'隐于' => '隱於',
-'只字' => '隻字',
-'只影' => '隻影',
-'只手遮天' => '隻手遮天',
-'只眼' => '隻眼',
-'只言片语' => '隻言片語',
-'只身' => '隻身',
-'雄斗斗' => '雄斗斗',
-'雅范' => '雅範',
-'集数里' => '集數裡',
-'集于' => '集於',
-'集里' => '集裡',
-'集游法' => '集遊法',
-'雕梁画栋' => '雕樑畫棟',
-'双折射' => '雙折射',
-'双折' => '雙摺',
-'双胜类' => '雙胜類',
-'双雕' => '雙鵰',
-'杂合面儿' => '雜合麵兒',
-'杂志' => '雜誌',
-'杂面' => '雜麵',
-'鸡吵鹅斗' => '雞吵鵝鬥',
-'鸡奸' => '雞姦',
-'鸡争鹅斗' => '雞爭鵝鬥',
-'鸡丝' => '雞絲',
-'鸡丝面' => '雞絲麵',
-'鸡腿面' => '雞腿麵',
-'鸡蛋里挑骨头' => '雞蛋裡挑骨頭',
-'鸡只' => '雞隻',
-'离于' => '離於',
-'难舍' => '難捨',
-'难于' => '難於',
-'雨蒙蒙' => '雨濛濛',
-'雪窗萤几' => '雪窗螢几',
-'雪里' => '雪裡',
-'雪里红' => '雪裡紅',
-'雪里蕻' => '雪裡蕻',
-'云吞' => '雲吞',
-'云笈七签' => '雲笈七籤',
-'云里雾里' => '雲裡霧裡',
-'云游' => '雲遊',
-'云须' => '雲鬚',
-'零个' => '零個',
-'零周后' => '零周後',
-'零天后' => '零天後',
-'零年' => '零年',
-'零只' => '零隻',
-'零余' => '零餘',
-'电子表格' => '電子表格',
-'电子制表' => '電子製表',
-'电子钟' => '電子鐘',
-'电子钟表' => '電子鐘錶',
-'电影后' => '電影後',
-'电影里' => '電影裡',
-'电梯里' => '電梯裡',
-'电波钟' => '電波鐘',
-'电码表' => '電碼表',
-'电冲' => '電衝',
-'电视台风' => '電視台風',
-'电视里' => '電視裡',
-'电表' => '電錶',
-'电钟' => '電鐘',
-'震栗' => '震慄',
-'霉气冲天' => '霉氣衝天',
-'沾化' => '霑化',
-'沾益' => '霑益',
-'雾里' => '霧裡',
-'露丑' => '露醜',
-'霁范' => '霽範',
-'灵昆' => '靈崑',
-'青山一发' => '青山一髮',
-'青霉' => '青黴',
-'非常准' => '非常準',
-'面包住' => '面包住',
-'面包含' => '面包含',
-'面包围' => '面包圍',
-'面包容' => '面包容',
-'面包庇' => '面包庇',
-'面包厢' => '面包廂',
-'面包抄' => '面包抄',
-'面包括' => '面包括',
-'面包揽' => '面包攬',
-'面包涵' => '面包涵',
-'面包管' => '面包管',
-'面包扎' => '面包紮',
-'面包罗' => '面包羅',
-'面包着' => '面包著',
-'面包藏' => '面包藏',
-'面包装' => '面包裝',
-'面包裹' => '面包裹',
-'面包起' => '面包起',
-'面包办' => '面包辦',
-'面店铺' => '面店鋪',
-'面条目' => '面條目',
-'面條目' => '面條目',
-'面粉碎' => '面粉碎',
-'面粉红' => '面粉紅',
-'面食饭' => '面食飯',
-'鞋里' => '鞋裡',
-'鞣制' => '鞣製',
-'秋千' => '鞦韆',
-'鞭辟入里' => '鞭辟入裡',
-'韦席' => '韋蓆',
-'韩国制' => '韓國製',
-'韩制' => '韓製',
-'音不准' => '音不準',
-'音准' => '音準',
-'音声如钟' => '音聲如鐘',
-'韶山冲' => '韶山沖',
-'响钟' => '響鐘',
-'頁面' => '頁面',
-'页面' => '頁面',
-'顶凶' => '頂兇',
-'頂多' => '頂多',
-'顶多' => '頂多',
-'项链' => '項鍊',
-'顺于' => '順於',
-'顺钟向' => '順鐘向',
-'顺风后' => '順風後',
-'须根据' => '須根據',
-'颂系' => '頌繫',
-'颂赞' => '頌讚',
-'预报不准' => '預報不準',
-'预制' => '預製',
-'领袖欲' => '領袖慾',
-'头里' => '頭裡',
-'头长发' => '頭長髮',
-'头发' => '頭髮',
-'颊须' => '頰鬚',
-'额征' => '額徵',
-'额我略历' => '額我略曆',
-'额我略历史' => '額我略歷史',
-'颜范' => '顏範',
-'颠干倒坤' => '顛乾倒坤',
-'顛顛仆仆' => '顛顛仆仆',
-'颠颠仆仆' => '顛顛仆仆',
-'颤栗' => '顫慄',
-'显示表明' => '顯示表明',
-'显示表格' => '顯示表格',
-'显示表现' => '顯示表現',
-'显示表示' => '顯示表示',
-'显示表达' => '顯示表達',
-'显示表面' => '顯示表面',
-'显示表头' => '顯示表頭',
-'显示表' => '顯示錶',
-'显示钟' => '顯示鐘',
-'显示钟表' => '顯示鐘錶',
-'风干' => '風乾',
-'风后' => '風后',
-'风土志' => '風土誌',
-'风后,' => '風後,',
-'风卷残云' => '風捲殘雲',
-'风物志' => '風物誌',
-'风范' => '風範',
-'风里' => '風裡',
-'风起云涌' => '風起雲湧',
-'風采' => '風采',
-'风采' => '風采',
-'风刮' => '風颳',
-'台风' => '颱風',
-'台风后' => '颱風後',
-'刮了' => '颳了',
-'刮倒' => '颳倒',
-'刮去' => '颳去',
-'刮大风' => '颳大風',
-'刮得' => '颳得',
-'刮走' => '颳走',
-'刮起' => '颳起',
-'刮雪' => '颳雪',
-'刮风' => '颳風',
-'刮风后' => '颳風後',
-'飘荡' => '飄蕩',
-'飘游' => '飄遊',
-'飘飘荡荡' => '飄飄蕩蕩',
-'飘发自由女神' => '飄髮自由女神',
-'飞扎' => '飛紮',
-'飞刍挽粟' => '飛芻輓粟',
-'飞行钟' => '飛行鐘',
-'食欲' => '食慾',
-'食欲不振' => '食欲不振',
-'食面' => '食麵',
-'饭后钟' => '飯後鐘',
-'饭团' => '飯糰',
-'饼干' => '餅乾',
-'养脏' => '養臟',
-'餐台' => '餐檯',
-'馂余' => '餕餘',
-'余0' => '餘0',
-'余1' => '餘1',
-'余2' => '餘2',
-'余3' => '餘3',
-'余4' => '餘4',
-'余5' => '餘5',
-'余6' => '餘6',
-'余7' => '餘7',
-'余8' => '餘8',
-'余9' => '餘9',
-'余〇' => '餘〇',
-'余一' => '餘一',
-'余七' => '餘七',
-'余三' => '餘三',
-'余下' => '餘下',
-'余九' => '餘九',
-'余事' => '餘事',
-'余二' => '餘二',
-'余五' => '餘五',
-'余人' => '餘人',
-'余俗' => '餘俗',
-'余倍' => '餘倍',
-'余僇' => '餘僇',
-'余光' => '餘光',
-'余八' => '餘八',
-'余六' => '餘六',
-'余刃' => '餘刃',
-'余切' => '餘切',
-'余利' => '餘利',
-'余割' => '餘割',
-'余力' => '餘力',
-'余勇' => '餘勇',
-'余十' => '餘十',
-'余味' => '餘味',
-'余喘' => '餘喘',
-'余四' => '餘四',
-'余地' => '餘地',
-'余墨' => '餘墨',
-'余外' => '餘外',
-'余妙' => '餘妙',
-'余姚' => '餘姚',
-'余威' => '餘威',
-'余子' => '餘子',
-'余存' => '餘存',
-'余孽' => '餘孽',
-'余干' => '餘干',
-'余年' => '餘年',
-'余式' => '餘式',
-'余弦' => '餘弦',
-'余思' => '餘思',
-'余悸' => '餘悸',
-'余庆' => '餘慶',
-'余数' => '餘數',
-'余明' => '餘明',
-'余映' => '餘映',
-'余暇' => '餘暇',
-'余晖' => '餘暉',
-'余杭' => '餘杭',
-'余杯' => '餘杯',
-'余桃' => '餘桃',
-'余桶' => '餘桶',
-'余业' => '餘業',
-'余款' => '餘款',
-'余欢' => '餘歡',
-'余步' => '餘步',
-'余殃' => '餘殃',
-'余毒' => '餘毒',
-'余气' => '餘氣',
-'余江' => '餘江',
-'余波' => '餘波',
-'余温' => '餘溫',
-'余泽' => '餘澤',
-'余沥' => '餘瀝',
-'余烈' => '餘烈',
-'余热' => '餘熱',
-'余烬' => '餘燼',
-'余珍' => '餘珍',
-'余生' => '餘生',
-'余留' => '餘留',
-'余众' => '餘眾',
-'余窍' => '餘竅',
-'余粮' => '餘糧',
-'余绪' => '餘緒',
-'余缺' => '餘缺',
-'余罪' => '餘罪',
-'余羡' => '餘羨',
-'余声' => '餘聲',
-'余膏' => '餘膏',
-'余兴' => '餘興',
-'余蓄' => '餘蓄',
-'余荫' => '餘蔭',
-'余裕' => '餘裕',
-'余角' => '餘角',
-'余论' => '餘論',
-'余责' => '餘責',
-'余貾' => '餘貾',
-'余辉' => '餘輝',
-'余辜' => '餘辜',
-'余部' => '餘部',
-'余酲' => '餘酲',
-'余量' => '餘量',
-'余闰' => '餘閏',
-'余闲' => '餘閒',
-'余零' => '餘零',
-'余震' => '餘震',
-'余霞' => '餘霞',
-'余音' => '餘音',
-'余韵' => '餘韻',
-'余响' => '餘響',
-'余项' => '餘項',
-'余额' => '餘額',
-'余风' => '餘風',
-'余食' => '餘食',
-'余党' => '餘黨',
-'馄饨面' => '餛飩麵',
-'馆谷' => '館穀',
-'馆里' => '館裡',
-'饥寒' => '饑寒',
-'饥民' => '饑民',
-'饥渴' => '饑渴',
-'饥溺' => '饑溺',
-'饥荒' => '饑荒',
-'饥饱' => '饑飽',
-'饥馑' => '饑饉',
-'首当其冲' => '首當其衝',
-'首发' => '首發',
-'首只' => '首隻',
-'首出电影' => '首齣電影',
-'香干' => '香乾',
-'香山庄' => '香山庄',
-'马干' => '馬乾',
-'馬占山' => '馬占山',
-'马德钟' => '馬德鐘',
-'马斯垂克期' => '馬斯垂克期',
-'馬格里布' => '馬格里布',
-'马格里布' => '馬格里布',
-'驻扎' => '駐紮',
-'骀荡' => '駘蕩',
-'腾格里' => '騰格里',
-'騰格里' => '騰格里',
-'腾涌' => '騰湧',
-'腾冲' => '騰衝',
-'惊栗' => '驚慄',
-'惊赞' => '驚讚',
-'惊钟' => '驚鐘',
-'骨干' => '骨幹',
-'骨灰坛' => '骨灰罈',
-'骨坛' => '骨罈',
-'体征' => '體徵',
-'体范' => '體範',
-'体系' => '體系',
-'体里' => '體裡',
-'高几' => '高几',
-'高后' => '高后',
-'高干扰' => '高干擾',
-'高干预' => '高干預',
-'高干' => '高幹',
-'高度自制' => '高度自制',
-'高涌泉' => '高涌泉',
-'高清愿' => '高清愿',
-'髡发' => '髡髮',
-'髭胡' => '髭鬍',
-'髭须' => '髭鬚',
-'发上指冠' => '髮上指冠',
-'发上冲冠' => '髮上沖冠',
-'发乳' => '髮乳',
-'发光可鉴' => '髮光可鑑',
-'发匪' => '髮匪',
-'发及腰' => '髮及腰',
-'发型' => '髮型',
-'发夹' => '髮夾',
-'发妻' => '髮妻',
-'发姐' => '髮姐',
-'发屋' => '髮屋',
-'发已霜白' => '髮已霜白',
-'发带' => '髮帶',
-'发廊' => '髮廊',
-'发式' => '髮式',
-'发引千钧' => '髮引千鈞',
-'发披肩' => '髮披肩',
-'发卷' => '髮捲',
-'发根' => '髮根',
-'发油' => '髮油',
-'发漂' => '髮漂',
-'发为血之本' => '髮為血之本',
-'发状' => '髮狀',
-'发癣' => '髮癬',
-'发短心长' => '髮短心長',
-'发禁' => '髮禁',
-'发笺' => '髮箋',
-'发纱' => '髮紗',
-'发结' => '髮結',
-'发丝' => '髮絲',
-'发网' => '髮網',
-'发脚' => '髮腳',
-'发肤' => '髮膚',
-'发胶' => '髮膠',
-'发菜' => '髮菜',
-'发蜡' => '髮蠟',
-'发踊冲冠' => '髮踴沖冠',
-'发辫' => '髮辮',
-'发针' => '髮針',
-'发钗' => '髮釵',
-'发长' => '髮長',
-'发际' => '髮際',
-'发雕' => '髮雕',
-'发霜' => '髮霜',
-'发饰' => '髮飾',
-'发髻' => '髮髻',
-'发鬓' => '髮鬢',
-'髯胡' => '髯鬍',
-'髼松' => '髼鬆',
-'鬅松' => '鬅鬆',
-'松一口气' => '鬆一口氣',
-'松了' => '鬆了',
-'松些' => '鬆些',
-'松元音' => '鬆元音',
-'松劲' => '鬆勁',
-'松动' => '鬆動',
-'松化' => '鬆化',
-'松口' => '鬆口',
-'松喉' => '鬆喉',
-'松土' => '鬆土',
-'松宽' => '鬆寬',
-'松弛' => '鬆弛',
-'松快' => '鬆快',
-'松懈' => '鬆懈',
-'松手' => '鬆手',
-'松掉' => '鬆掉',
-'松散' => '鬆散',
-'松柔' => '鬆柔',
-'松气' => '鬆氣',
-'松浮' => '鬆浮',
-'松绑' => '鬆綁',
-'松紧' => '鬆緊',
-'松缓' => '鬆緩',
-'松脆' => '鬆脆',
-'松脱' => '鬆脫',
-'松蛋' => '鬆蛋',
-'松起' => '鬆起',
-'松软' => '鬆軟',
-'松通' => '鬆通',
-'松开' => '鬆開',
-'松饼' => '鬆餅',
-'松松地' => '鬆鬆地',
-'鬈发' => '鬈髮',
-'胡子' => '鬍子',
-'胡梢' => '鬍梢',
-'胡渣' => '鬍渣',
-'胡髭' => '鬍髭',
-'胡髯' => '鬍髯',
-'胡须' => '鬍鬚',
-'鬒发' => '鬒髮',
-'须根' => '鬚根',
-'须毛' => '鬚毛',
-'须生' => '鬚生',
-'须眉' => '鬚眉',
-'须发' => '鬚髮',
-'须胡' => '鬚鬍',
-'须须' => '鬚鬚',
-'须鲨' => '鬚鯊',
-'须鲸' => '鬚鯨',
-'鬓发' => '鬢髮',
-'斗不过' => '鬥不過',
-'斗了' => '鬥了',
-'斗来斗去' => '鬥來鬥去',
-'斗倒' => '鬥倒',
-'斗分子' => '鬥分子',
-'斗剑' => '鬥劍',
-'斗力' => '鬥力',
-'斗劲' => '鬥勁',
-'斗勇' => '鬥勇',
-'斗胜' => '鬥勝',
-'斗口' => '鬥口',
-'斗合' => '鬥合',
-'斗嘴' => '鬥嘴',
-'斗地主' => '鬥地主',
-'斗垮' => '鬥垮',
-'斗士' => '鬥士',
-'斗富' => '鬥富',
-'斗巧' => '鬥巧',
-'斗幌子' => '鬥幌子',
-'斗弄' => '鬥弄',
-'斗引' => '鬥引',
-'斗别气' => '鬥彆氣',
-'斗彩' => '鬥彩',
-'斗心眼' => '鬥心眼',
-'斗志' => '鬥志',
-'斗闷' => '鬥悶',
-'斗成' => '鬥成',
-'斗战' => '鬥戰',
-'斗打' => '鬥打',
-'斗批改' => '鬥批改',
-'斗技' => '鬥技',
-'斗败' => '鬥敗',
-'斗文' => '鬥文',
-'斗智' => '鬥智',
-'斗暴' => '鬥暴',
-'斗武' => '鬥武',
-'斗殴' => '鬥毆',
-'斗气' => '鬥氣',
-'斗法' => '鬥法',
-'斗争' => '鬥爭',
-'斗争斗合' => '鬥爭鬥合',
-'斗牌' => '鬥牌',
-'斗牙拌齿' => '鬥牙拌齒',
-'斗牙斗齿' => '鬥牙鬥齒',
-'斗牛' => '鬥牛',
-'斗犀台' => '鬥犀臺',
-'斗犬' => '鬥犬',
-'斗狗' => '鬥狗',
-'斗狠' => '鬥狠',
-'斗兽' => '鬥獸',
-'斗叠' => '鬥疊',
-'斗百草' => '鬥百草',
-'斗眼' => '鬥眼',
-'斗私批修' => '鬥私批修',
-'斗而铸兵' => '鬥而鑄兵',
-'斗而铸锥' => '鬥而鑄錐',
-'斗脚' => '鬥腳',
-'斗舰' => '鬥艦',
-'斗茶' => '鬥茶',
-'斗草' => '鬥草',
-'斗叶儿' => '鬥葉兒',
-'斗叶子' => '鬥葉子',
-'斗蛐' => '鬥蛐',
-'斗蟋蟀' => '鬥蟋蟀',
-'斗话' => '鬥話',
-'斗艳' => '鬥豔',
-'斗起' => '鬥起',
-'斗趣' => '鬥趣',
-'斗闲气' => '鬥閒氣',
-'斗鸡' => '鬥雞',
-'斗雪红' => '鬥雪紅',
-'斗头' => '鬥頭',
-'斗风' => '鬥風',
-'斗饤' => '鬥飣',
-'斗斗' => '鬥鬥',
-'斗哄' => '鬥鬨',
-'斗鱼' => '鬥魚',
-'斗鸭' => '鬥鴨',
-'斗鹌鹑' => '鬥鵪鶉',
-'斗丽' => '鬥麗',
-'斗龙' => '鬥龍',
-'闹表' => '鬧錶',
-'闹钟' => '鬧鐘',
-'哄动' => '鬨動',
-'哄堂' => '鬨堂',
-'哄笑' => '鬨笑',
-'郁伊' => '鬱伊',
-'郁勃' => '鬱勃',
-'郁卒' => '鬱卒',
-'郁南' => '鬱南',
-'郁堙不偶' => '鬱堙不偶',
-'郁塞' => '鬱塞',
-'郁垒' => '鬱壘',
-'郁律' => '鬱律',
-'郁悒' => '鬱悒',
-'郁闷' => '鬱悶',
-'郁愤' => '鬱憤',
-'郁抑' => '鬱抑',
-'郁挹' => '鬱挹',
-'郁林' => '鬱林',
-'郁气' => '鬱氣',
-'郁江' => '鬱江',
-'郁沉沉' => '鬱沉沉',
-'郁泱' => '鬱泱',
-'郁火' => '鬱火',
-'郁热' => '鬱熱',
-'郁燠' => '鬱燠',
-'郁症' => '鬱症',
-'郁积' => '鬱積',
-'郁纡' => '鬱紆',
-'郁结' => '鬱結',
-'郁蒸' => '鬱蒸',
-'郁蓊' => '鬱蓊',
-'郁血' => '鬱血',
-'郁邑' => '鬱邑',
-'郁郁' => '鬱郁',
-'郁金' => '鬱金',
-'郁闭' => '鬱閉',
-'郁陶' => '鬱陶',
-'郁郁不平' => '鬱鬱不平',
-'郁郁不乐' => '鬱鬱不樂',
-'郁郁寡欢' => '鬱鬱寡歡',
-'郁郁而终' => '鬱鬱而終',
-'郁郁苍苍' => '鬱鬱蒼蒼',
-'郁郁葱葱' => '鬱鬱蔥蔥',
-'郁黑' => '鬱黑',
-'鬼气冲天' => '鬼氣衝天',
-'鬼谷子' => '鬼谷子',
-'魂牵梦系' => '魂牽夢繫',
-'魏征' => '魏徵',
-'魔表' => '魔錶',
-'鱼干' => '魚乾',
-'鱼松' => '魚鬆',
-'鮮于' => '鮮于',
-'鲜于' => '鮮于',
-'鲸须' => '鯨鬚',
-'鳥栖' => '鳥栖',
-'鸟栖市' => '鳥栖市',
-'凤梨干' => '鳳梨乾',
-'鸣钟' => '鳴鐘',
-'鸿范' => '鴻範',
-'鹅准' => '鵝準',
-'鹄发' => '鵠髮',
-'雕心雁爪' => '鵰心雁爪',
-'雕悍' => '鵰悍',
-'雕翎' => '鵰翎',
-'雕鹗' => '鵰鶚',
-'鹤峰县' => '鶴峯縣',
-'鹤吊' => '鶴弔',
-'鹤发' => '鶴髮',
-'鸾鉴' => '鸞鑑',
-'鹰雕' => '鹰鵰',
-'咸味' => '鹹味',
-'咸嘴淡舌' => '鹹嘴淡舌',
-'咸土' => '鹹土',
-'咸度' => '鹹度',
-'咸得' => '鹹得',
-'咸批' => '鹹批',
-'咸水' => '鹹水',
-'咸派' => '鹹派',
-'咸海' => '鹹海',
-'咸淡' => '鹹淡',
-'咸湖' => '鹹湖',
-'咸汤' => '鹹湯',
-'咸潟' => '鹹潟',
-'咸湿' => '鹹濕',
-'咸的' => '鹹的',
-'咸粥' => '鹹粥',
-'咸肉' => '鹹肉',
-'咸菜' => '鹹菜',
-'咸菜干' => '鹹菜乾',
-'咸蛋' => '鹹蛋',
-'咸猪' => '鹹豬',
-'咸类' => '鹹類',
-'咸食' => '鹹食',
-'咸鱼' => '鹹魚',
-'咸鸭蛋' => '鹹鴨蛋',
-'咸卤' => '鹹鹵',
-'咸咸' => '鹹鹹',
-'盐打怎么咸' => '鹽打怎麼鹹',
-'盐卤' => '鹽滷',
-'盐余' => '鹽餘',
-'鹿場里' => '鹿場里',
-'丽于' => '麗於',
-'麟游' => '麟遊',
-'曲酒' => '麯酒',
-'曲尘' => '麴塵',
-'曲櫱' => '麴櫱',
-'曲秀才' => '麴秀才',
-'曲车' => '麴車',
-'曲道士' => '麴道士',
-'曲钱' => '麴錢',
-'曲霉' => '麴黴',
-'麹霉' => '麴黴',
-'面人儿' => '麵人兒',
-'面包' => '麵包',
-'面坊' => '麵坊',
-'面坯儿' => '麵坯兒',
-'面塑' => '麵塑',
-'面店' => '麵店',
-'面厂' => '麵廠',
-'面摊' => '麵攤',
-'面杖' => '麵杖',
-'面条' => '麵條',
-'面汤' => '麵湯',
-'面浆' => '麵漿',
-'面疙瘩' => '麵疙瘩',
-'面皮' => '麵皮',
-'面码儿' => '麵碼兒',
-'面筋' => '麵筋',
-'面粉' => '麵粉',
-'面糊' => '麵糊',
-'面团' => '麵糰',
-'面缸' => '麵缸',
-'面茶' => '麵茶',
-'面制品' => '麵製品',
-'面食' => '麵食',
-'面饺' => '麵餃',
-'面饼' => '麵餅',
-'面馆' => '麵館',
-'面点、' => '麵點、',
-'面点师' => '麵點師',
-'麻将席' => '麻將蓆',
-'麻酱面' => '麻醬麵',
-'黄干黑瘦' => '黃乾黑瘦',
-'黄岩区' => '黃巖區',
-'黄岩县' => '黃巖縣',
-'黄历' => '黃曆',
-'黃杰' => '黃杰',
-'黄杰' => '黃杰',
-'黄历史' => '黃歷史',
-'黄白术' => '黃白術',
-'黃詩杰' => '黃詩杰',
-'黄诗杰' => '黃詩杰',
-'黄金表' => '黃金表',
-'黃鈺筑' => '黃鈺筑',
-'黄钰筑' => '黃鈺筑',
-'黄钟' => '黃鐘',
-'黄发' => '黃髮',
-'黄曲毒素' => '黃麴毒素',
-'黎克特制' => '黎克特制',
-'黎吉云' => '黎吉雲',
-'黎吉雲' => '黎吉雲',
-'黑奴吁天录' => '黑奴籲天錄',
-'黑干将' => '黑幹將',
-'黑长发' => '黑長髮',
-'黑发' => '黑髮',
-'点个赞' => '點個讚',
-'点札' => '點劄',
-'点半钟' => '點半鐘',
-'点多钟' => '點多鐘',
-'点里' => '點裡',
-'点赞' => '點讚',
-'点里程' => '點里程',
-'点钟' => '點鐘',
-'霉毒' => '黴毒',
-'霉素' => '黴素',
-'霉菌' => '黴菌',
-'霉黑' => '黴黑',
-'霉黧' => '黴黧',
-'鼓里' => '鼓裡',
-'鼓噪' => '鼓譟',
-'冬冬鼓' => '鼕鼕鼓',
-'咚咚鼓' => '鼕鼕鼓',
-'鼠曲草' => '鼠麴草',
-'鼻梁儿' => '鼻梁兒',
-'鼻梁' => '鼻樑',
-'鼻准' => '鼻準',
-'齐王舍牛' => '齊王捨牛',
-'齿危发秀' => '齒危髮秀',
-'齿落发白' => '齒落髮白',
-'齿发' => '齒髮',
-'龙岩' => '龍巖',
-'龙卷' => '龍捲',
-'龙眼干' => '龍眼乾',
-'龙须' => '龍鬚',
-'龙须面' => '龍鬚麵',
-'龙斗虎伤' => '龍鬥虎傷',
-'龜山庄' => '龜山庄',
-'龟鉴' => '龜鑑',
-',并力' => ',並力',
-',并力攻' => ',并力攻',
-',并力討' => ',并力討',
-',并力讨' => ',并力討',
-',个中' => ',箇中',
-);
-
-$zh2Hans = array(
-'㑯' => '㑔',
-'㑳' => '㑇',
-'㑶' => '㐹',
-'㒓' => '𠉂',
-'㒺' => '罔',
-'㓂' => '寇',
-'㓨' => '刾',
-'㕁' => '却',
-'㕑' => '厨',
-'㕘' => '参',
-'㕥' => '以',
-'㗲' => '𠵾',
-'㘚' => '㘎',
-'㘭' => '坳',
-'㜄' => '㚯',
-'㜏' => '㛣',
-'㜢' => '𡞱',
-'㜷' => '𡝠',
-'㝛' => '宿',
-'㝠' => '冥',
-'㞞' => '𪨊',
-'㠀' => '岛',
-'㠏' => '㟆',
-'㠯' => '以',
-'㠶' => '帆',
-'㡌' => '帽',
-'㢘' => '廉',
-'㢝' => '𢋈',
-'㤙' => '恩',
-'㥦' => '惬',
-'㥮' => '㤘',
-'㦎' => '𢛯',
-'㨗' => '捷',
-'㨪' => '晃',
-'㨿' => '据',
-'㩗' => '携',
-'㩜' => '㨫',
-'㩦' => '携',
-'㩳' => '㧐',
-'㪚' => '散',
-'㪟' => '敦',
-'㬉' => '暖',
-'㬪' => '叠',
-'㯭' => '橹',
-'㱃' => '饮',
-'㳒' => '法',
-'㴱' => '深',
-'㷿' => '𤈷',
-'㺏' => '𤠋',
-'㼝' => '碗',
-'㽞' => '留',
-'㿜' => '瘪',
-'㿧' => '𤽯',
-'䀹' => '𥅴',
-'䁪' => '𥇢',
-'䁻' => '䀥',
-'䈰' => '筲',
-'䉙' => '𥬀',
-'䉬' => '𫂈',
-'䉲' => '𥮜',
-'䊀' => '糊',
-'䊭' => '𥺅',
-'䊷' => '䌶',
-'䋙' => '䌺',
-'䋚' => '䌻',
-'䋹' => '䌿',
-'䋻' => '䌾',
-'䋿' => '𦈓',
-'䌈' => '𦈖',
-'䌋' => '𦈘',
-'䌖' => '𦈜',
-'䌝' => '𦈟',
-'䌟' => '𦈞',
-'䌥' => '𦈠',
-'䌰' => '𦈙',
-'䎱' => '䎬',
-'䕳' => '𦰴',
-'䗬' => '蜂',
-'䗿' => '𧉞',
-'䘏' => '恤',
-'䘑' => '脉',
-'䘚' => '卒',
-'䙡' => '䙌',
-'䛐' => '词',
-'䛡' => '话',
-'䜀' => '䜧',
-'䝔' => '獾',
-'䝻' => '𧹕',
-'䝼' => '䞍',
-'䞈' => '𧹑',
-'䠀' => '蹚',
-'䠶' => '射',
-'䢨' => '𨑹',
-'䥇' => '䦂',
-'䥥' => '镰',
-'䥩' => '𨱖',
-'䥱' => '䥾',
-'䦘' => '𨸄',
-'䦛' => '䦶',
-'䦟' => '䦷',
-'䦳' => '𨷿',
-'䧢' => '𨸟',
-'䪏' => '𩏼',
-'䪗' => '𩐀',
-'䪘' => '𩏿',
-'䫴' => '𩖗',
-'䬃' => '飒',
-'䬘' => '𩙮',
-'䬝' => '𩙯',
-'䬞' => '𩙧',
-'䭀' => '𩠇',
-'䭃' => '𩠈',
-'䭾' => '驮',
-'䭿' => '𩧭',
-'䮝' => '𩧰',
-'䮞' => '𩨁',
-'䮠' => '𩧿',
-'䮫' => '𩨇',
-'䮳' => '𩨏',
-'䮾' => '𩧪',
-'䯀' => '䯅',
-'䰟' => '魂',
-'䰾' => '鲃',
-'䱙' => '𩾈',
-'䱬' => '𩾊',
-'䱰' => '𩾋',
-'䱷' => '䲣',
-'䱽' => '䲝',
-'䲁' => '鳚',
-'䲖' => '𩾂',
-'䲘' => '鳤',
-'䲰' => '𪉂',
-'䳘' => '鹅',
-'䴉' => '鹮',
-'䴬' => '𪎈',
-'䴴' => '𪎋',
-'䶊' => '衄',
-'丟' => '丢',
-'丣' => '卯',
-'並' => '并',
-'乗' => '乘',
-'乹' => '干',
-'乾' => '干',
-'亁' => '干',
-'亂' => '乱',
-'亙' => '亘',
-'亝' => '斋',
-'亞' => '亚',
-'亱' => '夜',
-'亷' => '廉',
-'亾' => '亡',
-'佇' => '伫',
-'佈' => '布',
-'佔' => '占',
-'併' => '并',
-'來' => '来',
-'侖' => '仑',
-'侶' => '侣',
-'俁' => '俣',
-'係' => '系',
-'俔' => '伣',
-'俠' => '侠',
-'俥' => '伡',
-'俻' => '备',
-'倀' => '伥',
-'倆' => '俩',
-'倈' => '俫',
-'倉' => '仓',
-'個' => '个',
-'倐' => '倏',
-'們' => '们',
-'倖' => '幸',
-'倣' => '仿',
-'倫' => '伦',
-'倲' => '㑈',
-'倸' => '睬',
-'偉' => '伟',
-'偑' => '㐽',
-'側' => '侧',
-'偵' => '侦',
-'偽' => '伪',
-'傌' => '㐷',
-'傑' => '杰',
-'傖' => '伧',
-'傘' => '伞',
-'備' => '备',
-'傚' => '效',
-'傢' => '家',
-'傭' => '佣',
-'傯' => '偬',
-'傳' => '传',
-'傴' => '伛',
-'債' => '债',
-'傷' => '伤',
-'傾' => '倾',
-'僂' => '偻',
-'僅' => '仅',
-'僉' => '佥',
-'僊' => '仙',
-'働' => '动',
-'僑' => '侨',
-'僕' => '仆',
-'僞' => '伪',
-'僥' => '侥',
-'僨' => '偾',
-'僱' => '雇',
-'價' => '价',
-'儀' => '仪',
-'儂' => '侬',
-'億' => '亿',
-'儈' => '侩',
-'儉' => '俭',
-'儌' => '侥',
-'儐' => '傧',
-'儔' => '俦',
-'儕' => '侪',
-'儘' => '尽',
-'償' => '偿',
-'儣' => '𠆲',
-'優' => '优',
-'儲' => '储',
-'儷' => '俪',
-'儸' => '㑩',
-'儺' => '傩',
-'儻' => '傥',
-'儼' => '俨',
-'兇' => '凶',
-'兌' => '兑',
-'兎' => '兔',
-'兒' => '儿',
-'兗' => '兖',
-'兠' => '兜',
-'內' => '内',
-'兩' => '两',
-'冄' => '冉',
-'冊' => '册',
-'冐' => '冒',
-'冑' => '胄',
-'冪' => '幂',
-'冺' => '泯',
-'凈' => '净',
-'凍' => '冻',
-'凙' => '𪞝',
-'凜' => '凛',
-'凢' => '凡',
-'凱' => '凯',
-'凴' => '凭',
-'別' => '别',
-'刦' => '劫',
-'刧' => '劫',
-'刪' => '删',
-'刼' => '劫',
-'剄' => '刭',
-'則' => '则',
-'剉' => '锉',
-'剋' => '克',
-'剎' => '刹',
-'剏' => '创',
-'剗' => '刬',
-'剙' => '创',
-'剛' => '刚',
-'剝' => '剥',
-'剮' => '剐',
-'剳' => '札',
-'剴' => '剀',
-'創' => '创',
-'剷' => '铲',
-'剹' => '戮',
-'剾' => '𠛅',
-'劃' => '划',
-'劄' => '札',
-'劇' => '剧',
-'劉' => '刘',
-'劊' => '刽',
-'劌' => '刿',
-'劍' => '剑',
-'劏' => '㓥',
-'劑' => '剂',
-'劒' => '剑',
-'劚' => '㔉',
-'効' => '效',
-'勁' => '劲',
-'勅' => '敕',
-'勌' => '倦',
-'勑' => '敕',
-'動' => '动',
-'務' => '务',
-'勛' => '勋',
-'勝' => '胜',
-'勞' => '劳',
-'勢' => '势',
-'勦' => '剿',
-'勩' => '勚',
-'勱' => '劢',
-'勳' => '勋',
-'勵' => '励',
-'勸' => '劝',
-'勻' => '匀',
-'匟' => '炕',
-'匭' => '匦',
-'匯' => '汇',
-'匱' => '匮',
-'匲' => '奁',
-'匳' => '奁',
-'區' => '区',
-'協' => '协',
-'卹' => '恤',
-'卻' => '却',
-'卽' => '即',
-'厀' => '膝',
-'厙' => '厍',
-'厠' => '厕',
-'厤' => '历',
-'厭' => '厌',
-'厰' => '厂',
-'厲' => '厉',
-'厴' => '厣',
-'參' => '参',
-'叄' => '叁',
-'叢' => '丛',
-'吚' => '咿',
-'吳' => '吴',
-'吶' => '呐',
-'呂' => '吕',
-'呌' => '叫',
-'呪' => '咒',
-'咊' => '和',
-'咼' => '呙',
-'員' => '员',
-'哯' => '𠯟',
-'哶' => '咩',
-'唄' => '呗',
-'唕' => '唣',
-'唘' => '启',
-'唚' => '吣',
-'唸' => '念',
-'啎' => '忤',
-'問' => '问',
-'啑' => '喋',
-'啓' => '启',
-'啗' => '啖',
-'啞' => '哑',
-'啟' => '启',
-'啢' => '唡',
-'啣' => '衔',
-'喎' => '㖞',
-'喚' => '唤',
-'喪' => '丧',
-'喫' => '吃',
-'喬' => '乔',
-'單' => '单',
-'喲' => '哟',
-'嗁' => '啼',
-'嗆' => '呛',
-'嗇' => '啬',
-'嗊' => '唝',
-'嗎' => '吗',
-'嗚' => '呜',
-'嗩' => '唢',
-'嗶' => '哔',
-'嗹' => '𪡏',
-'嘅' => '慨',
-'嘆' => '叹',
-'嘍' => '喽',
-'嘑' => '呼',
-'嘓' => '啯',
-'嘔' => '呕',
-'嘖' => '啧',
-'嘗' => '尝',
-'嘜' => '唛',
-'嘠' => '嘎',
-'嘩' => '哗',
-'嘮' => '唠',
-'嘯' => '啸',
-'嘰' => '叽',
-'嘵' => '哓',
-'嘷' => '嗥',
-'嘸' => '呒',
-'嘽' => '啴',
-'噅' => '𠯠',
-'噉' => '啖',
-'噓' => '嘘',
-'噚' => '㖊',
-'噝' => '咝',
-'噠' => '哒',
-'噥' => '哝',
-'噦' => '哕',
-'噯' => '嗳',
-'噲' => '哙',
-'噴' => '喷',
-'噸' => '吨',
-'噹' => '当',
-'嚀' => '咛',
-'嚇' => '吓',
-'嚌' => '哜',
-'嚐' => '尝',
-'嚕' => '噜',
-'嚙' => '啮',
-'嚥' => '咽',
-'嚦' => '呖',
-'嚨' => '咙',
-'嚮' => '向',
-'嚲' => '亸',
-'嚳' => '喾',
-'嚴' => '严',
-'嚶' => '嘤',
-'囀' => '啭',
-'囁' => '嗫',
-'囂' => '嚣',
-'囅' => '冁',
-'囈' => '呓',
-'囉' => '啰',
-'囌' => '苏',
-'囑' => '嘱',
-'囓' => '啮',
-'囙' => '因',
-'囪' => '囱',
-'圅' => '函',
-'圇' => '囵',
-'國' => '国',
-'圍' => '围',
-'園' => '园',
-'圓' => '圆',
-'圖' => '图',
-'團' => '团',
-'圞' => '𪢮',
-'坿' => '附',
-'垜' => '垛',
-'垵' => '埯',
-'埡' => '垭',
-'埰' => '采',
-'執' => '执',
-'堅' => '坚',
-'堊' => '垩',
-'堝' => '埚',
-'堯' => '尧',
-'報' => '报',
-'場' => '场',
-'塊' => '块',
-'塋' => '茔',
-'塏' => '垲',
-'塒' => '埘',
-'塗' => '涂',
-'塟' => '葬',
-'塢' => '坞',
-'塤' => '埙',
-'塲' => '场',
-'塵' => '尘',
-'塹' => '堑',
-'墊' => '垫',
-'墖' => '塔',
-'墜' => '坠',
-'墮' => '堕',
-'墰' => '坛',
-'墳' => '坟',
-'墻' => '墙',
-'墾' => '垦',
-'壇' => '坛',
-'壈' => '𡒄',
-'壋' => '垱',
-'壎' => '埙',
-'壓' => '压',
-'壘' => '垒',
-'壙' => '圹',
-'壚' => '垆',
-'壜' => '坛',
-'壞' => '坏',
-'壟' => '垄',
-'壠' => '垅',
-'壢' => '坜',
-'壩' => '坝',
-'壯' => '壮',
-'壺' => '壶',
-'壻' => '婿',
-'壼' => '壸',
-'壽' => '寿',
-'夘' => '卯',
-'夠' => '够',
-'夢' => '梦',
-'夥' => '伙',
-'夾' => '夹',
-'奐' => '奂',
-'奧' => '奥',
-'奩' => '奁',
-'奪' => '夺',
-'奬' => '奖',
-'奮' => '奋',
-'奼' => '姹',
-'妝' => '妆',
-'妬' => '妒',
-'妳' => '你',
-'妷' => '侄',
-'姉' => '姊',
-'姍' => '姗',
-'姙' => '妊',
-'姦' => '奸',
-'姪' => '侄',
-'姸' => '妍',
-'娛' => '娱',
-'婁' => '娄',
-'婣' => '姻',
-'婦' => '妇',
-'婬' => '淫',
-'婭' => '娅',
-'媍' => '妇',
-'媧' => '娲',
-'媯' => '妫',
-'媰' => '㛀',
-'媼' => '媪',
-'媽' => '妈',
-'媿' => '愧',
-'嫋' => '袅',
-'嫗' => '妪',
-'嫰' => '嫩',
-'嫵' => '妩',
-'嫺' => '娴',
-'嫻' => '娴',
-'嫿' => '婳',
-'嬀' => '妫',
-'嬃' => '媭',
-'嬈' => '娆',
-'嬋' => '婵',
-'嬌' => '娇',
-'嬙' => '嫱',
-'嬝' => '袅',
-'嬡' => '嫒',
-'嬤' => '嬷',
-'嬪' => '嫔',
-'嬭' => '奶',
-'嬰' => '婴',
-'嬸' => '婶',
-'嬾' => '懒',
-'孃' => '娘',
-'孋' => '㛤',
-'孌' => '娈',
-'孫' => '孙',
-'學' => '学',
-'孼' => '孽',
-'孿' => '孪',
-'宂' => '冗',
-'宮' => '宫',
-'寀' => '采',
-'寃' => '冤',
-'寑' => '寝',
-'寢' => '寝',
-'實' => '实',
-'寧' => '宁',
-'審' => '审',
-'寫' => '写',
-'寬' => '宽',
-'寳' => '宝',
-'寵' => '宠',
-'寶' => '宝',
-'尅' => '克',
-'將' => '将',
-'專' => '专',
-'尋' => '寻',
-'對' => '对',
-'導' => '导',
-'尒' => '尔',
-'尙' => '尚',
-'尟' => '鲜',
-'尠' => '鲜',
-'尷' => '尴',
-'屆' => '届',
-'屍' => '尸',
-'屓' => '屃',
-'屛' => '屏',
-'屜' => '屉',
-'屢' => '屡',
-'層' => '层',
-'屨' => '屦',
-'屩' => '𪨗',
-'屬' => '属',
-'屭' => '屃',
-'岅' => '坂',
-'岡' => '冈',
-'峝' => '峒',
-'峴' => '岘',
-'島' => '岛',
-'峽' => '峡',
-'崍' => '崃',
-'崗' => '岗',
-'崢' => '峥',
-'崬' => '岽',
-'嵐' => '岚',
-'嵗' => '岁',
-'嵼' => '𡶴',
-'嶁' => '嵝',
-'嶃' => '崭',
-'嶄' => '崭',
-'嶇' => '岖',
-'嶔' => '嵚',
-'嶗' => '崂',
-'嶠' => '峤',
-'嶢' => '峣',
-'嶧' => '峄',
-'嶨' => '峃',
-'嶮' => '崄',
-'嶸' => '嵘',
-'嶺' => '岭',
-'嶼' => '屿',
-'嶽' => '岳',
-'巋' => '岿',
-'巒' => '峦',
-'巔' => '巅',
-'巖' => '岩',
-'巗' => '岩',
-'巰' => '巯',
-'巵' => '卮',
-'帀' => '匝',
-'帋' => '纸',
-'帥' => '帅',
-'師' => '师',
-'帬' => '裙',
-'帳' => '帐',
-'帶' => '带',
-'幀' => '帧',
-'幃' => '帏',
-'幇' => '帮',
-'幑' => '徽',
-'幗' => '帼',
-'幘' => '帻',
-'幙' => '幕',
-'幚' => '帮',
-'幟' => '帜',
-'幣' => '币',
-'幫' => '帮',
-'幬' => '帱',
-'幹' => '干',
-'幾' => '几',
-'庫' => '库',
-'庻' => '庶',
-'庽' => '寓',
-'廁' => '厕',
-'廂' => '厢',
-'廄' => '厩',
-'廈' => '厦',
-'廎' => '庼',
-'廐' => '厩',
-'廕' => '荫',
-'廚' => '厨',
-'廝' => '厮',
-'廟' => '庙',
-'廠' => '厂',
-'廡' => '庑',
-'廢' => '废',
-'廣' => '广',
-'廩' => '廪',
-'廬' => '庐',
-'廳' => '厅',
-'廵' => '巡',
-'廹' => '迫',
-'廻' => '回',
-'廼' => '乃',
-'弒' => '弑',
-'弔' => '吊',
-'弳' => '弪',
-'張' => '张',
-'強' => '强',
-'彆' => '别',
-'彈' => '弹',
-'彌' => '弥',
-'彎' => '弯',
-'彙' => '汇',
-'彞' => '彝',
-'彠' => '彟',
-'彥' => '彦',
-'彫' => '雕',
-'彲' => '彨',
-'徃' => '往',
-'後' => '后',
-'徑' => '径',
-'從' => '从',
-'徠' => '徕',
-'徧' => '遍',
-'復' => '复',
-'徵' => '征',
-'徹' => '彻',
-'怱' => '匆',
-'怳' => '恍',
-'恆' => '恒',
-'恠' => '怪',
-'恡' => '吝',
-'恥' => '耻',
-'悅' => '悦',
-'悞' => '悮',
-'悤' => '匆',
-'悵' => '怅',
-'悶' => '闷',
-'悽' => '凄',
-'惏' => '婪',
-'惡' => '恶',
-'惥' => '恿',
-'惱' => '恼',
-'惲' => '恽',
-'惷' => '蠢',
-'惻' => '恻',
-'愛' => '爱',
-'愜' => '惬',
-'愨' => '悫',
-'愴' => '怆',
-'愷' => '恺',
-'愽' => '博',
-'愾' => '忾',
-'慄' => '栗',
-'態' => '态',
-'慍' => '愠',
-'慘' => '惨',
-'慙' => '惭',
-'慚' => '惭',
-'慟' => '恸',
-'慣' => '惯',
-'慤' => '悫',
-'慪' => '怄',
-'慫' => '怂',
-'慮' => '虑',
-'慳' => '悭',
-'慴' => '慑',
-'慶' => '庆',
-'慼' => '戚',
-'慽' => '戚',
-'慾' => '欲',
-'憂' => '忧',
-'憇' => '憩',
-'憊' => '惫',
-'憐' => '怜',
-'憑' => '凭',
-'憒' => '愦',
-'憚' => '惮',
-'憤' => '愤',
-'憫' => '悯',
-'憮' => '怃',
-'憲' => '宪',
-'憶' => '忆',
-'懀' => '𢙓',
-'懇' => '恳',
-'應' => '应',
-'懌' => '怿',
-'懍' => '懔',
-'懟' => '怼',
-'懣' => '懑',
-'懨' => '恹',
-'懲' => '惩',
-'懶' => '懒',
-'懷' => '怀',
-'懸' => '悬',
-'懺' => '忏',
-'懼' => '惧',
-'懾' => '慑',
-'戀' => '恋',
-'戇' => '戆',
-'戔' => '戋',
-'戞' => '戛',
-'戧' => '戗',
-'戩' => '戬',
-'戯' => '戏',
-'戰' => '战',
-'戱' => '戯',
-'戲' => '戏',
-'戶' => '户',
-'戹' => '厄',
-'扞' => '捍',
-'抝' => '拗',
-'拋' => '抛',
-'拚' => '拼',
-'挩' => '捝',
-'挱' => '挲',
-'挵' => '弄',
-'挾' => '挟',
-'捄' => '救',
-'捨' => '舍',
-'捫' => '扪',
-'捲' => '卷',
-'掃' => '扫',
-'掄' => '抡',
-'掆' => '㧏',
-'掗' => '挜',
-'掙' => '挣',
-'掛' => '挂',
-'採' => '采',
-'掽' => '碰',
-'揀' => '拣',
-'揑' => '捏',
-'揚' => '扬',
-'換' => '换',
-'揫' => '揪',
-'揮' => '挥',
-'揷' => '插',
-'揹' => '背',
-'搆' => '构',
-'搇' => '揿',
-'搉' => '榷',
-'損' => '损',
-'搖' => '摇',
-'搗' => '捣',
-'搤' => '扼',
-'搥' => '捶',
-'搨' => '拓',
-'搯' => '掏',
-'搵' => '揾',
-'搶' => '抢',
-'搾' => '榨',
-'摃' => '扛',
-'摋' => '𢫬',
-'摑' => '掴',
-'摜' => '掼',
-'摟' => '搂',
-'摯' => '挚',
-'摳' => '抠',
-'摶' => '抟',
-'摺' => '折',
-'摻' => '掺',
-'撈' => '捞',
-'撏' => '挦',
-'撐' => '撑',
-'撓' => '挠',
-'撝' => '㧑',
-'撟' => '挢',
-'撡' => '操',
-'撣' => '掸',
-'撥' => '拨',
-'撦' => '扯',
-'撫' => '抚',
-'撲' => '扑',
-'撳' => '揿',
-'撻' => '挞',
-'撾' => '挝',
-'撿' => '捡',
-'擁' => '拥',
-'擄' => '掳',
-'擇' => '择',
-'擊' => '击',
-'擋' => '挡',
-'擓' => '㧟',
-'擔' => '担',
-'擕' => '携',
-'據' => '据',
-'擠' => '挤',
-'擣' => '𢭏',
-'擧' => '举',
-'擬' => '拟',
-'擯' => '摈',
-'擰' => '拧',
-'擱' => '搁',
-'擲' => '掷',
-'擴' => '扩',
-'擷' => '撷',
-'擺' => '摆',
-'擻' => '擞',
-'擼' => '撸',
-'擽' => '㧰',
-'擾' => '扰',
-'攄' => '摅',
-'攆' => '撵',
-'攏' => '拢',
-'攔' => '拦',
-'攖' => '撄',
-'攙' => '搀',
-'攛' => '撺',
-'攜' => '携',
-'攝' => '摄',
-'攢' => '攒',
-'攣' => '挛',
-'攤' => '摊',
-'攩' => '挡',
-'攪' => '搅',
-'攬' => '揽',
-'攷' => '考',
-'敂' => '叩',
-'敍' => '叙',
-'敗' => '败',
-'敘' => '叙',
-'敵' => '敌',
-'數' => '数',
-'敺' => '驱',
-'斂' => '敛',
-'斃' => '毙',
-'斅' => '𢽾',
-'斆' => '敩',
-'斕' => '斓',
-'斬' => '斩',
-'斷' => '断',
-'於' => '于',
-'旂' => '旗',
-'旣' => '既',
-'旤' => '祸',
-'旹' => '时',
-'旾' => '春',
-'昬' => '昏',
-'時' => '时',
-'晉' => '晋',
-'晝' => '昼',
-'暈' => '晕',
-'暉' => '晖',
-'暘' => '旸',
-'暢' => '畅',
-'暫' => '暂',
-'暱' => '昵',
-'曄' => '晔',
-'曆' => '历',
-'曇' => '昙',
-'曉' => '晓',
-'曖' => '暧',
-'曠' => '旷',
-'曡' => '叠',
-'曥' => '𣆐',
-'曨' => '昽',
-'曬' => '晒',
-'書' => '书',
-'會' => '会',
-'朞' => '期',
-'朢' => '望',
-'朥' => '𦛨',
-'朧' => '胧',
-'朮' => '术',
-'朶' => '朵',
-'東' => '东',
-'杴' => '锨',
-'枱' => '台',
-'柵' => '栅',
-'柺' => '拐',
-'査' => '查',
-'栁' => '柳',
-'栞' => '刊',
-'栢' => '柏',
-'栰' => '筏',
-'桒' => '桑',
-'桮' => '杯',
-'桺' => '柳',
-'桿' => '杆',
-'梔' => '栀',
-'梘' => '枧',
-'條' => '条',
-'梟' => '枭',
-'梲' => '棁',
-'棄' => '弃',
-'棊' => '棋',
-'棖' => '枨',
-'棗' => '枣',
-'棟' => '栋',
-'棡' => '㭎',
-'棧' => '栈',
-'棲' => '栖',
-'棶' => '梾',
-'椏' => '桠',
-'椗' => '碇',
-'椲' => '㭏',
-'椶' => '棕',
-'椷' => '缄',
-'椾' => '笺',
-'楊' => '杨',
-'楓' => '枫',
-'楥' => '楦',
-'楨' => '桢',
-'業' => '业',
-'極' => '极',
-'榦' => '干',
-'榪' => '杩',
-'榮' => '荣',
-'榲' => '榅',
-'榿' => '桤',
-'構' => '构',
-'槍' => '枪',
-'槓' => '杠',
-'槕' => '桌',
-'槤' => '梿',
-'槧' => '椠',
-'槨' => '椁',
-'槮' => '椮',
-'槳' => '桨',
-'槶' => '椢',
-'槼' => '椝',
-'樁' => '桩',
-'樂' => '乐',
-'樅' => '枞',
-'樑' => '梁',
-'樓' => '楼',
-'標' => '标',
-'樞' => '枢',
-'樢' => '㭤',
-'樣' => '样',
-'樫' => '㭴',
-'樳' => '桪',
-'樸' => '朴',
-'樹' => '树',
-'樺' => '桦',
-'樿' => '椫',
-'橈' => '桡',
-'橋' => '桥',
-'橜' => '橛',
-'機' => '机',
-'橢' => '椭',
-'橫' => '横',
-'檁' => '檩',
-'檉' => '柽',
-'檔' => '档',
-'檜' => '桧',
-'檟' => '槚',
-'檢' => '检',
-'檣' => '樯',
-'檭' => '𣘴',
-'檮' => '梼',
-'檯' => '台',
-'檳' => '槟',
-'檸' => '柠',
-'檻' => '槛',
-'櫃' => '柜',
-'櫈' => '凳',
-'櫓' => '橹',
-'櫚' => '榈',
-'櫛' => '栉',
-'櫝' => '椟',
-'櫞' => '橼',
-'櫟' => '栎',
-'櫥' => '橱',
-'櫧' => '槠',
-'櫨' => '栌',
-'櫪' => '枥',
-'櫫' => '橥',
-'櫬' => '榇',
-'櫱' => '蘖',
-'櫳' => '栊',
-'櫸' => '榉',
-'櫻' => '樱',
-'欄' => '栏',
-'欅' => '榉',
-'權' => '权',
-'欍' => '𣐤',
-'欏' => '椤',
-'欒' => '栾',
-'欓' => '𣗋',
-'欖' => '榄',
-'欝' => '郁',
-'欞' => '棂',
-'欵' => '款',
-'欽' => '钦',
-'歎' => '叹',
-'歐' => '欧',
-'歛' => '敛',
-'歟' => '欤',
-'歡' => '欢',
-'歲' => '岁',
-'歴' => '历',
-'歷' => '历',
-'歸' => '归',
-'歿' => '殁',
-'殀' => '夭',
-'殘' => '残',
-'殞' => '殒',
-'殤' => '殇',
-'殨' => '㱮',
-'殫' => '殚',
-'殭' => '僵',
-'殮' => '殓',
-'殯' => '殡',
-'殰' => '㱩',
-'殲' => '歼',
-'殺' => '杀',
-'殻' => '壳',
-'殼' => '壳',
-'毀' => '毁',
-'毆' => '殴',
-'毧' => '绒',
-'毬' => '球',
-'毿' => '毵',
-'氂' => '牦',
-'氈' => '毡',
-'氊' => '毡',
-'氌' => '氇',
-'氣' => '气',
-'氫' => '氢',
-'氬' => '氩',
-'氳' => '氲',
-'氷' => '冰',
-'汙' => '污',
-'汚' => '污',
-'決' => '决',
-'沒' => '没',
-'沖' => '冲',
-'況' => '况',
-'泝' => '溯',
-'洩' => '泄',
-'洶' => '汹',
-'浹' => '浃',
-'涇' => '泾',
-'涖' => '莅',
-'涼' => '凉',
-'淒' => '凄',
-'淚' => '泪',
-'淛' => '浙',
-'淥' => '渌',
-'淨' => '净',
-'淩' => '凌',
-'淪' => '沦',
-'淵' => '渊',
-'淶' => '涞',
-'淺' => '浅',
-'渙' => '涣',
-'減' => '减',
-'渢' => '沨',
-'渦' => '涡',
-'測' => '测',
-'渾' => '浑',
-'湊' => '凑',
-'湞' => '浈',
-'湧' => '涌',
-'湯' => '汤',
-'湼' => '涅',
-'溈' => '沩',
-'準' => '准',
-'溝' => '沟',
-'溫' => '温',
-'溮' => '浉',
-'溳' => '涢',
-'溼' => '湿',
-'滄' => '沧',
-'滅' => '灭',
-'滌' => '涤',
-'滎' => '荥',
-'滙' => '汇',
-'滛' => '淫',
-'滬' => '沪',
-'滯' => '滞',
-'滲' => '渗',
-'滷' => '卤',
-'滸' => '浒',
-'滻' => '浐',
-'滾' => '滚',
-'滿' => '满',
-'漁' => '渔',
-'漊' => '溇',
-'漚' => '沤',
-'漢' => '汉',
-'漣' => '涟',
-'漬' => '渍',
-'漲' => '涨',
-'漵' => '溆',
-'漸' => '渐',
-'漿' => '浆',
-'潁' => '颍',
-'潄' => '漱',
-'潑' => '泼',
-'潔' => '洁',
-'潙' => '沩',
-'潛' => '潜',
-'潤' => '润',
-'潯' => '浔',
-'潰' => '溃',
-'潷' => '滗',
-'潿' => '涠',
-'澀' => '涩',
-'澁' => '涩',
-'澅' => '𣶩',
-'澆' => '浇',
-'澇' => '涝',
-'澐' => '沄',
-'澗' => '涧',
-'澠' => '渑',
-'澤' => '泽',
-'澦' => '滪',
-'澩' => '泶',
-'澮' => '浍',
-'澱' => '淀',
-'澾' => '㳠',
-'濁' => '浊',
-'濃' => '浓',
-'濄' => '㳡',
-'濆' => '𣸣',
-'濇' => '涩',
-'濕' => '湿',
-'濘' => '泞',
-'濜' => '浕',
-'濟' => '济',
-'濤' => '涛',
-'濧' => '㳔',
-'濫' => '滥',
-'濰' => '潍',
-'濱' => '滨',
-'濶' => '阔',
-'濺' => '溅',
-'濼' => '泺',
-'濾' => '滤',
-'瀂' => '澛',
-'瀃' => '𣽷',
-'瀅' => '滢',
-'瀆' => '渎',
-'瀇' => '㲿',
-'瀉' => '泻',
-'瀋' => '沈',
-'瀏' => '浏',
-'瀕' => '濒',
-'瀘' => '泸',
-'瀝' => '沥',
-'瀟' => '潇',
-'瀠' => '潆',
-'瀦' => '潴',
-'瀧' => '泷',
-'瀨' => '濑',
-'瀰' => '弥',
-'瀲' => '潋',
-'瀾' => '澜',
-'灃' => '沣',
-'灄' => '滠',
-'灋' => '法',
-'灑' => '洒',
-'灕' => '漓',
-'灘' => '滩',
-'灙' => '𣺼',
-'灝' => '灏',
-'灠' => '漤',
-'灣' => '湾',
-'灤' => '滦',
-'灧' => '滟',
-'灩' => '滟',
-'災' => '灾',
-'為' => '为',
-'烏' => '乌',
-'烖' => '灾',
-'烴' => '烃',
-'無' => '无',
-'煉' => '炼',
-'煑' => '煮',
-'煒' => '炜',
-'煗' => '暖',
-'煙' => '烟',
-'煢' => '茕',
-'煥' => '焕',
-'煩' => '烦',
-'煬' => '炀',
-'煱' => '㶽',
-'熅' => '煴',
-'熈' => '熙',
-'熉' => '𤈶',
-'熌' => '𤇄',
-'熒' => '荧',
-'熓' => '𤆡',
-'熗' => '炝',
-'熡' => '𤋏',
-'熱' => '热',
-'熲' => '颎',
-'熾' => '炽',
-'燁' => '烨',
-'燄' => '焰',
-'燈' => '灯',
-'燉' => '炖',
-'燒' => '烧',
-'燙' => '烫',
-'燜' => '焖',
-'營' => '营',
-'燦' => '灿',
-'燬' => '毁',
-'燭' => '烛',
-'燴' => '烩',
-'燶' => '㶶',
-'燻' => '熏',
-'燼' => '烬',
-'燾' => '焘',
-'爄' => '𤇃',
-'爍' => '烁',
-'爐' => '炉',
-'爗' => '烨',
-'爛' => '烂',
-'爭' => '争',
-'爲' => '为',
-'爺' => '爷',
-'爾' => '尔',
-'牀' => '床',
-'牆' => '墙',
-'牋' => '笺',
-'牎' => '窗',
-'牐' => '闸',
-'牓' => '榜',
-'牕' => '窗',
-'牘' => '牍',
-'牠' => '它',
-'牴' => '抵',
-'牽' => '牵',
-'犖' => '荦',
-'犢' => '犊',
-'犧' => '牺',
-'狀' => '状',
-'狥' => '徇',
-'狹' => '狭',
-'狽' => '狈',
-'猂' => '悍',
-'猙' => '狰',
-'猨' => '猿',
-'猶' => '犹',
-'猻' => '狲',
-'獁' => '犸',
-'獃' => '呆',
-'獄' => '狱',
-'獅' => '狮',
-'獎' => '奖',
-'獘' => '毙',
-'獧' => '狷',
-'獨' => '独',
-'獪' => '狯',
-'獫' => '猃',
-'獮' => '狝',
-'獰' => '狞',
-'獱' => '㺍',
-'獲' => '获',
-'獵' => '猎',
-'獷' => '犷',
-'獸' => '兽',
-'獺' => '獭',
-'獻' => '献',
-'獼' => '猕',
-'玀' => '猡',
-'玁' => '𤞤',
-'玅' => '妙',
-'現' => '现',
-'琖' => '盏',
-'琱' => '雕',
-'琺' => '珐',
-'琿' => '珲',
-'瑇' => '玳',
-'瑋' => '玮',
-'瑒' => '玚',
-'瑣' => '琐',
-'瑤' => '瑶',
-'瑩' => '莹',
-'瑪' => '玛',
-'瑯' => '琅',
-'瑲' => '玱',
-'瑽' => '𪻐',
-'璉' => '琏',
-'璡' => '琎',
-'璢' => '瑠',
-'璣' => '玑',
-'璦' => '瑷',
-'璫' => '珰',
-'璯' => '㻅',
-'環' => '环',
-'璵' => '玙',
-'璸' => '瑸',
-'璽' => '玺',
-'瓊' => '琼',
-'瓏' => '珑',
-'瓔' => '璎',
-'瓕' => '𤦀',
-'瓚' => '瓒',
-'甌' => '瓯',
-'甎' => '砖',
-'甕' => '瓮',
-'甖' => '罂',
-'甞' => '尝',
-'產' => '产',
-'産' => '产',
-'畂' => '亩',
-'畆' => '亩',
-'畝' => '亩',
-'畢' => '毕',
-'畧' => '略',
-'畫' => '画',
-'畮' => '亩',
-'異' => '异',
-'畱' => '留',
-'畵' => '画',
-'當' => '当',
-'疇' => '畴',
-'疊' => '叠',
-'疎' => '疏',
-'疘' => '肛',
-'疿' => '痱',
-'痐' => '蛔',
-'痙' => '痉',
-'痠' => '酸',
-'痲' => '痳',
-'痺' => '痹',
-'瘂' => '痖',
-'瘉' => '愈',
-'瘋' => '疯',
-'瘍' => '疡',
-'瘓' => '痪',
-'瘖' => '喑',
-'瘞' => '瘗',
-'瘡' => '疮',
-'瘧' => '疟',
-'瘮' => '瘆',
-'瘲' => '疭',
-'瘺' => '瘘',
-'瘻' => '瘘',
-'療' => '疗',
-'癄' => '憔',
-'癅' => '瘤',
-'癆' => '痨',
-'癇' => '痫',
-'癈' => '废',
-'癉' => '瘅',
-'癒' => '愈',
-'癘' => '疠',
-'癟' => '瘪',
-'癡' => '痴',
-'癢' => '痒',
-'癤' => '疖',
-'癥' => '症',
-'癧' => '疬',
-'癩' => '癞',
-'癬' => '癣',
-'癭' => '瘿',
-'癮' => '瘾',
-'癰' => '痈',
-'癱' => '瘫',
-'癲' => '癫',
-'發' => '发',
-'皁' => '皂',
-'皐' => '皋',
-'皚' => '皑',
-'皜' => '皓',
-'皟' => '𤾀',
-'皰' => '疱',
-'皷' => '鼓',
-'皸' => '皲',
-'皺' => '皱',
-'盃' => '杯',
-'盇' => '盍',
-'盌' => '碗',
-'盜' => '盗',
-'盞' => '盏',
-'盡' => '尽',
-'監' => '监',
-'盤' => '盘',
-'盧' => '卢',
-'盪' => '荡',
-'眎' => '视',
-'眞' => '真',
-'眡' => '视',
-'眥' => '眦',
-'眾' => '众',
-'睍' => '𪾢',
-'睏' => '困',
-'睜' => '睁',
-'睞' => '睐',
-'睠' => '眷',
-'睪' => '睾',
-'瞇' => '眯',
-'瞖' => '翳',
-'瞘' => '眍',
-'瞜' => '䁖',
-'瞞' => '瞒',
-'瞤' => '𥆧',
-'瞭' => '了',
-'瞶' => '瞆',
-'瞼' => '睑',
-'矁' => '瞅',
-'矇' => '蒙',
-'矓' => '眬',
-'矙' => '瞰',
-'矚' => '瞩',
-'矯' => '矫',
-'砲' => '炮',
-'硜' => '硁',
-'硤' => '硖',
-'硨' => '砗',
-'硯' => '砚',
-'碙' => '𥐻',
-'碩' => '硕',
-'碪' => '砧',
-'碭' => '砀',
-'碸' => '砜',
-'確' => '确',
-'碼' => '码',
-'碽' => '䂵',
-'磑' => '硙',
-'磚' => '砖',
-'磟' => '碌',
-'磠' => '硵',
-'磣' => '碜',
-'磧' => '碛',
-'磯' => '矶',
-'磽' => '硗',
-'礄' => '硚',
-'礆' => '碱',
-'礎' => '础',
-'礒' => '𥐟',
-'礙' => '碍',
-'礦' => '矿',
-'礪' => '砺',
-'礫' => '砾',
-'礬' => '矾',
-'礮' => '炮',
-'礱' => '砻',
-'祕' => '秘',
-'祘' => '算',
-'祿' => '禄',
-'禍' => '祸',
-'禎' => '祯',
-'禕' => '祎',
-'禡' => '祃',
-'禦' => '御',
-'禪' => '禅',
-'禮' => '礼',
-'禰' => '祢',
-'禱' => '祷',
-'禿' => '秃',
-'秈' => '籼',
-'秊' => '年',
-'秌' => '秋',
-'秖' => '只',
-'稅' => '税',
-'稈' => '秆',
-'稉' => '粳',
-'稏' => '䅉',
-'稜' => '棱',
-'稟' => '禀',
-'稬' => '糯',
-'稭' => '秸',
-'種' => '种',
-'稱' => '称',
-'稾' => '稿',
-'穀' => '谷',
-'穌' => '稣',
-'積' => '积',
-'穎' => '颖',
-'穠' => '秾',
-'穡' => '穑',
-'穢' => '秽',
-'穤' => '糯',
-'穨' => '颓',
-'穩' => '稳',
-'穫' => '获',
-'穭' => '稆',
-'穽' => '阱',
-'窓' => '窗',
-'窩' => '窝',
-'窪' => '洼',
-'窮' => '穷',
-'窯' => '窑',
-'窰' => '窑',
-'窵' => '窎',
-'窶' => '窭',
-'窺' => '窥',
-'窻' => '窗',
-'竄' => '窜',
-'竅' => '窍',
-'竇' => '窦',
-'竈' => '灶',
-'竊' => '窃',
-'竚' => '伫',
-'竝' => '并',
-'竢' => '俟',
-'竪' => '竖',
-'競' => '竞',
-'筆' => '笔',
-'筍' => '笋',
-'筞' => '策',
-'筧' => '笕',
-'筩' => '筒',
-'筯' => '箸',
-'筴' => '䇲',
-'箇' => '个',
-'箋' => '笺',
-'箏' => '筝',
-'箒' => '帚',
-'箠' => '棰',
-'節' => '节',
-'範' => '范',
-'築' => '筑',
-'篋' => '箧',
-'篔' => '筼',
-'篘' => '𥬠',
-'篛' => '箬',
-'篤' => '笃',
-'篩' => '筛',
-'篳' => '筚',
-'簀' => '箦',
-'簍' => '篓',
-'簑' => '蓑',
-'簒' => '篡',
-'簞' => '箪',
-'簡' => '简',
-'簣' => '篑',
-'簫' => '箫',
-'簮' => '簪',
-'簷' => '檐',
-'簹' => '筜',
-'簽' => '签',
-'簾' => '帘',
-'籃' => '篮',
-'籋' => '𥬞',
-'籌' => '筹',
-'籐' => '藤',
-'籔' => '䉤',
-'籙' => '箓',
-'籛' => '篯',
-'籜' => '箨',
-'籟' => '籁',
-'籠' => '笼',
-'籤' => '签',
-'籩' => '笾',
-'籪' => '簖',
-'籬' => '篱',
-'籮' => '箩',
-'籲' => '吁',
-'粃' => '秕',
-'粧' => '妆',
-'粵' => '粤',
-'糉' => '粽',
-'糝' => '糁',
-'糞' => '粪',
-'糧' => '粮',
-'糰' => '团',
-'糲' => '粝',
-'糴' => '籴',
-'糶' => '粜',
-'糹' => '纟',
-'糾' => '纠',
-'紀' => '纪',
-'紂' => '纣',
-'約' => '约',
-'紅' => '红',
-'紆' => '纡',
-'紇' => '纥',
-'紈' => '纨',
-'紉' => '纫',
-'紋' => '纹',
-'納' => '纳',
-'紐' => '纽',
-'紓' => '纾',
-'純' => '纯',
-'紕' => '纰',
-'紖' => '纼',
-'紗' => '纱',
-'紘' => '纮',
-'紙' => '纸',
-'級' => '级',
-'紛' => '纷',
-'紜' => '纭',
-'紝' => '纴',
-'紡' => '纺',
-'紥' => '扎',
-'紬' => '䌷',
-'紮' => '扎',
-'細' => '细',
-'紱' => '绂',
-'紲' => '绁',
-'紳' => '绅',
-'紵' => '纻',
-'紹' => '绍',
-'紺' => '绀',
-'紼' => '绋',
-'紿' => '绐',
-'絀' => '绌',
-'終' => '终',
-'絃' => '弦',
-'組' => '组',
-'絅' => '䌹',
-'絆' => '绊',
-'絎' => '绗',
-'絏' => '绁',
-'結' => '结',
-'絕' => '绝',
-'絛' => '绦',
-'絝' => '绔',
-'絞' => '绞',
-'絡' => '络',
-'絢' => '绚',
-'給' => '给',
-'絨' => '绒',
-'絰' => '绖',
-'統' => '统',
-'絲' => '丝',
-'絳' => '绛',
-'絶' => '绝',
-'絹' => '绢',
-'絺' => '𫄨',
-'綀' => '𦈌',
-'綁' => '绑',
-'綃' => '绡',
-'綆' => '绠',
-'綇' => '𦈋',
-'綈' => '绨',
-'綉' => '绣',
-'綌' => '绤',
-'綏' => '绥',
-'綐' => '䌼',
-'綑' => '捆',
-'經' => '经',
-'綜' => '综',
-'綞' => '缍',
-'綠' => '绿',
-'綢' => '绸',
-'綣' => '绻',
-'綫' => '线',
-'綬' => '绶',
-'維' => '维',
-'綯' => '绹',
-'綰' => '绾',
-'綱' => '纲',
-'網' => '网',
-'綴' => '缀',
-'綵' => '彩',
-'綸' => '纶',
-'綹' => '绺',
-'綺' => '绮',
-'綻' => '绽',
-'綽' => '绰',
-'綾' => '绫',
-'綿' => '绵',
-'緄' => '绲',
-'緇' => '缁',
-'緊' => '紧',
-'緋' => '绯',
-'緍' => '𦈏',
-'緐' => '繁',
-'緑' => '绿',
-'緒' => '绪',
-'緓' => '绬',
-'緔' => '绱',
-'緗' => '缃',
-'緘' => '缄',
-'緙' => '缂',
-'線' => '线',
-'緜' => '绵',
-'緝' => '缉',
-'緞' => '缎',
-'締' => '缔',
-'緡' => '缗',
-'緣' => '缘',
-'緥' => '褓',
-'緦' => '缌',
-'編' => '编',
-'緩' => '缓',
-'緬' => '缅',
-'緯' => '纬',
-'緰' => '𦈕',
-'緱' => '缑',
-'緲' => '缈',
-'練' => '练',
-'緶' => '缏',
-'緷' => '𦈉',
-'緸' => '𦈑',
-'緹' => '缇',
-'緻' => '致',
-'緼' => '缊',
-'縈' => '萦',
-'縉' => '缙',
-'縊' => '缢',
-'縋' => '缒',
-'縎' => '𦈔',
-'縐' => '绉',
-'縑' => '缣',
-'縕' => '缊',
-'縗' => '缞',
-'縛' => '缚',
-'縝' => '缜',
-'縞' => '缟',
-'縟' => '缛',
-'縣' => '县',
-'縧' => '绦',
-'縫' => '缝',
-'縬' => '𦈚',
-'縭' => '缡',
-'縮' => '缩',
-'縱' => '纵',
-'縲' => '缧',
-'縳' => '䌸',
-'縴' => '纤',
-'縵' => '缦',
-'縶' => '絷',
-'縷' => '缕',
-'縹' => '缥',
-'縺' => '𦈐',
-'總' => '总',
-'績' => '绩',
-'繃' => '绷',
-'繅' => '缫',
-'繆' => '缪',
-'繏' => '𦈝',
-'繐' => '穗',
-'繒' => '缯',
-'繓' => '𦈛',
-'織' => '织',
-'繕' => '缮',
-'繖' => '伞',
-'繙' => '翻',
-'繚' => '缭',
-'繞' => '绕',
-'繟' => '𦈎',
-'繡' => '绣',
-'繢' => '缋',
-'繦' => '襁',
-'繩' => '绳',
-'繪' => '绘',
-'繫' => '系',
-'繭' => '茧',
-'繮' => '缰',
-'繯' => '缳',
-'繰' => '缲',
-'繳' => '缴',
-'繸' => '䍁',
-'繹' => '绎',
-'繻' => '𦈡',
-'繼' => '继',
-'繽' => '缤',
-'繾' => '缱',
-'繿' => '䍀',
-'纁' => '𫄸',
-'纇' => '颣',
-'纈' => '缬',
-'纊' => '纩',
-'續' => '续',
-'纍' => '累',
-'纏' => '缠',
-'纓' => '缨',
-'纔' => '才',
-'纖' => '纤',
-'纘' => '缵',
-'纜' => '缆',
-'缽' => '钵',
-'罇' => '樽',
-'罈' => '坛',
-'罋' => '瓮',
-'罌' => '罂',
-'罎' => '坛',
-'罰' => '罚',
-'罵' => '骂',
-'罷' => '罢',
-'罸' => '罚',
-'羅' => '罗',
-'羆' => '罴',
-'羈' => '羁',
-'羋' => '芈',
-'羗' => '羌',
-'羢' => '绒',
-'羣' => '群',
-'羥' => '羟',
-'羨' => '羡',
-'義' => '义',
-'羶' => '膻',
-'翄' => '翅',
-'習' => '习',
-'翫' => '玩',
-'翬' => '翚',
-'翶' => '翱',
-'翹' => '翘',
-'翽' => '翙',
-'耡' => '锄',
-'耬' => '耧',
-'耮' => '耢',
-'聖' => '圣',
-'聞' => '闻',
-'聯' => '联',
-'聰' => '聪',
-'聲' => '声',
-'聳' => '耸',
-'聵' => '聩',
-'聶' => '聂',
-'職' => '职',
-'聹' => '聍',
-'聽' => '听',
-'聾' => '聋',
-'肅' => '肃',
-'肎' => '肯',
-'肐' => '胳',
-'肧' => '胚',
-'胷' => '胸',
-'脃' => '脆',
-'脅' => '胁',
-'脇' => '胁',
-'脈' => '脉',
-'脗' => '吻',
-'脛' => '胫',
-'脣' => '唇',
-'脥' => '𣍰',
-'脫' => '脱',
-'脹' => '胀',
-'腁' => '胼',
-'腎' => '肾',
-'腖' => '胨',
-'腡' => '脶',
-'腦' => '脑',
-'腪' => '𣍯',
-'腫' => '肿',
-'腳' => '脚',
-'腸' => '肠',
-'膃' => '腽',
-'膓' => '肠',
-'膕' => '腘',
-'膚' => '肤',
-'膞' => '䏝',
-'膠' => '胶',
-'膢' => '𦝼',
-'膩' => '腻',
-'膽' => '胆',
-'膾' => '脍',
-'膿' => '脓',
-'臈' => '腊',
-'臉' => '脸',
-'臋' => '臀',
-'臍' => '脐',
-'臏' => '膑',
-'臕' => '膘',
-'臗' => '𣎑',
-'臘' => '腊',
-'臙' => '胭',
-'臚' => '胪',
-'臝' => '裸',
-'臟' => '脏',
-'臠' => '脔',
-'臢' => '臜',
-'臥' => '卧',
-'臨' => '临',
-'臯' => '皋',
-'臺' => '台',
-'與' => '与',
-'興' => '兴',
-'舉' => '举',
-'舊' => '旧',
-'舖' => '铺',
-'舘' => '馆',
-'舩' => '船',
-'艙' => '舱',
-'艢' => '樯',
-'艣' => '橹',
-'艤' => '舣',
-'艦' => '舰',
-'艪' => '橹',
-'艫' => '舻',
-'艱' => '艰',
-'艷' => '艳',
-'芲' => '花',
-'芻' => '刍',
-'苧' => '苎',
-'茘' => '荔',
-'茲' => '兹',
-'荊' => '荆',
-'荳' => '豆',
-'莊' => '庄',
-'莖' => '茎',
-'莢' => '荚',
-'莧' => '苋',
-'華' => '华',
-'菸' => '烟',
-'萇' => '苌',
-'萊' => '莱',
-'萬' => '万',
-'萲' => '萱',
-'萴' => '荝',
-'萵' => '莴',
-'葉' => '叶',
-'葒' => '荭',
-'葠' => '参',
-'葤' => '荮',
-'葦' => '苇',
-'葯' => '药',
-'葷' => '荤',
-'蒓' => '莼',
-'蒔' => '莳',
-'蒞' => '莅',
-'蒼' => '苍',
-'蓀' => '荪',
-'蓆' => '席',
-'蓋' => '盖',
-'蓡' => '参',
-'蓮' => '莲',
-'蓯' => '苁',
-'蓴' => '莼',
-'蓽' => '荜',
-'蔔' => '卜',
-'蔕' => '蒂',
-'蔘' => '参',
-'蔞' => '蒌',
-'蔣' => '蒋',
-'蔥' => '葱',
-'蔦' => '茑',
-'蔭' => '荫',
-'蕁' => '荨',
-'蕆' => '蒇',
-'蕎' => '荞',
-'蕒' => '荬',
-'蕓' => '芸',
-'蕕' => '莸',
-'蕘' => '荛',
-'蕚' => '萼',
-'蕢' => '蒉',
-'蕩' => '荡',
-'蕪' => '芜',
-'蕭' => '萧',
-'蕷' => '蓣',
-'蕿' => '萱',
-'薀' => '蕰',
-'薈' => '荟',
-'薊' => '蓟',
-'薌' => '芗',
-'薑' => '姜',
-'薔' => '蔷',
-'薘' => '荙',
-'薟' => '莶',
-'薦' => '荐',
-'薩' => '萨',
-'薴' => '苧',
-'薺' => '荠',
-'藍' => '蓝',
-'藎' => '荩',
-'藝' => '艺',
-'藥' => '药',
-'藪' => '薮',
-'藭' => '䓖',
-'藴' => '蕴',
-'藶' => '苈',
-'藷' => '薯',
-'藹' => '蔼',
-'藺' => '蔺',
-'藼' => '萱',
-'蘀' => '萚',
-'蘄' => '蕲',
-'蘆' => '芦',
-'蘇' => '苏',
-'蘊' => '蕴',
-'蘐' => '萱',
-'蘓' => '苏',
-'蘚' => '藓',
-'蘞' => '蔹',
-'蘢' => '茏',
-'蘤' => '花',
-'蘭' => '兰',
-'蘺' => '蓠',
-'蘿' => '萝',
-'虆' => '蔂',
-'處' => '处',
-'虛' => '虚',
-'虜' => '虏',
-'號' => '号',
-'虧' => '亏',
-'虯' => '虬',
-'蚘' => '蛔',
-'蛕' => '蛔',
-'蛺' => '蛱',
-'蛻' => '蜕',
-'蜆' => '蚬',
-'蜋' => '螂',
-'蜖' => '蛔',
-'蜨' => '蝶',
-'蝕' => '蚀',
-'蝟' => '猬',
-'蝦' => '虾',
-'蝨' => '虱',
-'蝯' => '猿',
-'蝱' => '虻',
-'蝸' => '蜗',
-'螄' => '蛳',
-'螎' => '融',
-'螞' => '蚂',
-'螡' => '蚊',
-'螢' => '萤',
-'螮' => '䗖',
-'螻' => '蝼',
-'螿' => '螀',
-'蟁' => '蚊',
-'蟄' => '蛰',
-'蟇' => '蟆',
-'蟈' => '蝈',
-'蟎' => '螨',
-'蟣' => '虮',
-'蟬' => '蝉',
-'蟯' => '蛲',
-'蟲' => '虫',
-'蟶' => '蛏',
-'蟻' => '蚁',
-'蠁' => '蚃',
-'蠅' => '蝇',
-'蠆' => '虿',
-'蠍' => '蝎',
-'蠏' => '蟹',
-'蠐' => '蛴',
-'蠑' => '蝾',
-'蠒' => '茧',
-'蠔' => '蚝',
-'蠟' => '蜡',
-'蠣' => '蛎',
-'蠨' => '蟏',
-'蠭' => '蜂',
-'蠱' => '蛊',
-'蠶' => '蚕',
-'蠻' => '蛮',
-'衂' => '衄',
-'衆' => '众',
-'衇' => '脉',
-'衊' => '蔑',
-'術' => '术',
-'衕' => '同',
-'衚' => '胡',
-'衛' => '卫',
-'衝' => '冲',
-'衞' => '卫',
-'衺' => '邪',
-'袞' => '衮',
-'袟' => '帙',
-'袵' => '衽',
-'裊' => '袅',
-'裌' => '袷',
-'裏' => '里',
-'補' => '补',
-'裝' => '装',
-'裠' => '裙',
-'裡' => '里',
-'製' => '制',
-'複' => '复',
-'褌' => '裈',
-'褘' => '袆',
-'褭' => '袅',
-'褲' => '裤',
-'褳' => '裢',
-'褸' => '褛',
-'褻' => '亵',
-'襀' => '𫌀',
-'襃' => '褒',
-'襉' => '裥',
-'襍' => '杂',
-'襏' => '袯',
-'襖' => '袄',
-'襝' => '裣',
-'襠' => '裆',
-'襤' => '褴',
-'襪' => '袜',
-'襬' => '䙓',
-'襯' => '衬',
-'襲' => '袭',
-'襴' => '襕',
-'覇' => '霸',
-'覈' => '核',
-'覊' => '羁',
-'見' => '见',
-'覎' => '觃',
-'規' => '规',
-'覓' => '觅',
-'覔' => '觅',
-'視' => '视',
-'覘' => '觇',
-'覡' => '觋',
-'覥' => '觍',
-'覦' => '觎',
-'覩' => '睹',
-'親' => '亲',
-'覬' => '觊',
-'覯' => '觏',
-'覲' => '觐',
-'覷' => '觑',
-'覺' => '觉',
-'覼' => '𫌨',
-'覽' => '览',
-'覿' => '觌',
-'觀' => '观',
-'觝' => '抵',
-'觴' => '觞',
-'觶' => '觯',
-'觸' => '触',
-'訁' => '讠',
-'訂' => '订',
-'訃' => '讣',
-'計' => '计',
-'訊' => '讯',
-'訌' => '讧',
-'討' => '讨',
-'訐' => '讦',
-'訑' => '𫍙',
-'訒' => '讱',
-'訓' => '训',
-'訕' => '讪',
-'訖' => '讫',
-'託' => '托',
-'記' => '记',
-'訛' => '讹',
-'訝' => '讶',
-'訟' => '讼',
-'訢' => '䜣',
-'訣' => '诀',
-'訥' => '讷',
-'訩' => '讻',
-'訪' => '访',
-'設' => '设',
-'許' => '许',
-'訴' => '诉',
-'訶' => '诃',
-'診' => '诊',
-'註' => '注',
-'証' => '证',
-'詀' => '𧮪',
-'詁' => '诂',
-'詆' => '诋',
-'詎' => '讵',
-'詐' => '诈',
-'詒' => '诒',
-'詔' => '诏',
-'評' => '评',
-'詖' => '诐',
-'詗' => '诇',
-'詘' => '诎',
-'詛' => '诅',
-'詞' => '词',
-'詠' => '咏',
-'詡' => '诩',
-'詢' => '询',
-'詣' => '诣',
-'試' => '试',
-'詩' => '诗',
-'詫' => '诧',
-'詬' => '诟',
-'詭' => '诡',
-'詮' => '诠',
-'詰' => '诘',
-'話' => '话',
-'該' => '该',
-'詳' => '详',
-'詵' => '诜',
-'詶' => '酬',
-'詼' => '诙',
-'詿' => '诖',
-'誄' => '诔',
-'誅' => '诛',
-'誆' => '诓',
-'誇' => '夸',
-'誌' => '志',
-'認' => '认',
-'誑' => '诳',
-'誒' => '诶',
-'誕' => '诞',
-'誖' => '悖',
-'誘' => '诱',
-'誚' => '诮',
-'語' => '语',
-'誠' => '诚',
-'誡' => '诫',
-'誣' => '诬',
-'誤' => '误',
-'誥' => '诰',
-'誦' => '诵',
-'誨' => '诲',
-'說' => '说',
-'説' => '说',
-'誰' => '谁',
-'課' => '课',
-'誶' => '谇',
-'誹' => '诽',
-'誼' => '谊',
-'誾' => '訚',
-'調' => '调',
-'諂' => '谄',
-'諄' => '谆',
-'談' => '谈',
-'諉' => '诿',
-'請' => '请',
-'諍' => '诤',
-'諏' => '诹',
-'諑' => '诼',
-'諒' => '谅',
-'論' => '论',
-'諗' => '谂',
-'諛' => '谀',
-'諜' => '谍',
-'諝' => '谞',
-'諞' => '谝',
-'諡' => '谥',
-'諢' => '诨',
-'諤' => '谔',
-'諦' => '谛',
-'諧' => '谐',
-'諫' => '谏',
-'諭' => '谕',
-'諮' => '谘',
-'諰' => '𫍰',
-'諱' => '讳',
-'諳' => '谙',
-'諶' => '谌',
-'諷' => '讽',
-'諸' => '诸',
-'諺' => '谚',
-'諼' => '谖',
-'諾' => '诺',
-'謀' => '谋',
-'謁' => '谒',
-'謂' => '谓',
-'謄' => '誊',
-'謅' => '诌',
-'謊' => '谎',
-'謌' => '歌',
-'謎' => '谜',
-'謏' => '𫍲',
-'謐' => '谧',
-'謔' => '谑',
-'謖' => '谡',
-'謗' => '谤',
-'謙' => '谦',
-'謚' => '谥',
-'講' => '讲',
-'謝' => '谢',
-'謠' => '谣',
-'謡' => '谣',
-'謨' => '谟',
-'謫' => '谪',
-'謬' => '谬',
-'謭' => '谫',
-'謳' => '讴',
-'謹' => '谨',
-'謾' => '谩',
-'譁' => '哗',
-'譆' => '嘻',
-'證' => '证',
-'譊' => '𫍢',
-'譌' => '讹',
-'譎' => '谲',
-'譏' => '讥',
-'譔' => '撰',
-'譖' => '谮',
-'識' => '识',
-'譙' => '谯',
-'譚' => '谭',
-'譜' => '谱',
-'譟' => '噪',
-'譫' => '谵',
-'譭' => '毁',
-'譯' => '译',
-'議' => '议',
-'譴' => '谴',
-'護' => '护',
-'譸' => '诪',
-'譽' => '誉',
-'譾' => '谫',
-'讀' => '读',
-'讁' => '谪',
-'變' => '变',
-'讋' => '詟',
-'讌' => '䜩',
-'讎' => '仇',
-'讐' => '雠',
-'讒' => '谗',
-'讓' => '让',
-'讕' => '谰',
-'讖' => '谶',
-'讚' => '赞',
-'讜' => '谠',
-'讞' => '谳',
-'豈' => '岂',
-'豎' => '竖',
-'豐' => '丰',
-'豓' => '艳',
-'豔' => '艳',
-'豬' => '猪',
-'豶' => '豮',
-'貍' => '狸',
-'貓' => '猫',
-'貙' => '䝙',
-'貛' => '獾',
-'貝' => '贝',
-'貞' => '贞',
-'貟' => '贠',
-'負' => '负',
-'財' => '财',
-'貢' => '贡',
-'貧' => '贫',
-'貨' => '货',
-'販' => '贩',
-'貪' => '贪',
-'貫' => '贯',
-'責' => '责',
-'貯' => '贮',
-'貰' => '贳',
-'貲' => '赀',
-'貳' => '贰',
-'貴' => '贵',
-'貶' => '贬',
-'買' => '买',
-'貸' => '贷',
-'貺' => '贶',
-'費' => '费',
-'貼' => '贴',
-'貽' => '贻',
-'貿' => '贸',
-'賀' => '贺',
-'賁' => '贲',
-'賂' => '赂',
-'賃' => '赁',
-'賄' => '贿',
-'賅' => '赅',
-'資' => '资',
-'賈' => '贾',
-'賉' => '恤',
-'賊' => '贼',
-'賑' => '赈',
-'賒' => '赊',
-'賓' => '宾',
-'賕' => '赇',
-'賙' => '赒',
-'賚' => '赉',
-'賛' => '赞',
-'賜' => '赐',
-'賞' => '赏',
-'賟' => '𧹖',
-'賠' => '赔',
-'賡' => '赓',
-'賢' => '贤',
-'賣' => '卖',
-'賤' => '贱',
-'賦' => '赋',
-'賧' => '赕',
-'質' => '质',
-'賫' => '赍',
-'賬' => '账',
-'賭' => '赌',
-'賰' => '䞐',
-'賴' => '赖',
-'賵' => '赗',
-'賷' => '赍',
-'賺' => '赚',
-'賻' => '赙',
-'購' => '购',
-'賽' => '赛',
-'賾' => '赜',
-'贃' => '𧹗',
-'贄' => '贽',
-'贅' => '赘',
-'贇' => '赟',
-'贈' => '赠',
-'贊' => '赞',
-'贋' => '赝',
-'贍' => '赡',
-'贏' => '赢',
-'贐' => '赆',
-'贑' => '赣',
-'贓' => '赃',
-'贔' => '赑',
-'贖' => '赎',
-'贗' => '赝',
-'贛' => '赣',
-'贜' => '赃',
-'赬' => '赪',
-'趂' => '趁',
-'趕' => '赶',
-'趙' => '赵',
-'趨' => '趋',
-'趲' => '趱',
-'跡' => '迹',
-'跥' => '跺',
-'跴' => '踩',
-'踁' => '胫',
-'踐' => '践',
-'踫' => '碰',
-'踰' => '逾',
-'踴' => '踊',
-'蹌' => '跄',
-'蹏' => '蹄',
-'蹔' => '暂',
-'蹕' => '跸',
-'蹟' => '迹',
-'蹠' => '跖',
-'蹣' => '蹒',
-'蹤' => '踪',
-'蹧' => '糟',
-'蹵' => '蹴',
-'蹺' => '跷',
-'蹻' => '𫏋',
-'躂' => '跶',
-'躉' => '趸',
-'躊' => '踌',
-'躋' => '跻',
-'躍' => '跃',
-'躎' => '䟢',
-'躑' => '踯',
-'躒' => '跞',
-'躓' => '踬',
-'躕' => '蹰',
-'躚' => '跹',
-'躝' => '𨅬',
-'躡' => '蹑',
-'躥' => '蹿',
-'躦' => '躜',
-'躪' => '躏',
-'躭' => '耽',
-'躳' => '躬',
-'躶' => '裸',
-'軀' => '躯',
-'軉' => '𨉗',
-'車' => '车',
-'軋' => '轧',
-'軌' => '轨',
-'軍' => '军',
-'軏' => '𫐄',
-'軑' => '轪',
-'軒' => '轩',
-'軔' => '轫',
-'軗' => '𨐅',
-'軛' => '轭',
-'軟' => '软',
-'軤' => '轷',
-'軨' => '𫐉',
-'軫' => '轸',
-'軲' => '轱',
-'軸' => '轴',
-'軹' => '轵',
-'軺' => '轺',
-'軻' => '轲',
-'軼' => '轶',
-'軾' => '轼',
-'較' => '较',
-'輄' => '𨐈',
-'輅' => '辂',
-'輇' => '辁',
-'輈' => '辀',
-'載' => '载',
-'輊' => '轾',
-'輒' => '辄',
-'輓' => '挽',
-'輔' => '辅',
-'輕' => '轻',
-'輗' => '𫐐',
-'輙' => '辄',
-'輛' => '辆',
-'輜' => '辎',
-'輝' => '辉',
-'輞' => '辋',
-'輟' => '辍',
-'輥' => '辊',
-'輦' => '辇',
-'輩' => '辈',
-'輪' => '轮',
-'輬' => '辌',
-'輭' => '软',
-'輮' => '𫐓',
-'輯' => '辑',
-'輳' => '辏',
-'輸' => '输',
-'輻' => '辐',
-'輼' => '辒',
-'輾' => '辗',
-'輿' => '舆',
-'轀' => '辒',
-'轂' => '毂',
-'轄' => '辖',
-'轅' => '辕',
-'轆' => '辘',
-'轉' => '转',
-'轍' => '辙',
-'轎' => '轿',
-'轔' => '辚',
-'轟' => '轰',
-'轡' => '辔',
-'轢' => '轹',
-'轣' => '𫐆',
-'轤' => '轳',
-'辠' => '罪',
-'辢' => '辣',
-'辤' => '辞',
-'辦' => '办',
-'辭' => '辞',
-'辮' => '辫',
-'辯' => '辩',
-'農' => '农',
-'辳' => '农',
-'迴' => '回',
-'迻' => '移',
-'逈' => '迥',
-'逕' => '迳',
-'這' => '这',
-'連' => '连',
-'逥' => '回',
-'逩' => '奔',
-'逬' => '迸',
-'週' => '周',
-'進' => '进',
-'遉' => '侦',
-'遊' => '游',
-'運' => '运',
-'過' => '过',
-'達' => '达',
-'違' => '违',
-'遙' => '遥',
-'遜' => '逊',
-'遞' => '递',
-'遠' => '远',
-'遡' => '溯',
-'適' => '适',
-'遯' => '遁',
-'遲' => '迟',
-'遷' => '迁',
-'選' => '选',
-'遺' => '遗',
-'遼' => '辽',
-'邁' => '迈',
-'還' => '还',
-'邇' => '迩',
-'邊' => '边',
-'邏' => '逻',
-'邐' => '逦',
-'郟' => '郏',
-'郵' => '邮',
-'鄆' => '郓',
-'鄉' => '乡',
-'鄒' => '邹',
-'鄔' => '邬',
-'鄖' => '郧',
-'鄧' => '邓',
-'鄭' => '郑',
-'鄰' => '邻',
-'鄲' => '郸',
-'鄴' => '邺',
-'鄶' => '郐',
-'鄺' => '邝',
-'酇' => '酂',
-'酈' => '郦',
-'酖' => '鸩',
-'酧' => '酬',
-'醃' => '腌',
-'醆' => '盏',
-'醕' => '醇',
-'醜' => '丑',
-'醞' => '酝',
-'醣' => '糖',
-'醫' => '医',
-'醬' => '酱',
-'醯' => '酰',
-'醱' => '酦',
-'醻' => '酬',
-'醼' => '宴',
-'釀' => '酿',
-'釁' => '衅',
-'釃' => '酾',
-'釅' => '酽',
-'釋' => '释',
-'釒' => '钅',
-'釓' => '钆',
-'釔' => '钇',
-'釕' => '钌',
-'釗' => '钊',
-'釘' => '钉',
-'釙' => '钋',
-'針' => '针',
-'釣' => '钓',
-'釤' => '钐',
-'釦' => '扣',
-'釧' => '钏',
-'釩' => '钒',
-'釬' => '焊',
-'釳' => '𨰿',
-'釵' => '钗',
-'釷' => '钍',
-'釹' => '钕',
-'釺' => '钎',
-'釾' => '䥺',
-'鈀' => '钯',
-'鈁' => '钫',
-'鈃' => '钘',
-'鈄' => '钭',
-'鈅' => '钥',
-'鈇' => '𫓧',
-'鈈' => '钚',
-'鈉' => '钠',
-'鈋' => '𨱂',
-'鈍' => '钝',
-'鈎' => '钩',
-'鈐' => '钤',
-'鈑' => '钣',
-'鈒' => '钑',
-'鈔' => '钞',
-'鈕' => '钮',
-'鈞' => '钧',
-'鈠' => '𨱁',
-'鈣' => '钙',
-'鈥' => '钬',
-'鈦' => '钛',
-'鈧' => '钪',
-'鈮' => '铌',
-'鈯' => '𨱄',
-'鈰' => '铈',
-'鈲' => '𨱃',
-'鈳' => '钶',
-'鈴' => '铃',
-'鈷' => '钴',
-'鈸' => '钹',
-'鈹' => '铍',
-'鈺' => '钰',
-'鈽' => '钸',
-'鈾' => '铀',
-'鈿' => '钿',
-'鉀' => '钾',
-'鉁' => '𨱅',
-'鉄' => '铁',
-'鉅' => '钜',
-'鉆' => '钻',
-'鉈' => '铊',
-'鉉' => '铉',
-'鉋' => '铇',
-'鉍' => '铋',
-'鉑' => '铂',
-'鉕' => '钷',
-'鉗' => '钳',
-'鉚' => '铆',
-'鉛' => '铅',
-'鉞' => '钺',
-'鉢' => '钵',
-'鉤' => '钩',
-'鉦' => '钲',
-'鉬' => '钼',
-'鉭' => '钽',
-'鉶' => '铏',
-'鉸' => '铰',
-'鉺' => '铒',
-'鉻' => '铬',
-'鉿' => '铪',
-'銀' => '银',
-'銃' => '铳',
-'銅' => '铜',
-'銍' => '铚',
-'銑' => '铣',
-'銓' => '铨',
-'銖' => '铢',
-'銘' => '铭',
-'銚' => '铫',
-'銛' => '铦',
-'銜' => '衔',
-'銠' => '铑',
-'銣' => '铷',
-'銥' => '铱',
-'銦' => '铟',
-'銨' => '铵',
-'銩' => '铥',
-'銪' => '铕',
-'銫' => '铯',
-'銬' => '铐',
-'銱' => '铞',
-'銲' => '焊',
-'銳' => '锐',
-'銶' => '𨱇',
-'銷' => '销',
-'銻' => '锑',
-'銼' => '锉',
-'鋁' => '铝',
-'鋃' => '锒',
-'鋅' => '锌',
-'鋇' => '钡',
-'鋉' => '𨱈',
-'鋌' => '铤',
-'鋏' => '铗',
-'鋒' => '锋',
-'鋙' => '铻',
-'鋝' => '锊',
-'鋟' => '锓',
-'鋣' => '铘',
-'鋤' => '锄',
-'鋥' => '锃',
-'鋦' => '锔',
-'鋨' => '锇',
-'鋩' => '铓',
-'鋪' => '铺',
-'鋭' => '锐',
-'鋮' => '铖',
-'鋯' => '锆',
-'鋰' => '锂',
-'鋱' => '铽',
-'鋶' => '锍',
-'鋸' => '锯',
-'鋼' => '钢',
-'錁' => '锞',
-'錂' => '𨱋',
-'錄' => '录',
-'錆' => '锖',
-'錇' => '锫',
-'錈' => '锩',
-'錏' => '铔',
-'錐' => '锥',
-'錒' => '锕',
-'錕' => '锟',
-'錘' => '锤',
-'錙' => '锱',
-'錚' => '铮',
-'錛' => '锛',
-'錟' => '锬',
-'錠' => '锭',
-'錡' => '锜',
-'錢' => '钱',
-'錦' => '锦',
-'錨' => '锚',
-'錩' => '锠',
-'錫' => '锡',
-'錮' => '锢',
-'錯' => '错',
-'録' => '录',
-'錳' => '锰',
-'錶' => '表',
-'錸' => '铼',
-'鍀' => '锝',
-'鍁' => '锨',
-'鍃' => '锪',
-'鍄' => '𨱉',
-'鍆' => '钔',
-'鍇' => '锴',
-'鍈' => '锳',
-'鍊' => '炼',
-'鍋' => '锅',
-'鍍' => '镀',
-'鍔' => '锷',
-'鍘' => '铡',
-'鍚' => '钖',
-'鍛' => '锻',
-'鍠' => '锽',
-'鍤' => '锸',
-'鍥' => '锲',
-'鍩' => '锘',
-'鍫' => '锹',
-'鍬' => '锹',
-'鍮' => '𨱎',
-'鍰' => '锾',
-'鍳' => '鉴',
-'鍵' => '键',
-'鍶' => '锶',
-'鍺' => '锗',
-'鍾' => '锺',
-'鎂' => '镁',
-'鎄' => '锿',
-'鎇' => '镅',
-'鎊' => '镑',
-'鎌' => '镰',
-'鎔' => '镕',
-'鎖' => '锁',
-'鎗' => '枪',
-'鎘' => '镉',
-'鎚' => '锤',
-'鎛' => '镈',
-'鎝' => '𨱏',
-'鎡' => '镃',
-'鎢' => '钨',
-'鎣' => '蓥',
-'鎦' => '镏',
-'鎧' => '铠',
-'鎩' => '铩',
-'鎪' => '锼',
-'鎬' => '镐',
-'鎭' => '镇',
-'鎮' => '镇',
-'鎯' => '𨱍',
-'鎰' => '镒',
-'鎲' => '镋',
-'鎳' => '镍',
-'鎵' => '镓',
-'鎷' => '𨰾',
-'鎸' => '镌',
-'鎻' => '锁',
-'鎿' => '镎',
-'鏃' => '镞',
-'鏆' => '𨱌',
-'鏇' => '镟',
-'鏈' => '链',
-'鏉' => '𨱒',
-'鏌' => '镆',
-'鏍' => '镙',
-'鏐' => '镠',
-'鏑' => '镝',
-'鏗' => '铿',
-'鏘' => '锵',
-'鏚' => '戚',
-'鏜' => '镗',
-'鏝' => '镘',
-'鏞' => '镛',
-'鏟' => '铲',
-'鏡' => '镜',
-'鏢' => '镖',
-'鏤' => '镂',
-'鏦' => '𫓩',
-'鏨' => '錾',
-'鏰' => '镚',
-'鏵' => '铧',
-'鏷' => '镤',
-'鏹' => '镪',
-'鏺' => '䥽',
-'鏽' => '锈',
-'鐃' => '铙',
-'鐄' => '𨱑',
-'鐋' => '铴',
-'鐍' => '𫔎',
-'鐎' => '𨱓',
-'鐏' => '𨱔',
-'鐐' => '镣',
-'鐒' => '铹',
-'鐓' => '镦',
-'鐔' => '镡',
-'鐘' => '钟',
-'鐙' => '镫',
-'鐝' => '镢',
-'鐠' => '镨',
-'鐥' => '䦅',
-'鐦' => '锎',
-'鐧' => '锏',
-'鐨' => '镄',
-'鐫' => '镌',
-'鐮' => '镰',
-'鐯' => '䦃',
-'鐲' => '镯',
-'鐳' => '镭',
-'鐵' => '铁',
-'鐶' => '镮',
-'鐸' => '铎',
-'鐺' => '铛',
-'鐿' => '镱',
-'鑄' => '铸',
-'鑊' => '镬',
-'鑌' => '镔',
-'鑑' => '鉴',
-'鑒' => '鉴',
-'鑔' => '镲',
-'鑕' => '锧',
-'鑚' => '钻',
-'鑛' => '矿',
-'鑞' => '镴',
-'鑠' => '铄',
-'鑣' => '镳',
-'鑤' => '刨',
-'鑥' => '镥',
-'鑭' => '镧',
-'鑰' => '钥',
-'鑱' => '镵',
-'鑲' => '镶',
-'鑵' => '罐',
-'鑷' => '镊',
-'鑹' => '镩',
-'鑼' => '锣',
-'鑽' => '钻',
-'鑾' => '銮',
-'鑿' => '凿',
-'钁' => '镢',
-'钂' => '镋',
-'長' => '长',
-'門' => '门',
-'閂' => '闩',
-'閃' => '闪',
-'閆' => '闫',
-'閈' => '闬',
-'閉' => '闭',
-'開' => '开',
-'閌' => '闶',
-'閍' => '𨸂',
-'閎' => '闳',
-'閏' => '闰',
-'閐' => '𨸃',
-'閑' => '闲',
-'閒' => '闲',
-'間' => '间',
-'閔' => '闵',
-'閘' => '闸',
-'閙' => '闹',
-'閡' => '阂',
-'閣' => '阁',
-'閤' => '阁',
-'閥' => '阀',
-'閧' => '哄',
-'閨' => '闺',
-'閩' => '闽',
-'閫' => '阃',
-'閬' => '阆',
-'閭' => '闾',
-'閱' => '阅',
-'閲' => '阅',
-'閶' => '阊',
-'閹' => '阉',
-'閻' => '阎',
-'閼' => '阏',
-'閽' => '阍',
-'閾' => '阈',
-'閿' => '阌',
-'闃' => '阒',
-'闆' => '板',
-'闇' => '暗',
-'闈' => '闱',
-'闊' => '阔',
-'闋' => '阕',
-'闌' => '阑',
-'闍' => '阇',
-'闐' => '阗',
-'闒' => '阘',
-'闓' => '闿',
-'闔' => '阖',
-'闕' => '阙',
-'闖' => '闯',
-'闚' => '窥',
-'關' => '关',
-'闞' => '阚',
-'闠' => '阓',
-'闡' => '阐',
-'闢' => '辟',
-'闤' => '阛',
-'闥' => '闼',
-'阨' => '厄',
-'阬' => '坑',
-'陗' => '峭',
-'陘' => '陉',
-'陜' => '陕',
-'陝' => '陕',
-'陣' => '阵',
-'陰' => '阴',
-'陳' => '陈',
-'陸' => '陆',
-'陻' => '堙',
-'陽' => '阳',
-'陿' => '狭',
-'隂' => '阴',
-'隄' => '堤',
-'隉' => '陧',
-'隊' => '队',
-'階' => '阶',
-'隕' => '陨',
-'隖' => '坞',
-'際' => '际',
-'隣' => '邻',
-'隨' => '随',
-'險' => '险',
-'隱' => '隐',
-'隴' => '陇',
-'隷' => '隶',
-'隸' => '隶',
-'隻' => '只',
-'雋' => '隽',
-'雖' => '虽',
-'雙' => '双',
-'雛' => '雏',
-'雜' => '杂',
-'雞' => '鸡',
-'離' => '离',
-'難' => '难',
-'雲' => '云',
-'電' => '电',
-'霢' => '霡',
-'霧' => '雾',
-'霽' => '霁',
-'靂' => '雳',
-'靄' => '霭',
-'靆' => '叇',
-'靈' => '灵',
-'靉' => '叆',
-'靚' => '靓',
-'靜' => '静',
-'靦' => '腼',
-'靨' => '靥',
-'靭' => '韧',
-'靱' => '韧',
-'鞀' => '鼗',
-'鞏' => '巩',
-'鞝' => '绱',
-'鞦' => '秋',
-'鞵' => '鞋',
-'鞽' => '鞒',
-'鞾' => '靴',
-'韁' => '缰',
-'韃' => '鞑',
-'韆' => '千',
-'韈' => '袜',
-'韉' => '鞯',
-'韋' => '韦',
-'韌' => '韧',
-'韍' => '韨',
-'韓' => '韩',
-'韙' => '韪',
-'韜' => '韬',
-'韞' => '韫',
-'韤' => '袜',
-'韮' => '韭',
-'韻' => '韵',
-'響' => '响',
-'頁' => '页',
-'頂' => '顶',
-'頃' => '顷',
-'項' => '项',
-'順' => '顺',
-'頇' => '顸',
-'須' => '须',
-'頊' => '顼',
-'頌' => '颂',
-'頎' => '颀',
-'頏' => '颃',
-'預' => '预',
-'頑' => '顽',
-'頒' => '颁',
-'頓' => '顿',
-'頗' => '颇',
-'領' => '领',
-'頜' => '颌',
-'頟' => '额',
-'頡' => '颉',
-'頤' => '颐',
-'頦' => '颏',
-'頭' => '头',
-'頮' => '颒',
-'頰' => '颊',
-'頲' => '颋',
-'頴' => '颕',
-'頷' => '颔',
-'頸' => '颈',
-'頹' => '颓',
-'頻' => '频',
-'頼' => '赖',
-'頽' => '颓',
-'顃' => '𩖖',
-'顆' => '颗',
-'顇' => '悴',
-'顋' => '腮',
-'題' => '题',
-'額' => '额',
-'顎' => '颚',
-'顏' => '颜',
-'顒' => '颙',
-'顓' => '颛',
-'顔' => '颜',
-'願' => '愿',
-'顙' => '颡',
-'顛' => '颠',
-'類' => '类',
-'顢' => '颟',
-'顥' => '颢',
-'顦' => '憔',
-'顧' => '顾',
-'顫' => '颤',
-'顬' => '颥',
-'顯' => '显',
-'顰' => '颦',
-'顱' => '颅',
-'顳' => '颞',
-'顴' => '颧',
-'風' => '风',
-'颭' => '飐',
-'颮' => '飑',
-'颯' => '飒',
-'颰' => '𩙥',
-'颱' => '台',
-'颳' => '刮',
-'颶' => '飓',
-'颷' => '𩙪',
-'颸' => '飔',
-'颺' => '飏',
-'颻' => '飖',
-'颼' => '飕',
-'颾' => '𩙫',
-'飀' => '飗',
-'飃' => '飘',
-'飄' => '飘',
-'飆' => '飙',
-'飈' => '飚',
-'飛' => '飞',
-'飜' => '翻',
-'飠' => '饣',
-'飢' => '饥',
-'飣' => '饤',
-'飤' => '饲',
-'飥' => '饦',
-'飩' => '饨',
-'飪' => '饪',
-'飫' => '饫',
-'飭' => '饬',
-'飯' => '饭',
-'飱' => '飧',
-'飲' => '饮',
-'飴' => '饴',
-'飼' => '饲',
-'飽' => '饱',
-'飾' => '饰',
-'飿' => '饳',
-'餁' => '饪',
-'餃' => '饺',
-'餄' => '饸',
-'餅' => '饼',
-'餈' => '糍',
-'餉' => '饷',
-'養' => '养',
-'餌' => '饵',
-'餎' => '饹',
-'餏' => '饻',
-'餑' => '饽',
-'餒' => '馁',
-'餓' => '饿',
-'餔' => '𫗦',
-'餕' => '馂',
-'餖' => '饾',
-'餗' => '𫗧',
-'餘' => '馀',
-'餚' => '肴',
-'餛' => '馄',
-'餜' => '馃',
-'餞' => '饯',
-'餡' => '馅',
-'餦' => '𫗠',
-'館' => '馆',
-'餭' => '𫗮',
-'餱' => '糇',
-'餳' => '饧',
-'餵' => '喂',
-'餶' => '馉',
-'餷' => '馇',
-'餸' => '𩠌',
-'餹' => '糖',
-'餺' => '馎',
-'餻' => '糕',
-'餼' => '饩',
-'餽' => '馈',
-'餾' => '馏',
-'餿' => '馊',
-'饁' => '馌',
-'饃' => '馍',
-'饅' => '馒',
-'饈' => '馐',
-'饉' => '馑',
-'饊' => '馓',
-'饋' => '馈',
-'饌' => '馔',
-'饍' => '膳',
-'饑' => '饥',
-'饒' => '饶',
-'饗' => '飨',
-'饘' => '𫗴',
-'饜' => '餍',
-'饝' => '馍',
-'饞' => '馋',
-'饢' => '馕',
-'馬' => '马',
-'馭' => '驭',
-'馮' => '冯',
-'馱' => '驮',
-'馳' => '驰',
-'馴' => '驯',
-'馹' => '驲',
-'駁' => '驳',
-'駃' => '𫘝',
-'駈' => '驱',
-'駎' => '𩧨',
-'駐' => '驻',
-'駑' => '驽',
-'駒' => '驹',
-'駔' => '驵',
-'駕' => '驾',
-'駘' => '骀',
-'駙' => '驸',
-'駚' => '𩧫',
-'駛' => '驶',
-'駝' => '驼',
-'駟' => '驷',
-'駡' => '骂',
-'駢' => '骈',
-'駧' => '𩧲',
-'駩' => '𩧴',
-'駭' => '骇',
-'駰' => '骃',
-'駱' => '骆',
-'駶' => '𩧺',
-'駸' => '骎',
-'駻' => '𫘣',
-'駿' => '骏',
-'騁' => '骋',
-'騂' => '骍',
-'騃' => '𫘤',
-'騅' => '骓',
-'騌' => '骔',
-'騍' => '骒',
-'騎' => '骑',
-'騏' => '骐',
-'騐' => '验',
-'騔' => '𩨀',
-'騖' => '骛',
-'騙' => '骗',
-'騚' => '𩨊',
-'騝' => '𩨃',
-'騟' => '𩨈',
-'騠' => '𫘨',
-'騣' => '鬃',
-'騤' => '骙',
-'騧' => '䯄',
-'騪' => '𩨄',
-'騫' => '骞',
-'騭' => '骘',
-'騮' => '骝',
-'騰' => '腾',
-'騶' => '驺',
-'騷' => '骚',
-'騸' => '骟',
-'騾' => '骡',
-'驀' => '蓦',
-'驁' => '骜',
-'驂' => '骖',
-'驃' => '骠',
-'驄' => '骢',
-'驅' => '驱',
-'驊' => '骅',
-'驋' => '𩧯',
-'驌' => '骕',
-'驍' => '骁',
-'驏' => '骣',
-'驕' => '骄',
-'驗' => '验',
-'驘' => '骡',
-'驚' => '惊',
-'驛' => '驿',
-'驟' => '骤',
-'驢' => '驴',
-'驤' => '骧',
-'驥' => '骥',
-'驦' => '骦',
-'驪' => '骊',
-'驫' => '骉',
-'骯' => '肮',
-'骽' => '腿',
-'骾' => '鲠',
-'髈' => '膀',
-'髏' => '髅',
-'髒' => '脏',
-'體' => '体',
-'髕' => '髌',
-'髖' => '髋',
-'髥' => '髯',
-'髮' => '发',
-'鬀' => '剃',
-'鬆' => '松',
-'鬉' => '鬃',
-'鬍' => '胡',
-'鬚' => '须',
-'鬢' => '鬓',
-'鬥' => '斗',
-'鬦' => '斗',
-'鬧' => '闹',
-'鬨' => '哄',
-'鬩' => '阋',
-'鬪' => '斗',
-'鬮' => '阄',
-'鬰' => '郁',
-'鬱' => '郁',
-'鬹' => '鬶',
-'魎' => '魉',
-'魘' => '魇',
-'魚' => '鱼',
-'魛' => '鱽',
-'魟' => '𫚉',
-'魢' => '鱾',
-'魥' => '𩽹',
-'魨' => '鲀',
-'魯' => '鲁',
-'魴' => '鲂',
-'魷' => '鱿',
-'魺' => '鲄',
-'鮁' => '鲅',
-'鮃' => '鲆',
-'鮄' => '𫚒',
-'鮊' => '鲌',
-'鮋' => '鲉',
-'鮍' => '鲏',
-'鮎' => '鲇',
-'鮐' => '鲐',
-'鮑' => '鲍',
-'鮒' => '鲋',
-'鮓' => '鲊',
-'鮚' => '鲒',
-'鮜' => '鲘',
-'鮝' => '鲞',
-'鮞' => '鲕',
-'鮟' => '𩽾',
-'鮣' => '䲟',
-'鮦' => '鲖',
-'鮪' => '鲔',
-'鮫' => '鲛',
-'鮭' => '鲑',
-'鮮' => '鲜',
-'鮰' => '𫚔',
-'鮳' => '鲓',
-'鮶' => '鲪',
-'鮸' => '𩾃',
-'鮺' => '鲝',
-'鯀' => '鲧',
-'鯁' => '鲠',
-'鯄' => '𩾁',
-'鯆' => '𫚙',
-'鯇' => '鲩',
-'鯉' => '鲤',
-'鯊' => '鲨',
-'鯒' => '鲬',
-'鯔' => '鲻',
-'鯕' => '鲯',
-'鯖' => '鲭',
-'鯗' => '鲞',
-'鯛' => '鲷',
-'鯝' => '鲴',
-'鯡' => '鲱',
-'鯢' => '鲵',
-'鯤' => '鲲',
-'鯧' => '鲳',
-'鯨' => '鲸',
-'鯪' => '鲮',
-'鯫' => '鲰',
-'鯰' => '鲶',
-'鯱' => '𩾇',
-'鯴' => '鲺',
-'鯶' => '𩽼',
-'鯷' => '鳀',
-'鯽' => '鲫',
-'鯿' => '鳊',
-'鰁' => '鳈',
-'鰂' => '鲗',
-'鰃' => '鳂',
-'鰆' => '䲠',
-'鰈' => '鲽',
-'鰉' => '鳇',
-'鰌' => '䲡',
-'鰍' => '鳅',
-'鰏' => '鲾',
-'鰐' => '鳄',
-'鰒' => '鳆',
-'鰓' => '鳃',
-'鰛' => '鳁',
-'鰜' => '鳒',
-'鰟' => '鳑',
-'鰠' => '鳋',
-'鰣' => '鲥',
-'鰤' => '𫚕',
-'鰥' => '鳏',
-'鰧' => '䲢',
-'鰨' => '鳎',
-'鰩' => '鳐',
-'鰭' => '鳍',
-'鰮' => '鳁',
-'鰱' => '鲢',
-'鰲' => '鳌',
-'鰳' => '鳓',
-'鰵' => '鳘',
-'鰷' => '鲦',
-'鰹' => '鲣',
-'鰺' => '鲹',
-'鰻' => '鳗',
-'鰼' => '鳛',
-'鰾' => '鳔',
-'鱂' => '鳉',
-'鱅' => '鳙',
-'鱇' => '𩾌',
-'鱈' => '鳕',
-'鱉' => '鳖',
-'鱒' => '鳟',
-'鱔' => '鳝',
-'鱖' => '鳜',
-'鱗' => '鳞',
-'鱘' => '鲟',
-'鱝' => '鲼',
-'鱟' => '鲎',
-'鱠' => '鲙',
-'鱣' => '鳣',
-'鱤' => '鳡',
-'鱧' => '鳢',
-'鱨' => '鲿',
-'鱭' => '鲚',
-'鱮' => '𫚈',
-'鱯' => '鳠',
-'鱷' => '鳄',
-'鱸' => '鲈',
-'鱺' => '鲡',
-'鳥' => '鸟',
-'鳧' => '凫',
-'鳩' => '鸠',
-'鳬' => '凫',
-'鳲' => '鸤',
-'鳳' => '凤',
-'鳴' => '鸣',
-'鳶' => '鸢',
-'鳷' => '𫛛',
-'鳼' => '𪉃',
-'鳾' => '䴓',
-'鴃' => '𫛞',
-'鴆' => '鸩',
-'鴇' => '鸨',
-'鴈' => '雁',
-'鴉' => '鸦',
-'鴒' => '鸰',
-'鴕' => '鸵',
-'鴗' => '𫁡',
-'鴛' => '鸳',
-'鴜' => '𪉈',
-'鴝' => '鸲',
-'鴞' => '鸮',
-'鴟' => '鸱',
-'鴣' => '鸪',
-'鴦' => '鸯',
-'鴨' => '鸭',
-'鴯' => '鸸',
-'鴰' => '鸹',
-'鴲' => '𪉆',
-'鴴' => '鸻',
-'鴷' => '䴕',
-'鴻' => '鸿',
-'鴿' => '鸽',
-'鵁' => '䴔',
-'鵂' => '鸺',
-'鵃' => '鸼',
-'鵐' => '鹀',
-'鵑' => '鹃',
-'鵒' => '鹆',
-'鵓' => '鹁',
-'鵚' => '𪉍',
-'鵜' => '鹈',
-'鵝' => '鹅',
-'鵞' => '鹅',
-'鵠' => '鹄',
-'鵡' => '鹉',
-'鵪' => '鹌',
-'鵬' => '鹏',
-'鵮' => '鹐',
-'鵯' => '鹎',
-'鵰' => '雕',
-'鵲' => '鹊',
-'鵶' => '鸦',
-'鵷' => '鹓',
-'鵾' => '鹍',
-'鶄' => '䴖',
-'鶇' => '鸫',
-'鶉' => '鹑',
-'鶊' => '鹒',
-'鶒' => '𫛶',
-'鶓' => '鹋',
-'鶖' => '鹙',
-'鶗' => '𫛸',
-'鶘' => '鹕',
-'鶚' => '鹗',
-'鶡' => '鹖',
-'鶥' => '鹛',
-'鶩' => '鹜',
-'鶪' => '䴗',
-'鶬' => '鸧',
-'鶯' => '莺',
-'鶲' => '鹟',
-'鶴' => '鹤',
-'鶹' => '鹠',
-'鶺' => '鹡',
-'鶻' => '鹘',
-'鶼' => '鹣',
-'鶿' => '鹚',
-'鷀' => '鹚',
-'鷁' => '鹢',
-'鷂' => '鹞',
-'鷄' => '鸡',
-'鷈' => '䴘',
-'鷊' => '鹝',
-'鷓' => '鹧',
-'鷔' => '𪉑',
-'鷖' => '鹥',
-'鷗' => '鸥',
-'鷙' => '鸷',
-'鷚' => '鹨',
-'鷥' => '鸶',
-'鷦' => '鹪',
-'鷨' => '𪉊',
-'鷫' => '鹔',
-'鷯' => '鹩',
-'鷰' => '燕',
-'鷲' => '鹫',
-'鷳' => '鹇',
-'鷴' => '鹇',
-'鷸' => '鹬',
-'鷹' => '鹰',
-'鷺' => '鹭',
-'鷽' => '鸴',
-'鷿' => '䴙',
-'鸂' => '㶉',
-'鸇' => '鹯',
-'鸋' => '𫛢',
-'鸌' => '鹱',
-'鸎' => '莺',
-'鸏' => '鹲',
-'鸕' => '鸬',
-'鸘' => '鹴',
-'鸚' => '鹦',
-'鸛' => '鹳',
-'鸝' => '鹂',
-'鸞' => '鸾',
-'鹵' => '卤',
-'鹹' => '咸',
-'鹺' => '鹾',
-'鹻' => '碱',
-'鹼' => '碱',
-'鹽' => '盐',
-'麗' => '丽',
-'麥' => '麦',
-'麨' => '𪎊',
-'麩' => '麸',
-'麪' => '面',
-'麫' => '面',
-'麯' => '曲',
-'麲' => '𪎉',
-'麳' => '𪎌',
-'麴' => '麹',
-'麵' => '面',
-'麼' => '么',
-'麽' => '么',
-'黃' => '黄',
-'黌' => '黉',
-'點' => '点',
-'黨' => '党',
-'黲' => '黪',
-'黴' => '霉',
-'黶' => '黡',
-'黷' => '黩',
-'黽' => '黾',
-'黿' => '鼋',
-'鼃' => '蛙',
-'鼇' => '鳌',
-'鼈' => '鳖',
-'鼉' => '鼍',
-'鼕' => '咚',
-'鼴' => '鼹',
-'齊' => '齐',
-'齋' => '斋',
-'齎' => '赍',
-'齏' => '齑',
-'齒' => '齿',
-'齔' => '龀',
-'齕' => '龁',
-'齗' => '龂',
-'齙' => '龅',
-'齜' => '龇',
-'齟' => '龃',
-'齠' => '龆',
-'齡' => '龄',
-'齣' => '出',
-'齦' => '龈',
-'齧' => '啮',
-'齩' => '咬',
-'齪' => '龊',
-'齬' => '龉',
-'齲' => '龋',
-'齶' => '腭',
-'齷' => '龌',
-'龍' => '龙',
-'龎' => '厐',
-'龐' => '庞',
-'龑' => '䶮',
-'龔' => '龚',
-'龕' => '龛',
-'龜' => '龟',
-'龭' => '𩨎',
-'龯' => '𨱆',
-'𠌥' => '𠆿',
-'𠏢' => '𠉗',
-'𠕂' => '再',
-'𠕅' => '再',
-'𠞆' => '𠛆',
-'𠞰' => '剿',
-'𠠎' => '𠚳',
-'𡄔' => '𠴢',
-'𡄣' => '𠵸',
-'𡅏' => '𠲥',
-'𡑭' => '𡋗',
-'𡓾' => '𡋀',
-'𡚁' => '弊',
-'𡞵' => '㛟',
-'𡠹' => '㛿',
-'𡢃' => '㛠',
-'𡨥' => '寇',
-'𡮉' => '𡭜',
-'𡮣' => '𡭬',
-'𡻕' => '岁',
-'𡾱' => '㟜',
-'𢣚' => '𢘝',
-'𢣭' => '𢘞',
-'𢶫' => '𢫞',
-'𢷮' => '𢫊',
-'𢹿' => '𢬦',
-'𣙎' => '㭣',
-'𣙜' => '榷',
-'𣝕' => '𣘷',
-'𣞻' => '𣘓',
-'𣠲' => '𣑶',
-'𣯴' => '𣭤',
-'𣾷' => '㳢',
-'𣿉' => '𣶫',
-'𤁣' => '𣺽',
-'𤋮' => '熙',
-'𤒎' => '𤊀',
-'𤨏' => '琐',
-'𤪺' => '㻘',
-'𤫩' => '㻏',
-'𤱈' => '亩',
-'𤳸' => '𤳄',
-'𤸫' => '𤶧',
-'𤺥' => '瘩',
-'𥌃' => '𥅘',
-'𥕥' => '𥐰',
-'𥖅' => '𥐯',
-'𥢢' => '䅪',
-'𥨐' => '𥧂',
-'𥵃' => '𥱔',
-'𥵊' => '𥭉',
-'𥸠' => '𥮋',
-'𥼽' => '𥹥',
-'𥽖' => '𥺇',
-'𥿊' => '𦈈',
-'𦂅' => '𦈒',
-'𦃄' => '𦈗',
-'𦊱' => '挂',
-'𦍑' => '羌',
-'𦕈' => '眇',
-'𦢈' => '𣍨',
-'𦣎' => '𦟗',
-'𦪽' => '𦨩',
-'𦵏' => '葬',
-'𧔥' => '𧒭',
-'𧜗' => '䘞',
-'𧜵' => '䙊',
-'𧝞' => '䘛',
-'𧩙' => '䜥',
-'𧳟' => '𧳕',
-'𧵳' => '䞌',
-'𧶔' => '𧹓',
-'𧶧' => '䞎',
-'𨄣' => '𨀱',
-'𨅍' => '𨁴',
-'𨇁' => '𧿈',
-'𨇞' => '𨅫',
-'𨈊' => '𨂺',
-'𨈌' => '𨄄',
-'𨊰' => '䢀',
-'𨊸' => '䢁',
-'𨊻' => '𨐆',
-'𨋢' => '䢂',
-'𨎮' => '𨐉',
-'𨏠' => '𨐇',
-'𨏥' => '𨐊',
-'𨤻' => '𨤰',
-'𨥛' => '𨱀',
-'𨦫' => '䦀',
-'𨧜' => '䦁',
-'𨧱' => '𨱊',
-'𨫒' => '𨱐',
-'𨮂' => '𨱕',
-'𨯅' => '䥿',
-'𨳑' => '𨸁',
-'𨳕' => '𨸀',
-'𨴗' => '𨸅',
-'𨵩' => '𨸆',
-'𨵸' => '𨸇',
-'𨶀' => '𨸉',
-'𨶏' => '𨸊',
-'𨶮' => '𨸌',
-'𨶲' => '𨸋',
-'𨷲' => '𨸎',
-'𨽏' => '𨸘',
-'𨽻' => '隶',
-'𩎢' => '𩏾',
-'𩏪' => '𩏽',
-'𩓐' => '脖',
-'𩓣' => '𩖕',
-'𩗀' => '𩙦',
-'𩗗' => '飓',
-'𩗡' => '𩙧',
-'𩘀' => '𩙩',
-'𩘝' => '𩙭',
-'𩘹' => '𩙨',
-'𩘺' => '𩙬',
-'𩙈' => '𩙰',
-'𩚛' => '𩟿',
-'𩚥' => '𩠀',
-'𩚵' => '𩠁',
-'𩛆' => '𩠂',
-'𩛩' => '𩠃',
-'𩜇' => '𩠉',
-'𩜦' => '𩠆',
-'𩜵' => '𩠊',
-'𩝔' => '𩠋',
-'𩞄' => '𩠎',
-'𩞦' => '𩠏',
-'𩞯' => '䭪',
-'𩟐' => '𩠅',
-'𩠴' => '𩠠',
-'𩡺' => '𩧦',
-'𩢡' => '𩧬',
-'𩢴' => '𩧵',
-'𩢸' => '𩧳',
-'𩢾' => '𩧮',
-'𩣏' => '𩧶',
-'𩣑' => '䯃',
-'𩣵' => '𩧻',
-'𩣺' => '𩧼',
-'𩤊' => '𩧩',
-'𩤙' => '𩨆',
-'𩤲' => '𩨉',
-'𩤸' => '𩨅',
-'𩥄' => '𩨋',
-'𩥇' => '𩨍',
-'𩥉' => '𩧱',
-'𩥑' => '𩨌',
-'𩧆' => '𩨐',
-'𩭙' => '𩬣',
-'𩯳' => '𩯒',
-'𩰀' => '𩬤',
-'𩳤' => '𩲒',
-'𩵩' => '𩽺',
-'𩵹' => '𩽻',
-'𩶘' => '䲞',
-'𩶰' => '𩽿',
-'𩶱' => '𩽽',
-'𩷰' => '𩾄',
-'𩸃' => '𩾅',
-'𩸦' => '𩾆',
-'𩽇' => '𩾎',
-'𩿪' => '𪉄',
-'𪀦' => '𪉅',
-'𪀾' => '𪉋',
-'𪁈' => '𪉉',
-'𪁖' => '𪉌',
-'𪂆' => '𪉎',
-'𪃍' => '𪉐',
-'𪃏' => '𪉏',
-'𪄆' => '𪉔',
-'𪄕' => '𪉒',
-'𪇳' => '𪉕',
-'𪈼' => '𪉓',
-'𪋿' => '𪎍',
-'𪔵' => '𪔭',
-'𪘀' => '𪚏',
-'𪘯' => '𪚐',
-'『' => '‘',
-'』' => '’',
-'「' => '“',
-'「' => '“',
-'」' => '”',
-'」' => '”',
-'。陞' => '。升',
-'《易乾' => '《易乾',
-'一釐' => '一厘',
-'上昇' => '上升',
-'不穀' => '不穀',
-'專著' => '专著',
-'乾一坛' => '乾一坛',
-'乾一壇' => '乾一坛',
-'乾一組' => '乾一组',
-'乾一组' => '乾一组',
-'乾上乾下' => '乾上乾下',
-'乾东' => '乾东',
-'乾東' => '乾东',
-'乾為天' => '乾为天',
-'乾為陽' => '乾为阳',
-'乾九' => '乾九',
-'乾乾' => '乾乾',
-'乾亨' => '乾亨',
-'乾仪' => '乾仪',
-'乾儀' => '乾仪',
-'乾位' => '乾位',
-'乾健' => '乾健',
-'乾健也' => '乾健也',
-'乾元' => '乾元',
-'乾光' => '乾光',
-'乾兴' => '乾兴',
-'乾興' => '乾兴',
-'乾冈' => '乾冈',
-'乾岡' => '乾冈',
-'乾刘' => '乾刘',
-'乾劉' => '乾刘',
-'乾刚' => '乾刚',
-'乾剛' => '乾刚',
-'乾务' => '乾务',
-'乾務' => '乾务',
-'乾化' => '乾化',
-'乾卦' => '乾卦',
-'乾县' => '乾县',
-'乾縣' => '乾县',
-'乾台' => '乾台',
-'乾吉' => '乾吉',
-'乾启' => '乾启',
-'乾啟' => '乾启',
-'乾命' => '乾命',
-'乾和' => '乾和',
-'乾嘉' => '乾嘉',
-'乾图' => '乾图',
-'乾圖' => '乾图',
-'乾坤' => '乾坤',
-'乾城' => '乾城',
-'乾基' => '乾基',
-'乾天也' => '乾天也',
-'乾始' => '乾始',
-'乾姓' => '乾姓',
-'乾宁' => '乾宁',
-'乾寧' => '乾宁',
-'乾宅' => '乾宅',
-'乾宇' => '乾宇',
-'乾安' => '乾安',
-'乾定' => '乾定',
-'乾封' => '乾封',
-'乾居' => '乾居',
-'乾岗' => '乾岗',
-'乾崗' => '乾岗',
-'乾巛' => '乾巛',
-'乾州' => '乾州',
-'乾录' => '乾录',
-'乾錄' => '乾录',
-'乾律' => '乾律',
-'乾德' => '乾德',
-'乾心' => '乾心',
-'乾忠' => '乾忠',
-'乾文' => '乾文',
-'乾断' => '乾断',
-'乾斷' => '乾断',
-'乾方' => '乾方',
-'乾施' => '乾施',
-'乾旦' => '乾旦',
-'乾明' => '乾明',
-'乾昧' => '乾昧',
-'乾晖' => '乾晖',
-'乾暉' => '乾晖',
-'乾景' => '乾景',
-'乾晷' => '乾晷',
-'乾曜' => '乾曜',
-'乾构' => '乾构',
-'乾構' => '乾构',
-'乾枢' => '乾枢',
-'乾樞' => '乾枢',
-'乾栋' => '乾栋',
-'乾棟' => '乾栋',
-'乾步' => '乾步',
-'乾氏' => '乾氏',
-'乾沓和' => '乾沓和',
-'乾沓婆' => '乾沓婆',
-'乾泉' => '乾泉',
-'乾淳' => '乾淳',
-'乾清' => '乾清',
-'乾渥' => '乾渥',
-'乾潭' => '乾潭',
-'乾灵' => '乾灵',
-'乾靈' => '乾灵',
-'乾生元' => '乾生元',
-'乾男' => '乾男',
-'乾皋' => '乾皋',
-'乾盛世' => '乾盛世',
-'乾矢' => '乾矢',
-'乾祐' => '乾祐',
-'乾神' => '乾神',
-'乾穹' => '乾穹',
-'乾窦' => '乾窦',
-'乾竇' => '乾窦',
-'乾竺' => '乾竺',
-'乾笃' => '乾笃',
-'乾篤' => '乾笃',
-'乾符' => '乾符',
-'乾策' => '乾策',
-'乾精' => '乾精',
-'乾紅' => '乾红',
-'乾红' => '乾红',
-'乾綱' => '乾纲',
-'乾纲' => '乾纲',
-'乾紐' => '乾纽',
-'乾纽' => '乾纽',
-'乾絡' => '乾络',
-'乾络' => '乾络',
-'乾統' => '乾统',
-'乾统' => '乾统',
-'乾維' => '乾维',
-'乾维' => '乾维',
-'乾罗' => '乾罗',
-'乾羅' => '乾罗',
-'乾花' => '乾花',
-'乾荫' => '乾荫',
-'乾蔭' => '乾荫',
-'乾行' => '乾行',
-'乾衡' => '乾衡',
-'乾西' => '乾西',
-'乾覆' => '乾覆',
-'乾象' => '乾象',
-'乾象历' => '乾象历',
-'乾象歷' => '乾象历',
-'乾貞' => '乾贞',
-'乾贞' => '乾贞',
-'乾貴士' => '乾贵士',
-'乾贵士' => '乾贵士',
-'乾貺' => '乾贶',
-'乾贶' => '乾贶',
-'乾車' => '乾车',
-'乾车' => '乾车',
-'乾軸' => '乾轴',
-'乾轴' => '乾轴',
-'乾通' => '乾通',
-'乾造' => '乾造',
-'乾道' => '乾道',
-'乾鉴' => '乾鉴',
-'乾鑒' => '乾鉴',
-'乾鈞' => '乾钧',
-'乾钧' => '乾钧',
-'乾闥' => '乾闼',
-'乾闼' => '乾闼',
-'乾陀' => '乾陀',
-'乾陵' => '乾陵',
-'乾隆' => '乾隆',
-'乾音' => '乾音',
-'乾顧' => '乾顾',
-'乾顾' => '乾顾',
-'乾風' => '乾风',
-'乾风' => '乾风',
-'乾首' => '乾首',
-'乾馬' => '乾马',
-'乾马' => '乾马',
-'乾鵠' => '乾鹄',
-'乾鹄' => '乾鹄',
-'乾鵲' => '乾鹊',
-'乾鹊' => '乾鹊',
-'乾龍' => '乾龙',
-'乾龙' => '乾龙',
-'乾,健也' => '乾,健也',
-'乾,天也' => '乾,天也',
-'五箇山' => '五箇山',
-'什么' => '什么',
-'仇讎' => '仇雠',
-'以微知著' => '以微知著',
-'仰屋著書' => '仰屋著书',
-'彷彿' => '仿佛',
-'夥計' => '伙计',
-'佛頭著糞' => '佛头著粪',
-'偵蒐' => '侦搜',
-'倖一郎' => '倖一郎',
-'倖田' => '倖田',
-'候覆' => '候复',
-'藉助' => '借助',
-'藉口' => '借口',
-'藉手' => '借手',
-'藉故' => '借故',
-'藉機' => '借机',
-'藉此' => '借此',
-'藉由' => '借由',
-'藉端' => '借端',
-'藉詞' => '借词',
-'傒倖' => '傒倖',
-'先名後姓' => '先名后姓',
-'兒寬' => '兒宽',
-'六么' => '六幺',
-'蘭質薰心' => '兰质薰心',
-'內聯陞' => '内联升',
-'憑藉' => '凭借',
-'初昇' => '初升',
-'利欲薰心' => '利欲薰心',
-'剋了' => '剋了',
-'剋架' => '剋架',
-'剖釐' => '剖厘',
-'陞為' => '升为',
-'陞了' => '升了',
-'昇仙' => '升仙',
-'陞任' => '升任',
-'昇華' => '升华',
-'昇天' => '升天',
-'陞官' => '升官',
-'昇平' => '升平',
-'昇汞' => '升汞',
-'陞用' => '升用',
-'陞補' => '升补',
-'陞遷' => '升迁',
-'昇降' => '升降',
-'卓著' => '卓著',
-'博和託' => '博和讬',
-'歷陞' => '历升',
-'釐改' => '厘改',
-'釐整' => '厘整',
-'釐正' => '厘正',
-'釐毫' => '厘毫',
-'釐清' => '厘清',
-'釐訂' => '厘订',
-'釐革' => '厘革',
-'原著' => '原著',
-'又陞' => '又升',
-'反反覆覆' => '反反复复',
-'反覆' => '反复',
-'可穿著' => '可穿著',
-'吃衣著飯' => '吃衣著饭',
-'合著' => '合著',
-'同陞和' => '同升和',
-'名著' => '名著',
-'吳克羣' => '吴克羣',
-'周易乾' => '周易乾',
-'諠譁' => '喧哗',
-'回覆' => '回复',
-'土著' => '土著',
-'坤乾' => '坤乾',
-'墨瀋' => '墨渖',
-'覆查' => '复查',
-'覆核' => '复核',
-'覆检' => '复检',
-'復甦' => '复苏',
-'多么' => '多么',
-'大麴' => '大曲',
-'天道为乾' => '天道为乾',
-'天道為乾' => '天道为乾',
-'奧區' => '奧区',
-'如瀋' => '如渖',
-'姓么' => '姓幺',
-'子餘' => '子馀',
-'字乾生' => '字乾生',
-'孙乾' => '孙乾',
-'孫乾' => '孙乾',
-'宏碁' => '宏碁',
-'官陞' => '官升',
-'將軍抽俥' => '将军抽俥',
-'將軍抽車' => '将军抽車',
-'爾冬陞' => '尔冬升',
-'尼乾陀' => '尼乾陀',
-'侷促' => '局促',
-'跼促' => '局促',
-'侷限' => '局限',
-'跼限' => '局限',
-'山崎闇齋' => '山崎闇斋',
-'岳託' => '岳讬',
-'巨著' => '巨著',
-'乾乾淨淨' => '干干净净',
-'乾乾脆脆' => '干干脆脆',
-'乾泉水' => '干泉水',
-'年陞' => '年升',
-'么九' => '幺九',
-'么二三' => '幺二三',
-'么元' => '幺元',
-'么鳳' => '幺凤',
-'么半' => '幺半',
-'么半群' => '幺半群',
-'么廝' => '幺厮',
-'幺厮' => '幺厮',
-'么叔' => '幺叔',
-'么女' => '幺女',
-'么媽' => '幺妈',
-'么妹' => '幺妹',
-'么姓' => '幺姓',
-'么姨' => '幺姨',
-'么娘' => '幺娘',
-'么孃' => '幺娘',
-'幺孃' => '幺娘',
-'么子' => '幺子',
-'么小' => '幺小',
-'么弟' => '幺弟',
-'么正' => '幺正',
-'么氏' => '幺氏',
-'么爸' => '幺爸',
-'么爹' => '幺爹',
-'么篇' => '幺篇',
-'么舅' => '幺舅',
-'么蛾子' => '幺蛾子',
-'么謙' => '幺谦',
-'么麼' => '幺麽',
-'么麽' => '幺麽',
-'么麽小丑' => '幺麽小丑',
-'慶餘' => '庆馀',
-'康乾' => '康乾',
-'张法乾' => '张法乾',
-'張法乾' => '张法乾',
-'彰明較著' => '彰明较著',
-'待覆' => '待复',
-'後姓' => '後姓',
-'慫慂' => '怂恿',
-'怎么' => '怎么',
-'恩威並著' => '恩威并著',
-'噁心' => '恶心',
-'情蒐' => '情搜',
-'情鍾' => '情钟',
-'惏悷' => '惏悷',
-'惏慄' => '惏慄',
-'慘澹' => '惨淡',
-'成效顯著' => '成效显著',
-'成績顯著' => '成绩显著',
-'所鍾' => '所钟',
-'手鍊' => '手链',
-'扞格' => '扞格',
-'執著' => '执著',
-'批覆' => '批复',
-'承乾' => '承乾',
-'拉鍊' => '拉链',
-'拙著' => '拙著',
-'拚命' => '拚命',
-'拚搏' => '拚搏',
-'拚死' => '拚死',
-'拾瀋' => '拾渖',
-'拿破崙' => '拿破仑',
-'挨剋' => '挨剋',
-'提昇' => '提升',
-'蒐錄' => '搜录',
-'蒐索' => '搜索',
-'蒐羅' => '搜罗',
-'蒐藏' => '搜藏',
-'蒐證' => '搜证',
-'蒐購' => '搜购',
-'蒐輯' => '搜辑',
-'蒐採' => '搜采',
-'蒐采' => '搜采',
-'蒐集' => '搜集',
-'搥打' => '搥打',
-'搥胸頓足' => '搥胸顿足',
-'撰著' => '撰著',
-'效果顯著' => '效果显著',
-'文徵明' => '文徵明',
-'觔斗' => '斤斗',
-'新著' => '新著',
-'於世成' => '於世成',
-'於之瑩' => '於之莹',
-'於之莹' => '於之莹',
-'於乎' => '於乎',
-'於乙于同' => '於乙于同',
-'於乙宇同' => '於乙宇同',
-'於于同' => '於于同',
-'於哲' => '於哲',
-'於夫罗' => '於夫罗',
-'於夫羅' => '於夫罗',
-'於姓' => '於姓',
-'於宇同' => '於宇同',
-'於崇文' => '於崇文',
-'於志賀' => '於志贺',
-'於志贺' => '於志贺',
-'於戲' => '於戏',
-'於梨华' => '於梨华',
-'於梨華' => '於梨华',
-'於氏' => '於氏',
-'於潜' => '於潜',
-'於潛縣' => '於潜县',
-'於祥玉' => '於祥玉',
-'於菟' => '於菟',
-'於賢德' => '於贤德',
-'於除鞬' => '於除鞬',
-'施讎' => '施雠',
-'旋乾轉坤' => '旋乾转坤',
-'旋乾转坤' => '旋乾转坤',
-'無言不讎' => '无言不雠',
-'曠若發矇' => '旷若发矇',
-'崑崙' => '昆仑',
-'崑劇' => '昆剧',
-'崑山' => '昆山',
-'崑曲' => '昆曲',
-'崑腔' => '昆腔',
-'崑蘇' => '昆苏',
-'崑調' => '昆调',
-'易·乾' => '易·乾',
-'易經·乾' => '易经·乾',
-'易经·乾' => '易经·乾',
-'易經乾' => '易经乾',
-'易经乾' => '易经乾',
-'昭著' => '昭著',
-'顯著' => '显著',
-'顯著地' => '显著地',
-'顯著地位' => '显著地位',
-'顯著性' => '显著性',
-'顯著成績' => '显著成绩',
-'顯著效果' => '显著效果',
-'顯著特點' => '显著特点',
-'晉陞' => '晋升',
-'暗闇' => '暗闇',
-'麴黴' => '曲霉',
-'曾运乾' => '曾运乾',
-'曾運乾' => '曾运乾',
-'月陞' => '月升',
-'朝乾夕惕' => '朝乾夕惕',
-'朱有燉' => '朱有燉',
-'朱淛' => '朱淛',
-'硃砂' => '朱砂',
-'硃紅' => '朱红',
-'硃色' => '朱色',
-'朴於宇同' => '朴於宇同',
-'李乾德' => '李乾德',
-'李乾順' => '李乾顺',
-'李乾顺' => '李乾顺',
-'李澤鉅' => '李泽钜',
-'李祕' => '李祕',
-'李譔' => '李譔',
-'柳詒徵' => '柳诒徵',
-'柳诒徵' => '柳诒徵',
-'校讎' => '校雠',
-'楈枒' => '楈枒',
-'樊於期' => '樊於期',
-'殘瀋' => '残渖',
-'慇勤' => '殷勤',
-'慇懃' => '殷勤',
-'比較顯著' => '比较显著',
-'毫釐' => '毫厘',
-'氆氌' => '氆氌',
-'沈沒' => '沉没',
-'沈澱' => '沉淀',
-'沈積' => '沉积',
-'沈船' => '沉船',
-'沈重' => '沉重',
-'沈默' => '沉默',
-'氾濫' => '泛滥',
-'洗鍊' => '洗练',
-'瀋液' => '渖液',
-'薰習' => '熏习',
-'薰心' => '熏心',
-'薰沐' => '熏沐',
-'薰陶' => '熏陶',
-'薰香' => '熏香',
-'爨翫' => '爨翫',
-'獨鍾' => '独钟',
-'王道乾' => '王道乾',
-'王餘魚' => '王馀鱼',
-'甚夥' => '甚夥',
-'男为乾' => '男为乾',
-'男為乾' => '男为乾',
-'男性为乾' => '男性为乾',
-'男性為乾' => '男性为乾',
-'療效顯著' => '疗效显著',
-'白瀋' => '白渖',
-'皁保' => '皁保',
-'目劄' => '目劄',
-'直昇' => '直升',
-'睹微知著' => '睹微知著',
-'瞭台' => '瞭台',
-'瞭臺' => '瞭台',
-'瞭望' => '瞭望',
-'矇眬' => '矇眬',
-'矇矓' => '矇眬',
-'石碁' => '石碁',
-'石碁鎮' => '石碁镇',
-'碩託' => '硕讬',
-'鹼菜' => '硷菜',
-'碁圣' => '碁圣',
-'碁聖' => '碁圣',
-'碁所' => '碁所',
-'祕宜' => '祕宜',
-'穀旦' => '穀旦',
-'穀梁' => '穀梁',
-'穀水' => '穀水',
-'穀阳' => '穀阳',
-'穀陽' => '穀阳',
-'穿著者' => '穿着者',
-'竹昇' => '竹升',
-'答覆' => '答复',
-'米泽瑠美' => '米泽瑠美',
-'米瀋' => '米渖',
-'餬口' => '糊口',
-'繙㠾' => '繙㠾',
-'遶境' => '绕境',
-'線國安' => '缐国安',
-'線姓' => '缐姓',
-'編著' => '编著',
-'老么' => '老幺',
-'肉乾乾' => '肉干干',
-'肘手鍊足' => '肘手链足',
-'甦醒' => '苏醒',
-'苧烯' => '苧烯',
-'薴烯' => '苧烯',
-'蘋果' => '苹果',
-'荠苧' => '荠苧',
-'榮陞' => '荣升',
-'萧乾' => '萧乾',
-'蕭乾' => '萧乾',
-'著書' => '著书',
-'著書立說' => '著书立说',
-'著作' => '著作',
-'著名' => '著名',
-'著錄' => '著录',
-'著錄規則' => '著录规则',
-'著文' => '著文',
-'著有' => '著有',
-'著稱' => '著称',
-'著者' => '著者',
-'著身' => '著身',
-'著述' => '著述',
-'蔡孝乾' => '蔡孝乾',
-'蔡絛' => '蔡絛',
-'行餘' => '行馀',
-'覆蓋' => '覆盖',
-'見微知著' => '见微知著',
-'見著' => '见著',
-'視微知著' => '视微知著',
-'言幾析理' => '言幾析理',
-'諲譔' => '諲譔',
-'譩譆' => '譩譆',
-'託庸' => '讬庸',
-'託恩多' => '讬恩多',
-'託麻' => '讬麻',
-'論著' => '论著',
-'譯著' => '译著',
-'謝肇淛' => '谢肇淛',
-'象乾' => '象乾',
-'躊躇滿志' => '踌躇滿志',
-'較著' => '较著',
-'近角聪信' => '近角聪信',
-'这么' => '这么',
-'造麴' => '造曲',
-'遺著' => '遗著',
-'那么' => '那么',
-'那麽' => '那麽',
-'郭子乾' => '郭子乾',
-'酒麴' => '酒曲',
-'醉瀋' => '醉渖',
-'醯壶' => '醯壶',
-'醯壺' => '醯壶',
-'醯酱' => '醯酱',
-'醯醬' => '醯酱',
-'醯醋' => '醯醋',
-'醯醢' => '醯醢',
-'醯雞' => '醯鸡',
-'醯鸡' => '醯鸡',
-'重覆' => '重复',
-'金鍊' => '金链',
-'鍾情' => '钟情',
-'鍾意' => '钟意',
-'鍾靈' => '钟灵',
-'鍾愛' => '钟爱',
-'鐵鍊' => '铁链',
-'鉸鍊' => '铰链',
-'銀硃' => '银朱',
-'銀鍊' => '银链',
-'鍊子' => '链子',
-'鍊條' => '链条',
-'鍊表' => '链表',
-'鍊鎖' => '链锁',
-'鍊錘' => '链锤',
-'鎖鍊' => '锁链',
-'闇公' => '闇公',
-'閻懷禮' => '闫怀礼',
-'阳为乾' => '阳为乾',
-'陽為乾' => '阳为乾',
-'阿部正瞭' => '阿部正瞭',
-'陆徵祥' => '陆徵祥',
-'陸徵祥' => '陆徵祥',
-'陈乾生' => '陈乾生',
-'陳乾生' => '陈乾生',
-'陈元扞' => '陈元扞',
-'陳元扞' => '陈元扞',
-'陈公乾生' => '陈公乾生',
-'陳公乾生' => '陈公乾生',
-'陈遇乾' => '陈遇乾',
-'陳遇乾' => '陈遇乾',
-'陳堵' => '陳堵',
-'陳禕' => '陳禕',
-'雍乾' => '雍乾',
-'讎夷' => '雠夷',
-'讎定' => '雠定',
-'讎校' => '雠校',
-'讎正' => '雠正',
-'讎問' => '雠问',
-'項鍊' => '项链',
-'飛昇' => '飞升',
-'飭令' => '飭令',
-'飽託' => '饱讬',
-'餘慶' => '馀庆',
-'餘瀋' => '馀渖',
-'馬鞌' => '马鞍',
-'高昇' => '高升',
-'高陞' => '高升',
-'鬱姓' => '鬱姓',
-'鬱氏' => '鬱氏',
-'魏徵' => '魏徵',
-'魚乾乾' => '鱼干干',
-'麽氏' => '麽氏',
-'麼麼' => '麽麽',
-'麽麽' => '麽麽',
-'黃麴毒素' => '黄曲毒素',
-'黃潤乾' => '黄润乾',
-'黄润乾' => '黄润乾',
-'龍鍾' => '龙钟',
-',陞' => ',升',
-);
-
-$zh2TW = array(
-'0字节' => '0位元組',
-'0杆' => '0桿',
-'1字节' => '1位元組',
-'1杆' => '1桿',
-'2字节' => '2位元組',
-'2杆' => '2桿',
-'3字节' => '3位元組',
-'3杆' => '3桿',
-'4字节' => '4位元組',
-'4杆' => '4桿',
-'5字节' => '5位元組',
-'5杆' => '5桿',
-'6字节' => '6位元組',
-'6杆' => '6桿',
-'7字节' => '7位元組',
-'7杆' => '7桿',
-'8字节' => '8位元組',
-'8杆' => '8桿',
-'9字节' => '9位元組',
-'9杆' => '9桿',
-'甲型肝炎' => 'A型肝炎',
-'甲肝' => 'A肝',
-'乙型肝炎' => 'B型肝炎',
-'乙肝' => 'B肝',
-'丙型肝炎' => 'C型肝炎',
-'丙肝' => 'C肝',
-'IP地址' => 'IP位址',
-'乔戈里峰' => 'K2',
-'·威尔士' => '·威爾士',
-'·威爾士' => '·威爾士',
-'一杆' => '一桿',
-'七杆' => '七桿',
-'三杆' => '三桿',
-'三极管' => '三極體',
-'三極管' => '三極體',
-'达累斯萨拉姆' => '三蘭港',
-'上落客' => '上下客',
-'落車' => '下車',
-'不來梅' => '不萊梅',
-'不来梅' => '不萊梅',
-'以太网' => '乙太網',
-'九杆' => '九桿',
-'了結他' => '了結他',
-'二手烟' => '二手菸',
-'二手煙' => '二手菸',
-'二杆' => '二桿',
-'二极管' => '二極體',
-'二極管' => '二極體',
-'交互设计' => '互動設計',
-'五杆' => '五桿',
-'阿塞拜疆' => '亞塞拜然',
-'阿斯旺' => '亞斯文',
-'人工智能' => '人工智慧',
-'人机交互' => '人機互動',
-'行人路' => '人行道',
-'石勒苏益格' => '什勒斯維希',
-'石勒蘇益格' => '什勒斯維希',
-'界面' => '介面',
-'伊利诺伊州' => '伊利諾州',
-'伊斯坦布尔' => '伊斯坦堡',
-'伊斯坦布爾' => '伊斯坦堡',
-'伊斯兰堡' => '伊斯蘭瑪巴德',
-'伊斯蘭堡' => '伊斯蘭瑪巴德',
-'埃博拉' => '伊波拉',
-'伊丽莎白' => '伊莉莎白',
-'俯卧撑' => '伏地挺身',
-'掌上壓' => '伏地挺身',
-'伯明翰' => '伯明罕',
-'服务器' => '伺服器',
-'佛罗伦萨' => '佛羅倫斯',
-'操作系统' => '作業系統',
-'系数' => '係數',
-'避孕套' => '保險套',
-'傅里叶' => '傅立葉',
-'光盘' => '光碟',
-'光驱' => '光碟機',
-'开普勒' => '克卜勒',
-'開普勒' => '克卜勒',
-'克罗地亚' => '克羅埃西亞',
-'克羅地亞' => '克羅埃西亞',
-'克里斯托弗' => '克里斯多福',
-'万维网' => '全球資訊網',
-'八杆' => '八桿',
-'公共交通' => '公共運輸',
-'六杆' => '六桿',
-'凯瑟琳' => '凱薩琳',
-'嘉芙蓮' => '凱薩琳',
-'划着独木舟' => '划著獨木舟',
-'划着竹筏' => '划著竹筏',
-'划着船' => '划著船',
-'打印' => '列印',
-'列支敦士登' => '列支敦斯登',
-'前波美拉尼亚' => '前波莫瑞',
-'前波美拉尼亞' => '前波莫瑞',
-'加蓬' => '加彭',
-'加沙地带' => '加薩走廊',
-'加沙地帶' => '加薩走廊',
-'包豪斯' => '包浩斯',
-'北朝鲜' => '北韓',
-'局域网' => '區域網',
-'局域网络' => '區域網路',
-'十杆' => '十桿',
-'特立尼达和托巴哥' => '千里達托貝哥',
-'特立尼達和多巴哥' => '千里達托貝哥',
-'南朝鲜' => '南韓',
-'卡斯特罗' => '卡斯楚',
-'卡塔尔' => '卡達',
-'卡塔爾' => '卡達',
-'铆足' => '卯足',
-'打印机' => '印表機',
-'打印機' => '印表機',
-'厄利垂亚' => '厄利垂亞',
-'厄立特里亚' => '厄利垂亞',
-'厄立特里亞' => '厄利垂亞',
-'厄瓜多' => '厄瓜多',
-'厄瓜多尔' => '厄瓜多',
-'厄瓜多爾' => '厄瓜多',
-'源代码' => '原始碼',
-'圆珠笔' => '原子筆',
-'反烟' => '反菸',
-'反煙' => '反菸',
-'可卡因' => '古柯鹼',
-'便携式' => '可攜式',
-'叱咤' => '叱吒',
-'叱咤9' => '叱咤9',
-'叱咤M' => '叱咤M',
-'叱咤叱' => '叱咤叱',
-'叱咤咤' => '叱咤咤',
-'叱咤樂壇' => '叱咤樂壇',
-'斯坦福大学' => '史丹福大學',
-'斯皮尔伯格' => '史匹柏',
-'斯特劳斯' => '史特勞斯',
-'斯威士兰' => '史瓦濟蘭',
-'斯威士蘭' => '史瓦濟蘭',
-'斯蒂芬' => '史蒂芬',
-'斯大林' => '史達林',
-'結他' => '吉他',
-'乞力馬札羅' => '吉力馬札羅',
-'乞力马扎罗' => '吉力馬札羅',
-'吉布堤' => '吉布地',
-'吉布提' => '吉布地',
-'基里巴斯' => '吉里巴斯',
-'图瓦卢' => '吐瓦魯',
-'圖瓦盧' => '吐瓦魯',
-'吸烟' => '吸菸',
-'吸煙' => '吸菸',
-'吕宋烟' => '呂宋菸',
-'呂宋煙' => '呂宋菸',
-'格丁根' => '哥廷根',
-'哥特式' => '哥德式',
-'哥斯达黎加' => '哥斯大黎加',
-'哥斯達黎加' => '哥斯大黎加',
-'卡拉奇' => '喀拉蚩',
-'乔治·奥威尔' => '喬治·歐威爾',
-'佐治亚' => '喬治亞',
-'佐治亞' => '喬治亞',
-'格魯吉亞' => '喬治亞',
-'格鲁吉亚' => '喬治亞',
-'单反相机' => '單眼相機',
-'單鏡反光機' => '單眼相機',
-'嘯咤' => '嘯吒',
-'四杆' => '四桿',
-'图卢兹' => '土魯斯',
-'圖盧茲' => '土魯斯',
-'戛纳' => '坎城',
-'堪培拉' => '坎培拉',
-'坦桑尼亚' => '坦尚尼亞',
-'坦桑尼亞' => '坦尚尼亞',
-'端口' => '埠',
-'首席执行官' => '執行長',
-'报道' => '報導',
-'塑料袋' => '塑膠袋',
-'塞舌尔' => '塞席爾',
-'塞舌爾' => '塞席爾',
-'萨拉热窝' => '塞拉耶佛',
-'薩拉熱窩' => '塞拉耶佛',
-'塞尔维亚和黑山' => '塞爾維亞與蒙特內哥羅',
-'塞爾維亞和黑山' => '塞爾維亞與蒙特內哥羅',
-'塞爾維亞與蒙特內哥羅' => '塞爾維亞與蒙特內哥羅',
-'塞维利亚' => '塞維亞',
-'西維爾' => '塞維亞',
-'塞黑' => '塞蒙',
-'共和联邦' => '大英國協',
-'英联邦' => '大英國協',
-'英聯邦' => '大英國協',
-'太空飛行員' => '太空人',
-'宇航员' => '太空人',
-'穿梭機' => '太空梭',
-'航天飞机' => '太空梭',
-'宇航服' => '太空衣',
-'航天器' => '太空飛行器',
-'尼日利亚' => '奈及利亞',
-'尼日利亞' => '奈及利亞',
-'忌廉' => '奶油',
-'荷里活' => '好萊塢',
-'威廉姆斯' => '威廉士',
-'威斯特法伦' => '威斯伐倫',
-'威斯特法倫' => '威斯伐倫',
-'威士顿康星' => '威斯康辛',
-'威尔士' => '威爾斯',
-'威爾士' => '威爾斯',
-'字库' => '字型檔',
-'存盘' => '存檔',
-'孟德爾遜' => '孟德爾頌',
-'门德尔松' => '孟德爾頌',
-'安哈尔特' => '安哈特',
-'安哈爾特' => '安哈特',
-'安提瓜和巴布达' => '安地卡及巴布達',
-'安提瓜和巴布達' => '安地卡及巴布達',
-'洪都拉斯' => '宏都拉斯',
-'密歇根' => '密西根',
-'宽带' => '寬頻',
-'老挝人民民主共和国' => '寮人民民主共和國',
-'老撾人民民主共和國' => '寮人民民主共和國',
-'老挝' => '寮國',
-'老撾' => '寮國',
-'老挝语' => '寮語',
-'老撾語' => '寮語',
-'波里活' => '寶萊塢',
-'对着干' => '對著幹',
-'高峰时段' => '尖峰時段',
-'高峰时间' => '尖峰時間',
-'贊比亞' => '尚比亞',
-'赞比亚' => '尚比亞',
-'尼克松' => '尼克森',
-'尼日尔' => '尼日',
-'尼日爾' => '尼日',
-'雅马哈' => '山葉',
-'机床' => '工具機',
-'機床' => '工具機',
-'珍寶客機' => '巨無霸客機',
-'发达国家' => '已開發國家',
-'巴塞罗那' => '巴塞隆納',
-'巴塞隆拿' => '巴塞隆納',
-'巴布亚新几内亚' => '巴布亞紐幾內亞',
-'巴布亞新畿內亞' => '巴布亞紐幾內亞',
-'巴士拉' => '巴斯拉',
-'巴巴多斯' => '巴貝多',
-'佈' => '布',
-'布基納法索' => '布吉納法索',
-'布基纳法索' => '布吉納法索',
-'布什' => '布希',
-'布殊' => '布希',
-'勃兰登堡' => '布蘭登堡',
-'勃蘭登堡' => '布蘭登堡',
-'布里斯托尔' => '布里斯托',
-'布隆方丹' => '布隆泉',
-'希拉莉' => '希拉蕊',
-'希拉里' => '希拉蕊',
-'希特拉' => '希特勒',
-'巴尔米拉环礁' => '帕邁拉環礁',
-'帕劳' => '帛琉',
-'希拉克' => '席哈克',
-'账' => '帳',
-'干着急' => '干著急',
-'干着' => '幹著',
-'畿內亞' => '幾內亞',
-'几内亚比绍' => '幾內亞比索',
-'幾內亞比紹' => '幾內亞比索',
-'比利牛斯' => '庇里牛斯',
-'库尔德人' => '庫德人',
-'库尔德族' => '庫德族',
-'康涅狄格' => '康乃狄克',
-'约翰斯顿岛' => '強斯頓環礁',
-'汇编' => '彙編',
-'形而上学' => '形上學',
-'形而上學' => '形上學',
-'得克萨斯' => '德克薩斯',
-'得克薩斯' => '德克薩斯',
-'德累斯頓' => '德勒斯登',
-'德累斯顿' => '德勒斯登',
-'德里达' => '德希達',
-'特拉华' => '德拉瓦',
-'特拉華' => '德拉瓦',
-'快闪存储器' => '快閃記憶體',
-'闪存' => '快閃記憶體',
-'想象' => '想像',
-'愛德文' => '愛德溫',
-'艾滋' => '愛滋',
-'艾奧瓦' => '愛荷華',
-'爱德华州' => '愛達荷州',
-'应用程序' => '應用程式',
-'戈尔巴乔夫' => '戈巴契夫',
-'戈爾巴喬夫' => '戈巴契夫',
-'戒烟' => '戒菸',
-'戒煙' => '戒菸',
-'戴克里先' => '戴克里先',
-'打印度' => '打印度',
-'抽烟' => '抽菸',
-'抽煙' => '抽菸',
-'拉普兰' => '拉布蘭',
-'拒烟' => '拒菸',
-'拒煙' => '拒菸',
-'卷烟' => '捲菸',
-'捲煙' => '捲菸',
-'積架' => '捷豹',
-'控件' => '控制項',
-'推杆' => '推桿',
-'第比利斯' => '提比里西',
-'挥杆' => '揮桿',
-'揮杆' => '揮桿',
-'搜索引擎' => '搜尋引擎',
-'摩根士丹利' => '摩根史坦利',
-'台球' => '撞球',
-'攻打' => '攻打',
-'数字化' => '數位化',
-'數碼化' => '數位化',
-'数字技术' => '數位技術',
-'數碼技術' => '數位技術',
-'数字照相机' => '數位照相機',
-'数码照相机' => '數位照相機',
-'數碼照相機' => '數位照相機',
-'数码相机' => '數位相機',
-'數碼相機' => '數位相機',
-'数字信号' => '數位訊號',
-'數碼訊號' => '數位訊號',
-'数字电视' => '數位電視',
-'數碼電視' => '數位電視',
-'調制解調器' => '數據機',
-'调制解调器' => '數據機',
-'斯洛文尼亚' => '斯洛維尼亞',
-'斯洛文尼亞' => '斯洛維尼亞',
-'新罕布什尔' => '新罕布夏',
-'施罗德' => '施洛德',
-'旱烟' => '旱菸',
-'旱煙' => '旱菸',
-'普利策' => '普利茲',
-'芯片' => '晶片',
-'智能卡' => '智慧卡',
-'智能手机' => '智慧型手機',
-'智能手機' => '智慧型手機',
-'智能电话' => '智慧型電話',
-'智能電話' => '智慧型電話',
-'知識產權' => '智慧財產權',
-'知识产权' => '智慧財產權',
-'萌島' => '曼島',
-'马恩岛' => '曼島',
-'木杆' => '木桿',
-'列奥纳多' => '李奧納多',
-'杜塞尔多夫' => '杜塞道夫',
-'杜塞爾多夫' => '杜塞道夫',
-'迪拜' => '杜拜',
-'东盟' => '東協',
-'亚细安' => '東協',
-'東盟' => '東協',
-'东南亚国家联盟' => '東南亞國家協會',
-'東南亞國家聯盟' => '東南亞國家協會',
-'柏林墙' => '柏林圍牆',
-'柏林牆' => '柏林圍牆',
-'乍得' => '查德',
-'查韦斯' => '查維茲',
-'克林頓' => '柯林頓',
-'克林顿' => '柯林頓',
-'戴卓爾' => '柴契爾',
-'撒切尔' => '柴契爾',
-'格林納達' => '格瑞那達',
-'格林纳达' => '格瑞那達',
-'桃金娘' => '桃金孃',
-'台式电脑' => '桌上型電腦',
-'乒乓' => '桌球',
-'乒乓球' => '桌球',
-'杆弟' => '桿弟',
-'杆身' => '桿身',
-'杆头' => '桿頭',
-'杆頭' => '桿頭',
-'梅尔·吉布森' => '梅爾·吉勃遜',
-'梵高' => '梵谷',
-'桑巴舞' => '森巴舞',
-'榴莲' => '榴槤',
-'榴蓮' => '榴槤',
-'枪支' => '槍枝',
-'标准杆' => '標準桿',
-'標準杆' => '標準桿',
-'毛里求斯' => '模里西斯',
-'毛里裘斯' => '模里西斯',
-'机器人' => '機器人',
-'機械人' => '機器人',
-'概率' => '機率',
-'電單車' => '機車',
-'枱' => '檯',
-'字段' => '欄位',
-'奥巴马' => '歐巴馬',
-'奧巴馬' => '歐巴馬',
-'正在叱咤' => '正在叱咤',
-'文莱' => '汶萊',
-'沙律' => '沙拉',
-'沙地阿拉伯' => '沙烏地阿拉伯',
-'沙特阿拉伯' => '沙烏地阿拉伯',
-'法属圭亚那' => '法屬蓋亞那',
-'波斯尼亚' => '波士尼亞',
-'波斯尼亞' => '波士尼亞',
-'波斯尼亚和黑塞哥维那' => '波士尼亞赫塞哥維納',
-'波斯尼亞黑塞哥維那' => '波士尼亞赫塞哥維納',
-'博茨瓦納' => '波札那',
-'博茨瓦纳' => '波札那',
-'波黑' => '波赫',
-'洋烟' => '洋菸',
-'洋煙' => '洋菸',
-'帕特里克' => '派屈克',
-'海洛英' => '海洛因',
-'侯賽因' => '海珊',
-'侯赛因' => '海珊',
-'鼠标' => '滑鼠',
-'汉诺威' => '漢諾瓦',
-'漢诺威' => '漢諾瓦',
-'烤烟' => '烤菸',
-'烤煙' => '烤菸',
-'无烟日' => '無菸日',
-'無煙日' => '無菸日',
-'无烟环境' => '無菸環境',
-'無煙環境' => '無菸環境',
-'烟熏' => '煙燻',
-'首席运营官' => '營運長',
-'熏烤' => '燻烤',
-'熏肉' => '燻肉',
-'熏黑' => '燻黑',
-'版权信息' => '版權資訊',
-'疯牛症' => '狂牛症',
-'鐵托' => '狄托',
-'铁托' => '狄托',
-'塞拉利昂' => '獅子山',
-'独联体' => '獨立國協',
-'獨聯體' => '獨立國協',
-'独立国家联合体' => '獨立國家國協',
-'獨立國家聯合體' => '獨立國家國協',
-'波利尼西亚' => '玻里尼西亞',
-'波利尼西亞' => '玻里尼西亞',
-'本傑明' => '班傑明',
-'本杰明' => '班傑明',
-'球杆' => '球桿',
-'理查德' => '理察',
-'卢塞恩' => '琉森',
-'危地馬拉' => '瓜地馬拉',
-'危地马拉' => '瓜地馬拉',
-'巴伦西亚' => '瓦倫西亞',
-'華倫西亞' => '瓦倫西亞',
-'冈比亚' => '甘比亞',
-'岡比亞' => '甘比亞',
-'肯尼迪' => '甘迺迪',
-'留尼汪' => '留尼旺',
-'毕加索' => '畢卡索',
-'迭代' => '疊代',
-'徵狀' => '症狀',
-'勃朗宁' => '白朗寧',
-'百慕大' => '百慕達',
-'卢旺达' => '盧安達',
-'盧旺達' => '盧安達',
-'睾' => '睪',
-'知识产权局' => '知識產權局',
-'知識產權局' => '知識產權署',
-'知識產權署' => '知識產權署',
-'知识产权署' => '知識產權署',
-'硅' => '矽',
-'硅藻' => '硅藻',
-'硬盘' => '硬碟',
-'硬件' => '硬體',
-'盘片' => '碟片',
-'磁盘' => '磁碟',
-'磁道' => '磁軌',
-'禁烟' => '禁菸',
-'禁煙' => '禁菸',
-'福尔马林' => '福馬林',
-'福爾馬林' => '福馬林',
-'私烟' => '私菸',
-'私煙' => '私菸',
-'程序员' => '程式設計師',
-'编程语言' => '程式語言',
-'空气质量' => '空氣品質',
-'空氣質素' => '空氣品質',
-'突尼斯' => '突尼西亞',
-'绑紧跳' => '笨豬跳',
-'蹦极跳' => '笨豬跳',
-'短信' => '簡訊',
-'纽黑文' => '紐哈芬',
-'新奥尔良' => '紐奧良',
-'新奧爾良' => '紐奧良',
-'新几内亚' => '紐幾內亞',
-'新西兰' => '紐西蘭',
-'新西蘭' => '紐西蘭',
-'紙煙' => '紙菸',
-'纸烟' => '紙菸',
-'索尔仁尼琴' => '索忍尼辛',
-'索贊尼辛' => '索忍尼辛',
-'所罗门群岛' => '索羅門群島',
-'所羅門群島' => '索羅門群島',
-'索馬里' => '索馬利亞',
-'索马里' => '索馬利亞',
-'索馬里蘭' => '索馬利蘭',
-'索马里兰' => '索馬利蘭',
-'維爾京群島' => '維京群島',
-'维尔京群岛' => '維京群島',
-'弗吉尼亚' => '維吉尼亞',
-'佛得角' => '維德角',
-'维特根斯坦' => '維根斯坦',
-'網絡遊戲' => '網路遊戲',
-'网络游戏' => '網路遊戲',
-'互联网' => '網際網路',
-'互联网络' => '網際網路',
-'互聯網' => '網際網路',
-'互聯網絡' => '網際網路',
-'因特网' => '網際網路',
-'系着' => '繫著',
-'卢瓦尔' => '羅亞爾',
-'盧瓦爾' => '羅亞爾',
-'卢浮宫' => '羅浮宮',
-'樂行童軍' => '羅浮童軍',
-'意大利' => '義大利',
-'昂山素姬' => '翁山蘇姬',
-'昂山素季' => '翁山蘇姬',
-'圣基茨和尼维斯' => '聖克里斯多福及尼維斯',
-'聖吉斯納域斯' => '聖克里斯多福及尼維斯',
-'圣文森特和格林纳丁斯' => '聖文森及格瑞那丁',
-'聖文森特和格林納丁斯' => '聖文森及格瑞那丁',
-'圣赫勒拿' => '聖赫倫那',
-'圣卢西亚' => '聖露西亞',
-'聖盧西亞' => '聖露西亞',
-'圣马力诺' => '聖馬利諾',
-'聖馬力諾' => '聖馬利諾',
-'肯尼亚' => '肯亞',
-'氨基酸' => '胺基酸',
-'自由泳' => '自由式',
-'三藩市' => '舊金山',
-'艾森豪威尔' => '艾森豪',
-'埃菲尔' => '艾菲爾',
-'阿里埃勒·沙龍' => '艾里爾·夏隆',
-'阿里埃勒·沙龙' => '艾里爾·夏隆',
-'帕塔亚' => '芭達亞',
-'黎克特制' => '芮氏',
-'里氏0' => '芮氏0',
-'里氏1' => '芮氏1',
-'里氏2' => '芮氏2',
-'里氏3' => '芮氏3',
-'里氏4' => '芮氏4',
-'里氏5' => '芮氏5',
-'里氏6' => '芮氏6',
-'里氏7' => '芮氏7',
-'里氏8' => '芮氏8',
-'里氏9' => '芮氏9',
-'里氏地震规模' => '芮氏地震規模',
-'里氏规模' => '芮氏規模',
-'里氏震级' => '芮氏規模',
-'当且仅当' => '若且唯若',
-'味美思' => '苦艾酒',
-'毛里塔尼亚' => '茅利塔尼亞',
-'毛里塔尼亞' => '茅利塔尼亞',
-'霍尔木兹' => '荷姆茲',
-'霍爾木茲' => '荷姆茲',
-'荷李活道' => '荷李活道',
-'莫桑比克' => '莫三比克',
-'瓦文萨' => '華勒沙',
-'華里沙' => '華勒沙',
-'瓦格纳' => '華格納',
-'烟具' => '菸具',
-'煙具' => '菸具',
-'烟品' => '菸品',
-'煙品' => '菸品',
-'烟嘴' => '菸嘴',
-'煙嘴' => '菸嘴',
-'烟卷' => '菸捲',
-'煙捲' => '菸捲',
-'烟斗' => '菸斗',
-'煙斗' => '菸斗',
-'烟民' => '菸民',
-'煙民' => '菸民',
-'烟灰' => '菸灰',
-'煙灰' => '菸灰',
-'烟瘾' => '菸癮',
-'煙癮' => '菸癮',
-'烟丝' => '菸絲',
-'煙絲' => '菸絲',
-'烟草' => '菸草',
-'煙草' => '菸草',
-'烟叶' => '菸葉',
-'煙葉' => '菸葉',
-'烟蒂' => '菸蒂',
-'煙蒂' => '菸蒂',
-'烟袋' => '菸袋',
-'煙袋' => '菸袋',
-'烟农' => '菸農',
-'煙農' => '菸農',
-'烟酒' => '菸酒',
-'煙酒' => '菸酒',
-'烟头' => '菸頭',
-'煙頭' => '菸頭',
-'烟鬼' => '菸鬼',
-'煙鬼' => '菸鬼',
-'烟碱' => '菸鹼',
-'煙鹼' => '菸鹼',
-'万历朝鲜战争' => '萬曆朝鮮戰爭',
-'瓦努阿图' => '萬那杜',
-'瓦努阿圖' => '萬那杜',
-'叶利钦' => '葉爾欽',
-'葉利欽' => '葉爾欽',
-'埃里温' => '葉里溫',
-'埃里溫' => '葉里溫',
-'也門' => '葉門',
-'也门' => '葉門',
-'着' => '著',
-'着眼于' => '著眼於',
-'科摩罗' => '葛摩',
-'科摩羅' => '葛摩',
-'格林美獎' => '葛萊美獎',
-'格莱美奖' => '葛萊美獎',
-'黑山共和国' => '蒙特內哥羅共和國',
-'黑山共和國' => '蒙特內哥羅共和國',
-'滿地可' => '蒙特婁',
-'蒙特利尔' => '蒙特婁',
-'蒙特利爾' => '蒙特婁',
-'普密蓬' => '蒲美蓬',
-'布隆迪' => '蒲隆地',
-'圭亚那' => '蓋亞那',
-'肖斯塔科维奇' => '蕭士塔高維奇',
-'蕭士達高維契' => '蕭士塔高維奇',
-'肖邦' => '蕭邦',
-'薛定谔' => '薛丁格',
-'扎伊尔' => '薩伊',
-'扎伊爾' => '薩伊',
-'素檀' => '蘇丹',
-'苏里南' => '蘇利南',
-'浮罗交怡' => '蘭卡威',
-'浮羅交怡' => '蘭卡威',
-'劳拉' => '蘿拉',
-'荧光' => '螢光',
-'荧屏' => '螢屏',
-'屏幕' => '螢幕',
-'行人路权' => '行人路權',
-'行人路權' => '行人路權',
-'流動網絡' => '行動網路',
-'移动网络' => '行動網路',
-'流動電話' => '行動電話',
-'移动电话' => '行動電話',
-'冲着' => '衝著',
-'埃塞俄比亚' => '衣索比亞',
-'埃塞俄比亞' => '衣索比亞',
-'克隆人' => '複製人',
-'国际象棋' => '西洋棋',
-'國際象棋' => '西洋棋',
-'赫梯' => '西臺',
-'分辨率' => '解析度',
-'解像度' => '解析度',
-'译码' => '解碼',
-'出租车' => '計程車',
-'约翰逊' => '詹森',
-'诺曼底' => '諾曼第',
-'瑙魯' => '諾魯',
-'瑙鲁' => '諾魯',
-'科特迪瓦' => '象牙海岸',
-'碧咸' => '貝克漢',
-'貝爾格萊德' => '貝爾格勒',
-'贝尔格莱德' => '貝爾格勒',
-'伯利兹' => '貝里斯',
-'伯利茲' => '貝里斯',
-'首席财务官' => '財務長',
-'集装箱' => '貨櫃',
-'数据库' => '資料庫',
-'數據庫' => '資料庫',
-'信息时代' => '資訊時代',
-'信息论' => '資訊理論',
-'乔布斯' => '賈伯斯',
-'本·拉登' => '賓·拉登',
-'宾西法尼亚' => '賓夕法尼亞',
-'本拉登' => '賓拉登',
-'利比里亚' => '賴比瑞亞',
-'利比里亞' => '賴比瑞亞',
-'莱索托' => '賴索托',
-'萊索托' => '賴索托',
-'塞浦路斯' => '賽普勒斯',
-'赫丘勒·波洛' => '赫丘勒·白羅',
-'赫鲁晓夫' => '赫魯雪夫',
-'切尔诺贝利' => '車諾比',
-'软驱' => '軟碟機',
-'軟件' => '軟體',
-'软件' => '軟體',
-'津巴布韋' => '辛巴威',
-'津巴布韦' => '辛巴威',
-'径入' => '逕入',
-'径到' => '逕到',
-'径取' => '逕取',
-'径启' => '逕啟',
-'径寄' => '逕寄',
-'径庭' => '逕庭',
-'径往' => '逕往',
-'径自' => '逕自',
-'径行' => '逕行',
-'径迎' => '逕迎',
-'链接' => '連結',
-'連結他' => '連結他',
-'进制' => '進位',
-'达·芬奇' => '達·文西',
-'达芬奇' => '達文西',
-'溫納圖萬' => '那杜',
-'丘吉尔' => '邱吉爾',
-'多普勒' => '都卜勒',
-'酰' => '醯',
-'里士满' => '里奇蒙',
-'金沙萨' => '金夏沙',
-'金沙薩' => '金夏沙',
-'健力士世界紀錄' => '金氏世界紀錄',
-'健力士世界纪录' => '金氏世界紀錄',
-'吉尼斯世界纪录' => '金氏世界紀錄',
-'钚' => '鈽',
-'鈎' => '鉤',
-'钩' => '鉤',
-'锎' => '鉲',
-'锫' => '鉳',
-'镅' => '鋂',
-'镎' => '錼',
-'钫' => '鍅',
-'炼金' => '鍊金',
-'锻炼' => '鍛鍊',
-'锝' => '鎝',
-'鐵杆' => '鐵桿',
-'铁杆' => '鐵桿',
-'泰坦尼克号' => '鐵達尼號',
-'锿' => '鑀',
-'关系着' => '關係著',
-'写保护' => '防寫',
-'阿布扎比' => '阿布達比',
-'阿拉伯联合酋长国' => '阿拉伯聯合大公國',
-'阿拉伯聯合酋長國' => '阿拉伯聯合大公國',
-'亚拉巴马' => '阿拉巴馬',
-'阿联酋' => '阿聯',
-'阿聯酋' => '阿聯',
-'罗纳德·里根' => '隆納·雷根',
-'私隱' => '隱私',
-'耶加達' => '雅加達',
-'雅尔塔' => '雅爾達',
-'雅爾塔' => '雅爾達',
-'雅穆苏克雷' => '雅穆索戈',
-'雅穆蘇克雷' => '雅穆索戈',
-'悉尼' => '雪梨',
-'雪茄烟' => '雪茄菸',
-'雪茄煙' => '雪茄菸',
-'莱特湾' => '雷伊泰灣',
-'萊特灣' => '雷伊泰灣',
-'激光' => '雷射',
-'雷诺阿' => '雷諾瓦',
-'电子烟' => '電子菸',
-'電子煙' => '電子菸',
-'晶体管' => '電晶體',
-'晶體管' => '電晶體',
-'电杆' => '電桿',
-'电线杆' => '電線桿',
-'电脑程序' => '電腦程式',
-'计算机程序' => '電腦程式',
-'荷尔斯泰因' => '霍爾斯坦',
-'荷爾斯泰因' => '霍爾斯坦',
-'面包着' => '面包著',
-'朝鲜战争' => '韓戰',
-'声卡' => '音效卡',
-'缺省' => '預設',
-'导弹' => '飛彈',
-'糊口' => '餬口',
-'香烟' => '香菸',
-'香煙' => '香菸',
-'馬里共和國' => '馬利共和國',
-'马里共和国' => '馬利共和國',
-'马拉维' => '馬拉威',
-'馬斯特里赫特' => '馬斯垂克',
-'马斯特里赫特' => '馬斯垂克',
-'马耳他' => '馬爾他',
-'馬爾代夫' => '馬爾地夫',
-'马尔代夫' => '馬爾地夫',
-'馬利蘭' => '馬里蘭',
-'高清电视' => '高畫質電視',
-'斗着' => '鬥著',
-'魯賓斯·巴里切羅' => '魯本·巴瑞切羅',
-'咪高峰' => '麥克風',
-'迈克尔' => '麥可',
-'麦克尔' => '麥可',
-'迈凯轮' => '麥拿輪',
-'邁凱輪' => '麥拿輪',
-'马萨诸塞' => '麻薩諸塞',
-'戴安娜' => '黛安娜',
-'狄安娜' => '黛安娜',
-'点烟' => '點菸',
-'點煙' => '點菸',
-'霉素' => '黴素',
-);
-
-$zh2HK = array(
-'0字节' => '0位元組',
-'1字节' => '1位元組',
-'2字节' => '2位元組',
-'3字节' => '3位元組',
-'4字节' => '4位元組',
-'5字节' => '5位元組',
-'6字节' => '6位元組',
-'7字节' => '7位元組',
-'8字节' => '8位元組',
-'9字节' => '9位元組',
-'IP地址' => 'IP位址',
-'·威尔士' => '·威爾士',
-'·威爾士' => '·威爾士',
-'一地里' => '一地裏',
-'一年里' => '一年裏',
-'三十六著' => '三十六着',
-'三極體' => '三極管',
-'旧金山' => '三藩市',
-'舊金山' => '三藩市',
-'上台面' => '上枱面',
-'下著' => '下着',
-'下著作' => '下著作',
-'下著名' => '下著名',
-'下著有' => '下著有',
-'下著称' => '下著稱',
-'下著稱' => '下著稱',
-'下著者' => '下著者',
-'下著述' => '下著述',
-'下著录' => '下著錄',
-'下著錄' => '下著錄',
-'不占' => '不佔',
-'不萊梅' => '不來梅',
-'不著痕跡' => '不着痕跡',
-'不著邊際' => '不着邊際',
-'世纪里' => '世紀裏',
-'C型肝炎' => '丙型肝炎',
-'C肝' => '丙肝',
-'并发布' => '並發佈',
-'中文里' => '中文裏',
-'乘著' => '乘着',
-'乘著作' => '乘著作',
-'乘著名' => '乘著名',
-'乘著書' => '乘著書',
-'乘著称' => '乘著稱',
-'乘著稱' => '乘著稱',
-'乘著者' => '乘著者',
-'乘著述' => '乘著述',
-'乘著錄' => '乘著錄',
-'B型肝炎' => '乙型肝炎',
-'B肝' => '乙肝',
-'吉力馬札羅' => '乞力馬札羅',
-'葉門' => '也門',
-'事里' => '事裏',
-'二極體' => '二極管',
-'因特网' => '互聯網',
-'網際網路' => '互聯網',
-'井里' => '井裏',
-'亮著' => '亮着',
-'亮著作' => '亮著作',
-'亮著名' => '亮著名',
-'亮著書' => '亮著書',
-'亮著称' => '亮著稱',
-'亮著稱' => '亮著稱',
-'亮著者' => '亮著者',
-'亮著述' => '亮著述',
-'亮著錄' => '亮著錄',
-'人工智慧' => '人工智能',
-'人数里' => '人數裏',
-'仗著' => '仗着',
-'仗著作' => '仗著作',
-'仗著名' => '仗著名',
-'仗著書' => '仗著書',
-'仗著稱' => '仗著稱',
-'仗著者' => '仗著者',
-'仗著述' => '仗著述',
-'仗著錄' => '仗著錄',
-'代表著' => '代表着',
-'代表著作' => '代表著作',
-'代表著名' => '代表著名',
-'代表著書' => '代表著書',
-'代表著稱' => '代表著稱',
-'代表著者' => '代表著者',
-'代表著述' => '代表著述',
-'代表著錄' => '代表著錄',
-'伊斯蘭瑪巴德' => '伊斯蘭堡',
-'埃博拉' => '伊波拉',
-'伏著' => '伏着',
-'貝里斯' => '伯利茲',
-'伯明罕' => '伯明翰',
-'伴著' => '伴着',
-'伴著作' => '伴著作',
-'伴著名' => '伴著名',
-'伴著書' => '伴著書',
-'伴著稱' => '伴著稱',
-'伴著者' => '伴著者',
-'伴著述' => '伴著述',
-'伴著錄' => '伴著錄',
-'布下了' => '佈下了',
-'布下的' => '佈下的',
-'布光' => '佈光',
-'布告' => '佈告',
-'布局' => '佈局',
-'布展' => '佈展',
-'布控' => '佈控',
-'布于' => '佈於',
-'布於' => '佈於',
-'布施' => '佈施',
-'布景' => '佈景',
-'布满' => '佈滿',
-'布滿' => '佈滿',
-'布置' => '佈置',
-'布設' => '佈設',
-'布设' => '佈設',
-'布警' => '佈警',
-'布道' => '佈道',
-'布防' => '佈防',
-'布阵' => '佈陣',
-'布陣' => '佈陣',
-'布雷、' => '佈雷、',
-'布雷。' => '佈雷。',
-'布雷封鎖' => '佈雷封鎖',
-'布雷封锁' => '佈雷封鎖',
-'布雷的' => '佈雷的',
-'布雷艇' => '佈雷艇',
-'布雷舰' => '佈雷艦',
-'布雷艦' => '佈雷艦',
-'布雷速度' => '佈雷速度',
-'布雷,' => '佈雷,',
-'布雷;' => '佈雷;',
-'布点' => '佈點',
-'布點' => '佈點',
-'低著' => '低着',
-'低著作' => '低著作',
-'低著名' => '低著名',
-'低著書' => '低著書',
-'低著称' => '低著稱',
-'低著稱' => '低著稱',
-'低著者' => '低著者',
-'低著述' => '低著述',
-'低著錄' => '低著錄',
-'住著' => '住着',
-'住著作' => '住著作',
-'住著名' => '住著名',
-'住著書' => '住著書',
-'住著稱' => '住著稱',
-'住著者' => '住著者',
-'住著述' => '住著述',
-'住著錄' => '住著錄',
-'占0' => '佔0',
-'占1' => '佔1',
-'占2' => '佔2',
-'占3' => '佔3',
-'占4' => '佔4',
-'占5' => '佔5',
-'占6' => '佔6',
-'占7' => '佔7',
-'占8' => '佔8',
-'占9' => '佔9',
-'占A' => '佔A',
-'占B' => '佔B',
-'占C' => '佔C',
-'占D' => '佔D',
-'占E' => '佔E',
-'占F' => '佔F',
-'占G' => '佔G',
-'占H' => '佔H',
-'占I' => '佔I',
-'占J' => '佔J',
-'占K' => '佔K',
-'占L' => '佔L',
-'占M' => '佔M',
-'占N' => '佔N',
-'占O' => '佔O',
-'占P' => '佔P',
-'占Q' => '佔Q',
-'占R' => '佔R',
-'占S' => '佔S',
-'占T' => '佔T',
-'占U' => '佔U',
-'占V' => '佔V',
-'占W' => '佔W',
-'占X' => '佔X',
-'占Y' => '佔Y',
-'占Z' => '佔Z',
-'占〇' => '佔〇',
-'占一' => '佔一',
-'占七' => '佔七',
-'占三' => '佔三',
-'占上風' => '佔上風',
-'占上风' => '佔上風',
-'占下' => '佔下',
-'占下風' => '佔下風',
-'占下风' => '佔下風',
-'占不占' => '佔不佔',
-'占不足' => '佔不足',
-'占世界' => '佔世界',
-'占中' => '佔中',
-'占主' => '佔主',
-'占主要' => '佔主要',
-'占九' => '佔九',
-'占了' => '佔了',
-'占二' => '佔二',
-'占五' => '佔五',
-'占人便宜' => '佔人便宜',
-'占位' => '佔位',
-'占住' => '佔住',
-'占占' => '佔佔',
-'占便宜' => '佔便宜',
-'占俄' => '佔俄',
-'占个' => '佔個',
-'占個' => '佔個',
-'占个位' => '佔個位',
-'占個位' => '佔個位',
-'占亿' => '佔億',
-'占億' => '佔億',
-'占优' => '佔優',
-'占優' => '佔優',
-'占先' => '佔先',
-'占光' => '佔光',
-'占全' => '佔全',
-'占两' => '佔兩',
-'占兩' => '佔兩',
-'占八' => '佔八',
-'占六' => '佔六',
-'占分' => '佔分',
-'占到' => '佔到',
-'占加' => '佔加',
-'占劣' => '佔劣',
-'占北' => '佔北',
-'占十' => '佔十',
-'占千' => '佔千',
-'占半' => '佔半',
-'占南' => '佔南',
-'占印' => '佔印',
-'占去' => '佔去',
-'占取' => '佔取',
-'占台' => '佔台',
-'占囁' => '佔囁',
-'占四' => '佔四',
-'占国' => '佔國',
-'占國' => '佔國',
-'占在' => '佔在',
-'占地' => '佔地',
-'占场' => '佔場',
-'占場' => '佔場',
-'占压' => '佔壓',
-'占壓' => '佔壓',
-'占多' => '佔多',
-'占大' => '佔大',
-'占好' => '佔好',
-'占小' => '佔小',
-'占少' => '佔少',
-'占局部' => '佔局部',
-'占屋' => '佔屋',
-'占山为' => '佔山為',
-'占山為' => '佔山為',
-'占市' => '佔市',
-'占平均' => '佔平均',
-'占床' => '佔床',
-'占座' => '佔座',
-'占後' => '佔後',
-'占得' => '佔得',
-'占德' => '佔德',
-'占所有' => '佔所有',
-'占掉' => '佔掉',
-'占据' => '佔據',
-'占據' => '佔據',
-'占整' => '佔整',
-'占新' => '佔新',
-'占有' => '佔有',
-'占东' => '佔東',
-'占東' => '佔東',
-'占查' => '佔查',
-'占次' => '佔次',
-'占比' => '佔比',
-'占法' => '佔法',
-'占满' => '佔滿',
-'占滿' => '佔滿',
-'占澳' => '佔澳',
-'占为' => '佔為',
-'占為' => '佔為',
-'占率' => '佔率',
-'占用' => '佔用',
-'占毕' => '佔畢',
-'占畢' => '佔畢',
-'占百' => '佔百',
-'占尽' => '佔盡',
-'占盡' => '佔盡',
-'占着' => '佔着',
-'占著' => '佔着',
-'占網' => '佔網',
-'占网' => '佔網',
-'占線' => '佔線',
-'占线' => '佔線',
-'占总' => '佔總',
-'占總' => '佔總',
-'占缺' => '佔缺',
-'占美国' => '佔美國',
-'占美國' => '佔美國',
-'占耕' => '佔耕',
-'占至多' => '佔至多',
-'占至少' => '佔至少',
-'占臺' => '佔臺',
-'占英' => '佔英',
-'占万' => '佔萬',
-'占萬' => '佔萬',
-'占著名' => '佔著名',
-'占著者' => '佔著者',
-'占葡' => '佔葡',
-'占苏' => '佔蘇',
-'占蘇' => '佔蘇',
-'占西' => '佔西',
-'占資' => '佔資',
-'占资' => '佔資',
-'占起' => '佔起',
-'占超过' => '佔超過',
-'占超過' => '佔超過',
-'占过' => '佔過',
-'占過' => '佔過',
-'占道' => '佔道',
-'占零' => '佔零',
-'占領' => '佔領',
-'占领' => '佔領',
-'占头' => '佔頭',
-'占頭' => '佔頭',
-'占头筹' => '佔頭籌',
-'占頭籌' => '佔頭籌',
-'占香' => '佔香',
-'占馬' => '佔馬',
-'占马' => '佔馬',
-'占高枝' => '佔高枝',
-'維德角' => '佛得角',
-'作品里' => '作品裏',
-'來著' => '來着',
-'來著作' => '來著作',
-'來著名' => '來著名',
-'來著書' => '來著書',
-'來著稱' => '來著稱',
-'來著者' => '來著者',
-'來著述' => '來著述',
-'來著錄' => '來著錄',
-'侵占' => '侵佔',
-'俄占' => '俄佔',
-'保障著' => '保障着',
-'保障著作' => '保障著作',
-'保障著名' => '保障著名',
-'保障著書' => '保障著書',
-'保障著稱' => '保障著稱',
-'保障著者' => '保障著者',
-'保障著述' => '保障著述',
-'保障著錄' => '保障著錄',
-'信著' => '信着',
-'信著作' => '信著作',
-'信著名' => '信著名',
-'信著書' => '信著書',
-'信著称' => '信著稱',
-'信著稱' => '信著稱',
-'信著者' => '信著者',
-'信著述' => '信著述',
-'信著錄' => '信著錄',
-'个月里' => '個月裏',
-'个里' => '個裏',
-'倒楣' => '倒霉',
-'候著' => '候着',
-'候著作' => '候著作',
-'候著名' => '候著名',
-'候著書' => '候著書',
-'候著稱' => '候著稱',
-'候著者' => '候著者',
-'候著述' => '候著述',
-'候著錄' => '候著錄',
-'借著' => '借着',
-'借著作' => '借著作',
-'借著名' => '借著名',
-'借著書' => '借著書',
-'借著稱' => '借著稱',
-'借著者' => '借著者',
-'借著述' => '借著述',
-'借著錄' => '借著錄',
-'假里' => '假裏',
-'做著' => '做着',
-'做著作' => '做著作',
-'做著名' => '做著名',
-'做著書' => '做著書',
-'做著稱' => '做著稱',
-'做著者' => '做著者',
-'做著述' => '做著述',
-'做著錄' => '做著錄',
-'吉尼斯世界纪录' => '健力士世界紀錄',
-'金氏世界紀錄' => '健力士世界紀錄',
-'側著' => '側着',
-'側著作' => '側著作',
-'側著名' => '側著名',
-'側著書' => '側著書',
-'側著稱' => '側著稱',
-'側著者' => '側著者',
-'側著述' => '側著述',
-'側著錄' => '側著錄',
-'偷著' => '偷着',
-'偷著作' => '偷著作',
-'偷著名' => '偷著名',
-'偷著書' => '偷著書',
-'偷著稱' => '偷著稱',
-'偷著者' => '偷著者',
-'偷著述' => '偷著述',
-'偷著錄' => '偷著錄',
-'備著' => '備着',
-'備著作' => '備著作',
-'備著名' => '備著名',
-'備著書' => '備著書',
-'備著稱' => '備著稱',
-'備著者' => '備著者',
-'備著述' => '備著述',
-'備著錄' => '備著錄',
-'傻里傻气' => '傻裏傻氣',
-'雇员' => '僱員',
-'雇用' => '僱用',
-'凶惡' => '兇惡',
-'凶殘' => '兇殘',
-'凶殺' => '兇殺',
-'先占' => '先佔',
-'雪鐵龍' => '先進',
-'雪铁龙' => '先進',
-'光著' => '光着',
-'光著作' => '光著作',
-'光著名' => '光著名',
-'光著書' => '光著書',
-'光著称' => '光著稱',
-'光著稱' => '光著稱',
-'光著者' => '光著者',
-'光著述' => '光著述',
-'光著錄' => '光著錄',
-'柯林頓' => '克林頓',
-'克羅埃西亞' => '克羅地亞',
-'公布' => '公佈',
-'冒著' => '冒着',
-'冒著作' => '冒著作',
-'冒著名' => '冒著名',
-'冒著書' => '冒著書',
-'冒著稱' => '冒著稱',
-'冒著者' => '冒著者',
-'冒著述' => '冒著述',
-'冒著錄' => '冒著錄',
-'冰山里' => '冰山裏',
-'恺撒' => '凱撒',
-'函数里' => '函數裏',
-'分布' => '分佈',
-'分布于' => '分佈於',
-'分佈著' => '分佈着',
-'分布著' => '分佈着',
-'分占' => '分佔',
-'分钟里' => '分鐘裏',
-'錢尼' => '切尼',
-'切尔诺贝利' => '切爾諾貝爾',
-'列支敦斯登' => '列支敦士登',
-'別著' => '別着',
-'賴比瑞亞' => '利比里亞',
-'刮著' => '刮着',
-'到山里' => '到山裏',
-'制著' => '制着',
-'制著作' => '制著作',
-'制著名' => '制著名',
-'制著書' => '制著書',
-'制著稱' => '制著稱',
-'制著者' => '制著者',
-'制著述' => '制著述',
-'制著錄' => '制著錄',
-'刻著' => '刻着',
-'刻著作' => '刻著作',
-'刻著名' => '刻著名',
-'刻著書' => '刻著書',
-'刻著称' => '刻著稱',
-'刻著稱' => '刻著稱',
-'刻著者' => '刻著者',
-'刻著述' => '刻著述',
-'刻著錄' => '刻著錄',
-'前波莫瑞' => '前波美拉尼亞',
-'剪彩' => '剪綵',
-'割占' => '割佔',
-'劃著' => '劃着',
-'击剑' => '劍擊',
-'擊劍' => '劍擊',
-'加薩走廊' => '加沙地帶',
-'迦納' => '加納',
-'加彭' => '加蓬',
-'努力著' => '努力着',
-'努力著作' => '努力著作',
-'努力著名' => '努力著名',
-'努力著書' => '努力著書',
-'努力著称' => '努力著稱',
-'努力著稱' => '努力著稱',
-'努力著者' => '努力著者',
-'努力著述' => '努力著述',
-'努力著錄' => '努力著錄',
-'布蘭登堡' => '勃蘭登堡',
-'動著' => '動着',
-'動著作' => '動著作',
-'動著名' => '動著名',
-'動著書' => '動著書',
-'動著稱' => '動著稱',
-'動著者' => '動著者',
-'動著述' => '動著述',
-'動著錄' => '動著錄',
-'包著' => '包着',
-'北朝鲜' => '北韓',
-'南朝鲜' => '南韓',
-'波札那' => '博茨瓦納',
-'占卜' => '占卜',
-'占国桥' => '占國橋',
-'占國橋' => '占國橋',
-'占有五不' => '占有五不',
-'占著作' => '占著作',
-'占著稱' => '占著稱',
-'占著述' => '占著述',
-'占著錄' => '占著錄',
-'卡普里亚蒂' => '卡佩雅蒂',
-'喀拉蚩' => '卡拉奇',
-'卡斯楚' => '卡斯特羅',
-'印著' => '印着',
-'印著作' => '印著作',
-'印著名' => '印著名',
-'印著書' => '印著書',
-'印著稱' => '印著稱',
-'印著者' => '印著者',
-'印著述' => '印著述',
-'印著錄' => '印著錄',
-'瓜地馬拉' => '危地馬拉',
-'厄瓜多' => '厄瓜多爾',
-'厄瓜多尔' => '厄瓜多爾',
-'厄瓜多爾' => '厄瓜多爾',
-'厄利垂亚' => '厄立特里亞',
-'厄利垂亞' => '厄立特里亞',
-'源代码' => '原始碼',
-'去山里' => '去山裏',
-'参数里' => '參數裏',
-'受著' => '受着',
-'受著作' => '受著作',
-'受著名' => '受著名',
-'受著書' => '受著書',
-'受著稱' => '受著稱',
-'受著者' => '受著者',
-'受著述' => '受著述',
-'受著錄' => '受著錄',
-'丛林里' => '叢林裏',
-'口里' => '口裏',
-'只占' => '只佔',
-'叫著' => '叫着',
-'叫著作' => '叫著作',
-'叫著名' => '叫著名',
-'叫著書' => '叫著書',
-'叫著稱' => '叫著稱',
-'叫著者' => '叫著者',
-'叫著述' => '叫著述',
-'叫著錄' => '叫著錄',
-'古柯鹼' => '可卡因',
-'叱吒' => '叱咤',
-'斯坦福大学' => '史丹福大學',
-'史匹柏' => '史匹堡',
-'斯皮尔伯格' => '史匹堡',
-'史蒂芬·史匹柏' => '史提芬·史匹堡',
-'斯蒂芬·斯皮尔伯格' => '史提芬·史匹堡',
-'吃不著' => '吃不着',
-'吃得著' => '吃得着',
-'吃著' => '吃着',
-'吃里扒外' => '吃裏扒外',
-'吃里爬外' => '吃裏爬外',
-'吉布地' => '吉布堤',
-'吊著' => '吊着',
-'向著' => '向着',
-'向著作' => '向著作',
-'向著名' => '向著名',
-'向著書' => '向著書',
-'向著稱' => '向著稱',
-'向著者' => '向著者',
-'向著述' => '向著述',
-'向著錄' => '向著錄',
-'吞占' => '吞佔',
-'吧台' => '吧枱',
-'含著' => '含着',
-'含著作' => '含著作',
-'含著名' => '含著名',
-'含著書' => '含著書',
-'含著稱' => '含著稱',
-'含著者' => '含著者',
-'含著述' => '含著述',
-'含著錄' => '含著錄',
-'吹著' => '吹着',
-'吹著作' => '吹著作',
-'吹著名' => '吹著名',
-'吹著書' => '吹著書',
-'吹著稱' => '吹著稱',
-'吹著者' => '吹著者',
-'吹著述' => '吹著述',
-'吹著錄' => '吹著錄',
-'呆著' => '呆着',
-'呆里呆气' => '呆裏呆氣',
-'味著' => '味着',
-'味著作' => '味著作',
-'味著名' => '味著名',
-'味著書' => '味著書',
-'味著称' => '味著稱',
-'味著稱' => '味著稱',
-'味著者' => '味著者',
-'味著述' => '味著述',
-'味著錄' => '味著錄',
-'咖哩' => '咖喱',
-'麥克風' => '咪高峰',
-'麦克风' => '咪高峰',
-'哥特式' => '哥德式',
-'哥斯大黎加' => '哥斯達黎加',
-'哪里' => '哪裏',
-'哭著' => '哭着',
-'哭著作' => '哭著作',
-'哭著名' => '哭著名',
-'哭著書' => '哭著書',
-'哭著稱' => '哭著稱',
-'哭著者' => '哭著者',
-'哭著述' => '哭著述',
-'哭著錄' => '哭著錄',
-'唱著' => '唱着',
-'唱著作' => '唱著作',
-'唱著名' => '唱著名',
-'唱著書' => '唱著書',
-'唱著稱' => '唱著稱',
-'唱著者' => '唱著者',
-'唱著述' => '唱著述',
-'唱著錄' => '唱著錄',
-'喝著' => '喝着',
-'喝著作' => '喝著作',
-'喝著名' => '喝著名',
-'喝著書' => '喝著書',
-'喝著稱' => '喝著稱',
-'喝著者' => '喝著者',
-'喝著述' => '喝著述',
-'喝著錄' => '喝著錄',
-'賈伯斯' => '喬布斯',
-'乔治·奥威尔' => '喬治·歐威爾',
-'单反相机' => '單鏡反光機',
-'單眼相機' => '單鏡反光機',
-'嗅不著' => '嗅不着',
-'嗅得著' => '嗅得着',
-'嗅著' => '嗅着',
-'凯瑟琳' => '嘉芙蓮',
-'凱薩琳' => '嘉芙蓮',
-'嘯吒' => '嘯咤',
-'嘴里' => '嘴裏',
-'嚷著' => '嚷着',
-'嚷著作' => '嚷著作',
-'嚷著名' => '嚷著名',
-'嚷著書' => '嚷著書',
-'嚷著稱' => '嚷著稱',
-'嚷著者' => '嚷著者',
-'嚷著述' => '嚷著述',
-'嚷著錄' => '嚷著錄',
-'回著' => '回着',
-'回著名' => '回著名',
-'因著' => '因着',
-'因著〈' => '因著〈',
-'因著《' => '因著《',
-'因著作' => '因著作',
-'因著名' => '因著名',
-'因著書' => '因著書',
-'因著稱' => '因著稱',
-'因著者' => '因著者',
-'因著述' => '因著述',
-'因著錄' => '因著錄',
-'困著' => '困着',
-'困著作' => '困著作',
-'困著名' => '困著名',
-'困著書' => '困著書',
-'困著稱' => '困著稱',
-'困著者' => '困著者',
-'困著述' => '困著述',
-'困著錄' => '困著錄',
-'固著' => '固着',
-'圈占' => '圈佔',
-'圈里' => '圈裏',
-'西洋棋' => '國際象棋',
-'圍著' => '圍着',
-'圍著作' => '圍著作',
-'圍著名' => '圍著名',
-'圍著書' => '圍著書',
-'圍著稱' => '圍著稱',
-'圍著者' => '圍著者',
-'圍著述' => '圍著述',
-'圍著錄' => '圍著錄',
-'园里' => '園裏',
-'吐瓦魯' => '圖瓦盧',
-'土魯斯' => '圖盧茲',
-'图里的' => '圖裏的',
-'图里,' => '圖裏,',
-'土里' => '土裏',
-'在山里' => '在山裏',
-'蓋亞那' => '圭亞那',
-'地占' => '地佔',
-'地图里' => '地圖裏',
-'堪培拉' => '坎培拉',
-'坐台' => '坐枱',
-'坐著' => '坐着',
-'坐著作' => '坐著作',
-'坐著名' => '坐著名',
-'坐著書' => '坐著書',
-'坐著稱' => '坐著稱',
-'坐著者' => '坐著者',
-'坐著述' => '坐著述',
-'坐著錄' => '坐著錄',
-'坑里' => '坑裏',
-'坦尚尼亞' => '坦桑尼亞',
-'衣索匹亞' => '埃塞俄比亚',
-'衣索比亞' => '埃塞俄比亞',
-'葉里溫' => '埃里溫',
-'城市里' => '城市裏',
-'城里' => '城裏',
-'域里' => '域裏',
-'吉里巴斯' => '基里巴斯',
-'堅貞著' => '堅貞着',
-'场里' => '場裏',
-'塗著' => '塗着',
-'塞普勒斯' => '塞浦路斯',
-'賽普勒斯' => '塞浦路斯',
-'塞爾維亞與蒙特內哥羅' => '塞爾維亞和黑山',
-'塞席爾' => '塞舌爾',
-'境里' => '境裏',
-'壓著' => '壓着',
-'壓著作' => '壓著作',
-'壓著名' => '壓著名',
-'壓著書' => '壓著書',
-'壓著稱' => '壓著稱',
-'壓著者' => '壓著者',
-'壓著述' => '壓著述',
-'壓著錄' => '壓著錄',
-'壶里' => '壺裏',
-'多占' => '多佔',
-'夜晚里' => '夜晚裏',
-'夜里' => '夜裏',
-'夢有五不占' => '夢有五不占',
-'梦有五不占' => '夢有五不占',
-'夢著' => '夢着',
-'夢著作' => '夢著作',
-'夢著名' => '夢著名',
-'夢著書' => '夢著書',
-'夢著稱' => '夢著稱',
-'夢著者' => '夢著者',
-'夢著述' => '夢著述',
-'夢著錄' => '夢著錄',
-'梦里' => '夢裏',
-'天里' => '天裏',
-'宇航员' => '太空人',
-'夾著' => '夾着',
-'夾著作' => '夾著作',
-'夾著名' => '夾著名',
-'夾著書' => '夾著書',
-'夾著稱' => '夾著稱',
-'夾著者' => '夾著者',
-'夾著述' => '夾著述',
-'夾著錄' => '夾著錄',
-'奥占' => '奧佔',
-'奧占' => '奧佔',
-'歐巴馬' => '奧巴馬',
-'妆台' => '妝枱',
-'威斯伐倫' => '威斯特法倫',
-'威尔士' => '威爾斯',
-'威爾士' => '威爾斯',
-'子里' => '子裏',
-'字里行间' => '字裏行間',
-'存在著' => '存在着',
-'存著' => '存着',
-'存著作' => '存著作',
-'存著名' => '存著名',
-'孟德爾頌' => '孟德爾遜',
-'门德尔松' => '孟德爾遜',
-'學著' => '學着',
-'學著作' => '學著作',
-'學著名' => '學著名',
-'學著書' => '學著書',
-'學著稱' => '學著稱',
-'學著者' => '學著者',
-'學著述' => '學著述',
-'學著錄' => '學著錄',
-'学里' => '學裏',
-'守著' => '守着',
-'守著作' => '守著作',
-'守著名' => '守著名',
-'守著書' => '守著書',
-'守著称' => '守著稱',
-'守著稱' => '守著稱',
-'守著者' => '守著者',
-'守著述' => '守著述',
-'守著錄' => '守著錄',
-'安哈特' => '安哈爾特',
-'安地卡及巴布達' => '安提瓜和巴布達',
-'定著' => '定着',
-'定著作' => '定著作',
-'定著名' => '定著名',
-'定著書' => '定著書',
-'定著称' => '定著稱',
-'定著稱' => '定著稱',
-'定著者' => '定著者',
-'定著述' => '定著述',
-'定著錄' => '定著錄',
-'宣布' => '宣佈',
-'宫里' => '宮裏',
-'家里' => '家裏',
-'密布' => '密佈',
-'密西根' => '密歇根',
-'沃尓沃' => '富豪',
-'寡占' => '寡佔',
-'写字台' => '寫字枱',
-'寫著' => '寫着',
-'寫著作' => '寫著作',
-'寫著名' => '寫著名',
-'寫著書' => '寫著書',
-'寫著稱' => '寫著稱',
-'寫著者' => '寫著者',
-'寫著述' => '寫著述',
-'寫著錄' => '寫著錄',
-'宝里宝气' => '寶裏寶氣',
-'封面里' => '封面裏',
-'将占' => '將佔',
-'將占' => '將佔',
-'将占卜' => '將占卜',
-'將占卜' => '將占卜',
-'专辑里' => '專輯裏',
-'尋著' => '尋着',
-'尋著作' => '尋著作',
-'尋著名' => '尋著名',
-'尋著書' => '尋著書',
-'尋著稱' => '尋著稱',
-'尋著者' => '尋著者',
-'尋著述' => '尋著述',
-'尋著錄' => '尋著錄',
-'對著' => '對着',
-'對著作' => '對著作',
-'對著名' => '對著名',
-'對著書' => '對著書',
-'對著稱' => '對著稱',
-'對著者' => '對著者',
-'對著述' => '對著述',
-'對著錄' => '對著錄',
-'小时里' => '小時裏',
-'少占' => '少佔',
-'就里' => '就裏',
-'尼克松' => '尼克遜',
-'奈及利亞' => '尼日利亞',
-'局里' => '局裏',
-'屋里' => '屋裏',
-'展著' => '展着',
-'展著作' => '展著作',
-'展著名' => '展著名',
-'展著書' => '展著書',
-'展著稱' => '展著稱',
-'展著者' => '展著者',
-'展著述' => '展著述',
-'展著錄' => '展著錄',
-'屯里' => '屯裏',
-'山里有' => '山裏有',
-'山里的' => '山裏的',
-'甘比亞' => '岡比亞',
-'岸裡' => '岸裡',
-'工作台' => '工作枱',
-'已占' => '已佔',
-'巴塞罗那' => '巴塞隆拿',
-'巴塞隆納' => '巴塞隆拿',
-'巴貝多' => '巴巴多斯',
-'巴布亞紐幾內亞' => '巴布亞新畿內亞',
-'巴士拉' => '巴斯拉',
-'巷里' => '巷裏',
-'市占' => '市佔',
-'市里的' => '市裏的',
-'布吉納法索' => '布基納法索',
-'布什' => '布殊',
-'布里斯托尔' => '布里斯托',
-'蒲隆地' => '布隆迪',
-'希冀著' => '希冀着',
-'席哈克' => '希拉克',
-'希拉蕊' => '希拉莉',
-'希特勒' => '希特拉',
-'帛琉' => '帕勞',
-'巴尔米拉环礁' => '帕邁拉環礁',
-'帕劳' => '帛琉',
-'帶著' => '帶着',
-'帶著作' => '帶著作',
-'帶著名' => '帶著名',
-'帶著書' => '帶著書',
-'帶著稱' => '帶著稱',
-'帶著者' => '帶著者',
-'帶著述' => '帶著述',
-'帶著錄' => '帶著錄',
-'幅图里' => '幅圖裏',
-'幫著' => '幫着',
-'幫著作' => '幫著作',
-'幫著名' => '幫著名',
-'幫著書' => '幫著書',
-'幫著稱' => '幫著稱',
-'幫著者' => '幫著者',
-'幫著述' => '幫著述',
-'幫著錄' => '幫著錄',
-'干着急' => '干着急',
-'賓士' => '平治',
-'年代里' => '年代裏',
-'年里' => '年裏',
-'干着' => '幹着',
-'幹著' => '幹着',
-'幹著名' => '幹著名',
-'幹著稱' => '幹著稱',
-'幾內亞比索' => '幾內亞比紹',
-'店里' => '店裏',
-'庫德人' => '庫爾德人',
-'庫德族' => '庫爾德族',
-'坎城' => '康城',
-'戛纳' => '康城',
-'庙里' => '廟裏',
-'广播里' => '廣播裏',
-'強占' => '強佔',
-'强占' => '強佔',
-'约翰斯顿岛' => '強斯頓環礁',
-'弹子台' => '彈子枱',
-'蹦床' => '彈床',
-'弹珠台' => '彈珠枱',
-'形上學' => '形而上學',
-'谢丽·布莱尔' => '彭雪玲',
-'往里' => '往裏',
-'待著' => '待着',
-'待著作' => '待著作',
-'待著名' => '待著名',
-'待著書' => '待著書',
-'待著稱' => '待著稱',
-'待著者' => '待著者',
-'待著述' => '待著述',
-'待著錄' => '待著錄',
-'得著' => '得着',
-'得著作' => '得著作',
-'得著名' => '得著名',
-'得著書' => '得著書',
-'得著稱' => '得著稱',
-'得著者' => '得著者',
-'得著述' => '得著述',
-'得著錄' => '得著錄',
-'从图里' => '從圖裏',
-'从山里' => '從山裏',
-'从里到外' => '從裏到外',
-'从里向外' => '從裏向外',
-'循著' => '循着',
-'循著作' => '循著作',
-'循著名' => '循著名',
-'循著書' => '循著書',
-'循著稱' => '循著稱',
-'循著者' => '循著者',
-'循著述' => '循著述',
-'循著錄' => '循著錄',
-'征占' => '徵佔',
-'徵占' => '徵佔',
-'德占' => '德佔',
-'得克萨斯' => '德克薩斯',
-'德勒斯登' => '德累斯頓',
-'澈底' => '徹底',
-'心著' => '心着',
-'心著作' => '心著作',
-'心著名' => '心著名',
-'心著書' => '心著書',
-'心著称' => '心著稱',
-'心著稱' => '心著稱',
-'心著者' => '心著者',
-'心著述' => '心著述',
-'心著錄' => '心著錄',
-'心里' => '心裏',
-'心里面' => '心裏面',
-'忍著' => '忍着',
-'忍著作' => '忍著作',
-'忍著名' => '忍著名',
-'忍著書' => '忍著書',
-'忍著稱' => '忍著稱',
-'忍著者' => '忍著者',
-'忍著述' => '忍著述',
-'忍著錄' => '忍著錄',
-'忙著' => '忙着',
-'忙著作' => '忙著作',
-'忙著名' => '忙著名',
-'忙著書' => '忙著書',
-'忙著稱' => '忙著稱',
-'忙著者' => '忙著者',
-'忙著述' => '忙著述',
-'忙著錄' => '忙著錄',
-'忙里' => '忙裏',
-'忠貞著' => '忠貞着',
-'急著' => '急着',
-'急著作' => '急著作',
-'急著名' => '急著名',
-'急著書' => '急著書',
-'急著稱' => '急著稱',
-'急著者' => '急著者',
-'急著述' => '急著述',
-'急著錄' => '急著錄',
-'怪里怪气' => '怪裏怪氣',
-'悠著' => '悠着',
-'悠著作' => '悠著作',
-'悠著名' => '悠著名',
-'悠著書' => '悠著書',
-'悠著稱' => '悠著稱',
-'悠著者' => '悠著者',
-'悠著述' => '悠著述',
-'悠著錄' => '悠著錄',
-'悶著' => '悶着',
-'想象' => '想像',
-'想著' => '想着',
-'想著作' => '想著作',
-'想著名' => '想著名',
-'想著書' => '想著書',
-'想著称' => '想著稱',
-'想著稱' => '想著稱',
-'想著者' => '想著者',
-'想著述' => '想著述',
-'想著錄' => '想著錄',
-'意占' => '意佔',
-'義占' => '意佔',
-'義大利' => '意大利',
-'艾滋' => '愛滋',
-'愛著' => '愛着',
-'愛著作' => '愛著作',
-'愛著名' => '愛著名',
-'愛著書' => '愛著書',
-'愛著稱' => '愛著稱',
-'愛著者' => '愛著者',
-'愛著述' => '愛著述',
-'愛著錄' => '愛著錄',
-'慌里慌张' => '慌裏慌張',
-'慣著' => '慣着',
-'慣著作' => '慣著作',
-'慣著名' => '慣著名',
-'慣著書' => '慣著書',
-'慣著稱' => '慣著稱',
-'慣著者' => '慣著者',
-'慣著述' => '慣著述',
-'慣著錄' => '慣著錄',
-'宪法里' => '憲法裏',
-'应用程序' => '應用程式',
-'應著' => '應着',
-'應著作' => '應著作',
-'應著名' => '應著名',
-'應著書' => '應著書',
-'應著稱' => '應著稱',
-'應著者' => '應著者',
-'應著述' => '應著述',
-'應著錄' => '應著錄',
-'懷著' => '懷着',
-'懷著作' => '懷著作',
-'懷著名' => '懷著名',
-'懷著書' => '懷著書',
-'懷著稱' => '懷著稱',
-'懷著者' => '懷著者',
-'懷著述' => '懷著述',
-'懷著錄' => '懷著錄',
-'怀里' => '懷裏',
-'戀著' => '戀着',
-'戀著作' => '戀著作',
-'戀著名' => '戀著名',
-'戀著書' => '戀著書',
-'戀著稱' => '戀著稱',
-'戀著者' => '戀著者',
-'戀著述' => '戀著述',
-'戀著錄' => '戀著錄',
-'戈巴契夫' => '戈爾巴喬夫',
-'戰著' => '戰着',
-'戰著作' => '戰著作',
-'戰著名' => '戰著名',
-'戰著書' => '戰著書',
-'戰著稱' => '戰著稱',
-'戰著者' => '戰著者',
-'戰著述' => '戰著述',
-'戰著錄' => '戰著錄',
-'戏彩娱亲' => '戲綵娛親',
-'戲彩娛親' => '戲綵娛親',
-'戏里' => '戲裏',
-'撒切尔' => '戴卓爾',
-'柴契爾' => '戴卓爾',
-'狄安娜' => '戴安娜',
-'黛安娜' => '戴安娜',
-'戴著' => '戴着',
-'戴著作' => '戴著作',
-'戴著名' => '戴著名',
-'戴著書' => '戴著書',
-'戴著稱' => '戴著稱',
-'戴著者' => '戴著者',
-'戴著述' => '戴著述',
-'戴著錄' => '戴著錄',
-'房里' => '房裏',
-'所占' => '所佔',
-'索羅門群島' => '所羅門群島',
-'手里' => '手裏',
-'手里剑' => '手裏劍',
-'列印' => '打印',
-'印表機' => '打印機',
-'打著' => '打着',
-'打著作' => '打著作',
-'打著名' => '打著名',
-'打著書' => '打著書',
-'打著稱' => '打著稱',
-'打著者' => '打著者',
-'打著述' => '打著述',
-'打著錄' => '打著錄',
-'扛著' => '扛着',
-'扛著作' => '扛著作',
-'扛著名' => '扛著名',
-'扛著書' => '扛著書',
-'扛著稱' => '扛著稱',
-'扛著者' => '扛著者',
-'扛著述' => '扛著述',
-'扛著錄' => '扛著錄',
-'找不著' => '找不着',
-'找得著' => '找得着',
-'承宣布政' => '承宣布政',
-'抓著' => '抓着',
-'抓著作' => '抓著作',
-'抓著名' => '抓著名',
-'抓著稱' => '抓著稱',
-'抓著者' => '抓著者',
-'抓著述' => '抓著述',
-'抓著錄' => '抓著錄',
-'披著' => '披着',
-'披著作' => '披著作',
-'披著名' => '披著名',
-'披著書' => '披著書',
-'披著稱' => '披著稱',
-'披著者' => '披著者',
-'披著述' => '披著述',
-'披著錄' => '披著錄',
-'抬著' => '抬着',
-'抬著作' => '抬著作',
-'抬著名' => '抬著名',
-'抬著稱' => '抬著稱',
-'抬著者' => '抬著者',
-'抬著述' => '抬著述',
-'抬著錄' => '抬著錄',
-'抱著' => '抱着',
-'抱著作' => '抱著作',
-'抱著名' => '抱著名',
-'抱著稱' => '抱著稱',
-'抱著者' => '抱著者',
-'抱著述' => '抱著述',
-'抱著錄' => '抱著錄',
-'拉著' => '拉着',
-'拉著作' => '拉著作',
-'拉著名' => '拉著名',
-'拉著書' => '拉著書',
-'拉著稱' => '拉著稱',
-'拉著者' => '拉著者',
-'拉著述' => '拉著述',
-'拉著錄' => '拉著錄',
-'拎著' => '拎着',
-'拎著作' => '拎著作',
-'拎著名' => '拎著名',
-'拎著稱' => '拎著稱',
-'拎著者' => '拎著者',
-'拎著述' => '拎著述',
-'拎著錄' => '拎著錄',
-'拖著' => '拖着',
-'拖著作' => '拖著作',
-'拖著名' => '拖著名',
-'拖著稱' => '拖著稱',
-'拖著者' => '拖著者',
-'拖著述' => '拖著述',
-'拖著錄' => '拖著錄',
-'拼著' => '拼着',
-'拼著作' => '拼著作',
-'拼著名' => '拼著名',
-'拼著稱' => '拼著稱',
-'拼著者' => '拼著者',
-'拼著述' => '拼著述',
-'拼著錄' => '拼著錄',
-'拿著' => '拿着',
-'拿著作' => '拿著作',
-'拿著名' => '拿著名',
-'拿著稱' => '拿著稱',
-'拿著者' => '拿著者',
-'拿著述' => '拿著述',
-'拿著錄' => '拿著錄',
-'持著' => '持着',
-'持著作' => '持著作',
-'持著名' => '持著名',
-'持著稱' => '持著稱',
-'持著者' => '持著者',
-'持著述' => '持著述',
-'持著錄' => '持著錄',
-'挑著' => '挑着',
-'挑著作' => '挑著作',
-'挑著名' => '挑著名',
-'挑著稱' => '挑著稱',
-'挑著者' => '挑著者',
-'挑著述' => '挑著述',
-'挑著錄' => '挑著錄',
-'挨著' => '挨着',
-'挨著作' => '挨著作',
-'挨著名' => '挨著名',
-'挨著稱' => '挨著稱',
-'挨著者' => '挨著者',
-'挨著述' => '挨著述',
-'挨著錄' => '挨著錄',
-'捆著' => '捆着',
-'捆著作' => '捆著作',
-'捆著名' => '捆著名',
-'捆著稱' => '捆著稱',
-'捆著者' => '捆著者',
-'捆著述' => '捆著述',
-'捆著錄' => '捆著錄',
-'伏地挺身' => '掌上壓',
-'俯卧撑' => '掌上壓',
-'掖著' => '掖着',
-'掖著作' => '掖著作',
-'掖著名' => '掖著名',
-'掖著稱' => '掖著稱',
-'掖著者' => '掖著者',
-'掖著述' => '掖著述',
-'掖著錄' => '掖著錄',
-'掙著' => '掙着',
-'掙著作' => '掙著作',
-'掙著名' => '掙著名',
-'掙著書' => '掙著書',
-'掙著稱' => '掙著稱',
-'掙著者' => '掙著者',
-'掙著述' => '掙著述',
-'掙著錄' => '掙著錄',
-'掛著' => '掛着',
-'接著' => '接着',
-'接著作' => '接著作',
-'接著名' => '接著名',
-'接著稱' => '接著稱',
-'接著者' => '接著者',
-'接著述' => '接著述',
-'接著錄' => '接著錄',
-'揉著' => '揉着',
-'揉著作' => '揉著作',
-'揉著名' => '揉著名',
-'揉著書' => '揉著書',
-'揉著稱' => '揉著稱',
-'揉著者' => '揉著者',
-'揉著述' => '揉著述',
-'揉著錄' => '揉著錄',
-'提著' => '提着',
-'提著作' => '提著作',
-'提著名' => '提著名',
-'提著稱' => '提著稱',
-'提著者' => '提著者',
-'提著述' => '提著述',
-'提著錄' => '提著錄',
-'揮著' => '揮着',
-'揮著作' => '揮著作',
-'揮著名' => '揮著名',
-'揮著稱' => '揮著稱',
-'揮著者' => '揮著者',
-'揮著述' => '揮著述',
-'揮著錄' => '揮著錄',
-'搜索引擎' => '搜尋引擎',
-'抢占' => '搶佔',
-'搶占' => '搶佔',
-'摟著' => '摟着',
-'摟著作' => '摟著作',
-'摟著名' => '摟著名',
-'摟著稱' => '摟著稱',
-'摟著者' => '摟著者',
-'摟著述' => '摟著述',
-'摟著錄' => '摟著錄',
-'折台' => '摺枱',
-'撒马尔罕' => '撒馬爾罕',
-'撼著' => '撼着',
-'撼著作' => '撼著作',
-'撼著名' => '撼著名',
-'撼著書' => '撼著書',
-'撼著稱' => '撼著稱',
-'撼著者' => '撼著者',
-'撼著述' => '撼著述',
-'撼著錄' => '撼著錄',
-'擋著' => '擋着',
-'擋著作' => '擋著作',
-'擋著名' => '擋著名',
-'擋著稱' => '擋著稱',
-'擋著者' => '擋著者',
-'擋著述' => '擋著述',
-'擋著錄' => '擋著錄',
-'擔著' => '擔着',
-'據著' => '據着',
-'據著作' => '據著作',
-'據著名' => '據著名',
-'據著書' => '據著書',
-'據著稱' => '據著稱',
-'據著者' => '據著者',
-'據著述' => '據著述',
-'據著錄' => '據著錄',
-'擡著' => '擡着',
-'摆布' => '擺佈',
-'擺布' => '擺佈',
-'擺著' => '擺着',
-'擺著作' => '擺著作',
-'擺著名' => '擺著名',
-'擺著稱' => '擺著稱',
-'擺著者' => '擺著者',
-'擺著述' => '擺著述',
-'擺著錄' => '擺著錄',
-'攻占' => '攻佔',
-'放著' => '放着',
-'放著作' => '放著作',
-'放著名' => '放著名',
-'放著称' => '放著稱',
-'放著稱' => '放著稱',
-'敞著' => '敞着',
-'敞著作' => '敞著作',
-'敞著名' => '敞著名',
-'敞著稱' => '敞著稱',
-'敞著者' => '敞著者',
-'敞著述' => '敞著述',
-'敞著錄' => '敞著錄',
-'散布' => '散佈',
-'散佈著' => '散佈着',
-'散布著' => '散佈着',
-'数字照相机' => '数碼照相機',
-'數位照相機' => '数碼照相機',
-'數著' => '數着',
-'数字化' => '數碼化',
-'數位化' => '數碼化',
-'数字技术' => '數碼技術',
-'數位技術' => '數碼技術',
-'數位相機' => '數碼相機',
-'数字信号' => '數碼訊號',
-'數碼訊號' => '數碼訊號',
-'数字电视' => '數碼電視',
-'數位電視' => '數碼電視',
-'數著作' => '數著作',
-'數著名' => '數著名',
-'數著稱' => '數著稱',
-'數著者' => '數著者',
-'數著述' => '數著述',
-'數著錄' => '數著錄',
-'斥著' => '斥着',
-'斥著作' => '斥著作',
-'斥著名' => '斥著名',
-'斥著書' => '斥著書',
-'斥著稱' => '斥著稱',
-'斥著者' => '斥著者',
-'斥著述' => '斥著述',
-'斥著錄' => '斥著錄',
-'史瓦濟蘭' => '斯威士蘭',
-'斯洛維尼亞' => '斯洛文尼亞',
-'紐澳良' => '新奧爾良',
-'紐西蘭' => '新西蘭',
-'方法里' => '方法裏',
-'族里' => '族裏',
-'日占' => '日佔',
-'日里' => '日裏',
-'昂山素季' => '昂山素姬',
-'翁山蘇姬' => '昂山素姬',
-'昂著' => '昂着',
-'昂著作' => '昂著作',
-'昂著名' => '昂著名',
-'昂著書' => '昂著書',
-'昂著稱' => '昂著稱',
-'昂著者' => '昂著者',
-'昂著述' => '昂著述',
-'昂著錄' => '昂著錄',
-'星罗棋布' => '星羅棋佈',
-'星羅棋布' => '星羅棋佈',
-'映著' => '映着',
-'映著作' => '映著作',
-'映著名' => '映著名',
-'映著書' => '映著書',
-'映著稱' => '映著稱',
-'映著者' => '映著者',
-'映著述' => '映著述',
-'映著錄' => '映著錄',
-'晃著' => '晃着',
-'晃著作' => '晃著作',
-'晃著名' => '晃著名',
-'晃著稱' => '晃著稱',
-'晃著者' => '晃著者',
-'晃著述' => '晃著述',
-'晃著錄' => '晃著錄',
-'晶元' => '晶片',
-'芯片' => '晶片',
-'智慧型' => '智能',
-'智慧卡' => '智能卡',
-'智慧手機' => '智能手機',
-'暗地里' => '暗地裏',
-'暗沟里' => '暗溝裏',
-'暗著' => '暗着',
-'暗著作' => '暗著作',
-'暗著名' => '暗著名',
-'暗著書' => '暗著書',
-'暗著稱' => '暗著稱',
-'暗著者' => '暗著者',
-'暗著述' => '暗著述',
-'暗著錄' => '暗著錄',
-'暗里' => '暗裏',
-'会占' => '會佔',
-'會占' => '會佔',
-'会占卜' => '會占卜',
-'會占卜' => '會占卜',
-'会里' => '會裏',
-'月裡来' => '月裏來',
-'有著' => '有着',
-'有著作' => '有著作',
-'有著名' => '有著名',
-'有著書' => '有著書',
-'有著稱' => '有著稱',
-'有著者' => '有著者',
-'有著述' => '有著述',
-'有著錄' => '有著錄',
-'罗纳德·里根' => '朗奴·列根',
-'罗纳尔多' => '朗拿度',
-'罗纳尔迪尼奥' => '朗拿甸奴',
-'望著' => '望着',
-'望著作' => '望著作',
-'望著名' => '望著名',
-'望著書' => '望著書',
-'望著稱' => '望著稱',
-'望著者' => '望著者',
-'望著述' => '望著述',
-'望著錄' => '望著錄',
-'朝著' => '朝着',
-'朝著作' => '朝著作',
-'朝著名' => '朝著名',
-'朝著稱' => '朝著稱',
-'朝著者' => '朝著者',
-'朝著述' => '朝著述',
-'朝著錄' => '朝著錄',
-'板球' => '木球',
-'賓·拉登' => '本·拉登',
-'班傑明' => '本傑明',
-'賓拉登' => '本拉登',
-'本著' => '本着',
-'本著作' => '本著作',
-'本著名' => '本著名',
-'本著書' => '本著書',
-'本著稱' => '本著稱',
-'本著者' => '本著者',
-'本著述' => '本著述',
-'本著錄' => '本著錄',
-'里瓦尔多' => '李華度',
-'村里' => '村裏',
-'杜塞道夫' => '杜塞爾多夫',
-'迪拜' => '杜拜',
-'東協助' => '東協助',
-'東協會' => '東協會',
-'東協議' => '東協議',
-'東南亞國家協會' => '東南亞國家聯盟',
-'亚细安' => '東盟',
-'東協' => '東盟',
-'板著臉' => '板着臉',
-'枕著' => '枕着',
-'枕著作' => '枕著作',
-'枕著名' => '枕著名',
-'枕著稱' => '枕著稱',
-'枕著者' => '枕著者',
-'枕著述' => '枕著述',
-'枕著錄' => '枕著錄',
-'檯' => '枱',
-'台布' => '枱布',
-'台历' => '枱曆',
-'台灯' => '枱燈',
-'台面上' => '枱面上',
-'台面化' => '枱面化',
-'柏林墙' => '柏林圍牆',
-'奧黛莉·朵杜' => '柯德莉·塔圖',
-'奥黛丽·赫本' => '柯德莉·夏萍',
-'奧黛麗·赫本' => '柯德莉·夏萍',
-'哥廷根' => '格丁根',
-'格瑞那達' => '格林納達',
-'格莱美奖' => '格林美獎',
-'葛萊美獎' => '格林美獎',
-'格鲁吉亚' => '格魯吉亞',
-'框里' => '框裏',
-'台式电脑' => '桌上型電腦',
-'台球' => '桌球',
-'撞球' => '桌球',
-'梅鐸' => '梅鐸',
-'默多克' => '梅鐸',
-'梳著' => '梳着',
-'梳著作' => '梳著作',
-'梳著名' => '梳著名',
-'梳著稱' => '梳著稱',
-'梳著者' => '梳著者',
-'梳著述' => '梳著述',
-'梳著錄' => '梳著錄',
-'棉里' => '棉裏',
-'桑巴舞' => '森巴舞',
-'森林里' => '森林裏',
-'棺材里' => '棺材裏',
-'榴莲' => '榴槤',
-'榴蓮' => '榴槤',
-'樂著' => '樂着',
-'樂著作' => '樂著作',
-'樂著名' => '樂著名',
-'樂著書' => '樂著書',
-'樂著稱' => '樂著稱',
-'樂著者' => '樂著者',
-'樂著述' => '樂著述',
-'樂著錄' => '樂著錄',
-'標志著' => '標志着',
-'寶獅' => '標致',
-'標誌著' => '標誌着',
-'树林里' => '樹林裏',
-'工具機' => '機床',
-'机器人' => '機械人',
-'機器人' => '機械人',
-'柜台' => '櫃枱',
-'柜里' => '櫃裏',
-'历史里' => '歷史裏',
-'死里求生' => '死裏求生',
-'死里逃生' => '死裏逃生',
-'殺著' => '殺着',
-'殺著作' => '殺著作',
-'殺著名' => '殺著名',
-'殺著書' => '殺著書',
-'殺著稱' => '殺著稱',
-'殺著者' => '殺著者',
-'殺著述' => '殺著述',
-'殺著錄' => '殺著錄',
-'壳里' => '殼裏',
-'茅利塔尼亞' => '毛里塔尼亞',
-'模里西斯' => '毛里裘斯',
-'毛里求斯' => '毛里裘斯',
-'公厘' => '毫米',
-'公釐' => '毫米',
-'水来汤里去' => '水來湯裏去',
-'水里' => '水裏',
-'求著' => '求着',
-'求著作' => '求著作',
-'求著名' => '求著名',
-'求著書' => '求著書',
-'求著稱' => '求著稱',
-'求著者' => '求著者',
-'求著述' => '求著述',
-'求著錄' => '求著錄',
-'池里' => '池裏',
-'汙' => '污',
-'文莱' => '汶萊',
-'沈著' => '沈着',
-'沉著' => '沉着',
-'沉著作' => '沉著作',
-'沉著名' => '沉著名',
-'沉著書' => '沉著書',
-'沉著稱' => '沉著稱',
-'沉著者' => '沉著者',
-'沉著述' => '沉著述',
-'沉著錄' => '沉著錄',
-'沖著' => '沖着',
-'沖著。' => '沖著。',
-'沖著《' => '沖著《',
-'沖著,' => '沖著,',
-'沙地阿拉伯' => '沙特阿拉伯',
-'沙烏地阿拉伯' => '沙特阿拉伯',
-'沙里淘金' => '沙裏淘金',
-'河里' => '河裏',
-'沿著' => '沿着',
-'沿著作' => '沿著作',
-'沿著名' => '沿著名',
-'沿著書' => '沿著書',
-'沿著稱' => '沿著稱',
-'沿著者' => '沿著者',
-'沿著述' => '沿著述',
-'沿著錄' => '沿著錄',
-'法占' => '法佔',
-'法里,' => '法裏,',
-'玻里尼西亞' => '波利尼西亞',
-'波士尼亞' => '波斯尼亞',
-'波士尼亞赫塞哥維納' => '波斯尼亞黑塞哥維那',
-'宝莱坞' => '波里活',
-'寶萊塢' => '波里活',
-'幫浦' => '泵',
-'洞里' => '洞裏',
-'辛巴威' => '津巴布韋',
-'宏都拉斯' => '洪都拉斯',
-'活著' => '活着',
-'活著作' => '活著作',
-'活著名' => '活著名',
-'活著書' => '活著書',
-'活著稱' => '活著稱',
-'活著者' => '活著者',
-'活著述' => '活著述',
-'活著錄' => '活著錄',
-'移动网络' => '流動網絡',
-'行動網路' => '流動網絡',
-'移动电话' => '流動電話',
-'行動電話' => '流動電話',
-'流著' => '流着',
-'流著作' => '流著作',
-'流著名' => '流著名',
-'流著書' => '流著書',
-'流著稱' => '流著稱',
-'流著者' => '流著者',
-'流著述' => '流著述',
-'流著錄' => '流著錄',
-'流露著' => '流露着',
-'浮著' => '浮着',
-'蘭卡威' => '浮羅交怡',
-'浮著作' => '浮著作',
-'浮著名' => '浮著名',
-'浮著書' => '浮著書',
-'浮著稱' => '浮著稱',
-'浮著者' => '浮著者',
-'浮著述' => '浮著述',
-'浮著錄' => '浮著錄',
-'海上布雷' => '海上佈雷',
-'海洛因' => '海洛英',
-'海湾布雷' => '海灣佈雷',
-'海灣布雷' => '海灣佈雷',
-'涼著' => '涼着',
-'涼著作' => '涼著作',
-'涼著名' => '涼著名',
-'涼著書' => '涼著書',
-'涼著稱' => '涼著稱',
-'涼著者' => '涼著者',
-'涼著述' => '涼著述',
-'涼著錄' => '涼著錄',
-'深山里' => '深山裏',
-'渊里' => '淵裏',
-'渴著' => '渴着',
-'渴著作' => '渴著作',
-'渴著名' => '渴著名',
-'渴著書' => '渴著書',
-'渴著稱' => '渴著稱',
-'渴著者' => '渴著者',
-'渴著述' => '渴著述',
-'渴著錄' => '渴著錄',
-'湊合著' => '湊合着',
-'湖里' => '湖裏',
-'准将' => '準將',
-'准將' => '準將',
-'准尉' => '準尉',
-'溢著' => '溢着',
-'溢著作' => '溢著作',
-'溢著名' => '溢著名',
-'溢著書' => '溢著書',
-'溢著稱' => '溢著稱',
-'溢著者' => '溢著者',
-'溢著述' => '溢著述',
-'溢著錄' => '溢著錄',
-'演著' => '演着',
-'演著作' => '演著作',
-'演著名' => '演著名',
-'演著書' => '演著書',
-'演著稱' => '演著稱',
-'演著者' => '演著者',
-'演著述' => '演著述',
-'演著錄' => '演著錄',
-'漠里' => '漠裏',
-'漢諾瓦' => '漢諾威',
-'漫著' => '漫着',
-'漫著作' => '漫著作',
-'漫著名' => '漫著名',
-'漫著書' => '漫著書',
-'漫著稱' => '漫著稱',
-'漫著者' => '漫著者',
-'漫著述' => '漫著述',
-'漫著錄' => '漫著錄',
-'潜意识里' => '潛意識裏',
-'潤著' => '潤着',
-'潤著作' => '潤著作',
-'潤著名' => '潤著名',
-'潤著書' => '潤著書',
-'潤著稱' => '潤著稱',
-'潤著者' => '潤著者',
-'潤著述' => '潤著述',
-'潤著錄' => '潤著錄',
-'潭里' => '潭裏',
-'溼' => '濕',
-'火山里' => '火山裏',
-'火箭布雷' => '火箭佈雷',
-'為著' => '為着',
-'為著《' => '為著《',
-'為著作' => '為著作',
-'為著名' => '為著名',
-'為著稱' => '為著稱',
-'為著者' => '為著者',
-'為著述' => '為著述',
-'為著錄' => '為著錄',
-'菸' => '煙',
-'照占' => '照佔',
-'照著' => '照着',
-'照著作' => '照著作',
-'照著名' => '照著名',
-'照著書' => '照著書',
-'照著稱' => '照著稱',
-'照著者' => '照著者',
-'照著述' => '照著述',
-'照著錄' => '照著錄',
-'燒著' => '燒着',
-'燒著作' => '燒著作',
-'燒著名' => '燒著名',
-'燒著書' => '燒著書',
-'燒著稱' => '燒著稱',
-'燒著者' => '燒著者',
-'燒著述' => '燒著述',
-'燒著錄' => '燒著錄',
-'爭著' => '爭着',
-'爭著作' => '爭著作',
-'爭著名' => '爭著名',
-'爭著書' => '爭著書',
-'爭著稱' => '爭著稱',
-'爭著者' => '爭著者',
-'爭著述' => '爭著述',
-'爭著錄' => '爭著錄',
-'墙里' => '牆裏',
-'版图里' => '版圖裏',
-'版权信息' => '版權資訊',
-'千里達托貝哥' => '特立尼達和多巴哥',
-'牽著' => '牽着',
-'牽著作' => '牽著作',
-'牽著名' => '牽著名',
-'牽著書' => '牽著書',
-'牽著稱' => '牽著稱',
-'牽著者' => '牽著者',
-'牽著述' => '牽著述',
-'牽著錄' => '牽著錄',
-'犯不著' => '犯不着',
-'犯不著作' => '犯不著作',
-'犯不著名' => '犯不著名',
-'犯不著書' => '犯不著書',
-'犯不著稱' => '犯不著稱',
-'犯不著者' => '犯不著者',
-'犯不著述' => '犯不著述',
-'犯不著錄' => '犯不著錄',
-'犯得著' => '犯得着',
-'狂占' => '狂佔',
-'猜著' => '猜着',
-'猜著作' => '猜著作',
-'猜著名' => '猜著名',
-'猜著書' => '猜著書',
-'猜著稱' => '猜著稱',
-'猜著者' => '猜著者',
-'猜著述' => '猜著述',
-'猜著錄' => '猜著錄',
-'猶豫著' => '猶豫着',
-'狱里' => '獄裏',
-'独占' => '獨佔',
-'獨占' => '獨佔',
-'獨立國家國協' => '獨立國家聯合體',
-'獨立國協' => '獨聯體',
-'獲著' => '獲着',
-'獲著作' => '獲著作',
-'獲著名' => '獲著名',
-'獲著書' => '獲著書',
-'獲著稱' => '獲著稱',
-'獲著者' => '獲著者',
-'獲著述' => '獲著述',
-'獲著錄' => '獲著錄',
-'班固著' => '班固著',
-'班里' => '班裏',
-'球台' => '球枱',
-'卢塞恩' => '琉森',
-'諾鲁' => '瑙魯',
-'萬那杜' => '瓦努阿圖',
-'肯尼迪' => '甘迺迪',
-'甜著' => '甜着',
-'甜著作' => '甜著作',
-'甜著名' => '甜著名',
-'甜著書' => '甜著書',
-'甜著稱' => '甜著稱',
-'甜著者' => '甜著者',
-'甜著述' => '甜著述',
-'甜著錄' => '甜著錄',
-'用不著' => '用不着',
-'用得著' => '用得着',
-'用法里' => '用法裏',
-'用著' => '用着',
-'用著作' => '用著作',
-'用著名' => '用著名',
-'用著書' => '用著書',
-'用著稱' => '用著稱',
-'用著者' => '用著者',
-'用著述' => '用著述',
-'用著錄' => '用著錄',
-'田里' => '田裏',
-'由表及里' => '由表及裏',
-'A型肝炎' => '甲型肝炎',
-'A肝' => '甲肝',
-'界里' => '界裏',
-'留著' => '留着',
-'留著作' => '留著作',
-'留著名' => '留著名',
-'留著書' => '留著書',
-'留著稱' => '留著稱',
-'留著者' => '留著者',
-'留著述' => '留著述',
-'留著錄' => '留著錄',
-'畫著' => '畫着',
-'畫著作' => '畫著作',
-'畫著名' => '畫著名',
-'畫著稱' => '畫著稱',
-'畫著者' => '畫著者',
-'當著' => '當着',
-'當著作' => '當著作',
-'過著作' => '當著作',
-'當著名' => '當著名',
-'過著名' => '當著名',
-'當著書' => '當著書',
-'過著書' => '當著書',
-'當著稱' => '當著稱',
-'過著稱' => '當著稱',
-'當著者' => '當著者',
-'過著者' => '當著者',
-'當著述' => '當著述',
-'過著述' => '當著述',
-'當著錄' => '當著錄',
-'過著錄' => '當著錄',
-'几内亚' => '畿內亞',
-'幾內亞' => '畿內亞',
-'迭代' => '疊代',
-'疑著' => '疑着',
-'疑著作' => '疑著作',
-'疑著名' => '疑著名',
-'疑著書' => '疑著書',
-'疑著稱' => '疑著稱',
-'疑著者' => '疑著者',
-'疑著述' => '疑著述',
-'疑著錄' => '疑著錄',
-'狂牛症' => '瘋牛症',
-'发布' => '發佈',
-'發布' => '發佈',
-'發著' => '發着',
-'發著《' => '發著《',
-'發著作' => '發著作',
-'發著名' => '發著名',
-'發著稱' => '發著稱',
-'發著者' => '發著者',
-'白里透红' => '白裏透紅',
-'戈登·布朗' => '白高敦',
-'百科里' => '百科裏',
-'的图里' => '的圖裏',
-'的山里' => '的山裏',
-'皮里春秋' => '皮裏春秋',
-'皮里阳秋' => '皮裏陽秋',
-'皺著' => '皺着',
-'皺著作' => '皺著作',
-'皺著名' => '皺著名',
-'皺著書' => '皺著書',
-'皺著稱' => '皺著稱',
-'皺著者' => '皺著者',
-'皺著述' => '皺著述',
-'皺著錄' => '皺著錄',
-'盒里' => '盒裏',
-'盛著' => '盛着',
-'盛著作' => '盛著作',
-'盛著名' => '盛著名',
-'盛著書' => '盛著書',
-'盛著稱' => '盛著稱',
-'盛著者' => '盛著者',
-'盛著述' => '盛著述',
-'盛著錄' => '盛著錄',
-'盘里' => '盤裏',
-'盧安達' => '盧旺達',
-'羅亞爾' => '盧瓦爾',
-'盯著' => '盯着',
-'盯著作' => '盯著作',
-'盯著名' => '盯著名',
-'盯著書' => '盯著書',
-'盯著稱' => '盯著稱',
-'盯著者' => '盯著者',
-'盯著述' => '盯著述',
-'盯著錄' => '盯著錄',
-'看不著' => '看不着',
-'看得著' => '看得着',
-'看法里' => '看法裏',
-'看著' => '看着',
-'看著作' => '看著作',
-'看著名' => '看著名',
-'看著書' => '看著書',
-'看著稱' => '看著稱',
-'看著者' => '看著者',
-'看著述' => '看著述',
-'看著錄' => '看著錄',
-'眼眶里' => '眼眶裏',
-'眼睛里' => '眼睛裏',
-'眼里' => '眼裏',
-'著什' => '着什',
-'著他' => '着他',
-'著你' => '着你',
-'著力' => '着力',
-'著地' => '着地',
-'著墨' => '着墨',
-'著她' => '着她',
-'著妳' => '着妳',
-'著它' => '着它',
-'著實' => '着實',
-'著忙' => '着忙',
-'著急' => '着急',
-'著想' => '着想',
-'著意' => '着意',
-'著我' => '着我',
-'著手' => '着手',
-'著數' => '着數',
-'著法' => '着法',
-'著涼' => '着涼',
-'著火' => '着火',
-'著甚麽' => '着甚麽',
-'著眼' => '着眼',
-'著祂' => '着祂',
-'著筆' => '着筆',
-'著絲' => '着絲',
-'著緊' => '着緊',
-'著腳' => '着腳',
-'著艦' => '着艦',
-'著色' => '着色',
-'著落' => '着落',
-'著衣' => '着衣',
-'著裝' => '着裝',
-'著迷' => '着迷',
-'著重' => '着重',
-'著錄' => '着錄',
-'著陸' => '着陸',
-'著鞭' => '着鞭',
-'睡不著' => '睡不着',
-'睡得著' => '睡得着',
-'睡著' => '睡着',
-'睡著作' => '睡著作',
-'睡著名' => '睡著名',
-'睡著書' => '睡著書',
-'睡著稱' => '睡著稱',
-'睡著者' => '睡著者',
-'睡著述' => '睡著述',
-'睡著錄' => '睡著錄',
-'瞞著' => '瞞着',
-'瞞著作' => '瞞著作',
-'瞞著名' => '瞞著名',
-'瞞著書' => '瞞著書',
-'瞞著稱' => '瞞著稱',
-'瞞著者' => '瞞著者',
-'瞞著述' => '瞞著述',
-'瞞著錄' => '瞞著錄',
-'瞪著' => '瞪着',
-'瞪著作' => '瞪著作',
-'瞪著名' => '瞪著名',
-'瞪著書' => '瞪著書',
-'瞪著稱' => '瞪著稱',
-'瞪著者' => '瞪著者',
-'瞪著述' => '瞪著述',
-'瞪著錄' => '瞪著錄',
-'矛盾著' => '矛盾着',
-'智慧財產權' => '知識產權',
-'智財權' => '知識產權',
-'短信' => '短訊',
-'簡訊' => '短訊',
-'什勒斯維希' => '石勒蘇益格',
-'硅' => '矽',
-'硅藻' => '硅藻',
-'硬件' => '硬件',
-'硬體' => '硬件',
-'碗里' => '碗裏',
-'貝克漢' => '碧咸',
-'贝克汉姆' => '碧咸',
-'社里' => '社裏',
-'福馬林' => '福爾馬林',
-'福著' => '福着',
-'福著作' => '福著作',
-'福著名' => '福著名',
-'福著書' => '福著書',
-'福著稱' => '福著稱',
-'福著者' => '福著者',
-'福著述' => '福著述',
-'福著錄' => '福著錄',
-'秀发布' => '秀發佈',
-'私下里' => '私下裏',
-'隐私' => '私隱',
-'隱私' => '私隱',
-'葛摩' => '科摩羅',
-'程序员' => '程式設計師',
-'捷豹' => '積架',
-'稳占' => '穩佔',
-'穩占' => '穩佔',
-'穫著' => '穫着',
-'空中布雷' => '空中佈雷',
-'空投布雷' => '空投佈雷',
-'空气质量' => '空氣質素',
-'空氣品質' => '空氣質素',
-'空著' => '空着',
-'空著作' => '空著作',
-'空著名' => '空著名',
-'空著書' => '空著書',
-'空著稱' => '空著稱',
-'空著者' => '空著者',
-'空著述' => '空著述',
-'空著錄' => '空著錄',
-'太空梭' => '穿梭機',
-'航天飞机' => '穿梭機',
-'穿著' => '穿着',
-'穿著作' => '穿著作',
-'穿著名' => '穿著名',
-'穿著書' => '穿著書',
-'穿著稱' => '穿著稱',
-'穿著者' => '穿著者',
-'穿著述' => '穿著述',
-'穿著錄' => '穿著錄',
-'窝里' => '窩裏',
-'窝里斗' => '窩裏鬥',
-'立著' => '立着',
-'立著《' => '立著《',
-'立著作' => '立著作',
-'立著名' => '立著名',
-'立著有' => '立著有',
-'立著称' => '立著稱',
-'立著稱' => '立著稱',
-'立著者' => '立著者',
-'立著(' => '立著(',
-'站著' => '站着',
-'站著作' => '站著作',
-'站著名' => '站著名',
-'站著書' => '站著書',
-'站著稱' => '站著稱',
-'站著者' => '站著者',
-'站著述' => '站著述',
-'站著錄' => '站著錄',
-'竪著' => '竪着',
-'笑著' => '笑着',
-'笑著作' => '笑著作',
-'笑著名' => '笑著名',
-'笑著書' => '笑著書',
-'笑著稱' => '笑著稱',
-'笑著者' => '笑著者',
-'笑著述' => '笑著述',
-'笑著錄' => '笑著錄',
-'笑里藏刀' => '笑裏藏刀',
-'提比里西' => '第比利斯',
-'管著' => '管着',
-'管著作' => '管著作',
-'管著名' => '管著名',
-'管著書' => '管著書',
-'管著稱' => '管著稱',
-'管著者' => '管著者',
-'管著述' => '管著述',
-'管著錄' => '管著錄',
-'箱里' => '箱裏',
-'节目里' => '節目裏',
-'簽著' => '簽着',
-'篮板球' => '籃板球',
-'籃板球' => '籃板球',
-'迈克尔' => '米高',
-'麦克尔' => '米高',
-'迈克尔·欧文' => '米高·奧雲',
-'糊里糊涂' => '糊裏糊塗',
-'系列里' => '系列裏',
-'係數' => '系數',
-'系里' => '系裏',
-'約占' => '約佔',
-'约占' => '約佔',
-'紐賓士域' => '紐賓士域',
-'索尔仁尼琴' => '索贊尼辛',
-'索忍尼辛' => '索贊尼辛',
-'索馬利亞' => '索馬里',
-'索馬利里' => '索馬里',
-'紮著' => '紮着',
-'紮著作' => '紮著作',
-'紮著名' => '紮著名',
-'紮著書' => '紮著書',
-'紮著稱' => '紮著稱',
-'紮著者' => '紮著者',
-'紮著述' => '紮著述',
-'紮著錄' => '紮著錄',
-'组里' => '組裏',
-'吉他' => '結他',
-'結彩' => '結綵',
-'结彩' => '結綵',
-'綁著' => '綁着',
-'綁著作' => '綁著作',
-'綁著名' => '綁著名',
-'綁著書' => '綁著書',
-'綁著稱' => '綁著稱',
-'綁著者' => '綁著者',
-'綁著述' => '綁著述',
-'綁著錄' => '綁著錄',
-'网站里' => '網站裏',
-'網路' => '網絡',
-'网里' => '網裏',
-'彩带' => '綵帶',
-'彩帶' => '綵帶',
-'彩排' => '綵排',
-'彩楼' => '綵樓',
-'彩樓' => '綵樓',
-'彩牌楼' => '綵牌樓',
-'彩牌樓' => '綵牌樓',
-'彩球' => '綵球',
-'彩綢' => '綵綢',
-'彩绸' => '綵綢',
-'彩线' => '綵綫',
-'彩線' => '綵線',
-'彩船' => '綵船',
-'彩衣' => '綵衣',
-'线图里' => '線圖裏',
-'緝凶' => '緝兇',
-'县里' => '縣裏',
-'缝里' => '縫裏',
-'縱著' => '縱着',
-'总数里' => '總數裏',
-'尖峰時段' => '繁忙時段',
-'尖峰時間' => '繁忙時間',
-'正體中文' => '繁體中文',
-'繃著' => '繃着',
-'繞著' => '繞着',
-'繞著作' => '繞著作',
-'繞著名' => '繞著名',
-'繞著書' => '繞著書',
-'繞著稱' => '繞著稱',
-'繞著者' => '繞著者',
-'繞著述' => '繞著述',
-'繞著錄' => '繞著錄',
-'系着' => '繫着',
-'繫著' => '繫着',
-'纏著' => '纏着',
-'纏著作' => '纏著作',
-'纏著名' => '纏著名',
-'纏著書' => '纏著書',
-'纏著稱' => '纏著稱',
-'纏著者' => '纏著者',
-'纏著述' => '纏著述',
-'纏著錄' => '纏著錄',
-'罩著' => '罩着',
-'罩著作' => '罩著作',
-'罩著名' => '罩著名',
-'罩著書' => '罩著書',
-'罩著稱' => '罩著稱',
-'罩著者' => '罩著者',
-'罩著述' => '罩著述',
-'罩著錄' => '罩著錄',
-'罵著' => '罵着',
-'罵著作' => '罵著作',
-'罵著名' => '罵著名',
-'罵著書' => '罵著書',
-'罵著稱' => '罵著稱',
-'罵著者' => '罵著者',
-'罵著述' => '罵著述',
-'罵著錄' => '罵著錄',
-'卢浮宫' => '羅浮宮',
-'美占' => '美佔',
-'美著' => '美着',
-'美著作' => '美著作',
-'美著名' => '美著名',
-'美著書' => '美著書',
-'美著称' => '美著稱',
-'美著稱' => '美著稱',
-'美著者' => '美著者',
-'美著述' => '美著述',
-'美著錄' => '美著錄',
-'耀著' => '耀着',
-'耀著作' => '耀著作',
-'耀著名' => '耀著名',
-'耀著書' => '耀著書',
-'耀著稱' => '耀著稱',
-'耀著者' => '耀著者',
-'耀著述' => '耀著述',
-'耀著錄' => '耀著錄',
-'寮國' => '老撾',
-'寮人民民主共和國' => '老撾人民民主共和國',
-'寮語' => '老撾語',
-'考著' => '考着',
-'考著作' => '考著作',
-'考著名' => '考著名',
-'考著書' => '考著書',
-'考著稱' => '考著稱',
-'考著者' => '考著者',
-'考著述' => '考著述',
-'考著錄' => '考著錄',
-'圣基茨和尼维斯' => '聖吉斯納域斯',
-'聖克里斯多福及尼維斯' => '聖吉斯納域斯',
-'聖文森及格瑞那丁' => '聖文森特和格林納丁斯',
-'聖露西亞' => '聖盧西亞',
-'聖馬利諾' => '聖馬力諾',
-'聽不著' => '聽不着',
-'聽得著' => '聽得着',
-'聽著' => '聽着',
-'聽著作' => '聽著作',
-'聽著名' => '聽著名',
-'聽著書' => '聽著書',
-'聽著稱' => '聽著稱',
-'聽著者' => '聽著者',
-'聽著述' => '聽著述',
-'聽著錄' => '聽著錄',
-'肚里' => '肚裏',
-'肯尼亚' => '肯雅',
-'胃里' => '胃裏',
-'背地里' => '背地裏',
-'背著' => '背着',
-'背著作' => '背著作',
-'背著名' => '背著名',
-'背著書' => '背著書',
-'背著稱' => '背著稱',
-'背著者' => '背著者',
-'背著述' => '背著述',
-'背著錄' => '背著錄',
-'胡里胡涂' => '胡裏胡塗',
-'腰里' => '腰裏',
-'膠著' => '膠着',
-'膠著作' => '膠著作',
-'膠著名' => '膠著名',
-'膠著書' => '膠著書',
-'膠著稱' => '膠著稱',
-'膠著者' => '膠著者',
-'膠著述' => '膠著述',
-'膠著錄' => '膠著錄',
-'塑料袋' => '膠袋',
-'臨著' => '臨着',
-'臨著作' => '臨著作',
-'臨著名' => '臨著名',
-'臨著書' => '臨著書',
-'臨著稱' => '臨著稱',
-'臨著者' => '臨著者',
-'臨著述' => '臨著述',
-'臨著錄' => '臨著錄',
-'自行火炮' => '自走炮',
-'與著' => '與着',
-'與著作' => '與著作',
-'與著名' => '與著名',
-'與著書' => '與著書',
-'與著稱' => '與著稱',
-'與著者' => '與著者',
-'與著述' => '與著述',
-'與著錄' => '與著錄',
-'舒马赫' => '舒麥加',
-'愛荷華' => '艾奧瓦',
-'爱荷华' => '艾奧瓦',
-'埃菲尔' => '艾菲爾',
-'帕塔亚' => '芭達亞',
-'花盆里' => '花盆裏',
-'苑里' => '苑裏',
-'苑裡' => '苑裡',
-'苦著' => '苦着',
-'苦著作' => '苦著作',
-'苦著名' => '苦著名',
-'苦著書' => '苦著書',
-'苦著稱' => '苦著稱',
-'苦著者' => '苦著者',
-'苦著述' => '苦著述',
-'苦著錄' => '苦著錄',
-'苦里' => '苦裏',
-'英占' => '英佔',
-'共和联邦' => '英聯邦',
-'大英國協' => '英聯邦',
-'草丛里' => '草叢裏',
-'霍爾斯坦' => '荷爾斯泰因',
-'好莱坞' => '荷里活',
-'好萊塢' => '荷里活',
-'庄里' => '莊裏',
-'莫三比克' => '莫桑比克',
-'巴伦西亚' => '華倫西亞',
-'巴倫西亞' => '華倫西亞',
-'瓦倫西亞' => '華倫西亞',
-'瓦文萨' => '華里沙',
-'華勒沙' => '華里沙',
-'菲利普亲王' => '菲臘親王',
-'菲利普親王' => '菲臘親王',
-'賴索托' => '萊索托',
-'马恩岛' => '萌島',
-'馬自達' => '萬事得',
-'马自达' => '萬事得',
-'万历朝鲜战争' => '萬曆朝鮮戰爭',
-'落著' => '落着',
-'落著作' => '落著作',
-'落著名' => '落著名',
-'落著書' => '落著書',
-'落著稱' => '落著稱',
-'落著者' => '落著者',
-'落著述' => '落著述',
-'落著錄' => '落著錄',
-'葉爾欽' => '葉利欽',
-'葡占' => '葡佔',
-'葫芦里卖甚么药' => '葫蘆裏賣甚麼藥',
-'滿地可' => '蒙特利爾',
-'蒙特婁' => '蒙特利爾',
-'蒙著' => '蒙着',
-'蒙著作' => '蒙著作',
-'蒙著名' => '蒙著名',
-'蒙著書' => '蒙著書',
-'蒙著稱' => '蒙著稱',
-'蒙著者' => '蒙著者',
-'蒙著述' => '蒙著述',
-'蒙著錄' => '蒙著錄',
-'蓋著' => '蓋着',
-'蓋著作' => '蓋著作',
-'蓋著名' => '蓋著名',
-'蓋著稱' => '蓋著稱',
-'肖斯塔科维奇' => '蕭士達高維契',
-'蕭士塔高維奇' => '蕭士達高維契',
-'肖邦' => '蕭邦',
-'薛丁格' => '薛定諤',
-'塞拉耶佛' => '薩拉熱窩',
-'萨达姆' => '薩達姆',
-'藉著' => '藉着',
-'藏著' => '藏着',
-'藏著作' => '藏著作',
-'藏著名' => '藏著名',
-'藏著書' => '藏著書',
-'藏著稱' => '藏著稱',
-'藏著者' => '藏著者',
-'藏著述' => '藏著述',
-'藏著錄' => '藏著錄',
-'蘊涵著' => '蘊涵着',
-'蘸著' => '蘸着',
-'蘸著作' => '蘸著作',
-'蘸著名' => '蘸著名',
-'蘸著書' => '蘸著書',
-'蘸著稱' => '蘸著稱',
-'蘸著者' => '蘸著者',
-'蘸著述' => '蘸著述',
-'蘸著錄' => '蘸著錄',
-'蜜里调油' => '蜜裏調油',
-'荧屏' => '螢屏',
-'屏幕' => '螢幕',
-'人行道' => '行人路',
-'行家里手' => '行家裏手',
-'首席执行官' => '行政總裁',
-'行著' => '行着',
-'行著作' => '行著作',
-'行著名' => '行著名',
-'行著書' => '行著書',
-'行著稱' => '行著稱',
-'行著者' => '行著者',
-'行著述' => '行著述',
-'行著錄' => '行著錄',
-'衝著' => '衝着',
-'衣著' => '衣着',
-'衣著作' => '衣著作',
-'衣著名' => '衣著名',
-'衣著書' => '衣著書',
-'衣著稱' => '衣著稱',
-'衣著者' => '衣著者',
-'衣著述' => '衣著述',
-'衣著錄' => '衣著錄',
-'表里' => '表裏',
-'表里一致' => '表裏一致',
-'表里不一' => '表裏不一',
-'表里如一' => '表裏如一',
-'表里山河' => '表裏山河',
-'袋里' => '袋裏',
-'袖里' => '袖裏',
-'被里' => '被裏',
-'裡' => '裏',
-'里勾外连' => '裏勾外連',
-'里屋' => '裏屋',
-'里层' => '裏層',
-'里带' => '裏帶',
-'里弦' => '裏弦',
-'里应外合' => '裏應外合',
-'里海' => '裏海',
-'里脊' => '裏脊',
-'里衣' => '裏衣',
-'里通外国' => '裏通外國',
-'里通外敌' => '裏通外敵',
-'里边' => '裏邊',
-'里间' => '裏間',
-'里面' => '裏面',
-'里头' => '裏頭',
-'裝著' => '裝着',
-'裝著作' => '裝著作',
-'裝著名' => '裝著名',
-'裝著書' => '裝著書',
-'裝著稱' => '裝著稱',
-'裝著者' => '裝著者',
-'裝著述' => '裝著述',
-'裝著錄' => '裝著錄',
-'裡冷' => '裡冷',
-'裹著' => '裹着',
-'裹著作' => '裹著作',
-'裹著名' => '裹著名',
-'裹著書' => '裹著書',
-'裹著稱' => '裹著稱',
-'裹著者' => '裹著者',
-'裹著述' => '裹著述',
-'裹著錄' => '裹著錄',
-'衬里' => '襯裏',
-'西占' => '西佔',
-'塞維亞' => '西維爾',
-'塞维利亚' => '西維爾',
-'要占' => '要佔',
-'要占卜' => '要占卜',
-'覆著' => '覆着',
-'覆蓋著' => '覆蓋着',
-'見著' => '見着',
-'見著作' => '見著作',
-'見著名' => '見著名',
-'見著書' => '見著書',
-'見著稱' => '見著稱',
-'見著者' => '見著者',
-'見著述' => '見著述',
-'見著錄' => '見著錄',
-'視著' => '視着',
-'視著名' => '視著名',
-'角落里' => '角落裏',
-'分辨率' => '解像度',
-'解析度' => '解像度',
-'言里' => '言裏',
-'計畫' => '計劃',
-'記著' => '記着',
-'記著作' => '記著作',
-'記著名' => '記著名',
-'記著書' => '記著書',
-'記著稱' => '記著稱',
-'記著者' => '記著者',
-'記著述' => '記著述',
-'記著錄' => '記著錄',
-'試著' => '試着',
-'試著作' => '試著作',
-'試著名' => '試著名',
-'試著書' => '試著書',
-'試著稱' => '試著稱',
-'試著者' => '試著者',
-'試著述' => '試著述',
-'試著錄' => '試著錄',
-'话里有话' => '話裏有話',
-'语法里' => '語法裏',
-'語著' => '語着',
-'語著作' => '語著作',
-'語著名' => '語著名',
-'語著書' => '語著書',
-'語著稱' => '語著稱',
-'語著者' => '語著者',
-'語著述' => '語著述',
-'語著錄' => '語著錄',
-'语里' => '語裏',
-'說著' => '說着',
-'說著作' => '說著作',
-'說著稱' => '說著稱',
-'說著者' => '說著者',
-'說著述' => '說著述',
-'數據機' => '調制解調器',
-'诺曼底' => '諾曼第',
-'警戒著' => '警戒着',
-'變著' => '變着',
-'變著作' => '變著作',
-'變著名' => '變著名',
-'變著書' => '變著書',
-'變著稱' => '變著稱',
-'變著者' => '變著者',
-'變著述' => '變著述',
-'變著錄' => '變著錄',
-'豎著' => '豎着',
-'豎著作' => '豎著作',
-'豎著名' => '豎著名',
-'豎著書' => '豎著書',
-'豎著稱' => '豎著稱',
-'豎著者' => '豎著者',
-'豎著述' => '豎著述',
-'豎著錄' => '豎著錄',
-'象徵著名' => '象徵著名',
-'象徵著' => '象著着',
-'貝爾格勒' => '貝爾格萊德',
-'布莱尔' => '貝理雅',
-'負著' => '負着',
-'貢寮' => '貢寮',
-'買凶' => '買兇',
-'費占' => '費佔',
-'费占' => '費佔',
-'信息时代' => '資訊時代',
-'赌台' => '賭枱',
-'尚比亞' => '贊比亞',
-'西臺人' => '赫梯人',
-'西臺國' => '赫梯國',
-'西臺帝' => '赫梯帝',
-'西臺文' => '赫梯文',
-'西臺族' => '赫梯族',
-'西臺王' => '赫梯王',
-'西臺語' => '赫梯語',
-'赫魯雪夫' => '赫魯曉夫',
-'走為上著' => '走為上着',
-'走著' => '走着',
-'走著作' => '走著作',
-'走著名' => '走著名',
-'走著書' => '走著書',
-'走著稱' => '走著稱',
-'走著者' => '走著者',
-'走著述' => '走著述',
-'走著錄' => '走著錄',
-'趕著' => '趕着',
-'趕著作' => '趕著作',
-'趕著名' => '趕著名',
-'趕著書' => '趕著書',
-'趕著稱' => '趕著稱',
-'趕著者' => '趕著者',
-'趕著述' => '趕著述',
-'趕著錄' => '趕著錄',
-'趴著' => '趴着',
-'趴著作' => '趴著作',
-'趴著名' => '趴著名',
-'趴著書' => '趴著書',
-'趴著稱' => '趴著稱',
-'趴著者' => '趴著者',
-'趴著述' => '趴著述',
-'趴著錄' => '趴著錄',
-'跑著' => '跑着',
-'跑著作' => '跑著作',
-'跑著名' => '跑著名',
-'跑著書' => '跑著書',
-'跑著稱' => '跑著稱',
-'跑著者' => '跑著者',
-'跑著述' => '跑著述',
-'跑著錄' => '跑著錄',
-'跟著' => '跟着',
-'跟著作' => '跟著作',
-'跟著名' => '跟著名',
-'跟著書' => '跟著書',
-'跟著稱' => '跟著稱',
-'跟著者' => '跟著者',
-'跟著述' => '跟著述',
-'跟著錄' => '跟著錄',
-'跪著' => '跪着',
-'跪著作' => '跪著作',
-'跪著名' => '跪著名',
-'跪著書' => '跪著書',
-'跪著稱' => '跪著稱',
-'跪著者' => '跪著者',
-'跪著述' => '跪著述',
-'跪著錄' => '跪著錄',
-'路图里' => '路圖裏',
-'跳著' => '跳着',
-'跳著作' => '跳著作',
-'跳著名' => '跳著名',
-'跳著書' => '跳著書',
-'跳著稱' => '跳著稱',
-'跳著者' => '跳著者',
-'跳著述' => '跳著述',
-'跳著錄' => '跳著錄',
-'踏著' => '踏着',
-'踏著作' => '踏著作',
-'踏著名' => '踏著名',
-'踏著稱' => '踏著稱',
-'踏著者' => '踏著者',
-'踏著述' => '踏著述',
-'踏著錄' => '踏著錄',
-'踩著' => '踩着',
-'踩著作' => '踩著作',
-'踩著名' => '踩著名',
-'踩著書' => '踩著書',
-'踩著稱' => '踩著稱',
-'踩著者' => '踩著者',
-'踩著述' => '踩著述',
-'踩著錄' => '踩著錄',
-'躍著' => '躍着',
-'躍著作' => '躍著作',
-'躍著名' => '躍著名',
-'躍著書' => '躍著書',
-'躍著稱' => '躍著稱',
-'躍著者' => '躍著者',
-'躍著述' => '躍著述',
-'躍著錄' => '躍著錄',
-'身著' => '身着',
-'身著作' => '身著作',
-'身著名' => '身著名',
-'身著書' => '身著書',
-'身著稱' => '身著稱',
-'身著者' => '身著者',
-'身著述' => '身著述',
-'身著錄' => '身著錄',
-'躺著' => '躺着',
-'躺著作' => '躺著作',
-'躺著名' => '躺著名',
-'躺著書' => '躺著書',
-'躺著稱' => '躺著稱',
-'躺著者' => '躺著者',
-'躺著述' => '躺著述',
-'躺著錄' => '躺著錄',
-'车库里' => '車庫裏',
-'车站里' => '車站裏',
-'车里' => '車裏',
-'车里雅宾斯克' => '車里雅賓斯克',
-'軟體' => '軟件',
-'軟體動物' => '軟體動物',
-'軟體家具' => '軟體家具',
-'載著' => '載着',
-'載著作' => '載著作',
-'載著名' => '載著名',
-'載著書' => '載著書',
-'載著稱' => '載著稱',
-'載著者' => '載著者',
-'載著述' => '載著述',
-'載著錄' => '載著錄',
-'轉著' => '轉着',
-'轉著作' => '轉著作',
-'轉著名' => '轉著名',
-'轉著書' => '轉著書',
-'轉著稱' => '轉著稱',
-'轉著者' => '轉著者',
-'轉著述' => '轉著述',
-'轉著錄' => '轉著錄',
-'办公台' => '辦公枱',
-'辦著' => '辦着',
-'辦著作' => '辦著作',
-'辦著名' => '辦著名',
-'辦著書' => '辦著書',
-'辦著稱' => '辦著稱',
-'辦著者' => '辦著者',
-'辦著述' => '辦著述',
-'辦著錄' => '辦著錄',
-'迫著' => '迫着',
-'追著' => '追着',
-'追著作' => '追著作',
-'追著名' => '追著名',
-'追著書' => '追著書',
-'追著稱' => '追著稱',
-'追著者' => '追著者',
-'追著述' => '追著述',
-'追著錄' => '追著錄',
-'逆著' => '逆着',
-'逆著作' => '逆著作',
-'逆著名' => '逆著名',
-'逆著書' => '逆著書',
-'逆著稱' => '逆著稱',
-'逆著者' => '逆著者',
-'逆著述' => '逆著述',
-'逆著錄' => '逆著錄',
-'径入' => '逕入',
-'径到' => '逕到',
-'径取' => '逕取',
-'径启' => '逕啟',
-'径寄' => '逕寄',
-'径庭' => '逕庭',
-'径往' => '逕往',
-'径自' => '逕自',
-'径行' => '逕行',
-'径迎' => '逕迎',
-'这里' => '這裏',
-'连占' => '連佔',
-'連占' => '連佔',
-'連著' => '連着',
-'链接' => '連結',
-'連著作' => '連著作',
-'連著名' => '連著名',
-'連著書' => '連著書',
-'連著稱' => '連著稱',
-'連著者' => '連著者',
-'連著述' => '連著述',
-'連著錄' => '連著錄',
-'进占' => '進佔',
-'進占' => '進佔',
-'演化論' => '進化論',
-'逼著' => '逼着',
-'逼著作' => '逼著作',
-'逼著名' => '逼著名',
-'逼著書' => '逼著書',
-'逼著稱' => '逼著稱',
-'逼著者' => '逼著者',
-'逼著述' => '逼著述',
-'逼著錄' => '逼著錄',
-'遇著' => '遇着',
-'遇著作' => '遇著作',
-'遇著名' => '遇著名',
-'遇著書' => '遇著書',
-'遇著称' => '遇著稱',
-'遇著稱' => '遇著稱',
-'遇著者' => '遇著者',
-'遇著述' => '遇著述',
-'遇著錄' => '遇著錄',
-'游戏里' => '遊戲裏',
-'遍布' => '遍佈',
-'遍佈著' => '遍佈着',
-'遍布著' => '遍佈着',
-'過著' => '過着',
-'达·芬奇' => '達·文西',
-'达芬奇' => '達文西',
-'達著' => '達着',
-'達著作' => '達著作',
-'達著名' => '達著名',
-'達著書' => '達著書',
-'達著稱' => '達著稱',
-'達著者' => '達著者',
-'達著述' => '達著述',
-'達著錄' => '達著錄',
-'还占' => '還佔',
-'還占' => '還佔',
-'邋里邋遢' => '邋裏邋遢',
-'那里' => '那裏',
-'都市里' => '都市裏',
-'配合著' => '配合着',
-'配合著名' => '配合著名',
-'配图里' => '配圖裏',
-'配著' => '配着',
-'配著作' => '配著作',
-'配著名' => '配著名',
-'配著書' => '配著書',
-'配著稱' => '配著稱',
-'配著者' => '配著者',
-'配著述' => '配著述',
-'配著錄' => '配著錄',
-'醯' => '酰',
-'醜著' => '醜着',
-'醜著作' => '醜著作',
-'醜著名' => '醜著名',
-'醜著書' => '醜著書',
-'醜著稱' => '醜著稱',
-'醜著者' => '醜著者',
-'醜著述' => '醜著述',
-'醜著錄' => '醜著錄',
-'醯壶' => '醯壺',
-'醯壺' => '醯壺',
-'醯醋' => '醯醋',
-'醯醢' => '醯醢',
-'醯酱' => '醯醬',
-'醯醬' => '醯醬',
-'醯雞' => '醯雞',
-'醯鸡' => '醯雞',
-'釀著' => '釀着',
-'釀著作' => '釀著作',
-'釀著名' => '釀著名',
-'釀著書' => '釀著書',
-'釀著稱' => '釀著稱',
-'釀著者' => '釀著者',
-'釀著述' => '釀著述',
-'釀著錄' => '釀著錄',
-'金装玉里' => '金裝玉裏',
-'鉤' => '鈎',
-'鋪著' => '鋪着',
-'鋪著作' => '鋪著作',
-'鋪著名' => '鋪著名',
-'鋪著書' => '鋪著書',
-'鋪著稱' => '鋪著稱',
-'鋪著者' => '鋪著者',
-'鋪著述' => '鋪著述',
-'鋪著錄' => '鋪著錄',
-'镜图里' => '鏡圖裏',
-'钟在寺里' => '鐘在寺裏',
-'狄托' => '鐵托',
-'泰坦尼克号' => '鐵達尼號',
-'门里' => '門裏',
-'閉著' => '閉着',
-'閉著作' => '閉著作',
-'閉著名' => '閉著名',
-'閉著書' => '閉著書',
-'閉著稱' => '閉著稱',
-'閉著者' => '閉著者',
-'閉著述' => '閉著述',
-'閉著錄' => '閉著錄',
-'克卜勒' => '開普勒',
-'開著' => '開着',
-'開著作' => '開著作',
-'開著名' => '開著名',
-'開著書' => '開著書',
-'開著稱' => '開著稱',
-'開著者' => '開著者',
-'開著述' => '開著述',
-'開著錄' => '開著錄',
-'开诚布公' => '開誠佈公',
-'開誠布公' => '開誠佈公',
-'閑著' => '閑着',
-'閑著作' => '閑著作',
-'閑著名' => '閑著名',
-'閑著書' => '閑著書',
-'閑著稱' => '閑著稱',
-'閑著者' => '閑著者',
-'閑著述' => '閑著述',
-'閑著錄' => '閑著錄',
-'閒著' => '閒着',
-'间里' => '間裏',
-'關係著' => '關係着',
-'關著' => '關着',
-'關著作' => '關著作',
-'關著名' => '關著名',
-'關著書' => '關著書',
-'關著稱' => '關著稱',
-'關著者' => '關著者',
-'關著述' => '關著述',
-'關著錄' => '關著錄',
-'聞不著' => '闻不着',
-'聞得著' => '闻得着',
-'聞著' => '闻着',
-'亞塞拜然' => '阿塞拜疆',
-'阿布達比' => '阿布扎比',
-'阿拉伯聯合大公國' => '阿拉伯聯合酋長國',
-'亞斯文' => '阿斯旺',
-'阿联酋' => '阿聯酋',
-'艾里爾·夏隆' => '阿里埃勒·沙龍',
-'附著' => '附着',
-'附著作' => '附著作',
-'附著名' => '附著名',
-'附著書' => '附著書',
-'附著稱' => '附著稱',
-'附著者' => '附著者',
-'附著述' => '附著述',
-'附著錄' => '附著錄',
-'陋著' => '陋着',
-'陋著作' => '陋著作',
-'陋著名' => '陋著名',
-'陋著書' => '陋著書',
-'陋著稱' => '陋著稱',
-'陋著者' => '陋著者',
-'陋著述' => '陋著述',
-'陋著錄' => '陋著錄',
-'院里' => '院裏',
-'陪著' => '陪着',
-'陪著作' => '陪著作',
-'陪著名' => '陪著名',
-'陪著書' => '陪著書',
-'陪著稱' => '陪著稱',
-'陪著者' => '陪著者',
-'陪著述' => '陪著述',
-'陪著錄' => '陪著錄',
-'阴沟里翻船' => '陰溝裏翻船',
-'隔著' => '隔着',
-'隔著作' => '隔著作',
-'隔著名' => '隔著名',
-'隔著書' => '隔著書',
-'隔著稱' => '隔著稱',
-'隔著者' => '隔著者',
-'隔著述' => '隔著述',
-'隔著錄' => '隔著錄',
-'隨著' => '隨着',
-'隨著作' => '隨著作',
-'隨著名' => '隨著名',
-'隨著書' => '隨著書',
-'隨著稱' => '隨著稱',
-'隨著者' => '隨著者',
-'隨著述' => '隨著述',
-'隨著錄' => '隨著錄',
-'隐占' => '隱佔',
-'隱占' => '隱佔',
-'雅爾達' => '雅爾塔',
-'雅著' => '雅着',
-'雅穆索戈' => '雅穆蘇克雷',
-'雅著作' => '雅著作',
-'雅著名' => '雅著名',
-'雅著書' => '雅著書',
-'雅著称' => '雅著稱',
-'雅著稱' => '雅著稱',
-'雅著者' => '雅著者',
-'雅著述' => '雅著述',
-'雅著錄' => '雅著錄',
-'集数里' => '集數裏',
-'集里' => '集裏',
-'雜著' => '雜着',
-'雜著作' => '雜著作',
-'雜著名' => '雜著名',
-'雜著書' => '雜著書',
-'雜著稱' => '雜著稱',
-'雜著者' => '雜著者',
-'雜著述' => '雜著述',
-'雜著錄' => '雜著錄',
-'鸡蛋里挑骨头' => '雞蛋裏挑骨頭',
-'冰淇淋' => '雪糕',
-'冰激凌' => '雪糕',
-'雪里' => '雪裏',
-'云里雾里' => '雲裏霧裏',
-'莱特湾' => '雷伊泰灣',
-'萊特灣' => '雷伊泰灣',
-'电影里' => '電影裏',
-'晶体管' => '電晶體',
-'晶體管' => '電晶體',
-'电梯里' => '電梯裏',
-'电脑程序' => '電腦程式',
-'计算机程序' => '電腦程式',
-'电视里' => '電視裏',
-'霄裡' => '霄裡',
-'荷姆茲' => '霍爾木茲',
-'雾里' => '霧裏',
-'霸占' => '霸佔',
-'非占不可' => '非佔不可',
-'靠著' => '靠着',
-'靠著作' => '靠著作',
-'靠著名' => '靠著名',
-'靠著称' => '靠著稱',
-'靠著稱' => '靠著稱',
-'靠著者' => '靠著者',
-'靠著述' => '靠著述',
-'靠著录' => '靠著錄',
-'靠著錄' => '靠著錄',
-'面包著' => '面包着',
-'鞋里' => '鞋裏',
-'鞭辟入里' => '鞭辟入裏',
-'朝鲜战争' => '韓戰',
-'響著' => '響着',
-'響著作' => '響著作',
-'響著名' => '響著名',
-'響著書' => '響著書',
-'響著稱' => '響著稱',
-'響著者' => '響著者',
-'響著述' => '響著述',
-'響著錄' => '響著錄',
-'頂著' => '頂着',
-'頂著作' => '頂著作',
-'頂著名' => '頂著名',
-'頂著書' => '頂著書',
-'頂著稱' => '頂著稱',
-'頂著者' => '頂著者',
-'頂著述' => '頂著述',
-'頂著錄' => '頂著錄',
-'順著' => '順着',
-'順著作' => '順著作',
-'順著名' => '順著名',
-'順著書' => '順著書',
-'順著稱' => '順著稱',
-'順著者' => '順著者',
-'順著述' => '順著述',
-'順著錄' => '順著錄',
-'頒布' => '頒佈',
-'颁布' => '頒佈',
-'領著' => '領着',
-'領著作' => '領著作',
-'領著名' => '領著名',
-'領著書' => '領著書',
-'領著稱' => '領著稱',
-'領著者' => '領著者',
-'領著述' => '領著述',
-'領著錄' => '領著錄',
-'头里' => '頭裏',
-'风里' => '風裏',
-'颳著' => '颳着',
-'飃著' => '飃着',
-'飄著' => '飄着',
-'飄著作' => '飄著作',
-'飄著名' => '飄著名',
-'飄著書' => '飄著書',
-'飄著稱' => '飄著稱',
-'飄著者' => '飄著者',
-'飄著述' => '飄著述',
-'飄著錄' => '飄著錄',
-'餐台' => '餐枱',
-'馆里' => '館裏',
-'糊口' => '餬口',
-'馬里蘭' => '馬利蘭',
-'马里兰' => '馬利蘭',
-'马拉特·萨芬' => '馬拉特·沙芬',
-'馬斯垂克' => '馬斯特里赫特',
-'馬爾地夫' => '馬爾代夫',
-'馬利共和國' => '馬里共和國',
-'駕著' => '駕着',
-'駕著作' => '駕著作',
-'駕著名' => '駕著名',
-'駕著書' => '駕著書',
-'駕著稱' => '駕著稱',
-'駕著者' => '駕著者',
-'駕著述' => '駕著述',
-'駕著錄' => '駕著錄',
-'騎著' => '騎着',
-'騎著作' => '騎著作',
-'騎著名' => '騎著名',
-'騎著書' => '騎著書',
-'騎著稱' => '騎著稱',
-'騎著者' => '騎著者',
-'騎著述' => '騎著述',
-'騎著錄' => '騎著錄',
-'騙著' => '騙着',
-'騙著作' => '騙著作',
-'騙著名' => '騙著名',
-'騙著書' => '騙著書',
-'騙著稱' => '騙著稱',
-'騙著者' => '騙著者',
-'騙著述' => '騙著述',
-'騙著錄' => '騙著錄',
-'驶著' => '驶着',
-'体里' => '體裏',
-'高畫質' => '高清',
-'高著' => '高着',
-'高著作' => '高著作',
-'高著名' => '高著名',
-'高著書' => '高著書',
-'高著称' => '高著稱',
-'高著稱' => '高著稱',
-'高著者' => '高著者',
-'高著述' => '高著述',
-'高著錄' => '高著錄',
-'斗着' => '鬥着',
-'鬥著' => '鬥着',
-'鬥著作' => '鬥著作',
-'鬥著名' => '鬥著名',
-'鬥著書' => '鬥著書',
-'鬥著稱' => '鬥著稱',
-'鬥著者' => '鬥著者',
-'鬥著述' => '鬥著述',
-'鬥著錄' => '鬥著錄',
-'鬧著' => '鬧着',
-'牛軋' => '鳥結',
-'牛轧' => '鳥結',
-'鳩占' => '鳩佔',
-'鸠占' => '鳩佔',
-'麗著' => '麗着',
-'麗著作' => '麗著作',
-'麗著名' => '麗著名',
-'麗著書' => '麗著書',
-'麗著稱' => '麗著稱',
-'麗著者' => '麗著者',
-'麗著述' => '麗著述',
-'麗著錄' => '麗著錄',
-'麼著' => '麼着',
-'芮氏0' => '黎克特制0',
-'里氏0' => '黎克特制0',
-'芮氏1' => '黎克特制1',
-'里氏1' => '黎克特制1',
-'芮氏2' => '黎克特制2',
-'里氏2' => '黎克特制2',
-'芮氏3' => '黎克特制3',
-'里氏3' => '黎克特制3',
-'芮氏4' => '黎克特制4',
-'里氏4' => '黎克特制4',
-'芮氏5' => '黎克特制5',
-'里氏5' => '黎克特制5',
-'芮氏6' => '黎克特制6',
-'里氏6' => '黎克特制6',
-'芮氏7' => '黎克特制7',
-'里氏7' => '黎克特制7',
-'芮氏8' => '黎克特制8',
-'里氏8' => '黎克特制8',
-'芮氏9' => '黎克特制9',
-'里氏9' => '黎克特制9',
-'芮氏地震規模' => '黎克特制地震震級',
-'里氏地震规模' => '黎克特制地震震級',
-'芮氏規模' => '黎克特制震級',
-'里氏规模' => '黎克特制震級',
-'里氏震级' => '黎克特制震級',
-'黏著' => '黏着',
-'黏著作' => '黏著作',
-'黏著名' => '黏著名',
-'黏著書' => '黏著書',
-'黏著稱' => '黏著稱',
-'黏著者' => '黏著者',
-'黏著述' => '黏著述',
-'黏著錄' => '黏著錄',
-'蒙特內哥羅' => '黑山',
-'點著' => '點着',
-'點著作' => '點著作',
-'點著名' => '點著名',
-'點著書' => '點著書',
-'點著稱' => '點著稱',
-'點著者' => '點著者',
-'點著述' => '點著述',
-'點著錄' => '點著錄',
-'点里' => '點裏',
-'点里程' => '點里程',
-'鼓里' => '鼓裏',
-);
-
-$zh2CN = array(
-'16進位制' => '16进位制',
-'16進位' => '16进制',
-'IP位址' => 'IP地址',
-'一份子' => '一分子',
-'全球資訊網' => '万维网',
-'三十六著' => '三十六着',
-'三極體' => '三极管',
-'下著' => '下着',
-'下著作' => '下著作',
-'下著名' => '下著名',
-'下著录' => '下著录',
-'下著錄' => '下著录',
-'下著有' => '下著有',
-'下著称' => '下著称',
-'下著稱' => '下著称',
-'下著者' => '下著者',
-'下著述' => '下著述',
-'不著' => '不着',
-'不著書' => '不著书',
-'不著名' => '不著名',
-'不著錄' => '不著录',
-'不著稱' => '不著称',
-'不著述' => '不著述',
-'與著' => '与着',
-'與著書' => '与著书',
-'與著作' => '与著作',
-'與著名' => '与著名',
-'與著錄' => '与著录',
-'與著稱' => '与著称',
-'與著者' => '与著者',
-'與著述' => '与著述',
-'醜著' => '丑着',
-'醜著書' => '丑著书',
-'醜著作' => '丑著作',
-'醜著名' => '丑著名',
-'醜著錄' => '丑著录',
-'醜著稱' => '丑著称',
-'醜著者' => '丑著者',
-'醜著述' => '丑著述',
-'邱吉爾' => '丘吉尔',
-'C型肝炎' => '丙型肝炎',
-'C肝' => '丙肝',
-'東協會' => '东协会',
-'東協助' => '东协助',
-'東協議' => '东协议',
-'東南亞國家協會' => '东南亚国家联盟',
-'亚细安' => '东盟',
-'東協' => '东盟',
-'仲介' => '中介',
-'臨著' => '临着',
-'臨著書' => '临著书',
-'臨著作' => '临著作',
-'臨著名' => '临著名',
-'臨著錄' => '临著录',
-'臨著稱' => '临著称',
-'臨著者' => '临著者',
-'臨著述' => '临著述',
-'為著' => '为着',
-'為著《' => '为著《',
-'為著作' => '为著作',
-'為著名' => '为著名',
-'為著錄' => '为著录',
-'為著稱' => '为著称',
-'為著者' => '为著者',
-'為著述' => '为著述',
-'主機板' => '主板',
-'麗著' => '丽着',
-'麗著書' => '丽著书',
-'麗著作' => '丽著作',
-'麗著名' => '丽著名',
-'麗著錄' => '丽著录',
-'麗著稱' => '丽著称',
-'麗著者' => '丽著者',
-'麗著述' => '丽著述',
-'麼著' => '么着',
-'樂著' => '乐着',
-'樂著書' => '乐著书',
-'樂著作' => '乐著作',
-'樂著名' => '乐著名',
-'樂著錄' => '乐著录',
-'樂著稱' => '乐著称',
-'樂著者' => '乐著者',
-'樂著述' => '乐著述',
-'賈伯斯' => '乔布斯',
-'喬治·歐威爾' => '乔治·奥威尔',
-'乘著' => '乘着',
-'乘著書' => '乘著书',
-'乘著作' => '乘著作',
-'乘著名' => '乘著名',
-'乘著錄' => '乘著录',
-'乘著称' => '乘著称',
-'乘著稱' => '乘著称',
-'乘著者' => '乘著者',
-'乘著述' => '乘著述',
-'B型肝炎' => '乙型肝炎',
-'B肝' => '乙肝',
-'吉力馬札羅' => '乞力马扎罗',
-'葉門' => '也门',
-'買帳' => '买账',
-'了結他' => '了结他',
-'爭著' => '争着',
-'爭著書' => '争著书',
-'爭著作' => '争著作',
-'爭著名' => '争著名',
-'爭著錄' => '争著录',
-'爭著稱' => '争著称',
-'爭著者' => '争著者',
-'爭著述' => '争著述',
-'二極體' => '二极管',
-'二進位制' => '二进位制',
-'二進位' => '二进制',
-'網際網絡' => '互联网',
-'網際網路' => '互联网',
-'亞歷山卓' => '亚历山大',
-'雅穆索戈' => '亚穆苏克罗',
-'交帳' => '交账',
-'亮著' => '亮着',
-'亮著書' => '亮著书',
-'亮著作' => '亮著作',
-'亮著名' => '亮著名',
-'亮著錄' => '亮著录',
-'亮著称' => '亮著称',
-'亮著稱' => '亮著称',
-'亮著者' => '亮著者',
-'亮著述' => '亮著述',
-'人工智慧' => '人工智能',
-'行人路' => '人行道',
-'甚麼' => '什么',
-'甚麽' => '什么',
-'仗著' => '仗着',
-'仗著書' => '仗著书',
-'仗著作' => '仗著作',
-'仗著名' => '仗著名',
-'仗著錄' => '仗著录',
-'仗著稱' => '仗著称',
-'仗著者' => '仗著者',
-'仗著述' => '仗著述',
-'付帳' => '付账',
-'代表著' => '代表着',
-'代表著書' => '代表著书',
-'代表著作' => '代表著作',
-'代表著名' => '代表著名',
-'代表著錄' => '代表著录',
-'代表著稱' => '代表著称',
-'代表著者' => '代表著者',
-'代表著述' => '代表著述',
-'乙太網' => '以太网',
-'伊莉莎白' => '伊丽莎白',
-'伊利諾' => '伊利诺伊',
-'伊利諾伊' => '伊利诺伊',
-'伊斯蘭瑪巴德' => '伊斯兰堡',
-'伊斯坦堡' => '伊斯坦布尔',
-'伏著' => '伏着',
-'優先順序' => '优先级',
-'傳著' => '传着',
-'傳著書' => '传著书',
-'傳著作' => '传著作',
-'傳著名' => '传著名',
-'傳著錄' => '传著录',
-'傳著稱' => '传著称',
-'傳著者' => '传著者',
-'傳著述' => '传著述',
-'貝里斯' => '伯利兹',
-'伯明罕' => '伯明翰',
-'伴著' => '伴着',
-'伴著書' => '伴著书',
-'伴著作' => '伴著作',
-'伴著名' => '伴著名',
-'伴著錄' => '伴著录',
-'伴著稱' => '伴著称',
-'伴著者' => '伴著者',
-'伴著述' => '伴著述',
-'點陣圖' => '位图',
-'低著' => '低着',
-'低著書' => '低著书',
-'低著作' => '低著作',
-'低著名' => '低著名',
-'低著錄' => '低著录',
-'低著称' => '低著称',
-'低著稱' => '低著称',
-'低著者' => '低著者',
-'低著述' => '低著述',
-'住著' => '住着',
-'住著書' => '住著书',
-'住著作' => '住著作',
-'住著名' => '住著名',
-'住著錄' => '住著录',
-'住著称' => '住著称',
-'住著稱' => '住著称',
-'住著者' => '住著者',
-'住著述' => '住著述',
-'餘' => '余',
-'維德角' => '佛得角',
-'侏儸紀' => '侏罗纪',
-'側著' => '侧着',
-'側著書' => '侧著书',
-'側著作' => '侧著作',
-'側著名' => '侧著名',
-'側著錄' => '侧著录',
-'側著稱' => '侧著称',
-'側著者' => '侧著者',
-'側著述' => '侧著述',
-'可攜式' => '便携式',
-'攜帶型' => '便携式',
-'保護著' => '保护着',
-'保障著' => '保障着',
-'保障著書' => '保障著书',
-'保障著作' => '保障著作',
-'保障著名' => '保障著名',
-'保障著錄' => '保障著录',
-'保障著称' => '保障著称',
-'保障著稱' => '保障著称',
-'保障著者' => '保障著者',
-'保障著述' => '保障著述',
-'資訊時代' => '信息时代',
-'資訊理論' => '信息论',
-'信著' => '信着',
-'信著書' => '信著书',
-'信著作' => '信著作',
-'信著名' => '信著名',
-'信著錄' => '信著录',
-'信著称' => '信著称',
-'信著稱' => '信著称',
-'信著者' => '信著者',
-'信著述' => '信著述',
-'伏地挺身' => '俯卧撑',
-'掌上壓' => '俯卧撑',
-'倒帳' => '倒账',
-'候著' => '候着',
-'候著書' => '候著书',
-'候著作' => '候著作',
-'候著名' => '候著名',
-'候著錄' => '候著录',
-'候著稱' => '候著称',
-'候著者' => '候著者',
-'候著述' => '候著述',
-'借著' => '借着',
-'藉著' => '借着',
-'借著書' => '借著书',
-'借著作' => '借著作',
-'借著名' => '借著名',
-'借著錄' => '借著录',
-'借著稱' => '借著称',
-'借著者' => '借著者',
-'借著述' => '借著述',
-'假帳' => '假账',
-'做著' => '做着',
-'做著書' => '做著书',
-'做著作' => '做著作',
-'做著名' => '做著名',
-'做著錄' => '做著录',
-'做著稱' => '做著称',
-'做著者' => '做著者',
-'做著述' => '做著述',
-'偷著' => '偷着',
-'偷著書' => '偷著书',
-'偷著作' => '偷著作',
-'偷著名' => '偷著名',
-'偷著錄' => '偷著录',
-'偷著稱' => '偷著称',
-'偷著者' => '偷著者',
-'偷著述' => '偷著述',
-'傅利葉' => '傅里叶',
-'母音' => '元音',
-'光著' => '光着',
-'光著書' => '光著书',
-'光著作' => '光著作',
-'光著名' => '光著名',
-'光著錄' => '光著录',
-'光著称' => '光著称',
-'光著稱' => '光著称',
-'光著者' => '光著者',
-'光著述' => '光著述',
-'光碟機' => '光驱',
-'柯林頓' => '克林顿',
-'克羅埃西亞' => '克罗地亚',
-'轉殖' => '克隆',
-'複製人' => '克隆人',
-'入帳' => '入账',
-'八進位制' => '八进位制',
-'八進位' => '八进制',
-'西元1' => '公元1',
-'西元2' => '公元2',
-'西元3' => '公元3',
-'西元4' => '公元4',
-'西元5' => '公元5',
-'西元6' => '公元6',
-'西元7' => '公元7',
-'西元8' => '公元8',
-'西元9' => '公元9',
-'西元前' => '公元前',
-'公帳' => '公账',
-'六進位制' => '六进位制',
-'六進位' => '六进制',
-'關著' => '关着',
-'關係著' => '关系着',
-'關著書' => '关著书',
-'關著作' => '关著作',
-'關著名' => '关著名',
-'關著錄' => '关著录',
-'關著稱' => '关著称',
-'關著者' => '关著者',
-'關著述' => '关著述',
-'關帳' => '关账',
-'記憶體' => '内存',
-'甘比亞' => '冈比亚',
-'冒著' => '冒着',
-'冒著書' => '冒著书',
-'冒著作' => '冒著作',
-'冒著名' => '冒著名',
-'冒著錄' => '冒著录',
-'冒著稱' => '冒著称',
-'冒著者' => '冒著者',
-'冒著述' => '冒著述',
-'寫著' => '写着',
-'寫著書' => '写著书',
-'寫著作' => '写著作',
-'寫著名' => '写著名',
-'寫著錄' => '写著录',
-'寫著稱' => '写著称',
-'寫著者' => '写著者',
-'寫著述' => '写著述',
-'沖著' => '冲着',
-'衝著' => '冲着',
-'沖著。' => '冲著。',
-'沖著《' => '冲著《',
-'沖著(' => '冲著(',
-'沖著,' => '冲著,',
-'沖帳' => '冲账',
-'涼著' => '凉着',
-'涼著書' => '凉著书',
-'涼著作' => '凉著作',
-'涼著名' => '凉著名',
-'涼著錄' => '凉著录',
-'涼著稱' => '凉著称',
-'涼著者' => '凉著者',
-'涼著述' => '凉著述',
-'湊合著' => '凑合着',
-'畿內亞' => '几内亚',
-'幾內亞比索' => '几内亚比绍',
-'凱薩琳' => '凯瑟琳',
-'嘉芙蓮' => '凯瑟琳',
-'份內' => '分内',
-'份外' => '分外',
-'分佈著' => '分布着',
-'分布著' => '分布着',
-'解像度' => '分辨率',
-'解析度' => '分辨率',
-'份量' => '分量',
-'車諾比' => '切尔诺贝利',
-'劃著' => '划着',
-'李奧納多' => '列奥那多',
-'列支敦斯登' => '列支敦士登',
-'賴比瑞亞' => '利比里亚',
-'別著' => '别着',
-'刮著' => '刮着',
-'颳著' => '刮着',
-'到帳' => '到账',
-'制著' => '制着',
-'制著書' => '制著书',
-'制著作' => '制著作',
-'制著名' => '制著名',
-'制著錄' => '制著录',
-'制著稱' => '制著称',
-'制著者' => '制著者',
-'制著述' => '制著述',
-'煞車' => '刹车',
-'刻著' => '刻着',
-'刻著書' => '刻著书',
-'刻著作' => '刻著作',
-'刻著名' => '刻著名',
-'刻著錄' => '刻著录',
-'刻著称' => '刻著称',
-'刻著稱' => '刻著称',
-'刻著者' => '刻著者',
-'刻著述' => '刻著述',
-'前波莫瑞' => '前波美拉尼亚',
-'辦著' => '办着',
-'辦著書' => '办著书',
-'辦著作' => '办著作',
-'辦著名' => '办著名',
-'辦著錄' => '办著录',
-'辦著稱' => '办著称',
-'辦著者' => '办著者',
-'辦著述' => '办著述',
-'加薩走廊' => '加沙地带',
-'迦納' => '加纳',
-'加彭' => '加蓬',
-'動著' => '动着',
-'動著書' => '动著书',
-'動著作' => '动著作',
-'動著名' => '动著名',
-'動著錄' => '动著录',
-'動著稱' => '动著称',
-'動著者' => '动著者',
-'動著述' => '动著述',
-'努力著' => '努力着',
-'努力著書' => '努力著书',
-'努力著作' => '努力著作',
-'努力著名' => '努力著名',
-'努力著錄' => '努力著录',
-'努力著称' => '努力著称',
-'努力著稱' => '努力著称',
-'努力著者' => '努力著者',
-'努力著述' => '努力著述',
-'蘿拉' => '劳拉',
-'布蘭登堡' => '勃兰登堡',
-'白朗寧' => '勃朗宁',
-'包著' => '包着',
-'北韓' => '北朝鲜',
-'十進位制' => '十进位制',
-'十進位' => '十进制',
-'公升' => '升',
-'單眼相機' => '单反相机',
-'單鏡反光機' => '单反相机',
-'波札那' => '博茨瓦纳',
-'占著' => '占着',
-'占著作' => '占著作',
-'占著名' => '占著名',
-'占著者' => '占著者',
-'喀拉蚩' => '卡拉奇',
-'卡斯楚' => '卡斯特罗',
-'卡佩雅蒂' => '卡普里亚蒂',
-'盧安達' => '卢旺达',
-'羅浮宮' => '卢浮宫',
-'羅亞爾' => '卢瓦尔',
-'印著' => '印着',
-'印著書' => '印著书',
-'印著作' => '印著作',
-'印著名' => '印著名',
-'印著錄' => '印著录',
-'印著稱' => '印著称',
-'印著者' => '印著者',
-'印著述' => '印著述',
-'瓜地馬拉' => '危地马拉',
-'厄瓜多' => '厄瓜多尔',
-'厄瓜多尔' => '厄瓜多尔',
-'厄瓜多爾' => '厄瓜多尔',
-'厄利垂亚' => '厄立特里亚',
-'厄利垂亞' => '厄立特里亚',
-'厄立特里亞' => '厄立特里亚',
-'壓著' => '压着',
-'壓著書' => '压著书',
-'壓著作' => '压著作',
-'壓著名' => '压著名',
-'壓著錄' => '压著录',
-'壓著稱' => '压著称',
-'壓著者' => '压著者',
-'壓著述' => '压著述',
-'發著' => '发着',
-'發著《' => '发著《',
-'發著作' => '发著作',
-'發著名' => '发著名',
-'發著稱' => '发著称',
-'發著者' => '发著者',
-'已開發國家' => '发达国家',
-'受著' => '受着',
-'受著書' => '受著书',
-'受著作' => '受著作',
-'受著名' => '受著名',
-'受著錄' => '受著录',
-'受著稱' => '受著称',
-'受著者' => '受著者',
-'受著述' => '受著述',
-'變著' => '变着',
-'變著書' => '变著书',
-'變著作' => '变著作',
-'變著名' => '变著名',
-'變著錄' => '变著录',
-'變著稱' => '变著称',
-'變著者' => '变著者',
-'變著述' => '变著述',
-'隻字片語' => '只字片语',
-'隻言片語' => '只言片语',
-'唯讀' => '只读',
-'叫著' => '叫着',
-'叫著書' => '叫著书',
-'叫著作' => '叫著作',
-'叫著名' => '叫著名',
-'叫著錄' => '叫著录',
-'叫著稱' => '叫著称',
-'叫著者' => '叫著者',
-'叫著述' => '叫著述',
-'桌上型電腦' => '台式电脑',
-'撞球' => '台球',
-'台帳' => '台账',
-'叱吒' => '叱咤',
-'吃著' => '吃着',
-'結他' => '吉他',
-'健力士世界紀錄' => '吉尼斯世界纪录',
-'金氏世界紀錄' => '吉尼斯世界纪录',
-'吉布地' => '吉布提',
-'吊著' => '吊着',
-'名份' => '名分',
-'向著' => '向着',
-'向著書' => '向著书',
-'向著作' => '向著作',
-'向著名' => '向著名',
-'向著錄' => '向著录',
-'向著稱' => '向著称',
-'向著者' => '向著者',
-'向著述' => '向著述',
-'含著' => '含着',
-'含著書' => '含著书',
-'含著作' => '含著作',
-'含著名' => '含著名',
-'含著錄' => '含著录',
-'含著稱' => '含著称',
-'含著者' => '含著者',
-'含著述' => '含著述',
-'聽著' => '听着',
-'聽著書' => '听著书',
-'聽著作' => '听著作',
-'聽著名' => '听著名',
-'聽著錄' => '听著录',
-'聽著稱' => '听著称',
-'聽著者' => '听著者',
-'聽著述' => '听著述',
-'吹著' => '吹着',
-'吹著書' => '吹著书',
-'吹著作' => '吹著作',
-'吹著名' => '吹著名',
-'吹著錄' => '吹著录',
-'吹著稱' => '吹著称',
-'吹著者' => '吹著者',
-'吹著述' => '吹著述',
-'呆著' => '呆着',
-'呆帳' => '呆账',
-'味著' => '味着',
-'味著書' => '味著书',
-'味著作' => '味著作',
-'味著名' => '味著名',
-'味著錄' => '味著录',
-'味著称' => '味著称',
-'味著稱' => '味著称',
-'味著者' => '味著者',
-'味著述' => '味著述',
-'咖哩' => '咖喱',
-'諮' => '咨',
-'響著' => '响着',
-'響著書' => '响著书',
-'響著作' => '响著作',
-'響著名' => '响著名',
-'響著錄' => '响著录',
-'響著稱' => '响著称',
-'響著者' => '响著者',
-'響著述' => '响著述',
-'哥斯大黎加' => '哥斯达黎加',
-'哥德式' => '哥特式',
-'哭著' => '哭着',
-'哭著書' => '哭著书',
-'哭著作' => '哭著作',
-'哭著名' => '哭著名',
-'哭著錄' => '哭著录',
-'哭著稱' => '哭著称',
-'哭著者' => '哭著者',
-'哭著述' => '哭著述',
-'唱著' => '唱着',
-'唱著書' => '唱著书',
-'唱著作' => '唱著作',
-'唱著名' => '唱著名',
-'唱著錄' => '唱著录',
-'唱著稱' => '唱著称',
-'唱著者' => '唱著者',
-'唱著述' => '唱著述',
-'啸吒' => '啸咤',
-'喝著' => '喝着',
-'喝著書' => '喝著书',
-'喝著作' => '喝著作',
-'喝著名' => '喝著名',
-'喝著錄' => '喝著录',
-'喝著稱' => '喝著称',
-'喝著者' => '喝著者',
-'喝著述' => '喝著述',
-'嗅著' => '嗅着',
-'雜訊' => '噪声',
-'嚷著' => '嚷着',
-'嚷著書' => '嚷著书',
-'嚷著作' => '嚷著作',
-'嚷著名' => '嚷著名',
-'嚷著錄' => '嚷著录',
-'嚷著稱' => '嚷著称',
-'嚷著者' => '嚷著者',
-'嚷著述' => '嚷著述',
-'回著' => '回着',
-'回著名' => '回著名',
-'因著' => '因着',
-'因著〈' => '因著〈',
-'因著《' => '因著《',
-'因著書' => '因著书',
-'因著作' => '因著作',
-'因著名' => '因著名',
-'因著录' => '因著录',
-'因著錄' => '因著录',
-'因著稱' => '因著称',
-'因著者' => '因著者',
-'因著述' => '因著述',
-'困著' => '困着',
-'困著書' => '困著书',
-'困著作' => '困著作',
-'困著名' => '困著名',
-'困著錄' => '困著录',
-'困著稱' => '困著称',
-'困著者' => '困著者',
-'困著述' => '困著述',
-'圍著' => '围着',
-'圍著書' => '围著书',
-'圍著作' => '围著作',
-'圍著名' => '围著名',
-'圍著錄' => '围著录',
-'圍著稱' => '围著称',
-'圍著者' => '围著者',
-'圍著述' => '围著述',
-'韌體' => '固件',
-'固著' => '固着',
-'西洋棋' => '国际象棋',
-'土魯斯' => '图卢兹',
-'吐瓦魯' => '图瓦卢',
-'原子筆' => '圆珠笔',
-'聖露西亞' => '圣卢西亚',
-'聖克里斯多福及尼維斯' => '圣基茨和尼维斯',
-'聖吉斯納域斯' => '圣基茨和尼维斯',
-'聖文森及格瑞那丁' => '圣文森特和格林纳丁斯',
-'聖馬利諾' => '圣马力诺',
-'蓋亞那' => '圭亚那',
-'坐著' => '坐着',
-'坐著書' => '坐著书',
-'坐著作' => '坐著作',
-'坐著名' => '坐著名',
-'坐著錄' => '坐著录',
-'坐著稱' => '坐著称',
-'坐著者' => '坐著者',
-'坐著述' => '坐著述',
-'堅貞著' => '坚贞着',
-'坦尚尼亞' => '坦桑尼亚',
-'伊波拉' => '埃博拉',
-'衣索匹亞' => '埃塞俄比亚',
-'衣索比亞' => '埃塞俄比亚',
-'艾菲爾' => '埃菲尔',
-'葉里溫' => '埃里温',
-'功能變數名稱' => '域名',
-'吉里巴斯' => '基里巴斯',
-'堂姊' => '堂姐',
-'坎培拉' => '堪培拉',
-'塑膠袋' => '塑料袋',
-'塞爾維亞與蒙特內哥羅' => '塞尔维亚和黑山',
-'塞拉利昂' => '塞拉利昂',
-'塞普勒斯' => '塞浦路斯',
-'賽普勒斯' => '塞浦路斯',
-'塞維亞' => '塞维利亚',
-'西維爾' => '塞维利亚',
-'塞席爾' => '塞舌尔',
-'音效卡' => '声卡',
-'備著' => '备着',
-'備著書' => '备著书',
-'備著作' => '备著作',
-'備著名' => '备著名',
-'備著錄' => '备著录',
-'備著稱' => '备著称',
-'備著者' => '备著者',
-'備著述' => '备著述',
-'外部連結' => '外部链接',
-'托巴哥' => '多巴哥',
-'都卜勒' => '多普勒',
-'多明尼加' => '多米尼加',
-'大姊' => '大姐',
-'天份' => '天分',
-'夾著' => '夹着',
-'夾著書' => '夹著书',
-'夾著作' => '夹著作',
-'夾著名' => '夹著名',
-'夾著錄' => '夹著录',
-'夾著稱' => '夹著称',
-'夾著者' => '夹著者',
-'夾著述' => '夹著述',
-'賓士' => '奔驰',
-'歐巴馬' => '奥巴马',
-'柯德莉·夏萍' => '奥黛丽·赫本',
-'忌廉' => '奶油',
-'荷里活' => '好莱坞',
-'姊夫' => '姐夫',
-'姊姊' => '姐姐',
-'姊弟' => '姐弟',
-'威爾斯' => '威尔士',
-'威斯伐倫' => '威斯特法伦',
-'字型大小' => '字号',
-'字型檔' => '字库',
-'欄位' => '字段',
-'位元組' => '字节',
-'存在著' => '存在着',
-'存著' => '存着',
-'存著作' => '存著作',
-'存著名' => '存著名',
-'學姊' => '学姐',
-'學著' => '学着',
-'學著書' => '学著书',
-'學著作' => '学著作',
-'學著名' => '学著名',
-'學著錄' => '学著录',
-'學著稱' => '学著称',
-'學著者' => '学著者',
-'學著述' => '学著述',
-'太空飛行員' => '宇航员',
-'太空衣' => '宇航服',
-'守著' => '守着',
-'守著書' => '守著书',
-'守著作' => '守著作',
-'守著名' => '守著名',
-'守著錄' => '守著录',
-'守著称' => '守著称',
-'守著稱' => '守著称',
-'守著者' => '守著者',
-'守著述' => '守著述',
-'安哈特' => '安哈尔特',
-'安地卡及巴布達' => '安提瓜和巴布达',
-'巨集' => '宏',
-'定著' => '定着',
-'定著書' => '定著书',
-'定著作' => '定著作',
-'定著名' => '定著名',
-'定著錄' => '定著录',
-'定著称' => '定著称',
-'定著稱' => '定著称',
-'定著者' => '定著者',
-'定著述' => '定著述',
-'波里活' => '宝莱坞',
-'寬頻' => '宽带',
-'密执安' => '密歇根',
-'密西根' => '密歇根',
-'對著' => '对着',
-'對著書' => '对著书',
-'對著作' => '对著作',
-'對著名' => '对著名',
-'對著錄' => '对著录',
-'對著稱' => '对著称',
-'對著者' => '对著者',
-'對著述' => '对著述',
-'對帳' => '对账',
-'尋著' => '寻着',
-'尋著書' => '寻著书',
-'尋著作' => '寻著作',
-'尋著名' => '寻著名',
-'尋著錄' => '寻著录',
-'尋著稱' => '寻著称',
-'尋著者' => '寻著者',
-'尋著述' => '寻著述',
-'飛彈' => '导弹',
-'祖雲達斯' => '尤文图斯',
-'奈及利亞' => '尼日利亚',
-'尼日爾' => '尼日尔',
-'區域網' => '局域网',
-'區域網路' => '局域网络',
-'螢幕' => '屏幕',
-'展著' => '展着',
-'展著書' => '展著书',
-'展著作' => '展著作',
-'展著名' => '展著名',
-'展著錄' => '展著录',
-'展著稱' => '展著称',
-'展著者' => '展著者',
-'展著述' => '展著述',
-'瓦倫西亞' => '巴伦西亚',
-'華倫西亞' => '巴伦西亚',
-'巴塞隆拿' => '巴塞罗那',
-'巴塞隆納' => '巴塞罗那',
-'巴斯拉' => '巴士拉',
-'帕邁拉環礁' => '巴尔米拉环礁',
-'巴貝多' => '巴巴多斯',
-'巴布亞紐幾內亞' => '巴布亚新几内亚',
-'布殊' => '布什',
-'布吉納法索' => '布基纳法索',
-'布隆泉' => '布隆方丹',
-'蒲隆地' => '布隆迪',
-'希冀著' => '希冀着',
-'席哈克' => '希拉克',
-'希拉莉' => '希拉里',
-'希拉蕊' => '希拉里',
-'希特拉' => '希特勒',
-'帛琉' => '帕劳',
-'派屈克' => '帕特里克',
-'頻寬' => '带宽',
-'帶著' => '带着',
-'帶著書' => '带著书',
-'帶著作' => '带著作',
-'帶著名' => '带著名',
-'帶著錄' => '带著录',
-'帶著稱' => '带著称',
-'帶著者' => '带著者',
-'帶著述' => '带著述',
-'幫著' => '帮着',
-'幫著書' => '帮著书',
-'幫著作' => '帮著作',
-'幫著名' => '帮著名',
-'幫著錄' => '帮著录',
-'幫著稱' => '帮著称',
-'幫著者' => '帮著者',
-'幫著述' => '帮著述',
-'乾姊' => '干姐',
-'幹著' => '干着',
-'幹著名' => '幹著名',
-'幹著稱' => '幹著称',
-'庇護著' => '庇护着',
-'庫德人' => '库尔德人',
-'庫德族' => '库尔德族',
-'應用程式' => '应用程序',
-'應著' => '应着',
-'應著書' => '应著书',
-'應著作' => '应著作',
-'應著名' => '应著名',
-'應著錄' => '应著录',
-'應著稱' => '应著称',
-'應著者' => '应著者',
-'應著述' => '应著述',
-'建帳' => '建账',
-'克卜勒' => '开普勒',
-'開著' => '开着',
-'開著書' => '开著书',
-'開著作' => '开著作',
-'開著名' => '开著名',
-'開著錄' => '开著录',
-'開著稱' => '开著称',
-'開著者' => '开著者',
-'開著述' => '开著述',
-'開帳' => '开账',
-'非同步' => '异步',
-'若且唯若' => '当且仅当',
-'當著' => '当着',
-'當著書' => '当著书',
-'當著作' => '当著作',
-'當著名' => '当著名',
-'當著錄' => '当著录',
-'當著稱' => '当著称',
-'當著者' => '当著者',
-'當著述' => '当著述',
-'錄影帶' => '录像带',
-'形上學' => '形而上学',
-'澈底' => '彻底',
-'逕入' => '径入',
-'逕到' => '径到',
-'逕取' => '径取',
-'逕啟' => '径启',
-'逕寄' => '径寄',
-'逕庭' => '径庭',
-'逕往' => '径往',
-'逕自' => '径自',
-'逕行' => '径行',
-'逕迎' => '径迎',
-'待著' => '待着',
-'待著書' => '待著书',
-'待著作' => '待著作',
-'待著名' => '待著名',
-'待著錄' => '待著录',
-'待著稱' => '待著称',
-'待著者' => '待著者',
-'待著述' => '待著述',
-'得著' => '得着',
-'得著書' => '得著书',
-'得著作' => '得著作',
-'得著名' => '得著名',
-'得著錄' => '得著录',
-'得著稱' => '得著称',
-'得著者' => '得著者',
-'得著述' => '得著述',
-'御姊' => '御姐',
-'迴圈' => '循环',
-'循著' => '循着',
-'循著書' => '循著书',
-'循著作' => '循著作',
-'循著名' => '循著名',
-'循著錄' => '循著录',
-'循著稱' => '循著称',
-'循著者' => '循著者',
-'循著述' => '循著述',
-'德勒斯登' => '德累斯顿',
-'德希達' => '德里达',
-'心著' => '心着',
-'心著書' => '心著书',
-'心著作' => '心著作',
-'心著名' => '心著名',
-'心著錄' => '心著录',
-'心著称' => '心著称',
-'心著稱' => '心著称',
-'心著者' => '心著者',
-'心著述' => '心著述',
-'忍著' => '忍着',
-'忍著書' => '忍著书',
-'忍著作' => '忍著作',
-'忍著名' => '忍著名',
-'忍著錄' => '忍著录',
-'忍著稱' => '忍著称',
-'忍著者' => '忍著者',
-'忍著述' => '忍著述',
-'忙著' => '忙着',
-'忙著書' => '忙著书',
-'忙著作' => '忙著作',
-'忙著名' => '忙著名',
-'忙著錄' => '忙著录',
-'忙著稱' => '忙著称',
-'忙著者' => '忙著者',
-'忙著述' => '忙著述',
-'忠貞著' => '忠贞着',
-'懷著' => '怀着',
-'懷著書' => '怀著书',
-'懷著作' => '怀著作',
-'懷著名' => '怀著名',
-'懷著錄' => '怀著录',
-'懷著稱' => '怀著称',
-'懷著者' => '怀著者',
-'懷著述' => '怀著述',
-'急著' => '急着',
-'急著書' => '急著书',
-'急著作' => '急著作',
-'急著名' => '急著名',
-'急著錄' => '急著录',
-'急著稱' => '急著称',
-'急著者' => '急著者',
-'急著述' => '急著述',
-'匯流排' => '总线',
-'總帳' => '总账',
-'戀著' => '恋着',
-'戀著書' => '恋著书',
-'戀著作' => '恋著作',
-'戀著名' => '恋著名',
-'戀著錄' => '恋著录',
-'戀著稱' => '恋著称',
-'戀著者' => '恋著者',
-'戀著述' => '恋著述',
-'恰如其份' => '恰如其分',
-'悠著' => '悠着',
-'悠著書' => '悠著书',
-'悠著作' => '悠著作',
-'悠著名' => '悠著名',
-'悠著錄' => '悠著录',
-'悠著稱' => '悠著称',
-'悠著者' => '悠著者',
-'悠著述' => '悠著述',
-'慣著' => '惯着',
-'慣著書' => '惯著书',
-'慣著作' => '惯著作',
-'慣著名' => '惯著名',
-'慣著錄' => '惯著录',
-'慣著稱' => '惯著称',
-'慣著者' => '惯著者',
-'慣著述' => '惯著述',
-'想著' => '想着',
-'想著書' => '想著书',
-'想著作' => '想著作',
-'想著名' => '想著名',
-'想著錄' => '想著录',
-'想著称' => '想著称',
-'想著稱' => '想著称',
-'想著者' => '想著者',
-'想著述' => '想著述',
-'義大利' => '意大利',
-'戈巴契夫' => '戈尔巴乔夫',
-'成份' => '成分',
-'戰著' => '战着',
-'戰著書' => '战著书',
-'戰著作' => '战著作',
-'戰著名' => '战著名',
-'戰著錄' => '战著录',
-'戰著稱' => '战著称',
-'戰著者' => '战著者',
-'戰著述' => '战著述',
-'坎城' => '戛纳',
-'黛安娜' => '戴安娜',
-'戴著' => '戴着',
-'戴著書' => '戴著书',
-'戴著作' => '戴著作',
-'戴著名' => '戴著名',
-'戴著錄' => '戴著录',
-'戴著稱' => '戴著称',
-'戴著者' => '戴著者',
-'戴著述' => '戴著述',
-'索羅門群島' => '所罗门群岛',
-'紮著' => '扎着',
-'紮著書' => '扎著书',
-'紮著作' => '扎著作',
-'紮著名' => '扎著名',
-'紮著錄' => '扎著录',
-'紮著稱' => '扎著称',
-'紮著者' => '扎著者',
-'紮著述' => '扎著述',
-'列印' => '打印',
-'印表機' => '打印机',
-'打著' => '打着',
-'打著書' => '打著书',
-'打著作' => '打著作',
-'打著名' => '打著名',
-'打著錄' => '打著录',
-'打著稱' => '打著称',
-'打著者' => '打著者',
-'打著述' => '打著述',
-'扛著' => '扛着',
-'扛著書' => '扛著书',
-'扛著作' => '扛著作',
-'扛著名' => '扛著名',
-'扛著錄' => '扛著录',
-'扛著稱' => '扛著称',
-'扛著者' => '扛著者',
-'扛著述' => '扛著述',
-'掃瞄' => '扫描',
-'掃瞄器' => '扫描仪',
-'抓著' => '抓着',
-'抓著作' => '抓著作',
-'抓著名' => '抓著名',
-'抓著錄' => '抓著录',
-'抓著稱' => '抓著称',
-'抓著者' => '抓著者',
-'抓著述' => '抓著述',
-'投機份子' => '投机分子',
-'護著' => '护着',
-'護著書' => '护著书',
-'護著作' => '护著作',
-'護著名' => '护著名',
-'護著錄' => '护著录',
-'護著稱' => '护著称',
-'護著者' => '护著者',
-'護著述' => '护著述',
-'報帳' => '报账',
-'披著' => '披着',
-'披著書' => '披著书',
-'披著作' => '披著作',
-'披著名' => '披著名',
-'披著錄' => '披著录',
-'披著稱' => '披著称',
-'披著者' => '披著者',
-'披著述' => '披著述',
-'抬著' => '抬着',
-'擡著' => '抬着',
-'抬著作' => '抬著作',
-'抬著名' => '抬著名',
-'抬著錄' => '抬著录',
-'抬著稱' => '抬著称',
-'抬著者' => '抬著者',
-'抬著述' => '抬著述',
-'抱著' => '抱着',
-'抱著作' => '抱著作',
-'抱著名' => '抱著名',
-'抱著錄' => '抱著录',
-'抱著稱' => '抱著称',
-'抱著者' => '抱著者',
-'抱著述' => '抱著述',
-'擔著' => '担着',
-'拉著' => '拉着',
-'拉著書' => '拉著书',
-'拉著作' => '拉著作',
-'拉著名' => '拉著名',
-'拉著錄' => '拉著录',
-'拉著稱' => '拉著称',
-'拉著者' => '拉著者',
-'拉著述' => '拉著述',
-'拎著' => '拎着',
-'拎著作' => '拎著作',
-'拎著名' => '拎著名',
-'拎著錄' => '拎著录',
-'拎著稱' => '拎著称',
-'拎著者' => '拎著者',
-'拎著述' => '拎著述',
-'拖著' => '拖着',
-'拖著作' => '拖著作',
-'拖著名' => '拖著名',
-'拖著錄' => '拖著录',
-'拖著稱' => '拖著称',
-'拖著者' => '拖著者',
-'拖著述' => '拖著述',
-'拼著' => '拼着',
-'拼著作' => '拼著作',
-'拼著名' => '拼著名',
-'拼著錄' => '拼著录',
-'拼著稱' => '拼著称',
-'拼著者' => '拼著者',
-'拼著述' => '拼著述',
-'拿著' => '拿着',
-'拿著作' => '拿著作',
-'拿著名' => '拿著名',
-'拿著錄' => '拿著录',
-'拿著稱' => '拿著称',
-'拿著者' => '拿著者',
-'拿著述' => '拿著述',
-'持著' => '持着',
-'持著作' => '持著作',
-'持著名' => '持著名',
-'持著錄' => '持著录',
-'持著稱' => '持著称',
-'持著者' => '持著者',
-'持著述' => '持著述',
-'掛著' => '挂着',
-'挑著' => '挑着',
-'挑著作' => '挑著作',
-'挑著名' => '挑著名',
-'挑著錄' => '挑著录',
-'挑著稱' => '挑著称',
-'挑著者' => '挑著者',
-'挑著述' => '挑著述',
-'擋著' => '挡着',
-'擋著作' => '挡著作',
-'擋著名' => '挡著名',
-'擋著錄' => '挡著录',
-'擋著稱' => '挡著称',
-'擋著者' => '挡著者',
-'擋著述' => '挡著述',
-'掙著' => '挣着',
-'掙著書' => '挣著书',
-'掙著作' => '挣著作',
-'掙著名' => '挣著名',
-'掙著錄' => '挣著录',
-'掙著稱' => '挣著称',
-'掙著者' => '挣著者',
-'掙著述' => '挣著述',
-'揮著' => '挥着',
-'揮著作' => '挥著作',
-'揮著名' => '挥著名',
-'揮著錄' => '挥著录',
-'揮著稱' => '挥著称',
-'揮著者' => '挥著者',
-'揮著述' => '挥著述',
-'挨著' => '挨着',
-'挨著作' => '挨著作',
-'挨著名' => '挨著名',
-'挨著錄' => '挨著录',
-'挨著稱' => '挨著称',
-'挨著者' => '挨著者',
-'挨著述' => '挨著述',
-'捆著' => '捆着',
-'捆著作' => '捆著作',
-'捆著名' => '捆著名',
-'捆著錄' => '捆著录',
-'捆著稱' => '捆著称',
-'捆著者' => '捆著者',
-'捆著述' => '捆著述',
-'據著' => '据着',
-'據著書' => '据著书',
-'據著作' => '据著作',
-'據著名' => '据著名',
-'據著錄' => '据著录',
-'據著稱' => '据著称',
-'據著者' => '据著者',
-'據著述' => '据著述',
-'積架' => '捷豹',
-'掖著' => '掖着',
-'掖著作' => '掖著作',
-'掖著名' => '掖著名',
-'掖著錄' => '掖著录',
-'掖著稱' => '掖著称',
-'掖著者' => '掖著者',
-'掖著述' => '掖著述',
-'接著' => '接着',
-'接著作' => '接著作',
-'接著名' => '接著名',
-'接著錄' => '接著录',
-'接著稱' => '接著称',
-'接著者' => '接著者',
-'接著述' => '接著述',
-'控制項' => '控件',
-'揉著' => '揉着',
-'揉著書' => '揉著书',
-'揉著作' => '揉著作',
-'揉著名' => '揉著名',
-'揉著錄' => '揉著录',
-'揉著稱' => '揉著称',
-'揉著者' => '揉著者',
-'揉著述' => '揉著述',
-'提著' => '提着',
-'提著作' => '提著作',
-'提著名' => '提著名',
-'提著錄' => '提著录',
-'提著稱' => '提著称',
-'提著者' => '提著者',
-'提著述' => '提著述',
-'外掛程式' => '插件',
-'摟著' => '搂着',
-'摟著作' => '搂著作',
-'摟著名' => '搂著名',
-'摟著錄' => '搂著录',
-'摟著稱' => '搂著称',
-'摟著者' => '搂著者',
-'摟著述' => '搂著述',
-'搜尋引擎' => '搜索引擎',
-'擺著' => '摆着',
-'擺著作' => '摆著作',
-'擺著名' => '摆著名',
-'擺著錄' => '摆著录',
-'擺著稱' => '摆著称',
-'擺著者' => '摆著者',
-'擺著述' => '摆著述',
-'電單車' => '摩托车',
-'戴卓爾' => '撒切尔',
-'柴契爾' => '撒切尔',
-'撼著' => '撼着',
-'撼著書' => '撼著书',
-'撼著作' => '撼著作',
-'撼著名' => '撼著名',
-'撼著錄' => '撼著录',
-'撼著稱' => '撼著称',
-'撼著者' => '撼著者',
-'撼著述' => '撼著述',
-'作業系統' => '操作系统',
-'收帳' => '收账',
-'放著' => '放着',
-'放著作' => '放著作',
-'放著名' => '放著名',
-'放著称' => '放著称',
-'放著稱' => '放著称',
-'放帳' => '放账',
-'敞著' => '敞着',
-'敞著作' => '敞著作',
-'敞著名' => '敞著名',
-'敞著錄' => '敞著录',
-'敞著稱' => '敞著称',
-'敞著者' => '敞著者',
-'敞著述' => '敞著述',
-'散佈著' => '散布着',
-'散布著' => '散布着',
-'數位訊號' => '数字信号',
-'數碼訊號' => '数字信号',
-'數位化' => '数字化',
-'數位技術' => '数字技术',
-'數位電視' => '数字电视',
-'數碼電視' => '数字电视',
-'資料庫' => '数据库',
-'數著' => '数着',
-'數位照相機' => '数码照相机',
-'數位相機' => '数码相机',
-'數著作' => '数著作',
-'數著名' => '数著名',
-'數著錄' => '数著录',
-'數著稱' => '数著称',
-'數著者' => '数著者',
-'數著述' => '数著述',
-'汶萊' => '文莱',
-'鬥著' => '斗着',
-'鬥著書' => '斗著书',
-'鬥著作' => '斗著作',
-'鬥著名' => '斗著名',
-'鬥著錄' => '斗著录',
-'鬥著稱' => '斗著称',
-'鬥著者' => '斗著者',
-'鬥著述' => '斗著述',
-'斥著' => '斥着',
-'斥著書' => '斥著书',
-'斥著作' => '斥著作',
-'斥著名' => '斥著名',
-'斥著錄' => '斥著录',
-'斥著稱' => '斥著称',
-'斥著者' => '斥著者',
-'斥著述' => '斥著述',
-'史丹福大學' => '斯坦福大学',
-'史達林' => '斯大林',
-'史瓦濟蘭' => '斯威士兰',
-'斯洛維尼亞' => '斯洛文尼亚',
-'史特勞斯' => '斯特劳斯',
-'紐幾內亞' => '新几内亚',
-'紐澤西' => '新泽西',
-'紐西蘭' => '新西兰',
-'舊帳' => '旧账',
-'三藩市' => '旧金山',
-'昂山素姬' => '昂山素季',
-'翁山蘇姬' => '昂山素季',
-'昂著' => '昂着',
-'昂著書' => '昂著书',
-'昂著作' => '昂著作',
-'昂著名' => '昂著名',
-'昂著錄' => '昂著录',
-'昂著稱' => '昂著称',
-'昂著者' => '昂著者',
-'昂著述' => '昂著述',
-'明白帳' => '明白账',
-'映著' => '映着',
-'映著書' => '映著书',
-'映著作' => '映著作',
-'映著名' => '映著名',
-'映著錄' => '映著录',
-'映著稱' => '映著称',
-'映著者' => '映著者',
-'映著述' => '映著述',
-'顯示卡' => '显卡',
-'显著' => '显著',
-'顯著' => '显著',
-'晃著' => '晃着',
-'晃著作' => '晃著作',
-'晃著名' => '晃著名',
-'晃著錄' => '晃著录',
-'晃著稱' => '晃著称',
-'晃著者' => '晃著者',
-'晃著述' => '晃著述',
-'普利茲' => '普利策',
-'蒲美蓬' => '普密蓬',
-'蒲朗克' => '普朗克',
-'電晶體' => '晶体管',
-'智慧型' => '智能',
-'智慧卡' => '智能卡',
-'智慧手機' => '智能手机',
-'暗著' => '暗着',
-'暗著書' => '暗著书',
-'暗著作' => '暗著作',
-'暗著名' => '暗著名',
-'暗著錄' => '暗著录',
-'暗著稱' => '暗著称',
-'暗著者' => '暗著者',
-'暗著述' => '暗著述',
-'有著' => '有着',
-'有著書' => '有著书',
-'有著作' => '有著作',
-'有著名' => '有著名',
-'有著錄' => '有著录',
-'有著稱' => '有著称',
-'有著者' => '有著者',
-'有著述' => '有著述',
-'伺服器' => '服务器',
-'望著' => '望着',
-'望著作' => '望著作',
-'望著名' => '望著名',
-'望著錄' => '望著录',
-'望著稱' => '望著称',
-'望著者' => '望著者',
-'望著述' => '望著述',
-'朝著' => '朝着',
-'朝著作' => '朝著作',
-'朝著名' => '朝著名',
-'朝著錄' => '朝著录',
-'朝著稱' => '朝著称',
-'朝著者' => '朝著者',
-'朝著述' => '朝著述',
-'賓·拉登' => '本·拉登',
-'本份' => '本分',
-'賓拉登' => '本拉登',
-'本本份份' => '本本分分',
-'班傑明' => '本杰明',
-'本著' => '本着',
-'本著書' => '本著书',
-'本著作' => '本著作',
-'本著名' => '本著名',
-'本著錄' => '本著录',
-'本著稱' => '本著称',
-'本著者' => '本著者',
-'本著述' => '本著述',
-'本帳' => '本账',
-'機械人' => '机器人',
-'工具機' => '机床',
-'殺著' => '杀着',
-'殺著書' => '杀著书',
-'殺著作' => '杀著作',
-'殺著名' => '杀著名',
-'殺著錄' => '杀著录',
-'殺著稱' => '杀著称',
-'殺著者' => '杀著者',
-'殺著述' => '杀著述',
-'雜著' => '杂着',
-'雜著書' => '杂著书',
-'雜著作' => '杂著作',
-'雜著名' => '杂著名',
-'雜著錄' => '杂著录',
-'雜著稱' => '杂著称',
-'雜著者' => '杂著者',
-'雜著述' => '杂著述',
-'杜塞道夫' => '杜塞尔多夫',
-'來著' => '来着',
-'來著書' => '来著书',
-'來著作' => '来著作',
-'來著名' => '来著名',
-'來著錄' => '来著录',
-'來著稱' => '来著称',
-'來著者' => '来著者',
-'來著述' => '来著述',
-'板著臉' => '板着脸',
-'枕著' => '枕着',
-'枕著作' => '枕著作',
-'枕著名' => '枕著名',
-'枕著錄' => '枕著录',
-'枕著稱' => '枕著称',
-'枕著者' => '枕著者',
-'枕著述' => '枕著述',
-'槍枝' => '枪支',
-'柏林圍牆' => '柏林墙',
-'查帳' => '查账',
-'查維茲' => '查韦斯',
-'標志著' => '标志着',
-'標誌著' => '标志着',
-'格瑞那達' => '格林纳达',
-'格林美獎' => '格莱美奖',
-'葛萊美獎' => '格莱美奖',
-'森巴舞' => '桑巴舞',
-'梅赫西迪' => '梅赛德斯',
-'夢著' => '梦着',
-'夢著書' => '梦著书',
-'夢著作' => '梦著作',
-'夢著名' => '梦著名',
-'夢著錄' => '梦著录',
-'夢著稱' => '梦著称',
-'夢著者' => '梦著者',
-'夢著述' => '梦著述',
-'梳著' => '梳着',
-'梳著作' => '梳著作',
-'梳著名' => '梳著名',
-'梳著錄' => '梳著录',
-'梳著稱' => '梳著称',
-'梳著者' => '梳著者',
-'梳著述' => '梳著述',
-'梵谷' => '梵高',
-'機率' => '概率',
-'欠帳' => '欠账',
-'死帳' => '死账',
-'庇里牛斯' => '比利牛斯',
-'畢卡索' => '毕加索',
-'茅利塔尼亞' => '毛里塔尼亚',
-'模里西斯' => '毛里求斯',
-'毛里裘斯' => '毛里求斯',
-'公厘' => '毫米',
-'公釐' => '毫米',
-'氧份' => '氧分',
-'胺基酸' => '氨基酸',
-'水份' => '水分',
-'水氣' => '水汽',
-'求著' => '求着',
-'求著書' => '求著书',
-'求著作' => '求著作',
-'求著名' => '求著名',
-'求著錄' => '求著录',
-'求著稱' => '求著称',
-'求著者' => '求著者',
-'求著述' => '求著述',
-'漢諾瓦' => '汉诺威',
-'沈著' => '沉着',
-'沉著' => '沉着',
-'沉著書' => '沉著书',
-'沉著作' => '沉著作',
-'沉著名' => '沉著名',
-'沉著錄' => '沉著录',
-'沉著稱' => '沉著称',
-'沉著者' => '沉著者',
-'沉著述' => '沉著述',
-'沙地阿拉伯' => '沙特阿拉伯',
-'沙烏地阿拉伯' => '沙特阿拉伯',
-'沿著' => '沿着',
-'沿著書' => '沿著书',
-'沿著作' => '沿著作',
-'沿著名' => '沿著名',
-'沿著錄' => '沿著录',
-'沿著稱' => '沿著称',
-'沿著者' => '沿著者',
-'沿著述' => '沿著述',
-'玻里尼西亞' => '波利尼西亚',
-'波士尼亞' => '波斯尼亚',
-'波士尼亞赫塞哥維納' => '波斯尼亚和黑塞哥维那',
-'鐵達尼號' => '泰坦尼克号',
-'幫浦' => '泵',
-'辛巴威' => '津巴布韦',
-'宏都拉斯' => '洪都拉斯',
-'活著' => '活着',
-'活著書' => '活著书',
-'活著作' => '活著作',
-'活著名' => '活著名',
-'活著錄' => '活著录',
-'活著稱' => '活著称',
-'活著者' => '活著者',
-'活著述' => '活著述',
-'流水帳' => '流水账',
-'流著' => '流着',
-'流著書' => '流著书',
-'流著作' => '流著作',
-'流著名' => '流著名',
-'流著錄' => '流著录',
-'流著稱' => '流著称',
-'流著者' => '流著者',
-'流著述' => '流著述',
-'流露著' => '流露着',
-'浮著' => '浮着',
-'蘭卡威' => '浮罗交怡',
-'浮著書' => '浮著书',
-'浮著作' => '浮著作',
-'浮著名' => '浮著名',
-'浮著錄' => '浮著录',
-'浮著稱' => '浮著称',
-'浮著者' => '浮著者',
-'浮著述' => '浮著述',
-'海洛英' => '海洛因',
-'海浬' => '海里',
-'塗著' => '涂着',
-'潤著' => '润着',
-'潤著書' => '润著书',
-'潤著作' => '润著作',
-'潤著名' => '润著名',
-'潤著錄' => '润著录',
-'潤著稱' => '润著称',
-'潤著者' => '润著者',
-'潤著述' => '润著述',
-'混帳' => '混账',
-'清澈' => '清澈',
-'清帳' => '清账',
-'渴著' => '渴着',
-'渴著書' => '渴著书',
-'渴著作' => '渴著作',
-'渴著名' => '渴著名',
-'渴著錄' => '渴著录',
-'渴著稱' => '渴著称',
-'渴著者' => '渴著者',
-'渴著述' => '渴著述',
-'原始碼' => '源代码',
-'溢著' => '溢着',
-'溢著書' => '溢著书',
-'溢著作' => '溢著作',
-'溢著名' => '溢著名',
-'溢著錄' => '溢著录',
-'溢著稱' => '溢著称',
-'溢著者' => '溢著者',
-'溢著述' => '溢著述',
-'滑鼠蛇' => '滑鼠蛇',
-'滿16進位' => '满16进位',
-'滿二進位' => '满二进位',
-'滿八進位' => '满八进位',
-'滿六進位' => '满六进位',
-'滿十六進位' => '满十六进位',
-'滿十進位' => '满十进位',
-'滿著' => '满着',
-'滿著作' => '满著作',
-'滿著名' => '满著名',
-'滿著者' => '满著者',
-'演著' => '演着',
-'演著書' => '演著书',
-'演著作' => '演著作',
-'演著名' => '演著名',
-'演著錄' => '演著录',
-'演著稱' => '演著称',
-'演著者' => '演著者',
-'演著述' => '演著述',
-'漫著' => '漫着',
-'漫著書' => '漫著书',
-'漫著作' => '漫著作',
-'漫著名' => '漫著名',
-'漫著錄' => '漫著录',
-'漫著稱' => '漫著称',
-'漫著者' => '漫著者',
-'漫著述' => '漫著述',
-'雷射' => '激光',
-'點著' => '点着',
-'點著作' => '点著作',
-'點著名' => '点著名',
-'點著錄' => '点著录',
-'點著稱' => '点著称',
-'點著者' => '点著者',
-'點著述' => '点著述',
-'爛帳' => '烂账',
-'燒著' => '烧着',
-'燒著作' => '烧著作',
-'燒著名' => '烧著名',
-'燒著錄' => '烧著录',
-'燒著稱' => '烧著称',
-'燒著者' => '烧著者',
-'燒著述' => '烧著述',
-'照著' => '照着',
-'照著書' => '照著书',
-'照著作' => '照著作',
-'照著名' => '照著名',
-'照著錄' => '照著录',
-'照著稱' => '照著称',
-'照著者' => '照著者',
-'照著述' => '照著述',
-'愛護著' => '爱护着',
-'愛著' => '爱着',
-'愛著書' => '爱著书',
-'愛著作' => '爱著作',
-'愛著名' => '爱著名',
-'愛著錄' => '爱著录',
-'愛著稱' => '爱著称',
-'愛著者' => '爱著者',
-'愛著述' => '爱著述',
-'牽著' => '牵着',
-'牽著書' => '牵著书',
-'牽著作' => '牵著作',
-'牽著名' => '牵著名',
-'牽著錄' => '牵著录',
-'牽著稱' => '牵著称',
-'牽著者' => '牵著者',
-'牽著述' => '牵著述',
-'千里達' => '特立尼达',
-'千里達及托巴哥' => '特立尼达和多巴哥',
-'千里達托貝哥' => '特立尼达和托巴哥',
-'狗隻' => '犬只',
-'猶豫著' => '犹豫着',
-'獨立國家國協' => '独立国家联合体',
-'獨立國協' => '独联体',
-'猜著' => '猜着',
-'猜著書' => '猜着书',
-'猜著作' => '猜著作',
-'猜著名' => '猜著名',
-'猜著錄' => '猜著录',
-'猜著稱' => '猜著称',
-'猜著者' => '猜著者',
-'猜著述' => '猜著述',
-'玩著' => '玩着',
-'班固著' => '班固著',
-'溫納圖' => '瓦努阿图',
-'萬那杜' => '瓦努阿图',
-'華勒沙' => '瓦文萨',
-'華里沙' => '瓦文萨',
-'甜著' => '甜着',
-'甜著書' => '甜著书',
-'甜著作' => '甜著作',
-'甜著名' => '甜著名',
-'甜著錄' => '甜著录',
-'甜著稱' => '甜著称',
-'甜著者' => '甜著者',
-'甜著述' => '甜著述',
-'用著' => '用着',
-'用著書' => '用著书',
-'用著作' => '用著作',
-'用著名' => '用著名',
-'用著錄' => '用著录',
-'用著稱' => '用著称',
-'用著者' => '用著者',
-'用著述' => '用著述',
-'A型肝炎' => '甲型肝炎',
-'A肝' => '甲肝',
-'電視劇集' => '电视剧',
-'電視影集' => '电视系列剧',
-'畫著' => '画着',
-'畫著作' => '画著作',
-'畫著名' => '画著名',
-'畫著稱' => '画著称',
-'畫著者' => '画著者',
-'介面' => '界面',
-'留著' => '留着',
-'留著書' => '留着书',
-'留著作' => '留著作',
-'留著名' => '留著名',
-'留著錄' => '留著录',
-'留著稱' => '留著称',
-'留著者' => '留著者',
-'留著述' => '留著述',
-'疑著' => '疑着',
-'疑著書' => '疑著书',
-'疑著作' => '疑著作',
-'疑著名' => '疑著名',
-'疑著錄' => '疑著录',
-'疑著稱' => '疑著称',
-'疑著者' => '疑著者',
-'疑著述' => '疑著述',
-'狂牛症' => '疯牛病',
-'徵狀' => '症状',
-'百慕達' => '百慕大',
-'皮雅斯·布士南' => '皮尔斯·布鲁斯南',
-'皺著' => '皱着',
-'皺著書' => '皱著书',
-'皺著作' => '皱著作',
-'皺著名' => '皱著名',
-'皺著錄' => '皱著录',
-'皺著稱' => '皱著称',
-'皺著者' => '皱著者',
-'皺著述' => '皱著述',
-'鹽份' => '盐分',
-'蓋著' => '盖着',
-'蓋著作' => '盖著作',
-'蓋著名' => '盖著名',
-'蓋著稱' => '盖著称',
-'盛著' => '盛着',
-'盛著書' => '盛著书',
-'盛著作' => '盛著作',
-'盛著名' => '盛著名',
-'盛著錄' => '盛著录',
-'盛著稱' => '盛著称',
-'盛著者' => '盛著者',
-'盛著述' => '盛著述',
-'盯著' => '盯着',
-'盯著書' => '盯着书',
-'盯著作' => '盯著作',
-'盯著名' => '盯著名',
-'盯著錄' => '盯著录',
-'盯著稱' => '盯著称',
-'盯著者' => '盯著者',
-'盯著述' => '盯著述',
-'看著' => '看着',
-'看著書' => '看着书',
-'看著作' => '看著作',
-'看著名' => '看著名',
-'看著錄' => '看著录',
-'看著稱' => '看著称',
-'看著者' => '看著者',
-'看著述' => '看著述',
-'著業' => '着业',
-'著絲' => '着丝',
-'著麼' => '着么',
-'著人' => '着人',
-'著什麼' => '着什么',
-'著甚麽' => '着什么',
-'著他' => '着他',
-'著令' => '着令',
-'著位' => '着位',
-'著體' => '着体',
-'著你' => '着你',
-'著便' => '着便',
-'著涼' => '着凉',
-'著力' => '着力',
-'著勁' => '着劲',
-'著號' => '着号',
-'著呢' => '着呢',
-'著哩' => '着哩',
-'著地' => '着地',
-'著墨' => '着墨',
-'著聲' => '着声',
-'著處' => '着处',
-'著她' => '着她',
-'著妳' => '着妳',
-'著姓' => '着姓',
-'著它' => '着它',
-'著定' => '着定',
-'著實' => '着实',
-'著己' => '着己',
-'著帳' => '着帐',
-'著床' => '着床',
-'著庸' => '着庸',
-'著式' => '着式',
-'著錄' => '着录',
-'著心' => '着心',
-'著志' => '着志',
-'著忙' => '着忙',
-'著急' => '着急',
-'著惱' => '着恼',
-'著驚' => '着惊',
-'著想' => '着想',
-'著意' => '着意',
-'著慌' => '着慌',
-'著我' => '着我',
-'著手' => '着手',
-'著抹' => '着抹',
-'著摸' => '着摸',
-'著撰' => '着撰',
-'著數' => '着数',
-'著明' => '着明',
-'著末' => '着末',
-'著極' => '着极',
-'著格' => '着格',
-'著棋' => '着棋',
-'著氣' => '着气',
-'著法' => '着法',
-'著淺' => '着浅',
-'著火' => '着火',
-'著然' => '着然',
-'著甚' => '着甚',
-'著生' => '着生',
-'著疑' => '着疑',
-'著白' => '着白',
-'著相' => '着相',
-'著眼' => '着眼',
-'著著' => '着着',
-'著祂' => '着祂',
-'著積' => '着积',
-'著稿' => '着稿',
-'著筆' => '着笔',
-'著籍' => '着籍',
-'著緊' => '着紧',
-'著緑' => '着緑',
-'著絆' => '着绊',
-'著績' => '着绩',
-'著緋' => '着绯',
-'著綠' => '着绿',
-'著肉' => '着肉',
-'著腳' => '着脚',
-'著艦' => '着舰',
-'著色' => '着色',
-'著節' => '着节',
-'著花' => '着花',
-'著莫' => '着莫',
-'著落' => '着落',
-'著槁' => '着藁',
-'著衣' => '着衣',
-'著裝' => '着装',
-'著要' => '着要',
-'著警' => '着警',
-'著趣' => '着趣',
-'著邊' => '着边',
-'著迷' => '着迷',
-'著跡' => '着迹',
-'著重' => '着重',
-'著録' => '着録',
-'著聞' => '着闻',
-'著陸' => '着陆',
-'著雝' => '着雝',
-'著鞭' => '着鞭',
-'著題' => '着题',
-'著魔' => '着魔',
-'睡著' => '睡着',
-'睡著書' => '睡著书',
-'睡著作' => '睡著作',
-'睡著名' => '睡著名',
-'睡著錄' => '睡著录',
-'睡著稱' => '睡著称',
-'睡著者' => '睡著者',
-'睡著述' => '睡著述',
-'瞞著' => '瞒着',
-'瞞著書' => '瞒著书',
-'瞞著作' => '瞒著作',
-'瞞著名' => '瞒著名',
-'瞞著錄' => '瞒著录',
-'瞞著稱' => '瞒著称',
-'瞞著者' => '瞒著者',
-'瞞著述' => '瞒著述',
-'瞧著' => '瞧着',
-'瞧著書' => '瞧着书',
-'瞧著作' => '瞧著作',
-'瞧著名' => '瞧著名',
-'瞧著錄' => '瞧著录',
-'瞧著稱' => '瞧著称',
-'瞧著者' => '瞧著者',
-'瞧著述' => '瞧著述',
-'瞪著' => '瞪着',
-'瞪著書' => '瞪著书',
-'瞪著作' => '瞪著作',
-'瞪著名' => '瞪著名',
-'瞪著錄' => '瞪著录',
-'瞪著稱' => '瞪著称',
-'瞪著者' => '瞪著者',
-'瞪著述' => '瞪著述',
-'矛盾著' => '矛盾着',
-'智慧財產權' => '知识产权',
-'智財權' => '知识产权',
-'知識份子' => '知识分子',
-'什勒斯維希' => '石勒苏益格',
-'矽塵' => '矽尘',
-'矽尘' => '矽尘',
-'矽肺' => '矽肺',
-'矽鋼' => '矽钢',
-'矽钢' => '矽钢',
-'矽' => '硅',
-'矽片' => '硅片',
-'矽谷' => '硅谷',
-'硬體' => '硬件',
-'硬碟' => '硬盘',
-'磁碟' => '磁盘',
-'磁軌' => '磁道',
-'福馬林' => '福尔马林',
-'福著' => '福着',
-'福著書' => '福著书',
-'福著作' => '福著作',
-'福著名' => '福著名',
-'福著錄' => '福著录',
-'福著稱' => '福著称',
-'福著者' => '福著者',
-'福著述' => '福著述',
-'私帳' => '私账',
-'葛摩' => '科摩罗',
-'象牙海岸' => '科特迪瓦',
-'積極份子' => '积极分子',
-'流動電話' => '移动电话',
-'行動電話' => '移动电话',
-'流動網絡' => '移动网络',
-'行動網路' => '移动网络',
-'程式設計師' => '程序员',
-'程式控制' => '程控',
-'空中巴士' => '空中客车',
-'空氣品質' => '空气质量',
-'空氣質素' => '空气质量',
-'空著' => '空着',
-'空著書' => '空著书',
-'空著作' => '空著作',
-'空著名' => '空著名',
-'空著錄' => '空著录',
-'空著稱' => '空著称',
-'空著者' => '空著者',
-'空著述' => '空著述',
-'穿著' => '穿着',
-'穿著書' => '穿著书',
-'穿著作' => '穿著作',
-'穿著名' => '穿著名',
-'穿著錄' => '穿著录',
-'穿著稱' => '穿著称',
-'穿著者' => '穿著者',
-'穿著述' => '穿著述',
-'突尼西亞' => '突尼斯',
-'立著' => '立着',
-'立著《' => '立著《',
-'立著作' => '立著作',
-'立著名' => '立著名',
-'立著有' => '立著有',
-'立著称' => '立著称',
-'立著稱' => '立著称',
-'立著者' => '立著者',
-'立著(' => '立著(',
-'豎著' => '竖着',
-'豎著書' => '竖著书',
-'豎著作' => '竖著作',
-'豎著名' => '竖著名',
-'豎著錄' => '竖著录',
-'豎著稱' => '竖著称',
-'豎著者' => '竖著者',
-'豎著述' => '竖著述',
-'站著' => '站着',
-'站著書' => '站著书',
-'站著作' => '站著作',
-'站著名' => '站著名',
-'站著錄' => '站著录',
-'站著稱' => '站著称',
-'站著者' => '站著者',
-'站著述' => '站著述',
-'笑著' => '笑着',
-'笑著書' => '笑著书',
-'笑著作' => '笑著作',
-'笑著名' => '笑著名',
-'笑著錄' => '笑著录',
-'笑著稱' => '笑著称',
-'笑著者' => '笑著者',
-'笑著述' => '笑著述',
-'筆帳' => '笔账',
-'提比里西' => '第比利斯',
-'簽著' => '签着',
-'簽帳' => '签账',
-'運算元' => '算子',
-'演算法' => '算法',
-'算帳' => '算账',
-'管著' => '管着',
-'管著書' => '管著书',
-'管著作' => '管著作',
-'管著名' => '管著名',
-'管著錄' => '管著录',
-'管著稱' => '管著称',
-'管著者' => '管著者',
-'管著述' => '管著述',
-'管帳' => '管账',
-'公尺' => '米',
-'糊塗帳' => '糊涂账',
-'糖份' => '糖分',
-'動畫影集' => '系列动画片',
-'繫著' => '系着',
-'索忍尼辛' => '索尔仁尼琴',
-'索贊尼辛' => '索尔仁尼琴',
-'蘇辛尼津' => '索尔仁尼琴',
-'索馬利亞' => '索马里',
-'索馬利蘭' => '索马里兰',
-'正體中文' => '繁体中文',
-'強斯頓環礁' => '约翰斯顿岛',
-'縱著' => '纵着',
-'組份' => '组分',
-'經常帳' => '经常账',
-'經濟帳' => '经济账',
-'綁著' => '绑着',
-'綁著書' => '绑著书',
-'綁著作' => '绑著作',
-'綁著名' => '绑著名',
-'綁著錄' => '绑著录',
-'綁著稱' => '绑著称',
-'綁著者' => '绑著者',
-'綁著述' => '绑著述',
-'結帳' => '结账',
-'繞著' => '绕着',
-'繞著書' => '绕著书',
-'繞著作' => '绕著作',
-'繞著名' => '绕著名',
-'繞著錄' => '绕著录',
-'繞著稱' => '绕著称',
-'繞著者' => '绕著者',
-'繞著述' => '绕著述',
-'維根斯坦' => '维特根斯坦',
-'繃著' => '绷着',
-'緣份' => '缘分',
-'纏著' => '缠着',
-'纏著書' => '缠著书',
-'纏著作' => '缠著作',
-'纏著名' => '缠著名',
-'纏著錄' => '缠著录',
-'纏著稱' => '缠著称',
-'纏著者' => '缠著者',
-'纏著述' => '缠著述',
-'網站連結' => '网站链接',
-'網路' => '网络',
-'網頁連結' => '网页链接',
-'罩著' => '罩着',
-'罩著書' => '罩著书',
-'罩著作' => '罩著作',
-'罩著名' => '罩著名',
-'罩著錄' => '罩著录',
-'罩著稱' => '罩著称',
-'罩著者' => '罩著者',
-'罩著述' => '罩著述',
-'美著' => '美着',
-'美著書' => '美著书',
-'美著作' => '美著作',
-'美著名' => '美著名',
-'美著錄' => '美著录',
-'美著称' => '美著称',
-'美著稱' => '美著称',
-'美著者' => '美著者',
-'美著述' => '美著述',
-'耀著' => '耀着',
-'耀著書' => '耀著书',
-'耀著作' => '耀著作',
-'耀著名' => '耀著名',
-'耀著錄' => '耀著录',
-'耀著稱' => '耀著称',
-'耀著者' => '耀著者',
-'耀著述' => '耀著述',
-'寮國' => '老挝',
-'寮人民民主共和國' => '老挝人民民主共和国',
-'寮語' => '老挝语',
-'考著' => '考着',
-'考著書' => '考著书',
-'考著作' => '考著作',
-'考著名' => '考著名',
-'考著錄' => '考著录',
-'考著稱' => '考著称',
-'考著者' => '考著者',
-'考著述' => '考著述',
-'職份' => '职分',
-'辛康納利' => '肖恩·康纳利',
-'蕭士塔高維奇' => '肖斯塔科维奇',
-'蕭士達高維契' => '肖斯塔科维奇',
-'甘迺迪' => '肯尼迪',
-'背著' => '背着',
-'背著書' => '背著书',
-'背著作' => '背著作',
-'背著名' => '背著名',
-'背著錄' => '背著录',
-'背著稱' => '背著称',
-'背著者' => '背著者',
-'背著述' => '背著述',
-'膠著' => '胶着',
-'膠著書' => '胶著书',
-'膠著作' => '胶著作',
-'膠著名' => '胶著名',
-'膠著錄' => '胶著录',
-'膠著稱' => '胶著称',
-'膠著者' => '胶著者',
-'膠著述' => '胶著述',
-'舒麥加' => '舒马赫',
-'太空梭' => '航天飞机',
-'穿梭機' => '航天飞机',
-'愛滋' => '艾滋',
-'晶元' => '芯片',
-'晶片' => '芯片',
-'蘇利南' => '苏里南',
-'苦著' => '苦着',
-'苦著書' => '苦著书',
-'苦著作' => '苦著作',
-'苦著名' => '苦著名',
-'苦著錄' => '苦著录',
-'苦著稱' => '苦著称',
-'苦著者' => '苦著者',
-'苦著述' => '苦著述',
-'英吋' => '英寸',
-'英呎' => '英尺',
-'共和联邦' => '英联邦',
-'大英國協' => '英联邦',
-'士多啤梨' => '草莓',
-'螢光棒' => '荧光棒',
-'螢屏' => '荧屏',
-'霍爾斯坦' => '荷尔斯泰因',
-'莫三比克' => '莫桑比克',
-'雷伊泰灣' => '莱特湾',
-'賴索托' => '莱索托',
-'獲著' => '获着',
-'穫著' => '获着',
-'獲著書' => '获著书',
-'獲著作' => '获著作',
-'獲著名' => '获著名',
-'獲著錄' => '获著录',
-'獲著稱' => '获著称',
-'獲著者' => '获著者',
-'獲著述' => '获著述',
-'塞拉耶佛' => '萨拉热窝',
-'落著' => '落着',
-'落著書' => '落著书',
-'落著作' => '落著作',
-'落著名' => '落著名',
-'落著錄' => '落著录',
-'落著稱' => '落著称',
-'落著者' => '落著者',
-'落著述' => '落著述',
-'滿地可' => '蒙特利尔',
-'蒙特婁' => '蒙特利尔',
-'蒙著' => '蒙着',
-'蒙著書' => '蒙著书',
-'蒙著作' => '蒙著作',
-'蒙著名' => '蒙著名',
-'蒙著錄' => '蒙著录',
-'蒙著稱' => '蒙著称',
-'蒙著者' => '蒙著者',
-'蒙著述' => '蒙著述',
-'藍芽' => '蓝牙',
-'蘊涵著' => '蕴涵着',
-'薛丁格' => '薛定谔',
-'藏著' => '藏着',
-'藏著書' => '藏著书',
-'藏著作' => '藏著作',
-'藏著名' => '藏著名',
-'藏著錄' => '藏著录',
-'藏著稱' => '藏著称',
-'藏著者' => '藏著者',
-'藏著述' => '藏著述',
-'蘸著' => '蘸着',
-'蘸著書' => '蘸著书',
-'蘸著作' => '蘸著作',
-'蘸著名' => '蘸著名',
-'蘸著錄' => '蘸著录',
-'蘸著稱' => '蘸著称',
-'蘸著者' => '蘸著者',
-'蘸著述' => '蘸著述',
-'行人路权' => '行人路权',
-'行人路權' => '行人路权',
-'行著' => '行着',
-'行著書' => '行著书',
-'行著作' => '行著作',
-'行著名' => '行著名',
-'行著錄' => '行著录',
-'行著稱' => '行著称',
-'行著者' => '行著者',
-'行著述' => '行著述',
-'衣著' => '衣着',
-'衣著書' => '衣著书',
-'衣著作' => '衣著作',
-'衣著名' => '衣著名',
-'衣著錄' => '衣著录',
-'衣著称' => '衣著称',
-'衣著稱' => '衣著称',
-'衣著者' => '衣著者',
-'衣著述' => '衣著述',
-'表姊' => '表姐',
-'裝著' => '装着',
-'裝著書' => '装著书',
-'裝著作' => '装著作',
-'裝著名' => '装著名',
-'裝著錄' => '装著录',
-'裝著稱' => '装著称',
-'裝著者' => '装著者',
-'裝著述' => '装著述',
-'裹著' => '裹着',
-'裹著書' => '裹著书',
-'裹著作' => '裹著作',
-'裹著名' => '裹著名',
-'裹著錄' => '裹著录',
-'裹著稱' => '裹著称',
-'裹著者' => '裹著者',
-'裹著述' => '裹著述',
-'要帳' => '要账',
-'覆蓋著' => '覆盖着',
-'覆著' => '覆着',
-'見著' => '见着',
-'見著書' => '见著书',
-'見著作' => '见著作',
-'見著名' => '见著名',
-'見著錄' => '见著录',
-'見著稱' => '见著称',
-'見著者' => '见著者',
-'見著述' => '见著述',
-'規畫' => '规划',
-'視著' => '视着',
-'視著名' => '视著名',
-'占士邦' => '詹姆斯·邦德',
-'警戒著' => '警戒着',
-'計畫' => '计划',
-'電腦程式' => '计算机程序',
-'認帳' => '认账',
-'記著' => '记着',
-'記著書' => '记著书',
-'記著作' => '记著作',
-'記著名' => '记著名',
-'記著錄' => '记著录',
-'記著稱' => '记著称',
-'記著者' => '记著者',
-'記著述' => '记著述',
-'記帳' => '记账',
-'片語' => '词组',
-'試著' => '试着',
-'試著書' => '试著书',
-'試著作' => '试著作',
-'試著名' => '试著名',
-'試著錄' => '试著录',
-'試著稱' => '试著称',
-'試著者' => '试著者',
-'試著述' => '试著述',
-'語著' => '语着',
-'語著書' => '语著书',
-'語著作' => '语著作',
-'語著名' => '语著名',
-'語著錄' => '语著录',
-'語著稱' => '语著称',
-'語著者' => '语著者',
-'語著述' => '语著述',
-'說著' => '说着',
-'說著作' => '说著作',
-'說著稱' => '说著称',
-'說著者' => '说著者',
-'說著述' => '说著述',
-'諾曼第' => '诺曼底',
-'數據機' => '调制解调器',
-'象徵著' => '象征着',
-'象徵著名' => '象征著名',
-'碧咸' => '贝克汉姆',
-'貝爾格勒' => '贝尔格莱德',
-'負著' => '负着',
-'貢寮' => '贡寮',
-'帳上' => '账上',
-'帳冊' => '账册',
-'帳務' => '账务',
-'帳單' => '账单',
-'帳號' => '账号',
-'帳外' => '账外',
-'帳戶' => '账户',
-'帳房' => '账房',
-'帳本' => '账本',
-'帳款' => '账款',
-'帳目' => '账目',
-'帳簿' => '账簿',
-'帳面' => '账面',
-'賒帳' => '赊账',
-'賴帳' => '赖账',
-'尚比亞' => '赞比亚',
-'西臺人' => '赫梯人',
-'西臺國' => '赫梯国',
-'西臺帝' => '赫梯帝',
-'西臺文' => '赫梯文',
-'西臺族' => '赫梯族',
-'西臺王' => '赫梯王',
-'西臺語' => '赫梯语',
-'赫魯雪夫' => '赫鲁晓夫',
-'走為上著' => '走为上着',
-'走著' => '走着',
-'走著書' => '走著书',
-'走著作' => '走著作',
-'走著名' => '走著名',
-'走著錄' => '走著录',
-'走著稱' => '走著称',
-'走著者' => '走著者',
-'走著述' => '走著述',
-'趕著' => '赶着',
-'趕著書' => '赶著书',
-'趕著作' => '赶著作',
-'趕著名' => '赶著名',
-'趕著錄' => '赶著录',
-'趕著稱' => '赶著称',
-'趕著者' => '赶著者',
-'趕著述' => '赶著述',
-'超連結' => '超链接',
-'趴著' => '趴着',
-'趴著書' => '趴著书',
-'趴著作' => '趴著作',
-'趴著名' => '趴著名',
-'趴著錄' => '趴著录',
-'趴著稱' => '趴著称',
-'趴著者' => '趴著者',
-'趴著述' => '趴著述',
-'躍著' => '跃着',
-'躍著書' => '跃著书',
-'躍著作' => '跃著作',
-'躍著名' => '跃著名',
-'躍著錄' => '跃著录',
-'躍著稱' => '跃著称',
-'躍著者' => '跃著者',
-'躍著述' => '跃著述',
-'跑著' => '跑着',
-'跑著書' => '跑著书',
-'跑著作' => '跑著作',
-'跑著名' => '跑著名',
-'跑著錄' => '跑著录',
-'跑著稱' => '跑著称',
-'跑著者' => '跑著者',
-'跑著述' => '跑著述',
-'跟著' => '跟着',
-'跟著書' => '跟著书',
-'跟著作' => '跟著作',
-'跟著名' => '跟著名',
-'跟著錄' => '跟著录',
-'跟著稱' => '跟著称',
-'跟著者' => '跟著者',
-'跟著述' => '跟著述',
-'跪著' => '跪着',
-'跪著書' => '跪著书',
-'跪著作' => '跪著作',
-'跪著名' => '跪著名',
-'跪著錄' => '跪著录',
-'跪著稱' => '跪著称',
-'跪著者' => '跪著者',
-'跪著述' => '跪著述',
-'跳著' => '跳着',
-'跳著書' => '跳著书',
-'跳著作' => '跳著作',
-'跳著名' => '跳著名',
-'跳著錄' => '跳著录',
-'跳著稱' => '跳著称',
-'跳著者' => '跳著者',
-'跳著述' => '跳著述',
-'踏著' => '踏着',
-'踏著書' => '踏著书',
-'踏著作' => '踏著作',
-'踏著名' => '踏著名',
-'踏著錄' => '踏著录',
-'踏著稱' => '踏著称',
-'踏著者' => '踏著者',
-'踏著述' => '踏著述',
-'踩著' => '踩着',
-'踩著書' => '踩著书',
-'踩著作' => '踩著作',
-'踩著名' => '踩著名',
-'踩著錄' => '踩著录',
-'踩著稱' => '踩著称',
-'踩著者' => '踩著者',
-'踩著述' => '踩著述',
-'笨豬跳' => '蹦极跳',
-'绑紧跳' => '蹦极跳',
-'身分' => '身份',
-'身著' => '身着',
-'身著書' => '身著书',
-'身著作' => '身著作',
-'身著名' => '身著名',
-'身著錄' => '身著录',
-'身著稱' => '身著称',
-'身著者' => '身著者',
-'身著述' => '身著述',
-'躺著' => '躺着',
-'躺著書' => '躺著书',
-'躺著作' => '躺著作',
-'躺著名' => '躺著名',
-'躺著錄' => '躺著录',
-'躺著稱' => '躺著称',
-'躺著者' => '躺著者',
-'躺著述' => '躺著述',
-'轉著' => '转着',
-'轉著書' => '转著书',
-'轉著作' => '转著作',
-'轉著名' => '转著名',
-'轉著錄' => '转著录',
-'轉著稱' => '转著称',
-'轉著者' => '转著者',
-'轉著述' => '转著述',
-'轉帳' => '转账',
-'軟體' => '软件',
-'軟體動物' => '软体动物',
-'軟體家具' => '软体家具',
-'軟碟機' => '软驱',
-'載著' => '载着',
-'載著書' => '载著书',
-'載著作' => '载著作',
-'載著名' => '载著名',
-'載著錄' => '载著录',
-'載著稱' => '载著称',
-'載著者' => '载著者',
-'載著述' => '载著述',
-'達·文西' => '达·芬奇',
-'達著' => '达着',
-'三蘭港' => '达累斯萨拉姆',
-'達文西' => '达芬奇',
-'達著書' => '达著书',
-'達著作' => '达著作',
-'達著名' => '达著名',
-'達著錄' => '达著录',
-'達著稱' => '达著称',
-'達著者' => '达著者',
-'達著述' => '达著述',
-'過份' => '过分',
-'過著' => '过着',
-'過著作' => '过著作',
-'過著名' => '过著名',
-'過著錄' => '过著录',
-'過著稱' => '过著称',
-'過著者' => '过著者',
-'過著述' => '过著述',
-'米高·奧雲' => '迈克尔·欧文',
-'還帳' => '还账',
-'演化論' => '进化论',
-'進帳' => '进账',
-'連著' => '连着',
-'連結他' => '连结他',
-'連著書' => '连著书',
-'連著作' => '连著作',
-'連著名' => '连著名',
-'連著錄' => '连著录',
-'連著稱' => '连著称',
-'連著者' => '连著者',
-'連著述' => '连著述',
-'杜拜' => '迪拜',
-'迫著' => '迫着',
-'疊代' => '迭代',
-'追著' => '追着',
-'追著書' => '追著书',
-'追著作' => '追著作',
-'追著名' => '追著名',
-'追著錄' => '追著录',
-'追著稱' => '追著称',
-'追著者' => '追著者',
-'追著述' => '追著述',
-'逆著' => '逆着',
-'逆著書' => '逆著书',
-'逆著作' => '逆著作',
-'逆著名' => '逆著名',
-'逆著錄' => '逆著录',
-'逆著稱' => '逆著称',
-'逆著者' => '逆著者',
-'逆著述' => '逆著述',
-'逼著' => '逼着',
-'逼著書' => '逼著书',
-'逼著作' => '逼著作',
-'逼著名' => '逼著名',
-'逼著錄' => '逼著录',
-'逼著稱' => '逼著称',
-'逼著者' => '逼著者',
-'逼著述' => '逼著述',
-'遇著' => '遇着',
-'遇著書' => '遇著书',
-'遇著作' => '遇著作',
-'遇著名' => '遇著名',
-'遇著錄' => '遇著录',
-'遇著称' => '遇著称',
-'遇著稱' => '遇著称',
-'遇著者' => '遇著者',
-'遇著述' => '遇著述',
-'遍佈著' => '遍布着',
-'遍布著' => '遍布着',
-'部份' => '部分',
-'配合著' => '配合着',
-'配合著名' => '配合著名',
-'配著' => '配着',
-'配著書' => '配著书',
-'配著作' => '配著作',
-'配著名' => '配著名',
-'配著錄' => '配著录',
-'配著稱' => '配著称',
-'配著者' => '配著者',
-'配著述' => '配著述',
-'釀著' => '酿着',
-'釀著書' => '酿著书',
-'釀著作' => '酿著作',
-'釀著名' => '酿著名',
-'釀著錄' => '酿著录',
-'釀著稱' => '酿著称',
-'釀著者' => '酿著者',
-'釀著述' => '酿著述',
-'黎克特制' => '里氏',
-'芮氏0' => '里氏0',
-'芮氏1' => '里氏1',
-'芮氏2' => '里氏2',
-'芮氏3' => '里氏3',
-'芮氏4' => '里氏4',
-'芮氏5' => '里氏5',
-'芮氏6' => '里氏6',
-'芮氏7' => '里氏7',
-'芮氏8' => '里氏8',
-'芮氏9' => '里氏9',
-'芮氏地震規模' => '里氏地震规模',
-'芮氏規模' => '里氏震级',
-'金夏沙' => '金沙萨',
-'鈽' => '钚',
-'鍅' => '钫',
-'狄托' => '铁托',
-'卯足' => '铆足',
-'鋪著' => '铺着',
-'鋪著書' => '铺著书',
-'鋪著作' => '铺著作',
-'鋪著名' => '铺著名',
-'鋪著錄' => '铺著录',
-'鋪著稱' => '铺著称',
-'鋪著者' => '铺著者',
-'鋪著述' => '铺著述',
-'鏈結' => '链接',
-'銷帳' => '销账',
-'鉲' => '锎',
-'鎝' => '锝',
-'鉳' => '锫',
-'鑀' => '锿',
-'鋂' => '镅',
-'錼' => '镎',
-'孟德爾遜' => '门德尔松',
-'孟德爾頌' => '门德尔松',
-'快閃記憶體' => '闪存',
-'閉著' => '闭着',
-'閉著書' => '闭著书',
-'閉著作' => '闭著作',
-'閉著名' => '闭著名',
-'閉著錄' => '闭著录',
-'閉著稱' => '闭著称',
-'閉著者' => '闭著者',
-'閉著述' => '闭著述',
-'閑著' => '闲着',
-'閒著' => '闲着',
-'閑著書' => '闲著书',
-'閑著作' => '闲著作',
-'閑著名' => '闲著名',
-'閑著錄' => '闲著录',
-'閑著稱' => '闲著称',
-'閑著者' => '闲著者',
-'閑著述' => '闲著述',
-'悶著' => '闷着',
-'鬧著' => '闹着',
-'聞著' => '闻着',
-'亞塞拜然' => '阿塞拜疆',
-'阿布達比' => '阿布扎比',
-'阿拉伯聯合大公國' => '阿拉伯联合酋长国',
-'亞斯文' => '阿斯旺',
-'附著' => '附着',
-'附著書' => '附著书',
-'附著作' => '附著作',
-'附著名' => '附著名',
-'附著錄' => '附著录',
-'附著稱' => '附著称',
-'附著者' => '附著者',
-'附著述' => '附著述',
-'陋著' => '陋着',
-'陋著書' => '陋著书',
-'陋著作' => '陋著作',
-'陋著名' => '陋著名',
-'陋著錄' => '陋著录',
-'陋著稱' => '陋著称',
-'陋著者' => '陋著者',
-'陋著述' => '陋著述',
-'陪著' => '陪着',
-'陪著書' => '陪著书',
-'陪著作' => '陪著作',
-'陪著名' => '陪著名',
-'陪著錄' => '陪著录',
-'陪著稱' => '陪著称',
-'陪著者' => '陪著者',
-'陪著述' => '陪著述',
-'隨著' => '随着',
-'隨著書' => '随著书',
-'隨著作' => '随著作',
-'隨著名' => '随著名',
-'隨著錄' => '随著录',
-'隨著稱' => '随著称',
-'隨著者' => '随著者',
-'隨著述' => '随著述',
-'私隱' => '隐私',
-'隔著' => '隔着',
-'隔著書' => '隔著书',
-'隔著作' => '隔著作',
-'隔著名' => '隔著名',
-'隔著錄' => '隔著录',
-'隔著稱' => '隔著称',
-'隔著者' => '隔著者',
-'隔著述' => '隔著述',
-'耶加達' => '雅加达',
-'雅爾達' => '雅尔塔',
-'雅著' => '雅着',
-'雅著書' => '雅著书',
-'雅著作' => '雅著作',
-'雅著名' => '雅著名',
-'雅著錄' => '雅著录',
-'雅著称' => '雅著称',
-'雅著稱' => '雅著称',
-'雅著者' => '雅著者',
-'雅著述' => '雅著述',
-'雷諾瓦' => '雷诺阿',
-'荷姆茲' => '霍尔木兹',
-'非份' => '非分',
-'靠著' => '靠着',
-'靠著作' => '靠著作',
-'靠著名' => '靠著名',
-'靠著錄' => '靠著录',
-'靠著稱' => '靠著称',
-'靠著者' => '靠著者',
-'靠著述' => '靠著述',
-'南韓' => '韩国',
-'音樂錄影帶' => '音乐录影带',
-'頂著' => '顶着',
-'頂著書' => '顶著书',
-'頂著作' => '顶著作',
-'頂著名' => '顶著名',
-'頂著錄' => '顶著录',
-'頂著稱' => '顶著称',
-'頂著者' => '顶著者',
-'頂著述' => '顶著述',
-'順著' => '顺着',
-'順著書' => '顺著书',
-'順著作' => '顺著作',
-'順著名' => '顺著名',
-'順著錄' => '顺著录',
-'順著稱' => '顺著称',
-'順著者' => '顺著者',
-'順著述' => '顺著述',
-'領著' => '领着',
-'領著書' => '领著书',
-'領著作' => '领著作',
-'領著名' => '领著名',
-'領著錄' => '领著录',
-'領著稱' => '领著称',
-'領著者' => '领著者',
-'領著述' => '领著述',
-'飃著' => '飘着',
-'飄著' => '飘着',
-'飄著書' => '飘著书',
-'飄著作' => '飘著作',
-'飄著名' => '飘著名',
-'飄著錄' => '飘著录',
-'飄著稱' => '飘著称',
-'飄著者' => '飘著者',
-'飄著述' => '飘著述',
-'行政總裁' => '首席执行官',
-'執行長、' => '首席执行官、',
-'執行長。' => '首席执行官。',
-'執行長,' => '首席执行官,',
-'財務長、' => '首席财务官、',
-'財務長。' => '首席财务官。',
-'財務長,' => '首席财务官,',
-'營運長、' => '首席运营官、',
-'營運長。' => '首席运营官。',
-'營運長,' => '首席运营官,',
-'馬爾地夫' => '马尔代夫',
-'萌島' => '马恩岛',
-'馬拉威' => '马拉维',
-'馬斯垂克' => '马斯特里赫特',
-'馬爾他' => '马耳他',
-'麻薩諸塞' => '马萨诸塞',
-'馬利共和國' => '马里共和国',
-'駛著' => '驶着',
-'駕著' => '驾着',
-'駕著書' => '驾著书',
-'駕著作' => '驾著作',
-'駕著名' => '驾著名',
-'駕著錄' => '驾著录',
-'駕著稱' => '驾著称',
-'駕著者' => '驾著者',
-'駕著述' => '驾著述',
-'罵著' => '骂着',
-'罵著書' => '骂著书',
-'罵著作' => '骂著作',
-'罵著名' => '骂著名',
-'罵著錄' => '骂著录',
-'罵著稱' => '骂著称',
-'罵著者' => '骂著者',
-'罵著述' => '骂著述',
-'騎著' => '骑着',
-'騎著書' => '骑著书',
-'騎著作' => '骑著作',
-'騎著名' => '骑著名',
-'騎著錄' => '骑著录',
-'騎著稱' => '骑著称',
-'騎著者' => '骑著者',
-'騎著述' => '骑著述',
-'騙著' => '骗着',
-'騙著書' => '骗著书',
-'騙著作' => '骗著作',
-'騙著名' => '骗著名',
-'騙著錄' => '骗著录',
-'騙著稱' => '骗著称',
-'騙著者' => '骗著者',
-'騙著述' => '骗著述',
-'尖峰時段' => '高峰时段',
-'尖峰時間' => '高峰时间',
-'高畫質' => '高清',
-'高著' => '高着',
-'高著書' => '高著书',
-'高著作' => '高著作',
-'高著名' => '高著名',
-'高著錄' => '高著录',
-'高著称' => '高著称',
-'高著稱' => '高著称',
-'高著者' => '高著者',
-'高著述' => '高著述',
-'魚雷' => '鱼雷',
-'鱼雷' => '鱼雷',
-'咪高峰' => '麦克风',
-'黏著' => '黏着',
-'黏著書' => '黏著书',
-'黏著作' => '黏著作',
-'黏著名' => '黏著名',
-'黏著錄' => '黏著录',
-'黏著稱' => '黏著称',
-'黏著者' => '黏著者',
-'黏著述' => '黏著述',
-'蒙特內哥羅' => '黑山',
-'滑鼠' => '鼠标',
-);
index ca47fce..43260d0 100644 (file)
@@ -132,6 +132,8 @@ class HistoryAction extends FormlessAction {
                        return;
                }
 
+               $this->addHelpLink( '//meta.wikimedia.org/wiki/Special:MyLanguage/Help:Page_history', true );
+
                // Fail nicely if article doesn't exist.
                if ( !$this->page->exists() ) {
                        $out->addWikiMsg( 'nohistory' );
index b371848..69cd7aa 100644 (file)
@@ -83,8 +83,7 @@ class RawAction extends FormlessAction {
                $response->header( 'Content-type: ' . $contentType . '; charset=UTF-8' );
                // Output may contain user-specific data;
                // vary generated content for open sessions on private wikis
-               $privateCache = !User::isEveryoneAllowed( 'read' ) &&
-                       ( $smaxage == 0 || MediaWiki\Session\SessionManager::getGlobalSession()->isPersistent() );
+               $privateCache = !User::isEveryoneAllowed( 'read' ) && ( $smaxage == 0 || session_id() != '' );
                // Don't accidentally cache cookies if user is logged in (T55032)
                $privateCache = $privateCache || $this->getUser()->isLoggedIn();
                $mode = $privateCache ? 'private' : 'public';
index 8990b75..fae49f6 100644 (file)
@@ -32,8 +32,10 @@ class SubmitAction extends EditAction {
        }
 
        public function show() {
-               // Send a cookie so anons get talk message notifications
-               MediaWiki\Session\SessionManager::getGlobalSession()->persist();
+               if ( session_id() === '' ) {
+                       // Send a cookie so anons get talk message notifications
+                       wfSetupSession();
+               }
 
                parent::show();
        }
index 5f67a22..b9163d2 100644 (file)
@@ -637,6 +637,17 @@ abstract class ApiBase extends ContextSource {
         * @{
         */
 
+       /**
+        * Indicate if the module supports dynamically-determined parameters that
+        * cannot be included in self::getAllowedParams().
+        * @return string|array|Message|null Return null if the module does not
+        *  support additional dynamic parameters, otherwise return a message
+        *  describing them.
+        */
+       public function dynamicParameterDocumentation() {
+               return null;
+       }
+
        /**
         * This method mangles parameter name based on the prefix supplied to the constructor.
         * Override this method to change parameter name during runtime
@@ -2512,19 +2523,6 @@ abstract class ApiBase extends ContextSource {
        /// @deprecated since 1.24
        const PROP_NULLABLE = 1;
 
-       /**
-        * Formerly returned a string that identifies the version of the extending
-        * class. Typically included the class name, the svn revision, timestamp,
-        * and last author. Usually done with SVN's Id keyword
-        *
-        * @deprecated since 1.21, version string is no longer supported
-        * @return string
-        */
-       public function getVersion() {
-               wfDeprecated( __METHOD__, '1.21' );
-               return '';
-       }
-
        /**
         * Formerly used to fetch a list of possible properites in the result,
         * somehow organized with respect to the prop parameter that causes them to
index a044be2..1368bda 100644 (file)
@@ -59,8 +59,10 @@ class ApiCreateAccount extends ApiBase {
 
                $params = $this->extractRequestParams();
 
-               // Make sure session is persisted
-               MediaWiki\Session\SessionManager::getGlobalSession()->persist();
+               // Init session if necessary
+               if ( session_id() == '' ) {
+                       wfSetupSession();
+               }
 
                if ( $params['mailpassword'] && !$params['email'] ) {
                        $this->dieUsageMsg( 'noemail' );
index 9bbb0b0..bbea20b 100644 (file)
@@ -392,8 +392,9 @@ class ApiHelp extends ApiBase {
                        }
 
                        $params = $module->getFinalParams( ApiBase::GET_VALUES_FOR_HELP );
+                       $dynamicParams = $module->dynamicParameterDocumentation();
                        $groups = array();
-                       if ( $params ) {
+                       if ( $params || $dynamicParams !== null ) {
                                $help['parameters'] .= Html::openElement( 'div',
                                        array( 'class' => 'apihelp-block apihelp-parameters' )
                                );
@@ -654,6 +655,17 @@ class ApiHelp extends ApiBase {
                                        }
                                }
 
+                               if ( $dynamicParams !== null ) {
+                                       $dynamicParams = ApiBase::makeMessage( $dynamicParams, $context, array(
+                                               $module->getModulePrefix(),
+                                               $module->getModuleName(),
+                                               $module->getModulePath()
+                                       ) );
+                                       $help['parameters'] .= Html::element( 'dt', null, '*' );
+                                       $help['parameters'] .= Html::rawElement( 'dd',
+                                               array( 'class' => 'description' ), $dynamicParams->parse() );
+                               }
+
                                $help['parameters'] .= Html::closeElement( 'dl' );
                                $help['parameters'] .= Html::closeElement( 'div' );
                        }
index 860e3b2..eb376d3 100644 (file)
@@ -24,7 +24,6 @@
  *
  * @file
  */
-
 use MediaWiki\Logger\LoggerFactory;
 
 /**
@@ -63,72 +62,26 @@ class ApiLogin extends ApiBase {
 
                $result = array();
 
-               // Make sure session is persisted
-               $session = MediaWiki\Session\SessionManager::getGlobalSession();
-               $session->persist();
-
-               // Make sure it's possible to log in
-               if ( !$session->canSetUser() ) {
-                       $this->getResult()->addValue( null, 'login', array(
-                               'result' => 'Aborted',
-                               'reason' => 'Cannot log in when using ' .
-                                       $session->getProvider()->describe( Language::factory( 'en' ) ),
-                       ) );
-
-                       return;
+               // Init session if necessary
+               if ( session_id() == '' ) {
+                       wfSetupSession();
                }
 
-               $authRes = false;
                $context = new DerivativeContext( $this->getContext() );
-               $loginType = 'N/A';
-
-               // Check login token
-               $token = LoginForm::getLoginToken();
-               if ( !$token ) {
-                       LoginForm::setLoginToken();
-                       $authRes = LoginForm::NEED_TOKEN;
-               } elseif ( !$params['token'] ) {
-                       $authRes = LoginForm::NEED_TOKEN;
-               } elseif ( $token !== $params['token'] ) {
-                       $authRes = LoginForm::WRONG_TOKEN;
-               }
-
-               // Try bot passwords
-               if ( $authRes === false && $this->getConfig()->get( 'EnableBotPasswords' ) &&
-                       strpos( $params['name'], BotPassword::getSeparator() ) !== false
-               ) {
-                       $status = BotPassword::login(
-                               $params['name'], $params['password'], $this->getRequest()
-                       );
-                       if ( $status->isOk() ) {
-                               $session = $status->getValue();
-                               $authRes = LoginForm::SUCCESS;
-                               $loginType = 'BotPassword';
-                       } else {
-                               LoggerFactory::getInstance( 'authmanager' )->info(
-                                       'BotPassword login failed: ' . $status->getWikiText()
-                               );
-                       }
-               }
-
-               // Normal login
-               if ( $authRes === false ) {
-                       $context->setRequest( new DerivativeRequest(
-                               $this->getContext()->getRequest(),
-                               array(
-                                       'wpName' => $params['name'],
-                                       'wpPassword' => $params['password'],
-                                       'wpDomain' => $params['domain'],
-                                       'wpLoginToken' => $params['token'],
-                                       'wpRemember' => ''
-                               )
-                       ) );
-                       $loginForm = new LoginForm();
-                       $loginForm->setContext( $context );
-                       $authRes = $loginForm->authenticateUserData();
-                       $loginType = 'LoginForm';
-               }
+               $context->setRequest( new DerivativeRequest(
+                       $this->getContext()->getRequest(),
+                       array(
+                               'wpName' => $params['name'],
+                               'wpPassword' => $params['password'],
+                               'wpDomain' => $params['domain'],
+                               'wpLoginToken' => $params['token'],
+                               'wpRemember' => ''
+                       )
+               ) );
+               $loginForm = new LoginForm();
+               $loginForm->setContext( $context );
 
+               $authRes = $loginForm->authenticateUserData();
                switch ( $authRes ) {
                        case LoginForm::SUCCESS:
                                $user = $context->getUser();
@@ -154,16 +107,16 @@ class ApiLogin extends ApiBase {
                                // SessionManager/AuthManager are *really* going to break it.
                                $result['lgtoken'] = $user->getToken();
                                $result['cookieprefix'] = $this->getConfig()->get( 'CookiePrefix' );
-                               $result['sessionid'] = $session->getId();
+                               $result['sessionid'] = session_id();
                                break;
 
                        case LoginForm::NEED_TOKEN:
                                $result['result'] = 'NeedToken';
-                               $result['token'] = LoginForm::getLoginToken();
+                               $result['token'] = $loginForm->getLoginToken();
 
                                // @todo: See above about deprecation
                                $result['cookieprefix'] = $this->getConfig()->get( 'CookiePrefix' );
-                               $result['sessionid'] = $session->getId();
+                               $result['sessionid'] = session_id();
                                break;
 
                        case LoginForm::WRONG_TOKEN:
@@ -234,7 +187,6 @@ class ApiLogin extends ApiBase {
                LoggerFactory::getInstance( 'authmanager' )->info( 'Login attempt', array(
                        'event' => 'login',
                        'successful' => $authRes === LoginForm::SUCCESS,
-                       'loginType' => $loginType,
                        'status' => LoginForm::$statusCodes[$authRes],
                ) );
        }
index b40f5a3..bf0ca9c 100644 (file)
 class ApiLogout extends ApiBase {
 
        public function execute() {
-               // Make sure it's possible to log out
-               $session = MediaWiki\Session\SessionManager::getGlobalSession();
-               if ( !$session->canSetUser() ) {
-                       $this->dieUsage(
-                               'Cannot log out when using ' .
-                                       $session->getProvider()->describe( Language::factory( 'en' ) ),
-                               'cannotlogout'
-                       );
-               }
-
                $user = $this->getUser();
                $oldName = $user->getName();
                $user->logout();
index 6ddc28a..f6f4d20 100644 (file)
@@ -769,7 +769,7 @@ class ApiMain extends ApiBase {
                                        return;
                                }
                                // Logged out, send normal public headers below
-                       } elseif ( MediaWiki\Session\SessionManager::getGlobalSession()->isPersistent() ) {
+                       } elseif ( session_id() != '' ) {
                                // Logged in or otherwise has session (e.g. anonymous users who have edited)
                                // Mark request private
                                $response->header( "Cache-Control: $privateCache" );
@@ -1231,7 +1231,8 @@ class ApiMain extends ApiBase {
         * @param array $params An array with the request parameters
         */
        protected function setupExternalResponse( $module, $params ) {
-               if ( !$this->getRequest()->wasPosted() && $module->mustBePosted() ) {
+               $request = $this->getRequest();
+               if ( !$request->wasPosted() && $module->mustBePosted() ) {
                        // Module requires POST. GET request might still be allowed
                        // if $wgDebugApi is true, otherwise fail.
                        $this->dieUsageMsgOrDebug( array( 'mustbeposted', $this->mAction ) );
@@ -1243,6 +1244,15 @@ class ApiMain extends ApiBase {
                        // Create an appropriate printer
                        $this->mPrinter = $this->createPrinterByName( $params['format'] );
                }
+
+               if ( $request->getProtocol() === 'http' && (
+                       $request->getCookie( 'forceHTTPS', '' ) ||
+                       ( $this->getUser()->isLoggedIn() &&
+                               $this->getUser()->requiresHTTPS() )
+               ) ) {
+                       $this->logFeatureUsage( 'https-expected' );
+                       $this->setWarning( 'HTTP used when HTTPS was expected' );
+               }
        }
 
        /**
index a808ac0..18ca0ab 100644 (file)
@@ -387,6 +387,20 @@ class ApiParamInfo extends ApiBase {
                }
                ApiResult::setIndexedTagName( $ret['parameters'], 'param' );
 
+               $dynamicParams = $module->dynamicParameterDocumentation();
+               if ( $dynamicParams !== null ) {
+                       if ( $this->helpFormat === 'none' ) {
+                               $ret['dynamicparameters'] = true;
+                       } else {
+                               $dynamicParams = ApiBase::makeMessage( $dynamicParams, $this->context, array(
+                                       $module->getModulePrefix(),
+                                       $module->getModuleName(),
+                                       $module->getModulePath()
+                               ) );
+                               $this->formatHelpMessages( $ret, 'dynamicparameters', array( $dynamicParams ) );
+                       }
+               }
+
                return $ret;
        }
 
index db9ad90..27690ff 100644 (file)
@@ -33,7 +33,8 @@ class ApiQueryInfo extends ApiQueryBase {
 
        private $fld_protection = false, $fld_talkid = false,
                $fld_subjectid = false, $fld_url = false,
-               $fld_readable = false, $fld_watched = false, $fld_watchers = false,
+               $fld_readable = false, $fld_watched = false,
+               $fld_watchers = false, $fld_visitingwatchers = false,
                $fld_notificationtimestamp = false,
                $fld_preload = false, $fld_displaytitle = false;
 
@@ -49,8 +50,8 @@ class ApiQueryInfo extends ApiQueryBase {
        private $pageRestrictions, $pageIsRedir, $pageIsNew, $pageTouched,
                $pageLatest, $pageLength;
 
-       private $protections, $restrictionTypes, $watched, $watchers, $notificationtimestamps,
-               $talkids, $subjectids, $displaytitles;
+       private $protections, $restrictionTypes, $watched, $watchers, $visitingwatchers,
+               $notificationtimestamps, $talkids, $subjectids, $displaytitles;
        private $showZeroWatchers = false;
 
        private $tokenFunctions;
@@ -299,6 +300,7 @@ class ApiQueryInfo extends ApiQueryBase {
                        $this->fld_protection = isset( $prop['protection'] );
                        $this->fld_watched = isset( $prop['watched'] );
                        $this->fld_watchers = isset( $prop['watchers'] );
+                       $this->fld_visitingwatchers = isset( $prop['visitingwatchers'] );
                        $this->fld_notificationtimestamp = isset( $prop['notificationtimestamp'] );
                        $this->fld_talkid = isset( $prop['talkid'] );
                        $this->fld_subjectid = isset( $prop['subjectid'] );
@@ -355,6 +357,10 @@ class ApiQueryInfo extends ApiQueryBase {
                        $this->getWatcherInfo();
                }
 
+               if ( $this->fld_visitingwatchers ) {
+                       $this->getVisitingWatcherInfo();
+               }
+
                // Run the talkid/subjectid query if requested
                if ( $this->fld_talkid || $this->fld_subjectid ) {
                        $this->getTSIDs();
@@ -454,6 +460,14 @@ class ApiQueryInfo extends ApiQueryBase {
                        }
                }
 
+               if ( $this->fld_visitingwatchers ) {
+                       if ( isset( $this->visitingwatchers[$ns][$dbkey] ) ) {
+                               $pageInfo['visitingwatchers'] = $this->visitingwatchers[$ns][$dbkey];
+                       } elseif ( $this->showZeroWatchers ) {
+                               $pageInfo['visitingwatchers'] = 0;
+                       }
+               }
+
                if ( $this->fld_notificationtimestamp ) {
                        $pageInfo['notificationtimestamp'] = '';
                        if ( isset( $this->notificationtimestamps[$ns][$dbkey] ) ) {
@@ -809,6 +823,98 @@ class ApiQueryInfo extends ApiQueryBase {
                }
        }
 
+       /**
+        * Get the count of watchers who have visited recent edits and put it in
+        * $this->visitingwatchers
+        *
+        * Based on InfoAction::pageCounts
+        */
+       private function getVisitingWatcherInfo() {
+               $config = $this->getConfig();
+               $user = $this->getUser();
+               $db = $this->getDB();
+
+               $canUnwatchedpages = $user->isAllowed( 'unwatchedpages' );
+               $unwatchedPageThreshold = $this->getConfig()->get( 'UnwatchedPageThreshold' );
+               if ( !$canUnwatchedpages && !is_int( $unwatchedPageThreshold ) ) {
+                       return;
+               }
+
+               $this->showZeroWatchers = $canUnwatchedpages;
+
+               // Assemble a WHERE condition to find:
+               // * if the page exists, number of users watching who have
+               //   visited the page recently
+               // * if the page doesn't exist, number of users that have
+               //   the page on their watchlist
+               $whereStrings = array();
+
+               // For pages that exist
+               if ( $this->titles ) {
+                       $lb = new LinkBatch( $this->titles );
+
+                       // Fetch last edit timestamps for pages
+                       $this->resetQueryParams();
+                       $this->addTables( array( 'page', 'revision' ) );
+                       $this->addFields( array( 'page_namespace', 'page_title', 'rev_timestamp' ) );
+                       $this->addWhere( array(
+                               'page_latest = rev_id',
+                               $lb->constructSet( 'page', $db ),
+                       ) );
+                       $this->addOption( 'GROUP BY', array( 'page_namespace', 'page_title' ) );
+                       $timestampRes = $this->select( __METHOD__ );
+
+                       // Assemble SQL WHERE condition to find number of page watchers who also
+                       // visited a "recent" edit (last visited about 26 weeks before latest edit)
+                       $age = $config->get( 'WatchersMaxAge' );
+                       $timestamps = array();
+                       foreach ( $timestampRes as $row ) {
+                               $revTimestamp = wfTimestamp( TS_UNIX, (int)$row->rev_timestamp );
+                               $threshold = $db->timestamp( $revTimestamp - $age );
+                               $timestamps[$row->page_namespace][$row->page_title] = $threshold;
+                       }
+
+                       foreach ( $timestamps as $ns_key => $namespace ) {
+                               $pageStrings = array();
+                               foreach ( $namespace as $pg_key => $threshold ) {
+                                       $pageStrings[] = "wl_title = '$pg_key' AND" .
+                                               ' (wl_notificationtimestamp >= ' .
+                                               $db->addQuotes( $threshold ) .
+                                               ' OR wl_notificationtimestamp IS NULL)';
+                               }
+                               $whereStrings[] = "wl_namespace = '$ns_key' AND (" .
+                                       $db->makeList( $pageStrings, LIST_OR ) . ')';
+                       }
+               }
+
+               // For nonexistant pages
+               if ( $this->missing ) {
+                       $lb = new LinkBatch( $this->missing );
+                       $whereStrings[] = $lb->constructSet( 'wl', $db );
+               }
+
+               // Make the actual string and do the query
+               $whereString = $db->makeList( $whereStrings, LIST_OR );
+
+               $this->resetQueryParams();
+               $this->addTables( array( 'watchlist' ) );
+               $this->addFields( array(
+                       'wl_namespace',
+                       'wl_title',
+                       'count' => 'COUNT(*)'
+               ) );
+               $this->addWhere( array( $whereString ) );
+               $this->addOption( 'GROUP BY', array( 'wl_namespace', 'wl_title' ) );
+               if ( !$canUnwatchedpages ) {
+                       $this->addOption( 'HAVING', "COUNT(*) >= $unwatchedPageThreshold" );
+               }
+
+               $res = $this->select( __METHOD__ );
+               foreach ( $res as $row ) {
+                       $this->visitingwatchers[$row->wl_namespace][$row->wl_title] = (int)$row->count;
+               }
+       }
+
        public function getCacheMode( $params ) {
                // Other props depend on something about the current user
                $publicProps = array(
@@ -844,6 +950,7 @@ class ApiQueryInfo extends ApiQueryBase {
                                        'talkid',
                                        'watched', # private
                                        'watchers', # private
+                                       'visitingwatchers', # private
                                        'notificationtimestamp', # private
                                        'subjectid',
                                        'url',
index ca9ceca..196c1fa 100644 (file)
@@ -184,11 +184,6 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                        $data['git-hash'] = $git;
                        $data['git-branch'] =
                                SpecialVersion::getGitCurrentBranch( $GLOBALS['IP'] );
-               } else {
-                       $svn = SpecialVersion::getSvnRevision( $IP );
-                       if ( $svn ) {
-                               $data['rev'] = $svn;
-                       }
                }
 
                // 'case-insensitive' option is reserved for future
@@ -602,11 +597,6 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                                }
                                if ( isset( $ext['version'] ) ) {
                                        $ret['version'] = $ext['version'];
-                               } elseif ( isset( $ext['svn-revision'] ) &&
-                                       preg_match( '/\$(?:Rev|LastChangedRevision|Revision): *(\d+)/',
-                                               $ext['svn-revision'], $m )
-                               ) {
-                                       $ret['version'] = 'r' . $m[1];
                                }
                                if ( isset( $ext['path'] ) ) {
                                        $extensionPath = dirname( $ext['path'] );
@@ -620,13 +610,6 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                                                if ( $vcsDate !== false ) {
                                                        $ret['vcs-date'] = wfTimestamp( TS_ISO_8601, $vcsDate );
                                                }
-                                       } else {
-                                               $svnInfo = SpecialVersion::getSvnInfo( $extensionPath );
-                                               if ( $svnInfo !== false ) {
-                                                       $ret['vcs-system'] = 'svn';
-                                                       $ret['vcs-version'] = $svnInfo['checkout-rev'];
-                                                       $ret['vcs-url'] = isset( $svnInfo['viewvc-url'] ) ? $svnInfo['viewvc-url'] : '';
-                                               }
                                        }
 
                                        if ( SpecialVersion::getExtLicenseFileName( $extensionPath ) ) {
index 8822750..00675f4 100644 (file)
@@ -141,6 +141,9 @@ class ApiStashEdit extends ApiBase {
                if ( $editInfo && $editInfo->output ) {
                        $key = self::getStashKey( $page->getTitle(), $content, $user );
 
+                       // Let extensions add ParserOutput metadata or warm other caches
+                       Hooks::run( 'ParserOutputStashForEdit', array( $page, $content, $editInfo->output ) );
+
                        list( $stashInfo, $ttl ) = self::buildStashValue(
                                $editInfo->pstContent, $editInfo->output, $editInfo->timestamp
                        );
@@ -148,6 +151,7 @@ class ApiStashEdit extends ApiBase {
                        if ( $stashInfo ) {
                                $ok = $cache->set( $key, $stashInfo, $ttl );
                                if ( $ok ) {
+
                                        $logger->debug( "Cached parser output for key '$key'." );
                                        return self::ERROR_NONE;
                                } else {
index e76b365..82f66a8 100644 (file)
@@ -382,7 +382,7 @@ class ApiUpload extends ApiBase {
                // chunk or one and only one of the following parameters is needed
                if ( !$this->mParams['chunk'] ) {
                        $this->requireOnlyOneParameter( $this->mParams,
-                               'filekey', 'file', 'url', 'statuskey' );
+                               'filekey', 'file', 'url' );
                }
 
                // Status report for "upload to stash"/"upload from stash"
@@ -402,23 +402,6 @@ class ApiUpload extends ApiBase {
                        return false;
                }
 
-               if ( $this->mParams['statuskey'] ) {
-                       $this->checkAsyncDownloadEnabled();
-
-                       // Status request for an async upload
-                       $sessionData = UploadFromUrlJob::getSessionData( $this->mParams['statuskey'] );
-                       if ( !isset( $sessionData['result'] ) ) {
-                               $this->dieUsage( 'No result in session data', 'missingresult' );
-                       }
-                       if ( $sessionData['result'] == 'Warning' ) {
-                               $sessionData['warnings'] = $this->transformWarnings( $sessionData['warnings'] );
-                               $sessionData['sessionkey'] = $this->mParams['statuskey'];
-                       }
-                       $this->getResult()->addValue( null, $this->getModuleName(), $sessionData );
-
-                       return false;
-               }
-
                // The following modules all require the filename parameter to be set
                if ( is_null( $this->mParams['filename'] ) ) {
                        $this->dieUsageMsg( array( 'missingparam', 'filename' ) );
@@ -481,24 +464,9 @@ class ApiUpload extends ApiBase {
                                $this->dieUsageMsg( 'copyuploadbadurl' );
                        }
 
-                       $async = false;
-                       if ( $this->mParams['asyncdownload'] ) {
-                               $this->checkAsyncDownloadEnabled();
-
-                               if ( $this->mParams['leavemessage'] && !$this->mParams['ignorewarnings'] ) {
-                                       $this->dieUsage( 'Using leavemessage without ignorewarnings is not supported',
-                                               'missing-ignorewarnings' );
-                               }
-
-                               if ( $this->mParams['leavemessage'] ) {
-                                       $async = 'async-leavemessage';
-                               } else {
-                                       $async = 'async';
-                               }
-                       }
                        $this->mUpload = new UploadFromUrl;
                        $this->mUpload->initialize( $this->mParams['filename'],
-                               $this->mParams['url'], $async );
+                               $this->mParams['url'] );
                }
 
                return true;
@@ -766,16 +734,6 @@ class ApiUpload extends ApiBase {
 
                        if ( !$status->isGood() ) {
                                $error = $status->getErrorsArray();
-
-                               if ( count( $error ) == 1 && $error[0][0] == 'async' ) {
-                                       // The upload can not be performed right now, because the user
-                                       // requested so
-                                       return array(
-                                               'result' => 'Queued',
-                                               'statuskey' => $error[0][1],
-                                       );
-                               }
-
                                ApiResult::setIndexedTagName( $error, 'error' );
                                $this->dieUsage( 'An internal error occurred', 'internal-error', 0, $error );
                        }
@@ -790,15 +748,6 @@ class ApiUpload extends ApiBase {
                return $result;
        }
 
-       /**
-        * Checks if asynchronous copy uploads are enabled and throws an error if they are not.
-        */
-       protected function checkAsyncDownloadEnabled() {
-               if ( !$this->getConfig()->get( 'AllowAsyncCopyUploads' ) ) {
-                       $this->dieUsage( 'Asynchronous copy uploads disabled', 'asynccopyuploaddisabled' );
-               }
-       }
-
        public function mustBePosted() {
                return true;
        }
@@ -855,9 +804,6 @@ class ApiUpload extends ApiBase {
                        ),
 
                        'async' => false,
-                       'asyncdownload' => false,
-                       'leavemessage' => false,
-                       'statuskey' => null,
                        'checkstatus' => false,
                );
 
index eaad4de..45d0576 100644 (file)
@@ -15,7 +15,7 @@
        "apihelp-emailuser-param-subject": "Хьедаран корта.",
        "apihelp-emailuser-param-text": "Кехатан чулацам",
        "apihelp-expandtemplates-param-title": "АгӀонан корта.",
-       "apihelp-feedrecentchanges-param-tagfilter": "Тегийн литтар.",
+       "apihelp-feedrecentchanges-param-tagfilter": "Тегийн луьттург.",
        "apihelp-login-example-login": "ЧугӀо",
        "apihelp-logout-description": "ЧугӀой сессийн хаамаш дӀацӀанбе.",
        "apihelp-move-description": "АгӀон цӀе хийца.",
index 2ca10c0..1680544 100644 (file)
@@ -15,7 +15,8 @@
                        "Duder",
                        "Ljonka",
                        "FriedhelmW",
-                       "Predatorix"
+                       "Predatorix",
+                       "Luke081515"
                ]
        },
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page/de|Dokumentation]]\n* [[mw:API:FAQ/de|Häufig gestellte Fragen]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Mailingliste]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API-Ankündigungen]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Fehlerberichte und Anfragen]\n</div>\n<strong>Status:</strong> Alle auf dieser Seite gezeigten Funktionen sollten funktionieren, allerdings ist die API in aktiver Entwicklung und kann sich zu jeder Zeit ändern. Abonniere die [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ MediaWiki-API-Ankündigungs-Mailingliste], um über Aktualisierungen informiert zu werden.\n\n<strong>Fehlerhafte Anfragen:</strong> Wenn fehlerhafte Anfragen an die API gesendet werden, wird ein HTTP-Header mit dem Schlüssel „MediaWiki-API-Error“ gesendet. Der Wert des Headers und der Fehlercode werden auf den gleichen Wert gesetzt. Für weitere Informationen siehe [[mw:API:Errors_and_warnings|API: Fehler und Warnungen]].",
        "apihelp-query+allrevisions-param-generatetitles": "Wenn als Generator verwendet, werden eher Titel als Bearbeitungs-IDs erzeugt.",
        "apihelp-query+allrevisions-example-user": "Liste die letzten 50 Beiträge, sortiert nach Benutzer <kbd>Beispiel</kbd> auf.",
        "apihelp-query+allrevisions-example-ns-main": "Liste die ersten 50 Bearbeitungen im Hauptnamensraum auf.",
+       "apihelp-query+mystashedfiles-param-limit": "Wie viele Dateien zurückgegeben werden sollen.",
        "apihelp-query+alltransclusions-description": "Liste alle Transklusionen auf (eingebettete Seiten die &#123;&#123;x&#125;&#125; benutzen), einschließlich nicht vorhandener.",
        "apihelp-query+alltransclusions-param-from": "Der Titel der Transklusion bei dem die Auflistung beginnen soll.",
        "apihelp-query+alltransclusions-param-to": "Der Titel der Transklusion bei dem die Auflistung enden soll.",
        "apihelp-query+categorymembers-paramvalue-prop-title": "Fügt die Titel- und Namensraum-ID der Seite hinzu.",
        "apihelp-query+categorymembers-paramvalue-prop-sortkey": "Fügt den Sortierungsschlüssel (hexadezimale Zeichenkette) hinzu, der verwendet wird, um innerhalb dieser Kategorie zu sortieren.",
        "apihelp-query+categorymembers-paramvalue-prop-sortkeyprefix": "Fügt das Sortierungsschlüssel-Präfix hinzu, das verwendet wird, um innerhalb dieser Kategorie zu sortieren (für Menschen lesbarer Teil des Sortierungsschlüssels).",
-       "apihelp-query+categorymembers-paramvalue-prop-type": "Fügt den Typ, als der diese Seite bestimmt wurde, hinzu (Seite, Unterkategorie oder Datei).",
+       "apihelp-query+categorymembers-paramvalue-prop-type": "Fügt den Typ, als der diese Seite bestimmt wurde, hinzu (<samp>page</samp>, <samp>subcat</samp> oder <samp>file</samp>).",
        "apihelp-query+categorymembers-paramvalue-prop-timestamp": "Fügt den Zeitstempel wann die Seite eingebunden wurde hinzu.",
        "apihelp-query+categorymembers-param-limit": "Die maximale Anzahl der zurückzugebenden Seiten.",
        "apihelp-query+categorymembers-param-sort": "Eigenschaft, nach der sortiert werden soll.",
        "apihelp-query+links-param-dir": "Die Auflistungsrichtung.",
        "apihelp-query+links-example-simple": "Links von der <kbd>Hauptseite</kbd> abrufen",
        "apihelp-query+linkshere-description": "Alle Seiten finden, die auf die angegebenen Seiten verlinken.",
+       "apihelp-query+linkshere-paramvalue-prop-pageid": "Die Seitenkennung jeder Seite.",
        "apihelp-query+logevents-description": "Ereignisse von den Logbüchern abrufen.",
        "apihelp-query+logevents-example-simple": "Listet die letzten Logbuch-Ereignisse auf.",
        "apihelp-query+pageswithprop-paramvalue-prop-ids": "Fügt die Seitenkennung hinzu.",
        "apihelp-query+redirects-paramvalue-prop-pageid": "Seitenkennung einer jeden Weiterleitung.",
        "apihelp-query+redirects-paramvalue-prop-title": "Titel einer jeden Weiterleitung.",
        "apihelp-query+revisions+base-paramvalue-prop-ids": "Die Kennung der Version.",
+       "apihelp-query+revisions+base-paramvalue-prop-flags": "Versionsmarkierungen (klein).",
        "apihelp-query+revisions+base-paramvalue-prop-timestamp": "Der Zeitstempel der Version.",
+       "apihelp-query+revisions+base-paramvalue-prop-user": "Benutzer, der die Version erstellt hat.",
+       "apihelp-query+revisions+base-paramvalue-prop-userid": "Benutzerkennung des Versionserstellers.",
        "apihelp-query+revisions+base-paramvalue-prop-size": "Länge in Bytes der Version.",
+       "apihelp-query+revisions+base-paramvalue-prop-sha1": "SHA-1-Prüfsumme (Basis 16) der Version.",
+       "apihelp-query+revisions+base-paramvalue-prop-contentmodel": "Inhaltsmodell-Kennung der Version.",
        "apihelp-query+revisions+base-paramvalue-prop-content": "Text der Version.",
+       "apihelp-query+search-param-what": "Welcher Suchtyp ausgeführt werden soll.",
+       "apihelp-query+search-param-info": "Welche Metadaten zurückgegeben werden sollen.",
        "apihelp-query+search-param-prop": "Eigenschaften zur Rückgabe:",
+       "apihelp-query+search-paramvalue-prop-wordcount": "Ergänzt den Wortzähler der Seite.",
+       "apihelp-query+search-param-limit": "Wie viele Seiten insgesamt zurückgegeben werden sollen.",
        "apihelp-query+search-example-simple": "Nach <kbd>meaning</kbd> suchen.",
        "apihelp-query+search-example-text": "Texte nach <kbd>meaning</kbd> durchsuchen.",
        "apihelp-query+siteinfo-example-simple": "Websiteinformationen abrufen",
        "apihelp-query+users-paramvalue-prop-rights": "Listet alle Rechte auf, die jeder Benutzer hat.",
        "apihelp-query+users-paramvalue-prop-editcount": "Ergänzt den Bearbeitungszähler des Benutzers.",
        "apihelp-query+users-example-simple": "Gibt Informationen für den Benutzer <kbd>Example</kbd> zurück.",
+       "apihelp-query+watchlist-paramvalue-prop-user": "Ergänzt den Benutzer, der die Bearbeitung ausgeführt hat.",
+       "apihelp-query+watchlist-paramvalue-prop-userid": "Ergänzt die Kennung des Benutzers, der die Bearbeitung ausgeführt hat.",
+       "apihelp-query+watchlist-paramvalue-prop-comment": "Ergänzt den Kommentar der Bearbeitung.",
+       "apihelp-query+watchlist-paramvalue-prop-timestamp": "Ergänzt den Zeitstempel der Bearbeitung.",
+       "apihelp-query+watchlist-paramvalue-prop-sizes": "Ergänzt die alten und neuen Längen der Seite.",
+       "apihelp-query+watchlist-paramvalue-type-new": "Seitenerstellungen.",
+       "apihelp-query+watchlist-paramvalue-type-log": "Logbucheinträge.",
        "apihelp-rsd-description": "Ein RSD-Schema (Really Simple Discovery) exportieren.",
        "apihelp-rsd-example-simple": "Das RSD-Schema exportieren",
        "apihelp-setnotificationtimestamp-param-entirewatchlist": "An allen beobachteten Seiten arbeiten.",
index 2fb9a50..1af53fa 100644 (file)
        "apihelp-query+categorymembers-paramvalue-prop-title": "Adds the title and namespace ID of the page.",
        "apihelp-query+categorymembers-paramvalue-prop-sortkey": "Adds the sortkey used for sorting in the category (hexadecimal string).",
        "apihelp-query+categorymembers-paramvalue-prop-sortkeyprefix": "Adds the sortkey prefix used for sorting in the category (human-readable part of the sortkey).",
-       "apihelp-query+categorymembers-paramvalue-prop-type": "Adds the type that the page has been categorised as (page, subcat or file).",
+       "apihelp-query+categorymembers-paramvalue-prop-type": "Adds the type that the page has been categorised as (<samp>page</samp>, <samp>subcat</samp> or <samp>file</samp>).",
        "apihelp-query+categorymembers-paramvalue-prop-timestamp": "Adds the timestamp of when the page was included.",
        "apihelp-query+categorymembers-param-namespace": "Only include pages in these namespaces. Note that <kbd>$1type=subcat</kbd> or <kbd>$1type=file</kbd> may be used instead of <kbd>$1namespace=14</kbd> or <kbd>6</kbd>.",
        "apihelp-query+categorymembers-param-type": "Which type of category members to include. Ignored when <kbd>$1sort=timestamp</kbd> is set.",
        "apihelp-query+info-paramvalue-prop-talkid": "The page ID of the talk page for each non-talk page.",
        "apihelp-query+info-paramvalue-prop-watched": "List the watched status of each page.",
        "apihelp-query+info-paramvalue-prop-watchers": "The number of watchers, if allowed.",
+       "apihelp-query+info-paramvalue-prop-visitingwatchers": "The number of watchers of each page who have visited recent edits to that page, if allowed.",
        "apihelp-query+info-paramvalue-prop-notificationtimestamp": "The watchlist notification timestamp of each page.",
        "apihelp-query+info-paramvalue-prop-subjectid": "The page ID of the parent page for each talk page.",
        "apihelp-query+info-paramvalue-prop-url": "Gives a full URL, an edit URL, and the canonical URL for each page.",
        "apihelp-upload-param-offset": "Offset of chunk in bytes.",
        "apihelp-upload-param-chunk": "Chunk contents.",
        "apihelp-upload-param-async": "Make potentially large file operations asynchronous when possible.",
-       "apihelp-upload-param-asyncdownload": "Make fetching a URL asynchronous.",
-       "apihelp-upload-param-leavemessage": "If asyncdownload is used, leave a message on the user talk page if finished.",
-       "apihelp-upload-param-statuskey": "Fetch the upload status for this file key (upload by URL).",
        "apihelp-upload-param-checkstatus": "Only fetch the upload status for the given file key.",
        "apihelp-upload-example-url": "Upload from a URL.",
        "apihelp-upload-example-filekey": "Complete an upload that failed due to warnings.",
index 779a1e2..253edc9 100644 (file)
        "apihelp-query+categorymembers-param-prop": "Qué piezas de información incluir:",
        "apihelp-query+categorymembers-paramvalue-prop-ids": "Añade el identificador de página.",
        "apihelp-query+categorymembers-paramvalue-prop-title": "Agrega el título y el identificador del espacio de nombres de la página.",
+       "apihelp-query+categorymembers-paramvalue-prop-type": "Añade el tipo en el que se categorizó la página (<samp>page</samp>, <samp>subcat</samp> or <samp>file</samp>).",
        "apihelp-query+categorymembers-param-startsortkey": "Utilizar $1starthexsortkey en su lugar.",
        "apihelp-query+categorymembers-param-endsortkey": "Utilizar $1endhexsortkey en su lugar.",
        "apihelp-query+categorymembers-example-simple": "Obtener las primeras 10 páginas en <kbd>Category:Physics</kbd>.",
index 6b678ef..01cc1f7 100644 (file)
        "apihelp-query+categorymembers-paramvalue-prop-title": "Ajoute le titre et l’ID de l’espace de noms de la page.",
        "apihelp-query+categorymembers-paramvalue-prop-sortkey": "Ajoute la clé de tri utilisée pour trier dans la catégorie (chaîne hexadécimale).",
        "apihelp-query+categorymembers-paramvalue-prop-sortkeyprefix": "Ajoute le préfixe de la clé de tri utilisé pour trier dans la catégorie (partie lisible de la clé de tri).",
-       "apihelp-query+categorymembers-paramvalue-prop-type": "Ajoute le type dans lequel a été catégorisée la page (page, sous-catégorie ou fichier).",
+       "apihelp-query+categorymembers-paramvalue-prop-type": "Ajoute le type dans lequel a été catégorisée la page (<samp>page</samp>, <samp>subcat</samp> ou <samp>file</samp>).",
        "apihelp-query+categorymembers-paramvalue-prop-timestamp": "Ajoute l’horodatage de l’inclusion de la page.",
        "apihelp-query+categorymembers-param-namespace": "Inclure uniquement les pages dans ces espaces de nom. Remarquez que <kbd>$1type=subcat</kbd> ou <kbd>$1type=file</kbd> peuvent  être utilisés à la place de <kbd>$1namespace=14</kbd> ou <kbd>6</kbd>.",
        "apihelp-query+categorymembers-param-type": "Quel type de membres de la catégorie inclure. Ignoré quand <kbd>$1sort=timestamp</kbd> est positionné.",
        "apihelp-query+info-paramvalue-prop-talkid": "L’ID de la page de discussion de chaque page qui n’est pas de discussion.",
        "apihelp-query+info-paramvalue-prop-watched": "Lister l’état de suivi de chaque page.",
        "apihelp-query+info-paramvalue-prop-watchers": "Le nombre d’observateurs, si c’est autorisé.",
+       "apihelp-query+info-paramvalue-prop-visitingwatchers": "Le nombre de personnes suivant chaque page qui ont regardé les modifications récentes de cette page, si c’est autorisé.",
        "apihelp-query+info-paramvalue-prop-notificationtimestamp": "L’horodatage de notification de la liste de suivi de chaque page.",
        "apihelp-query+info-paramvalue-prop-subjectid": "L’ID de page de la page parent de chaque page de discussion.",
        "apihelp-query+info-paramvalue-prop-url": "Fournit une URL complète, une URL de modification, et l’URL canonique de chaque page.",
        "apihelp-upload-param-offset": "Décalage du bloc en octets.",
        "apihelp-upload-param-chunk": "Partie du contenu.",
        "apihelp-upload-param-async": "Faire de façon asynchrone les grosses opérations sur les fichiers quand c’est possible.",
-       "apihelp-upload-param-asyncdownload": "Faire de façon asynchrone la recherche d’une URL.",
-       "apihelp-upload-param-leavemessage": "Si asyncdownload est utilisé, laisser un message sur la page de discussion de l’utilisateur quand c’est terminé.",
-       "apihelp-upload-param-statuskey": "Récupérer l’état de téléchargement pour cette clé de fichier (téléchargé par URL).",
        "apihelp-upload-param-checkstatus": "Récupérer uniquement l’état de téléchargement pour la clé de fichier donnée.",
        "apihelp-upload-example-url": "Télécharger depuis une URL",
        "apihelp-upload-example-filekey": "Terminer un téléchargement qui a échoué à cause d’avertissements",
index ed1dd44..9e881d8 100644 (file)
        "apihelp-query+categorymembers-paramvalue-prop-title": "Engade o título e o ID do espazo de nomes da páxina.",
        "apihelp-query+categorymembers-paramvalue-prop-sortkey": "Engade a clave de ordenación usada para ordenala na categoría (cadea hexadecimal).",
        "apihelp-query+categorymembers-paramvalue-prop-sortkeyprefix": "Engade o prefixo da clave de ordenación usado para ordenala na categoría (parte lexible da clave de ordenación).",
-       "apihelp-query+categorymembers-paramvalue-prop-type": "Engade o tipo no que foi categorizado a páxina (páxina, subcategoría ou ficheiro)",
+       "apihelp-query+categorymembers-paramvalue-prop-type": "Engade o tipo no que foi categorizado a páxina (<samp>page</samp>, <samp>subcat</samp> ou <samp>file</samp>).",
        "apihelp-query+categorymembers-paramvalue-prop-timestamp": "Engade o selo de tempo no que foi incluída a páxina.",
        "apihelp-query+categorymembers-param-namespace": "Só incluír páxinas nestes espazos de nomes. Decátese de que poden usarse  <kbd>$1type=subcat</kbd> ou <kbd>$1type=file</kbd> no canto de <kbd>$1namespace=14</kbd> ou <kbd>6</kbd>.",
        "apihelp-query+categorymembers-param-type": "Que tipo de membros da categoría incluír. Ignorado cando está activo <kbd>$1sort=timestamp</kbd>.",
        "apihelp-upload-param-offset": "Desaxuste do bloque en bytes.",
        "apihelp-upload-param-chunk": "Contido do bloque.",
        "apihelp-upload-param-async": "Facer de forma asíncrona as operacións de ficheiro potencialmente grandes cando sexa posible.",
-       "apihelp-upload-param-asyncdownload": "Facer de forma asíncrona a busca dunha URL.",
-       "apihelp-upload-param-leavemessage": "Se se usa asyncdownload, deixar unha mensaxe na páxina de conversa do usuario cando se remate.",
-       "apihelp-upload-param-statuskey": "Buscar o estado da subida para esta clave de ficheiro (subida por URL).",
        "apihelp-upload-param-checkstatus": "Só buscar o estado da subida da clave de ficheiro indicada.",
        "apihelp-upload-example-url": "Carga dunha URL",
        "apihelp-upload-example-filekey": "Completar carga que fallou debido a avisos",
index a38fba0..bb8a074 100644 (file)
        "apihelp-query+categorymembers-paramvalue-prop-title": "הוספת השם ומזהה מרחב השם של הדף.",
        "apihelp-query+categorymembers-paramvalue-prop-sortkey": "הוספת מפתח המיון שמשמש למיון בקטגוריה (מחרזות הקסדצימלית).",
        "apihelp-query+categorymembers-paramvalue-prop-sortkeyprefix": "הוספת מפתח המיון שמשמש למיון בקטגוריה (מחרוזת הקסדצימלית).",
-       "apihelp-query+categorymembers-paramvalue-prop-type": "הוספת הסוג שהדף מוין אליו (דף, תת־קטגוריה, או קובץ).",
+       "apihelp-query+categorymembers-paramvalue-prop-type": "הוספת הסוג שהדף מוין אליו (<samp>page</samp>‏, <samp>subcat</samp> או <samp>file</samp>).",
        "apihelp-query+categorymembers-paramvalue-prop-timestamp": "הוספת חותם־הזמן שבו הדף נכלל.",
        "apihelp-query+categorymembers-param-namespace": "לכלול רק דפים במרחבי השם האלה. יש לשים לב לכך ש־<kbd>$1type=subcat</kbd> או <kbd>$1type=file</kbd> יכולים לשמש במקום <kbd>$1namespace=14</kbd> או <kbd>6</kbd>.",
        "apihelp-query+categorymembers-param-type": "איזה סוג של חברי קטגוריה לכלול. לא תקף כאשר מוגדר <kbd>$1sort=timestamp</kbd>.",
        "apihelp-query+info-paramvalue-prop-talkid": "מזהה הדף של דף השיחה עבור כל דף שאינו דף שיחה.",
        "apihelp-query+info-paramvalue-prop-watched": "לרשום את מצב המעקב של כל דף.",
        "apihelp-query+info-paramvalue-prop-watchers": "מספר העוקבים, אם קיבלת הרשאה.",
+       "apihelp-query+info-paramvalue-prop-visitingwatchers": "מספר העוקבים אחרי כל דף שביקרו עריכות אחרונות לאותו הדף, אם זה מותר.",
        "apihelp-query+info-paramvalue-prop-notificationtimestamp": "חותם־זמן של הודעת רשימת מעקב של כל דף.",
        "apihelp-query+info-paramvalue-prop-subjectid": "מזהה הדף של הדף העיקרי של כל דף שיחה.",
        "apihelp-query+info-paramvalue-prop-url": "נותן URL מלא, URL לעריכה ו־URL קנוני לכל דף.",
        "apihelp-upload-param-offset": "היסט החתיכה בבתים.",
        "apihelp-upload-param-chunk": "תוכן החתיכה.",
        "apihelp-upload-param-async": "להפוך פעולות קבצים גדולות לאסינכרוניות כשאפשר.",
-       "apihelp-upload-param-asyncdownload": "להפוך אחזור URL לאסינכרוני.",
-       "apihelp-upload-param-leavemessage": "אם משמש asyncdownload, להשאיר הודעה על דף שיחת משתמש אם זה מסתיים.",
-       "apihelp-upload-param-statuskey": "לאחזר את מצב העלאת הקובץ עבור מפתח הקובץ הזה (העלאה באמצעות URL).",
        "apihelp-upload-param-checkstatus": "לאחזר רק מצב העלאה עבור מפתח הקובץ שניתן.",
        "apihelp-upload-example-url": "להעלות מ־URL.",
        "apihelp-upload-example-filekey": "להשלים העלאה שנכשלה בשל אזהרות.",
index 24f5157..dd3c80c 100644 (file)
        "apihelp-query+blocks-example-simple": "Elenca i blocchi.",
        "apihelp-query+categories-param-dir": "La direzione in cui elencare.",
        "apihelp-query+categorymembers-paramvalue-prop-title": "Aggiunge il titolo e l'ID namespace della pagina.",
+       "apihelp-query+categorymembers-paramvalue-prop-type": "Aggiunge il tipo di come la pagina è stata categorizzata (<samp>page</samp>, <samp>subcat</samp> o <samp>file</samp>).",
        "apihelp-query+categorymembers-param-namespace": "Includi solo le pagine in questi namespace. Nota che può essere usato <kbd>$1type=subcat</kbd> o <kbd>$1type=file</kbd> anziché <kbd>$1namespace=14</kbd> o <kbd>6</kbd>.",
        "apihelp-query+duplicatefiles-param-dir": "La direzione in cui elencare.",
        "apihelp-query+embeddedin-description": "Trova tutte le pagine che incorporano (transclusione) il titolo specificato.",
        "apihelp-query+imageusage-description": "Trova tutte le pagine che utilizzano il titolo dell'immagine specificato.",
        "apihelp-query+imageusage-param-dir": "La direzione in cui elencare.",
        "apihelp-query+imageusage-param-redirect": "Se la pagina collegata è un redirect, trova tutte le pagine che puntano al redirect. Il limite massimo è dimezzato.",
+       "apihelp-query+info-paramvalue-prop-visitingwatchers": "Il numero di osservatori di ogni pagina che hanno visitato le ultime modifiche alla pagina, se consentito.",
        "apihelp-query+iwbacklinks-param-prop": "Quali proprietà ottenere:",
        "apihelp-query+iwbacklinks-paramvalue-prop-iwtitle": "Aggiunge il titolo dell'interwiki.",
        "apihelp-query+iwbacklinks-param-dir": "La direzione in cui elencare.",
index 287e147..949f4aa 100644 (file)
        "apihelp-query+allrevisions-param-generatetitles": "ジェネレーターとして使用する場合、版IDではなくページ名を生成します。",
        "apihelp-query+allrevisions-example-user": "利用者 <kbd>Example</kbd> による直近の50版を一覧表示する。",
        "apihelp-query+allrevisions-example-ns-main": "標準名前空間にある最初の50版を一覧表示する。",
+       "apihelp-query+mystashedfiles-param-limit": "取得するファイルの数。",
        "apihelp-query+alltransclusions-param-prefix": "この値で始まるすべてのトランスクルードされているページを検索する。",
        "apihelp-query+alltransclusions-param-prop": "どの情報を結果に含めるか:",
        "apihelp-query+alltransclusions-param-namespace": "列挙する前空間。",
        "apihelp-query+categorymembers-description": "与えられたカテゴリ内のすべてのページを一覧表示します。",
        "apihelp-query+categorymembers-param-title": "一覧表示するカテゴリ (必須)。<kbd>{{ns:category}}:</kbd> 接頭辞を含まなければなりません。<var>$1pageid</var> とは同時に使用できません。",
        "apihelp-query+categorymembers-param-pageid": "一覧表示するカテゴリのページID. <var>$1title</var> とは同時に使用できません。",
+       "apihelp-query+categorymembers-param-prop": "どの情報を結果に含めるか:",
        "apihelp-query+categorymembers-paramvalue-prop-ids": "ページIDを追加します。",
        "apihelp-query+categorymembers-paramvalue-prop-title": "ページ名と名前空間IDを追加します。",
        "apihelp-query+categorymembers-paramvalue-prop-sortkey": "カテゴリでのソートに使用するソートキーを追加します(16進数文字列)。",
        "apihelp-query+pageswithprop-param-limit": "返すページの最大数。",
        "apihelp-query+pageswithprop-example-simple": "<code>&#123;&#123;DISPLAYTITLE:&#125;&#125;</code> を使用している最初の10ページを一覧表示する。",
        "apihelp-query+pageswithprop-example-generator": "<code>_&#95;NOTOC_&#95;</code> を使用している最初の10ページについての追加情報を取得する。",
-       "apihelp-query+prefixsearch-description": "ページ名の先頭一致検索を行います。",
+       "apihelp-query+prefixsearch-description": "ページ名の先頭一致検索を行います。\n\n名前が似ていますが、このモジュールは[[Special:PrefixIndex]]と等価であることを意図しません。そのような目的では<kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd> を <kbd>apprefix</kbd> パラメーターと共に使用してください。このモジュールの目的は <kbd>[[Special:ApiHelp/opensearch|action=opensearch]]</kbd> と似ています: 利用者から入力を受け取り、最も適合するページ名を提供するというものです。検索エンジンのバックエンドによっては、誤入力の訂正や、転送の回避、その他のヒューリスティクスが適用されることがあります。",
        "apihelp-query+prefixsearch-param-search": "検索文字列。",
        "apihelp-query+prefixsearch-param-namespace": "検索する名前空間。",
        "apihelp-query+prefixsearch-param-limit": "返す結果の最大数。",
index c6b08c1..f7468b4 100644 (file)
        "apihelp-query+info-paramvalue-prop-talkid": "De Kännong för de Klaafsigg för jehde Nit-Klaafsigg.",
        "apihelp-query+info-paramvalue-prop-watched": "Donn der Zohschtand vum Oppaße för jehde Sigg opleßte.",
        "apihelp-query+info-paramvalue-prop-watchers": "De Aanzahl Oppaßer, wann zohjelohße.",
+       "apihelp-query+info-paramvalue-prop-visitingwatchers": "De Aanzahl Oppaßer pro Sigg, di woh zohjelohße, de neußte Änderonge aan dä Sigg belohrt hann.",
        "apihelp-query+info-paramvalue-prop-subjectid": "De Kännong för de övverje'odente Sigg för jehde Klaafsigg.",
        "apihelp-query+info-paramvalue-prop-url": "Jidd en kumplätte <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Uniform Ressource Locator\">URL</i>, en <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Uniform Ressource Locator\">URL</i> för et Beärbeide, un en kannohnesche <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Uniform Ressource Locator\">URL</i> för jehde Sigg uß.",
        "apihelp-query+info-paramvalue-prop-readable": "Ov dä Metmaacher heh di Sigg lässe kann.",
        "apihelp-upload-param-url": "Der <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Uniform Ressource Locator\">URL</i>, öm di Dattei dervun ze holle.",
        "apihelp-upload-param-sessionkey": "Et sälve wi „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1filekey</code>“, wat mer emmer noch noch bruche kann, weil mer et fröhjer alld ens esu hatte.",
        "apihelp-upload-param-filesize": "De Datteijrühße vum jannze Huhlahde.",
-       "apihelp-upload-param-asyncdownload": "Maach dat Holle vun ene <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Uniform Ressource Locator\">URL</i> zoh ene andere Zigg.",
        "apihelp-upload-example-url": "Vun enem <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Uniform Ressource Locator\">URL</i> huhlahde.",
        "apihelp-upload-example-filekey": "Don et Huhlahde fähdesch maace, wat wähje Warnonge nit johd jejange wohr.",
        "apihelp-userrights-param-user": "Metmaacher_Nahme.",
index a368b3e..aa115b7 100644 (file)
@@ -9,8 +9,9 @@
        "apihelp-main-param-action": "کام عملیات انجؤم بِ.",
        "apihelp-main-param-format": "فرمت خروجی",
        "apihelp-block-description": "بستن کاربر.",
-       "apihelp-createaccount-param-name": ":نؤم بهرۀگر-کاربر",
+       "apihelp-createaccount-param-name": "نۆم کاربەری:",
        "apihelp-delete-description": "حةذف وةڵگة",
+       "apihelp-delete-example-simple": "حذف <kbd>Main Page</kbd>.",
        "apihelp-disabled-description": "اێ پودمانە إکار کەتێە(غیرفعال بیە).",
        "apihelp-edit-description": "دؤرس کردن و دۀسکاری وۀلگۀ",
        "apihelp-edit-param-sectiontitle": "نام سۀر وۀلگ تازۀ",
index c2c6d7e..e7b4421 100644 (file)
@@ -11,7 +11,8 @@
                        "SPQRobin",
                        "HanV",
                        "Rangekill",
-                       "Robin van der Vliet"
+                       "Robin van der Vliet",
+                       "Edoderoo"
                ]
        },
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Documentatie]]\n* [[mw:API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api E-maillijst]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API-aankondigingen]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Bugs & verzoeken]\n</div>\n<strong>Status:</strong> Alle functies die op deze pagina worden weergegeven horen te werken. Aan de API wordt actief gewerkt, en deze kan gewijzigd worden. Abonneer u op  de [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ e-maillijst mediawiki-api-announce] voor meldingen over aanpassingen.\n\n<strong>Foutieve verzoeken:</strong> als de API foutieve verzoeken ontvangt, wordt er geantwoord met een HTTP-header met de sleutel \"MediaWiki-API-Error\" en daarna worden de waarde van de header en de foutcode op dezelfde waarde ingesteld. Zie [[mw:API:Errors_and_warnings|API: Errors and warnings]] voor meer informatie.",
        "apihelp-block-param-nocreate": "Voorkom registeren van accounts.",
        "apihelp-block-param-autoblock": "Blokkeer automatisch het laatst gebruikte IP-adres en ieder volgend IP-adres van waaruit ze proberen aan te melden.",
        "apihelp-block-param-reblock": "De huidige blokkade aanpassen als de gebruiker al geblokkeerd is.",
+       "apihelp-block-param-watchuser": "De gebruikerspagina en overlegpagina van de gebruiker of het IP-adres volgen.",
+       "apihelp-block-example-ip-simple": "Het IP-adres <kbd>192.0.2.5</kbd> voor drie dagen blokkeren met <kbd>First strike</kbd> als opgegeven reden.",
+       "apihelp-compare-param-fromtitle": "Eerste titel om te vergelijken.",
+       "apihelp-compare-param-fromid": "Eerste pagina-ID om te vergelijken.",
+       "apihelp-compare-param-fromrev": "Eerste versie om te vergelijken.",
+       "apihelp-compare-param-totitle": "Tweede titel om te vergelijken.",
+       "apihelp-compare-param-toid": "Andere pagina-ID om te vergelijken.",
+       "apihelp-compare-param-torev": "Tweede versie om te vergelijken.",
        "apihelp-createaccount-description": "Een nieuw gebruikersaccount aanmaken.",
        "apihelp-createaccount-param-name": "Gebruikersnaam.",
        "apihelp-createaccount-param-email": "E-mailadres van de gebruikers (optioneel).",
        "apihelp-createaccount-param-realname": "Echte naam van de gebruiker (optioneel).",
        "apihelp-delete-description": "Verwijder een pagina.",
+       "apihelp-delete-param-reason": "Reden voor verwijdering. Wanneer dit niet is opgegeven wordt een automatisch gegenereerde reden gebruikt.",
        "apihelp-delete-param-watch": "De pagina aan de volglijst van de huidige gebruiker toevoegen.",
        "apihelp-delete-param-unwatch": "De pagina van de volglijst van de huidige gebruiker verwijderen.",
        "apihelp-delete-example-simple": "Verwijder <kbd>Main Page</kbd>.",
@@ -53,7 +63,8 @@
        "apihelp-edit-param-watch": "Voeg de pagina toe aan de volglijst van de huidige gebruiker.",
        "apihelp-edit-param-unwatch": "Verwijder de pagina van de volglijst van de huidige gebruiker.",
        "apihelp-edit-param-redirect": "Automatisch doorverwijzingen oplossen.",
-       "apihelp-edit-example-edit": "Pagina bewerken",
+       "apihelp-edit-example-edit": "Een pagina bewerken.",
+       "apihelp-edit-example-undo": "Revisies 13579 tot 13585 ongedaan maken met automatische beschrijving.",
        "apihelp-emailuser-description": "Gebruiker e-mailen.",
        "apihelp-emailuser-param-target": "Gebruiker naar wie de e-mail moet worden gestuurd.",
        "apihelp-emailuser-param-subject": "Onderwerpkoptekst.",
        "apihelp-emailuser-param-ccme": "Stuur mij een kopie van deze e-mail.",
        "apihelp-expandtemplates-param-title": "Paginanaam.",
        "apihelp-expandtemplates-param-text": "Wikitekst om om te zetten.",
+       "apihelp-expandtemplates-paramvalue-prop-wikitext": "De uitgevulde wikitekst.",
+       "apihelp-expandtemplates-paramvalue-prop-ttl": "De maximum tijdsduur waarna cache van het resultaat moet worden weggegooid.",
        "apihelp-feedcontributions-description": "Haalt de feed van de gebruikersbijdragen op.",
+       "apihelp-feedcontributions-param-feedformat": "De opmaak van de feed.",
        "apihelp-feedcontributions-param-year": "Van jaar (en eerder).",
        "apihelp-feedcontributions-param-month": "Van maand (en eerder).",
        "apihelp-feedcontributions-param-deletedonly": "Alleen verwijderde bijdragen weergeven.",
@@ -76,6 +90,8 @@
        "apihelp-feedrecentchanges-example-simple": "Recente wijzigingen weergeven.",
        "apihelp-feedrecentchanges-example-30days": "Recente wijzigingen van de afgelopen 30 dagen weergeven.",
        "apihelp-filerevert-description": "Een oude versie van een bestand herplaatsen.",
+       "apihelp-imagerotate-description": "Een of meerdere afbeeldingen draaien.",
+       "apihelp-import-param-xml": "Geüpload XML-bestand.",
        "apihelp-import-param-namespace": "Importeren in deze naamruimte. Can niet samen gebruikt worden met <var>$1rootpage</var>.",
        "apihelp-import-param-rootpage": "Importeren als subpagina van deze pagina. Kan niet samen met <var>$1namespace</var> gebruikt worden.",
        "apihelp-login-param-name": "Gebruikersnaam.",
        "apihelp-logout-example-logout": "Meldt de huidige gebruiker af.",
        "apihelp-managetags-param-tag": "Label om aan te maken, te activeren of te deactiveren. Voor het aanmaken van een label, mag het niet bestaan. Voor het verwijderen van een label, moet het bestaan. Voor het activeren van een label, moet het bestaan en mag het niet gebruikt worden door een uitbreiding. Voor het deactiveren van een label, moet het gebruikt worden en handmatig gedefinieerd zijn.",
        "apihelp-move-description": "Pagina hernoemen.",
+       "apihelp-move-param-to": "Titel om de pagina naar te hernoemen.",
        "apihelp-move-param-reason": "Reden voor de naamswijziging.",
        "apihelp-move-param-noredirect": "Geen doorverwijzing achterlaten.",
        "apihelp-move-param-watch": "Pagina en de omleiding toevoegen aan de volglijst van de huidige gebruiker.",
index b1d27c8..a72b088 100644 (file)
@@ -6,7 +6,8 @@
                        "Cainamarques",
                        "Rhcastilhos",
                        "Macofe",
-                       "Almondega"
+                       "Almondega",
+                       "Raphaelras"
                ]
        },
        "apihelp-main-param-action": "Qual ação executar.",
        "apihelp-query+allfileusages-param-to": "O título do arquivo onde parar de enumerar.",
        "apihelp-query+allfileusages-paramvalue-prop-title": "Adiciona o título do arquivo.",
        "apihelp-query+allfileusages-param-limit": "Quantos itens retornar.",
+       "apihelp-query+allfileusages-example-unique": "Listar títulos únicos de arquivos",
+       "apihelp-query+allfileusages-example-generator": "Obter as páginas contendo os arquivos",
        "apihelp-query+allimages-param-user": "Retorna apenas os arquivos enviados por este usuário. Só pode ser usado com $1sort=timestamp. Não pode ser usado em conjunto com $1filterbots.",
        "apihelp-query+allimages-param-filterbots": "Como filtrar arquivos enviados por bots. Só pode ser usado com $1sort=timestamp. Não pode ser usado em conjunto com $1user.",
        "apihelp-query+allimages-param-mime": "Quais tipos MIME pesquisar, ex.: <kbd>image/jpeg</kbd>.",
        "apihelp-query+links-param-limit": "Quantos links retornar.",
        "apihelp-query+linkshere-param-limit": "Quantos retornar.",
        "apihelp-query+prefixsearch-param-limit": "O número máximo a se retornar.",
+       "apihelp-query+protectedtitles-param-limit": "Quantas páginas retornar.",
+       "apihelp-query+protectedtitles-paramvalue-prop-level": "Adicionar o nível de proteção",
+       "apihelp-query+protectedtitles-example-simple": "Listar títulos protegidos",
+       "apihelp-query+random-param-filterredir": "Como filtrar por redirecionamentos.",
+       "apihelp-query+recentchanges-param-user": "Listar apenas alterações de usuário.",
+       "apihelp-query+recentchanges-param-excludeuser": "Não listar as alterações deste usuário.",
+       "apihelp-query+recentchanges-param-tag": "Listar apenas as alterações marcadas com esta etiqueta.",
+       "apihelp-query+recentchanges-paramvalue-prop-flags": "Adicionar indicadores para a edição.",
+       "apihelp-query+recentchanges-paramvalue-prop-tags": "Listar as etiquetas para entrada.",
+       "apihelp-query+recentchanges-example-simple": "Listar mudanças recentes.",
+       "apihelp-query+redirects-paramvalue-prop-title": "Título de cada redirecionamento.",
+       "apihelp-query+redirects-paramvalue-prop-fragment": "Fragmento de cada redirecionamento, se há algum.",
+       "apihelp-query+redirects-param-namespace": "Listar páginas apenas neste espaço nominal.",
+       "apihelp-query+revisions-example-last5": "Mostrar as 5 últimas revisões do <kbd>Main Page</kbd>.",
+       "apihelp-query+revisions-example-first5": "Mostrar as 5 primeiras revisões do <kbd>Main Page</kbd>.",
+       "apihelp-query+revisions-example-first5-after": "Mostrar as 5 primeiras revisões do <kbd>Main Page</kbd> feitas depois de 05/01/2006.",
+       "apihelp-query+revisions-example-first5-not-localhost": "Mostrar as 5 primeiras revisões do <kbd>Main Page</kbd> que não foram feitas pelo usuário anônimo <kbd>127.0.0.1</kbd>.",
+       "apihelp-query+revisions-example-first5-user": "Mostrar as 5 primeiras revisões da <kbd>Main Page</kbd> que foram feitas pelo usuário <kbd>MediaWiki default</kbd>.",
+       "apihelp-query+revisions+base-param-prop": "Que propriedades mostrar para cada modificação:",
+       "apihelp-query+revisions+base-paramvalue-prop-content": "Texto da revisão.",
+       "apihelp-query+revisions+base-paramvalue-prop-tags": "Etiquetas para a revisão.",
+       "apihelp-query+search-description": "Fazer uma buscar completa de texto.",
        "apihelp-query+search-param-prop": "Que propriedades retornar:",
        "apihelp-query+search-paramvalue-prop-size": "Adiciona o tamanho da página em bytes.",
        "apihelp-query+search-paramvalue-prop-wordcount": "Adiciona a contagem de palavras da página.",
        "apihelp-query+search-paramvalue-prop-snippet": "Adiciona um fragmento analisado da página.",
        "apihelp-query+search-paramvalue-prop-titlesnippet": "Adiciona um fragmento analisado do título da página.",
        "apihelp-query+search-param-limit": "Quantas páginas retornar.",
+       "apihelp-query+search-example-simple": "Procurar por <kbd>meaning</kbd>.",
+       "apihelp-query+search-example-text": "Procurar textos para <kbd>meaning</kbd>.",
+       "apihelp-query+siteinfo-paramvalue-prop-general": "Informação geral de sistema",
+       "apihelp-query+siteinfo-paramvalue-prop-statistics": "Voltar às estatísticas do site.",
+       "apihelp-query+siteinfo-param-numberingroup": "Listar o número de usuários nos grupos de usuário.",
+       "apihelp-query+siteinfo-example-simple": "Obter informação do site.",
        "apihelp-query+templates-param-limit": "Quantas predefinições retornar.",
        "apihelp-query+transcludedin-param-limit": "Quantos retornar.",
+       "apihelp-query+users-description": "Obter informação sobre uma lista de usuários.",
        "apihelp-query+watchlist-param-limit": "Quantos resultados retornar por solicitação.",
+       "apihelp-query+watchlist-paramvalue-prop-title": "Adicionar título da página.",
+       "apihelp-query+watchlist-paramvalue-prop-comment": "Adicionar comentário à edição.",
+       "apihelp-query+watchlist-paramvalue-type-edit": "Edições comuns nas páginas.",
+       "apihelp-query+watchlist-paramvalue-type-external": "Alterações externas",
+       "apihelp-query+watchlist-paramvalue-type-new": "Criação de páginas.",
+       "apihelp-query+watchlist-paramvalue-type-log": "Registro de entradas.",
+       "apihelp-query+watchlist-paramvalue-type-categorize": "Alterações de membros pertencentes à uma categoria.",
        "apihelp-query+watchlistraw-param-limit": "Quantos resultados retornar por solicitação.",
        "apihelp-rollback-param-title": "Título da página para reverter. Não pode ser usado em conjunto com <var>$1pageid</var>.",
        "apihelp-rollback-param-pageid": "ID da página para reverter. Não pode ser usado em conjunto com <var>$1title</var>.",
+       "apihelp-setnotificationtimestamp-param-entirewatchlist": "Trabalhar em todas as páginas vigiadas.",
+       "apihelp-stashedit-param-sectiontitle": "O título para uma nova seção.",
+       "apihelp-stashedit-param-text": "Conteúdo da página",
+       "apihelp-stashedit-param-contentmodel": "Modelo de conteúdo do novo conteúdo.",
+       "apihelp-stashedit-param-contentformat": "Formato de serialização de conteúdo usado para o texto de entrada.",
+       "apihelp-tag-param-reason": "Motivo para a mudança.",
+       "apihelp-unblock-description": "Desbloquear usuário",
        "apihelp-unblock-param-id": "ID do bloco para desbloquear (obtido através de <kbd>list=blocks</kbd>). Não pode ser usado em conjunto com <var>$1user</var>.",
-       "apihelp-unblock-param-user": "Nome de usuário, endereço IP ou intervalo de IP para a se desbloquear. Não pode ser usado em conjunto com <var>$1id</var>."
+       "apihelp-unblock-param-user": "Nome de usuário, endereço IP ou intervalo de IP para a se desbloquear. Não pode ser usado em conjunto com <var>$1id</var>.",
+       "apihelp-unblock-param-reason": "Motivo para o desbloqueio.",
+       "apihelp-unblock-example-id": "Desbloquear bloqueio ID #<kbd>105</kbd>.",
+       "apihelp-undelete-param-reason": "Razão para restaurar.",
+       "apihelp-undelete-example-page": "Restaurar página <kbd>Main Page</kbd>.",
+       "apihelp-upload-param-watch": "Vigiar esta página",
+       "apihelp-upload-param-ignorewarnings": "Ignorar todos os avisos.",
+       "apihelp-userrights-param-user": "Nome de usuário.",
+       "apihelp-userrights-param-userid": "ID de usuário.",
+       "apihelp-userrights-param-add": "Adicionar o usuário para estes grupos.",
+       "apihelp-userrights-param-remove": "Remover o usuário destes grupos.",
+       "apihelp-userrights-param-reason": "Motivo para a mudança.",
+       "apihelp-none-description": "Nenhuma saída."
 }
index 804a8d6..4d4614c 100644 (file)
        "apihelp-imagerotate-example-simple": "{{doc-apihelp-example|imagerotate}}",
        "apihelp-imagerotate-example-generator": "{{doc-apihelp-example|imagerotate}}",
        "apihelp-import-description": "{{doc-apihelp-description|import}}",
-       "apihelp-import-param-summary": "{{doc-apihelp-param|import|summary}}",
+       "apihelp-import-param-summary": "{{doc-apihelp-param|import|summary|info=The parameter being documented here provides the summary used on the log messages about the import. The phrase \"Import summary\" here is grammatically equivalent to a phrase such as \"science book\", not \"eat food\".}}",
        "apihelp-import-param-xml": "{{doc-apihelp-param|import|xml}}",
        "apihelp-import-param-interwikisource": "{{doc-apihelp-param|import|interwikisource}}",
        "apihelp-import-param-interwikipage": "{{doc-apihelp-param|import|interwikipage}}",
        "apihelp-query+info-paramvalue-prop-talkid": "{{doc-apihelp-paramvalue|query+info|prop|talkid}}",
        "apihelp-query+info-paramvalue-prop-watched": "{{doc-apihelp-paramvalue|query+info|prop|watched}}",
        "apihelp-query+info-paramvalue-prop-watchers": "{{doc-apihelp-paramvalue|query+info|prop|watchers}}",
+       "apihelp-query+info-paramvalue-prop-visitingwatchers": "{{doc-apihelp-paramvalue|query+info|prop|visitingwatchers}}",
        "apihelp-query+info-paramvalue-prop-notificationtimestamp": "{{doc-apihelp-paramvalue|query+info|prop|notificationtimestamp}}",
        "apihelp-query+info-paramvalue-prop-subjectid": "{{doc-apihelp-paramvalue|query+info|prop|subjectid}}",
        "apihelp-query+info-paramvalue-prop-url": "{{doc-apihelp-paramvalue|query+info|prop|url}}",
        "apihelp-upload-param-offset": "{{doc-apihelp-param|upload|offset}}",
        "apihelp-upload-param-chunk": "{{doc-apihelp-param|upload|chunk}}",
        "apihelp-upload-param-async": "{{doc-apihelp-param|upload|async}}",
-       "apihelp-upload-param-asyncdownload": "{{doc-apihelp-param|upload|asyncdownload}}",
-       "apihelp-upload-param-leavemessage": "{{doc-apihelp-param|upload|leavemessage}}",
-       "apihelp-upload-param-statuskey": "{{doc-apihelp-param|upload|statuskey}}",
        "apihelp-upload-param-checkstatus": "{{doc-apihelp-param|upload|checkstatus}}",
        "apihelp-upload-example-url": "{{doc-apihelp-example|upload}}",
        "apihelp-upload-example-filekey": "{{doc-apihelp-example|upload}}",
index 8698dc8..5224fb8 100644 (file)
        "apihelp-query+categorymembers-paramvalue-prop-title": "Додає назву й ID простору назв сторінки.",
        "apihelp-query+categorymembers-paramvalue-prop-sortkey": "Додає ключ сортування, використаний для сортування у категорії (шістнадцятковий рядок).",
        "apihelp-query+categorymembers-paramvalue-prop-sortkeyprefix": "Додає ключ сортування, використаний для сортування у категорії (людиночитна частина).",
-       "apihelp-query+categorymembers-paramvalue-prop-type": "Додає тип, за яким категоризується сторінка (сторінка, підкатегорія або файл).",
+       "apihelp-query+categorymembers-paramvalue-prop-type": "Додає тип, за яким категоризується сторінка (<samp>page</samp>, <samp>subcat</samp> або <samp>file</samp>).",
        "apihelp-query+categorymembers-paramvalue-prop-timestamp": "Додає мітку часу, коли сторінка була включена.",
        "apihelp-query+categorymembers-param-namespace": "Включати лише сторінки у цих просторах назв. Зверніть увагу, що <kbd>$1type=subcat</kbd> чи <kbd>$1type=file</kbd> можна використовувати замість <kbd>$1namespace=14</kbd> чи <kbd>6</kbd>.",
        "apihelp-query+categorymembers-param-type": "Який тип елементів категорії включати. Ігнорується, коли вказано <kbd>$1sort=timestamp</kbd>.",
        "apihelp-upload-param-offset": "Зміщення шматка в байтах.",
        "apihelp-upload-param-chunk": "Шматок вмісту.",
        "apihelp-upload-param-async": "Зробити операції з потенційно великими файлами асинхронними коли можливо.",
-       "apihelp-upload-param-asyncdownload": "Зробити отримання за URL асинхронним.",
-       "apihelp-upload-param-leavemessage": "Якщо використовується asyncdownload, залишити повідомлення на сторінці обговорення користувача при закінченні.",
-       "apihelp-upload-param-statuskey": "Отримати статус завантаження для цього ключа файлу (завантаження за URL)",
        "apihelp-upload-param-checkstatus": "Отримувати статус завантаження лише для даного ключа файлу.",
        "apihelp-upload-example-url": "Завантаження з URL.",
        "apihelp-upload-example-filekey": "Завершити завантаження, що не вдалось через попередження.",
index fffe170..e6d3344 100644 (file)
        "apihelp-query+allrevisions-param-generatetitles": "当作为生成器使用时,生成标题而不是修订ID。",
        "apihelp-query+allrevisions-example-user": "列出由用户<kbd>Example</kbd>作出的最近50次贡献。",
        "apihelp-query+allrevisions-example-ns-main": "列举主名字空间中的前50次修订。",
+       "apihelp-query+mystashedfiles-description": "获取当前用户的上传藏匿中的文件列表。",
        "apihelp-query+mystashedfiles-param-prop": "要检索文件的属性。",
        "apihelp-query+mystashedfiles-paramvalue-prop-type": "检索文件的MIME类型和媒体类型。",
        "apihelp-query+mystashedfiles-param-limit": "获取多少文件。",
        "apihelp-query+categorymembers-paramvalue-prop-title": "添加页面标题和名字空间ID。",
        "apihelp-query+categorymembers-paramvalue-prop-sortkey": "添加用于分类中排序的关键字(十六进制字符串)。",
        "apihelp-query+categorymembers-paramvalue-prop-sortkeyprefix": "添加用于分类中排序的关键字前缀(关键字的人类可读部分)。",
-       "apihelp-query+categorymembers-paramvalue-prop-type": "添加页面被分类的类型(页面、子分类或文件)。",
+       "apihelp-query+categorymembers-paramvalue-prop-type": "添加页面被分类的类型(<samp>page</samp>、<samp>subcat</samp>或<samp>file</samp>)。",
        "apihelp-query+categorymembers-paramvalue-prop-timestamp": "添加页面被包括时的时间戳。",
        "apihelp-query+categorymembers-param-namespace": "仅包含这些名字空间的页面。注意<kbd>$1type=subcat</kbd>或<kbd>$1type=file</kbd>可能被使用,而不是<kbd>$1namespace=14</kbd>或<kbd>6</kbd>。",
        "apihelp-query+categorymembers-param-type": "包含的分类成员类型。当<kbd>$1sort=timestamp</kbd>被设置时会忽略。",
        "apihelp-query+protectedtitles-paramvalue-prop-level": "添加保护级别。",
        "apihelp-query+protectedtitles-example-simple": "受保护标题列表。",
        "apihelp-query+protectedtitles-example-generator": "找到主命名空间中已保护的标题的链接。",
+       "apihelp-query+querypage-param-page": "特殊页面的名称。注意其区分大小写。",
        "apihelp-query+querypage-param-limit": "返回的结果数。",
        "apihelp-query+querypage-example-ancientpages": "返回[[Special:Ancientpages]]的结果。",
        "apihelp-query+random-description": "获取一组随机页面。\n\n页面列举在一个固定序列中,只有起始点是随机的。这意味着如果<samp>Main Page</samp>是列表中第一个随机页面的话,<samp>List of fictional monkeys</samp>将<em>总是</em>第二个,<samp>List of people on stamps of Vanuatu</samp>是第三个等。",
        "apihelp-query+watchlist-param-allrev": "将同一页面的多个修订包含于指定的时间表内。",
        "apihelp-query+watchlist-param-start": "枚举的起始时间戳。",
        "apihelp-query+watchlist-param-end": "枚举的结束时间戳。",
+       "apihelp-query+watchlist-param-namespace": "过滤更改为仅限指定的名字空间。",
        "apihelp-query+watchlist-param-user": "只列出此用户的更改。",
        "apihelp-query+watchlist-param-excludeuser": "不要列出此用户的更改。",
        "apihelp-query+watchlist-param-limit": "根据结果返回的结果总数。",
        "apihelp-upload-param-offset": "块的偏移量(字节)。",
        "apihelp-upload-param-chunk": "大块内容。",
        "apihelp-upload-param-async": "在可能的情况下,使潜在的大文件操作异步进行。",
-       "apihelp-upload-param-asyncdownload": "使取得URL非同步。",
-       "apihelp-upload-param-leavemessage": "如果asyncdownload被使用,当完成时,在用户讨论页留下一条消息。",
-       "apihelp-upload-param-statuskey": "检索此文件密钥的上传状态(通过URL上传)。",
        "apihelp-upload-param-checkstatus": "只检索指定文件密钥的上传状态。",
        "apihelp-upload-example-url": "从URL上传。",
        "apihelp-upload-example-filekey": "完成一次由于警告而失败的上传。",
index d98888f..d6c610a 100644 (file)
@@ -56,13 +56,13 @@ class LinkBatch {
        }
 
        /**
-        * @param Title $title
+        * @param Title|TitleValue $title
         */
        public function addObj( $title ) {
                if ( is_object( $title ) ) {
                        $this->add( $title->getNamespace(), $title->getDBkey() );
                } else {
-                       wfDebug( "Warning: LinkBatch::addObj got invalid title object\n" );
+                       wfDebug( "Warning: LinkBatch::addObj got invalid Title or TitleValue object\n" );
                }
        }
 
index af6f9d9..ab88834 100644 (file)
@@ -19,7 +19,7 @@
  *
  * @file
  * @author Kai Nissen
- * @author Adam Shorland
+ * @author Addshore
  * @since 1.27
  */
 
index 8beae39..89e9356 100644 (file)
@@ -338,7 +338,7 @@ class WikitextContent extends TextContent {
                                $chain = $this->getRedirectChain();
                                $output->setText(
                                        Article::getRedirectHeaderHtml( $title->getPageLanguage(), $chain, false ) .
-                                       $output->getText()
+                                       $output->getRawText()
                                );
                                $output->addModuleStyles( 'mediawiki.action.view.redirectPage' );
                        }
index 16f11ee..36c644a 100644 (file)
@@ -513,7 +513,7 @@ class RequestContext implements IContextSource, MutableContext {
                return array(
                        'ip' => $this->getRequest()->getIP(),
                        'headers' => $this->getRequest()->getAllHeaders(),
-                       'sessionId' => MediaWiki\Session\SessionManager::getGlobalSession()->getId(),
+                       'sessionId' => session_id(),
                        'userId' => $this->getUser()->getId()
                );
        }
@@ -541,9 +541,7 @@ class RequestContext implements IContextSource, MutableContext {
         * @since 1.21
         */
        public static function importScopedSession( array $params ) {
-               if ( strlen( $params['sessionId'] ) &&
-                       MediaWiki\Session\SessionManager::getGlobalSession()->isPersistent()
-               ) {
+               if ( session_id() != '' && strlen( $params['sessionId'] ) ) {
                        // Sanity check to avoid sending random cookies for the wrong users.
                        // This method should only called by CLI scripts or by HTTP job runners.
                        throw new MWException( "Sessions can only be imported when none is active." );
@@ -565,37 +563,23 @@ class RequestContext implements IContextSource, MutableContext {
                        global $wgRequest, $wgUser;
 
                        $context = RequestContext::getMain();
-
                        // Commit and close any current session
-                       if ( MediaWiki\Session\PHPSessionHandler::isEnabled() ) {
-                               session_write_close(); // persist
-                               session_id( '' ); // detach
-                               $_SESSION = array(); // clear in-memory array
-                       }
-
-                       // Get new session, if applicable
-                       $session = null;
-                       if ( strlen( $params['sessionId'] ) ) { // don't make a new random ID
-                               $session = MediaWiki\Session\SessionManager::singleton()
-                                       ->getSessionById( $params['sessionId'] );
-                       }
-
-                       // Remove any user IP or agent information, and attach the request
-                       // with the new session.
-                       $context->setRequest( new FauxRequest( array(), false, $session ) );
+                       session_write_close(); // persist
+                       session_id( '' ); // detach
+                       $_SESSION = array(); // clear in-memory array
+                       // Remove any user IP or agent information
+                       $context->setRequest( new FauxRequest() );
                        $wgRequest = $context->getRequest(); // b/c
-
                        // Now that all private information is detached from the user, it should
                        // be safe to load the new user. If errors occur or an exception is thrown
                        // and caught (leaving the main context in a mixed state), there is no risk
                        // of the User object being attached to the wrong IP, headers, or session.
                        $context->setUser( $user );
                        $wgUser = $context->getUser(); // b/c
-                       if ( $session && MediaWiki\Session\PHPSessionHandler::isEnabled() ) {
-                               session_id( $session->getId() );
-                               MediaWiki\quietCall( 'session_start' );
+                       if ( strlen( $params['sessionId'] ) ) { // don't make a new random ID
+                               wfSetupSession( $params['sessionId'] ); // sets $_SESSION
                        }
-                       $request = new FauxRequest( array(), false, $session );
+                       $request = new FauxRequest( array(), false, $_SESSION );
                        $request->setIP( $params['ip'] );
                        foreach ( $params['headers'] as $name => $value ) {
                                $request->setHeader( $name, $value );
index f09de4f..264ee11 100644 (file)
@@ -505,6 +505,10 @@ class DBConnRef implements IDatabase {
                return $this->__call( __FUNCTION__, func_get_args() );
        }
 
+       public function getScopedLockAndFlush( $lockKey, $fname, $timeout ) {
+               return $this->__call( __FUNCTION__, func_get_args() );
+       }
+
        public function namedLocksEnqueue() {
                return $this->__call( __FUNCTION__, func_get_args() );
        }
index 1835958..a4d0ad0 100644 (file)
@@ -155,6 +155,9 @@ abstract class DatabaseBase implements IDatabase {
         */
        private $mTrxWriteDuration = 0.0;
 
+       /** @var array Map of (name => 1) for locks obtained via lock() */
+       private $mNamedLocksHeld = array();
+
        /** @var IDatabase|null Lazy handle to the master DB this server replicates from */
        private $lazyMasterHandle;
 
@@ -871,7 +874,7 @@ abstract class DatabaseBase implements IDatabase {
                                $msg = __METHOD__ . ": lost connection to $server; reconnected";
                                wfDebugLog( 'DBPerformance', "$msg:\n" . wfBacktrace( true ) );
 
-                               if ( $hadTrx ) {
+                               if ( $hadTrx || $this->mNamedLocksHeld ) {
                                        # Leave $ret as false and let an error be reported.
                                        # Callers may catch the exception and continue to use the DB.
                                        $this->reportQueryError( $lastError, $lastErrno, $sql, $fname, $tempIgnore );
@@ -3160,13 +3163,33 @@ abstract class DatabaseBase implements IDatabase {
        }
 
        public function lock( $lockName, $method, $timeout = 5 ) {
+               $this->mNamedLocksHeld[$lockName] = 1;
+
                return true;
        }
 
        public function unlock( $lockName, $method ) {
+               unset( $this->mNamedLocksHeld[$lockName] );
+
                return true;
        }
 
+       public function getScopedLockAndFlush( $lockKey, $fname, $timeout ) {
+               if ( !$this->lock( $lockKey, $fname, $timeout ) ) {
+                       return null;
+               }
+
+               $that = $this;
+               $unlocker = new ScopedCallback( function () use ( $that, $lockKey, $fname ) {
+                       $that->commit( __METHOD__, 'flush' );
+                       $that->unlock( $lockKey, $fname );
+               } );
+
+               $this->commit( __METHOD__, 'flush' );
+
+               return $unlocker;
+       }
+
        public function namedLocksEnqueue() {
                return false;
        }
index 3a8f737..29106ab 100644 (file)
@@ -932,12 +932,13 @@ abstract class DatabaseMysqlBase extends Database {
                $row = $this->fetchObject( $result );
 
                if ( $row->lockstatus == 1 ) {
+                       parent::lock( $lockName, $method, $timeout ); // record
                        return true;
-               } else {
-                       wfDebug( __METHOD__ . " failed to acquire lock\n" );
-
-                       return false;
                }
+
+               wfDebug( __METHOD__ . " failed to acquire lock\n" );
+
+               return false;
        }
 
        /**
@@ -952,7 +953,14 @@ abstract class DatabaseMysqlBase extends Database {
                $result = $this->query( "SELECT RELEASE_LOCK($lockName) as lockstatus", $method );
                $row = $this->fetchObject( $result );
 
-               return ( $row->lockstatus == 1 );
+               if ( $row->lockstatus == 1 ) {
+                       parent::unlock( $lockName, $method ); // record
+                       return true;
+               }
+
+               wfDebug( __METHOD__ . " failed to release lock\n" );
+
+               return false;
        }
 
        private function makeLockName( $lockName ) {
index 4d9891e..e84f264 100644 (file)
@@ -1581,11 +1581,13 @@ SQL;
                                "SELECT pg_try_advisory_lock($key) AS lockstatus", $method );
                        $row = $this->fetchObject( $result );
                        if ( $row->lockstatus === 't' ) {
+                               parent::lock( $lockName, $method, $timeout ); // record
                                return true;
                        } else {
                                sleep( 1 );
                        }
                }
+
                wfDebug( __METHOD__ . " failed to acquire lock\n" );
 
                return false;
@@ -1603,7 +1605,14 @@ SQL;
                $result = $this->query( "SELECT pg_advisory_unlock($key) as lockstatus", $method );
                $row = $this->fetchObject( $result );
 
-               return ( $row->lockstatus === 't' );
+               if ( $row->lockstatus === 't' ) {
+                       parent::unlock( $lockName, $method ); // record
+                       return true;
+               }
+
+               wfDebug( __METHOD__ . " failed to release lock\n" );
+
+               return false;
        }
 
        /**
index c72218a..1e728d8 100644 (file)
@@ -1219,6 +1219,8 @@ interface IDatabase {
         * after the database is updated so that the jobs will see the data when they actually run.
         * It can also be used for updates that easily cause deadlocks if locks are held too long.
         *
+        * Updates will execute in the order they were enqueued.
+        *
         * @param callable $callback
         * @since 1.20
         */
@@ -1232,6 +1234,8 @@ interface IDatabase {
         * This is useful for updates that easily cause deadlocks if locks are held too long
         * but where atomicity is strongly desired for these updates and some related updates.
         *
+        * Updates will execute in the order they were enqueued.
+        *
         * @param callable $callback
         * @since 1.22
         */
@@ -1489,8 +1493,8 @@ interface IDatabase {
         * Named locks are not related to transactions
         *
         * @param string $lockName Name of lock to aquire
-        * @param string $method Name of method calling us
-        * @param int $timeout
+        * @param string $method Name of the calling method
+        * @param int $timeout Acquisition timeout in seconds
         * @return bool
         */
        public function lock( $lockName, $method, $timeout = 5 );
@@ -1501,7 +1505,7 @@ interface IDatabase {
         * Named locks are not related to transactions
         *
         * @param string $lockName Name of lock to release
-        * @param string $method Name of method calling us
+        * @param string $method Name of the calling method
         *
         * @return int 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
@@ -1509,6 +1513,25 @@ interface IDatabase {
         */
        public function unlock( $lockName, $method );
 
+       /**
+        * Acquire a named lock, flush any transaction, and return an RAII style unlocker object
+        *
+        * This is suitiable for transactions that need to be serialized using cooperative locks,
+        * where each transaction can see each others' changes. Any transaction is flushed to clear
+        * out stale REPEATABLE-READ snapshot data. Once the returned object falls out of PHP scope,
+        * any transaction will be committed and the lock will be released.
+        *
+        * If the lock acquisition failed, then no transaction flush happens, and null is returned.
+        *
+        * @param string $lockKey Name of lock to release
+        * @param string $fname Name of the calling method
+        * @param int $timeout Acquisition timeout in seconds
+        * @return ScopedCallback|null
+        * @throws DBUnexpectedError
+        * @since 1.27
+        */
+       public function getScopedLockAndFlush( $lockKey, $fname, $timeout );
+
        /**
         * Check to see if a named lock used by lock() use blocking queues
         *
index 25fdea9..606f4f4 100644 (file)
@@ -228,9 +228,24 @@ abstract class LBFactory {
        /**
         * Commit changes on all master connections
         * @param string $fname Caller name
+        * @param array $options Options map:
+        *   - maxWriteDuration: abort if more than this much time was spent in write queries
         */
-       public function commitMasterChanges( $fname = __METHOD__ ) {
+       public function commitMasterChanges( $fname = __METHOD__, array $options = array() ) {
+               $limit = isset( $options['maxWriteDuration'] ) ? $options['maxWriteDuration'] : 0;
+
                $this->logMultiDbTransaction();
+               $this->forEachLB( function ( LoadBalancer $lb ) use ( $limit ) {
+                       $lb->forEachOpenConnection( function ( IDatabase $db ) use ( $limit ) {
+                               $time = $db->pendingWriteQueryDuration();
+                               if ( $limit > 0 && $time > $limit ) {
+                                       throw new DBTransactionError(
+                                               $db,
+                                               wfMessage( 'transaction-duration-limit-exceeded', $time, $limit )->text()
+                                       );
+                               }
+                       } );
+               } );
 
                $start = microtime( true );
                $this->forEachLBCallMethod( 'commitMasterChanges', array( $fname ) );
index b5a79a9..32999f5 100644 (file)
@@ -1363,10 +1363,10 @@ class LoadBalancer {
         * function instead of Database::getLag() avoids a fatal error in this
         * case on many installations.
         *
-        * @param DatabaseBase $conn
-        * @return int
+        * @param IDatabase $conn
+        * @return int|bool Returns false on error
         */
-       public function safeGetLag( $conn ) {
+       public function safeGetLag( IDatabase $conn ) {
                if ( $this->getServerCount() == 1 ) {
                        return 0;
                } else {
@@ -1374,6 +1374,41 @@ class LoadBalancer {
                }
        }
 
+       /**
+        * Wait for a slave DB to reach a specified master position
+        *
+        * This will connect to the master to get an accurate position if $pos is not given
+        *
+        * @param IDatabase $conn Slave DB
+        * @param DBMasterPos|bool $pos Master position; default: current position
+        * @param integer $timeout Timeout in seconds
+        * @return bool Success
+        * @since 1.27
+        */
+       public function safeWaitForMasterPos( IDatabase $conn, $pos = false, $timeout = 10 ) {
+               if ( $this->getServerCount() == 1 || !$conn->getLBInfo( 'slave' ) ) {
+                       return true; // server is not a slave DB
+               }
+
+               $pos = $pos ?: $this->getConnection( DB_MASTER )->getMasterPos();
+               if ( !$pos ) {
+                       return false; // something is misconfigured
+               }
+
+               $result = $conn->masterPosWait( $pos, $timeout );
+               if ( $result == -1 || is_null( $result ) ) {
+                       $msg = __METHOD__ . ": Timed out waiting on {$conn->getServer()} pos {$pos}";
+                       wfDebugLog( 'replication', "$msg\n" );
+                       wfDebugLog( 'DBPerformance', "$msg:\n" . wfBacktrace( true ) );
+                       $ok = false;
+               } else {
+                       wfDebugLog( 'replication', __METHOD__ . ": Done\n" );
+                       $ok = true;
+               }
+
+               return $ok;
+       }
+
        /**
         * Clear the cache for slag lag delay times
         *
index 8f943bf..4faa1dd 100644 (file)
@@ -91,16 +91,16 @@ class MWDebug {
        /**
         * Adds a line to the log
         *
-        * @todo Add support for passing objects
-        *
         * @since 1.19
-        * @param string $str
+        * @param mixed $str
         */
        public static function log( $str ) {
                if ( !self::$enabled ) {
                        return;
                }
-
+               if ( !is_string( $str ) ) {
+                       $str = print_r( $str, true );
+               }
                self::$log[] = array(
                        'msg' => htmlspecialchars( $str ),
                        'type' => 'log',
index 4e8e65b..2465918 100644 (file)
@@ -99,9 +99,25 @@ class KafkaHandler extends AbstractProcessingHandler {
        ) {
                $metadata = new MetaDataFromKafka( $kafkaServers );
                $produce = new Produce( $metadata );
+
+               if ( isset( $options['sendTimeout'] ) ) {
+                       $timeOut = $options['sendTimeout'];
+                       $produce->getClient()->setStreamOption( 'SendTimeoutSec', 0 );
+                       $produce->getClient()->setStreamOption( 'SendTimeoutUSec',
+                               intval( $timeOut * 1000000 )
+                       );
+               }
+               if ( isset( $options['recvTimeout'] ) ) {
+                       $timeOut = $options['recvTimeout'];
+                       $produce->getClient()->setStreamOption( 'RecvTimeoutSec', 0 );
+                       $produce->getClient()->setStreamOption( 'RecvTimeoutUSec',
+                               intval( $timeOut * 1000000 )
+                       );
+               }
                if ( isset( $options['logExceptions'] ) && is_string( $options['logExceptions'] ) ) {
                        $options['logExceptions'] = LoggerFactory::getInstance( $options['logExceptions'] );
                }
+
                return new self( $produce, $options, $level, $bubble );
        }
 
index 9e214f6..6d8f0b8 100644 (file)
@@ -1119,12 +1119,13 @@ class LocalFile extends File {
         * @param string|bool $timestamp Timestamp for img_timestamp, or false to use the
         *   current time
         * @param User|null $user User object or null to use $wgUser
-        *
+        * @param string[] $tags Change tags to add to the log entry and page revision.
+        *   (This doesn't check $user's permissions.)
         * @return FileRepoStatus On success, the value member contains the
         *     archive name, or an empty string if it was a new file.
         */
        function upload( $srcPath, $comment, $pageText, $flags = 0, $props = false,
-               $timestamp = false, $user = null
+               $timestamp = false, $user = null, $tags = array()
        ) {
                global $wgContLang;
 
@@ -1166,7 +1167,8 @@ class LocalFile extends File {
                        // It is only *preferable* to avoid leaving such files orphaned.
                        // Once the second operation goes through, then the current version was
                        // updated and we must therefore update the DB too.
-                       if ( !$this->recordUpload2( $status->value, $comment, $pageText, $props, $timestamp, $user ) ) {
+                       $oldver = $status->value;
+                       if ( !$this->recordUpload2( $oldver, $comment, $pageText, $props, $timestamp, $user, $tags ) ) {
                                $status->fatal( 'filenotfound', $srcPath );
                        }
                }
@@ -1216,10 +1218,11 @@ class LocalFile extends File {
         * @param bool|array $props
         * @param string|bool $timestamp
         * @param null|User $user
+        * @param string[] $tags
         * @return bool
         */
        function recordUpload2(
-               $oldver, $comment, $pageText, $props = false, $timestamp = false, $user = null
+               $oldver, $comment, $pageText, $props = false, $timestamp = false, $user = null, $tags = array()
        ) {
                if ( is_null( $user ) ) {
                        global $wgUser;
@@ -1355,6 +1358,7 @@ class LocalFile extends File {
 
                // Add the log entry...
                $logEntry = new ManualLogEntry( 'upload', $reupload ? 'overwrite' : 'upload' );
+               $logEntry->setTimestamp( $this->timestamp );
                $logEntry->setPerformer( $user );
                $logEntry->setComment( $comment );
                $logEntry->setTarget( $descTitle );
@@ -1413,7 +1417,7 @@ class LocalFile extends File {
                # b) They won't cause rollback of the log publish/update above
                $that = $this;
                $dbw->onTransactionIdle( function () use (
-                       $that, $reupload, $wikiPage, $newPageContent, $comment, $user, $logEntry, $logId, $descId
+                       $that, $reupload, $wikiPage, $newPageContent, $comment, $user, $logEntry, $logId, $descId, $tags
                ) {
                        # Update memcache after the commit
                        $that->invalidateCache();
@@ -1476,7 +1480,17 @@ class LocalFile extends File {
                        );
 
                        # Now that the log entry is up-to-date, make an RC entry.
-                       $logEntry->publish( $logId );
+                       $recentChange = $logEntry->publish( $logId );
+
+                       if ( $tags ) {
+                               ChangeTags::addTags(
+                                       $tags,
+                                       $recentChange ? $recentChange->getAttribute( 'rc_id' ) : null,
+                                       $logEntry->getAssociatedRevId(),
+                                       $logId
+                               );
+                       }
+
                        # Run hook for other updates (typically more cache purging)
                        Hooks::run( 'FileUpload', array( $that, $reupload, !$newPageContent ) );
 
index 9ea9702..f26d688 100644 (file)
@@ -91,8 +91,8 @@ abstract class ImageGalleryBase extends ContextSource {
                        $context = RequestContext::getMainAndWarn( __METHOD__ );
                }
                if ( !$mode ) {
-                       $galleryOpions = $context->getConfig()->get( 'GalleryOptions' );
-                       $mode = $galleryOpions['mode'];
+                       $galleryOptions = $context->getConfig()->get( 'GalleryOptions' );
+                       $mode = $galleryOptions['mode'];
                }
 
                $mode = $wgContLang->lc( $mode );
index 3d9ec1f..3ba2156 100644 (file)
@@ -587,7 +587,7 @@ abstract class HTMLFormField {
                        // It might look weird, but it'll work OK.
                        return $this->getFieldLayoutOOUI(
                                new OOUI\Widget( array( 'content' => new OOUI\HtmlSnippet( $this->getDiv( $value ) ) ) ),
-                               array( 'infusable' => false )
+                               array( 'infusable' => false, 'align' => 'top' )
                        );
                }
 
index 2d05704..64f9cb6 100644 (file)
@@ -49,6 +49,7 @@ class HTMLRadioField extends HTMLFormField {
 
                return new OOUI\RadioSelectInputWidget( array(
                        'name' => $this->mName,
+                       'id' => $this->mID,
                        'value' => $value,
                        'options' => $options,
                        'classes' => 'mw-htmlform-flatlist-item',
index 9617c0a..8816d37 100644 (file)
@@ -44,4 +44,13 @@ class HTMLUserTextField extends HTMLTextField {
 
                return new UserInputWidget( $params );
        }
+
+       public function getInputHtml( $value ) {
+               // add the required module and css class for user suggestions in non-OOUI mode
+               $this->mParent->getOutput()->addModules( 'mediawiki.userSuggest' );
+               $this->mClass .= ' mw-autocomplete-user';
+
+               // return parent html
+               return parent::getInputHtml( $value );
+       }
 }
index 904fde8..61c3002 100644 (file)
@@ -456,7 +456,7 @@ abstract class DatabaseUpdater {
                        flush();
                        if ( $ret !== false ) {
                                $updatesDone[] = $origParams;
-                               wfWaitForSlaves();
+                               wfGetLBFactory()->waitForReplication();
                        } else {
                                $updatesSkipped[] = array( $func, $params, $origParams );
                        }
index b742074..3b6a37f 100644 (file)
@@ -391,7 +391,7 @@ ${serverSetting}
 ## be publically accessible from the web.
 #\$wgCacheDirectory = \"\$IP/cache\";
 
-# Site language code, should be one of the list in ./languages/Names.php
+# Site language code, should be one of the list in ./languages/data/Names.php
 \$wgLanguageCode = \"{$this->values['wgLanguageCode']}\";
 
 \$wgSecretKey = \"{$this->values['wgSecretKey']}\";
index 4813bea..9b5635b 100644 (file)
@@ -278,7 +278,6 @@ class MysqlUpdater extends DatabaseUpdater {
                        // 1.27
                        array( 'dropTable', 'msg_resource_links' ),
                        array( 'dropTable', 'msg_resource' ),
-                       array( 'addTable', 'bot_passwords', 'patch-bot_passwords.sql' ),
                );
        }
 
@@ -836,7 +835,7 @@ class MysqlUpdater extends DatabaseUpdater {
                        foreach ( $res as $row ) {
                                $count = ( $count + 1 ) % 100;
                                if ( $count == 0 ) {
-                                       wfWaitForSlaves();
+                                       wfGetLBFactory()->waitForReplication( array( 'wiki' => wfWikiID() ) );
                                }
                                $this->db->insert( 'templatelinks',
                                        array(
index 21d5dbc..7880557 100644 (file)
@@ -89,7 +89,6 @@ class PostgresUpdater extends DatabaseUpdater {
                        array( 'addTable', 'uploadstash', 'patch-uploadstash.sql' ),
                        array( 'addTable', 'user_former_groups', 'patch-user_former_groups.sql' ),
                        array( 'addTable', 'sites', 'patch-sites.sql' ),
-                       array( 'addTable', 'bot_passwords', 'patch-bot_passwords.sql' ),
 
                        # Needed before new field
                        array( 'convertArchive2' ),
index ba223c4..5279c2d 100644 (file)
@@ -147,7 +147,6 @@ class SqliteUpdater extends DatabaseUpdater {
                        // 1.27
                        array( 'dropTable', 'msg_resource_links' ),
                        array( 'dropTable', 'msg_resource' ),
-                       array( 'addTable', 'bot_passwords', 'patch-bot_passwords.sql' ),
                );
        }
 
index 7926f5a..3772dbf 100644 (file)
@@ -6,7 +6,8 @@
                        "Wizardist",
                        "Zedlik",
                        "아라",
-                       "Red Winged Duck"
+                       "Red Winged Duck",
+                       "Macofe"
                ]
        },
        "config-desc": "Праграма ўсталяваньня MediaWiki",
@@ -15,7 +16,7 @@
        "config-localsettings-upgrade": "Выяўлены файл <code>LocalSettings.php</code>.\nКаб абнавіць гэтае ўсталяваньне, калі ласка, увядзіце значэньне <code>$wgUpgradeKey</code> у полі ніжэй.\nЯго можна знайсьці ў <code>LocalSettings.php</code>.",
        "config-localsettings-cli-upgrade": "Быў знойдзены файл <code>LocalSettings.php</code>.\nКаб зьмяніць гэтае ўсталяваньне, калі ласка, запусьціце <code>update.php</code>",
        "config-localsettings-key": "Ключ паляпшэньня:",
-       "config-localsettings-badkey": "Пададзены Вамі ключ зьяўляецца няслушным.",
+       "config-localsettings-badkey": "Ð\9fададзенÑ\8b Ð\92амÑ\96 ÐºÐ»Ñ\8eÑ\87 Ð°Ð±Ð½Ð°Ñ\9eленÑ\8cнÑ\8f Ð·Ñ\8cÑ\8fÑ\9eлÑ\8fеÑ\86Ñ\86а Ð½Ñ\8fÑ\81лÑ\83Ñ\88нÑ\8bм.",
        "config-upgrade-key-missing": "Знойдзена ўсталяваная MediaWiki.\nКаб абнавіць гэтае ўсталяваньне, калі ласка, устаўце наступны радок у канец Вашага <code>LocalSettings.php</code>:\n\n$1",
        "config-localsettings-incomplete": "Выглядае, што актуальны <code>LocalSettings.php</code> зьяўляецца няпоўным.\nНе зададзеная зьменная $1.\nКалі ласка, зьмяніце <code>LocalSettings.php</code> так, каб прысутнічала гэтая зьменная, і націсьніце «{{int:Config-continue}}».",
        "config-localsettings-connection-error": "Адбылася памылка падчас злучэньня з базай зьвестак з выкарыстаньнем наладаў, пазначаных у <code>LocalSettings.php</code>. Калі ласка, выпраўце гэтыя налады і паспрабуйце яшчэ раз.\n\n$1",
        "config-instantcommons-help": "[//www.mediawiki.org/wiki/InstantCommons Instant Commons] — магчымасьць, якая дазваляе вікі выкарыстоўваць выявы, гукі і іншыя мэдыя, якія знаходзяцца на сайце [//commons.wikimedia.org/ Wikimedia Commons].\nКаб гэта зрабіць, MediaWiki патрабуе доступу да Інтэрнэту.\n\nКаб даведацца болей пра гэтую магчымасьць, уключаючы інструкцыю пра тое, як яе ўстанавіць ў любой вікі, акрамя Wikimedia Commons, глядзіце [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos дакумэнтацыю].",
        "config-cc-error": "Выбар ліцэнзіі Creative Commons ня даў вынікаў.\nУвядзіце назву ліцэнзіі ўручную.",
        "config-cc-again": "Выберыце яшчэ раз…",
-       "config-cc-not-chosen": "Выберыце, якую ліцэнзію Creative Commons Вы жадаеце выкарыстоўваць і націсьніце «працягваць».",
+       "config-cc-not-chosen": "Выберыце, якую ліцэнзію Creative Commons Вы жадаеце выкарыстоўваць і націсьніце «proceed».",
        "config-advanced-settings": "Дадатковыя налады",
        "config-cache-options": "Налады кэшаваньня аб’ектаў:",
        "config-cache-help": "Кэшаваньне аб’ектаў павялічвае хуткасьць працы MediaWiki праз кэшаваньне зьвестак, якія часта выкарыстоўваюцца.\nВельмі рэкамэндуем уключыць гэта для сярэдніх і буйных сайтаў, таксама будзе карысна для дробных сайтаў.",
index f455ced..68d5eaa 100644 (file)
@@ -13,7 +13,7 @@
        "config-localsettings-upgrade": "Беше открит файл <code>LocalSettings.php</code>.\nЗа надграждане на съществуващата инсталация, необходимо е в кутията по-долу да се въведе стойността на <code>$wgUpgradeKey</code>.\nТази информация е налична в <code>LocalSettings.php</code>.",
        "config-localsettings-cli-upgrade": "Беше открит файл <code>LocalSettings.php</code>.\nЗа надграждане на наличната инсталация, необходимо е да се стартира <code>update.php</code>",
        "config-localsettings-key": "Ключ за надграждане:",
-       "config-localsettings-badkey": "Предоставеният ключ е неправилен.",
+       "config-localsettings-badkey": "Ð\9fÑ\80едоÑ\81Ñ\82авениÑ\8fÑ\82 ÐºÐ»Ñ\8eÑ\87 Ð·Ð° Ð½Ð°Ð´Ð³Ñ\80аждане Ðµ Ð½ÐµÐ¿Ñ\80авилен.",
        "config-upgrade-key-missing": "Беше открита съществуваща инсталация на МедияУики.\nЗа надграждане на съществуващата инсталация, необходимо е да се постави следният ред в края на файла <code>LocalSettings.php</code>:\n\n$1",
        "config-localsettings-incomplete": "Съществуващият файл <code>LocalSettings.php</code> изглежда непълен.\nПроменливата $1 не е зададена.\nНеобходимо е да се редактира файлът <code>LocalSettings.php</code> и да се зададе променливата, след което да се натисне „{{int:Config-continue}}“.",
        "config-localsettings-connection-error": "Възникна грешка при свързване с базата данни чрез посочените настройки в <code>LocalSettings.php</code>. Преди следващ опит за свързване, необходимо е настройките да бъдат коригирани.\n\n$1",
index 78381be..8198af9 100644 (file)
@@ -5,7 +5,8 @@
                        "Fulup",
                        "Gwendal",
                        "Y-M D",
-                       "아라"
+                       "아라",
+                       "Macofe"
                ]
        },
        "config-desc": "Poellad staliañ MediaWIki",
@@ -51,7 +52,6 @@
        "config-env-bad": "Gwiriet eo bet an endro.\nNe c'hallit ket staliañ MediaWiki.",
        "config-env-php": "Staliet eo PHP $1.",
        "config-env-hhvm": "HHVM $1 zo staliet.",
-       "config-unicode-using-utf8": "Oc'h implijout utf8_normalize.so gant Brion Vibber evit ar reolata Unicode.",
        "config-unicode-using-intl": "Oc'h implijout [http://pecl.php.net/intl an astenn PECL intl] evit ar reolata Unicode.",
        "config-unicode-pure-php-warning": "'''Diwallit''' : N'haller ket kaout an [http://pecl.php.net/intl intl PECL astenn] evit merañ reoladur Unicode, a zistro d'ar stumm gorrek emplementet e-PHP.\nMa lakait da dreiñ ul lec'hienn darempredet-stank e vo mat deoc'h lenn un tammig bihan diwar-benn se war [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations Unicode normalization]. (e saozneg)",
        "config-unicode-update-warning": "'''Diwallit''': ober a ra stumm staliet endalc'her skoueriekaat Unicode gant ur stumm kozh eus [http://site.icu-project.org/ levraoueg meziantoù ar raktres ICU].\nDleout a rafec'h [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations hizivaat] ma seblant deoc'h bezañ pouezus ober gant Unicode.",
@@ -90,8 +90,6 @@
        "config-db-install-account": "Kont implijer evit ar staliadur",
        "config-db-username": "Anv implijer an diaz roadennoù :",
        "config-db-password": "Ger-tremen an diaz roadennoù :",
-       "config-db-password-empty": "Lakait ur ger-tremen evit kont nevez an diaz roadennoù : $1.\nHa pa vefe posupl da grouiñ kontoù hep ger-tremen, n'eo ket erbedet evit abegoù surentez.",
-       "config-db-username-empty": "Ret eo deoc'h ebarzhiñ un talvoud evit  \"{{int:config-db-username}}\".",
        "config-db-install-username": "Ebarzhit an anv implijer a vo implijet da gevreañ ouzh an diaz roadennoù e-pad an argerzh staliañ.\nN'eo ket anv implijer ar gont MediaWiki, an anv implijer evit ho tiaz roadennoù eo.",
        "config-db-install-password": "Ebarzhit ar ger-tremen a vo implijet da gevreañ ouzh an diaz roadennoù e-pad an argerzh staliañ.\nN'eo ket ar ger-tremen evit ar gont MediaWiki, ar ger-tremen evit ho tiaz roadennoù eo.",
        "config-db-install-help": "Merkañ anv an implijer hag ar ger-tremen a vo implijet evit kevreañ ouzh an diaz roadennoù e-pad an argerzh staliañ.",
        "config-instantcommons": "Gweredekaat ''InstantCommons''",
        "config-cc-error": "N'eus deuet disoc'h ebet gant dibaber aotreoù-implijout Creative Commons.\nMerkit anv an aotre-implijout gant an dorn.",
        "config-cc-again": "Dibabit adarre...",
-       "config-cc-not-chosen": "Dibabit an aotre-implijout Creative Commons a fell deoc'h ober gantañ ha klikit war \"kenderc'hel\".",
+       "config-cc-not-chosen": "Dibabit an aotre-implijout Creative Commons a fell deoc'h ober gantañ ha klikit war \"proceed\".",
        "config-advanced-settings": "Kefluniadur araokaet",
        "config-cache-options": "Arventennoù evit krubuilhañ traezoù :",
        "config-cache-accel": "Krubuilhañ traezoù PHP (APC, XCache pe WinCache)",
index 4cbd0cc..4e0c82c 100644 (file)
@@ -10,7 +10,8 @@
                        "Alvaro Vidal-Abarca",
                        "ESM",
                        "Xavier Dengra",
-                       "Jaumeortola"
+                       "Jaumeortola",
+                       "Macofe"
                ]
        },
        "config-desc": "L'instal·lador del MediaWiki",
        "config-instantcommons": "Habilita Instant Commons",
        "config-cc-error": "El selector de llicència Creative Commons no ha donat cap resultat.\nIntroduïu la llicència manualment.",
        "config-cc-again": "Torneu-ho a triar...",
-       "config-cc-not-chosen": "Trieu quina llicència Creative Commons voleu i feu clic a «procedeix».",
+       "config-cc-not-chosen": "Trieu quina llicència Creative Commons voleu i feu clic a «proceed».",
        "config-advanced-settings": "Configuració avançada",
        "config-cache-options": "Configuració per a la memòria cau dels objectes:",
        "config-cache-help": "L'encauament d'objectes s'utilitza per a millorar la rapidesa del MediaWiki afegint a la memòria cau les dades que s'utilitzen de forma freqüent. És recomanable que els llocs web mitjans o grans ho habilitin. També els llocs web petits en veuran els beneficis.",
index 53a4d9a..29fe870 100644 (file)
@@ -14,7 +14,8 @@
                        "Se4598",
                        "Suriyaa Kudo",
                        "Das Schäfchen",
-                       "Florian"
+                       "Florian",
+                       "Macofe"
                ]
        },
        "config-desc": "Das MediaWiki-Installationsprogramm",
        "config-instantcommons-help": "[//www.mediawiki.org/wiki/InstantCommons InstantCommons] ist eine Funktion, die es Wikis ermöglicht, Bild-, Klang- und andere Mediendateien zu nutzen, die auf der Website [//commons.wikimedia.org/ Wikimedia Commons] verfügbar sind.\nUm diese Funktion nutzen zu können, muss das Wiki über eine Verbindung zum Internet verfügen.\n\nWeitere Informationen zu dieser Funktion, einschließlich der Anleitung, wie hierfür andere Wikis als Wikimedia Commons eingerichtet werden können, gibt es im [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos Handbuch].",
        "config-cc-error": "Der Creativ-Commons-Lizenzassistent konnte keine Lizenz ermitteln.\nDie Lizenz ist daher jetzt manuell einzugeben.",
        "config-cc-again": "Erneut auswählen …",
-       "config-cc-not-chosen": "Die gewünschte Creative-Commons-Lizenz auswählen und dann auf „weiter“ klicken.",
+       "config-cc-not-chosen": "Die gewünschte Creative-Commons-Lizenz auswählen und dann auf „proceed“ klicken.",
        "config-advanced-settings": "Erweiterte Konfiguration",
        "config-cache-options": "Einstellungen für die Zwischenspeicherung von Objekten:",
        "config-cache-help": "Das Objektcaching wird dazu genutzt, die Geschwindigkeit von MediaWiki zu verbessern, indem häufig genutzte Daten zwischengespeichert werden.\nEs wird sehr empfohlen, es für mittelgroße bis große Wikis zu nutzen, aber auch für kleine Wikis ergeben sich erkennbare Geschwindigkeitsverbesserungen.",
index 6130399..ee46d90 100644 (file)
@@ -7,7 +7,9 @@
                        "Astralnet",
                        "Geraki",
                        "Stam.nikos",
-                       "Giorgos456"
+                       "Giorgos456",
+                       "Badseed",
+                       "Macofe"
                ]
        },
        "config-desc": "Το πρόγραμμα εγκατάστασης για το MediaWiki",
@@ -16,7 +18,7 @@
        "config-localsettings-upgrade": "Εντοπίστηκε αρχείο <code>LocalSettings.php</code>.\nΓια να αναβαθμίσετε αυτή την εγκατάσταση, παρακαλούμε να εισαγάγετε την τιμή του <code>$wgUpgradeKey</code> στο παρακάτω πλαίσιο.\nΘα το βρείτε στο <code>LocalSettings.php</code>.",
        "config-localsettings-cli-upgrade": "Ένα αρχείο <code>LocalSettings.php</code> έχει εντοπιστεί.\nΓια να αναβαθμίσετε αυτή την εγκατάσταση, εκτελέστε το <code>update.php</code> αντ' αυτού.",
        "config-localsettings-key": "Κλειδί αναβάθμισης:",
-       "config-localsettings-badkey": "Το κλειδί που δώσατε είναι εσφαλμένο.",
+       "config-localsettings-badkey": "Το κλειδί αναβάθμισης που δώσατε είναι εσφαλμένο.",
        "config-upgrade-key-missing": "Έχει εντοπιστεί μια υπάρχουσα εγκατάσταση του MediaWiki.\nΓια να αναβαθμίσετε αυτήν την εγκατάσταση, παρακαλούμε να βάλετε την ακόλουθη γραμμή στο κάτω μέρος του <code>LocalSettings.php</code> σας:\n\n$1",
        "config-localsettings-incomplete": "Το υπάρχον <code>LocalSettings.php</code> φαίνεται να είναι ελλιπές.\nΤο $1 μεταβλητή δεν έχει οριστεί.\nΠαρακαλούμε να αλλάξετε  το <code>LocalSettings.php</code> έτσι ώστε αυτή η μεταβλητή έχει οριστεί, και κάντε κλικ στο \"{{int:Config-continue}}\".",
        "config-localsettings-connection-error": "Ένα σφάλμα παρουσιάστηκε κατά τη σύνδεση με τη βάση δεδομένων και με τη χρήση των ρυθμίσεων που ορίστηκαν στο <code>LocalSettings.php</code>. Παρακαλούμε διορθώστε αυτές τις ρυθμίσεις και δοκιμάστε ξανά.\n\n$1",
@@ -26,7 +28,7 @@
        "config-your-language": "Η γλώσσα σας:",
        "config-your-language-help": "Επιλέξτε μία γλώσσα για τη διαδικασία της εγκατάστασης.",
        "config-wiki-language": "Γλώσσα του wiki:",
-       "config-wiki-language-help": "Î\95Ï\80ιλέξÏ\84ε Ï\84η Î³Î»Ï\8eÏ\83Ï\83α Ï\80οÏ\85 Î¸Î± Î³Ï\81αÏ\86εί Ï\84ο wiki Ï\80Ï\81Ï\89Ï\84αÏ\81Ï\87ικά.",
+       "config-wiki-language-help": "Î\95Ï\80ιλέξÏ\84ε Ï\84η Î³Î»Ï\8eÏ\83Ï\83α Ï\83Ï\84ην Î¿Ï\80οία Î¸Î± Î³Ï\81άÏ\86εÏ\84αι ÎºÏ\85Ï\81ίÏ\89Ï\82 Ï\84ο wiki.",
        "config-back": "← Πίσω",
        "config-continue": "Συνέχεια →",
        "config-page-language": "Γλώσσα",
@@ -45,7 +47,7 @@
        "config-page-upgradedoc": "Αναβάθμιση",
        "config-page-existingwiki": "Υπάρχον wiki",
        "config-help-restart": "Θέλετε να καταργήσετε όλα τα αποθηκευμένα δεδομένα που έχετε εισαγάγει και να επανεκκινήσετε τη διαδικασία εγκατάστασης;",
-       "config-restart": "Î\9dαι, ÎºÎ¬Î½Ï\84ε ÎµÏ\80ανεκκίνηÏ\83η",
+       "config-restart": "Ναι, επανεκκίνηση",
        "config-welcome": "=== Περιβαλλοντικοί έλεγχοι ===\nΤώρα θα γίνουν βασικοί έλεγχοι για να δούμε αν αυτό το περιβάλλον είναι κατάλληλο για την εγκατάσταση του MediaWiki.\nΘυμηθείτε να συμπεριλάβετε αυτές τις πληροφορίες εάν αναζητήσετε υποστήριξη για το πώς να ολοκληρώσετε την εγκατάσταση.",
        "config-copyright": "=== Πνευματικά δικαιώματα και Όροι ===\n\n$1\n\nΑυτό το πρόγραμμα είναι ελεύθερο λογισμικό• μπορείτε να το αναδιανείμετε ή και να το τροποποιήσετε υπό τους όρους της Γενικής Άδειας Δημόσιας Χρήσης GNU, όπως αυτή δημοσιεύεται από το Ίδρυμα Ελεύθερου Λογισμικού• είτε της έκδοσης 2 της Άδειας, είτε (κατά την επιλογή σας) οποιασδήποτε μεταγενέστερης έκδοσης.\n\nΑυτό το πρόγραμμα διανέμεται με την ελπίδα ότι θα είναι χρήσιμο, αλλά <strong>χωρίς καμία εγγύηση</strong>• χωρίς καν την υπονοούμενη εγγύηση της <strong>εμπορευσιμότητας</strong> ή της <strong>καταλληλοτότητας για συγκεκριμένο σκοπό</strong>.\nΔείτε την Γενική Άδεια Δημόσιας Χρήσης GNU για περισσότερες λεπτομέρειες.\n\nΘα πρέπει να έχετε λάβει <doclink href=\"Copying\">ένα αντίγραφο της Γενικής Άδειας Δημόσιας Χρήσης GNU</doclink> μαζί με αυτό το πρόγραμμα• αν όχι, γράψτε στο Free Software Foundation,\n51 Franklin Street, Fifth Floor,\nBoston, MA 02110-1335\nUSA ή [http://www.gnu.org/copyleft/gpl.html διαβάστε online].",
        "config-sidebar": "* [//www.mediawiki.org Αρχική MediaWiki]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Οδηγός Χρήστη]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents Οδηγός Διαχειριστή]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Συχνές ερωτήσεις]\n----\n* <doclink href=\"Readme\">Διαβάστε με</doclink>\n* <doclink href=\"ReleaseNotes\">Σημειώσεις έκδοσης</doclink>\n* <doclink href=\"Copying\">Αντιγραφή</doclink>\n* <doclink href=\"UpgradeDoc\">Αναβάθμιση</doclink>",
        "config-env-hhvm": "Το HHVM $1 είναι εγκατεστημένο.",
        "config-unicode-using-intl": "Χρησιμοποιώντας την [http://pecl.php.net/intl επέκταση intl PECL] για κανονικοποίηση Unicode.",
        "config-unicode-pure-php-warning": "<strong>Προειδοποίηση:</strong> Η [http://pecl.php.net/intl επέκταση intl PECL] δεν είναι διαθέσιμη για να χειριστεί την κανονικοποίηση Unicode, επιστρέφουμε στην αργή αμιγώς PHP εφαρμογή.\nΕάν λειτουργείτε έναν ιστότοπο υψηλής επισκεψιμότητας, θα πρέπει να ρίξετε μια ματιά στην [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations κανονικοποίηση Unicode].",
-       "config-outdated-sqlite": "<strong>Προειδοποίηση:</strong> έχετε την SQLite $1, που είναι χαμηλότερα απαιτούμενη έκδοση $2. SQLite δεν θα είναι διαθέσιμη.",
-       "config-register-globals-error": "<strong>Σφάλμα: PHP <code>[http://php.net/register_globals τις register_globals]</code> η επιλογή είναι ενεργοποιημένη.\nΘα πρέπει να απενεργοποιηθεί για να συνεχίσετε με την εγκατάσταση.</strong>\nΔείτε [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals] για βοήθεια σχετικά με το πώς να το κάνετε.",
-       "config-safe-mode": "<strong>Προειδοποίηση:</strong> Το  PHP [http://www.php.net/features.safe-mode safe mode] είναι ενεργό.\nΑυτό μπορεί να προκαλέσει προβλήματα, ιδιαίτερα εάν η χρήση αρχείων και  υποστήριξη <code>math</code>.",
-       "config-xml-bad": "Το PHP XML module λείπει.\nΤο MediaWiki απαιτεί λειτουργίες σε αυτήν την ενότητα και δεν θα λειτουργήσει με αυτή την παραμετροποίηση. \nΜπορεί να χρειαστεί να εγκαταστήσετε το πακέτο php-xml RPM.",
-       "config-pcre-no-utf8": "<strong>Κρίσιμο:</strong> Το PCRE module της PHP  φαίνεται να είναι μεταγλωτισμένο χωρίς υποσήριξη  PCRE_UTF8.\nΤο MediaWiki απαιτεί υποστήριξη UTF-8 για να λειτουργήσει σωστά.",
+       "config-no-db": "Δεν βρέθηκε κάποιο κατάλληλο πρόγραμμα οδήγησης βάσης δεδομένων! Θα πρέπει να εγκαταστήσετε ένα πρόγραμμα οδήγησης βάσης δεδομένων για  PHP.\nΟ παρακάτω {{PLURAL:$2|τύπος βάσης δεδομένων|τύποι βάσεων δεδομένων}} υποστηρίζονται: $1.\n\nΑν κάνετε compile την PHP μόνοι σας, ρυθμίστε ξανά τις παραμέτρους με κάποιον ενεργοποιημένο εξυπηρετητή βάσεων  δεδομένων, για παράδειγμα, χρησιμοποιώντας την εντολή <code>./configure --with-mysqli</code>.\nΕάν έχετε εγκαταστήσει την PHP από κάποιο πακέτο στο Debian ή στο Ubuntu, τότε θα πρέπει να εγκαταστήσετε επίσης, για παράδειγμα, το πακέτο <code>php5-mysql</code>.",
+       "config-outdated-sqlite": "<strong>Προειδοποίηση:</strong> έχετε την SQLite έκδοση $1, που είναι χαμηλότερη από την ελάχιστη απαιτούμενη έκδοση $2. Η SQLite δεν θα είναι διαθέσιμη.",
+       "config-register-globals-error": "<strong>Σφάλμα: Η επιλογή της PHP <code>[http://php.net/register_globals τις register_globals]</code> είναι ενεργοποιημένη.\nΘα πρέπει να απενεργοποιηθεί για να συνεχιστεί η εγκατάσταση.</strong>\nΔείτε τη σελίδα [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals] για βοήθεια σχετικά με αυτήν την ενέργεια.",
+       "config-safe-mode": "<strong>Προειδοποίηση:</strong> Το [http://www.php.net/features.safe-mode safe mode] της PHP είναι ενεργό.\nΑυτό μπορεί να προκαλέσει προβλήματα, ιδιαίτερα εάν γίνεται χρήση φόρτωσης αρχείων και  υποστήριξης <code>math</code>.",
+       "config-xml-bad": "Το PHP XML module λείπει.\nΤο MediaWiki απαιτεί συναρτήσεις που περιλαμβάνονται σε αυτό το module και δεν θα λειτουργήσει με αυτή την παραμετροποίηση. \nΊσως χρειάζεται να εγκαταστήσετε το πακέτο RPM php-xml.",
+       "config-pcre-no-utf8": "<strong>Κρίσιμο:</strong> Το PCRE module της PHP  φαίνεται να έχει μεταγλωττιστεί χωρίς υποστήριξη  PCRE_UTF8.\nΓια τη σωστή λειτουργία του MediaWiki απαιτείται υποστήριξη UTF-8.",
        "config-memory-raised": "Το  <code>memory_limit</code> της PHP είναι  $1 και αυξήθηκε σε  $2.",
-       "config-memory-bad": "<strong>Προειδοποίηση:</strong> η <code>memory_limit</code> της PHP είναι $1.\nΑυτό είναι πιθανώς πολύ χαμηλό.\n\nΗ εγκατάσταση ενδέχεται να αποτύχει!",
+       "config-memory-bad": "<strong>Προειδοποίηση:</strong> το <code>memory_limit</code> της PHP είναι $1.\nΑυτή η τιμή είναι πιθανώς πολύ χαμηλή.\n\nΗ εγκατάσταση ενδέχεται να αποτύχει!",
        "config-xcache": "[http://xcache.lighttpd.net/ Το XCache] είναι εγκατεστημένο",
        "config-apc": "Το [http://www.php.net/apc APC] είναι εγκατεστημένο",
        "config-wincache": "[http://www.iis.net/download/WinCacheForPhp Το WinCache] είναι εγκατεστημένο",
        "config-diff3-bad": "Το GNU diff3 δεν βρέθηκε.",
        "config-git": "Βρέθηκε η Git έκδοση λογισμικού ελέγχου: <code>$1</code>.",
-       "config-git-bad": "Η Git έκδοση του λογισμικού ελέγχου δε βρέθηκε.",
-       "config-no-uri": "<strong>ΣÏ\86άλμα:</strong> Î\94εν Î¼Ï\80Ï\8cÏ\81εÏ\83ε Î½Î± ÎºÎ±Î¸Î¿Ï\81ίÏ\83ει το τρέχον URI.\nΗ εγκατάσταση ματαιώθηκε.",
-       "config-using-server": "Χρησιμοποιώντας το όνομα του διακομιστή \"<nowiki>$1</nowiki>\".",
+       "config-git-bad": "Η Git έκδοση του λογισμικού ελέγχου δεν βρέθηκε.",
+       "config-no-uri": "<strong>ΣÏ\86άλμα:</strong> Î\94εν Î®Ï\84αν Î´Ï\85ναÏ\84Ï\8c Î½Î± ÎºÎ±Î¸Î¿Ï\81ιÏ\83Ï\84εί το τρέχον URI.\nΗ εγκατάσταση ματαιώθηκε.",
+       "config-using-server": "Χρησιμοποιείται το όνομα διακομιστή \"<nowiki>$1</nowiki>\".",
        "config-using-uri": "Χρησιμοποιώντας την διεύθυνση URL του διακομιστή \"<nowiki>$1$2</nowiki>\".",
-       "config-brokenlibxml": "Το σύστημά σας έχει ένα συνδυασμό εκδόσεων της PHP και libxml2 που είναι προβληματικές και μπορεί να προκαλέσει κρυμμένα στοιχεία διαφθοράς στο MediaWiki και άλλες εφαρμογές web.\nΑναβαθμίστε σε libxml2 2.7.3 ή μεταγενέστερο ([https://bugs.php.net/bug.php?id=45996 bug κατατεθεί με την PHP]).\nΗ εγκατάσταση ματαιώθηκε.",
+       "config-brokenlibxml": "Το σύστημά σας έχει έναν συνδυασμό εκδόσεων της PHP και της libxml2 που είναι προβληματικός και μπορεί να προκαλέσει καταστροφή κρυμμένων στοιχείων στο MediaWiki και σε άλλες εφαρμογές ιστού.\nΑναβαθμίστε σε libxml2 2.7.3 ή μεταγενέστερη έκδοση ([https://bugs.php.net/bug.php?id=45996 bug που έχει καταχωριστεί για την PHP]).\nΗ εγκατάσταση ματαιώθηκε.",
        "config-db-type": "Τύπος βάσης δεδομένων:",
        "config-db-host": "Φιλοξενία βάσης δεδομένων:",
        "config-db-host-oracle": "Βάση δεδομένων TNS:",
        "config-db-wiki-settings": "Αναγνώριση αυτού του wiki",
        "config-db-name": "Όνομα βάσης δεδομένων:",
-       "config-db-name-help": "Î\95Ï\80ιλέξÏ\84ε Î­Î½Î± Ï\8cνομα Ï\80οÏ\85 Ï\84αιÏ\81ιάζει Ï\83Ï\84ο  wiki Ï\83αÏ\82. Î\94εν Ï\80Ï\81έÏ\80ει Î½Î± Ï\80εÏ\81ιέÏ\87ει ÎºÎµÎ½Î¬ Î´Î¹Î±Ï\83Ï\84ήμαÏ\84α.\n\nÎ\95άν Ï\87Ï\81ηÏ\83ιμοÏ\80οιείÏ\84ε ÎºÎ¿Î¹Î½Ï\8cÏ\87Ï\81ηÏ\83Ï\84ο web hosting, Î¿ Ï\80άÏ\81οÏ\87οÏ\82 Ï\83αÏ\82 ÎµÎ¯Ï\84ε Î¸Î± Ï\83αÏ\82 Î´Ï\8eÏ\83ει Î­Î½Î± Ï\83Ï\85γκεκÏ\81ιμένο Ï\8cνομα Î²Î¬Ï\83ηÏ\82 Î´ÎµÎ´Î¿Î¼Î­Î½Ï\89ν Î³Î¹Î± Î½Î± Ï\87Ï\81ηÏ\83ιμοÏ\80οιήÏ\83εÏ\84ε Î® να δημιουργήσετε βάσεις δεδομένων μέσω ενός πίνακα ελέγχου.",
+       "config-db-name-help": "Î\95Ï\80ιλέξÏ\84ε Î­Î½Î± Ï\8cνομα Ï\80οÏ\85 Ï\84αιÏ\81ιάζει Ï\83Ï\84ο  wiki Ï\83αÏ\82. Î\94εν Ï\80Ï\81έÏ\80ει Î½Î± Ï\80εÏ\81ιέÏ\87ει ÎºÎµÎ½Î¬ Î´Î¹Î±Ï\83Ï\84ήμαÏ\84α.\n\nÎ\95άν Ï\87Ï\81ηÏ\83ιμοÏ\80οιείÏ\84ε ÎºÎ¿Î¹Î½Ï\8cÏ\87Ï\81ηÏ\83Ï\84ο web hosting, Î¿ Ï\80άÏ\81οÏ\87οÏ\82 Ï\86ιλοξενίαÏ\82 ÎµÎ¯Ï\84ε Î¸Î± Ï\83αÏ\82 Î´Ï\8eÏ\83ει Î­Î½Î± Ï\83Ï\85γκεκÏ\81ιμένο Ï\8cνομα Î²Î¬Ï\83ηÏ\82 Î´ÎµÎ´Î¿Î¼Î­Î½Ï\89ν Î³Î¹Î± Î½Î± Ï\87Ï\81ηÏ\83ιμοÏ\80οιήÏ\83εÏ\84ε Î® Î¸Î± Ï\83αÏ\82 Î´Ï\8eÏ\83ει Ï\84η Î´Ï\85ναÏ\84Ï\8cÏ\84ηÏ\84α να δημιουργήσετε βάσεις δεδομένων μέσω ενός πίνακα ελέγχου.",
        "config-db-name-oracle": "Σχήμα βάσης δεδομένων:",
        "config-db-install-account": "Λογαριασμός χρήστη για την εγκατάσταση",
        "config-db-username": "Όνομα χρήστη βάσης δεδομένων:",
        "config-db-password": "Κωδικός πρόσβασης βάσης δεδομένων:",
-       "config-db-install-help": "Εισάγετε το όνομα χρήστη και τον κωδικό πρόσβασης που θα χρησιμοποιηθεί για τη σύνδεση με τη βάση δεδομένων κατά τη διάρκεια της διαδικασίας εγκατάστασης.",
-       "config-db-account-lock": "Χρησιμοποιήστε το ίδιο όνομα χρήστη και κωδικό πρόσβασης στη διάρκεια της κανονικής λειτουργίας",
+       "config-db-install-help": "Î\95ιÏ\83αγάγεÏ\84ε Ï\84ο Ï\8cνομα Ï\87Ï\81ήÏ\83Ï\84η ÎºÎ±Î¹ Ï\84ον ÎºÏ\89δικÏ\8c Ï\80Ï\81Ï\8cÏ\83βαÏ\83ηÏ\82 Ï\80οÏ\85 Î¸Î± Ï\87Ï\81ηÏ\83ιμοÏ\80οιηθεί Î³Î¹Î± Ï\84η Ï\83Ï\8dνδεÏ\83η Î¼Îµ Ï\84η Î²Î¬Ï\83η Î´ÎµÎ´Î¿Î¼Î­Î½Ï\89ν ÎºÎ±Ï\84ά Ï\84η Î´Î¹Î¬Ï\81κεια Ï\84ηÏ\82 Î´Î¹Î±Î´Î¹ÎºÎ±Ï\83ίαÏ\82 ÎµÎ³ÎºÎ±Ï\84άÏ\83Ï\84αÏ\83ηÏ\82.",
+       "config-db-account-lock": "Χρησιμοποιήστε το ίδιο όνομα χρήστη και κωδικό πρόσβασης μετά την εγκατάσταση",
        "config-db-wiki-account": "Λογαριασμός χρήστη για κανονική λειτουργία",
-       "config-db-wiki-help": "Î\95ιÏ\83άγεÏ\84ε Ï\84ο Ï\8cνομα Ï\87Ï\81ήÏ\83Ï\84η ÎºÎ±Î¹ Ï\84ον ÎºÏ\89δικÏ\8c Ï\80Ï\81Ï\8cÏ\83βαÏ\83ηÏ\82 Ï\80οÏ\85 Î¸Î± Ï\87Ï\81ηÏ\83ιμοÏ\80οιηθεί Î³Î¹Î± Ï\84η Ï\83Ï\8dνδεÏ\83η Î¼Îµ Ï\84η Î²Î¬Ï\83η Î´ÎµÎ´Î¿Î¼Î­Î½Ï\89ν ÎºÎ±Ï\84ά Ï\84η Î´Î¹Î¬Ï\81κεια Ï\84ηÏ\82 ÎºÎ±Î½Î¿Î½Î¹ÎºÎ®Ï\82 Î»ÎµÎ¹Ï\84οÏ\85Ï\81γίαÏ\82 Ï\84οÏ\85 wiki.\nÎ\95άν Î¿ Î»Î¿Î³Î±Ï\81ιαÏ\83μÏ\8cÏ\82 Î´ÎµÎ½ Ï\85Ï\80άÏ\81Ï\87ει, ÎºÎ±Î¹ o Î»Î¿Î³Î±Ï\81ιαÏ\83μÏ\8cÏ\82 ÎµÎ³ÎºÎ±Ï\84άÏ\83Ï\84αÏ\83ηÏ\82  Î­Ï\87ει ÎµÏ\80αÏ\81κή Î´Î¹ÎºÎ±Î¹Ï\8eμαÏ\84α, Î±Ï\85Ï\84Ï\8cÏ\82 Î¿ Î»Î¿Î³Î±Ï\81ιαÏ\83μÏ\8cÏ\82 Ï\87Ï\81ήÏ\83Ï\84η Î¸Î± Î´Î·Î¼Î¹Î¿Ï\85Ï\81γηθεί Î¼Îµ Ï\84α ÎµÎ»Î¬Ï\87ιÏ\83Ï\84α Î´Î¹ÎºÎ±Î¹Ï\8eμαÏ\84α Ï\80οÏ\85 Î±Ï\80αιÏ\84οÏ\8dνÏ\84αι Î³Î¹Î± Î½Î± Î»ÎµÎ¹Ï\84οÏ\85Ï\81γήÏ\83εÏ\84ε Ï\84ο wiki.",
+       "config-db-wiki-help": "ΠληκÏ\84Ï\81ολογήÏ\83Ï\84ε Ï\84ο Ï\8cνομα Ï\87Ï\81ήÏ\83Ï\84η ÎºÎ±Î¹ Ï\84ον ÎºÏ\89δικÏ\8c Ï\80Ï\81Ï\8cÏ\83βαÏ\83ηÏ\82 Ï\80οÏ\85 Î¸Î± Ï\87Ï\81ηÏ\83ιμοÏ\80οιηθεί Î³Î¹Î± Ï\84η Ï\83Ï\8dνδεÏ\83η Î¼Îµ Ï\84η Î²Î¬Ï\83η Î´ÎµÎ´Î¿Î¼Î­Î½Ï\89ν ÎºÎ±Ï\84ά Ï\84η Î´Î¹Î¬Ï\81κεια Ï\84ηÏ\82 ÎºÎ±Î½Î¿Î½Î¹ÎºÎ®Ï\82 Î»ÎµÎ¹Ï\84οÏ\85Ï\81γίαÏ\82 Ï\84οÏ\85 wiki.\nÎ\95άν Î¿ Î»Î¿Î³Î±Ï\81ιαÏ\83μÏ\8cÏ\82 Î´ÎµÎ½ Ï\85Ï\80άÏ\81Ï\87ει ÎºÎ±Î¹ o Î»Î¿Î³Î±Ï\81ιαÏ\83μÏ\8cÏ\82 ÎµÎ³ÎºÎ±Ï\84άÏ\83Ï\84αÏ\83ηÏ\82  Î­Ï\87ει ÎµÏ\80αÏ\81κή Î´Î¹ÎºÎ±Î¹Ï\8eμαÏ\84α, Î±Ï\85Ï\84Ï\8cÏ\82 Î¿ Î»Î¿Î³Î±Ï\81ιαÏ\83μÏ\8cÏ\82 Ï\87Ï\81ήÏ\83Ï\84η Î¸Î± Î´Î·Î¼Î¹Î¿Ï\85Ï\81γηθεί Î¼Îµ Ï\84α ÎµÎ»Î¬Ï\87ιÏ\83Ï\84α Î´Î¹ÎºÎ±Î¹Ï\8eμαÏ\84α Ï\80οÏ\85 Î±Ï\80αιÏ\84οÏ\8dνÏ\84αι Î³Î¹Î± Ï\84η Î»ÎµÎ¹Ï\84οÏ\85Ï\81γία Ï\84οÏ\85 wiki.",
        "config-db-prefix": "Πρόθεμα πίνακα βάσης δεδομένων:",
-       "config-db-prefix-help": "Î\95άν Ï\87Ï\81ειάζεÏ\83Ï\84ε Î½Î± Î¼Î¿Î¹Ï\81αÏ\83Ï\84είÏ\84ε Î¼Î¯Î± Î²Î¬Ï\83η Î´ÎµÎ´Î¿Î¼Î­Î½Ï\89ν Î¼ÎµÏ\84αξÏ\8d Ï\80ολλαÏ\80λÏ\8eν wikis, Î® Î¼ÎµÏ\84αξÏ\8d Ï\84οÏ\85 MediaWiki ÎºÎ±Î¹ Î¼Î¹Î±Ï\82 Î¬Î»Î»Î·Ï\82 web ÎµÏ\86αÏ\81μογήÏ\82, Î¼Ï\80οÏ\81είÏ\84ε Î½Î± ÎµÏ\80ιλέξεÏ\84ε Î½Î± Ï\80Ï\81οÏ\83θέÏ\83εÏ\84ε Î­Î½Î± Ï\80Ï\81Ï\8cθεμα Ï\8cλα Ï\84α Î¿Î½Ï\8cμαÏ\84α Ï\80ίνακα Î³Î¹Î± Î½Î± Î±Ï\80οÏ\86εÏ\8dγονÏ\84αι Î¿Î¹ Ï\83Ï\85γκÏ\81οÏ\8dÏ\83ειÏ\82.\nÎ\9cην Ï\87Ï\81ηÏ\83ιμοÏ\80οιείÏ\84ε ÎºÎµÎ½Î¬ Î´Î¹Î±Ï\83Ï\84ήμαÏ\84α.\n\nÎ\91Ï\85Ï\84Ï\8c Ï\84ο Ï\80εδίο Î±Ï\86ήνεÏ\84αι Ï\83Ï\85νήθÏ\89Ï\82 Î¬Î´ÎµÎ¹Î¿.",
+       "config-db-prefix-help": "Î\95άν Ï\87Ï\81ειάζεÏ\84αι Î½Î± Î¼Î¿Î¹Ï\81αÏ\83Ï\84είÏ\84ε Î¼Î¯Î± Î²Î¬Ï\83η Î´ÎµÎ´Î¿Î¼Î­Î½Ï\89ν Î¼ÎµÏ\84αξÏ\8d Ï\80ολλαÏ\80λÏ\8eν wikis, Î® Î¼ÎµÏ\84αξÏ\8d Ï\84οÏ\85 MediaWiki ÎºÎ±Î¹ Î¼Î¹Î±Ï\82 Î¬Î»Î»Î·Ï\82 web ÎµÏ\86αÏ\81μογήÏ\82, Î¼Ï\80οÏ\81είÏ\84ε Î½Î± Ï\80Ï\81οÏ\83θέÏ\83εÏ\84ε Î­Î½Î± Ï\80Ï\81Ï\8cθεμα Ï\83ε Ï\8cλα Ï\84α Î¿Î½Ï\8cμαÏ\84α Ï\80ίνακα Î³Î¹Î± Î½Î± Î±Ï\80οÏ\86εÏ\8dγονÏ\84αι Î¿Î¹ Î´Î¹ÎµÎ½Î­Î¾ÎµÎ¹Ï\82.\nÎ\9cην Ï\87Ï\81ηÏ\83ιμοÏ\80οιείÏ\84ε ÎºÎµÎ½Î¬ Î´Î¹Î±Ï\83Ï\84ήμαÏ\84α.\n\nÎ\91Ï\85Ï\84Ï\8c Ï\84ο Ï\80εδίο Î±Ï\86ήνεÏ\84αι Ï\83Ï\85νήθÏ\89Ï\82 ÎºÎµÎ½Ï\8c.",
        "config-db-charset": "Σύνολο χαρακτήρων βάσης δεδομένων",
        "config-charset-mysql5-binary": "MySQL 4.1/5.0 δυαδικό",
        "config-charset-mysql5": "MySQL 4.1/5.0 UTF-8",
-       "config-charset-mysql4": "UTF-8 συμβατό προς τα πίσω με MySQL 4.0",
+       "config-charset-mysql4": "UTF-8 συμβατό με MySQL 4.0 και παλαιότερες εκδόσεις",
        "config-mysql-old": "Απαιτείται Microsoft SQL Server $1 ή νεότερο. Εσείς έχετε $2.",
        "config-db-port": "Θύρα βάσης δεδομένων:",
        "config-db-schema": "Σχήμα για MediaWiki:",
-       "config-db-schema-help": "Î\91Ï\85Ï\84Ï\8c Ï\84ο Ï\83Ï\87ήμα Ï\83Ï\85νήθÏ\89Ï\82 Î¸Î± ÎµÎ¯Î½Î±Î¹ ÎµÎ½Ï\84άξει.\nÎ\86λλαξε Ï\84ο Î¼Ï\8cνο Î±Î½ Î¾Î­Ï\81ειÏ\82 Ï\8cÏ\84ι Ï\84ο Ï\87Ï\81ειάζεÏ\83αι.",
+       "config-db-schema-help": "Î\91Ï\85Ï\84Ï\8c Ï\84ο Ï\83Ï\87ήμα Ï\83Ï\85νήθÏ\89Ï\82 Î±Ï\81κεί.\nÎ\91λλάξÏ\84ε Ï\84ο Î¼Ï\8cνο Î±Î½ ÎµÎ¯Ï\83Ï\84ε Î²Î­Î²Î±Î¹Î¿Î¹ Ï\8cÏ\84ι Ï\87Ï\81ειάζεÏ\84αι.",
        "config-pg-test-error": "Δεν μπορεί να συνδεθεί στη βάση δεδομένων <strong>$1</strong>: $2",
        "config-sqlite-dir": "SQLite κατάλογος δεδομένων:",
        "config-oracle-temp-ts": "Προσωρινό tablespace:",
        "config-type-sqlite": "SQLite",
        "config-type-oracle": "Oracle",
        "config-type-mssql": "Microsoft SQL Server",
-       "config-support-info": "To MediaWiki υποστηρίζει τα ακόλουθα συστήματα βάσεων δεδομένων:\n\n$1\n\nΑν δε βλέπεις στο σύστημα βάσεων δεδομένων που θέλεις να χρησιμοποιήσεις να υπάρχει παρακάτω, τότε ακολούθησε τις οδηγίες που δίνονται παραπάνω για να ενεργοποιήσεις την υποστήριξη.",
+       "config-support-info": "To MediaWiki υποστηρίζει τα ακόλουθα συστήματα βάσεων δεδομένων:\n\n$1\n\nΑν δεν εμφανίζεται παρακάτω το σύστημα βάσης δεδομένων που θέλετε να χρησιμοποιήσετε, τότε ακολουθήστε τις οδηγίες στον παραπάνω σύνδεσμο για να ενεργοποιήσετε την υποστήριξη.",
        "config-header-mysql": "Ρυθμίσεις MySQL",
        "config-header-postgres": "Ρυθμίσεις PostgreSQL",
        "config-header-sqlite": "Ρυθμίσεις SQLite",
        "config-email-settings": "Ρυθμίσεις ηλεκτρονικού ταχυδρομείου",
        "config-email-user": "Ενεργοποίηση ηλεκτρονικού ταχυδρομείου από χρήστη σε χρήστη",
        "config-email-usertalk": "Ενεργοποίηση ειδοποίησης σελίδας συζήτησης χρήστη",
+       "config-email-watchlist": "Ενεργοποίηση ειδοποίησης λίστας παρακολούθησης",
+       "config-email-watchlist-help": "Επιτρέψτε στους χρήστες να λαμβάνουν ειδοποιήσεις για τις σελίδες που παρακολουθούν αν το έχουν ενεργοποιήσει στις προτιμήσεις τους.",
        "config-email-auth": "Ενεργοποίηση ταυτοποίησης μέσω ηλεκτρονικού ταχυδρομείου",
        "config-email-sender": "Διεύθυνση ηλεκτρονικού ταχυδρομείου επιστροφής:",
        "config-upload-settings": "Ανέβασμα εικόνων και άλλων αρχείων",
        "config-instantcommons": "Ενεργοποίηση Instant Commons",
        "config-cc-error": "Ο επιλογέας αδειών  Creative Commons επιλογέα δεν έδωσε κανένα αποτέλεσμα.\nΕισάγετε το όνομα της άδειας χειροκίνητα.",
        "config-cc-again": "Επιλέξτε ξανά...",
-       "config-cc-not-chosen": "Επιλέξτε την  άδεια Creative Commons που θέλετε και κάντε κλικ στο κουμπί \"συνέχεια\".",
+       "config-cc-not-chosen": "Επιλέξτε την  άδεια Creative Commons που θέλετε και κάντε κλικ στο κουμπί \"proceed\".",
        "config-advanced-settings": "Προηγμένες ρυθμίσεις παραμέτρων",
        "config-cache-options": "Ρυθμίσεις για την προσωρινή αποθήκευση αντικειμένου:",
        "config-memcache-badip": "Έχετε εισάγει μια μη έγκυρη διεύθυνση IP για το Memcached: $1.",
        "config-install-interwiki-exists": "<strong>Προειδοποίηση:</strong> O πίνακας interwiki φαίνεται να έχει ήδη καταχωρηθεί.\nΠαρακάμπτοντας προεπιλεγμένη λίστα.",
        "config-install-stats": "Γίνεται αρχικοποίηση των στατιστικών",
        "config-install-keys": "Γίνεται δημιουργία των μυστικών κλειδιών",
+       "config-install-updates": "Αποτρέψτε αχρειάστες ενημερώσεις",
+       "config-install-updates-failed": "<strong>Σφάλμα:</strong> Η εισαγωγή κλειδιών ενημέρωσης  σε πίνακες απέτυχε με το ακόλουθο σφάλμα: $1",
        "config-install-sysop": "Γίνεται δημιουργία του λογαριασμού χρήστη του διαχειριστή",
        "config-install-subscribe-fail": "Ανίκανος να εγγραφείτε στο mediawiki-ανακοινώση: $1",
        "config-install-subscribe-notpossible": "Το cURL δεν είναι εγκατεστημένο και  το <code>allow_url_fopen</code> δεν είναι διαθέσιμο.",
index f2ec7a7..8d2040d 100644 (file)
@@ -8,7 +8,7 @@
        "config-localsettings-upgrade": "A <code>LocalSettings.php</code> file has been detected.\nTo upgrade this installation, please enter the value of <code>$wgUpgradeKey</code> in the box below.\nYou will find it in <code>LocalSettings.php</code>.",
        "config-localsettings-cli-upgrade": "A <code>LocalSettings.php</code> file has been detected.\nTo upgrade this installation, please run <code>update.php</code> instead",
        "config-localsettings-key": "Upgrade key:",
-       "config-localsettings-badkey": "The key you provided is incorrect.",
+       "config-localsettings-badkey": "The upgrade key you provided is incorrect.",
        "config-upgrade-key-missing": "An existing installation of MediaWiki has been detected.\nTo upgrade this installation, please put the following line at the bottom of your <code>LocalSettings.php</code>:\n\n$1",
        "config-localsettings-incomplete": "The existing <code>LocalSettings.php</code> appears to be incomplete.\nThe $1 variable is not set.\nPlease change <code>LocalSettings.php</code> so that this variable is set, and click \"{{int:Config-continue}}\".",
        "config-localsettings-connection-error": "An error was encountered when connecting to the database using the settings specified in <code>LocalSettings.php</code>. Please fix these settings and try again.\n\n$1",
index 77f0529..c196cf4 100644 (file)
@@ -35,7 +35,7 @@
        "config-localsettings-upgrade": "Se ha encontrado un archivo <code>LocalSettings.php</code>.\nPara actualizar esta instalación, escribe el valor de <code>$wgUpgradeKey</code> en el cuadro de abajo.\nLo encontrarás en <code>LocalSettings.php</code>.",
        "config-localsettings-cli-upgrade": "Se ha detectado un archivo <code>LocalSettings.php</code>.\nPara actualizar la instalación, en su lugar ejecuta <code>update.php</code>",
        "config-localsettings-key": "Clave de actualización:",
-       "config-localsettings-badkey": "La clave proporcionada es incorrecta.",
+       "config-localsettings-badkey": "La clave de actualización proporcionada es incorrecta.",
        "config-upgrade-key-missing": "Se ha detectado una instalación existente de MediaWiki.\nPara actualizar la instalación, añade la siguiente línea al final de tu  <code>LocalSettings.php</code>:\n\n$1",
        "config-localsettings-incomplete": "El archivo <code>LocalSettings.php</code> existente parece estar incompleto.\nLa variable $1 no está definida.\nCambia <code>LocalSettings.php</code> para que esta variable quede establecida y haz clic en \"{{int:Config-continue}}\".",
        "config-localsettings-connection-error": "Se ha producido un error al conectar a la base de datos utilizando la configuración especificada en <code>LocalSettings.php</code>. Corrige estos ajustes e inténtalo de nuevo.\n\n$1",
        "config-email-auth-help": "Si esta opción está habilitada, los usuarios tienen que confirmar su dirección de correo electrónico mediante un enlace que se les envía a ellos cuando éstos lo establecen o lo cambian.\nSolo las direcciones de correo electrónico autenticadas pueden recibir correos electrónicos de otros usuarios o correos electrónicos de notificación de cambios.\nEsta opción está '''recomendada''' para wikis públicos debido a posibles abusos de las características del correo electrónico.",
        "config-email-sender": "Dirección de correo electrónico de retorno:",
        "config-email-sender-help": "Escribe la dirección de correo electrónico que se usará como dirección de retorno en los mensajes electrónicos de salida.\nAquí llegarán los correos electrónicos que no lleguen a su destino.\nMuchos servidores de correo electrónico exigen que por lo menos la parte del nombre del dominio sea válida.",
-       "config-upload-settings": "Cargas de imágenes y archivos",
+       "config-upload-settings": "Subidas de imágenes y archivos",
        "config-upload-enable": "Habilitar la subida de archivos",
        "config-upload-help": "La carga de archivos expone potencialmente su servidor a riesgos de seguridad.\nPara obtener más información, lea la [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security sección de seguridad] en el manual.\n\nPara habilitar la carga de archivos, cambie el modo en el subdirectorio <code>images</code> bajo el directorio raíz de MediaWiki para que el servidor web pueda escribir en él.\nA continuación, habilite esta opción.",
        "config-upload-deleted": "Directorio para los archivos eliminados:",
        "config-instantcommons-help": "[//www.mediawiki.org/wiki/InstantCommons Instant Commons] es una característica que permite que los wikis puedan utilizar imágenes, sonidos y otros archivos multimedia que se encuentran en el sitio [//commons.wikimedia.org/ Wikimedia Commons].\nPara ello, MediaWiki requiere acceso a Internet.\n\nPara obtener más información sobre esta función, incluidas las instrucciones sobre cómo configurarlo para otras wikis distintas de Wikimedia Commons, consulte [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos el manual].",
        "config-cc-error": "El selector de licencia de Creative Commons no dio resultado.\nEscribe el nombre de la licencia manualmente.",
        "config-cc-again": "Elegir otra vez...",
-       "config-cc-not-chosen": "Elige la licencia Creative Commons que desees y haz clic en \"continuar\".",
+       "config-cc-not-chosen": "Elige la licencia Creative Commons que desees y haz clic en \"proceed\".",
        "config-advanced-settings": "Configuración avanzada",
        "config-cache-options": "Configuración de la caché de objetos:",
        "config-cache-help": "El almacenamiento en caché de objetos se utiliza para mejorar la velocidad de MediaWiki mediante el almacenamiento en caché los datos usados más frecuentemente.\nA los sitios medianos y grandes se les recomienda que permitirlo. También es beneficioso para los sitios pequeños.",
index c4fc0cd..fc99677 100644 (file)
@@ -10,7 +10,8 @@
                        "Alirezaaa",
                        "Danialbehzadi",
                        "Leyth",
-                       "Huji"
+                       "Huji",
+                       "Macofe"
                ]
        },
        "config-desc": "نصب کنندهٔ ویکی‌مدیا",
        "config-instantcommons-help": "[//www.mediawiki.org/ ویکی و InstantCommons ویکی‌انبار فوری] یک ویژگی‌است که به شما اجازه می‌دهد تا تصاویر، صداها یا سایر رسانه‌های یافته شده بر روی [//commons.wikimedia.org/ انبار ویکی مدیا] را استفاده کنید.\n\nبرای استفاده از این ویژگی مدیاویکی نیازمند دسترسی به اینترنت است.\n\nبرای کسب اطلاعات بیشتر درباره این ویژگی٬ شامل دستورالعمل‌های برای چگونگی نصب آن برای سایر ویکی‌های بجز ویکی‌انبار لطفاً از  [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos the نصب دستی] استفاده کنید.",
        "config-cc-error": "مجوز چوزر عوام سازنده بی‌نتیجه ماند.\nنام مجوز را دستی وارد کنید.",
        "config-cc-again": "انتخاب دوباره...",
-       "config-cc-not-chosen": "مجوز عوام سازنده‌ای را که می‌خواهید انتخاب کنید و \"ادامه\" را کلیک کنید.",
+       "config-cc-not-chosen": "مجوز عوام سازنده‌ای را که می‌خواهید انتخاب کنید و \"proceed\" را کلیک کنید.",
        "config-advanced-settings": "تنظیمات پیشرفته",
        "config-cache-options": "تنظیمات برای ذخیره شی:",
        "config-cache-help": "کش شی برای بهتر شدن سرعت مدیا ویکی، از طریق کش کردن داده‌های با بیشترین استفاده انجام می‌گیرد.\nوبگاه‌های متوسط تا بزرگ به انجام این کار شدیدا توصیه می‌شوند، در عین حال وبگاه‌های کوچک نیز می‌توانند از مزایای ایم مورد بهره ببرند.",
index 6b01b61..2b897f1 100644 (file)
@@ -25,7 +25,7 @@
        "config-localsettings-upgrade": "<code>LocalSettings.php</code>-tiedosto havaittiin.\nKirjoita muuttujan <code>$wgUpgradeKey</code> arvo alla olevaan kenttään päivittääksesi asennuksen.\nLöydät sen <code>LocalSettings.php</code>-tiedostosta.",
        "config-localsettings-cli-upgrade": "<code>LocalSettings.php</code>-tiedosto havaittiin.\nPäivitä asennus suorittamalla <code>update.php</code>.",
        "config-localsettings-key": "Päivitysavain",
-       "config-localsettings-badkey": "Antamasi avain on virheellinen.",
+       "config-localsettings-badkey": "Antamasi päivitysavain on virheellinen.",
        "config-upgrade-key-missing": "Havaittiin aiempi MediaWiki-asennus.\nPäivittääksesi tämän asennuksen lisää <code>LocalSettings.php</code>-tiedostosi loppuun seuraava rivi:\n\n$1",
        "config-localsettings-incomplete": "Nykyinen <code>LocalSettings.php</code>-tiedosto näyttää olevan puutteellinen.\nMuuttujaa $1 ei ole asetettu.\nMuuta <code>LocalSettings.php</code>-tiedostoa siten, että muuttuja on asetettu ja napsauta »{{int:Config-continue}}».",
        "config-localsettings-connection-error": "Yhteyden muodostaminen tietokantaan epäonnistui tiedostossa <code>LocalSettings.php</code> olevien asetusten takia. Korjaa asetukset ja yritä uudelleen.\n\n$1",
@@ -95,8 +95,6 @@
        "config-db-install-account": "Asennuksessa käytettävä käyttäjätili",
        "config-db-username": "Tietokannan käyttäjätunnus",
        "config-db-password": "Tietokannan salasana",
-       "config-db-password-empty": "Syötä salasana uudelle tietokannan käyttäjälle: $1.\nVaikka käyttäjä voidaan luoda ilman salasanaa, se ei ole turvallista.",
-       "config-db-username-empty": "Syötä arvo tiedolle \"{{int:config-db-username}}\".",
        "config-db-install-username": "Syötä käyttäjänimi jota käytetään muodostettaessa yhteys tietokantaan asennuksen aikana.\nTämä ei ole MediaWiki tilin käyttäjänimi; tämä on tietokannan käyttäjänimi.",
        "config-db-install-password": "Syötä salasana jota käytetään muodostettaessa yhteys tietokantaan asennuksen aikana.\nTämä ei ole MediaWiki tilin salasana; tämä on tietokannan salasana.",
        "config-db-install-help": "Anna käyttäjätunnus ja salasana, joita käytetään asennuksen aikana.",
index c031466..f6329e8 100644 (file)
@@ -31,7 +31,7 @@
        "config-localsettings-upgrade": "Un fichier <code>LocalSettings.php</code> a été détecté.\nPour mettre à jour cette installation, veuillez saisir la valeur de <code>$wgUpgradeKey</code> dans le champ ci-dessous.\nVous la trouverez dans <code>LocalSettings.php</code>.",
        "config-localsettings-cli-upgrade": "Un fichier <code>LocalSettings.php</code> a été détecté.\nPour mettre à niveau cette installation, veuillez exécuter <code>update.php</code> à la place",
        "config-localsettings-key": "Clé de mise à jour :",
-       "config-localsettings-badkey": "La clé que vous avez fournie est incorrecte.",
+       "config-localsettings-badkey": "La clé de mise à jour que vous avez fournie n’est pas correcte.",
        "config-upgrade-key-missing": "Une installation existante de MediaWiki a été détectée.\n\nPour mettre à jour cette installation, veuillez ajouter la ligne suivante à la fin de votre fichier <code>LocalSettings.php</code>\n\n$1",
        "config-localsettings-incomplete": "Le fichier <code>LocalSettings.php</code> existant semble être incomplet.\nLa variable $1 n’est pas définie.\nVeuillez modifier <code>LocalSettings.php</code> de sorte que cette variable soit définie, puis cliquer sur « {{int:Config-continue}} ».",
        "config-localsettings-connection-error": "Une erreur est survenue lors de la connexion à la base de données en utilisant la configuration spécifiée dans <code>LocalSettings.php</code>. Veuillez corriger cette configuration puis réessayer.\n\n$1",
        "config-instantcommons-help": "[//www.mediawiki.org/wiki/InstantCommons InstantCommons] est un service qui permet d'utiliser les images, les sons et les autres médias disponibles sur le site [//commons.wikimedia.org/ Wikimedia Commons].\nPour se faire, il faut que MediaWiki accède à Internet.\n\nPour plus d'informations sur ce service, y compris les instructions sur la façon de le configurer pour d'autres wikis que Wikimedia Commons, consultez le [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos manuel] (en anglais).",
        "config-cc-error": "Le sélection d'une licence ''Creative Commons'' n'a donné aucun résultat.\nEntrez le nom de la licence manuellement.",
        "config-cc-again": "Choisissez à nouveau...",
-       "config-cc-not-chosen": "Choisissez une licence ''Creative Commons'' et cliquez sur « Continuer ».",
+       "config-cc-not-chosen": "Choisissez la licence ''Creative Commons'' que vous désirez et cliquez sur « proceed ».",
        "config-advanced-settings": "Configuration avancée",
        "config-cache-options": "Paramètres pour la mise en cache des objets:",
        "config-cache-help": "La mise en cache des objets améliore la vitesse de MediaWiki en mettant en cache les données fréquemment utilisées.\nLes sites de taille moyenne à grande sont fortement encouragés à l'activer. Les petits sites y verront également des avantages.",
index 9458a8f..e2d1ba9 100644 (file)
@@ -4,7 +4,8 @@
                        "Elisardojm",
                        "Toliño",
                        "아라",
-                       "Vivaelcelta"
+                       "Vivaelcelta",
+                       "Macofe"
                ]
        },
        "config-desc": "O programa de instalación de MediaWiki",
@@ -13,7 +14,7 @@
        "config-localsettings-upgrade": "Detectouse un ficheiro <code>LocalSettings.php</code>.\nPara actualizar esta instalación, introduza o valor de <code>$wgUpgradeKey</code> na caixa.\nPode atopalo en <code>LocalSettings.php</code>.",
        "config-localsettings-cli-upgrade": "Detectouse un ficheiro <code>LocalSettings.php</code>.\nPara actualizar esta instalación, execute <code>update.php</code>",
        "config-localsettings-key": "Clave de actualización:",
-       "config-localsettings-badkey": "A clave dada é incorrecta.",
+       "config-localsettings-badkey": "A clave de actualización dada é incorrecta.",
        "config-upgrade-key-missing": "Detectouse unha instalación existente de MediaWiki.\nPara actualizar esta instalación, inclúa esta liña ao final do ficheiro <code>LocalSettings.php</code>:\n\n$1",
        "config-localsettings-incomplete": "Semella que o ficheiro <code>LocalSettings.php</code> existente está incompleto.\nA variable $1 non está establecida.\nModifique o ficheiro <code>LocalSettings.php</code> de xeito que a variable quede establecida e prema en \"{{int:Config-continue}}\".",
        "config-localsettings-connection-error": "Atopouse un erro ao conectar coa base de datos empregando a configuración especificada no ficheiro <code>LocalSettings.php</code>. Corrixa esta configuración e inténteo de novo.\n\n$1",
        "config-instantcommons-help": "[//www.mediawiki.org/wiki/InstantCommons InstantCommons] é unha característica que permite aos wikis usar imaxes, sons e outros ficheiros multimedia atopados no sitio da [//commons.wikimedia.org/wiki/Portada_galega Wikimedia Commons].\nPara facer isto, MediaWiki necesita acceso á internet.\n\nPara obter máis información sobre esta característica, incluíndo as instrucións sobre como configuralo para outros wikis que non sexan a Wikimedia Commons, consulte [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos o manual].",
        "config-cc-error": "A escolla da licenza Creative Commons non deu resultados.\nEscriba o nome da licenza manualmente.",
        "config-cc-again": "Escolla outra vez...",
-       "config-cc-not-chosen": "Escolla a licenza Creative Commons que desexe e prema en \"continuar\".",
+       "config-cc-not-chosen": "Escolla a licenza Creative Commons que desexe e prema en \"proceed\".",
        "config-advanced-settings": "Configuración avanzada",
        "config-cache-options": "Configuración da caché de obxectos:",
        "config-cache-help": "A caché de obxectos emprégase para mellorar a velocidade de MediaWiki mediante a memorización de datos usados con frecuencia.\nÉ amplamente recomendable a súa activación nos sitios de tamaño medio e grande; os sitios pequenos obterán tamén beneficios.",
index b080848..be91270 100644 (file)
@@ -17,7 +17,7 @@
        "config-page-install": "Mopohuli",
        "config-page-complete": "Yilapato",
        "config-page-restart": "Ulangiya instalasi",
-       "config-page-readme": "Pobacawa Wau",
+       "config-page-readme": "Pobacawa wa'u",
        "config-page-releasenotes": "Tuladu mopolopato",
        "config-page-copying": "Mohemi",
        "config-page-upgradedoc": "Mopobohu",
index 09cfe6a..4e09904 100644 (file)
@@ -7,7 +7,8 @@
                        "아라",
                        "Inkbug",
                        "Yona b",
-                       "Rotemliss"
+                       "Rotemliss",
+                       "Macofe"
                ]
        },
        "config-desc": "תכנית ההתקנה של מדיה־ויקי",
        "config-instantcommons-help": "[//www.mediawiki.org/wiki/InstantCommons Instant Commons] היא תכונה שמאפשרת לאתרי ויקי להשתמש בתמונות, בצלילים ובמדיה אחרת שנמצאת באתר [//commons.wikimedia.org/ ויקישיתוף] (Wikimedia Commons).\nכדי לעשות את זה, מדיה־ויקי צריך לגשת לאינטרנט.\n\nלמידע נוסף על התכונה הזאת, כולל הוראות איך להפעיל את זה לאתרי ויקי שאינם ויקישיתוף, ר׳ [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos את ספר ההדרכה].",
        "config-cc-error": "בורר רישיונות קריאייטיב קומונז לא החזיר שום תוצאה.\nהקלידו את שם הרישיון ידנית.",
        "config-cc-again": "נא לבחור שוב...",
-       "config-cc-not-chosen": "בחרו באיזה רישיון קריאייטיב קומונז להשתמש ולחצו \"המשך\".",
+       "config-cc-not-chosen": "בחרו באיזה רישיון קריאייטיב קומונז להשתמש ולחצו \"proceed\".",
        "config-advanced-settings": "הגדרות מתקדמות",
        "config-cache-options": "הגדרות למטמון עצמים (object caching):",
        "config-cache-help": "מטמון עצמים משמש לשיפור המהירות של מדיה־ויקי על־ידי שמירה של נתונים שהשימוש בהם נפוץ במטמון.\nלאתרים בינוניים וגדולים כדאי מאוד להפעיל את זה, וגם אתרים קטנים ייהנו מזה.",
index b8c5102..14f5684 100644 (file)
@@ -1,5 +1,26 @@
 {
-       "@metadata": [],
+       "@metadata": {
+               "authors": [
+                       "Vrhnje"
+               ]
+       },
+       "config-information": "Informacije",
+       "config-your-language": "Vaš jezik:",
+       "config-your-language-help": "Odaberite jezik na kojem će se pojaviti proces instalacije.",
+       "config-wiki-language": "Wiki jezik:",
+       "config-back": "← Povratak",
+       "config-continue": "Dalje →",
+       "config-page-language": "Jezik",
+       "config-page-welcome": "Dobrodošli na MediaWiki!",
+       "config-page-dbconnect": "Spajanje na bazu podataka",
+       "config-page-upgrade": "Ažuriranje postojeće instalacije",
+       "config-page-restart": "Ponovno pokreni instalaciju",
+       "config-page-readme": "Pročitajte više",
+       "config-page-releasenotes": "Informacije o verziji",
+       "config-page-copying": "Kopiranje",
+       "config-page-upgradedoc": "Ažuriranje",
+       "config-page-existingwiki": "Postojeći wiki",
+       "config-restart": "Da, počni iznova",
        "mainpagetext": "'''Softver MediaWiki je uspješno instaliran.'''",
        "mainpagedocfooter": "Pogledajte [//meta.wikimedia.org/wiki/MediaWiki_localisation dokumentaciju o prilagodbi sučelja]\ni [//meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Vodič za suradnike] za pomoć pri uporabi i podešavanju."
 }
index 83c373a..29287b0 100644 (file)
@@ -1,7 +1,8 @@
 {
        "@metadata": {
                "authors": [
-                       "Paul Beppler"
+                       "Paul Beppler",
+                       "Macofe"
                ]
        },
        "config-desc": "Das MediaWiki-Installationsprogramm",
        "config-env-good": "Die Installationsumgebung woard geprüft.\nMediaWiki kann installiert sin.",
        "config-env-bad": "Die Installationsumgebung woard geprüft.\nMediaWiki kann net installiert sin.",
        "config-env-php": "Die Skriptsproch „PHP“ ($1) ist installiert.",
-       "config-env-php-toolow": "PHP $1 ist installiert.\nJedoch benöticht MediaWiki PHP $2 oder höcher.",
-       "config-unicode-using-utf8": "Zur Unicode-Normalisierung weard Brion Vibbers <code>utf8_normalize.so</code> ingesetzt.",
        "config-unicode-using-intl": "Zur  Unicode-Normalisierung weard die [http://pecl.php.net/intl PECL-Erweiterung intl] ingesetzt.",
        "config-unicode-pure-php-warning": "'''Warnung:''' Die [http://pecl.php.net/intl PECL-Erweiterung intl] ist für die Unicode-Normalisierung net verfüchbar, so dass stattdessen die langsame pure-PHP-Implementierung genutzt weard.\nSofern en Webseit mit grosser Benutzeranzoohl betrieb weard, sollte weitre Informatione uff der Webseite [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations Unicode-Normalisierung (en)] geles sin.",
        "config-unicode-update-warning": "'''Warnung:''' Die installierte Version von der Unicode-Normalisierungswrappers nutzt en ältre Version von der [http://site.icu-project.org/ ICU-Projekts] sein Bibliothek.\nDie sollte [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations aktualisiert] sin, sofern uff die Verwennung von Unicode Wert geleht weard.",
        "config-no-db": "Es konnt ken adäquater Datenbanktreiwer gefund sin. Es muss doher en Datenbanktreiwer für PHP installiert sin.\nDie folchende Datebanksysteme werre unnerstützt: $1\n\nWenn du PHP sellebst kompiliert host, konfigurier es erneit mit en aktiviert Datebankclient, zum Beispiel dorrich Verwennung von <code>./configure --with-mysqli</code>.\nWenn du PHP von en Debian- orrer Ubuntu-Paket installiert host, dann musst du ooch beispielsweis das <code>php5-mysql</code>-Paket installiere.",
        "config-outdated-sqlite": "'''Warnung:''' SQLite $1 ist installiert. Allerdings benöticht MediaWiki SQLite $2 orrer höcher. SQLite weard doher net verfüchbar sin.",
        "config-no-fts3": "'''Warnung:''' SQLite woard ohne das [//sqlite.org/fts3.html FTS3-Modul] kompiliert, so dass ken Suchfunktione für das Datenbanksystem zur Verfüchung stehn werre.",
-       "config-register-globals": "'''Warnung: Der Parameter <code>[http://php.net/register_globals register_globals]</code> von PHP ist aktiviert.'''\n'''Die sollt deaktiviert sin, sofern das möchlich ist.'''\nDie MediaWiki-Installation weard zwoor loofe, wobei awer der Server für potentielle Sicherheitsprobleme oonfällig ist.",
        "config-magic-quotes-runtime": "'''Fataler Fehler: Der Parameter <code>[http://www.php.net/manual/de/function.set-magic-quotes-runtime.php set_magic_quotes_runtime]</code> von PHP ist aktiviert!'''\nDie Instellung führt zu unvoarhearsehbare Probleme bei der Dateningäb.\nMediaWiki kann net installiert werre, solang der Parameter net deaktiviert woard.",
        "config-magic-quotes-sybase": "<strong>Fataler Fehler: Der Parameter <code>[http://www.php.net/manual/de/sybase.configuration.php#ini.magic-quotes-sybase magic_quotes_sybase]</code> von PHP ist aktiviert!</strong>\nDie Instellung führt zu unvoarhearsehbare Probleme bei der Dateningäb.\nMediaWiki kann net installiert sin, solang der Parameter nicht deaktiviert woard.",
        "config-mbstring": "'''Fataler Fehler: Der Parameter <code>[http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload]</code> von PHP ist aktiviert!'''\nDie Instellung veruarsacht Fehler und führt zu unvoarhearsehbare Probleme bei der Dateingäb.\nMediaWiki kann net installiert sin, solang der Parameter net deaktiviert woard.",
@@ -98,8 +96,6 @@
        "config-db-install-account": "Benutzerkonto für die Installation",
        "config-db-username": "Der Datebankbenutzer sein Noome:",
        "config-db-password": "Der Datebankbenutzer sei Passwort:",
-       "config-db-password-empty": "Bitte en Passwort für den neie Datebankbenutzer oongewe: $1\nObzwoor es möchlich ist Datebankbenutzer ohne Passwort oonzulenn, so ist das awer net sicher.",
-       "config-db-username-empty": "Du musst en Weart für den \"{{int:config-db-username}}\" ingewe",
        "config-db-install-username": "Den Benutzernoome oongewe, der für die Verbinnung mit der Datebank (während des) wo im Moment von dem Installationsvoargang benutzt sin soll. Das handelt sich dobei net um den Benutzernoome für das MediaWiki-Konto, awer um den Benutzernoomen von der voargesiehne Datebank.",
        "config-db-install-password": "Das Passwort oongewe, das für die Verbinnung mit der Datebank (während des) im Momento von der Installationsvoargang benutzt sin soll. Das handelt sich dobei net um das Passwort für das MediaWiki-Konto, awer um das Passwort von der voargesiehne Datebank.",
        "config-db-install-help": "Benutzernoome und Passwort, die (während des) im Moment von der Installationsvoargang, für die Verbinnung mit der Datebank, benutzt werre solle, sind jetzt oonzugewe.",
        "config-instantcommons-help": "[//www.mediawiki.org/wiki/InstantCommons InstantCommons] ist en Funktion, wos Wikis ermöchlicht, Bild-, Klang- und annre Mediendateie zu nutze, wo uff der Website [//commons.wikimedia.org/ Wikimedia Commons] verfüchbar sind.\nUm die Funktion nutze zu könne, muss das Wiki üwer en Verbinnung zum Internet verfüche.\n\nWeitre Informatione zu der Funktion, inschliesslich von der Oonleitung, wie hierfür annre Wikis als Wikimedia Commons ingerichtet werre könne, gebts im [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos Handbuch].",
        "config-cc-error": "Der Creativ-Commons-Lizenzassistent konnt ken Lizenz ermittle.\nDie Lizenz ist doher jetzt manuell inzugewe.",
        "config-cc-again": "Erneit auswähle …",
-       "config-cc-not-chosen": "Die gewünschte Creative-Commons-Lizenz auswähle und dann uff \"weiter\" klicke.",
+       "config-cc-not-chosen": "Die gewünschte Creative-Commons-Lizenz auswähle und dann uff \"proceed\" klicke.",
        "config-advanced-settings": "Erweiterte Konfiguratio",
        "config-cache-options": "Instellunge für die Zwischichspeichrung von Objekte:",
        "config-cache-help": "Das Objektcaching weard dozu benutzt die Geschwindigkeit von MediaWiki zu verbessre, indem häifich genutzte Date zwischichgespeichert werre.\nEs weard seahr emfohl (rekommendiert) das für mittelgrosse bis grosse Wikis zu nutze, awer ooch für klene Wikis ergewe sich erkennbare Geschwindichkeitsverbessrunge.",
index deae95b..339440e 100644 (file)
@@ -2,7 +2,8 @@
        "@metadata": {
                "authors": [
                        "Michawiki",
-                       "아라"
+                       "아라",
+                       "Macofe"
                ]
        },
        "config-desc": "Instalaciski program za MediaWiki",
        "config-env-good": "Wokolina je so skontrolowała.\nMóžeš MediaWiki instalować.",
        "config-env-bad": "Wokolina je so skontrolowała.\nNjemóžeš MediaWiki instalować.",
        "config-env-php": "PHP $1 je instalowany.",
-       "config-env-php-toolow": "PHP $1 je instalowany.\nAle MediaWiki wužaduje sej PHP $2 abo wyši.",
-       "config-unicode-using-utf8": "Za normalizaciju Unicode so utf8_normalize.so Briona Vibbera wužiwa.",
        "config-unicode-using-intl": "Za normalizaciju Unicode so [http://pecl.php.net/intl PECL-rozšěrjenje intl] wužiwa.",
        "config-no-db": "Njeda so přihódny ćěrjak datoweje banki namakać! Dyrbiš ćěrjak datoweje banki za PHP instalować.\nSlědowace typy datoweje banki so podpěruja: $1.\n\nJeli sy PHP sam kompilował, konfiguruj jón znowa z aktiwizowanym programom datoweje banki, na přikład z pomocu <code>./configure --with-mysqli</code>.\nJeli sy PHP z Debianoweho abo Ubuntuoweho paketa instalował, dyrbiš tež paket <code>php5-mysql</code> instalować.",
        "config-outdated-sqlite": "'''Warnowanje''': maš SQLite $1, kotryž je starši hač minimalna trěbna wersija $2. SQLite njebudźe k dispoziciji stać.",
        "config-no-fts3": "'''Warnowanje''': SQLite je so bjez [//sqlite.org/fts3.html FTS3-modula] kompilował, pytanske funkcije njebudu k dispoziciji stać.",
-       "config-register-globals": "'''Warnowanje: Funkcija <code>[http://php.net/register_globals register_globals]</code> PHP je zmóžnjena.'''\n'''Znjemóžń ju, jeli móžeš.'''\nMediaWiki budźe fungować, ale twój serwer je potencielnym wěstotnym njedostatkam wustajeny.",
        "config-safe-mode": "'''Warnowanje:''' [http://www.php.net/features.safe-mode wěsty modus] PHP je aktiwny.\nTo móže problemy zawinować, předewšěm, jeli so datajowe nahraća a podpěra <code>math</code> wužiwaja.",
        "config-xml-bad": "XML-modul za PHP faluje.\nMediaWiki trjeba funkcije w tutym modulu a njebudźe w tutej konfiguraciji fungować.\nJeli wužiwaš Mandrake, instaluj paket php-xml.",
        "config-pcre-no-utf8": "'''Ćežki zmylk''': Zda so, zo PCRE-modul za PHP ma so bjez PCRE_UTF8-podpěry kompilować.\nMediaWiki trjeba UTF-8-podpěru, zo by korektnje fungował.",
@@ -75,7 +73,6 @@
        "config-db-install-account": "Wužiwarske konto za instalaciju",
        "config-db-username": "Wužiwarske mjeno datoweje banki:",
        "config-db-password": "Hesło datoweje banki:",
-       "config-db-password-empty": "Prošu zapodaj hesło za noweho wužiwarja datoweje banki: $1.\nByrnjež było móžno wužiwarjow bjez hesłow wutworić, njeje to wěste.",
        "config-db-install-username": "Zapodaj wužiwarske mjeno, kotrež budźe so za zwisk z datowej banku za instalaciski proces wužiwać.\nTo njeje wužiwarske mjeno konta MediaWiki; to je wužiwarske mjeno za twoju datowu banku.",
        "config-db-install-password": "Zapodaj hesło, kotrež budźe so za zwisk z datowej banku za instalaciski proces wužiwać.\nTo njeje hesło konta MediaWiki; to je hesło za twoju datowu banku.",
        "config-db-install-help": "Zapodaj wužiwarske mjeno a hesło, kotrejž měłoj so za zwisk z datowej banku za instalaciski proces wužiwać.",
        "config-instantcommons": "Instant commons zmóžnić",
        "config-cc-error": "Pytanje za licencu Creative Commons njeje žadyn wuslědk přinjesło.\nZapodaj licencne mjeno manuelnje.",
        "config-cc-again": "Zaso wubrać...",
-       "config-cc-not-chosen": "Wubjer licencu Creative Commons a klikń na \"dale\".",
+       "config-cc-not-chosen": "Wubjer licencu Creative Commons a klikń na \"proceed\".",
        "config-advanced-settings": "Rozšěrjena konfiguraćija",
        "config-cache-options": "Nastajenja za objektowe pufrowanje:",
        "config-cache-none": "Žane pufrowanje (žana funkcionalnosć so njewotstronja, ale spěšnosć móže so na wjetšich wikijowych sydłach wobwliwować)",
index b460f60..2021cfc 100644 (file)
@@ -7,7 +7,8 @@
                        "Dj",
                        "Misibacsi",
                        "Tacsipacsi",
-                       "Dorgan"
+                       "Dorgan",
+                       "Macofe"
                ]
        },
        "config-desc": "A MediaWiki telepítője",
        "config-db-install-account": "A telepítéshez használt felhasználói fiók adatai",
        "config-db-username": "Felhasználónév:",
        "config-db-password": "Jelszó:",
-       "config-db-password-empty": "Írd be az új adatbázis-felhasználó jelszavát: $1\nVan lehetőség jelszó nélküli felhasználók létrehozására, azonban ez nem ajánlott.",
-       "config-db-username-empty": "A „{{int:config-db-username}}” mező kitöltése kötelező.",
        "config-db-install-username": "Írd be az adatbázisrendszerhez való csatlakozáshoz használt felhasználónevet.\nEz nem a MediaWiki fiók felhasználóneve; ez az adatbázisrendszeren használt felhasználóneved.",
        "config-db-install-password": "Írd be az adatbázisrendszerhez való csatlakozáshoz használt jelszót.\nEz nem a MediaWiki-fiók jelszava; ez az adatbázisrendszeren használt jelszavad.",
        "config-db-install-help": "Add meg a felhasználónevet és jelszót, amivel a telepítő csatlakozhat az adatbázishoz.",
        "config-instantcommons-help": "Az [//www.mediawiki.org/wiki/InstantCommons Instant Commons] lehetővé teszi, hogy a wikin használhassák a [//commons.wikimedia.org/ Wikimedia Commons] oldalon található képeket, hangokat és más médiafájlokat.\nA használatához a MediaWikinek internethozzáférésre van szüksége.\n\nA funkcióról és hogy hogyan állítható be más wikik esetén [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos a kézikönyvben] találhatsz további információkat.",
        "config-cc-error": "A Creative Commons-licencválasztó nem tért vissza eredménnyel.\nAdd meg kézzel a licencet.",
        "config-cc-again": "Válassz újra…",
-       "config-cc-not-chosen": "Válaszd ki a kívánt Creative Commons licencet, majd kattints a „Folytatás gombra”!",
+       "config-cc-not-chosen": "Válaszd ki a kívánt Creative Commons licencet, majd kattints a „proceed”!",
        "config-advanced-settings": "Haladó beállítások",
        "config-cache-options": "Objektum-gyorsítótárazás beállításai:",
        "config-cache-help": "Az objektumgyorsítótárazás célja, hogy felgyorsítsa a MediaWiki működését a gyakran használt adatok gyorsítótárazásával.\nKözepes vagy nagyobb oldalak esetén erősen ajánlott a használata, de kisebb oldalak esetén is hasznos lehet.",
index 9c7acd6..0ff33c1 100644 (file)
@@ -2,7 +2,8 @@
        "@metadata": {
                "authors": [
                        "McDutchie",
-                       "아라"
+                       "아라",
+                       "Macofe"
                ]
        },
        "config-desc": "Le installator de MediaWiki",
        "config-instantcommons-help": "[//www.mediawiki.org/wiki/InstantCommons Instant Commons] es un function que permitte a wikis de usar imagines, sonos e altere multimedia trovate in le sito [//commons.wikimedia.org/ Wikimedia Commons].\nPro poter facer isto, MediaWiki require accesso a Internet.\n\nPro plus information super iste function, includente instructiones super como configurar lo pro wikis altere que Wikimedia Commons, consulta [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos le manual].",
        "config-cc-error": "Le selector de licentia Creative Commons non dava un resultato.\nEntra le nomine del licentia manualmente.",
        "config-cc-again": "Selige de novo…",
-       "config-cc-not-chosen": "Selige le licentia Creative Commons que tu prefere e clicca \"proceder\".",
+       "config-cc-not-chosen": "Selige le licentia Creative Commons que tu prefere e clicca \"proceed\".",
        "config-advanced-settings": "Configuration avantiate",
        "config-cache-options": "Configuration del cache de objectos:",
        "config-cache-help": "Le cache de objectos es usate pro meliorar le rapiditate de MediaWiki per immagazinar le datos frequentemente usate.\nLe sitos medie o grande es multo incoragiate de activar isto, ma anque le sitos parve percipera le beneficios.",
index 16c7b3f..0095e57 100644 (file)
@@ -11,7 +11,8 @@
                        "Arifin.wijaya",
                        "Ilham151096",
                        "Bennylin",
-                       "WongKentir"
+                       "WongKentir",
+                       "Macofe"
                ]
        },
        "config-desc": "Penginstal untuk MediaWiki",
        "config-instantcommons-help": "[//www.mediawiki.org/wiki/InstantCommons Instant Commons] adalah fitur yang memungkinkan wiki untuk menggunakan gambar, suara, dan media lain dari [//commons.wikimedia.org/ Wikimedia Commons].\nUntuk melakukannya, MediaWiki memerlukan akses ke Internet.\n\nUntuk informasi lebih lanjut tentang fitur ini, termasuk petunjuk tentang cara untuk mengatur untuk wiki selain Wikimedia Commons, baca [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos manual].",
        "config-cc-error": "Pemilih lisensi Creative Commons tidak memberikan hasil.\nMasukkan nama lisensi secara manual.",
        "config-cc-again": "Pilih lagi...",
-       "config-cc-not-chosen": "Pilih lisensi Creative Commons yang Anda inginkan dan klik \"lanjutkan\".",
+       "config-cc-not-chosen": "Pilih lisensi Creative Commons yang Anda inginkan dan klik \"proceed\".",
        "config-advanced-settings": "Konfigurasi lebih lanjut",
        "config-cache-options": "Pengaturan untuk penyinggahan objek:",
        "config-cache-help": "Penyinggahan objek digunakan untuk meningkatkan kecepatan MediaWiki dengan menyinggahkan data yang sering digunakan.\nSitus berukuran sedang hingga besar sangat dianjurkan untuk mengaktifkan fitur ini, dan situs kecil juga akan merasakan manfaatnya.",
index 572f3af..e5d982d 100644 (file)
@@ -15,7 +15,8 @@
                        "Fpugliajno",
                        "The Polish",
                        "Sannita",
-                       "C.R."
+                       "C.R.",
+                       "Macofe"
                ]
        },
        "config-desc": "Programma di installazione per MediaWiki",
@@ -24,7 +25,7 @@
        "config-localsettings-upgrade": "È stato rilevato un file <code>LocalSettings.php</code>.\nPer aggiornare questa installazione, si prega di inserire il valore di <code>$wgUpgradeKey</code> nella casella qui sotto.\nLo potete trovare in <code>LocalSettings.php</code>.",
        "config-localsettings-cli-upgrade": "È stato rilevato un file <code>LocalSettings.php</code>.\nPer aggiornare questa installazione, eseguire <code>update.php</code>",
        "config-localsettings-key": "Chiave di aggiornamento:",
-       "config-localsettings-badkey": "La chiave che hai fornito non è corretta.",
+       "config-localsettings-badkey": "La chiave di aggiornamento che hai fornito non è corretta.",
        "config-upgrade-key-missing": "È stata rilevata un'installazione esistente di MediaWiki.\nPer aggiornare questa installazione, si prega di inserire la seguente riga nella parte inferiore del tuo <code>LocalSettings.php</code>:\n\n$1",
        "config-localsettings-incomplete": "Il file <code>LocalSettings.php</code> esistente sembra essere incompleto.\nLa variabile $1 non è impostata.\nCambia <code>LocalSettings.php</code> in modo che questa variabile sia impostata e fai clic su \"{{int:Config-continue}}\".",
        "config-localsettings-connection-error": "Si è verificato un errore durante la connessione al database utilizzando le impostazioni specificate in <code>LocalSettings.php</code>. Si prega di correggere queste impostazioni e riprovare.\n\n$1",
        "config-instantcommons-help": "[//www.mediawiki.org/wiki/InstantCommons Instant Commons] è una funzionalità che consente ai wiki di usare immagini, suoni e altri file multimediali che trovate sul sito [//commons.wikimedia.org/ Wikimedia Commons].\nPer fare questo, MediaWiki richiede l'accesso a Internet.\n\nPer ulteriori informazioni su questa funzionalità, incluse le istruzioni su come configurarlo per wiki diversi da Wikimedia Commons, consultare [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos il manuale].",
        "config-cc-error": "Il selettore di licenze Creative Commons non ha dato alcun risultato.\nInserisci manualmente il nome della licenza.",
        "config-cc-again": "Seleziona di nuovo...",
-       "config-cc-not-chosen": "Scegliere quale licenza Creative Commons si desidera e cliccare su \"procedi\".",
+       "config-cc-not-chosen": "Scegliere quale licenza Creative Commons si desidera e cliccare su \"proceed\".",
        "config-advanced-settings": "Configurazione avanzata",
        "config-cache-options": "Impostazioni per la cache di oggetti:",
        "config-cache-help": "La memorizzazione di oggetti nella cache è utilizzata per migliorare la velocità di MediaWiki attraverso l'allocazione nella cache dei dati utilizzati di frequente.\nPer siti di dimensioni medie e grandi, è caldamente consigliato attivare la cache, ma anche per piccoli siti se ne vedranno i benefici.",
index 8a11b09..8c0ade9 100644 (file)
@@ -14,7 +14,9 @@
                        "아라",
                        "Shield-9",
                        "Takot",
-                       "Sujiniku"
+                       "Sujiniku",
+                       "Macofe",
+                       "2nd-player"
                ]
        },
        "config-desc": "MediaWiki のインストーラー",
@@ -23,7 +25,7 @@
        "config-localsettings-upgrade": "ファイル <code>LocalSettings.php</code> を検出しました。\nインストールされているものをアップグレードするには、<code>$wgUpgradeKey</code> の値を以下の欄に入力してください。\nこの値は <code>LocalSettings.php</code> 内にあります。",
        "config-localsettings-cli-upgrade": "ファイル <code>LocalSettings.php</code> を検出しました。\nインストールされているものをアップグレードするには、<code>update.php</code> を実行してください",
        "config-localsettings-key": "アップグレード キー:",
-       "config-localsettings-badkey": "与えられたキーが間違っています",
+       "config-localsettings-badkey": "ä¸\8eã\81\88ã\82\89ã\82\8cã\81\9fã\82¢ã\83\83ã\83\97ã\82°ã\83¬ã\83¼ã\83\89ã\83»ã\82­ã\83¼ã\81\8cé\96\93é\81\95ã\81£ã\81¦ã\81\84ã\81¾ã\81\99",
        "config-upgrade-key-missing": "MediaWiki が既にインストールされていることを検出しました。\nインストールされているものをアップグレードするために、以下の行を <code>LocalSettings.php</code> の末尾に挿入してください:\n\n$1",
        "config-localsettings-incomplete": "既存の <code>LocalSettings.php</code> の内容は不完全のようです。\n変数 $1 が設定されていません。\n<code>LocalSettings.php</code> 内でこの変数を設定して、「{{int:Config-continue}}」をクリックしてください。",
        "config-localsettings-connection-error": "<code>LocalSettings.php</code> で指定した設定を使用してデータベースに接続する際にエラーが発生しました。\n設定を修正してから再度試してください。\n\n$1",
        "config-instantcommons-help": "[//www.mediawiki.org/wiki/InstantCommons Instant Commons] は、[//commons.wikimedia.org/ ウィキメディア・コモンズ]のサイトにある画像、音声、その他のメディアをウィキ上で利用できるようにする機能です。\nこれを使用するには、MediaWiki がインターネットに接続できる必要があります。\n\nウィキメディア・コモンズ以外のウィキを同様に設定する手順など、この機能に関する詳細な情報は、[//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos マニュアル]をご覧ください。",
        "config-cc-error": "クリエイティブ・コモンズ・ライセンスの選択器から結果が得られませんでした。\nライセンスの名前を手動で入力してください。",
        "config-cc-again": "もう一度選択してください...",
-       "config-cc-not-chosen": "希望するクリエイティブ・コモンズのライセンスを選択して、「続行」をクリックしてください。",
+       "config-cc-not-chosen": "希望するクリエイティブ・コモンズのライセンスを選択して、「proceed」をクリックしてください。",
        "config-advanced-settings": "高度な設定",
        "config-cache-options": "オブジェクトのキャッシュの設定:",
        "config-cache-help": "オブジェクトのキャッシュを使用すると、頻繁に使用するデータをキャッシュするため MediaWiki の動作速度を改善できます。\n中〜大規模サイトではこれを有効にすることを強くお勧めします。小規模サイトでも同様に効果があります。",
index c9db449..90e6dc9 100644 (file)
@@ -8,7 +8,8 @@
                        "Namoroka",
                        "Revi",
                        "Alex00728",
-                       "Hwangjy9"
+                       "Hwangjy9",
+                       "Macofe"
                ]
        },
        "config-desc": "미디어위키를 위한 설치 관리자",
        "config-instantcommons-help": "[//www.mediawiki.org/wiki/InstantCommons 인스턴트 공용]은 [//commons.wikimedia.org/ 위키미디어 공용] 사이트에서 찾을 수 있는 그림, 소리 및 다른 미디어를 위키에서 사용할 수 있도록 하는 기능입니다.\n이렇게 하려면 미디어위키가 인터넷에 접근해야합니다.\n\n위키미디어 공용 외에 기타 위키를 설정하는 방법에 대한 지침을 포함한, 기능에 대한 자세한 내용은 [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos 매뉴얼]을 참조하세요.",
        "config-cc-error": "크리에이티브 커먼즈 라이선스 선택기에 결과가 없습니다.\n수동으로 라이선스 이름을 입력하세요.",
        "config-cc-again": "다시 선택...",
-       "config-cc-not-chosen": "원하는 크리에이티브 커먼즈 라이선스를 선택하고 \"진행\"을 클릭하세요.",
+       "config-cc-not-chosen": "원하는 크리에이티브 커먼즈 라이선스를 선택하고 \"proceed\"을 클릭하세요.",
        "config-advanced-settings": "고급 설정",
        "config-cache-options": "개체 캐싱을 위한 설정:",
        "config-cache-help": "개체 캐싱은 자주 사용하는 데이터를 캐싱하여 미디어위키의 속도를 개선하는 데 사용합니다.\n큰 규모의 사이트는 이를 많이 사용하도록 권장하고 있으며, 소규모 사이트들도 물론 혜택을 볼 수 있습니다.",
index 63cb259..3377afb 100644 (file)
@@ -2,7 +2,8 @@
        "@metadata": {
                "authors": [
                        "Bjankuloski06",
-                       "아라"
+                       "아라",
+                       "Macofe"
                ]
        },
        "config-desc": "Воспоставувачот на МедијаВики",
@@ -11,7 +12,7 @@
        "config-localsettings-upgrade": "Востановена е податотека <code>LocalSettings.php</code>.\nЗа да ја надградите инсталцијава, внесете ја вредноста на <code>$wgUpgradeKey</code> во полето подолу.\nТоа е го најдете во <code>LocalSettings.php</code>.",
        "config-localsettings-cli-upgrade": "Утврдено е присуството на податотеката „<code>LocalSettings.php</code>“.\nЗа да ја надградите воспоставката, пуштете ја „<code>update.php</code>“ наместо горенаведената.",
        "config-localsettings-key": "Надградбен клуч:",
-       "config-localsettings-badkey": "Ð\9aлÑ\83Ñ\87оÑ\82 Ñ\88Ñ\82о Ð³Ð¾ Ð½Ð°Ð²ÐµÐ´Ð¾Ð²Ñ\82е Ðµ Ð¿Ð¾Ð³Ñ\80еÑ\88ен",
+       "config-localsettings-badkey": "Ð\9dадгÑ\80адбениоÑ\82 ÐºÐ»Ñ\83Ñ\87 Ñ\88Ñ\82о Ð³Ð¾ Ð½Ð°Ð²ÐµÐ´Ð¾Ð²Ñ\82е Ðµ Ð¿Ð¾Ð³Ñ\80еÑ\88ен.",
        "config-upgrade-key-missing": "Востановена е постоечка воспоставка на МедијаВики.\nЗа да ја надградите, вметнете го следниов ред на дното од вашата страница <code>LocalSettings.php</code>:\n\n$1",
        "config-localsettings-incomplete": "Постоечката страница <code>LocalSettings.php</code> е нецелосна.\nНе е поставена променливата $1.\nИзменете ја страницата <code>LocalSettings.php</code> така што ќе ѝ зададете вредност на променливата, па стиснете на „{{int:Config-continue}}“.",
        "config-localsettings-connection-error": "Се појави грешка при поврзувањето со базата користејќи ги поставките назначени во <code>LocalSettings.php</code>. Исправете ги овие поставки и обидете се повторно.\n\n$1",
        "config-instantcommons-help": "[//www.mediawiki.org/wiki/InstantCommons Instant Commons] е функција која им овозможува на викијата да користат слики, звучни записи и други мултимедијални содржини од [//commons.wikimedia.org/ Ризницата].\nЗа да може ова да работи, МедијаВики бара пристап до семрежјето.\n\nЗа повеќе информации за оваа функција и напатствија за нејзино поставување на вики (сите други освен Ризницата), коносултирајте го [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos прирачникот].",
        "config-cc-error": "Изборникот на лиценци од Криејтив комонс не даде резултати.\nВнесете го името на лиценцата рачно.",
        "config-cc-again": "Одберете повторно...",
-       "config-cc-not-chosen": "Одберете ја саканата лиценца од Криејтив комонс и стиснете на „продолжи“.",
+       "config-cc-not-chosen": "Одберете ја саканата лиценца од Криејтив комонс и стиснете на „proceed“.",
        "config-advanced-settings": "Напредни нагодувања",
        "config-cache-options": "Нагодувања за меѓускладирање на објекти:",
        "config-cache-help": "Меѓускладирањето на објекти се користи за зголемување на брзината на МедијаВики со меѓускладирање на често употребуваните податоци.\nОва многу се препорачува на средни до големи викија, но од тоа ќе имаат полза и малите викија.",
index 561d097..9b62368 100644 (file)
@@ -2,7 +2,8 @@
        "@metadata": {
                "authors": [
                        "C.R.",
-                       "Chelin"
+                       "Chelin",
+                       "Macofe"
                ]
        },
        "config-desc": "'O prugramma d'istallazione 'e MediaWiki",
        "config-instantcommons-help": "[//www.mediawiki.org/wiki/InstantCommons Instant Commons] è na funziunalita ca premmettesse 'e wiki 'ausà immaggene, suone e ati file multimediale ca ve truvate ncopp' 'o sito 'e [//commons.wikimedia.org/ Wikimedia Commons].\nSi chesto vulite fà, MediaWiki vulesse accieso a Internet.\n\nPe n'avé cchiù nfurmaziune ncopp'a sta funziunalità, ncludenno 'e struziune ncopp' 'a configuraziona pe' wiki divierze 'e Wikimedia Commons, fermateve nu poco a stureà [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos 'o manuale].",
        "config-cc-error": "'O selettore 'e licienze Creative Commons nun mmustaje nisciuno risultato.\nNzertate manualmente 'o nomme d' 'a licienza.",
        "config-cc-again": "Selezziona n'ata vota...",
-       "config-cc-not-chosen": "Sciglite quale licienza Creative Commons desiderate e cliccate ncopp' 'a \"prucede\".",
+       "config-cc-not-chosen": "Sciglite quale licienza Creative Commons desiderate e cliccate ncopp' 'a \"proceed\".",
        "config-advanced-settings": "Configurazione avanzata",
        "config-cache-options": "Mpustaziune p' 'a cache d'oggette:",
        "config-cache-help": "'O caching 'uggette s'ausa pe' puté migliurà 'a velocità 'e MediaWiki a fforza 'e ffà caching d' 'e date cchiù spisso ausàte.\nE Mezze a gruosse site se songo ncuraggiate a ll'appiccià chiste, e site piccerilli vedarranno migliuramente pure.",
index c658c5c..c86698b 100644 (file)
@@ -5,7 +5,8 @@
                        "Nghtwlkr",
                        "아라",
                        "Danmichaelo",
-                       "Jeblad"
+                       "Jeblad",
+                       "Macofe"
                ]
        },
        "config-desc": "Installasjonsprogrammet for MediaWiki",
        "config-db-install-account": "Brukerkonto for installasjon",
        "config-db-username": "Databasebrukernavn:",
        "config-db-password": "Databasepassord:",
-       "config-db-password-empty": "Skriv inn et passord for den nye databasebrukeren: $1.\nDet er mulig å opprette brukere uten passord, men dette er ikke sikkert.",
-       "config-db-username-empty": "Du må skrive inn en verdi for «{{int:config-db-username}}»",
        "config-db-install-username": "Skriv inn brukernavnet som vil bli brukt til å koble til databasen under installasjonsprosessen.\nDette er ikke brukernavnet på MediaWiki-kontoen; dette er brukernavnet for databasen din.",
        "config-db-install-password": "Skriv inn passordet som vil bli brukt til å koble til databasen under installasjonsprosessen.\nDette er ikke passordet på MediaWiki-kontoen; dette er passordet for databasen din.",
        "config-db-install-help": "Skriv inn brukernavnet og passordet som vil bli brukt for å koble til databasen under installasjonsprosessen.",
        "config-instantcommons-help": "[//www.mediawiki.org/wiki/InstantCommons Instant Commons] er en funksjon som gjør det mulig for wikier å bruke bilder, lyder og andre media funnet på nettstedet [//commons.wikimedia.org/ Wikimedia Commons].\nFor å gjøre dette krever MediaWiki tilgang til internett.\n\nFor mer informasjon om denne funksjonen, inklusive instruksjoner om hvordan man setter opp dette for andre wikier enn Wikimedia Commons, konsulter [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos manualen].",
        "config-cc-error": "Lisensvelgeren for Creative Commons ga ikke noe resultat.\nLegg inn lisensnavnet manuelt.",
        "config-cc-again": "Velg igjen...",
-       "config-cc-not-chosen": "Velg hvilken Creative Commons-lisens du ønsker og klikk «fortsett».",
+       "config-cc-not-chosen": "Velg hvilken Creative Commons-lisens du ønsker og klikk «proceed».",
        "config-advanced-settings": "Avansert konfigurasjon",
        "config-cache-options": "Innstillinger for objekt-mellomlagring:",
        "config-cache-help": "Objekt-mellomlagring brukes for å forbedre hastigheten for MediaWiki. Ofte forekommende data lagres for gjenbruk.\nMiddels til store nettsteder bør absolutt aktivisere mellomlagring, med også små nettsteder kan ha nytte av dette.",
index e2bef3f..8b352de 100644 (file)
@@ -2,7 +2,8 @@
        "@metadata": {
                "authors": [
                        "Siebrand",
-                       "Seb35"
+                       "Seb35",
+                       "Macofe"
                ]
        },
        "config-localsettings-badkey": "De sleutel die je hebt opgegeven is onjuist",
@@ -19,7 +20,6 @@
        "config-unicode-update-warning": "'''Waarschuwing''': de geïnstalleerde versie van de Unicodenormalisatiewrapper maakt gebruik van een oudere versie van [http://site.icu-project.org/ de bibliotheek van het ICU-project].\nJe moet [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations bijwerken] als Unicode voor jou van belang is.",
        "config-no-db": "Het was niet mogelijk een geschikte databasedriver te vinden voor PHP.\nJe moet een databasedriver installeren voor PHP.\nDe volgende databases worden ondersteund: $1.\n\nAls je op een gedeelde omgeving zit, vraag dan aan je hostingprovider een geschikte databasedriver te installeren.\nAls je PHP zelf hebt gecompileerd, wijzig dan je instellingen zodat een databasedriver wordt geactiveerd, bijvoorbeeld via <code>./configure --with-mysql</code>.\nAls je PHP hebt geïnstalleerd via een Debian- of Ubuntu-package, installeer dan ook de module php5-mysql.",
        "config-outdated-sqlite": "''' Waarschuwing:''' je gebruikt SQLite $1. SQLite is niet beschikbaar omdat de minimaal vereiste versie $2 is.",
-       "config-register-globals": "'''Waarschuwing: de PHP-optie <code>[http://php.net/register_globals register_globals]</code> is ingeschakeld.'''\n'''Schakel deze uit als dat mogelijk is.'''\nMediaWiki kan ermee werken, maar je server is dan meer kwetsbaar voor beveiligingslekken.",
        "config-magic-quotes-runtime": "'''Onherstelbare fout: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] is actief!'''\nDeze instelling zorgt voor gegevenscorruptie.\nJe kunt MediaWiki niet installeren tenzij deze instelling is uitgeschakeld.",
        "config-magic-quotes-sybase": "'''Onherstelbare fout: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_sybase] is actief!'''\nDeze instelling zorgt voor gegevenscorruptie.\nJe kunt MediaWiki niet installeren tenzij deze instelling is uitgeschakeld.",
        "config-mbstring": "'''Onherstelbare fout: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] is actief!'''\nDeze instelling zorgt voor gegevenscorruptie.\nJe kunt MediaWiki niet installeren tenzij deze instelling is uitgeschakeld.",
@@ -63,7 +63,7 @@
        "config-enable-email-help": "Als je wilt dat e-mailen mogelijk is, dan moeten de [http://www.php.net/manual/en/mail.configuration.php e-mailinstellingen van PHP] correct zijn.\nAls je niet wilt dat e-mailen mogelijk is, dan kan je de instellingen hier uitschakelen.",
        "config-upload-help": "Het toestaan van het uploaden van bestanden stelt je server mogelijk bloot aan beveiligingsrisico's.\nEr is meer [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security informatie over beveiliging] beschikbaar in de handleiding.\n\nOm het bestandsuploads mogelijk te maken kan je de rechten op de submap <code>images</code> onder de hoofdmap van MediaWiki aanpassen, zodat de webserver erin kan schrijven.\nDaarmee wordt deze functie ingeschakeld.",
        "config-logo-help": "Het standaarduiterlijk van MediaWiki bevat ruimte voor een logo van 135x160 pixels boven het menu.\nUpload een afbeelding met de juiste afmetingen en voer de URL hier in.\n\nAls je geen logo wilt gebruiken, kan je dit veld leeg laten.",
-       "config-cc-not-chosen": "Kies de Creative Commonslicentie die je wilt gebruiken en klik op \"doorgaan\".",
+       "config-cc-not-chosen": "Kies de Creative Commonslicentie die je wilt gebruiken en klik op \"proceed\".",
        "config-memcache-needservers": "Je hebt Memcached geselecteerd als je cache, maar je hebt geen servers opgegeven.",
        "config-memcache-badip": "Je hebt een ongeldig IP-adres ingevoerd voor Memcached: $1.",
        "config-memcache-noport": "Je hebt geen poort opgegeven voor de Memcachedserver: $1.\nDe standaardpoort is 11211.",
index 734b747..4c71d39 100644 (file)
@@ -15,7 +15,8 @@
                        "Mar(c)",
                        "Sjoerddebruin",
                        "Esketti",
-                       "JaapDeKleine"
+                       "JaapDeKleine",
+                       "Macofe"
                ]
        },
        "config-desc": "Het installatieprogramma voor MediaWiki",
@@ -24,7 +25,7 @@
        "config-localsettings-upgrade": "Er is een bestaand instellingenbestand <code>LocalSettings.php</code> gevonden.\nVoer de waarde van <code>$wgUpgradeKey</code> in in onderstaande invoerveld om deze installatie bij te werken.\nDe instelling is terug te vinden in <code>LocalSettings.php</code>.",
        "config-localsettings-cli-upgrade": "Het bestand <code>LocalSettings.php</code> is al aanwezig.\nVoer <code>update.php</code> uit om deze installatie bij te werken.",
        "config-localsettings-key": "Upgradesleutel:",
-       "config-localsettings-badkey": "De sleutel die u hebt opgegeven is onjuist.",
+       "config-localsettings-badkey": "De upgrade-sleutel die u hebt opgegeven is onjuist.",
        "config-upgrade-key-missing": "Er is een bestaande installatie van MediaWiki aangetroffen.\nPlaats de volgende regel onderaan uw <code>LocalSettings.php</code> om deze installatie bij te werken:\n\n$1",
        "config-localsettings-incomplete": "De bestaande inhoud van <code>LocalSettings.php</code> lijkt incompleet.\nDe variabele $1 is niet ingesteld.\nWijzig <code>LocalSettings.php</code> zodat deze variabele is ingesteld en klik op \"{{int:Config-continue}}\".",
        "config-localsettings-connection-error": "Er is een fout opgetreden tijdens het verbinden met de database met de instellingen uit <code>LocalSettings.php</code>. Los het probleem met de instellingen op en probeer het daarna opnieuw.\n\n$1",
@@ -85,6 +86,7 @@
        "config-apc": "[http://www.php.net/apc APC] is op dit moment geïnstalleerd",
        "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] is op dit moment geïnstalleerd",
        "config-no-cache": "'''Waarschuwing:''' [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] of [http://www.iis.net/download/WinCacheForPhp WinCache] is niet aangetroffen.\nHet cachen van objecten is niet ingeschakeld.",
+       "config-no-cache-apcu": "<strong>Waarschuwing:</strong> [http://www.php.net/apcu APCu], [http://xcache.lighttpd.net/ XCache] of [http://www.iis.net/download/WinCacheForPhp WinCache] is niet aangetroffen.\nHet cachen van objecten is niet ingeschakeld.",
        "config-mod-security": "'''Waarschuwing:''' uw webserver heeft de module [http://modsecurity.org/ mod_security] ingeschakeld. Als deze onjuist is ingesteld, kan dit problemen geven in combinatie met MediaWiki of andere software die gebruikers in staat stelt willekeurige inhoud te posten.\nLees de [http://modsecurity.org/documentation/ documentatie over mod_security] of neem contact op met de helpdesk van uw provider als u tegen problemen aanloopt.",
        "config-diff3-bad": "GNU diff3 niet aangetroffen.",
        "config-git": "Versiecontrolesoftware git is aangetroffen: <code>$1</code>",
        "config-instantcommons-help": "[//www.mediawiki.org/wiki/InstantCommons Instant Commons] is functie die het mogelijk maakt om afbeeldingen, geluidsbestanden en andere mediabestanden te gebruiken van de website [//commons.wikimedia.org/ Wikimedia Commons].\nHiervoor heeft MediaWiki toegang nodig tot Internet.\n\nMeer informatie over deze functie en hoe deze in te stellen voor andere wiki's dan Wikimedia Commons is te vinden in de [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos handleiding].",
        "config-cc-error": "De licentiekiezer van Creative Commons heeft geen resultaat opgeleverd.\nVoer de licentie handmatig in.",
        "config-cc-again": "Opnieuw kiezen...",
-       "config-cc-not-chosen": "Kies de Creative Commonslicentie die u wilt gebruiken en klik op \"doorgaan\".",
+       "config-cc-not-chosen": "Kies de Creative Commonslicentie die u wilt gebruiken en klik op \"proceed\".",
        "config-advanced-settings": "Gevorderde instellingen",
        "config-cache-options": "Instellingen voor het cachen van objecten:",
        "config-cache-help": "Het cachen van objecten wordt gebruikt om de snelheid van MediaWiki te verbeteren door vaak gebruikte gegevens te bewaren.\nMiddelgrote tot grote websites wordt geadviseerd dit in te schakelen en ook kleine sites merken de voordelen.",
index 051fe92..b3999f6 100644 (file)
@@ -19,7 +19,8 @@
                        "Matik7",
                        "Pio387",
                        "Darellur",
-                       "The Polish"
+                       "The Polish",
+                       "Macofe"
                ]
        },
        "config-desc": "Instalator MediaWiki",
        "config-instantcommons-help": "[//www.mediawiki.org/wiki/InstantCommons Instant Commons] jest funkcją, która pozwala wiki używać obrazów, dźwięków i innych mediów znalezionych na  witrynie [//commons.wikimedia.org/ Wikimedia Commons].\nAby to zrobić, MediaWiki wymaga dostępu do internetu.\n\nAby uzyskać więcej informacji na temat tej funkcji, w tym instrukcje dotyczące sposobu ustawiania go na wiki innych niż Wikimedia Commons, sprawdź w [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos podręczniku].",
        "config-cc-error": "Wybieranie licencji Creative Commons nie dało wyniku.\nWpisz nazwę licencji ręcznie.",
        "config-cc-again": "Wybierz jeszcze raz...",
-       "config-cc-not-chosen": "Wybierz którą chcesz licencję Creative Commons i kliknij „Dalej”.",
+       "config-cc-not-chosen": "Wybierz którą chcesz licencję Creative Commons i kliknij „proceed”.",
        "config-advanced-settings": "Konfiguracja zaawansowana",
        "config-cache-options": "Ustawienia buforowania obiektów:",
        "config-cache-help": "Buforowanie obiekto jest używane aby przyspieszyć MediaWiki przez trzymanie w pamięci podręcznej często używanych danych.\nŚrednie oraz duże witryny są wysoce zachęcane by je włączyć, a małe witryny także dostrzegą korzyści.",
index 440b398..56886be 100644 (file)
@@ -5,7 +5,8 @@
                        "Dragonòt",
                        "Krinkle",
                        "아라",
-                       "Amire80"
+                       "Amire80",
+                       "Macofe"
                ]
        },
        "config-desc": "L'instalador për mediaWiki",
@@ -98,7 +99,6 @@
        "config-db-install-account": "Cont d'utent për l'instalassion.",
        "config-db-username": "Nòm d'utent dla base ëd dàit:",
        "config-db-password": "Ciav dla base ëd dàit:",
-       "config-db-password-empty": "Për piasì, ch'a anserissa na ciav për ël neuv utent ëd base ëd dàit: $1.\nCon tut ch'a sia possìbil creé d'utent sensa ciav, a l'é pa na ròba sigura.",
        "config-db-install-username": "Ch'a nserissa lë stranòm che a sarà dovrà për coleghesse a la base ëd dàit durant ël process d'istalassion.\nCost-sì a l'é nen lë stranòm dël cont MediaWiki; a l'é lë stranòm për soa base ëd dàit.",
        "config-db-install-password": "Ch'a anserissa la ciav che a sarà dovrà për coleghesse a la base ëd dàit durant ël process d'istalassion.\nCosta-sì a l'é nen la ciav dël cont MediaWiki; a l'é la ciav për soa base ëd dàit.",
        "config-db-install-help": "Ch'a anserissa lë stranòm d'utent e la ciav che a saran dovrà për coleghesse a la base ëd dàit durant ël process d'instalassion.",
        "config-instantcommons-help": "[//www.mediawiki.org/wiki/InstantCommons Instant Commons] a l'é na funsion ch'a përmët a le wiki ëd dovré dle figure, dij son e d'àutri mojen trovà an sël sit [//commons.wikimedia.org/ Wikimedia Commons].\nPër dovré sossì, MediaWiki a l'ha da manca dl'acess a la ragnà.\n\nPër pi d'anformassion su sta funsion, comprèise j'istrussion ëd com ampostela për wiki diferente da Wikimedia Commons, ch'a consulta [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos ël manual].",
        "config-cc-error": "La selession ëd la licensa Creative Commons a l'ha dàit gnun arzultà.\nCh'a anserissa ël nòm dla licensa a man.",
        "config-cc-again": "Torna cheuje...",
-       "config-cc-not-chosen": "Sern che licensa Creative Commons it veule e sgnaca \"anans\".",
+       "config-cc-not-chosen": "Sern che licensa Creative Commons it veule e sgnaca \"proceed\".",
        "config-advanced-settings": "Configurassion avansà",
        "config-cache-options": "Ampostassion për la memorisassion local d'oget:",
        "config-cache-help": "La memorisassion loca d'oget a l'é dovrà për amelioré l'andi ëd MediaWiki an butant an local dij dat dovrà 'd soens.\nIj sit da mesan a gròss a son motobin ancoragià a abilité sòn, e ij sit cit a l'avran ëdcò dij benefissi.",
index bbf2798..dde0a2d 100644 (file)
@@ -14,7 +14,8 @@
                        "Giro720",
                        "Imperadeiro98",
                        "Cainamarques",
-                       "Vitorvicentevalente"
+                       "Vitorvicentevalente",
+                       "Macofe"
                ]
        },
        "config-desc": "O instalador do MediaWiki",
@@ -23,7 +24,7 @@
        "config-localsettings-upgrade": "Foi detectado um ficheiro <code>LocalSettings.php</code>.\nPara atualizar esta instalação, por favor introduza o valor de <code>$wgUpgradeKey</code> na caixa abaixo.\nEncontra este valor em <code>LocalSettings.php</code>.",
        "config-localsettings-cli-upgrade": "Foi detectado um ficheiro <code>LocalSettings.php</code>.\nPara atualizar esta instalação, execute o <code>update.php</code>, por favor",
        "config-localsettings-key": "Chave de atualização:",
-       "config-localsettings-badkey": "A chave que forneceu está incorreta.",
+       "config-localsettings-badkey": "A chave de atualização que forneceu está incorreta.",
        "config-upgrade-key-missing": "Foi detectada uma instalação existente do MediaWiki.\nPara atualizar esta instalação, por favor coloque a seguinte linha no final do seu <code>LocalSettings.php</code>:\n\n$1",
        "config-localsettings-incomplete": "O ficheiro <code>LocalSettings.php</code> existente parece estar incompleto.\nA variável $1 não está definida.\nPor favor, defina esta variável no <code>LocalSettings.php</code> e clique \"{{int:Config-continue}}\".",
        "config-localsettings-connection-error": "Ocorreu um erro ao ligar à base de dados usando as configurações especificadas no <code>LocalSettings.php</code>. Por favor corrija essas configurações e tente novamente.\n\n$1",
        "config-instantcommons-help": "O [//www.mediawiki.org/wiki/InstantCommons Instant Commons] é uma funcionalidade que permite que as wikis usem imagens, áudio e outros ficheiros multimédia disponíveis no site [//commons.wikimedia.org/ Wikimedia Commons].\nPara poder usá-los, o MediaWiki necessita de acesso à internet.\n\nPara mais informações sobre esta funcionalidade, incluindo instruções sobre como configurá-la para usar outras wikis em vez da Wikimedia Commons, consulte o [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos Manual Técnico].",
        "config-cc-error": "O auxiliar de escolha de licenças da Creative Commons não produziu resultados.\nIntroduza o nome da licença manualmente.",
        "config-cc-again": "Escolha outra vez...",
-       "config-cc-not-chosen": "Escolha a licença da Creative Commons que pretende e clique \"continuar\".",
+       "config-cc-not-chosen": "Escolha a licença da Creative Commons que pretende e clique \"proceed\".",
        "config-advanced-settings": "Configuração avançada",
        "config-cache-options": "Configuração da cache de objetos:",
        "config-cache-help": "A cache de objetos é usada para melhorar o desempenho do MediaWiki. Armazena dados usados com frequência.\nSites de tamanho médio ou grande são altamente encorajados a ativar esta funcionalidade e os sites pequenos também terão alguns benefícios em fazê-lo.",
index bd9e762..f589678 100644 (file)
@@ -19,7 +19,8 @@
                        "Eroha",
                        "Seb35",
                        "Striking Blue",
-                       "Ильнар"
+                       "Ильнар",
+                       "Macofe"
                ]
        },
        "config-desc": "Инсталлятор MediaWiki",
@@ -28,7 +29,7 @@
        "config-localsettings-upgrade": "Обнаружен файл <code>LocalSettings.php</code>.\nДля обновления этой установки, пожалуйста, введите значение <code>$wgUpgradeKey</code>.\nЕго можно найти в файле <code>LocalSettings.php</code>.",
        "config-localsettings-cli-upgrade": "Обнаружен файл <code>LocalSettings.php</code>.\nДля обновления этой установки, пожалуйста, запустите <code>update.php</code>",
        "config-localsettings-key": "Ключ обновления:",
-       "config-localsettings-badkey": "Вы указали неправильный ключ",
+       "config-localsettings-badkey": "Вы указали неправильный ключ обновления",
        "config-upgrade-key-missing": "Обнаружена существующая установленная копия MediaWiki.\nЧтобы обновить обнаруженную установку, пожалуйста, добавьте следующую строку в конец вашего файла <code>LocalSettings.php</code>:\n\n$1",
        "config-localsettings-incomplete": "Похоже, что существующий файл <code>LocalSettings.php</code> неполон.\nНе установлена переменная $1.\nПожалуйста, измените <code>LocalSettings.php</code> так, чтобы значение этой переменной было задано, затем нажмите «{{int:Config-continue}}».",
        "config-localsettings-connection-error": "Произошла ошибка при подключении к базе данных с помощью настроек, указанных в <code>LocalSettings.php</code> или <code>AdminSettings.php</code>. Пожалуйста, исправьте эти настройки и повторите попытку.\n\n$1",
        "config-instantcommons-help": "[//www.mediawiki.org/wiki/InstantCommons Instant Commons] — это функция, позволяющая использовать изображения, звуки и другие медиафайлы с Викисклада ([//commons.wikimedia.org/ Wikimedia Commons]).\nДля работы этой функции MediaWiki необходим доступ к Интернету.\n\nДополнительную информацию об Instant Commons, в том числе указания о том, как её настроить для других вики, отличных от Викисклада, можно найти в [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos руководстве].",
        "config-cc-error": "Механизм выбора лицензии Creative Commons не вернул результата.\nВведите название лицензии вручную.",
        "config-cc-again": "Выберите ещё раз…",
-       "config-cc-not-chosen": "Выберите, какую лицензию Creative Commons Вы хотите использовать, и нажмите кнопку \"Продолжить\".",
+       "config-cc-not-chosen": "Выберите, какую лицензию Creative Commons Вы хотите использовать, и нажмите кнопку \"proceed\".",
        "config-advanced-settings": "Дополнительные настройки",
        "config-cache-options": "Параметры кэширования объектов:",
        "config-cache-help": "Кэширование объектов используется для повышения скорости MediaWiki путем кэширования часто используемых данных.\nДля средних и больших сайтов кеширование настоятельно рекомендуется включать, а для небольших сайтов кеширование может показать преимущество.",
index f5eb7fa..542a38d 100644 (file)
@@ -12,7 +12,7 @@
        "config-localsettings-upgrade": "Zaznana je bila datoteka <code>LocalSettings.php</code>.\nZa nadgradnjo te inštalacije prosim vnesite vrednost <code>$wgUpgradeKey</code> v polje za vnos spodaj.\nNašli jo boste v <code>LocalSettings.php</code>.",
        "config-localsettings-cli-upgrade": "Zaznana je bila datoteka <code>LocalSettings.php</code>.\nZa nadgradnjo te namestitve zaženite <code>update.php</code>",
        "config-localsettings-key": "Nadgraditveni ključ:",
-       "config-localsettings-badkey": "Naveden ključ je napačen.",
+       "config-localsettings-badkey": "Navedeni ključ za nadgradnjo je napačen.",
        "config-upgrade-key-missing": "Zaznana je bila obstoječa namestitev MediaWiki.\nZa nadgradnjo te namestitve vstavite naslednjo vrstico na dno vaše <code>LocalSettings.php</code>:\n\n$1",
        "config-localsettings-incomplete": "Kaže, da je obstoječa datoteka <code>LocalSettings.php</code> nepopolna. Vrednost $1 ni nastavljena. Prosimo, nastavite to vrednost v <code>LocalSettings.php</code> in kliknite \"{{int:Config-continue}}\".",
        "config-localsettings-connection-error": "Prišlo je do napake pri povezovanju s podatkovno zbirko z nastavitvami, določenimi v <code>LocalSettings.php</code>. Prosimo popravite te nastavitve in poskusite znova.\n\n$1",
index 7bf41b4..b54c65a 100644 (file)
@@ -8,7 +8,8 @@
                        "Lokal Profil",
                        "Tobulos1",
                        "Rotsee",
-                       "Boom"
+                       "Boom",
+                       "Macofe"
                ]
        },
        "config-desc": "Installationsprogrammet för MediaWiki",
@@ -17,7 +18,7 @@
        "config-localsettings-upgrade": "A <code>LocalSettings.php</code>-fil har upptäckts.\nFör att uppgradera den här installationen, vänligen ange värdet för <code>$wgUpgradeKey</code> i rutan nedan.\nDu hittar den i <code>LocalSettings.php</code>.",
        "config-localsettings-cli-upgrade": "En <code>LocalSettings.php</code>-fil har upptäckts.\nFör att uppgradera denna installation, kör <code>update.php</code> istället",
        "config-localsettings-key": "Uppgraderingsnyckel:",
-       "config-localsettings-badkey": "Nyckeln du angav är inkorrekt.",
+       "config-localsettings-badkey": "Uppgraderingsnyckeln du angav är inkorrekt.",
        "config-upgrade-key-missing": "En existerande installation av MediaWiki har upptäckts.\nFör att uppgradera installationen, lägg till följande rad i slutet av din <code>LocalSettings.php</code>:\n\n$1",
        "config-localsettings-incomplete": "Den befintliga <code>LocalSettings.php</code> verkar vara ofullständig.\nVariabeln $1 är inte inställd.\nÄndra <code>LocalSettings.php</code> så att denna variabel är inställd och klicka på \"{{int:Config-continue}}\".",
        "config-localsettings-connection-error": "Ett fel uppstod vid anslutning till databasen med inställningarna angivna i <code>LocalSettings.php</code>. Vänligen åtgärda dessa inställningar och försök igen.\n\n$1",
        "config-instantcommons-help": "[//www.mediawiki.org/wiki/InstantCommons Instant Commons] är en funktion som gör det möjligt för wikis att använda bilder, ljud och andra media som finns på [//commons.wikimedia.org/ Wikimedia Commons]-webbplatsen.\nFör att göra detta, kräver MediaWiki tillgång till Internet.\n\nFör mer information om denna funktion, inklusive instruktioner om hur man ställer in den för andra wikis än Wikimedia Commons, se [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos manualen].",
        "config-cc-error": "Creative Commons-licens-väljaren gav inget resultat.\nAnge licensnamnet manuellt.",
        "config-cc-again": "Välj igen...",
-       "config-cc-not-chosen": "Välj vilken Creative Commons-licens du vill ha och klicka på \"gå vidare\".",
+       "config-cc-not-chosen": "Välj vilken Creative Commons-licens du vill ha och klicka på \"proceed\".",
        "config-advanced-settings": "Avancerad konfiguration",
        "config-cache-options": "Inställningar för cachelagring av objekt:",
        "config-cache-help": "Cachelagring av objekt används för att förbättra hastigheten på MediaWiki genom att cachelagra data som används ofta.\nMedelstora till stora webbplatser är starkt uppmuntrade att aktivera detta, och små webbplatser kommer även att se fördelar.",
index ba84435..9f3edef 100644 (file)
@@ -3,7 +3,8 @@
                "authors": [
                        "Veeven",
                        "Chaduvari",
-                       "Ravichandra"
+                       "Ravichandra",
+                       "Macofe"
                ]
        },
        "config-desc": "మీడియావికీ కొరకై స్థాపకి",
@@ -48,7 +49,6 @@
        "config-env-good": "పర్యావరణాన్ని పరీక్షించాం.\nఇక మీరు MediaWiki ని స్థాపించుకోవచ్చు.",
        "config-env-bad": "పర్యావరణాన్ని పరీక్షించాం.\nమీరు MediaWiki ని స్థాపించలేరు.",
        "config-env-php": "PHP $1 స్థాపించబడింది.",
-       "config-unicode-using-utf8": "యూనికోడు నార్మలైజేషన్ కోసం బ్రయాన్ విబర్ గారి utf8_normalize.so ను వాడుతున్నాం.",
        "config-unicode-using-intl": "యూనికోడు నార్మలైజేషన్ కోసం [http://pecl.php.net/intl intl PECL పొడిగింత] ను వాడుతున్నాం.",
        "config-outdated-sqlite": "<strong>హెచ్చరిక:</strong> మీ వద్ద SQLite $1 ఉంది. అదికావలసిన వెర్షను $2 కంటే దిగువది. SQLite అందుబాటులో ఉండదు.",
        "config-memory-raised": "PHP యొక్క <code>memory_limit</code> $1, దాన్ని $2 కి పెంచాం.",
@@ -71,8 +71,6 @@
        "config-db-install-account": "స్థాపనకి వాడుకరి ఖాతా",
        "config-db-username": "డేటాబేసు వాడుకరిపేరు:",
        "config-db-password": "డేటాబేసు సంకేతపదం:",
-       "config-db-password-empty": "కొత్త డేటాబేసు వాడుకరి $1 కి ఓ సంకేతపదం ఇవ్వండి. \nసంకేతపదాలేమీ లేకుండా వాడుకరులను సృష్టించేవీలున్నప్పటికీ, అది సురక్షితం కాదు.",
-       "config-db-username-empty": "\"{{int:config-db-username}}\" కి మీరు తప్పకుండా ఏదో ఒక విలువ ఇవ్వాలి.",
        "config-db-install-username": "స్థాపన దశలో డేటాబేసుకు కనెక్టయ్యేందుకు వాడే వాడుకరిపేరును ఇవ్వండి.\nఇది MediaWiki ఖాతా యొక్క వాడుకరిపేరు కాదు; మీ డేటాబేసు కోసం వాడుకరిపేరు.",
        "config-db-install-password": "స్థాపన దశలో డేటాబేసుకు కనెక్టయ్యేందుకు వాడే సంకేతపదాన్ని ఇవ్వండి.\nఇది MediaWiki ఖాతా యొక్క సంకేతపదం కాదు; మీ డేటాబేసు కోసం సంకేతపదం.",
        "config-db-install-help": "స్థాపన దశలో డేటాబేసుకు కనెక్టయ్యేందుకు వాడే వాడుకరిపేరు, సంకేతపదం ఇవ్వండి.",
        "config-logo": "లోగో URL:",
        "config-instantcommons": "తక్షణ కామన్స్ ను చేతనం చెయ్యి",
        "config-cc-again": "మళ్ళీ ఎంచుకోండి...",
-       "config-cc-not-chosen": "ఏ Creative Commons లైసెన్సు కావాలో ఎంచుకుని \"కొనసాగు\" ను నొక్కండి.",
+       "config-cc-not-chosen": "ఏ Creative Commons లైసెన్సు కావాలో ఎంచుకుని \"proceed\" ను నొక్కండి.",
        "config-advanced-settings": "ఉన్నత స్వరూపణం",
        "config-cache-options": "ఆబ్జక్ట్ క్యాషింగ్ అమరికలు:",
        "config-cache-help": "ఆబ్జక్ట్ క్యాషింగ్ అనేది తరచు వాడే డేటాను సిద్ధంగా ఉంచడం ద్వారా మీడియావికీ పనితీరును మెరుగుపరచడానికి ఉద్దేశించినది.\nమధ్యతరగతి నుంచి పెద్ద సైట్లలో దీనిని చేతనం చేయడాన్ని ప్రోత్సహిస్తున్నాం. అలాగే చిన్న సైట్లు కూడా దీన్నుంచి ప్రయోజనం పొందగలవు.",
index 4b83500..0ca1aae 100644 (file)
@@ -5,7 +5,8 @@
                        "Sky Harbor",
                        "아라",
                        "Amire80",
-                       "Jojit fb"
+                       "Jojit fb",
+                       "Macofe"
                ]
        },
        "config-desc": "Ang tagapagluklok para sa MediaWiki",
@@ -50,7 +51,6 @@
        "config-env-good": "Nasuri na ang kapaligiran.\nMailuluklok mo ang MediaWiki.",
        "config-env-bad": "Nasuri na ang kapaligiran.\nHindi mo mailuklok ang MediaWiki.",
        "config-env-php": "Naitalaga ang PHP na $1.",
-       "config-unicode-using-utf8": "Ginagamit ang utf8_normalize.so ni Brion Vibber para sa pagpapanormal ng Unikodigo.",
        "config-unicode-using-intl": "Ginagamit ang [http://pecl.php.net/intl intl dugtong na PECL] para sa pagsasanormal ng Unikodigo.",
        "config-unicode-pure-php-warning": "'''Babala''': Ang [http://pecl.php.net/intl dugtong ng internasyunal na PECL] ay hindi makukuha upang makapanghawak ng pagpapanormal ng Unikodigo, na babagsak na pabalik sa mabagal na pagsasakatuparan ng dalisay na PHP.\nKapag nagpapatakbo ka ng isang pook na mataas ang trapiko, dapat kang bumasa ng kaunti hinggil sa [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations pagpapanormal ng Unikodigo].",
        "config-unicode-update-warning": "'''Babala''': Ang nakaluklok na bersiyon ng pambalot ng pagpapanormal ng Unikodigo ay gumagamit ng isang mas matandang bersiyon ng aklatan ng [http://site.icu-project.org/ proyekto ng ICU].\nDapat kang [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations magtaas ng uri] kung may pag-aalala ka hinggil sa paggamit ng Unikodigo.",
@@ -96,7 +96,6 @@
        "config-db-install-account": "Account ng tagagamit para sa pagluluklok",
        "config-db-username": "Pangalang pangtagagamit ng kalipunan ng dato:",
        "config-db-password": "Password sa kalipunan ng dato:",
-       "config-db-password-empty": "Paki magpasok ng isang password para sa bagong tagagamit ng databas: $1.\nHabang maging maaari na makalikha ng mga tagagamit na walang mga passwrod, hindi ito ligtas.",
        "config-db-install-username": "Ipasok ang pangalan ng tagagamit na gagamitin upang kumabit sa database habang isinasagawa ang pag-install.\nHindi ito ang pangalan ng tagagamit ng account ng MediaWiki; ito ang pangalan ng tagagamit para sa iyong database.",
        "config-db-install-password": "Ipasok ang password na gagamitin upang maka-connect sa database habang isinasagawa ang pag-install.\nHindi ito ang password para sa account ng MediaWiki; ito ang password para sa iyong database.",
        "config-db-install-help": "Ipasok ang pangalan ng tagagamit at password na gagamitin upang umugnay sa databasehabang isinasagawa ang pag-install.",
        "config-instantcommons-help": "Ang [//www.mediawiki.org/wiki/InstantCommons Instant Commons] ay isang tampok na nagpapahintulot sa mga wiki upang gumamit ng mga imahe, mga tunog at iba pang mga midyang matatagpuan sa pook ng [//commons.wikimedia.org/ Wikimedia Commons].\nUpang magawa ito, nangangailangan ang MediaWiki ng pagka nakakapunta sa Internet.\n\nPara sa mas marami pang kabatiran hinggil sa tampok na ito, kabilang na ang mga tagubilin sa kung paano ito itakda para sa mga wiki na bukod pa kaysa sa Wikimedia Commons, sumangguni sa [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos gabay].",
        "config-cc-error": "Hindi nagbigay ng resulta ang pampili ng lisensiya ng Malikhaing Pangkaraniwan.\nIpasok na kinakamay ang pangalan ng lisensiya.",
        "config-cc-again": "Pumili uli...",
-       "config-cc-not-chosen": "Piliin kung anong lisensiya ng Malikhaing mga Pangkaraniwan ang nais mo at pindutin ang \"magpatuloy\".",
+       "config-cc-not-chosen": "Piliin kung anong lisensiya ng Malikhaing mga Pangkaraniwan ang nais mo at pindutin ang \"proceed\".",
        "config-advanced-settings": "Mas masulong na pagkakaayos",
        "config-cache-options": "Mga katakdaan para sa pagtatago ng bagay:",
        "config-cache-help": "Ang pagtatago ng bagay ay ginagamit upang mapainam ang tulin ng MediaWiki sa pamamagitan ng pagtatago ng madalas gamiting dato.\nAng mga pook na bahagya hanggang malalaki ang sukat ay labis na hinihikayat na paganahin ito, at ang mga pook na maliliit ay makakakita rin ng mga kapakinabangan.",
index 20c8c38..757688f 100644 (file)
@@ -15,7 +15,8 @@
                        "Stultiwikia",
                        "Meelo",
                        "HakanIST",
-                       "McAang"
+                       "McAang",
+                       "Elftrkn"
                ]
        },
        "config-desc": "MediaWiki yükleyicisi",
@@ -24,7 +25,7 @@
        "config-localsettings-upgrade": "Bir <code>LocalSettings.php</code> dosyası algılandı.\nBu kurulumu güncelleştirmek için, lütfen <code>$wgUpgradeKey</code> değerini aşağıdaki kutuya girin.\nBunu <code>LocalSettings.php</code> dosyasında bulabilirsiniz.",
        "config-localsettings-cli-upgrade": "Bir <code>LocalSettings.php</code> dosyası algılandı.\nBu kurulumu güncelleştirmek için, lütfen <code>update.php</code> dosyasını çalıştırın.",
        "config-localsettings-key": "Yükseltme anahtarı:",
-       "config-localsettings-badkey": "Sağladığınız anahtar doğru değil.",
+       "config-localsettings-badkey": "Girdiğiniz güncelleme anahtarı doğru değildir.",
        "config-upgrade-key-missing": "Mevcut bir MediaWiki kurulumu algılandı.\nBu kurulumu güncelleştirmek için, lütfen aşağıdaki satırı <code>LocalSettings.php</code> dosyanızın en altına koyun:\n\n$1",
        "config-localsettings-incomplete": "Mevcut <code>LocalSettings.php</code> eksik gibi görünüyor.\n $1  değişkeni ayarlanmamış.\nLütfen <code>LocalSettings.php</code> dosyasını değiştirin bu değişkenleri kuracak, ve tıklayın  \"{{int:Config-cuntinue}}\".",
        "config-localsettings-connection-error": "<code>LocalSettings.php</code> içinde belirtilen ayarları kullanarak veritabanına bağlanırken bir hatayla karşılaşıldı. Lütfen bu ayarları düzeltin ve yeniden deneyin.\n\n$1",
index 65ffc10..899542c 100644 (file)
@@ -11,7 +11,8 @@
                        "Тест",
                        "아라",
                        "Amire80",
-                       "Piramidion"
+                       "Piramidion",
+                       "Macofe"
                ]
        },
        "config-desc": "Інсталятор MediaWiki",
        "config-instantcommons-help": "[//www.mediawiki.org/wiki/InstantCommons Instant Commons] це функція, що дозволяє вікі використовувати зображення, звуки та інші медіа, розміщені на [//commons.wikimedia.org/ Вікісховищі].\nДля цього MediaWiki необхідний доступ до інтернету.\n\nДодаткову інформацію стосовно цієї функції, включаючи інструкції, як її увімкнути у вікі, відмінних від Вікісховища, дивіться у [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos посібнику].",
        "config-cc-error": "Механізм вибору ліцензії Creative Commons не дав результатів.\nВведіть назву ліцензії вручну.",
        "config-cc-again": "Виберіть знову ...",
-       "config-cc-not-chosen": "Оберіть, яку ліцензію Creative Commons Ви хочете використовувати, і натисніть \"продовжити\".",
+       "config-cc-not-chosen": "Оберіть, яку ліцензію Creative Commons Ви хочете використовувати, і натисніть \"proceed\".",
        "config-advanced-settings": "Розширені налаштування",
        "config-cache-options": "Налаштування кешування об'єктів:",
        "config-cache-help": "Кешування об'єктів використовується для покращення швидкодії MediaWiki методом кешування часто використовуваних даних.\nЗаохочується увімкнення цієї можливості для середніх і великих сайтів, малі сайти також можуть відчути її перевагу.",
index 08c2ae9..57c4790 100644 (file)
@@ -5,7 +5,8 @@
                        "Minh Nguyen",
                        "Withoutaname",
                        "Dinhxuanduyet",
-                       "Nguyên Lê"
+                       "Nguyên Lê",
+                       "Macofe"
                ]
        },
        "config-desc": "Trình cài đặt MediaWiki",
        "config-instantcommons-help": "[//www.mediawiki.org/wiki/InstantCommons Instant Commons] là một tính năng cho phép wiki sử dụng hình ảnh, âm thanh và tập tin đa phương tiện khác được tìm thấy trong trang web [//commons.wikimedia.org/ Wikimedia Commons].\nĐể làm được điều này, MediaWiki yêu cầu phải truy cập vào Internet.\n\nĐể biết thêm thông tin về tính năng này, trong đó có hướng dẫn về cách thiết lập cho các wiki khác với Wikimedia Commons, tham khảo thêm tại [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos tài liệu hướng dẫn].",
        "config-cc-error": "Người chọn giấy phép Creative Commons đã không đưa ra kết quả nào.\nNhập tên giấy phép bằng tay.",
        "config-cc-again": "Chọn một lần nữa…",
-       "config-cc-not-chosen": "Chọn một giấy phép Creative Commons và bấm “Tiếp tục”.",
+       "config-cc-not-chosen": "Chọn một giấy phép Creative Commons và bấm “proceed”.",
        "config-advanced-settings": "Thiết lập nâng cao",
        "config-cache-options": "Thiết lập bộ nhớ đệm đối tượng:",
        "config-cache-help": "Lưu vào bộ nhớ đệm đối tượng được sử dụng để cải thiện tốc độ của MediaWiki bằng cách lưu vào bộ nhớ đệm những dữ liệu thường xuyên sử dụng.\nCác trang web từ trung bình cho đến các trang web lớn rất được khuyến khích kích hoạt tính năng này, và các trang web nhỏ cũng sẽ nhìn thấy lợi ích tương tự.",
index d64e7f5..b57bc78 100644 (file)
@@ -31,7 +31,7 @@
        "config-localsettings-upgrade": "已检测到<code>LocalSettings.php</code>文件。要升级该配置,请在下面的框中输入<code>$wgUpgradeKey</code>的值。您可以在<code>LocalSettings.php</code>中找到它。",
        "config-localsettings-cli-upgrade": "已检测到<code>LocalSettings.php</code>文件。要升级该配置,请直接运行<code>update.php</code>。",
        "config-localsettings-key": "升级密钥:",
-       "config-localsettings-badkey": "您提供的密钥不正确。",
+       "config-localsettings-badkey": "æ\82¨æ\8f\90ä¾\9bç\9a\84å\8d\87级å¯\86é\92¥ä¸\8d正确ã\80\82",
        "config-upgrade-key-missing": "检测到MediaWiki的配置已经存在。若要升级该配置,请将下面一行文本添加到<code>LocalSettings.php</code>的底部:\n\n$1",
        "config-localsettings-incomplete": "当前的<code>LocalSettings.php</code>可能并不完整,因为变量$1没有设置。请在<code>LocalSettings.php</code>设置该变量,并单击“{{int:Config-continue}}”。",
        "config-localsettings-connection-error": "在使用<code>LocalSettings.php</code>中指定的设置连接数据库时发生错误。请修复相应设置并重试。\n\n$1",
        "config-unicode-pure-php-warning": "<strong>警告:</strong>因为尚未安装 [http://pecl.php.net/intl intl PECL 扩展]以处理 Unicode 正常化,故只能退而采用运行较慢的纯 PHP 实现的方法。\n如果您运行着一个高流量的网站,请参阅 [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations Unicode标准化]一文。",
        "config-unicode-update-warning": "'''警告''':Unicode正常化封装器的已安装版本使用了旧版本的[http://site.icu-project.org/ ICU项目]库。如果您需要使用Unicode,请将其[//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations 升级]。",
        "config-no-db": "无法找到合适的数据库驱动!您需要为PHP安装数据库驱动。目前支持以下数据库{{PLURAL:$2|类型}}:$1。\n\n如果您自己编译了PHP,请通过启用数据库客户端重新配置它,例如使用 <code>./configure --with-mysqli</code>。如果您从 Debian 或 Ubuntu 安装包安装了PHP,那么您也需要安装,例如 <code>php5-mysql</code> 安装包。",
-       "config-outdated-sqlite": "'''警告''':您已安装SQLite $1,但是它的版本低于最低要求版本$2。因此您无法选择SQLite。",
-       "config-no-fts3": "'''警告''':已编译的SQLite不包含[//sqlite.org/fts3.html FTS3模块],后台搜索功能将不可用。",
+       "config-outdated-sqlite": "<strong>警告:</strong>您已安装SQLite $1,但是它的版本低于最低要求版本$2。因此您无法选择SQLite。",
+       "config-no-fts3": "<strong>警告:</strong>已编译的SQLite不包含[//sqlite.org/fts3.html FTS3模块],后台搜索功能将不可用。",
        "config-register-globals-error": "<strong>错误:PHP<code>[http://php.net/register_globals register_globals]</code>选项被启用。必须禁用它才能继续安装。</strong>关于如何禁用,参见[https://www.mediawiki.org/wiki/register_globals mediawiki.org此页]。",
        "config-magic-quotes-gpc": "<strong>致命错误:[http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-gpc magic_quotes_gpc]已启用!</strong>此选项会无法挽回的破坏输入数据。除非此选项被禁用否则您不能安装或使用MediaWiki。",
-       "config-magic-quotes-runtime": "'''毁灭性错误:[http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime]已启用!'''\n此选项会无法预测地破坏输入的数据,请将其禁用,否则您将不能安装或使用MediaWiki。",
-       "config-magic-quotes-sybase": "'''毁灭性错误:[http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_sybase]已启用!'''\n此选项会无法预测地破坏输入的数据,请将其禁用,否则您将不能安装或使用MediaWiki。",
-       "config-mbstring": "'''毁灭性错误:[http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload]已启用!'''\n此选项会导致错误并不可预测地破坏数据,请将其禁用,否则您将不能安装或使用MediaWiki。",
-       "config-safe-mode": "'''警告:'''PHP的[http://www.php.net/features.safe-mode 安全模式]已启用。它可能会导致一些问题,尤其在对文件上传和数学公式<code>math</code>的支持方面。",
+       "config-magic-quotes-runtime": "<strong>致命错误:[http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime]已启用!</strong>\n此选项会无法预测地破坏输入的数据,请将其禁用,否则您将不能安装或使用MediaWiki。",
+       "config-magic-quotes-sybase": "<strong>致命错误:[http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase]已启用!</strong>\n此选项会无法预测地破坏输入的数据,请将其禁用,否则您将不能安装或使用MediaWiki。",
+       "config-mbstring": "<strong>致命错误:[http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload]已启用!</strong>\n此选项会导致错误并不可预测地破坏数据,请将其禁用,否则您将不能安装或使用MediaWiki。",
+       "config-safe-mode": "<strong>警告:</strong>PHP的[http://www.php.net/features.safe-mode 安全模式]已启用。\n它可能会导致一些问题,尤其在对文件上传和数学公式<code>math</code>的支持方面。",
        "config-xml-bad": "缺少PHP的XML模块。MediaWiki需要使用该模块提供的函数,在当前配置下将无法工作。您可能需要安装php-xml RPM包。",
-       "config-pcre-old": "'' 致命错误: ''需要PCRE $1 或更高版本。\n您的 PHP 二进制文件与 PCRE $2 链接。\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE 详细信息]。",
-       "config-pcre-no-utf8": "'''毁灭性错误''':PHP的PCRE模块在编译时可能没有包含PCRE_UTF8支持。MediaWiki需要UTF-8支持才能正常工作。",
+       "config-pcre-old": "<strong>致命错误:</strong>需要PCRE $1 或更高版本。\n您的 PHP 二进制文件与 PCRE $2 链接。\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE 详细信息]。",
+       "config-pcre-no-utf8": "<strong>致命错误:</strong>PHP的PCRE模块在编译时可能没有包含PCRE_UTF8支持。\nMediaWiki需要UTF-8支持才能正常工作。",
        "config-memory-raised": "PHP的内存使用上限<code>memory_limit</code>为$1,自动提升到$2。",
-       "config-memory-bad": "'''警告:'''PHP的内存使用上限<code>memory_limit</code>为$1。该设定可能过低,并导致安装失败!",
-       "config-ctype": "'''毁灭性错误''':PHP必须有[http://www.php.net/manual/en/ctype.installation.php Ctype 扩展]来支持编译。",
+       "config-memory-bad": "<strong>警告:</strong>PHP的内存使用上限<code>memory_limit</code>为$1。\n该设定可能过低,并导致安装失败!",
+       "config-ctype": "<strong>致命错误:</strong>PHP必须有[http://www.php.net/manual/en/ctype.installation.php Ctype 扩展]来支持编译。",
        "config-iconv": "<strong>致命错误:</strong>PHP必须编译支持[http://www.php.net/manual/en/iconv.installation.php iconv拓展]。",
-       "config-json": "'''致命问题:''' PHP编译没有附带JSON支持。\n在安装MediaWiki前,你必须安装PHP JSON扩展或者[http://pecl.php.net/package/jsonc PECL jsonc]扩展。\n* PHP扩展已包含在Red Hat Enterprise Linux (CentOS) 5和6中,但必须在<code>/etc/php.ini</code>或<code>/etc/php.d/json.ini</code>中启用。\n* 部分在2013年5月后发行的Linux发行版省略了PHP扩展,而将PECL扩展打包成了<code>php5-json</code>或<code>php-pecl-jsonc</code>。",
+       "config-json": "<strong>致命错误:</strong>PHP编译没有附带JSON支持。\n在安装MediaWiki前,你必须安装PHP JSON扩展或者[http://pecl.php.net/package/jsonc PECL jsonc]扩展。\n* PHP扩展已包含在Red Hat Enterprise Linux (CentOS) 5和6中,但必须在<code>/etc/php.ini</code>或<code>/etc/php.d/json.ini</code>中启用。\n* 部分在2013年5月后发行的Linux发行版省略了PHP扩展,而将PECL扩展打包成了<code>php5-json</code>或<code>php-pecl-jsonc</code>。",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache]已安装",
        "config-apc": "[http://www.php.net/apc APC]已安装",
        "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache]已安装",
-       "config-no-cache": "'''警告:'''找不到[http://www.php.net/apc APC]、[http://xcache.lighttpd.net/ XCache]或[http://www.iis.net/download/WinCacheForPhp WinCache],无法启用对象缓存。\nObject caching is not enabled.",
+       "config-no-cache": "<strong>警告:</strong>找不到[http://www.php.net/apc APC]、[http://xcache.lighttpd.net/ XCache]或[http://www.iis.net/download/WinCacheForPhp WinCache]。\n对象缓冲未启用。",
        "config-no-cache-apcu": "<strong>警告:</strong>找不到[http://www.php.net/apcu APCu]、[http://xcache.lighttpd.net/ XCache]或[http://www.iis.net/download/WinCacheForPhp WinCache]。\n对象缓存未启用。",
-       "config-mod-security": "'''警告''':您的服务器已启动[http://modsecurity.org/ mod_security]。若其配置错误, 会导致MediaWiki和其他软件的错误并允许用户任意发布内容。如果您遇到任何错误,请查阅[http://modsecurity.org/documentation/ mod_security文档]或联系您的客服。",
+       "config-mod-security": "<strong>警告:</strong>您的web服务器已启用[http://modsecurity.org/ mod_security]/mod_security2。它的很多常见配置可能导致MediaWiki及其他软件允许用户发布任意内容的问题。如果可能,这应当被禁用。否则,当您遭遇随机错误时,请参考[http://modsecurity.org/documentation/ mod_security 文档]或联络您的主机支持。",
        "config-diff3-bad": "找不到GNU diff3。",
        "config-git": "发现Git版本控制软件:<code>$1</code>",
        "config-git-bad": "Git版本控制软件未找到。",
        "config-imagemagick": "已找到ImageMagick:<code>$1</code>。如果你启用了上传功能,缩略图功能也将被启用。",
        "config-gd": "已找到内建的GD图形库。如果你启用了上传功能,缩略图功能也将被启用。",
        "config-no-scaling": "找不到GD库或ImageMagick。缩略图功能将不可用。",
-       "config-no-uri": "'''错误:'''无法确定当前的URI。安装已中断。",
+       "config-no-uri": "<strong>错误:</strong>无法确定当前的URI。\n安装已中断。",
        "config-no-cli-uri": "<strong>警告:</strong>未指定<code>--scriptpath</code>参数,使用默认值:<code>$1</code>。",
        "config-using-server": "使用服务器名“<nowiki>$1</nowiki>”。",
        "config-using-uri": "使用服务器URL“<nowiki>$1$2</nowiki>”。",
-       "config-uploads-not-safe": "'''警告:'''您的默认上传目录<code>$1</code>存在允许执行任意脚本的漏洞。尽管MediaWiki会对所有已上传的文件进行安全检查,但我们仍然强烈建议您在启用上传功能前[//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security#Upload_security 关闭该安全漏洞]。",
-       "config-no-cli-uploads-check": "'''警告''':在CLI安装过程中,没有对您的默认上传目录(<code>$1</code>)进行执行任意脚本的漏洞检查。",
+       "config-uploads-not-safe": "<strong>警告:</strong>您的默认上传目录<code>$1</code>存在允许执行任意脚本的漏洞。\n尽管MediaWiki会对所有已上传的文件进行安全检查,但我们仍然强烈建议您在启用上传功能前[//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security#Upload_security 关闭该安全漏洞]。",
+       "config-no-cli-uploads-check": "<strong>警告:</strong>在CLI安装过程中,没有对您的默认上传目录(<code>$1</code>)进行执行任意脚本的漏洞检查。",
        "config-brokenlibxml": "您的系统安装的PHP和libxml2版本组合存在故障,并可能在MediaWiki和其他web应用程序中造成隐藏的数据损坏。请将libxml2升级到2.7.3或以上([https://bugs.php.net/bug.php?id=45996 PHP的故障报告])。安装已中断。",
        "config-suhosin-max-value-length": "Suhosin已经安装并将GET请求的参数长度限制在$1字节。MediaWiki的ResourceLoader部件可以在此限制下正常工作,但其性能会被降低。如果可能,请在<code>php.ini</code>中将<code>suhosin.get.max_value_length</code>设为1024或更高值,并在LocalSettings.php中将<code>$wgResourceLoaderMaxQueryLength</code>设为同一值。",
        "config-db-type": "数据库类型:",
        "config-charset-mysql5-binary": "MySQL 4.1/5.0 二进制",
        "config-charset-mysql5": "MySQL 4.1/5.0 UTF-8",
        "config-charset-mysql4": "MySQL 4.0 UTF-8(向后兼容)",
-       "config-charset-help": "'''警告:'''如果您在MySQL 4.1+中使用'''向后兼容的UTF-8'''字符集,并在之后使用<code>mysqldump</code>备份了数据库,则可能损坏所有的非ASCII字符,从而不可逆地破坏您的备份!\n\n在'''二进制模式'''下,MediaWiki会将UTF-8编码的文本存于数据库的二进制字段中。相对于MySQL的UTF-8模式,这种方法效率更高,并允许您使用全范围的Unicode字符。\n\n在'''UTF-8模式'''下,MySQL将知道您数据使用的字符集,并能适当地提供和转换内容。但这样做您将无法在数据库中存储[//zh.wikipedia.org/wiki/基本多文种平面 基本多文种平面]以外的字符。",
+       "config-charset-help": "<strong>警告:</strong>如果您在MySQL 4.1+中使用<strong>向后兼容的UTF-8</strong>字符集,并在之后使用<code>mysqldump</code>备份了数据库,则可能损坏所有的非ASCII字符,从而不可逆地破坏您的备份!\n\n在<strong>二进制模式</strong>下,MediaWiki会将UTF-8编码的文本存于数据库的二进制字段中。相对于MySQL的UTF-8模式,这种方法效率更高,并允许您使用全范围的Unicode字符。\n\n在<strong>UTF-8模式</strong>下,MySQL将知道您数据使用的字符集,并能适当地提供和转换内容。但这样做您将无法在数据库中存储[//zh.wikipedia.org/wiki/基本多文种平面 基本多文种平面]以外的字符。",
        "config-mysql-old": "需要MySQL $1或更新的版本,您的版本为$2。",
        "config-db-port": "数据库端口:",
        "config-db-schema": "MediaWiki的数据库模式",
        "config-db-schema-help": "此数据库模式通常是正确的,请在有明确需求时才改动之。",
-       "config-pg-test-error": "无法连接到数据库'''$1''':$2",
+       "config-pg-test-error": "无法连接到数据库<strong>$1</strong>:$2",
        "config-sqlite-dir": "SQLite数据目录:",
-       "config-sqlite-dir-help": "SQLite会将所有的数据存储于单一文件中。\n\n您所提供的目录必须在安装过程中对网页服务器可写。\n\n该目录'''不应'''允许通过web访问,因此我们不会将数据文件和PHP文件放在一起。\n\n安装程序在创建数据文件时,亦会在相同目录下创建<code>.htaccess</code>以控制权限。假若此等控制失效,则可能会将您的数据文件暴露于公共空间,让他人可以获取用户数据(电子邮件地址、杂凑后的密码)、被删除的版本以及其他在wiki上被限制访问的数据。\n\n请考虑将数据库统一放置在某处,如<code>/var/lib/mediawiki/yourwiki</code>下。",
+       "config-sqlite-dir-help": "SQLite会将所有的数据存储于单一文件中。\n\n您所提供的目录必须在安装过程中对网页服务器可写。\n\n该目录<strong>不应</strong>允许通过web访问,因此我们不会将数据文件和PHP文件放在一起。\n\n安装程序在创建数据文件时,亦会在相同目录下创建<code>.htaccess</code>以控制权限。假若此等控制失效,则可能会将您的数据文件暴露于公共空间,让他人可以获取用户数据(电子邮件地址、杂凑后的密码)、被删除的版本以及其他在wiki上被限制访问的数据。\n\n请考虑将数据库统一放置在某处,如<code>/var/lib/mediawiki/yourwiki</code>下。",
        "config-oracle-def-ts": "默认表空间:",
        "config-oracle-temp-ts": "临时表空间:",
        "config-type-mysql": "MySQL(或兼容程序)",
        "config-sqlite-readonly": "文件<code>$1</code>不可写。",
        "config-sqlite-cant-create-db": "无法创建数据文件<code>$1</code>。",
        "config-sqlite-fts3-downgrade": "PHP缺少FTS3支持,正在降级数据表",
-       "config-can-upgrade": "在数据库中发现了MediaWiki的数据表。要将它们升级至MediaWiki $1,请点击'''继续'''。",
-       "config-upgrade-done": "升级完成。\n\n现在您可以[$1 开始使用您的wiki]了。\n\n如果您需要重新生成<code>LocalSettings.php</code>文件,请点击下面的按钮。除非您的wiki出现了问题,我们'''不推荐'''您执行此操作。",
+       "config-can-upgrade": "在数据库中发现了MediaWiki的数据表。要将它们升级至MediaWiki $1,请点击<strong>继续</strong>。",
+       "config-upgrade-done": "升级完成。\n\n现在您可以[$1 开始使用您的wiki]了。\n\n如果您需要重新生成<code>LocalSettings.php</code>文件,请点击下面的按钮。除非您的wiki出现了问题,我们<strong>不推荐</strong>您执行此操作。",
        "config-upgrade-done-no-regenerate": "升级完成。\n\n现在您可以[$1 开始使用您的wiki]了。",
        "config-regenerate": "重新生成LocalSettings.php →",
        "config-show-table-status": "<code>SHOW TABLE STATUS</code>语句执行失败!",
-       "config-unknown-collation": "'''警告:'''数据库使用了无法识别的整理。",
+       "config-unknown-collation": "<strong>警告:</strong>数据库使用了无法识别的整理。",
        "config-db-web-account": "供网页访问使用的数据库帐号",
        "config-db-web-help": "请指定在wiki执行普通操作时,网页服务器用于连接数据库服务器的用户名和密码。",
        "config-db-web-account-same": "使用和安装程序相同的帐号",
        "config-mysql-engine": "存储引擎:",
        "config-mysql-innodb": "InnoDB",
        "config-mysql-myisam": "MyISAM",
-       "config-mysql-myisam-dep": "'''警告''':您选择了MyISAM作为MySQL的存储引擎,MediaWiki并不推荐您这么做,因为:\n* 它仅能通过表锁定来勉强支持并发\n* 与其他引擎相比,它更容易被损坏\n* MediaWiki代码库并不总会去处理MyISAM\n\n如果您的MySQL程序支持InnoDB,我们高度推荐您使用该引擎替代MyISAM。\n如果您的MySQL程序不支持InnoDB,请考虑升级。",
+       "config-mysql-myisam-dep": "<strong>警告:</strong>您选择了MyISAM作为MySQL的存储引擎,MediaWiki并不推荐您这么做,因为:\n* 它仅能通过表锁定来勉强支持并发\n* 与其他引擎相比,它更容易被损坏\n* MediaWiki代码库并不总会去处理MyISAM\n\n如果您的MySQL程序支持InnoDB,我们高度推荐您使用该引擎替代MyISAM。\n如果您的MySQL程序不支持InnoDB,请考虑升级。",
        "config-mysql-only-myisam-dep": "<strong>警告:</strong>MyISAM是MySQL在此机器上唯一可用的存储引擎,但它不适合用于MediaWiki,因为:\n*因为表级锁定,它几乎不支持并发。\n*它相比其他引擎更容易损坏。\n*MediaWiki代码不能总是按照预期操作MyISAM。\n\n你的MySQL不支持InnoDB,是时候升级了。",
-       "config-mysql-engine-help": "'''InnoDB'''通常是最佳选项,因为它对并发操作有着良好的支持。\n\n'''MyISAM'''在单用户或只读环境下可能会有更快的性能表现。但MyISAM数据库出错的概率一般要大于InnoDB数据库。",
+       "config-mysql-engine-help": "<strong>InnoDB</strong>通常是最佳选项,因为它对并发操作有着良好的支持。\n\n<strong>MyISAM</strong>在单用户或只读环境下可能会有更快的性能表现。但MyISAM数据库出错的概率一般要大于InnoDB数据库。",
        "config-mysql-charset": "数据库字符集:",
        "config-mysql-binary": "二进制",
        "config-mysql-utf8": "UTF-8",
-       "config-mysql-charset-help": "在'''二进制模式'''下,MediaWiki会将UTF-8编码的文本存于数据库的二进制字段中。相对于MySQL的UTF-8模式,这种方法效率更高,并允许您使用全范围的Unicode字符。\n\n在'''UTF-8模式'''下,MySQL将知道您数据使用的字符集,并能适当地提供和转换内容。但这样做您将无法在数据库中存储[//zh.wikipedia.org/wiki/基本多文种平面 基本多文种平面]以外的字符。",
+       "config-mysql-charset-help": "在<strong>二进制模式</strong>下,MediaWiki会将UTF-8编码的文本存于数据库的二进制字段中。相对于MySQL的UTF-8模式,这种方法效率更高,并允许您使用全范围的Unicode字符。\n\n在<strong>UTF-8模式</strong>下,MySQL将知道您数据使用的字符集,并能适当地提供和转换内容。但这样做您将无法在数据库中存储[//zh.wikipedia.org/wiki/基本多文种平面 基本多文种平面]以外的字符。",
        "config-mssql-auth": "身份验证类型:",
        "config-mssql-install-auth": "选择安装过程中链接数据库时将采用的身份验证方式。\n如果您选择“{{int:config-mssql-windowsauth}}”,将使用运行服务器的用户的身份凭据。",
        "config-mssql-web-auth": "选择Web服务器在通常wiki操作期间用来连接数据库服务器的身份验证方式。\n如果您选择“{{int:config-mssql-windowsauth}}”,将使用运行Web服务器的用户的凭据。",
index 5ac6f1e..1f319d3 100644 (file)
@@ -13,7 +13,8 @@
                        "Cwlin0416",
                        "S8321414",
                        "LNDDYL",
-                       "NigelSoft"
+                       "NigelSoft",
+                       "Macofe"
                ]
        },
        "config-desc": "MediaWiki 安裝程式",
        "config-instantcommons-help": "[//www.mediawiki.org/wiki/InstantCommons 即時共享資源] 是允許 Wiki 使用來自 [//commons.wikimedia.org/ Wikimedia Commons] 網站上的圖片、聲音以及其他媒體的一項功能。\n若要開啟此功能,您的 MediaWiki 必須能夠連線網際網路。\n更多有關此功能的訊息,包含如何存除了 Wikimedia Commons 之外其他網站的說明,請參考 \n[//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos 操作手冊]。",
        "config-cc-error": "查無該創作共用授權條款,\n請手動輸入您的授權條款名稱。",
        "config-cc-again": "請重新選取...",
-       "config-cc-not-chosen": "請選擇您要使用的創作共享授權條款,然後點選 \"繼續\"。",
+       "config-cc-not-chosen": "請選擇您要使用的創作共享授權條款,然後點選 \"proceed\"。",
        "config-advanced-settings": "進階設定",
        "config-cache-options": "物件快取設定:",
        "config-cache-help": "物件快取是用來增進 MediaWiki 速度的一項功能,透過快取經常使用的資料。\n中型到大型的網站我們會建議開啟這個選項,對小型的網站也有一定程度的效果。",
        "config-install-subscribe-notpossible": "未安裝 cURL,因此無法使用 <code>allow_url_fopen</code> 設定項目。",
        "config-install-mainpage": "正在使用預設的內容建立首頁",
        "config-install-extension-tables": "正在建立已啟動的擴充套件的資料表",
-       "config-install-mainpage-failed": "無法插入首頁$1",
+       "config-install-mainpage-failed": "無法插入首頁$1",
        "config-install-done": "<strong>恭喜!</strong>\n您已經成功地安裝了 MediaWiki。\n\n安裝程式已自動產生 <code>LocalSettings.php</code> 檔案,\n該檔案中包含了您所有的設定項目。\n\n您需要下載該檔案,並將其放置在您的 Wiki 的根目錄 (index.php 所在的目錄) 中,下載稍後會自動開始。\n\n若瀏覽器沒有提示您下載,或者您取消了下載,您可以點選下方連結重新下載:\n\n$3\n\n<strong>注意:</strong>若您現在未下載檔案,稍後結束安裝程式之後將無法下載設定檔。\n\n當您完成本步驟後,您可以 <strong>[$2 進入您的 Wiki]</strong>。",
        "config-download-localsettings": "下載 <code>LocalSettings.php</code>",
        "config-help": "說明",
index 4ab9f5a..3919318 100644 (file)
@@ -208,7 +208,12 @@ class JobRunner implements LoggerAwareInterface {
                                // other wikis in the farm (on different masters) get a chance.
                                $timePassed = microtime( true ) - $lastCheckTime;
                                if ( $timePassed >= self::LAG_CHECK_PERIOD || $timePassed < 0 ) {
-                                       if ( !wfWaitForSlaves( $lastCheckTime, false, '*', self::MAX_ALLOWED_LAG ) ) {
+                                       try {
+                                               wfGetLBFactory()->waitForReplication( array(
+                                                       'ifWritesSince' => $lastCheckTime,
+                                                       'timeout' => self::MAX_ALLOWED_LAG
+                                               ) );
+                                       } catch ( DBReplicationWaitError $e ) {
                                                $response['reached'] = 'slave-lag-limit';
                                                break;
                                        }
index f146e6e..13e36d8 100644 (file)
@@ -41,7 +41,8 @@ class ActivityUpdateJob extends Job {
                if ( $this->params['type'] === 'updateWatchlistNotification' ) {
                        $this->updateWatchlistNotification();
                } else {
-                       throw new Exception( "Invalid 'type' parameter '{$this->params['type']}'." );
+                       throw new InvalidArgumentException(
+                               "Invalid 'type' parameter '{$this->params['type']}'." );
                }
 
                return true;
index c9e20a9..5dc2acb 100644 (file)
@@ -49,21 +49,22 @@ class CategoryMembershipChangeJob extends Job {
                }
 
                $dbw = wfGetDB( DB_MASTER );
-
                // Use a named lock so that jobs for this page see each others' changes
-               $fname = __METHOD__;
                $lockKey = "CategoryMembershipUpdates:{$page->getId()}";
-               if ( !$dbw->lock( $lockKey, $fname, 10 ) ) {
+               $scopedLock = $dbw->getScopedLockAndFlush( $lockKey, __METHOD__, 10 );
+               if ( !$scopedLock ) {
                        $this->setLastError( "Could not acquire lock '$lockKey'" );
                        return false;
                }
 
-               $unlocker = new ScopedCallback( function () use ( $dbw, $lockKey, $fname ) {
-                       $dbw->unlock( $lockKey, $fname );
-               } );
-
-               // Sanity: clear any DB transaction snapshot
-               $dbw->commit( __METHOD__, 'flush' );
+               $dbr = wfGetDB( DB_SLAVE, array( 'recentchanges' ) );
+               // Wait till the slave is caught up so that jobs for this page see each others' changes
+               if ( !wfGetLB()->safeWaitForMasterPos( $dbr ) ) {
+                       $this->setLastError( "Timed out while waiting for slave to catch up" );
+                       return false;
+               }
+               // Clear any stale REPEATABLE-READ snapshot
+               $dbr->commit( __METHOD__, 'flush' );
 
                $cutoffUnix = wfTimestamp( TS_UNIX, $this->params['revTimestamp'] );
                // Using ENQUEUE_FUDGE_SEC handles jobs inserted out of revision order due to the delay
@@ -71,12 +72,12 @@ class CategoryMembershipChangeJob extends Job {
                $cutoffUnix -= self::ENQUEUE_FUDGE_SEC;
 
                // Get the newest revision that has a SRC_CATEGORIZE row...
-               $row = $dbw->selectRow(
+               $row = $dbr->selectRow(
                        array( 'revision', 'recentchanges' ),
                        array( 'rev_timestamp', 'rev_id' ),
                        array(
                                'rev_page' => $page->getId(),
-                               'rev_timestamp >= ' . $dbw->addQuotes( $dbw->timestamp( $cutoffUnix ) )
+                               'rev_timestamp >= ' . $dbr->addQuotes( $dbr->timestamp( $cutoffUnix ) )
                        ),
                        __METHOD__,
                        array( 'ORDER BY' => 'rev_timestamp DESC, rev_id DESC' ),
@@ -103,8 +104,8 @@ class CategoryMembershipChangeJob extends Job {
 
                // Find revisions to this page made around and after this revision which lack category
                // notifications in recent changes. This lets jobs pick up were the last one left off.
-               $encCutoff = $dbw->addQuotes( $dbw->timestamp( $cutoffUnix ) );
-               $res = $dbw->select(
+               $encCutoff = $dbr->addQuotes( $dbr->timestamp( $cutoffUnix ) );
+               $res = $dbr->select(
                        'revision',
                        Revision::selectFields(),
                        array(
@@ -121,8 +122,6 @@ class CategoryMembershipChangeJob extends Job {
                        $this->notifyUpdatesForRevision( $page, Revision::newFromRow( $row ) );
                }
 
-               ScopedCallback::consume( $unlocker );
-
                return true;
        }
 
@@ -169,7 +168,7 @@ class CategoryMembershipChangeJob extends Job {
                        $catMembChange->triggerCategoryAddedNotification( $categoryTitle );
                        if ( $insertCount++ && ( $insertCount % $batchSize ) == 0 ) {
                                $dbw->commit( __METHOD__, 'flush' );
-                               wfWaitForSlaves();
+                               wfGetLBFactory()->waitForReplication();
                        }
                }
 
@@ -178,7 +177,7 @@ class CategoryMembershipChangeJob extends Job {
                        $catMembChange->triggerCategoryRemovedNotification( $categoryTitle );
                        if ( $insertCount++ && ( $insertCount++ % $batchSize ) == 0 ) {
                                $dbw->commit( __METHOD__, 'flush' );
-                               wfWaitForSlaves();
+                               wfGetLBFactory()->waitForReplication();
                        }
                }
        }
index df0a66e..0d48cb3 100644 (file)
@@ -120,7 +120,7 @@ class HTMLCacheUpdateJob extends Job {
                // Check $wgUpdateRowsPerQuery for sanity; batch jobs are sized by that already.
                foreach ( array_chunk( $pageIds, $wgUpdateRowsPerQuery ) as $batch ) {
                        $dbw->commit( __METHOD__, 'flush' );
-                       wfWaitForSlaves();
+                       wfGetLBFactory()->waitForReplication();
 
                        $dbw->update( 'page',
                                array( 'page_touched' => $dbw->timestamp( $touchTimestamp ) ),
index d6fa26b..0685299 100644 (file)
@@ -98,7 +98,9 @@ class RecentChangesUpdateJob extends Job {
 
                        if ( count( $rcIds ) === $batchSize ) {
                                // There might be more, so try waiting for slaves
-                               if ( !wfWaitForSlaves( null, false, false, /* $timeout = */ 3 ) ) {
+                               try {
+                                       wfGetLBFactory()->waitForReplication( array( 'timeout' => 3 ) );
+                               } catch ( DBReplicationWaitError $e ) {
                                        // Another job will continue anyway
                                        break;
                                }
@@ -125,7 +127,7 @@ class RecentChangesUpdateJob extends Job {
 
                        $lockKey = wfWikiID() . '-activeusers';
                        if ( !$dbw->lock( $lockKey, __METHOD__, 1 ) ) {
-                               return false; // exclusive update (avoids duplicate entries)
+                               return; // exclusive update (avoids duplicate entries)
                        }
 
                        $nowUnix = time();
@@ -203,7 +205,7 @@ class RecentChangesUpdateJob extends Job {
                                }
                                foreach ( array_chunk( $newRows, 500 ) as $rowBatch ) {
                                        $dbw->insert( 'querycachetwo', $rowBatch, __METHOD__ );
-                                       wfWaitForSlaves();
+                                       wfGetLBFactory()->waitForReplication();
                                }
                        }
 
diff --git a/includes/jobqueue/jobs/UploadFromUrlJob.php b/includes/jobqueue/jobs/UploadFromUrlJob.php
deleted file mode 100644 (file)
index 28e3c40..0000000
+++ /dev/null
@@ -1,209 +0,0 @@
-<?php
-/**
- * Job for asynchronous upload-by-url.
- *
- * 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 JobQueue
- */
-
-/**
- * Job for asynchronous upload-by-url.
- *
- * This job is in fact an interface to UploadFromUrl, which is designed such
- * that it does not require any globals. If it does, fix it elsewhere, do not
- * add globals in here.
- *
- * @ingroup JobQueue
- */
-class UploadFromUrlJob extends Job {
-       const SESSION_KEYNAME = 'wsUploadFromUrlJobData';
-
-       /** @var UploadFromUrl */
-       public $upload;
-
-       /** @var User */
-       protected $user;
-
-       public function __construct( Title $title, array $params ) {
-               parent::__construct( 'uploadFromUrl', $title, $params );
-       }
-
-       public function run() {
-               global $wgCopyUploadAsyncTimeout;
-               # Initialize this object and the upload object
-               $this->upload = new UploadFromUrl();
-               $this->upload->initialize(
-                       $this->title->getText(),
-                       $this->params['url'],
-                       false
-               );
-               $this->user = User::newFromName( $this->params['userName'] );
-
-               # Fetch the file
-               $opts = array();
-               if ( $wgCopyUploadAsyncTimeout ) {
-                       $opts['timeout'] = $wgCopyUploadAsyncTimeout;
-               }
-               $status = $this->upload->fetchFile( $opts );
-               if ( !$status->isOk() ) {
-                       $this->leaveMessage( $status );
-
-                       return true;
-               }
-
-               # Verify upload
-               $result = $this->upload->verifyUpload();
-               if ( $result['status'] != UploadBase::OK ) {
-                       $status = $this->upload->convertVerifyErrorToStatus( $result );
-                       $this->leaveMessage( $status );
-
-                       return true;
-               }
-
-               # Check warnings
-               if ( !$this->params['ignoreWarnings'] ) {
-                       $warnings = $this->upload->checkWarnings();
-                       if ( $warnings ) {
-
-                               # Stash the upload
-                               $key = $this->upload->stashFile( $this->user );
-
-                               // @todo FIXME: This has been broken for a while.
-                               // User::leaveUserMessage() does not exist.
-                               if ( $this->params['leaveMessage'] ) {
-                                       $this->user->leaveUserMessage(
-                                               wfMessage( 'upload-warning-subj' )->text(),
-                                               wfMessage( 'upload-warning-msg',
-                                                       $key,
-                                                       $this->params['url'] )->text()
-                                       );
-                               } else {
-                                       $session = MediaWiki\Session\SessionManager::singleton()
-                                               ->getSessionById( $this->params['sessionId'] );
-                                       $this->storeResultInSession( $session, 'Warning',
-                                               'warnings', $warnings );
-                               }
-
-                               return true;
-                       }
-               }
-
-               # Perform the upload
-               $status = $this->upload->performUpload(
-                       $this->params['comment'],
-                       $this->params['pageText'],
-                       $this->params['watch'],
-                       $this->user
-               );
-               $this->leaveMessage( $status );
-
-               return true;
-       }
-
-       /**
-        * Leave a message on the user talk page or in the session according to
-        * $params['leaveMessage'].
-        *
-        * @param Status $status
-        */
-       protected function leaveMessage( $status ) {
-               if ( $this->params['leaveMessage'] ) {
-                       if ( $status->isGood() ) {
-                               // @todo FIXME: user->leaveUserMessage does not exist.
-                               $this->user->leaveUserMessage( wfMessage( 'upload-success-subj' )->text(),
-                                       wfMessage( 'upload-success-msg',
-                                               $this->upload->getTitle()->getText(),
-                                               $this->params['url']
-                                       )->text() );
-                       } else {
-                               // @todo FIXME: user->leaveUserMessage does not exist.
-                               $this->user->leaveUserMessage( wfMessage( 'upload-failure-subj' )->text(),
-                                       wfMessage( 'upload-failure-msg',
-                                               $status->getWikiText(),
-                                               $this->params['url']
-                                       )->text() );
-                       }
-               } else {
-                       $session = MediaWiki\Session\SessionManager::singleton()
-                               ->getSessionById( $this->params['sessionId'] );
-                       if ( $status->isOk() ) {
-                               $this->storeResultInSession( $session, 'Success',
-                                       'filename', $this->upload->getLocalFile()->getName() );
-                       } else {
-                               $this->storeResultInSession( $session, 'Failure',
-                                       'errors', $status->getErrorsArray() );
-                       }
-               }
-       }
-
-       /**
-        * Store a result in the session data. Note that the caller is responsible
-        * for appropriate session_start and session_write_close calls.
-        *
-        * @param MediaWiki\\Session\\Session $session Session to store result into
-        * @param string $result The result (Success|Warning|Failure)
-        * @param string $dataKey The key of the extra data
-        * @param mixed $dataValue The extra data itself
-        */
-       protected function storeResultInSession(
-               MediaWiki\Session\Session $session, $result, $dataKey, $dataValue
-       ) {
-               $data = self::getSessionData( $session, $this->params['sessionKey'] );
-               $data['result'] = $result;
-               $data[$dataKey] = $dataValue;
-               self::setSessionData( $session, $this->params['sessionKey'], $data );
-       }
-
-       /**
-        * Initialize the session data. Sets the initial result to queued.
-        */
-       public function initializeSessionData() {
-               $session = MediaWiki\Session\SessionManager::getGlobalSession();
-               $data = self::getSessionData( $session, $this->params['sessionKey'] );
-               $data['result'] = 'Queued';
-               self::setSessionData( $session, $this->params['sessionKey'], $data );
-       }
-
-       /**
-        * @param MediaWiki\\Session\\Session $session
-        * @param string $key
-        * @return mixed
-        */
-       public static function getSessionData( MediaWiki\Session\Session $session, $key ) {
-               $data = $session->get( self::SESSION_KEYNAME );
-               if ( !is_array( $data ) || !isset( $data[$key] ) ) {
-                       self::setSessionData( $session, $key, array() );
-                       return array();
-               }
-               return $data[$key];
-       }
-
-       /**
-        * @param MediaWiki\\Session\\Session $session
-        * @param string $key
-        * @param mixed $value
-        */
-       public static function setSessionData( MediaWiki\Session\Session $session, $key, $value ) {
-               $data = $session->get( self::SESSION_KEYNAME, array() );
-               if ( !is_array( $data ) ) {
-                       $data = array();
-               }
-               $data[$key] = $value;
-               $session->set( self::SESSION_KEYNAME, $data );
-       }
-}
index db588fd..ddcb636 100644 (file)
@@ -672,11 +672,12 @@ class ManualLogEntry extends LogEntryBase {
         *
         * @param int $newId Id of the log entry.
         * @param string $to One of: rcandudp (default), rc, udp
+        * @return RecentChange|null
         */
        public function publish( $newId, $to = 'rcandudp' ) {
                $log = new LogPage( $this->getType() );
                if ( $log->isRestricted() ) {
-                       return;
+                       return null;
                }
 
                $rc = $this->getRecentChange( $newId );
@@ -694,6 +695,8 @@ class ManualLogEntry extends LogEntryBase {
                        $rc->getAttribute( 'rc_patrolled' ) === 1 ) {
                        PatrolLog::record( $rc, true, $this->getPerformer() );
                }
+
+               return $rc;
        }
 
        public function getType() {
index e2d9946..b99cb41 100644 (file)
@@ -67,7 +67,7 @@ class LogFormatter {
        /**
         * Handy shortcut for constructing a formatter directly from
         * database row.
-        * @param object $row
+        * @param stdClass|array $row
         * @see DatabaseLogEntry::getSelectQueryData
         * @return LogFormatter
         */
@@ -237,7 +237,7 @@ class LogFormatter {
                                        // @codingStandardsIgnoreStart Long line
                                        //case 'revision': // Revision deletion
                                        //case 'event': // Log deletion
-                                       // see https://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/includes/LogPage.php?&pathrev=97044&r1=97043&r2=97044
+                                       // see https://github.com/wikimedia/mediawiki/commit/a9c243b7b5289dad204278dbe7ed571fd914e395
                                        //default:
                                        // @codingStandardsIgnoreEnd
                                }
@@ -245,7 +245,7 @@ class LogFormatter {
 
                        case 'patrol':
                                // @codingStandardsIgnoreStart Long line
-                               // https://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/includes/PatrolLog.php?&pathrev=97495&r1=97494&r2=97495
+                               // https://github.com/wikimedia/mediawiki/commit/1a05f8faf78675dc85984f27f355b8825b43efff
                                // @codingStandardsIgnoreEnd
                                // Create a diff link to the patrolled revision
                                if ( $entry->getSubtype() === 'patrol' ) {
index 5a58c33..b62bcb4 100644 (file)
@@ -38,10 +38,10 @@ class TagLogFormatter extends LogFormatter {
                $remove = ( isset( $params[8] ) && isset( $params[8]['num'] ) && $params[8]['num'] );
                $key .= ( $remove ? ( $add ? '' : '-remove' ) : '-add' );
 
-               if ( isset( $params[4] ) && $params[4] ) {
-                       $key .= '-logentry';
-               } else {
+               if ( isset( $params[3] ) && $params[3] ) {
                        $key .= '-revision';
+               } else {
+                       $key .= '-logentry';
                }
 
                return $key;
index f557c1a..8bac6b8 100644 (file)
@@ -138,7 +138,7 @@ class EmailNotification {
        public function notifyOnPageChange( $editor, $title, $timestamp, $summary,
                $minorEdit, $oldid = false, $pageStatus = 'changed'
        ) {
-               global $wgEnotifUseJobQ, $wgEnotifMinorEdits, $wgUsersNotifiedOnAllChanges, $wgEnotifUserTalk;
+               global $wgEnotifMinorEdits, $wgUsersNotifiedOnAllChanges, $wgEnotifUserTalk;
 
                if ( $title->getNamespace() < 0 ) {
                        return;
@@ -166,34 +166,20 @@ class EmailNotification {
                        }
                }
 
-               if ( !$sendEmail ) {
-                       return;
-               }
-
-               if ( $wgEnotifUseJobQ ) {
-                       $params = array(
-                               'editor' => $editor->getName(),
-                               'editorID' => $editor->getID(),
-                               'timestamp' => $timestamp,
-                               'summary' => $summary,
-                               'minorEdit' => $minorEdit,
-                               'oldid' => $oldid,
-                               'watchers' => $watchers,
-                               'pageStatus' => $pageStatus
-                       );
-                       $job = new EnotifNotifyJob( $title, $params );
-                       JobQueueGroup::singleton()->lazyPush( $job );
-               } else {
-                       $this->actuallyNotifyOnPageChange(
-                               $editor,
+               if ( $sendEmail ) {
+                       JobQueueGroup::singleton()->lazyPush( new EnotifNotifyJob(
                                $title,
-                               $timestamp,
-                               $summary,
-                               $minorEdit,
-                               $oldid,
-                               $watchers,
-                               $pageStatus
-                       );
+                               array(
+                                       'editor' => $editor->getName(),
+                                       'editorID' => $editor->getID(),
+                                       'timestamp' => $timestamp,
+                                       'summary' => $summary,
+                                       'minorEdit' => $minorEdit,
+                                       'oldid' => $oldid,
+                                       'watchers' => $watchers,
+                                       'pageStatus' => $pageStatus
+                               )
+                       ) );
                }
        }
 
index faf40b3..9ac5e6b 100644 (file)
@@ -59,6 +59,43 @@ class BitmapHandler extends TransformationalImageHandler {
                return $scaler;
        }
 
+       function makeParamString( $params ) {
+               $res = parent::makeParamString( $params );
+               if ( isset( $params['interlace'] ) && $params['interlace'] ) {
+                       return "interlaced-{$res}";
+               } else {
+                       return $res;
+               }
+       }
+
+       function parseParamString( $str ) {
+               $remainder = preg_replace( '/^interlaced-/', '', $str );
+               $params = parent::parseParamString( $remainder );
+               if ( $params === false ) {
+                       return false;
+               }
+               $params['interlace'] = $str !== $remainder;
+               return $params;
+       }
+
+       /**
+        * @param File $image
+        * @param array $params
+        * @return bool
+        */
+       function normaliseParams( $image, &$params ) {
+               global $wgMaxInterlacingAreas;
+               if ( !parent::normaliseParams( $image, $params ) ) {
+                       return false;
+               }
+               $mimeType = $image->getMimeType();
+               $interlace = isset( $params['interlace'] ) && $params['interlace']
+                       && isset( $wgMaxInterlacingAreas[$mimeType] )
+                       && $this->getImageArea( $image ) <= $wgMaxInterlacingAreas[$mimeType];
+               $params['interlace'] = $interlace;
+               return true;
+       }
+
        /**
         * Transform an image using ImageMagick
         *
@@ -70,7 +107,7 @@ class BitmapHandler extends TransformationalImageHandler {
        protected function transformImageMagick( $image, $params ) {
                # use ImageMagick
                global $wgSharpenReductionThreshold, $wgSharpenParameter, $wgMaxAnimatedGifArea,
-                       $wgImageMagickTempDir, $wgImageMagickConvertCommand;
+                       $wgImageMagickTempDir, $wgImageMagickConvertCommand, $wgMaxInterlacingAreas;
 
                $quality = array();
                $sharpen = array();
@@ -78,9 +115,13 @@ class BitmapHandler extends TransformationalImageHandler {
                $animation_pre = array();
                $animation_post = array();
                $decoderHint = array();
+
                if ( $params['mimeType'] == 'image/jpeg' ) {
                        $qualityVal = isset( $params['quality'] ) ? (string)$params['quality'] : null;
                        $quality = array( '-quality', $qualityVal ?: '80' ); // 80%
+                       if ( $params['interlace'] ) {
+                               $animation_post = array( '-interlace', 'JPEG' );
+                       }
                        # Sharpening, see bug 6193
                        if ( ( $params['physicalWidth'] + $params['physicalHeight'] )
                                / ( $params['srcWidth'] + $params['srcHeight'] )
@@ -92,7 +133,12 @@ class BitmapHandler extends TransformationalImageHandler {
                                // JPEG decoder hint to reduce memory, available since IM 6.5.6-2
                                $decoderHint = array( '-define', "jpeg:size={$params['physicalDimensions']}" );
                        }
-               } elseif ( $params['mimeType'] == 'image/png' || $params['mimeType'] == 'image/webp' ) {
+               } elseif ( $params['mimeType'] == 'image/png' ) {
+                       $quality = array( '-quality', '95' ); // zlib 9, adaptive filtering
+                       if ( $params['interlace'] ) {
+                               $animation_post = array( '-interlace', 'PNG' );
+                       }
+               } elseif ( $params['mimeType'] == 'image/webp' ) {
                        $quality = array( '-quality', '95' ); // zlib 9, adaptive filtering
                } elseif ( $params['mimeType'] == 'image/gif' ) {
                        if ( $this->getImageArea( $image ) > $wgMaxAnimatedGifArea ) {
@@ -108,6 +154,11 @@ class BitmapHandler extends TransformationalImageHandler {
                                        $animation_post = array( '-fuzz', '5%', '-layers', 'optimizeTransparency' );
                                }
                        }
+                       if ( $params['interlace'] && version_compare( $this->getMagickVersion(), "6.3.4" ) >= 0
+                               && !$this->isAnimatedImage( $image ) ) { // interlacing animated GIFs is a bad idea
+                               $animation_post[] = '-interlace';
+                               $animation_post[] = 'GIF';
+                       }
                } elseif ( $params['mimeType'] == 'image/x-xcf' ) {
                        // Before merging layers, we need to set the background
                        // to be transparent to preserve alpha, as -layers merge
@@ -191,7 +242,8 @@ class BitmapHandler extends TransformationalImageHandler {
         * @return MediaTransformError Error object if error occurred, false (=no error) otherwise
         */
        protected function transformImageMagickExt( $image, $params ) {
-               global $wgSharpenReductionThreshold, $wgSharpenParameter, $wgMaxAnimatedGifArea;
+               global $wgSharpenReductionThreshold, $wgSharpenParameter, $wgMaxAnimatedGifArea,
+                       $wgMaxInterlacingAreas;
 
                try {
                        $im = new Imagick();
@@ -209,8 +261,14 @@ class BitmapHandler extends TransformationalImageHandler {
                                }
                                $qualityVal = isset( $params['quality'] ) ? (string)$params['quality'] : null;
                                $im->setCompressionQuality( $qualityVal ?: 80 );
+                               if ( $params['interlace'] ) {
+                                       $im->setInterlaceScheme( Imagick::INTERLACE_JPEG );
+                               }
                        } elseif ( $params['mimeType'] == 'image/png' ) {
                                $im->setCompressionQuality( 95 );
+                               if ( $params['interlace'] ) {
+                                       $im->setInterlaceScheme( Imagick::INTERLACE_PNG );
+                               }
                        } elseif ( $params['mimeType'] == 'image/gif' ) {
                                if ( $this->getImageArea( $image ) > $wgMaxAnimatedGifArea ) {
                                        // Extract initial frame only; we're so big it'll
@@ -220,6 +278,13 @@ class BitmapHandler extends TransformationalImageHandler {
                                        // Coalesce is needed to scale animated GIFs properly (bug 1017).
                                        $im = $im->coalesceImages();
                                }
+                               // GIF interlacing is only available since 6.3.4
+                               $v = Imagick::getVersion();
+                               preg_match( '/ImageMagick ([0-9]+\.[0-9]+\.[0-9]+)/', $v['versionString'], $v );
+
+                               if ( $params['interlace'] && version_compare( $v[1], '6.3.4' ) >= 0 ) {
+                                       $im->setInterlaceScheme( Imagick::INTERLACE_GIF );
+                               }
                        }
 
                        $rotation = isset( $params['disableRotation'] ) ? 0 : $this->getRotation( $image );
index 98fbde3..9e51b7d 100644 (file)
@@ -295,7 +295,7 @@ class IPTC {
                                        // in iim 4.1, but not in the XMP
                                        // stuff. We're going to just
                                        // extract the first value.
-                                       $con = self::ConvIPTC( $val, $c );
+                                       $con = self::convIPTC( $val, $c );
                                        if ( strlen( $con[0] ) < 5 ) {
                                                wfDebugLog( 'iptc', 'IPTC: '
                                                        . '2:04 too short. '
index f72df19..597ac26 100644 (file)
@@ -126,6 +126,7 @@ abstract class TransformationalImageHandler extends ImageHandler {
                        'mimeType' => $image->getMimeType(),
                        'dstPath' => $dstPath,
                        'dstUrl' => $dstUrl,
+                       'interlace' => isset( $params['interlace'] ) ? $params['interlace'] : false,
                );
 
                if ( isset( $params['quality'] ) && $params['quality'] === 'low' ) {
index 999be92..b04d3c6 100644 (file)
@@ -78,7 +78,7 @@ application/x-stuffit [ARCHIVE]
 application/x-opc+zip  [ARCHIVE]
 application/x-7z-compressed [ARCHIVE]
 
-text/javascript application/x-javascript application/x-ecmascript text/ecmascript      [EXECUTABLE]
+application/javascript text/javascript application/x-javascript application/x-ecmascript text/ecmascript       [EXECUTABLE]
 application/x-bash     [EXECUTABLE]
 application/x-sh       [EXECUTABLE]
 application/x-csh      [EXECUTABLE]
index c3b5190..89c8847 100644 (file)
@@ -36,7 +36,7 @@ application/x-gtar gtar tar
 application/x-gzip gz
 application/x-hdf hdf
 application/x-jar jar
-application/x-javascript js
+application/javascript js
 application/json json
 application/x-koan skp skd skt skm
 application/x-latex latex
diff --git a/includes/objectcache/ObjectCacheSessionHandler.php b/includes/objectcache/ObjectCacheSessionHandler.php
new file mode 100644 (file)
index 0000000..cc85074
--- /dev/null
@@ -0,0 +1,207 @@
+<?php
+/**
+ * Session storage in object 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 Cache
+ */
+
+use MediaWiki\Logger\LoggerFactory;
+
+/**
+ * Session storage in object cache.
+ * Used if $wgSessionsInObjectCache is true.
+ *
+ * @ingroup Cache
+ */
+class ObjectCacheSessionHandler {
+       /** @var array Map of (session ID => SHA-1 of the data) */
+       protected static $hashCache = array();
+
+       /**
+        * Install a session handler for the current web request
+        */
+       static function install() {
+               session_set_save_handler(
+                       array( __CLASS__, 'open' ),
+                       array( __CLASS__, 'close' ),
+                       array( __CLASS__, 'read' ),
+                       array( __CLASS__, 'write' ),
+                       array( __CLASS__, 'destroy' ),
+                       array( __CLASS__, 'gc' ) );
+
+               // It's necessary to register a shutdown function to call session_write_close(),
+               // because by the time the request shutdown function for the session module is
+               // called, the BagOStuff has already been destroyed. Shutdown functions registered
+               // this way are called before object destruction.
+               register_shutdown_function( array( __CLASS__, 'handleShutdown' ) );
+       }
+
+       /**
+        * Get the cache storage object to use for session storage
+        * @return BagOStuff
+        */
+       protected static function getCache() {
+               global $wgSessionCacheType;
+
+               return ObjectCache::getInstance( $wgSessionCacheType );
+       }
+
+       /**
+        * Get a cache key for the given session id.
+        *
+        * @param string $id Session id
+        * @return string Cache key
+        */
+       protected static function getKey( $id ) {
+               return wfMemcKey( 'session', $id );
+       }
+
+       /**
+        * @param mixed $data
+        * @return string
+        */
+       protected static function getHash( $data ) {
+               return sha1( serialize( $data ) );
+       }
+
+       /**
+        * Callback when opening a session.
+        *
+        * @param string $save_path Path used to store session files, unused
+        * @param string $session_name Session name
+        * @return bool Success
+        */
+       static function open( $save_path, $session_name ) {
+               return true;
+       }
+
+       /**
+        * Callback when closing a session.
+        * NOP.
+        *
+        * @return bool Success
+        */
+       static function close() {
+               return true;
+       }
+
+       /**
+        * Callback when reading session data.
+        *
+        * @param string $id Session id
+        * @return mixed Session data
+        */
+       static function read( $id ) {
+               $stime = microtime( true );
+               $data = self::getCache()->get( self::getKey( $id ) );
+               $real = microtime( true ) - $stime;
+
+               RequestContext::getMain()->getStats()->timing( "session.read", 1000 * $real );
+
+               self::$hashCache = array( $id => self::getHash( $data ) );
+
+               return ( $data === false ) ? '' : $data;
+       }
+
+       /**
+        * Callback when writing session data.
+        *
+        * @param string $id Session id
+        * @param string $data Session data
+        * @return bool Success
+        */
+       static function write( $id, $data ) {
+               global $wgObjectCacheSessionExpiry;
+
+               // Only issue a write if anything changed (PHP 5.6 already does this)
+               if ( !isset( self::$hashCache[$id] )
+                       || self::getHash( $data ) !== self::$hashCache[$id]
+               ) {
+                       $stime = microtime( true );
+                       self::getCache()->set( self::getKey( $id ), $data, $wgObjectCacheSessionExpiry );
+                       $real = microtime( true ) - $stime;
+
+                       RequestContext::getMain()->getStats()->timing( "session.write", 1000 * $real );
+               }
+
+               return true;
+       }
+
+       /**
+        * Callback to destroy a session when calling session_destroy().
+        *
+        * @param string $id Session id
+        * @return bool Success
+        */
+       static function destroy( $id ) {
+               $stime = microtime( true );
+               self::getCache()->delete( self::getKey( $id ) );
+               $real = microtime( true ) - $stime;
+
+               RequestContext::getMain()->getStats()->timing( "session.destroy", 1000 * $real );
+
+               return true;
+       }
+
+       /**
+        * Callback to execute garbage collection.
+        * NOP: Object caches perform garbage collection implicitly
+        *
+        * @param int $maxlifetime Maximum session life time
+        * @return bool Success
+        */
+       static function gc( $maxlifetime ) {
+               return true;
+       }
+
+       /**
+        * Shutdown function.
+        * See the comment inside ObjectCacheSessionHandler::install for rationale.
+        */
+       static function handleShutdown() {
+               session_write_close();
+       }
+
+       /**
+        * Pre-emptive session renewal function
+        */
+       static function renewCurrentSession() {
+               global $wgObjectCacheSessionExpiry;
+
+               // Once a session is at half TTL, renew it
+               $window = $wgObjectCacheSessionExpiry / 2;
+               $logger = LoggerFactory::getInstance( 'SessionHandler' );
+
+               $now = microtime( true );
+               // Session are only written in object stores when $_SESSION changes,
+               // which also renews the TTL ($wgObjectCacheSessionExpiry). If a user
+               // is active but not causing session data changes, it may suddenly
+               // expire as they view a form, blocking the first submission.
+               // Make a dummy change every so often to avoid this.
+               if ( !isset( $_SESSION['wsExpiresUnix'] ) ) {
+                       $_SESSION['wsExpiresUnix'] = $now + $wgObjectCacheSessionExpiry;
+
+                       $logger->info( "Set expiry for session " . session_id(), array() );
+               } elseif ( ( $now + $window ) > $_SESSION['wsExpiresUnix'] ) {
+                       $_SESSION['wsExpiresUnix'] = $now + $wgObjectCacheSessionExpiry;
+
+                       $logger->info( "Renewed session " . session_id(), array() );
+               }
+       }
+}
index 5776519..0e3c9eb 100644 (file)
@@ -735,7 +735,12 @@ class SqlBagOStuff extends BagOStuff {
        protected function waitForSlaves() {
                if ( !$this->serverInfos ) {
                        // Main LB is used; wait for any slaves to catch up
-                       return wfWaitForSlaves( null, false, false, $this->syncTimeout );
+                       try {
+                               wfGetLBFactory()->waitForReplication( array( 'wiki' => wfWikiID() ) );
+                               return true;
+                       } catch ( DBReplicationWaitError $e ) {
+                               return false;
+                       }
                } else {
                        // Custom DB server list; probably doesn't use replication
                        return true;
index c9af075..938c049 100644 (file)
@@ -1074,12 +1074,6 @@ class Article implements Page {
                        return false;
                }
 
-               // New page patrol: Get the timestamp of the oldest revison which
-               // the revision table holds for the given page. Then we look
-               // whether it's within the RC lifespan and if it is, we try
-               // to get the recentchanges row belonging to that entry
-               // (with rc_new = 1).
-
                if ( $this->mRevision
                        && !RecentChange::isInRCLifespan( $this->mRevision->getTimestamp(), 21600 )
                ) {
@@ -1103,13 +1097,17 @@ class Article implements Page {
                        __METHOD__
                );
 
-               $cantPatrolNewPage = false;
-               $cantPatrolFile = false;
-
+               // New page patrol: Get the timestamp of the oldest revison which
+               // the revision table holds for the given page. Then we look
+               // whether it's within the RC lifespan and if it is, we try
+               // to get the recentchanges row belonging to that entry
+               // (with rc_new = 1).
+               $recentPageCreation = false;
                if ( $oldestRevisionTimestamp
                        && RecentChange::isInRCLifespan( $oldestRevisionTimestamp, 21600 )
                ) {
                        // 6h tolerance because the RC might not be cleaned out regularly
+                       $recentPageCreation = true;
                        $rc = RecentChange::newFromConds(
                                array(
                                        'rc_new' => 1,
@@ -1123,12 +1121,15 @@ class Article implements Page {
                                // Use generic patrol message for new pages
                                $markPatrolledMsg = wfMessage( 'markaspatrolledtext' );
                        }
-               } else {
-                       $cantPatrolNewPage = true;
                }
 
-               // Allow patrolling of latest file upload
-               if ( !$rc && $wgUseFilePatrol && $this->getTitle()->getNamespace() === NS_FILE ) {
+               // File patrol: Get the timestamp of the latest upload for this page,
+               // check whether it is within the RC lifespan and if it is, we try
+               // to get the recentchanges row belonging to that entry
+               // (with rc_type = RC_LOG, rc_log_type = upload).
+               $recentFileUpload = false;
+               if ( ( !$rc || $rc->getAttribute( 'rc_patrolled' ) ) && $wgUseFilePatrol
+                       && $this->getTitle()->getNamespace() === NS_FILE ) {
                        // Retrieve timestamp of most recent upload
                        $newestUploadTimestamp = $dbr->selectField(
                                'image',
@@ -1140,14 +1141,14 @@ class Article implements Page {
                                && RecentChange::isInRCLifespan( $newestUploadTimestamp, 21600 )
                        ) {
                                // 6h tolerance because the RC might not be cleaned out regularly
+                               $recentFileUpload = true;
                                $rc = RecentChange::newFromConds(
                                        array(
                                                'rc_type' => RC_LOG,
                                                'rc_log_type' => 'upload',
                                                'rc_timestamp' => $newestUploadTimestamp,
                                                'rc_namespace' => NS_FILE,
-                                               'rc_cur_id' => $this->getTitle()->getArticleID(),
-                                               'rc_patrolled' => 0
+                                               'rc_cur_id' => $this->getTitle()->getArticleID()
                                        ),
                                        __METHOD__,
                                        array( 'USE INDEX' => 'rc_timestamp' )
@@ -1156,23 +1157,23 @@ class Article implements Page {
                                        // Use patrol message specific to files
                                        $markPatrolledMsg = wfMessage( 'markaspatrolledtext-file' );
                                }
-                       } else {
-                               $cantPatrolFile = true;
                        }
-               } else {
-                       $cantPatrolFile = true;
                }
 
-               if ( $cantPatrolFile && $cantPatrolNewPage ) {
-                       // Cache the information we gathered above in case we can't patrol
-                       // Don't cache in case we can patrol as this could change
+               if ( !$recentPageCreation && !$recentFileUpload ) {
+                       // Page creation and latest upload (for files) is too old to be in RC
+
+                       // We definitely can't patrol so cache the information
+                       // When a new file version is uploaded, the cache is cleared
                        $cache->set( $key, '1' );
+
+                       return false;
                }
 
                if ( !$rc ) {
                        // Don't cache: This can be hit if the page gets accessed very fast after
-                       // its creation or in case we have high slave lag. In case the revision is
-                       // too old, we will already return above.
+                       // its creation / latest upload or in case we have high slave lag. In case
+                       // the revision is too old, we will already return above.
                        return false;
                }
 
@@ -1187,7 +1188,7 @@ class Article implements Page {
                }
 
                if ( $rc->getPerformer()->equals( $user ) ) {
-                       // Don't show a patrol link for own creations. If the user could
+                       // Don't show a patrol link for own creations/uploads. If the user could
                        // patrol them, they already would be patrolled
                        return false;
                }
@@ -2083,22 +2084,574 @@ class Article implements Page {
        }
 
        /**
-        * Use PHP's magic __call handler to transform instance calls to
-        * WikiPage functions for backwards compatibility.
-        *
-        * @param string $fname Name of called method
-        * @param array $args Arguments to the method
-        * @return mixed
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::checkFlags
         */
-       public function __call( $fname, $args ) {
-               if ( is_callable( array( $this->mPage, $fname ) ) ) {
-                       # wfWarn( "Call to " . __CLASS__ . "::$fname; please use WikiPage instead" );
-                       return call_user_func_array( array( $this->mPage, $fname ), $args );
-               }
-               trigger_error( 'Inaccessible function via __call(): ' . $fname, E_USER_ERROR );
+       public function checkFlags( $flags ) {
+               return $this->mPage->checkFlags( $flags );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::checkTouched
+        */
+       public function checkTouched() {
+               return $this->mPage->checkTouched();
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::clearPreparedEdit
+        */
+       public function clearPreparedEdit() {
+               return $this->mPage->clearPreparedEdit();
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::doDeleteArticleReal
+        */
+       public function doDeleteArticleReal(
+               $reason, $suppress = false, $u1 = null, $u2 = null, &$error = '', User $user = null
+       ) {
+               return $this->mPage->doDeleteArticleReal(
+                       $reason, $suppress, $u1, $u2, $error, $user
+               );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::doDeleteUpdates
+        */
+       public function doDeleteUpdates( $id, Content $content = null ) {
+               return $this->mPage->doDeleteUpdates( $id, $content );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::doEdit
+        */
+       public function doEdit( $text, $summary, $flags = 0, $baseRevId = false, $user = null ) {
+               ContentHandler::deprecated( __METHOD__, '1.21' );
+               return $this->mPage->doEdit( $text, $summary, $flags, $baseRevId, $user );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::doEditContent
+        */
+       public function doEditContent( Content $content, $summary, $flags = 0, $baseRevId = false,
+               User $user = null, $serialFormat = null
+       ) {
+               return $this->mPage->doEditContent( $content, $summary, $flags, $baseRevId,
+                       $user, $serialFormat
+               );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::doEditUpdates
+        */
+       public function doEditUpdates( Revision $revision, User $user, array $options = array() ) {
+               return $this->mPage->doEditUpdates( $revision, $user, $options );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::doPurge
+        */
+       public function doPurge() {
+               return $this->mPage->doPurge();
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::doQuickEditContent
+        */
+       public function doQuickEditContent(
+               Content $content, User $user, $comment = '', $minor = false, $serialFormat = null
+       ) {
+               return $this->mPage->doQuickEditContent(
+                       $content, $user, $comment, $minor, $serialFormat
+               );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::doViewUpdates
+        */
+       public function doViewUpdates( User $user, $oldid = 0 ) {
+               return $this->mPage->doViewUpdates( $user, $oldid );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::exists
+        */
+       public function exists() {
+               return $this->mPage->exists();
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::followRedirect
+        */
+       public function followRedirect() {
+               return $this->mPage->followRedirect();
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::getActionOverrides
+        */
+       public function getActionOverrides() {
+               return $this->mPage->getActionOverrides();
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::getAutoDeleteReason
+        */
+       public function getAutoDeleteReason( &$hasHistory ) {
+               return $this->mPage->getAutoDeleteReason( $hasHistory );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::getCategories
+        */
+       public function getCategories() {
+               return $this->mPage->getCategories();
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::getComment
+        */
+       public function getComment( $audience = Revision::FOR_PUBLIC, User $user = null ) {
+               return $this->mPage->getComment( $audience, $user );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::getContentHandler
+        */
+       public function getContentHandler() {
+               return $this->mPage->getContentHandler();
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::getContentModel
+        */
+       public function getContentModel() {
+               return $this->mPage->getContentModel();
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::getContributors
+        */
+       public function getContributors() {
+               return $this->mPage->getContributors();
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::getCreator
+        */
+       public function getCreator( $audience = Revision::FOR_PUBLIC, User $user = null ) {
+               return $this->mPage->getCreator( $audience, $user );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::getDeletionUpdates
+        */
+       public function getDeletionUpdates( Content $content = null ) {
+               return $this->mPage->getDeletionUpdates( $content );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::getHiddenCategories
+        */
+       public function getHiddenCategories() {
+               return $this->mPage->getHiddenCategories();
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::getId
+        */
+       public function getId() {
+               return $this->mPage->getId();
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::getLatest
+        */
+       public function getLatest() {
+               return $this->mPage->getLatest();
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::getLinksTimestamp
+        */
+       public function getLinksTimestamp() {
+               return $this->mPage->getLinksTimestamp();
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::getMinorEdit
+        */
+       public function getMinorEdit() {
+               return $this->mPage->getMinorEdit();
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::getOldestRevision
+        */
+       public function getOldestRevision() {
+               return $this->mPage->getOldestRevision();
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::getRedirectTarget
+        */
+       public function getRedirectTarget() {
+               return $this->mPage->getRedirectTarget();
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::getRedirectURL
+        */
+       public function getRedirectURL( $rt ) {
+               return $this->mPage->getRedirectURL( $rt );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::getRevision
+        */
+       public function getRevision() {
+               return $this->mPage->getRevision();
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::getText
+        */
+       public function getText( $audience = Revision::FOR_PUBLIC, User $user = null ) {
+               ContentHandler::deprecated( __METHOD__, '1.21' );
+               return $this->mPage->getText( $audience, $user );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::getTimestamp
+        */
+       public function getTimestamp() {
+               return $this->mPage->getTimestamp();
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::getTouched
+        */
+       public function getTouched() {
+               return $this->mPage->getTouched();
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::getUndoContent
+        */
+       public function getUndoContent( Revision $undo, Revision $undoafter = null ) {
+               return $this->mPage->getUndoContent( $undo, $undoafter );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::getUndoText
+        */
+       public function getUndoText( Revision $undo, Revision $undoafter = null ) {
+               ContentHandler::deprecated( __METHOD__, '1.21' );
+               return $this->mPage->getUndoText( $undo, $undoafter );
        }
 
-       // ****** B/C functions to work-around PHP silliness with __call and references ****** //
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::getUser
+        */
+       public function getUser( $audience = Revision::FOR_PUBLIC, User $user = null ) {
+               return $this->mPage->getUser( $audience, $user );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::getUserText
+        */
+       public function getUserText( $audience = Revision::FOR_PUBLIC, User $user = null ) {
+               return $this->mPage->getUserText( $audience, $user );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::hasViewableContent
+        */
+       public function hasViewableContent() {
+               return $this->mPage->hasViewableContent();
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::insertOn
+        */
+       public function insertOn( $dbw, $pageId = null ) {
+               return $this->mPage->insertOn( $dbw, $pageId );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::insertProtectNullRevision
+        */
+       public function insertProtectNullRevision( $revCommentMsg, array $limit,
+               array $expiry, $cascade, $reason, $user = null
+       ) {
+               return $this->mPage->insertProtectNullRevision( $revCommentMsg, $limit,
+                       $expiry, $cascade, $reason, $user
+               );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::insertRedirect
+        */
+       public function insertRedirect() {
+               return $this->mPage->insertRedirect();
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::insertRedirectEntry
+        */
+       public function insertRedirectEntry( Title $rt, $oldLatest = null ) {
+               return $this->mPage->insertRedirectEntry( $rt, $oldLatest );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::isCountable
+        */
+       public function isCountable( $editInfo = false ) {
+               return $this->mPage->isCountable( $editInfo );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::isRedirect
+        */
+       public function isRedirect() {
+               return $this->mPage->isRedirect();
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::loadFromRow
+        */
+       public function loadFromRow( $data, $from ) {
+               return $this->mPage->loadFromRow( $data, $from );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::loadPageData
+        */
+       public function loadPageData( $from = 'fromdb' ) {
+               return $this->mPage->loadPageData( $from );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::lockAndGetLatest
+        */
+       public function lockAndGetLatest() {
+               return $this->mPage->lockAndGetLatest();
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::makeParserOptions
+        */
+       public function makeParserOptions( $context ) {
+               return $this->mPage->makeParserOptions( $context );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::pageDataFromId
+        */
+       public function pageDataFromId( $dbr, $id, $options = array() ) {
+               return $this->mPage->pageDataFromId( $dbr, $id, $options );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::pageDataFromTitle
+        */
+       public function pageDataFromTitle( $dbr, $title, $options = array() ) {
+               return $this->mPage->pageDataFromTitle( $dbr, $title, $options );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::prepareContentForEdit
+        */
+       public function prepareContentForEdit(
+               Content $content, $revision = null, User $user = null,
+               $serialFormat = null, $useCache = true
+       ) {
+               return $this->mPage->prepareContentForEdit(
+                       $content, $revision, $user,
+                       $serialFormat, $useCache
+               );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::prepareTextForEdit
+        */
+       public function prepareTextForEdit( $text, $revid = null, User $user = null ) {
+               return $this->mPage->prepareTextForEdit( $text, $revid, $user );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::protectDescription
+        */
+       public function protectDescription( array $limit, array $expiry ) {
+               return $this->mPage->protectDescription( $limit, $expiry );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::protectDescriptionLog
+        */
+       public function protectDescriptionLog( array $limit, array $expiry ) {
+               return $this->mPage->protectDescriptionLog( $limit, $expiry );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::replaceSection
+        */
+       public function replaceSection( $sectionId, $text, $sectionTitle = '',
+               $edittime = null
+       ) {
+               ContentHandler::deprecated( __METHOD__, '1.21' );
+               return $this->mPage->replaceSection( $sectionId, $text, $sectionTitle,
+                       $edittime
+               );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::replaceSectionAtRev
+        */
+       public function replaceSectionAtRev( $sectionId, Content $sectionContent,
+               $sectionTitle = '', $baseRevId = null
+       ) {
+               return $this->mPage->replaceSectionAtRev( $sectionId, $sectionContent,
+                       $sectionTitle, $baseRevId
+               );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::replaceSectionContent
+        */
+       public function replaceSectionContent(
+               $sectionId, Content $sectionContent, $sectionTitle = '', $edittime = null
+       ) {
+               return $this->mPage->replaceSectionContent(
+                       $sectionId, $sectionContent, $sectionTitle, $edittime
+               );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::setTimestamp
+        */
+       public function setTimestamp( $ts ) {
+               return $this->mPage->setTimestamp( $ts );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::shouldCheckParserCache
+        */
+       public function shouldCheckParserCache( ParserOptions $parserOptions, $oldId ) {
+               return $this->mPage->shouldCheckParserCache( $parserOptions, $oldId );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::supportsSections
+        */
+       public function supportsSections() {
+               return $this->mPage->supportsSections();
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::triggerOpportunisticLinksUpdate
+        */
+       public function triggerOpportunisticLinksUpdate( ParserOutput $parserOutput ) {
+               return $this->mPage->triggerOpportunisticLinksUpdate( $parserOutput );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::updateCategoryCounts
+        */
+       public function updateCategoryCounts( array $added, array $deleted ) {
+               return $this->mPage->updateCategoryCounts( $added, $deleted );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::updateIfNewerOn
+        */
+       public function updateIfNewerOn( $dbw, $revision ) {
+               return $this->mPage->updateIfNewerOn( $dbw, $revision );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::updateRedirectOn
+        */
+       public function updateRedirectOn( $dbw, $redirectTitle, $lastRevIsRedirect = null ) {
+               return $this->mPage->updateRedirectOn( $dbw, $redirectTitle, $lastRevIsRedirect = null );
+       }
+
+       /**
+        * Call to WikiPage function for backwards compatibility.
+        * @see WikiPage::updateRevisionOn
+        */
+       public function updateRevisionOn( $dbw, $revision, $lastRevision = null,
+               $lastRevIsRedirect = null
+       ) {
+               return $this->mPage->updateRevisionOn( $dbw, $revision, $lastRevision,
+                       $lastRevIsRedirect
+               );
+       }
 
        /**
         * @param array $limit
@@ -2184,8 +2737,6 @@ class Article implements Page {
                return $handler->getAutoDeleteReason( $title, $hasHistory );
        }
 
-       // ****** B/C functions for static methods ( __callStatic is PHP>=5.3 ) ****** //
-
        /**
         * @return array
         *
index c508abe..92a14af 100644 (file)
@@ -29,10 +29,10 @@ class WikiFilePage extends WikiPage {
        /**
         * @var File
         */
-       protected $mFile = false;                               // !< File object
-       protected $mRepo = null;                            // !<
-       protected $mFileLoaded = false;             // !<
-       protected $mDupes = null;                               // !<
+       protected $mFile = false;
+       protected $mRepo = null;
+       protected $mFileLoaded = false;
+       protected $mDupes = null;
 
        public function __construct( $title ) {
                parent::__construct( $title );
index 6f4c296..c02f975 100644 (file)
@@ -1823,7 +1823,7 @@ class WikiPage implements Page, IDBAccessObject {
                        $revisionId = $revision->insertOn( $dbw );
                        // Update page_latest and friends to reflect the new revision
                        if ( !$this->updateRevisionOn( $dbw, $revision, null, $meta['oldIsRedirect'] ) ) {
-                               $dbw->rollback( __METHOD__ );
+                               $dbw->rollback( __METHOD__ ); // sanity; this should never happen
                                throw new MWException( "Failed to update page row to use new revision." );
                        }
 
@@ -1921,12 +1921,12 @@ class WikiPage implements Page, IDBAccessObject {
                }
 
                $dbw = wfGetDB( DB_MASTER );
-               $dbw->begin( __METHOD__ );
+               $dbw->startAtomic( __METHOD__ );
 
                // Add the page record unless one already exists for the title
                $newid = $this->insertOn( $dbw );
                if ( $newid === false ) {
-                       $dbw->commit( __METHOD__ ); // nothing inserted
+                       $dbw->endAtomic( __METHOD__ ); // nothing inserted
                        $status->fatal( 'edit-already-exists' );
 
                        return $status; // nothing done
@@ -1956,7 +1956,7 @@ class WikiPage implements Page, IDBAccessObject {
                $revisionId = $revision->insertOn( $dbw );
                // Update the page record with revision data
                if ( !$this->updateRevisionOn( $dbw, $revision, 0 ) ) {
-                       $dbw->rollback( __METHOD__ );
+                       $dbw->rollback( __METHOD__ ); // sanity; this should never happen
                        throw new MWException( "Failed to update page row to use new revision." );
                }
 
@@ -1984,25 +1984,34 @@ class WikiPage implements Page, IDBAccessObject {
 
                $user->incEditCount();
 
-               $dbw->commit( __METHOD__ );
+               $dbw->endAtomic( __METHOD__ );
                $this->mTimestamp = $now;
 
-               // Update links, etc.
-               $this->doEditUpdates( $revision, $user, array( 'created' => true ) );
-
-               $hook_args = array( &$this, &$user, $content, $summary,
-                       $flags & EDIT_MINOR, null, null, &$flags, $revision );
-               ContentHandler::runLegacyHooks( 'ArticleInsertComplete', $hook_args );
-               Hooks::run( 'PageContentInsertComplete', $hook_args );
-
                // Return the new revision to the caller
                $status->value['revision'] = $revision;
 
-               // Trigger post-save hook
-               $hook_args = array( &$this, &$user, $content, $summary,
-                       $flags & EDIT_MINOR, null, null, &$flags, $revision, &$status, $meta['baseRevId'] );
-               ContentHandler::runLegacyHooks( 'ArticleSaveComplete', $hook_args );
-               Hooks::run( 'PageContentSaveComplete', $hook_args );
+               // Do secondary updates once the main changes have been committed...
+               $that = $this;
+               $dbw->onTransactionIdle(
+                       function () use (
+                               &$that, $dbw, $revision, &$user, $content, $summary, &$flags, $meta, &$status
+                       ) {
+                               // Do per-page updates in a transaction
+                               $dbw->setFlag( DBO_TRX );
+                               // Update links, etc.
+                               $that->doEditUpdates( $revision, $user, array( 'created' => true ) );
+                               // Trigger post-create hook
+                               $params = array( &$that, &$user, $content, $summary,
+                                       $flags & EDIT_MINOR, null, null, &$flags, $revision );
+                               ContentHandler::runLegacyHooks( 'ArticleInsertComplete', $params );
+                               Hooks::run( 'PageContentInsertComplete', $params );
+                               // Trigger post-save hook
+                               $params = array_merge( $params, array( &$status, $meta['baseRevId'] ) );
+                               ContentHandler::runLegacyHooks( 'ArticleSaveComplete', $params );
+                               Hooks::run( 'PageContentSaveComplete', $params );
+
+                       }
+               );
 
                return $status;
        }
index 7b4a650..f947285 100644 (file)
@@ -1113,15 +1113,15 @@ class Parser {
                                        $line = substr( $line, 1 );
                                }
 
+                               // Implies both are valid for table headings.
                                if ( $first_character === '!' ) {
                                        $line = str_replace( '!!', '||', $line );
                                }
 
                                # Split up multiple cells on the same line.
                                # FIXME : This can result in improper nesting of tags processed
-                               # by earlier parser steps, but should avoid splitting up eg
-                               # attribute values containing literal "||".
-                               $cells = StringUtils::explodeMarkup( '||', $line );
+                               # by earlier parser steps.
+                               $cells = explode( '||', $line );
 
                                $outLine = '';
 
@@ -5442,18 +5442,18 @@ class Parser {
                                                        if ( $handler->validateParam( $paramName, $match ) ) {
                                                                $handlerOptions[$paramName] = $match;
                                                        } else {
-                                                               // Guess not. Append it to the caption.
+                                                               // Guess not, consider it as caption.
                                                                wfDebug( "$parameterMatch failed parameter validation\n" );
-                                                               $label .= '|' . $parameterMatch;
+                                                               $label = '|' . $parameterMatch;
                                                        }
                                                }
 
                                        } else {
-                                               // concatenate all other pipes
-                                               $label .= '|' . $parameterMatch;
+                                               // Last pipe wins.
+                                               $label = '|' . $parameterMatch;
                                        }
                                }
-                               // remove the first pipe
+                               // Remove the pipe.
                                $label = substr( $label, 1 );
                        }
 
index 72668bf..656e580 100644 (file)
@@ -220,6 +220,17 @@ class ParserOutput extends CacheTime {
                $this->mTitleText = $titletext;
        }
 
+       /**
+        * Get the cacheable text with <mw:editsection> markers still in it. The
+        * return value is suitable for writing back via setText() but is not valid
+        * for display to the user.
+        *
+        * @since 1.27
+        */
+       public function getRawText() {
+               return $this->mText;
+       }
+
        public function getText() {
                $text = $this->mText;
                if ( $this->mEditSectionTokens ) {
index 4ca3a87..817f153 100644 (file)
@@ -237,6 +237,8 @@ class Preprocessor_DOM extends Preprocessor {
                $inHeading = false;
                // True if there are no more greater-than (>) signs right of $i
                $noMoreGT = false;
+               // Map of tag name => true if there are no more closing tags of given type right of $i
+               $noMoreClosingTag = array();
                // True to ignore all input up to the next <onlyinclude>
                $findOnlyinclude = $enableOnlyinclude;
                // Do a line-start run without outputting an LF character
@@ -457,17 +459,21 @@ class Preprocessor_DOM extends Preprocessor {
                                } else {
                                        $attrEnd = $tagEndPos;
                                        // Find closing tag
-                                       if ( preg_match( "/<\/" . preg_quote( $name, '/' ) . "\s*>/i",
+                                       if (
+                                               !isset( $noMoreClosingTag[$name] ) &&
+                                               preg_match( "/<\/" . preg_quote( $name, '/' ) . "\s*>/i",
                                                        $text, $matches, PREG_OFFSET_CAPTURE, $tagEndPos + 1 )
                                        ) {
                                                $inner = substr( $text, $tagEndPos + 1, $matches[0][1] - $tagEndPos - 1 );
                                                $i = $matches[0][1] + strlen( $matches[0][0] );
                                                $close = '<close>' . htmlspecialchars( $matches[0][0] ) . '</close>';
                                        } else {
-                                               // No end tag -- let it run out to the end of the text.
-                                               $inner = substr( $text, $tagEndPos + 1 );
-                                               $i = $lengthText;
-                                               $close = '';
+                                               // No end tag -- don't match the tag, treat opening tag as literal and resume parsing.
+                                               $i = $tagEndPos + 1;
+                                               $accum .= htmlspecialchars( substr( $text, $tagStartPos, $tagEndPos + 1 - $tagStartPos ) );
+                                               // Cache results, otherwise we have O(N^2) performance for input like <foo><foo><foo>...
+                                               $noMoreClosingTag[$name] = true;
+                                               continue;
                                        }
                                }
                                // <includeonly> and <noinclude> just become <ignore> tags
index 50eaefb..28c49fd 100644 (file)
@@ -160,6 +160,8 @@ class Preprocessor_Hash extends Preprocessor {
                $inHeading = false;
                // True if there are no more greater-than (>) signs right of $i
                $noMoreGT = false;
+               // Map of tag name => true if there are no more closing tags of given type right of $i
+               $noMoreClosingTag = array();
                // True to ignore all input up to the next <onlyinclude>
                $findOnlyinclude = $enableOnlyinclude;
                // Do a line-start run without outputting an LF character
@@ -380,17 +382,21 @@ class Preprocessor_Hash extends Preprocessor {
                                } else {
                                        $attrEnd = $tagEndPos;
                                        // Find closing tag
-                                       if ( preg_match( "/<\/" . preg_quote( $name, '/' ) . "\s*>/i",
+                                       if (
+                                               !isset( $noMoreClosingTag[$name] ) &&
+                                               preg_match( "/<\/" . preg_quote( $name, '/' ) . "\s*>/i",
                                                        $text, $matches, PREG_OFFSET_CAPTURE, $tagEndPos + 1 )
                                        ) {
                                                $inner = substr( $text, $tagEndPos + 1, $matches[0][1] - $tagEndPos - 1 );
                                                $i = $matches[0][1] + strlen( $matches[0][0] );
                                                $close = $matches[0][0];
                                        } else {
-                                               // No end tag -- let it run out to the end of the text.
-                                               $inner = substr( $text, $tagEndPos + 1 );
-                                               $i = $lengthText;
-                                               $close = null;
+                                               // No end tag -- don't match the tag, treat opening tag as literal and resume parsing.
+                                               $i = $tagEndPos + 1;
+                                               $accum->addLiteral( substr( $text, $tagStartPos, $tagEndPos + 1 - $tagStartPos ) );
+                                               // Cache results, otherwise we have O(N^2) performance for input like <foo><foo><foo>...
+                                               $noMoreClosingTag[$name] = true;
+                                               continue;
                                        }
                                }
                                // <includeonly> and <noinclude> just become <ignore> tags
index 30be343..0efcebf 100644 (file)
@@ -123,10 +123,10 @@ class IRCColourfulRCFeedFormatter implements RCFeedFormatter {
         * @return string
         */
        public static function cleanupForIRC( $text ) {
-               return Sanitizer::decodeCharReferences( str_replace(
+               return str_replace(
                        array( "\n", "\r" ),
                        array( " ", "" ),
-                       $text
-               ) );
+                       Sanitizer::decodeCharReferences( $text )
+               );
        }
 }
index 1f3085a..d7b51b8 100644 (file)
@@ -41,7 +41,7 @@ class ResourceLoader implements LoggerAwareInterface {
        protected static $debugMode = null;
 
        /** @var array */
-       private static $lessVars = null;
+       private $lessVars = null;
 
        /**
         * Module name/ResourceLoaderModule object pairs
@@ -1365,7 +1365,7 @@ MESSAGE;
         * @return string
         */
        public static function makeLoaderConditionalScript( $script ) {
-               return "window.RLQ = window.RLQ || []; window.RLQ.push( function () {\n" .
+               return "(window.RLQ = window.RLQ || []).push(function () {\n" .
                        trim( $script ) . "\n} );";
        }
 
@@ -1382,7 +1382,7 @@ MESSAGE;
                $js = self::makeLoaderConditionalScript( $script );
                return new WrappedString(
                        Html::inlineScript( $js ),
-                       "<script>window.RLQ = window.RLQ || []; window.RLQ.push( function () {\n",
+                       "<script>(window.RLQ = window.RLQ || []).push(function () {\n",
                        "\n} );</script>"
                );
        }
@@ -1589,15 +1589,13 @@ MESSAGE;
        /**
         * Returns LESS compiler set up for use with MediaWiki
         *
-        * @since 1.22
-        * @since 1.27 added $extraVars parameter
-        * @param Config $config
+        * @since 1.27
         * @param array $extraVars Associative array of extra (i.e., other than the
         *   globally-configured ones) that should be used for compilation.
         * @throws MWException
         * @return Less_Parser
         */
-       public static function getLessCompiler( Config $config, $extraVars = array() ) {
+       public function getLessCompiler( $extraVars = array() ) {
                // When called from the installer, it is possible that a required PHP extension
                // is missing (at least for now; see bug 47564). If this is the case, throw an
                // exception (caught by the installer) to prevent a fatal error later on.
@@ -1606,10 +1604,12 @@ MESSAGE;
                }
 
                $parser = new Less_Parser;
-               $parser->ModifyVars( array_merge( self::getLessVars( $config ), $extraVars ) );
-               $parser->SetImportDirs( array_fill_keys( $config->get( 'ResourceLoaderLESSImportPaths' ), '' ) );
+               $parser->ModifyVars( array_merge( $this->getLessVars(), $extraVars ) );
+               $parser->SetImportDirs(
+                       array_fill_keys( $this->config->get( 'ResourceLoaderLESSImportPaths' ), '' )
+               );
                $parser->SetOption( 'relativeUrls', false );
-               $parser->SetCacheDir( $config->get( 'CacheDirectory' ) ?: wfTempDir() );
+               $parser->SetCacheDir( $this->config->get( 'CacheDirectory' ) ?: wfTempDir() );
 
                return $parser;
        }
@@ -1617,16 +1617,15 @@ MESSAGE;
        /**
         * Get global LESS variables.
         *
-        * @param Config $config
-        * @since 1.22
+        * @since 1.27
         * @return array Map of variable names to string CSS values.
         */
-       public static function getLessVars( Config $config ) {
-               if ( !self::$lessVars ) {
-                       $lessVars = $config->get( 'ResourceLoaderLESSVars' );
+       public function getLessVars() {
+               if ( !$this->lessVars ) {
+                       $lessVars = $this->config->get( 'ResourceLoaderLESSVars' );
                        Hooks::run( 'ResourceLoaderGetLessVars', array( &$lessVars ) );
-                       self::$lessVars = $lessVars;
+                       $this->lessVars = $lessVars;
                }
-               return self::$lessVars;
+               return $this->lessVars;
        }
 }
index f5b3bad..98269ae 100644 (file)
@@ -957,7 +957,7 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
                        }
                }
 
-               $compiler = ResourceLoader::getLessCompiler( $this->getConfig(), $vars );
+               $compiler = $context->getResourceLoader()->getLessCompiler( $vars );
                $css = $compiler->parseFile( $fileName )->getCss();
                $files = $compiler->AllParsedFiles();
                $this->localFileRefs = array_merge( $this->localFileRefs, $files );
index 9d5fe38..1f35e1f 100644 (file)
@@ -272,7 +272,7 @@ class ResourceLoaderImage {
         */
        protected function variantize( $variantConf, ResourceLoaderContext $context ) {
                $dom = new DomDocument;
-               $dom->load( $this->getPath( $context ) );
+               $dom->loadXml( file_get_contents( $this->getPath( $context ) ) );
                $root = $dom->documentElement;
                $wrapper = $dom->createElement( 'g' );
                while ( $root->firstChild ) {
index 113fc84..bcd159f 100644 (file)
@@ -180,6 +180,7 @@ abstract class ResourceLoaderModule implements LoggerAwareInterface {
        /**
         * @since 1.27
         * @param LoggerInterface $logger
+        * @return null
         */
        public function setLogger( LoggerInterface $logger ) {
                $this->logger = $logger;
@@ -410,8 +411,8 @@ abstract class ResourceLoaderModule implements LoggerAwareInterface {
         * This is used to retrieve data in batches. See ResourceLoader::preloadModuleInfo().
         * To save the data, use saveFileDependencies().
         *
-        * @param string $skin Skin name
-        * @param array $deps Array of file names
+        * @param ResourceLoaderContext $context
+        * @param string[] $files Array of file names
         */
        public function setFileDependencies( ResourceLoaderContext $context, $files ) {
                $vary = $context->getSkin() . '|' . $context->getLanguage();
diff --git a/includes/session/BotPasswordSessionProvider.php b/includes/session/BotPasswordSessionProvider.php
deleted file mode 100644 (file)
index d9c60c7..0000000
+++ /dev/null
@@ -1,167 +0,0 @@
-<?php
-/**
- * Session provider for bot passwords
- *
- * 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 Session
- */
-
-namespace MediaWiki\Session;
-
-use BotPassword;
-use User;
-use WebRequest;
-
-/**
- * Session provider for bot passwords
- * @since 1.27
- */
-class BotPasswordSessionProvider extends ImmutableSessionProviderWithCookie {
-
-       /**
-        * @param array $params Keys include:
-        *  - priority: (required) Set the priority
-        *  - sessionCookieName: Session cookie name. Default is '_BPsession'.
-        *  - sessionCookieOptions: Options to pass to WebResponse::setCookie().
-        */
-       public function __construct( array $params = array() ) {
-               if ( !isset( $params['sessionCookieName'] ) ) {
-                       $params['sessionCookieName'] = '_BPsession';
-               }
-               parent::__construct( $params );
-
-               if ( !isset( $params['priority'] ) ) {
-                       throw new \InvalidArgumentException( __METHOD__ . ': priority must be specified' );
-               }
-               if ( $params['priority'] < SessionInfo::MIN_PRIORITY ||
-                       $params['priority'] > SessionInfo::MAX_PRIORITY
-               ) {
-                       throw new \InvalidArgumentException( __METHOD__ . ': Invalid priority' );
-               }
-
-               $this->priority = $params['priority'];
-       }
-
-       public function provideSessionInfo( WebRequest $request ) {
-               // Only relevant for the API
-               if ( !defined( 'MW_API' ) ) {
-                       return null;
-               }
-
-               // Enabled?
-               if ( !$this->config->get( 'EnableBotPasswords' ) ) {
-                       return null;
-               }
-
-               // Have a session ID?
-               $id = $this->getSessionIdFromCookie( $request );
-               if ( $id === null ) {
-                       return null;
-               }
-
-               return new SessionInfo( $this->priority, array(
-                       'provider' => $this,
-                       'id' => $id,
-                       'persisted' => true
-               ) );
-       }
-
-       public function newSessionInfo( $id = null ) {
-               // We don't activate by default
-               return null;
-       }
-
-       /**
-        * Create a new session for a request
-        * @param User $user
-        * @param BotPassword $bp
-        * @param WebRequest $request
-        * @return Session
-        */
-       public function newSessionForRequest( User $user, BotPassword $bp, WebRequest $request ) {
-               $id = $this->getSessionIdFromCookie( $request );
-               $info = new SessionInfo( SessionInfo::MAX_PRIORITY, array(
-                       'provider' => $this,
-                       'id' => $id,
-                       'userInfo' => UserInfo::newFromUser( $user, true ),
-                       'persisted' => $id !== null,
-                       'metadata' => array(
-                               'centralId' => $bp->getUserCentralId(),
-                               'appId' => $bp->getAppId(),
-                               'token' => $bp->getToken(),
-                               'rights' => \MWGrants::getGrantRights( $bp->getGrants() ),
-                       ),
-               ) );
-               $session = $this->getManager()->getSessionFromInfo( $info, $request );
-               $session->persist();
-               return $session;
-       }
-
-       public function refreshSessionInfo( SessionInfo $info, WebRequest $request, &$metadata ) {
-               $missingKeys = array_diff(
-                       array( 'centralId', 'appId', 'token' ),
-                       array_keys( $metadata )
-               );
-               if ( $missingKeys ) {
-                       $this->logger->info( "Session $info: Missing metadata: " . join( ', ', $missingKeys ) );
-                       return false;
-               }
-
-               $bp = BotPassword::newFromCentralId( $metadata['centralId'], $metadata['appId'] );
-               if ( !$bp ) {
-                       $this->logger->info(
-                               "Session $info: No BotPassword for {$metadata['centralId']} {$metadata['appId']}"
-                       );
-                       return false;
-               }
-
-               if ( !hash_equals( $metadata['token'], $bp->getToken() ) ) {
-                       $this->logger->info( "Session $info: BotPassword token check failed" );
-                       return false;
-               }
-
-               $status = $bp->getRestrictions()->check( $request );
-               if ( !$status->isOk() ) {
-                       $this->logger->info( "Session $info: Restrictions check failed", $status->getValue() );
-                       return false;
-               }
-
-               // Update saved rights
-               $metadata['rights'] = \MWGrants::getGrantRights( $bp->getGrants() );
-
-               return true;
-       }
-
-       public function preventSessionsForUser( $username ) {
-               BotPassword::removeAllPasswordsForUser( $username );
-       }
-
-       public function getAllowedUserRights( SessionBackend $backend ) {
-               if ( $backend->getProvider() !== $this ) {
-                       throw new InvalidArgumentException( 'Backend\'s provider isn\'t $this' );
-               }
-               $data = $backend->getProviderMetadata();
-               if ( $data ) {
-                       return $data['rights'];
-               }
-
-               // Should never happen
-               $this->logger->debug( __METHOD__ . ': No provider metadata, returning no rights allowed' );
-               return array();
-       }
-}
diff --git a/includes/session/CookieSessionProvider.php b/includes/session/CookieSessionProvider.php
deleted file mode 100644 (file)
index f92a519..0000000
+++ /dev/null
@@ -1,324 +0,0 @@
-<?php
-/**
- * MediaWiki cookie-based session provider interface
- *
- * 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 Session
- */
-
-namespace MediaWiki\Session;
-
-use Config;
-use User;
-use WebRequest;
-
-/**
- * A CookieSessionProvider persists sessions using cookies
- *
- * @ingroup Session
- * @since 1.27
- */
-class CookieSessionProvider extends SessionProvider {
-
-       protected $params = array();
-       protected $cookieOptions = array();
-
-       /**
-        * @param array $params Keys include:
-        *  - priority: (required) Priority of the returned sessions
-        *  - callUserSetCookiesHook: Whether to call the deprecated hook
-        *  - sessionName: Session cookie name. Doesn't honor 'prefix'. Defaults to
-        *    $wgSessionName, or $wgCookiePrefix . '_session' if that is unset.
-        *  - cookieOptions: Options to pass to WebRequest::setCookie():
-        *    - prefix: Cookie prefix, defaults to $wgCookiePrefix
-        *    - path: Cookie path, defaults to $wgCookiePath
-        *    - domain: Cookie domain, defaults to $wgCookieDomain
-        *    - secure: Cookie secure flag, defaults to $wgCookieSecure
-        *    - httpOnly: Cookie httpOnly flag, defaults to $wgCookieHttpOnly
-        */
-       public function __construct( $params = array() ) {
-               parent::__construct();
-
-               $params += array(
-                       'cookieOptions' => array(),
-                       // @codeCoverageIgnoreStart
-               );
-               // @codeCoverageIgnoreEnd
-
-               if ( !isset( $params['priority'] ) ) {
-                       throw new \InvalidArgumentException( __METHOD__ . ': priority must be specified' );
-               }
-               if ( $params['priority'] < SessionInfo::MIN_PRIORITY ||
-                       $params['priority'] > SessionInfo::MAX_PRIORITY
-               ) {
-                       throw new \InvalidArgumentException( __METHOD__ . ': Invalid priority' );
-               }
-
-               if ( !is_array( $params['cookieOptions'] ) ) {
-                       throw new \InvalidArgumentException( __METHOD__ . ': cookieOptions must be an array' );
-               }
-
-               $this->priority = $params['priority'];
-               $this->cookieOptions = $params['cookieOptions'];
-               $this->params = $params;
-               unset( $this->params['priority'] );
-               unset( $this->params['cookieOptions'] );
-       }
-
-       public function setConfig( Config $config ) {
-               parent::setConfig( $config );
-
-               // @codeCoverageIgnoreStart
-               $this->params += array(
-                       // @codeCoverageIgnoreEnd
-                       'callUserSetCookiesHook' => false,
-                       'sessionName' =>
-                               $config->get( 'SessionName' ) ?: $config->get( 'CookiePrefix' ) . '_session',
-               );
-
-               // @codeCoverageIgnoreStart
-               $this->cookieOptions += array(
-                       // @codeCoverageIgnoreEnd
-                       'prefix' => $config->get( 'CookiePrefix' ),
-                       'path' => $config->get( 'CookiePath' ),
-                       'domain' => $config->get( 'CookieDomain' ),
-                       'secure' => $config->get( 'CookieSecure' ),
-                       'httpOnly' => $config->get( 'CookieHttpOnly' ),
-               );
-       }
-
-       public function provideSessionInfo( WebRequest $request ) {
-               $info = array(
-                       'id' => $request->getCookie( $this->params['sessionName'], '' )
-               );
-               if ( !SessionManager::validateSessionId( $info['id'] ) ) {
-                       unset( $info['id'] );
-               }
-
-               list( $userId, $userName, $token ) = $this->getUserInfoFromCookies( $request );
-               if ( $userId !== null ) {
-                       try {
-                               $userInfo = UserInfo::newFromId( $userId );
-                       } catch ( \InvalidArgumentException $ex ) {
-                               return null;
-                       }
-
-                       // Sanity check
-                       if ( $userName !== null && $userInfo->getName() !== $userName ) {
-                               return null;
-                       }
-
-                       if ( $token !== null ) {
-                               if ( !hash_equals( $userInfo->getToken(), $token ) ) {
-                                       return null;
-                               }
-                               $info['userInfo'] = $userInfo->verified();
-                       } elseif ( isset( $info['id'] ) ) { // No point if no session ID
-                               $info['userInfo'] = $userInfo;
-                       }
-               }
-
-               if ( !$info ) {
-                       return null;
-               }
-
-               $info += array(
-                       'provider' => $this,
-                       'persisted' => isset( $info['id'] ),
-                       'forceHTTPS' => $request->getCookie( 'forceHTTPS', '', false )
-               );
-
-               return new SessionInfo( $this->priority, $info );
-       }
-
-       public function persistsSessionId() {
-               return true;
-       }
-
-       public function canChangeUser() {
-               return true;
-       }
-
-       public function persistSession( SessionBackend $session, WebRequest $request ) {
-               $response = $request->response();
-               if ( $response->headersSent() ) {
-                       // Can't do anything now
-                       $this->logger->debug( __METHOD__ . ': Headers already sent' );
-                       return;
-               }
-
-               $user = $session->getUser();
-
-               $cookies = $this->cookieDataToExport( $user, $session->shouldRememberUser() );
-               $sessionData = $this->sessionDataToExport( $user );
-
-               // Legacy hook
-               if ( $this->params['callUserSetCookiesHook'] && !$user->isAnon() ) {
-                       \Hooks::run( 'UserSetCookies', array( $user, &$sessionData, &$cookies ) );
-               }
-
-               $options = $this->cookieOptions;
-               if ( $session->shouldForceHTTPS() || $user->requiresHTTPS() ) {
-                       $response->setCookie( 'forceHTTPS', 'true', $session->shouldRememberUser() ? 0 : null,
-                               array( 'prefix' => '', 'secure' => false ) + $options );
-                       $options['secure'] = true;
-               }
-
-               $response->setCookie( $this->params['sessionName'], $session->getId(), null,
-                       array( 'prefix' => '' ) + $options
-               );
-
-               $extendedCookies = $this->config->get( 'ExtendedLoginCookies' );
-               $extendedExpiry = $this->config->get( 'ExtendedLoginCookieExpiration' );
-
-               foreach ( $cookies as $key => $value ) {
-                       if ( $value === false ) {
-                               $response->clearCookie( $key, $options );
-                       } else {
-                               if ( $extendedExpiry !== null && in_array( $key, $extendedCookies ) ) {
-                                       $expiry = time() + (int)$extendedExpiry;
-                               } else {
-                                       $expiry = 0; // Default cookie expiration
-                               }
-                               $response->setCookie( $key, (string)$value, $expiry, $options );
-                       }
-               }
-
-               $this->setLoggedOutCookie( $session->getLoggedOutTimestamp(), $request );
-
-               if ( $sessionData ) {
-                       $session->addData( $sessionData );
-               }
-       }
-
-       public function unpersistSession( WebRequest $request ) {
-               $response = $request->response();
-               if ( $response->headersSent() ) {
-                       // Can't do anything now
-                       $this->logger->debug( __METHOD__ . ': Headers already sent' );
-                       return;
-               }
-
-               $cookies = array(
-                       'UserID' => false,
-                       'Token' => false,
-               );
-
-               $response->clearCookie(
-                       $this->params['sessionName'], array( 'prefix' => '' ) + $this->cookieOptions
-               );
-
-               foreach ( $cookies as $key => $value ) {
-                       $response->clearCookie( $key, $this->cookieOptions );
-               }
-
-               $response->clearCookie( 'forceHTTPS',
-                       array( 'prefix' => '', 'secure' => false ) + $this->cookieOptions );
-       }
-
-       /**
-        * Set the "logged out" cookie
-        * @param int $loggedOut timestamp
-        * @param WebRequest $request
-        */
-       protected function setLoggedOutCookie( $loggedOut, WebRequest $request ) {
-               if ( $loggedOut + 86400 > time() &&
-                       $loggedOut !== (int)$request->getCookie( 'LoggedOut', $this->cookieOptions['prefix'] )
-               ) {
-                       $request->response()->setCookie( 'LoggedOut', $loggedOut, $loggedOut + 86400,
-                               $this->cookieOptions );
-               }
-       }
-
-       public function getVaryCookies() {
-               return array(
-                       // Vary on token and session because those are the real authn
-                       // determiners. UserID and UserName don't matter without those.
-                       $this->cookieOptions['prefix'] . 'Token',
-                       $this->cookieOptions['prefix'] . 'LoggedOut',
-                       $this->params['sessionName'],
-                       'forceHTTPS',
-               );
-       }
-
-       public function suggestLoginUsername( WebRequest $request ) {
-                $name = $request->getCookie( 'UserName', $this->cookieOptions['prefix'] );
-                if ( $name !== null ) {
-                        $name = User::getCanonicalName( $name, 'usable' );
-                }
-                return $name === false ? null : $name;
-       }
-
-       /**
-        * Fetch the user identity from cookies
-        * @return array (int|null $id, string|null $token)
-        */
-       protected function getUserInfoFromCookies( $request ) {
-               $prefix = $this->cookieOptions['prefix'];
-               return array(
-                       $request->getCookie( 'UserID', $prefix ),
-                       $request->getCookie( 'UserName', $prefix ),
-                       $request->getCookie( 'Token', $prefix ),
-               );
-       }
-
-       /**
-        * Return the data to store in cookies
-        * @param User $user
-        * @param bool $remember
-        * @return array $cookies Set value false to unset the cookie
-        */
-       protected function cookieDataToExport( $user, $remember ) {
-               if ( $user->isAnon() ) {
-                       return array(
-                               'UserID' => false,
-                               'Token' => false,
-                       );
-               } else {
-                       return array(
-                               'UserID' => $user->getId(),
-                               'UserName' => $user->getName(),
-                               'Token' => $remember ? (string)$user->getToken() : false,
-                       );
-               }
-       }
-
-       /**
-        * Return extra data to store in the session
-        * @param User $user
-        * @return array $session
-        */
-       protected function sessionDataToExport( $user ) {
-               // If we're calling the legacy hook, we should populate $session
-               // like User::setCookies() did.
-               if ( !$user->isAnon() && $this->params['callUserSetCookiesHook'] ) {
-                       return array(
-                               'wsUserID' => $user->getId(),
-                               'wsToken' => $user->getToken(),
-                               'wsUserName' => $user->getName(),
-                       );
-               }
-
-               return array();
-       }
-
-       public function whyNoSession() {
-               return wfMessage( 'sessionprovider-nocookies' );
-       }
-
-}
diff --git a/includes/session/ImmutableSessionProviderWithCookie.php b/includes/session/ImmutableSessionProviderWithCookie.php
deleted file mode 100644 (file)
index 98f7e5c..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-<?php
-/**
- * MediaWiki session provider base class
- *
- * 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 Session
- */
-
-namespace MediaWiki\Session;
-
-use WebRequest;
-
-/**
- * An ImmutableSessionProviderWithCookie doesn't persist the user, but
- * optionally can use a cookie to support multiple IDs per session.
- *
- * As mentioned in the documentation for SessionProvider, many methods that are
- * technically "cannot persist ID" could be turned into "can persist ID but
- * not changing User" using a session cookie. This class implements such an
- * optional session cookie.
- *
- * @ingroup Session
- * @since 1.27
- */
-abstract class ImmutableSessionProviderWithCookie extends SessionProvider {
-
-       /** @var string|null */
-       protected $sessionCookieName = null;
-       protected $sessionCookieOptions = array();
-
-       /**
-        * @param array $params Keys include:
-        *  - sessionCookieName: Session cookie name, if multiple sessions per
-        *    client are to be supported.
-        *  - sessionCookieOptions: Options to pass to WebResponse::setCookie().
-        */
-       public function __construct( $params = array() ) {
-               parent::__construct();
-
-               if ( isset( $params['sessionCookieName'] ) ) {
-                       if ( !is_string( $params['sessionCookieName'] ) ) {
-                               throw new \InvalidArgumentException( 'sessionCookieName must be a string' );
-                       }
-                       $this->sessionCookieName = $params['sessionCookieName'];
-               }
-               if ( isset( $params['sessionCookieOptions'] ) ) {
-                       if ( !is_array( $params['sessionCookieOptions'] ) ) {
-                               throw new \InvalidArgumentException( 'sessionCookieOptions must be an array' );
-                       }
-                       $this->sessionCookieOptions = $params['sessionCookieOptions'];
-               }
-       }
-
-       /**
-        * Get the session ID from the cookie, if any.
-        *
-        * Only call this if $this->sessionCookieName !== null. If
-        * sessionCookieName is null, do some logic (probably involving a call to
-        * $this->hashToSessionId()) to create the single session ID corresponding
-        * to this WebRequest instead of calling this method.
-        *
-        * @param WebRequest $request
-        * @return string|null
-        */
-       protected function getSessionIdFromCookie( WebRequest $request ) {
-               if ( $this->sessionCookieName === null ) {
-                       throw new \BadMethodCallException(
-                               __METHOD__ . ' may not be called when $this->sessionCookieName === null'
-                       );
-               }
-
-               $prefix = isset( $this->sessionCookieOptions['prefix'] )
-                       ? $this->sessionCookieOptions['prefix']
-                       : $this->config->get( 'CookiePrefix' );
-               $id = $request->getCookie( $this->sessionCookieName, $prefix );
-               return SessionManager::validateSessionId( $id ) ? $id : null;
-       }
-
-       public function persistsSessionId() {
-               return $this->sessionCookieName !== null;
-       }
-
-       public function canChangeUser() {
-               return false;
-       }
-
-       public function persistSession( SessionBackend $session, WebRequest $request ) {
-               if ( $this->sessionCookieName === null ) {
-                       return;
-               }
-
-               $response = $request->response();
-               if ( $response->headersSent() ) {
-                       // Can't do anything now
-                       $this->logger->debug( __METHOD__ . ': Headers already sent' );
-                       return;
-               }
-
-               $options = $this->sessionCookieOptions;
-               if ( $session->shouldForceHTTPS() || $session->getUser()->requiresHTTPS() ) {
-                       $response->setCookie( 'forceHTTPS', 'true', $session->shouldRememberUser() ? 0 : null,
-                               array( 'prefix' => '', 'secure' => false ) + $options );
-                       $options['secure'] = true;
-               }
-
-               $response->setCookie( $this->sessionCookieName, $session->getId(), null, $options );
-       }
-
-       public function unpersistSession( WebRequest $request ) {
-               if ( $this->sessionCookieName === null ) {
-                       return;
-               }
-
-               $response = $request->response();
-               if ( $response->headersSent() ) {
-                       // Can't do anything now
-                       $this->logger->debug( __METHOD__ . ': Headers already sent' );
-                       return;
-               }
-
-               $response->clearCookie( $this->sessionCookieName, $this->sessionCookieOptions );
-       }
-
-       public function getVaryCookies() {
-               if ( $this->sessionCookieName === null ) {
-                       return array();
-               }
-
-               $prefix = isset( $this->sessionCookieOptions['prefix'] )
-                       ? $this->sessionCookieOptions['prefix']
-                       : $this->config->get( 'CookiePrefix' );
-               return array( $prefix . $this->sessionCookieName );
-       }
-
-       public function whyNoSession() {
-               return wfMessage( 'sessionprovider-nocookies' );
-       }
-}
diff --git a/includes/session/PHPSessionHandler.php b/includes/session/PHPSessionHandler.php
deleted file mode 100644 (file)
index c59cc96..0000000
+++ /dev/null
@@ -1,369 +0,0 @@
-<?php
-/**
- * Session storage in object 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 Session
- */
-
-namespace MediaWiki\Session;
-
-use Psr\Log\LoggerInterface;
-use BagOStuff;
-
-/**
- * Adapter for PHP's session handling
- * @todo Once we drop support for PHP < 5.4, use SessionHandlerInterface
- *  (should just be a matter of adding "implements SessionHandlerInterface" and
- *  changing the session_set_save_handler() call).
- * @ingroup Session
- * @since 1.27
- */
-class PHPSessionHandler {
-       /** @var PHPSessionHandler */
-       protected static $instance = null;
-
-       /** @var bool Whether PHP session handling is enabled */
-       protected $enable = false;
-       protected $warn = true;
-
-       /** @var SessionManager|null */
-       protected $manager;
-
-       /** @var BagOStuff|null */
-       protected $store;
-
-       /** @var LoggerInterface */
-       protected $logger;
-
-       /** @var array Track original session fields for later modification check */
-       protected $sessionFieldCache = array();
-
-       protected function __construct( SessionManager $manager ) {
-               $this->setEnableFlags(
-                       \RequestContext::getMain()->getConfig()->get( 'PHPSessionHandling' )
-               );
-               $manager->setupPHPSessionHandler( $this );
-       }
-
-       /**
-        * Set $this->enable and $this->warn
-        *
-        * Separate just because there doesn't seem to be a good way to test it
-        * otherwise.
-        *
-        * @param string $PHPSessionHandling See $wgPHPSessionHandling
-        */
-       private function setEnableFlags( $PHPSessionHandling ) {
-               switch ( $PHPSessionHandling ) {
-                       case 'enable':
-                               $this->enable = true;
-                               $this->warn = false;
-                               break;
-
-                       case 'warn':
-                               $this->enable = true;
-                               $this->warn = true;
-                               break;
-
-                       case 'disable':
-                               $this->enable = false;
-                               $this->warn = false;
-                               break;
-               }
-       }
-
-       /**
-        * Test whether the handler is installed
-        * @return bool
-        */
-       public static function isInstalled() {
-               return (bool)self::$instance;
-       }
-
-       /**
-        * Test whether the handler is installed and enabled
-        * @return bool
-        */
-       public static function isEnabled() {
-               return self::$instance && self::$instance->enable;
-       }
-
-       /**
-        * Install a session handler for the current web request
-        * @param SessionManager $manager
-        */
-       public static function install( SessionManager $manager ) {
-               if ( self::$instance ) {
-                       $manager->setupPHPSessionHandler( self::$instance );
-                       return;
-               }
-
-               self::$instance = new self( $manager );
-
-               // Close any auto-started session, before we replace it
-               session_write_close();
-
-               // Tell PHP not to mess with cookies itself
-               ini_set( 'session.use_cookies', 0 );
-               ini_set( 'session.use_trans_sid', 0 );
-
-               // Also set a sane serialization handler
-               \Wikimedia\PhpSessionSerializer::setSerializeHandler();
-
-               session_set_save_handler(
-                       array( self::$instance, 'open' ),
-                       array( self::$instance, 'close' ),
-                       array( self::$instance, 'read' ),
-                       array( self::$instance, 'write' ),
-                       array( self::$instance, 'destroy' ),
-                       array( self::$instance, 'gc' )
-               );
-
-               // It's necessary to register a shutdown function to call session_write_close(),
-               // because by the time the request shutdown function for the session module is
-               // called, other needed objects may have already been destroyed. Shutdown functions
-               // registered this way are called before object destruction.
-               register_shutdown_function( array( self::$instance, 'handleShutdown' ) );
-       }
-
-       /**
-        * Set the manager, store, and logger
-        * @private Use self::install().
-        * @param SessionManager $manager
-        * @param BagOStuff $store
-        * @param LoggerInterface $store
-        */
-       public function setManager(
-               SessionManager $manager, BagOStuff $store, LoggerInterface $logger
-       ) {
-               if ( $this->manager !== $manager ) {
-                       // Close any existing session before we change stores
-                       if ( $this->manager ) {
-                               session_write_close();
-                       }
-                       $this->manager = $manager;
-                       $this->store = $store;
-                       $this->logger = $logger;
-                       \Wikimedia\PhpSessionSerializer::setLogger( $this->logger );
-               }
-       }
-
-       /**
-        * Initialize the session (handler)
-        * @private For internal use only
-        * @param string $save_path Path used to store session files (ignored)
-        * @param string $session_name Session name (ignored)
-        * @return bool Success
-        */
-       public function open( $save_path, $session_name ) {
-               if ( self::$instance !== $this ) {
-                       throw new \UnexpectedValueException( __METHOD__ . ': Wrong instance called!' );
-               }
-               if ( !$this->enable ) {
-                       throw new \BadMethodCallException( 'Attempt to use PHP session management' );
-               }
-               return true;
-       }
-
-       /**
-        * Close the session (handler)
-        * @private For internal use only
-        * @return bool Success
-        */
-       public function close() {
-               if ( self::$instance !== $this ) {
-                       throw new \UnexpectedValueException( __METHOD__ . ': Wrong instance called!' );
-               }
-               $this->sessionFieldCache = array();
-               return true;
-       }
-
-       /**
-        * Read session data
-        * @private For internal use only
-        * @param string $id Session id
-        * @return string Session data
-        */
-       public function read( $id ) {
-               if ( self::$instance !== $this ) {
-                       throw new \UnexpectedValueException( __METHOD__ . ': Wrong instance called!' );
-               }
-               if ( !$this->enable ) {
-                       throw new \BadMethodCallException( 'Attempt to use PHP session management' );
-               }
-
-               $session = $this->manager->getSessionById( $id, true );
-               if ( !$session ) {
-                       return '';
-               }
-               $session->persist();
-
-               $data = iterator_to_array( $session );
-               $this->sessionFieldCache[$id] = $data;
-               return (string)\Wikimedia\PhpSessionSerializer::encode( $data );
-       }
-
-       /**
-        * Write session data
-        * @private For internal use only
-        * @param string $id Session id
-        * @param string $dataStr Session data. Not that you should ever call this
-        *   directly, but note that this has the same issues with code injection
-        *   via user-controlled data as does PHP's unserialize function.
-        * @return bool Success
-        */
-       public function write( $id, $dataStr ) {
-               if ( self::$instance !== $this ) {
-                       throw new \UnexpectedValueException( __METHOD__ . ': Wrong instance called!' );
-               }
-               if ( !$this->enable ) {
-                       throw new \BadMethodCallException( 'Attempt to use PHP session management' );
-               }
-
-               $session = $this->manager->getSessionById( $id );
-
-               // First, decode the string PHP handed us
-               $data = \Wikimedia\PhpSessionSerializer::decode( $dataStr );
-               if ( $data === null ) {
-                       // @codeCoverageIgnoreStart
-                       return false;
-                       // @codeCoverageIgnoreEnd
-               }
-
-               // Now merge the data into the Session object.
-               $changed = false;
-               $cache = isset( $this->sessionFieldCache[$id] ) ? $this->sessionFieldCache[$id] : array();
-               foreach ( $data as $key => $value ) {
-                       if ( !isset( $cache[$key] ) ) {
-                               if ( $session->exists( $key ) ) {
-                                       // New in both, so ignore and log
-                                       $this->logger->warning(
-                                               __METHOD__ . ": Key \"$key\" added in both Session and \$_SESSION!"
-                                       );
-                               } else {
-                                       // New in $_SESSION, keep it
-                                       $session->set( $key, $value );
-                                       $changed = true;
-                               }
-                       } elseif ( $cache[$key] === $value ) {
-                               // Unchanged in $_SESSION, so ignore it
-                       } elseif ( !$session->exists( $key ) ) {
-                               // Deleted in Session, keep but log
-                               $this->logger->warning(
-                                       __METHOD__ . ": Key \"$key\" deleted in Session and changed in \$_SESSION!"
-                               );
-                               $session->set( $key, $value );
-                               $changed = true;
-                       } elseif ( $cache[$key] === $session->get( $key ) ) {
-                               // Unchanged in Session, so keep it
-                               $session->set( $key, $value );
-                               $changed = true;
-                       } else {
-                               // Changed in both, so ignore and log
-                               $this->logger->warning(
-                                       __METHOD__ . ": Key \"$key\" changed in both Session and \$_SESSION!"
-                               );
-                       }
-               }
-               // Anything deleted in $_SESSION and unchanged in Session should be deleted too
-               // (but not if $_SESSION can't represent it at all)
-               \Wikimedia\PhpSessionSerializer::setLogger( new \Psr\Log\NullLogger() );
-               foreach ( $cache as $key => $value ) {
-                       if ( !isset( $data[$key] ) && $session->exists( $key ) &&
-                               \Wikimedia\PhpSessionSerializer::encode( array( $key => true ) )
-                       ) {
-                               if ( $cache[$key] === $session->get( $key ) ) {
-                                       // Unchanged in Session, delete it
-                                       $session->remove( $key );
-                                       $changed = true;
-                               } else {
-                                       // Changed in Session, ignore deletion and log
-                                       $this->logger->warning(
-                                               __METHOD__ . ": Key \"$key\" changed in Session and deleted in \$_SESSION!"
-                                       );
-                               }
-                       }
-               }
-               \Wikimedia\PhpSessionSerializer::setLogger( $this->logger );
-
-               // Save and update cache if anything changed
-               if ( $changed ) {
-                       if ( $this->warn ) {
-                               wfDeprecated( '$_SESSION', '1.27' );
-                               $this->logger->warning( 'Something wrote to $_SESSION!' );
-                       }
-
-                       $session->save();
-                       $this->sessionFieldCache[$id] = iterator_to_array( $session );
-               }
-
-               $session->persist();
-
-               return true;
-       }
-
-       /**
-        * Destroy a session
-        * @private For internal use only
-        * @param string $id Session id
-        * @return bool Success
-        */
-       public function destroy( $id ) {
-               if ( self::$instance !== $this ) {
-                       throw new \UnexpectedValueException( __METHOD__ . ': Wrong instance called!' );
-               }
-               if ( !$this->enable ) {
-                       throw new \BadMethodCallException( 'Attempt to use PHP session management' );
-               }
-               $session = $this->manager->getSessionById( $id, true );
-               if ( $session ) {
-                       $session->clear();
-               }
-               return true;
-       }
-
-       /**
-        * Execute garbage collection.
-        * @private For internal use only
-        * @param int $maxlifetime Maximum session life time (ignored)
-        * @return bool Success
-        */
-       public function gc( $maxlifetime ) {
-               if ( self::$instance !== $this ) {
-                       throw new \UnexpectedValueException( __METHOD__ . ': Wrong instance called!' );
-               }
-               $before = date( 'YmdHis', time() );
-               $this->store->deleteObjectsExpiringBefore( $before );
-               return true;
-       }
-
-       /**
-        * Shutdown function.
-        *
-        * See the comment inside self::install for rationale.
-        * @codeCoverageIgnore
-        * @private For internal use only
-        */
-       public function handleShutdown() {
-               if ( $this->enable ) {
-                       session_write_close();
-               }
-       }
-
-}
diff --git a/includes/session/Session.php b/includes/session/Session.php
deleted file mode 100644 (file)
index 840baa7..0000000
+++ /dev/null
@@ -1,372 +0,0 @@
-<?php
-/**
- * MediaWiki session
- *
- * 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 Session
- */
-
-namespace MediaWiki\Session;
-
-use User;
-use WebRequest;
-
-/**
- * Manages data for an an authenticated session
- *
- * A Session represents the fact that the current HTTP request is part of a
- * session. There are two broad types of Sessions, based on whether they
- * return true or false from self::canSetUser():
- * * When true (mutable), the Session identifies multiple requests as part of
- *   a session generically, with no tie to a particular user.
- * * When false (immutable), the Session identifies multiple requests as part
- *   of a session by identifying and authenticating the request itself as
- *   belonging to a particular user.
- *
- * The Session object also serves as a replacement for PHP's $_SESSION,
- * managing access to per-session data.
- *
- * @todo Once we drop support for PHP 5.3.3, implementing ArrayAccess would be nice.
- * @ingroup Session
- * @since 1.27
- */
-final class Session implements \Countable, \Iterator {
-       /** @var SessionBackend Session backend */
-       private $backend;
-
-       /** @var int Session index */
-       private $index;
-
-       /**
-        * @param SessionBackend $backend
-        * @param int $index
-        */
-       public function __construct( SessionBackend $backend, $index ) {
-               $this->backend = $backend;
-               $this->index = $index;
-       }
-
-       public function __destruct() {
-               $this->backend->deregisterSession( $this->index );
-       }
-
-       /**
-        * Returns the session ID
-        * @return string
-        */
-       public function getId() {
-               return $this->backend->getId();
-       }
-
-       /**
-        * Returns the SessionId object
-        * @private For internal use by WebRequest
-        * @return SessionId
-        */
-       public function getSessionId() {
-               return $this->backend->getSessionId();
-       }
-
-       /**
-        * Changes the session ID
-        * @return string New ID (might be the same as the old)
-        */
-       public function resetId() {
-               return $this->backend->resetId();
-       }
-
-       /**
-        * Fetch the SessionProvider for this session
-        * @return SessionProviderInterface
-        */
-       public function getProvider() {
-               return $this->backend->getProvider();
-       }
-
-       /**
-        * Indicate whether this session is persisted across requests
-        *
-        * For example, if cookies are set.
-        *
-        * @return bool
-        */
-       public function isPersistent() {
-               return $this->backend->isPersistent();
-       }
-
-       /**
-        * Make this session persisted across requests
-        *
-        * If the session is already persistent, equivalent to calling
-        * $this->renew().
-        */
-       public function persist() {
-               $this->backend->persist();
-       }
-
-       /**
-        * Indicate whether the user should be remembered independently of the
-        * session ID.
-        * @return bool
-        */
-       public function shouldRememberUser() {
-               return $this->backend->shouldRememberUser();
-       }
-
-       /**
-        * Set whether the user should be remembered independently of the session
-        * ID.
-        * @param bool $remember
-        */
-       public function setRememberUser( $remember ) {
-               $this->backend->setRememberUser( $remember );
-       }
-
-       /**
-        * Returns the request associated with this session
-        * @return WebRequest
-        */
-       public function getRequest() {
-               return $this->backend->getRequest( $this->index );
-       }
-
-       /**
-        * Returns the authenticated user for this session
-        * @return User
-        */
-       public function getUser() {
-               return $this->backend->getUser();
-       }
-
-       /**
-        * Fetch the rights allowed the user when this session is active.
-        * @return null|string[] Allowed user rights, or null to allow all.
-        */
-       public function getAllowedUserRights() {
-               return $this->backend->getAllowedUserRights();
-       }
-
-       /**
-        * Indicate whether the session user info can be changed
-        * @return bool
-        */
-       public function canSetUser() {
-               return $this->backend->canSetUser();
-       }
-
-       /**
-        * Set a new user for this session
-        * @note This should only be called when the user has been authenticated
-        * @param User $user User to set on the session.
-        *   This may become a "UserValue" in the future, or User may be refactored
-        *   into such.
-        */
-       public function setUser( $user ) {
-               $this->backend->setUser( $user );
-       }
-
-       /**
-        * Get a suggested username for the login form
-        * @return string|null
-        */
-       public function suggestLoginUsername() {
-               return $this->backend->suggestLoginUsername( $this->index );
-       }
-
-       /**
-        * Whether HTTPS should be forced
-        * @return bool
-        */
-       public function shouldForceHTTPS() {
-               return $this->backend->shouldForceHTTPS();
-       }
-
-       /**
-        * Set whether HTTPS should be forced
-        * @param bool $force
-        */
-       public function setForceHTTPS( $force ) {
-               $this->backend->setForceHTTPS( $force );
-       }
-
-       /**
-        * Fetch the "logged out" timestamp
-        * @return int
-        */
-       public function getLoggedOutTimestamp() {
-               return $this->backend->getLoggedOutTimestamp();
-       }
-
-       /**
-        * Set the "logged out" timestamp
-        * @param int $ts
-        */
-       public function setLoggedOutTimestamp( $ts ) {
-               $this->backend->setLoggedOutTimestamp( $ts );
-       }
-
-       /**
-        * Fetch provider metadata
-        * @protected For use by SessionProvider subclasses only
-        * @return mixed
-        */
-       public function getProviderMetadata() {
-               return $this->backend->getProviderMetadata();
-       }
-
-       /**
-        * Delete all session data and clear the user (if possible)
-        */
-       public function clear() {
-               $data = &$this->backend->getData();
-               if ( $data ) {
-                       $data = array();
-                       $this->backend->dirty();
-               }
-               if ( $this->backend->canSetUser() ) {
-                       $this->backend->setUser( new User );
-               }
-               $this->backend->save();
-       }
-
-       /**
-        * Renew the session
-        *
-        * Resets the TTL in the backend store if the session is near expiring, and
-        * re-persists the session to any active WebRequests if persistent.
-        */
-       public function renew() {
-               $this->backend->renew();
-       }
-
-       /**
-        * Fetch a copy of this session attached to an alternative WebRequest
-        *
-        * Actions on the copy will affect this session too, and vice versa.
-        *
-        * @param WebRequest $request Any existing session associated with this
-        *  WebRequest object will be overwritten.
-        * @return Session
-        */
-       public function sessionWithRequest( WebRequest $request ) {
-               $request->setSessionId( $this->backend->getSessionId() );
-               return $this->backend->getSession( $request );
-       }
-
-       /**
-        * Fetch a value from the session
-        * @param string|int $key
-        * @param mixed $default
-        * @return mixed
-        */
-       public function get( $key, $default = null ) {
-               $data = &$this->backend->getData();
-               return array_key_exists( $key, $data ) ? $data[$key] : $default;
-       }
-
-       /**
-        * Test if a value exists in the session
-        * @param string|int $key
-        * @return bool
-        */
-       public function exists( $key ) {
-               $data = &$this->backend->getData();
-               return array_key_exists( $key, $data );
-       }
-
-       /**
-        * Set a value in the session
-        * @param string|int $key
-        * @param mixed $value
-        */
-       public function set( $key, $value ) {
-               $data = &$this->backend->getData();
-               if ( !array_key_exists( $key, $data ) || $data[$key] !== $value ) {
-                       $data[$key] = $value;
-                       $this->backend->dirty();
-               }
-       }
-
-       /**
-        * Remove a value from the session
-        * @param string|int $key
-        */
-       public function remove( $key ) {
-               $data = &$this->backend->getData();
-               if ( array_key_exists( $key, $data ) ) {
-                       unset( $data[$key] );
-                       $this->backend->dirty();
-               }
-       }
-
-       /**
-        * Delay automatic saving while multiple updates are being made
-        *
-        * Calls to save() or clear() will not be delayed.
-        *
-        * @return \ScopedCallback When this goes out of scope, a save will be triggered
-        */
-       public function delaySave() {
-               return $this->backend->delaySave();
-       }
-
-       /**
-        * Save the session
-        */
-       public function save() {
-               $this->backend->save();
-       }
-
-       /**
-        * @name Interface methods
-        * @{
-        */
-
-       public function count() {
-               $data = &$this->backend->getData();
-               return count( $data );
-       }
-
-       public function current() {
-               $data = &$this->backend->getData();
-               return current( $data );
-       }
-
-       public function key() {
-               $data = &$this->backend->getData();
-               return key( $data );
-       }
-
-       public function next() {
-               $data = &$this->backend->getData();
-               next( $data );
-       }
-
-       public function rewind() {
-               $data = &$this->backend->getData();
-               reset( $data );
-       }
-
-       public function valid() {
-               $data = &$this->backend->getData();
-               return key( $data ) !== null;
-       }
-
-       /**@}*/
-
-}
diff --git a/includes/session/SessionBackend.php b/includes/session/SessionBackend.php
deleted file mode 100644 (file)
index 5743b12..0000000
+++ /dev/null
@@ -1,632 +0,0 @@
-<?php
-/**
- * MediaWiki session 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
- *
- * @file
- * @ingroup Session
- */
-
-namespace MediaWiki\Session;
-
-use BagOStuff;
-use Psr\Log\LoggerInterface;
-use User;
-use WebRequest;
-
-/**
- * This is the actual workhorse for Session.
- *
- * Most code does not need to use this class, you want \\MediaWiki\\Session\\Session.
- * The exceptions are SessionProviders and SessionMetadata hook functions,
- * which get an instance of this class rather than Session.
- *
- * The reasons for this split are:
- * 1. A session can be attached to multiple requests, but we want the Session
- *    object to have some features that correspond to just one of those
- *    requests.
- * 2. We want reasonable garbage collection behavior, but we also want the
- *    SessionManager to hold a reference to every active session so it can be
- *    saved when the request ends.
- *
- * @ingroup Session
- * @since 1.27
- */
-final class SessionBackend {
-       /** @var SessionId */
-       private $id;
-
-       private $persist = false;
-       private $remember = false;
-       private $forceHTTPS = false;
-
-       /** @var array|null */
-       private $data = null;
-
-       private $forcePersist = false;
-       private $metaDirty = false;
-       private $dataDirty = false;
-
-       /** @var string Used to detect subarray modifications */
-       private $dataHash = null;
-
-       /** @var BagOStuff */
-       private $store;
-
-       /** @var LoggerInterface */
-       private $logger;
-
-       /** @var int */
-       private $lifetime;
-
-       /** @var User */
-       private $user;
-
-       private $curIndex = 0;
-
-       /** @var WebRequest[] Session requests */
-       private $requests = array();
-
-       /** @var SessionProvider provider */
-       private $provider;
-
-       /** @var array|null provider-specified metadata */
-       private $providerMetadata = null;
-
-       private $expires = 0;
-       private $loggedOut = 0;
-       private $delaySave = 0;
-
-       private $usePhpSessionHandling = true;
-       private $checkPHPSessionRecursionGuard = false;
-
-       /**
-        * @param SessionId $id Session ID object
-        * @param SessionInfo $info Session info to populate from
-        * @param BagOStuff $store Backend data store
-        * @param LoggerInterface $logger
-        * @param int $lifetime Session data lifetime in seconds
-        */
-       public function __construct(
-               SessionId $id, SessionInfo $info, BagOStuff $store, LoggerInterface $logger, $lifetime
-       ) {
-               $phpSessionHandling = \RequestContext::getMain()->getConfig()->get( 'PHPSessionHandling' );
-               $this->usePhpSessionHandling = $phpSessionHandling !== 'disable';
-
-               if ( $info->getUserInfo() && !$info->getUserInfo()->isVerified() ) {
-                       throw new \InvalidArgumentException(
-                               "Refusing to create session for unverified user {$info->getUserInfo()}"
-                       );
-               }
-               if ( $info->getProvider() === null ) {
-                       throw new \InvalidArgumentException( 'Cannot create session without a provider' );
-               }
-               if ( $info->getId() !== $id->getId() ) {
-                       throw new \InvalidArgumentException( 'SessionId and SessionInfo don\'t match' );
-               }
-
-               $this->id = $id;
-               $this->user = $info->getUserInfo() ? $info->getUserInfo()->getUser() : new User;
-               $this->store = $store;
-               $this->logger = $logger;
-               $this->lifetime = $lifetime;
-               $this->provider = $info->getProvider();
-               $this->persist = $info->wasPersisted();
-               $this->remember = $info->wasRemembered();
-               $this->forceHTTPS = $info->forceHTTPS();
-               $this->providerMetadata = $info->getProviderMetadata();
-
-               $blob = $store->get( wfMemcKey( 'MWSession', (string)$this->id ) );
-               if ( !is_array( $blob ) ||
-                       !isset( $blob['metadata'] ) || !is_array( $blob['metadata'] ) ||
-                       !isset( $blob['data'] ) || !is_array( $blob['data'] )
-               ) {
-                       $this->data = array();
-                       $this->dataDirty = true;
-                       $this->metaDirty = true;
-                       $this->logger->debug( "SessionBackend $this->id is unsaved, marking dirty in constructor" );
-               } else {
-                       $this->data = $blob['data'];
-                       if ( isset( $blob['metadata']['loggedOut'] ) ) {
-                               $this->loggedOut = (int)$blob['metadata']['loggedOut'];
-                       }
-                       if ( isset( $blob['metadata']['expires'] ) ) {
-                               $this->expires = (int)$blob['metadata']['expires'];
-                       } else {
-                               $this->metaDirty = true;
-                               $this->logger->debug(
-                                       "SessionBackend $this->id metadata dirty due to missing expiration timestamp"
-                               );
-                       }
-               }
-               $this->dataHash = md5( serialize( $this->data ) );
-       }
-
-       /**
-        * Return a new Session for this backend
-        * @param WebRequest $request
-        * @return Session
-        */
-       public function getSession( WebRequest $request ) {
-               $index = ++$this->curIndex;
-               $this->requests[$index] = $request;
-               $session = new Session( $this, $index );
-               return $session;
-       }
-
-       /**
-        * Deregister a Session
-        * @private For use by \\MediaWiki\\Session\\Session::__destruct() only
-        * @param int $index
-        */
-       public function deregisterSession( $index ) {
-               unset( $this->requests[$index] );
-               if ( !count( $this->requests ) ) {
-                       $this->save( true );
-                       $this->provider->getManager()->deregisterSessionBackend( $this );
-               }
-       }
-
-       /**
-        * Returns the session ID.
-        * @return string
-        */
-       public function getId() {
-               return (string)$this->id;
-       }
-
-       /**
-        * Fetch the SessionId object
-        * @private For internal use by WebRequest
-        * @return SessionId
-        */
-       public function getSessionId() {
-               return $this->id;
-       }
-
-       /**
-        * Changes the session ID
-        * @return string New ID (might be the same as the old)
-        */
-       public function resetId() {
-               if ( $this->provider->persistsSessionId() ) {
-                       $oldId = (string)$this->id;
-                       $restart = $this->usePhpSessionHandling && $oldId === session_id() &&
-                               PHPSessionHandler::isEnabled();
-
-                       if ( $restart ) {
-                               // If this session is the one behind PHP's $_SESSION, we need
-                               // to close then reopen it.
-                               session_write_close();
-                       }
-
-                       $this->provider->getManager()->changeBackendId( $this );
-                       $this->provider->sessionIdWasReset( $this, $oldId );
-                       $this->metaDirty = true;
-                       $this->logger->debug(
-                               "SessionBackend $this->id metadata dirty due to ID reset (formerly $oldId)"
-                       );
-
-                       if ( $restart ) {
-                               session_id( (string)$this->id );
-                               \MediaWiki\quietCall( 'session_start' );
-                       }
-
-                       $this->autosave();
-
-                       // Delete the data for the old session ID now
-                       $this->store->delete( wfMemcKey( 'MWSession', $oldId ) );
-               }
-       }
-
-       /**
-        * Fetch the SessionProvider for this session
-        * @return SessionProviderInterface
-        */
-       public function getProvider() {
-               return $this->provider;
-       }
-
-       /**
-        * Indicate whether this session is persisted across requests
-        *
-        * For example, if cookies are set.
-        *
-        * @return bool
-        */
-       public function isPersistent() {
-               return $this->persist;
-       }
-
-       /**
-        * Make this session persisted across requests
-        *
-        * If the session is already persistent, equivalent to calling
-        * $this->renew().
-        */
-       public function persist() {
-               if ( !$this->persist ) {
-                       $this->persist = true;
-                       $this->forcePersist = true;
-                       $this->logger->debug( "SessionBackend $this->id force-persist due to persist()" );
-                       $this->autosave();
-               } else {
-                       $this->renew();
-               }
-       }
-
-       /**
-        * Indicate whether the user should be remembered independently of the
-        * session ID.
-        * @return bool
-        */
-       public function shouldRememberUser() {
-               return $this->remember;
-       }
-
-       /**
-        * Set whether the user should be remembered independently of the session
-        * ID.
-        * @param bool $remember
-        */
-       public function setRememberUser( $remember ) {
-               if ( $this->remember !== (bool)$remember ) {
-                       $this->remember = (bool)$remember;
-                       $this->metaDirty = true;
-                       $this->logger->debug( "SessionBackend $this->id metadata dirty due to remember-user change" );
-                       $this->autosave();
-               }
-       }
-
-       /**
-        * Returns the request associated with a Session
-        * @param int $index Session index
-        * @return WebRequest
-        */
-       public function getRequest( $index ) {
-               if ( !isset( $this->requests[$index] ) ) {
-                       throw new \InvalidArgumentException( 'Invalid session index' );
-               }
-               return $this->requests[$index];
-       }
-
-       /**
-        * Returns the authenticated user for this session
-        * @return User
-        */
-       public function getUser() {
-               return $this->user;
-       }
-
-       /**
-        * Fetch the rights allowed the user when this session is active.
-        * @return null|string[] Allowed user rights, or null to allow all.
-        */
-       public function getAllowedUserRights() {
-               return $this->provider->getAllowedUserRights( $this );
-       }
-
-       /**
-        * Indicate whether the session user info can be changed
-        * @return bool
-        */
-       public function canSetUser() {
-               return $this->provider->canChangeUser();
-       }
-
-       /**
-        * Set a new user for this session
-        * @note This should only be called when the user has been authenticated via a login process
-        * @param User $user User to set on the session.
-        *   This may become a "UserValue" in the future, or User may be refactored
-        *   into such.
-        */
-       public function setUser( $user ) {
-               if ( !$this->canSetUser() ) {
-                       throw new \BadMethodCallException(
-                               'Cannot set user on this session; check $session->canSetUser() first'
-                       );
-               }
-
-               $this->user = $user;
-               $this->metaDirty = true;
-               $this->logger->debug( "SessionBackend $this->id metadata dirty due to user change" );
-               $this->autosave();
-       }
-
-       /**
-        * Get a suggested username for the login form
-        * @param int $index Session index
-        * @return string|null
-        */
-       public function suggestLoginUsername( $index ) {
-               if ( !isset( $this->requests[$index] ) ) {
-                       throw new \InvalidArgumentException( 'Invalid session index' );
-               }
-               return $this->provider->suggestLoginUsername( $this->requests[$index] );
-       }
-
-       /**
-        * Whether HTTPS should be forced
-        * @return bool
-        */
-       public function shouldForceHTTPS() {
-               return $this->forceHTTPS;
-       }
-
-       /**
-        * Set whether HTTPS should be forced
-        * @param bool $force
-        */
-       public function setForceHTTPS( $force ) {
-               if ( $this->forceHTTPS !== (bool)$force ) {
-                       $this->forceHTTPS = (bool)$force;
-                       $this->metaDirty = true;
-                       $this->logger->debug( "SessionBackend $this->id metadata dirty due to force-HTTPS change" );
-                       $this->autosave();
-               }
-       }
-
-       /**
-        * Fetch the "logged out" timestamp
-        * @return int
-        */
-       public function getLoggedOutTimestamp() {
-               return $this->loggedOut;
-       }
-
-       /**
-        * Set the "logged out" timestamp
-        * @param int $ts
-        */
-       public function setLoggedOutTimestamp( $ts = null ) {
-               $ts = (int)$ts;
-               if ( $this->loggedOut !== $ts ) {
-                       $this->loggedOut = $ts;
-                       $this->metaDirty = true;
-                       $this->logger->debug(
-                               "SessionBackend $this->id metadata dirty due to logged-out-timestamp change"
-                       );
-                       $this->autosave();
-               }
-       }
-
-       /**
-        * Fetch provider metadata
-        * @protected For use by SessionProvider subclasses only
-        * @return mixed
-        */
-       public function getProviderMetadata() {
-               return $this->providerMetadata;
-       }
-
-       /**
-        * Fetch the session data array
-        *
-        * Note the caller is responsible for calling $this->dirty() if anything in
-        * the array is changed.
-        *
-        * @private For use by \\MediaWiki\\Session\\Session only.
-        * @return array
-        */
-       public function &getData() {
-               return $this->data;
-       }
-
-       /**
-        * Add data to the session.
-        *
-        * Overwrites any existing data under the same keys.
-        *
-        * @param array $newData Key-value pairs to add to the session
-        */
-       public function addData( array $newData ) {
-               $data = &$this->getData();
-               foreach ( $newData as $key => $value ) {
-                       if ( !array_key_exists( $key, $data ) || $data[$key] !== $value ) {
-                               $data[$key] = $value;
-                               $this->dataDirty = true;
-                               $this->logger->debug(
-                                       "SessionBackend $this->id data dirty due to addData(): " . wfGetAllCallers( 5 )
-                               );
-                       }
-               }
-       }
-
-       /**
-        * Mark data as dirty
-        * @private For use by \\MediaWiki\\Session\\Session only.
-        */
-       public function dirty() {
-               $this->dataDirty = true;
-               $this->logger->debug(
-                       "SessionBackend $this->id data dirty due to dirty(): " . wfGetAllCallers( 5 )
-               );
-       }
-
-       /**
-        * Renew the session by resaving everything
-        *
-        * Resets the TTL in the backend store if the session is near expiring, and
-        * re-persists the session to any active WebRequests if persistent.
-        */
-       public function renew() {
-               if ( time() + $this->lifetime / 2 > $this->expires ) {
-                       $this->metaDirty = true;
-                       $this->logger->debug(
-                               "SessionBackend $this->id metadata dirty for renew(): " . wfGetAllCallers( 5 )
-                       );
-                       if ( $this->persist ) {
-                               $this->forcePersist = true;
-                               $this->logger->debug(
-                                       "SessionBackend $this->id force-persist for renew(): " . wfGetAllCallers( 5 )
-                               );
-                       }
-               }
-               $this->autosave();
-       }
-
-       /**
-        * Delay automatic saving while multiple updates are being made
-        *
-        * Calls to save() will not be delayed.
-        *
-        * @return \ScopedCallback When this goes out of scope, a save will be triggered
-        */
-       public function delaySave() {
-               $that = $this;
-               $this->delaySave++;
-               $ref = &$this->delaySave;
-               return new \ScopedCallback( function () use ( $that, &$ref ) {
-                       if ( --$ref <= 0 ) {
-                               $ref = 0;
-                               $that->save();
-                       }
-               } );
-       }
-
-       /**
-        * Save and persist session data, unless delayed
-        */
-       private function autosave() {
-               if ( $this->delaySave <= 0 ) {
-                       $this->save();
-               }
-       }
-
-       /**
-        * Save and persist session data
-        * @param bool $closing Whether the session is being closed
-        */
-       public function save( $closing = false ) {
-               if ( $this->provider->getManager()->isUserSessionPrevented( $this->user->getName() ) ) {
-                       $this->logger->debug(
-                               "SessionBackend $this->id not saving, " .
-                                       "user {$this->user} was passed to SessionManager::preventSessionsForUser"
-                       );
-                       return;
-               }
-
-               // Ensure the user has a token
-               // @codeCoverageIgnoreStart
-               $anon = $this->user->isAnon();
-               if ( !$anon && !$this->user->getToken() ) {
-                       $this->logger->debug(
-                               "SessionBackend $this->id creating token for user {$this->user} on save"
-                       );
-                       $this->user->setToken();
-                       if ( !wfReadOnly() ) {
-                               $this->user->saveSettings();
-                       }
-                       $this->metaDirty = true;
-               }
-               // @codeCoverageIgnoreEnd
-
-               if ( !$this->metaDirty && !$this->dataDirty &&
-                       $this->dataHash !== md5( serialize( $this->data ) )
-               ) {
-                       $this->logger->debug( "SessionBackend $this->id data dirty due to hash mismatch, " .
-                               "$this->dataHash !== " . md5( serialize( $this->data ) ) );
-                       $this->dataDirty = true;
-               }
-
-               if ( !$this->metaDirty && !$this->dataDirty && !$this->forcePersist ) {
-                       return;
-               }
-
-               $this->logger->debug( "SessionBackend $this->id save: " .
-                       'dataDirty=' . (int)$this->dataDirty . ' ' .
-                       'metaDirty=' . (int)$this->metaDirty . ' ' .
-                       'forcePersist=' . (int)$this->forcePersist
-               );
-
-               // Persist to the provider, if flagged
-               if ( $this->persist && ( $this->metaDirty || $this->forcePersist ) ) {
-                       foreach ( $this->requests as $request ) {
-                               $request->setSessionId( $this->getSessionId() );
-                               $this->provider->persistSession( $this, $request );
-                       }
-                       if ( !$closing ) {
-                               $this->checkPHPSession();
-                       }
-               }
-
-               $this->forcePersist = false;
-
-               if ( !$this->metaDirty && !$this->dataDirty ) {
-                       return;
-               }
-
-               // Save session data to store, if necessary
-               $metadata = $origMetadata = array(
-                       'provider' => (string)$this->provider,
-                       'providerMetadata' => $this->providerMetadata,
-                       'userId' => $anon ? 0 : $this->user->getId(),
-                       'userName' => $anon ? null : $this->user->getName(),
-                       'userToken' => $anon ? null : $this->user->getToken(),
-                       'remember' => !$anon && $this->remember,
-                       'forceHTTPS' => $this->forceHTTPS,
-                       'expires' => time() + $this->lifetime,
-                       'loggedOut' => $this->loggedOut,
-               );
-
-               \Hooks::run( 'SessionMetadata', array( $this, &$metadata, $this->requests ) );
-
-               foreach ( $origMetadata as $k => $v ) {
-                       if ( $metadata[$k] !== $v ) {
-                               throw new \UnexpectedValueException( "SessionMetadata hook changed metadata key \"$k\"" );
-                       }
-               }
-
-               $this->store->set(
-                       wfMemcKey( 'MWSession', (string)$this->id ),
-                       array(
-                               'data' => $this->data,
-                               'metadata' => $metadata,
-                       ),
-                       $metadata['expires']
-               );
-
-               $this->metaDirty = false;
-               $this->dataDirty = false;
-               $this->dataHash = md5( serialize( $this->data ) );
-               $this->expires = $metadata['expires'];
-       }
-
-       /**
-        * For backwards compatibility, open the PHP session when the global
-        * session is persisted
-        */
-       private function checkPHPSession() {
-               if ( !$this->checkPHPSessionRecursionGuard ) {
-                       $this->checkPHPSessionRecursionGuard = true;
-                       $ref = &$this->checkPHPSessionRecursionGuard;
-                       $reset = new \ScopedCallback( function () use ( &$ref ) {
-                               $ref = false;
-                       } );
-
-                       if ( $this->usePhpSessionHandling && session_id() === '' && PHPSessionHandler::isEnabled() &&
-                               SessionManager::getGlobalSession()->getId() === (string)$this->id
-                       ) {
-                               $this->logger->debug( "SessionBackend $this->id: Taking over PHP session" );
-                               session_id( (string)$this->id );
-                               \MediaWiki\quietCall( 'session_start' );
-                       }
-               }
-       }
-
-}
diff --git a/includes/session/SessionId.php b/includes/session/SessionId.php
deleted file mode 100644 (file)
index 0669100..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-/**
- * MediaWiki session ID holder
- *
- * 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 Session
- */
-
-namespace MediaWiki\Session;
-
-/**
- * Value object holding the session ID in a manner that can be globally
- * updated.
- *
- * This class exists because we want WebRequest to refer to the session, but it
- * can't hold the Session itself due to issues with circular references and it
- * can't just hold the ID as a string because we need to be able to update the
- * ID when SessionBackend::resetId() is called.
- *
- * @ingroup Session
- * @since 1.27
- */
-final class SessionId {
-       /** @var string */
-       private $id;
-
-       /**
-        * @param string $id
-        */
-       public function __construct( $id ) {
-               $this->id = $id;
-       }
-
-       /**
-        * Get the ID
-        * @return string
-        */
-       public function getId() {
-               return $this->id;
-       }
-
-       /**
-        * Set the ID
-        * @private For use by \\MediaWiki\\Session\\SessionManager only
-        * @param string $id
-        */
-       public function setId( $id ) {
-               $this->id = $id;
-       }
-
-       public function __toString() {
-               return $this->id;
-       }
-
-}
diff --git a/includes/session/SessionInfo.php b/includes/session/SessionInfo.php
deleted file mode 100644 (file)
index 9fe2cdf..0000000
+++ /dev/null
@@ -1,270 +0,0 @@
-<?php
-/**
- * MediaWiki session info
- *
- * 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 Session
- */
-
-namespace MediaWiki\Session;
-
-use Psr\Log\LoggerInterface;
-use BagOStuff;
-use WebRequest;
-
-/**
- * Value object returned by SessionProvider
- *
- * This holds the data necessary to construct a Session.
- *
- * @ingroup Session
- * @since 1.27
- */
-class SessionInfo {
-       /** Minimum allowed priority */
-       const MIN_PRIORITY = 1;
-
-       /** Maximum allowed priority */
-       const MAX_PRIORITY = 100;
-
-       /** @var SessionProvider|null */
-       private $provider;
-
-       /** @var string */
-       private $id;
-
-       /** @var int */
-       private $priority;
-
-       /** @var UserInfo|null */
-       private $userInfo = null;
-
-       private $persisted = false;
-       private $remembered = false;
-       private $forceHTTPS = false;
-       private $idIsSafe = false;
-
-       /** @var array|null */
-       private $providerMetadata = null;
-
-       /**
-        * @param int $priority Session priority
-        * @param array $data
-        *  - provider: (SessionProvider|null) If not given, the provider will be
-        *    determined from the saved session data.
-        *  - id: (string|null) Session ID
-        *  - userInfo: (UserInfo|null) User known from the request. If
-        *    $provider->canChangeUser() is false, a verified user
-        *    must be provided.
-        *  - persisted: (bool) Whether this session was persisted
-        *  - remembered: (bool) Whether the verified user was remembered.
-        *    Defaults to true.
-        *  - forceHTTPS: (bool) Whether to force HTTPS for this session
-        *  - metadata: (array) Provider metadata, to be returned by
-        *    Session::getProviderMetadata().
-        *  - idIsSafe: (bool) Set true if the 'id' did not come from the user.
-        *    Generally you'll use this from SessionProvider::newEmptySession(),
-        *    and not from any other method.
-        *  - copyFrom: (SessionInfo) SessionInfo to copy other data items from.
-        */
-       public function __construct( $priority, array $data ) {
-               if ( $priority < self::MIN_PRIORITY || $priority > self::MAX_PRIORITY ) {
-                       throw new \InvalidArgumentException( 'Invalid priority' );
-               }
-
-               if ( isset( $data['copyFrom'] ) ) {
-                       $from = $data['copyFrom'];
-                       if ( !$from instanceof SessionInfo ) {
-                               throw new \InvalidArgumentException( 'Invalid copyFrom' );
-                       }
-                       $data += array(
-                               'provider' => $from->provider,
-                               'id' => $from->id,
-                               'userInfo' => $from->userInfo,
-                               'persisted' => $from->persisted,
-                               'remembered' => $from->remembered,
-                               'forceHTTPS' => $from->forceHTTPS,
-                               'metadata' => $from->providerMetadata,
-                               'idIsSafe' => $from->idIsSafe,
-                               // @codeCoverageIgnoreStart
-                       );
-                       // @codeCoverageIgnoreEnd
-               } else {
-                       $data += array(
-                               'provider' => null,
-                               'id' => null,
-                               'userInfo' => null,
-                               'persisted' => false,
-                               'remembered' => true,
-                               'forceHTTPS' => false,
-                               'metadata' => null,
-                               'idIsSafe' => false,
-                               // @codeCoverageIgnoreStart
-                       );
-                       // @codeCoverageIgnoreEnd
-               }
-
-               if ( $data['id'] !== null && !SessionManager::validateSessionId( $data['id'] ) ) {
-                       throw new \InvalidArgumentException( 'Invalid session ID' );
-               }
-
-               if ( $data['userInfo'] !== null && !$data['userInfo'] instanceof UserInfo ) {
-                       throw new \InvalidArgumentException( 'Invalid userInfo' );
-               }
-
-               if ( !$data['provider'] && $data['id'] === null ) {
-                       throw new \InvalidArgumentException(
-                               'Must supply an ID when no provider is given'
-                       );
-               }
-
-               if ( $data['metadata'] !== null && !is_array( $data['metadata'] ) ) {
-                       throw new \InvalidArgumentException( 'Invalid metadata' );
-               }
-
-               $this->provider = $data['provider'];
-               if ( $data['id'] !== null ) {
-                       $this->id = $data['id'];
-                       $this->idIsSafe = $data['idIsSafe'];
-               } else {
-                       $this->id = $this->provider->getManager()->generateSessionId();
-                       $this->idIsSafe = true;
-               }
-               $this->priority = (int)$priority;
-               $this->userInfo = $data['userInfo'];
-               $this->persisted = (bool)$data['persisted'];
-               if ( $data['provider'] !== null ) {
-                       if ( $this->userInfo !== null && !$this->userInfo->isAnon() && $this->userInfo->isVerified() ) {
-                               $this->remembered = (bool)$data['remembered'];
-                       }
-                       $this->providerMetadata = $data['metadata'];
-               }
-               $this->forceHTTPS = (bool)$data['forceHTTPS'];
-       }
-
-       /**
-        * Return the provider
-        * @return SessionProvider|null
-        */
-       final public function getProvider() {
-               return $this->provider;
-       }
-
-       /**
-        * Return the session ID
-        * @return string
-        */
-       final public function getId() {
-               return $this->id;
-       }
-
-       /**
-        * Indicate whether the ID is "safe"
-        *
-        * The ID is safe in the following cases:
-        * - The ID was randomly generated by the constructor.
-        * - The ID was found in the backend data store.
-        * - $this->getProvider()->persistsSessionId() is false.
-        * - The constructor was explicitly told it's safe using the 'idIsSafe'
-        *   parameter.
-        *
-        * @return bool
-        */
-       final public function isIdSafe() {
-               return $this->idIsSafe;
-       }
-
-       /**
-        * Return the priority
-        * @return int
-        */
-       final public function getPriority() {
-               return $this->priority;
-       }
-
-       /**
-        * Return the user
-        * @return UserInfo|null
-        */
-       final public function getUserInfo() {
-               return $this->userInfo;
-       }
-
-       /**
-        * Return whether the session is persisted
-        *
-        * i.e. a session ID was given to the constuctor
-        *
-        * @return bool
-        */
-       final public function wasPersisted() {
-               return $this->persisted;
-       }
-
-       /**
-        * Return provider metadata
-        * @return array|null
-        */
-       final public function getProviderMetadata() {
-               return $this->providerMetadata;
-       }
-
-       /**
-        * Return whether the user was remembered
-        *
-        * For providers that can persist the user separately from the session,
-        * the human using it may not actually *want* that to be done. For example,
-        * a cookie-based provider can set cookies that are longer-lived than the
-        * backend session data, but on a public terminal the human likely doesn't
-        * want those cookies set.
-        *
-        * This is false unless a non-anonymous verified user was passed to
-        * the SessionInfo constructor by the provider, and the provider didn't
-        * pass false for the 'remembered' data item.
-        *
-        * @return bool
-        */
-       final public function wasRemembered() {
-               return $this->remembered;
-       }
-
-       /**
-        * Whether this session should only be used over HTTPS
-        * @return bool
-        */
-       final public function forceHTTPS() {
-               return $this->forceHTTPS;
-       }
-
-       public function __toString() {
-               return '[' . $this->getPriority() . ']' .
-                       ( $this->getProvider() ?: 'null' ) .
-                       ( $this->userInfo ?: '<null>' ) . $this->getId();
-       }
-
-       /**
-        * Compare two SessionInfo objects by priority
-        * @param SessionInfo $a
-        * @param SessionInfo $b
-        * @return int Negative if $a < $b, positive if $a > $b, zero if equal
-        */
-       public static function compare( $a, $b ) {
-               return $a->getPriority() - $b->getPriority();
-       }
-
-}
diff --git a/includes/session/SessionManager.php b/includes/session/SessionManager.php
deleted file mode 100644 (file)
index 1c8686c..0000000
+++ /dev/null
@@ -1,997 +0,0 @@
-<?php
-/**
- * MediaWiki\Session entry point
- *
- * 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 Session
- */
-
-namespace MediaWiki\Session;
-
-use Psr\Log\LoggerInterface;
-use BagOStuff;
-use Config;
-use FauxRequest;
-use Language;
-use Message;
-use User;
-use WebRequest;
-
-/**
- * This serves as the entry point to the MediaWiki session handling system.
- *
- * @ingroup Session
- * @since 1.27
- */
-final class SessionManager implements SessionManagerInterface {
-       /** @var SessionManager|null */
-       private static $instance = null;
-
-       /** @var Session|null */
-       private static $globalSession = null;
-
-       /** @var WebRequest|null */
-       private static $globalSessionRequest = null;
-
-       /** @var LoggerInterface */
-       private $logger;
-
-       /** @var Config */
-       private $config;
-
-       /** @var BagOStuff|null */
-       private $store;
-
-       /** @var SessionProvider[] */
-       private $sessionProviders = null;
-
-       /** @var string[] */
-       private $varyCookies = null;
-
-       /** @var array */
-       private $varyHeaders = null;
-
-       /** @var SessionBackend[] */
-       private $allSessionBackends = array();
-
-       /** @var SessionId[] */
-       private $allSessionIds = array();
-
-       /** @var string[] */
-       private $preventUsers = array();
-
-       /**
-        * Get the global SessionManager
-        * @return SessionManagerInterface
-        *  (really a SessionManager, but this is to make IDEs less confused)
-        */
-       public static function singleton() {
-               if ( self::$instance === null ) {
-                       self::$instance = new self();
-               }
-               return self::$instance;
-       }
-
-       /**
-        * Get the "global" session
-        *
-        * If PHP's session_id() has been set, returns that session. Otherwise
-        * returns the session for RequestContext::getMain()->getRequest().
-        *
-        * @return Session
-        */
-       public static function getGlobalSession() {
-               if ( !PHPSessionHandler::isEnabled() ) {
-                       $id = '';
-               } else {
-                       $id = session_id();
-               }
-
-               $request = \RequestContext::getMain()->getRequest();
-               if (
-                       !self::$globalSession // No global session is set up yet
-                       || self::$globalSessionRequest !== $request // The global WebRequest changed
-                       || $id !== '' && self::$globalSession->getId() !== $id // Someone messed with session_id()
-               ) {
-                       self::$globalSessionRequest = $request;
-                       if ( $id === '' ) {
-                               // session_id() wasn't used, so fetch the Session from the WebRequest.
-                               // We use $request->getSession() instead of $singleton->getSessionForRequest()
-                               // because doing the latter would require a public
-                               // "$request->getSessionId()" method that would confuse end
-                               // users by returning SessionId|null where they'd expect it to
-                               // be short for $request->getSession()->getId(), and would
-                               // wind up being a duplicate of the code in
-                               // $request->getSession() anyway.
-                               self::$globalSession = $request->getSession();
-                       } else {
-                               // Someone used session_id(), so we need to follow suit.
-                               // Note this overwrites whatever session might already be
-                               // associated with $request with the one for $id.
-                               self::$globalSession = self::singleton()->getSessionById( $id, false, $request );
-                       }
-               }
-               return self::$globalSession;
-       }
-
-       /**
-        * @param array $options
-        *  - config: Config to fetch configuration from. Defaults to the default 'main' config.
-        *  - logger: LoggerInterface to use for logging. Defaults to the 'session' channel.
-        *  - store: BagOStuff to store session data in.
-        */
-       public function __construct( $options = array() ) {
-               if ( isset( $options['config'] ) ) {
-                       $this->config = $options['config'];
-                       if ( !$this->config instanceof Config ) {
-                               throw new \InvalidArgumentException(
-                                       '$options[\'config\'] must be an instance of Config'
-                               );
-                       }
-               } else {
-                       $this->config = \ConfigFactory::getDefaultInstance()->makeConfig( 'main' );
-               }
-
-               if ( isset( $options['logger'] ) ) {
-                       if ( !$options['logger'] instanceof LoggerInterface ) {
-                               throw new \InvalidArgumentException(
-                                       '$options[\'logger\'] must be an instance of LoggerInterface'
-                               );
-                       }
-                       $this->setLogger( $options['logger'] );
-               } else {
-                       $this->setLogger( \MediaWiki\Logger\LoggerFactory::getInstance( 'session' ) );
-               }
-
-               if ( isset( $options['store'] ) ) {
-                       if ( !$options['store'] instanceof BagOStuff ) {
-                               throw new \InvalidArgumentException(
-                                       '$options[\'store\'] must be an instance of BagOStuff'
-                               );
-                       }
-                       $this->store = $options['store'];
-               } else {
-                       $this->store = \ObjectCache::getInstance( $this->config->get( 'SessionCacheType' ) );
-                       $this->store->setLogger( $this->logger );
-               }
-
-               register_shutdown_function( array( $this, 'shutdown' ) );
-       }
-
-       public function setLogger( LoggerInterface $logger ) {
-               $this->logger = $logger;
-       }
-
-       public function getPersistedSessionId( WebRequest $request ) {
-               $info = $this->getSessionInfoForRequest( $request );
-               if ( $info && $info->wasPersisted() ) {
-                       return $info->getId();
-               } else {
-                       return null;
-               }
-       }
-
-       public function getSessionForRequest( WebRequest $request ) {
-               $info = $this->getSessionInfoForRequest( $request );
-
-               if ( !$info ) {
-                       $session = $this->getEmptySession( $request );
-               } else {
-                       $session = $this->getSessionFromInfo( $info, $request );
-               }
-               return $session;
-       }
-
-       public function getSessionById( $id, $noEmpty = false, WebRequest $request = null ) {
-               if ( !self::validateSessionId( $id ) ) {
-                       throw new \InvalidArgumentException( 'Invalid session ID' );
-               }
-               if ( !$request ) {
-                       $request = new FauxRequest;
-               }
-
-               $session = null;
-
-               // Test this here to provide a better log message for the common case
-               // of "no such ID"
-               $key = wfMemcKey( 'MWSession', $id );
-               if ( is_array( $this->store->get( $key ) ) ) {
-                       $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array( 'id' => $id, 'idIsSafe' => true ) );
-                       if ( $this->loadSessionInfoFromStore( $info, $request ) ) {
-                               $session = $this->getSessionFromInfo( $info, $request );
-                       }
-               }
-
-               if ( !$noEmpty && $session === null ) {
-                       $ex = null;
-                       try {
-                               $session = $this->getEmptySessionInternal( $request, $id );
-                       } catch ( \Exception $ex ) {
-                               $this->logger->error( __METHOD__ . ': failed to create empty session: ' .
-                                       $ex->getMessage() );
-                               $session = null;
-                       }
-                       if ( $session === null ) {
-                               throw new \UnexpectedValueException(
-                                       'Can neither load the session nor create an empty session', 0, $ex
-                               );
-                       }
-               }
-
-               return $session;
-       }
-
-       public function getEmptySession( WebRequest $request = null ) {
-               return $this->getEmptySessionInternal( $request );
-       }
-
-       /**
-        * @see SessionManagerInterface::getEmptySession
-        * @param WebRequest|null $request
-        * @param string|null $id ID to force on the new session
-        * @return Session
-        */
-       private function getEmptySessionInternal( WebRequest $request = null, $id = null ) {
-               if ( $id !== null ) {
-                       if ( !self::validateSessionId( $id ) ) {
-                               throw new \InvalidArgumentException( 'Invalid session ID' );
-                       }
-
-                       $key = wfMemcKey( 'MWSession', $id );
-                       if ( is_array( $this->store->get( $key ) ) ) {
-                               throw new \InvalidArgumentException( 'Session ID already exists' );
-                       }
-               }
-               if ( !$request ) {
-                       $request = new FauxRequest;
-               }
-
-               $infos = array();
-               foreach ( $this->getProviders() as $provider ) {
-                       $info = $provider->newSessionInfo( $id );
-                       if ( !$info ) {
-                               continue;
-                       }
-                       if ( $info->getProvider() !== $provider ) {
-                               throw new \UnexpectedValueException(
-                                       "$provider returned an empty session info for a different provider: $info"
-                               );
-                       }
-                       if ( $id !== null && $info->getId() !== $id ) {
-                               throw new \UnexpectedValueException(
-                                       "$provider returned empty session info with a wrong id: " .
-                                               $info->getId() . ' != ' . $id
-                               );
-                       }
-                       if ( !$info->isIdSafe() ) {
-                               throw new \UnexpectedValueException(
-                                       "$provider returned empty session info with id flagged unsafe"
-                               );
-                       }
-                       $compare = $infos ? SessionInfo::compare( $infos[0], $info ) : -1;
-                       if ( $compare > 0 ) {
-                               continue;
-                       }
-                       if ( $compare === 0 ) {
-                               $infos[] = $info;
-                       } else {
-                               $infos = array( $info );
-                       }
-               }
-
-               // Make sure there's exactly one
-               if ( count( $infos ) > 1 ) {
-                       throw new \UnexpectedValueException(
-                               'Multiple empty sessions tied for top priority: ' . join( ', ', $infos )
-                       );
-               } elseif ( count( $infos ) < 1 ) {
-                       throw new \UnexpectedValueException( 'No provider could provide an empty session!' );
-               }
-
-               return $this->getSessionFromInfo( $infos[0], $request );
-       }
-
-       public function getVaryHeaders() {
-               if ( $this->varyHeaders === null ) {
-                       $headers = array();
-                       foreach ( $this->getProviders() as $provider ) {
-                               foreach ( $provider->getVaryHeaders() as $header => $options ) {
-                                       if ( !isset( $headers[$header] ) ) {
-                                               $headers[$header] = array();
-                                       }
-                                       if ( is_array( $options ) ) {
-                                               $headers[$header] = array_unique( array_merge( $headers[$header], $options ) );
-                                       }
-                               }
-                       }
-                       $this->varyHeaders = $headers;
-               }
-               return $this->varyHeaders;
-       }
-
-       public function getVaryCookies() {
-               if ( $this->varyCookies === null ) {
-                       $cookies = array();
-                       foreach ( $this->getProviders() as $provider ) {
-                               $cookies = array_merge( $cookies, $provider->getVaryCookies() );
-                       }
-                       $this->varyCookies = array_values( array_unique( $cookies ) );
-               }
-               return $this->varyCookies;
-       }
-
-       /**
-        * Validate a session ID
-        * @param string $id
-        * @return bool
-        */
-       public static function validateSessionId( $id ) {
-               return is_string( $id ) && preg_match( '/^[a-zA-Z0-9_-]{32,}$/', $id );
-       }
-
-       /**
-        * @name Internal methods
-        * @{
-        */
-
-       /**
-        * Auto-create the given user, if necessary
-        * @private Don't call this yourself. Let Setup.php do it for you at the right time.
-        * @note This more properly belongs in AuthManager, but we need it now.
-        *  When AuthManager comes, this will be deprecated and will pass-through
-        *  to the corresponding AuthManager method.
-        * @param User $user User to auto-create
-        * @return bool Success
-        */
-       public static function autoCreateUser( User $user ) {
-               global $wgAuth;
-
-               $logger = self::singleton()->logger;
-
-               // Much of this code is based on that in CentralAuth
-
-               // Try the local user from the slave DB
-               $localId = User::idFromName( $user->getName() );
-
-               // Fetch the user ID from the master, so that we don't try to create the user
-               // when they already exist, due to replication lag
-               // @codeCoverageIgnoreStart
-               if ( !$localId && wfGetLB()->getReaderIndex() != 0 ) {
-                       $localId = User::idFromName( $user->getName(), User::READ_LATEST );
-               }
-               // @codeCoverageIgnoreEnd
-
-               if ( $localId ) {
-                       // User exists after all.
-                       $user->setId( $localId );
-                       $user->loadFromId();
-                       return false;
-               }
-
-               // Denied by AuthPlugin? But ignore AuthPlugin itself.
-               if ( get_class( $wgAuth ) !== 'AuthPlugin' && !$wgAuth->autoCreate() ) {
-                       $logger->debug( __METHOD__ . ': denied by AuthPlugin' );
-                       $user->setId( 0 );
-                       $user->loadFromId();
-                       return false;
-               }
-
-               // Wiki is read-only?
-               if ( wfReadOnly() ) {
-                       $logger->debug( __METHOD__ . ': denied by wfReadOnly()' );
-                       $user->setId( 0 );
-                       $user->loadFromId();
-                       return false;
-               }
-
-               $userName = $user->getName();
-
-               // Check the session, if we tried to create this user already there's
-               // no point in retrying.
-               $session = self::getGlobalSession();
-               $reason = $session->get( 'MWSession::AutoCreateBlacklist' );
-               if ( $reason ) {
-                       $logger->debug( __METHOD__ . ": blacklisted in session ($reason)" );
-                       $user->setId( 0 );
-                       $user->loadFromId();
-                       return false;
-               }
-
-               // Is the IP user able to create accounts?
-               $anon = new User;
-               if ( !$anon->isAllowedAny( 'createaccount', 'autocreateaccount' )
-                       || $anon->isBlockedFromCreateAccount()
-               ) {
-                       // Blacklist the user to avoid repeated DB queries subsequently
-                       $logger->debug( __METHOD__ . ': user is blocked from this wiki, blacklisting' );
-                       $session->set( 'MWSession::AutoCreateBlacklist', 'blocked', 600 );
-                       $session->persist();
-                       $user->setId( 0 );
-                       $user->loadFromId();
-                       return false;
-               }
-
-               // Check for validity of username
-               if ( !User::isCreatableName( $userName ) ) {
-                       $logger->debug( __METHOD__ . ': Invalid username, blacklisting' );
-                       $session->set( 'MWSession::AutoCreateBlacklist', 'invalid username', 600 );
-                       $session->persist();
-                       $user->setId( 0 );
-                       $user->loadFromId();
-                       return false;
-               }
-
-               // Give other extensions a chance to stop auto creation.
-               $user->loadDefaults( $userName );
-               $abortMessage = '';
-               if ( !\Hooks::run( 'AbortAutoAccount', array( $user, &$abortMessage ) ) ) {
-                       // In this case we have no way to return the message to the user,
-                       // but we can log it.
-                       $logger->debug( __METHOD__ . ": denied by hook: $abortMessage" );
-                       $session->set( 'MWSession::AutoCreateBlacklist', "hook aborted: $abortMessage", 600 );
-                       $session->persist();
-                       $user->setId( 0 );
-                       $user->loadFromId();
-                       return false;
-               }
-
-               // Make sure the name has not been changed
-               if ( $user->getName() !== $userName ) {
-                       $user->setId( 0 );
-                       $user->loadFromId();
-                       throw new \UnexpectedValueException(
-                               'AbortAutoAccount hook tried to change the user name'
-                       );
-               }
-
-               // Ignore warnings about master connections/writes...hard to avoid here
-               \Profiler::instance()->getTransactionProfiler()->resetExpectations();
-
-               $cache = \ObjectCache::getLocalClusterInstance();
-               $backoffKey = wfMemcKey( 'MWSession', 'autocreate-failed', md5( $userName ) );
-               if ( $cache->get( $backoffKey ) ) {
-                       $logger->debug( __METHOD__ . ': denied by prior creation attempt failures' );
-                       $user->setId( 0 );
-                       $user->loadFromId();
-                       return false;
-               }
-
-               // Checks passed, create the user...
-               $from = isset( $_SERVER['REQUEST_URI'] ) ? $_SERVER['REQUEST_URI'] : 'CLI';
-               $logger->info( __METHOD__ . ": creating new user ($userName) - from: $from" );
-
-               try {
-                       // Insert the user into the local DB master
-                       $status = $user->addToDatabase();
-                       if ( !$status->isOK() ) {
-                               // @codeCoverageIgnoreStart
-                               $logger->error( __METHOD__ . ': failed with message ' . $status->getWikiText() );
-                               $user->setId( 0 );
-                               $user->loadFromId();
-                               return false;
-                               // @codeCoverageIgnoreEnd
-                       }
-               } catch ( \Exception $ex ) {
-                       // @codeCoverageIgnoreStart
-                       $logger->error( __METHOD__ . ': failed with exception ' . $ex->getMessage() );
-                       // Do not keep throwing errors for a while
-                       $cache->set( $backoffKey, 1, 600 );
-                       // Bubble up error; which should normally trigger DB rollbacks
-                       throw $ex;
-                       // @codeCoverageIgnoreEnd
-               }
-
-               # Notify hooks (e.g. Newuserlog)
-               \Hooks::run( 'AuthPluginAutoCreate', array( $user ) );
-               \Hooks::run( 'LocalUserCreated', array( $user, true ) );
-
-               # Update user count
-               \DeferredUpdates::addUpdate( new \SiteStatsUpdate( 0, 0, 0, 0, 1 ) );
-
-               # Watch user's userpage and talk page
-               $user->addWatch( $user->getUserPage(), \WatchedItem::IGNORE_USER_RIGHTS );
-
-               return true;
-       }
-
-       /**
-        * Prevent future sessions for the user
-        *
-        * The intention is that the named account will never again be usable for
-        * normal login (i.e. there is no way to undo the prevention of access).
-        *
-        * @private For use from \\User::newSystemUser only
-        * @param string $username
-        */
-       public function preventSessionsForUser( $username ) {
-               $this->preventUsers[$username] = true;
-
-               // Reset the user's token to kill existing sessions
-               $user = User::newFromName( $username );
-               if ( $user && $user->getToken() ) {
-                       $user->setToken( true );
-                       $user->saveSettings();
-               }
-
-               // Instruct the session providers to kill any other sessions too.
-               foreach ( $this->getProviders() as $provider ) {
-                       $provider->preventSessionsForUser( $username );
-               }
-       }
-
-       /**
-        * Test if a user is prevented
-        * @private For use from SessionBackend only
-        * @param string $username
-        * @return bool
-        */
-       public function isUserSessionPrevented( $username ) {
-               return !empty( $this->preventUsers[$username] );
-       }
-
-       /**
-        * Get the available SessionProviders
-        * @return SessionProvider[]
-        */
-       protected function getProviders() {
-               if ( $this->sessionProviders === null ) {
-                       $this->sessionProviders = array();
-                       foreach ( $this->config->get( 'SessionProviders' ) as $spec ) {
-                               $provider = \ObjectFactory::getObjectFromSpec( $spec );
-                               $provider->setLogger( $this->logger );
-                               $provider->setConfig( $this->config );
-                               $provider->setManager( $this );
-                               if ( isset( $this->sessionProviders[(string)$provider] ) ) {
-                                       throw new \UnexpectedValueException( "Duplicate provider name \"$provider\"" );
-                               }
-                               $this->sessionProviders[(string)$provider] = $provider;
-                       }
-               }
-               return $this->sessionProviders;
-       }
-
-       /**
-        * Get a session provider by name
-        *
-        * Generally, this will only be used by internal implementation of some
-        * special session-providing mechanism. General purpose code, if it needs
-        * to access a SessionProvider at all, will use Session::getProvider().
-        *
-        * @param string $name
-        * @return SessionProvider|null
-        */
-       public function getProvider( $name ) {
-               $providers = $this->getProviders();
-               return isset( $providers[$name] ) ? $providers[$name] : null;
-       }
-
-       /**
-        * Save all active sessions on shutdown
-        * @private For internal use with register_shutdown_function()
-        */
-       public function shutdown() {
-               if ( $this->allSessionBackends ) {
-                       $this->logger->debug( 'Saving all sessions on shutdown' );
-                       if ( session_id() !== '' ) {
-                               // @codeCoverageIgnoreStart
-                               session_write_close();
-                       }
-                       // @codeCoverageIgnoreEnd
-                       foreach ( $this->allSessionBackends as $backend ) {
-                               $backend->save( true );
-                       }
-               }
-       }
-
-       /**
-        * Fetch the SessionInfo(s) for a request
-        * @param WebRequest $request
-        * @return SessionInfo|null
-        */
-       private function getSessionInfoForRequest( WebRequest $request ) {
-               // Call all providers to fetch "the" session
-               $infos = array();
-               foreach ( $this->getProviders() as $provider ) {
-                       $info = $provider->provideSessionInfo( $request );
-                       if ( !$info ) {
-                               continue;
-                       }
-                       if ( $info->getProvider() !== $provider ) {
-                               throw new \UnexpectedValueException(
-                                       "$provider returned session info for a different provider: $info"
-                               );
-                       }
-                       $infos[] = $info;
-               }
-
-               // Sort the SessionInfos. Then find the first one that can be
-               // successfully loaded, and then all the ones after it with the same
-               // priority.
-               usort( $infos, 'MediaWiki\\Session\\SessionInfo::compare' );
-               $retInfos = array();
-               while ( $infos ) {
-                       $info = array_pop( $infos );
-                       if ( $this->loadSessionInfoFromStore( $info, $request ) ) {
-                               $retInfos[] = $info;
-                               while ( $infos ) {
-                                       $info = array_pop( $infos );
-                                       if ( SessionInfo::compare( $retInfos[0], $info ) ) {
-                                               // We hit a lower priority, stop checking.
-                                               break;
-                                       }
-                                       if ( $this->loadSessionInfoFromStore( $info, $request ) ) {
-                                               // This is going to error out below, but we want to
-                                               // provide a complete list.
-                                               $retInfos[] = $info;
-                                       }
-                               }
-                       }
-               }
-
-               if ( count( $retInfos ) > 1 ) {
-                       $ex = new \OverflowException(
-                               'Multiple sessions for this request tied for top priority: ' . join( ', ', $retInfos )
-                       );
-                       $ex->sessionInfos = $retInfos;
-                       throw $ex;
-               }
-
-               return $retInfos ? $retInfos[0] : null;
-       }
-
-       /**
-        * Load and verify the session info against the store
-        *
-        * @param SessionInfo &$info Will likely be replaced with an updated SessionInfo instance
-        * @param WebRequest $request
-        * @return bool Whether the session info matches the stored data (if any)
-        */
-       private function loadSessionInfoFromStore( SessionInfo &$info, WebRequest $request ) {
-               $blob = $this->store->get( wfMemcKey( 'MWSession', $info->getId() ) );
-
-               $newParams = array();
-
-               if ( $blob !== false ) {
-                       // Sanity check: blob must be an array, if it's saved at all
-                       if ( !is_array( $blob ) ) {
-                               $this->logger->warning( "Session $info: Bad data" );
-                               return false;
-                       }
-
-                       // Sanity check: blob has data and metadata arrays
-                       if ( !isset( $blob['data'] ) || !is_array( $blob['data'] ) ||
-                               !isset( $blob['metadata'] ) || !is_array( $blob['metadata'] )
-                       ) {
-                               $this->logger->warning( "Session $info: Bad data structure" );
-                               return false;
-                       }
-
-                       $data = $blob['data'];
-                       $metadata = $blob['metadata'];
-
-                       // Sanity check: metadata must be an array and must contain certain
-                       // keys, if it's saved at all
-                       if ( !array_key_exists( 'userId', $metadata ) ||
-                               !array_key_exists( 'userName', $metadata ) ||
-                               !array_key_exists( 'userToken', $metadata ) ||
-                               !array_key_exists( 'provider', $metadata )
-                       ) {
-                               $this->logger->warning( "Session $info: Bad metadata" );
-                               return false;
-                       }
-
-                       // First, load the provider from metadata, or validate it against the metadata.
-                       $provider = $info->getProvider();
-                       if ( $provider === null ) {
-                               $newParams['provider'] = $provider = $this->getProvider( $metadata['provider'] );
-                               if ( !$provider ) {
-                                       $this->logger->warning( "Session $info: Unknown provider, " . $metadata['provider'] );
-                                       return false;
-                               }
-                       } elseif ( $metadata['provider'] !== (string)$provider ) {
-                               $this->logger->warning( "Session $info: Wrong provider, " .
-                                       $metadata['provider'] . ' !== ' . $provider );
-                               return false;
-                       }
-
-                       // Load provider metadata from metadata, or validate it against the metadata
-                       $providerMetadata = $info->getProviderMetadata();
-                       if ( isset( $metadata['providerMetadata'] ) ) {
-                               if ( $providerMetadata === null ) {
-                                       $newParams['metadata'] = $metadata['providerMetadata'];
-                               } else {
-                                       try {
-                                               $newProviderMetadata = $provider->mergeMetadata(
-                                                       $metadata['providerMetadata'], $providerMetadata
-                                               );
-                                               if ( $newProviderMetadata !== $providerMetadata ) {
-                                                       $newParams['metadata'] = $newProviderMetadata;
-                                               }
-                                       } catch ( \UnexpectedValueException $ex ) {
-                                               $this->logger->warning( "Session $info: Metadata merge failed: " . $ex->getMessage() );
-                                               return false;
-                                       }
-                               }
-                       }
-
-                       // Next, load the user from metadata, or validate it against the metadata.
-                       $userInfo = $info->getUserInfo();
-                       if ( !$userInfo ) {
-                               // For loading, id is preferred to name.
-                               try {
-                                       if ( $metadata['userId'] ) {
-                                               $userInfo = UserInfo::newFromId( $metadata['userId'] );
-                                       } elseif ( $metadata['userName'] !== null ) { // Shouldn't happen, but just in case
-                                               $userInfo = UserInfo::newFromName( $metadata['userName'] );
-                                       } else {
-                                               $userInfo = UserInfo::newAnonymous();
-                                       }
-                               } catch ( \InvalidArgumentException $ex ) {
-                                       $this->logger->error( "Session $info: " . $ex->getMessage() );
-                                       return false;
-                               }
-                               $newParams['userInfo'] = $userInfo;
-                       } else {
-                               // User validation passes if user ID matches, or if there
-                               // is no saved ID and the names match.
-                               if ( $metadata['userId'] ) {
-                                       if ( $metadata['userId'] !== $userInfo->getId() ) {
-                                               $this->logger->warning( "Session $info: User ID mismatch, " .
-                                                       $metadata['userId'] . ' !== ' . $userInfo->getId() );
-                                               return false;
-                                       }
-
-                                       // If the user was renamed, probably best to fail here.
-                                       if ( $metadata['userName'] !== null &&
-                                               $userInfo->getName() !== $metadata['userName']
-                                       ) {
-                                               $this->logger->warning( "Session $info: User ID matched but name didn't (rename?), " .
-                                                       $metadata['userName'] . ' !== ' . $userInfo->getName() );
-                                               return false;
-                                       }
-
-                               } elseif ( $metadata['userName'] !== null ) { // Shouldn't happen, but just in case
-                                       if ( $metadata['userName'] !== $userInfo->getName() ) {
-                                               $this->logger->warning( "Session $info: User name mismatch, " .
-                                                       $metadata['userName'] . ' !== ' . $userInfo->getName() );
-                                               return false;
-                                       }
-                               } elseif ( !$userInfo->isAnon() ) {
-                                       // Metadata specifies an anonymous user, but the passed-in
-                                       // user isn't anonymous.
-                                       $this->logger->warning(
-                                               "Session $info: Metadata has an anonymous user, " .
-                                                       'but a non-anon user was provided'
-                                       );
-                                       return false;
-                               }
-                       }
-
-                       // And if we have a token in the metadata, it must match the loaded/provided user.
-                       if ( $metadata['userToken'] !== null &&
-                               $userInfo->getToken() !== $metadata['userToken']
-                       ) {
-                               $this->logger->warning( "Session $info: User token mismatch" );
-                               return false;
-                       }
-                       if ( !$userInfo->isVerified() ) {
-                               $newParams['userInfo'] = $userInfo->verified();
-                       }
-
-                       if ( !empty( $metadata['remember'] ) && !$info->wasRemembered() ) {
-                               $newParams['remembered'] = true;
-                       }
-                       if ( !empty( $metadata['forceHTTPS'] ) && !$info->forceHTTPS() ) {
-                               $newParams['forceHTTPS'] = true;
-                       }
-
-                       if ( !$info->isIdSafe() ) {
-                               $newParams['idIsSafe'] = true;
-                       }
-               } else {
-                       // No metadata, so we can't load the provider if one wasn't given.
-                       if ( $info->getProvider() === null ) {
-                               $this->logger->warning( "Session $info: Null provider and no metadata" );
-                               return false;
-                       }
-
-                       // If no user was provided and no metadata, it must be anon.
-                       if ( !$info->getUserInfo() ) {
-                               if ( $info->getProvider()->canChangeUser() ) {
-                                       $newParams['userInfo'] = UserInfo::newAnonymous();
-                               } else {
-                                       $this->logger->info(
-                                               "Session $info: No user provided and provider cannot set user"
-                                       );
-                                       return false;
-                               }
-                       } elseif ( !$info->getUserInfo()->isVerified() ) {
-                               $this->logger->warning(
-                                       "Session $info: Unverified user provided and no metadata to auth it"
-                               );
-                               return false;
-                       }
-
-                       $data = false;
-                       $metadata = false;
-
-                       if ( !$info->getProvider()->persistsSessionId() && !$info->isIdSafe() ) {
-                               // The ID doesn't come from the user, so it should be safe
-                               // (and if not, nothing we can do about it anyway)
-                               $newParams['idIsSafe'] = true;
-                       }
-               }
-
-               // Construct the replacement SessionInfo, if necessary
-               if ( $newParams ) {
-                       $newParams['copyFrom'] = $info;
-                       $info = new SessionInfo( $info->getPriority(), $newParams );
-               }
-
-               // Allow the provider to check the loaded SessionInfo
-               $providerMetadata = $info->getProviderMetadata();
-               if ( !$info->getProvider()->refreshSessionInfo( $info, $request, $providerMetadata ) ) {
-                       return false;
-               }
-               if ( $providerMetadata !== $info->getProviderMetadata() ) {
-                       $info = new SessionInfo( $info->getPriority(), array(
-                               'metadata' => $providerMetadata,
-                               'copyFrom' => $info,
-                       ) );
-               }
-
-               // Give hooks a chance to abort. Combined with the SessionMetadata
-               // hook, this can allow for tying a session to an IP address or the
-               // like.
-               $reason = 'Hook aborted';
-               if ( !\Hooks::run(
-                       'SessionCheckInfo',
-                       array( &$reason, $info, $request, $metadata, $data )
-               ) ) {
-                       $this->logger->warning( "Session $info: $reason" );
-                       return false;
-               }
-
-               return true;
-       }
-
-       /**
-        * Create a session corresponding to the passed SessionInfo
-        * @private For use by a SessionProvider that needs to specially create its
-        *  own session.
-        * @param SessionInfo $info
-        * @param WebRequest $request
-        * @return Session
-        */
-       public function getSessionFromInfo( SessionInfo $info, WebRequest $request ) {
-               $id = $info->getId();
-
-               if ( !isset( $this->allSessionBackends[$id] ) ) {
-                       if ( !isset( $this->allSessionIds[$id] ) ) {
-                               $this->allSessionIds[$id] = new SessionId( $id );
-                       }
-                       $backend = new SessionBackend(
-                               $this->allSessionIds[$id],
-                               $info,
-                               $this->store,
-                               $this->logger,
-                               $this->config->get( 'ObjectCacheSessionExpiry' )
-                       );
-                       $this->allSessionBackends[$id] = $backend;
-                       $delay = $backend->delaySave();
-               } else {
-                       $backend = $this->allSessionBackends[$id];
-                       $delay = $backend->delaySave();
-                       if ( $info->wasPersisted() ) {
-                               $backend->persist();
-                       }
-                       if ( $info->wasRemembered() ) {
-                               $backend->setRememberUser( true );
-                       }
-               }
-
-               $request->setSessionId( $backend->getSessionId() );
-               $session = $backend->getSession( $request );
-
-               if ( !$info->isIdSafe() ) {
-                       $session->resetId();
-               }
-
-               \ScopedCallback::consume( $delay );
-               return $session;
-       }
-
-       /**
-        * Deregister a SessionBackend
-        * @private For use from \\MediaWiki\\Session\\SessionBackend only
-        * @param SessionBackend $backend
-        */
-       public function deregisterSessionBackend( SessionBackend $backend ) {
-               $id = $backend->getId();
-               if ( !isset( $this->allSessionBackends[$id] ) || !isset( $this->allSessionIds[$id] ) ||
-                       $this->allSessionBackends[$id] !== $backend ||
-                       $this->allSessionIds[$id] !== $backend->getSessionId()
-               ) {
-                       throw new \InvalidArgumentException( 'Backend was not registered with this SessionManager' );
-               }
-
-               unset( $this->allSessionBackends[$id] );
-               // Explicitly do not unset $this->allSessionIds[$id]
-       }
-
-       /**
-        * Change a SessionBackend's ID
-        * @private For use from \\MediaWiki\\Session\\SessionBackend only
-        * @param SessionBackend $backend
-        */
-       public function changeBackendId( SessionBackend $backend ) {
-               $sessionId = $backend->getSessionId();
-               $oldId = (string)$sessionId;
-               if ( !isset( $this->allSessionBackends[$oldId] ) || !isset( $this->allSessionIds[$oldId] ) ||
-                       $this->allSessionBackends[$oldId] !== $backend ||
-                       $this->allSessionIds[$oldId] !== $sessionId
-               ) {
-                       throw new \InvalidArgumentException( 'Backend was not registered with this SessionManager' );
-               }
-
-               $newId = $this->generateSessionId();
-
-               unset( $this->allSessionBackends[$oldId], $this->allSessionIds[$oldId] );
-               $sessionId->setId( $newId );
-               $this->allSessionBackends[$newId] = $backend;
-               $this->allSessionIds[$newId] = $sessionId;
-       }
-
-       /**
-        * Generate a new random session ID
-        * @return string
-        */
-       public function generateSessionId() {
-               do {
-                       $id = wfBaseConvert( \MWCryptRand::generateHex( 40 ), 16, 32, 32 );
-                       $key = wfMemcKey( 'MWSession', $id );
-               } while ( isset( $this->allSessionIds[$id] ) || is_array( $this->store->get( $key ) ) );
-               return $id;
-       }
-
-       /**
-        * Call setters on a PHPSessionHandler
-        * @private Use PhpSessionHandler::install()
-        * @param PHPSessionHandler $handler
-        */
-       public function setupPHPSessionHandler( PHPSessionHandler $handler ) {
-               $handler->setManager( $this, $this->store, $this->logger );
-       }
-
-       /**
-        * Reset the internal caching for unit testing
-        */
-       public static function resetCache() {
-               if ( !defined( 'MW_PHPUNIT_TEST' ) ) {
-                       // @codeCoverageIgnoreStart
-                       throw new MWException( __METHOD__ . ' may only be called from unit tests!' );
-                       // @codeCoverageIgnoreEnd
-               }
-
-               self::$globalSession = null;
-               self::$globalSessionRequest = null;
-       }
-
-       /**@}*/
-
-}
diff --git a/includes/session/SessionManagerInterface.php b/includes/session/SessionManagerInterface.php
deleted file mode 100644 (file)
index 67d6f5d..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-<?php
-/**
- * MediaWiki\Session entry point interface
- *
- * 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 Session
- */
-
-namespace MediaWiki\Session;
-
-use Psr\Log\LoggerAwareInterface;
-use WebRequest;
-
-/**
- * This exists to make IDEs happy, so they don't see the
- * internal-but-required-to-be-public methods on SessionManager.
- *
- * @ingroup Session
- * @since 1.27
- */
-interface SessionManagerInterface extends LoggerAwareInterface {
-       /**
-        * Fetch the persisted session ID in a request.
-        *
-        * Note this is not the same thing as whether the session associated with
-        * the request is currently persistent, as the session might have been
-        * first made persistent during this request.
-        *
-        * @param WebRequest $request
-        * @return string|null
-        * @throws \\OverflowException if there are multiple sessions tied for top
-        *  priority in the request. Exception has a property "sessionInfos"
-        *  holding the SessionInfo objects for the sessions involved.
-        */
-       public function getPersistedSessionId( WebRequest $request );
-
-       /**
-        * Fetch the session for a request
-        *
-        * @note You probably want to use $request->getSession() instead. It's more
-        *  efficient and doesn't break FauxRequests or sessions that were changed
-        *  by $this->getSessionById() or $this->getEmptySession().
-        * @param WebRequest $request Any existing associated session will be reset
-        *  to the session corresponding to the data in the request itself.
-        * @return Session
-        * @throws \\OverflowException if there are multiple sessions tied for top
-        *  priority in the request. Exception has a property "sessionInfos"
-        *  holding the SessionInfo objects for the sessions involved.
-        */
-       public function getSessionForRequest( WebRequest $request );
-
-       /**
-        * Fetch a session by ID
-        * @param string $id
-        * @param bool $noEmpty Don't return an empty session
-        * @param WebRequest|null $request Corresponding request. Any existing
-        *  session associated with this WebRequest object will be overwritten.
-        * @return Session|null
-        */
-       public function getSessionById( $id, $noEmpty = false, WebRequest $request = null );
-
-       /**
-        * Fetch a new, empty session
-        *
-        * The first provider configured that is able to provide an empty session
-        * will be used.
-        *
-        * @param WebRequest|null $request Corresponding request. Any existing
-        *  session associated with this WebRequest object will be overwritten.
-        * @return Session
-        */
-       public function getEmptySession( WebRequest $request = null );
-
-       /**
-        * Return the HTTP headers that need varying on.
-        *
-        * The return value is such that someone could theoretically do this:
-        * @code
-        *  foreach ( $provider->getVaryHeaders() as $header => $options ) {
-        *      $outputPage->addVaryHeader( $header, $options );
-        *  }
-        * @endcode
-        *
-        * @return array
-        */
-       public function getVaryHeaders();
-
-       /**
-        * Return the list of cookies that need varying on.
-        * @return string[]
-        */
-       public function getVaryCookies();
-
-}
diff --git a/includes/session/SessionProvider.php b/includes/session/SessionProvider.php
deleted file mode 100644 (file)
index 0fd3a71..0000000
+++ /dev/null
@@ -1,487 +0,0 @@
-<?php
-/**
- * MediaWiki session provider base class
- *
- * 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 Session
- */
-
-namespace MediaWiki\Session;
-
-use Psr\Log\LoggerAwareInterface;
-use Psr\Log\LoggerInterface;
-use Config;
-use Language;
-use WebRequest;
-
-/**
- * A SessionProvider provides SessionInfo and support for Session
- *
- * A SessionProvider is responsible for taking a WebRequest and determining
- * the authenticated session that it's a part of. It does this by returning an
- * SessionInfo object with basic information about the session it thinks is
- * associated with the request, namely the session ID and possibly the
- * authenticated user the session belongs to.
- *
- * The SessionProvider also provides for updating the WebResponse with
- * information necessary to provide the client with data that the client will
- * send with later requests, and for populating the Vary and Key headers with
- * the data necessary to correctly vary the cache on these client requests.
- *
- * An important part of the latter is indicating whether it even *can* tell the
- * client to include such data in future requests, via the persistsSessionId()
- * and canChangeUser() methods. The cases are (in order of decreasing
- * commonness):
- *  - Cannot persist ID, no changing User: The request identifies and
- *    authenticates a particular local user, and the client cannot be
- *    instructed to include an arbitrary session ID with future requests. For
- *    example, OAuth or SSL certificate auth.
- *  - Can persist ID and can change User: The client can be instructed to
- *    return at least one piece of arbitrary data, that being the session ID.
- *    The user identity might also be given to the client, otherwise it's saved
- *    in the session data. For example, cookie-based sessions.
- *  - Can persist ID but no changing User: The request uniquely identifies and
- *    authenticates a local user, and the client can be instructed to return an
- *    arbitrary session ID with future requests. For example, HTTP Digest
- *    authentication might somehow use the 'opaque' field as a session ID
- *    (although getting MediaWiki to return 401 responses without breaking
- *    other stuff might be a challenge).
- *  - Cannot persist ID but can change User: I can't think of a way this
- *    would make sense.
- *
- * Note that many methods that are technically "cannot persist ID" could be
- * turned into "can persist ID but not changing User" using a session cookie,
- * as implemented by ImmutableSessionProviderWithCookie. If doing so, different
- * session cookie names should be used for different providers to avoid
- * collisions.
- *
- * @ingroup Session
- * @since 1.27
- */
-abstract class SessionProvider implements SessionProviderInterface, LoggerAwareInterface {
-
-       /** @var LoggerInterface */
-       protected $logger;
-
-       /** @var Config */
-       protected $config;
-
-       /** @var SessionManager */
-       protected $manager;
-
-       /** @var int Session priority. Used for the default newSessionInfo(), but
-        * could be used by subclasses too.
-        */
-       protected $priority;
-
-       /**
-        * @note To fully initialize a SessionProvider, the setLogger(),
-        *  setConfig(), and setManager() methods must be called (and should be
-        *  called in that order). Failure to do so is liable to cause things to
-        *  fail unexpectedly.
-        */
-       public function __construct() {
-               $this->priority = SessionInfo::MIN_PRIORITY + 10;
-       }
-
-       public function setLogger( LoggerInterface $logger ) {
-               $this->logger = $logger;
-       }
-
-       /**
-        * Set configuration
-        * @param Config $config
-        */
-       public function setConfig( Config $config ) {
-               $this->config = $config;
-       }
-
-       /**
-        * Set the session manager
-        * @param SessionManager $manager
-        */
-       public function setManager( SessionManager $manager ) {
-               $this->manager = $manager;
-       }
-
-       /**
-        * Get the session manager
-        * @return SessionManager
-        */
-       public function getManager() {
-               return $this->manager;
-       }
-
-       /**
-        * Provide session info for a request
-        *
-        * If no session exists for the request, return null. Otherwise return an
-        * SessionInfo object identifying the session.
-        *
-        * If multiple SessionProviders provide sessions, the one with highest
-        * priority wins. In case of a tie, an exception is thrown.
-        * SessionProviders are encouraged to make priorities user-configurable
-        * unless only max-priority makes sense.
-        *
-        * @warning This will be called early in the MediaWiki setup process,
-        *  before $wgUser, $wgLang, $wgOut, $wgParser, $wgTitle, and corresponding
-        *  pieces of the main RequestContext are set up! If you try to use these,
-        *  things *will* break.
-        * @note The SessionProvider must not attempt to auto-create users.
-        *  MediaWiki will do this later (when it's safe) if the chosen session has
-        *  a user with a valid name but no ID.
-        * @protected For use by \\MediaWiki\\Session\\SessionManager only
-        * @param WebRequest $request
-        * @return SessionInfo|null
-        */
-       abstract public function provideSessionInfo( WebRequest $request );
-
-       /**
-        * Provide session info for a new, empty session
-        *
-        * Return null if such a session cannot be created. This base
-        * implementation assumes that it only makes sense if a session ID can be
-        * persisted and changing users is allowed.
-        *
-        * @protected For use by \\MediaWiki\\Session\\SessionManager only
-        * @param string|null $id ID to force for the new session
-        * @return SessionInfo|null
-        *  If non-null, must return true for $info->isIdSafe(); pass true for
-        *  $data['idIsSafe'] to ensure this.
-        */
-       public function newSessionInfo( $id = null ) {
-               if ( $this->canChangeUser() && $this->persistsSessionId() ) {
-                       return new SessionInfo( $this->priority, array(
-                               'id' => $id,
-                               'provider' => $this,
-                               'persisted' => false,
-                               'idIsSafe' => true,
-                       ) );
-               }
-               return null;
-       }
-
-       /**
-        * Merge saved session provider metadata
-        *
-        * The default implementation checks that anything in both arrays is
-        * identical, then returns $providedMetadata.
-        *
-        * @protected For use by \\MediaWiki\\Session\\SessionManager only
-        * @param array $savedMetadata Saved provider metadata
-        * @param array $providedMetadata Provided provider metadata
-        * @return array Resulting metadata
-        * @throws \UnexpectedValueException If the metadata cannot be merged
-        */
-       public function mergeMetadata( array $savedMetadata, array $providedMetadata ) {
-               foreach ( $providedMetadata as $k => $v ) {
-                       if ( array_key_exists( $k, $savedMetadata ) && $savedMetadata[$k] !== $v ) {
-                               throw new \UnexpectedValueException( "Key \"$k\" changed" );
-                       }
-               }
-               return $providedMetadata;
-       }
-
-       /**
-        * Validate a loaded SessionInfo and refresh provider metadata
-        *
-        * This is similar in purpose to the 'SessionCheckInfo' hook, and also
-        * allows for updating the provider metadata. On failure, the provider is
-        * expected to write an appropriate message to its logger.
-        *
-        * @protected For use by \\MediaWiki\\Session\\SessionManager only
-        * @param SessionInfo $info
-        * @param WebRequest $request
-        * @param array|null &$metadata Provider metadata, may be altered.
-        * @return bool Return false to reject the SessionInfo after all.
-        */
-       public function refreshSessionInfo( SessionInfo $info, WebRequest $request, &$metadata ) {
-               return true;
-       }
-
-       /**
-        * Indicate whether self::persistSession() can save arbitrary session IDs
-        *
-        * If false, any session passed to self::persistSession() will have an ID
-        * that was originally provided by self::provideSessionInfo().
-        *
-        * If true, the provider may be passed sessions with arbitrary session IDs,
-        * and will be expected to manipulate the request in such a way that future
-        * requests will cause self::provideSessionInfo() to provide a SessionInfo
-        * with that ID.
-        *
-        * For example, a session provider for OAuth would function by matching the
-        * OAuth headers to a particular user, and then would use self::hashToSessionId()
-        * to turn the user and OAuth client ID (and maybe also the user token and
-        * client secret) into a session ID, and therefore can't easily assign that
-        * user+client a different ID. Similarly, a session provider for SSL client
-        * certificates would function by matching the certificate to a particular
-        * user, and then would use self::hashToSessionId() to turn the user and
-        * certificate fingerprint into a session ID, and therefore can't easily
-        * assign a different ID either. On the other hand, a provider that saves
-        * the session ID into a cookie can easily just set the cookie to a
-        * different value.
-        *
-        * @protected For use by \\MediaWiki\\Session\\SessionBackend only
-        * @return bool
-        */
-       abstract public function persistsSessionId();
-
-       /**
-        * Indicate whether the user associated with the request can be changed
-        *
-        * If false, any session passed to self::persistSession() will have a user
-        * that was originally provided by self::provideSessionInfo(). Further,
-        * self::provideSessionInfo() may only provide sessions that have a user
-        * already set.
-        *
-        * If true, the provider may be passed sessions with arbitrary users, and
-        * will be expected to manipulate the request in such a way that future
-        * requests will cause self::provideSessionInfo() to provide a SessionInfo
-        * with that ID. This can be as simple as not passing any 'userInfo' into
-        * SessionInfo's constructor, in which case SessionInfo will load the user
-        * from the saved session's metadata.
-        *
-        * For example, a session provider for OAuth or SSL client certificates
-        * would function by matching the OAuth headers or certificate to a
-        * particular user, and thus would return false here since it can't
-        * arbitrarily assign those OAuth credentials or that certificate to a
-        * different user. A session provider that shoves information into cookies,
-        * on the other hand, could easily do so.
-        *
-        * @protected For use by \\MediaWiki\\Session\\SessionBackend only
-        * @return bool
-        */
-       abstract public function canChangeUser();
-
-       /**
-        * Notification that the session ID was reset
-        *
-        * No need to persist here, persistSession() will be called if appropriate.
-        *
-        * @protected For use by \\MediaWiki\\Session\\SessionBackend only
-        * @param SessionBackend $session Session to persist
-        * @param string $oldId Old session ID
-        * @codeCoverageIgnore
-        */
-       public function sessionIdWasReset( SessionBackend $session, $oldId ) {
-       }
-
-       /**
-        * Persist a session into a request/response
-        *
-        * For example, you might set cookies for the session's ID, user ID, user
-        * name, and user token on the passed request.
-        *
-        * To correctly persist a user independently of the session ID, the
-        * provider should persist both the user ID (or name, but preferably the
-        * ID) and the user token. When reading the data from the request, it
-        * should construct a User object from the ID/name and then verify that the
-        * User object's token matches the token included in the request. Should
-        * the tokens not match, an anonymous user *must* be passed to
-        * SessionInfo::__construct().
-        *
-        * When persisting a user independently of the session ID,
-        * $session->shouldRememberUser() should be checked first. If this returns
-        * false, the user token *must not* be saved to cookies. The user name
-        * and/or ID may be persisted, and should be used to construct an
-        * unverified UserInfo to pass to SessionInfo::__construct().
-        *
-        * A backend that cannot persist sesison ID or user info should implement
-        * this as a no-op.
-        *
-        * @protected For use by \\MediaWiki\\Session\\SessionBackend only
-        * @param SessionBackend $session Session to persist
-        * @param WebRequest $request Request into which to persist the session
-        */
-       abstract public function persistSession( SessionBackend $session, WebRequest $request );
-
-       /**
-        * Remove any persisted session from a request/response
-        *
-        * For example, blank and expire any cookies set by self::persistSession().
-        *
-        * A backend that cannot persist sesison ID or user info should implement
-        * this as a no-op.
-        *
-        * @protected For use by \\MediaWiki\\Session\\SessionManager only
-        * @param WebRequest $request Request from which to remove any session data
-        */
-       abstract public function unpersistSession( WebRequest $request );
-
-       /**
-        * Prevent future sessions for the user
-        *
-        * If the provider is capable of returning a SessionInfo with a verified
-        * UserInfo for the named user in some manner other than by validating
-        * against $user->getToken(), steps must be taken to prevent that from
-        * occurring in the future. This might add the username to a blacklist, or
-        * it might just delete whatever authentication credentials would allow
-        * such a session in the first place (e.g. remove all OAuth grants or
-        * delete record of the SSL client certificate).
-        *
-        * The intention is that the named account will never again be usable for
-        * normal login (i.e. there is no way to undo the prevention of access).
-        *
-        * Note that the passed user name might not exist locally (i.e.
-        * User::idFromName( $username ) === 0); the name should still be
-        * prevented, if applicable.
-        *
-        * @protected For use by \\MediaWiki\\Session\\SessionManager only
-        * @param string $username
-        */
-       public function preventSessionsForUser( $username ) {
-               if ( !$this->canChangeUser() ) {
-                       throw new \BadMethodCallException(
-                               __METHOD__ . ' must be implmented when canChangeUser() is false'
-                       );
-               }
-       }
-
-       /**
-        * Return the HTTP headers that need varying on.
-        *
-        * The return value is such that someone could theoretically do this:
-        * @code
-        *  foreach ( $provider->getVaryHeaders() as $header => $options ) {
-        *      $outputPage->addVaryHeader( $header, $options );
-        *  }
-        * @endcode
-        *
-        * @protected For use by \\MediaWiki\\Session\\SessionManager only
-        * @return array
-        */
-       public function getVaryHeaders() {
-               return array();
-       }
-
-       /**
-        * Return the list of cookies that need varying on.
-        * @protected For use by \\MediaWiki\\Session\\SessionManager only
-        * @return string[]
-        */
-       public function getVaryCookies() {
-               return array();
-       }
-
-       /**
-        * Get a suggested username for the login form
-        * @protected For use by \\MediaWiki\\Session\\SessionBackend only
-        * @param WebRequest $request
-        * @return string|null
-        */
-       public function suggestLoginUsername( WebRequest $request ) {
-               return null;
-       }
-
-       /**
-        * Fetch the rights allowed the user when the specified session is active.
-        * @param SessionBackend $backend
-        * @return null|string[] Allowed user rights, or null to allow all.
-        */
-       public function getAllowedUserRights( SessionBackend $backend ) {
-               if ( $backend->getProvider() !== $this ) {
-                       // Not that this should ever happen...
-                       throw new \InvalidArgumentException( 'Backend\'s provider isn\'t $this' );
-               }
-
-               return null;
-       }
-
-       /**
-        * @note Only override this if it makes sense to instantiate multiple
-        *  instances of the provider. Value returned must be unique across
-        *  configured providers. If you override this, you'll likely need to
-        *  override self::describeMessage() as well.
-        * @return string
-        */
-       public function __toString() {
-               return get_class( $this );
-       }
-
-       /**
-        * Return a Message identifying this session type
-        *
-        * This default implementation takes the class name, lowercases it,
-        * replaces backslashes with dashes, and prefixes 'sessionprovider-' to
-        * determine the message key. For example, MediaWiki\\Session\\CookieSessionProvider
-        * produces 'sessionprovider-mediawiki-session-cookiesessionprovider'.
-        *
-        * @note If self::__toString() is overridden, this will likely need to be
-        *  overridden as well.
-        * @warning This will be called early during MediaWiki startup. Do not
-        *  use $wgUser, $wgLang, $wgOut, $wgParser, or their equivalents via
-        *  RequestContext from this method!
-        * @return Message
-        */
-       protected function describeMessage() {
-               return wfMessage(
-                       'sessionprovider-' . str_replace( '\\', '-', strtolower( get_class( $this ) ) )
-               );
-       }
-
-       public function describe( Language $lang ) {
-               $msg = $this->describeMessage();
-               $msg->inLanguage( $lang );
-               if ( $msg->isDisabled() ) {
-                       $msg = wfMessage( 'sessionprovider-generic', (string)$this )->inLanguage( $lang );
-               }
-               return $msg->plain();
-       }
-
-       public function whyNoSession() {
-               return null;
-       }
-
-       /**
-        * Hash data as a session ID
-        *
-        * Generally this will only be used when self::persistsSessionId() is false and
-        * the provider has to base the session ID on the verified user's identity
-        * or other static data.
-        *
-        * @param string $data
-        * @param string|null $key Defaults to $this->config->get( 'SecretKey' )
-        * @return string
-        */
-       final protected function hashToSessionId( $data, $key = null ) {
-               if ( !is_string( $data ) ) {
-                       throw new \InvalidArgumentException(
-                               '$data must be a string, ' . gettype( $data ) . ' was passed'
-                       );
-               }
-               if ( $key !== null && !is_string( $key ) ) {
-                       throw new \InvalidArgumentException(
-                               '$key must be a string or null, ' . gettype( $key ) . ' was passed'
-                       );
-               }
-
-               $hash = \MWCryptHash::hmac( "$this\n$data", $key ?: $this->config->get( 'SecretKey' ), false );
-               if ( strlen( $hash ) < 32 ) {
-                       // Should never happen, even md5 is 128 bits
-                       // @codeCoverageIgnoreStart
-                       throw new \UnexpectedValueException( 'Hash fuction returned less than 128 bits' );
-                       // @codeCoverageIgnoreEnd
-               }
-               if ( strlen( $hash ) >= 40 ) {
-                       $hash = wfBaseConvert( $hash, 16, 32, 32 );
-               }
-               return substr( $hash, -32 );
-       }
-
-}
diff --git a/includes/session/SessionProviderInterface.php b/includes/session/SessionProviderInterface.php
deleted file mode 100644 (file)
index 02ae23d..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-/**
- * MediaWiki\Session\Provider interface
- *
- * 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 Session
- */
-
-namespace MediaWiki\Session;
-
-use Language;
-
-/**
- * This exists to make IDEs happy, so they don't see the
- * internal-but-required-to-be-public methods on SessionProvider.
- *
- * @ingroup Session
- * @since 1.27
- */
-interface SessionProviderInterface {
-
-       /**
-        * Return an identifier for this session type
-        *
-        * @param Language $lang Language to use.
-        * @return string
-        */
-       public function describe( Language $lang );
-
-       /**
-        * Return a Message for why sessions might not be being persisted.
-        *
-        * For example, "check whether you're blocking our cookies".
-        *
-        * @return Message|null
-        */
-       public function whyNoSession();
-
-}
diff --git a/includes/session/UserInfo.php b/includes/session/UserInfo.php
deleted file mode 100644 (file)
index e844bb6..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
-<?php
-/**
- * MediaWiki session user info
- *
- * 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 Session
- */
-
-namespace MediaWiki\Session;
-
-use User;
-
-/**
- * Object holding data about a session's user
- *
- * In general, this class exists for two purposes:
- * - User doesn't distinguish between "anonymous user" and "non-anonymous user
- *   that doesn't exist locally", while we do need to.
- * - We also need the "verified" property described below; tracking it via
- *   another data item to SessionInfo's constructor makes things much more
- *   confusing.
- *
- * A UserInfo may be "verified". This indicates that the creator knows that the
- * request really comes from that user, whether that's by validating OAuth
- * credentials, SSL client certificates, or by having both the user ID and
- * token available from cookies.
- *
- * An "unverified" UserInfo should be used when it's not possible to
- * authenticate the user, e.g. the user ID cookie is set but the user Token
- * cookie isn't. If the Token is available but doesn't match, don't return a
- * UserInfo at all.
- *
- * @ingroup Session
- * @since 1.27
- */
-final class UserInfo {
-       private $verified = false;
-
-       /** @var User|null */
-       private $user = null;
-
-       private function __construct( User $user = null, $verified ) {
-               if ( $user && $user->isAnon() && !User::isUsableName( $user->getName() ) ) {
-                       $this->verified = true;
-                       $this->user = null;
-               } else {
-                       $this->verified = $verified;
-                       $this->user = $user;
-               }
-       }
-
-       /**
-        * Create an instance for an anonymous (i.e. not logged in) user
-        *
-        * Logged-out users are always "verified".
-        *
-        * @return UserInfo
-        */
-       public static function newAnonymous() {
-               return new self( null, true );
-       }
-
-       /**
-        * Create an instance for a logged-in user by ID
-        * @param int $id User ID
-        * @param bool $verified True if the user is verified
-        * @return UserInfo
-        */
-       public static function newFromId( $id, $verified = false ) {
-               $user = User::newFromId( $id );
-
-               // Ensure the ID actually exists
-               $user->load();
-               if ( $user->isAnon() ) {
-                       throw new \InvalidArgumentException( 'Invalid ID' );
-               }
-
-               return new self( $user, $verified );
-       }
-
-       /**
-        * Create an instance for a logged-in user by name
-        * @param string $name User name (need not exist locally)
-        * @param bool $verified True if the user is verified
-        * @return UserInfo
-        */
-       public static function newFromName( $name, $verified = false ) {
-               $user = User::newFromName( $name, 'usable' );
-               if ( !$user ) {
-                       throw new \InvalidArgumentException( 'Invalid user name' );
-               }
-               return new self( $user, $verified );
-       }
-
-       /**
-        * Create an instance from an existing User object
-        * @param User $user (need not exist locally)
-        * @param bool $verified True if the user is verified
-        * @return UserInfo
-        */
-       public static function newFromUser( User $user, $verified = false ) {
-               return new self( $user, $verified );
-       }
-
-       /**
-        * Return whether this is an anonymous user
-        * @return bool
-        */
-       public function isAnon() {
-               return $this->user === null;
-       }
-
-       /**
-        * Return whether this represents a verified user
-        * @return bool
-        */
-       public function isVerified() {
-               return $this->verified;
-       }
-
-       /**
-        * Return the user ID
-        * @note Do not use this to test for anonymous users!
-        * @return int
-        */
-       public function getId() {
-               return $this->user === null ? 0 : $this->user->getId();
-       }
-
-       /**
-        * Return the user name
-        * @return string|null
-        */
-       public function getName() {
-               return $this->user === null ? null : $this->user->getName();
-       }
-
-       /**
-        * Return the user token
-        * @return string|null
-        */
-       public function getToken() {
-               return $this->user === null || $this->user->getId() === 0 ? null : $this->user->getToken( true );
-       }
-
-       /**
-        * Return a User object
-        * @return User
-        */
-       public function getUser() {
-               return $this->user === null ? new User : $this->user;
-       }
-
-       /**
-        * Return a verified version of this object
-        * @return UserInfo
-        */
-       public function verified() {
-               return $this->verified ? $this : new self( $this->user, true );
-       }
-
-       public function __toString() {
-               if ( $this->user === null ) {
-                       return '<anon>';
-               }
-               return '<' .
-                       ( $this->verified ? '+' : '-' ) . ':' .
-                       $this->getId() . ':' . $this->getName() .
-                       '>';
-       }
-
-}
index 2e764ba..3babafd 100644 (file)
@@ -90,7 +90,6 @@ class SpecialPageFactory {
                'Unblock' => 'SpecialUnblock',
                'BlockList' => 'SpecialBlockList',
                'ChangePassword' => 'SpecialChangePassword',
-               'BotPasswords' => 'SpecialBotPasswords',
                'PasswordReset' => 'SpecialPasswordReset',
                'DeletedContributions' => 'DeletedContributionsPage',
                'Preferences' => 'SpecialPreferences',
diff --git a/includes/specials/SpecialBotPasswords.php b/includes/specials/SpecialBotPasswords.php
deleted file mode 100644 (file)
index 93c36ab..0000000
+++ /dev/null
@@ -1,357 +0,0 @@
-<?php
-/**
- * Implements Special:BotPasswords
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup SpecialPage
- */
-
-/**
- * Let users manage bot passwords
- *
- * @ingroup SpecialPage
- */
-class SpecialBotPasswords extends FormSpecialPage {
-
-       /** @var int Central user ID */
-       private $userId = 0;
-
-       /** @var BotPassword|null Bot password being edited, if any */
-       private $botPassword = null;
-
-       /** @var string Operation being performed: create, update, delete */
-       private $operation = null;
-
-       /** @var string New password set, for communication between onSubmit() and onSuccess() */
-       private $password = null;
-
-       public function __construct() {
-               parent::__construct( 'BotPasswords', 'editmyprivateinfo' );
-       }
-
-       /**
-        * @return bool
-        */
-       public function isListed() {
-               return $this->getConfig()->get( 'EnableBotPasswords' );
-       }
-
-       /**
-        * Main execution point
-        * @param string|null $par
-        */
-       function execute( $par ) {
-               $this->getOutput()->disallowUserJs();
-               $this->requireLogin();
-
-               $par = trim( $par );
-               if ( strlen( $par ) === 0 ) {
-                       $par = null;
-               } elseif ( strlen( $par ) > BotPassword::APPID_MAXLENGTH ) {
-                       throw new ErrorPageError( 'botpasswords', 'botpasswords-bad-appid',
-                               array( htmlspecialchars( $par ) ) );
-               }
-
-               parent::execute( $par );
-       }
-
-       protected function checkExecutePermissions( User $user ) {
-               parent::checkExecutePermissions( $user );
-
-               if ( !$this->getConfig()->get( 'EnableBotPasswords' ) ) {
-                       throw new ErrorPageError( 'botpasswords', 'botpasswords-disabled' );
-               }
-
-               $this->userId = CentralIdLookup::factory()->centralIdFromLocalUser( $this->getUser() );
-               if ( !$this->userId ) {
-                       throw new ErrorPageError( 'botpasswords', 'botpasswords-no-central-id' );
-               }
-       }
-
-       protected function getFormFields() {
-               $that = $this;
-               $user = $this->getUser();
-               $request = $this->getRequest();
-
-               $fields = array();
-
-               if ( $this->par !== null ) {
-                       $this->botPassword = BotPassword::newFromCentralId( $this->userId, $this->par );
-                       if ( !$this->botPassword ) {
-                               $this->botPassword = BotPassword::newUnsaved( array(
-                                       'centralId' => $this->userId,
-                                       'appId' => $this->par,
-                               ) );
-                       }
-
-                       $sep = BotPassword::getSeparator();
-                       $fields[] = array(
-                               'type' => 'info',
-                               'label-message' => 'username',
-                               'default' => $this->getUser()->getName() . $sep . $this->par
-                       );
-
-                       if ( $this->botPassword->isSaved() ) {
-                               $fields['resetPassword'] = array(
-                                       'type' => 'check',
-                                       'label-message' => 'botpasswords-label-resetpassword',
-                               );
-                       }
-
-                       $lang = $this->getLanguage();
-                       $showGrants = MWGrants::getValidGrants();
-                       $fields['grants'] = array(
-                               'type' => 'checkmatrix',
-                               'label-message' => 'botpasswords-label-grants',
-                               'help-message' => 'botpasswords-help-grants',
-                               'columns' => array(
-                                       $this->msg( 'botpasswords-label-grants-column' )->escaped() => 'grant'
-                               ),
-                               'rows' => array_combine(
-                                       array_map( 'MWGrants::getGrantsLink', $showGrants ),
-                                       $showGrants
-                               ),
-                               'default' => array_map(
-                                       function( $g ) {
-                                               return "grant-$g";
-                                       },
-                                       $this->botPassword->getGrants()
-                               ),
-                               'tooltips' => array_combine(
-                                       array_map( 'MWGrants::getGrantsLink', $showGrants ),
-                                       array_map(
-                                               function( $rights ) use ( $lang ) {
-                                                       return $lang->semicolonList( array_map( 'User::getRightDescription', $rights ) );
-                                               },
-                                               array_intersect_key( MWGrants::getRightsByGrant(), array_flip( $showGrants ) )
-                                       )
-                               ),
-                               'force-options-on' => array_map(
-                                       function( $g ) {
-                                               return "grant-$g";
-                                       },
-                                       MWGrants::getHiddenGrants()
-                               ),
-                       );
-
-                       $fields['restrictions'] = array(
-                               'type' => 'textarea',
-                               'label-message' => 'botpasswords-label-restrictions',
-                               'required' => true,
-                               'default' => $this->botPassword->getRestrictions()->toJson( true ),
-                               'rows' => 5,
-                               'validation-callback' => function ( $v ) {
-                                       try {
-                                               MWRestrictions::newFromJson( $v );
-                                               return true;
-                                       } catch ( InvalidArgumentException $ex ) {
-                                               return $ex->getMessage();
-                                       }
-                               },
-                       );
-
-               } else {
-                       $dbr = BotPassword::getDB( DB_SLAVE );
-                       $res = $dbr->select(
-                               'bot_passwords',
-                               array( 'bp_app_id' ),
-                               array( 'bp_user' => $this->userId ),
-                               __METHOD__
-                       );
-                       foreach ( $res as $row ) {
-                               $fields[] = array(
-                                       'section' => 'existing',
-                                       'type' => 'info',
-                                       'raw' => true,
-                                       'default' => Linker::link(
-                                               $this->getPageTitle( $row->bp_app_id ),
-                                               htmlspecialchars( $row->bp_app_id ),
-                                               array(),
-                                               array(),
-                                               array( 'known' )
-                                       ),
-                               );
-                       }
-
-                       $fields['appId'] = array(
-                               'section' => 'createnew',
-                               'type' => 'textwithbutton',
-                               'label-message' => 'botpasswords-label-appid',
-                               'buttondefault' => $this->msg( 'botpasswords-label-create' )->text(),
-                               'required' => true,
-                               'size' => BotPassword::APPID_MAXLENGTH,
-                               'maxlength' => BotPassword::APPID_MAXLENGTH,
-                               'validation-callback' => function ( $v ) {
-                                       $v = trim( $v );
-                                       return $v !== '' && strlen( $v ) <= BotPassword::APPID_MAXLENGTH;
-                               },
-                       );
-
-                       $fields[] = array(
-                               'type' => 'hidden',
-                               'default' => 'new',
-                               'name' => 'op',
-                       );
-               }
-
-               return $fields;
-       }
-
-       protected function alterForm( HTMLForm $form ) {
-               $form->setId( 'mw-botpasswords-form' );
-               $form->setTableId( 'mw-botpasswords-table' );
-               $form->addPreText( $this->msg( 'botpasswords-summary' )->parseAsBlock() );
-               $form->suppressDefaultSubmit();
-
-               if ( $this->par !== null ) {
-                       if ( $this->botPassword->isSaved() ) {
-                               $form->setWrapperLegendMsg( 'botpasswords-editexisting' );
-                               $form->addButton( array(
-                                       'name' => 'op',
-                                       'value' => 'update',
-                                       'label-message' => 'botpasswords-label-update',
-                                       'flags' => array( 'primary', 'progressive' ),
-                               ) );
-                               $form->addButton( array(
-                                       'name' => 'op',
-                                       'value' => 'delete',
-                                       'label-message' => 'botpasswords-label-delete',
-                                       'flags' => array( 'destructive' ),
-                               ) );
-                       } else {
-                               $form->setWrapperLegendMsg( 'botpasswords-createnew' );
-                               $form->addButton( array(
-                                       'name' => 'op',
-                                       'value' => 'create',
-                                       'label-message' => 'botpasswords-label-create',
-                                       'flags' => array( 'primary', 'constructive' ),
-                               ) );
-                       }
-
-                       $form->addButton( array(
-                               'name' => 'op',
-                               'value' => 'cancel',
-                               'label-message' => 'botpasswords-label-cancel'
-                       ) );
-               }
-       }
-
-       public function onSubmit( array $data ) {
-               $op = $this->getRequest()->getVal( 'op', '' );
-
-               switch ( $op ) {
-                       case 'new':
-                               $this->getOutput()->redirect( $this->getPageTitle( $data['appId'] )->getFullURL() );
-                               return false;
-
-                       case 'create':
-                               $this->operation = 'insert';
-                               return $this->save( $data );
-
-                       case 'update':
-                               $this->operation = 'update';
-                               return $this->save( $data );
-
-                       case 'delete':
-                               $this->operation = 'delete';
-                               $bp = BotPassword::newFromCentralId( $this->userId, $this->par );
-                               if ( $bp ) {
-                                       $bp->delete();
-                               }
-                               return Status::newGood();
-
-                       case 'cancel':
-                               $this->getOutput()->redirect( $this->getPageTitle()->getFullURL() );
-                               return false;
-               }
-
-               return false;
-       }
-
-       private function save( array $data ) {
-               $bp = BotPassword::newUnsaved( array(
-                       'centralId' => $this->userId,
-                       'appId' => $this->par,
-                       'restrictions' => MWRestrictions::newFromJson( $data['restrictions'] ),
-                       'grants' => array_merge(
-                               MWGrants::getHiddenGrants(),
-                               preg_replace( '/^grant-/', '', $data['grants'] )
-                       )
-               ) );
-
-               if ( $this->operation === 'insert' || !empty( $data['resetPassword'] ) ) {
-                       $this->password = PasswordFactory::generateRandomPasswordString(
-                               max( 32, $this->getConfig()->get( 'MinimalPasswordLength' ) )
-                       );
-                       $passwordFactory = new PasswordFactory();
-                       $passwordFactory->init( RequestContext::getMain()->getConfig() );
-                       $password = $passwordFactory->newFromPlaintext( $this->password );
-               } else {
-                       $password = null;
-               }
-
-               if ( $bp->save( $this->operation, $password ) ) {
-                       return Status::newGood();
-               } else {
-                       // Messages: botpasswords-insert-failed, botpasswords-update-failed
-                       return Status::newFatal( "botpasswords-{$this->operation}-failed", $this->par );
-               }
-       }
-
-       public function onSuccess() {
-               $out = $this->getOutput();
-
-               switch ( $this->operation ) {
-                       case 'insert':
-                               $out->setPageTitle( $this->msg( 'botpasswords-created-title' )->text() );
-                               $out->addWikiMsg( 'botpasswords-created-body', $this->par );
-                               break;
-
-                       case 'update':
-                               $out->setPageTitle( $this->msg( 'botpasswords-updated-title' )->text() );
-                               $out->addWikiMsg( 'botpasswords-updated-body', $this->par );
-                               break;
-
-                       case 'delete':
-                               $out->setPageTitle( $this->msg( 'botpasswords-deleted-title' )->text() );
-                               $out->addWikiMsg( 'botpasswords-deleted-body', $this->par );
-                               $this->password = null;
-                               break;
-               }
-
-               if ( $this->password !== null ) {
-                       $sep = BotPassword::getSeparator();
-                       $out->addWikiMsg(
-                               'botpasswords-newpassword',
-                               htmlspecialchars( $this->getUser()->getName() . $sep . $this->par ),
-                               htmlspecialchars( $this->password )
-                       );
-                       $this->password = null;
-               }
-
-               $out->addReturnTo( $this->getPageTitle() );
-       }
-
-       protected function getGroupName() {
-               return 'users';
-       }
-
-       protected function getDisplayFormat() {
-               return 'ooui';
-       }
-}
index 4bdad79..a7e5e02 100644 (file)
@@ -117,9 +117,9 @@ class MovePageForm extends UnlistedSpecialPage {
                $this->moveTalk = $request->getBool( 'wpMovetalk', $def );
                $this->fixRedirects = $request->getBool( 'wpFixRedirects', $def );
                $this->leaveRedirect = $request->getBool( 'wpLeaveRedirect', $def );
-               $this->moveSubpages = $request->getBool( 'wpMovesubpages', false );
-               $this->deleteAndMove = $request->getBool( 'wpDeleteAndMove' ) && $request->getBool( 'wpConfirm' );
-               $this->moveOverShared = $request->getBool( 'wpMoveOverSharedFile', false );
+               $this->moveSubpages = $request->getBool( 'wpMovesubpages' );
+               $this->deleteAndMove = $request->getBool( 'wpDeleteAndMove' );
+               $this->moveOverShared = $request->getBool( 'wpMoveOverSharedFile' );
                $this->watch = $request->getCheck( 'wpWatch' ) && $user->isLoggedIn();
 
                if ( 'submit' == $request->getVal( 'action' ) && $request->wasPosted()
@@ -149,24 +149,25 @@ class MovePageForm extends UnlistedSpecialPage {
                $out->addModuleStyles( 'mediawiki.special.movePage.styles' );
                $this->addHelpLink( 'Help:Moving a page' );
 
+               $out->addWikiMsg( $this->getConfig()->get( 'FixDoubleRedirects' ) ?
+                       'movepagetext' :
+                       'movepagetext-noredirectfixer'
+               );
+
                if ( $this->oldTitle->getNamespace() == NS_USER && !$this->oldTitle->isSubpage() ) {
                        $out->wrapWikiMsg(
-                               "<div class=\"error mw-moveuserpage-warning\">\n$1\n</div>",
+                               "<div class=\"warningbox mw-moveuserpage-warning\">\n$1\n</div>",
                                'moveuserpage-warning'
                        );
                } elseif ( $this->oldTitle->getNamespace() == NS_CATEGORY ) {
                        $out->wrapWikiMsg(
-                               "<div class=\"error mw-movecategorypage-warning\">\n$1\n</div>",
+                               "<div class=\"warningbox mw-movecategorypage-warning\">\n$1\n</div>",
                                'movecategorypage-warning'
                        );
                }
 
-               $out->addWikiMsg( $this->getConfig()->get( 'FixDoubleRedirects' ) ?
-                       'movepagetext' :
-                       'movepagetext-noredirectfixer'
-               );
-               $submitVar = 'wpMove';
-               $confirm = false;
+               $deleteAndMove = false;
+               $moveOverShared = false;
 
                $newTitle = $this->newTitle;
 
@@ -189,17 +190,25 @@ class MovePageForm extends UnlistedSpecialPage {
                if ( count( $err ) == 1 && isset( $err[0][0] ) && $err[0][0] == 'articleexists'
                        && $newTitle->quickUserCan( 'delete', $user )
                ) {
-                       $out->addWikiMsg( 'delete_and_move_text', $newTitle->getPrefixedText() );
-                       $submitVar = 'wpDeleteAndMove';
-                       $confirm = true;
+                       $out->wrapWikiMsg(
+                               "<div class='warningbox'>\n$1\n</div>\n",
+                               array( 'delete_and_move_text', $newTitle->getPrefixedText() )
+                       );
+                       $deleteAndMove = true;
                        $err = array();
                }
 
                if ( count( $err ) == 1 && isset( $err[0][0] ) && $err[0][0] == 'file-exists-sharedrepo'
                        && $user->isAllowed( 'reupload-shared' )
                ) {
-                       $out->addWikiMsg( 'move-over-sharedrepo', $newTitle->getPrefixedText() );
-                       $submitVar = 'wpMoveOverSharedFile';
+                       $out->wrapWikiMsg(
+                               "<div class='warningbox'>\n$1\n</div>\n",
+                               array(
+                                       'move-over-sharedrepo',
+                                       $newTitle->getPrefixedText()
+                               )
+                       );
+                       $moveOverShared = true;
                        $err = array();
                }
 
@@ -228,7 +237,7 @@ class MovePageForm extends UnlistedSpecialPage {
                }
 
                if ( count( $err ) ) {
-                       $out->addHTML( "<div class='error'>\n" );
+                       $out->addHTML( "<div class='errorbox'>\n" );
                        $action_desc = $this->msg( 'action-move' )->plain();
                        $out->addWikiMsg( 'permissionserrorstext-withaction', count( $err ), $action_desc );
 
@@ -430,11 +439,16 @@ class MovePageForm extends UnlistedSpecialPage {
                        );
                }
 
-               if ( $confirm ) {
+               $hiddenFields = '';
+               if ( $moveOverShared ) {
+                       $hiddenFields .= Html::hidden( 'wpMoveOverSharedFile', '1' );
+               }
+
+               if ( $deleteAndMove ) {
                        $fields[] = new OOUI\FieldLayout(
                                new OOUI\CheckboxInputWidget( array(
-                                       'name' => 'wpConfirm',
-                                       'id' => 'wpConfirm',
+                                       'name' => 'wpDeleteAndMove',
+                                       'id' => 'wpDeleteAndMove',
                                        'value' => '1',
                                ) ),
                                array(
@@ -446,7 +460,7 @@ class MovePageForm extends UnlistedSpecialPage {
 
                $fields[] = new OOUI\FieldLayout(
                        new OOUI\ButtonInputWidget( array(
-                               'name' => $submitVar,
+                               'name' => 'wpMove',
                                'value' => $this->msg( 'movepagebtn' )->text(),
                                'label' => $this->msg( 'movepagebtn' )->text(),
                                'flags' => array( 'constructive', 'primary' ),
@@ -471,6 +485,7 @@ class MovePageForm extends UnlistedSpecialPage {
                $form->appendContent(
                        $fieldset,
                        new OOUI\HtmlSnippet(
+                               $hiddenFields .
                                Html::hidden( 'wpOldTitle', $this->oldTitle->getPrefixedText() ) .
                                Html::hidden( 'wpEditToken', $user->getEditToken() )
                        )
index f030231..0bf2485 100644 (file)
@@ -84,10 +84,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                $opts->add( 'hideliu', false );
                $opts->add( 'hidepatrolled', $user->getBoolOption( 'hidepatrolled' ) );
                $opts->add( 'hidemyself', false );
-
-               if ( $config->get( 'RCWatchCategoryMembership' ) ) {
-                       $opts->add( 'hidecategorization', $user->getBoolOption( 'hidecategorization' ) );
-               }
+               $opts->add( 'hidecategorization', $user->getBoolOption( 'hidecategorization' ) );
 
                $opts->add( 'categories', '' );
                $opts->add( 'categories_any', false );
index 24e1675..62e200e 100644 (file)
@@ -21,7 +21,6 @@
  * @ingroup SpecialPage
  */
 use MediaWiki\Logger\LoggerFactory;
-use MediaWiki\Session\SessionManager;
 
 /**
  * Implements Special:UserLogin
@@ -268,9 +267,9 @@ class LoginForm extends SpecialPage {
         * @param string|null $subPage
         */
        public function execute( $subPage ) {
-               // Make sure session is persisted
-               $session = MediaWiki\Session\SessionManager::getGlobalSession();
-               $session->persist();
+               if ( session_id() == '' ) {
+                       wfSetupSession();
+               }
 
                $this->load();
 
@@ -281,17 +280,6 @@ class LoginForm extends SpecialPage {
                }
                $this->setHeaders();
 
-               // Make sure it's possible to log in
-               if ( $this->mType !== 'signup' && !$session->canSetUser() ) {
-                       throw new ErrorPageError(
-                               'cannotloginnow-title',
-                               'cannotloginnow-text',
-                               array(
-                                       $session->getProvider()->describe( RequestContext::getMain()->getLanguage() )
-                               )
-                       );
-               }
-
                /**
                 * In the case where the user is already logged in, and was redirected to
                 * the login form from a page that requires login, do not show the login
@@ -1392,7 +1380,7 @@ class LoginForm extends SpecialPage {
                        if ( $user->isLoggedIn() ) {
                                $this->mUsername = $user->getName();
                        } else {
-                               $this->mUsername = $this->getRequest()->getSession()->suggestLoginUsername();
+                               $this->mUsername = $this->getRequest()->getCookie( 'UserName' );
                        }
                }
 
@@ -1568,8 +1556,7 @@ class LoginForm extends SpecialPage {
        function hasSessionCookie() {
                global $wgDisableCookieCheck;
 
-               return $wgDisableCookieCheck ||
-                       SessionManager::singleton()->getPersistedSessionId( $this->getRequest() ) !== null;
+               return $wgDisableCookieCheck ? true : $this->getRequest()->checkSessionCookie();
        }
 
        /**
@@ -1588,7 +1575,7 @@ class LoginForm extends SpecialPage {
        public static function setLoginToken() {
                global $wgRequest;
                // Generate a token directly instead of using $user->getEditToken()
-               // because the latter reuses wsEditToken in the session
+               // because the latter reuses $_SESSION['wsEditToken']
                $wgRequest->setSessionData( 'wsLoginToken', MWCryptRand::generateHex( 32 ) );
        }
 
@@ -1634,7 +1621,7 @@ class LoginForm extends SpecialPage {
                        $wgCookieSecure = false;
                }
 
-               MediaWiki\Session\SessionManager::getGlobalSession()->resetId();
+               wfResetSessionID();
        }
 
        /**
index 6e34690..722f772 100644 (file)
@@ -48,18 +48,6 @@ class SpecialUserlogout extends UnlistedSpecialPage {
                $this->setHeaders();
                $this->outputHeader();
 
-               // Make sure it's possible to log out
-               $session = MediaWiki\Session\SessionManager::getGlobalSession();
-               if ( !$session->canSetUser() ) {
-                       throw new ErrorPageError(
-                               'cannotlogoutnow-title',
-                               'cannotlogoutnow-text',
-                               array(
-                                       $session->getProvider()->describe( RequestContext::getMain()->getLanguage() )
-                               )
-                       );
-               }
-
                $user = $this->getUser();
                $oldName = $user->getName();
                $user->logout();
index 43228fa..a628902 100644 (file)
@@ -38,12 +38,6 @@ class SpecialVersion extends SpecialPage {
 
        protected static $extensionTypes = false;
 
-       protected 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',
-               'https://svn.wikimedia.org/svnroot/mediawiki' => 'https://svn.wikimedia.org/viewvc/mediawiki',
-       );
-
        public function __construct() {
                parent::__construct( 'Version' );
        }
@@ -258,7 +252,7 @@ class SpecialVersion extends SpecialPage {
        }
 
        /**
-        * Return a string of the MediaWiki version with SVN revision if available.
+        * Return a string of the MediaWiki version with Git revision if available.
         *
         * @param string $flags
         * @return mixed
@@ -267,25 +261,15 @@ class SpecialVersion extends SpecialPage {
                global $wgVersion, $IP;
 
                $gitInfo = self::getGitHeadSha1( $IP );
-               $svnInfo = self::getSvnInfo( $IP );
-               if ( !$svnInfo && !$gitInfo ) {
+               if ( !$gitInfo ) {
                        $version = $wgVersion;
-               } elseif ( $gitInfo && $flags === 'nodb' ) {
+               } elseif ( $flags === 'nodb' ) {
                        $shortSha1 = substr( $gitInfo, 0, 7 );
                        $version = "$wgVersion ($shortSha1)";
-               } elseif ( $gitInfo ) {
+               } else {
                        $shortSha1 = substr( $gitInfo, 0, 7 );
                        $shortSha1 = wfMessage( 'parentheses' )->params( $shortSha1 )->escaped();
                        $version = "$wgVersion $shortSha1";
-               } elseif ( $flags === 'nodb' ) {
-                       $version = "$wgVersion (r{$svnInfo['checkout-rev']})";
-               } else {
-                       $version = $wgVersion . ' ' .
-                               wfMessage(
-                                       'version-svn-revision',
-                                       isset( $svnInfo['directory-rev'] ) ? $svnInfo['directory-rev'] : '',
-                                       isset( $svnInfo['checkout-rev'] ) ? $svnInfo['checkout-rev'] : ''
-                               )->text();
                }
 
                return $version;
@@ -293,8 +277,7 @@ class SpecialVersion extends SpecialPage {
 
        /**
         * Return a wikitext-formatted string of the MediaWiki version with a link to
-        * the SVN revision or the git SHA1 of head if available.
-        * Git is prefered over Svn
+        * the Git SHA1 of head if available.
         * The fallback is just $wgVersion
         *
         * @return mixed
@@ -306,43 +289,12 @@ class SpecialVersion extends SpecialPage {
                if ( $gitVersion ) {
                        $v = $gitVersion;
                } else {
-                       $svnVersion = self::getVersionLinkedSvn();
-                       if ( $svnVersion ) {
-                               $v = $svnVersion;
-                       } else {
-                               $v = $wgVersion; // fallback
-                       }
+                       $v = $wgVersion; // fallback
                }
 
                return $v;
        }
 
-       /**
-        * @return string Global wgVersion + a link to subversion revision of svn BASE
-        */
-       private static function getVersionLinkedSvn() {
-               global $IP;
-
-               $info = self::getSvnInfo( $IP );
-               if ( !isset( $info['checkout-rev'] ) ) {
-                       return false;
-               }
-
-               $linkText = wfMessage(
-                       'version-svn-revision',
-                       isset( $info['directory-rev'] ) ? $info['directory-rev'] : '',
-                       $info['checkout-rev']
-               )->text();
-
-               if ( isset( $info['viewvc-url'] ) ) {
-                       $version = "[{$info['viewvc-url']} $linkText]";
-               } else {
-                       $version = $linkText;
-               }
-
-               return self::getwgVersionLinked() . " $version";
-       }
-
        /**
         * @return string
         */
@@ -744,7 +696,7 @@ class SpecialVersion extends SpecialPage {
                }
 
                // ... and the version information
-               // If the extension path is set we will check that directory for GIT and SVN
+               // If the extension path is set we will check that directory for GIT
                // metadata in an attempt to extract date and vcs commit metadata.
                $canonicalVersion = '&ndash;';
                $extensionPath = null;
@@ -764,11 +716,6 @@ class SpecialVersion extends SpecialPage {
                                $coreHeadSHA1 = self::getGitHeadSha1( $IP );
                                if ( $coreHeadSHA1 ) {
                                        $this->coreId = $coreHeadSHA1;
-                               } else {
-                                       $svnInfo = self::getSvnInfo( $IP );
-                                       if ( $svnInfo !== false ) {
-                                               $this->coreId = $svnInfo['checkout-rev'];
-                                       }
                                }
                        }
                        $cache = wfGetCache( CACHE_ANYTHING );
@@ -783,12 +730,6 @@ class SpecialVersion extends SpecialPage {
                                        $vcsVersion = substr( $vcsVersion, 0, 7 );
                                        $vcsLink = $gitInfo->getHeadViewUrl();
                                        $vcsDate = $gitInfo->getHeadCommitDate();
-                               } else {
-                                       $svnInfo = self::getSvnInfo( $extensionPath );
-                                       if ( $svnInfo !== false ) {
-                                               $vcsVersion = $this->msg( 'version-svn-revision', $svnInfo['checkout-rev'] )->text();
-                                               $vcsLink = isset( $svnInfo['viewvc-url'] ) ? $svnInfo['viewvc-url'] : '';
-                                       }
                                }
                                $cache->set( $memcKey, array( $vcsVersion, $vcsLink, $vcsDate ), 60 * 60 * 24 );
                        } else {
@@ -1154,108 +1095,6 @@ class SpecialVersion extends SpecialPage {
                }
        }
 
-       /**
-        * 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.
-        *
-        * 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
-        * @param string $dir
-        * @return array|bool
-        */
-       public static function getSvnInfo( $dir ) {
-               // http://svnbook.red-bean.com/nightly/en/svn.developer.insidewc.html
-               $entries = $dir . '/.svn/entries';
-
-               if ( !file_exists( $entries ) ) {
-                       return false;
-               }
-
-               $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/', $lines[0] ) ) {
-                       // subversion is release <= 1.3
-                       if ( !function_exists( 'simplexml_load_file' ) ) {
-                               // We could fall back to expat... YUCK
-                               return false;
-                       }
-
-                       // SimpleXml whines about the xmlns...
-                       MediaWiki\suppressWarnings();
-                       $xml = simplexml_load_file( $entries );
-                       MediaWiki\restoreWarnings();
-
-                       if ( $xml ) {
-                               foreach ( $xml->entry as $entry ) {
-                                       if ( $xml->entry[0]['name'] == '' ) {
-                                               // The directory entry should always have a revision marker.
-                                               if ( $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']
-                       );
-
-                       $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
-        */
-       public static function getSvnRevision( $dir ) {
-               $info = self::getSvnInfo( $dir );
-
-               if ( $info === false ) {
-                       return false;
-               } elseif ( isset( $info['checkout-rev'] ) ) {
-                       return $info['checkout-rev'];
-               } else {
-                       return false;
-               }
-       }
-
        /**
         * @param string $dir Directory of the git checkout
         * @return bool|string Sha1 of commit HEAD points to
index 7ab6578..cc5c150 100644 (file)
@@ -118,10 +118,7 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                $opts->add( 'hideliu', $user->getBoolOption( 'watchlisthideliu' ) );
                $opts->add( 'hidepatrolled', $user->getBoolOption( 'watchlisthidepatrolled' ) );
                $opts->add( 'hidemyself', $user->getBoolOption( 'watchlisthideown' ) );
-
-               if ( $this->getConfig()->get( 'RCWatchCategoryMembership' ) ) {
-                       $opts->add( 'hidecategorization', $user->getBoolOption( 'watchlisthidecategorization' ) );
-               }
+               $opts->add( 'hidecategorization', $user->getBoolOption( 'watchlisthidecategorization' ) );
 
                return $opts;
        }
@@ -422,13 +419,15 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                $this->setTopText( $opts );
 
                $lang = $this->getLanguage();
-               $wlInfo = '';
                if ( $opts['days'] > 0 ) {
-                       $timestamp = wfTimestampNow();
-                       $wlInfo = $this->msg( 'wlnote' )->numParams( $numRows, round( $opts['days'] * 24 ) )->params(
-                               $lang->userDate( $timestamp, $user ), $lang->userTime( $timestamp, $user )
-                       )->parse() . "<br />\n";
+                       $days = $opts['days'];
+               } else {
+                       $days = $this->getConfig()->get( 'RCMaxAge' ) / ( 3600 * 24 );
                }
+               $timestamp = wfTimestampNow();
+               $wlInfo = $this->msg( 'wlnote' )->numParams( $numRows, round( $days * 24 ) )->params(
+                       $lang->userDate( $timestamp, $user ), $lang->userTime( $timestamp, $user )
+               )->parse() . "<br />\n";
 
                $nondefaults = $opts->getChangedValues();
                $cutofflinks = $this->msg( 'wlshowtime' ) . ' ' . $this->cutoffselector( $opts );
@@ -530,9 +529,19 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                        $days[] = $userWatchlistOption;
                }
 
+               $maxDays = (string)( $this->getConfig()->get( 'RCMaxAge' ) / ( 3600 * 24 ) );
+               // add the maximum possible value, if it isn't available already
+               if ( !in_array( $maxDays, $days ) ) {
+                       $days[] = $maxDays;
+               }
+
                $selected = (string)$options['days'];
+               if ( $selected <= 0 ) {
+                       $selected = $maxDays;
+               }
+
                // add the currently selected value, if it isn't available already
-               if ( !in_array( $selected, $days ) && $selected !== '0' ) {
+               if ( !in_array( $selected, $days ) ) {
                        $days[] = $selected;
                }
 
@@ -548,11 +557,6 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                        $select->addOption( $name, $value );
                }
 
-               // 'all' option
-               $name = $this->msg( 'watchlistall2' )->text();
-               $value = '0';
-               $select->addOption( $name, $value );
-
                return $select->getHTML() . "\n<br />\n";
        }
 
index ed96d17..6e6f2ea 100644 (file)
@@ -30,11 +30,11 @@ class ForeignTitle {
         * @var int|null
         * Null if we don't know the namespace ID (e.g. interwiki links)
         */
-       protected $namespaceId;
+       private $namespaceId;
        /** @var string */
-       protected $namespaceName;
+       private $namespaceName;
        /** @var string */
-       protected $pageName;
+       private $pageName;
 
        /**
         * Creates a new ForeignTitle object.
index f8624d0..4294408 100644 (file)
@@ -690,12 +690,14 @@ abstract class UploadBase {
         *
         * @param string $comment
         * @param string $pageText
-        * @param bool $watch
+        * @param bool $watch Whether the file page should be added to user's watchlist.
+        *   (This doesn't check $user's permissions.)
         * @param User $user
-        *
+        * @param string[] $tags Change tags to add to the log entry and page revision.
+        *   (This doesn't check $user's permissions.)
         * @return Status Indicating the whether the upload succeeded.
         */
-       public function performUpload( $comment, $pageText, $watch, $user ) {
+       public function performUpload( $comment, $pageText, $watch, $user, $tags = array() ) {
                $this->getLocalFile()->load( File::READ_LATEST );
 
                $status = $this->getLocalFile()->upload(
@@ -705,7 +707,8 @@ abstract class UploadBase {
                        File::DELETE_SOURCE,
                        $this->mFileProps,
                        false,
-                       $user
+                       $user,
+                       $tags
                );
 
                if ( $status->isGood() ) {
index 75540c1..1276842 100644 (file)
@@ -178,17 +178,10 @@ class UploadFromStash extends UploadBase {
        }
 
        /**
-        * Perform the upload, then remove the database record afterward.
-        * @param string $comment
-        * @param string $pageText
-        * @param bool $watch
-        * @param User $user
-        * @return Status
+        * Remove the database record after a successful upload.
         */
-       public function performUpload( $comment, $pageText, $watch, $user ) {
-               $rv = parent::performUpload( $comment, $pageText, $watch, $user );
+       public function postProcessUpload() {
+               parent::postProcessUpload();
                $this->unsaveUploadedFile();
-
-               return $rv;
        }
 }
index 23a4962..f6d538b 100644 (file)
@@ -29,8 +29,7 @@
  * @author Michael Dale
  */
 class UploadFromUrl extends UploadBase {
-       protected $mAsync, $mUrl;
-       protected $mIgnoreWarnings = true;
+       protected $mUrl;
 
        protected $mTempPath, $mTmpHandle;
 
@@ -130,21 +129,12 @@ class UploadFromUrl extends UploadBase {
         *
         * @param string $name
         * @param string $url
-        * @param bool|string $async Whether the download should be performed
-        * asynchronous. False for synchronous, async or async-leavemessage for
-        * asynchronous download.
         * @throws MWException
         */
-       public function initialize( $name, $url, $async = false ) {
-               global $wgAllowAsyncCopyUploads;
-
+       public function initialize( $name, $url ) {
                $this->mUrl = $url;
-               $this->mAsync = $wgAllowAsyncCopyUploads ? $async : false;
-               if ( $async ) {
-                       throw new MWException( 'Asynchronous copy uploads are no longer possible as of r81612.' );
-               }
 
-               $tempPath = $this->mAsync ? null : $this->makeTemporaryFile();
+               $tempPath = $this->makeTemporaryFile();
                # File size and removeTempFile will be filled in later
                $this->initializePathInfo( $name, $tempPath, 0, false );
        }
@@ -186,9 +176,9 @@ class UploadFromUrl extends UploadBase {
        }
 
        /**
-        * Download the file (if not async)
+        * Download the file
         *
-        * @param array $httpOptions Array of options for MWHttpRequest. Ignored if async.
+        * @param array $httpOptions Array of options for MWHttpRequest.
         *   This could be used to override the timeout on the http request.
         * @return Status
         */
@@ -203,11 +193,7 @@ class UploadFromUrl extends UploadBase {
                if ( !self::isAllowedUrl( $this->mUrl ) ) {
                        return Status::newFatal( 'upload-copy-upload-invalid-url' );
                }
-               if ( !$this->mAsync ) {
-                       return $this->reallyFetchFile( $httpOptions );
-               }
-
-               return Status::newGood();
+               return $this->reallyFetchFile( $httpOptions );
        }
 
        /**
@@ -311,91 +297,4 @@ class UploadFromUrl extends UploadBase {
 
                return $status;
        }
-
-       /**
-        * Wrapper around the parent function in order to defer verifying the
-        * upload until the file really has been fetched.
-        * @return array|mixed
-        */
-       public function verifyUpload() {
-               if ( $this->mAsync ) {
-                       return array( 'status' => UploadBase::OK );
-               }
-
-               return parent::verifyUpload();
-       }
-
-       /**
-        * Wrapper around the parent function in order to defer checking warnings
-        * until the file really has been fetched.
-        * @return array
-        */
-       public function checkWarnings() {
-               if ( $this->mAsync ) {
-                       $this->mIgnoreWarnings = false;
-
-                       return array();
-               }
-
-               return parent::checkWarnings();
-       }
-
-       /**
-        * Wrapper around the parent function in order to defer checking protection
-        * until we are sure that the file can actually be uploaded
-        * @param User $user
-        * @return bool|mixed
-        */
-       public function verifyTitlePermissions( $user ) {
-               if ( $this->mAsync ) {
-                       return true;
-               }
-
-               return parent::verifyTitlePermissions( $user );
-       }
-
-       /**
-        * Wrapper around the parent function in order to defer uploading to the
-        * job queue for asynchronous uploads
-        * @param string $comment
-        * @param string $pageText
-        * @param bool $watch
-        * @param User $user
-        * @return Status
-        */
-       public function performUpload( $comment, $pageText, $watch, $user ) {
-               if ( $this->mAsync ) {
-                       $sessionKey = $this->insertJob( $comment, $pageText, $watch, $user );
-
-                       return Status::newFatal( 'async', $sessionKey );
-               }
-
-               return parent::performUpload( $comment, $pageText, $watch, $user );
-       }
-
-       /**
-        * @param string $comment
-        * @param string $pageText
-        * @param bool $watch
-        * @param User $user
-        * @return string
-        */
-       protected function insertJob( $comment, $pageText, $watch, $user ) {
-               $sessionKey = $this->stashSession();
-               $job = new UploadFromUrlJob( $this->getTitle(), array(
-                       'url' => $this->mUrl,
-                       'comment' => $comment,
-                       'pageText' => $pageText,
-                       'watch' => $watch,
-                       'userName' => $user->getName(),
-                       'leaveMessage' => $this->mAsync == 'async-leavemessage',
-                       'ignoreWarnings' => $this->mIgnoreWarnings,
-                       'sessionId' => MediaWiki\Session\SessionManager::getGlobalSession()->getId(),
-                       'sessionKey' => $sessionKey,
-               ) );
-               $job->initializeSessionData();
-               JobQueueGroup::singleton()->push( $job );
-
-               return $sessionKey;
-       }
 }
diff --git a/includes/user/BotPassword.php b/includes/user/BotPassword.php
deleted file mode 100644 (file)
index 286538b..0000000
+++ /dev/null
@@ -1,429 +0,0 @@
-<?php
-/**
- * Utility class for bot passwords
- *
- * 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
- */
-
-use MediaWiki\Session\BotPasswordSessionProvider;
-use MediaWiki\Session\SessionInfo;
-
-/**
- * Utility class for bot passwords
- * @since 1.27
- */
-class BotPassword implements IDBAccessObject {
-
-       const APPID_MAXLENGTH = 32;
-
-       /** @var bool */
-       private $isSaved;
-
-       /** @var int */
-       private $centralId;
-
-       /** @var string */
-       private $appId;
-
-       /** @var string */
-       private $token;
-
-       /** @var MWRestrictions */
-       private $restrictions;
-
-       /** @var string[] */
-       private $grants;
-
-       /** @var int */
-       private $flags = self::READ_NORMAL;
-
-       /**
-        * @param object $row bot_passwords database row
-        * @param bool $isSaved Whether the bot password was read from the database
-        * @param int $flags IDBAccessObject read flags
-        */
-       protected function __construct( $row, $isSaved, $flags = self::READ_NORMAL ) {
-               $this->isSaved = $isSaved;
-               $this->flags = $flags;
-
-               $this->centralId = (int)$row->bp_user;
-               $this->appId = $row->bp_app_id;
-               $this->token = $row->bp_token;
-               $this->restrictions = MWRestrictions::newFromJson( $row->bp_restrictions );
-               $this->grants = FormatJson::decode( $row->bp_grants );
-       }
-
-       /**
-        * Get a database connection for the bot passwords database
-        * @param int $db Index of the connection to get, e.g. DB_MASTER or DB_SLAVE.
-        * @return DatabaseBase
-        */
-       public static function getDB( $db ) {
-               global $wgBotPasswordsCluster, $wgBotPasswordsDatabase;
-
-               $lb = $wgBotPasswordsCluster
-                       ? wfGetLBFactory()->getExternalLB( $wgBotPasswordsCluster )
-                       : wfGetLB( $wgBotPasswordsDatabase );
-               return $lb->getConnectionRef( $db, array(), $wgBotPasswordsDatabase );
-       }
-
-       /**
-        * Load a BotPassword from the database
-        * @param User $user
-        * @param string $appId
-        * @param int $flags IDBAccessObject read flags
-        * @return BotPassword|null
-        */
-       public static function newFromUser( User $user, $appId, $flags = self::READ_NORMAL ) {
-               $centralId = CentralIdLookup::factory()->centralIdFromLocalUser(
-                       $user, CentralIdLookup::AUDIENCE_RAW, $flags
-               );
-               return $centralId ? self::newFromCentralId( $centralId, $appId, $flags ) : null;
-       }
-
-       /**
-        * Load a BotPassword from the database
-        * @param int $centralId from CentralIdLookup
-        * @param string $appId
-        * @param int $flags IDBAccessObject read flags
-        * @return BotPassword|null
-        */
-       public static function newFromCentralId( $centralId, $appId, $flags = self::READ_NORMAL ) {
-               list( $index, $options ) = DBAccessObjectUtils::getDBOptions( $flags );
-               $db = self::getDB( $index );
-               $row = $db->selectRow(
-                       'bot_passwords',
-                       array( 'bp_user', 'bp_app_id', 'bp_token', 'bp_restrictions', 'bp_grants' ),
-                       array( 'bp_user' => $centralId, 'bp_app_id' => $appId ),
-                       __METHOD__,
-                       $options
-               );
-               return $row ? new self( $row, true, $flags ) : null;
-       }
-
-       /**
-        * Create an unsaved BotPassword
-        * @param array $data Data to use to create the bot password. Keys are:
-        *  - user: (User) User object to create the password for. Overrides username and centralId.
-        *  - username: (string) Username to create the password for. Overrides centralId.
-        *  - centralId: (int) User central ID to create the password for.
-        *  - appId: (string) App ID for the password.
-        *  - restrictions: (MWRestrictions, optional) Restrictions.
-        *  - grants: (string[], optional) Grants.
-        * @param int $flags IDBAccessObject read flags
-        * @return BotPassword|null
-        */
-       public static function newUnsaved( array $data, $flags = self::READ_NORMAL ) {
-               $row = (object)array(
-                       'bp_user' => 0,
-                       'bp_app_id' => isset( $data['appId'] ) ? trim( $data['appId'] ) : '',
-                       'bp_token' => '**unsaved**',
-                       'bp_restrictions' => isset( $data['restrictions'] )
-                               ? $data['restrictions']
-                               : MWRestrictions::newDefault(),
-                       'bp_grants' => isset( $data['grants'] ) ? $data['grants'] : array(),
-               );
-
-               if (
-                       $row->bp_app_id === '' || strlen( $row->bp_app_id ) > self::APPID_MAXLENGTH ||
-                       !$row->bp_restrictions instanceof MWRestrictions ||
-                       !is_array( $row->bp_grants )
-               ) {
-                       return null;
-               }
-
-               $row->bp_restrictions = $row->bp_restrictions->toJson();
-               $row->bp_grants = FormatJson::encode( $row->bp_grants );
-
-               if ( isset( $data['user'] ) ) {
-                       if ( !$data['user'] instanceof User ) {
-                               return null;
-                       }
-                       $row->bp_user = CentralIdLookup::factory()->centralIdFromLocalUser(
-                               $data['user'], CentralIdLookup::AUDIENCE_RAW, $flags
-                       );
-               } elseif ( isset( $data['username'] ) ) {
-                       $row->bp_user = CentralIdLookup::factory()->centralIdFromName(
-                               $data['username'], CentralIdLookup::AUDIENCE_RAW, $flags
-                       );
-               } elseif ( isset( $data['centralId'] ) ) {
-                       $row->bp_user = $data['centralId'];
-               }
-               if ( !$row->bp_user ) {
-                       return null;
-               }
-
-               return new self( $row, false, $flags );
-       }
-
-       /**
-        * Indicate whether this is known to be saved
-        * @return bool
-        */
-       public function isSaved() {
-               return $this->isSaved;
-       }
-
-       /**
-        * Get the central user ID
-        * @return int
-        */
-       public function getUserCentralId() {
-               return $this->centralId;
-       }
-
-       /**
-        * Get the app ID
-        * @return string
-        */
-       public function getAppId() {
-               return $this->appId;
-       }
-
-       /**
-        * Get the token
-        * @return string
-        */
-       public function getToken() {
-               return $this->token;
-       }
-
-       /**
-        * Get the restrictions
-        * @return MWRestrictions
-        */
-       public function getRestrictions() {
-               return $this->restrictions;
-       }
-
-       /**
-        * Get the grants
-        * @return string[]
-        */
-       public function getGrants() {
-               return $this->grants;
-       }
-
-       /**
-        * Get the separator for combined user name + app ID
-        * @return string
-        */
-       public static function getSeparator() {
-               global $wgUserrightsInterwikiDelimiter;
-               return $wgUserrightsInterwikiDelimiter;
-       }
-
-       /**
-        * Get the password
-        * @return Password
-        */
-       protected function getPassword() {
-               list( $index, $options ) = DBAccessObjectUtils::getDBOptions( $this->flags );
-               $db = self::getDB( $index );
-               $password = $db->selectField(
-                       'bot_passwords',
-                       'bp_password',
-                       array( 'bp_user' => $this->centralId, 'bp_app_id' => $this->appId ),
-                       __METHOD__,
-                       $options
-               );
-               if ( $password === false ) {
-                       return PasswordFactory::newInvalidPassword();
-               }
-
-               $passwordFactory = new \PasswordFactory();
-               $passwordFactory->init( \RequestContext::getMain()->getConfig() );
-               try {
-                       return $passwordFactory->newFromCiphertext( $password );
-               } catch ( PasswordError $ex ) {
-                       return PasswordFactory::newInvalidPassword();
-               }
-       }
-
-       /**
-        * Save the BotPassword to the database
-        * @param string $operation 'update' or 'insert'
-        * @param Password|null $password Password to set.
-        * @return bool Success
-        */
-       public function save( $operation, Password $password = null ) {
-               $conds = array(
-                       'bp_user' => $this->centralId,
-                       'bp_app_id' => $this->appId,
-               );
-               $fields = array(
-                       'bp_token' => MWCryptRand::generateHex( User::TOKEN_LENGTH ),
-                       'bp_restrictions' => $this->restrictions->toJson(),
-                       'bp_grants' => FormatJson::encode( $this->grants ),
-               );
-
-               if ( $password !== null ) {
-                       $fields['bp_password'] = $password->toString();
-               } elseif ( $operation === 'insert' ) {
-                       $fields['bp_password'] = PasswordFactory::newInvalidPassword()->toString();
-               }
-
-               $dbw = self::getDB( DB_MASTER );
-               switch ( $operation ) {
-                       case 'insert':
-                               $dbw->insert( 'bot_passwords', $fields + $conds, __METHOD__, array( 'IGNORE' ) );
-                               break;
-
-                       case 'update':
-                               $dbw->update( 'bot_passwords', $fields, $conds, __METHOD__ );
-                               break;
-
-                       default:
-                               return false;
-               }
-               $ok = (bool)$dbw->affectedRows();
-               if ( $ok ) {
-                       $this->token = $dbw->selectField( 'bot_passwords', 'bp_token', $conds, __METHOD__ );
-                       $this->isSaved = true;
-               }
-               return $ok;
-       }
-
-       /**
-        * Delete the BotPassword from the database
-        * @return bool Success
-        */
-       public function delete() {
-               $conds = array(
-                       'bp_user' => $this->centralId,
-                       'bp_app_id' => $this->appId,
-               );
-               $dbw = self::getDB( DB_MASTER );
-               $dbw->delete( 'bot_passwords', $conds, __METHOD__ );
-               $ok = (bool)$dbw->affectedRows();
-               if ( $ok ) {
-                       $this->token = '**unsaved**';
-                       $this->isSaved = false;
-               }
-               return $ok;
-       }
-
-       /**
-        * Invalidate all passwords for a user, by name
-        * @param string $username User name
-        * @return bool Whether any passwords were invalidated
-        */
-       public static function invalidateAllPasswordsForUser( $username ) {
-               $centralId = CentralIdLookup::factory()->centralIdFromName(
-                       $username, CentralIdLookup::AUDIENCE_RAW, CentralIdLookup::READ_LATEST
-               );
-               return $centralId && self::invalidateAllPasswordsForCentralId( $centralId );
-       }
-
-       /**
-        * Invalidate all passwords for a user, by central ID
-        * @param int $centralId
-        * @return bool Whether any passwords were invalidated
-        */
-       public static function invalidateAllPasswordsForCentralId( $centralId ) {
-               $dbw = self::getDB( DB_MASTER );
-               $dbw->update(
-                       'bot_passwords',
-                       array( 'bp_password' => PasswordFactory::newInvalidPassword()->toString() ),
-                       array( 'bp_user' => $centralId ),
-                       __METHOD__
-               );
-               return (bool)$dbw->affectedRows();
-       }
-
-       /**
-        * Remove all passwords for a user, by name
-        * @param string $username User name
-        * @return bool Whether any passwords were removed
-        */
-       public static function removeAllPasswordsForUser( $username ) {
-               $centralId = CentralIdLookup::factory()->centralIdFromName(
-                       $username, CentralIdLookup::AUDIENCE_RAW, CentralIdLookup::READ_LATEST
-               );
-               return $centralId && self::removeAllPasswordsForCentralId( $centralId );
-       }
-
-       /**
-        * Remove all passwords for a user, by central ID
-        * @param int $centralId
-        * @return bool Whether any passwords were removed
-        */
-       public static function removeAllPasswordsForCentralId( $centralId ) {
-               $dbw = self::getDB( DB_MASTER );
-               $dbw->delete(
-                       'bot_passwords',
-                       array( 'bp_user' => $centralId ),
-                       __METHOD__
-               );
-               return (bool)$dbw->affectedRows();
-       }
-
-       /**
-        * Try to log the user in
-        * @param string $username Combined user name and app ID
-        * @param string $password Supplied password
-        * @param WebRequest $request
-        * @return Status On success, the good status's value is the new Session object
-        */
-       public static function login( $username, $password, WebRequest $request ) {
-               global $wgEnableBotPasswords;
-
-               if ( !$wgEnableBotPasswords ) {
-                       return Status::newFatal( 'botpasswords-disabled' );
-               }
-
-               $manager = MediaWiki\Session\SessionManager::singleton();
-               $provider = $manager->getProvider(
-                       'MediaWiki\\Session\\BotPasswordSessionProvider'
-               );
-               if ( !$provider ) {
-                       return Status::newFatal( 'botpasswords-no-provider' );
-               }
-
-               // Split name into name+appId
-               $sep = self::getSeparator();
-               if ( strpos( $username, $sep ) === false ) {
-                       return Status::newFatal( 'botpasswords-invalid-name', $sep );
-               }
-               list( $name, $appId ) = explode( $sep, $username, 2 );
-
-               // Find the named user
-               $user = User::newFromName( $name );
-               if ( !$user || $user->isAnon() ) {
-                       return Status::newFatal( 'nosuchuser', $name );
-               }
-
-               // Get the bot password
-               $bp = self::newFromUser( $user, $appId );
-               if ( !$bp ) {
-                       return Status::newFatal( 'botpasswords-not-exist', $name, $appId );
-               }
-
-               // Check restrictions
-               $status = $bp->getRestrictions()->check( $request );
-               if ( !$status->isOk() ) {
-                       return Status::newFatal( 'botpasswords-restriction-failed' );
-               }
-
-               // Check the password
-               if ( !$bp->getPassword()->equals( $password ) ) {
-                       return Status::newFatal( 'wrongpassword' );
-               }
-
-               // Ok! Create the session.
-               return Status::newGood( $provider->newSessionForRequest( $user, $bp, $request ) );
-       }
-}
index 4c2b5b7..4b833ba 100644 (file)
@@ -23,6 +23,8 @@
 /**
  * The CentralIdLookup service allows for connecting local users with
  * cluster-wide IDs.
+ *
+ * @since 1.27
  */
 abstract class CentralIdLookup implements IDBAccessObject {
        // Audience options for accessors
index 58892ea..c0f9c05 100644 (file)
@@ -28,6 +28,7 @@
  *  $wgSharedDB and $wgSharedTables set, and that all wikis involved in the
  *  sharing are listed in $wgLocalDatabases, and that no wikis not involved in
  *  the sharing are listed in $wgLocalDatabases.
+ * @since 1.27
  */
 class LocalIdLookup extends CentralIdLookup {
 
index 6ec0ff0..d71e5e1 100644 (file)
@@ -20,8 +20,6 @@
  * @file
  */
 
-use MediaWiki\Session\SessionManager;
-
 /**
  * String Some punctuation to prevent editing from broken text-mangling proxies.
  * @ingroup Constants
@@ -101,7 +99,6 @@ class User implements IDBAccessObject {
                'apihighlimits',
                'applychangetags',
                'autoconfirmed',
-               'autocreateaccount',
                'autopatrol',
                'bigdelete',
                'block',
@@ -229,7 +226,7 @@ class User implements IDBAccessObject {
         *  - 'defaults'   anonymous user initialised from class defaults
         *  - 'name'       initialise from mName
         *  - 'id'         initialise from mId
-        *  - 'session'    log in from session if possible
+        *  - 'session'    log in from cookies or session if possible
         *
         * Use the User::newFrom*() family of functions to set this.
         */
@@ -313,26 +310,14 @@ class User implements IDBAccessObject {
         * @param integer $flags User::READ_* constant bitfield
         */
        public function load( $flags = self::READ_NORMAL ) {
-               global $wgFullyInitialised;
-
                if ( $this->mLoadedItems === true ) {
                        return;
                }
 
                // Set it now to avoid infinite recursion in accessors
-               $oldLoadedItems = $this->mLoadedItems;
                $this->mLoadedItems = true;
                $this->queryFlagsUsed = $flags;
 
-               // If this is called too early, things are likely to break.
-               if ( $this->mFrom === 'session' && empty( $wgFullyInitialised ) ) {
-                       \MediaWiki\Logger\LoggerFactory::getInstance( 'session' )
-                               ->warning( 'User::loadFromSession called before the end of Setup.php' );
-                       $this->loadDefaults();
-                       $this->mLoadedItems = $oldLoadedItems;
-                       return;
-               }
-
                switch ( $this->mFrom ) {
                        case 'defaults':
                                $this->loadDefaults();
@@ -555,8 +540,8 @@ class User implements IDBAccessObject {
        }
 
        /**
-        * Create a new user object using data from session. If the login
-        * credentials are invalid, the result is an anonymous user.
+        * Create a new user object using data from session or cookies. If the
+        * login credentials are invalid, the result is an anonymous user.
         *
         * @param WebRequest|null $request Object to use; $wgRequest will be used if omitted.
         * @return User
@@ -676,8 +661,6 @@ class User implements IDBAccessObject {
                        $user->saveSettings();
                }
 
-               SessionManager::singleton()->preventSessionsForUser( $user->getName() );
-
                return $user;
        }
 
@@ -1085,9 +1068,8 @@ class User implements IDBAccessObject {
                $this->mOptionOverrides = null;
                $this->mOptionsLoaded = false;
 
-               $request = $this->getRequest();
-               $loggedOut = $request ? $request->getSession()->getLoggedOutTimestamp() : 0;
-               if ( $loggedOut !== 0 ) {
+               $loggedOut = $this->getRequest()->getCookie( 'LoggedOut' );
+               if ( $loggedOut !== null ) {
                        $this->mTouched = wfTimestamp( TS_MW, $loggedOut );
                } else {
                        $this->mTouched = '1'; # Allow any pages to be cached
@@ -1132,32 +1114,84 @@ class User implements IDBAccessObject {
        }
 
        /**
-        * Load user data from the session.
+        * Load user data from the session or login cookie.
         *
         * @return bool True if the user is logged in, false otherwise.
         */
        private function loadFromSession() {
-               // Deprecated hook
                $result = null;
-               Hooks::run( 'UserLoadFromSession', array( $this, &$result ), '1.27' );
+               Hooks::run( 'UserLoadFromSession', array( $this, &$result ) );
                if ( $result !== null ) {
                        return $result;
                }
 
-               // MediaWiki\Session\Session already did the necessary authentication of the user
-               // returned here, so just use it if applicable.
-               $session = $this->getRequest()->getSession();
-               $user = $session->getUser();
-               if ( $user->isLoggedIn() ) {
-                       $this->loadFromUserObject( $user );
-                       // Other code expects these to be set in the session, so set them.
-                       $session->set( 'wsUserID', $this->getId() );
-                       $session->set( 'wsUserName', $this->getName() );
-                       $session->set( 'wsToken', $this->mToken );
-                       return true;
+               $request = $this->getRequest();
+
+               $cookieId = $request->getCookie( 'UserID' );
+               $sessId = $request->getSessionData( 'wsUserID' );
+
+               if ( $cookieId !== null ) {
+                       $sId = intval( $cookieId );
+                       if ( $sessId !== null && $cookieId != $sessId ) {
+                               wfDebugLog( 'loginSessions', "Session user ID ($sessId) and
+                                       cookie user ID ($sId) don't match!" );
+                               return false;
+                       }
+                       $request->setSessionData( 'wsUserID', $sId );
+               } elseif ( $sessId !== null && $sessId != 0 ) {
+                       $sId = $sessId;
+               } else {
+                       return false;
                }
 
-               return false;
+               if ( $request->getSessionData( 'wsUserName' ) !== null ) {
+                       $sName = $request->getSessionData( 'wsUserName' );
+               } elseif ( $request->getCookie( 'UserName' ) !== null ) {
+                       $sName = $request->getCookie( 'UserName' );
+                       $request->setSessionData( 'wsUserName', $sName );
+               } else {
+                       return false;
+               }
+
+               $proposedUser = User::newFromId( $sId );
+               if ( !$proposedUser->isLoggedIn() ) {
+                       // Not a valid ID
+                       return false;
+               }
+
+               global $wgBlockDisablesLogin;
+               if ( $wgBlockDisablesLogin && $proposedUser->isBlocked() ) {
+                       // User blocked and we've disabled blocked user logins
+                       return false;
+               }
+
+               if ( $request->getSessionData( 'wsToken' ) ) {
+                       $passwordCorrect =
+                               ( $proposedUser->getToken( false ) === $request->getSessionData( 'wsToken' ) );
+                       $from = 'session';
+               } elseif ( $request->getCookie( 'Token' ) ) {
+                       # Get the token from DB/cache and clean it up to remove garbage padding.
+                       # This deals with historical problems with bugs and the default column value.
+                       $token = rtrim( $proposedUser->getToken( false ) ); // correct token
+                       // Make comparison in constant time (bug 61346)
+                       $passwordCorrect = strlen( $token )
+                               && hash_equals( $token, $request->getCookie( 'Token' ) );
+                       $from = 'cookie';
+               } else {
+                       // No session or persistent login cookie
+                       return false;
+               }
+
+               if ( ( $sName === $proposedUser->getName() ) && $passwordCorrect ) {
+                       $this->loadFromUserObject( $proposedUser );
+                       $request->setSessionData( 'wsToken', $this->mToken );
+                       wfDebug( "User: logged in from $from\n" );
+                       return true;
+               } else {
+                       // Invalid credentials
+                       wfDebug( "User: can't log in from $from, invalid credentials\n" );
+                       return false;
+               }
        }
 
        /**
@@ -1252,13 +1286,26 @@ class User implements IDBAccessObject {
                        $all = false;
                }
 
-               if ( isset( $row->user_email ) ) {
-                       $this->mEmail = $row->user_email;
+               if ( isset( $row->user_touched ) ) {
                        $this->mTouched = wfTimestamp( TS_MW, $row->user_touched );
-                       $this->mToken = $row->user_token;
-                       if ( $this->mToken == '' ) {
+               } else {
+                       $all = false;
+               }
+
+               if ( isset( $row->user_token ) ) {
+                       // The definition for the column is binary(32), so trim the NULs
+                       // that appends. The previous definition was char(32), so trim
+                       // spaces too.
+                       $this->mToken = rtrim( $row->user_token, " \0" );
+                       if ( $this->mToken === '' ) {
                                $this->mToken = null;
                        }
+               } else {
+                       $all = false;
+               }
+
+               if ( isset( $row->user_email ) ) {
+                       $this->mEmail = $row->user_email;
                        $this->mEmailAuthenticated = wfTimestampOrNull( TS_MW, $row->user_email_authenticated );
                        $this->mEmailToken = $row->user_email_token;
                        $this->mEmailTokenExpires = wfTimestampOrNull( TS_MW, $row->user_email_token_expires );
@@ -2404,9 +2451,6 @@ class User implements IDBAccessObject {
                        ),
                        __METHOD__
                );
-
-               // When the main password is changed, invalidate all bot passwords too
-               BotPassword::invalidateAllPasswordsForUser( $this->getName() );
        }
 
        /**
@@ -2980,12 +3024,6 @@ class User implements IDBAccessObject {
        public function getRights() {
                if ( is_null( $this->mRights ) ) {
                        $this->mRights = self::getGroupPermissions( $this->getEffectiveGroups() );
-
-                       $allowedRights = $this->getRequest()->getSession()->getAllowedUserRights();
-                       if ( $allowedRights !== null ) {
-                               $this->mRights = array_intersect( $this->mRights, $allowedRights );
-                       }
-
                        Hooks::run( 'UserGetRights', array( $this, &$this->mRights ) );
                        // Force reindexation of rights when a hook has unset one of them
                        $this->mRights = array_values( array_unique( $this->mRights ) );
@@ -3425,7 +3463,7 @@ class User implements IDBAccessObject {
                }
 
                $this->getWatchedItem( $title )->resetNotificationTimestamp(
-                       $force, $oldid, WatchedItem::DEFERRED
+                       $force, $oldid
                );
        }
 
@@ -3466,7 +3504,6 @@ class User implements IDBAccessObject {
        /**
         * Set a cookie on the user's client. Wrapper for
         * WebResponse::setCookie
-        * @deprecated since 1.27
         * @param string $name Name of the cookie to set
         * @param string $value Value to set
         * @param int $exp Expiration time, as a UNIX time value;
@@ -3482,7 +3519,6 @@ class User implements IDBAccessObject {
        protected function setCookie(
                $name, $value, $exp = 0, $secure = null, $params = array(), $request = null
        ) {
-               wfDeprecated( __METHOD__, '1.27' );
                if ( $request === null ) {
                        $request = $this->getRequest();
                }
@@ -3492,7 +3528,6 @@ class User implements IDBAccessObject {
 
        /**
         * Clear a cookie on the user's client
-        * @deprecated since 1.27
         * @param string $name Name of the cookie to clear
         * @param bool $secure
         *  true: Force setting the secure attribute when setting the cookie
@@ -3501,7 +3536,6 @@ class User implements IDBAccessObject {
         * @param array $params Array of options sent passed to WebResponse::setcookie()
         */
        protected function clearCookie( $name, $secure = null, $params = array() ) {
-               wfDeprecated( __METHOD__, '1.27' );
                $this->setCookie( $name, '', time() - 86400, $secure, $params );
        }
 
@@ -3512,7 +3546,6 @@ class User implements IDBAccessObject {
         *
         * @see User::setCookie
         *
-        * @deprecated since 1.27
         * @param string $name Name of the cookie to set
         * @param string $value Value to set
         * @param bool $secure
@@ -3523,8 +3556,6 @@ class User implements IDBAccessObject {
        protected function setExtendedLoginCookie( $name, $value, $secure ) {
                global $wgExtendedLoginCookieExpiration, $wgCookieExpiration;
 
-               wfDeprecated( __METHOD__, '1.27' );
-
                $exp = time();
                $exp += $wgExtendedLoginCookieExpiration !== null
                        ? $wgExtendedLoginCookieExpiration
@@ -3534,7 +3565,7 @@ class User implements IDBAccessObject {
        }
 
        /**
-        * Persist this user's session (e.g. set cookies)
+        * Set the default cookies for this session on the user's client.
         *
         * @param WebRequest|null $request WebRequest object to use; $wgRequest will be used if null
         *        is passed.
@@ -3542,36 +3573,72 @@ class User implements IDBAccessObject {
         * @param bool $rememberMe Whether to add a Token cookie for elongated sessions
         */
        public function setCookies( $request = null, $secure = null, $rememberMe = false ) {
+               global $wgExtendedLoginCookies;
+
+               if ( $request === null ) {
+                       $request = $this->getRequest();
+               }
+
                $this->load();
                if ( 0 == $this->mId ) {
                        return;
                }
-
-               $session = $this->getRequest()->getSession();
-               if ( $request && $session->getRequest() !== $request ) {
-                       $session = $session->sessionWithRequest( $request );
+               if ( !$this->mToken ) {
+                       // When token is empty or NULL generate a new one and then save it to the database
+                       // This allows a wiki to re-secure itself after a leak of it's user table or $wgSecretKey
+                       // Simply by setting every cell in the user_token column to NULL and letting them be
+                       // regenerated as users log back into the wiki.
+                       $this->setToken();
+                       if ( !wfReadOnly() ) {
+                               $this->saveSettings();
+                       }
+               }
+               $session = array(
+                       'wsUserID' => $this->mId,
+                       'wsToken' => $this->mToken,
+                       'wsUserName' => $this->getName()
+               );
+               $cookies = array(
+                       'UserID' => $this->mId,
+                       'UserName' => $this->getName(),
+               );
+               if ( $rememberMe ) {
+                       $cookies['Token'] = $this->mToken;
+               } else {
+                       $cookies['Token'] = false;
                }
-               $delay = $session->delaySave();
 
-               if ( !$session->getUser()->equals( $this ) ) {
-                       if ( !$session->canSetUser() ) {
-                               \MediaWiki\Logger\LoggerFactory::getInstance( 'session' )
-                                       ->warning( __METHOD__ .
-                                               ": Cannot save user \"$this\" to a user \"{$session->getUser()}\"'s immutable session"
-                                       );
-                               return;
+               Hooks::run( 'UserSetCookies', array( $this, &$session, &$cookies ) );
+
+               foreach ( $session as $name => $value ) {
+                       $request->setSessionData( $name, $value );
+               }
+               foreach ( $cookies as $name => $value ) {
+                       if ( $value === false ) {
+                               $this->clearCookie( $name );
+                       } elseif ( $rememberMe && in_array( $name, $wgExtendedLoginCookies ) ) {
+                               $this->setExtendedLoginCookie( $name, $value, $secure );
+                       } else {
+                               $this->setCookie( $name, $value, 0, $secure, array(), $request );
                        }
-                       $session->setUser( $this );
                }
 
-               $session->setRememberUser( $rememberMe );
-               if ( $secure !== null ) {
-                       $session->setForceHTTPS( $secure );
+               /**
+                * If wpStickHTTPS was selected, also set an insecure cookie that
+                * will cause the site to redirect the user to HTTPS, if they access
+                * it over HTTP. Bug 29898. Use an un-prefixed cookie, so it's the same
+                * as the one set by centralauth (bug 53538). Also set it to session, or
+                * standard time setting, based on if rememberme was set.
+                */
+               if ( $request->getCheck( 'wpStickHTTPS' ) || $this->requiresHTTPS() ) {
+                       $this->setCookie(
+                               'forceHTTPS',
+                               'true',
+                               $rememberMe ? 0 : null,
+                               false,
+                               array( 'prefix' => '' ) // no prefix
+                       );
                }
-
-               $session->persist();
-
-               ScopedCallback::consume( $delay );
        }
 
        /**
@@ -3584,29 +3651,20 @@ class User implements IDBAccessObject {
        }
 
        /**
-        * Clear the user's session, and reset the instance cache.
+        * Clear the user's cookies and session, and reset the instance cache.
         * @see logout()
         */
        public function doLogout() {
-               $session = $this->getRequest()->getSession();
-               if ( !$session->canSetUser() ) {
-                       \MediaWiki\Logger\LoggerFactory::getInstance( 'session' )
-                               ->warning( __METHOD__ . ": Cannot log out of an immutable session" );
-               } elseif ( !$session->getUser()->equals( $this ) ) {
-                       \MediaWiki\Logger\LoggerFactory::getInstance( 'session' )
-                               ->warning( __METHOD__ .
-                                       ": Cannot log user \"$this\" out of a user \"{$session->getUser()}\"'s session"
-                               );
-                       // But we still may as well make this user object anon
-                       $this->clearInstanceCache( 'defaults' );
-               } else {
-                       $this->clearInstanceCache( 'defaults' );
-                       $delay = $session->delaySave();
-                       $session->setLoggedOutTimestamp( time() );
-                       $session->setUser( new User );
-                       $session->set( 'wsUserID', 0 ); // Other code expects this
-                       ScopedCallback::consume( $delay );
-               }
+               $this->clearInstanceCache( 'defaults' );
+
+               $this->getRequest()->setSessionData( 'wsUserID', 0 );
+
+               $this->clearCookie( 'UserID' );
+               $this->clearCookie( 'Token' );
+               $this->clearCookie( 'forceHTTPS', false, array( 'prefix' => '' ) );
+
+               // Remember when user logged out, to prevent seeing cached pages
+               $this->setCookie( 'LoggedOut', time(), time() + 86400 );
        }
 
        /**
@@ -4539,13 +4597,6 @@ class User implements IDBAccessObject {
                        }
                }
 
-               // Remove any rights that aren't allowed to the global-session user
-               $allowedRights = SessionManager::getGlobalSession()->getAllowedUserRights();
-               if ( $allowedRights !== null && !in_array( $right, $allowedRights, true ) ) {
-                       $cache[$right] = false;
-                       return false;
-               }
-
                // Allow extensions to say false
                if ( !Hooks::run( 'UserIsEveryoneAllowed', array( $right ) ) ) {
                        $cache[$right] = false;
index 13cab5b..ffb7053 100644 (file)
@@ -66,6 +66,6 @@ class BatchRowWriter {
                }
 
                $this->db->commit();
-               wfWaitForSlaves( false, false, $this->clusterName );
+               wfGetLBFactory()->waitForReplication();
        }
 }
index 4881e68..9ac5009 100644 (file)
@@ -135,7 +135,7 @@ class UIDGenerator {
                        $time = $info[0];
                        $counter = $info[1];
                }
-               // Take the 46 MSBs of "milliseconds since epoch"
+               // Take the 46 LSBs of "milliseconds since epoch"
                $id_bin = $this->millisecondsSinceEpochBinary( $time );
                // Add a 10 bit counter resulting in 56 bits total
                $id_bin .= str_pad( decbin( $counter ), 10, '0', STR_PAD_LEFT );
@@ -191,7 +191,7 @@ class UIDGenerator {
                        $counter = $info[1];
                        $clkSeq = $info[2];
                }
-               // Take the 46 bits of "milliseconds since epoch"
+               // Take the 46 LSBs of "milliseconds since epoch"
                $id_bin = $this->millisecondsSinceEpochBinary( $time );
                // Add a 20 bit counter resulting in 66 bits total
                $id_bin .= str_pad( decbin( $counter ), 20, '0', STR_PAD_LEFT );
@@ -526,7 +526,7 @@ class UIDGenerator {
 
        /**
         * @param array $time Result of UIDGenerator::millitime()
-        * @return string 46 MSBs of "milliseconds since epoch" in binary (rolls over in 4201)
+        * @return string 46 LSBs of "milliseconds since epoch" in binary (rolls over in 4201)
         * @throws RuntimeException
         */
        protected function millisecondsSinceEpochBinary( array $time ) {
index cb2d24f..42c5a57 100644 (file)
@@ -383,20 +383,13 @@ class Language {
         * @return bool
         */
        public static function isKnownLanguageTag( $tag ) {
-               static $coreLanguageNames;
-
                // Quick escape for invalid input to avoid exceptions down the line
                // when code tries to process tags which are not valid at all.
                if ( !self::isValidBuiltInCode( $tag ) ) {
                        return false;
                }
 
-               if ( $coreLanguageNames === null ) {
-                       global $IP;
-                       include "$IP/languages/Names.php";
-               }
-
-               if ( isset( $coreLanguageNames[$tag] )
+               if ( isset( MediaWiki\Languages\Data\Names::$names[$tag] )
                        || self::fetchLanguageName( $tag, $tag ) !== ''
                ) {
                        return true;
@@ -874,12 +867,6 @@ class Language {
         */
        private static function fetchLanguageNamesUncached( $inLanguage = null, $include = 'mw' ) {
                global $wgExtraLanguageNames;
-               static $coreLanguageNames;
-
-               if ( $coreLanguageNames === null ) {
-                       global $IP;
-                       include "$IP/languages/Names.php";
-               }
 
                // If passed an invalid language code to use, fallback to en
                if ( $inLanguage !== null && !Language::isValidCode( $inLanguage ) ) {
@@ -893,7 +880,7 @@ class Language {
                        Hooks::run( 'LanguageGetTranslatedLanguageNames', array( &$names, $inLanguage ) );
                }
 
-               $mwNames = $wgExtraLanguageNames + $coreLanguageNames;
+               $mwNames = $wgExtraLanguageNames + MediaWiki\Languages\Data\Names::$names;
                foreach ( $mwNames as $mwCode => $mwName ) {
                        # - Prefer own MediaWiki native name when not using the hook
                        # - For other names just add if not added through the hook
diff --git a/languages/Names.php b/languages/Names.php
deleted file mode 100644 (file)
index 5a14003..0000000
+++ /dev/null
@@ -1,458 +0,0 @@
-<?php
-/**
- * Language names.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Language
- */
-
-/**
- * These determine things like interwikis, language selectors, and so on.
- * Safe to change without running scripts on the respective sites.
- *
- * \xE2\x80\x8E is the left-to-right marker and
- * \xE2\x80\x8F is the right-to-left marker.
- * They are required for ensuring the correct display of brackets in
- * mixed rtl/ltr environment.
- *
- * Some writing systems require some line-height fixes. This includes
- * most Indic scripts, like Devanagari.
- * If you are adding support for such a language, add it also to
- * the relevant section in shared.css.
- *
- * @ingroup Language
- */
-/* private */ $coreLanguageNames = array(
-       'aa' => 'Qafár af',    # Afar
-       'ab' => 'Аҧсшәа', # Abkhaz
-       'ace' => 'Acèh',       # Aceh
-       'ady' => 'адыгабзэ',    # Adyghe
-       'ady-cyrl' => 'адыгабзэ',       # Adyghe
-       'aeb' => 'تونسي/Tûnsî',  # Tunisian Arabic (multiple scripts - defaults to Arabic)
-       'aeb-arab' => 'تونسي',     # Tunisian Arabic (Arabic Script)
-       'aeb-latn' => 'Tûnsî',        # Tunisian Arabic (Latin Script)
-       'af' => 'Afrikaans',    # Afrikaans
-       'ak' => 'Akan',         # Akan
-       'aln' => 'Gegë',       # Gheg Albanian
-       'als' => 'Alemannisch', # Alemannic -- not a valid code, for compatibility. See gsw.
-       'am' => 'አማርኛ', # Amharic
-       'an' => 'aragonés',    # Aragonese
-       'ang' => 'Ænglisc',    # Old English, bug 23283
-       'anp' => 'अङ्गिका',       # Angika
-       'ar' => 'العربية',       # Arabic
-       'arc' => 'ܐܪܡܝܐ',  # Aramaic
-       'arn' => 'mapudungun',  # Mapuche, Mapudungu, Araucanian (Araucano)
-       'arq' => 'جازايرية', # Algerian Spoken Arabic
-       'ary' => 'Maġribi',    # Moroccan Spoken Arabic
-       'arz' => 'مصرى',    # Egyptian Spoken Arabic
-       'as' => 'অসমীয়া',        # Assamese
-       'ase' => 'American sign language',      # American sign language
-       'ast' => 'asturianu',   # Asturian
-       'av' => 'авар',     # Avar
-       'avk' => 'Kotava', # Kotava
-       'awa' => 'अवधी',        # Awadhi
-       'ay' => 'Aymar aru',    # Aymara
-       'az' => 'azərbaycanca',        # Azerbaijani
-       'azb' => 'تۆرکجه',        # South Azerbaijani
-       'ba' => 'башҡортса',   # Bashkir
-       'bar' => 'Boarisch',    # Bavarian (Austro-Bavarian and South Tyrolean)
-       'bat-smg' => 'žemaitėška', # Samogitian (deprecated code, 'sgs' in ISO 693-3 since 2010-06-30 )
-       'bbc' => 'Batak Toba', # Batak Toba (falls back to bbc-latn)
-       'bbc-latn' => 'Batak Toba', # Batak Toba
-       'bcc' => 'جهلسری بلوچی', # Southern Balochi
-       'bcl' => 'Bikol Central', # Bikol: Central Bicolano language
-       'be' => 'беларуская', #  Belarusian normative
-       'be-tarask' => "беларуская (тарашкевіца)\xE2\x80\x8E",     # Belarusian in Taraskievica orthography
-       'be-x-old' => "беларуская (тарашкевіца)\xE2\x80\x8E",      # (be-tarask compat)
-       'bg' => 'български',   # Bulgarian
-       'bgn' => 'روچ کپتین بلوچی', # Western Balochi
-       'bh' => 'भोजपुरी',        # Bihari macro language. Falls back to Bhojpuri (bho)
-       'bho' => 'भोजपुरी',       # Bhojpuri
-       'bi' => 'Bislama',              # Bislama
-       'bjn' => 'Bahasa Banjar',       # Banjarese
-       'bm' => 'bamanankan',   # Bambara
-       'bn' => 'বাংলা',      # Bengali
-       'bo' => 'བོད་ཡིག',        # Tibetan
-       'bpy' => 'বিষ্ণুপ্রিয়া মণিপুরী',       # Bishnupriya Manipuri
-       'bqi' => 'بختیاری',      # Bakthiari
-       'br' => 'brezhoneg',    # Breton
-       'brh' => 'Bráhuí',    # Brahui
-       'bs' => 'bosanski',             # Bosnian
-       'bto' => 'Iriga Bicolano',      # Rinconada Bikol
-       'bug' => 'ᨅᨔ ᨕᨘᨁᨗ', # Buginese
-       'bxr' => 'буряад',        # Buryat (Russia)
-       'ca' => 'català',      # Catalan
-       'cbk-zam' => 'Chavacano de Zamboanga',  # Zamboanga Chavacano
-       'cdo' => 'Mìng-dĕ̤ng-ngṳ̄',       # Min Dong
-       'ce' => 'нохчийн',       # Chechen
-       'ceb' => 'Cebuano',     # Cebuano
-       'ch' => 'Chamoru',              # Chamorro
-       'cho' => 'Choctaw',             # Choctaw
-       'chr' => 'ᏣᎳᎩ', # Cherokee
-       'chy' => 'Tsetsêhestâhese',   # Cheyenne
-       'ckb' => 'کوردیی ناوەندی', # Central Kurdish
-       'co' => 'corsu',                # Corsican
-       'cps' => 'Capiceño', # Capiznon
-       'cr' => 'Nēhiyawēwin / ᓀᐦᐃᔭᐍᐏᐣ',                # Cree
-       'crh' => 'qırımtatarca',   # Crimean Tatar (multiple scripts - defaults to Latin)
-       'crh-latn' => "qırımtatarca (Latin)\xE2\x80\x8E",       # Crimean Tatar (Latin)
-       'crh-cyrl' => "къырымтатарджа (Кирилл)\xE2\x80\x8E",       # Crimean Tatar (Cyrillic)
-       'cs' => 'čeština',    # Czech
-       'csb' => 'kaszëbsczi', # Cassubian
-       'cu' => 'словѣньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ',        # Old Church Slavonic (ancient language)
-       'cv' => 'Чӑвашла',       # Chuvash
-       'cy' => 'Cymraeg',              # Welsh
-       'da' => 'dansk',                # Danish
-       'de' => 'Deutsch',              # German ("Du")
-       'de-at' => 'Österreichisches Deutsch',         # Austrian German
-       'de-ch' => 'Schweizer Hochdeutsch',             # Swiss Standard German
-       'de-formal' => "Deutsch (Sie-Form)\xE2\x80\x8E",                # German - formal address ("Sie")
-       'diq' => 'Zazaki',              # Zazaki
-       'dsb' => 'dolnoserbski', # Lower Sorbian
-       'dtp' => 'Dusun Bundu-liwan', # Central Dusun
-       'dty' => 'डोटेली', # Doteli
-       'dv' => 'ދިވެހިބަސް',         # Dhivehi
-       'dz' => 'ཇོང་ཁ',              # Dzongkha (Bhutan)
-       'ee' => 'eʋegbe',      # Éwé
-       'egl' => 'Emiliàn',    # Emilian
-       'el' => 'Ελληνικά',     # Greek
-       'eml' => 'emiliàn e rumagnòl',        # Emiliano-Romagnolo / Sammarinese
-       'en' => 'English',              # English
-       'en-ca' => 'Canadian English',  # Canadian English
-       'en-gb' => 'British English',   # British English
-       'eo' => 'Esperanto',    # Esperanto
-       'es' => 'español',     # Spanish
-       'et' => 'eesti',                # Estonian
-       'eu' => 'euskara',              # Basque
-       'ext' => 'estremeñu', # Extremaduran
-       'fa' => 'فارسی',   # Persian
-       'ff' => 'Fulfulde',             # Fulfulde, Maasina
-       'fi' => 'suomi',                # Finnish
-       'fit' => 'meänkieli', # Tornedalen Finnish
-       'fiu-vro' => 'Võro',    # Võro (deprecated code, 'vro' in ISO 639-3 since 2009-01-16)
-       'fj' => 'Na Vosa Vakaviti',     # Fijian
-       'fo' => 'føroyskt',    # Faroese
-       'fr' => 'français',    # French
-       'frc' => 'français cadien', # Cajun French
-       'frp' => 'arpetan',     # Franco-Provençal/Arpitan
-       'frr' => 'Nordfriisk',  # North Frisian
-       'fur' => 'furlan',              # Friulian
-       'fy' => 'Frysk',                # Frisian
-       'ga' => 'Gaeilge',              # Irish
-       'gag' => 'Gagauz',              # Gagauz
-       'gan' => '贛語',              # Gan (multiple scripts - defaults to Traditional)
-       'gan-hans' => "赣语(简体)\xE2\x80\x8E", # Gan (Simplified Han)
-       'gan-hant' => "贛語(繁體)\xE2\x80\x8E", # Gan (Traditional Han)
-       'gd' => 'Gàidhlig',    # Scots Gaelic
-       'gl' => 'galego',               # Galician
-       'glk' => 'گیلکی',  # Gilaki
-       'gn' => 'Avañe\'ẽ',  # Guaraní, Paraguayan
-       'gom' => 'गोवा कोंकणी / Gova Konknni',      # Goan Konkani
-       'gom-deva' => 'गोवा कोंकणी',        # Goan Konkani (Devanagari script)
-       'gom-latn' => 'Gova Konknni',   # Goan Konkani (Latin script)
-       'got' => '𐌲𐌿𐍄𐌹𐍃𐌺',    # Gothic
-       'grc' => 'Ἀρχαία ἑλληνικὴ', # Ancient Greek
-       'gsw' => 'Alemannisch', # Alemannic
-       'gu' => 'ગુજરાતી',        # Gujarati
-       'gv' => 'Gaelg',                # Manx
-       'ha' => 'Hausa',        # Hausa
-       'hak' => '客家語/Hak-kâ-ngî',      # Hakka
-       'haw' => 'Hawai`i',             # Hawaiian
-       'he' => 'עברית',   # Hebrew
-       'hi' => 'हिन्दी',   # Hindi
-       'hif' => 'Fiji Hindi',  # Fijian Hindi (multiple scripts - defaults to Latin)
-       'hif-latn' => 'Fiji Hindi',     # Fiji Hindi (latin)
-       'hil' => 'Ilonggo',     # Hiligaynon
-       'ho' => 'Hiri Motu',    # Hiri Motu
-       'hr' => 'hrvatski',             # Croatian
-       'hrx' => 'Hunsrik', # Riograndenser Hunsrückisch
-       'hsb' => 'hornjoserbsce',       # Upper Sorbian
-       'ht' => 'Kreyòl ayisyen',              # Haitian Creole French
-       'hu' => 'magyar',               # Hungarian
-       'hy' => 'Հայերեն',       # Armenian
-       'hz' => 'Otsiherero',   # Herero
-       'ia' => 'interlingua',  # Interlingua (IALA)
-       'id' => 'Bahasa Indonesia',     # Indonesian
-       'ie' => 'Interlingue',  # Interlingue (Occidental)
-       'ig' => 'Igbo',                 # Igbo
-       'ii' => 'ꆇꉙ',       # Sichuan Yi
-       'ik' => 'Iñupiak',     # Inupiak (Inupiatun, Northwest Alaska / Inupiatun, North Alaskan)
-       'ike-cans' => 'ᐃᓄᒃᑎᑐᑦ',     # Inuktitut, Eastern Canadian (Unified Canadian Aboriginal Syllabics)
-       'ike-latn' => 'inuktitut',      # Inuktitut, Eastern Canadian (Latin script)
-       'ilo' => 'Ilokano',     # Ilokano
-       'inh' => 'ГӀалгӀай',    # Ingush
-       'io' => 'Ido',                  # Ido
-       'is' => 'íslenska',    # Icelandic
-       'it' => 'italiano',             # Italian
-       'iu' => 'ᐃᓄᒃᑎᑐᑦ/inuktitut', # Inuktitut (macro language, see ike/ikt, falls back to ike-cans)
-       'ja' => '日本語',    # Japanese
-       'jam' => 'Patois',      # Jamaican Creole English
-       'jbo' => 'Lojban',              # Lojban
-       'jut' => 'jysk',        # Jutish / Jutlandic
-       'jv' => 'Basa Jawa',    # Javanese
-       'ka' => 'ქართული',        # Georgian
-       'kaa' => 'Qaraqalpaqsha',       # Karakalpak
-       'kab' => 'Taqbaylit',   # Kabyle
-       'kbd' => 'Адыгэбзэ',    # Kabardian
-       'kbd-cyrl' => 'Адыгэбзэ',       # Kabardian (Cyrillic)
-       'kg' => 'Kongo',        # Kongo, (FIXME!) should probaly be KiKongo or KiKoongo
-       'khw' => 'کھوار',  # Khowar
-       'ki' => 'Gĩkũyũ',    # Gikuyu
-       'kiu' => 'Kırmancki',  # Kirmanjki
-       'kj' => 'Kwanyama',     # Kwanyama
-       'kk' => 'қазақша',       # Kazakh (multiple scripts - defaults to Cyrillic)
-       'kk-arab' => "قازاقشا (تٴوتە)\xE2\x80\x8F", # Kazakh Arabic
-       'kk-cyrl' => "қазақша (кирил)\xE2\x80\x8E", # Kazakh Cyrillic
-       'kk-latn' => "qazaqşa (latın)\xE2\x80\x8E",   # Kazakh Latin
-       'kk-cn' => "قازاقشا (جۇنگو)\xE2\x80\x8F",   # Kazakh (China)
-       'kk-kz' => "қазақша (Қазақстан)\xE2\x80\x8E",   # Kazakh (Kazakhstan)
-       'kk-tr' => "qazaqşa (Türkïya)\xE2\x80\x8E",  # Kazakh (Turkey)
-       'kl' => 'kalaallisut',  # Inuktitut, Greenlandic/Greenlandic/Kalaallisut (kal)
-       '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 (multiple scripts - defaults to Perso-Arabic)
-       'ks-arab' => 'کٲشُر',      # Kashmiri (Perso-Arabic script)
-       'ks-deva' => 'कॉशुर', # Kashmiri (Devanagari script)
-       'ksh' => 'Ripoarisch',  # Ripuarian
-       'ku' => 'Kurdî',       # Kurdish (multiple scripts - defaults to Latin)
-       'ku-latn' => "Kurdî (latînî)\xE2\x80\x8E",   # Northern Kurdish (Latin script)
-       'ku-arab' => "كوردي (عەرەبی)\xE2\x80\x8F",   # Northern Kurdish (Arabic script) (falls back to ckb)
-       'kv' => 'коми',     # Komi-Zyrian (Cyrillic is common script but also written in Latin script)
-       'kw' => 'kernowek',             # Cornish
-       'ky' => 'Кыргызча',     # Kirghiz
-       'la' => 'Latina',               # Latin
-       'lad' => 'Ladino',      # Ladino
-       'lb' => 'Lëtzebuergesch',      # Luxemburguish
-       'lbe' => 'лакку',  # Lak
-       'lez' => 'лезги',  # Lezgi
-       'lfn' => 'Lingua Franca Nova',  # Lingua Franca Nova
-       'lg' => 'Luganda',              # Ganda
-       'li' => 'Limburgs',     # Limburgian
-       'lij' => 'Ligure',      # Ligurian
-       'liv' => 'Līvõ kēļ',        # Livonian
-       'lmo' => 'lumbaart',    # Lombard
-       'ln' => 'lingála',             # Lingala
-       'lo' => 'ລາວ',    # Laotian
-       'lrc' => 'لۊری شومالی',       # Northern Luri
-       'loz' => 'Silozi', # Lozi
-       'lt' => 'lietuvių',    # Lithuanian
-       'ltg' => 'latgaļu',    # Latgalian
-       'lus' => 'Mizo ţawng', # Mizo/Lushai
-       'luz' => 'لئری دوٙمینی', # Southern Luri
-       'lv' => 'latviešu',    # Latvian
-       'lzh' => '文言',      # Literary Chinese, bug 8217
-       'lzz' => 'Lazuri',      # Laz
-       'mai' => 'मैथिली', # Maithili
-       'map-bms' => 'Basa Banyumasan', # Banyumasan
-       'mdf' => 'мокшень',              # Moksha
-       'mg' => 'Malagasy',             # Malagasy
-       'mh' => 'Ebon',                 # Marshallese
-       'mhr' => 'олык марий', # Eastern Mari
-       'mi' => 'Māori',       # Maori
-       'min' => 'Baso Minangkabau',    # Minangkabau
-       'mk' => 'македонски', # Macedonian
-       'ml' => 'മലയാളം',   # Malayalam
-       'mn' => 'монгол', # Halh Mongolian (Cyrillic) (ISO 639-3: khk)
-       'mo' => 'молдовеняскэ',     # Moldovan, deprecated
-       'mr' => 'मराठी',      # Marathi
-       'mrj' => 'кырык мары', # Hill Mari
-       'ms' => 'Bahasa Melayu',        # Malay
-       'mt' => 'Malti',        # Maltese
-       'mus' => 'Mvskoke',     # Muskogee/Creek
-       'mwl' => 'Mirandés',   # Mirandese
-       'my' => 'မြန်မာဘာသာ',               # Burmese
-       'myv' => 'эрзянь',        # Erzya
-       'mzn' => 'مازِرونی',            # Mazanderani
-       'na' => 'Dorerin Naoero',               # Nauruan
-       'nah' => 'Nāhuatl',            # Nahuatl (not in ISO 639-3)
-       'nan' => 'Bân-lâm-gú', # Min-nan, bug 8217
-       'nap' => 'Napulitano',  # Neapolitan, bug 43793
-       'nb' => "norsk bokmål",                # Norwegian (Bokmal)
-       'nds' => 'Plattdüütsch',      # Low German ''or'' Low Saxon
-       'nds-nl' => 'Nedersaksies',     # aka Nedersaksisch: Dutch Low Saxon
-       'ne' => 'नेपाली',   # Nepali
-       'new' => 'नेपाल भाषा',                # Newar / Nepal Bhasha
-       'ng' => 'Oshiwambo',            # Ndonga
-       'niu' => 'Niuē',       # Niuean
-       'nl' => 'Nederlands',   # Dutch
-       'nl-informal' => "Nederlands (informeel)\xE2\x80\x8E",  # Dutch (informal address ("je"))
-       'nn' => "norsk nynorsk",        # Norwegian (Nynorsk)
-       'no' => "norsk bokmål",                # Norwegian (falls back to nb).
-       'nov' => 'Novial',              # Novial
-       'nrm' => 'Nouormand',   # Norman
-       'nso' => 'Sesotho sa Leboa',    # Northern Sotho
-       'nv' => 'Diné bizaad', # Navajo
-       'ny' => 'Chi-Chewa',    # Chichewa
-       'oc' => 'occitan',              # Occitan
-       'olo' => 'Livvinкarjala',              # Livvi-Karelian
-       'om' => 'Oromoo',               # Oromo
-       'or' => 'ଓଡ଼ିଆ',              # Oriya
-       'os' => 'Ирон', # Ossetic, bug 29091
-       'pa' => 'ਪੰਜਾਬੀ', # Eastern Punjabi (Gurmukhi script) (pan)
-       'pag' => 'Pangasinan',  # Pangasinan
-       'pam' => 'Kapampangan',   # Pampanga
-       'pap' => 'Papiamentu',  # Papiamentu
-       'pcd' => 'Picard',      # Picard
-       'pdc' => 'Deitsch',     # Pennsylvania German
-       'pdt' => 'Plautdietsch',        # Plautdietsch/Mennonite Low German
-       'pfl' => 'Pälzisch',   # Palatinate German
-       'pi' => 'पालि', # Pali
-       'pih' => 'Norfuk / Pitkern', # Norfuk/Pitcairn/Norfolk
-       'pl' => 'polski',               # Polish
-       'pms' => 'Piemontèis', # Piedmontese
-       'pnb' => 'پنجابی',        # Western Punjabi
-       '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',    # Southern Quechua
-       'qug' => 'Runa shimi',  # Kichwa/Northern Quechua (temporarily used until Kichwa has its own)
-       'rgn' => 'Rumagnôl',   # Romagnol
-       'rif' => 'Tarifit',     # Tarifit
-       'rm' => 'rumantsch',    # Raeto-Romance
-       'rmy' => 'Romani',      # Vlax Romany
-       'rn' => 'Kirundi',              # Rundi/Kirundi/Urundi
-       'ro' => 'română',     # Romanian
-       'roa-rup' => 'armãneashti', # Aromanian (deprecated code, 'rup' exists in ISO 693-3)
-       'roa-tara' => 'tarandíne',     # Tarantino
-       'ru' => 'русский',       # Russian
-       'rue' => 'русиньскый',        # Rusyn
-       'rup' => 'armãneashti', # Aromanian
-       'ruq' => 'Vlăheşte',  # Megleno-Romanian (multiple scripts - defaults to Latin)
-       'ruq-cyrl' => 'Влахесте',       # Megleno-Romanian (Cyrillic 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
-       'sah' => 'саха тыла', # Sakha
-       'sat' => 'Santali',     # Santali
-       'sc' => 'sardu',                # Sardinian
-       'scn' => 'sicilianu',   # Sicilian
-       'sco' => 'Scots',       # Scots
-       'sd' => 'سنڌي',     # Sindhi
-       'sdc' => 'Sassaresu',   # Sassarese
-       'sdh' => 'کوردی خوارگ',       # Southern Kurdish
-       'se' => 'sámegiella',  # Northern Sami
-       'sei' => 'Cmique Itom', # Seri
-       'ses' => 'Koyraboro Senni',     # Koyraboro Senni
-       'sg' => 'Sängö',              # Sango/Sangho
-       'sgs' => 'žemaitėška', # Samogitian
-       'sh' => 'srpskohrvatski / српскохрватски', # Serbocroatian
-       'shi' => 'Tašlḥiyt/ⵜⴰⵛⵍⵃⵉⵜ',    # Tachelhit (multiple scripts - defaults to Latin)
-       'shi-tfng' => 'ⵜⴰⵛⵍⵃⵉⵜ',    # Tachelhit (Tifinagh script)
-       'shi-latn' => 'Tašlḥiyt',    # Tachelhit (Latin script)
-       'si' => 'සිංහල',      # Sinhalese
-       '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 (multiple scripts - defaults to Cyrillic)
-       'sr-ec' => "српски (ћирилица)\xE2\x80\x8E",       # Serbian Cyrillic ekavian
-       'sr-el' => "srpski (latinica)\xE2\x80\x8E",     # Serbian Latin ekavian
-       'srn' => 'Sranantongo',         # Sranan Tongo
-       'ss' => 'SiSwati',              # Swati
-       'st' => 'Sesotho',              # Southern Sotho
-       'stq' => 'Seeltersk',           # Saterland Frisian
-       'su' => 'Basa Sunda',   # Sundanese
-       'sv' => 'svenska',              # Swedish
-       'sw' => 'Kiswahili',    # Swahili
-       'szl' => 'ślůnski',   # Silesian
-       'ta' => 'தமிழ்',      # Tamil
-       'tcy' => 'ತುಳು', # Tulu
-       'te' => 'తెలుగు',   # Telugu
-       'tet' => 'tetun',       # Tetun
-       'tg' => 'тоҷикӣ', # Tajiki (falls back to tg-cyrl)
-       'tg-cyrl' => 'тоҷикӣ',    # Tajiki (Cyrllic script) (default)
-       'tg-latn' => 'tojikī', # Tajiki (Latin script)
-       'th' => 'ไทย',    # Thai
-       'ti' => 'ትግርኛ',         # Tigrinya
-       'tk' => 'Türkmençe',  # Turkmen
-       'tl' => 'Tagalog',              # Tagalog
-       'tly' => 'толышә зывон',     # Talysh
-       'tn' => 'Setswana',             # Setswana
-       'to' => 'lea faka-Tonga',               # Tonga (Tonga Islands)
-       'tokipona' => 'Toki Pona',      # Toki Pona
-       'tpi' => 'Tok Pisin',   # Tok Pisin
-       'tr' => 'Türkçe',     # Turkish
-       'tru' => 'Ṫuroyo', # Turoyo
-       'ts' => 'Xitsonga',             # Tsonga
-       'tt' => 'татарча/tatarça',      # Tatar (multiple scripts - defaults to Cyrillic)
-       'tt-cyrl' => 'татарча',  # Tatar (Cyrillic script) (default)
-       'tt-latn' => 'tatarça',        # Tatar (Latin script)
-       'tum' => 'chiTumbuka',  # Tumbuka
-       'tw' => 'Twi',                  # Twi, (FIXME!)
-       'ty' => 'reo tahiti',   # Tahitian
-       'tyv' => 'тыва дыл',     # Tyvan
-       'tzm' => 'ⵜⴰⵎⴰⵣⵉⵖⵜ',    # Tamazight
-       'udm' => 'удмурт',        # Udmurt
-       'ug' => 'ئۇيغۇرچە / Uyghurche', # Uyghur (multiple scripts - defaults to Arabic)
-       'ug-arab' => 'ئۇيغۇرچە', # Uyghur (Arabic script) (default)
-       'ug-latn' => 'Uyghurche', # Uyghur (Latin script)
-       'uk' => 'українська', # Ukrainian
-       'ur' => 'اردو',     # Urdu
-       'uz' => "oʻzbekcha/ўзбекча",    # Uzbek (multiple scripts - defaults to Latin)
-       'uz-cyrl' => "ўзбекча",  # Uzbek Cyrillic
-       'uz-latn' => "oʻzbekcha",      # Uzbek Latin (default)
-       've' => 'Tshivenda',            # Venda
-       'vec' => 'vèneto',     # Venetian
-       'vep' => 'vepsän 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
-       'wo' => 'Wolof',                # Wolof
-       'wuu' => '吴语',              # Wu Chinese
-       'xal' => 'хальмг',                # Kalmyk-Oirat
-       'xh' => 'isiXhosa',             # Xhosan
-       'xmf' => 'მარგალური', # Mingrelian
-       'yi' => 'ייִדיש', # Yiddish
-       'yo' => 'Yorùbá',     # Yoruba
-       'yue' => '粵語',      # Cantonese
-       'za' => 'Vahcuengh',    # Zhuang
-       'zea' => 'Zeêuws',     # Zeeuws/Zeaws
-       'zh' => '中文',                                               # (Zhōng Wén) - Chinese
-       'zh-classical' => '文言',                     # Classical Chinese/Literary Chinese -- (see bug 8217)
-       'zh-cn' => "中文(中国大陆)\xE2\x80\x8E",      # Chinese (PRC)
-       'zh-hans' => "中文(简体)\xE2\x80\x8E",  # Mandarin Chinese (Simplified Chinese script) (cmn-hans)
-       'zh-hant' => "中文(繁體)\xE2\x80\x8E",  # Mandarin Chinese (Traditional Chinese script) (cmn-hant)
-       'zh-hk' => "中文(香港)\xE2\x80\x8E",    # Chinese (Hong Kong)
-       'zh-min-nan' => 'Bân-lâm-gú',                                # Min-nan -- (see bug 8217)
-       'zh-mo' => "中文(澳門)\xE2\x80\x8E",    # Chinese (Macau)
-       'zh-my' => "中文(马来西亚)\xE2\x80\x8E",      # Chinese (Malaysia)
-       'zh-sg' => "中文(新加坡)\xE2\x80\x8E", # Chinese (Singapore)
-       'zh-tw' => "中文(台灣)\xE2\x80\x8E",    # Chinese (Taiwan)
-       'zh-yue' => '粵語',                                   # Cantonese -- (see bug 8217)
-       'zu' => 'isiZulu'               # Zulu
-);
index a012f59..9dc3a86 100644 (file)
@@ -21,9 +21,6 @@
  * @ingroup Language
  */
 
-require_once __DIR__ . '/../LanguageConverter.php';
-require_once __DIR__ . '/LanguageZh.php';
-
 /**
  * @ingroup Language
  */
@@ -57,10 +54,9 @@ class GanConverter extends LanguageConverter {
        }
 
        function loadDefaultTables() {
-               require __DIR__ . '/../../includes/ZhConversion.php';
                $this->mTables = array(
-                       'gan-hans' => new ReplacementArray( $zh2Hans ),
-                       'gan-hant' => new ReplacementArray( $zh2Hant ),
+                       'gan-hans' => new ReplacementArray( MediaWiki\Languages\Data\ZhConversion::$zh2Hans ),
+                       'gan-hant' => new ReplacementArray( MediaWiki\Languages\Data\ZhConversion::$zh2Hant ),
                        'gan' => new ReplacementArray
                );
        }
index db3a22c..af0431f 100644 (file)
@@ -21,8 +21,6 @@
  * @ingroup Language
  */
 
-require_once __DIR__ . '/../LanguageConverter.php';
-
 /**
  * Conversion script between Latin and Syllabics for Inuktitut.
  * - Syllabics -> lowercase Latin
index 0f60889..0357730 100644 (file)
@@ -21,9 +21,6 @@
  * @ingroup Language
  */
 
-require_once __DIR__ . '/../LanguageConverter.php';
-require_once __DIR__ . '/LanguageKk_cyrl.php';
-
 define( 'KK_C_UC', 'АӘБВГҒДЕЁЖЗИЙКҚЛМНҢОӨПРСТУҰҮФХҺЦЧШЩЪЫІЬЭЮЯ' ); # Kazakh Cyrillic uppercase
 define( 'KK_C_LC', 'аәбвгғдеёжзийкқлмнңоөпрстуұүфхһцчшщъыіьэюя' ); # Kazakh Cyrillic lowercase
 define( 'KK_L_UC', 'AÄBCÇDEÉFGĞHIİÏJKLMNÑOÖPQRSŞTUÜVWXYÝZ' ); # Kazakh Latin uppercase
index 1fdebc2..c14f468 100644 (file)
@@ -21,9 +21,6 @@
  * @ingroup Language
  */
 
-require_once __DIR__ . '/../LanguageConverter.php';
-require_once __DIR__ . '/LanguageKu_ku.php';
-
 /**
  * Kurdish converter routines
  *
index e2dea1d..80cf694 100644 (file)
@@ -53,7 +53,7 @@ class LanguageLa extends Language {
                                '/u[ms]$/',                     # 2nd declension singular
                                '/ommunia$/',                   # 3rd declension neuter plural (partly)
                                '/a$/',                         # 1st declension singular
-                               '/libri$/', '/nuntii$/',        # 2nd declension plural (partly)
+                               '/libri$/', '/nuntii$/', '/datae$/', # 2nd declension plural (partly)
                                '/tio$/', '/ns$/', '/as$/',     # 3rd declension singular (partly)
                                '/es$/'                         # 5th declension singular
                        );
@@ -61,7 +61,7 @@ class LanguageLa extends Language {
                                'i',
                                'ommunium',
                                'ae',
-                               'librorum', 'nuntiorum',
+                               'librorum', 'nuntiorum', 'datorum',
                                'tionis', 'ntis', 'atis',
                                'ei'
                        );
@@ -72,7 +72,7 @@ class LanguageLa extends Language {
                                '/u[ms]$/',                     # 2nd declension singular
                                '/a$/',                         # 1st declension singular
                                '/ommuniam$/',              # 3rd declension neuter plural (partly)
-                               '/libri$/', '/nuntii$/',        # 2nd declension plural (partly)
+                               '/libri$/', '/nuntii$/', '/datam$/', # 2nd declension plural (partly)
                                '/tio$/', '/ns$/', '/as$/',     # 3rd declension singular (partly)
                                '/es$/'                         # 5th declension singular
                        );
@@ -80,7 +80,7 @@ class LanguageLa extends Language {
                                'um',
                                'am',
                                'ommunia',
-                               'libros', 'nuntios',
+                               'libros', 'nuntios', 'data',
                                'tionem', 'ntem', 'atem',
                                'em'
                        );
@@ -91,7 +91,7 @@ class LanguageLa extends Language {
                                '/u[ms]$/',                     # 2nd declension singular
                                '/ommunia$/',                   # 3rd declension neuter plural (partly)
                                '/a$/',                         # 1st declension singular
-                               '/libri$/', '/nuntii$/',        # 2nd declension plural (partly)
+                               '/libri$/', '/nuntii$/', '/data$/', # 2nd declension plural (partly)
                                '/tio$/', '/ns$/', '/as$/',     # 3rd declension singular (partly)
                                '/es$/'                         # 5th declension singular
                        );
@@ -99,7 +99,7 @@ class LanguageLa extends Language {
                                'o',
                                'ommunibus',
                                'a',
-                               'libris', 'nuntiis',
+                               'libris', 'nuntiis', 'datis',
                                'tione', 'nte', 'ate',
                                'e'
                        );
index 105a3af..afd7283 100644 (file)
@@ -21,8 +21,6 @@
  * @ingroup Language
  */
 
-require_once __DIR__ . '/../LanguageConverter.php';
-
 /**
  * Conversion script between Latin and Tifinagh for Tachelhit.
  * - Tifinagh -> lowercase Latin
index bdf1ec4..ece50e8 100644 (file)
@@ -21,8 +21,6 @@
  * @ingroup Language
  */
 
-require_once __DIR__ . '/../LanguageConverter.php';
-
 /**
  * There are two levels of conversion for Serbian: the script level
  * (Cyrillics <-> Latin), and the variant level (ekavian
index 10755b4..6518e65 100644 (file)
@@ -21,8 +21,6 @@
  * @ingroup Language
  */
 
-require_once __DIR__ . '/../LanguageConverter.php';
-
 /**
  * Converts Tajiki to latin orthography
  *
index 985de68..6910d9c 100644 (file)
@@ -21,8 +21,6 @@
  * @ingroup Language
  */
 
-require_once __DIR__ . '/../LanguageConverter.php';
-
 /**
  * @ingroup Language
  */
index 0f47c38..51b09f6 100644 (file)
@@ -21,9 +21,6 @@
  * @ingroup Language
  */
 
-require_once __DIR__ . '/../LanguageConverter.php';
-require_once __DIR__ . '/LanguageZh_hans.php';
-
 /**
  * @ingroup Language
  */
@@ -63,16 +60,15 @@ class ZhConverter extends LanguageConverter {
        }
 
        function loadDefaultTables() {
-               require __DIR__ . "/../../includes/ZhConversion.php";
                $this->mTables = array(
-                       'zh-hans' => new ReplacementArray( $zh2Hans ),
-                       'zh-hant' => new ReplacementArray( $zh2Hant ),
-                       'zh-cn' => new ReplacementArray( $zh2CN ),
-                       'zh-hk' => new ReplacementArray( $zh2HK ),
-                       'zh-mo' => new ReplacementArray( $zh2HK ),
-                       'zh-my' => new ReplacementArray( $zh2CN ),
-                       'zh-sg' => new ReplacementArray( $zh2CN ),
-                       'zh-tw' => new ReplacementArray( $zh2TW ),
+                       'zh-hans' => new ReplacementArray( MediaWiki\Languages\Data\ZhConversion::$zh2Hans ),
+                       'zh-hant' => new ReplacementArray( MediaWiki\Languages\Data\ZhConversion::$zh2Hant ),
+                       'zh-cn' => new ReplacementArray( MediaWiki\Languages\Data\ZhConversion::$zh2CN ),
+                       'zh-hk' => new ReplacementArray( MediaWiki\Languages\Data\ZhConversion::$zh2HK ),
+                       'zh-mo' => new ReplacementArray( MediaWiki\Languages\Data\ZhConversion::$zh2HK ),
+                       'zh-my' => new ReplacementArray( MediaWiki\Languages\Data\ZhConversion::$zh2CN ),
+                       'zh-sg' => new ReplacementArray( MediaWiki\Languages\Data\ZhConversion::$zh2CN ),
+                       'zh-tw' => new ReplacementArray( MediaWiki\Languages\Data\ZhConversion::$zh2TW ),
                        'zh' => new ReplacementArray
                );
        }
diff --git a/languages/data/Names.php b/languages/data/Names.php
new file mode 100644 (file)
index 0000000..7711d8f
--- /dev/null
@@ -0,0 +1,467 @@
+<?php
+/**
+ * Language names.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
+
+namespace MediaWiki\Languages\Data;
+
+/**
+ * Language names in their own languages (language autonyms).
+ *
+ * These determine things like interwikis, language selectors, and so on.
+ * Safe to change without running scripts on the respective sites.
+ *
+ * \xE2\x80\x8E is the left-to-right marker and
+ * \xE2\x80\x8F is the right-to-left marker.
+ * They are required for ensuring the correct display of brackets in
+ * mixed rtl/ltr environment.
+ *
+ * Some writing systems require some line-height fixes. This includes
+ * most Indic scripts, like Devanagari.
+ * If you are adding support for such a language, add it also to
+ * the relevant section in shared.css.
+ *
+ * Do not use this class directly. Use Language::fetchLanguageNames(), which
+ * includes support for the CLDR extension.
+ *
+ * @ingroup Language
+ */
+class Names {
+       public static $names = array(
+               'aa' => 'Qafár af',    # Afar
+               'ab' => 'Аҧсшәа', # Abkhaz
+               'ace' => 'Acèh',       # Aceh
+               'ady' => 'адыгабзэ',    # Adyghe
+               'ady-cyrl' => 'адыгабзэ',       # Adyghe
+               'aeb' => 'تونسي/Tûnsî',  # Tunisian Arabic (multiple scripts - defaults to Arabic)
+               'aeb-arab' => 'تونسي',     # Tunisian Arabic (Arabic Script)
+               'aeb-latn' => 'Tûnsî',        # Tunisian Arabic (Latin Script)
+               'af' => 'Afrikaans',    # Afrikaans
+               'ak' => 'Akan',         # Akan
+               'aln' => 'Gegë',       # Gheg Albanian
+               'als' => 'Alemannisch', # Alemannic -- not a valid code, for compatibility. See gsw.
+               'am' => 'አማርኛ', # Amharic
+               'an' => 'aragonés',    # Aragonese
+               'ang' => 'Ænglisc',    # Old English, bug 23283
+               'anp' => 'अङ्गिका',       # Angika
+               'ar' => 'العربية',       # Arabic
+               'arc' => 'ܐܪܡܝܐ',  # Aramaic
+               'arn' => 'mapudungun',  # Mapuche, Mapudungu, Araucanian (Araucano)
+               'arq' => 'جازايرية', # Algerian Spoken Arabic
+               'ary' => 'Maġribi',    # Moroccan Spoken Arabic
+               'arz' => 'مصرى',    # Egyptian Spoken Arabic
+               'as' => 'অসমীয়া',        # Assamese
+               'ase' => 'American sign language',      # American sign language
+               'ast' => 'asturianu',   # Asturian
+               'av' => 'авар',     # Avar
+               'avk' => 'Kotava', # Kotava
+               'awa' => 'अवधी',        # Awadhi
+               'ay' => 'Aymar aru',    # Aymara
+               'az' => 'azərbaycanca',        # Azerbaijani
+               'azb' => 'تۆرکجه',        # South Azerbaijani
+               'ba' => 'башҡортса',   # Bashkir
+               'bar' => 'Boarisch',    # Bavarian (Austro-Bavarian and South Tyrolean)
+               'bat-smg' => 'žemaitėška', # Samogitian (deprecated code, 'sgs' in ISO 693-3 since 2010-06-30 )
+               'bbc' => 'Batak Toba', # Batak Toba (falls back to bbc-latn)
+               'bbc-latn' => 'Batak Toba', # Batak Toba
+               'bcc' => 'جهلسری بلوچی', # Southern Balochi
+               'bcl' => 'Bikol Central', # Bikol: Central Bicolano language
+               'be' => 'беларуская', #  Belarusian normative
+               'be-tarask' => "беларуская (тарашкевіца)\xE2\x80\x8E",     # Belarusian in Taraskievica orthography
+               'be-x-old' => "беларуская (тарашкевіца)\xE2\x80\x8E",      # (be-tarask compat)
+               'bg' => 'български',   # Bulgarian
+               'bgn' => 'روچ کپتین بلوچی', # Western Balochi
+               'bh' => 'भोजपुरी',        # Bihari macro language. Falls back to Bhojpuri (bho)
+               'bho' => 'भोजपुरी',       # Bhojpuri
+               'bi' => 'Bislama',              # Bislama
+               'bjn' => 'Bahasa Banjar',       # Banjarese
+               'bm' => 'bamanankan',   # Bambara
+               'bn' => 'বাংলা',      # Bengali
+               'bo' => 'བོད་ཡིག',        # Tibetan
+               'bpy' => 'বিষ্ণুপ্রিয়া মণিপুরী',       # Bishnupriya Manipuri
+               'bqi' => 'بختیاری',      # Bakthiari
+               'br' => 'brezhoneg',    # Breton
+               'brh' => 'Bráhuí',    # Brahui
+               'bs' => 'bosanski',             # Bosnian
+               'bto' => 'Iriga Bicolano',      # Rinconada Bikol
+               'bug' => 'ᨅᨔ ᨕᨘᨁᨗ', # Buginese
+               'bxr' => 'буряад',        # Buryat (Russia)
+               'ca' => 'català',      # Catalan
+               'cbk-zam' => 'Chavacano de Zamboanga',  # Zamboanga Chavacano
+               'cdo' => 'Mìng-dĕ̤ng-ngṳ̄',       # Min Dong
+               'ce' => 'нохчийн',       # Chechen
+               'ceb' => 'Cebuano',     # Cebuano
+               'ch' => 'Chamoru',              # Chamorro
+               'cho' => 'Choctaw',             # Choctaw
+               'chr' => 'ᏣᎳᎩ', # Cherokee
+               'chy' => 'Tsetsêhestâhese',   # Cheyenne
+               'ckb' => 'کوردیی ناوەندی', # Central Kurdish
+               'co' => 'corsu',                # Corsican
+               'cps' => 'Capiceño', # Capiznon
+               'cr' => 'Nēhiyawēwin / ᓀᐦᐃᔭᐍᐏᐣ',                # Cree
+               'crh' => 'qırımtatarca',   # Crimean Tatar (multiple scripts - defaults to Latin)
+               'crh-latn' => "qırımtatarca (Latin)\xE2\x80\x8E",       # Crimean Tatar (Latin)
+               'crh-cyrl' => "къырымтатарджа (Кирилл)\xE2\x80\x8E",       # Crimean Tatar (Cyrillic)
+               'cs' => 'čeština',    # Czech
+               'csb' => 'kaszëbsczi', # Cassubian
+               'cu' => 'словѣньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ',        # Old Church Slavonic (ancient language)
+               'cv' => 'Чӑвашла',       # Chuvash
+               'cy' => 'Cymraeg',              # Welsh
+               'da' => 'dansk',                # Danish
+               'de' => 'Deutsch',              # German ("Du")
+               'de-at' => 'Österreichisches Deutsch',         # Austrian German
+               'de-ch' => 'Schweizer Hochdeutsch',             # Swiss Standard German
+               'de-formal' => "Deutsch (Sie-Form)\xE2\x80\x8E",                # German - formal address ("Sie")
+               'diq' => 'Zazaki',              # Zazaki
+               'dsb' => 'dolnoserbski', # Lower Sorbian
+               'dtp' => 'Dusun Bundu-liwan', # Central Dusun
+               'dty' => 'डोटेली', # Doteli
+               'dv' => 'ދިވެހިބަސް',         # Dhivehi
+               'dz' => 'ཇོང་ཁ',              # Dzongkha (Bhutan)
+               'ee' => 'eʋegbe',      # Éwé
+               'egl' => 'Emiliàn',    # Emilian
+               'el' => 'Ελληνικά',     # Greek
+               'eml' => 'emiliàn e rumagnòl',        # Emiliano-Romagnolo / Sammarinese
+               'en' => 'English',              # English
+               'en-ca' => 'Canadian English',  # Canadian English
+               'en-gb' => 'British English',   # British English
+               'eo' => 'Esperanto',    # Esperanto
+               'es' => 'español',     # Spanish
+               'et' => 'eesti',                # Estonian
+               'eu' => 'euskara',              # Basque
+               'ext' => 'estremeñu', # Extremaduran
+               'fa' => 'فارسی',   # Persian
+               'ff' => 'Fulfulde',             # Fulfulde, Maasina
+               'fi' => 'suomi',                # Finnish
+               'fit' => 'meänkieli', # Tornedalen Finnish
+               'fiu-vro' => 'Võro',    # Võro (deprecated code, 'vro' in ISO 639-3 since 2009-01-16)
+               'fj' => 'Na Vosa Vakaviti',     # Fijian
+               'fo' => 'føroyskt',    # Faroese
+               'fr' => 'français',    # French
+               'frc' => 'français cadien', # Cajun French
+               'frp' => 'arpetan',     # Franco-Provençal/Arpitan
+               'frr' => 'Nordfriisk',  # North Frisian
+               'fur' => 'furlan',              # Friulian
+               'fy' => 'Frysk',                # Frisian
+               'ga' => 'Gaeilge',              # Irish
+               'gag' => 'Gagauz',              # Gagauz
+               'gan' => '贛語',              # Gan (multiple scripts - defaults to Traditional)
+               'gan-hans' => "赣语(简体)\xE2\x80\x8E", # Gan (Simplified Han)
+               'gan-hant' => "贛語(繁體)\xE2\x80\x8E", # Gan (Traditional Han)
+               'gd' => 'Gàidhlig',    # Scots Gaelic
+               'gl' => 'galego',               # Galician
+               'glk' => 'گیلکی',  # Gilaki
+               'gn' => 'Avañe\'ẽ',  # Guaraní, Paraguayan
+               'gom' => 'गोवा कोंकणी / Gova Konknni',      # Goan Konkani
+               'gom-deva' => 'गोवा कोंकणी',        # Goan Konkani (Devanagari script)
+               'gom-latn' => 'Gova Konknni',   # Goan Konkani (Latin script)
+               'got' => '𐌲𐌿𐍄𐌹𐍃𐌺',    # Gothic
+               'grc' => 'Ἀρχαία ἑλληνικὴ', # Ancient Greek
+               'gsw' => 'Alemannisch', # Alemannic
+               'gu' => 'ગુજરાતી',        # Gujarati
+               'gv' => 'Gaelg',                # Manx
+               'ha' => 'Hausa',        # Hausa
+               'hak' => '客家語/Hak-kâ-ngî',      # Hakka
+               'haw' => 'Hawai`i',             # Hawaiian
+               'he' => 'עברית',   # Hebrew
+               'hi' => 'हिन्दी',   # Hindi
+               'hif' => 'Fiji Hindi',  # Fijian Hindi (multiple scripts - defaults to Latin)
+               'hif-latn' => 'Fiji Hindi',     # Fiji Hindi (latin)
+               'hil' => 'Ilonggo',     # Hiligaynon
+               'ho' => 'Hiri Motu',    # Hiri Motu
+               'hr' => 'hrvatski',             # Croatian
+               'hrx' => 'Hunsrik', # Riograndenser Hunsrückisch
+               'hsb' => 'hornjoserbsce',       # Upper Sorbian
+               'ht' => 'Kreyòl ayisyen',              # Haitian Creole French
+               'hu' => 'magyar',               # Hungarian
+               'hy' => 'Հայերեն',       # Armenian
+               'hz' => 'Otsiherero',   # Herero
+               'ia' => 'interlingua',  # Interlingua (IALA)
+               'id' => 'Bahasa Indonesia',     # Indonesian
+               'ie' => 'Interlingue',  # Interlingue (Occidental)
+               'ig' => 'Igbo',                 # Igbo
+               'ii' => 'ꆇꉙ',       # Sichuan Yi
+               'ik' => 'Iñupiak',     # Inupiak (Inupiatun, Northwest Alaska / Inupiatun, North Alaskan)
+               'ike-cans' => 'ᐃᓄᒃᑎᑐᑦ',     # Inuktitut, Eastern Canadian (Unified Canadian Aboriginal Syllabics)
+               'ike-latn' => 'inuktitut',      # Inuktitut, Eastern Canadian (Latin script)
+               'ilo' => 'Ilokano',     # Ilokano
+               'inh' => 'ГӀалгӀай',    # Ingush
+               'io' => 'Ido',                  # Ido
+               'is' => 'íslenska',    # Icelandic
+               'it' => 'italiano',             # Italian
+               'iu' => 'ᐃᓄᒃᑎᑐᑦ/inuktitut', # Inuktitut (macro language, see ike/ikt, falls back to ike-cans)
+               'ja' => '日本語',    # Japanese
+               'jam' => 'Patois',      # Jamaican Creole English
+               'jbo' => 'la .lojban.',         # Lojban
+               'jut' => 'jysk',        # Jutish / Jutlandic
+               'jv' => 'Basa Jawa',    # Javanese
+               'ka' => 'ქართული',        # Georgian
+               'kaa' => 'Qaraqalpaqsha',       # Karakalpak
+               'kab' => 'Taqbaylit',   # Kabyle
+               'kbd' => 'Адыгэбзэ',    # Kabardian
+               'kbd-cyrl' => 'Адыгэбзэ',       # Kabardian (Cyrillic)
+               'kg' => 'Kongo',        # Kongo, (FIXME!) should probaly be KiKongo or KiKoongo
+               'khw' => 'کھوار',  # Khowar
+               'ki' => 'Gĩkũyũ',    # Gikuyu
+               'kiu' => 'Kırmancki',  # Kirmanjki
+               'kj' => 'Kwanyama',     # Kwanyama
+               'kk' => 'қазақша',       # Kazakh (multiple scripts - defaults to Cyrillic)
+               'kk-arab' => "قازاقشا (تٴوتە)\xE2\x80\x8F", # Kazakh Arabic
+               'kk-cyrl' => "қазақша (кирил)\xE2\x80\x8E", # Kazakh Cyrillic
+               'kk-latn' => "qazaqşa (latın)\xE2\x80\x8E",   # Kazakh Latin
+               'kk-cn' => "قازاقشا (جۇنگو)\xE2\x80\x8F",   # Kazakh (China)
+               'kk-kz' => "қазақша (Қазақстан)\xE2\x80\x8E",   # Kazakh (Kazakhstan)
+               'kk-tr' => "qazaqşa (Türkïya)\xE2\x80\x8E",  # Kazakh (Turkey)
+               'kl' => 'kalaallisut',  # Inuktitut, Greenlandic/Greenlandic/Kalaallisut (kal)
+               '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 (multiple scripts - defaults to Perso-Arabic)
+               'ks-arab' => 'کٲشُر',      # Kashmiri (Perso-Arabic script)
+               'ks-deva' => 'कॉशुर', # Kashmiri (Devanagari script)
+               'ksh' => 'Ripoarisch',  # Ripuarian
+               'ku' => 'Kurdî',       # Kurdish (multiple scripts - defaults to Latin)
+               'ku-latn' => "Kurdî (latînî)\xE2\x80\x8E",   # Northern Kurdish (Latin script)
+               'ku-arab' => "كوردي (عەرەبی)\xE2\x80\x8F",   # Northern Kurdish (Arabic script) (falls back to ckb)
+               'kv' => 'коми',     # Komi-Zyrian (Cyrillic is common script but also written in Latin script)
+               'kw' => 'kernowek',             # Cornish
+               'ky' => 'Кыргызча',     # Kirghiz
+               'la' => 'Latina',               # Latin
+               'lad' => 'Ladino',      # Ladino
+               'lb' => 'Lëtzebuergesch',      # Luxemburguish
+               'lbe' => 'лакку',  # Lak
+               'lez' => 'лезги',  # Lezgi
+               'lfn' => 'Lingua Franca Nova',  # Lingua Franca Nova
+               'lg' => 'Luganda',              # Ganda
+               'li' => 'Limburgs',     # Limburgian
+               'lij' => 'Ligure',      # Ligurian
+               'liv' => 'Līvõ kēļ',        # Livonian
+               'lmo' => 'lumbaart',    # Lombard
+               'ln' => 'lingála',             # Lingala
+               'lo' => 'ລາວ',    # Laotian
+               'lrc' => 'لۊری شومالی',       # Northern Luri
+               'loz' => 'Silozi', # Lozi
+               'lt' => 'lietuvių',    # Lithuanian
+               'ltg' => 'latgaļu',    # Latgalian
+               'lus' => 'Mizo ţawng', # Mizo/Lushai
+               'luz' => 'لئری دوٙمینی', # Southern Luri
+               'lv' => 'latviešu',    # Latvian
+               'lzh' => '文言',      # Literary Chinese, bug 8217
+               'lzz' => 'Lazuri',      # Laz
+               'mai' => 'मैथिली', # Maithili
+               'map-bms' => 'Basa Banyumasan', # Banyumasan
+               'mdf' => 'мокшень',              # Moksha
+               'mg' => 'Malagasy',             # Malagasy
+               'mh' => 'Ebon',                 # Marshallese
+               'mhr' => 'олык марий', # Eastern Mari
+               'mi' => 'Māori',       # Maori
+               'min' => 'Baso Minangkabau',    # Minangkabau
+               'mk' => 'македонски', # Macedonian
+               'ml' => 'മലയാളം',   # Malayalam
+               'mn' => 'монгол', # Halh Mongolian (Cyrillic) (ISO 639-3: khk)
+               'mo' => 'молдовеняскэ',     # Moldovan, deprecated
+               'mr' => 'मराठी',      # Marathi
+               'mrj' => 'кырык мары', # Hill Mari
+               'ms' => 'Bahasa Melayu',        # Malay
+               'mt' => 'Malti',        # Maltese
+               'mus' => 'Mvskoke',     # Muskogee/Creek
+               'mwl' => 'Mirandés',   # Mirandese
+               'my' => 'မြန်မာဘာသာ',               # Burmese
+               'myv' => 'эрзянь',        # Erzya
+               'mzn' => 'مازِرونی',            # Mazanderani
+               'na' => 'Dorerin Naoero',               # Nauruan
+               'nah' => 'Nāhuatl',            # Nahuatl (not in ISO 639-3)
+               'nan' => 'Bân-lâm-gú', # Min-nan, bug 8217
+               'nap' => 'Napulitano',  # Neapolitan, bug 43793
+               'nb' => "norsk bokmål",                # Norwegian (Bokmal)
+               'nds' => 'Plattdüütsch',      # Low German ''or'' Low Saxon
+               'nds-nl' => 'Nedersaksies',     # aka Nedersaksisch: Dutch Low Saxon
+               'ne' => 'नेपाली',   # Nepali
+               'new' => 'नेपाल भाषा',                # Newar / Nepal Bhasha
+               'ng' => 'Oshiwambo',            # Ndonga
+               'niu' => 'Niuē',       # Niuean
+               'nl' => 'Nederlands',   # Dutch
+               'nl-informal' => "Nederlands (informeel)\xE2\x80\x8E",  # Dutch (informal address ("je"))
+               'nn' => "norsk nynorsk",        # Norwegian (Nynorsk)
+               'no' => "norsk bokmål",                # Norwegian (falls back to nb).
+               'nov' => 'Novial',              # Novial
+               'nrm' => 'Nouormand',   # Norman
+               'nso' => 'Sesotho sa Leboa',    # Northern Sotho
+               'nv' => 'Diné bizaad', # Navajo
+               'ny' => 'Chi-Chewa',    # Chichewa
+               'oc' => 'occitan',              # Occitan
+               'olo' => 'Livvinкarjala',              # Livvi-Karelian
+               'om' => 'Oromoo',               # Oromo
+               'or' => 'ଓଡ଼ିଆ',              # Oriya
+               'os' => 'Ирон', # Ossetic, bug 29091
+               'pa' => 'ਪੰਜਾਬੀ', # Eastern Punjabi (Gurmukhi script) (pan)
+               'pag' => 'Pangasinan',  # Pangasinan
+               'pam' => 'Kapampangan',   # Pampanga
+               'pap' => 'Papiamentu',  # Papiamentu
+               'pcd' => 'Picard',      # Picard
+               'pdc' => 'Deitsch',     # Pennsylvania German
+               'pdt' => 'Plautdietsch',        # Plautdietsch/Mennonite Low German
+               'pfl' => 'Pälzisch',   # Palatinate German
+               'pi' => 'पालि', # Pali
+               'pih' => 'Norfuk / Pitkern', # Norfuk/Pitcairn/Norfolk
+               'pl' => 'polski',               # Polish
+               'pms' => 'Piemontèis', # Piedmontese
+               'pnb' => 'پنجابی',        # Western Punjabi
+               'pnt' => 'Ποντιακά',    # Pontic/Pontic Greek
+               'prg' => 'Prūsiskan',  # Prussian
+               'ps' => 'پښتو',     # Pashto
+               'pt' => 'português',   # Portuguese
+               'pt-br' => 'português do Brasil',      # Brazilian Portuguese
+               'qu' => 'Runa Simi',    # Southern Quechua
+               'qug' => 'Runa shimi',  # Kichwa/Northern Quechua (temporarily used until Kichwa has its own)
+               'rgn' => 'Rumagnôl',   # Romagnol
+               'rif' => 'Tarifit',     # Tarifit
+               'rm' => 'rumantsch',    # Raeto-Romance
+               'rmy' => 'Romani',      # Vlax Romany
+               'rn' => 'Kirundi',              # Rundi/Kirundi/Urundi
+               'ro' => 'română',     # Romanian
+               'roa-rup' => 'armãneashti', # Aromanian (deprecated code, 'rup' exists in ISO 693-3)
+               'roa-tara' => 'tarandíne',     # Tarantino
+               'ru' => 'русский',       # Russian
+               'rue' => 'русиньскый',        # Rusyn
+               'rup' => 'armãneashti', # Aromanian
+               'ruq' => 'Vlăheşte',  # Megleno-Romanian (multiple scripts - defaults to Latin)
+               'ruq-cyrl' => 'Влахесте',       # Megleno-Romanian (Cyrillic 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
+               'sah' => 'саха тыла', # Sakha
+               'sat' => 'Santali',     # Santali
+               'sc' => 'sardu',                # Sardinian
+               'scn' => 'sicilianu',   # Sicilian
+               'sco' => 'Scots',       # Scots
+               'sd' => 'سنڌي',     # Sindhi
+               'sdc' => 'Sassaresu',   # Sassarese
+               'sdh' => 'کوردی خوارگ',       # Southern Kurdish
+               'se' => 'sámegiella',  # Northern Sami
+               'sei' => 'Cmique Itom', # Seri
+               'ses' => 'Koyraboro Senni',     # Koyraboro Senni
+               'sg' => 'Sängö',              # Sango/Sangho
+               'sgs' => 'žemaitėška', # Samogitian
+               'sh' => 'srpskohrvatski / српскохрватски', # Serbocroatian
+               'shi' => 'Tašlḥiyt/ⵜⴰⵛⵍⵃⵉⵜ',    # Tachelhit (multiple scripts - defaults to Latin)
+               'shi-tfng' => 'ⵜⴰⵛⵍⵃⵉⵜ',    # Tachelhit (Tifinagh script)
+               'shi-latn' => 'Tašlḥiyt',    # Tachelhit (Latin script)
+               'si' => 'සිංහල',      # Sinhalese
+               '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 (multiple scripts - defaults to Cyrillic)
+               'sr-ec' => "српски (ћирилица)\xE2\x80\x8E",       # Serbian Cyrillic ekavian
+               'sr-el' => "srpski (latinica)\xE2\x80\x8E",     # Serbian Latin ekavian
+               'srn' => 'Sranantongo',         # Sranan Tongo
+               'ss' => 'SiSwati',              # Swati
+               'st' => 'Sesotho',              # Southern Sotho
+               'stq' => 'Seeltersk',           # Saterland Frisian
+               'su' => 'Basa Sunda',   # Sundanese
+               'sv' => 'svenska',              # Swedish
+               'sw' => 'Kiswahili',    # Swahili
+               'szl' => 'ślůnski',   # Silesian
+               'ta' => 'தமிழ்',      # Tamil
+               'tcy' => 'ತುಳು', # Tulu
+               'te' => 'తెలుగు',   # Telugu
+               'tet' => 'tetun',       # Tetun
+               'tg' => 'тоҷикӣ', # Tajiki (falls back to tg-cyrl)
+               'tg-cyrl' => 'тоҷикӣ',    # Tajiki (Cyrllic script) (default)
+               'tg-latn' => 'tojikī', # Tajiki (Latin script)
+               'th' => 'ไทย',    # Thai
+               'ti' => 'ትግርኛ',         # Tigrinya
+               'tk' => 'Türkmençe',  # Turkmen
+               'tl' => 'Tagalog',              # Tagalog
+               'tly' => 'толышә зывон',     # Talysh
+               'tn' => 'Setswana',             # Setswana
+               'to' => 'lea faka-Tonga',               # Tonga (Tonga Islands)
+               'tokipona' => 'Toki Pona',      # Toki Pona
+               'tpi' => 'Tok Pisin',   # Tok Pisin
+               'tr' => 'Türkçe',     # Turkish
+               'tru' => 'Ṫuroyo', # Turoyo
+               'ts' => 'Xitsonga',             # Tsonga
+               'tt' => 'татарча/tatarça',      # Tatar (multiple scripts - defaults to Cyrillic)
+               'tt-cyrl' => 'татарча',  # Tatar (Cyrillic script) (default)
+               'tt-latn' => 'tatarça',        # Tatar (Latin script)
+               'tum' => 'chiTumbuka',  # Tumbuka
+               'tw' => 'Twi',                  # Twi, (FIXME!)
+               'ty' => 'reo tahiti',   # Tahitian
+               'tyv' => 'тыва дыл',     # Tyvan
+               'tzm' => 'ⵜⴰⵎⴰⵣⵉⵖⵜ',    # Tamazight
+               'udm' => 'удмурт',        # Udmurt
+               'ug' => 'ئۇيغۇرچە / Uyghurche', # Uyghur (multiple scripts - defaults to Arabic)
+               'ug-arab' => 'ئۇيغۇرچە', # Uyghur (Arabic script) (default)
+               'ug-latn' => 'Uyghurche', # Uyghur (Latin script)
+               'uk' => 'українська', # Ukrainian
+               'ur' => 'اردو',     # Urdu
+               'uz' => "oʻzbekcha/ўзбекча",    # Uzbek (multiple scripts - defaults to Latin)
+               'uz-cyrl' => "ўзбекча",  # Uzbek Cyrillic
+               'uz-latn' => "oʻzbekcha",      # Uzbek Latin (default)
+               've' => 'Tshivenda',            # Venda
+               'vec' => 'vèneto',     # Venetian
+               'vep' => 'vepsän 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
+               'wo' => 'Wolof',                # Wolof
+               'wuu' => '吴语',              # Wu Chinese
+               'xal' => 'хальмг',                # Kalmyk-Oirat
+               'xh' => 'isiXhosa',             # Xhosan
+               'xmf' => 'მარგალური', # Mingrelian
+               'yi' => 'ייִדיש', # Yiddish
+               'yo' => 'Yorùbá',     # Yoruba
+               'yue' => '粵語',      # Cantonese
+               'za' => 'Vahcuengh',    # Zhuang
+               'zea' => 'Zeêuws',     # Zeeuws/Zeaws
+               'zh' => '中文',                                               # (Zhōng Wén) - Chinese
+               'zh-classical' => '文言',                     # Classical Chinese/Literary Chinese -- (see bug 8217)
+               'zh-cn' => "中文(中国大陆)\xE2\x80\x8E",      # Chinese (PRC)
+               'zh-hans' => "中文(简体)\xE2\x80\x8E",  # Mandarin Chinese (Simplified Chinese script) (cmn-hans)
+               'zh-hant' => "中文(繁體)\xE2\x80\x8E",  # Mandarin Chinese (Traditional Chinese script) (cmn-hant)
+               'zh-hk' => "中文(香港)\xE2\x80\x8E",    # Chinese (Hong Kong)
+               'zh-min-nan' => 'Bân-lâm-gú',                                # Min-nan -- (see bug 8217)
+               'zh-mo' => "中文(澳門)\xE2\x80\x8E",    # Chinese (Macau)
+               'zh-my' => "中文(马来西亚)\xE2\x80\x8E",      # Chinese (Malaysia)
+               'zh-sg' => "中文(新加坡)\xE2\x80\x8E", # Chinese (Singapore)
+               'zh-tw' => "中文(台灣)\xE2\x80\x8E",    # Chinese (Taiwan)
+               'zh-yue' => '粵語',                                   # Cantonese -- (see bug 8217)
+               'zu' => 'isiZulu'               # Zulu
+       );
+}
diff --git a/languages/data/ZhConversion.php b/languages/data/ZhConversion.php
new file mode 100644 (file)
index 0000000..8652975
--- /dev/null
@@ -0,0 +1,20281 @@
+<?php
+/**
+ * Simplified / Traditional Chinese conversion tables
+ *
+ * Automatically generated using code and data in maintenance/language/zhtable/
+ * Do not modify directly!
+ *
+ * @file
+ */
+
+namespace MediaWiki\Languages\Data;
+
+class ZhConversion {
+public static $zh2Hant = array(
+'㐷' => '傌',
+'㐹' => '㑶',
+'㐽' => '偑',
+'㑇' => '㑳',
+'㑈' => '倲',
+'㑔' => '㑯',
+'㑩' => '儸',
+'㓥' => '劏',
+'㔉' => '劚',
+'㖊' => '噚',
+'㖞' => '喎',
+'㘎' => '㘚',
+'㚯' => '㜄',
+'㛀' => '媰',
+'㛟' => '𡞵',
+'㛠' => '𡢃',
+'㛣' => '㜏',
+'㛤' => '孋',
+'㛿' => '𡠹',
+'㟆' => '㠏',
+'㟜' => '𡾱',
+'㤘' => '㥮',
+'㧏' => '掆',
+'㧐' => '㩳',
+'㧑' => '撝',
+'㧟' => '擓',
+'㧰' => '擽',
+'㨫' => '㩜',
+'㭎' => '棡',
+'㭏' => '椲',
+'㭣' => '𣙎',
+'㭤' => '樢',
+'㭴' => '樫',
+'㱩' => '殰',
+'㱮' => '殨',
+'㲿' => '瀇',
+'㳔' => '濧',
+'㳠' => '澾',
+'㳡' => '濄',
+'㳢' => '𣾷',
+'㳽' => '瀰',
+'㶉' => '鸂',
+'㶶' => '燶',
+'㶽' => '煱',
+'㺍' => '獱',
+'㻅' => '璯',
+'㻏' => '𤫩',
+'㻘' => '𤪺',
+'䀥' => '䁻',
+'䁖' => '瞜',
+'䂵' => '碽',
+'䅉' => '稏',
+'䅪' => '𥢢',
+'䇲' => '筴',
+'䉤' => '籔',
+'䌶' => '䊷',
+'䌷' => '紬',
+'䌸' => '縳',
+'䌹' => '絅',
+'䌺' => '䋙',
+'䌻' => '䋚',
+'䌼' => '綐',
+'䌽' => '綵',
+'䌾' => '䋻',
+'䌿' => '䋹',
+'䍀' => '繿',
+'䍁' => '繸',
+'䎬' => '䎱',
+'䏝' => '膞',
+'䓖' => '藭',
+'䗖' => '螮',
+'䘛' => '𧝞',
+'䘞' => '𧜗',
+'䙊' => '𧜵',
+'䙌' => '䙡',
+'䙓' => '襬',
+'䜣' => '訢',
+'䜥' => '𧩙',
+'䜧' => '䜀',
+'䜩' => '讌',
+'䝙' => '貙',
+'䞌' => '𧵳',
+'䞍' => '䝼',
+'䞎' => '𧶧',
+'䞐' => '賰',
+'䟢' => '躎',
+'䢀' => '𨊰',
+'䢁' => '𨊸',
+'䢂' => '𨋢',
+'䥺' => '釾',
+'䥽' => '鏺',
+'䥾' => '䥱',
+'䥿' => '𨯅',
+'䦀' => '𨦫',
+'䦁' => '𨧜',
+'䦂' => '䥇',
+'䦃' => '鐯',
+'䦅' => '鐥',
+'䦶' => '䦛',
+'䦷' => '䦟',
+'䭪' => '𩞯',
+'䯃' => '𩣑',
+'䯄' => '騧',
+'䯅' => '䯀',
+'䲝' => '䱽',
+'䲞' => '𩶘',
+'䲟' => '鮣',
+'䲠' => '鰆',
+'䲡' => '鰌',
+'䲢' => '鰧',
+'䲣' => '䱷',
+'䴓' => '鳾',
+'䴔' => '鵁',
+'䴕' => '鴷',
+'䴖' => '鶄',
+'䴗' => '鶪',
+'䴘' => '鷈',
+'䴙' => '鷿',
+'䶮' => '龑',
+'万' => '萬',
+'与' => '與',
+'专' => '專',
+'业' => '業',
+'丛' => '叢',
+'东' => '東',
+'丝' => '絲',
+'丢' => '丟',
+'两' => '兩',
+'严' => '嚴',
+'丧' => '喪',
+'个' => '個',
+'丰' => '豐',
+'临' => '臨',
+'为' => '為',
+'丽' => '麗',
+'举' => '舉',
+'么' => '麼',
+'义' => '義',
+'乌' => '烏',
+'乐' => '樂',
+'乔' => '喬',
+'习' => '習',
+'乡' => '鄉',
+'书' => '書',
+'买' => '買',
+'乱' => '亂',
+'争' => '爭',
+'于' => '於',
+'亏' => '虧',
+'云' => '雲',
+'亚' => '亞',
+'产' => '產',
+'亩' => '畝',
+'亲' => '親',
+'亵' => '褻',
+'亸' => '嚲',
+'亿' => '億',
+'仅' => '僅',
+'从' => '從',
+'仑' => '侖',
+'仓' => '倉',
+'仪' => '儀',
+'们' => '們',
+'价' => '價',
+'众' => '眾',
+'优' => '優',
+'会' => '會',
+'伛' => '傴',
+'伞' => '傘',
+'伟' => '偉',
+'传' => '傳',
+'伡' => '俥',
+'伣' => '俔',
+'伤' => '傷',
+'伥' => '倀',
+'伦' => '倫',
+'伧' => '傖',
+'伪' => '偽',
+'伫' => '佇',
+'体' => '體',
+'佣' => '傭',
+'佥' => '僉',
+'侠' => '俠',
+'侣' => '侶',
+'侥' => '僥',
+'侦' => '偵',
+'侧' => '側',
+'侨' => '僑',
+'侩' => '儈',
+'侪' => '儕',
+'侬' => '儂',
+'俣' => '俁',
+'俦' => '儔',
+'俨' => '儼',
+'俩' => '倆',
+'俪' => '儷',
+'俫' => '倈',
+'俭' => '儉',
+'债' => '債',
+'倾' => '傾',
+'偬' => '傯',
+'偻' => '僂',
+'偾' => '僨',
+'偿' => '償',
+'傥' => '儻',
+'傧' => '儐',
+'储' => '儲',
+'傩' => '儺',
+'儿' => '兒',
+'兑' => '兌',
+'兖' => '兗',
+'党' => '黨',
+'兰' => '蘭',
+'关' => '關',
+'兴' => '興',
+'兹' => '茲',
+'养' => '養',
+'兽' => '獸',
+'冁' => '囅',
+'内' => '內',
+'冈' => '岡',
+'册' => '冊',
+'写' => '寫',
+'军' => '軍',
+'农' => '農',
+'冯' => '馮',
+'冲' => '沖',
+'决' => '決',
+'况' => '況',
+'冻' => '凍',
+'净' => '淨',
+'凄' => '淒',
+'凉' => '涼',
+'减' => '減',
+'凑' => '湊',
+'凛' => '凜',
+'几' => '幾',
+'凤' => '鳳',
+'凫' => '鳧',
+'凭' => '憑',
+'凯' => '凱',
+'击' => '擊',
+'凿' => '鑿',
+'刍' => '芻',
+'划' => '劃',
+'刘' => '劉',
+'则' => '則',
+'刚' => '剛',
+'创' => '創',
+'删' => '刪',
+'别' => '別',
+'刬' => '剗',
+'刭' => '剄',
+'刹' => '剎',
+'刽' => '劊',
+'刾' => '㓨',
+'刿' => '劌',
+'剀' => '剴',
+'剂' => '劑',
+'剐' => '剮',
+'剑' => '劍',
+'剥' => '剝',
+'剧' => '劇',
+'劝' => '勸',
+'办' => '辦',
+'务' => '務',
+'劢' => '勱',
+'动' => '動',
+'励' => '勵',
+'劲' => '勁',
+'劳' => '勞',
+'势' => '勢',
+'勋' => '勛',
+'勚' => '勩',
+'匀' => '勻',
+'匦' => '匭',
+'匮' => '匱',
+'区' => '區',
+'医' => '醫',
+'华' => '華',
+'协' => '協',
+'单' => '單',
+'卖' => '賣',
+'卢' => '盧',
+'卤' => '鹵',
+'卧' => '臥',
+'卫' => '衛',
+'却' => '卻',
+'厂' => '廠',
+'厅' => '廳',
+'历' => '歷',
+'厉' => '厲',
+'压' => '壓',
+'厌' => '厭',
+'厍' => '厙',
+'厐' => '龎',
+'厕' => '廁',
+'厢' => '廂',
+'厣' => '厴',
+'厦' => '廈',
+'厨' => '廚',
+'厩' => '廄',
+'厮' => '廝',
+'县' => '縣',
+'叁' => '叄',
+'参' => '參',
+'叆' => '靉',
+'叇' => '靆',
+'双' => '雙',
+'发' => '發',
+'变' => '變',
+'叙' => '敘',
+'叠' => '疊',
+'叶' => '葉',
+'号' => '號',
+'叹' => '嘆',
+'叽' => '嘰',
+'后' => '後',
+'吓' => '嚇',
+'吕' => '呂',
+'吗' => '嗎',
+'吣' => '唚',
+'吨' => '噸',
+'听' => '聽',
+'启' => '啟',
+'吴' => '吳',
+'呐' => '吶',
+'呒' => '嘸',
+'呓' => '囈',
+'呕' => '嘔',
+'呖' => '嚦',
+'呗' => '唄',
+'员' => '員',
+'呙' => '咼',
+'呛' => '嗆',
+'呜' => '嗚',
+'咏' => '詠',
+'咙' => '嚨',
+'咛' => '嚀',
+'咝' => '噝',
+'响' => '響',
+'哑' => '啞',
+'哒' => '噠',
+'哓' => '嘵',
+'哔' => '嗶',
+'哕' => '噦',
+'哗' => '嘩',
+'哙' => '噲',
+'哜' => '嚌',
+'哝' => '噥',
+'哟' => '喲',
+'唛' => '嘜',
+'唝' => '嗊',
+'唠' => '嘮',
+'唡' => '啢',
+'唢' => '嗩',
+'唤' => '喚',
+'啧' => '嘖',
+'啬' => '嗇',
+'啭' => '囀',
+'啮' => '齧',
+'啯' => '嘓',
+'啰' => '囉',
+'啴' => '嘽',
+'啸' => '嘯',
+'喂' => '餵',
+'喷' => '噴',
+'喽' => '嘍',
+'喾' => '嚳',
+'嗫' => '囁',
+'嗳' => '噯',
+'嘘' => '噓',
+'嘤' => '嚶',
+'嘱' => '囑',
+'噜' => '嚕',
+'嚣' => '囂',
+'团' => '團',
+'园' => '園',
+'囱' => '囪',
+'围' => '圍',
+'囵' => '圇',
+'国' => '國',
+'图' => '圖',
+'圆' => '圓',
+'圣' => '聖',
+'圹' => '壙',
+'场' => '場',
+'坏' => '壞',
+'块' => '塊',
+'坚' => '堅',
+'坛' => '壇',
+'坜' => '壢',
+'坝' => '壩',
+'坞' => '塢',
+'坟' => '墳',
+'坠' => '墜',
+'垄' => '壟',
+'垅' => '壠',
+'垆' => '壚',
+'垒' => '壘',
+'垦' => '墾',
+'垩' => '堊',
+'垫' => '墊',
+'垭' => '埡',
+'垱' => '壋',
+'垲' => '塏',
+'埘' => '塒',
+'埙' => '塤',
+'埚' => '堝',
+'埯' => '垵',
+'堑' => '塹',
+'堕' => '墮',
+'墙' => '牆',
+'壮' => '壯',
+'声' => '聲',
+'壳' => '殼',
+'壶' => '壺',
+'壸' => '壼',
+'处' => '處',
+'备' => '備',
+'复' => '復',
+'够' => '夠',
+'头' => '頭',
+'夹' => '夾',
+'夺' => '奪',
+'奁' => '奩',
+'奂' => '奐',
+'奋' => '奮',
+'奖' => '獎',
+'奥' => '奧',
+'妆' => '妝',
+'妇' => '婦',
+'妈' => '媽',
+'妩' => '嫵',
+'妪' => '嫗',
+'妫' => '媯',
+'姗' => '姍',
+'姹' => '奼',
+'娄' => '婁',
+'娅' => '婭',
+'娆' => '嬈',
+'娇' => '嬌',
+'娈' => '孌',
+'娱' => '娛',
+'娲' => '媧',
+'娴' => '嫻',
+'婳' => '嫿',
+'婴' => '嬰',
+'婵' => '嬋',
+'婶' => '嬸',
+'媪' => '媼',
+'媭' => '嬃',
+'嫒' => '嬡',
+'嫔' => '嬪',
+'嫱' => '嬙',
+'嬷' => '嬤',
+'孙' => '孫',
+'学' => '學',
+'孪' => '孿',
+'宁' => '寧',
+'宝' => '寶',
+'实' => '實',
+'宠' => '寵',
+'审' => '審',
+'宪' => '憲',
+'宫' => '宮',
+'宽' => '寬',
+'宾' => '賓',
+'寝' => '寢',
+'对' => '對',
+'寻' => '尋',
+'导' => '導',
+'寿' => '壽',
+'将' => '將',
+'尔' => '爾',
+'尘' => '塵',
+'尝' => '嘗',
+'尧' => '堯',
+'尴' => '尷',
+'尸' => '屍',
+'尽' => '盡',
+'层' => '層',
+'屃' => '屓',
+'屉' => '屜',
+'届' => '屆',
+'属' => '屬',
+'屡' => '屢',
+'屦' => '屨',
+'屿' => '嶼',
+'岁' => '歲',
+'岂' => '豈',
+'岖' => '嶇',
+'岗' => '崗',
+'岘' => '峴',
+'岚' => '嵐',
+'岛' => '島',
+'岭' => '嶺',
+'岽' => '崬',
+'岿' => '巋',
+'峃' => '嶨',
+'峄' => '嶧',
+'峡' => '峽',
+'峣' => '嶢',
+'峤' => '嶠',
+'峥' => '崢',
+'峦' => '巒',
+'崂' => '嶗',
+'崃' => '崍',
+'崄' => '嶮',
+'崭' => '嶄',
+'嵘' => '嶸',
+'嵚' => '嶔',
+'嵝' => '嶁',
+'巅' => '巔',
+'巩' => '鞏',
+'巯' => '巰',
+'币' => '幣',
+'帅' => '帥',
+'师' => '師',
+'帏' => '幃',
+'帐' => '帳',
+'帘' => '簾',
+'帜' => '幟',
+'带' => '帶',
+'帧' => '幀',
+'帮' => '幫',
+'帱' => '幬',
+'帻' => '幘',
+'帼' => '幗',
+'幂' => '冪',
+'并' => '並',
+'幺' => '么',
+'广' => '廣',
+'庄' => '莊',
+'庆' => '慶',
+'庐' => '廬',
+'庑' => '廡',
+'库' => '庫',
+'应' => '應',
+'庙' => '廟',
+'庞' => '龐',
+'废' => '廢',
+'庼' => '廎',
+'廪' => '廩',
+'开' => '開',
+'异' => '異',
+'弃' => '棄',
+'弑' => '弒',
+'张' => '張',
+'弥' => '彌',
+'弪' => '弳',
+'弯' => '彎',
+'弹' => '彈',
+'强' => '強',
+'归' => '歸',
+'当' => '當',
+'录' => '錄',
+'彟' => '彠',
+'彦' => '彥',
+'彨' => '彲',
+'彻' => '徹',
+'径' => '徑',
+'徕' => '徠',
+'忆' => '憶',
+'忏' => '懺',
+'忧' => '憂',
+'忾' => '愾',
+'怀' => '懷',
+'态' => '態',
+'怂' => '慫',
+'怃' => '憮',
+'怄' => '慪',
+'怅' => '悵',
+'怆' => '愴',
+'怜' => '憐',
+'总' => '總',
+'怼' => '懟',
+'怿' => '懌',
+'恋' => '戀',
+'恒' => '恆',
+'恳' => '懇',
+'恶' => '惡',
+'恸' => '慟',
+'恹' => '懨',
+'恺' => '愷',
+'恻' => '惻',
+'恼' => '惱',
+'恽' => '惲',
+'悦' => '悅',
+'悫' => '愨',
+'悬' => '懸',
+'悭' => '慳',
+'悮' => '悞',
+'悯' => '憫',
+'惊' => '驚',
+'惧' => '懼',
+'惨' => '慘',
+'惩' => '懲',
+'惫' => '憊',
+'惬' => '愜',
+'惭' => '慚',
+'惮' => '憚',
+'惯' => '慣',
+'愠' => '慍',
+'愤' => '憤',
+'愦' => '憒',
+'愿' => '願',
+'慑' => '懾',
+'懑' => '懣',
+'懒' => '懶',
+'懔' => '懍',
+'戆' => '戇',
+'戋' => '戔',
+'戏' => '戲',
+'戗' => '戧',
+'战' => '戰',
+'戬' => '戩',
+'戯' => '戱',
+'户' => '戶',
+'扑' => '撲',
+'执' => '執',
+'扩' => '擴',
+'扪' => '捫',
+'扫' => '掃',
+'扬' => '揚',
+'扰' => '擾',
+'抚' => '撫',
+'抛' => '拋',
+'抟' => '摶',
+'抠' => '摳',
+'抡' => '掄',
+'抢' => '搶',
+'护' => '護',
+'报' => '報',
+'担' => '擔',
+'拟' => '擬',
+'拢' => '攏',
+'拣' => '揀',
+'拥' => '擁',
+'拦' => '攔',
+'拧' => '擰',
+'拨' => '撥',
+'择' => '擇',
+'挂' => '掛',
+'挚' => '摯',
+'挛' => '攣',
+'挜' => '掗',
+'挝' => '撾',
+'挞' => '撻',
+'挟' => '挾',
+'挠' => '撓',
+'挡' => '擋',
+'挢' => '撟',
+'挣' => '掙',
+'挤' => '擠',
+'挥' => '揮',
+'挦' => '撏',
+'捝' => '挩',
+'捞' => '撈',
+'损' => '損',
+'捡' => '撿',
+'换' => '換',
+'捣' => '搗',
+'据' => '據',
+'掳' => '擄',
+'掴' => '摑',
+'掷' => '擲',
+'掸' => '撣',
+'掺' => '摻',
+'掼' => '摜',
+'揽' => '攬',
+'揾' => '搵',
+'揿' => '撳',
+'搀' => '攙',
+'搁' => '擱',
+'搂' => '摟',
+'搅' => '攪',
+'携' => '攜',
+'摄' => '攝',
+'摅' => '攄',
+'摆' => '擺',
+'摇' => '搖',
+'摈' => '擯',
+'摊' => '攤',
+'撄' => '攖',
+'撑' => '撐',
+'撵' => '攆',
+'撷' => '擷',
+'撸' => '擼',
+'撺' => '攛',
+'擞' => '擻',
+'攒' => '攢',
+'敌' => '敵',
+'敛' => '斂',
+'敩' => '斆',
+'数' => '數',
+'斋' => '齋',
+'斓' => '斕',
+'斩' => '斬',
+'断' => '斷',
+'无' => '無',
+'旧' => '舊',
+'时' => '時',
+'旷' => '曠',
+'旸' => '暘',
+'昙' => '曇',
+'昼' => '晝',
+'昽' => '曨',
+'显' => '顯',
+'晋' => '晉',
+'晒' => '曬',
+'晓' => '曉',
+'晔' => '曄',
+'晕' => '暈',
+'晖' => '暉',
+'暂' => '暫',
+'暧' => '曖',
+'术' => '術',
+'机' => '機',
+'杀' => '殺',
+'杂' => '雜',
+'权' => '權',
+'杠' => '槓',
+'条' => '條',
+'来' => '來',
+'杨' => '楊',
+'杩' => '榪',
+'杰' => '傑',
+'极' => '極',
+'构' => '構',
+'枞' => '樅',
+'枢' => '樞',
+'枣' => '棗',
+'枥' => '櫪',
+'枧' => '梘',
+'枨' => '棖',
+'枪' => '槍',
+'枫' => '楓',
+'枭' => '梟',
+'柜' => '櫃',
+'柠' => '檸',
+'柽' => '檉',
+'栀' => '梔',
+'栅' => '柵',
+'标' => '標',
+'栈' => '棧',
+'栉' => '櫛',
+'栊' => '櫳',
+'栋' => '棟',
+'栌' => '櫨',
+'栎' => '櫟',
+'栏' => '欄',
+'树' => '樹',
+'栖' => '棲',
+'样' => '樣',
+'栾' => '欒',
+'桠' => '椏',
+'桡' => '橈',
+'桢' => '楨',
+'档' => '檔',
+'桤' => '榿',
+'桥' => '橋',
+'桦' => '樺',
+'桧' => '檜',
+'桨' => '槳',
+'桩' => '樁',
+'桪' => '樳',
+'梦' => '夢',
+'梼' => '檮',
+'梾' => '棶',
+'梿' => '槤',
+'检' => '檢',
+'棁' => '梲',
+'棂' => '欞',
+'椁' => '槨',
+'椝' => '槼',
+'椟' => '櫝',
+'椠' => '槧',
+'椢' => '槶',
+'椤' => '欏',
+'椫' => '樿',
+'椭' => '橢',
+'椮' => '槮',
+'楼' => '樓',
+'榄' => '欖',
+'榅' => '榲',
+'榇' => '櫬',
+'榈' => '櫚',
+'榉' => '櫸',
+'槚' => '檟',
+'槛' => '檻',
+'槟' => '檳',
+'槠' => '櫧',
+'横' => '橫',
+'樯' => '檣',
+'樱' => '櫻',
+'橥' => '櫫',
+'橱' => '櫥',
+'橹' => '櫓',
+'橼' => '櫞',
+'檩' => '檁',
+'欢' => '歡',
+'欤' => '歟',
+'欧' => '歐',
+'歼' => '殲',
+'殁' => '歿',
+'殇' => '殤',
+'残' => '殘',
+'殒' => '殞',
+'殓' => '殮',
+'殚' => '殫',
+'殡' => '殯',
+'殴' => '毆',
+'毁' => '毀',
+'毂' => '轂',
+'毕' => '畢',
+'毙' => '斃',
+'毡' => '氈',
+'毵' => '毿',
+'氇' => '氌',
+'气' => '氣',
+'氢' => '氫',
+'氩' => '氬',
+'氲' => '氳',
+'汇' => '匯',
+'汉' => '漢',
+'汤' => '湯',
+'汹' => '洶',
+'沟' => '溝',
+'没' => '沒',
+'沣' => '灃',
+'沤' => '漚',
+'沥' => '瀝',
+'沦' => '淪',
+'沧' => '滄',
+'沨' => '渢',
+'沩' => '溈',
+'沪' => '滬',
+'泞' => '濘',
+'泪' => '淚',
+'泶' => '澩',
+'泷' => '瀧',
+'泸' => '瀘',
+'泺' => '濼',
+'泻' => '瀉',
+'泼' => '潑',
+'泽' => '澤',
+'泾' => '涇',
+'洁' => '潔',
+'洒' => '灑',
+'洼' => '窪',
+'浃' => '浹',
+'浅' => '淺',
+'浆' => '漿',
+'浇' => '澆',
+'浈' => '湞',
+'浉' => '溮',
+'浊' => '濁',
+'测' => '測',
+'浍' => '澮',
+'济' => '濟',
+'浏' => '瀏',
+'浐' => '滻',
+'浑' => '渾',
+'浒' => '滸',
+'浓' => '濃',
+'浔' => '潯',
+'浕' => '濜',
+'涂' => '塗',
+'涛' => '濤',
+'涝' => '澇',
+'涞' => '淶',
+'涟' => '漣',
+'涠' => '潿',
+'涡' => '渦',
+'涢' => '溳',
+'涣' => '渙',
+'涤' => '滌',
+'润' => '潤',
+'涧' => '澗',
+'涨' => '漲',
+'涩' => '澀',
+'渊' => '淵',
+'渌' => '淥',
+'渍' => '漬',
+'渎' => '瀆',
+'渐' => '漸',
+'渑' => '澠',
+'渔' => '漁',
+'渖' => '瀋',
+'渗' => '滲',
+'温' => '溫',
+'湾' => '灣',
+'湿' => '濕',
+'溃' => '潰',
+'溅' => '濺',
+'溆' => '漵',
+'溇' => '漊',
+'滗' => '潷',
+'滚' => '滾',
+'滞' => '滯',
+'滟' => '灩',
+'滠' => '灄',
+'满' => '滿',
+'滢' => '瀅',
+'滤' => '濾',
+'滥' => '濫',
+'滦' => '灤',
+'滨' => '濱',
+'滩' => '灘',
+'滪' => '澦',
+'漤' => '灠',
+'潆' => '瀠',
+'潇' => '瀟',
+'潋' => '瀲',
+'潍' => '濰',
+'潜' => '潛',
+'潴' => '瀦',
+'澛' => '瀂',
+'澜' => '瀾',
+'濑' => '瀨',
+'濒' => '瀕',
+'灏' => '灝',
+'灭' => '滅',
+'灯' => '燈',
+'灵' => '靈',
+'灾' => '災',
+'灿' => '燦',
+'炀' => '煬',
+'炉' => '爐',
+'炖' => '燉',
+'炜' => '煒',
+'炝' => '熗',
+'点' => '點',
+'炼' => '煉',
+'炽' => '熾',
+'烁' => '爍',
+'烂' => '爛',
+'烃' => '烴',
+'烛' => '燭',
+'烟' => '煙',
+'烦' => '煩',
+'烧' => '燒',
+'烨' => '燁',
+'烩' => '燴',
+'烫' => '燙',
+'烬' => '燼',
+'热' => '熱',
+'焕' => '煥',
+'焖' => '燜',
+'焘' => '燾',
+'煴' => '熅',
+'爱' => '愛',
+'爷' => '爺',
+'牍' => '牘',
+'牦' => '氂',
+'牵' => '牽',
+'牺' => '犧',
+'犊' => '犢',
+'状' => '狀',
+'犷' => '獷',
+'犸' => '獁',
+'犹' => '猶',
+'狈' => '狽',
+'狝' => '獮',
+'狞' => '獰',
+'独' => '獨',
+'狭' => '狹',
+'狮' => '獅',
+'狯' => '獪',
+'狰' => '猙',
+'狱' => '獄',
+'狲' => '猻',
+'猃' => '獫',
+'猎' => '獵',
+'猕' => '獼',
+'猡' => '玀',
+'猪' => '豬',
+'猫' => '貓',
+'猬' => '蝟',
+'献' => '獻',
+'獭' => '獺',
+'玑' => '璣',
+'玙' => '璵',
+'玚' => '瑒',
+'玛' => '瑪',
+'玮' => '瑋',
+'环' => '環',
+'现' => '現',
+'玱' => '瑲',
+'玺' => '璽',
+'珐' => '琺',
+'珑' => '瓏',
+'珰' => '璫',
+'珲' => '琿',
+'琎' => '璡',
+'琏' => '璉',
+'琐' => '瑣',
+'琼' => '瓊',
+'瑶' => '瑤',
+'瑷' => '璦',
+'瑸' => '璸',
+'璎' => '瓔',
+'瓒' => '瓚',
+'瓯' => '甌',
+'电' => '電',
+'画' => '畫',
+'畅' => '暢',
+'畴' => '疇',
+'疖' => '癤',
+'疗' => '療',
+'疟' => '瘧',
+'疠' => '癘',
+'疡' => '瘍',
+'疬' => '癧',
+'疭' => '瘲',
+'疮' => '瘡',
+'疯' => '瘋',
+'疱' => '皰',
+'痈' => '癰',
+'痉' => '痙',
+'痒' => '癢',
+'痖' => '瘂',
+'痨' => '癆',
+'痪' => '瘓',
+'痫' => '癇',
+'痳' => '痲',
+'瘅' => '癉',
+'瘆' => '瘮',
+'瘗' => '瘞',
+'瘘' => '瘺',
+'瘪' => '癟',
+'瘫' => '癱',
+'瘾' => '癮',
+'瘿' => '癭',
+'癞' => '癩',
+'癣' => '癬',
+'癫' => '癲',
+'皑' => '皚',
+'皱' => '皺',
+'皲' => '皸',
+'盏' => '盞',
+'盐' => '鹽',
+'监' => '監',
+'盖' => '蓋',
+'盗' => '盜',
+'盘' => '盤',
+'眍' => '瞘',
+'眦' => '眥',
+'眬' => '矓',
+'睁' => '睜',
+'睐' => '睞',
+'睑' => '瞼',
+'瞆' => '瞶',
+'瞒' => '瞞',
+'瞩' => '矚',
+'矫' => '矯',
+'矶' => '磯',
+'矾' => '礬',
+'矿' => '礦',
+'砀' => '碭',
+'码' => '碼',
+'砖' => '磚',
+'砗' => '硨',
+'砚' => '硯',
+'砜' => '碸',
+'砺' => '礪',
+'砻' => '礱',
+'砾' => '礫',
+'础' => '礎',
+'硁' => '硜',
+'硕' => '碩',
+'硖' => '硤',
+'硗' => '磽',
+'硙' => '磑',
+'硚' => '礄',
+'确' => '確',
+'硵' => '磠',
+'硷' => '鹼',
+'碍' => '礙',
+'碛' => '磧',
+'碜' => '磣',
+'碱' => '鹼',
+'礼' => '禮',
+'祃' => '禡',
+'祎' => '禕',
+'祢' => '禰',
+'祯' => '禎',
+'祷' => '禱',
+'祸' => '禍',
+'禀' => '稟',
+'禄' => '祿',
+'禅' => '禪',
+'离' => '離',
+'秃' => '禿',
+'秆' => '稈',
+'种' => '種',
+'积' => '積',
+'称' => '稱',
+'秽' => '穢',
+'秾' => '穠',
+'稆' => '穭',
+'税' => '稅',
+'稣' => '穌',
+'稳' => '穩',
+'穑' => '穡',
+'穷' => '窮',
+'窃' => '竊',
+'窍' => '竅',
+'窎' => '窵',
+'窑' => '窯',
+'窜' => '竄',
+'窝' => '窩',
+'窥' => '窺',
+'窦' => '竇',
+'窭' => '窶',
+'竖' => '豎',
+'竞' => '競',
+'笃' => '篤',
+'笋' => '筍',
+'笔' => '筆',
+'笕' => '筧',
+'笺' => '箋',
+'笼' => '籠',
+'笾' => '籩',
+'筑' => '築',
+'筚' => '篳',
+'筛' => '篩',
+'筜' => '簹',
+'筝' => '箏',
+'筹' => '籌',
+'筼' => '篔',
+'签' => '簽',
+'简' => '簡',
+'箓' => '籙',
+'箦' => '簀',
+'箧' => '篋',
+'箨' => '籜',
+'箩' => '籮',
+'箪' => '簞',
+'箫' => '簫',
+'篑' => '簣',
+'篓' => '簍',
+'篮' => '籃',
+'篯' => '籛',
+'篱' => '籬',
+'簖' => '籪',
+'籁' => '籟',
+'籴' => '糴',
+'类' => '類',
+'籼' => '秈',
+'粜' => '糶',
+'粝' => '糲',
+'粤' => '粵',
+'粪' => '糞',
+'粮' => '糧',
+'糁' => '糝',
+'糇' => '餱',
+'紧' => '緊',
+'絷' => '縶',
+'纟' => '糹',
+'纠' => '糾',
+'纡' => '紆',
+'红' => '紅',
+'纣' => '紂',
+'纤' => '纖',
+'纥' => '紇',
+'约' => '約',
+'级' => '級',
+'纨' => '紈',
+'纩' => '纊',
+'纪' => '紀',
+'纫' => '紉',
+'纬' => '緯',
+'纭' => '紜',
+'纮' => '紘',
+'纯' => '純',
+'纰' => '紕',
+'纱' => '紗',
+'纲' => '綱',
+'纳' => '納',
+'纴' => '紝',
+'纵' => '縱',
+'纶' => '綸',
+'纷' => '紛',
+'纸' => '紙',
+'纹' => '紋',
+'纺' => '紡',
+'纻' => '紵',
+'纼' => '紖',
+'纽' => '紐',
+'纾' => '紓',
+'线' => '線',
+'绀' => '紺',
+'绁' => '紲',
+'绂' => '紱',
+'练' => '練',
+'组' => '組',
+'绅' => '紳',
+'细' => '細',
+'织' => '織',
+'终' => '終',
+'绉' => '縐',
+'绊' => '絆',
+'绋' => '紼',
+'绌' => '絀',
+'绍' => '紹',
+'绎' => '繹',
+'经' => '經',
+'绐' => '紿',
+'绑' => '綁',
+'绒' => '絨',
+'结' => '結',
+'绔' => '絝',
+'绕' => '繞',
+'绖' => '絰',
+'绗' => '絎',
+'绘' => '繪',
+'给' => '給',
+'绚' => '絢',
+'绛' => '絳',
+'络' => '絡',
+'绝' => '絕',
+'绞' => '絞',
+'统' => '統',
+'绠' => '綆',
+'绡' => '綃',
+'绢' => '絹',
+'绣' => '繡',
+'绤' => '綌',
+'绥' => '綏',
+'绦' => '絛',
+'继' => '繼',
+'绨' => '綈',
+'绩' => '績',
+'绪' => '緒',
+'绫' => '綾',
+'绬' => '緓',
+'续' => '續',
+'绮' => '綺',
+'绯' => '緋',
+'绰' => '綽',
+'绱' => '鞝',
+'绲' => '緄',
+'绳' => '繩',
+'维' => '維',
+'绵' => '綿',
+'绶' => '綬',
+'绷' => '繃',
+'绸' => '綢',
+'绹' => '綯',
+'绺' => '綹',
+'绻' => '綣',
+'综' => '綜',
+'绽' => '綻',
+'绾' => '綰',
+'绿' => '綠',
+'缀' => '綴',
+'缁' => '緇',
+'缂' => '緙',
+'缃' => '緗',
+'缄' => '緘',
+'缅' => '緬',
+'缆' => '纜',
+'缇' => '緹',
+'缈' => '緲',
+'缉' => '緝',
+'缊' => '縕',
+'缋' => '繢',
+'缌' => '緦',
+'缍' => '綞',
+'缎' => '緞',
+'缏' => '緶',
+'缐' => '線',
+'缑' => '緱',
+'缒' => '縋',
+'缓' => '緩',
+'缔' => '締',
+'缕' => '縷',
+'编' => '編',
+'缗' => '緡',
+'缘' => '緣',
+'缙' => '縉',
+'缚' => '縛',
+'缛' => '縟',
+'缜' => '縝',
+'缝' => '縫',
+'缞' => '縗',
+'缟' => '縞',
+'缠' => '纏',
+'缡' => '縭',
+'缢' => '縊',
+'缣' => '縑',
+'缤' => '繽',
+'缥' => '縹',
+'缦' => '縵',
+'缧' => '縲',
+'缨' => '纓',
+'缩' => '縮',
+'缪' => '繆',
+'缫' => '繅',
+'缬' => '纈',
+'缭' => '繚',
+'缮' => '繕',
+'缯' => '繒',
+'缰' => '韁',
+'缱' => '繾',
+'缲' => '繰',
+'缳' => '繯',
+'缴' => '繳',
+'缵' => '纘',
+'罂' => '罌',
+'网' => '網',
+'罗' => '羅',
+'罚' => '罰',
+'罢' => '罷',
+'罴' => '羆',
+'羁' => '羈',
+'羟' => '羥',
+'羡' => '羨',
+'翘' => '翹',
+'翙' => '翽',
+'翚' => '翬',
+'耢' => '耮',
+'耧' => '耬',
+'耸' => '聳',
+'耻' => '恥',
+'聂' => '聶',
+'聋' => '聾',
+'职' => '職',
+'聍' => '聹',
+'联' => '聯',
+'聩' => '聵',
+'聪' => '聰',
+'肃' => '肅',
+'肠' => '腸',
+'肤' => '膚',
+'肮' => '骯',
+'肴' => '餚',
+'肾' => '腎',
+'肿' => '腫',
+'胀' => '脹',
+'胁' => '脅',
+'胆' => '膽',
+'胜' => '勝',
+'胧' => '朧',
+'胨' => '腖',
+'胪' => '臚',
+'胫' => '脛',
+'胶' => '膠',
+'脉' => '脈',
+'脍' => '膾',
+'脏' => '髒',
+'脐' => '臍',
+'脑' => '腦',
+'脓' => '膿',
+'脔' => '臠',
+'脚' => '腳',
+'脱' => '脫',
+'脶' => '腡',
+'脸' => '臉',
+'腊' => '臘',
+'腌' => '醃',
+'腘' => '膕',
+'腭' => '齶',
+'腻' => '膩',
+'腼' => '靦',
+'腽' => '膃',
+'腾' => '騰',
+'膑' => '臏',
+'臜' => '臢',
+'舆' => '輿',
+'舣' => '艤',
+'舰' => '艦',
+'舱' => '艙',
+'舻' => '艫',
+'艰' => '艱',
+'艳' => '艷',
+'艺' => '藝',
+'节' => '節',
+'芈' => '羋',
+'芗' => '薌',
+'芜' => '蕪',
+'芦' => '蘆',
+'苁' => '蓯',
+'苇' => '葦',
+'苈' => '藶',
+'苋' => '莧',
+'苌' => '萇',
+'苍' => '蒼',
+'苎' => '苧',
+'苏' => '蘇',
+'苧' => '薴',
+'茎' => '莖',
+'茏' => '蘢',
+'茑' => '蔦',
+'茔' => '塋',
+'茕' => '煢',
+'茧' => '繭',
+'荆' => '荊',
+'荐' => '薦',
+'荙' => '薘',
+'荚' => '莢',
+'荛' => '蕘',
+'荜' => '蓽',
+'荝' => '萴',
+'荞' => '蕎',
+'荟' => '薈',
+'荠' => '薺',
+'荡' => '盪',
+'荣' => '榮',
+'荤' => '葷',
+'荥' => '滎',
+'荦' => '犖',
+'荧' => '熒',
+'荨' => '蕁',
+'荩' => '藎',
+'荪' => '蓀',
+'荫' => '蔭',
+'荬' => '蕒',
+'荭' => '葒',
+'荮' => '葤',
+'药' => '藥',
+'莅' => '蒞',
+'莱' => '萊',
+'莲' => '蓮',
+'莳' => '蒔',
+'莴' => '萵',
+'莶' => '薟',
+'获' => '獲',
+'莸' => '蕕',
+'莹' => '瑩',
+'莺' => '鶯',
+'莼' => '蓴',
+'萚' => '蘀',
+'萝' => '蘿',
+'萤' => '螢',
+'营' => '營',
+'萦' => '縈',
+'萧' => '蕭',
+'萨' => '薩',
+'葱' => '蔥',
+'蒇' => '蕆',
+'蒉' => '蕢',
+'蒋' => '蔣',
+'蒌' => '蔞',
+'蓝' => '藍',
+'蓟' => '薊',
+'蓠' => '蘺',
+'蓣' => '蕷',
+'蓥' => '鎣',
+'蓦' => '驀',
+'蔂' => '虆',
+'蔷' => '薔',
+'蔹' => '蘞',
+'蔺' => '藺',
+'蔼' => '藹',
+'蕰' => '薀',
+'蕲' => '蘄',
+'蕴' => '蘊',
+'薮' => '藪',
+'藓' => '蘚',
+'蘖' => '櫱',
+'虏' => '虜',
+'虑' => '慮',
+'虚' => '虛',
+'虫' => '蟲',
+'虮' => '蟣',
+'虽' => '雖',
+'虾' => '蝦',
+'虿' => '蠆',
+'蚀' => '蝕',
+'蚁' => '蟻',
+'蚂' => '螞',
+'蚃' => '蠁',
+'蚕' => '蠶',
+'蚬' => '蜆',
+'蛊' => '蠱',
+'蛎' => '蠣',
+'蛏' => '蟶',
+'蛮' => '蠻',
+'蛰' => '蟄',
+'蛱' => '蛺',
+'蛲' => '蟯',
+'蛳' => '螄',
+'蛴' => '蠐',
+'蜕' => '蛻',
+'蜗' => '蝸',
+'蜡' => '蠟',
+'蝇' => '蠅',
+'蝈' => '蟈',
+'蝉' => '蟬',
+'蝎' => '蠍',
+'蝼' => '螻',
+'蝾' => '蠑',
+'螀' => '螿',
+'螨' => '蟎',
+'蟏' => '蠨',
+'衅' => '釁',
+'衔' => '銜',
+'补' => '補',
+'衬' => '襯',
+'衮' => '袞',
+'袄' => '襖',
+'袅' => '裊',
+'袆' => '褘',
+'袜' => '襪',
+'袭' => '襲',
+'袯' => '襏',
+'装' => '裝',
+'裆' => '襠',
+'裈' => '褌',
+'裢' => '褳',
+'裣' => '襝',
+'裤' => '褲',
+'裥' => '襉',
+'褛' => '褸',
+'褴' => '襤',
+'襕' => '襴',
+'见' => '見',
+'观' => '觀',
+'觃' => '覎',
+'规' => '規',
+'觅' => '覓',
+'视' => '視',
+'觇' => '覘',
+'览' => '覽',
+'觉' => '覺',
+'觊' => '覬',
+'觋' => '覡',
+'觌' => '覿',
+'觍' => '覥',
+'觎' => '覦',
+'觏' => '覯',
+'觐' => '覲',
+'觑' => '覷',
+'觞' => '觴',
+'触' => '觸',
+'觯' => '觶',
+'訚' => '誾',
+'詟' => '讋',
+'誉' => '譽',
+'誊' => '謄',
+'讠' => '訁',
+'计' => '計',
+'订' => '訂',
+'讣' => '訃',
+'认' => '認',
+'讥' => '譏',
+'讦' => '訐',
+'讧' => '訌',
+'讨' => '討',
+'让' => '讓',
+'讪' => '訕',
+'讫' => '訖',
+'讬' => '託',
+'训' => '訓',
+'议' => '議',
+'讯' => '訊',
+'记' => '記',
+'讱' => '訒',
+'讲' => '講',
+'讳' => '諱',
+'讴' => '謳',
+'讵' => '詎',
+'讶' => '訝',
+'讷' => '訥',
+'许' => '許',
+'讹' => '訛',
+'论' => '論',
+'讻' => '訩',
+'讼' => '訟',
+'讽' => '諷',
+'设' => '設',
+'访' => '訪',
+'诀' => '訣',
+'证' => '證',
+'诂' => '詁',
+'诃' => '訶',
+'评' => '評',
+'诅' => '詛',
+'识' => '識',
+'诇' => '詗',
+'诈' => '詐',
+'诉' => '訴',
+'诊' => '診',
+'诋' => '詆',
+'诌' => '謅',
+'词' => '詞',
+'诎' => '詘',
+'诏' => '詔',
+'诐' => '詖',
+'译' => '譯',
+'诒' => '詒',
+'诓' => '誆',
+'诔' => '誄',
+'试' => '試',
+'诖' => '詿',
+'诗' => '詩',
+'诘' => '詰',
+'诙' => '詼',
+'诚' => '誠',
+'诛' => '誅',
+'诜' => '詵',
+'话' => '話',
+'诞' => '誕',
+'诟' => '詬',
+'诠' => '詮',
+'诡' => '詭',
+'询' => '詢',
+'诣' => '詣',
+'诤' => '諍',
+'该' => '該',
+'详' => '詳',
+'诧' => '詫',
+'诨' => '諢',
+'诩' => '詡',
+'诪' => '譸',
+'诫' => '誡',
+'诬' => '誣',
+'语' => '語',
+'诮' => '誚',
+'误' => '誤',
+'诰' => '誥',
+'诱' => '誘',
+'诲' => '誨',
+'诳' => '誑',
+'说' => '說',
+'诵' => '誦',
+'诶' => '誒',
+'请' => '請',
+'诸' => '諸',
+'诹' => '諏',
+'诺' => '諾',
+'读' => '讀',
+'诼' => '諑',
+'诽' => '誹',
+'课' => '課',
+'诿' => '諉',
+'谀' => '諛',
+'谁' => '誰',
+'谂' => '諗',
+'调' => '調',
+'谄' => '諂',
+'谅' => '諒',
+'谆' => '諄',
+'谇' => '誶',
+'谈' => '談',
+'谊' => '誼',
+'谋' => '謀',
+'谌' => '諶',
+'谍' => '諜',
+'谎' => '謊',
+'谏' => '諫',
+'谐' => '諧',
+'谑' => '謔',
+'谒' => '謁',
+'谓' => '謂',
+'谔' => '諤',
+'谕' => '諭',
+'谖' => '諼',
+'谗' => '讒',
+'谘' => '諮',
+'谙' => '諳',
+'谚' => '諺',
+'谛' => '諦',
+'谜' => '謎',
+'谝' => '諞',
+'谞' => '諝',
+'谟' => '謨',
+'谠' => '讜',
+'谡' => '謖',
+'谢' => '謝',
+'谣' => '謠',
+'谤' => '謗',
+'谥' => '諡',
+'谦' => '謙',
+'谧' => '謐',
+'谨' => '謹',
+'谩' => '謾',
+'谪' => '謫',
+'谫' => '譾',
+'谬' => '謬',
+'谭' => '譚',
+'谮' => '譖',
+'谯' => '譙',
+'谰' => '讕',
+'谱' => '譜',
+'谲' => '譎',
+'谳' => '讞',
+'谴' => '譴',
+'谵' => '譫',
+'谶' => '讖',
+'豮' => '豶',
+'贝' => '貝',
+'贞' => '貞',
+'负' => '負',
+'贠' => '貟',
+'贡' => '貢',
+'财' => '財',
+'责' => '責',
+'贤' => '賢',
+'败' => '敗',
+'账' => '賬',
+'货' => '貨',
+'质' => '質',
+'贩' => '販',
+'贪' => '貪',
+'贫' => '貧',
+'贬' => '貶',
+'购' => '購',
+'贮' => '貯',
+'贯' => '貫',
+'贰' => '貳',
+'贱' => '賤',
+'贲' => '賁',
+'贳' => '貰',
+'贴' => '貼',
+'贵' => '貴',
+'贶' => '貺',
+'贷' => '貸',
+'贸' => '貿',
+'费' => '費',
+'贺' => '賀',
+'贻' => '貽',
+'贼' => '賊',
+'贽' => '贄',
+'贾' => '賈',
+'贿' => '賄',
+'赀' => '貲',
+'赁' => '賃',
+'赂' => '賂',
+'赃' => '贓',
+'资' => '資',
+'赅' => '賅',
+'赆' => '贐',
+'赇' => '賕',
+'赈' => '賑',
+'赉' => '賚',
+'赊' => '賒',
+'赋' => '賦',
+'赌' => '賭',
+'赍' => '齎',
+'赎' => '贖',
+'赏' => '賞',
+'赐' => '賜',
+'赑' => '贔',
+'赒' => '賙',
+'赓' => '賡',
+'赔' => '賠',
+'赕' => '賧',
+'赖' => '賴',
+'赗' => '賵',
+'赘' => '贅',
+'赙' => '賻',
+'赚' => '賺',
+'赛' => '賽',
+'赜' => '賾',
+'赝' => '贗',
+'赞' => '贊',
+'赟' => '贇',
+'赠' => '贈',
+'赡' => '贍',
+'赢' => '贏',
+'赣' => '贛',
+'赪' => '赬',
+'赵' => '趙',
+'赶' => '趕',
+'趋' => '趨',
+'趱' => '趲',
+'趸' => '躉',
+'跃' => '躍',
+'跄' => '蹌',
+'跞' => '躒',
+'践' => '踐',
+'跶' => '躂',
+'跷' => '蹺',
+'跸' => '蹕',
+'跹' => '躚',
+'跻' => '躋',
+'踊' => '踴',
+'踌' => '躊',
+'踪' => '蹤',
+'踬' => '躓',
+'踯' => '躑',
+'蹑' => '躡',
+'蹒' => '蹣',
+'蹰' => '躕',
+'蹿' => '躥',
+'躏' => '躪',
+'躜' => '躦',
+'躯' => '軀',
+'车' => '車',
+'轧' => '軋',
+'轨' => '軌',
+'轩' => '軒',
+'轪' => '軑',
+'轫' => '軔',
+'转' => '轉',
+'轭' => '軛',
+'轮' => '輪',
+'软' => '軟',
+'轰' => '轟',
+'轱' => '軲',
+'轲' => '軻',
+'轳' => '轤',
+'轴' => '軸',
+'轵' => '軹',
+'轶' => '軼',
+'轷' => '軤',
+'轸' => '軫',
+'轹' => '轢',
+'轺' => '軺',
+'轻' => '輕',
+'轼' => '軾',
+'载' => '載',
+'轾' => '輊',
+'轿' => '轎',
+'辀' => '輈',
+'辁' => '輇',
+'辂' => '輅',
+'较' => '較',
+'辄' => '輒',
+'辅' => '輔',
+'辆' => '輛',
+'辇' => '輦',
+'辈' => '輩',
+'辉' => '輝',
+'辊' => '輥',
+'辋' => '輞',
+'辌' => '輬',
+'辍' => '輟',
+'辎' => '輜',
+'辏' => '輳',
+'辐' => '輻',
+'辑' => '輯',
+'辒' => '轀',
+'输' => '輸',
+'辔' => '轡',
+'辕' => '轅',
+'辖' => '轄',
+'辗' => '輾',
+'辘' => '轆',
+'辙' => '轍',
+'辚' => '轔',
+'辞' => '辭',
+'辩' => '辯',
+'辫' => '辮',
+'边' => '邊',
+'辽' => '遼',
+'达' => '達',
+'迁' => '遷',
+'过' => '過',
+'迈' => '邁',
+'运' => '運',
+'还' => '還',
+'这' => '這',
+'进' => '進',
+'远' => '遠',
+'违' => '違',
+'连' => '連',
+'迟' => '遲',
+'迩' => '邇',
+'迳' => '逕',
+'迹' => '跡',
+'适' => '適',
+'选' => '選',
+'逊' => '遜',
+'递' => '遞',
+'逦' => '邐',
+'逻' => '邏',
+'遗' => '遺',
+'遥' => '遙',
+'邓' => '鄧',
+'邝' => '鄺',
+'邬' => '鄔',
+'邮' => '郵',
+'邹' => '鄒',
+'邺' => '鄴',
+'邻' => '鄰',
+'郏' => '郟',
+'郐' => '鄶',
+'郑' => '鄭',
+'郓' => '鄆',
+'郦' => '酈',
+'郧' => '鄖',
+'郸' => '鄲',
+'酂' => '酇',
+'酝' => '醞',
+'酦' => '醱',
+'酱' => '醬',
+'酽' => '釅',
+'酾' => '釃',
+'酿' => '釀',
+'释' => '釋',
+'鉴' => '鑒',
+'銮' => '鑾',
+'錾' => '鏨',
+'钅' => '釒',
+'钆' => '釓',
+'钇' => '釔',
+'针' => '針',
+'钉' => '釘',
+'钊' => '釗',
+'钋' => '釙',
+'钌' => '釕',
+'钍' => '釷',
+'钎' => '釺',
+'钏' => '釧',
+'钐' => '釤',
+'钑' => '鈒',
+'钒' => '釩',
+'钓' => '釣',
+'钔' => '鍆',
+'钕' => '釹',
+'钖' => '鍚',
+'钗' => '釵',
+'钘' => '鈃',
+'钙' => '鈣',
+'钚' => '鈈',
+'钛' => '鈦',
+'钜' => '鉅',
+'钝' => '鈍',
+'钞' => '鈔',
+'钟' => '鍾',
+'钠' => '鈉',
+'钡' => '鋇',
+'钢' => '鋼',
+'钣' => '鈑',
+'钤' => '鈐',
+'钥' => '鑰',
+'钦' => '欽',
+'钧' => '鈞',
+'钨' => '鎢',
+'钩' => '鈎',
+'钪' => '鈧',
+'钫' => '鈁',
+'钬' => '鈥',
+'钭' => '鈄',
+'钮' => '鈕',
+'钯' => '鈀',
+'钰' => '鈺',
+'钱' => '錢',
+'钲' => '鉦',
+'钳' => '鉗',
+'钴' => '鈷',
+'钵' => '缽',
+'钶' => '鈳',
+'钷' => '鉕',
+'钸' => '鈽',
+'钹' => '鈸',
+'钺' => '鉞',
+'钻' => '鑽',
+'钼' => '鉬',
+'钽' => '鉭',
+'钾' => '鉀',
+'钿' => '鈿',
+'铀' => '鈾',
+'铁' => '鐵',
+'铂' => '鉑',
+'铃' => '鈴',
+'铄' => '鑠',
+'铅' => '鉛',
+'铆' => '鉚',
+'铇' => '鉋',
+'铈' => '鈰',
+'铉' => '鉉',
+'铊' => '鉈',
+'铋' => '鉍',
+'铌' => '鈮',
+'铍' => '鈹',
+'铎' => '鐸',
+'铏' => '鉶',
+'铐' => '銬',
+'铑' => '銠',
+'铒' => '鉺',
+'铓' => '鋩',
+'铔' => '錏',
+'铕' => '銪',
+'铖' => '鋮',
+'铗' => '鋏',
+'铘' => '鋣',
+'铙' => '鐃',
+'铚' => '銍',
+'铛' => '鐺',
+'铜' => '銅',
+'铝' => '鋁',
+'铞' => '銱',
+'铟' => '銦',
+'铠' => '鎧',
+'铡' => '鍘',
+'铢' => '銖',
+'铣' => '銑',
+'铤' => '鋌',
+'铥' => '銩',
+'铦' => '銛',
+'铧' => '鏵',
+'铨' => '銓',
+'铩' => '鎩',
+'铪' => '鉿',
+'铫' => '銚',
+'铬' => '鉻',
+'铭' => '銘',
+'铮' => '錚',
+'铯' => '銫',
+'铰' => '鉸',
+'铱' => '銥',
+'铲' => '鏟',
+'铳' => '銃',
+'铴' => '鐋',
+'铵' => '銨',
+'银' => '銀',
+'铷' => '銣',
+'铸' => '鑄',
+'铹' => '鐒',
+'铺' => '鋪',
+'铻' => '鋙',
+'铼' => '錸',
+'铽' => '鋱',
+'链' => '鏈',
+'铿' => '鏗',
+'销' => '銷',
+'锁' => '鎖',
+'锂' => '鋰',
+'锃' => '鋥',
+'锄' => '鋤',
+'锅' => '鍋',
+'锆' => '鋯',
+'锇' => '鋨',
+'锈' => '銹',
+'锉' => '銼',
+'锊' => '鋝',
+'锋' => '鋒',
+'锌' => '鋅',
+'锍' => '鋶',
+'锎' => '鐦',
+'锏' => '鐧',
+'锐' => '銳',
+'锑' => '銻',
+'锒' => '鋃',
+'锓' => '鋟',
+'锔' => '鋦',
+'锕' => '錒',
+'锖' => '錆',
+'锗' => '鍺',
+'锘' => '鍩',
+'错' => '錯',
+'锚' => '錨',
+'锛' => '錛',
+'锜' => '錡',
+'锝' => '鍀',
+'锞' => '錁',
+'锟' => '錕',
+'锠' => '錩',
+'锡' => '錫',
+'锢' => '錮',
+'锣' => '鑼',
+'锤' => '錘',
+'锥' => '錐',
+'锦' => '錦',
+'锧' => '鑕',
+'锨' => '杴',
+'锩' => '錈',
+'锪' => '鍃',
+'锫' => '錇',
+'锬' => '錟',
+'锭' => '錠',
+'键' => '鍵',
+'锯' => '鋸',
+'锰' => '錳',
+'锱' => '錙',
+'锲' => '鍥',
+'锳' => '鍈',
+'锴' => '鍇',
+'锵' => '鏘',
+'锶' => '鍶',
+'锷' => '鍔',
+'锸' => '鍤',
+'锹' => '鍬',
+'锺' => '鍾',
+'锻' => '鍛',
+'锼' => '鎪',
+'锽' => '鍠',
+'锾' => '鍰',
+'锿' => '鎄',
+'镀' => '鍍',
+'镁' => '鎂',
+'镂' => '鏤',
+'镃' => '鎡',
+'镄' => '鐨',
+'镅' => '鎇',
+'镆' => '鏌',
+'镇' => '鎮',
+'镈' => '鎛',
+'镉' => '鎘',
+'镊' => '鑷',
+'镋' => '钂',
+'镌' => '鐫',
+'镍' => '鎳',
+'镎' => '鎿',
+'镏' => '鎦',
+'镐' => '鎬',
+'镑' => '鎊',
+'镒' => '鎰',
+'镓' => '鎵',
+'镔' => '鑌',
+'镕' => '鎔',
+'镖' => '鏢',
+'镗' => '鏜',
+'镘' => '鏝',
+'镙' => '鏍',
+'镚' => '鏰',
+'镛' => '鏞',
+'镜' => '鏡',
+'镝' => '鏑',
+'镞' => '鏃',
+'镟' => '鏇',
+'镠' => '鏐',
+'镡' => '鐔',
+'镢' => '钁',
+'镣' => '鐐',
+'镤' => '鏷',
+'镥' => '鑥',
+'镦' => '鐓',
+'镧' => '鑭',
+'镨' => '鐠',
+'镩' => '鑹',
+'镪' => '鏹',
+'镫' => '鐙',
+'镬' => '鑊',
+'镭' => '鐳',
+'镮' => '鐶',
+'镯' => '鐲',
+'镰' => '鐮',
+'镱' => '鐿',
+'镲' => '鑔',
+'镳' => '鑣',
+'镴' => '鑞',
+'镵' => '鑱',
+'镶' => '鑲',
+'长' => '長',
+'门' => '門',
+'闩' => '閂',
+'闪' => '閃',
+'闫' => '閆',
+'闬' => '閈',
+'闭' => '閉',
+'问' => '問',
+'闯' => '闖',
+'闰' => '閏',
+'闱' => '闈',
+'闲' => '閒',
+'闳' => '閎',
+'间' => '間',
+'闵' => '閔',
+'闶' => '閌',
+'闷' => '悶',
+'闸' => '閘',
+'闹' => '鬧',
+'闺' => '閨',
+'闻' => '聞',
+'闼' => '闥',
+'闽' => '閩',
+'闾' => '閭',
+'闿' => '闓',
+'阀' => '閥',
+'阁' => '閣',
+'阂' => '閡',
+'阃' => '閫',
+'阄' => '鬮',
+'阅' => '閱',
+'阆' => '閬',
+'阇' => '闍',
+'阈' => '閾',
+'阉' => '閹',
+'阊' => '閶',
+'阋' => '鬩',
+'阌' => '閿',
+'阍' => '閽',
+'阎' => '閻',
+'阏' => '閼',
+'阐' => '闡',
+'阑' => '闌',
+'阒' => '闃',
+'阓' => '闠',
+'阔' => '闊',
+'阕' => '闋',
+'阖' => '闔',
+'阗' => '闐',
+'阘' => '闒',
+'阙' => '闕',
+'阚' => '闞',
+'阛' => '闤',
+'队' => '隊',
+'阳' => '陽',
+'阴' => '陰',
+'阵' => '陣',
+'阶' => '階',
+'际' => '際',
+'陆' => '陸',
+'陇' => '隴',
+'陈' => '陳',
+'陉' => '陘',
+'陕' => '陝',
+'陧' => '隉',
+'陨' => '隕',
+'险' => '險',
+'随' => '隨',
+'隐' => '隱',
+'隶' => '隸',
+'隽' => '雋',
+'难' => '難',
+'雏' => '雛',
+'雠' => '讎',
+'雳' => '靂',
+'雾' => '霧',
+'霁' => '霽',
+'霡' => '霢',
+'霭' => '靄',
+'靓' => '靚',
+'静' => '靜',
+'靥' => '靨',
+'鞑' => '韃',
+'鞒' => '鞽',
+'鞯' => '韉',
+'韦' => '韋',
+'韧' => '韌',
+'韨' => '韍',
+'韩' => '韓',
+'韪' => '韙',
+'韫' => '韞',
+'韬' => '韜',
+'韵' => '韻',
+'页' => '頁',
+'顶' => '頂',
+'顷' => '頃',
+'顸' => '頇',
+'项' => '項',
+'顺' => '順',
+'须' => '須',
+'顼' => '頊',
+'顽' => '頑',
+'顾' => '顧',
+'顿' => '頓',
+'颀' => '頎',
+'颁' => '頒',
+'颂' => '頌',
+'颃' => '頏',
+'预' => '預',
+'颅' => '顱',
+'领' => '領',
+'颇' => '頗',
+'颈' => '頸',
+'颉' => '頡',
+'颊' => '頰',
+'颋' => '頲',
+'颌' => '頜',
+'颍' => '潁',
+'颎' => '熲',
+'颏' => '頦',
+'颐' => '頤',
+'频' => '頻',
+'颒' => '頮',
+'颓' => '頹',
+'颔' => '頷',
+'颕' => '頴',
+'颖' => '穎',
+'颗' => '顆',
+'题' => '題',
+'颙' => '顒',
+'颚' => '顎',
+'颛' => '顓',
+'颜' => '顏',
+'额' => '額',
+'颞' => '顳',
+'颟' => '顢',
+'颠' => '顛',
+'颡' => '顙',
+'颢' => '顥',
+'颣' => '纇',
+'颤' => '顫',
+'颥' => '顬',
+'颦' => '顰',
+'颧' => '顴',
+'风' => '風',
+'飏' => '颺',
+'飐' => '颭',
+'飑' => '颮',
+'飒' => '颯',
+'飓' => '颶',
+'飔' => '颸',
+'飕' => '颼',
+'飖' => '颻',
+'飗' => '飀',
+'飘' => '飄',
+'飙' => '飆',
+'飚' => '飈',
+'飞' => '飛',
+'飨' => '饗',
+'餍' => '饜',
+'饣' => '飠',
+'饤' => '飣',
+'饥' => '飢',
+'饦' => '飥',
+'饧' => '餳',
+'饨' => '飩',
+'饩' => '餼',
+'饪' => '飪',
+'饫' => '飫',
+'饬' => '飭',
+'饭' => '飯',
+'饮' => '飲',
+'饯' => '餞',
+'饰' => '飾',
+'饱' => '飽',
+'饲' => '飼',
+'饳' => '飿',
+'饴' => '飴',
+'饵' => '餌',
+'饶' => '饒',
+'饷' => '餉',
+'饸' => '餄',
+'饹' => '餎',
+'饺' => '餃',
+'饻' => '餏',
+'饼' => '餅',
+'饽' => '餑',
+'饾' => '餖',
+'饿' => '餓',
+'馀' => '餘',
+'馁' => '餒',
+'馂' => '餕',
+'馃' => '餜',
+'馄' => '餛',
+'馅' => '餡',
+'馆' => '館',
+'馇' => '餷',
+'馈' => '饋',
+'馉' => '餶',
+'馊' => '餿',
+'馋' => '饞',
+'馌' => '饁',
+'馍' => '饃',
+'馎' => '餺',
+'馏' => '餾',
+'馐' => '饈',
+'馑' => '饉',
+'馒' => '饅',
+'馓' => '饊',
+'馔' => '饌',
+'馕' => '饢',
+'马' => '馬',
+'驭' => '馭',
+'驮' => '馱',
+'驯' => '馴',
+'驰' => '馳',
+'驱' => '驅',
+'驲' => '馹',
+'驳' => '駁',
+'驴' => '驢',
+'驵' => '駔',
+'驶' => '駛',
+'驷' => '駟',
+'驸' => '駙',
+'驹' => '駒',
+'驺' => '騶',
+'驻' => '駐',
+'驼' => '駝',
+'驽' => '駑',
+'驾' => '駕',
+'驿' => '驛',
+'骀' => '駘',
+'骁' => '驍',
+'骂' => '罵',
+'骃' => '駰',
+'骄' => '驕',
+'骅' => '驊',
+'骆' => '駱',
+'骇' => '駭',
+'骈' => '駢',
+'骉' => '驫',
+'骊' => '驪',
+'骋' => '騁',
+'验' => '驗',
+'骍' => '騂',
+'骎' => '駸',
+'骏' => '駿',
+'骐' => '騏',
+'骑' => '騎',
+'骒' => '騍',
+'骓' => '騅',
+'骔' => '騌',
+'骕' => '驌',
+'骖' => '驂',
+'骗' => '騙',
+'骘' => '騭',
+'骙' => '騤',
+'骚' => '騷',
+'骛' => '騖',
+'骜' => '驁',
+'骝' => '騮',
+'骞' => '騫',
+'骟' => '騸',
+'骠' => '驃',
+'骡' => '騾',
+'骢' => '驄',
+'骣' => '驏',
+'骤' => '驟',
+'骥' => '驥',
+'骦' => '驦',
+'骧' => '驤',
+'髅' => '髏',
+'髋' => '髖',
+'髌' => '髕',
+'鬓' => '鬢',
+'鬶' => '鬹',
+'魇' => '魘',
+'魉' => '魎',
+'鱼' => '魚',
+'鱽' => '魛',
+'鱾' => '魢',
+'鱿' => '魷',
+'鲀' => '魨',
+'鲁' => '魯',
+'鲂' => '魴',
+'鲃' => '䰾',
+'鲄' => '魺',
+'鲅' => '鮁',
+'鲆' => '鮃',
+'鲇' => '鯰',
+'鲈' => '鱸',
+'鲉' => '鮋',
+'鲊' => '鮓',
+'鲋' => '鮒',
+'鲌' => '鮊',
+'鲍' => '鮑',
+'鲎' => '鱟',
+'鲏' => '鮍',
+'鲐' => '鮐',
+'鲑' => '鮭',
+'鲒' => '鮚',
+'鲓' => '鮳',
+'鲔' => '鮪',
+'鲕' => '鮞',
+'鲖' => '鮦',
+'鲗' => '鰂',
+'鲘' => '鮜',
+'鲙' => '鱠',
+'鲚' => '鱭',
+'鲛' => '鮫',
+'鲜' => '鮮',
+'鲝' => '鮺',
+'鲞' => '鯗',
+'鲟' => '鱘',
+'鲠' => '鯁',
+'鲡' => '鱺',
+'鲢' => '鰱',
+'鲣' => '鰹',
+'鲤' => '鯉',
+'鲥' => '鰣',
+'鲦' => '鰷',
+'鲧' => '鯀',
+'鲨' => '鯊',
+'鲩' => '鯇',
+'鲪' => '鮶',
+'鲫' => '鯽',
+'鲬' => '鯒',
+'鲭' => '鯖',
+'鲮' => '鯪',
+'鲯' => '鯕',
+'鲰' => '鯫',
+'鲱' => '鯡',
+'鲲' => '鯤',
+'鲳' => '鯧',
+'鲴' => '鯝',
+'鲵' => '鯢',
+'鲷' => '鯛',
+'鲸' => '鯨',
+'鲹' => '鰺',
+'鲺' => '鯴',
+'鲻' => '鯔',
+'鲼' => '鱝',
+'鲽' => '鰈',
+'鲾' => '鰏',
+'鲿' => '鱨',
+'鳀' => '鯷',
+'鳁' => '鰮',
+'鳂' => '鰃',
+'鳃' => '鰓',
+'鳄' => '鱷',
+'鳅' => '鰍',
+'鳆' => '鰒',
+'鳇' => '鰉',
+'鳈' => '鰁',
+'鳉' => '鱂',
+'鳊' => '鯿',
+'鳋' => '鰠',
+'鳌' => '鰲',
+'鳍' => '鰭',
+'鳎' => '鰨',
+'鳏' => '鰥',
+'鳐' => '鰩',
+'鳑' => '鰟',
+'鳒' => '鰜',
+'鳓' => '鰳',
+'鳔' => '鰾',
+'鳕' => '鱈',
+'鳖' => '鱉',
+'鳗' => '鰻',
+'鳘' => '鰵',
+'鳙' => '鱅',
+'鳚' => '䲁',
+'鳛' => '鰼',
+'鳜' => '鱖',
+'鳝' => '鱔',
+'鳞' => '鱗',
+'鳟' => '鱒',
+'鳠' => '鱯',
+'鳡' => '鱤',
+'鳢' => '鱧',
+'鳣' => '鱣',
+'鳤' => '䲘',
+'鸟' => '鳥',
+'鸠' => '鳩',
+'鸡' => '雞',
+'鸢' => '鳶',
+'鸣' => '鳴',
+'鸤' => '鳲',
+'鸥' => '鷗',
+'鸦' => '鴉',
+'鸧' => '鶬',
+'鸨' => '鴇',
+'鸩' => '鴆',
+'鸪' => '鴣',
+'鸫' => '鶇',
+'鸬' => '鸕',
+'鸭' => '鴨',
+'鸮' => '鴞',
+'鸯' => '鴦',
+'鸰' => '鴒',
+'鸱' => '鴟',
+'鸲' => '鴝',
+'鸳' => '鴛',
+'鸴' => '鷽',
+'鸵' => '鴕',
+'鸶' => '鷥',
+'鸷' => '鷙',
+'鸸' => '鴯',
+'鸹' => '鴰',
+'鸺' => '鵂',
+'鸻' => '鴴',
+'鸼' => '鵃',
+'鸽' => '鴿',
+'鸾' => '鸞',
+'鸿' => '鴻',
+'鹀' => '鵐',
+'鹁' => '鵓',
+'鹂' => '鸝',
+'鹃' => '鵑',
+'鹄' => '鵠',
+'鹅' => '鵝',
+'鹆' => '鵒',
+'鹇' => '鷳',
+'鹈' => '鵜',
+'鹉' => '鵡',
+'鹊' => '鵲',
+'鹋' => '鶓',
+'鹌' => '鵪',
+'鹍' => '鵾',
+'鹎' => '鵯',
+'鹏' => '鵬',
+'鹐' => '鵮',
+'鹑' => '鶉',
+'鹒' => '鶊',
+'鹓' => '鵷',
+'鹔' => '鷫',
+'鹕' => '鶘',
+'鹖' => '鶡',
+'鹗' => '鶚',
+'鹘' => '鶻',
+'鹙' => '鶖',
+'鹚' => '鶿',
+'鹛' => '鶥',
+'鹜' => '鶩',
+'鹝' => '鷊',
+'鹞' => '鷂',
+'鹟' => '鶲',
+'鹠' => '鶹',
+'鹡' => '鶺',
+'鹢' => '鷁',
+'鹣' => '鶼',
+'鹤' => '鶴',
+'鹥' => '鷖',
+'鹦' => '鸚',
+'鹧' => '鷓',
+'鹨' => '鷚',
+'鹩' => '鷯',
+'鹪' => '鷦',
+'鹫' => '鷲',
+'鹬' => '鷸',
+'鹭' => '鷺',
+'鹮' => '䴉',
+'鹯' => '鸇',
+'鹰' => '鷹',
+'鹱' => '鸌',
+'鹲' => '鸏',
+'鹳' => '鸛',
+'鹴' => '鸘',
+'鹾' => '鹺',
+'麦' => '麥',
+'麸' => '麩',
+'麹' => '麴',
+'黄' => '黃',
+'黉' => '黌',
+'黡' => '黶',
+'黩' => '黷',
+'黪' => '黲',
+'黾' => '黽',
+'鼋' => '黿',
+'鼍' => '鼉',
+'鼗' => '鞀',
+'鼹' => '鼴',
+'齐' => '齊',
+'齑' => '齏',
+'齿' => '齒',
+'龀' => '齔',
+'龁' => '齕',
+'龂' => '齗',
+'龃' => '齟',
+'龄' => '齡',
+'龅' => '齙',
+'龆' => '齠',
+'龇' => '齜',
+'龈' => '齦',
+'龉' => '齬',
+'龊' => '齪',
+'龋' => '齲',
+'龌' => '齷',
+'龙' => '龍',
+'龚' => '龔',
+'龛' => '龕',
+'龟' => '龜',
+'𠆲' => '儣',
+'𠆿' => '𠌥',
+'𠉂' => '㒓',
+'𠉗' => '𠏢',
+'𠚳' => '𠠎',
+'𠛅' => '剾',
+'𠛆' => '𠞆',
+'𠯟' => '哯',
+'𠯠' => '噅',
+'𠲥' => '𡅏',
+'𠴢' => '𡄔',
+'𠵸' => '𡄣',
+'𠵾' => '㗲',
+'𡋀' => '𡓾',
+'𡋗' => '𡑭',
+'𡒄' => '壈',
+'𡝠' => '㜷',
+'𡞱' => '㜢',
+'𡭜' => '𡮉',
+'𡭬' => '𡮣',
+'𡶴' => '嵼',
+'𢋈' => '㢝',
+'𢘝' => '𢣚',
+'𢘞' => '𢣭',
+'𢙓' => '懀',
+'𢛯' => '㦎',
+'𢫊' => '𢷮',
+'𢫞' => '𢶫',
+'𢫬' => '摋',
+'𢬦' => '𢹿',
+'𢭏' => '擣',
+'𢽾' => '斅',
+'𣆐' => '曥',
+'𣍨' => '𦢈',
+'𣍯' => '腪',
+'𣍰' => '脥',
+'𣎑' => '臗',
+'𣐤' => '欍',
+'𣑶' => '𣠲',
+'𣗋' => '欓',
+'𣘓' => '𣞻',
+'𣘴' => '檭',
+'𣘷' => '𣝕',
+'𣭤' => '𣯴',
+'𣶩' => '澅',
+'𣶫' => '𣿉',
+'𣸣' => '濆',
+'𣺼' => '灙',
+'𣺽' => '𤁣',
+'𣽷' => '瀃',
+'𤆡' => '熓',
+'𤇃' => '爄',
+'𤇄' => '熌',
+'𤈶' => '熉',
+'𤈷' => '㷿',
+'𤊀' => '𤒎',
+'𤋏' => '熡',
+'𤞤' => '玁',
+'𤠋' => '㺏',
+'𤦀' => '瓕',
+'𤳄' => '𤳸',
+'𤶧' => '𤸫',
+'𤽯' => '㿧',
+'𤾀' => '皟',
+'𥅘' => '𥌃',
+'𥅴' => '䀹',
+'𥆧' => '瞤',
+'𥇢' => '䁪',
+'𥐟' => '礒',
+'𥐯' => '𥖅',
+'𥐰' => '𥕥',
+'𥐻' => '碙',
+'𥧂' => '𥨐',
+'𥬀' => '䉙',
+'𥬞' => '籋',
+'𥬠' => '篘',
+'𥭉' => '𥵊',
+'𥮋' => '𥸠',
+'𥮜' => '䉲',
+'𥱔' => '𥵃',
+'𥹥' => '𥼽',
+'𥺅' => '䊭',
+'𥺇' => '𥽖',
+'𦈈' => '𥿊',
+'𦈉' => '緷',
+'𦈋' => '綇',
+'𦈌' => '綀',
+'𦈎' => '繟',
+'𦈏' => '緍',
+'𦈐' => '縺',
+'𦈑' => '緸',
+'𦈒' => '𦂅',
+'𦈓' => '䋿',
+'𦈔' => '縎',
+'𦈕' => '緰',
+'𦈖' => '䌈',
+'𦈗' => '𦃄',
+'𦈘' => '䌋',
+'𦈙' => '䌰',
+'𦈚' => '縬',
+'𦈛' => '繓',
+'𦈜' => '䌖',
+'𦈝' => '繏',
+'𦈞' => '䌟',
+'𦈟' => '䌝',
+'𦈠' => '䌥',
+'𦈡' => '繻',
+'𦛨' => '朥',
+'𦝼' => '膢',
+'𦟗' => '𦣎',
+'𦨩' => '𦪽',
+'𦰴' => '䕳',
+'𧉞' => '䗿',
+'𧒭' => '𧔥',
+'𧮪' => '詀',
+'𧳕' => '𧳟',
+'𧹑' => '䞈',
+'𧹓' => '𧶔',
+'𧹕' => '䝻',
+'𧹖' => '賟',
+'𧹗' => '贃',
+'𧿈' => '𨇁',
+'𨀱' => '𨄣',
+'𨁴' => '𨅍',
+'𨂺' => '𨈊',
+'𨄄' => '𨈌',
+'𨅫' => '𨇞',
+'𨅬' => '躝',
+'𨉗' => '軉',
+'𨐅' => '軗',
+'𨐆' => '𨊻',
+'𨐇' => '𨏠',
+'𨐈' => '輄',
+'𨐉' => '𨎮',
+'𨐊' => '𨏥',
+'𨑹' => '䢨',
+'𨤰' => '𨤻',
+'𨰾' => '鎷',
+'𨰿' => '釳',
+'𨱀' => '𨥛',
+'𨱁' => '鈠',
+'𨱂' => '鈋',
+'𨱃' => '鈲',
+'𨱄' => '鈯',
+'𨱅' => '鉁',
+'𨱆' => '龯',
+'𨱇' => '銶',
+'𨱈' => '鋉',
+'𨱉' => '鍄',
+'𨱊' => '𨧱',
+'𨱋' => '錂',
+'𨱌' => '鏆',
+'𨱍' => '鎯',
+'𨱎' => '鍮',
+'𨱏' => '鎝',
+'𨱐' => '𨫒',
+'𨱑' => '鐄',
+'𨱒' => '鏉',
+'𨱓' => '鐎',
+'𨱔' => '鐏',
+'𨱕' => '𨮂',
+'𨱖' => '䥩',
+'𨷿' => '䦳',
+'𨸀' => '𨳕',
+'𨸁' => '𨳑',
+'𨸂' => '閍',
+'𨸃' => '閐',
+'𨸄' => '䦘',
+'𨸅' => '𨴗',
+'𨸆' => '𨵩',
+'𨸇' => '𨵸',
+'𨸉' => '𨶀',
+'𨸊' => '𨶏',
+'𨸋' => '𨶲',
+'𨸌' => '𨶮',
+'𨸎' => '𨷲',
+'𨸘' => '𨽏',
+'𨸟' => '䧢',
+'𩏼' => '䪏',
+'𩏽' => '𩏪',
+'𩏾' => '𩎢',
+'𩏿' => '䪘',
+'𩐀' => '䪗',
+'𩖕' => '𩓣',
+'𩖖' => '顃',
+'𩖗' => '䫴',
+'𩙥' => '颰',
+'𩙦' => '𩗀',
+'𩙧' => '𩗡',
+'𩙨' => '𩘹',
+'𩙩' => '𩘀',
+'𩙪' => '颷',
+'𩙫' => '颾',
+'𩙬' => '𩘺',
+'𩙭' => '𩘝',
+'𩙮' => '䬘',
+'𩙯' => '䬝',
+'𩙰' => '𩙈',
+'𩟿' => '𩚛',
+'𩠀' => '𩚥',
+'𩠁' => '𩚵',
+'𩠂' => '𩛆',
+'𩠃' => '𩛩',
+'𩠅' => '𩟐',
+'𩠆' => '𩜦',
+'𩠇' => '䭀',
+'𩠈' => '䭃',
+'𩠉' => '𩜇',
+'𩠊' => '𩜵',
+'𩠋' => '𩝔',
+'𩠌' => '餸',
+'𩠎' => '𩞄',
+'𩠏' => '𩞦',
+'𩠠' => '𩠴',
+'𩧦' => '𩡺',
+'𩧨' => '駎',
+'𩧩' => '𩤊',
+'𩧪' => '䮾',
+'𩧫' => '駚',
+'𩧬' => '𩢡',
+'𩧭' => '䭿',
+'𩧮' => '𩢾',
+'𩧯' => '驋',
+'𩧰' => '䮝',
+'𩧱' => '𩥉',
+'𩧲' => '駧',
+'𩧳' => '𩢸',
+'𩧴' => '駩',
+'𩧵' => '𩢴',
+'𩧶' => '𩣏',
+'𩧺' => '駶',
+'𩧻' => '𩣵',
+'𩧼' => '𩣺',
+'𩧿' => '䮠',
+'𩨀' => '騔',
+'𩨁' => '䮞',
+'𩨃' => '騝',
+'𩨄' => '騪',
+'𩨅' => '𩤸',
+'𩨆' => '𩤙',
+'𩨇' => '䮫',
+'𩨈' => '騟',
+'𩨉' => '𩤲',
+'𩨊' => '騚',
+'𩨋' => '𩥄',
+'𩨌' => '𩥑',
+'𩨍' => '𩥇',
+'𩨎' => '龭',
+'𩨏' => '䮳',
+'𩨐' => '𩧆',
+'𩬣' => '𩭙',
+'𩬤' => '𩰀',
+'𩯒' => '𩯳',
+'𩲒' => '𩳤',
+'𩽹' => '魥',
+'𩽺' => '𩵩',
+'𩽻' => '𩵹',
+'𩽼' => '鯶',
+'𩽽' => '𩶱',
+'𩽾' => '鮟',
+'𩽿' => '𩶰',
+'𩾁' => '鯄',
+'𩾂' => '䲖',
+'𩾃' => '鮸',
+'𩾄' => '𩷰',
+'𩾅' => '𩸃',
+'𩾆' => '𩸦',
+'𩾇' => '鯱',
+'𩾈' => '䱙',
+'𩾊' => '䱬',
+'𩾋' => '䱰',
+'𩾌' => '鱇',
+'𩾎' => '𩽇',
+'𪉂' => '䲰',
+'𪉃' => '鳼',
+'𪉄' => '𩿪',
+'𪉅' => '𪀦',
+'𪉆' => '鴲',
+'𪉈' => '鴜',
+'𪉉' => '𪁈',
+'𪉊' => '鷨',
+'𪉋' => '𪀾',
+'𪉌' => '𪁖',
+'𪉍' => '鵚',
+'𪉎' => '𪂆',
+'𪉏' => '𪃏',
+'𪉐' => '𪃍',
+'𪉑' => '鷔',
+'𪉒' => '𪄕',
+'𪉓' => '𪈼',
+'𪉔' => '𪄆',
+'𪉕' => '𪇳',
+'𪎈' => '䴬',
+'𪎉' => '麲',
+'𪎊' => '麨',
+'𪎋' => '䴴',
+'𪎌' => '麳',
+'𪎍' => '𪋿',
+'𪔭' => '𪔵',
+'𪚏' => '𪘀',
+'𪚐' => '𪘯',
+'𪞝' => '凙',
+'𪡏' => '嗹',
+'𪢮' => '圞',
+'𪨊' => '㞞',
+'𪨗' => '屩',
+'𪻐' => '瑽',
+'𪾢' => '睍',
+'𫁡' => '鴗',
+'𫂈' => '䉬',
+'𫄨' => '絺',
+'𫄸' => '纁',
+'𫌀' => '襀',
+'𫌨' => '覼',
+'𫍙' => '訑',
+'𫍢' => '譊',
+'𫍰' => '諰',
+'𫍲' => '謏',
+'𫏋' => '蹻',
+'𫐄' => '軏',
+'𫐆' => '轣',
+'𫐉' => '軨',
+'𫐐' => '輗',
+'𫐓' => '輮',
+'𫓧' => '鈇',
+'𫓩' => '鏦',
+'𫔎' => '鐍',
+'𫖸' => '願',
+'𫗠' => '餦',
+'𫗦' => '餔',
+'𫗧' => '餗',
+'𫗮' => '餭',
+'𫗴' => '饘',
+'𫘝' => '駃',
+'𫘣' => '駻',
+'𫘤' => '騃',
+'𫘨' => '騠',
+'𫚈' => '鱮',
+'𫚉' => '魟',
+'𫚒' => '鮄',
+'𫚔' => '鮰',
+'𫚕' => '鰤',
+'𫚙' => '鯆',
+'𫛛' => '鳷',
+'𫛞' => '鴃',
+'𫛢' => '鸋',
+'𫛶' => '鶒',
+'𫛸' => '鶗',
+'0出现' => '0出現',
+'0出現' => '0出現',
+'0出線' => '0出線',
+'0出线' => '0出線',
+'0只支持' => '0只支持',
+'0只支援' => '0只支援',
+'0周后' => '0周後',
+'0天后' => '0天後',
+'0年' => '0年',
+'0只' => '0隻',
+'0余' => '0餘',
+'0出' => '0齣',
+'1只支持' => '1只支持',
+'1只支援' => '1只支援',
+'1周后' => '1周後',
+'1天后' => '1天後',
+'1年' => '1年',
+'1只' => '1隻',
+'1余' => '1餘',
+'2只支持' => '2只支持',
+'2只支援' => '2只支援',
+'2周后' => '2周後',
+'2天后' => '2天後',
+'2年' => '2年',
+'2只' => '2隻',
+'2余' => '2餘',
+'3只支持' => '3只支持',
+'3只支援' => '3只支援',
+'3周后' => '3周後',
+'3天后' => '3天後',
+'3年' => '3年',
+'3只' => '3隻',
+'3余' => '3餘',
+'4只支持' => '4只支持',
+'4只支援' => '4只支援',
+'4周后' => '4周後',
+'4天后' => '4天後',
+'4年' => '4年',
+'4只' => '4隻',
+'4余' => '4餘',
+'5只支持' => '5只支持',
+'5只支援' => '5只支援',
+'5周后' => '5周後',
+'5天后' => '5天後',
+'5年' => '5年',
+'5只' => '5隻',
+'5余' => '5餘',
+'6只支持' => '6只支持',
+'6只支援' => '6只支援',
+'6周后' => '6周後',
+'6天后' => '6天後',
+'6年' => '6年',
+'6只' => '6隻',
+'6余' => '6餘',
+'7只支持' => '7只支持',
+'7只支援' => '7只支援',
+'7周后' => '7周後',
+'7天后' => '7天後',
+'7年' => '7年',
+'7只' => '7隻',
+'7余' => '7餘',
+'8只支持' => '8只支持',
+'8只支援' => '8只支援',
+'8周后' => '8周後',
+'8天后' => '8天後',
+'8年' => '8年',
+'8只' => '8隻',
+'8余' => '8餘',
+'9只支持' => '9只支持',
+'9只支援' => '9只支援',
+'9周后' => '9周後',
+'9天后' => '9天後',
+'9年' => '9年',
+'9只' => '9隻',
+'9余' => '9餘',
+'·范' => '·范',
+'’s' => '’s',
+'、面点' => '、麵點',
+'。个中' => '。箇中',
+'〇周后' => '〇周後',
+'〇年' => '〇年',
+'〇只' => '〇隻',
+'〇余' => '〇餘',
+'“' => '「',
+'”' => '」',
+'‘' => '『',
+'’' => '』',
+'一干二净' => '一乾二淨',
+'一伙人' => '一伙人',
+'一伙头' => '一伙頭',
+'一伙食' => '一伙食',
+'一并' => '一併',
+'一个' => '一個',
+'一个准' => '一個準',
+'一划' => '一划',
+'一半只' => '一半只',
+'一吊钱' => '一吊錢',
+'一周后' => '一周後',
+'一地里' => '一地裡',
+'一伙' => '一夥',
+'一天后' => '一天後',
+'一天钟' => '一天鐘',
+'一干人' => '一干人',
+'一干家中' => '一干家中',
+'一干弟兄' => '一干弟兄',
+'一干弟子' => '一干弟子',
+'一干部下' => '一干部下',
+'一年' => '一年',
+'一年里' => '一年裡',
+'一别头' => '一彆頭',
+'一斗斗' => '一斗斗',
+'一树百获' => '一樹百穫',
+'一准' => '一準',
+'一争两丑' => '一爭兩醜',
+'一物克一物' => '一物剋一物',
+'一目了然' => '一目了然',
+'一碗面' => '一碗麵',
+'一扎' => '一紮',
+'一冲' => '一衝',
+'一厘一毫' => '一釐一毫',
+'一锅面' => '一鍋麵',
+'一只' => '一隻',
+'一面食' => '一面食',
+'一余' => '一餘',
+'一发千钧' => '一髮千鈞',
+'一哄而散' => '一鬨而散',
+'一出剧' => '一齣劇',
+'一出喜剧' => '一齣喜劇',
+'一出好戏' => '一齣好戲',
+'一出子' => '一齣子',
+'一出悲剧' => '一齣悲劇',
+'一出戏' => '一齣戲',
+'一出电影' => '一齣電影',
+'丁丁当当' => '丁丁當當',
+'丁丑' => '丁丑',
+'七个' => '七個',
+'七周后' => '七周後',
+'七天后' => '七天後',
+'七年' => '七年',
+'七情六欲' => '七情六慾',
+'七扎' => '七紮',
+'七只' => '七隻',
+'七余' => '七餘',
+'万俟' => '万俟',
+'万旗' => '万旗',
+'三个' => '三個',
+'三周后' => '三周後',
+'三天后' => '三天後',
+'三年' => '三年',
+'三征七辟' => '三徵七辟',
+'三准' => '三準',
+'三扎' => '三紮',
+'三统历' => '三統曆',
+'三统历史' => '三統歷史',
+'三只' => '三隻',
+'三余' => '三餘',
+'三出戏' => '三齣戲',
+'上天里' => '上天里',
+'上梁山' => '上梁山',
+'上梁' => '上樑',
+'上台面' => '上檯面',
+'上签名' => '上簽名',
+'上签字' => '上簽字',
+'上签定' => '上簽定',
+'上签写' => '上簽寫',
+'上签收' => '上簽收',
+'上签发' => '上簽發',
+'上签约' => '上簽約',
+'上签署' => '上簽署',
+'上签订' => '上簽訂',
+'上签' => '上籤',
+'上系上' => '上繫上',
+'上课钟' => '上課鐘',
+'上面糊' => '上面糊',
+'下于' => '下於',
+'下梁' => '下樑',
+'下注解' => '下注解',
+'下签名' => '下簽名',
+'下签字' => '下簽字',
+'下签定' => '下簽定',
+'下签写' => '下簽寫',
+'下签收' => '下簽收',
+'下签发' => '下簽發',
+'下签约' => '下簽約',
+'下签署' => '下簽署',
+'下签订' => '下簽訂',
+'下签' => '下籤',
+'下课钟' => '下課鐘',
+'不干不净' => '不乾不淨',
+'不干胶' => '不乾膠',
+'不克自制' => '不克自制',
+'不加自制' => '不加自制',
+'不占凶吉' => '不占凶吉',
+'不占卜' => '不占卜',
+'不占吉凶' => '不占吉凶',
+'不占算' => '不占算',
+'不只' => '不只',
+'不太准' => '不太準',
+'不好干涉' => '不好干涉',
+'不好干預' => '不好干預',
+'不好干预' => '不好干預',
+'不嫌母丑' => '不嫌母醜',
+'不寒而栗' => '不寒而慄',
+'不吊' => '不弔',
+'不卷' => '不捲',
+'不采' => '不採',
+'不斗胆' => '不斗膽',
+'不斗膽' => '不斗膽',
+'不断发' => '不斷發',
+'不每只' => '不每只',
+'不谷' => '不穀',
+'不托' => '不託',
+'不负所托' => '不負所托',
+'不通吊庆' => '不通弔慶',
+'不丑' => '不醜',
+'不采声' => '不采聲',
+'不采聲' => '不采聲',
+'不锈钢' => '不鏽鋼',
+'不食干腊' => '不食乾腊',
+'不斗' => '不鬥',
+'丑三' => '丑三',
+'丑年' => '丑年',
+'丑日' => '丑日',
+'丑旦' => '丑旦',
+'丑时' => '丑時',
+'丑月' => '丑月',
+'丑表功' => '丑表功',
+'丑角' => '丑角',
+'且于' => '且於',
+'世田谷' => '世田谷',
+'世界杯' => '世界盃',
+'世纪里' => '世紀裡',
+'世纪钟' => '世紀鐘',
+'世纪钟表' => '世紀鐘錶',
+'丢丑' => '丟醜',
+'并曰入淀' => '並曰入澱',
+'并发动' => '並發動',
+'并发展' => '並發展',
+'并发布' => '並發布',
+'并发现' => '並發現',
+'并发表' => '並發表',
+'并行' => '並行',
+'中国国际信托投资公司' => '中國國際信托投資公司',
+'中型钟' => '中型鐘',
+'中型钟表面' => '中型鐘表面',
+'中型钟表' => '中型鐘錶',
+'中型钟面' => '中型鐘面',
+'中境里' => '中境里',
+'中岳' => '中嶽',
+'中庄子' => '中庄子',
+'中文里' => '中文裡',
+'中于' => '中於',
+'中签名' => '中簽名',
+'中签字' => '中簽字',
+'中签定' => '中簽定',
+'中签写' => '中簽寫',
+'中签收' => '中簽收',
+'中签发' => '中簽發',
+'中签约' => '中簽約',
+'中签署' => '中簽署',
+'中签订' => '中簽訂',
+'中签' => '中籤',
+'中风后' => '中風後',
+'丰仪' => '丰儀',
+'丰儀' => '丰儀',
+'丰南' => '丰南',
+'丰姿' => '丰姿',
+'丰容' => '丰容',
+'丰情' => '丰情',
+'丰标' => '丰標',
+'丰标不凡' => '丰標不凡',
+'丰標不凡' => '丰標不凡',
+'丰神' => '丰神',
+'丰茸' => '丰茸',
+'丰采' => '丰采',
+'丰韵' => '丰韻',
+'丰韻' => '丰韻',
+'丹棱' => '丹稜',
+'主仆' => '主僕',
+'主干' => '主幹',
+'主钟差' => '主鐘差',
+'主钟曲线' => '主鐘曲線',
+'乃系' => '乃係',
+'么么唱唱' => '么么唱唱',
+'么九' => '么九',
+'么儿' => '么兒',
+'么半' => '么半',
+'么喝' => '么喝',
+'么女' => '么女',
+'么妹' => '么妹',
+'么子' => '么子',
+'么弟' => '么弟',
+'么正' => '么正',
+'么爷' => '么爺',
+'么雞' => '么雞',
+'么么小丑' => '么麼小丑',
+'之一只' => '之一只',
+'之二只' => '之二只',
+'之八九只' => '之八九只',
+'之征' => '之徵',
+'之托' => '之託',
+'之钟' => '之鐘',
+'之鉴' => '之鑑',
+'之余' => '之餘',
+'乙丑' => '乙丑',
+'九世之仇' => '九世之讎',
+'九个' => '九個',
+'九周后' => '九周後',
+'九天后' => '九天後',
+'九年' => '九年',
+'九谷' => '九穀',
+'九扎' => '九紮',
+'九只' => '九隻',
+'九余' => '九餘',
+'干干' => '乾乾',
+'干干净净' => '乾乾淨淨',
+'干井' => '乾井',
+'干个够' => '乾個夠',
+'干儿' => '乾兒',
+'干冰' => '乾冰',
+'干冷' => '乾冷',
+'干刻版' => '乾刻版',
+'干剥剥' => '乾剝剝',
+'干卦' => '乾卦',
+'干和' => '乾和',
+'干咳' => '乾咳',
+'干咽' => '乾咽',
+'干哥' => '乾哥',
+'干哭' => '乾哭',
+'干唱' => '乾唱',
+'干啼' => '乾啼',
+'干乔' => '乾喬',
+'干呕' => '乾嘔',
+'干哕' => '乾噦',
+'干嚎' => '乾嚎',
+'干回付' => '乾回付',
+'干圆洁净' => '乾圓潔淨',
+'干地' => '乾地',
+'干坞' => '乾塢',
+'干女' => '乾女',
+'干奴才' => '乾奴才',
+'干妹' => '乾妹',
+'干姊' => '乾姊',
+'干姐' => '乾姐',
+'干娘' => '乾娘',
+'干妈' => '乾媽',
+'干子' => '乾子',
+'干季' => '乾季',
+'干尸' => '乾屍',
+'干屎橛' => '乾屎橛',
+'干巴' => '乾巴',
+'干式' => '乾式',
+'干弟' => '乾弟',
+'干急' => '乾急',
+'干性' => '乾性',
+'干打雷' => '乾打雷',
+'干折' => '乾折',
+'干撂台' => '乾撂台',
+'干撇下' => '乾撇下',
+'干擦' => '乾擦',
+'干支剌' => '乾支剌',
+'干支支' => '乾支支',
+'干料' => '乾料',
+'干旱' => '乾旱',
+'干暖' => '乾暖',
+'干材' => '乾材',
+'干村沙' => '乾村沙',
+'干杯' => '乾杯',
+'干果' => '乾果',
+'干枯' => '乾枯',
+'干柴' => '乾柴',
+'干柴烈火' => '乾柴烈火',
+'干梅' => '乾梅',
+'干死' => '乾死',
+'干池' => '乾池',
+'干没' => '乾沒',
+'干洗' => '乾洗',
+'干涸' => '乾涸',
+'干凉' => '乾涼',
+'干净' => '乾淨',
+'干渠' => '乾渠',
+'干渴' => '乾渴',
+'干沟' => '乾溝',
+'干漆' => '乾漆',
+'干涩' => '乾澀',
+'干湿' => '乾濕',
+'干熬' => '乾熬',
+'干热' => '乾熱',
+'干灯盏' => '乾燈盞',
+'干燥' => '乾燥',
+'干爸' => '乾爸',
+'干爹' => '乾爹',
+'干爽' => '乾爽',
+'干片' => '乾片',
+'干物' => '乾物',
+'干生受' => '乾生受',
+'干生子' => '乾生子',
+'干产' => '乾產',
+'干田' => '乾田',
+'干疥' => '乾疥',
+'干瘦' => '乾瘦',
+'干瘪' => '乾癟',
+'干癣' => '乾癬',
+'干瘾' => '乾癮',
+'干白儿' => '乾白兒',
+'干白葡萄酒' => '乾白葡萄酒',
+'干的' => '乾的',
+'干眼' => '乾眼',
+'干瞪眼' => '乾瞪眼',
+'干礼' => '乾禮',
+'干稿' => '乾稿',
+'干笑' => '乾笑',
+'干等' => '乾等',
+'干篾片' => '乾篾片',
+'干粉' => '乾粉',
+'干粮' => '乾糧',
+'干红葡萄酒' => '乾紅葡萄酒',
+'干结' => '乾結',
+'干丝' => '乾絲',
+'干纲' => '乾綱',
+'干绷' => '乾繃',
+'干耗' => '乾耗',
+'干肉片' => '乾肉片',
+'干股' => '乾股',
+'干肥' => '乾肥',
+'干脆' => '乾脆',
+'干脆面' => '乾脆麵',
+'干花' => '乾花',
+'干刍' => '乾芻',
+'干苔' => '乾苔',
+'干茨腊' => '乾茨臘',
+'干茶钱' => '乾茶錢',
+'干草' => '乾草',
+'干菜' => '乾菜',
+'干落' => '乾落',
+'干姜' => '乾薑',
+'干薪' => '乾薪',
+'干虔' => '乾虔',
+'干号' => '乾號',
+'干血浆' => '乾血漿',
+'干衣' => '乾衣',
+'干裂' => '乾裂',
+'干亲' => '乾親',
+'乾象历' => '乾象曆',
+'乾象曆' => '乾象曆',
+'干贝' => '乾貝',
+'干货' => '乾貨',
+'干躁' => '乾躁',
+'干逼' => '乾逼',
+'干酪' => '乾酪',
+'干酵母' => '乾酵母',
+'干醋' => '乾醋',
+'干重' => '乾重',
+'干量' => '乾量',
+'干锅' => '乾鍋',
+'干阿奶' => '乾阿奶',
+'干雷' => '乾雷',
+'干电' => '乾電',
+'干霍乱' => '乾霍亂',
+'干颡' => '乾顙',
+'干台' => '乾颱',
+'干食' => '乾食',
+'干饭' => '乾飯',
+'干馆' => '乾館',
+'干糇' => '乾餱',
+'干馏' => '乾餾',
+'干鱼' => '乾魚',
+'干鲜' => '乾鮮',
+'干面' => '乾麵',
+'乱发生' => '亂發生',
+'乱发脾气' => '亂發脾氣',
+'乱发' => '亂髮',
+'乱哄哄' => '亂鬨鬨',
+'了然后' => '了然後',
+'事有斗巧' => '事有鬥巧',
+'事里' => '事裡',
+'二不棱登' => '二不稜登',
+'二个' => '二個',
+'二只得' => '二只得',
+'二周后' => '二周後',
+'二天后' => '二天後',
+'二年' => '二年',
+'二缶钟惑' => '二缶鐘惑',
+'二老板' => '二老板',
+'二虎相斗' => '二虎相鬥',
+'二里头' => '二里頭',
+'二里頭' => '二里頭',
+'二只' => '二隻',
+'二余' => '二餘',
+'于丹' => '于丹',
+'于于' => '于于',
+'于仁泰' => '于仁泰',
+'于仲文' => '于仲文',
+'于佳卉' => '于佳卉',
+'于来山' => '于來山',
+'于伟国' => '于偉國',
+'于偉國' => '于偉國',
+'于光新' => '于光新',
+'于光远' => '于光遠',
+'于光遠' => '于光遠',
+'于克-兰多县' => '于克-蘭多縣',
+'于克-蘭多縣' => '于克-蘭多縣',
+'于克勒' => '于克勒',
+'于再清' => '于再清',
+'于冕' => '于冕',
+'于冠华' => '于冠華',
+'于凌奎' => '于凌奎',
+'于凌辰' => '于凌辰',
+'于勒' => '于勒',
+'于化虎' => '于化虎',
+'于占元' => '于占元',
+'于友泽' => '于友澤',
+'于台烟' => '于台煙',
+'于台煙' => '于台煙',
+'于右任' => '于右任',
+'于吉' => '于吉',
+'于和伟' => '于和偉',
+'于品海' => '于品海',
+'于国桢' => '于國楨',
+'于國楨' => '于國楨',
+'于国治' => '于國治',
+'于國治' => '于國治',
+'于坚' => '于堅',
+'于堅' => '于堅',
+'于大宝' => '于大寶',
+'于大寶' => '于大寶',
+'于天仁' => '于天仁',
+'于天龙' => '于天龍',
+'于奇库杜克' => '于奇庫杜克',
+'于奇庫杜克' => '于奇庫杜克',
+'于姓' => '于姓',
+'于娜' => '于娜',
+'于娟' => '于娟',
+'于子千' => '于子千',
+'于孔兼' => '于孔兼',
+'于学忠' => '于學忠',
+'于學忠' => '于學忠',
+'于家堡' => '于家堡',
+'于寘' => '于寘',
+'于宝轩' => '于寶軒',
+'于小伟' => '于小偉',
+'于小偉' => '于小偉',
+'于小彤' => '于小彤',
+'于小惠' => '于小惠',
+'于少保' => '于少保',
+'于山' => '于山',
+'于山国' => '于山國',
+'于山國' => '于山國',
+'于帅' => '于帥',
+'于帥' => '于帥',
+'于幼军' => '于幼軍',
+'于幼軍' => '于幼軍',
+'于康震' => '于康震',
+'于广洲' => '于廣洲',
+'于廣洲' => '于廣洲',
+'于式枚' => '于式枚',
+'于从濂' => '于從濂',
+'于從濂' => '于從濂',
+'于德海' => '于德海',
+'于志宁' => '于志寧',
+'于志寧' => '于志寧',
+'于忠肃集' => '于忠肅集',
+'于思' => '于思',
+'于慎行' => '于慎行',
+'于慧' => '于慧',
+'于成龍' => '于成龍',
+'于成龙' => '于成龍',
+'于承惠' => '于承惠',
+'于振' => '于振',
+'于振武' => '于振武',
+'于敏' => '于敏',
+'于敏中' => '于敏中',
+'于斌' => '于斌',
+'于斯塔德' => '于斯塔德',
+'于斯納爾斯貝里' => '于斯納爾斯貝里',
+'于斯纳尔斯贝里' => '于斯納爾斯貝里',
+'于斯达尔' => '于斯達爾',
+'于斯達爾' => '于斯達爾',
+'于明涛' => '于明濤',
+'于明濤' => '于明濤',
+'于是之' => '于是之',
+'于晨楠' => '于晨楠',
+'于晴' => '于晴',
+'于会泳' => '于會泳',
+'于會泳' => '于會泳',
+'于根伟' => '于根偉',
+'于根偉' => '于根偉',
+'于格' => '于格',
+'于枫' => '于楓',
+'于楓' => '于楓',
+'于荣光' => '于榮光',
+'于樂' => '于樂',
+'于树洁' => '于樹潔',
+'于樹潔' => '于樹潔',
+'于欣' => '于欣',
+'于欣源' => '于欣源',
+'于正昇' => '于正昇',
+'于正昌' => '于正昌',
+'于归' => '于歸',
+'于氏' => '于氏',
+'于永波' => '于永波',
+'于江震' => '于江震',
+'于波' => '于波',
+'于洋' => '于洋',
+'于洪区' => '于洪區',
+'于洪區' => '于洪區',
+'于浩威' => '于浩威',
+'于海' => '于海',
+'于海洋' => '于海洋',
+'于湘兰' => '于湘蘭',
+'于湘蘭' => '于湘蘭',
+'于汉超' => '于漢超',
+'于漢超' => '于漢超',
+'于澄' => '于澄',
+'于泽尔' => '于澤爾',
+'于澤爾' => '于澤爾',
+'于涛' => '于濤',
+'于濤' => '于濤',
+'于熙珍' => '于熙珍',
+'于尔岑' => '于爾岑',
+'于爾岑' => '于爾岑',
+'于尔根' => '于爾根',
+'于爾根' => '于爾根',
+'于尔里克' => '于爾里克',
+'于爾里克' => '于爾里克',
+'于特森' => '于特森',
+'于玉立' => '于玉立',
+'于田' => '于田',
+'于禁' => '于禁',
+'于秀敏' => '于秀敏',
+'于立成' => '于立成',
+'于素秋' => '于素秋',
+'于美人' => '于美人',
+'于耘婕' => '于耘婕',
+'于若木' => '于若木',
+'于荫霖' => '于蔭霖',
+'于蔭霖' => '于蔭霖',
+'于衡' => '于衡',
+'于西翰' => '于西翰',
+'于謙' => '于謙',
+'于谦' => '于謙',
+'于谨' => '于謹',
+'于貝爾' => '于貝爾',
+'于贝尔' => '于貝爾',
+'于贈' => '于贈',
+'于赠' => '于贈',
+'于越' => '于越',
+'于軍' => '于軍',
+'于逸堯' => '于逸堯',
+'于道泉' => '于道泉',
+'于远伟' => '于遠偉',
+'于遠偉' => '于遠偉',
+'于都县' => '于都縣',
+'于都縣' => '于都縣',
+'于里察' => '于里察',
+'于阗' => '于闐',
+'于双戈' => '于雙戈',
+'于雙戈' => '于雙戈',
+'于云鹤' => '于雲鶴',
+'于震' => '于震',
+'于震寰' => '于震寰',
+'于震环' => '于震環',
+'于震環' => '于震環',
+'于靖' => '于靖',
+'于非暗' => '于非闇',
+'于非闇' => '于非闇',
+'于韋斯屈萊' => '于韋斯屈萊',
+'于韦斯屈莱' => '于韋斯屈萊',
+'于風政' => '于風政',
+'于风政' => '于風政',
+'于飛' => '于飛',
+'于飞' => '于飛',
+'于余曲折' => '于餘曲折',
+'于鬯' => '于鬯',
+'于魁智' => '于魁智',
+'于凤桐' => '于鳳桐',
+'于鳳桐' => '于鳳桐',
+'于凤至' => '于鳳至',
+'于鳳至' => '于鳳至',
+'于默奥' => '于默奧',
+'于默奧' => '于默奧',
+'云乎' => '云乎',
+'云云' => '云云',
+'云何' => '云何',
+'云敞' => '云敞',
+'云为' => '云為',
+'云為' => '云為',
+'云然' => '云然',
+'云尔' => '云爾',
+'云:' => '云:',
+'五个' => '五個',
+'五周后' => '五周後',
+'五天后' => '五天後',
+'五峰县' => '五峯縣',
+'五岳' => '五嶽',
+'五年' => '五年',
+'五谷' => '五穀',
+'五扎' => '五紮',
+'五脏' => '五臟',
+'五行生克' => '五行生剋',
+'五谷王北街' => '五谷王北街',
+'五谷王南街' => '五谷王南街',
+'五只' => '五隻',
+'五余' => '五餘',
+'井干' => '井幹',
+'井里' => '井裡',
+'亚于' => '亞於',
+'亚美尼亚历' => '亞美尼亞曆',
+'交托' => '交託',
+'交游' => '交遊',
+'交哄' => '交鬨',
+'亦云' => '亦云',
+'京沈' => '京瀋',
+'亮丑' => '亮醜',
+'亮钟' => '亮鐘',
+'人云' => '人云',
+'人如风后入江云' => '人如風後入江雲',
+'人干的' => '人幹的',
+'人欲' => '人慾',
+'人数只' => '人數只',
+'人数里' => '人數裡',
+'人物志' => '人物誌',
+'人生天里' => '人生天里',
+'人发指' => '人髮指',
+'什锦面' => '什錦麵',
+'仁贵' => '仁貴',
+'介胄' => '介冑',
+'他干的' => '他幹的',
+'他钟' => '他鐘',
+'付托' => '付託',
+'仙后' => '仙后',
+'仙后座' => '仙后座',
+'仙游' => '仙遊',
+'代数里' => '代數裡',
+'代理发行' => '代理發行',
+'代码表' => '代碼表',
+'代表' => '代表',
+'以自制' => '以自制',
+'仲裁制' => '仲裁制',
+'件钟' => '件鐘',
+'价川' => '价川',
+'任何钟' => '任何鐘',
+'任何钟表' => '任何鐘錶',
+'任教于' => '任教於',
+'任于' => '任於',
+'仿制' => '仿製',
+'伊于湖底' => '伊于湖底',
+'伊府面' => '伊府麵',
+'伊斯兰教历' => '伊斯蘭教曆',
+'伊斯兰教历史' => '伊斯蘭教歷史',
+'伊斯兰历' => '伊斯蘭曆',
+'伊斯兰历史' => '伊斯蘭歷史',
+'伊东怜' => '伊東怜',
+'伊尔汗历表' => '伊爾汗曆表',
+'伊达里子' => '伊達里子',
+'伊适杰' => '伊適杰',
+'伊里布' => '伊里布',
+'伊郁' => '伊鬱',
+'伏几' => '伏几',
+'伐罪吊民' => '伐罪弔民',
+'休克期' => '休克期',
+'休征' => '休徵',
+'伙头' => '伙頭',
+'伴游' => '伴遊',
+'似于' => '似於',
+'但云' => '但云',
+'位于' => '位於',
+'位准' => '位準',
+'低洼' => '低洼',
+'住扎' => '住紮',
+'占毕' => '佔畢',
+'占头筹' => '佔頭籌',
+'占高枝儿' => '佔高枝兒',
+'何杰' => '何杰',
+'余三勝' => '余三勝',
+'余三胜' => '余三勝',
+'余光中' => '余光中',
+'余光生' => '余光生',
+'余力为' => '余力為',
+'余威德' => '余威德',
+'余子明' => '余子明',
+'余思敏' => '余思敏',
+'佛罗棱萨' => '佛羅稜薩',
+'佛钟' => '佛鐘',
+'作品里' => '作品裡',
+'作准' => '作準',
+'你夸' => '你誇',
+'佣金' => '佣金',
+'佣鈿' => '佣鈿',
+'佣钿' => '佣鈿',
+'佣錢' => '佣錢',
+'佣钱' => '佣錢',
+'佳肴' => '佳肴',
+'佳里鎮' => '佳里鎮',
+'并一不二' => '併一不二',
+'并入' => '併入',
+'并兼' => '併兼',
+'并到' => '併到',
+'并合' => '併合',
+'并名' => '併名',
+'并吞下' => '併吞下',
+'并拢' => '併攏',
+'并案' => '併案',
+'并流' => '併流',
+'并火' => '併火',
+'并为一家' => '併為一家',
+'并为一体' => '併為一體',
+'并叠' => '併疊',
+'并发型模式' => '併發型模式',
+'并发模式' => '併發模式',
+'并发症' => '併發症',
+'并发重症' => '併發重症',
+'并科' => '併科',
+'并网' => '併網',
+'并线' => '併線',
+'并肩子' => '併肩子',
+'并购' => '併購',
+'并骨' => '併骨',
+'使其斗' => '使其鬥',
+'来于' => '來於',
+'侍仆' => '侍僕',
+'供制' => '供製',
+'依依不舍' => '依依不捨',
+'依托' => '依託',
+'侵并' => '侵併',
+'局促' => '侷促',
+'便于' => '便於',
+'系数' => '係數',
+'系为' => '係為',
+'保险柜' => '保險柜',
+'信托贸易' => '信托貿易',
+'信托' => '信託',
+'修杰楷' => '修杰楷',
+'修杰麟' => '修杰麟',
+'修筑前' => '修築前',
+'修筑后' => '修築後',
+'修胡刀' => '修鬍刀',
+'俯冲' => '俯衝',
+'个月里' => '個月裡',
+'个里' => '個裡',
+'个钟' => '個鐘',
+'个钟表' => '個鐘錶',
+'们干的' => '們幹的',
+'幸免' => '倖免',
+'幸存' => '倖存',
+'幸幸' => '倖幸',
+'候复' => '候覆',
+'倚闲' => '倚閑',
+'倛丑' => '倛醜',
+'借鉴' => '借鑑',
+'倦游' => '倦遊',
+'假里' => '假裡',
+'假托' => '假託',
+'假发' => '假髮',
+'偎干' => '偎乾',
+'停停当当' => '停停當當',
+'停征' => '停徵',
+'停制' => '停製',
+'备注' => '備註',
+'家伙' => '傢伙',
+'催并' => '催併',
+'佣仆' => '傭僕',
+'傲游' => '傲遊',
+'傲霜斗雪' => '傲霜鬥雪',
+'传位于四太子' => '傳位于四太子',
+'傳位于四太子' => '傳位于四太子',
+'传于' => '傳於',
+'债累累' => '債纍纍',
+'傻里傻气' => '傻裡傻氣',
+'仅余' => '僅餘',
+'仆人' => '僕人',
+'仆使' => '僕使',
+'仆仆' => '僕僕',
+'仆僮' => '僕僮',
+'仆吏' => '僕吏',
+'仆固怀恩' => '僕固懷恩',
+'仆夫' => '僕夫',
+'仆姑' => '僕姑',
+'仆婢' => '僕婢',
+'仆妇' => '僕婦',
+'仆射' => '僕射',
+'仆少' => '僕少',
+'仆役' => '僕役',
+'仆从' => '僕從',
+'仆憎' => '僕憎',
+'仆欧' => '僕歐',
+'仆程' => '僕程',
+'仆虽罢驽' => '僕雖罷駑',
+'侥幸' => '僥倖',
+'僮仆' => '僮僕',
+'雇主' => '僱主',
+'雇人' => '僱人',
+'雇佣' => '僱傭',
+'雇到' => '僱到',
+'雇工' => '僱工',
+'雇船' => '僱船',
+'雇请' => '僱請',
+'雇车' => '僱車',
+'雇农' => '僱農',
+'仪范' => '儀範',
+'亿个' => '億個',
+'亿周后' => '億周後',
+'亿天后' => '億天後',
+'亿年' => '億年',
+'亿只' => '億隻',
+'亿余' => '億餘',
+'俭仆' => '儉僕',
+'俭朴' => '儉樸',
+'俭确之教' => '儉确之教',
+'儒略改革历' => '儒略改革曆',
+'儒略改革历史' => '儒略改革歷史',
+'儒略历' => '儒略曆',
+'儒略历史' => '儒略歷史',
+'尽尽' => '儘儘',
+'尽先' => '儘先',
+'尽其所有' => '儘其所有',
+'尽可能' => '儘可能',
+'尽快' => '儘快',
+'尽早' => '儘早',
+'尽是' => '儘是',
+'尽管' => '儘管',
+'尽自' => '儘自',
+'尽速' => '儘速',
+'尽量' => '儘量',
+'优于' => '優於',
+'优游' => '優遊',
+'兀术' => '兀朮',
+'元凶' => '元兇',
+'兆个' => '兆個',
+'兆余' => '兆餘',
+'凶刀' => '兇刀',
+'凶器' => '兇器',
+'凶嫌' => '兇嫌',
+'凶巴巴' => '兇巴巴',
+'凶徒' => '兇徒',
+'凶悍' => '兇悍',
+'凶恶' => '兇惡',
+'凶手' => '兇手',
+'凶案' => '兇案',
+'凶枪' => '兇槍',
+'凶横' => '兇橫',
+'凶残' => '兇殘',
+'凶杀' => '兇殺',
+'凶犯' => '兇犯',
+'凶狠' => '兇狠',
+'凶猛' => '兇猛',
+'凶疑' => '兇疑',
+'凶相' => '兇相',
+'凶险' => '兇險',
+'先采' => '先採',
+'光致致' => '光緻緻',
+'克期间' => '克期間',
+'免征' => '免徵',
+'党太尉' => '党太尉',
+'党姓' => '党姓',
+'党家' => '党家',
+'党怀英' => '党懷英',
+'党进' => '党進',
+'党項' => '党項',
+'党项' => '党項',
+'内脏' => '內臟',
+'内制' => '內製',
+'内面包' => '內面包',
+'内面包的' => '內面包的',
+'内斗' => '內鬥',
+'内哄' => '內鬨',
+'全干' => '全乾',
+'两个' => '兩個',
+'两周后' => '兩周後',
+'两天后' => '兩天後',
+'两年' => '兩年',
+'两杆' => '兩桿',
+'两扎' => '兩紮',
+'两虎共斗' => '兩虎共鬥',
+'两只' => '兩隻',
+'两余' => '兩餘',
+'两鼠斗穴' => '兩鼠鬥穴',
+'两出' => '兩齣',
+'八个' => '八個',
+'八周后' => '八周後',
+'八天后' => '八天後',
+'八字胡' => '八字鬍',
+'八年' => '八年',
+'八扎' => '八紮',
+'八蜡' => '八蜡',
+'八只' => '八隻',
+'八余' => '八餘',
+'公仔面' => '公仔麵',
+'公仆' => '公僕',
+'公孙丑' => '公孫丑',
+'公干' => '公幹',
+'公历' => '公曆',
+'公历史' => '公歷史',
+'公里海' => '公里海',
+'公余' => '公餘',
+'六么' => '六么',
+'六个' => '六個',
+'六周后' => '六周後',
+'六天后' => '六天後',
+'六年' => '六年',
+'六楼后座' => '六樓后座',
+'六谷' => '六穀',
+'六扎' => '六紮',
+'六冲' => '六衝',
+'六只' => '六隻',
+'六余' => '六餘',
+'共和历' => '共和曆',
+'共和历史' => '共和歷史',
+'其一只' => '其一只',
+'其二只' => '其二只',
+'其八九只' => '其八九只',
+'其次辟地' => '其次辟地',
+'其余' => '其餘',
+'典范' => '典範',
+'兼并' => '兼并',
+'冉有仆' => '冉有僕',
+'冗余' => '冗餘',
+'冤仇' => '冤讎',
+'冥蒙' => '冥濛',
+'冬山庄' => '冬山庄',
+'冬游' => '冬遊',
+'冰山里' => '冰山裡',
+'冶游' => '冶遊',
+'冷面相' => '冷面相',
+'冷面' => '冷麵',
+'准三后' => '准三后',
+'准保护' => '准保護',
+'准保護' => '准保護',
+'准保释' => '准保釋',
+'准保釋' => '准保釋',
+'凌蒙初' => '凌濛初',
+'凝炼' => '凝鍊',
+'几上' => '几上',
+'几几' => '几几',
+'几凳' => '几凳',
+'几子' => '几子',
+'几旁' => '几旁',
+'几杖' => '几杖',
+'几案' => '几案',
+'几椅' => '几椅',
+'几榻' => '几榻',
+'几净窗明' => '几淨窗明',
+'几筵' => '几筵',
+'几面上' => '几面上',
+'凶征' => '凶徵',
+'凶相毕露' => '凶相畢露',
+'出乖弄丑' => '出乖弄醜',
+'出乖露丑' => '出乖露醜',
+'出征收' => '出征收',
+'出于' => '出於',
+'出游' => '出遊',
+'出丑' => '出醜',
+'函数里' => '函數裡',
+'分别致' => '分别致',
+'分半钟' => '分半鐘',
+'分多钟' => '分多鐘',
+'分子钟' => '分子鐘',
+'分子云' => '分子雲',
+'分布于' => '分布於',
+'分钟' => '分鐘',
+'分钟里' => '分鐘裡',
+'刑余' => '刑餘',
+'划一桨' => '划一槳',
+'划上' => '划上',
+'划下' => '划下',
+'划不來' => '划不來',
+'划不来' => '划不來',
+'划了一会' => '划了一會',
+'划來划去' => '划來划去',
+'划来划去' => '划來划去',
+'划具' => '划具',
+'划到岸' => '划到岸',
+'划到江心' => '划到江心',
+'划动' => '划動',
+'划動' => '划動',
+'划去' => '划去',
+'划子' => '划子',
+'划得來' => '划得來',
+'划得来' => '划得來',
+'划拳' => '划拳',
+'划桨' => '划槳',
+'划槳' => '划槳',
+'划水' => '划水',
+'划着独木舟' => '划着獨木舟',
+'划着竹筏' => '划着竹筏',
+'划着船' => '划着船',
+'划算' => '划算',
+'划船' => '划船',
+'划艇' => '划艇',
+'划行' => '划行',
+'划走' => '划走',
+'划起' => '划起',
+'划进' => '划進',
+'划進' => '划進',
+'划过' => '划過',
+'划過' => '划過',
+'划龍舟' => '划龍舟',
+'划龙舟' => '划龍舟',
+'判断发' => '判斷發',
+'别辟' => '別闢',
+'利欲' => '利慾',
+'利于' => '利於',
+'刮来刮去' => '刮來刮去',
+'刮起来' => '刮起來',
+'刮胡' => '刮鬍',
+'到山里' => '到山裡',
+'制冷机' => '制冷機',
+'制签' => '制籤',
+'制钟' => '制鐘',
+'刻半钟' => '刻半鐘',
+'刻多钟' => '刻多鐘',
+'刻钟' => '刻鐘',
+'剃发' => '剃髮',
+'剃胡' => '剃鬍',
+'剃须' => '剃鬚',
+'削发' => '削髮',
+'削面' => '削麵',
+'克剥' => '剋剝',
+'克扣' => '剋扣',
+'克期' => '剋期',
+'克死' => '剋死',
+'克薄' => '剋薄',
+'前往' => '前往',
+'前面店' => '前面店',
+'剖厘' => '剖釐',
+'刚干' => '剛乾',
+'刚雇' => '剛僱',
+'剥制' => '剝製',
+'剩余' => '剩餘',
+'剪其发' => '剪其髮',
+'剪发' => '剪髮',
+'割舍' => '割捨',
+'创获' => '創穫',
+'创制' => '創製',
+'铲出' => '剷出',
+'铲刈' => '剷刈',
+'铲平' => '剷平',
+'铲除' => '剷除',
+'铲头' => '剷頭',
+'划入' => '劃入',
+'划为' => '劃為',
+'划著' => '劃著名',
+'刘佳怜' => '劉佳怜',
+'劉佳怜' => '劉佳怜',
+'刘芸后' => '劉芸后',
+'力拼' => '力拚',
+'力拼众敌' => '力拼眾敵',
+'力争上游' => '力爭上遊',
+'功勋' => '功勳',
+'加氢精制' => '加氫精制',
+'劣于' => '劣於',
+'助于' => '助於',
+'劫余' => '劫餘',
+'勃郁' => '勃鬱',
+'胜于' => '勝於',
+'勤仆' => '勤僕',
+'勤朴' => '勤樸',
+'勋劳' => '勳勞',
+'勋业' => '勳業',
+'勋爵' => '勳爵',
+'勋章' => '勳章',
+'勋绩' => '勳績',
+'勾干' => '勾幹',
+'勾心斗角' => '勾心鬥角',
+'勾魂荡魄' => '勾魂蕩魄',
+'包括' => '包括',
+'包准' => '包準',
+'包谷' => '包穀',
+'包扎' => '包紮',
+'匏系' => '匏繫',
+'北山索面' => '北山索麵',
+'北仑河' => '北崙河',
+'北岳' => '北嶽',
+'北回线' => '北迴線',
+'北回铁路' => '北迴鐵路',
+'匪干' => '匪幹',
+'匿于' => '匿於',
+'十个' => '十個',
+'十出家' => '十出家',
+'十出击' => '十出擊',
+'十出生' => '十出生',
+'十出祁山' => '十出祁山',
+'十出头' => '十出頭',
+'十周后' => '十周後',
+'十天后' => '十天後',
+'十年' => '十年',
+'十扎' => '十紮',
+'十只' => '十隻',
+'十余' => '十餘',
+'十出' => '十齣',
+'千个' => '千個',
+'千只可' => '千只可',
+'千只够' => '千只夠',
+'千只夠' => '千只夠',
+'千只怕' => '千只怕',
+'千只能' => '千只能',
+'千只足够' => '千只足夠',
+'千只足夠' => '千只足夠',
+'千周后' => '千周後',
+'千天后' => '千天後',
+'千年' => '千年',
+'千扎' => '千紮',
+'千回百折' => '千迴百折',
+'千回百转' => '千迴百轉',
+'千钧一发' => '千鈞一髮',
+'千只' => '千隻',
+'千余' => '千餘',
+'升高后' => '升高後',
+'半制品' => '半制品',
+'半只可' => '半只可',
+'半只够' => '半只夠',
+'半于' => '半於',
+'半只' => '半隻',
+'协防' => '協防',
+'南京钟' => '南京鐘',
+'南京钟表' => '南京鐘錶',
+'南宫适' => '南宮适',
+'南宮适' => '南宮适',
+'南屏晚钟' => '南屏晚鐘',
+'南岳' => '南嶽',
+'南筑' => '南筑',
+'南回线' => '南迴線',
+'南回铁路' => '南迴鐵路',
+'南游' => '南遊',
+'博采' => '博採',
+'博尔术' => '博爾朮',
+'卜云吉' => '卜云吉',
+'占了卜' => '占了卜',
+'印累绶若' => '印纍綬若',
+'印制' => '印製',
+'印鉴' => '印鑑',
+'危于' => '危於',
+'卵与石斗' => '卵與石鬥',
+'卷须' => '卷鬚',
+'厂部' => '厂部',
+'原子钟' => '原子鐘',
+'原钟' => '原鐘',
+'历物之意' => '厤物之意',
+'去山里' => '去山裡',
+'参数只' => '參數只',
+'参数里' => '參數裡',
+'反反复复' => '反反覆覆',
+'反应制得' => '反應製得',
+'反朴' => '反樸',
+'反冲' => '反衝',
+'反复制' => '反複製',
+'反复' => '反覆',
+'反覆' => '反覆',
+'取舍' => '取捨',
+'取决于' => '取決於',
+'受雇' => '受僱',
+'受托' => '受託',
+'丛林里' => '叢林裡',
+'口干' => '口乾',
+'口干冒' => '口干冒',
+'口干政' => '口干政',
+'口干涉' => '口干涉',
+'口干犯' => '口干犯',
+'口干预' => '口干預',
+'口燥唇干' => '口燥唇乾',
+'口腹之欲' => '口腹之慾',
+'口里' => '口裡',
+'口钟' => '口鐘',
+'古人有云' => '古人有云',
+'古书云' => '古書云',
+'古書云' => '古書云',
+'古柯咸' => '古柯鹹',
+'古朴' => '古樸',
+'古語云' => '古語云',
+'古语云' => '古語云',
+'古迹' => '古蹟',
+'古钟' => '古鐘',
+'古钟表' => '古鐘錶',
+'另辟' => '另闢',
+'叩钟' => '叩鐘',
+'只占卜' => '只占卜',
+'只占吉' => '只占吉',
+'只占神问卜' => '只占神問卜',
+'只占算' => '只占算',
+'只影响' => '只影響',
+'只影響' => '只影響',
+'只采' => '只採',
+'只冲' => '只衝',
+'只要功夫深,铁杵磨成锈花针' => '只要功夫深,鐵杵磨成鏽花針',
+'只身上已' => '只身上已',
+'只身上有' => '只身上有',
+'只身上沒' => '只身上沒',
+'只身上没' => '只身上沒',
+'只身上无' => '只身上無',
+'只身上無' => '只身上無',
+'只身上的' => '只身上的',
+'只身世' => '只身世',
+'只身份' => '只身份',
+'只身前' => '只身前',
+'只身受' => '只身受',
+'只身子' => '只身子',
+'只身形' => '只身形',
+'只身影' => '只身影',
+'只身后' => '只身後',
+'只身後' => '只身後',
+'只身心' => '只身心',
+'只身旁' => '只身旁',
+'只身材' => '只身材',
+'只身段' => '只身段',
+'只身为' => '只身為',
+'只身為' => '只身為',
+'只身边' => '只身邊',
+'只身邊' => '只身邊',
+'只身首' => '只身首',
+'只身体' => '只身體',
+'只身體' => '只身體',
+'只身高' => '只身高',
+'只采声' => '只采聲',
+'叮叮当当' => '叮叮噹噹',
+'叮当' => '叮噹',
+'可紧可松' => '可緊可鬆',
+'可自制' => '可自制',
+'可鉴' => '可鑑',
+'台子女' => '台子女',
+'台子孙' => '台子孫',
+'台州' => '台州',
+'台布景' => '台布景',
+'台历史' => '台歷史',
+'台钟' => '台鐘',
+'台风奖' => '台風獎',
+'台风稳健' => '台風穩健',
+'史鉴' => '史鑑',
+'叶不二子' => '叶不二子',
+'叶志穗' => '叶志穗',
+'叶恭弘' => '叶恭弘',
+'叶音' => '叶音',
+'叶韵' => '叶韻',
+'吃板刀面' => '吃板刀麵',
+'吃碗面' => '吃碗麵',
+'吃姜' => '吃薑',
+'吃里扒外' => '吃裡扒外',
+'吃里爬外' => '吃裡爬外',
+'吃面' => '吃麵',
+'各辟' => '各闢',
+'各类钟' => '各類鐘',
+'合伙人' => '合伙人',
+'合并' => '合併',
+'合伙' => '合夥',
+'合府上' => '合府上',
+'合采' => '合採',
+'合历' => '合曆',
+'合历史' => '合歷史',
+'合准' => '合準',
+'吉凶庆吊' => '吉凶慶弔',
+'吉征' => '吉徵',
+'吊钟' => '吊鐘',
+'同人志' => '同人誌',
+'同伙' => '同夥',
+'同于' => '同於',
+'同余' => '同餘',
+'名单于' => '名單於',
+'后冠' => '后冠',
+'后北街' => '后北街',
+'后土' => '后土',
+'后妃' => '后妃',
+'后姓' => '后姓',
+'后安路' => '后安路',
+'后平路' => '后平路',
+'后庄' => '后庄',
+'后座' => '后座',
+'后母戊' => '后母戊',
+'后海湾' => '后海灣',
+'后海灣' => '后海灣',
+'后瑞站' => '后瑞站',
+'后稷' => '后稷',
+'后綜' => '后綜',
+'后羿' => '后羿',
+'后街' => '后街',
+'后角' => '后角',
+'后丰' => '后豐',
+'后豐' => '后豐',
+'后里' => '后里',
+'后发FK型星' => '后髮FK型星',
+'后髮FK型星' => '后髮FK型星',
+'后发座' => '后髮座',
+'后髮座' => '后髮座',
+'后发星系团' => '后髮星系團',
+'后髮星系團' => '后髮星系團',
+'吐哺捉发' => '吐哺捉髮',
+'吐哺握发' => '吐哺握髮',
+'向往来' => '向往來',
+'向往常' => '向往常',
+'向往日' => '向往日',
+'向往时' => '向往時',
+'吞并' => '吞併',
+'吟游' => '吟遊',
+'吧台' => '吧檯',
+'含齿戴发' => '含齒戴髮',
+'吹干' => '吹乾',
+'吹发' => '吹髮',
+'吹胡' => '吹鬍',
+'吾为之范我驰驱' => '吾爲之範我馳驅',
+'吕后' => '呂后',
+'呂后' => '呂后',
+'呆致致' => '呆緻緻',
+'呆里呆气' => '呆裡呆氣',
+'告札' => '告劄',
+'呦喂' => '呦喂',
+'周后' => '周后',
+'周惠后' => '周惠后',
+'周历' => '周曆',
+'周杰' => '周杰',
+'周历史' => '周歷史',
+'周游列国' => '周遊列國',
+'呵喂' => '呵喂',
+'呼吁' => '呼籲',
+'命中注定' => '命中注定',
+'和奸' => '和姦',
+'和制汉' => '和製漢',
+'和制英语' => '和製英語',
+'咎征' => '咎徵',
+'咕咕钟' => '咕咕鐘',
+'咪表' => '咪錶',
+'咬姜呷醋' => '咬薑呷醋',
+'咯当' => '咯噹',
+'哀吊' => '哀弔',
+'哀挽' => '哀輓',
+'品鉴' => '品鑑',
+'哄堂大笑' => '哄堂大笑',
+'員山庄' => '員山庄',
+'哪里' => '哪裡',
+'唁吊' => '唁弔',
+'呗赞' => '唄讚',
+'唇干' => '唇乾',
+'唯一只' => '唯一只',
+'唱游' => '唱遊',
+'唾面自干' => '唾面自乾',
+'唾余' => '唾餘',
+'商历' => '商曆',
+'商标准许' => '商標准許',
+'商历史' => '商歷史',
+'啊喂' => '啊喂',
+'启发式' => '啟發式',
+'啷当' => '啷噹',
+'喂了一声' => '喂了一聲',
+'喂喂' => '喂喂',
+'喂哟' => '喂喲',
+'喂!' => '喂!',
+'喂,' => '喂,',
+'善于' => '善於',
+'喜向往' => '喜向往',
+'喜欢表' => '喜歡錶',
+'喜欢钟' => '喜歡鐘',
+'喜欢钟表' => '喜歡鐘錶',
+'喝干' => '喝乾',
+'喧哗' => '喧譁',
+'喧哄' => '喧鬨',
+'丧钟' => '喪鐘',
+'乔岳' => '喬嶽',
+'单于' => '單于',
+'單于' => '單于',
+'单单于' => '單單於',
+'单干' => '單幹',
+'单打独斗' => '單打獨鬥',
+'哟喂' => '喲喂',
+'喲喂' => '喲喂',
+'嘉谷' => '嘉穀',
+'嘉肴' => '嘉肴',
+'嘴里' => '嘴裡',
+'恶心' => '噁心',
+'噙齿戴发' => '噙齒戴髮',
+'喷洒' => '噴洒',
+'当啷' => '噹啷',
+'当当' => '噹噹',
+'噜苏' => '嚕囌',
+'啮合' => '嚙合',
+'啮齿类' => '嚙齒類',
+'向导' => '嚮導',
+'向往' => '嚮往',
+'向慕' => '嚮慕',
+'向迩' => '嚮邇',
+'严云农' => '嚴云農',
+'严于' => '嚴於',
+'嚼谷' => '嚼穀',
+'啰啰苏苏' => '囉囉囌囌',
+'啰苏' => '囉囌',
+'嘱托' => '囑託',
+'啮虫' => '囓蟲',
+'四个' => '四個',
+'四出征收' => '四出徵收',
+'四分历' => '四分曆',
+'四分历史' => '四分歷史',
+'四周后' => '四周後',
+'四天后' => '四天後',
+'四年' => '四年',
+'四舍五入' => '四捨五入',
+'四舍六入' => '四捨六入',
+'四杆铁笔' => '四桿鐵筆',
+'四扎' => '四紮',
+'四只' => '四隻',
+'四面包' => '四面包',
+'四面钟' => '四面鐘',
+'四余' => '四餘',
+'回佣' => '回佣',
+'回采' => '回採',
+'回旋加速' => '回旋加速',
+'回历' => '回曆',
+'回历史' => '回歷史',
+'回复中' => '回覆中',
+'回复你' => '回覆你',
+'回复帖子' => '回覆帖子',
+'回复意见' => '回覆意見',
+'回复说' => '回覆說',
+'回复邮件' => '回覆郵件',
+'回复:' => '回覆:',
+'回游' => '回遊',
+'因于' => '因於',
+'困倦起来' => '困倦起來',
+'困于' => '困於',
+'困兽之斗' => '困獸之鬥',
+'困兽犹斗' => '困獸猶鬥',
+'困斗' => '困鬥',
+'固定制' => '固定制',
+'固征' => '固徵',
+'囿于' => '囿於',
+'圈梁' => '圈樑',
+'圈里' => '圈裡',
+'国之桢干' => '國之楨榦',
+'国于' => '國於',
+'国历' => '國曆',
+'国历代' => '國歷代',
+'国历任' => '國歷任',
+'国历来' => '國歷來',
+'国历史' => '國歷史',
+'国历届' => '國歷屆',
+'国历经' => '國歷經',
+'国仇' => '國讎',
+'园里' => '園裡',
+'园游会' => '園遊會',
+'图里的' => '圖裡的',
+'图里,' => '圖裡,',
+'图鉴' => '圖鑑',
+'土索面' => '土索麵',
+'土里' => '土裡',
+'土制' => '土製',
+'在制品' => '在制品',
+'在山里' => '在山裡',
+'在于' => '在於',
+'地图里' => '地圖裡',
+'地心历表' => '地心曆表',
+'地方志' => '地方志',
+'地志' => '地誌',
+'地丑德齐' => '地醜德齊',
+'坏于' => '坏於',
+'坐如钟' => '坐如鐘',
+'坐台' => '坐檯',
+'坐钟' => '坐鐘',
+'坑里' => '坑裡',
+'坤范' => '坤範',
+'坦荡' => '坦蕩',
+'坦荡荡' => '坦蕩蕩',
+'坱郁' => '坱鬱',
+'垂于' => '垂於',
+'垂范' => '垂範',
+'垂发' => '垂髮',
+'型范' => '型範',
+'埃及历' => '埃及曆',
+'埃及历史' => '埃及歷史',
+'埃及艳后' => '埃及豔后',
+'埃荣冲' => '埃榮衝',
+'城市里' => '城市裡',
+'城里' => '城裡',
+'埔子里' => '埔子里',
+'埔里社' => '埔裏社',
+'域里' => '域裡',
+'基干' => '基幹',
+'基于' => '基於',
+'基准' => '基準',
+'坚致' => '堅緻',
+'堙淀' => '堙澱',
+'堡子里' => '堡子里',
+'场里' => '場裡',
+'塞耳盗钟' => '塞耳盜鐘',
+'境里' => '境裡',
+'境里程' => '境里程',
+'墓志铭' => '墓志銘',
+'墓志' => '墓誌',
+'增辟' => '增闢',
+'墨子里' => '墨子里',
+'墨斗' => '墨斗',
+'墨沈沈' => '墨沈沈',
+'墨沈' => '墨瀋',
+'垦辟' => '墾闢',
+'压制出' => '壓製出',
+'压制机' => '壓製機',
+'壮游' => '壯遊',
+'壮面' => '壯麵',
+'壹郁' => '壹鬱',
+'壶里' => '壺裡',
+'壸范' => '壼範',
+'壽天里' => '壽天里',
+'寿面' => '壽麵',
+'夏于乔' => '夏于喬',
+'夏于喬' => '夏于喬',
+'夏历' => '夏曆',
+'夏历史' => '夏歷史',
+'夏游' => '夏遊',
+'外强中干' => '外強中乾',
+'外制' => '外製',
+'多半只' => '多半只',
+'多只包括' => '多只包括',
+'多只可' => '多只可',
+'多只含' => '多只含',
+'多只在' => '多只在',
+'多只是' => '多只是',
+'多只会' => '多只會',
+'多只會' => '多只會',
+'多只有' => '多只有',
+'多只比' => '多只比',
+'多只用' => '多只用',
+'多只能' => '多只能',
+'多只限' => '多只限',
+'多只需' => '多只需',
+'多只須' => '多只須',
+'多只须' => '多只須',
+'多周后' => '多周後',
+'多天后' => '多天後',
+'多于' => '多於',
+'多冲' => '多衝',
+'多丑' => '多醜',
+'多只' => '多隻',
+'多余' => '多餘',
+'多出电影' => '多齣電影',
+'夜晚里' => '夜晚裡',
+'夜里' => '夜裡',
+'夜游' => '夜遊',
+'梦里' => '夢裡',
+'梦游' => '夢遊',
+'伙伴' => '夥伴',
+'伙友' => '夥友',
+'伙同' => '夥同',
+'伙众' => '夥眾',
+'伙计' => '夥計',
+'大伙儿' => '大伙兒',
+'大只可' => '大只可',
+'大只在' => '大只在',
+'大只是' => '大只是',
+'大只会' => '大只會',
+'大只有' => '大只有',
+'大只能' => '大只能',
+'大只需' => '大只需',
+'大周后' => '大周后',
+'大型钟' => '大型鐘',
+'大型钟表面' => '大型鐘表面',
+'大型钟表' => '大型鐘錶',
+'大型钟面' => '大型鐘面',
+'大多只' => '大多只',
+'大伙' => '大夥',
+'大干' => '大幹',
+'大批涌到' => '大批湧到',
+'大折儿' => '大摺兒',
+'大明历' => '大明曆',
+'大明历史' => '大明歷史',
+'大历' => '大曆',
+'大本钟' => '大本鐘',
+'大本钟敲' => '大本鐘敲',
+'大历史' => '大歷史',
+'大病初愈' => '大病初癒',
+'大目干连' => '大目乾連',
+'大笨钟' => '大笨鐘',
+'大笨钟敲' => '大笨鐘敲',
+'大蜡' => '大蜡',
+'大衍历' => '大衍曆',
+'大衍历史' => '大衍歷史',
+'大言非夸' => '大言非夸',
+'大夸' => '大誇',
+'大赞' => '大讚',
+'大周折' => '大週摺',
+'大丑' => '大醜',
+'大金发苔' => '大金髮苔',
+'大钟' => '大鐘',
+'大只' => '大隻',
+'大风后' => '大風後',
+'天克地冲' => '天克地衝',
+'天台' => '天台',
+'天后' => '天后',
+'天后宫' => '天后宮',
+'天地志狼' => '天地志狼',
+'天地为范' => '天地為範',
+'天干地支' => '天干地支',
+'天后来' => '天後來',
+'天后半' => '天後半',
+'天后天' => '天後天',
+'天文学钟' => '天文學鐘',
+'天文历表' => '天文曆表',
+'天文钟' => '天文鐘',
+'天历' => '天曆',
+'天历史' => '天歷史',
+'天神之后' => '天神之后',
+'天里' => '天裡',
+'天里昂' => '天里昂',
+'天里村' => '天里村',
+'太仆' => '太僕',
+'太凶' => '太兇',
+'太初历' => '太初曆',
+'太初历史' => '太初歷史',
+'太后' => '太后',
+'太丑' => '太醜',
+'太阁' => '太閤',
+'夸克' => '夸克',
+'夸父' => '夸父',
+'夸特' => '夸特',
+'夸脱' => '夸脫',
+'奇勋' => '奇勳',
+'奇迹' => '奇蹟',
+'奇丑' => '奇醜',
+'奏折' => '奏摺',
+'夺斗' => '奪鬥',
+'奋斗' => '奮鬥',
+'女丑' => '女丑',
+'女仆' => '女僕',
+'奴仆' => '奴僕',
+'奸淫掳掠' => '奸淫擄掠',
+'好家伙' => '好傢夥',
+'好凶' => '好兇',
+'好勇斗狠' => '好勇鬥狠',
+'好斗大' => '好斗大',
+'好斗室' => '好斗室',
+'好斗笠' => '好斗笠',
+'好斗篷' => '好斗篷',
+'好斗胆' => '好斗膽',
+'好斗膽' => '好斗膽',
+'好斗蓬' => '好斗蓬',
+'好于' => '好於',
+'好困' => '好睏',
+'好签' => '好籤',
+'好丑' => '好醜',
+'好斗' => '好鬥',
+'如果干' => '如果幹',
+'如饥似渴' => '如饑似渴',
+'妖后' => '妖后',
+'妖气冲天' => '妖氣衝天',
+'妆台' => '妝檯',
+'始于' => '始於',
+'委托' => '委託',
+'委托书' => '委託書',
+'奸夫' => '姦夫',
+'奸妇' => '姦婦',
+'奸情' => '姦情',
+'奸杀' => '姦殺',
+'奸污' => '姦污',
+'奸淫' => '姦淫',
+'威棱' => '威稜',
+'婢仆' => '婢僕',
+'嫁祸于' => '嫁禍於',
+'嫌凶' => '嫌兇',
+'嫌好道丑' => '嫌好道醜',
+'嫩姜' => '嫩薑',
+'嬉游' => '嬉遊',
+'嬖幸' => '嬖倖',
+'嬴余' => '嬴餘',
+'子之丰兮' => '子之丰兮',
+'子云' => '子云',
+'子里' => '子裡',
+'子里甲' => '子里甲',
+'字汇' => '字彙',
+'字母后' => '字母後',
+'字码表' => '字碼表',
+'字里行间' => '字裡行間',
+'存折' => '存摺',
+'存于' => '存於',
+'孛里海' => '孛里海',
+'孝惠后' => '孝惠后',
+'孙杰' => '孫杰',
+'孫杰' => '孫杰',
+'学家' => '學家',
+'学里' => '學裡',
+'宇宙志' => '宇宙誌',
+'安于' => '安於',
+'安沈铁路' => '安瀋鐵路',
+'宋王台' => '宋王臺',
+'宗周钟' => '宗周鐘',
+'官不怕大只怕管' => '官不怕大只怕管',
+'官地为采' => '官地為寀',
+'官历' => '官曆',
+'官历史' => '官歷史',
+'定于' => '定於',
+'定准' => '定準',
+'定制' => '定製',
+'宜云' => '宜云',
+'宣泄' => '宣洩',
+'宦游' => '宦遊',
+'宫里' => '宮裡',
+'害于' => '害於',
+'宴游' => '宴遊',
+'家仆' => '家僕',
+'家里' => '家裡',
+'家丑' => '家醜',
+'容于' => '容於',
+'容范' => '容範',
+'宿舍' => '宿舍',
+'寄托在' => '寄托在',
+'寄托' => '寄託',
+'密致' => '密緻',
+'寇准' => '寇準',
+'寇仇' => '寇讎',
+'富余' => '富餘',
+'寒栗' => '寒慄',
+'寒于' => '寒於',
+'寓于' => '寓於',
+'寡欲' => '寡慾',
+'实干' => '實幹',
+'实累累' => '實纍纍',
+'写字台' => '寫字檯',
+'宽于' => '寬於',
+'宽余' => '寬餘',
+'宽松' => '寬鬆',
+'宽松松' => '寬鬆鬆',
+'寮采' => '寮寀',
+'寶山庄' => '寶山庄',
+'宝历' => '寶曆',
+'寶曆' => '寶曆',
+'宝历史' => '寶歷史',
+'宝里宝气' => '寶裡寶氣',
+'宝鉴' => '寶鑑',
+'寸发千金' => '寸髮千金',
+'寺钟' => '寺鐘',
+'封后' => '封后',
+'封为后' => '封為后',
+'封面里' => '封面裡',
+'射雕' => '射鵰',
+'专向往' => '專向往',
+'专辑里' => '專輯裡',
+'尊后' => '尊后',
+'对不准' => '對不準',
+'对折' => '對摺',
+'对于' => '對於',
+'对准' => '對準',
+'对准表' => '對準錶',
+'对准钟' => '對準鐘',
+'对准钟表' => '對準鐘錶',
+'对着干' => '對着幹',
+'对华发' => '對華發',
+'对表中' => '對表中',
+'对表扬' => '對表揚',
+'对表明' => '對表明',
+'对表演' => '對表演',
+'对表现' => '對表現',
+'对表达' => '對表達',
+'导游' => '導遊',
+'小丑' => '小丑',
+'小井里' => '小井里',
+'小价' => '小价',
+'小仆' => '小僕',
+'小几' => '小几',
+'小只可' => '小只可',
+'小只在' => '小只在',
+'小只是' => '小只是',
+'小只会' => '小只會',
+'小只有' => '小只有',
+'小只能' => '小只能',
+'小只需' => '小只需',
+'小周后' => '小周后',
+'小型钟' => '小型鐘',
+'小型钟表面' => '小型鐘表面',
+'小型钟表' => '小型鐘錶',
+'小型钟面' => '小型鐘面',
+'小时里' => '小時裡',
+'小米面' => '小米麵',
+'小只' => '小隻',
+'少采' => '少採',
+'就范' => '就範',
+'就里' => '就裡',
+'尸位素餐' => '尸位素餐',
+'尸佼' => '尸佼',
+'尸利' => '尸利',
+'尸子' => '尸子',
+'尸居余气' => '尸居餘氣',
+'尸弃佛' => '尸棄佛',
+'尸祝' => '尸祝',
+'尸禄' => '尸祿',
+'尸罗精舍' => '尸羅精舍',
+'尸羅精舍' => '尸羅精舍',
+'尸臣' => '尸臣',
+'尸谏' => '尸諫',
+'尸魂界' => '尸魂界',
+'尸鸠' => '尸鳩',
+'局促不安' => '局促不安',
+'局里' => '局裡',
+'屋梁' => '屋樑',
+'屋里' => '屋裡',
+'屏风后' => '屏風後',
+'屑于' => '屑於',
+'屡顾尔仆' => '屢顧爾僕',
+'属于' => '屬於',
+'属托' => '屬託',
+'屯扎' => '屯紮',
+'屯里' => '屯裡',
+'山仔后' => '山仔后',
+'山崩钟应' => '山崩鐘應',
+'山岳' => '山嶽',
+'山梁' => '山樑',
+'山棱' => '山稜',
+'山羊胡' => '山羊鬍',
+'山里有' => '山裡有',
+'山里的' => '山裡的',
+'山谷' => '山谷',
+'山重水复' => '山重水複',
+'岫岩' => '岫巖',
+'岱岳' => '岱嶽',
+'峇里海' => '峇里海',
+'峰回' => '峰迴',
+'峻岭' => '峻岭',
+'崑剧' => '崑劇',
+'昆剧' => '崑劇',
+'崑山' => '崑山',
+'昆山' => '崑山',
+'昆冈' => '崑岡',
+'昆仑' => '崑崙',
+'昆嵛' => '崑嵛',
+'昆承湖' => '崑承湖',
+'崑曲' => '崑曲',
+'昆曲' => '崑曲',
+'崑腔' => '崑腔',
+'昆腔' => '崑腔',
+'崑苏' => '崑蘇',
+'昆苏' => '崑蘇',
+'崑调' => '崑調',
+'昆调' => '崑調',
+'崖广' => '崖广',
+'嶒棱' => '嶒稜',
+'岳岳' => '嶽嶽',
+'岳麓' => '嶽麓',
+'川谷' => '川穀',
+'巡回医疗' => '巡回醫療',
+'巡回' => '巡迴',
+'巡游' => '巡遊',
+'工作台' => '工作檯',
+'左冲右突' => '左衝右突',
+'巧干' => '巧幹',
+'巧历' => '巧曆',
+'巧历史' => '巧歷史',
+'巨制' => '巨製',
+'差之毫厘' => '差之毫厘',
+'差于' => '差於',
+'己丑' => '己丑',
+'已占卜' => '已占卜',
+'已占算' => '已占算',
+'巴尔干' => '巴爾幹',
+'巷里' => '巷裡',
+'市里的' => '市裡的',
+'布谷' => '布穀',
+'布谷鸟' => '布穀鳥',
+'布谷鸟钟' => '布穀鳥鐘',
+'布里海' => '布里海',
+'希伯来历' => '希伯來曆',
+'希伯来历史' => '希伯來歷史',
+'帘子' => '帘子',
+'帘布' => '帘布',
+'帝后台' => '帝后臺',
+'师范' => '師範',
+'席卷' => '席捲',
+'带征' => '帶徵',
+'带余' => '帶餘',
+'带发修行' => '帶髮修行',
+'幅图里' => '幅圖裡',
+'干系' => '干係',
+'平平当当' => '平平當當',
+'平准' => '平準',
+'年代里' => '年代裡',
+'年历' => '年曆',
+'年历史' => '年歷史',
+'年谷' => '年穀',
+'年里' => '年裡',
+'年鉴' => '年鑑',
+'并力' => '并力',
+'并吞' => '并吞',
+'并州' => '并州',
+'并日而食' => '并日而食',
+'并迭' => '并迭',
+'幸免于难' => '幸免於難',
+'幸于' => '幸於',
+'幸运胡' => '幸運鬍',
+'干上' => '幹上',
+'干下去' => '幹下去',
+'干不了' => '幹不了',
+'干不成' => '幹不成',
+'干了' => '幹了',
+'干事' => '幹事',
+'干些' => '幹些',
+'干什么' => '幹什麼',
+'干仗' => '幹仗',
+'干个' => '幹個',
+'干劲' => '幹勁',
+'干吏' => '幹吏',
+'干员' => '幹員',
+'干啥' => '幹啥',
+'干吗' => '幹嗎',
+'干嘛' => '幹嘛',
+'干坏事' => '幹壞事',
+'干大事' => '幹大事',
+'干完' => '幹完',
+'干家' => '幹家',
+'干得' => '幹得',
+'干性油' => '幹性油',
+'干才' => '幹才',
+'干掉' => '幹掉',
+'干探' => '幹探',
+'干校' => '幹校',
+'干活' => '幹活',
+'干流' => '幹流',
+'干济' => '幹濟',
+'干营生' => '幹營生',
+'干父之蛊' => '幹父之蠱',
+'干球温度' => '幹球溫度',
+'干甚么' => '幹甚麼',
+'干略' => '幹略',
+'干当' => '幹當',
+'干的事' => '幹的事',
+'干的好事' => '幹的好事',
+'干细胞' => '幹細胞',
+'干线' => '幹線',
+'干练' => '幹練',
+'干缺' => '幹缺',
+'干群关系' => '幹群關係',
+'干蛊' => '幹蠱',
+'干警' => '幹警',
+'干起来' => '幹起來',
+'干路' => '幹路',
+'干办' => '幹辦',
+'干这' => '幹這',
+'干道' => '幹道',
+'干部' => '幹部',
+'干革命' => '幹革命',
+'干头' => '幹頭',
+'干么' => '幹麼',
+'几个' => '幾個',
+'几周后' => '幾周後',
+'几天后' => '幾天後',
+'几进几出' => '幾進幾出',
+'几只' => '幾隻',
+'几出' => '幾齣',
+'广部' => '广部',
+'庄司' => '庄司',
+'床席' => '床蓆',
+'店里' => '店裡',
+'府干卿' => '府干卿',
+'府干扰' => '府干擾',
+'府干擾' => '府干擾',
+'府干政' => '府干政',
+'府干涉' => '府干涉',
+'府干犯' => '府干犯',
+'府干預' => '府干預',
+'府干预' => '府干預',
+'府干' => '府幹',
+'座钟' => '座鐘',
+'廍子里' => '廍子里',
+'廓子里' => '廓子里',
+'厨余' => '廚餘',
+'厮斗' => '廝鬥',
+'庙里' => '廟裡',
+'废后' => '廢后',
+'廢后' => '廢后',
+'广征' => '廣徵',
+'广舍' => '廣捨',
+'广播里' => '廣播裡',
+'延历' => '延曆',
+'建于' => '建於',
+'建筑前' => '建築前',
+'建筑后' => '建築後',
+'弄干' => '弄乾',
+'弄丑' => '弄醜',
+'弄脏胸' => '弄髒胸',
+'弄松' => '弄鬆',
+'弄鬼吊猴' => '弄鬼弔猴',
+'吊卷' => '弔卷',
+'吊取' => '弔取',
+'吊古' => '弔古',
+'吊唁' => '弔唁',
+'吊问' => '弔問',
+'吊喉' => '弔喉',
+'吊丧' => '弔喪',
+'吊喭' => '弔喭',
+'吊奠' => '弔奠',
+'吊孝' => '弔孝',
+'吊客' => '弔客',
+'吊宴' => '弔宴',
+'吊带' => '弔帶',
+'吊影' => '弔影',
+'吊恤' => '弔恤',
+'吊慰' => '弔慰',
+'吊扣' => '弔扣',
+'吊拷' => '弔拷',
+'吊挂' => '弔掛',
+'吊撒' => '弔撒',
+'吊文' => '弔文',
+'吊旗' => '弔旗',
+'吊死' => '弔死',
+'吊民' => '弔民',
+'吊祭' => '弔祭',
+'吊纸' => '弔紙',
+'吊者大悦' => '弔者大悅',
+'吊腰撒跨' => '弔腰撒跨',
+'吊脚儿事' => '弔腳兒事',
+'吊膀子' => '弔膀子',
+'吊词' => '弔詞',
+'吊诡' => '弔詭',
+'吊谎' => '弔謊',
+'吊贺迎送' => '弔賀迎送',
+'吊头' => '弔頭',
+'吊鹤' => '弔鶴',
+'引斗' => '引鬥',
+'弘历' => '弘曆',
+'弘历史' => '弘歷史',
+'弱于' => '弱於',
+'弱水三千只取一瓢' => '弱水三千只取一瓢',
+'张三丰' => '張三丰',
+'張三丰' => '張三丰',
+'张勋' => '張勳',
+'张杰' => '張杰',
+'張杰' => '張杰',
+'张乐于张徐' => '張樂于張徐',
+'强制作用' => '強制作用',
+'强奸' => '強姦',
+'强干' => '強幹',
+'强于' => '強於',
+'别口气' => '彆口氣',
+'别强' => '彆強',
+'别扭' => '彆扭',
+'别拗' => '彆拗',
+'别气' => '彆氣',
+'弹子台' => '彈子檯',
+'弹珠台' => '彈珠檯',
+'汇刊' => '彙刊',
+'汇算' => '彙算',
+'汇纂' => '彙纂',
+'汇辑' => '彙輯',
+'形单影只' => '形單影隻',
+'形于' => '形於',
+'彭于晏' => '彭于晏',
+'影后' => '影后',
+'影相吊' => '影相弔',
+'役于' => '役於',
+'往复式' => '往復式',
+'往日无仇' => '往日無讎',
+'往里' => '往裡',
+'待复' => '待覆',
+'很干' => '很乾',
+'很凶' => '很兇',
+'很准' => '很準',
+'很丑' => '很醜',
+'很松' => '很鬆',
+'律历志' => '律曆志',
+'后印' => '後印',
+'后台老板' => '後台老板',
+'后天' => '後天',
+'後庄' => '後庄',
+'后面店' => '後面店',
+'徐干' => '徐幹',
+'徒杠' => '徒杠',
+'徒托空言' => '徒託空言',
+'得到回复' => '得到回覆',
+'得力干将' => '得力幹將',
+'从仆' => '從僕',
+'从图里' => '從圖裡',
+'从山里' => '從山裡',
+'从于' => '從於',
+'从里到外' => '從裡到外',
+'从里向外' => '從裡向外',
+'御岳山' => '御嶽山',
+'御制' => '御製',
+'复始' => '復始',
+'复活节历表' => '復活節曆表',
+'复苏' => '復甦',
+'征人' => '徵人',
+'征令' => '徵令',
+'征信' => '徵信',
+'征候' => '徵候',
+'征兆' => '徵兆',
+'征兵' => '徵兵',
+'征到' => '徵到',
+'征募' => '徵募',
+'征友' => '徵友',
+'征召' => '徵召',
+'征名责实' => '徵名責實',
+'征吏' => '徵吏',
+'征咎' => '徵咎',
+'征启' => '徵啟',
+'征士' => '徵士',
+'征婚' => '徵婚',
+'征实' => '徵實',
+'征庸' => '徵庸',
+'征引' => '徵引',
+'征得' => '徵得',
+'征怪' => '徵怪',
+'征才' => '徵才',
+'征招' => '徵招',
+'征收' => '徵收',
+'征效' => '徵效',
+'征文' => '徵文',
+'征求' => '徵求',
+'征状' => '徵狀',
+'征用' => '徵用',
+'征发' => '徵發',
+'征税' => '徵稅',
+'征稿' => '徵稿',
+'征答' => '徵答',
+'征结' => '徵結',
+'征圣' => '徵聖',
+'征聘' => '徵聘',
+'征训' => '徵訓',
+'征询' => '徵詢',
+'征调' => '徵調',
+'征象' => '徵象',
+'征购' => '徵購',
+'征迹' => '徵跡',
+'征车' => '徵車',
+'征辟' => '徵辟',
+'征逐' => '徵逐',
+'征选' => '徵選',
+'征集' => '徵集',
+'征风召雨' => '徵風召雨',
+'征验' => '徵驗',
+'心愿' => '心愿',
+'心于' => '心於',
+'心理' => '心理',
+'心细如发' => '心細如髮',
+'心系一' => '心繫一',
+'心系世' => '心繫世',
+'心系中' => '心繫中',
+'心系乔' => '心繫乔',
+'心系五' => '心繫五',
+'心系京' => '心繫京',
+'心系人' => '心繫人',
+'心系他' => '心繫他',
+'心系伊' => '心繫伊',
+'心系何' => '心繫何',
+'心系你' => '心繫你',
+'心系健' => '心繫健',
+'心系传' => '心繫傳',
+'心系全' => '心繫全',
+'心系两' => '心繫兩',
+'心系农' => '心繫农',
+'心系功' => '心繫功',
+'心系动' => '心繫動',
+'心系募' => '心繫募',
+'心系北' => '心繫北',
+'心系十' => '心繫十',
+'心系千' => '心繫千',
+'心系南' => '心繫南',
+'心系台' => '心繫台',
+'心系和' => '心繫和',
+'心系哪' => '心繫哪',
+'心系唐' => '心繫唐',
+'心系嘱' => '心繫囑',
+'心系四' => '心繫四',
+'心系困' => '心繫困',
+'心系国' => '心繫國',
+'心系在' => '心繫在',
+'心系地' => '心繫地',
+'心系大' => '心繫大',
+'心系天' => '心繫天',
+'心系夫' => '心繫夫',
+'心系奥' => '心繫奧',
+'心系女' => '心繫女',
+'心系她' => '心繫她',
+'心系妻' => '心繫妻',
+'心系妇' => '心繫婦',
+'心系子' => '心繫子',
+'心系它' => '心繫它',
+'心系宣' => '心繫宣',
+'心系家' => '心繫家',
+'心系富' => '心繫富',
+'心系小' => '心繫小',
+'心系山' => '心繫山',
+'心系川' => '心繫川',
+'心系幼' => '心繫幼',
+'心系广' => '心繫廣',
+'心系彼' => '心繫彼',
+'心系德' => '心繫德',
+'心系您' => '心繫您',
+'心系慈' => '心繫慈',
+'心系我' => '心繫我',
+'心系摩' => '心繫摩',
+'心系故' => '心繫故',
+'心系新' => '心繫新',
+'心系日' => '心繫日',
+'心系昌' => '心繫昌',
+'心系晓' => '心繫曉',
+'心系曼' => '心繫曼',
+'心系东' => '心繫東',
+'心系林' => '心繫林',
+'心系母' => '心繫母',
+'心系民' => '心繫民',
+'心系江' => '心繫江',
+'心系汶' => '心繫汶',
+'心系沈' => '心繫沈',
+'心系沙' => '心繫沙',
+'心系泰' => '心繫泰',
+'心系浙' => '心繫浙',
+'心系港' => '心繫港',
+'心系湖' => '心繫湖',
+'心系澳' => '心繫澳',
+'心系灾' => '心繫災',
+'心系父' => '心繫父',
+'心系生' => '心繫生',
+'心系病' => '心繫病',
+'心系百' => '心繫百',
+'心系的' => '心繫的',
+'心系众' => '心繫眾',
+'心系社' => '心繫社',
+'心系祖' => '心繫祖',
+'心系神' => '心繫神',
+'心系红' => '心繫紅',
+'心系美' => '心繫美',
+'心系群' => '心繫群',
+'心系老' => '心繫老',
+'心系舞' => '心繫舞',
+'心系英' => '心繫英',
+'心系茶' => '心繫茶',
+'心系万' => '心繫萬',
+'心系兰' => '心繫蘭',
+'心系西' => '心繫西',
+'心系贫' => '心繫貧',
+'心系输' => '心繫輸',
+'心系近' => '心繫近',
+'心系远' => '心繫遠',
+'心系选' => '心繫選',
+'心系重' => '心繫重',
+'心系长' => '心繫長',
+'心系阮' => '心繫阮',
+'心系震' => '心繫震',
+'心系非' => '心繫非',
+'心系风' => '心繫風',
+'心系香' => '心繫香',
+'心系高' => '心繫高',
+'心系麦' => '心繫麥',
+'心系黄' => '心繫黃',
+'心脏' => '心臟',
+'心脏痳痹' => '心臟痲痺',
+'心荡' => '心蕩',
+'心里面' => '心裏面',
+'心里' => '心裡',
+'心长发短' => '心長髮短',
+'心余' => '心餘',
+'必须' => '必須',
+'忙里' => '忙裡',
+'忙里偷闲' => '忙裡偷閒',
+'忠人之托' => '忠人之托',
+'忠仆' => '忠僕',
+'忠于' => '忠於',
+'快快当当' => '快快當當',
+'快冲' => '快衝',
+'怎么干' => '怎麼幹',
+'怒于' => '怒於',
+'怒气冲天' => '怒氣衝天',
+'怒火冲天' => '怒火衝天',
+'怒发冲冠' => '怒髮衝冠',
+'思如泉涌' => '思如泉湧',
+'怠于' => '怠於',
+'急于' => '急於',
+'急冲而下' => '急衝而下',
+'性征' => '性徵',
+'性欲' => '性慾',
+'怨气冲天' => '怨氣衝天',
+'怪里怪气' => '怪裡怪氣',
+'怫郁' => '怫鬱',
+'恂栗' => '恂慄',
+'恒基' => '恒基',
+'恒生' => '恒生',
+'恒隆' => '恒隆',
+'恕乏价催' => '恕乏价催',
+'息交绝游' => '息交絕遊',
+'息谷' => '息穀',
+'悒郁' => '悒鬱',
+'悠悠荡荡' => '悠悠蕩蕩',
+'悠荡' => '悠蕩',
+'悠游' => '悠遊',
+'悲凄' => '悲悽',
+'悲筑' => '悲筑',
+'悲郁' => '悲鬱',
+'悸栗' => '悸慄',
+'凄厉' => '悽厲',
+'凄怨' => '悽怨',
+'凄惋' => '悽惋',
+'凄惶' => '悽惶',
+'凄恻' => '悽惻',
+'凄怆' => '悽愴',
+'凄惨' => '悽慘',
+'凄戾' => '悽戾',
+'凄然' => '悽然',
+'凄美' => '悽美',
+'凄苦' => '悽苦',
+'凄酸' => '悽酸',
+'情欲' => '情慾',
+'惇朴' => '惇樸',
+'惠文后' => '惠文后',
+'恶仆' => '惡僕',
+'恶直丑正' => '惡直醜正',
+'恶斗' => '惡鬥',
+'惴栗' => '惴慄',
+'意大利面' => '意大利麵',
+'爱困' => '愛睏',
+'感于' => '感於',
+'愿朴' => '愿樸',
+'愿樸' => '愿樸',
+'愿而恭' => '愿而恭',
+'栗冽' => '慄冽',
+'栗栗' => '慄慄',
+'慈溪' => '慈谿',
+'慌里慌张' => '慌裡慌張',
+'惨淡' => '慘澹',
+'庆吊' => '慶弔',
+'庆历' => '慶曆',
+'庆历史' => '慶歷史',
+'欲令智昏' => '慾令智昏',
+'欲壑难填' => '慾壑難填',
+'欲念' => '慾念',
+'欲海' => '慾海',
+'欲火' => '慾火',
+'欲障' => '慾障',
+'忧郁' => '憂鬱',
+'凭几' => '憑几',
+'凭吊' => '憑弔',
+'凭折' => '憑摺',
+'凭准' => '憑準',
+'凭借' => '憑藉',
+'凭闲' => '憑閑',
+'宪法里' => '憲法裡',
+'恳托' => '懇託',
+'懈松' => '懈鬆',
+'应制得' => '應制得',
+'應制得' => '應制得',
+'应征' => '應徵',
+'应钟' => '應鐘',
+'懔栗' => '懍慄',
+'懞懞懂懂' => '懞懞懂懂',
+'懞直' => '懞直',
+'惩忿窒欲' => '懲忿窒欲',
+'怀里' => '懷裡',
+'怀钟' => '懷鐘',
+'悬挂' => '懸掛',
+'悬梁' => '懸樑',
+'悬臂梁' => '懸臂樑',
+'悬钟' => '懸鐘',
+'懿范' => '懿範',
+'恋恋不舍' => '戀戀不捨',
+'成于' => '成於',
+'成于思' => '成於思',
+'戬谷' => '戩穀',
+'截发' => '截髮',
+'战天斗地' => '戰天鬥地',
+'战栗' => '戰慄',
+'战于' => '戰於',
+'战斗' => '戰鬥',
+'戏里' => '戲裡',
+'戲院里' => '戲院里',
+'戴表元' => '戴表元',
+'戴发含齿' => '戴髮含齒',
+'房里' => '房裡',
+'所云' => '所云',
+'所云云' => '所云云',
+'所占卜' => '所占卜',
+'所占星' => '所占星',
+'所占算' => '所占算',
+'所托' => '所託',
+'扁拟谷盗虫' => '扁擬穀盜蟲',
+'手塚治虫' => '手塚治虫',
+'手折' => '手摺',
+'手表态' => '手表態',
+'手表態' => '手表態',
+'手表明' => '手表明',
+'手表决' => '手表決',
+'手表決' => '手表決',
+'手表演' => '手表演',
+'手表现' => '手表現',
+'手表現' => '手表現',
+'手表示' => '手表示',
+'手表达' => '手表達',
+'手表達' => '手表達',
+'手表露' => '手表露',
+'手表面' => '手表面',
+'手里剑' => '手裏劍',
+'手里' => '手裡',
+'手游' => '手遊',
+'手表' => '手錶',
+'手链' => '手鍊',
+'手松' => '手鬆',
+'才干休' => '才干休',
+'才干戈' => '才干戈',
+'才干扰' => '才干擾',
+'才干政' => '才干政',
+'才干涉' => '才干涉',
+'才干预' => '才干預',
+'才干' => '才幹',
+'扎好底子' => '扎好底子',
+'扎好根' => '扎好根',
+'扑作教刑' => '扑作教刑',
+'扑打' => '扑打',
+'扑挞' => '扑撻',
+'打干哕' => '打乾噦',
+'打出吊入' => '打出弔入',
+'打卡钟' => '打卡鐘',
+'打吨' => '打吨',
+'打干' => '打幹',
+'打拼' => '打拚',
+'打断发' => '打斷發',
+'打卤' => '打滷',
+'打谷' => '打穀',
+'打钟' => '打鐘',
+'打风后' => '打風後',
+'打斗' => '打鬥',
+'托管国' => '托管國',
+'扛大梁' => '扛大樑',
+'扯面' => '扯麵',
+'扶余' => '扶餘',
+'批准的' => '批准的',
+'批准确定' => '批准確定',
+'批复' => '批覆',
+'批注' => '批註',
+'批斗' => '批鬥',
+'抑制' => '抑制',
+'抑郁' => '抑鬱',
+'抓奸' => '抓姦',
+'抓斗' => '抓鬥',
+'抗御' => '抗禦',
+'折向往' => '折向往',
+'折子戏' => '折子戲',
+'折子戲' => '折子戲',
+'折戟沈河' => '折戟沈河',
+'折冲' => '折衝',
+'披榛采兰' => '披榛採蘭',
+'披头散发' => '披頭散髮',
+'披发' => '披髮',
+'抱朴而长吟兮' => '抱朴而長吟兮',
+'抱素怀朴' => '抱素懷樸',
+'抵御' => '抵禦',
+'抹干' => '抹乾',
+'抽公签' => '抽公籤',
+'抽签' => '抽籤',
+'抿发' => '抿髮',
+'拂钟无声' => '拂鐘無聲',
+'拆伙' => '拆夥',
+'拈须' => '拈鬚',
+'拉克施尔德钟' => '拉克施爾德鐘',
+'拉纤' => '拉縴',
+'拉面上' => '拉面上',
+'拉面具' => '拉面具',
+'拉面前' => '拉面前',
+'拉面巾' => '拉面巾',
+'拉面无' => '拉面無',
+'拉面皮' => '拉面皮',
+'拉面罩' => '拉面罩',
+'拉面色' => '拉面色',
+'拉面部' => '拉面部',
+'拉面' => '拉麵',
+'拒人于' => '拒人於',
+'拒于' => '拒於',
+'拓朴' => '拓樸',
+'拔发' => '拔髮',
+'拔须' => '拔鬚',
+'拗别' => '拗彆',
+'拘于' => '拘於',
+'拙于' => '拙於',
+'拙朴' => '拙樸',
+'拼却' => '拚卻',
+'拼命' => '拚命',
+'拼舍' => '拚捨',
+'拼死' => '拚死',
+'拼生尽死' => '拚生盡死',
+'拼绝' => '拚絕',
+'拼老命' => '拚老命',
+'拼斗' => '拚鬥',
+'拜托' => '拜託',
+'括发' => '括髮',
+'拭干' => '拭乾',
+'拮据' => '拮据',
+'拳局' => '拳跼',
+'拼死拼活' => '拼死拼活',
+'拾沈' => '拾瀋',
+'拿下表' => '拿下錶',
+'拿下钟' => '拿下鐘',
+'拿准' => '拿準',
+'拿破仑' => '拿破崙',
+'挂图' => '挂圖',
+'挂帅' => '挂帥',
+'挂彩' => '挂彩',
+'挂念' => '挂念',
+'挂号' => '挂號',
+'挂车' => '挂車',
+'挌斗' => '挌鬥',
+'挑大梁' => '挑大樑',
+'挑斗' => '挑鬥',
+'振荡' => '振蕩',
+'捉奸徒' => '捉奸徒',
+'捉奸细' => '捉奸細',
+'捉奸贼' => '捉奸賊',
+'捉奸党' => '捉奸黨',
+'捉奸' => '捉姦',
+'捉发' => '捉髮',
+'捍御' => '捍禦',
+'捏面人' => '捏麵人',
+'舍不得' => '捨不得',
+'舍入' => '捨入',
+'舍出' => '捨出',
+'舍去' => '捨去',
+'舍命' => '捨命',
+'舍堕' => '捨墮',
+'舍安就危' => '捨安就危',
+'舍实' => '捨實',
+'舍己从人' => '捨己從人',
+'舍己救人' => '捨己救人',
+'舍己为人' => '捨己為人',
+'舍己为公' => '捨己為公',
+'舍己为国' => '捨己為國',
+'舍得' => '捨得',
+'舍我其谁' => '捨我其誰',
+'舍本逐末' => '捨本逐末',
+'舍弃' => '捨棄',
+'舍死忘生' => '捨死忘生',
+'舍生' => '捨生',
+'舍短取长' => '捨短取長',
+'舍身' => '捨身',
+'舍车保帅' => '捨車保帥',
+'舍近求远' => '捨近求遠',
+'卷住' => '捲住',
+'卷来' => '捲來',
+'卷儿' => '捲兒',
+'卷入' => '捲入',
+'卷动' => '捲動',
+'卷去' => '捲去',
+'卷图' => '捲圖',
+'卷土重来' => '捲土重來',
+'卷地' => '捲地',
+'卷尺' => '捲尺',
+'卷尾猴' => '捲尾猴',
+'卷心菜' => '捲心菜',
+'卷成' => '捲成',
+'卷曲' => '捲曲',
+'卷款' => '捲款',
+'卷毛' => '捲毛',
+'卷烟盒' => '捲煙盒',
+'卷积云' => '捲積雲',
+'卷筒' => '捲筒',
+'卷帘' => '捲簾',
+'卷纸' => '捲紙',
+'卷缩' => '捲縮',
+'卷舌' => '捲舌',
+'卷烟' => '捲菸',
+'卷叶蛾' => '捲葉蛾',
+'卷袖' => '捲袖',
+'卷走' => '捲走',
+'卷起' => '捲起',
+'卷轴' => '捲軸',
+'卷逃' => '捲逃',
+'卷铺盖' => '捲鋪蓋',
+'卷云' => '捲雲',
+'卷风' => '捲風',
+'卷发' => '捲髮',
+'捵面' => '捵麵',
+'捶炼' => '捶鍊',
+'扫荡' => '掃蕩',
+'授勋' => '授勳',
+'掌柜' => '掌柜',
+'排骨面' => '排骨麵',
+'挂名' => '掛名',
+'挂帘' => '掛帘',
+'挂历' => '掛曆',
+'挂钩' => '掛鈎',
+'挂钟' => '掛鐘',
+'挂面' => '掛麵',
+'采下' => '採下',
+'采伐' => '採伐',
+'采住' => '採住',
+'采信' => '採信',
+'采光' => '採光',
+'采到' => '採到',
+'采制' => '採制',
+'采区' => '採區',
+'采去' => '採去',
+'采取' => '採取',
+'采回' => '採回',
+'采在' => '採在',
+'采好' => '採好',
+'采得' => '採得',
+'采拾' => '採拾',
+'采挖' => '採挖',
+'采掘' => '採掘',
+'采摘' => '採摘',
+'采摭' => '採摭',
+'采择' => '採擇',
+'采撷' => '採擷',
+'采收' => '採收',
+'采料' => '採料',
+'采暖' => '採暖',
+'采桑' => '採桑',
+'采样' => '採樣',
+'采樵人' => '採樵人',
+'采树种' => '採樹種',
+'采气' => '採氣',
+'采油' => '採油',
+'采为' => '採為',
+'采煤' => '採煤',
+'采获' => '採獲',
+'采猎' => '採獵',
+'采珠' => '採珠',
+'采生折割' => '採生折割',
+'采用' => '採用',
+'采石' => '採石',
+'采砂场' => '採砂場',
+'采矿' => '採礦',
+'采种' => '採種',
+'采空区' => '採空區',
+'采空采穗' => '採空採穗',
+'采納' => '採納',
+'采纳' => '採納',
+'采给' => '採給',
+'采花' => '採花',
+'采芹人' => '採芹人',
+'采茶' => '採茶',
+'采菊' => '採菊',
+'采莲' => '採蓮',
+'采薇' => '採薇',
+'采薪' => '採薪',
+'采药' => '採藥',
+'采血' => '採血',
+'采行' => '採行',
+'采补' => '採補',
+'采访' => '採訪',
+'采证' => '採證',
+'采买' => '採買',
+'采购' => '採購',
+'采办' => '採辦',
+'采运' => '採運',
+'采过' => '採過',
+'采选' => '採選',
+'采金' => '採金',
+'采录' => '採錄',
+'采铁' => '採鐵',
+'采集' => '採集',
+'采风' => '採風',
+'采风问俗' => '採風問俗',
+'采食' => '採食',
+'采盐' => '採鹽',
+'掣签' => '掣籤',
+'控制' => '控制',
+'推情准理' => '推情準理',
+'推托之词' => '推托之詞',
+'推托' => '推託',
+'提子干' => '提子乾',
+'提心吊胆' => '提心弔膽',
+'提摩太后书' => '提摩太後書',
+'提高后' => '提高後',
+'插于' => '插於',
+'换签' => '換籤',
+'换只' => '換隻',
+'换发' => '換髮',
+'握发' => '握髮',
+'揩干' => '揩乾',
+'揪采' => '揪採',
+'揪发' => '揪髮',
+'揪须' => '揪鬚',
+'揭丑' => '揭醜',
+'挥手表' => '揮手表',
+'揮手表' => '揮手表',
+'搋面' => '搋麵',
+'损于' => '損於',
+'搏斗' => '搏鬥',
+'捣鬼吊白' => '搗鬼弔白',
+'扼肮' => '搤肮',
+'扼肮拊背' => '搤肮拊背',
+'搬斗' => '搬鬥',
+'搭干铺' => '搭乾鋪',
+'搭伙' => '搭夥',
+'摧坚获丑' => '摧堅獲醜',
+'摭采' => '摭採',
+'摸棱' => '摸稜',
+'摸钟' => '摸鐘',
+'折奏' => '摺奏',
+'折子' => '摺子',
+'折尺' => '摺尺',
+'折扇' => '摺扇',
+'折梯' => '摺梯',
+'折椅' => '摺椅',
+'折台' => '摺檯',
+'折叠' => '摺疊',
+'折痕' => '摺痕',
+'折篷' => '摺篷',
+'折纸' => '摺紙',
+'折裙' => '摺裙',
+'撇吊' => '撇弔',
+'捞干' => '撈乾',
+'捞面' => '撈麵',
+'撚须' => '撚鬚',
+'撞钟' => '撞鐘',
+'撞阵冲军' => '撞陣衝軍',
+'撤并' => '撤併',
+'拨谷' => '撥穀',
+'撩斗' => '撩鬥',
+'播于' => '播於',
+'扑冬' => '撲鼕',
+'扑咚' => '撲鼕',
+'扑咚咚' => '撲鼕鼕',
+'擀面' => '擀麵',
+'击扑' => '擊扑',
+'击钟' => '擊鐘',
+'操作钟' => '操作鐘',
+'担仔面' => '擔仔麵',
+'担担面' => '擔擔麵',
+'据云' => '據云',
+'擢发' => '擢髮',
+'擦干' => '擦乾',
+'拧干' => '擰乾',
+'摆钟' => '擺鐘',
+'摄制' => '攝製',
+'支干' => '支幹',
+'支配欲' => '支配慾',
+'收获' => '收穫',
+'改制成' => '改制成',
+'改征' => '改徵',
+'改采' => '改採',
+'放懞挣' => '放懞掙',
+'放荡' => '放蕩',
+'放松' => '放鬆',
+'政斗' => '政鬥',
+'故云' => '故云',
+'敏于' => '敏於',
+'败于' => '敗於',
+'教学钟' => '教學鐘',
+'教于' => '教於',
+'教范' => '教範',
+'敢干' => '敢幹',
+'敢情欲' => '敢情欲',
+'敢斗了胆' => '敢斗了膽',
+'散伙' => '散夥',
+'散于' => '散於',
+'散荡' => '散蕩',
+'敦朴' => '敦樸',
+'敬挽' => '敬輓',
+'敲扑' => '敲扑',
+'敲钟' => '敲鐘',
+'整只' => '整隻',
+'整风后' => '整風後',
+'整发用品' => '整髮用品',
+'整出剧' => '整齣劇',
+'整出戏' => '整齣戲',
+'整出电影' => '整齣電影',
+'敌忾同仇' => '敵愾同讎',
+'数只包括' => '數只包括',
+'数只可' => '數只可',
+'数只含' => '數只含',
+'数只在' => '數只在',
+'数只应' => '數只應',
+'数只是' => '數只是',
+'数只会' => '數只會',
+'数只有' => '數只有',
+'数只比' => '數只比',
+'数只能' => '數只能',
+'数只限' => '數只限',
+'数只需' => '數只需',
+'数只须' => '數只須',
+'数天后' => '數天後',
+'数字钟' => '數字鐘',
+'数字钟表' => '數字鐘錶',
+'数罪并罚' => '數罪併罰',
+'数与虏确' => '數與虜确',
+'数只' => '數隻',
+'文丑' => '文丑',
+'文学志' => '文學誌',
+'文征明' => '文徵明',
+'文思泉涌' => '文思泉湧',
+'文杰' => '文杰',
+'文采郁郁' => '文采郁郁',
+'斗牛星' => '斗牛星',
+'斫雕为朴' => '斫雕為樸',
+'新井里美' => '新井里美',
+'新干县' => '新幹縣',
+'新历' => '新曆',
+'新历史' => '新歷史',
+'新扎' => '新紮',
+'斲雕为朴' => '斲雕為樸',
+'断发' => '斷髮',
+'断发文身' => '斷髮文身',
+'方便面' => '方便麵',
+'方向往' => '方向往',
+'方志恒' => '方志恒',
+'方法里' => '方法裡',
+'方志' => '方誌',
+'于后' => '於後',
+'于征' => '於徵',
+'于海上' => '於海上',
+'于海边' => '於海邊',
+'于震中' => '於震中',
+'于震前' => '於震前',
+'于震后' => '於震後',
+'施舍' => '施捨',
+'施于' => '施於',
+'施舍之道' => '施舍之道',
+'旁征博引' => '旁徵博引',
+'旁注' => '旁註',
+'旅游' => '旅遊',
+'旋回' => '旋迴',
+'族里' => '族裡',
+'日心历表' => '日心曆表',
+'日历' => '日曆',
+'日历史' => '日歷史',
+'日里' => '日裡',
+'日志' => '日誌',
+'早于' => '早於',
+'旱干' => '旱乾',
+'升州' => '昇州',
+'升平' => '昇平',
+'升阳' => '昇陽',
+'昊天不吊' => '昊天不弔',
+'明征' => '明徵',
+'明目张胆' => '明目張胆',
+'明窗净几' => '明窗淨几',
+'明范' => '明範',
+'明鉴' => '明鑑',
+'易于' => '易於',
+'昔人有云' => '昔人有云',
+'星历' => '星曆',
+'星期后' => '星期後',
+'星历史' => '星歷史',
+'春游' => '春遊',
+'春香斗学' => '春香鬥學',
+'昭惠后' => '昭惠后',
+'是发小' => '是髮小',
+'时钟' => '時鐘',
+'时间不准' => '時間不準',
+'晃荡' => '晃蕩',
+'晚于' => '晚於',
+'晚钟' => '晚鐘',
+'晞发' => '晞髮',
+'晨钟' => '晨鐘',
+'普咚咚' => '普鼕鼕',
+'晾干' => '晾乾',
+'暗地里' => '暗地裡',
+'暗沟里' => '暗溝裡',
+'暗里' => '暗裡',
+'暗斗' => '暗鬥',
+'畅游' => '暢遊',
+'昵称' => '暱稱',
+'暴敛横征' => '暴斂橫徵',
+'历元' => '曆元',
+'历命' => '曆命',
+'历始' => '曆始',
+'历室' => '曆室',
+'历尾' => '曆尾',
+'历局' => '曆局',
+'历数书' => '曆數書',
+'历日' => '曆日',
+'历书' => '曆書',
+'历本' => '曆本',
+'历法' => '曆法',
+'历狱' => '曆獄',
+'历纪' => '曆紀',
+'历象' => '曆象',
+'晒干' => '曬乾',
+'晒谷' => '曬穀',
+'曰云' => '曰云',
+'更仆难数' => '更僕難數',
+'更签' => '更籤',
+'更钟' => '更鐘',
+'书签' => '書籤',
+'书面' => '書面',
+'曹子里' => '曹子里',
+'曼谷' => '曼谷',
+'曾朴' => '曾樸',
+'最多' => '最多',
+'最多只' => '最多只',
+'会干扰' => '會干擾',
+'會干擾' => '會干擾',
+'会干' => '會幹',
+'会吊' => '會弔',
+'会里' => '會裡',
+'月历' => '月曆',
+'月历史' => '月歷史',
+'月球历表' => '月球曆表',
+'月里来' => '月裡來',
+'月面' => '月面',
+'有事之无范' => '有事之無範',
+'有仆' => '有僕',
+'有只不' => '有只不',
+'有只允' => '有只允',
+'有只容' => '有只容',
+'有只採' => '有只採',
+'有只采' => '有只採',
+'有只是' => '有只是',
+'有只用' => '有只用',
+'有回复' => '有回覆',
+'有够赞' => '有夠讚',
+'有征伐' => '有征伐',
+'有征战' => '有征戰',
+'有征戰' => '有征戰',
+'有征服' => '有征服',
+'有征討' => '有征討',
+'有征讨' => '有征討',
+'有征' => '有徵',
+'有恒街' => '有恒街',
+'有栖川' => '有栖川',
+'有准' => '有準',
+'有棱有角' => '有稜有角',
+'有只' => '有隻',
+'有余' => '有餘',
+'有发头陀寺' => '有髮頭陀寺',
+'服于' => '服於',
+'望了望' => '望了望',
+'望后石' => '望后石',
+'朝乾夕惕' => '朝乾夕惕',
+'朝钟' => '朝鐘',
+'朝鲜于' => '朝鮮於',
+'朦胧' => '朦朧',
+'蒙胧' => '朦朧',
+'木偶戏扎' => '木偶戲紮',
+'木材干馏' => '木材乾餾',
+'木梁' => '木樑',
+'木签' => '木籤',
+'木制' => '木製',
+'木钟' => '木鐘',
+'未干' => '未乾',
+'未干涉' => '未干涉',
+'未干預' => '未干預',
+'未干预' => '未干預',
+'本庄' => '本庄',
+'本征' => '本徵',
+'本出戏' => '本齣戲',
+'术赤' => '朮赤',
+'朱庆余' => '朱慶餘',
+'朱理安历' => '朱理安曆',
+'朱理安历史' => '朱理安歷史',
+'朴子里' => '朴子里',
+'李志喜' => '李志喜',
+'李适' => '李适',
+'李连杰' => '李連杰',
+'李連杰' => '李連杰',
+'材干' => '材幹',
+'村落发' => '村落發',
+'村里' => '村裡',
+'村里長' => '村里長',
+'村里长' => '村里長',
+'杜老志道' => '杜老誌道',
+'杞宋无征' => '杞宋無徵',
+'束发' => '束髮',
+'杠人' => '杠人',
+'杠梁' => '杠梁',
+'杠毂' => '杠轂',
+'杠轂' => '杠轂',
+'杯干' => '杯乾',
+'杯面' => '杯麵',
+'杰伦' => '杰倫',
+'杰倫' => '杰倫',
+'杰威尔' => '杰威爾',
+'杰威爾' => '杰威爾',
+'东周钟' => '東周鐘',
+'东岳' => '東嶽',
+'東湖里' => '東湖里',
+'东冲西突' => '東衝西突',
+'东游' => '東遊',
+'松口镇' => '松口鎮',
+'松山庄' => '松山庄',
+'松溪县' => '松谿縣',
+'板荡' => '板蕩',
+'林宏岳' => '林宏嶽',
+'林杰樑' => '林杰樑',
+'林郁方' => '林郁方',
+'林钟' => '林鐘',
+'林鹅峰' => '林鵞峰',
+'果干' => '果乾',
+'果子干' => '果子乾',
+'果累累' => '果纍纍',
+'枝干' => '枝幹',
+'枯干' => '枯乾',
+'架钟' => '架鐘',
+'某只' => '某隻',
+'染指于' => '染指於',
+'染殿后' => '染殿后',
+'染发' => '染髮',
+'柜上' => '柜上',
+'柜子' => '柜子',
+'柜柳' => '柜柳',
+'查封后' => '查封後',
+'柱梁' => '柱樑',
+'柳斌杰' => '柳斌杰',
+'柳诒征' => '柳詒徵',
+'栖栖皇皇' => '栖栖皇皇',
+'栗栖溪' => '栗栖溪',
+'校准' => '校準',
+'校舍' => '校舍',
+'核准的' => '核准的',
+'格于' => '格於',
+'格范' => '格範',
+'格里历' => '格里曆',
+'格里高利历' => '格里高利曆',
+'格斗' => '格鬥',
+'桂圆干' => '桂圓乾',
+'框里' => '框裡',
+'桌几' => '桌几',
+'桌历' => '桌曆',
+'桌历史' => '桌歷史',
+'桌游' => '桌遊',
+'桑干' => '桑乾',
+'杆枪' => '桿槍',
+'杆秤' => '桿秤',
+'杆菌' => '桿菌',
+'梁上君子' => '梁上君子',
+'梁启超' => '梁啓超',
+'条干' => '條幹',
+'梨干' => '梨乾',
+'梯冲' => '梯衝',
+'械系' => '械繫',
+'械斗' => '械鬥',
+'弃舍' => '棄捨',
+'棉里' => '棉裡',
+'棉制' => '棉製',
+'棒子面' => '棒子麵',
+'栋梁' => '棟樑',
+'棫朴' => '棫樸',
+'森林里' => '森林裡',
+'棺材里' => '棺材裡',
+'植发' => '植髮',
+'椒面' => '椒麵',
+'椰枣干' => '椰棗乾',
+'杨雅筑' => '楊雅筑',
+'楊雅筑' => '楊雅筑',
+'桢干' => '楨幹',
+'业余' => '業餘',
+'榨干' => '榨乾',
+'枪杆' => '槍桿',
+'杠杆' => '槓桿',
+'乐器钟' => '樂器鐘',
+'乐游原' => '樂遊原',
+'樊于期' => '樊於期',
+'梁上' => '樑上',
+'梁柱' => '樑柱',
+'樗里子' => '樗里子',
+'标标致致' => '標標致致',
+'标准' => '標準',
+'标签' => '標籤',
+'标致' => '標緻',
+'标注' => '標註',
+'标志' => '標誌',
+'模棱' => '模稜',
+'模范' => '模範',
+'模范七棒' => '模范七棒',
+'模范三军' => '模范三軍',
+'模范三軍' => '模范三軍',
+'模范棒棒堂' => '模范棒棒堂',
+'模制' => '模製',
+'样范' => '樣範',
+'樵采' => '樵採',
+'朴修斯' => '樸修斯',
+'朴厚' => '樸厚',
+'朴学' => '樸學',
+'朴实' => '樸實',
+'朴念仁' => '樸念仁',
+'朴拙' => '樸拙',
+'朴樕' => '樸樕',
+'朴父' => '樸父',
+'朴直' => '樸直',
+'朴素' => '樸素',
+'朴讷' => '樸訥',
+'朴质' => '樸質',
+'朴鄙' => '樸鄙',
+'朴重' => '樸重',
+'朴野' => '樸野',
+'朴钝' => '樸鈍',
+'朴陋' => '樸陋',
+'朴马' => '樸馬',
+'朴鲁' => '樸魯',
+'树干' => '樹幹',
+'树林里' => '樹林裡',
+'树梁' => '樹樑',
+'桥梁' => '橋樑',
+'机械系' => '機械系',
+'機械系' => '機械系',
+'机械表' => '機械錶',
+'机械钟' => '機械鐘',
+'机械钟表' => '機械鐘錶',
+'横峰县' => '橫峯縣',
+'横征暴敛' => '橫徵暴斂',
+'横梁' => '橫樑',
+'横冲' => '橫衝',
+'台布' => '檯布',
+'台历' => '檯曆',
+'台灯' => '檯燈',
+'台球' => '檯球',
+'台面上' => '檯面上',
+'台面化' => '檯面化',
+'柜台' => '櫃檯',
+'柜里' => '櫃裡',
+'栉发工' => '櫛髮工',
+'欲海难填' => '欲海難填',
+'欺蒙' => '欺矇',
+'歌后' => '歌后',
+'歌钟' => '歌鐘',
+'欧游' => '歐遊',
+'止于' => '止於',
+'正官庄' => '正官庄',
+'正杰' => '正杰',
+'武丑' => '武丑',
+'武后' => '武后',
+'武斗' => '武鬥',
+'岁聿云暮' => '歲聿云暮',
+'历史里' => '歷史裡',
+'归并' => '歸併',
+'归于' => '歸於',
+'归余' => '歸餘',
+'歹斗' => '歹鬥',
+'死于' => '死於',
+'死里求生' => '死裡求生',
+'死里逃生' => '死裡逃生',
+'殖谷' => '殖穀',
+'残肴' => '殘肴',
+'残余' => '殘餘',
+'僵尸' => '殭屍',
+'殷师牛斗' => '殷師牛鬥',
+'殷鉴' => '殷鑑',
+'壳里' => '殼裡',
+'殿钟自鸣' => '殿鐘自鳴',
+'毁于' => '毀於',
+'毁钟为铎' => '毀鐘為鐸',
+'殴斗' => '毆鬥',
+'母后' => '母后',
+'母范' => '母範',
+'母丑' => '母醜',
+'每每只' => '每每只',
+'每只' => '每隻',
+'毗婆尸佛' => '毗婆尸佛',
+'毛坏' => '毛坏',
+'毛姜' => '毛薑',
+'毛发' => '毛髮',
+'毫厘' => '毫釐',
+'毫发' => '毫髮',
+'气冲斗牛' => '氣沖斗牛',
+'气郁' => '氣鬱',
+'氤郁' => '氤鬱',
+'水来汤里去' => '水來湯裡去',
+'水准' => '水準',
+'水无怜奈' => '水無怜奈',
+'水表示' => '水表示',
+'水表面' => '水表面',
+'水里' => '水裡',
+'水里商工' => '水里商工',
+'水里溪' => '水里溪',
+'水里濁水溪' => '水里濁水溪',
+'水里鄉' => '水里鄉',
+'水里高級商工' => '水里高級商工',
+'水里鳳林' => '水里鳳林',
+'水表' => '水錶',
+'永历' => '永曆',
+'永历史' => '永歷史',
+'永志不忘' => '永誌不忘',
+'求知欲' => '求知慾',
+'求签' => '求籤',
+'池里' => '池裡',
+'污蔑' => '污衊',
+'汤卤' => '汤滷',
+'汲于' => '汲於',
+'决斗' => '決鬥',
+'沈淀' => '沈澱',
+'沈郁' => '沈鬱',
+'沉淀' => '沉澱',
+'沉郁' => '沉鬱',
+'没干没净' => '沒乾沒淨',
+'没事干' => '沒事幹',
+'没干' => '沒幹',
+'没折至' => '沒摺至',
+'没样范' => '沒樣範',
+'没准' => '沒準',
+'冲冠发怒' => '沖冠髮怒',
+'冲天' => '沖天',
+'沙琅' => '沙瑯',
+'沙羡' => '沙羡',
+'沙里淘金' => '沙裡淘金',
+'河岳' => '河嶽',
+'河里' => '河裡',
+'油泼面' => '油潑麵',
+'油斗' => '油鬥',
+'油面' => '油麵',
+'治愈' => '治癒',
+'沿溯' => '沿泝',
+'法自制' => '法自制',
+'法里,' => '法裡,',
+'泛游' => '泛遊',
+'泡制' => '泡製',
+'泡面' => '泡麵',
+'波棱菜' => '波稜菜',
+'波发藻' => '波髮藻',
+'泥于' => '泥於',
+'注云' => '注云',
+'注释' => '注釋',
+'泰山梁木' => '泰山梁木',
+'泱郁' => '泱鬱',
+'泳气钟' => '泳氣鐘',
+'洄游' => '洄遊',
+'洋河大曲' => '洋河大麯',
+'洒家' => '洒家',
+'洒扫' => '洒掃',
+'洒水' => '洒水',
+'洒洒' => '洒洒',
+'洒淅' => '洒淅',
+'洒涤' => '洒滌',
+'洒濯' => '洒濯',
+'洒然' => '洒然',
+'洒脱' => '洒脫',
+'洗炼' => '洗鍊',
+'洗练' => '洗鍊',
+'洗发' => '洗髮',
+'洛钟东应' => '洛鐘東應',
+'洞里' => '洞裡',
+'洞里萨' => '洞里薩',
+'洞里薩' => '洞里薩',
+'泄欲' => '洩慾',
+'洪范' => '洪範',
+'洪谷子' => '洪谷子',
+'洪适' => '洪适',
+'洪钟' => '洪鐘',
+'汹涌' => '洶湧',
+'流征' => '流徵',
+'流于' => '流於',
+'流荡' => '流蕩',
+'流风余俗' => '流風餘俗',
+'流风余韵' => '流風餘韻',
+'浩浩荡荡' => '浩浩蕩蕩',
+'浩荡' => '浩蕩',
+'浪荡' => '浪蕩',
+'浪游' => '浪遊',
+'浮于' => '浮於',
+'浮荡' => '浮蕩',
+'浮夸' => '浮誇',
+'浮松' => '浮鬆',
+'海干' => '海乾',
+'海淀山后' => '海淀山後',
+'海淀山後' => '海淀山後',
+'浸卤' => '浸滷',
+'涂善妮' => '涂善妮',
+'涂坤' => '涂坤',
+'涂壮勋' => '涂壯勳',
+'涂壯勳' => '涂壯勳',
+'涂天相' => '涂天相',
+'涂姓' => '涂姓',
+'涂序瑄' => '涂序瑄',
+'涂敏恆' => '涂敏恆',
+'涂敏恒' => '涂敏恆',
+'涂泽民' => '涂澤民',
+'涂澤民' => '涂澤民',
+'涂绍煃' => '涂紹煃',
+'涂羽卿' => '涂羽卿',
+'涂謹申' => '涂謹申',
+'涂谨申' => '涂謹申',
+'涂逢年' => '涂逢年',
+'涂醒哲' => '涂醒哲',
+'涂長望' => '涂長望',
+'涂长望' => '涂長望',
+'涂鴻欽' => '涂鴻欽',
+'涂鸿钦' => '涂鴻欽',
+'涌水塘' => '涌水塘',
+'涳蒙' => '涳濛',
+'涸干' => '涸乾',
+'凉席' => '涼蓆',
+'凉面' => '涼麵',
+'淋余土' => '淋餘土',
+'淑范' => '淑範',
+'泪干' => '淚乾',
+'泪如泉涌' => '淚如泉湧',
+'淡于' => '淡於',
+'淡蒙蒙' => '淡濛濛',
+'净余' => '淨餘',
+'净发' => '淨髮',
+'淫欲' => '淫慾',
+'淫荡' => '淫蕩',
+'淬炼' => '淬鍊',
+'深山何处钟' => '深山何處鐘',
+'深山里' => '深山裡',
+'淳于' => '淳于',
+'淳朴' => '淳樸',
+'渊淳岳峙' => '淵淳嶽峙',
+'渊里' => '淵裡',
+'浅淀' => '淺澱',
+'清心寡欲' => '清心寡欲',
+'渠冲' => '渠衝',
+'测不准' => '測不準',
+'港制' => '港製',
+'游离' => '游離',
+'浑朴' => '渾樸',
+'浑个' => '渾箇',
+'湖里' => '湖裡',
+'湘累' => '湘纍',
+'涌上' => '湧上',
+'涌来' => '湧來',
+'涌入' => '湧入',
+'涌出' => '湧出',
+'涌向' => '湧向',
+'涌水' => '湧水',
+'涌泉' => '湧泉',
+'涌现' => '湧現',
+'涌起' => '湧起',
+'涌进' => '湧進',
+'湮郁' => '湮鬱',
+'汤下面' => '湯下麵',
+'汤团' => '湯糰',
+'汤面' => '湯麵',
+'源于' => '源於',
+'准不准' => '準不準',
+'准例' => '準例',
+'准保' => '準保',
+'准备' => '準備',
+'准儿' => '準兒',
+'准分子' => '準分子',
+'准则' => '準則',
+'准噶尔' => '準噶爾',
+'准定' => '準定',
+'准平原' => '準平原',
+'准度' => '準度',
+'准式' => '準式',
+'准拿督' => '準拿督',
+'准据' => '準據',
+'准拟' => '準擬',
+'准新娘' => '準新娘',
+'准新郎' => '準新郎',
+'准星' => '準星',
+'准是' => '準是',
+'准时' => '準時',
+'准会' => '準會',
+'准决赛' => '準決賽',
+'准的' => '準的',
+'准直' => '準直',
+'准确' => '準確',
+'准线' => '準線',
+'准绳' => '準繩',
+'准话' => '準話',
+'准谱' => '準譜',
+'准货币' => '準貨幣',
+'准军事' => '準軍事',
+'准头' => '準頭',
+'准点' => '準點',
+'沟大曲' => '溝大麯',
+'沟谷' => '溝谷',
+'溟蒙' => '溟濛',
+'溢于' => '溢於',
+'温洛克期' => '溫洛克期',
+'溲面' => '溲麵',
+'溺于' => '溺於',
+'滃郁' => '滃鬱',
+'滑借' => '滑藉',
+'汇丰' => '滙豐',
+'渗漓' => '滲灕',
+'卤了' => '滷了',
+'卤五花' => '滷五花',
+'卤味' => '滷味',
+'卤好' => '滷好',
+'卤子' => '滷子',
+'卤料' => '滷料',
+'卤水' => '滷水',
+'卤汁' => '滷汁',
+'卤湖' => '滷湖',
+'卤煮' => '滷煮',
+'卤牛' => '滷牛',
+'卤的' => '滷的',
+'卤肉' => '滷肉',
+'卤菜' => '滷菜',
+'卤蛋' => '滷蛋',
+'卤虾' => '滷蝦',
+'卤制' => '滷製',
+'卤豆' => '滷豆',
+'卤鸡' => '滷雞',
+'卤鸭' => '滷鴨',
+'卤鹅' => '滷鵝',
+'卤面' => '滷麵',
+'满拼自尽' => '滿拚自盡',
+'满满当当' => '滿滿當當',
+'满头洋发' => '滿頭洋髮',
+'漂荡' => '漂蕩',
+'漕挽' => '漕輓',
+'沤郁' => '漚鬱',
+'漠里' => '漠裡',
+'汉弥登钟' => '漢彌登鐘',
+'漫卷' => '漫捲',
+'漫游' => '漫遊',
+'潜意识里' => '潛意識裡',
+'潜水表' => '潛水錶',
+'潜水钟' => '潛水鐘',
+'潜水钟表' => '潛水鐘錶',
+'潭里' => '潭裡',
+'潮涌' => '潮湧',
+'溃于' => '潰於',
+'涩谷区' => '澀谷區',
+'澄江县' => '澂江縣',
+'澄澹精致' => '澄澹精致',
+'澒蒙' => '澒濛',
+'淀乃不耕之地' => '澱乃不耕之地',
+'淀北片' => '澱北片',
+'淀山' => '澱山',
+'淀淀' => '澱澱',
+'淀积' => '澱積',
+'淀粉' => '澱粉',
+'淀解物' => '澱解物',
+'淀谓之滓' => '澱謂之滓',
+'澹台' => '澹臺',
+'澹荡' => '澹蕩',
+'激斗' => '激鬥',
+'浓发' => '濃髮',
+'蒙汜' => '濛汜',
+'蒙蒙细雨' => '濛濛細雨',
+'蒙雾' => '濛霧',
+'蒙鸿' => '濛鴻',
+'浚州' => '濬州',
+'浚县' => '濬縣',
+'滨田里佳子' => '濱田里佳子',
+'沈丹客运' => '瀋丹客運',
+'沈丹线' => '瀋丹線',
+'沈丹铁路' => '瀋丹鐵路',
+'沈丹高' => '瀋丹高',
+'沈北' => '瀋北',
+'沈吉' => '瀋吉',
+'沈大线' => '瀋大線',
+'沈大铁路' => '瀋大鐵路',
+'沈大高速' => '瀋大高速',
+'沈山线' => '瀋山線',
+'沈山铁路' => '瀋山鐵路',
+'沈州' => '瀋州',
+'沈抚' => '瀋撫',
+'沈水' => '瀋水',
+'沈河' => '瀋河',
+'沈海铁路' => '瀋海鐵路',
+'沈海高速' => '瀋海高速',
+'沈阳' => '瀋陽',
+'泸州大曲' => '瀘州大麯',
+'沥干' => '瀝乾',
+'潇洒' => '瀟洒',
+'弥山遍野' => '瀰山遍野',
+'弥漫' => '瀰漫',
+'弥弥' => '瀰瀰',
+'漓水' => '灕水',
+'漓江' => '灕江',
+'漓湘' => '灕湘',
+'漓然' => '灕然',
+'滩涂' => '灘涂',
+'滩席' => '灘蓆',
+'火并非' => '火並非',
+'火并' => '火併',
+'火山里' => '火山裡',
+'火拼' => '火拚',
+'火折子' => '火摺子',
+'火签' => '火籤',
+'灰蒙' => '灰濛',
+'灰蒙蒙' => '灰濛濛',
+'炆面' => '炆麵',
+'炒面' => '炒麵',
+'炮制' => '炮製',
+'炸酱面' => '炸醬麵',
+'为准' => '為準',
+'为鉴' => '為鑑',
+'乌兹冲锋枪' => '烏茲衝鋒槍',
+'乌苏里' => '烏蘇里',
+'乌发' => '烏髮',
+'乌龙面' => '烏龍麵',
+'烘干' => '烘乾',
+'烘制' => '烘製',
+'烤干' => '烤乾',
+'烤卤' => '烤滷',
+'烹制' => '烹製',
+'焙干' => '焙乾',
+'无征不信' => '無徵不信',
+'无业游民' => '無業游民',
+'无梁楼盖' => '無樑樓蓋',
+'无余' => '無餘',
+'炼制' => '煉製',
+'煎面' => '煎麵',
+'烟卷' => '煙捲',
+'烟台' => '煙臺',
+'照入签' => '照入籤',
+'照相干片' => '照相乾片',
+'煨干' => '煨乾',
+'煮面' => '煮麵',
+'熊杰' => '熊杰',
+'荧郁' => '熒鬱',
+'燎发' => '燎髮',
+'烧干' => '燒乾',
+'燕几' => '燕几',
+'燕游' => '燕遊',
+'烫一个发' => '燙一個髮',
+'烫一次发' => '燙一次髮',
+'烫个发' => '燙個髮',
+'烫完发' => '燙完髮',
+'烫次发' => '燙次髮',
+'烫发' => '燙髮',
+'烫面' => '燙麵',
+'营干' => '營幹',
+'烩面' => '燴麵',
+'烬余' => '燼餘',
+'爆发指数' => '爆發指數',
+'争奇斗妍' => '爭奇鬥妍',
+'争奇斗异' => '爭奇鬥異',
+'争奇斗艳' => '爭奇鬥豔',
+'争妍斗奇' => '爭妍鬥奇',
+'争妍斗艳' => '爭妍鬥豔',
+'争红斗紫' => '爭紅鬥紫',
+'争斗' => '爭鬥',
+'爰定祥历' => '爰定祥厤',
+'爽荡' => '爽蕩',
+'尔冬陞' => '爾冬陞',
+'墙里' => '牆裡',
+'片里' => '片裡',
+'片言只语' => '片言隻語',
+'版图里' => '版圖裡',
+'牙签' => '牙籤',
+'牛只' => '牛隻',
+'物欲' => '物慾',
+'抵牾' => '牴牾',
+'抵触' => '牴觸',
+'特别致' => '特别致',
+'特制住' => '特制住',
+'特制定' => '特制定',
+'特制止' => '特制止',
+'特制订' => '特制訂',
+'特征' => '特徵',
+'特制' => '特製',
+'牵一发' => '牽一髮',
+'牵系' => '牽繫',
+'荦确' => '犖确',
+'狂并潮' => '狂併潮',
+'狃于' => '狃於',
+'狄志杰' => '狄志杰',
+'狐借虎威' => '狐藉虎威',
+'猛于' => '猛於',
+'猛冲' => '猛衝',
+'猜三划五' => '猜三划五',
+'犹如表' => '猶如錶',
+'犹如钟' => '猶如鐘',
+'犹如钟表' => '猶如鐘錶',
+'狱里' => '獄裡',
+'奖杯' => '獎盃',
+'独裁制' => '獨裁制',
+'独辟蹊径' => '獨闢蹊徑',
+'获匪其丑' => '獲匪其醜',
+'兽欲' => '獸慾',
+'献丑' => '獻醜',
+'玉历' => '玉曆',
+'玉历史' => '玉歷史',
+'玉米面' => '玉米面',
+'王侯后' => '王侯后',
+'王后' => '王后',
+'王添灯' => '王添灯',
+'王田里' => '王田里',
+'王鉴' => '王鑑',
+'王余鱼' => '王餘魚',
+'珍肴异馔' => '珍肴異饌',
+'班里' => '班裡',
+'现于' => '現於',
+'球台' => '球檯',
+'理一个发' => '理一個髮',
+'理一次发' => '理一次髮',
+'理个发' => '理個髮',
+'理完发' => '理完髮',
+'理次发' => '理次髮',
+'理发' => '理髮',
+'琴钟' => '琴鐘',
+'珐琅' => '琺瑯',
+'瑞城里' => '瑞城里',
+'瑞征' => '瑞徵',
+'瑶签' => '瑤籤',
+'环游' => '環遊',
+'瓷制' => '瓷製',
+'甄后' => '甄后',
+'瓮安' => '甕安',
+'甚于' => '甚於',
+'甜水面' => '甜水麵',
+'甜面酱' => '甜麵醬',
+'生力面' => '生力麵',
+'生于' => '生於',
+'生殖洄游' => '生殖洄游',
+'生物钟' => '生物鐘',
+'生发生' => '生發生',
+'生华发' => '生華髮',
+'生姜' => '生薑',
+'生锈' => '生鏽',
+'生发' => '生髮',
+'产卵洄游' => '產卵洄游',
+'苏醒' => '甦醒',
+'用于' => '用於',
+'用法里' => '用法裡',
+'甩发' => '甩髮',
+'田子里' => '田子里',
+'田庄英雄' => '田庄英雄',
+'田谷' => '田穀',
+'田里' => '田裡',
+'由余' => '由余',
+'由于' => '由於',
+'甲胄' => '甲冑',
+'甲后路' => '甲后路',
+'男仆' => '男僕',
+'界里' => '界裡',
+'畏于' => '畏於',
+'留长发' => '留長髮',
+'留发' => '留髮',
+'毕于' => '畢於',
+'毕业于' => '畢業於',
+'毕生发展' => '畢生發展',
+'当准' => '當準',
+'当当丁丁' => '當當丁丁',
+'当当网' => '當當網',
+'叠席' => '疊蓆',
+'疏松' => '疏鬆',
+'疑系' => '疑係',
+'疑凶' => '疑兇',
+'疲于' => '疲於',
+'疲困' => '疲睏',
+'病征' => '病徵',
+'病愈' => '病癒',
+'病余' => '病餘',
+'痊愈' => '痊癒',
+'痒疹' => '痒疹',
+'痒痒' => '痒痒',
+'痳木' => '痳木',
+'痳疹' => '痳疹',
+'痳病' => '痳病',
+'痳痹' => '痳痺',
+'痳疯' => '痳瘋',
+'愈合' => '癒合',
+'症结' => '癥結',
+'癸丑' => '癸丑',
+'发干' => '發乾',
+'发呆' => '發獃',
+'发签' => '發籤',
+'发松' => '發鬆',
+'发面' => '發麵',
+'白干儿' => '白乾兒',
+'白术' => '白朮',
+'白朴' => '白樸',
+'白净面皮' => '白淨面皮',
+'白发其事' => '白發其事',
+'白皮松' => '白皮松',
+'白粉面' => '白粉麵',
+'白里透红' => '白裡透紅',
+'白面包青天' => '白面包青天',
+'白发' => '白髮',
+'白胡' => '白鬍',
+'白霉' => '白黴',
+'百个' => '百個',
+'百只可' => '百只可',
+'百只够' => '百只夠',
+'百只夠' => '百只夠',
+'百只怕' => '百只怕',
+'百只足够' => '百只足夠',
+'百只足夠' => '百只足夠',
+'百周后' => '百周後',
+'百天后' => '百天後',
+'百子里' => '百子里',
+'百年' => '百年',
+'百拙千丑' => '百拙千醜',
+'百科里' => '百科裡',
+'百谷' => '百穀',
+'百扎' => '百紮',
+'百花历' => '百花曆',
+'百花历史' => '百花歷史',
+'百炼' => '百鍊',
+'百只' => '百隻',
+'百余' => '百餘',
+'的回复' => '的回覆',
+'的图里' => '的圖裡',
+'的山里' => '的山裡',
+'的干将' => '的幹將',
+'的个中' => '的箇中',
+'的钟' => '的鐘',
+'的长发' => '的長髮',
+'的发小' => '的髮小',
+'皆可作淀' => '皆可作澱',
+'皆准' => '皆準',
+'皇后' => '皇后',
+'皇历' => '皇曆',
+'皇极历' => '皇極曆',
+'皇极历史' => '皇極歷史',
+'皇历史' => '皇歷史',
+'皓发' => '皓髮',
+'皮制服' => '皮制服',
+'皮托管' => '皮托管',
+'皮肤' => '皮膚',
+'皮里春秋' => '皮裡春秋',
+'皮里阳秋' => '皮裡陽秋',
+'皮制' => '皮製',
+'皮松' => '皮鬆',
+'皱别' => '皺彆',
+'皱折' => '皺摺',
+'盆吊' => '盆弔',
+'盈余' => '盈餘',
+'益于' => '益於',
+'盒里' => '盒裡',
+'盛赞' => '盛讚',
+'盗采' => '盜採',
+'盗钟' => '盜鐘',
+'监制' => '監製',
+'盘里' => '盤裡',
+'盘回' => '盤迴',
+'卢棱伽' => '盧稜伽',
+'荡气回肠' => '盪氣迴腸',
+'盲干' => '盲幹',
+'直于' => '直於',
+'直冲' => '直衝',
+'相并' => '相併',
+'相克制' => '相克制',
+'相克服' => '相克服',
+'相克' => '相剋',
+'相干' => '相干',
+'相于' => '相於',
+'相冲' => '相衝',
+'相斗' => '相鬥',
+'看下表' => '看下錶',
+'看下钟' => '看下鐘',
+'看法里' => '看法裡',
+'看准' => '看準',
+'看表面' => '看表面',
+'看表' => '看錶',
+'看钟' => '看鐘',
+'真凶' => '真兇',
+'真个' => '真箇',
+'真丑' => '真醜',
+'眼干' => '眼乾',
+'眼帘' => '眼帘',
+'眼眶里' => '眼眶裡',
+'眼睛里' => '眼睛裡',
+'眼里' => '眼裡',
+'着眼于' => '着眼於',
+'困乏' => '睏乏',
+'困了' => '睏了',
+'困倦' => '睏倦',
+'困觉' => '睏覺',
+'睡游病' => '睡遊病',
+'瞄准' => '瞄準',
+'瞅下表' => '瞅下錶',
+'瞅下钟' => '瞅下鐘',
+'瞎蒙' => '瞎矇',
+'了望' => '瞭望',
+'了然' => '瞭然',
+'了若指掌' => '瞭若指掌',
+'瞳蒙' => '瞳矇',
+'蒙事' => '矇事',
+'蒙昧无知' => '矇昧無知',
+'蒙松雨' => '矇松雨',
+'蒙混' => '矇混',
+'蒙瞍' => '矇瞍',
+'蒙眬' => '矇矓',
+'蒙聩' => '矇聵',
+'蒙头转' => '矇頭轉',
+'蒙骗' => '矇騙',
+'瞩托' => '矚託',
+'矜夸' => '矜誇',
+'短几' => '短几',
+'短于' => '短於',
+'短发生' => '短發生',
+'短发' => '短髮',
+'矮几' => '矮几',
+'石几' => '石几',
+'石杠' => '石杠',
+'石梁' => '石樑',
+'石英钟' => '石英鐘',
+'石英钟表' => '石英鐘錶',
+'石钟' => '石鐘',
+'研制' => '研製',
+'砰当' => '砰噹',
+'破鉴' => '破鑑',
+'朱砂' => '硃砂',
+'硬干' => '硬幹',
+'确瘠' => '确瘠',
+'碑志' => '碑誌',
+'碗里' => '碗裡',
+'碰钟' => '碰鐘',
+'确系' => '確係',
+'码表' => '碼錶',
+'磁制' => '磁製',
+'磨蝎' => '磨蝎',
+'磨制' => '磨製',
+'磨炼' => '磨鍊',
+'磬钟' => '磬鐘',
+'硗确' => '磽确',
+'砻谷' => '礱穀',
+'示范' => '示範',
+'社里' => '社裡',
+'祝赞' => '祝讚',
+'祝发' => '祝髮',
+'神荼郁垒' => '神荼鬱壘',
+'神游' => '神遊',
+'神雕像' => '神雕像',
+'神雕' => '神鵰',
+'祭吊' => '祭弔',
+'禁欲' => '禁慾',
+'禁欲主义' => '禁欲主義',
+'祸于' => '禍於',
+'御侮' => '禦侮',
+'御寇' => '禦寇',
+'御寒' => '禦寒',
+'御敌' => '禦敵',
+'礼赞' => '禮讚',
+'禾谷' => '禾穀',
+'秃妃之发' => '禿妃之髮',
+'秃发' => '禿髮',
+'秀发动' => '秀發動',
+'秀发展' => '秀發展',
+'秀发布' => '秀發布',
+'秀发村' => '秀發村',
+'秀发现' => '秀發現',
+'秀发生' => '秀發生',
+'秀发表' => '秀發表',
+'秀发起' => '秀發起',
+'秀发' => '秀髮',
+'私下里' => '私下裡',
+'私欲' => '私慾',
+'私斗' => '私鬥',
+'秋游' => '秋遊',
+'种丹妮' => '种丹妮',
+'种师中' => '种師中',
+'种师道' => '种師道',
+'种放' => '种放',
+'科尼亚克期' => '科尼亞克期',
+'科斗' => '科斗',
+'科范' => '科範',
+'秒表明' => '秒表明',
+'秒表示' => '秒表示',
+'秒钟' => '秒鐘',
+'秤杆' => '秤桿',
+'秦沈客运' => '秦瀋客運',
+'移祸于' => '移禍於',
+'稀松' => '稀鬆',
+'棱台' => '稜台',
+'棱子' => '稜子',
+'棱层' => '稜層',
+'棱柱' => '稜柱',
+'棱登' => '稜登',
+'棱棱' => '稜稜',
+'棱等登' => '稜等登',
+'棱线' => '稜線',
+'棱缝' => '稜縫',
+'棱角' => '稜角',
+'棱锥' => '稜錐',
+'棱镜' => '稜鏡',
+'棱体' => '稜體',
+'种谷' => '種穀',
+'称赞' => '稱讚',
+'稻谷' => '稻穀',
+'稽征' => '稽徵',
+'谷人' => '穀人',
+'谷保家商' => '穀保家商',
+'谷仓' => '穀倉',
+'谷圭' => '穀圭',
+'谷场' => '穀場',
+'谷子' => '穀子',
+'谷日' => '穀日',
+'谷旦' => '穀旦',
+'谷梁' => '穀梁',
+'谷壳' => '穀殼',
+'谷物' => '穀物',
+'谷皮' => '穀皮',
+'谷神' => '穀神',
+'谷禄' => '穀祿',
+'谷谷' => '穀穀',
+'谷米' => '穀米',
+'谷粒' => '穀粒',
+'谷舱' => '穀艙',
+'谷苗' => '穀苗',
+'谷草' => '穀草',
+'谷贵饿农' => '穀貴餓農',
+'谷贱伤农' => '穀賤傷農',
+'谷雨' => '穀雨',
+'谷类' => '穀類',
+'谷食' => '穀食',
+'穆棱' => '穆稜',
+'穆罕默德历' => '穆罕默德曆',
+'穆罕默德历史' => '穆罕默德歷史',
+'积淀' => '積澱',
+'积谷' => '積穀',
+'积谷防饥' => '積穀防饑',
+'积郁' => '積鬱',
+'稳健的台风' => '穩健的台風',
+'稳扎' => '穩紮',
+'空蒙' => '空濛',
+'空荡' => '空蕩',
+'空荡荡' => '空蕩蕩',
+'空钟' => '空鐘',
+'空余' => '空餘',
+'窒欲' => '窒慾',
+'窗明几亮' => '窗明几亮',
+'窗明几净' => '窗明几淨',
+'窗帘' => '窗簾',
+'窝里' => '窩裡',
+'窝里斗' => '窩裡鬥',
+'穷于' => '窮於',
+'穷追不舍' => '窮追不捨',
+'穷发' => '窮髮',
+'窃钟掩耳' => '竊鐘掩耳',
+'立于' => '立於',
+'立范' => '立範',
+'童仆' => '童僕',
+'竞斗' => '競鬥',
+'竹几' => '竹几',
+'竹林之游' => '竹林之遊',
+'竹签' => '竹籤',
+'竹席' => '竹蓆',
+'竹制' => '竹製',
+'竹溪县' => '竹谿縣',
+'笑里藏刀' => '笑裡藏刀',
+'第一出现' => '第一出現',
+'第一出現' => '第一出現',
+'第一出線' => '第一出線',
+'第一出线' => '第一出線',
+'第一出' => '第一齣',
+'第七出' => '第七齣',
+'第三出局' => '第三出局',
+'第三出' => '第三齣',
+'第九出' => '第九齣',
+'第二出線' => '第二出線',
+'第二出线' => '第二出線',
+'第二出' => '第二齣',
+'第五出局' => '第五出局',
+'第五出' => '第五齣',
+'第八出' => '第八齣',
+'第六出' => '第六齣',
+'第四出局' => '第四出局',
+'第四出' => '第四齣',
+'笔杆' => '筆桿',
+'笔秃墨干' => '筆禿墨乾',
+'等于' => '等於',
+'笋干' => '筍乾',
+'筑前' => '筑前',
+'筑北' => '筑北',
+'筑州' => '筑州',
+'筑后' => '筑後',
+'筑後' => '筑後',
+'筑波' => '筑波',
+'筑紫' => '筑紫',
+'筑肥' => '筑肥',
+'筑西' => '筑西',
+'筑邦' => '筑邦',
+'筑阳' => '筑陽',
+'筑陽' => '筑陽',
+'答复' => '答覆',
+'筵几' => '筵几',
+'个中原因' => '箇中原因',
+'个中奥' => '箇中奧',
+'个中好手' => '箇中好手',
+'个中强手' => '箇中強手',
+'个中滋味' => '箇中滋味',
+'个中玄机' => '箇中玄機',
+'个中理由' => '箇中理由',
+'个中翘楚' => '箇中翹楚',
+'个中道理' => '箇中道理',
+'个中高手' => '箇中高手',
+'个旧' => '箇舊',
+'算历' => '算曆',
+'算历史' => '算歷史',
+'算准' => '算準',
+'管制' => '管制',
+'管干' => '管幹',
+'箱里' => '箱裡',
+'节欲' => '節慾',
+'节目里' => '節目裡',
+'节余' => '節餘',
+'范亭' => '範亭',
+'范例' => '範例',
+'范围' => '範圍',
+'范字' => '範字',
+'范式' => '範式',
+'范性形变' => '範性形變',
+'范数' => '範數',
+'范文' => '範文',
+'范本' => '範本',
+'范畴' => '範疇',
+'范金' => '範金',
+'简并' => '簡併',
+'简朴' => '簡樸',
+'简短发' => '簡短發',
+'简筑翎' => '簡筑翎',
+'簡筑翎' => '簡筑翎',
+'簸荡' => '簸蕩',
+'签幐' => '籤幐',
+'签押' => '籤押',
+'签条' => '籤條',
+'签诗' => '籤詩',
+'吁天' => '籲天',
+'吁求' => '籲求',
+'吁请' => '籲請',
+'米沈' => '米瀋',
+'米谷' => '米穀',
+'米团' => '米糰',
+'米余' => '米餘',
+'米面' => '米麵',
+'粉签子' => '粉籤子',
+'粗制' => '粗製',
+'精制伏' => '精制伏',
+'精制住' => '精制住',
+'精制服' => '精制服',
+'精干' => '精幹',
+'精于' => '精於',
+'精准' => '精準',
+'精致' => '精緻',
+'精制' => '精製',
+'精炼' => '精鍊',
+'精辟' => '精闢',
+'精松' => '精鬆',
+'糊里糊涂' => '糊裡糊塗',
+'糕干' => '糕乾',
+'粪秽蔑面' => '糞穢衊面',
+'团子' => '糰子',
+'系列里' => '系列裡',
+'系里' => '系裡',
+'纪历' => '紀曆',
+'纪历史' => '紀歷史',
+'红后假说' => '紅后假說',
+'红绳系足' => '紅繩繫足',
+'红钟' => '紅鐘',
+'红发' => '紅髮',
+'纡回' => '紆迴',
+'纡余' => '紆餘',
+'纡郁' => '紆鬱',
+'纳征' => '納徵',
+'纯朴' => '純樸',
+'纸扎' => '紙紮',
+'素数里' => '素數裡',
+'素朴' => '素樸',
+'素发' => '素髮',
+'素面' => '素麵',
+'索馬里' => '索馬里',
+'索马里' => '索馬里',
+'索面' => '索麵',
+'紫姜' => '紫薑',
+'扎上' => '紮上',
+'扎下' => '紮下',
+'扎囮' => '紮囮',
+'扎好' => '紮好',
+'扎实' => '紮實',
+'扎寨' => '紮寨',
+'扎带子' => '紮帶子',
+'扎成' => '紮成',
+'扎根' => '紮根',
+'扎营' => '紮營',
+'扎紧' => '紮緊',
+'扎脚' => '紮腳',
+'扎裹' => '紮裹',
+'扎诈' => '紮詐',
+'扎起' => '紮起',
+'扎铁' => '紮鐵',
+'细不容发' => '細不容髮',
+'细如发' => '細如髮',
+'细致' => '細緻',
+'细炼' => '細鍊',
+'终于' => '終於',
+'组里' => '組裡',
+'结伴同游' => '結伴同遊',
+'结伙' => '結夥',
+'结扎' => '結紮',
+'结余' => '結餘',
+'结发' => '結髮',
+'绝于' => '絕於',
+'绞干' => '絞乾',
+'络腮胡' => '絡腮鬍',
+'给于' => '給於',
+'丝恩发怨' => '絲恩髮怨',
+'丝制' => '絲製',
+'丝发' => '絲髮',
+'绑扎' => '綁紮',
+'绥棱' => '綏稜',
+'捆扎' => '綑紮',
+'經有云' => '經有云',
+'经有云' => '經有云',
+'综合征' => '綜合徵',
+'绿发' => '綠髮',
+'维系' => '維繫',
+'绾发' => '綰髮',
+'纲鉴' => '綱鑑',
+'網球台' => '網球台',
+'网球台' => '網球台',
+'网站里' => '網站裡',
+'网里' => '網裡',
+'网志' => '網誌',
+'网游' => '網遊',
+'紧致' => '緊緻',
+'紧追不舍' => '緊追不捨',
+'绪余' => '緒餘',
+'线图里' => '線圖裡',
+'缉凶' => '緝兇',
+'编制法' => '編制法',
+'编采' => '編採',
+'编码表' => '編碼表',
+'编钟' => '編鐘',
+'编余' => '編餘',
+'编发' => '編髮',
+'缓征' => '緩徵',
+'缓冲' => '緩衝',
+'致密' => '緻密',
+'萦回' => '縈迴',
+'缜致' => '縝緻',
+'县里' => '縣裡',
+'县志' => '縣誌',
+'缝里' => '縫裡',
+'缝制' => '縫製',
+'缩栗' => '縮慄',
+'缩短发' => '縮短發',
+'纵欲' => '縱慾',
+'纤夫' => '縴夫',
+'纤手' => '縴手',
+'纤绳' => '縴繩',
+'总数只' => '總數只',
+'总数里' => '總數裡',
+'总裁制' => '總裁制',
+'繁复' => '繁複',
+'繁钟' => '繁鐘',
+'绷扒吊拷' => '繃扒弔拷',
+'绕梁' => '繞樑',
+'绘制' => '繪製',
+'系上。' => '繫上。',
+'系上了' => '繫上了',
+'系上安全' => '繫上安全',
+'系上红' => '繫上紅',
+'系上丝' => '繫上絲',
+'系上绳' => '繫上繩',
+'系上头' => '繫上頭',
+'系上黑' => '繫上黑',
+'系上,' => '繫上,',
+'系世' => '繫世',
+'系到' => '繫到',
+'系囚' => '繫囚',
+'系心' => '繫心',
+'系念' => '繫念',
+'系怀' => '繫懷',
+'系恋' => '繫戀',
+'系于' => '繫於',
+'系于一发' => '繫於一髮',
+'系着' => '繫着',
+'系结' => '繫結',
+'系紧' => '繫緊',
+'系绳' => '繫繩',
+'系累' => '繫纍',
+'系舟' => '繫舟',
+'系船' => '繫船',
+'系辞' => '繫辭',
+'系鞋带' => '繫鞋帶',
+'系风捕影' => '繫風捕影',
+'累囚' => '纍囚',
+'累堆' => '纍堆',
+'累瓦结绳' => '纍瓦結繩',
+'累绁' => '纍紲',
+'累臣' => '纍臣',
+'缠斗' => '纏鬥',
+'坛子' => '罈子',
+'坛坛罐罐' => '罈罈罐罐',
+'坛騞' => '罈騞',
+'置于' => '置於',
+'置言成范' => '置言成範',
+'罢于' => '罷於',
+'罗马历' => '羅馬曆',
+'罗马历代' => '羅馬歷代',
+'罗马历史' => '羅馬歷史',
+'羁系' => '羈繫',
+'美容美发' => '美容美髮',
+'美于' => '美於',
+'美丑' => '美醜',
+'美发学' => '美髮學',
+'美发师' => '美髮師',
+'美发店' => '美髮店',
+'美发业' => '美髮業',
+'美发沙龙' => '美髮沙龍',
+'美发馆' => '美髮館',
+'群丑' => '群醜',
+'羡余' => '羨餘',
+'义仆' => '義僕',
+'義联' => '義联',
+'翁子里' => '翁子里',
+'翕辟' => '翕闢',
+'翱游' => '翱遊',
+'翻涌' => '翻湧',
+'翻松' => '翻鬆',
+'老么' => '老么',
+'老干' => '老乾',
+'老仆' => '老僕',
+'老干部' => '老幹部',
+'老懞' => '老懞',
+'老于' => '老於',
+'老爷钟' => '老爺鐘',
+'老白干' => '老白乾',
+'老姜' => '老薑',
+'老板' => '老闆',
+'老面皮' => '老面皮',
+'考征' => '考徵',
+'耍斗' => '耍鬥',
+'耕获' => '耕穫',
+'耳余' => '耳餘',
+'耿于' => '耿於',
+'聊斋志异' => '聊齋志異',
+'圣人历' => '聖人曆',
+'圣后' => '聖后',
+'圣马尔谷日' => '聖馬爾谷日',
+'聖馬爾谷日' => '聖馬爾谷日',
+'聘雇' => '聘僱',
+'聚药雄蕊' => '聚葯雄蕊',
+'闻风后' => '聞風後',
+'联系' => '聯繫',
+'声母后' => '聲母後',
+'听于' => '聽於',
+'肉干' => '肉乾',
+'肉欲' => '肉慾',
+'肉丝面' => '肉絲麵',
+'肉羹面' => '肉羹麵',
+'肉松' => '肉鬆',
+'肉面' => '肉麵',
+'肚里' => '肚裡',
+'肝脏' => '肝臟',
+'肝郁' => '肝鬱',
+'股栗' => '股慄',
+'肥筑方言' => '肥筑方言',
+'肴馔' => '肴饌',
+'肺脏' => '肺臟',
+'胃脏' => '胃臟',
+'胃里' => '胃裡',
+'背地里' => '背地裡',
+'胎发' => '胎髮',
+'胜肽' => '胜肽',
+'胜键' => '胜鍵',
+'胡云' => '胡云',
+'胡子婴' => '胡子嬰',
+'胡子昂' => '胡子昂',
+'胡杰' => '胡杰',
+'胡朴安' => '胡樸安',
+'胡里胡涂' => '胡裡胡塗',
+'胰脏' => '胰臟',
+'能干休' => '能干休',
+'能干戈' => '能干戈',
+'能干扰' => '能干擾',
+'能干政' => '能干政',
+'能干涉' => '能干涉',
+'能干预' => '能干預',
+'能干' => '能幹',
+'能自制' => '能自制',
+'脉冲' => '脈衝',
+'脊梁背' => '脊梁背',
+'脊梁骨' => '脊梁骨',
+'脊梁' => '脊樑',
+'脱谷机' => '脫穀機',
+'脱发' => '脫髮',
+'脺脏' => '脺臟',
+'脾脏' => '脾臟',
+'腊之以为饵' => '腊之以為餌',
+'腊味' => '腊味',
+'腊毒' => '腊毒',
+'腊笔' => '腊筆',
+'腌臜' => '腌臢',
+'肾脏' => '腎臟',
+'腐干' => '腐乾',
+'腐余' => '腐餘',
+'腑脏' => '腑臟',
+'腕表' => '腕錶',
+'脑干' => '腦幹',
+'腰里' => '腰裡',
+'脚注' => '腳註',
+'脚炼' => '腳鍊',
+'肠脏' => '腸臟',
+'胶卷' => '膠捲',
+'膨松' => '膨鬆',
+'膵脏' => '膵臟',
+'臊子面' => '臊子麵',
+'脏器' => '臟器',
+'脏胸' => '臟胸',
+'脏腑' => '臟腑',
+'臣仆' => '臣僕',
+'卧游' => '臥遊',
+'臧谷亡羊' => '臧穀亡羊',
+'临潼斗宝' => '臨潼鬥寶',
+'自干五' => '自乾五',
+'自制一下' => '自制一下',
+'自制下来' => '自制下來',
+'自制不' => '自制不',
+'自制之力' => '自制之力',
+'自制之能' => '自制之能',
+'自制他' => '自制他',
+'自制伏' => '自制伏',
+'自制你' => '自制你',
+'自制力' => '自制力',
+'自制地' => '自制地',
+'自制她' => '自制她',
+'自制情' => '自制情',
+'自制我' => '自制我',
+'自制服' => '自制服',
+'自制的能' => '自制的能',
+'自制能力' => '自制能力',
+'自于' => '自於',
+'自然数里' => '自然數裡',
+'自由钟' => '自由鐘',
+'自制' => '自製',
+'自觉自愿' => '自覺自愿',
+'自夸' => '自誇',
+'臭气冲天' => '臭氣衝天',
+'至多' => '至多',
+'至多只' => '至多只',
+'至于' => '至於',
+'致于' => '致於',
+'台佟' => '臺佟',
+'台静农' => '臺靜農',
+'臻于' => '臻於',
+'舂谷' => '舂穀',
+'举手表' => '舉手表',
+'舉手表' => '舉手表',
+'舊庄' => '舊庄',
+'旧历' => '舊曆',
+'旧历史' => '舊歷史',
+'旧游' => '舊遊',
+'旧表' => '舊錶',
+'旧钟' => '舊鐘',
+'旧钟表' => '舊鐘錶',
+'舌干唇焦' => '舌乾唇焦',
+'舍入口' => '舍入口',
+'舒卷' => '舒捲',
+'舞后' => '舞后',
+'航海历' => '航海曆',
+'航海历史' => '航海歷史',
+'船只得' => '船只得',
+'船只有' => '船只有',
+'船只能' => '船只能',
+'船钟' => '船鐘',
+'船只' => '船隻',
+'舰只' => '艦隻',
+'色欲' => '色慾',
+'色长发' => '色長髮',
+'艳后' => '艷后',
+'艷后' => '艷后',
+'艸木丰丰' => '艸木丰丰',
+'芒果干' => '芒果乾',
+'花不要采' => '花不要採',
+'花卷' => '花捲',
+'花盆里' => '花盆裡',
+'花菴词选' => '花菴詞選',
+'花药' => '花葯',
+'花钟' => '花鐘',
+'花马吊嘴' => '花馬弔嘴',
+'花哄' => '花鬨',
+'苑里' => '苑裡',
+'若干' => '若干',
+'苦干' => '苦幹',
+'苦于' => '苦於',
+'苦里' => '苦裡',
+'苦斗' => '苦鬥',
+'苧麻' => '苧麻',
+'茂都淀' => '茂都澱',
+'范文同' => '范文同',
+'范文正公' => '范文正公',
+'范文澜' => '范文瀾',
+'范文瀾' => '范文瀾',
+'范文照' => '范文照',
+'范文程' => '范文程',
+'范文芳' => '范文芳',
+'范文藤' => '范文藤',
+'范文虎' => '范文虎',
+'范登堡' => '范登堡',
+'范賢惠' => '范賢惠',
+'范贤惠' => '范賢惠',
+'茅于軾' => '茅于軾',
+'茅于轼' => '茅于軾',
+'茶几' => '茶几',
+'茶余' => '茶餘',
+'茶面' => '茶麵',
+'草丛里' => '草叢裡',
+'草荐' => '草荐',
+'草席' => '草蓆',
+'荐居' => '荐居',
+'荐臻' => '荐臻',
+'荐饥' => '荐饑',
+'荷花淀' => '荷花澱',
+'庄里' => '莊裡',
+'茎干' => '莖幹',
+'莜面' => '莜麵',
+'莽荡' => '莽蕩',
+'菜干' => '菜乾',
+'菜坛' => '菜罈',
+'菜肴' => '菜餚',
+'菠棱菜' => '菠稜菜',
+'菠萝干' => '菠蘿乾',
+'华严钟' => '華嚴鐘',
+'万一只' => '萬一只',
+'萬一只' => '萬一只',
+'万个' => '萬個',
+'万周后' => '萬周後',
+'万天后' => '萬天後',
+'万年' => '萬年',
+'万年历' => '萬年曆',
+'万年历表' => '萬年曆錶',
+'万历' => '萬曆',
+'万历史' => '萬歷史',
+'万签插架' => '萬籤插架',
+'万扎' => '萬紮',
+'万象' => '萬象',
+'万只' => '萬隻',
+'万余' => '萬餘',
+'落于' => '落於',
+'落腮胡' => '落腮鬍',
+'落发' => '落髮',
+'叶叶琴' => '葉叶琴',
+'叶叶琹' => '葉叶琹',
+'叶阳后' => '葉陽后',
+'葉陽后' => '葉陽后',
+'葡萄干' => '葡萄乾',
+'董氏封发' => '董氏封髮',
+'葫芦里卖甚么药' => '葫蘆裡賣甚麼藥',
+'葬于' => '葬於',
+'蒙雾露' => '蒙霧露',
+'蒜发' => '蒜髮',
+'蒲席' => '蒲蓆',
+'蒸干' => '蒸乾',
+'蒸制' => '蒸製',
+'苍术' => '蒼朮',
+'苍发' => '蒼髮',
+'苍郁' => '蒼鬱',
+'蓄发' => '蓄髮',
+'蓄胡' => '蓄鬍',
+'蓄须' => '蓄鬚',
+'席子' => '蓆子',
+'蓊郁' => '蓊鬱',
+'蓬发' => '蓬髮',
+'蓬松' => '蓬鬆',
+'蓬松松' => '蓬鬆鬆',
+'参绥' => '蔘綏',
+'葱郁' => '蔥鬱',
+'荞麦面' => '蕎麥麵',
+'芸薹' => '蕓薹',
+'荡来荡去' => '蕩來蕩去',
+'荡女' => '蕩女',
+'荡妇' => '蕩婦',
+'荡寇' => '蕩寇',
+'荡平' => '蕩平',
+'荡气' => '蕩氣',
+'荡涤' => '蕩滌',
+'荡漾' => '蕩漾',
+'荡然' => '蕩然',
+'荡产' => '蕩產',
+'荡舟' => '蕩舟',
+'荡船' => '蕩船',
+'荡荡' => '蕩蕩',
+'萧参' => '蕭蔘',
+'薄幸' => '薄倖',
+'薄干' => '薄幹',
+'姜啤' => '薑啤',
+'姜是老的辣' => '薑是老的辣',
+'姜末' => '薑末',
+'姜桂' => '薑桂',
+'姜母' => '薑母',
+'姜汁' => '薑汁',
+'姜汤' => '薑湯',
+'姜片' => '薑片',
+'姜糖' => '薑糖',
+'姜丝' => '薑絲',
+'姜老辣' => '薑老辣',
+'姜茶' => '薑茶',
+'姜蓉' => '薑蓉',
+'姜饼' => '薑餅',
+'姜黄' => '薑黃',
+'薙发' => '薙髮',
+'薝卜' => '薝蔔',
+'熏心' => '薰心',
+'熏染' => '薰染',
+'熏沐' => '薰沐',
+'熏习' => '薰習',
+'熏陶' => '薰陶',
+'熏风' => '薰風',
+'熏香' => '薰香',
+'苧悴' => '薴悴',
+'苧烯' => '薴烯',
+'薴烯' => '薴烯',
+'借以' => '藉以',
+'借助' => '藉助',
+'借口' => '藉口',
+'借寇兵' => '藉寇兵',
+'借手' => '藉手',
+'借故' => '藉故',
+'借机' => '藉機',
+'借此' => '藉此',
+'借由' => '藉由',
+'借箸代筹' => '藉箸代籌',
+'借资' => '藉資',
+'蓝淀' => '藍澱',
+'藏于' => '藏於',
+'藏历' => '藏曆',
+'藏历史' => '藏歷史',
+'藏蒙歌儿' => '藏矇歌兒',
+'藤席' => '藤蓆',
+'藤制' => '藤製',
+'药签' => '藥籤',
+'药面儿' => '藥麵兒',
+'苏崑' => '蘇崑',
+'苏昆' => '蘇崑',
+'苹果' => '蘋果',
+'苹果干' => '蘋果乾',
+'兰溪市' => '蘭谿市',
+'萝卜' => '蘿蔔',
+'萝卜干' => '蘿蔔乾',
+'虎须' => '虎鬚',
+'虎斗' => '虎鬥',
+'处于' => '處於',
+'虚夸' => '虛誇',
+'号志' => '號誌',
+'虫部' => '虫部',
+'蚊动牛斗' => '蚊動牛鬥',
+'蛇发女妖' => '蛇髮女妖',
+'蜂后' => '蜂后',
+'蜂涌' => '蜂湧',
+'蜂准' => '蜂準',
+'蜜里调油' => '蜜裡調油',
+'蜡月' => '蜡月',
+'蜡祭' => '蜡祭',
+'蝎虎' => '蝎虎',
+'蝎蝎螫螫' => '蝎蝎螫螫',
+'蝎谮' => '蝎譖',
+'虾面' => '蝦麵',
+'虮虱相吊' => '蟣蝨相弔',
+'蛏干' => '蟶乾',
+'蚁后' => '蟻后',
+'蟻后' => '蟻后',
+'蚃干' => '蠁幹',
+'蛮干' => '蠻幹',
+'血拼' => '血拚',
+'血余' => '血餘',
+'行事历' => '行事曆',
+'行事历史' => '行事歷史',
+'行凶' => '行兇',
+'行家里手' => '行家裡手',
+'行于' => '行於',
+'卫后庄公' => '衛後莊公',
+'卫星钟' => '衛星鐘',
+'冲上' => '衝上',
+'冲下' => '衝下',
+'冲来' => '衝來',
+'冲倒' => '衝倒',
+'冲冠' => '衝冠',
+'冲出' => '衝出',
+'冲到' => '衝到',
+'冲刺' => '衝刺',
+'冲克' => '衝剋',
+'冲力' => '衝力',
+'冲劲' => '衝勁',
+'冲动' => '衝動',
+'冲去' => '衝去',
+'冲口' => '衝口',
+'冲垮' => '衝垮',
+'冲堂' => '衝堂',
+'冲坚陷阵' => '衝堅陷陣',
+'冲压' => '衝壓',
+'冲天炮' => '衝天炮',
+'冲州撞府' => '衝州撞府',
+'冲心' => '衝心',
+'冲掉' => '衝掉',
+'冲撞' => '衝撞',
+'冲击' => '衝擊',
+'冲散' => '衝散',
+'冲杀' => '衝殺',
+'冲决' => '衝決',
+'冲波' => '衝波',
+'冲浪' => '衝浪',
+'冲激' => '衝激',
+'冲然' => '衝然',
+'冲盹' => '衝盹',
+'冲着' => '衝着',
+'冲破' => '衝破',
+'冲程' => '衝程',
+'冲突' => '衝突',
+'冲线' => '衝線',
+'冲要' => '衝要',
+'冲起' => '衝起',
+'冲车' => '衝車',
+'冲进' => '衝進',
+'冲过' => '衝過',
+'冲量' => '衝量',
+'冲锋' => '衝鋒',
+'冲锋枪' => '衝鋒鎗',
+'冲陷' => '衝陷',
+'冲头阵' => '衝頭陣',
+'冲风' => '衝風',
+'衡鉴' => '衡鑑',
+'表面包' => '表面包',
+'衷于' => '衷於',
+'袋杆' => '袋桿',
+'袋里' => '袋裡',
+'袋表' => '袋錶',
+'袖里' => '袖裡',
+'被废后' => '被廢後',
+'被系上' => '被繫上',
+'被里' => '被裡',
+'被夸' => '被誇',
+'被发佯狂' => '被髮佯狂',
+'被发入山' => '被髮入山',
+'被发左衽' => '被髮左衽',
+'被发缨冠' => '被髮纓冠',
+'被发阳狂' => '被髮陽狂',
+'夹衣' => '袷衣',
+'夹裙' => '袷裙',
+'裁并' => '裁併',
+'裁制' => '裁製',
+'里水镇' => '裏水鎮',
+'里海' => '裏海',
+'里白' => '裏白',
+'里运河' => '裏運河',
+'补于' => '補於',
+'补注' => '補註',
+'装折' => '裝摺',
+'里勾外连' => '裡勾外連',
+'里屋' => '裡屋',
+'里层' => '裡層',
+'里带' => '裡帶',
+'里弦' => '裡弦',
+'里应外合' => '裡應外合',
+'里脊' => '裡脊',
+'里衣' => '裡衣',
+'里通外国' => '裡通外國',
+'里通外敌' => '裡通外敵',
+'里边' => '裡邊',
+'里间' => '裡間',
+'里面' => '裡面',
+'里面包' => '裡面包',
+'里头' => '裡頭',
+'制件' => '製件',
+'制作' => '製作',
+'制做' => '製做',
+'制备' => '製備',
+'制冰' => '製冰',
+'制冷' => '製冷',
+'制剂' => '製劑',
+'制取' => '製取',
+'制品' => '製品',
+'制图' => '製圖',
+'制得' => '製得',
+'制成' => '製成',
+'制毒' => '製毒',
+'制法' => '製法',
+'制浆' => '製漿',
+'制片' => '製片',
+'制版' => '製版',
+'制程' => '製程',
+'制糖' => '製糖',
+'制纸' => '製紙',
+'制药' => '製藥',
+'制衣' => '製衣',
+'制表键' => '製表鍵',
+'制贩' => '製販',
+'制造' => '製造',
+'制革' => '製革',
+'制鞋' => '製鞋',
+'制盐' => '製鹽',
+'复元音' => '複元音',
+'复函数' => '複函數',
+'复分数' => '複分數',
+'复分析' => '複分析',
+'复分解' => '複分解',
+'复列' => '複列',
+'复利' => '複利',
+'复印' => '複印',
+'复句' => '複句',
+'复合' => '複合',
+'复壁' => '複壁',
+'复姓' => '複姓',
+'复字键' => '複字鍵',
+'复审' => '複審',
+'复写' => '複寫',
+'复对数' => '複對數',
+'复平面' => '複平面',
+'复式' => '複式',
+'复数' => '複數',
+'复方' => '複方',
+'复本' => '複本',
+'复查' => '複查',
+'复次' => '複次',
+'复比' => '複比',
+'复决' => '複決',
+'复流' => '複流',
+'复测' => '複測',
+'复目' => '複目',
+'复眼' => '複眼',
+'复种' => '複種',
+'复线' => '複線',
+'复习' => '複習',
+'复色' => '複色',
+'复叶' => '複葉',
+'复制' => '複製',
+'复诊' => '複診',
+'复评' => '複評',
+'复词' => '複詞',
+'复试' => '複試',
+'复课' => '複課',
+'复议' => '複議',
+'复变函数' => '複變函數',
+'复赛' => '複賽',
+'复辅音' => '複輔音',
+'复述' => '複述',
+'复选' => '複選',
+'复钱' => '複錢',
+'复阅' => '複閱',
+'复杂' => '複雜',
+'复音' => '複音',
+'复韵' => '複韻',
+'褒赞' => '褒讚',
+'衬里' => '襯裡',
+'西井里' => '西井里',
+'西周钟' => '西周鐘',
+'西昆' => '西崑',
+'西岳' => '西嶽',
+'西历' => '西曆',
+'西历史' => '西歷史',
+'西湖里' => '西湖里',
+'西米谷' => '西米谷',
+'西西里' => '西西里',
+'西谷米' => '西谷米',
+'西游' => '西遊',
+'要自制' => '要自制',
+'要冲' => '要衝',
+'复信' => '覆信',
+'复核' => '覆核',
+'见于' => '見於',
+'见棱见角' => '見稜見角',
+'见素抱朴' => '見素抱樸',
+'见钟不打' => '見鐘不打',
+'规范' => '規範',
+'视于' => '視於',
+'观采' => '觀採',
+'角抵' => '角牴',
+'角落发' => '角落發',
+'角落里' => '角落裡',
+'觚棱' => '觚稜',
+'解雇' => '解僱',
+'解封后' => '解封後',
+'解铃仍须系铃人' => '解鈴仍須繫鈴人',
+'解铃还须系铃人' => '解鈴還須繫鈴人',
+'解发佯狂' => '解髮佯狂',
+'触须' => '觸鬚',
+'言云' => '言云',
+'言大而夸' => '言大而夸',
+'言里' => '言裡',
+'言辩而确' => '言辯而确',
+'订制' => '訂製',
+'计划' => '計劃',
+'计时表' => '計時錶',
+'托了' => '託了',
+'托事' => '託事',
+'托交' => '託交',
+'托人' => '託人',
+'托付' => '託付',
+'托克逊' => '託克遜',
+'托儿' => '託兒',
+'托古讽今' => '託古諷今',
+'托名' => '託名',
+'托命' => '託命',
+'托咎' => '託咎',
+'托梦' => '託夢',
+'托孤' => '託孤',
+'托庇' => '託庇',
+'托故' => '託故',
+'托疾' => '託疾',
+'托病' => '託病',
+'托管' => '託管',
+'托言' => '託言',
+'托词' => '託詞',
+'托买' => '託買',
+'托卖' => '託賣',
+'托身' => '託身',
+'托辞' => '託辭',
+'托运' => '託運',
+'托过' => '託過',
+'托里县' => '託里縣',
+'托附' => '託附',
+'许愿起经' => '許愿起經',
+'許聖杰' => '許聖杰',
+'注上' => '註上',
+'注册' => '註冊',
+'注失' => '註失',
+'注定' => '註定',
+'注明' => '註明',
+'注标' => '註標',
+'注生娘娘' => '註生娘娘',
+'注疏' => '註疏',
+'注脚' => '註腳',
+'注解' => '註解',
+'注记' => '註記',
+'注译' => '註譯',
+'注销' => '註銷',
+'注:' => '註:',
+'证谏' => '証諫',
+'评断发' => '評斷發',
+'评注' => '評註',
+'评鉴' => '評鑑',
+'词干' => '詞幹',
+'词汇' => '詞彙',
+'词余' => '詞餘',
+'询于' => '詢於',
+'试制' => '試製',
+'詩云' => '詩云',
+'诗云' => '詩云',
+'诗赞' => '詩讚',
+'诗钟' => '詩鐘',
+'诗余' => '詩餘',
+'话里有话' => '話裡有話',
+'该钟' => '該鐘',
+'详征博引' => '詳徵博引',
+'详注' => '詳註',
+'诔赞' => '誄讚',
+'夸下海口' => '誇下海口',
+'夸了' => '誇了',
+'夸人' => '誇人',
+'夸他' => '誇他',
+'夸你' => '誇你',
+'夸来夸去' => '誇來誇去',
+'夸别' => '誇別',
+'夸功' => '誇功',
+'夸胜道强' => '誇勝道強',
+'夸口' => '誇口',
+'夸嘴' => '誇嘴',
+'夸多斗靡' => '誇多鬥靡',
+'夸大' => '誇大',
+'夸她' => '誇她',
+'夸姣' => '誇姣',
+'夸官' => '誇官',
+'夸容' => '誇容',
+'夸张' => '誇張',
+'夸强说会' => '誇強說會',
+'夸得' => '誇得',
+'夸成' => '誇成',
+'夸我' => '誇我',
+'夸才' => '誇才',
+'夸毗' => '誇毗',
+'夸海口' => '誇海口',
+'夸奖' => '誇獎',
+'夸示' => '誇示',
+'夸称' => '誇稱',
+'夸耀' => '誇耀',
+'夸能' => '誇能',
+'夸能斗智' => '誇能鬥智',
+'夸诩' => '誇詡',
+'夸夸' => '誇誇',
+'夸夸其谈' => '誇誇其談',
+'夸诞' => '誇誕',
+'夸说' => '誇說',
+'夸赞' => '誇讚',
+'夸起' => '誇起',
+'夸辩' => '誇辯',
+'夸过' => '誇過',
+'夸饰' => '誇飾',
+'夸丽' => '誇麗',
+'志哀' => '誌哀',
+'志喜' => '誌喜',
+'志庆' => '誌慶',
+'志异' => '誌異',
+'认准' => '認準',
+'诱奸' => '誘姦',
+'语云' => '語云',
+'语汇' => '語彙',
+'語有云' => '語有云',
+'语有云' => '語有云',
+'语法里' => '語法裡',
+'语里' => '語裡',
+'诚征' => '誠徵',
+'诚朴' => '誠樸',
+'诬蔑' => '誣衊',
+'说不准' => '說不準',
+'谁干的' => '誰幹的',
+'课征' => '課徵',
+'课余' => '課餘',
+'调准' => '調準',
+'调制' => '調製',
+'调表' => '調錶',
+'调钟表' => '調鐘錶',
+'谈征' => '談徵',
+'请君入瓮' => '請君入甕',
+'请托' => '請託',
+'咨询' => '諮詢',
+'诸余' => '諸餘',
+'谋干' => '謀幹',
+'謝杰' => '謝杰',
+'谢杰' => '謝杰',
+'谢华后' => '謝華后',
+'谬采虚声' => '謬採虛聲',
+'谬赞' => '謬讚',
+'謷丑' => '謷醜',
+'謹愿' => '謹愿',
+'谨愿' => '謹愿',
+'哗噪' => '譁噪',
+'哗嚣' => '譁囂',
+'哗然' => '譁然',
+'哗众' => '譁眾',
+'哗笑' => '譁笑',
+'哗变' => '譁變',
+'噪诈' => '譟詐',
+'警世钟' => '警世鐘',
+'警报钟' => '警報鐘',
+'警示钟' => '警示鐘',
+'警钟' => '警鐘',
+'译制' => '譯製',
+'译注' => '譯註',
+'护发' => '護髮',
+'变征' => '變徵',
+'变丑' => '變醜',
+'仇隙' => '讎隙',
+'赞一个' => '讚一個',
+'赞不绝口' => '讚不絕口',
+'赞佩' => '讚佩',
+'赞呗' => '讚唄',
+'赞叹' => '讚嘆',
+'赞扬' => '讚揚',
+'赞乐' => '讚樂',
+'赞歌' => '讚歌',
+'赞美' => '讚美',
+'赞羡' => '讚羨',
+'赞许' => '讚許',
+'赞词' => '讚詞',
+'赞誉' => '讚譽',
+'赞赏' => '讚賞',
+'赞辞' => '讚辭',
+'赞颂' => '讚頌',
+'谷子敬' => '谷子敬',
+'豆干' => '豆乾',
+'豆腐干' => '豆腐乾',
+'竖起脊梁' => '豎起脊梁',
+'丰度' => '豐度',
+'丰滨' => '豐濱',
+'丰滨乡' => '豐濱鄉',
+'丰台' => '豐臺',
+'豔后' => '豔后',
+'象征' => '象徵',
+'贪欲' => '貪慾',
+'贵价' => '貴价',
+'貴子里' => '貴子里',
+'贵干' => '貴幹',
+'贵征' => '貴徵',
+'买凶' => '買兇',
+'买断发' => '買斷發',
+'費米面' => '費米面',
+'费米面' => '費米面',
+'贻范' => '貽範',
+'賈后' => '賈后',
+'贾后' => '賈后',
+'赈饥' => '賑饑',
+'赏赞' => '賞讚',
+'賢后' => '賢后',
+'贤后' => '賢后',
+'卖断发' => '賣斷發',
+'賦范' => '賦范',
+'赋范' => '賦范',
+'质数里' => '質數裡',
+'质朴' => '質樸',
+'赌后' => '賭后',
+'赌台' => '賭檯',
+'赌斗' => '賭鬥',
+'购并' => '購併',
+'购买欲' => '購買慾',
+'赢余' => '贏餘',
+'赤术' => '赤朮',
+'赤绳系足' => '赤繩繫足',
+'走回路' => '走回路',
+'起哄' => '起鬨',
+'超级杯' => '超級盃',
+'超赞' => '超讚',
+'赶制' => '趕製',
+'赶面棍' => '趕麵棍',
+'赵威后' => '趙威后',
+'赵惠后' => '趙惠后',
+'赵治勋' => '趙治勳',
+'趱干' => '趲幹',
+'足于' => '足於',
+'足球台' => '足球台',
+'跌扑' => '跌扑',
+'路图里' => '路圖裡',
+'路签' => '路籤',
+'路面' => '路面',
+'跳梁小丑' => '跳樑小丑',
+'跳荡' => '跳蕩',
+'局蹐' => '跼蹐',
+'局躅' => '跼躅',
+'踡局' => '踡跼',
+'逾闲' => '踰閑',
+'蹒局' => '蹣跼',
+'蹪于' => '蹪於',
+'蹭棱子' => '蹭稜子',
+'躁郁' => '躁鬱',
+'身于' => '身於',
+'身体发肤' => '身體髮膚',
+'躯干' => '軀幹',
+'车库里' => '車庫裡',
+'车站里' => '車站裡',
+'车里' => '車裡',
+'车里雅宾斯克' => '車里雅賓斯克',
+'轨范' => '軌範',
+'轩辟' => '軒闢',
+'较于' => '較於',
+'挽曲' => '輓曲',
+'挽歌' => '輓歌',
+'挽联' => '輓聯',
+'挽词' => '輓詞',
+'挽诗' => '輓詩',
+'挽车' => '輓車',
+'挽输' => '輓輸',
+'挽辞' => '輓辭',
+'轻于' => '輕於',
+'轻松' => '輕鬆',
+'轻松松' => '輕鬆鬆',
+'轮奸' => '輪姦',
+'轮回' => '輪迴',
+'转向往' => '轉向往',
+'转托' => '轉託',
+'转斗千里' => '轉鬥千里',
+'辛丑' => '辛丑',
+'辟谷' => '辟穀',
+'辣面' => '辣麵',
+'办公台' => '辦公檯',
+'辞汇' => '辭彙',
+'辫发' => '辮髮',
+'辩斗' => '辯鬥',
+'辰溪县' => '辰谿縣',
+'农历' => '農曆',
+'农历史' => '農歷史',
+'农民历' => '農民曆',
+'农民历史' => '農民歷史',
+'迂回' => '迂迴',
+'近日无仇' => '近日無讎',
+'返朴' => '返樸',
+'迥然回异' => '迥然迴異',
+'迫于' => '迫於',
+'回光返照' => '迴光返照',
+'回圈' => '迴圈',
+'回廊' => '迴廊',
+'回形夹' => '迴形夾',
+'回文序列' => '迴文序列',
+'回文数' => '迴文數',
+'回文构词' => '迴文構詞',
+'回文结构' => '迴文結構',
+'回文联' => '迴文聯',
+'回文诗' => '迴文詩',
+'回文锦' => '迴文錦',
+'回旋' => '迴旋',
+'回环' => '迴環',
+'回纹针' => '迴紋針',
+'回绕' => '迴繞',
+'回翔' => '迴翔',
+'回肠' => '迴腸',
+'回肠荡气' => '迴腸盪氣',
+'回荡' => '迴蕩',
+'回诵' => '迴誦',
+'回路' => '迴路',
+'回转' => '迴轉',
+'回递性' => '迴遞性',
+'回避' => '迴避',
+'回銮' => '迴鑾',
+'回响' => '迴響',
+'回风' => '迴風',
+'迷于' => '迷於',
+'迷蒙' => '迷濛',
+'追凶' => '追兇',
+'退伙' => '退夥',
+'逆钟' => '逆鐘',
+'逆钟向' => '逆鐘向',
+'逆风后' => '逆風後',
+'逋发' => '逋髮',
+'逍遥游' => '逍遙遊',
+'透辟' => '透闢',
+'这出世' => '這出世',
+'这出乎' => '這出乎',
+'这出人' => '這出人',
+'这出版' => '這出版',
+'这出现' => '這出現',
+'这出生' => '這出生',
+'这出色' => '這出色',
+'这出身' => '這出身',
+'这出道' => '這出道',
+'这只不' => '這只不',
+'这只不过' => '這只不過',
+'这只允' => '這只允',
+'这只包括' => '這只包括',
+'这只可' => '這只可',
+'这只在' => '這只在',
+'这只容' => '這只容',
+'这只应' => '這只應',
+'这只采' => '這只採',
+'这只是' => '這只是',
+'这只会' => '這只會',
+'这只比' => '這只比',
+'这只用' => '這只用',
+'这只能' => '這只能',
+'这只限' => '這只限',
+'这只需' => '這只需',
+'这只须' => '這只須',
+'这伙人' => '這夥人',
+'这里' => '這裡',
+'这钟' => '這鐘',
+'这只' => '這隻',
+'这么干' => '這麼幹',
+'这出' => '這齣',
+'通奸' => '通姦',
+'通心面' => '通心麵',
+'通于' => '通於',
+'通历' => '通曆',
+'通历史' => '通歷史',
+'通鉴' => '通鑑',
+'逞凶斗狠' => '逞兇鬥狠',
+'造钟' => '造鐘',
+'连三并四' => '連三併四',
+'连采' => '連採',
+'连发式' => '連發式',
+'连系' => '連繫',
+'周游' => '週遊',
+'进两出' => '進兩出',
+'进制' => '進制',
+'進制' => '進制',
+'逼并' => '逼併',
+'遇风后' => '遇風後',
+'游了' => '遊了',
+'游人' => '遊人',
+'游仙' => '遊仙',
+'游伴' => '遊伴',
+'游侠' => '遊俠',
+'游冶' => '遊冶',
+'游刃' => '遊刃',
+'游动' => '遊動',
+'游园' => '遊園',
+'游子' => '遊子',
+'游学' => '遊學',
+'游客' => '遊客',
+'游宦' => '遊宦',
+'游山玩水' => '遊山玩水',
+'游必有方' => '遊必有方',
+'游憩' => '遊憩',
+'游戏' => '遊戲',
+'游戏里' => '遊戲裡',
+'游手好闲' => '遊手好閒',
+'游方' => '遊方',
+'游星' => '遊星',
+'游乐' => '遊樂',
+'游标卡尺' => '遊標卡尺',
+'游历' => '遊歷',
+'游民' => '遊民',
+'游河' => '遊河',
+'游牧' => '遊牧',
+'游猎' => '遊獵',
+'游玩' => '遊玩',
+'游目骋怀' => '遊目騁懷',
+'游程' => '遊程',
+'游丝' => '遊絲',
+'游美学务' => '遊美學務',
+'游兴' => '遊興',
+'游船' => '遊船',
+'游艇' => '遊艇',
+'游荡' => '遊蕩',
+'游艺' => '遊藝',
+'游行' => '遊行',
+'游街' => '遊街',
+'游览' => '遊覽',
+'游记' => '遊記',
+'游说' => '遊說',
+'游资' => '遊資',
+'游走' => '遊走',
+'游踪' => '遊蹤',
+'游轮' => '遊輪',
+'游逛' => '遊逛',
+'游错' => '遊錯',
+'游骑兵' => '遊騎兵',
+'游魂' => '遊魂',
+'过于' => '過於',
+'过水面' => '過水麵',
+'遏制' => '遏制',
+'道范' => '道範',
+'逊于' => '遜於',
+'递回' => '遞迴',
+'远游' => '遠遊',
+'遨游' => '遨遊',
+'适于' => '適於',
+'遮丑' => '遮醜',
+'迁于' => '遷於',
+'选手表明' => '選手表明',
+'选手表决' => '選手表決',
+'选手表现' => '選手表現',
+'选手表示' => '選手表示',
+'选手表达' => '選手表達',
+'遗传钟' => '遺傳鐘',
+'遗范' => '遺範',
+'遗迹' => '遺蹟',
+'辽沈' => '遼瀋',
+'邀天之幸' => '邀天之倖',
+'还采' => '還採',
+'还冲' => '還衝',
+'邋里邋遢' => '邋裡邋遢',
+'那只不过' => '那只不過',
+'那只包括' => '那只包括',
+'那只可' => '那只可',
+'那只在' => '那只在',
+'那只怕' => '那只怕',
+'那只应' => '那只應',
+'那只是' => '那只是',
+'那只会' => '那只會',
+'那只有' => '那只有',
+'那只比' => '那只比',
+'那只用' => '那只用',
+'那只能' => '那只能',
+'那只限' => '那只限',
+'那只需' => '那只需',
+'那只须' => '那只須',
+'那卷' => '那捲',
+'那里' => '那裡',
+'那只' => '那隻',
+'邱于庭' => '邱于庭',
+'郁朴' => '郁樸',
+'郁郁菲菲' => '郁郁菲菲',
+'郁郁青青' => '郁郁青青',
+'郊游' => '郊遊',
+'郘钟' => '郘鐘',
+'部子里' => '部子里',
+'部落发' => '部落發',
+'郭后' => '郭后',
+'都市里' => '都市裡',
+'都于' => '都於',
+'乡愿' => '鄉愿',
+'鄉愿' => '鄉愿',
+'郑凯云' => '鄭凱云',
+'鄭凱云' => '鄭凱云',
+'配制饲料' => '配制飼料',
+'配图里' => '配圖裡',
+'配制' => '配製',
+'酒帘' => '酒帘',
+'酒气冲天' => '酒氣衝天',
+'酒坛' => '酒罈',
+'酒肴' => '酒肴',
+'酒曲' => '酒麴',
+'酒麹' => '酒麴',
+'酥松' => '酥鬆',
+'酸姜' => '酸薑',
+'腌制' => '醃製',
+'醇朴' => '醇樸',
+'醉于' => '醉於',
+'醋坛' => '醋罈',
+'丑丫头' => '醜丫頭',
+'丑事' => '醜事',
+'丑人' => '醜人',
+'丑侪' => '醜儕',
+'丑八怪' => '醜八怪',
+'丑剌剌' => '醜剌剌',
+'丑剧' => '醜劇',
+'丑化' => '醜化',
+'丑史' => '醜史',
+'丑名' => '醜名',
+'丑吒' => '醜吒',
+'丑地' => '醜地',
+'丑夷' => '醜夷',
+'丑女' => '醜女',
+'丑女效颦' => '醜女效顰',
+'丑奴儿' => '醜奴兒',
+'丑妇' => '醜婦',
+'丑媳' => '醜媳',
+'丑媳妇' => '醜媳婦',
+'丑小鸭' => '醜小鴨',
+'丑巴怪' => '醜巴怪',
+'丑徒' => '醜徒',
+'丑恶' => '醜惡',
+'丑态' => '醜態',
+'丑毙了' => '醜斃了',
+'丑于' => '醜於',
+'丑末' => '醜末',
+'丑样' => '醜樣',
+'丑死' => '醜死',
+'丑比' => '醜比',
+'丑沮' => '醜沮',
+'丑男' => '醜男',
+'丑闻' => '醜聞',
+'丑声' => '醜聲',
+'丑声远播' => '醜聲遠播',
+'丑脸' => '醜臉',
+'丑虏' => '醜虜',
+'丑行' => '醜行',
+'丑言' => '醜言',
+'丑诋' => '醜詆',
+'丑话' => '醜話',
+'丑语' => '醜語',
+'丑贼生' => '醜賊生',
+'丑辞' => '醜辭',
+'丑辱' => '醜辱',
+'丑逆' => '醜逆',
+'丑丑' => '醜醜',
+'丑陋' => '醜陋',
+'丑杂' => '醜雜',
+'丑头怪脸' => '醜頭怪臉',
+'丑类' => '醜類',
+'酿制' => '釀製',
+'衅钟' => '釁鐘',
+'采石之役' => '采石之役',
+'采石之战' => '采石之戰',
+'采石之戰' => '采石之戰',
+'采石矶' => '采石磯',
+'采石磯' => '采石磯',
+'里海大学' => '里海大學',
+'里海大學' => '里海大學',
+'里海崖' => '里海崖',
+'里海茨' => '里海茨',
+'里铺' => '里舖',
+'重回' => '重回',
+'重折' => '重摺',
+'重于' => '重於',
+'重罗面' => '重羅麵',
+'重制' => '重製',
+'重复' => '重複',
+'重托' => '重託',
+'重游' => '重遊',
+'野姜' => '野薑',
+'野游' => '野遊',
+'量不准' => '量不準',
+'厘改' => '釐改',
+'厘整' => '釐整',
+'厘正' => '釐正',
+'厘毫' => '釐毫',
+'厘清' => '釐清',
+'厘订' => '釐訂',
+'厘革' => '釐革',
+'金仆姑' => '金僕姑',
+'金城里' => '金城里',
+'金范' => '金範',
+'金圣叹' => '金聖歎',
+'金表情' => '金表情',
+'金表态' => '金表態',
+'金表扬' => '金表揚',
+'金表明' => '金表明',
+'金表演' => '金表演',
+'金表现' => '金表現',
+'金表示' => '金表示',
+'金表达' => '金表達',
+'金表露' => '金表露',
+'金表面' => '金表面',
+'金装玉里' => '金裝玉裡',
+'金溪县' => '金谿縣',
+'金链' => '金鍊',
+'金钟' => '金鐘',
+'金发' => '金髮',
+'钩心斗角' => '鈎心鬥角',
+'银朱' => '銀硃',
+'银发' => '銀髮',
+'铜范' => '銅範',
+'铜制' => '銅製',
+'铜钟' => '銅鐘',
+'铯钟' => '銫鐘',
+'铝制' => '鋁製',
+'钢之炼金术师' => '鋼之鍊金術師',
+'钢梁' => '鋼樑',
+'钢制' => '鋼製',
+'录制' => '錄製',
+'锤炼' => '錘鍊',
+'钱谷' => '錢穀',
+'钱范' => '錢範',
+'锦卤' => '錦滷',
+'锦绣花园' => '錦綉花園',
+'表停' => '錶停',
+'表冠' => '錶冠',
+'表带' => '錶帶',
+'表快' => '錶快',
+'表慢' => '錶慢',
+'表板' => '錶板',
+'表王' => '錶王',
+'表盘' => '錶盤',
+'表蒙子' => '錶蒙子',
+'表转' => '錶轉',
+'表速' => '錶速',
+'表针' => '錶針',
+'炼冶' => '鍊冶',
+'炼句' => '鍊句',
+'炼字' => '鍊字',
+'炼师' => '鍊師',
+'炼度' => '鍊度',
+'炼形' => '鍊形',
+'炼气' => '鍊氣',
+'炼汞' => '鍊汞',
+'炼石' => '鍊石',
+'链表' => '鍊表',
+'炼贫' => '鍊貧',
+'炼金术' => '鍊金術',
+'锲而不舍' => '鍥而不捨',
+'镰仓' => '鎌倉',
+'镜图里' => '鏡圖裡',
+'锈病' => '鏽病',
+'锈菌' => '鏽菌',
+'锈蚀' => '鏽蝕',
+'钟上' => '鐘上',
+'钟下' => '鐘下',
+'钟不' => '鐘不',
+'钟不扣不鸣' => '鐘不扣不鳴',
+'钟不撞不鸣' => '鐘不撞不鳴',
+'钟不敲不响' => '鐘不敲不響',
+'钟不空则哑' => '鐘不空則啞',
+'钟乳洞' => '鐘乳洞',
+'钟乳石' => '鐘乳石',
+'钟停' => '鐘停',
+'钟匠' => '鐘匠',
+'钟口' => '鐘口',
+'钟在寺里' => '鐘在寺裡',
+'钟塔' => '鐘塔',
+'钟壁' => '鐘壁',
+'钟太' => '鐘太',
+'钟好' => '鐘好',
+'钟山' => '鐘山',
+'钟左右' => '鐘左右',
+'钟差' => '鐘差',
+'钟座' => '鐘座',
+'钟形' => '鐘形',
+'钟形虫' => '鐘形蟲',
+'钟律' => '鐘律',
+'钟快' => '鐘快',
+'钟慢' => '鐘慢',
+'钟摆' => '鐘擺',
+'钟敲' => '鐘敲',
+'钟有' => '鐘有',
+'钟楼' => '鐘樓',
+'钟模' => '鐘模',
+'钟没' => '鐘沒',
+'钟漏' => '鐘漏',
+'钟王' => '鐘王',
+'钟琴' => '鐘琴',
+'钟发音' => '鐘發音',
+'钟的' => '鐘的',
+'钟盘' => '鐘盤',
+'钟相' => '鐘相',
+'钟磬' => '鐘磬',
+'钟纽' => '鐘紐',
+'钟罩' => '鐘罩',
+'钟声' => '鐘聲',
+'钟腰' => '鐘腰',
+'钟花' => '鐘花',
+'钟螺' => '鐘螺',
+'钟行' => '鐘行',
+'钟表面' => '鐘表面',
+'钟被' => '鐘被',
+'钟调' => '鐘調',
+'钟身' => '鐘身',
+'钟速' => '鐘速',
+'钟表' => '鐘錶',
+'钟表停' => '鐘錶停',
+'钟表快' => '鐘錶快',
+'钟表慢' => '鐘錶慢',
+'钟表王' => '鐘錶王',
+'钟表盘' => '鐘錶盤',
+'钟表速' => '鐘錶速',
+'钟关' => '鐘關',
+'钟陈列' => '鐘陳列',
+'钟面' => '鐘面',
+'钟响' => '鐘響',
+'钟顶' => '鐘頂',
+'钟头' => '鐘頭',
+'钟体' => '鐘體',
+'钟鸣' => '鐘鳴',
+'钟点' => '鐘點',
+'钟鼎' => '鐘鼎',
+'钟鼓' => '鐘鼓',
+'铁锈' => '鐵鏽',
+'铁钟' => '鐵鐘',
+'铸钟' => '鑄鐘',
+'鉴别' => '鑑別',
+'鉴古' => '鑑古',
+'鉴定' => '鑑定',
+'鉴察' => '鑑察',
+'鉴往知来' => '鑑往知來',
+'鉴戒' => '鑑戒',
+'鉴湖' => '鑑湖',
+'鉴藏' => '鑑藏',
+'鉴谅' => '鑑諒',
+'鉴证' => '鑑證',
+'鉴识' => '鑑識',
+'鉴赏' => '鑑賞',
+'鉴于' => '鑒於',
+'长几' => '長几',
+'长于' => '長於',
+'长历' => '長曆',
+'长历史' => '長歷史',
+'长发公主' => '長髮公主',
+'长发妹' => '長髮妹',
+'长发姑娘' => '長髮姑娘',
+'长胡' => '長鬍',
+'门帘' => '門帘',
+'门吊儿' => '門弔兒',
+'门里' => '門裡',
+'闫怀礼' => '閆懷禮',
+'開山辟谷' => '開山辟谷',
+'开山辟谷' => '開山闢谷',
+'开吊' => '開弔',
+'开征' => '開徵',
+'开采' => '開採',
+'开发' => '開發',
+'开辟' => '開闢',
+'开哄' => '開鬨',
+'闲邪' => '閑邪',
+'闲情逸致' => '閒情逸緻',
+'闲荡' => '閒蕩',
+'闲游' => '閒遊',
+'间不容发' => '間不容髮',
+'间里' => '間裡',
+'闵采尔' => '閔採爾',
+'阁府' => '閤府',
+'闺范' => '閨範',
+'阃范' => '閫範',
+'闯荡' => '闖蕩',
+'闯炼' => '闖鍊',
+'关系' => '關係',
+'关弓与我确' => '關弓與我确',
+'关于' => '關於',
+'辟佛' => '闢佛',
+'辟作' => '闢作',
+'辟划' => '闢劃',
+'辟土' => '闢土',
+'辟地' => '闢地',
+'辟室' => '闢室',
+'辟建' => '闢建',
+'辟为' => '闢為',
+'辟田' => '闢田',
+'辟筑' => '闢築',
+'辟谣' => '闢謠',
+'辟辟' => '闢辟',
+'辟邪以律' => '闢邪以律',
+'防水表' => '防水錶',
+'防御' => '防禦',
+'防范' => '防範',
+'防锈' => '防鏽',
+'阻于' => '阻於',
+'阿里' => '阿里',
+'附于' => '附於',
+'附注' => '附註',
+'限制' => '限制',
+'院里' => '院裡',
+'陪吊' => '陪弔',
+'阴干' => '陰乾',
+'阴历' => '陰曆',
+'阴历史' => '陰歷史',
+'阴沟里翻船' => '陰溝裡翻船',
+'阴郁' => '陰鬱',
+'陳冲' => '陳冲',
+'陳士杰' => '陳士杰',
+'陈升' => '陳昇',
+'陈有后' => '陳有后',
+'陳有后' => '陳有后',
+'陈杰' => '陳杰',
+'陳杰' => '陳杰',
+'陈炼' => '陳鍊',
+'陆游' => '陸遊',
+'阳春面' => '陽春麵',
+'阳历' => '陽曆',
+'阳历史' => '陽歷史',
+'阳谷' => '陽穀',
+'隆准许' => '隆准許',
+'隆准' => '隆準',
+'随于' => '隨於',
+'隐占' => '隱佔',
+'隐几' => '隱几',
+'隐于' => '隱於',
+'只字' => '隻字',
+'只影' => '隻影',
+'只手遮天' => '隻手遮天',
+'只眼' => '隻眼',
+'只言片语' => '隻言片語',
+'只身' => '隻身',
+'雄斗斗' => '雄斗斗',
+'雅范' => '雅範',
+'集数里' => '集數裡',
+'集于' => '集於',
+'集里' => '集裡',
+'集游法' => '集遊法',
+'雕梁画栋' => '雕樑畫棟',
+'双折射' => '雙折射',
+'双折' => '雙摺',
+'双胜类' => '雙胜類',
+'双雕' => '雙鵰',
+'杂合面儿' => '雜合麵兒',
+'杂志' => '雜誌',
+'杂面' => '雜麵',
+'鸡吵鹅斗' => '雞吵鵝鬥',
+'鸡奸' => '雞姦',
+'鸡争鹅斗' => '雞爭鵝鬥',
+'鸡丝' => '雞絲',
+'鸡丝面' => '雞絲麵',
+'鸡腿面' => '雞腿麵',
+'鸡蛋里挑骨头' => '雞蛋裡挑骨頭',
+'鸡只' => '雞隻',
+'离于' => '離於',
+'难舍' => '難捨',
+'难于' => '難於',
+'雨蒙蒙' => '雨濛濛',
+'雪窗萤几' => '雪窗螢几',
+'雪里' => '雪裡',
+'雪里红' => '雪裡紅',
+'雪里蕻' => '雪裡蕻',
+'云吞' => '雲吞',
+'云笈七签' => '雲笈七籤',
+'云里雾里' => '雲裡霧裡',
+'云游' => '雲遊',
+'云须' => '雲鬚',
+'零个' => '零個',
+'零周后' => '零周後',
+'零天后' => '零天後',
+'零年' => '零年',
+'零只' => '零隻',
+'零余' => '零餘',
+'电子表格' => '電子表格',
+'电子制表' => '電子製表',
+'电子钟' => '電子鐘',
+'电子钟表' => '電子鐘錶',
+'电影后' => '電影後',
+'电影里' => '電影裡',
+'电梯里' => '電梯裡',
+'电波钟' => '電波鐘',
+'电码表' => '電碼表',
+'电冲' => '電衝',
+'电视台风' => '電視台風',
+'电视里' => '電視裡',
+'电表' => '電錶',
+'电钟' => '電鐘',
+'震栗' => '震慄',
+'霉气冲天' => '霉氣衝天',
+'沾化' => '霑化',
+'沾益' => '霑益',
+'雾里' => '霧裡',
+'露丑' => '露醜',
+'霁范' => '霽範',
+'灵昆' => '靈崑',
+'青山一发' => '青山一髮',
+'青霉' => '青黴',
+'非常准' => '非常準',
+'面包住' => '面包住',
+'面包含' => '面包含',
+'面包围' => '面包圍',
+'面包容' => '面包容',
+'面包庇' => '面包庇',
+'面包厢' => '面包廂',
+'面包抄' => '面包抄',
+'面包括' => '面包括',
+'面包揽' => '面包攬',
+'面包涵' => '面包涵',
+'面包管' => '面包管',
+'面包扎' => '面包紮',
+'面包罗' => '面包羅',
+'面包着' => '面包著',
+'面包藏' => '面包藏',
+'面包装' => '面包裝',
+'面包裹' => '面包裹',
+'面包起' => '面包起',
+'面包办' => '面包辦',
+'面店铺' => '面店鋪',
+'面条目' => '面條目',
+'面條目' => '面條目',
+'面粉碎' => '面粉碎',
+'面粉红' => '面粉紅',
+'面食饭' => '面食飯',
+'鞋里' => '鞋裡',
+'鞣制' => '鞣製',
+'秋千' => '鞦韆',
+'鞭辟入里' => '鞭辟入裡',
+'韦席' => '韋蓆',
+'韩国制' => '韓國製',
+'韩制' => '韓製',
+'音不准' => '音不準',
+'音准' => '音準',
+'音声如钟' => '音聲如鐘',
+'韶山冲' => '韶山沖',
+'响钟' => '響鐘',
+'頁面' => '頁面',
+'页面' => '頁面',
+'顶凶' => '頂兇',
+'頂多' => '頂多',
+'顶多' => '頂多',
+'项链' => '項鍊',
+'顺于' => '順於',
+'顺钟向' => '順鐘向',
+'顺风后' => '順風後',
+'须根据' => '須根據',
+'颂系' => '頌繫',
+'颂赞' => '頌讚',
+'预报不准' => '預報不準',
+'预制' => '預製',
+'领袖欲' => '領袖慾',
+'头里' => '頭裡',
+'头长发' => '頭長髮',
+'头发' => '頭髮',
+'颊须' => '頰鬚',
+'额征' => '額徵',
+'额我略历' => '額我略曆',
+'额我略历史' => '額我略歷史',
+'颜范' => '顏範',
+'颠干倒坤' => '顛乾倒坤',
+'顛顛仆仆' => '顛顛仆仆',
+'颠颠仆仆' => '顛顛仆仆',
+'颤栗' => '顫慄',
+'显示表明' => '顯示表明',
+'显示表格' => '顯示表格',
+'显示表现' => '顯示表現',
+'显示表示' => '顯示表示',
+'显示表达' => '顯示表達',
+'显示表面' => '顯示表面',
+'显示表头' => '顯示表頭',
+'显示表' => '顯示錶',
+'显示钟' => '顯示鐘',
+'显示钟表' => '顯示鐘錶',
+'风干' => '風乾',
+'风后' => '風后',
+'风土志' => '風土誌',
+'风后,' => '風後,',
+'风卷残云' => '風捲殘雲',
+'风物志' => '風物誌',
+'风范' => '風範',
+'风里' => '風裡',
+'风起云涌' => '風起雲湧',
+'風采' => '風采',
+'风采' => '風采',
+'风刮' => '風颳',
+'台风' => '颱風',
+'台风后' => '颱風後',
+'刮了' => '颳了',
+'刮倒' => '颳倒',
+'刮去' => '颳去',
+'刮大风' => '颳大風',
+'刮得' => '颳得',
+'刮走' => '颳走',
+'刮起' => '颳起',
+'刮雪' => '颳雪',
+'刮风' => '颳風',
+'刮风后' => '颳風後',
+'飘荡' => '飄蕩',
+'飘游' => '飄遊',
+'飘飘荡荡' => '飄飄蕩蕩',
+'飘发自由女神' => '飄髮自由女神',
+'飞扎' => '飛紮',
+'飞刍挽粟' => '飛芻輓粟',
+'飞行钟' => '飛行鐘',
+'食欲' => '食慾',
+'食欲不振' => '食欲不振',
+'食面' => '食麵',
+'饭后钟' => '飯後鐘',
+'饭团' => '飯糰',
+'饼干' => '餅乾',
+'养脏' => '養臟',
+'餐台' => '餐檯',
+'馂余' => '餕餘',
+'余0' => '餘0',
+'余1' => '餘1',
+'余2' => '餘2',
+'余3' => '餘3',
+'余4' => '餘4',
+'余5' => '餘5',
+'余6' => '餘6',
+'余7' => '餘7',
+'余8' => '餘8',
+'余9' => '餘9',
+'余〇' => '餘〇',
+'余一' => '餘一',
+'余七' => '餘七',
+'余三' => '餘三',
+'余下' => '餘下',
+'余九' => '餘九',
+'余事' => '餘事',
+'余二' => '餘二',
+'余五' => '餘五',
+'余人' => '餘人',
+'余俗' => '餘俗',
+'余倍' => '餘倍',
+'余僇' => '餘僇',
+'余光' => '餘光',
+'余八' => '餘八',
+'余六' => '餘六',
+'余刃' => '餘刃',
+'余切' => '餘切',
+'余利' => '餘利',
+'余割' => '餘割',
+'余力' => '餘力',
+'余勇' => '餘勇',
+'余十' => '餘十',
+'余味' => '餘味',
+'余喘' => '餘喘',
+'余四' => '餘四',
+'余地' => '餘地',
+'余墨' => '餘墨',
+'余外' => '餘外',
+'余妙' => '餘妙',
+'余姚' => '餘姚',
+'余威' => '餘威',
+'余子' => '餘子',
+'余存' => '餘存',
+'余孽' => '餘孽',
+'余干' => '餘干',
+'余年' => '餘年',
+'余式' => '餘式',
+'余弦' => '餘弦',
+'余思' => '餘思',
+'余悸' => '餘悸',
+'余庆' => '餘慶',
+'余数' => '餘數',
+'余明' => '餘明',
+'余映' => '餘映',
+'余暇' => '餘暇',
+'余晖' => '餘暉',
+'余杭' => '餘杭',
+'余杯' => '餘杯',
+'余桃' => '餘桃',
+'余桶' => '餘桶',
+'余业' => '餘業',
+'余款' => '餘款',
+'余欢' => '餘歡',
+'余步' => '餘步',
+'余殃' => '餘殃',
+'余毒' => '餘毒',
+'余气' => '餘氣',
+'余江' => '餘江',
+'余波' => '餘波',
+'余温' => '餘溫',
+'余泽' => '餘澤',
+'余沥' => '餘瀝',
+'余烈' => '餘烈',
+'余热' => '餘熱',
+'余烬' => '餘燼',
+'余珍' => '餘珍',
+'余生' => '餘生',
+'余留' => '餘留',
+'余众' => '餘眾',
+'余窍' => '餘竅',
+'余粮' => '餘糧',
+'余绪' => '餘緒',
+'余缺' => '餘缺',
+'余罪' => '餘罪',
+'余羡' => '餘羨',
+'余声' => '餘聲',
+'余膏' => '餘膏',
+'余兴' => '餘興',
+'余蓄' => '餘蓄',
+'余荫' => '餘蔭',
+'余裕' => '餘裕',
+'余角' => '餘角',
+'余论' => '餘論',
+'余责' => '餘責',
+'余貾' => '餘貾',
+'余辉' => '餘輝',
+'余辜' => '餘辜',
+'余部' => '餘部',
+'余酲' => '餘酲',
+'余量' => '餘量',
+'余闰' => '餘閏',
+'余闲' => '餘閒',
+'余零' => '餘零',
+'余震' => '餘震',
+'余霞' => '餘霞',
+'余音' => '餘音',
+'余韵' => '餘韻',
+'余响' => '餘響',
+'余项' => '餘項',
+'余额' => '餘額',
+'余风' => '餘風',
+'余食' => '餘食',
+'余党' => '餘黨',
+'馄饨面' => '餛飩麵',
+'馆谷' => '館穀',
+'馆里' => '館裡',
+'饥寒' => '饑寒',
+'饥民' => '饑民',
+'饥渴' => '饑渴',
+'饥溺' => '饑溺',
+'饥荒' => '饑荒',
+'饥饱' => '饑飽',
+'饥馑' => '饑饉',
+'首当其冲' => '首當其衝',
+'首发' => '首發',
+'首只' => '首隻',
+'首出电影' => '首齣電影',
+'香干' => '香乾',
+'香山庄' => '香山庄',
+'马干' => '馬乾',
+'馬占山' => '馬占山',
+'马德钟' => '馬德鐘',
+'马斯垂克期' => '馬斯垂克期',
+'馬格里布' => '馬格里布',
+'马格里布' => '馬格里布',
+'驻扎' => '駐紮',
+'骀荡' => '駘蕩',
+'腾格里' => '騰格里',
+'騰格里' => '騰格里',
+'腾涌' => '騰湧',
+'腾冲' => '騰衝',
+'惊栗' => '驚慄',
+'惊赞' => '驚讚',
+'惊钟' => '驚鐘',
+'骨干' => '骨幹',
+'骨灰坛' => '骨灰罈',
+'骨坛' => '骨罈',
+'体征' => '體徵',
+'体范' => '體範',
+'体系' => '體系',
+'体里' => '體裡',
+'高几' => '高几',
+'高后' => '高后',
+'高干扰' => '高干擾',
+'高干预' => '高干預',
+'高干' => '高幹',
+'高度自制' => '高度自制',
+'高涌泉' => '高涌泉',
+'高清愿' => '高清愿',
+'髡发' => '髡髮',
+'髭胡' => '髭鬍',
+'髭须' => '髭鬚',
+'发上指冠' => '髮上指冠',
+'发上冲冠' => '髮上沖冠',
+'发乳' => '髮乳',
+'发光可鉴' => '髮光可鑑',
+'发匪' => '髮匪',
+'发及腰' => '髮及腰',
+'发型' => '髮型',
+'发夹' => '髮夾',
+'发妻' => '髮妻',
+'发姐' => '髮姐',
+'发屋' => '髮屋',
+'发已霜白' => '髮已霜白',
+'发带' => '髮帶',
+'发廊' => '髮廊',
+'发式' => '髮式',
+'发引千钧' => '髮引千鈞',
+'发披肩' => '髮披肩',
+'发卷' => '髮捲',
+'发根' => '髮根',
+'发油' => '髮油',
+'发漂' => '髮漂',
+'发为血之本' => '髮為血之本',
+'发状' => '髮狀',
+'发癣' => '髮癬',
+'发短心长' => '髮短心長',
+'发禁' => '髮禁',
+'发笺' => '髮箋',
+'发纱' => '髮紗',
+'发结' => '髮結',
+'发丝' => '髮絲',
+'发网' => '髮網',
+'发脚' => '髮腳',
+'发肤' => '髮膚',
+'发胶' => '髮膠',
+'发菜' => '髮菜',
+'发蜡' => '髮蠟',
+'发踊冲冠' => '髮踴沖冠',
+'发辫' => '髮辮',
+'发针' => '髮針',
+'发钗' => '髮釵',
+'发长' => '髮長',
+'发际' => '髮際',
+'发雕' => '髮雕',
+'发霜' => '髮霜',
+'发饰' => '髮飾',
+'发髻' => '髮髻',
+'发鬓' => '髮鬢',
+'髯胡' => '髯鬍',
+'髼松' => '髼鬆',
+'鬅松' => '鬅鬆',
+'松一口气' => '鬆一口氣',
+'松了' => '鬆了',
+'松些' => '鬆些',
+'松元音' => '鬆元音',
+'松劲' => '鬆勁',
+'松动' => '鬆動',
+'松化' => '鬆化',
+'松口' => '鬆口',
+'松喉' => '鬆喉',
+'松土' => '鬆土',
+'松宽' => '鬆寬',
+'松弛' => '鬆弛',
+'松快' => '鬆快',
+'松懈' => '鬆懈',
+'松手' => '鬆手',
+'松掉' => '鬆掉',
+'松散' => '鬆散',
+'松柔' => '鬆柔',
+'松气' => '鬆氣',
+'松浮' => '鬆浮',
+'松绑' => '鬆綁',
+'松紧' => '鬆緊',
+'松缓' => '鬆緩',
+'松脆' => '鬆脆',
+'松脱' => '鬆脫',
+'松蛋' => '鬆蛋',
+'松起' => '鬆起',
+'松软' => '鬆軟',
+'松通' => '鬆通',
+'松开' => '鬆開',
+'松饼' => '鬆餅',
+'松松地' => '鬆鬆地',
+'鬈发' => '鬈髮',
+'胡子' => '鬍子',
+'胡梢' => '鬍梢',
+'胡渣' => '鬍渣',
+'胡髭' => '鬍髭',
+'胡髯' => '鬍髯',
+'胡须' => '鬍鬚',
+'鬒发' => '鬒髮',
+'须根' => '鬚根',
+'须毛' => '鬚毛',
+'须生' => '鬚生',
+'须眉' => '鬚眉',
+'须发' => '鬚髮',
+'须胡' => '鬚鬍',
+'须须' => '鬚鬚',
+'须鲨' => '鬚鯊',
+'须鲸' => '鬚鯨',
+'鬓发' => '鬢髮',
+'斗不过' => '鬥不過',
+'斗了' => '鬥了',
+'斗来斗去' => '鬥來鬥去',
+'斗倒' => '鬥倒',
+'斗分子' => '鬥分子',
+'斗剑' => '鬥劍',
+'斗力' => '鬥力',
+'斗劲' => '鬥勁',
+'斗勇' => '鬥勇',
+'斗胜' => '鬥勝',
+'斗口' => '鬥口',
+'斗合' => '鬥合',
+'斗嘴' => '鬥嘴',
+'斗地主' => '鬥地主',
+'斗垮' => '鬥垮',
+'斗士' => '鬥士',
+'斗富' => '鬥富',
+'斗巧' => '鬥巧',
+'斗幌子' => '鬥幌子',
+'斗弄' => '鬥弄',
+'斗引' => '鬥引',
+'斗别气' => '鬥彆氣',
+'斗彩' => '鬥彩',
+'斗心眼' => '鬥心眼',
+'斗志' => '鬥志',
+'斗闷' => '鬥悶',
+'斗成' => '鬥成',
+'斗战' => '鬥戰',
+'斗打' => '鬥打',
+'斗批改' => '鬥批改',
+'斗技' => '鬥技',
+'斗败' => '鬥敗',
+'斗文' => '鬥文',
+'斗智' => '鬥智',
+'斗暴' => '鬥暴',
+'斗武' => '鬥武',
+'斗殴' => '鬥毆',
+'斗气' => '鬥氣',
+'斗法' => '鬥法',
+'斗争' => '鬥爭',
+'斗争斗合' => '鬥爭鬥合',
+'斗牌' => '鬥牌',
+'斗牙拌齿' => '鬥牙拌齒',
+'斗牙斗齿' => '鬥牙鬥齒',
+'斗牛' => '鬥牛',
+'斗犀台' => '鬥犀臺',
+'斗犬' => '鬥犬',
+'斗狗' => '鬥狗',
+'斗狠' => '鬥狠',
+'斗兽' => '鬥獸',
+'斗叠' => '鬥疊',
+'斗百草' => '鬥百草',
+'斗眼' => '鬥眼',
+'斗私批修' => '鬥私批修',
+'斗而铸兵' => '鬥而鑄兵',
+'斗而铸锥' => '鬥而鑄錐',
+'斗脚' => '鬥腳',
+'斗舰' => '鬥艦',
+'斗茶' => '鬥茶',
+'斗草' => '鬥草',
+'斗叶儿' => '鬥葉兒',
+'斗叶子' => '鬥葉子',
+'斗蛐' => '鬥蛐',
+'斗蟋蟀' => '鬥蟋蟀',
+'斗话' => '鬥話',
+'斗艳' => '鬥豔',
+'斗起' => '鬥起',
+'斗趣' => '鬥趣',
+'斗闲气' => '鬥閒氣',
+'斗鸡' => '鬥雞',
+'斗雪红' => '鬥雪紅',
+'斗头' => '鬥頭',
+'斗风' => '鬥風',
+'斗饤' => '鬥飣',
+'斗斗' => '鬥鬥',
+'斗哄' => '鬥鬨',
+'斗鱼' => '鬥魚',
+'斗鸭' => '鬥鴨',
+'斗鹌鹑' => '鬥鵪鶉',
+'斗丽' => '鬥麗',
+'斗龙' => '鬥龍',
+'闹表' => '鬧錶',
+'闹钟' => '鬧鐘',
+'哄动' => '鬨動',
+'哄堂' => '鬨堂',
+'哄笑' => '鬨笑',
+'郁伊' => '鬱伊',
+'郁勃' => '鬱勃',
+'郁卒' => '鬱卒',
+'郁南' => '鬱南',
+'郁堙不偶' => '鬱堙不偶',
+'郁塞' => '鬱塞',
+'郁垒' => '鬱壘',
+'郁律' => '鬱律',
+'郁悒' => '鬱悒',
+'郁闷' => '鬱悶',
+'郁愤' => '鬱憤',
+'郁抑' => '鬱抑',
+'郁挹' => '鬱挹',
+'郁林' => '鬱林',
+'郁气' => '鬱氣',
+'郁江' => '鬱江',
+'郁沉沉' => '鬱沉沉',
+'郁泱' => '鬱泱',
+'郁火' => '鬱火',
+'郁热' => '鬱熱',
+'郁燠' => '鬱燠',
+'郁症' => '鬱症',
+'郁积' => '鬱積',
+'郁纡' => '鬱紆',
+'郁结' => '鬱結',
+'郁蒸' => '鬱蒸',
+'郁蓊' => '鬱蓊',
+'郁血' => '鬱血',
+'郁邑' => '鬱邑',
+'郁郁' => '鬱郁',
+'郁金' => '鬱金',
+'郁闭' => '鬱閉',
+'郁陶' => '鬱陶',
+'郁郁不平' => '鬱鬱不平',
+'郁郁不乐' => '鬱鬱不樂',
+'郁郁寡欢' => '鬱鬱寡歡',
+'郁郁而终' => '鬱鬱而終',
+'郁郁苍苍' => '鬱鬱蒼蒼',
+'郁郁葱葱' => '鬱鬱蔥蔥',
+'郁黑' => '鬱黑',
+'鬼气冲天' => '鬼氣衝天',
+'鬼谷子' => '鬼谷子',
+'魂牵梦系' => '魂牽夢繫',
+'魏征' => '魏徵',
+'魔表' => '魔錶',
+'鱼干' => '魚乾',
+'鱼松' => '魚鬆',
+'鮮于' => '鮮于',
+'鲜于' => '鮮于',
+'鲸须' => '鯨鬚',
+'鳥栖' => '鳥栖',
+'鸟栖市' => '鳥栖市',
+'凤梨干' => '鳳梨乾',
+'鸣钟' => '鳴鐘',
+'鸿范' => '鴻範',
+'鹅准' => '鵝準',
+'鹄发' => '鵠髮',
+'雕心雁爪' => '鵰心雁爪',
+'雕悍' => '鵰悍',
+'雕翎' => '鵰翎',
+'雕鹗' => '鵰鶚',
+'鹤峰县' => '鶴峯縣',
+'鹤吊' => '鶴弔',
+'鹤发' => '鶴髮',
+'鸾鉴' => '鸞鑑',
+'鹰雕' => '鹰鵰',
+'咸味' => '鹹味',
+'咸嘴淡舌' => '鹹嘴淡舌',
+'咸土' => '鹹土',
+'咸度' => '鹹度',
+'咸得' => '鹹得',
+'咸批' => '鹹批',
+'咸水' => '鹹水',
+'咸派' => '鹹派',
+'咸海' => '鹹海',
+'咸淡' => '鹹淡',
+'咸湖' => '鹹湖',
+'咸汤' => '鹹湯',
+'咸潟' => '鹹潟',
+'咸湿' => '鹹濕',
+'咸的' => '鹹的',
+'咸粥' => '鹹粥',
+'咸肉' => '鹹肉',
+'咸菜' => '鹹菜',
+'咸菜干' => '鹹菜乾',
+'咸蛋' => '鹹蛋',
+'咸猪' => '鹹豬',
+'咸类' => '鹹類',
+'咸食' => '鹹食',
+'咸鱼' => '鹹魚',
+'咸鸭蛋' => '鹹鴨蛋',
+'咸卤' => '鹹鹵',
+'咸咸' => '鹹鹹',
+'盐打怎么咸' => '鹽打怎麼鹹',
+'盐卤' => '鹽滷',
+'盐余' => '鹽餘',
+'鹿場里' => '鹿場里',
+'丽于' => '麗於',
+'麟游' => '麟遊',
+'曲酒' => '麯酒',
+'曲尘' => '麴塵',
+'曲櫱' => '麴櫱',
+'曲秀才' => '麴秀才',
+'曲车' => '麴車',
+'曲道士' => '麴道士',
+'曲钱' => '麴錢',
+'曲霉' => '麴黴',
+'麹霉' => '麴黴',
+'面人儿' => '麵人兒',
+'面包' => '麵包',
+'面坊' => '麵坊',
+'面坯儿' => '麵坯兒',
+'面塑' => '麵塑',
+'面店' => '麵店',
+'面厂' => '麵廠',
+'面摊' => '麵攤',
+'面杖' => '麵杖',
+'面条' => '麵條',
+'面汤' => '麵湯',
+'面浆' => '麵漿',
+'面疙瘩' => '麵疙瘩',
+'面皮' => '麵皮',
+'面码儿' => '麵碼兒',
+'面筋' => '麵筋',
+'面粉' => '麵粉',
+'面糊' => '麵糊',
+'面团' => '麵糰',
+'面缸' => '麵缸',
+'面茶' => '麵茶',
+'面制品' => '麵製品',
+'面食' => '麵食',
+'面饺' => '麵餃',
+'面饼' => '麵餅',
+'面馆' => '麵館',
+'面点、' => '麵點、',
+'面点师' => '麵點師',
+'麻将席' => '麻將蓆',
+'麻酱面' => '麻醬麵',
+'黄干黑瘦' => '黃乾黑瘦',
+'黄岩区' => '黃巖區',
+'黄岩县' => '黃巖縣',
+'黄历' => '黃曆',
+'黃杰' => '黃杰',
+'黄杰' => '黃杰',
+'黄历史' => '黃歷史',
+'黄白术' => '黃白術',
+'黃詩杰' => '黃詩杰',
+'黄诗杰' => '黃詩杰',
+'黄金表' => '黃金表',
+'黃鈺筑' => '黃鈺筑',
+'黄钰筑' => '黃鈺筑',
+'黄钟' => '黃鐘',
+'黄发' => '黃髮',
+'黄曲毒素' => '黃麴毒素',
+'黎克特制' => '黎克特制',
+'黎吉云' => '黎吉雲',
+'黎吉雲' => '黎吉雲',
+'黑奴吁天录' => '黑奴籲天錄',
+'黑干将' => '黑幹將',
+'黑长发' => '黑長髮',
+'黑发' => '黑髮',
+'点个赞' => '點個讚',
+'点札' => '點劄',
+'点半钟' => '點半鐘',
+'点多钟' => '點多鐘',
+'点里' => '點裡',
+'点赞' => '點讚',
+'点里程' => '點里程',
+'点钟' => '點鐘',
+'霉毒' => '黴毒',
+'霉素' => '黴素',
+'霉菌' => '黴菌',
+'霉黑' => '黴黑',
+'霉黧' => '黴黧',
+'鼓里' => '鼓裡',
+'鼓噪' => '鼓譟',
+'冬冬鼓' => '鼕鼕鼓',
+'咚咚鼓' => '鼕鼕鼓',
+'鼠曲草' => '鼠麴草',
+'鼻梁儿' => '鼻梁兒',
+'鼻梁' => '鼻樑',
+'鼻准' => '鼻準',
+'齐王舍牛' => '齊王捨牛',
+'齿危发秀' => '齒危髮秀',
+'齿落发白' => '齒落髮白',
+'齿发' => '齒髮',
+'龙岩' => '龍巖',
+'龙卷' => '龍捲',
+'龙眼干' => '龍眼乾',
+'龙须' => '龍鬚',
+'龙须面' => '龍鬚麵',
+'龙斗虎伤' => '龍鬥虎傷',
+'龜山庄' => '龜山庄',
+'龟鉴' => '龜鑑',
+',并力' => ',並力',
+',并力攻' => ',并力攻',
+',并力討' => ',并力討',
+',并力讨' => ',并力討',
+',个中' => ',箇中',
+);
+
+public static $zh2Hans = array(
+'㑯' => '㑔',
+'㑳' => '㑇',
+'㑶' => '㐹',
+'㒓' => '𠉂',
+'㒺' => '罔',
+'㓂' => '寇',
+'㓨' => '刾',
+'㕁' => '却',
+'㕑' => '厨',
+'㕘' => '参',
+'㕥' => '以',
+'㗲' => '𠵾',
+'㘚' => '㘎',
+'㘭' => '坳',
+'㜄' => '㚯',
+'㜏' => '㛣',
+'㜢' => '𡞱',
+'㜷' => '𡝠',
+'㝛' => '宿',
+'㝠' => '冥',
+'㞞' => '𪨊',
+'㠀' => '岛',
+'㠏' => '㟆',
+'㠯' => '以',
+'㠶' => '帆',
+'㡌' => '帽',
+'㢘' => '廉',
+'㢝' => '𢋈',
+'㤙' => '恩',
+'㥦' => '惬',
+'㥮' => '㤘',
+'㦎' => '𢛯',
+'㨗' => '捷',
+'㨪' => '晃',
+'㨿' => '据',
+'㩗' => '携',
+'㩜' => '㨫',
+'㩦' => '携',
+'㩳' => '㧐',
+'㪚' => '散',
+'㪟' => '敦',
+'㬉' => '暖',
+'㬪' => '叠',
+'㯭' => '橹',
+'㱃' => '饮',
+'㳒' => '法',
+'㴱' => '深',
+'㷿' => '𤈷',
+'㺏' => '𤠋',
+'㼝' => '碗',
+'㽞' => '留',
+'㿜' => '瘪',
+'㿧' => '𤽯',
+'䀹' => '𥅴',
+'䁪' => '𥇢',
+'䁻' => '䀥',
+'䈰' => '筲',
+'䉙' => '𥬀',
+'䉬' => '𫂈',
+'䉲' => '𥮜',
+'䊀' => '糊',
+'䊭' => '𥺅',
+'䊷' => '䌶',
+'䋙' => '䌺',
+'䋚' => '䌻',
+'䋹' => '䌿',
+'䋻' => '䌾',
+'䋿' => '𦈓',
+'䌈' => '𦈖',
+'䌋' => '𦈘',
+'䌖' => '𦈜',
+'䌝' => '𦈟',
+'䌟' => '𦈞',
+'䌥' => '𦈠',
+'䌰' => '𦈙',
+'䎱' => '䎬',
+'䕳' => '𦰴',
+'䗬' => '蜂',
+'䗿' => '𧉞',
+'䘏' => '恤',
+'䘑' => '脉',
+'䘚' => '卒',
+'䙡' => '䙌',
+'䛐' => '词',
+'䛡' => '话',
+'䜀' => '䜧',
+'䝔' => '獾',
+'䝻' => '𧹕',
+'䝼' => '䞍',
+'䞈' => '𧹑',
+'䠀' => '蹚',
+'䠶' => '射',
+'䢨' => '𨑹',
+'䥇' => '䦂',
+'䥥' => '镰',
+'䥩' => '𨱖',
+'䥱' => '䥾',
+'䦘' => '𨸄',
+'䦛' => '䦶',
+'䦟' => '䦷',
+'䦳' => '𨷿',
+'䧢' => '𨸟',
+'䪏' => '𩏼',
+'䪗' => '𩐀',
+'䪘' => '𩏿',
+'䫴' => '𩖗',
+'䬃' => '飒',
+'䬘' => '𩙮',
+'䬝' => '𩙯',
+'䬞' => '𩙧',
+'䭀' => '𩠇',
+'䭃' => '𩠈',
+'䭾' => '驮',
+'䭿' => '𩧭',
+'䮝' => '𩧰',
+'䮞' => '𩨁',
+'䮠' => '𩧿',
+'䮫' => '𩨇',
+'䮳' => '𩨏',
+'䮾' => '𩧪',
+'䯀' => '䯅',
+'䰟' => '魂',
+'䰾' => '鲃',
+'䱙' => '𩾈',
+'䱬' => '𩾊',
+'䱰' => '𩾋',
+'䱷' => '䲣',
+'䱽' => '䲝',
+'䲁' => '鳚',
+'䲖' => '𩾂',
+'䲘' => '鳤',
+'䲰' => '𪉂',
+'䳘' => '鹅',
+'䴉' => '鹮',
+'䴬' => '𪎈',
+'䴴' => '𪎋',
+'䶊' => '衄',
+'丟' => '丢',
+'丣' => '卯',
+'並' => '并',
+'乗' => '乘',
+'乹' => '干',
+'乾' => '干',
+'亁' => '干',
+'亂' => '乱',
+'亙' => '亘',
+'亝' => '斋',
+'亞' => '亚',
+'亱' => '夜',
+'亷' => '廉',
+'亾' => '亡',
+'佇' => '伫',
+'佈' => '布',
+'佔' => '占',
+'併' => '并',
+'來' => '来',
+'侖' => '仑',
+'侶' => '侣',
+'俁' => '俣',
+'係' => '系',
+'俔' => '伣',
+'俠' => '侠',
+'俥' => '伡',
+'俻' => '备',
+'倀' => '伥',
+'倆' => '俩',
+'倈' => '俫',
+'倉' => '仓',
+'個' => '个',
+'倐' => '倏',
+'們' => '们',
+'倖' => '幸',
+'倣' => '仿',
+'倫' => '伦',
+'倲' => '㑈',
+'倸' => '睬',
+'偉' => '伟',
+'偑' => '㐽',
+'側' => '侧',
+'偵' => '侦',
+'偽' => '伪',
+'傌' => '㐷',
+'傑' => '杰',
+'傖' => '伧',
+'傘' => '伞',
+'備' => '备',
+'傚' => '效',
+'傢' => '家',
+'傭' => '佣',
+'傯' => '偬',
+'傳' => '传',
+'傴' => '伛',
+'債' => '债',
+'傷' => '伤',
+'傾' => '倾',
+'僂' => '偻',
+'僅' => '仅',
+'僉' => '佥',
+'僊' => '仙',
+'働' => '动',
+'僑' => '侨',
+'僕' => '仆',
+'僞' => '伪',
+'僥' => '侥',
+'僨' => '偾',
+'僱' => '雇',
+'價' => '价',
+'儀' => '仪',
+'儂' => '侬',
+'億' => '亿',
+'儈' => '侩',
+'儉' => '俭',
+'儌' => '侥',
+'儐' => '傧',
+'儔' => '俦',
+'儕' => '侪',
+'儘' => '尽',
+'償' => '偿',
+'儣' => '𠆲',
+'優' => '优',
+'儲' => '储',
+'儷' => '俪',
+'儸' => '㑩',
+'儺' => '傩',
+'儻' => '傥',
+'儼' => '俨',
+'兇' => '凶',
+'兌' => '兑',
+'兎' => '兔',
+'兒' => '儿',
+'兗' => '兖',
+'兠' => '兜',
+'內' => '内',
+'兩' => '两',
+'冄' => '冉',
+'冊' => '册',
+'冐' => '冒',
+'冑' => '胄',
+'冪' => '幂',
+'冺' => '泯',
+'凈' => '净',
+'凍' => '冻',
+'凙' => '𪞝',
+'凜' => '凛',
+'凢' => '凡',
+'凱' => '凯',
+'凴' => '凭',
+'別' => '别',
+'刦' => '劫',
+'刧' => '劫',
+'刪' => '删',
+'刼' => '劫',
+'剄' => '刭',
+'則' => '则',
+'剉' => '锉',
+'剋' => '克',
+'剎' => '刹',
+'剏' => '创',
+'剗' => '刬',
+'剙' => '创',
+'剛' => '刚',
+'剝' => '剥',
+'剮' => '剐',
+'剳' => '札',
+'剴' => '剀',
+'創' => '创',
+'剷' => '铲',
+'剹' => '戮',
+'剾' => '𠛅',
+'劃' => '划',
+'劄' => '札',
+'劇' => '剧',
+'劉' => '刘',
+'劊' => '刽',
+'劌' => '刿',
+'劍' => '剑',
+'劏' => '㓥',
+'劑' => '剂',
+'劒' => '剑',
+'劚' => '㔉',
+'効' => '效',
+'勁' => '劲',
+'勅' => '敕',
+'勌' => '倦',
+'勑' => '敕',
+'動' => '动',
+'務' => '务',
+'勛' => '勋',
+'勝' => '胜',
+'勞' => '劳',
+'勢' => '势',
+'勦' => '剿',
+'勩' => '勚',
+'勱' => '劢',
+'勳' => '勋',
+'勵' => '励',
+'勸' => '劝',
+'勻' => '匀',
+'匟' => '炕',
+'匭' => '匦',
+'匯' => '汇',
+'匱' => '匮',
+'匲' => '奁',
+'匳' => '奁',
+'區' => '区',
+'協' => '协',
+'卹' => '恤',
+'卻' => '却',
+'卽' => '即',
+'厀' => '膝',
+'厙' => '厍',
+'厠' => '厕',
+'厤' => '历',
+'厭' => '厌',
+'厰' => '厂',
+'厲' => '厉',
+'厴' => '厣',
+'參' => '参',
+'叄' => '叁',
+'叢' => '丛',
+'吚' => '咿',
+'吳' => '吴',
+'吶' => '呐',
+'呂' => '吕',
+'呌' => '叫',
+'呪' => '咒',
+'咊' => '和',
+'咼' => '呙',
+'員' => '员',
+'哯' => '𠯟',
+'哶' => '咩',
+'唄' => '呗',
+'唕' => '唣',
+'唘' => '启',
+'唚' => '吣',
+'唸' => '念',
+'啎' => '忤',
+'問' => '问',
+'啑' => '喋',
+'啓' => '启',
+'啗' => '啖',
+'啞' => '哑',
+'啟' => '启',
+'啢' => '唡',
+'啣' => '衔',
+'喎' => '㖞',
+'喚' => '唤',
+'喪' => '丧',
+'喫' => '吃',
+'喬' => '乔',
+'單' => '单',
+'喲' => '哟',
+'嗁' => '啼',
+'嗆' => '呛',
+'嗇' => '啬',
+'嗊' => '唝',
+'嗎' => '吗',
+'嗚' => '呜',
+'嗩' => '唢',
+'嗶' => '哔',
+'嗹' => '𪡏',
+'嘅' => '慨',
+'嘆' => '叹',
+'嘍' => '喽',
+'嘑' => '呼',
+'嘓' => '啯',
+'嘔' => '呕',
+'嘖' => '啧',
+'嘗' => '尝',
+'嘜' => '唛',
+'嘠' => '嘎',
+'嘩' => '哗',
+'嘮' => '唠',
+'嘯' => '啸',
+'嘰' => '叽',
+'嘵' => '哓',
+'嘷' => '嗥',
+'嘸' => '呒',
+'嘽' => '啴',
+'噅' => '𠯠',
+'噉' => '啖',
+'噓' => '嘘',
+'噚' => '㖊',
+'噝' => '咝',
+'噠' => '哒',
+'噥' => '哝',
+'噦' => '哕',
+'噯' => '嗳',
+'噲' => '哙',
+'噴' => '喷',
+'噸' => '吨',
+'噹' => '当',
+'嚀' => '咛',
+'嚇' => '吓',
+'嚌' => '哜',
+'嚐' => '尝',
+'嚕' => '噜',
+'嚙' => '啮',
+'嚥' => '咽',
+'嚦' => '呖',
+'嚨' => '咙',
+'嚮' => '向',
+'嚲' => '亸',
+'嚳' => '喾',
+'嚴' => '严',
+'嚶' => '嘤',
+'囀' => '啭',
+'囁' => '嗫',
+'囂' => '嚣',
+'囅' => '冁',
+'囈' => '呓',
+'囉' => '啰',
+'囌' => '苏',
+'囑' => '嘱',
+'囓' => '啮',
+'囙' => '因',
+'囪' => '囱',
+'圅' => '函',
+'圇' => '囵',
+'國' => '国',
+'圍' => '围',
+'園' => '园',
+'圓' => '圆',
+'圖' => '图',
+'團' => '团',
+'圞' => '𪢮',
+'坿' => '附',
+'垜' => '垛',
+'垵' => '埯',
+'埡' => '垭',
+'埰' => '采',
+'執' => '执',
+'堅' => '坚',
+'堊' => '垩',
+'堝' => '埚',
+'堯' => '尧',
+'報' => '报',
+'場' => '场',
+'塊' => '块',
+'塋' => '茔',
+'塏' => '垲',
+'塒' => '埘',
+'塗' => '涂',
+'塟' => '葬',
+'塢' => '坞',
+'塤' => '埙',
+'塲' => '场',
+'塵' => '尘',
+'塹' => '堑',
+'墊' => '垫',
+'墖' => '塔',
+'墜' => '坠',
+'墮' => '堕',
+'墰' => '坛',
+'墳' => '坟',
+'墻' => '墙',
+'墾' => '垦',
+'壇' => '坛',
+'壈' => '𡒄',
+'壋' => '垱',
+'壎' => '埙',
+'壓' => '压',
+'壘' => '垒',
+'壙' => '圹',
+'壚' => '垆',
+'壜' => '坛',
+'壞' => '坏',
+'壟' => '垄',
+'壠' => '垅',
+'壢' => '坜',
+'壩' => '坝',
+'壯' => '壮',
+'壺' => '壶',
+'壻' => '婿',
+'壼' => '壸',
+'壽' => '寿',
+'夘' => '卯',
+'夠' => '够',
+'夢' => '梦',
+'夥' => '伙',
+'夾' => '夹',
+'奐' => '奂',
+'奧' => '奥',
+'奩' => '奁',
+'奪' => '夺',
+'奬' => '奖',
+'奮' => '奋',
+'奼' => '姹',
+'妝' => '妆',
+'妬' => '妒',
+'妳' => '你',
+'妷' => '侄',
+'姉' => '姊',
+'姍' => '姗',
+'姙' => '妊',
+'姦' => '奸',
+'姪' => '侄',
+'姸' => '妍',
+'娛' => '娱',
+'婁' => '娄',
+'婣' => '姻',
+'婦' => '妇',
+'婬' => '淫',
+'婭' => '娅',
+'媍' => '妇',
+'媧' => '娲',
+'媯' => '妫',
+'媰' => '㛀',
+'媼' => '媪',
+'媽' => '妈',
+'媿' => '愧',
+'嫋' => '袅',
+'嫗' => '妪',
+'嫰' => '嫩',
+'嫵' => '妩',
+'嫺' => '娴',
+'嫻' => '娴',
+'嫿' => '婳',
+'嬀' => '妫',
+'嬃' => '媭',
+'嬈' => '娆',
+'嬋' => '婵',
+'嬌' => '娇',
+'嬙' => '嫱',
+'嬝' => '袅',
+'嬡' => '嫒',
+'嬤' => '嬷',
+'嬪' => '嫔',
+'嬭' => '奶',
+'嬰' => '婴',
+'嬸' => '婶',
+'嬾' => '懒',
+'孃' => '娘',
+'孋' => '㛤',
+'孌' => '娈',
+'孫' => '孙',
+'學' => '学',
+'孼' => '孽',
+'孿' => '孪',
+'宂' => '冗',
+'宮' => '宫',
+'寀' => '采',
+'寃' => '冤',
+'寑' => '寝',
+'寢' => '寝',
+'實' => '实',
+'寧' => '宁',
+'審' => '审',
+'寫' => '写',
+'寬' => '宽',
+'寳' => '宝',
+'寵' => '宠',
+'寶' => '宝',
+'尅' => '克',
+'將' => '将',
+'專' => '专',
+'尋' => '寻',
+'對' => '对',
+'導' => '导',
+'尒' => '尔',
+'尙' => '尚',
+'尟' => '鲜',
+'尠' => '鲜',
+'尷' => '尴',
+'屆' => '届',
+'屍' => '尸',
+'屓' => '屃',
+'屛' => '屏',
+'屜' => '屉',
+'屢' => '屡',
+'層' => '层',
+'屨' => '屦',
+'屩' => '𪨗',
+'屬' => '属',
+'屭' => '屃',
+'岅' => '坂',
+'岡' => '冈',
+'峝' => '峒',
+'峴' => '岘',
+'島' => '岛',
+'峽' => '峡',
+'崍' => '崃',
+'崗' => '岗',
+'崢' => '峥',
+'崬' => '岽',
+'嵐' => '岚',
+'嵗' => '岁',
+'嵼' => '𡶴',
+'嶁' => '嵝',
+'嶃' => '崭',
+'嶄' => '崭',
+'嶇' => '岖',
+'嶔' => '嵚',
+'嶗' => '崂',
+'嶠' => '峤',
+'嶢' => '峣',
+'嶧' => '峄',
+'嶨' => '峃',
+'嶮' => '崄',
+'嶸' => '嵘',
+'嶺' => '岭',
+'嶼' => '屿',
+'嶽' => '岳',
+'巋' => '岿',
+'巒' => '峦',
+'巔' => '巅',
+'巖' => '岩',
+'巗' => '岩',
+'巰' => '巯',
+'巵' => '卮',
+'帀' => '匝',
+'帋' => '纸',
+'帥' => '帅',
+'師' => '师',
+'帬' => '裙',
+'帳' => '帐',
+'帶' => '带',
+'幀' => '帧',
+'幃' => '帏',
+'幇' => '帮',
+'幑' => '徽',
+'幗' => '帼',
+'幘' => '帻',
+'幙' => '幕',
+'幚' => '帮',
+'幟' => '帜',
+'幣' => '币',
+'幫' => '帮',
+'幬' => '帱',
+'幹' => '干',
+'幾' => '几',
+'庫' => '库',
+'庻' => '庶',
+'庽' => '寓',
+'廁' => '厕',
+'廂' => '厢',
+'廄' => '厩',
+'廈' => '厦',
+'廎' => '庼',
+'廐' => '厩',
+'廕' => '荫',
+'廚' => '厨',
+'廝' => '厮',
+'廟' => '庙',
+'廠' => '厂',
+'廡' => '庑',
+'廢' => '废',
+'廣' => '广',
+'廩' => '廪',
+'廬' => '庐',
+'廳' => '厅',
+'廵' => '巡',
+'廹' => '迫',
+'廻' => '回',
+'廼' => '乃',
+'弒' => '弑',
+'弔' => '吊',
+'弳' => '弪',
+'張' => '张',
+'強' => '强',
+'彆' => '别',
+'彈' => '弹',
+'彌' => '弥',
+'彎' => '弯',
+'彙' => '汇',
+'彞' => '彝',
+'彠' => '彟',
+'彥' => '彦',
+'彫' => '雕',
+'彲' => '彨',
+'徃' => '往',
+'後' => '后',
+'徑' => '径',
+'從' => '从',
+'徠' => '徕',
+'徧' => '遍',
+'復' => '复',
+'徵' => '征',
+'徹' => '彻',
+'怱' => '匆',
+'怳' => '恍',
+'恆' => '恒',
+'恠' => '怪',
+'恡' => '吝',
+'恥' => '耻',
+'悅' => '悦',
+'悞' => '悮',
+'悤' => '匆',
+'悵' => '怅',
+'悶' => '闷',
+'悽' => '凄',
+'惏' => '婪',
+'惡' => '恶',
+'惥' => '恿',
+'惱' => '恼',
+'惲' => '恽',
+'惷' => '蠢',
+'惻' => '恻',
+'愛' => '爱',
+'愜' => '惬',
+'愨' => '悫',
+'愴' => '怆',
+'愷' => '恺',
+'愽' => '博',
+'愾' => '忾',
+'慄' => '栗',
+'態' => '态',
+'慍' => '愠',
+'慘' => '惨',
+'慙' => '惭',
+'慚' => '惭',
+'慟' => '恸',
+'慣' => '惯',
+'慤' => '悫',
+'慪' => '怄',
+'慫' => '怂',
+'慮' => '虑',
+'慳' => '悭',
+'慴' => '慑',
+'慶' => '庆',
+'慼' => '戚',
+'慽' => '戚',
+'慾' => '欲',
+'憂' => '忧',
+'憇' => '憩',
+'憊' => '惫',
+'憐' => '怜',
+'憑' => '凭',
+'憒' => '愦',
+'憚' => '惮',
+'憤' => '愤',
+'憫' => '悯',
+'憮' => '怃',
+'憲' => '宪',
+'憶' => '忆',
+'懀' => '𢙓',
+'懇' => '恳',
+'應' => '应',
+'懌' => '怿',
+'懍' => '懔',
+'懟' => '怼',
+'懣' => '懑',
+'懨' => '恹',
+'懲' => '惩',
+'懶' => '懒',
+'懷' => '怀',
+'懸' => '悬',
+'懺' => '忏',
+'懼' => '惧',
+'懾' => '慑',
+'戀' => '恋',
+'戇' => '戆',
+'戔' => '戋',
+'戞' => '戛',
+'戧' => '戗',
+'戩' => '戬',
+'戯' => '戏',
+'戰' => '战',
+'戱' => '戯',
+'戲' => '戏',
+'戶' => '户',
+'戹' => '厄',
+'扞' => '捍',
+'抝' => '拗',
+'拋' => '抛',
+'拚' => '拼',
+'挩' => '捝',
+'挱' => '挲',
+'挵' => '弄',
+'挾' => '挟',
+'捄' => '救',
+'捨' => '舍',
+'捫' => '扪',
+'捲' => '卷',
+'掃' => '扫',
+'掄' => '抡',
+'掆' => '㧏',
+'掗' => '挜',
+'掙' => '挣',
+'掛' => '挂',
+'採' => '采',
+'掽' => '碰',
+'揀' => '拣',
+'揑' => '捏',
+'揚' => '扬',
+'換' => '换',
+'揫' => '揪',
+'揮' => '挥',
+'揷' => '插',
+'揹' => '背',
+'搆' => '构',
+'搇' => '揿',
+'搉' => '榷',
+'損' => '损',
+'搖' => '摇',
+'搗' => '捣',
+'搤' => '扼',
+'搥' => '捶',
+'搨' => '拓',
+'搯' => '掏',
+'搵' => '揾',
+'搶' => '抢',
+'搾' => '榨',
+'摃' => '扛',
+'摋' => '𢫬',
+'摑' => '掴',
+'摜' => '掼',
+'摟' => '搂',
+'摯' => '挚',
+'摳' => '抠',
+'摶' => '抟',
+'摺' => '折',
+'摻' => '掺',
+'撈' => '捞',
+'撏' => '挦',
+'撐' => '撑',
+'撓' => '挠',
+'撝' => '㧑',
+'撟' => '挢',
+'撡' => '操',
+'撣' => '掸',
+'撥' => '拨',
+'撦' => '扯',
+'撫' => '抚',
+'撲' => '扑',
+'撳' => '揿',
+'撻' => '挞',
+'撾' => '挝',
+'撿' => '捡',
+'擁' => '拥',
+'擄' => '掳',
+'擇' => '择',
+'擊' => '击',
+'擋' => '挡',
+'擓' => '㧟',
+'擔' => '担',
+'擕' => '携',
+'據' => '据',
+'擠' => '挤',
+'擣' => '𢭏',
+'擧' => '举',
+'擬' => '拟',
+'擯' => '摈',
+'擰' => '拧',
+'擱' => '搁',
+'擲' => '掷',
+'擴' => '扩',
+'擷' => '撷',
+'擺' => '摆',
+'擻' => '擞',
+'擼' => '撸',
+'擽' => '㧰',
+'擾' => '扰',
+'攄' => '摅',
+'攆' => '撵',
+'攏' => '拢',
+'攔' => '拦',
+'攖' => '撄',
+'攙' => '搀',
+'攛' => '撺',
+'攜' => '携',
+'攝' => '摄',
+'攢' => '攒',
+'攣' => '挛',
+'攤' => '摊',
+'攩' => '挡',
+'攪' => '搅',
+'攬' => '揽',
+'攷' => '考',
+'敂' => '叩',
+'敍' => '叙',
+'敗' => '败',
+'敘' => '叙',
+'敵' => '敌',
+'數' => '数',
+'敺' => '驱',
+'斂' => '敛',
+'斃' => '毙',
+'斅' => '𢽾',
+'斆' => '敩',
+'斕' => '斓',
+'斬' => '斩',
+'斷' => '断',
+'於' => '于',
+'旂' => '旗',
+'旣' => '既',
+'旤' => '祸',
+'旹' => '时',
+'旾' => '春',
+'昬' => '昏',
+'時' => '时',
+'晉' => '晋',
+'晝' => '昼',
+'暈' => '晕',
+'暉' => '晖',
+'暘' => '旸',
+'暢' => '畅',
+'暫' => '暂',
+'暱' => '昵',
+'曄' => '晔',
+'曆' => '历',
+'曇' => '昙',
+'曉' => '晓',
+'曖' => '暧',
+'曠' => '旷',
+'曡' => '叠',
+'曥' => '𣆐',
+'曨' => '昽',
+'曬' => '晒',
+'書' => '书',
+'會' => '会',
+'朞' => '期',
+'朢' => '望',
+'朥' => '𦛨',
+'朧' => '胧',
+'朮' => '术',
+'朶' => '朵',
+'東' => '东',
+'杴' => '锨',
+'枱' => '台',
+'柵' => '栅',
+'柺' => '拐',
+'査' => '查',
+'栁' => '柳',
+'栞' => '刊',
+'栢' => '柏',
+'栰' => '筏',
+'桒' => '桑',
+'桮' => '杯',
+'桺' => '柳',
+'桿' => '杆',
+'梔' => '栀',
+'梘' => '枧',
+'條' => '条',
+'梟' => '枭',
+'梲' => '棁',
+'棄' => '弃',
+'棊' => '棋',
+'棖' => '枨',
+'棗' => '枣',
+'棟' => '栋',
+'棡' => '㭎',
+'棧' => '栈',
+'棲' => '栖',
+'棶' => '梾',
+'椏' => '桠',
+'椗' => '碇',
+'椲' => '㭏',
+'椶' => '棕',
+'椷' => '缄',
+'椾' => '笺',
+'楊' => '杨',
+'楓' => '枫',
+'楥' => '楦',
+'楨' => '桢',
+'業' => '业',
+'極' => '极',
+'榦' => '干',
+'榪' => '杩',
+'榮' => '荣',
+'榲' => '榅',
+'榿' => '桤',
+'構' => '构',
+'槍' => '枪',
+'槓' => '杠',
+'槕' => '桌',
+'槤' => '梿',
+'槧' => '椠',
+'槨' => '椁',
+'槮' => '椮',
+'槳' => '桨',
+'槶' => '椢',
+'槼' => '椝',
+'樁' => '桩',
+'樂' => '乐',
+'樅' => '枞',
+'樑' => '梁',
+'樓' => '楼',
+'標' => '标',
+'樞' => '枢',
+'樢' => '㭤',
+'樣' => '样',
+'樫' => '㭴',
+'樳' => '桪',
+'樸' => '朴',
+'樹' => '树',
+'樺' => '桦',
+'樿' => '椫',
+'橈' => '桡',
+'橋' => '桥',
+'橜' => '橛',
+'機' => '机',
+'橢' => '椭',
+'橫' => '横',
+'檁' => '檩',
+'檉' => '柽',
+'檔' => '档',
+'檜' => '桧',
+'檟' => '槚',
+'檢' => '检',
+'檣' => '樯',
+'檭' => '𣘴',
+'檮' => '梼',
+'檯' => '台',
+'檳' => '槟',
+'檸' => '柠',
+'檻' => '槛',
+'櫃' => '柜',
+'櫈' => '凳',
+'櫓' => '橹',
+'櫚' => '榈',
+'櫛' => '栉',
+'櫝' => '椟',
+'櫞' => '橼',
+'櫟' => '栎',
+'櫥' => '橱',
+'櫧' => '槠',
+'櫨' => '栌',
+'櫪' => '枥',
+'櫫' => '橥',
+'櫬' => '榇',
+'櫱' => '蘖',
+'櫳' => '栊',
+'櫸' => '榉',
+'櫻' => '樱',
+'欄' => '栏',
+'欅' => '榉',
+'權' => '权',
+'欍' => '𣐤',
+'欏' => '椤',
+'欒' => '栾',
+'欓' => '𣗋',
+'欖' => '榄',
+'欝' => '郁',
+'欞' => '棂',
+'欵' => '款',
+'欽' => '钦',
+'歎' => '叹',
+'歐' => '欧',
+'歛' => '敛',
+'歟' => '欤',
+'歡' => '欢',
+'歲' => '岁',
+'歴' => '历',
+'歷' => '历',
+'歸' => '归',
+'歿' => '殁',
+'殀' => '夭',
+'殘' => '残',
+'殞' => '殒',
+'殤' => '殇',
+'殨' => '㱮',
+'殫' => '殚',
+'殭' => '僵',
+'殮' => '殓',
+'殯' => '殡',
+'殰' => '㱩',
+'殲' => '歼',
+'殺' => '杀',
+'殻' => '壳',
+'殼' => '壳',
+'毀' => '毁',
+'毆' => '殴',
+'毧' => '绒',
+'毬' => '球',
+'毿' => '毵',
+'氂' => '牦',
+'氈' => '毡',
+'氊' => '毡',
+'氌' => '氇',
+'氣' => '气',
+'氫' => '氢',
+'氬' => '氩',
+'氳' => '氲',
+'氷' => '冰',
+'汙' => '污',
+'汚' => '污',
+'決' => '决',
+'沒' => '没',
+'沖' => '冲',
+'況' => '况',
+'泝' => '溯',
+'洩' => '泄',
+'洶' => '汹',
+'浹' => '浃',
+'涇' => '泾',
+'涖' => '莅',
+'涼' => '凉',
+'淒' => '凄',
+'淚' => '泪',
+'淛' => '浙',
+'淥' => '渌',
+'淨' => '净',
+'淩' => '凌',
+'淪' => '沦',
+'淵' => '渊',
+'淶' => '涞',
+'淺' => '浅',
+'渙' => '涣',
+'減' => '减',
+'渢' => '沨',
+'渦' => '涡',
+'測' => '测',
+'渾' => '浑',
+'湊' => '凑',
+'湞' => '浈',
+'湧' => '涌',
+'湯' => '汤',
+'湼' => '涅',
+'溈' => '沩',
+'準' => '准',
+'溝' => '沟',
+'溫' => '温',
+'溮' => '浉',
+'溳' => '涢',
+'溼' => '湿',
+'滄' => '沧',
+'滅' => '灭',
+'滌' => '涤',
+'滎' => '荥',
+'滙' => '汇',
+'滛' => '淫',
+'滬' => '沪',
+'滯' => '滞',
+'滲' => '渗',
+'滷' => '卤',
+'滸' => '浒',
+'滻' => '浐',
+'滾' => '滚',
+'滿' => '满',
+'漁' => '渔',
+'漊' => '溇',
+'漚' => '沤',
+'漢' => '汉',
+'漣' => '涟',
+'漬' => '渍',
+'漲' => '涨',
+'漵' => '溆',
+'漸' => '渐',
+'漿' => '浆',
+'潁' => '颍',
+'潄' => '漱',
+'潑' => '泼',
+'潔' => '洁',
+'潙' => '沩',
+'潛' => '潜',
+'潤' => '润',
+'潯' => '浔',
+'潰' => '溃',
+'潷' => '滗',
+'潿' => '涠',
+'澀' => '涩',
+'澁' => '涩',
+'澅' => '𣶩',
+'澆' => '浇',
+'澇' => '涝',
+'澐' => '沄',
+'澗' => '涧',
+'澠' => '渑',
+'澤' => '泽',
+'澦' => '滪',
+'澩' => '泶',
+'澮' => '浍',
+'澱' => '淀',
+'澾' => '㳠',
+'濁' => '浊',
+'濃' => '浓',
+'濄' => '㳡',
+'濆' => '𣸣',
+'濇' => '涩',
+'濕' => '湿',
+'濘' => '泞',
+'濜' => '浕',
+'濟' => '济',
+'濤' => '涛',
+'濧' => '㳔',
+'濫' => '滥',
+'濰' => '潍',
+'濱' => '滨',
+'濶' => '阔',
+'濺' => '溅',
+'濼' => '泺',
+'濾' => '滤',
+'瀂' => '澛',
+'瀃' => '𣽷',
+'瀅' => '滢',
+'瀆' => '渎',
+'瀇' => '㲿',
+'瀉' => '泻',
+'瀋' => '沈',
+'瀏' => '浏',
+'瀕' => '濒',
+'瀘' => '泸',
+'瀝' => '沥',
+'瀟' => '潇',
+'瀠' => '潆',
+'瀦' => '潴',
+'瀧' => '泷',
+'瀨' => '濑',
+'瀰' => '弥',
+'瀲' => '潋',
+'瀾' => '澜',
+'灃' => '沣',
+'灄' => '滠',
+'灋' => '法',
+'灑' => '洒',
+'灕' => '漓',
+'灘' => '滩',
+'灙' => '𣺼',
+'灝' => '灏',
+'灠' => '漤',
+'灣' => '湾',
+'灤' => '滦',
+'灧' => '滟',
+'灩' => '滟',
+'災' => '灾',
+'為' => '为',
+'烏' => '乌',
+'烖' => '灾',
+'烴' => '烃',
+'無' => '无',
+'煉' => '炼',
+'煑' => '煮',
+'煒' => '炜',
+'煗' => '暖',
+'煙' => '烟',
+'煢' => '茕',
+'煥' => '焕',
+'煩' => '烦',
+'煬' => '炀',
+'煱' => '㶽',
+'熅' => '煴',
+'熈' => '熙',
+'熉' => '𤈶',
+'熌' => '𤇄',
+'熒' => '荧',
+'熓' => '𤆡',
+'熗' => '炝',
+'熡' => '𤋏',
+'熱' => '热',
+'熲' => '颎',
+'熾' => '炽',
+'燁' => '烨',
+'燄' => '焰',
+'燈' => '灯',
+'燉' => '炖',
+'燒' => '烧',
+'燙' => '烫',
+'燜' => '焖',
+'營' => '营',
+'燦' => '灿',
+'燬' => '毁',
+'燭' => '烛',
+'燴' => '烩',
+'燶' => '㶶',
+'燻' => '熏',
+'燼' => '烬',
+'燾' => '焘',
+'爄' => '𤇃',
+'爍' => '烁',
+'爐' => '炉',
+'爗' => '烨',
+'爛' => '烂',
+'爭' => '争',
+'爲' => '为',
+'爺' => '爷',
+'爾' => '尔',
+'牀' => '床',
+'牆' => '墙',
+'牋' => '笺',
+'牎' => '窗',
+'牐' => '闸',
+'牓' => '榜',
+'牕' => '窗',
+'牘' => '牍',
+'牠' => '它',
+'牴' => '抵',
+'牽' => '牵',
+'犖' => '荦',
+'犢' => '犊',
+'犧' => '牺',
+'狀' => '状',
+'狥' => '徇',
+'狹' => '狭',
+'狽' => '狈',
+'猂' => '悍',
+'猙' => '狰',
+'猨' => '猿',
+'猶' => '犹',
+'猻' => '狲',
+'獁' => '犸',
+'獃' => '呆',
+'獄' => '狱',
+'獅' => '狮',
+'獎' => '奖',
+'獘' => '毙',
+'獧' => '狷',
+'獨' => '独',
+'獪' => '狯',
+'獫' => '猃',
+'獮' => '狝',
+'獰' => '狞',
+'獱' => '㺍',
+'獲' => '获',
+'獵' => '猎',
+'獷' => '犷',
+'獸' => '兽',
+'獺' => '獭',
+'獻' => '献',
+'獼' => '猕',
+'玀' => '猡',
+'玁' => '𤞤',
+'玅' => '妙',
+'現' => '现',
+'琖' => '盏',
+'琱' => '雕',
+'琺' => '珐',
+'琿' => '珲',
+'瑇' => '玳',
+'瑋' => '玮',
+'瑒' => '玚',
+'瑣' => '琐',
+'瑤' => '瑶',
+'瑩' => '莹',
+'瑪' => '玛',
+'瑯' => '琅',
+'瑲' => '玱',
+'瑽' => '𪻐',
+'璉' => '琏',
+'璡' => '琎',
+'璢' => '瑠',
+'璣' => '玑',
+'璦' => '瑷',
+'璫' => '珰',
+'璯' => '㻅',
+'環' => '环',
+'璵' => '玙',
+'璸' => '瑸',
+'璽' => '玺',
+'瓊' => '琼',
+'瓏' => '珑',
+'瓔' => '璎',
+'瓕' => '𤦀',
+'瓚' => '瓒',
+'甌' => '瓯',
+'甎' => '砖',
+'甕' => '瓮',
+'甖' => '罂',
+'甞' => '尝',
+'產' => '产',
+'産' => '产',
+'畂' => '亩',
+'畆' => '亩',
+'畝' => '亩',
+'畢' => '毕',
+'畧' => '略',
+'畫' => '画',
+'畮' => '亩',
+'異' => '异',
+'畱' => '留',
+'畵' => '画',
+'當' => '当',
+'疇' => '畴',
+'疊' => '叠',
+'疎' => '疏',
+'疘' => '肛',
+'疿' => '痱',
+'痐' => '蛔',
+'痙' => '痉',
+'痠' => '酸',
+'痲' => '痳',
+'痺' => '痹',
+'瘂' => '痖',
+'瘉' => '愈',
+'瘋' => '疯',
+'瘍' => '疡',
+'瘓' => '痪',
+'瘖' => '喑',
+'瘞' => '瘗',
+'瘡' => '疮',
+'瘧' => '疟',
+'瘮' => '瘆',
+'瘲' => '疭',
+'瘺' => '瘘',
+'瘻' => '瘘',
+'療' => '疗',
+'癄' => '憔',
+'癅' => '瘤',
+'癆' => '痨',
+'癇' => '痫',
+'癈' => '废',
+'癉' => '瘅',
+'癒' => '愈',
+'癘' => '疠',
+'癟' => '瘪',
+'癡' => '痴',
+'癢' => '痒',
+'癤' => '疖',
+'癥' => '症',
+'癧' => '疬',
+'癩' => '癞',
+'癬' => '癣',
+'癭' => '瘿',
+'癮' => '瘾',
+'癰' => '痈',
+'癱' => '瘫',
+'癲' => '癫',
+'發' => '发',
+'皁' => '皂',
+'皐' => '皋',
+'皚' => '皑',
+'皜' => '皓',
+'皟' => '𤾀',
+'皰' => '疱',
+'皷' => '鼓',
+'皸' => '皲',
+'皺' => '皱',
+'盃' => '杯',
+'盇' => '盍',
+'盌' => '碗',
+'盜' => '盗',
+'盞' => '盏',
+'盡' => '尽',
+'監' => '监',
+'盤' => '盘',
+'盧' => '卢',
+'盪' => '荡',
+'眎' => '视',
+'眞' => '真',
+'眡' => '视',
+'眥' => '眦',
+'眾' => '众',
+'睍' => '𪾢',
+'睏' => '困',
+'睜' => '睁',
+'睞' => '睐',
+'睠' => '眷',
+'睪' => '睾',
+'瞇' => '眯',
+'瞖' => '翳',
+'瞘' => '眍',
+'瞜' => '䁖',
+'瞞' => '瞒',
+'瞤' => '𥆧',
+'瞭' => '了',
+'瞶' => '瞆',
+'瞼' => '睑',
+'矁' => '瞅',
+'矇' => '蒙',
+'矓' => '眬',
+'矙' => '瞰',
+'矚' => '瞩',
+'矯' => '矫',
+'砲' => '炮',
+'硜' => '硁',
+'硤' => '硖',
+'硨' => '砗',
+'硯' => '砚',
+'碙' => '𥐻',
+'碩' => '硕',
+'碪' => '砧',
+'碭' => '砀',
+'碸' => '砜',
+'確' => '确',
+'碼' => '码',
+'碽' => '䂵',
+'磑' => '硙',
+'磚' => '砖',
+'磟' => '碌',
+'磠' => '硵',
+'磣' => '碜',
+'磧' => '碛',
+'磯' => '矶',
+'磽' => '硗',
+'礄' => '硚',
+'礆' => '碱',
+'礎' => '础',
+'礒' => '𥐟',
+'礙' => '碍',
+'礦' => '矿',
+'礪' => '砺',
+'礫' => '砾',
+'礬' => '矾',
+'礮' => '炮',
+'礱' => '砻',
+'祕' => '秘',
+'祘' => '算',
+'祿' => '禄',
+'禍' => '祸',
+'禎' => '祯',
+'禕' => '祎',
+'禡' => '祃',
+'禦' => '御',
+'禪' => '禅',
+'禮' => '礼',
+'禰' => '祢',
+'禱' => '祷',
+'禿' => '秃',
+'秈' => '籼',
+'秊' => '年',
+'秌' => '秋',
+'秖' => '只',
+'稅' => '税',
+'稈' => '秆',
+'稉' => '粳',
+'稏' => '䅉',
+'稜' => '棱',
+'稟' => '禀',
+'稬' => '糯',
+'稭' => '秸',
+'種' => '种',
+'稱' => '称',
+'稾' => '稿',
+'穀' => '谷',
+'穌' => '稣',
+'積' => '积',
+'穎' => '颖',
+'穠' => '秾',
+'穡' => '穑',
+'穢' => '秽',
+'穤' => '糯',
+'穨' => '颓',
+'穩' => '稳',
+'穫' => '获',
+'穭' => '稆',
+'穽' => '阱',
+'窓' => '窗',
+'窩' => '窝',
+'窪' => '洼',
+'窮' => '穷',
+'窯' => '窑',
+'窰' => '窑',
+'窵' => '窎',
+'窶' => '窭',
+'窺' => '窥',
+'窻' => '窗',
+'竄' => '窜',
+'竅' => '窍',
+'竇' => '窦',
+'竈' => '灶',
+'竊' => '窃',
+'竚' => '伫',
+'竝' => '并',
+'竢' => '俟',
+'竪' => '竖',
+'競' => '竞',
+'筆' => '笔',
+'筍' => '笋',
+'筞' => '策',
+'筧' => '笕',
+'筩' => '筒',
+'筯' => '箸',
+'筴' => '䇲',
+'箇' => '个',
+'箋' => '笺',
+'箏' => '筝',
+'箒' => '帚',
+'箠' => '棰',
+'節' => '节',
+'範' => '范',
+'築' => '筑',
+'篋' => '箧',
+'篔' => '筼',
+'篘' => '𥬠',
+'篛' => '箬',
+'篤' => '笃',
+'篩' => '筛',
+'篳' => '筚',
+'簀' => '箦',
+'簍' => '篓',
+'簑' => '蓑',
+'簒' => '篡',
+'簞' => '箪',
+'簡' => '简',
+'簣' => '篑',
+'簫' => '箫',
+'簮' => '簪',
+'簷' => '檐',
+'簹' => '筜',
+'簽' => '签',
+'簾' => '帘',
+'籃' => '篮',
+'籋' => '𥬞',
+'籌' => '筹',
+'籐' => '藤',
+'籔' => '䉤',
+'籙' => '箓',
+'籛' => '篯',
+'籜' => '箨',
+'籟' => '籁',
+'籠' => '笼',
+'籤' => '签',
+'籩' => '笾',
+'籪' => '簖',
+'籬' => '篱',
+'籮' => '箩',
+'籲' => '吁',
+'粃' => '秕',
+'粧' => '妆',
+'粵' => '粤',
+'糉' => '粽',
+'糝' => '糁',
+'糞' => '粪',
+'糧' => '粮',
+'糰' => '团',
+'糲' => '粝',
+'糴' => '籴',
+'糶' => '粜',
+'糹' => '纟',
+'糾' => '纠',
+'紀' => '纪',
+'紂' => '纣',
+'約' => '约',
+'紅' => '红',
+'紆' => '纡',
+'紇' => '纥',
+'紈' => '纨',
+'紉' => '纫',
+'紋' => '纹',
+'納' => '纳',
+'紐' => '纽',
+'紓' => '纾',
+'純' => '纯',
+'紕' => '纰',
+'紖' => '纼',
+'紗' => '纱',
+'紘' => '纮',
+'紙' => '纸',
+'級' => '级',
+'紛' => '纷',
+'紜' => '纭',
+'紝' => '纴',
+'紡' => '纺',
+'紥' => '扎',
+'紬' => '䌷',
+'紮' => '扎',
+'細' => '细',
+'紱' => '绂',
+'紲' => '绁',
+'紳' => '绅',
+'紵' => '纻',
+'紹' => '绍',
+'紺' => '绀',
+'紼' => '绋',
+'紿' => '绐',
+'絀' => '绌',
+'終' => '终',
+'絃' => '弦',
+'組' => '组',
+'絅' => '䌹',
+'絆' => '绊',
+'絎' => '绗',
+'絏' => '绁',
+'結' => '结',
+'絕' => '绝',
+'絛' => '绦',
+'絝' => '绔',
+'絞' => '绞',
+'絡' => '络',
+'絢' => '绚',
+'給' => '给',
+'絨' => '绒',
+'絰' => '绖',
+'統' => '统',
+'絲' => '丝',
+'絳' => '绛',
+'絶' => '绝',
+'絹' => '绢',
+'絺' => '𫄨',
+'綀' => '𦈌',
+'綁' => '绑',
+'綃' => '绡',
+'綆' => '绠',
+'綇' => '𦈋',
+'綈' => '绨',
+'綉' => '绣',
+'綌' => '绤',
+'綏' => '绥',
+'綐' => '䌼',
+'綑' => '捆',
+'經' => '经',
+'綜' => '综',
+'綞' => '缍',
+'綠' => '绿',
+'綢' => '绸',
+'綣' => '绻',
+'綫' => '线',
+'綬' => '绶',
+'維' => '维',
+'綯' => '绹',
+'綰' => '绾',
+'綱' => '纲',
+'網' => '网',
+'綴' => '缀',
+'綵' => '彩',
+'綸' => '纶',
+'綹' => '绺',
+'綺' => '绮',
+'綻' => '绽',
+'綽' => '绰',
+'綾' => '绫',
+'綿' => '绵',
+'緄' => '绲',
+'緇' => '缁',
+'緊' => '紧',
+'緋' => '绯',
+'緍' => '𦈏',
+'緐' => '繁',
+'緑' => '绿',
+'緒' => '绪',
+'緓' => '绬',
+'緔' => '绱',
+'緗' => '缃',
+'緘' => '缄',
+'緙' => '缂',
+'線' => '线',
+'緜' => '绵',
+'緝' => '缉',
+'緞' => '缎',
+'締' => '缔',
+'緡' => '缗',
+'緣' => '缘',
+'緥' => '褓',
+'緦' => '缌',
+'編' => '编',
+'緩' => '缓',
+'緬' => '缅',
+'緯' => '纬',
+'緰' => '𦈕',
+'緱' => '缑',
+'緲' => '缈',
+'練' => '练',
+'緶' => '缏',
+'緷' => '𦈉',
+'緸' => '𦈑',
+'緹' => '缇',
+'緻' => '致',
+'緼' => '缊',
+'縈' => '萦',
+'縉' => '缙',
+'縊' => '缢',
+'縋' => '缒',
+'縎' => '𦈔',
+'縐' => '绉',
+'縑' => '缣',
+'縕' => '缊',
+'縗' => '缞',
+'縛' => '缚',
+'縝' => '缜',
+'縞' => '缟',
+'縟' => '缛',
+'縣' => '县',
+'縧' => '绦',
+'縫' => '缝',
+'縬' => '𦈚',
+'縭' => '缡',
+'縮' => '缩',
+'縱' => '纵',
+'縲' => '缧',
+'縳' => '䌸',
+'縴' => '纤',
+'縵' => '缦',
+'縶' => '絷',
+'縷' => '缕',
+'縹' => '缥',
+'縺' => '𦈐',
+'總' => '总',
+'績' => '绩',
+'繃' => '绷',
+'繅' => '缫',
+'繆' => '缪',
+'繏' => '𦈝',
+'繐' => '穗',
+'繒' => '缯',
+'繓' => '𦈛',
+'織' => '织',
+'繕' => '缮',
+'繖' => '伞',
+'繙' => '翻',
+'繚' => '缭',
+'繞' => '绕',
+'繟' => '𦈎',
+'繡' => '绣',
+'繢' => '缋',
+'繦' => '襁',
+'繩' => '绳',
+'繪' => '绘',
+'繫' => '系',
+'繭' => '茧',
+'繮' => '缰',
+'繯' => '缳',
+'繰' => '缲',
+'繳' => '缴',
+'繸' => '䍁',
+'繹' => '绎',
+'繻' => '𦈡',
+'繼' => '继',
+'繽' => '缤',
+'繾' => '缱',
+'繿' => '䍀',
+'纁' => '𫄸',
+'纇' => '颣',
+'纈' => '缬',
+'纊' => '纩',
+'續' => '续',
+'纍' => '累',
+'纏' => '缠',
+'纓' => '缨',
+'纔' => '才',
+'纖' => '纤',
+'纘' => '缵',
+'纜' => '缆',
+'缽' => '钵',
+'罇' => '樽',
+'罈' => '坛',
+'罋' => '瓮',
+'罌' => '罂',
+'罎' => '坛',
+'罰' => '罚',
+'罵' => '骂',
+'罷' => '罢',
+'罸' => '罚',
+'羅' => '罗',
+'羆' => '罴',
+'羈' => '羁',
+'羋' => '芈',
+'羗' => '羌',
+'羢' => '绒',
+'羣' => '群',
+'羥' => '羟',
+'羨' => '羡',
+'義' => '义',
+'羶' => '膻',
+'翄' => '翅',
+'習' => '习',
+'翫' => '玩',
+'翬' => '翚',
+'翶' => '翱',
+'翹' => '翘',
+'翽' => '翙',
+'耡' => '锄',
+'耬' => '耧',
+'耮' => '耢',
+'聖' => '圣',
+'聞' => '闻',
+'聯' => '联',
+'聰' => '聪',
+'聲' => '声',
+'聳' => '耸',
+'聵' => '聩',
+'聶' => '聂',
+'職' => '职',
+'聹' => '聍',
+'聽' => '听',
+'聾' => '聋',
+'肅' => '肃',
+'肎' => '肯',
+'肐' => '胳',
+'肧' => '胚',
+'胷' => '胸',
+'脃' => '脆',
+'脅' => '胁',
+'脇' => '胁',
+'脈' => '脉',
+'脗' => '吻',
+'脛' => '胫',
+'脣' => '唇',
+'脥' => '𣍰',
+'脫' => '脱',
+'脹' => '胀',
+'腁' => '胼',
+'腎' => '肾',
+'腖' => '胨',
+'腡' => '脶',
+'腦' => '脑',
+'腪' => '𣍯',
+'腫' => '肿',
+'腳' => '脚',
+'腸' => '肠',
+'膃' => '腽',
+'膓' => '肠',
+'膕' => '腘',
+'膚' => '肤',
+'膞' => '䏝',
+'膠' => '胶',
+'膢' => '𦝼',
+'膩' => '腻',
+'膽' => '胆',
+'膾' => '脍',
+'膿' => '脓',
+'臈' => '腊',
+'臉' => '脸',
+'臋' => '臀',
+'臍' => '脐',
+'臏' => '膑',
+'臕' => '膘',
+'臗' => '𣎑',
+'臘' => '腊',
+'臙' => '胭',
+'臚' => '胪',
+'臝' => '裸',
+'臟' => '脏',
+'臠' => '脔',
+'臢' => '臜',
+'臥' => '卧',
+'臨' => '临',
+'臯' => '皋',
+'臺' => '台',
+'與' => '与',
+'興' => '兴',
+'舉' => '举',
+'舊' => '旧',
+'舖' => '铺',
+'舘' => '馆',
+'舩' => '船',
+'艙' => '舱',
+'艢' => '樯',
+'艣' => '橹',
+'艤' => '舣',
+'艦' => '舰',
+'艪' => '橹',
+'艫' => '舻',
+'艱' => '艰',
+'艷' => '艳',
+'芲' => '花',
+'芻' => '刍',
+'苧' => '苎',
+'茘' => '荔',
+'茲' => '兹',
+'荊' => '荆',
+'荳' => '豆',
+'莊' => '庄',
+'莖' => '茎',
+'莢' => '荚',
+'莧' => '苋',
+'華' => '华',
+'菸' => '烟',
+'萇' => '苌',
+'萊' => '莱',
+'萬' => '万',
+'萲' => '萱',
+'萴' => '荝',
+'萵' => '莴',
+'葉' => '叶',
+'葒' => '荭',
+'葠' => '参',
+'葤' => '荮',
+'葦' => '苇',
+'葯' => '药',
+'葷' => '荤',
+'蒓' => '莼',
+'蒔' => '莳',
+'蒞' => '莅',
+'蒼' => '苍',
+'蓀' => '荪',
+'蓆' => '席',
+'蓋' => '盖',
+'蓡' => '参',
+'蓮' => '莲',
+'蓯' => '苁',
+'蓴' => '莼',
+'蓽' => '荜',
+'蔔' => '卜',
+'蔕' => '蒂',
+'蔘' => '参',
+'蔞' => '蒌',
+'蔣' => '蒋',
+'蔥' => '葱',
+'蔦' => '茑',
+'蔭' => '荫',
+'蕁' => '荨',
+'蕆' => '蒇',
+'蕎' => '荞',
+'蕒' => '荬',
+'蕓' => '芸',
+'蕕' => '莸',
+'蕘' => '荛',
+'蕚' => '萼',
+'蕢' => '蒉',
+'蕩' => '荡',
+'蕪' => '芜',
+'蕭' => '萧',
+'蕷' => '蓣',
+'蕿' => '萱',
+'薀' => '蕰',
+'薈' => '荟',
+'薊' => '蓟',
+'薌' => '芗',
+'薑' => '姜',
+'薔' => '蔷',
+'薘' => '荙',
+'薟' => '莶',
+'薦' => '荐',
+'薩' => '萨',
+'薴' => '苧',
+'薺' => '荠',
+'藍' => '蓝',
+'藎' => '荩',
+'藝' => '艺',
+'藥' => '药',
+'藪' => '薮',
+'藭' => '䓖',
+'藴' => '蕴',
+'藶' => '苈',
+'藷' => '薯',
+'藹' => '蔼',
+'藺' => '蔺',
+'藼' => '萱',
+'蘀' => '萚',
+'蘄' => '蕲',
+'蘆' => '芦',
+'蘇' => '苏',
+'蘊' => '蕴',
+'蘐' => '萱',
+'蘓' => '苏',
+'蘚' => '藓',
+'蘞' => '蔹',
+'蘢' => '茏',
+'蘤' => '花',
+'蘭' => '兰',
+'蘺' => '蓠',
+'蘿' => '萝',
+'虆' => '蔂',
+'處' => '处',
+'虛' => '虚',
+'虜' => '虏',
+'號' => '号',
+'虧' => '亏',
+'虯' => '虬',
+'蚘' => '蛔',
+'蛕' => '蛔',
+'蛺' => '蛱',
+'蛻' => '蜕',
+'蜆' => '蚬',
+'蜋' => '螂',
+'蜖' => '蛔',
+'蜨' => '蝶',
+'蝕' => '蚀',
+'蝟' => '猬',
+'蝦' => '虾',
+'蝨' => '虱',
+'蝯' => '猿',
+'蝱' => '虻',
+'蝸' => '蜗',
+'螄' => '蛳',
+'螎' => '融',
+'螞' => '蚂',
+'螡' => '蚊',
+'螢' => '萤',
+'螮' => '䗖',
+'螻' => '蝼',
+'螿' => '螀',
+'蟁' => '蚊',
+'蟄' => '蛰',
+'蟇' => '蟆',
+'蟈' => '蝈',
+'蟎' => '螨',
+'蟣' => '虮',
+'蟬' => '蝉',
+'蟯' => '蛲',
+'蟲' => '虫',
+'蟶' => '蛏',
+'蟻' => '蚁',
+'蠁' => '蚃',
+'蠅' => '蝇',
+'蠆' => '虿',
+'蠍' => '蝎',
+'蠏' => '蟹',
+'蠐' => '蛴',
+'蠑' => '蝾',
+'蠒' => '茧',
+'蠔' => '蚝',
+'蠟' => '蜡',
+'蠣' => '蛎',
+'蠨' => '蟏',
+'蠭' => '蜂',
+'蠱' => '蛊',
+'蠶' => '蚕',
+'蠻' => '蛮',
+'衂' => '衄',
+'衆' => '众',
+'衇' => '脉',
+'衊' => '蔑',
+'術' => '术',
+'衕' => '同',
+'衚' => '胡',
+'衛' => '卫',
+'衝' => '冲',
+'衞' => '卫',
+'衺' => '邪',
+'袞' => '衮',
+'袟' => '帙',
+'袵' => '衽',
+'裊' => '袅',
+'裌' => '袷',
+'裏' => '里',
+'補' => '补',
+'裝' => '装',
+'裠' => '裙',
+'裡' => '里',
+'製' => '制',
+'複' => '复',
+'褌' => '裈',
+'褘' => '袆',
+'褭' => '袅',
+'褲' => '裤',
+'褳' => '裢',
+'褸' => '褛',
+'褻' => '亵',
+'襀' => '𫌀',
+'襃' => '褒',
+'襉' => '裥',
+'襍' => '杂',
+'襏' => '袯',
+'襖' => '袄',
+'襝' => '裣',
+'襠' => '裆',
+'襤' => '褴',
+'襪' => '袜',
+'襬' => '䙓',
+'襯' => '衬',
+'襲' => '袭',
+'襴' => '襕',
+'覇' => '霸',
+'覈' => '核',
+'覊' => '羁',
+'見' => '见',
+'覎' => '觃',
+'規' => '规',
+'覓' => '觅',
+'覔' => '觅',
+'視' => '视',
+'覘' => '觇',
+'覡' => '觋',
+'覥' => '觍',
+'覦' => '觎',
+'覩' => '睹',
+'親' => '亲',
+'覬' => '觊',
+'覯' => '觏',
+'覲' => '觐',
+'覷' => '觑',
+'覺' => '觉',
+'覼' => '𫌨',
+'覽' => '览',
+'覿' => '觌',
+'觀' => '观',
+'觝' => '抵',
+'觴' => '觞',
+'觶' => '觯',
+'觸' => '触',
+'訁' => '讠',
+'訂' => '订',
+'訃' => '讣',
+'計' => '计',
+'訊' => '讯',
+'訌' => '讧',
+'討' => '讨',
+'訐' => '讦',
+'訑' => '𫍙',
+'訒' => '讱',
+'訓' => '训',
+'訕' => '讪',
+'訖' => '讫',
+'託' => '托',
+'記' => '记',
+'訛' => '讹',
+'訝' => '讶',
+'訟' => '讼',
+'訢' => '䜣',
+'訣' => '诀',
+'訥' => '讷',
+'訩' => '讻',
+'訪' => '访',
+'設' => '设',
+'許' => '许',
+'訴' => '诉',
+'訶' => '诃',
+'診' => '诊',
+'註' => '注',
+'証' => '证',
+'詀' => '𧮪',
+'詁' => '诂',
+'詆' => '诋',
+'詎' => '讵',
+'詐' => '诈',
+'詒' => '诒',
+'詔' => '诏',
+'評' => '评',
+'詖' => '诐',
+'詗' => '诇',
+'詘' => '诎',
+'詛' => '诅',
+'詞' => '词',
+'詠' => '咏',
+'詡' => '诩',
+'詢' => '询',
+'詣' => '诣',
+'試' => '试',
+'詩' => '诗',
+'詫' => '诧',
+'詬' => '诟',
+'詭' => '诡',
+'詮' => '诠',
+'詰' => '诘',
+'話' => '话',
+'該' => '该',
+'詳' => '详',
+'詵' => '诜',
+'詶' => '酬',
+'詼' => '诙',
+'詿' => '诖',
+'誄' => '诔',
+'誅' => '诛',
+'誆' => '诓',
+'誇' => '夸',
+'誌' => '志',
+'認' => '认',
+'誑' => '诳',
+'誒' => '诶',
+'誕' => '诞',
+'誖' => '悖',
+'誘' => '诱',
+'誚' => '诮',
+'語' => '语',
+'誠' => '诚',
+'誡' => '诫',
+'誣' => '诬',
+'誤' => '误',
+'誥' => '诰',
+'誦' => '诵',
+'誨' => '诲',
+'說' => '说',
+'説' => '说',
+'誰' => '谁',
+'課' => '课',
+'誶' => '谇',
+'誹' => '诽',
+'誼' => '谊',
+'誾' => '訚',
+'調' => '调',
+'諂' => '谄',
+'諄' => '谆',
+'談' => '谈',
+'諉' => '诿',
+'請' => '请',
+'諍' => '诤',
+'諏' => '诹',
+'諑' => '诼',
+'諒' => '谅',
+'論' => '论',
+'諗' => '谂',
+'諛' => '谀',
+'諜' => '谍',
+'諝' => '谞',
+'諞' => '谝',
+'諡' => '谥',
+'諢' => '诨',
+'諤' => '谔',
+'諦' => '谛',
+'諧' => '谐',
+'諫' => '谏',
+'諭' => '谕',
+'諮' => '谘',
+'諰' => '𫍰',
+'諱' => '讳',
+'諳' => '谙',
+'諶' => '谌',
+'諷' => '讽',
+'諸' => '诸',
+'諺' => '谚',
+'諼' => '谖',
+'諾' => '诺',
+'謀' => '谋',
+'謁' => '谒',
+'謂' => '谓',
+'謄' => '誊',
+'謅' => '诌',
+'謊' => '谎',
+'謌' => '歌',
+'謎' => '谜',
+'謏' => '𫍲',
+'謐' => '谧',
+'謔' => '谑',
+'謖' => '谡',
+'謗' => '谤',
+'謙' => '谦',
+'謚' => '谥',
+'講' => '讲',
+'謝' => '谢',
+'謠' => '谣',
+'謡' => '谣',
+'謨' => '谟',
+'謫' => '谪',
+'謬' => '谬',
+'謭' => '谫',
+'謳' => '讴',
+'謹' => '谨',
+'謾' => '谩',
+'譁' => '哗',
+'譆' => '嘻',
+'證' => '证',
+'譊' => '𫍢',
+'譌' => '讹',
+'譎' => '谲',
+'譏' => '讥',
+'譔' => '撰',
+'譖' => '谮',
+'識' => '识',
+'譙' => '谯',
+'譚' => '谭',
+'譜' => '谱',
+'譟' => '噪',
+'譫' => '谵',
+'譭' => '毁',
+'譯' => '译',
+'議' => '议',
+'譴' => '谴',
+'護' => '护',
+'譸' => '诪',
+'譽' => '誉',
+'譾' => '谫',
+'讀' => '读',
+'讁' => '谪',
+'變' => '变',
+'讋' => '詟',
+'讌' => '䜩',
+'讎' => '仇',
+'讐' => '雠',
+'讒' => '谗',
+'讓' => '让',
+'讕' => '谰',
+'讖' => '谶',
+'讚' => '赞',
+'讜' => '谠',
+'讞' => '谳',
+'豈' => '岂',
+'豎' => '竖',
+'豐' => '丰',
+'豓' => '艳',
+'豔' => '艳',
+'豬' => '猪',
+'豶' => '豮',
+'貍' => '狸',
+'貓' => '猫',
+'貙' => '䝙',
+'貛' => '獾',
+'貝' => '贝',
+'貞' => '贞',
+'貟' => '贠',
+'負' => '负',
+'財' => '财',
+'貢' => '贡',
+'貧' => '贫',
+'貨' => '货',
+'販' => '贩',
+'貪' => '贪',
+'貫' => '贯',
+'責' => '责',
+'貯' => '贮',
+'貰' => '贳',
+'貲' => '赀',
+'貳' => '贰',
+'貴' => '贵',
+'貶' => '贬',
+'買' => '买',
+'貸' => '贷',
+'貺' => '贶',
+'費' => '费',
+'貼' => '贴',
+'貽' => '贻',
+'貿' => '贸',
+'賀' => '贺',
+'賁' => '贲',
+'賂' => '赂',
+'賃' => '赁',
+'賄' => '贿',
+'賅' => '赅',
+'資' => '资',
+'賈' => '贾',
+'賉' => '恤',
+'賊' => '贼',
+'賑' => '赈',
+'賒' => '赊',
+'賓' => '宾',
+'賕' => '赇',
+'賙' => '赒',
+'賚' => '赉',
+'賛' => '赞',
+'賜' => '赐',
+'賞' => '赏',
+'賟' => '𧹖',
+'賠' => '赔',
+'賡' => '赓',
+'賢' => '贤',
+'賣' => '卖',
+'賤' => '贱',
+'賦' => '赋',
+'賧' => '赕',
+'質' => '质',
+'賫' => '赍',
+'賬' => '账',
+'賭' => '赌',
+'賰' => '䞐',
+'賴' => '赖',
+'賵' => '赗',
+'賷' => '赍',
+'賺' => '赚',
+'賻' => '赙',
+'購' => '购',
+'賽' => '赛',
+'賾' => '赜',
+'贃' => '𧹗',
+'贄' => '贽',
+'贅' => '赘',
+'贇' => '赟',
+'贈' => '赠',
+'贊' => '赞',
+'贋' => '赝',
+'贍' => '赡',
+'贏' => '赢',
+'贐' => '赆',
+'贑' => '赣',
+'贓' => '赃',
+'贔' => '赑',
+'贖' => '赎',
+'贗' => '赝',
+'贛' => '赣',
+'贜' => '赃',
+'赬' => '赪',
+'趂' => '趁',
+'趕' => '赶',
+'趙' => '赵',
+'趨' => '趋',
+'趲' => '趱',
+'跡' => '迹',
+'跥' => '跺',
+'跴' => '踩',
+'踁' => '胫',
+'踐' => '践',
+'踫' => '碰',
+'踰' => '逾',
+'踴' => '踊',
+'蹌' => '跄',
+'蹏' => '蹄',
+'蹔' => '暂',
+'蹕' => '跸',
+'蹟' => '迹',
+'蹠' => '跖',
+'蹣' => '蹒',
+'蹤' => '踪',
+'蹧' => '糟',
+'蹵' => '蹴',
+'蹺' => '跷',
+'蹻' => '𫏋',
+'躂' => '跶',
+'躉' => '趸',
+'躊' => '踌',
+'躋' => '跻',
+'躍' => '跃',
+'躎' => '䟢',
+'躑' => '踯',
+'躒' => '跞',
+'躓' => '踬',
+'躕' => '蹰',
+'躚' => '跹',
+'躝' => '𨅬',
+'躡' => '蹑',
+'躥' => '蹿',
+'躦' => '躜',
+'躪' => '躏',
+'躭' => '耽',
+'躳' => '躬',
+'躶' => '裸',
+'軀' => '躯',
+'軉' => '𨉗',
+'車' => '车',
+'軋' => '轧',
+'軌' => '轨',
+'軍' => '军',
+'軏' => '𫐄',
+'軑' => '轪',
+'軒' => '轩',
+'軔' => '轫',
+'軗' => '𨐅',
+'軛' => '轭',
+'軟' => '软',
+'軤' => '轷',
+'軨' => '𫐉',
+'軫' => '轸',
+'軲' => '轱',
+'軸' => '轴',
+'軹' => '轵',
+'軺' => '轺',
+'軻' => '轲',
+'軼' => '轶',
+'軾' => '轼',
+'較' => '较',
+'輄' => '𨐈',
+'輅' => '辂',
+'輇' => '辁',
+'輈' => '辀',
+'載' => '载',
+'輊' => '轾',
+'輒' => '辄',
+'輓' => '挽',
+'輔' => '辅',
+'輕' => '轻',
+'輗' => '𫐐',
+'輙' => '辄',
+'輛' => '辆',
+'輜' => '辎',
+'輝' => '辉',
+'輞' => '辋',
+'輟' => '辍',
+'輥' => '辊',
+'輦' => '辇',
+'輩' => '辈',
+'輪' => '轮',
+'輬' => '辌',
+'輭' => '软',
+'輮' => '𫐓',
+'輯' => '辑',
+'輳' => '辏',
+'輸' => '输',
+'輻' => '辐',
+'輼' => '辒',
+'輾' => '辗',
+'輿' => '舆',
+'轀' => '辒',
+'轂' => '毂',
+'轄' => '辖',
+'轅' => '辕',
+'轆' => '辘',
+'轉' => '转',
+'轍' => '辙',
+'轎' => '轿',
+'轔' => '辚',
+'轟' => '轰',
+'轡' => '辔',
+'轢' => '轹',
+'轣' => '𫐆',
+'轤' => '轳',
+'辠' => '罪',
+'辢' => '辣',
+'辤' => '辞',
+'辦' => '办',
+'辭' => '辞',
+'辮' => '辫',
+'辯' => '辩',
+'農' => '农',
+'辳' => '农',
+'迴' => '回',
+'迻' => '移',
+'逈' => '迥',
+'逕' => '迳',
+'這' => '这',
+'連' => '连',
+'逥' => '回',
+'逩' => '奔',
+'逬' => '迸',
+'週' => '周',
+'進' => '进',
+'遉' => '侦',
+'遊' => '游',
+'運' => '运',
+'過' => '过',
+'達' => '达',
+'違' => '违',
+'遙' => '遥',
+'遜' => '逊',
+'遞' => '递',
+'遠' => '远',
+'遡' => '溯',
+'適' => '适',
+'遯' => '遁',
+'遲' => '迟',
+'遷' => '迁',
+'選' => '选',
+'遺' => '遗',
+'遼' => '辽',
+'邁' => '迈',
+'還' => '还',
+'邇' => '迩',
+'邊' => '边',
+'邏' => '逻',
+'邐' => '逦',
+'郟' => '郏',
+'郵' => '邮',
+'鄆' => '郓',
+'鄉' => '乡',
+'鄒' => '邹',
+'鄔' => '邬',
+'鄖' => '郧',
+'鄧' => '邓',
+'鄭' => '郑',
+'鄰' => '邻',
+'鄲' => '郸',
+'鄴' => '邺',
+'鄶' => '郐',
+'鄺' => '邝',
+'酇' => '酂',
+'酈' => '郦',
+'酖' => '鸩',
+'酧' => '酬',
+'醃' => '腌',
+'醆' => '盏',
+'醕' => '醇',
+'醜' => '丑',
+'醞' => '酝',
+'醣' => '糖',
+'醫' => '医',
+'醬' => '酱',
+'醯' => '酰',
+'醱' => '酦',
+'醻' => '酬',
+'醼' => '宴',
+'釀' => '酿',
+'釁' => '衅',
+'釃' => '酾',
+'釅' => '酽',
+'釋' => '释',
+'釒' => '钅',
+'釓' => '钆',
+'釔' => '钇',
+'釕' => '钌',
+'釗' => '钊',
+'釘' => '钉',
+'釙' => '钋',
+'針' => '针',
+'釣' => '钓',
+'釤' => '钐',
+'釦' => '扣',
+'釧' => '钏',
+'釩' => '钒',
+'釬' => '焊',
+'釳' => '𨰿',
+'釵' => '钗',
+'釷' => '钍',
+'釹' => '钕',
+'釺' => '钎',
+'釾' => '䥺',
+'鈀' => '钯',
+'鈁' => '钫',
+'鈃' => '钘',
+'鈄' => '钭',
+'鈅' => '钥',
+'鈇' => '𫓧',
+'鈈' => '钚',
+'鈉' => '钠',
+'鈋' => '𨱂',
+'鈍' => '钝',
+'鈎' => '钩',
+'鈐' => '钤',
+'鈑' => '钣',
+'鈒' => '钑',
+'鈔' => '钞',
+'鈕' => '钮',
+'鈞' => '钧',
+'鈠' => '𨱁',
+'鈣' => '钙',
+'鈥' => '钬',
+'鈦' => '钛',
+'鈧' => '钪',
+'鈮' => '铌',
+'鈯' => '𨱄',
+'鈰' => '铈',
+'鈲' => '𨱃',
+'鈳' => '钶',
+'鈴' => '铃',
+'鈷' => '钴',
+'鈸' => '钹',
+'鈹' => '铍',
+'鈺' => '钰',
+'鈽' => '钸',
+'鈾' => '铀',
+'鈿' => '钿',
+'鉀' => '钾',
+'鉁' => '𨱅',
+'鉄' => '铁',
+'鉅' => '钜',
+'鉆' => '钻',
+'鉈' => '铊',
+'鉉' => '铉',
+'鉋' => '铇',
+'鉍' => '铋',
+'鉑' => '铂',
+'鉕' => '钷',
+'鉗' => '钳',
+'鉚' => '铆',
+'鉛' => '铅',
+'鉞' => '钺',
+'鉢' => '钵',
+'鉤' => '钩',
+'鉦' => '钲',
+'鉬' => '钼',
+'鉭' => '钽',
+'鉶' => '铏',
+'鉸' => '铰',
+'鉺' => '铒',
+'鉻' => '铬',
+'鉿' => '铪',
+'銀' => '银',
+'銃' => '铳',
+'銅' => '铜',
+'銍' => '铚',
+'銑' => '铣',
+'銓' => '铨',
+'銖' => '铢',
+'銘' => '铭',
+'銚' => '铫',
+'銛' => '铦',
+'銜' => '衔',
+'銠' => '铑',
+'銣' => '铷',
+'銥' => '铱',
+'銦' => '铟',
+'銨' => '铵',
+'銩' => '铥',
+'銪' => '铕',
+'銫' => '铯',
+'銬' => '铐',
+'銱' => '铞',
+'銲' => '焊',
+'銳' => '锐',
+'銶' => '𨱇',
+'銷' => '销',
+'銻' => '锑',
+'銼' => '锉',
+'鋁' => '铝',
+'鋃' => '锒',
+'鋅' => '锌',
+'鋇' => '钡',
+'鋉' => '𨱈',
+'鋌' => '铤',
+'鋏' => '铗',
+'鋒' => '锋',
+'鋙' => '铻',
+'鋝' => '锊',
+'鋟' => '锓',
+'鋣' => '铘',
+'鋤' => '锄',
+'鋥' => '锃',
+'鋦' => '锔',
+'鋨' => '锇',
+'鋩' => '铓',
+'鋪' => '铺',
+'鋭' => '锐',
+'鋮' => '铖',
+'鋯' => '锆',
+'鋰' => '锂',
+'鋱' => '铽',
+'鋶' => '锍',
+'鋸' => '锯',
+'鋼' => '钢',
+'錁' => '锞',
+'錂' => '𨱋',
+'錄' => '录',
+'錆' => '锖',
+'錇' => '锫',
+'錈' => '锩',
+'錏' => '铔',
+'錐' => '锥',
+'錒' => '锕',
+'錕' => '锟',
+'錘' => '锤',
+'錙' => '锱',
+'錚' => '铮',
+'錛' => '锛',
+'錟' => '锬',
+'錠' => '锭',
+'錡' => '锜',
+'錢' => '钱',
+'錦' => '锦',
+'錨' => '锚',
+'錩' => '锠',
+'錫' => '锡',
+'錮' => '锢',
+'錯' => '错',
+'録' => '录',
+'錳' => '锰',
+'錶' => '表',
+'錸' => '铼',
+'鍀' => '锝',
+'鍁' => '锨',
+'鍃' => '锪',
+'鍄' => '𨱉',
+'鍆' => '钔',
+'鍇' => '锴',
+'鍈' => '锳',
+'鍊' => '炼',
+'鍋' => '锅',
+'鍍' => '镀',
+'鍔' => '锷',
+'鍘' => '铡',
+'鍚' => '钖',
+'鍛' => '锻',
+'鍠' => '锽',
+'鍤' => '锸',
+'鍥' => '锲',
+'鍩' => '锘',
+'鍫' => '锹',
+'鍬' => '锹',
+'鍮' => '𨱎',
+'鍰' => '锾',
+'鍳' => '鉴',
+'鍵' => '键',
+'鍶' => '锶',
+'鍺' => '锗',
+'鍾' => '锺',
+'鎂' => '镁',
+'鎄' => '锿',
+'鎇' => '镅',
+'鎊' => '镑',
+'鎌' => '镰',
+'鎔' => '镕',
+'鎖' => '锁',
+'鎗' => '枪',
+'鎘' => '镉',
+'鎚' => '锤',
+'鎛' => '镈',
+'鎝' => '𨱏',
+'鎡' => '镃',
+'鎢' => '钨',
+'鎣' => '蓥',
+'鎦' => '镏',
+'鎧' => '铠',
+'鎩' => '铩',
+'鎪' => '锼',
+'鎬' => '镐',
+'鎭' => '镇',
+'鎮' => '镇',
+'鎯' => '𨱍',
+'鎰' => '镒',
+'鎲' => '镋',
+'鎳' => '镍',
+'鎵' => '镓',
+'鎷' => '𨰾',
+'鎸' => '镌',
+'鎻' => '锁',
+'鎿' => '镎',
+'鏃' => '镞',
+'鏆' => '𨱌',
+'鏇' => '镟',
+'鏈' => '链',
+'鏉' => '𨱒',
+'鏌' => '镆',
+'鏍' => '镙',
+'鏐' => '镠',
+'鏑' => '镝',
+'鏗' => '铿',
+'鏘' => '锵',
+'鏚' => '戚',
+'鏜' => '镗',
+'鏝' => '镘',
+'鏞' => '镛',
+'鏟' => '铲',
+'鏡' => '镜',
+'鏢' => '镖',
+'鏤' => '镂',
+'鏦' => '𫓩',
+'鏨' => '錾',
+'鏰' => '镚',
+'鏵' => '铧',
+'鏷' => '镤',
+'鏹' => '镪',
+'鏺' => '䥽',
+'鏽' => '锈',
+'鐃' => '铙',
+'鐄' => '𨱑',
+'鐋' => '铴',
+'鐍' => '𫔎',
+'鐎' => '𨱓',
+'鐏' => '𨱔',
+'鐐' => '镣',
+'鐒' => '铹',
+'鐓' => '镦',
+'鐔' => '镡',
+'鐘' => '钟',
+'鐙' => '镫',
+'鐝' => '镢',
+'鐠' => '镨',
+'鐥' => '䦅',
+'鐦' => '锎',
+'鐧' => '锏',
+'鐨' => '镄',
+'鐫' => '镌',
+'鐮' => '镰',
+'鐯' => '䦃',
+'鐲' => '镯',
+'鐳' => '镭',
+'鐵' => '铁',
+'鐶' => '镮',
+'鐸' => '铎',
+'鐺' => '铛',
+'鐿' => '镱',
+'鑄' => '铸',
+'鑊' => '镬',
+'鑌' => '镔',
+'鑑' => '鉴',
+'鑒' => '鉴',
+'鑔' => '镲',
+'鑕' => '锧',
+'鑚' => '钻',
+'鑛' => '矿',
+'鑞' => '镴',
+'鑠' => '铄',
+'鑣' => '镳',
+'鑤' => '刨',
+'鑥' => '镥',
+'鑭' => '镧',
+'鑰' => '钥',
+'鑱' => '镵',
+'鑲' => '镶',
+'鑵' => '罐',
+'鑷' => '镊',
+'鑹' => '镩',
+'鑼' => '锣',
+'鑽' => '钻',
+'鑾' => '銮',
+'鑿' => '凿',
+'钁' => '镢',
+'钂' => '镋',
+'長' => '长',
+'門' => '门',
+'閂' => '闩',
+'閃' => '闪',
+'閆' => '闫',
+'閈' => '闬',
+'閉' => '闭',
+'開' => '开',
+'閌' => '闶',
+'閍' => '𨸂',
+'閎' => '闳',
+'閏' => '闰',
+'閐' => '𨸃',
+'閑' => '闲',
+'閒' => '闲',
+'間' => '间',
+'閔' => '闵',
+'閘' => '闸',
+'閙' => '闹',
+'閡' => '阂',
+'閣' => '阁',
+'閤' => '阁',
+'閥' => '阀',
+'閧' => '哄',
+'閨' => '闺',
+'閩' => '闽',
+'閫' => '阃',
+'閬' => '阆',
+'閭' => '闾',
+'閱' => '阅',
+'閲' => '阅',
+'閶' => '阊',
+'閹' => '阉',
+'閻' => '阎',
+'閼' => '阏',
+'閽' => '阍',
+'閾' => '阈',
+'閿' => '阌',
+'闃' => '阒',
+'闆' => '板',
+'闇' => '暗',
+'闈' => '闱',
+'闊' => '阔',
+'闋' => '阕',
+'闌' => '阑',
+'闍' => '阇',
+'闐' => '阗',
+'闒' => '阘',
+'闓' => '闿',
+'闔' => '阖',
+'闕' => '阙',
+'闖' => '闯',
+'闚' => '窥',
+'關' => '关',
+'闞' => '阚',
+'闠' => '阓',
+'闡' => '阐',
+'闢' => '辟',
+'闤' => '阛',
+'闥' => '闼',
+'阨' => '厄',
+'阬' => '坑',
+'陗' => '峭',
+'陘' => '陉',
+'陜' => '陕',
+'陝' => '陕',
+'陣' => '阵',
+'陰' => '阴',
+'陳' => '陈',
+'陸' => '陆',
+'陻' => '堙',
+'陽' => '阳',
+'陿' => '狭',
+'隂' => '阴',
+'隄' => '堤',
+'隉' => '陧',
+'隊' => '队',
+'階' => '阶',
+'隕' => '陨',
+'隖' => '坞',
+'際' => '际',
+'隣' => '邻',
+'隨' => '随',
+'險' => '险',
+'隱' => '隐',
+'隴' => '陇',
+'隷' => '隶',
+'隸' => '隶',
+'隻' => '只',
+'雋' => '隽',
+'雖' => '虽',
+'雙' => '双',
+'雛' => '雏',
+'雜' => '杂',
+'雞' => '鸡',
+'離' => '离',
+'難' => '难',
+'雲' => '云',
+'電' => '电',
+'霢' => '霡',
+'霧' => '雾',
+'霽' => '霁',
+'靂' => '雳',
+'靄' => '霭',
+'靆' => '叇',
+'靈' => '灵',
+'靉' => '叆',
+'靚' => '靓',
+'靜' => '静',
+'靦' => '腼',
+'靨' => '靥',
+'靭' => '韧',
+'靱' => '韧',
+'鞀' => '鼗',
+'鞏' => '巩',
+'鞝' => '绱',
+'鞦' => '秋',
+'鞵' => '鞋',
+'鞽' => '鞒',
+'鞾' => '靴',
+'韁' => '缰',
+'韃' => '鞑',
+'韆' => '千',
+'韈' => '袜',
+'韉' => '鞯',
+'韋' => '韦',
+'韌' => '韧',
+'韍' => '韨',
+'韓' => '韩',
+'韙' => '韪',
+'韜' => '韬',
+'韞' => '韫',
+'韤' => '袜',
+'韮' => '韭',
+'韻' => '韵',
+'響' => '响',
+'頁' => '页',
+'頂' => '顶',
+'頃' => '顷',
+'項' => '项',
+'順' => '顺',
+'頇' => '顸',
+'須' => '须',
+'頊' => '顼',
+'頌' => '颂',
+'頎' => '颀',
+'頏' => '颃',
+'預' => '预',
+'頑' => '顽',
+'頒' => '颁',
+'頓' => '顿',
+'頗' => '颇',
+'領' => '领',
+'頜' => '颌',
+'頟' => '额',
+'頡' => '颉',
+'頤' => '颐',
+'頦' => '颏',
+'頭' => '头',
+'頮' => '颒',
+'頰' => '颊',
+'頲' => '颋',
+'頴' => '颕',
+'頷' => '颔',
+'頸' => '颈',
+'頹' => '颓',
+'頻' => '频',
+'頼' => '赖',
+'頽' => '颓',
+'顃' => '𩖖',
+'顆' => '颗',
+'顇' => '悴',
+'顋' => '腮',
+'題' => '题',
+'額' => '额',
+'顎' => '颚',
+'顏' => '颜',
+'顒' => '颙',
+'顓' => '颛',
+'顔' => '颜',
+'願' => '愿',
+'顙' => '颡',
+'顛' => '颠',
+'類' => '类',
+'顢' => '颟',
+'顥' => '颢',
+'顦' => '憔',
+'顧' => '顾',
+'顫' => '颤',
+'顬' => '颥',
+'顯' => '显',
+'顰' => '颦',
+'顱' => '颅',
+'顳' => '颞',
+'顴' => '颧',
+'風' => '风',
+'颭' => '飐',
+'颮' => '飑',
+'颯' => '飒',
+'颰' => '𩙥',
+'颱' => '台',
+'颳' => '刮',
+'颶' => '飓',
+'颷' => '𩙪',
+'颸' => '飔',
+'颺' => '飏',
+'颻' => '飖',
+'颼' => '飕',
+'颾' => '𩙫',
+'飀' => '飗',
+'飃' => '飘',
+'飄' => '飘',
+'飆' => '飙',
+'飈' => '飚',
+'飛' => '飞',
+'飜' => '翻',
+'飠' => '饣',
+'飢' => '饥',
+'飣' => '饤',
+'飤' => '饲',
+'飥' => '饦',
+'飩' => '饨',
+'飪' => '饪',
+'飫' => '饫',
+'飭' => '饬',
+'飯' => '饭',
+'飱' => '飧',
+'飲' => '饮',
+'飴' => '饴',
+'飼' => '饲',
+'飽' => '饱',
+'飾' => '饰',
+'飿' => '饳',
+'餁' => '饪',
+'餃' => '饺',
+'餄' => '饸',
+'餅' => '饼',
+'餈' => '糍',
+'餉' => '饷',
+'養' => '养',
+'餌' => '饵',
+'餎' => '饹',
+'餏' => '饻',
+'餑' => '饽',
+'餒' => '馁',
+'餓' => '饿',
+'餔' => '𫗦',
+'餕' => '馂',
+'餖' => '饾',
+'餗' => '𫗧',
+'餘' => '馀',
+'餚' => '肴',
+'餛' => '馄',
+'餜' => '馃',
+'餞' => '饯',
+'餡' => '馅',
+'餦' => '𫗠',
+'館' => '馆',
+'餭' => '𫗮',
+'餱' => '糇',
+'餳' => '饧',
+'餵' => '喂',
+'餶' => '馉',
+'餷' => '馇',
+'餸' => '𩠌',
+'餹' => '糖',
+'餺' => '馎',
+'餻' => '糕',
+'餼' => '饩',
+'餽' => '馈',
+'餾' => '馏',
+'餿' => '馊',
+'饁' => '馌',
+'饃' => '馍',
+'饅' => '馒',
+'饈' => '馐',
+'饉' => '馑',
+'饊' => '馓',
+'饋' => '馈',
+'饌' => '馔',
+'饍' => '膳',
+'饑' => '饥',
+'饒' => '饶',
+'饗' => '飨',
+'饘' => '𫗴',
+'饜' => '餍',
+'饝' => '馍',
+'饞' => '馋',
+'饢' => '馕',
+'馬' => '马',
+'馭' => '驭',
+'馮' => '冯',
+'馱' => '驮',
+'馳' => '驰',
+'馴' => '驯',
+'馹' => '驲',
+'駁' => '驳',
+'駃' => '𫘝',
+'駈' => '驱',
+'駎' => '𩧨',
+'駐' => '驻',
+'駑' => '驽',
+'駒' => '驹',
+'駔' => '驵',
+'駕' => '驾',
+'駘' => '骀',
+'駙' => '驸',
+'駚' => '𩧫',
+'駛' => '驶',
+'駝' => '驼',
+'駟' => '驷',
+'駡' => '骂',
+'駢' => '骈',
+'駧' => '𩧲',
+'駩' => '𩧴',
+'駭' => '骇',
+'駰' => '骃',
+'駱' => '骆',
+'駶' => '𩧺',
+'駸' => '骎',
+'駻' => '𫘣',
+'駿' => '骏',
+'騁' => '骋',
+'騂' => '骍',
+'騃' => '𫘤',
+'騅' => '骓',
+'騌' => '骔',
+'騍' => '骒',
+'騎' => '骑',
+'騏' => '骐',
+'騐' => '验',
+'騔' => '𩨀',
+'騖' => '骛',
+'騙' => '骗',
+'騚' => '𩨊',
+'騝' => '𩨃',
+'騟' => '𩨈',
+'騠' => '𫘨',
+'騣' => '鬃',
+'騤' => '骙',
+'騧' => '䯄',
+'騪' => '𩨄',
+'騫' => '骞',
+'騭' => '骘',
+'騮' => '骝',
+'騰' => '腾',
+'騶' => '驺',
+'騷' => '骚',
+'騸' => '骟',
+'騾' => '骡',
+'驀' => '蓦',
+'驁' => '骜',
+'驂' => '骖',
+'驃' => '骠',
+'驄' => '骢',
+'驅' => '驱',
+'驊' => '骅',
+'驋' => '𩧯',
+'驌' => '骕',
+'驍' => '骁',
+'驏' => '骣',
+'驕' => '骄',
+'驗' => '验',
+'驘' => '骡',
+'驚' => '惊',
+'驛' => '驿',
+'驟' => '骤',
+'驢' => '驴',
+'驤' => '骧',
+'驥' => '骥',
+'驦' => '骦',
+'驪' => '骊',
+'驫' => '骉',
+'骯' => '肮',
+'骽' => '腿',
+'骾' => '鲠',
+'髈' => '膀',
+'髏' => '髅',
+'髒' => '脏',
+'體' => '体',
+'髕' => '髌',
+'髖' => '髋',
+'髥' => '髯',
+'髮' => '发',
+'鬀' => '剃',
+'鬆' => '松',
+'鬉' => '鬃',
+'鬍' => '胡',
+'鬚' => '须',
+'鬢' => '鬓',
+'鬥' => '斗',
+'鬦' => '斗',
+'鬧' => '闹',
+'鬨' => '哄',
+'鬩' => '阋',
+'鬪' => '斗',
+'鬮' => '阄',
+'鬰' => '郁',
+'鬱' => '郁',
+'鬹' => '鬶',
+'魎' => '魉',
+'魘' => '魇',
+'魚' => '鱼',
+'魛' => '鱽',
+'魟' => '𫚉',
+'魢' => '鱾',
+'魥' => '𩽹',
+'魨' => '鲀',
+'魯' => '鲁',
+'魴' => '鲂',
+'魷' => '鱿',
+'魺' => '鲄',
+'鮁' => '鲅',
+'鮃' => '鲆',
+'鮄' => '𫚒',
+'鮊' => '鲌',
+'鮋' => '鲉',
+'鮍' => '鲏',
+'鮎' => '鲇',
+'鮐' => '鲐',
+'鮑' => '鲍',
+'鮒' => '鲋',
+'鮓' => '鲊',
+'鮚' => '鲒',
+'鮜' => '鲘',
+'鮝' => '鲞',
+'鮞' => '鲕',
+'鮟' => '𩽾',
+'鮣' => '䲟',
+'鮦' => '鲖',
+'鮪' => '鲔',
+'鮫' => '鲛',
+'鮭' => '鲑',
+'鮮' => '鲜',
+'鮰' => '𫚔',
+'鮳' => '鲓',
+'鮶' => '鲪',
+'鮸' => '𩾃',
+'鮺' => '鲝',
+'鯀' => '鲧',
+'鯁' => '鲠',
+'鯄' => '𩾁',
+'鯆' => '𫚙',
+'鯇' => '鲩',
+'鯉' => '鲤',
+'鯊' => '鲨',
+'鯒' => '鲬',
+'鯔' => '鲻',
+'鯕' => '鲯',
+'鯖' => '鲭',
+'鯗' => '鲞',
+'鯛' => '鲷',
+'鯝' => '鲴',
+'鯡' => '鲱',
+'鯢' => '鲵',
+'鯤' => '鲲',
+'鯧' => '鲳',
+'鯨' => '鲸',
+'鯪' => '鲮',
+'鯫' => '鲰',
+'鯰' => '鲶',
+'鯱' => '𩾇',
+'鯴' => '鲺',
+'鯶' => '𩽼',
+'鯷' => '鳀',
+'鯽' => '鲫',
+'鯿' => '鳊',
+'鰁' => '鳈',
+'鰂' => '鲗',
+'鰃' => '鳂',
+'鰆' => '䲠',
+'鰈' => '鲽',
+'鰉' => '鳇',
+'鰌' => '䲡',
+'鰍' => '鳅',
+'鰏' => '鲾',
+'鰐' => '鳄',
+'鰒' => '鳆',
+'鰓' => '鳃',
+'鰛' => '鳁',
+'鰜' => '鳒',
+'鰟' => '鳑',
+'鰠' => '鳋',
+'鰣' => '鲥',
+'鰤' => '𫚕',
+'鰥' => '鳏',
+'鰧' => '䲢',
+'鰨' => '鳎',
+'鰩' => '鳐',
+'鰭' => '鳍',
+'鰮' => '鳁',
+'鰱' => '鲢',
+'鰲' => '鳌',
+'鰳' => '鳓',
+'鰵' => '鳘',
+'鰷' => '鲦',
+'鰹' => '鲣',
+'鰺' => '鲹',
+'鰻' => '鳗',
+'鰼' => '鳛',
+'鰾' => '鳔',
+'鱂' => '鳉',
+'鱅' => '鳙',
+'鱇' => '𩾌',
+'鱈' => '鳕',
+'鱉' => '鳖',
+'鱒' => '鳟',
+'鱔' => '鳝',
+'鱖' => '鳜',
+'鱗' => '鳞',
+'鱘' => '鲟',
+'鱝' => '鲼',
+'鱟' => '鲎',
+'鱠' => '鲙',
+'鱣' => '鳣',
+'鱤' => '鳡',
+'鱧' => '鳢',
+'鱨' => '鲿',
+'鱭' => '鲚',
+'鱮' => '𫚈',
+'鱯' => '鳠',
+'鱷' => '鳄',
+'鱸' => '鲈',
+'鱺' => '鲡',
+'鳥' => '鸟',
+'鳧' => '凫',
+'鳩' => '鸠',
+'鳬' => '凫',
+'鳲' => '鸤',
+'鳳' => '凤',
+'鳴' => '鸣',
+'鳶' => '鸢',
+'鳷' => '𫛛',
+'鳼' => '𪉃',
+'鳾' => '䴓',
+'鴃' => '𫛞',
+'鴆' => '鸩',
+'鴇' => '鸨',
+'鴈' => '雁',
+'鴉' => '鸦',
+'鴒' => '鸰',
+'鴕' => '鸵',
+'鴗' => '𫁡',
+'鴛' => '鸳',
+'鴜' => '𪉈',
+'鴝' => '鸲',
+'鴞' => '鸮',
+'鴟' => '鸱',
+'鴣' => '鸪',
+'鴦' => '鸯',
+'鴨' => '鸭',
+'鴯' => '鸸',
+'鴰' => '鸹',
+'鴲' => '𪉆',
+'鴴' => '鸻',
+'鴷' => '䴕',
+'鴻' => '鸿',
+'鴿' => '鸽',
+'鵁' => '䴔',
+'鵂' => '鸺',
+'鵃' => '鸼',
+'鵐' => '鹀',
+'鵑' => '鹃',
+'鵒' => '鹆',
+'鵓' => '鹁',
+'鵚' => '𪉍',
+'鵜' => '鹈',
+'鵝' => '鹅',
+'鵞' => '鹅',
+'鵠' => '鹄',
+'鵡' => '鹉',
+'鵪' => '鹌',
+'鵬' => '鹏',
+'鵮' => '鹐',
+'鵯' => '鹎',
+'鵰' => '雕',
+'鵲' => '鹊',
+'鵶' => '鸦',
+'鵷' => '鹓',
+'鵾' => '鹍',
+'鶄' => '䴖',
+'鶇' => '鸫',
+'鶉' => '鹑',
+'鶊' => '鹒',
+'鶒' => '𫛶',
+'鶓' => '鹋',
+'鶖' => '鹙',
+'鶗' => '𫛸',
+'鶘' => '鹕',
+'鶚' => '鹗',
+'鶡' => '鹖',
+'鶥' => '鹛',
+'鶩' => '鹜',
+'鶪' => '䴗',
+'鶬' => '鸧',
+'鶯' => '莺',
+'鶲' => '鹟',
+'鶴' => '鹤',
+'鶹' => '鹠',
+'鶺' => '鹡',
+'鶻' => '鹘',
+'鶼' => '鹣',
+'鶿' => '鹚',
+'鷀' => '鹚',
+'鷁' => '鹢',
+'鷂' => '鹞',
+'鷄' => '鸡',
+'鷈' => '䴘',
+'鷊' => '鹝',
+'鷓' => '鹧',
+'鷔' => '𪉑',
+'鷖' => '鹥',
+'鷗' => '鸥',
+'鷙' => '鸷',
+'鷚' => '鹨',
+'鷥' => '鸶',
+'鷦' => '鹪',
+'鷨' => '𪉊',
+'鷫' => '鹔',
+'鷯' => '鹩',
+'鷰' => '燕',
+'鷲' => '鹫',
+'鷳' => '鹇',
+'鷴' => '鹇',
+'鷸' => '鹬',
+'鷹' => '鹰',
+'鷺' => '鹭',
+'鷽' => '鸴',
+'鷿' => '䴙',
+'鸂' => '㶉',
+'鸇' => '鹯',
+'鸋' => '𫛢',
+'鸌' => '鹱',
+'鸎' => '莺',
+'鸏' => '鹲',
+'鸕' => '鸬',
+'鸘' => '鹴',
+'鸚' => '鹦',
+'鸛' => '鹳',
+'鸝' => '鹂',
+'鸞' => '鸾',
+'鹵' => '卤',
+'鹹' => '咸',
+'鹺' => '鹾',
+'鹻' => '碱',
+'鹼' => '碱',
+'鹽' => '盐',
+'麗' => '丽',
+'麥' => '麦',
+'麨' => '𪎊',
+'麩' => '麸',
+'麪' => '面',
+'麫' => '面',
+'麯' => '曲',
+'麲' => '𪎉',
+'麳' => '𪎌',
+'麴' => '麹',
+'麵' => '面',
+'麼' => '么',
+'麽' => '么',
+'黃' => '黄',
+'黌' => '黉',
+'點' => '点',
+'黨' => '党',
+'黲' => '黪',
+'黴' => '霉',
+'黶' => '黡',
+'黷' => '黩',
+'黽' => '黾',
+'黿' => '鼋',
+'鼃' => '蛙',
+'鼇' => '鳌',
+'鼈' => '鳖',
+'鼉' => '鼍',
+'鼕' => '咚',
+'鼴' => '鼹',
+'齊' => '齐',
+'齋' => '斋',
+'齎' => '赍',
+'齏' => '齑',
+'齒' => '齿',
+'齔' => '龀',
+'齕' => '龁',
+'齗' => '龂',
+'齙' => '龅',
+'齜' => '龇',
+'齟' => '龃',
+'齠' => '龆',
+'齡' => '龄',
+'齣' => '出',
+'齦' => '龈',
+'齧' => '啮',
+'齩' => '咬',
+'齪' => '龊',
+'齬' => '龉',
+'齲' => '龋',
+'齶' => '腭',
+'齷' => '龌',
+'龍' => '龙',
+'龎' => '厐',
+'龐' => '庞',
+'龑' => '䶮',
+'龔' => '龚',
+'龕' => '龛',
+'龜' => '龟',
+'龭' => '𩨎',
+'龯' => '𨱆',
+'𠌥' => '𠆿',
+'𠏢' => '𠉗',
+'𠕂' => '再',
+'𠕅' => '再',
+'𠞆' => '𠛆',
+'𠞰' => '剿',
+'𠠎' => '𠚳',
+'𡄔' => '𠴢',
+'𡄣' => '𠵸',
+'𡅏' => '𠲥',
+'𡑭' => '𡋗',
+'𡓾' => '𡋀',
+'𡚁' => '弊',
+'𡞵' => '㛟',
+'𡠹' => '㛿',
+'𡢃' => '㛠',
+'𡨥' => '寇',
+'𡮉' => '𡭜',
+'𡮣' => '𡭬',
+'𡻕' => '岁',
+'𡾱' => '㟜',
+'𢣚' => '𢘝',
+'𢣭' => '𢘞',
+'𢶫' => '𢫞',
+'𢷮' => '𢫊',
+'𢹿' => '𢬦',
+'𣙎' => '㭣',
+'𣙜' => '榷',
+'𣝕' => '𣘷',
+'𣞻' => '𣘓',
+'𣠲' => '𣑶',
+'𣯴' => '𣭤',
+'𣾷' => '㳢',
+'𣿉' => '𣶫',
+'𤁣' => '𣺽',
+'𤋮' => '熙',
+'𤒎' => '𤊀',
+'𤨏' => '琐',
+'𤪺' => '㻘',
+'𤫩' => '㻏',
+'𤱈' => '亩',
+'𤳸' => '𤳄',
+'𤸫' => '𤶧',
+'𤺥' => '瘩',
+'𥌃' => '𥅘',
+'𥕥' => '𥐰',
+'𥖅' => '𥐯',
+'𥢢' => '䅪',
+'𥨐' => '𥧂',
+'𥵃' => '𥱔',
+'𥵊' => '𥭉',
+'𥸠' => '𥮋',
+'𥼽' => '𥹥',
+'𥽖' => '𥺇',
+'𥿊' => '𦈈',
+'𦂅' => '𦈒',
+'𦃄' => '𦈗',
+'𦊱' => '挂',
+'𦍑' => '羌',
+'𦕈' => '眇',
+'𦢈' => '𣍨',
+'𦣎' => '𦟗',
+'𦪽' => '𦨩',
+'𦵏' => '葬',
+'𧔥' => '𧒭',
+'𧜗' => '䘞',
+'𧜵' => '䙊',
+'𧝞' => '䘛',
+'𧩙' => '䜥',
+'𧳟' => '𧳕',
+'𧵳' => '䞌',
+'𧶔' => '𧹓',
+'𧶧' => '䞎',
+'𨄣' => '𨀱',
+'𨅍' => '𨁴',
+'𨇁' => '𧿈',
+'𨇞' => '𨅫',
+'𨈊' => '𨂺',
+'𨈌' => '𨄄',
+'𨊰' => '䢀',
+'𨊸' => '䢁',
+'𨊻' => '𨐆',
+'𨋢' => '䢂',
+'𨎮' => '𨐉',
+'𨏠' => '𨐇',
+'𨏥' => '𨐊',
+'𨤻' => '𨤰',
+'𨥛' => '𨱀',
+'𨦫' => '䦀',
+'𨧜' => '䦁',
+'𨧱' => '𨱊',
+'𨫒' => '𨱐',
+'𨮂' => '𨱕',
+'𨯅' => '䥿',
+'𨳑' => '𨸁',
+'𨳕' => '𨸀',
+'𨴗' => '𨸅',
+'𨵩' => '𨸆',
+'𨵸' => '𨸇',
+'𨶀' => '𨸉',
+'𨶏' => '𨸊',
+'𨶮' => '𨸌',
+'𨶲' => '𨸋',
+'𨷲' => '𨸎',
+'𨽏' => '𨸘',
+'𨽻' => '隶',
+'𩎢' => '𩏾',
+'𩏪' => '𩏽',
+'𩓐' => '脖',
+'𩓣' => '𩖕',
+'𩗀' => '𩙦',
+'𩗗' => '飓',
+'𩗡' => '𩙧',
+'𩘀' => '𩙩',
+'𩘝' => '𩙭',
+'𩘹' => '𩙨',
+'𩘺' => '𩙬',
+'𩙈' => '𩙰',
+'𩚛' => '𩟿',
+'𩚥' => '𩠀',
+'𩚵' => '𩠁',
+'𩛆' => '𩠂',
+'𩛩' => '𩠃',
+'𩜇' => '𩠉',
+'𩜦' => '𩠆',
+'𩜵' => '𩠊',
+'𩝔' => '𩠋',
+'𩞄' => '𩠎',
+'𩞦' => '𩠏',
+'𩞯' => '䭪',
+'𩟐' => '𩠅',
+'𩠴' => '𩠠',
+'𩡺' => '𩧦',
+'𩢡' => '𩧬',
+'𩢴' => '𩧵',
+'𩢸' => '𩧳',
+'𩢾' => '𩧮',
+'𩣏' => '𩧶',
+'𩣑' => '䯃',
+'𩣵' => '𩧻',
+'𩣺' => '𩧼',
+'𩤊' => '𩧩',
+'𩤙' => '𩨆',
+'𩤲' => '𩨉',
+'𩤸' => '𩨅',
+'𩥄' => '𩨋',
+'𩥇' => '𩨍',
+'𩥉' => '𩧱',
+'𩥑' => '𩨌',
+'𩧆' => '𩨐',
+'𩭙' => '𩬣',
+'𩯳' => '𩯒',
+'𩰀' => '𩬤',
+'𩳤' => '𩲒',
+'𩵩' => '𩽺',
+'𩵹' => '𩽻',
+'𩶘' => '䲞',
+'𩶰' => '𩽿',
+'𩶱' => '𩽽',
+'𩷰' => '𩾄',
+'𩸃' => '𩾅',
+'𩸦' => '𩾆',
+'𩽇' => '𩾎',
+'𩿪' => '𪉄',
+'𪀦' => '𪉅',
+'𪀾' => '𪉋',
+'𪁈' => '𪉉',
+'𪁖' => '𪉌',
+'𪂆' => '𪉎',
+'𪃍' => '𪉐',
+'𪃏' => '𪉏',
+'𪄆' => '𪉔',
+'𪄕' => '𪉒',
+'𪇳' => '𪉕',
+'𪈼' => '𪉓',
+'𪋿' => '𪎍',
+'𪔵' => '𪔭',
+'𪘀' => '𪚏',
+'𪘯' => '𪚐',
+'『' => '‘',
+'』' => '’',
+'「' => '“',
+'「' => '“',
+'」' => '”',
+'」' => '”',
+'。陞' => '。升',
+'《易乾' => '《易乾',
+'一釐' => '一厘',
+'上昇' => '上升',
+'不穀' => '不穀',
+'專著' => '专著',
+'乾一坛' => '乾一坛',
+'乾一壇' => '乾一坛',
+'乾一組' => '乾一组',
+'乾一组' => '乾一组',
+'乾上乾下' => '乾上乾下',
+'乾东' => '乾东',
+'乾東' => '乾东',
+'乾為天' => '乾为天',
+'乾為陽' => '乾为阳',
+'乾九' => '乾九',
+'乾乾' => '乾乾',
+'乾亨' => '乾亨',
+'乾仪' => '乾仪',
+'乾儀' => '乾仪',
+'乾位' => '乾位',
+'乾健' => '乾健',
+'乾健也' => '乾健也',
+'乾元' => '乾元',
+'乾光' => '乾光',
+'乾兴' => '乾兴',
+'乾興' => '乾兴',
+'乾冈' => '乾冈',
+'乾岡' => '乾冈',
+'乾刘' => '乾刘',
+'乾劉' => '乾刘',
+'乾刚' => '乾刚',
+'乾剛' => '乾刚',
+'乾务' => '乾务',
+'乾務' => '乾务',
+'乾化' => '乾化',
+'乾卦' => '乾卦',
+'乾县' => '乾县',
+'乾縣' => '乾县',
+'乾台' => '乾台',
+'乾吉' => '乾吉',
+'乾启' => '乾启',
+'乾啟' => '乾启',
+'乾命' => '乾命',
+'乾和' => '乾和',
+'乾嘉' => '乾嘉',
+'乾图' => '乾图',
+'乾圖' => '乾图',
+'乾坤' => '乾坤',
+'乾城' => '乾城',
+'乾基' => '乾基',
+'乾天也' => '乾天也',
+'乾始' => '乾始',
+'乾姓' => '乾姓',
+'乾宁' => '乾宁',
+'乾寧' => '乾宁',
+'乾宅' => '乾宅',
+'乾宇' => '乾宇',
+'乾安' => '乾安',
+'乾定' => '乾定',
+'乾封' => '乾封',
+'乾居' => '乾居',
+'乾岗' => '乾岗',
+'乾崗' => '乾岗',
+'乾巛' => '乾巛',
+'乾州' => '乾州',
+'乾录' => '乾录',
+'乾錄' => '乾录',
+'乾律' => '乾律',
+'乾德' => '乾德',
+'乾心' => '乾心',
+'乾忠' => '乾忠',
+'乾文' => '乾文',
+'乾断' => '乾断',
+'乾斷' => '乾断',
+'乾方' => '乾方',
+'乾施' => '乾施',
+'乾旦' => '乾旦',
+'乾明' => '乾明',
+'乾昧' => '乾昧',
+'乾晖' => '乾晖',
+'乾暉' => '乾晖',
+'乾景' => '乾景',
+'乾晷' => '乾晷',
+'乾曜' => '乾曜',
+'乾构' => '乾构',
+'乾構' => '乾构',
+'乾枢' => '乾枢',
+'乾樞' => '乾枢',
+'乾栋' => '乾栋',
+'乾棟' => '乾栋',
+'乾步' => '乾步',
+'乾氏' => '乾氏',
+'乾沓和' => '乾沓和',
+'乾沓婆' => '乾沓婆',
+'乾泉' => '乾泉',
+'乾淳' => '乾淳',
+'乾清' => '乾清',
+'乾渥' => '乾渥',
+'乾潭' => '乾潭',
+'乾灵' => '乾灵',
+'乾靈' => '乾灵',
+'乾生元' => '乾生元',
+'乾男' => '乾男',
+'乾皋' => '乾皋',
+'乾盛世' => '乾盛世',
+'乾矢' => '乾矢',
+'乾祐' => '乾祐',
+'乾神' => '乾神',
+'乾穹' => '乾穹',
+'乾窦' => '乾窦',
+'乾竇' => '乾窦',
+'乾竺' => '乾竺',
+'乾笃' => '乾笃',
+'乾篤' => '乾笃',
+'乾符' => '乾符',
+'乾策' => '乾策',
+'乾精' => '乾精',
+'乾紅' => '乾红',
+'乾红' => '乾红',
+'乾綱' => '乾纲',
+'乾纲' => '乾纲',
+'乾紐' => '乾纽',
+'乾纽' => '乾纽',
+'乾絡' => '乾络',
+'乾络' => '乾络',
+'乾統' => '乾统',
+'乾统' => '乾统',
+'乾維' => '乾维',
+'乾维' => '乾维',
+'乾罗' => '乾罗',
+'乾羅' => '乾罗',
+'乾花' => '乾花',
+'乾荫' => '乾荫',
+'乾蔭' => '乾荫',
+'乾行' => '乾行',
+'乾衡' => '乾衡',
+'乾西' => '乾西',
+'乾覆' => '乾覆',
+'乾象' => '乾象',
+'乾象历' => '乾象历',
+'乾象歷' => '乾象历',
+'乾貞' => '乾贞',
+'乾贞' => '乾贞',
+'乾貴士' => '乾贵士',
+'乾贵士' => '乾贵士',
+'乾貺' => '乾贶',
+'乾贶' => '乾贶',
+'乾車' => '乾车',
+'乾车' => '乾车',
+'乾軸' => '乾轴',
+'乾轴' => '乾轴',
+'乾通' => '乾通',
+'乾造' => '乾造',
+'乾道' => '乾道',
+'乾鉴' => '乾鉴',
+'乾鑒' => '乾鉴',
+'乾鈞' => '乾钧',
+'乾钧' => '乾钧',
+'乾闥' => '乾闼',
+'乾闼' => '乾闼',
+'乾陀' => '乾陀',
+'乾陵' => '乾陵',
+'乾隆' => '乾隆',
+'乾音' => '乾音',
+'乾顧' => '乾顾',
+'乾顾' => '乾顾',
+'乾風' => '乾风',
+'乾风' => '乾风',
+'乾首' => '乾首',
+'乾馬' => '乾马',
+'乾马' => '乾马',
+'乾鵠' => '乾鹄',
+'乾鹄' => '乾鹄',
+'乾鵲' => '乾鹊',
+'乾鹊' => '乾鹊',
+'乾龍' => '乾龙',
+'乾龙' => '乾龙',
+'乾,健也' => '乾,健也',
+'乾,天也' => '乾,天也',
+'五箇山' => '五箇山',
+'什么' => '什么',
+'仇讎' => '仇雠',
+'以微知著' => '以微知著',
+'仰屋著書' => '仰屋著书',
+'彷彿' => '仿佛',
+'夥計' => '伙计',
+'佛頭著糞' => '佛头著粪',
+'偵蒐' => '侦搜',
+'倖一郎' => '倖一郎',
+'倖田' => '倖田',
+'候覆' => '候复',
+'藉助' => '借助',
+'藉口' => '借口',
+'藉手' => '借手',
+'藉故' => '借故',
+'藉機' => '借机',
+'藉此' => '借此',
+'藉由' => '借由',
+'藉端' => '借端',
+'藉詞' => '借词',
+'傒倖' => '傒倖',
+'先名後姓' => '先名后姓',
+'兒寬' => '兒宽',
+'六么' => '六幺',
+'蘭質薰心' => '兰质薰心',
+'內聯陞' => '内联升',
+'憑藉' => '凭借',
+'初昇' => '初升',
+'利欲薰心' => '利欲薰心',
+'剋了' => '剋了',
+'剋架' => '剋架',
+'剖釐' => '剖厘',
+'陞為' => '升为',
+'陞了' => '升了',
+'昇仙' => '升仙',
+'陞任' => '升任',
+'昇華' => '升华',
+'昇天' => '升天',
+'陞官' => '升官',
+'昇平' => '升平',
+'昇汞' => '升汞',
+'陞用' => '升用',
+'陞補' => '升补',
+'陞遷' => '升迁',
+'昇降' => '升降',
+'卓著' => '卓著',
+'博和託' => '博和讬',
+'歷陞' => '历升',
+'釐改' => '厘改',
+'釐整' => '厘整',
+'釐正' => '厘正',
+'釐毫' => '厘毫',
+'釐清' => '厘清',
+'釐訂' => '厘订',
+'釐革' => '厘革',
+'原著' => '原著',
+'又陞' => '又升',
+'反反覆覆' => '反反复复',
+'反覆' => '反复',
+'可穿著' => '可穿著',
+'吃衣著飯' => '吃衣著饭',
+'合著' => '合著',
+'同陞和' => '同升和',
+'名著' => '名著',
+'吳克羣' => '吴克羣',
+'周易乾' => '周易乾',
+'諠譁' => '喧哗',
+'回覆' => '回复',
+'土著' => '土著',
+'坤乾' => '坤乾',
+'墨瀋' => '墨渖',
+'覆查' => '复查',
+'覆核' => '复核',
+'覆检' => '复检',
+'復甦' => '复苏',
+'多么' => '多么',
+'大麴' => '大曲',
+'天道为乾' => '天道为乾',
+'天道為乾' => '天道为乾',
+'奧區' => '奧区',
+'如瀋' => '如渖',
+'姓么' => '姓幺',
+'子餘' => '子馀',
+'字乾生' => '字乾生',
+'孙乾' => '孙乾',
+'孫乾' => '孙乾',
+'宏碁' => '宏碁',
+'官陞' => '官升',
+'將軍抽俥' => '将军抽俥',
+'將軍抽車' => '将军抽車',
+'爾冬陞' => '尔冬升',
+'尼乾陀' => '尼乾陀',
+'侷促' => '局促',
+'跼促' => '局促',
+'侷限' => '局限',
+'跼限' => '局限',
+'山崎闇齋' => '山崎闇斋',
+'岳託' => '岳讬',
+'巨著' => '巨著',
+'乾乾淨淨' => '干干净净',
+'乾乾脆脆' => '干干脆脆',
+'乾泉水' => '干泉水',
+'年陞' => '年升',
+'么九' => '幺九',
+'么二三' => '幺二三',
+'么元' => '幺元',
+'么鳳' => '幺凤',
+'么半' => '幺半',
+'么半群' => '幺半群',
+'么廝' => '幺厮',
+'幺厮' => '幺厮',
+'么叔' => '幺叔',
+'么女' => '幺女',
+'么媽' => '幺妈',
+'么妹' => '幺妹',
+'么姓' => '幺姓',
+'么姨' => '幺姨',
+'么娘' => '幺娘',
+'么孃' => '幺娘',
+'幺孃' => '幺娘',
+'么子' => '幺子',
+'么小' => '幺小',
+'么弟' => '幺弟',
+'么正' => '幺正',
+'么氏' => '幺氏',
+'么爸' => '幺爸',
+'么爹' => '幺爹',
+'么篇' => '幺篇',
+'么舅' => '幺舅',
+'么蛾子' => '幺蛾子',
+'么謙' => '幺谦',
+'么麼' => '幺麽',
+'么麽' => '幺麽',
+'么麽小丑' => '幺麽小丑',
+'慶餘' => '庆馀',
+'康乾' => '康乾',
+'张法乾' => '张法乾',
+'張法乾' => '张法乾',
+'彰明較著' => '彰明较著',
+'待覆' => '待复',
+'後姓' => '後姓',
+'慫慂' => '怂恿',
+'怎么' => '怎么',
+'恩威並著' => '恩威并著',
+'噁心' => '恶心',
+'情蒐' => '情搜',
+'情鍾' => '情钟',
+'惏悷' => '惏悷',
+'惏慄' => '惏慄',
+'慘澹' => '惨淡',
+'成效顯著' => '成效显著',
+'成績顯著' => '成绩显著',
+'所鍾' => '所钟',
+'手鍊' => '手链',
+'扞格' => '扞格',
+'執著' => '执著',
+'批覆' => '批复',
+'承乾' => '承乾',
+'拉鍊' => '拉链',
+'拙著' => '拙著',
+'拚命' => '拚命',
+'拚搏' => '拚搏',
+'拚死' => '拚死',
+'拾瀋' => '拾渖',
+'拿破崙' => '拿破仑',
+'挨剋' => '挨剋',
+'提昇' => '提升',
+'蒐錄' => '搜录',
+'蒐索' => '搜索',
+'蒐羅' => '搜罗',
+'蒐藏' => '搜藏',
+'蒐證' => '搜证',
+'蒐購' => '搜购',
+'蒐輯' => '搜辑',
+'蒐採' => '搜采',
+'蒐采' => '搜采',
+'蒐集' => '搜集',
+'搥打' => '搥打',
+'搥胸頓足' => '搥胸顿足',
+'撰著' => '撰著',
+'效果顯著' => '效果显著',
+'文徵明' => '文徵明',
+'觔斗' => '斤斗',
+'新著' => '新著',
+'於世成' => '於世成',
+'於之瑩' => '於之莹',
+'於之莹' => '於之莹',
+'於乎' => '於乎',
+'於乙于同' => '於乙于同',
+'於乙宇同' => '於乙宇同',
+'於于同' => '於于同',
+'於哲' => '於哲',
+'於夫罗' => '於夫罗',
+'於夫羅' => '於夫罗',
+'於姓' => '於姓',
+'於宇同' => '於宇同',
+'於崇文' => '於崇文',
+'於志賀' => '於志贺',
+'於志贺' => '於志贺',
+'於戲' => '於戏',
+'於梨华' => '於梨华',
+'於梨華' => '於梨华',
+'於氏' => '於氏',
+'於潜' => '於潜',
+'於潛縣' => '於潜县',
+'於祥玉' => '於祥玉',
+'於菟' => '於菟',
+'於賢德' => '於贤德',
+'於除鞬' => '於除鞬',
+'施讎' => '施雠',
+'旋乾轉坤' => '旋乾转坤',
+'旋乾转坤' => '旋乾转坤',
+'無言不讎' => '无言不雠',
+'曠若發矇' => '旷若发矇',
+'崑崙' => '昆仑',
+'崑劇' => '昆剧',
+'崑山' => '昆山',
+'崑曲' => '昆曲',
+'崑腔' => '昆腔',
+'崑蘇' => '昆苏',
+'崑調' => '昆调',
+'易·乾' => '易·乾',
+'易經·乾' => '易经·乾',
+'易经·乾' => '易经·乾',
+'易經乾' => '易经乾',
+'易经乾' => '易经乾',
+'昭著' => '昭著',
+'顯著' => '显著',
+'顯著地' => '显著地',
+'顯著地位' => '显著地位',
+'顯著性' => '显著性',
+'顯著成績' => '显著成绩',
+'顯著效果' => '显著效果',
+'顯著特點' => '显著特点',
+'晉陞' => '晋升',
+'暗闇' => '暗闇',
+'麴黴' => '曲霉',
+'曾运乾' => '曾运乾',
+'曾運乾' => '曾运乾',
+'月陞' => '月升',
+'朝乾夕惕' => '朝乾夕惕',
+'朱有燉' => '朱有燉',
+'朱淛' => '朱淛',
+'硃砂' => '朱砂',
+'硃紅' => '朱红',
+'硃色' => '朱色',
+'朴於宇同' => '朴於宇同',
+'李乾德' => '李乾德',
+'李乾順' => '李乾顺',
+'李乾顺' => '李乾顺',
+'李澤鉅' => '李泽钜',
+'李祕' => '李祕',
+'李譔' => '李譔',
+'柳詒徵' => '柳诒徵',
+'柳诒徵' => '柳诒徵',
+'校讎' => '校雠',
+'楈枒' => '楈枒',
+'樊於期' => '樊於期',
+'殘瀋' => '残渖',
+'慇勤' => '殷勤',
+'慇懃' => '殷勤',
+'比較顯著' => '比较显著',
+'毫釐' => '毫厘',
+'氆氌' => '氆氌',
+'沈沒' => '沉没',
+'沈澱' => '沉淀',
+'沈積' => '沉积',
+'沈船' => '沉船',
+'沈重' => '沉重',
+'沈默' => '沉默',
+'氾濫' => '泛滥',
+'洗鍊' => '洗练',
+'瀋液' => '渖液',
+'薰習' => '熏习',
+'薰心' => '熏心',
+'薰沐' => '熏沐',
+'薰陶' => '熏陶',
+'薰香' => '熏香',
+'爨翫' => '爨翫',
+'獨鍾' => '独钟',
+'王道乾' => '王道乾',
+'王餘魚' => '王馀鱼',
+'甚夥' => '甚夥',
+'男为乾' => '男为乾',
+'男為乾' => '男为乾',
+'男性为乾' => '男性为乾',
+'男性為乾' => '男性为乾',
+'療效顯著' => '疗效显著',
+'白瀋' => '白渖',
+'皁保' => '皁保',
+'目劄' => '目劄',
+'直昇' => '直升',
+'睹微知著' => '睹微知著',
+'瞭台' => '瞭台',
+'瞭臺' => '瞭台',
+'瞭望' => '瞭望',
+'矇眬' => '矇眬',
+'矇矓' => '矇眬',
+'石碁' => '石碁',
+'石碁鎮' => '石碁镇',
+'碩託' => '硕讬',
+'鹼菜' => '硷菜',
+'碁圣' => '碁圣',
+'碁聖' => '碁圣',
+'碁所' => '碁所',
+'祕宜' => '祕宜',
+'穀旦' => '穀旦',
+'穀梁' => '穀梁',
+'穀水' => '穀水',
+'穀阳' => '穀阳',
+'穀陽' => '穀阳',
+'穿著者' => '穿着者',
+'竹昇' => '竹升',
+'答覆' => '答复',
+'米泽瑠美' => '米泽瑠美',
+'米瀋' => '米渖',
+'餬口' => '糊口',
+'繙㠾' => '繙㠾',
+'遶境' => '绕境',
+'線國安' => '缐国安',
+'線姓' => '缐姓',
+'編著' => '编著',
+'老么' => '老幺',
+'肉乾乾' => '肉干干',
+'肘手鍊足' => '肘手链足',
+'甦醒' => '苏醒',
+'苧烯' => '苧烯',
+'薴烯' => '苧烯',
+'蘋果' => '苹果',
+'荠苧' => '荠苧',
+'榮陞' => '荣升',
+'萧乾' => '萧乾',
+'蕭乾' => '萧乾',
+'著書' => '著书',
+'著書立說' => '著书立说',
+'著作' => '著作',
+'著名' => '著名',
+'著錄' => '著录',
+'著錄規則' => '著录规则',
+'著文' => '著文',
+'著有' => '著有',
+'著稱' => '著称',
+'著者' => '著者',
+'著身' => '著身',
+'著述' => '著述',
+'蔡孝乾' => '蔡孝乾',
+'蔡絛' => '蔡絛',
+'行餘' => '行馀',
+'覆蓋' => '覆盖',
+'見微知著' => '见微知著',
+'見著' => '见著',
+'視微知著' => '视微知著',
+'言幾析理' => '言幾析理',
+'諲譔' => '諲譔',
+'譩譆' => '譩譆',
+'託庸' => '讬庸',
+'託恩多' => '讬恩多',
+'託麻' => '讬麻',
+'論著' => '论著',
+'譯著' => '译著',
+'謝肇淛' => '谢肇淛',
+'象乾' => '象乾',
+'躊躇滿志' => '踌躇滿志',
+'較著' => '较著',
+'近角聪信' => '近角聪信',
+'这么' => '这么',
+'造麴' => '造曲',
+'遺著' => '遗著',
+'那么' => '那么',
+'那麽' => '那麽',
+'郭子乾' => '郭子乾',
+'酒麴' => '酒曲',
+'醉瀋' => '醉渖',
+'醯壶' => '醯壶',
+'醯壺' => '醯壶',
+'醯酱' => '醯酱',
+'醯醬' => '醯酱',
+'醯醋' => '醯醋',
+'醯醢' => '醯醢',
+'醯雞' => '醯鸡',
+'醯鸡' => '醯鸡',
+'重覆' => '重复',
+'金鍊' => '金链',
+'鍾情' => '钟情',
+'鍾意' => '钟意',
+'鍾靈' => '钟灵',
+'鍾愛' => '钟爱',
+'鐵鍊' => '铁链',
+'鉸鍊' => '铰链',
+'銀硃' => '银朱',
+'銀鍊' => '银链',
+'鍊子' => '链子',
+'鍊條' => '链条',
+'鍊表' => '链表',
+'鍊鎖' => '链锁',
+'鍊錘' => '链锤',
+'鎖鍊' => '锁链',
+'闇公' => '闇公',
+'閻懷禮' => '闫怀礼',
+'阳为乾' => '阳为乾',
+'陽為乾' => '阳为乾',
+'阿部正瞭' => '阿部正瞭',
+'陆徵祥' => '陆徵祥',
+'陸徵祥' => '陆徵祥',
+'陈乾生' => '陈乾生',
+'陳乾生' => '陈乾生',
+'陈元扞' => '陈元扞',
+'陳元扞' => '陈元扞',
+'陈公乾生' => '陈公乾生',
+'陳公乾生' => '陈公乾生',
+'陈遇乾' => '陈遇乾',
+'陳遇乾' => '陈遇乾',
+'陳堵' => '陳堵',
+'陳禕' => '陳禕',
+'雍乾' => '雍乾',
+'讎夷' => '雠夷',
+'讎定' => '雠定',
+'讎校' => '雠校',
+'讎正' => '雠正',
+'讎問' => '雠问',
+'項鍊' => '项链',
+'飛昇' => '飞升',
+'飭令' => '飭令',
+'飽託' => '饱讬',
+'餘慶' => '馀庆',
+'餘瀋' => '馀渖',
+'馬鞌' => '马鞍',
+'高昇' => '高升',
+'高陞' => '高升',
+'鬱姓' => '鬱姓',
+'鬱氏' => '鬱氏',
+'魏徵' => '魏徵',
+'魚乾乾' => '鱼干干',
+'麽氏' => '麽氏',
+'麼麼' => '麽麽',
+'麽麽' => '麽麽',
+'黃麴毒素' => '黄曲毒素',
+'黃潤乾' => '黄润乾',
+'黄润乾' => '黄润乾',
+'龍鍾' => '龙钟',
+',陞' => ',升',
+);
+
+public static $zh2TW = array(
+'0字节' => '0位元組',
+'0杆' => '0桿',
+'1字节' => '1位元組',
+'1杆' => '1桿',
+'2字节' => '2位元組',
+'2杆' => '2桿',
+'3字节' => '3位元組',
+'3杆' => '3桿',
+'4字节' => '4位元組',
+'4杆' => '4桿',
+'5字节' => '5位元組',
+'5杆' => '5桿',
+'6字节' => '6位元組',
+'6杆' => '6桿',
+'7字节' => '7位元組',
+'7杆' => '7桿',
+'8字节' => '8位元組',
+'8杆' => '8桿',
+'9字节' => '9位元組',
+'9杆' => '9桿',
+'甲型肝炎' => 'A型肝炎',
+'甲肝' => 'A肝',
+'乙型肝炎' => 'B型肝炎',
+'乙肝' => 'B肝',
+'丙型肝炎' => 'C型肝炎',
+'丙肝' => 'C肝',
+'IP地址' => 'IP位址',
+'乔戈里峰' => 'K2',
+'·威尔士' => '·威爾士',
+'·威爾士' => '·威爾士',
+'一杆' => '一桿',
+'七杆' => '七桿',
+'三杆' => '三桿',
+'三极管' => '三極體',
+'三極管' => '三極體',
+'达累斯萨拉姆' => '三蘭港',
+'上落客' => '上下客',
+'落車' => '下車',
+'不來梅' => '不萊梅',
+'不来梅' => '不萊梅',
+'以太网' => '乙太網',
+'九杆' => '九桿',
+'了結他' => '了結他',
+'二手烟' => '二手菸',
+'二手煙' => '二手菸',
+'二杆' => '二桿',
+'二极管' => '二極體',
+'二極管' => '二極體',
+'交互设计' => '互動設計',
+'五杆' => '五桿',
+'阿塞拜疆' => '亞塞拜然',
+'阿斯旺' => '亞斯文',
+'人工智能' => '人工智慧',
+'人机交互' => '人機互動',
+'行人路' => '人行道',
+'石勒苏益格' => '什勒斯維希',
+'石勒蘇益格' => '什勒斯維希',
+'界面' => '介面',
+'伊利诺伊州' => '伊利諾州',
+'伊斯坦布尔' => '伊斯坦堡',
+'伊斯坦布爾' => '伊斯坦堡',
+'伊斯兰堡' => '伊斯蘭瑪巴德',
+'伊斯蘭堡' => '伊斯蘭瑪巴德',
+'埃博拉' => '伊波拉',
+'伊丽莎白' => '伊莉莎白',
+'俯卧撑' => '伏地挺身',
+'掌上壓' => '伏地挺身',
+'伯明翰' => '伯明罕',
+'服务器' => '伺服器',
+'佛罗伦萨' => '佛羅倫斯',
+'操作系统' => '作業系統',
+'系数' => '係數',
+'避孕套' => '保險套',
+'傅里叶' => '傅立葉',
+'光盘' => '光碟',
+'光驱' => '光碟機',
+'开普勒' => '克卜勒',
+'開普勒' => '克卜勒',
+'克罗地亚' => '克羅埃西亞',
+'克羅地亞' => '克羅埃西亞',
+'克里斯托弗' => '克里斯多福',
+'万维网' => '全球資訊網',
+'八杆' => '八桿',
+'公共交通' => '公共運輸',
+'六杆' => '六桿',
+'凯瑟琳' => '凱薩琳',
+'嘉芙蓮' => '凱薩琳',
+'划着独木舟' => '划著獨木舟',
+'划着竹筏' => '划著竹筏',
+'划着船' => '划著船',
+'打印' => '列印',
+'列支敦士登' => '列支敦斯登',
+'前波美拉尼亚' => '前波莫瑞',
+'前波美拉尼亞' => '前波莫瑞',
+'加蓬' => '加彭',
+'加沙地带' => '加薩走廊',
+'加沙地帶' => '加薩走廊',
+'包豪斯' => '包浩斯',
+'北朝鲜' => '北韓',
+'局域网' => '區域網',
+'局域网络' => '區域網路',
+'十杆' => '十桿',
+'特立尼达和托巴哥' => '千里達托貝哥',
+'特立尼達和多巴哥' => '千里達托貝哥',
+'南朝鲜' => '南韓',
+'卡斯特罗' => '卡斯楚',
+'卡塔尔' => '卡達',
+'卡塔爾' => '卡達',
+'铆足' => '卯足',
+'打印机' => '印表機',
+'打印機' => '印表機',
+'厄利垂亚' => '厄利垂亞',
+'厄立特里亚' => '厄利垂亞',
+'厄立特里亞' => '厄利垂亞',
+'厄瓜多' => '厄瓜多',
+'厄瓜多尔' => '厄瓜多',
+'厄瓜多爾' => '厄瓜多',
+'源代码' => '原始碼',
+'圆珠笔' => '原子筆',
+'反烟' => '反菸',
+'反煙' => '反菸',
+'可卡因' => '古柯鹼',
+'便携式' => '可攜式',
+'叱咤' => '叱吒',
+'叱咤9' => '叱咤9',
+'叱咤M' => '叱咤M',
+'叱咤叱' => '叱咤叱',
+'叱咤咤' => '叱咤咤',
+'叱咤樂壇' => '叱咤樂壇',
+'斯坦福大学' => '史丹福大學',
+'斯皮尔伯格' => '史匹柏',
+'斯特劳斯' => '史特勞斯',
+'斯威士兰' => '史瓦濟蘭',
+'斯威士蘭' => '史瓦濟蘭',
+'斯蒂芬' => '史蒂芬',
+'斯大林' => '史達林',
+'結他' => '吉他',
+'乞力馬札羅' => '吉力馬札羅',
+'乞力马扎罗' => '吉力馬札羅',
+'吉布堤' => '吉布地',
+'吉布提' => '吉布地',
+'基里巴斯' => '吉里巴斯',
+'图瓦卢' => '吐瓦魯',
+'圖瓦盧' => '吐瓦魯',
+'吸烟' => '吸菸',
+'吸煙' => '吸菸',
+'吕宋烟' => '呂宋菸',
+'呂宋煙' => '呂宋菸',
+'格丁根' => '哥廷根',
+'哥特式' => '哥德式',
+'哥斯达黎加' => '哥斯大黎加',
+'哥斯達黎加' => '哥斯大黎加',
+'卡拉奇' => '喀拉蚩',
+'乔治·奥威尔' => '喬治·歐威爾',
+'佐治亚' => '喬治亞',
+'佐治亞' => '喬治亞',
+'格魯吉亞' => '喬治亞',
+'格鲁吉亚' => '喬治亞',
+'单反相机' => '單眼相機',
+'單鏡反光機' => '單眼相機',
+'嘯咤' => '嘯吒',
+'四杆' => '四桿',
+'图卢兹' => '土魯斯',
+'圖盧茲' => '土魯斯',
+'戛纳' => '坎城',
+'堪培拉' => '坎培拉',
+'坦桑尼亚' => '坦尚尼亞',
+'坦桑尼亞' => '坦尚尼亞',
+'端口' => '埠',
+'首席执行官' => '執行長',
+'报道' => '報導',
+'塑料袋' => '塑膠袋',
+'塞舌尔' => '塞席爾',
+'塞舌爾' => '塞席爾',
+'萨拉热窝' => '塞拉耶佛',
+'薩拉熱窩' => '塞拉耶佛',
+'塞尔维亚和黑山' => '塞爾維亞與蒙特內哥羅',
+'塞爾維亞和黑山' => '塞爾維亞與蒙特內哥羅',
+'塞爾維亞與蒙特內哥羅' => '塞爾維亞與蒙特內哥羅',
+'塞维利亚' => '塞維亞',
+'西維爾' => '塞維亞',
+'塞黑' => '塞蒙',
+'共和联邦' => '大英國協',
+'英联邦' => '大英國協',
+'英聯邦' => '大英國協',
+'太空飛行員' => '太空人',
+'宇航员' => '太空人',
+'穿梭機' => '太空梭',
+'航天飞机' => '太空梭',
+'宇航服' => '太空衣',
+'航天器' => '太空飛行器',
+'尼日利亚' => '奈及利亞',
+'尼日利亞' => '奈及利亞',
+'忌廉' => '奶油',
+'荷里活' => '好萊塢',
+'威廉姆斯' => '威廉士',
+'威斯特法伦' => '威斯伐倫',
+'威斯特法倫' => '威斯伐倫',
+'威士顿康星' => '威斯康辛',
+'威尔士' => '威爾斯',
+'威爾士' => '威爾斯',
+'字库' => '字型檔',
+'存盘' => '存檔',
+'孟德爾遜' => '孟德爾頌',
+'门德尔松' => '孟德爾頌',
+'安哈尔特' => '安哈特',
+'安哈爾特' => '安哈特',
+'安提瓜和巴布达' => '安地卡及巴布達',
+'安提瓜和巴布達' => '安地卡及巴布達',
+'洪都拉斯' => '宏都拉斯',
+'密歇根' => '密西根',
+'宽带' => '寬頻',
+'老挝人民民主共和国' => '寮人民民主共和國',
+'老撾人民民主共和國' => '寮人民民主共和國',
+'老挝' => '寮國',
+'老撾' => '寮國',
+'老挝语' => '寮語',
+'老撾語' => '寮語',
+'波里活' => '寶萊塢',
+'对着干' => '對著幹',
+'高峰时段' => '尖峰時段',
+'高峰时间' => '尖峰時間',
+'贊比亞' => '尚比亞',
+'赞比亚' => '尚比亞',
+'尼克松' => '尼克森',
+'尼日尔' => '尼日',
+'尼日爾' => '尼日',
+'雅马哈' => '山葉',
+'机床' => '工具機',
+'機床' => '工具機',
+'珍寶客機' => '巨無霸客機',
+'发达国家' => '已開發國家',
+'巴塞罗那' => '巴塞隆納',
+'巴塞隆拿' => '巴塞隆納',
+'巴布亚新几内亚' => '巴布亞紐幾內亞',
+'巴布亞新畿內亞' => '巴布亞紐幾內亞',
+'巴士拉' => '巴斯拉',
+'巴巴多斯' => '巴貝多',
+'佈' => '布',
+'布基納法索' => '布吉納法索',
+'布基纳法索' => '布吉納法索',
+'布什' => '布希',
+'布殊' => '布希',
+'勃兰登堡' => '布蘭登堡',
+'勃蘭登堡' => '布蘭登堡',
+'布里斯托尔' => '布里斯托',
+'布隆方丹' => '布隆泉',
+'希拉莉' => '希拉蕊',
+'希拉里' => '希拉蕊',
+'希特拉' => '希特勒',
+'巴尔米拉环礁' => '帕邁拉環礁',
+'帕劳' => '帛琉',
+'希拉克' => '席哈克',
+'账' => '帳',
+'干着急' => '干著急',
+'干着' => '幹著',
+'畿內亞' => '幾內亞',
+'几内亚比绍' => '幾內亞比索',
+'幾內亞比紹' => '幾內亞比索',
+'比利牛斯' => '庇里牛斯',
+'库尔德人' => '庫德人',
+'库尔德族' => '庫德族',
+'康涅狄格' => '康乃狄克',
+'约翰斯顿岛' => '強斯頓環礁',
+'汇编' => '彙編',
+'形而上学' => '形上學',
+'形而上學' => '形上學',
+'得克萨斯' => '德克薩斯',
+'得克薩斯' => '德克薩斯',
+'德累斯頓' => '德勒斯登',
+'德累斯顿' => '德勒斯登',
+'德里达' => '德希達',
+'特拉华' => '德拉瓦',
+'特拉華' => '德拉瓦',
+'快闪存储器' => '快閃記憶體',
+'闪存' => '快閃記憶體',
+'想象' => '想像',
+'愛德文' => '愛德溫',
+'艾滋' => '愛滋',
+'艾奧瓦' => '愛荷華',
+'爱德华州' => '愛達荷州',
+'应用程序' => '應用程式',
+'戈尔巴乔夫' => '戈巴契夫',
+'戈爾巴喬夫' => '戈巴契夫',
+'戒烟' => '戒菸',
+'戒煙' => '戒菸',
+'戴克里先' => '戴克里先',
+'打印度' => '打印度',
+'抽烟' => '抽菸',
+'抽煙' => '抽菸',
+'拉普兰' => '拉布蘭',
+'拒烟' => '拒菸',
+'拒煙' => '拒菸',
+'卷烟' => '捲菸',
+'捲煙' => '捲菸',
+'積架' => '捷豹',
+'控件' => '控制項',
+'推杆' => '推桿',
+'第比利斯' => '提比里西',
+'挥杆' => '揮桿',
+'揮杆' => '揮桿',
+'搜索引擎' => '搜尋引擎',
+'摩根士丹利' => '摩根史坦利',
+'台球' => '撞球',
+'攻打' => '攻打',
+'数字化' => '數位化',
+'數碼化' => '數位化',
+'数字技术' => '數位技術',
+'數碼技術' => '數位技術',
+'数字照相机' => '數位照相機',
+'数码照相机' => '數位照相機',
+'數碼照相機' => '數位照相機',
+'数码相机' => '數位相機',
+'數碼相機' => '數位相機',
+'数字信号' => '數位訊號',
+'數碼訊號' => '數位訊號',
+'数字电视' => '數位電視',
+'數碼電視' => '數位電視',
+'調制解調器' => '數據機',
+'调制解调器' => '數據機',
+'斯洛文尼亚' => '斯洛維尼亞',
+'斯洛文尼亞' => '斯洛維尼亞',
+'新罕布什尔' => '新罕布夏',
+'施罗德' => '施洛德',
+'旱烟' => '旱菸',
+'旱煙' => '旱菸',
+'普利策' => '普利茲',
+'芯片' => '晶片',
+'智能卡' => '智慧卡',
+'智能手机' => '智慧型手機',
+'智能手機' => '智慧型手機',
+'智能电话' => '智慧型電話',
+'智能電話' => '智慧型電話',
+'知識產權' => '智慧財產權',
+'知识产权' => '智慧財產權',
+'萌島' => '曼島',
+'马恩岛' => '曼島',
+'木杆' => '木桿',
+'列奥纳多' => '李奧納多',
+'杜塞尔多夫' => '杜塞道夫',
+'杜塞爾多夫' => '杜塞道夫',
+'迪拜' => '杜拜',
+'东盟' => '東協',
+'亚细安' => '東協',
+'東盟' => '東協',
+'东南亚国家联盟' => '東南亞國家協會',
+'東南亞國家聯盟' => '東南亞國家協會',
+'柏林墙' => '柏林圍牆',
+'柏林牆' => '柏林圍牆',
+'乍得' => '查德',
+'查韦斯' => '查維茲',
+'克林頓' => '柯林頓',
+'克林顿' => '柯林頓',
+'戴卓爾' => '柴契爾',
+'撒切尔' => '柴契爾',
+'格林納達' => '格瑞那達',
+'格林纳达' => '格瑞那達',
+'桃金娘' => '桃金孃',
+'台式电脑' => '桌上型電腦',
+'乒乓' => '桌球',
+'乒乓球' => '桌球',
+'杆弟' => '桿弟',
+'杆身' => '桿身',
+'杆头' => '桿頭',
+'杆頭' => '桿頭',
+'梅尔·吉布森' => '梅爾·吉勃遜',
+'梵高' => '梵谷',
+'桑巴舞' => '森巴舞',
+'榴莲' => '榴槤',
+'榴蓮' => '榴槤',
+'枪支' => '槍枝',
+'标准杆' => '標準桿',
+'標準杆' => '標準桿',
+'毛里求斯' => '模里西斯',
+'毛里裘斯' => '模里西斯',
+'机器人' => '機器人',
+'機械人' => '機器人',
+'概率' => '機率',
+'電單車' => '機車',
+'枱' => '檯',
+'字段' => '欄位',
+'奥巴马' => '歐巴馬',
+'奧巴馬' => '歐巴馬',
+'正在叱咤' => '正在叱咤',
+'文莱' => '汶萊',
+'沙律' => '沙拉',
+'沙地阿拉伯' => '沙烏地阿拉伯',
+'沙特阿拉伯' => '沙烏地阿拉伯',
+'法属圭亚那' => '法屬蓋亞那',
+'波斯尼亚' => '波士尼亞',
+'波斯尼亞' => '波士尼亞',
+'波斯尼亚和黑塞哥维那' => '波士尼亞赫塞哥維納',
+'波斯尼亞黑塞哥維那' => '波士尼亞赫塞哥維納',
+'博茨瓦納' => '波札那',
+'博茨瓦纳' => '波札那',
+'波黑' => '波赫',
+'洋烟' => '洋菸',
+'洋煙' => '洋菸',
+'帕特里克' => '派屈克',
+'海洛英' => '海洛因',
+'侯賽因' => '海珊',
+'侯赛因' => '海珊',
+'鼠标' => '滑鼠',
+'汉诺威' => '漢諾瓦',
+'漢诺威' => '漢諾瓦',
+'烤烟' => '烤菸',
+'烤煙' => '烤菸',
+'无烟日' => '無菸日',
+'無煙日' => '無菸日',
+'无烟环境' => '無菸環境',
+'無煙環境' => '無菸環境',
+'烟熏' => '煙燻',
+'首席运营官' => '營運長',
+'熏烤' => '燻烤',
+'熏肉' => '燻肉',
+'熏黑' => '燻黑',
+'版权信息' => '版權資訊',
+'疯牛症' => '狂牛症',
+'鐵托' => '狄托',
+'铁托' => '狄托',
+'塞拉利昂' => '獅子山',
+'独联体' => '獨立國協',
+'獨聯體' => '獨立國協',
+'独立国家联合体' => '獨立國家國協',
+'獨立國家聯合體' => '獨立國家國協',
+'波利尼西亚' => '玻里尼西亞',
+'波利尼西亞' => '玻里尼西亞',
+'本傑明' => '班傑明',
+'本杰明' => '班傑明',
+'球杆' => '球桿',
+'理查德' => '理察',
+'卢塞恩' => '琉森',
+'危地馬拉' => '瓜地馬拉',
+'危地马拉' => '瓜地馬拉',
+'巴伦西亚' => '瓦倫西亞',
+'華倫西亞' => '瓦倫西亞',
+'冈比亚' => '甘比亞',
+'岡比亞' => '甘比亞',
+'肯尼迪' => '甘迺迪',
+'留尼汪' => '留尼旺',
+'毕加索' => '畢卡索',
+'迭代' => '疊代',
+'徵狀' => '症狀',
+'勃朗宁' => '白朗寧',
+'百慕大' => '百慕達',
+'卢旺达' => '盧安達',
+'盧旺達' => '盧安達',
+'睾' => '睪',
+'知识产权局' => '知識產權局',
+'知識產權局' => '知識產權署',
+'知識產權署' => '知識產權署',
+'知识产权署' => '知識產權署',
+'硅' => '矽',
+'硅藻' => '硅藻',
+'硬盘' => '硬碟',
+'硬件' => '硬體',
+'盘片' => '碟片',
+'磁盘' => '磁碟',
+'磁道' => '磁軌',
+'禁烟' => '禁菸',
+'禁煙' => '禁菸',
+'福尔马林' => '福馬林',
+'福爾馬林' => '福馬林',
+'私烟' => '私菸',
+'私煙' => '私菸',
+'程序员' => '程式設計師',
+'编程语言' => '程式語言',
+'空气质量' => '空氣品質',
+'空氣質素' => '空氣品質',
+'突尼斯' => '突尼西亞',
+'绑紧跳' => '笨豬跳',
+'蹦极跳' => '笨豬跳',
+'短信' => '簡訊',
+'纽黑文' => '紐哈芬',
+'新奥尔良' => '紐奧良',
+'新奧爾良' => '紐奧良',
+'新几内亚' => '紐幾內亞',
+'新西兰' => '紐西蘭',
+'新西蘭' => '紐西蘭',
+'紙煙' => '紙菸',
+'纸烟' => '紙菸',
+'索尔仁尼琴' => '索忍尼辛',
+'索贊尼辛' => '索忍尼辛',
+'所罗门群岛' => '索羅門群島',
+'所羅門群島' => '索羅門群島',
+'索馬里' => '索馬利亞',
+'索马里' => '索馬利亞',
+'索馬里蘭' => '索馬利蘭',
+'索马里兰' => '索馬利蘭',
+'維爾京群島' => '維京群島',
+'维尔京群岛' => '維京群島',
+'弗吉尼亚' => '維吉尼亞',
+'佛得角' => '維德角',
+'维特根斯坦' => '維根斯坦',
+'網絡遊戲' => '網路遊戲',
+'网络游戏' => '網路遊戲',
+'互联网' => '網際網路',
+'互联网络' => '網際網路',
+'互聯網' => '網際網路',
+'互聯網絡' => '網際網路',
+'因特网' => '網際網路',
+'系着' => '繫著',
+'卢瓦尔' => '羅亞爾',
+'盧瓦爾' => '羅亞爾',
+'卢浮宫' => '羅浮宮',
+'樂行童軍' => '羅浮童軍',
+'意大利' => '義大利',
+'昂山素姬' => '翁山蘇姬',
+'昂山素季' => '翁山蘇姬',
+'圣基茨和尼维斯' => '聖克里斯多福及尼維斯',
+'聖吉斯納域斯' => '聖克里斯多福及尼維斯',
+'圣文森特和格林纳丁斯' => '聖文森及格瑞那丁',
+'聖文森特和格林納丁斯' => '聖文森及格瑞那丁',
+'圣赫勒拿' => '聖赫倫那',
+'圣卢西亚' => '聖露西亞',
+'聖盧西亞' => '聖露西亞',
+'圣马力诺' => '聖馬利諾',
+'聖馬力諾' => '聖馬利諾',
+'肯尼亚' => '肯亞',
+'氨基酸' => '胺基酸',
+'自由泳' => '自由式',
+'三藩市' => '舊金山',
+'艾森豪威尔' => '艾森豪',
+'埃菲尔' => '艾菲爾',
+'阿里埃勒·沙龍' => '艾里爾·夏隆',
+'阿里埃勒·沙龙' => '艾里爾·夏隆',
+'帕塔亚' => '芭達亞',
+'黎克特制' => '芮氏',
+'里氏0' => '芮氏0',
+'里氏1' => '芮氏1',
+'里氏2' => '芮氏2',
+'里氏3' => '芮氏3',
+'里氏4' => '芮氏4',
+'里氏5' => '芮氏5',
+'里氏6' => '芮氏6',
+'里氏7' => '芮氏7',
+'里氏8' => '芮氏8',
+'里氏9' => '芮氏9',
+'里氏地震规模' => '芮氏地震規模',
+'里氏规模' => '芮氏規模',
+'里氏震级' => '芮氏規模',
+'当且仅当' => '若且唯若',
+'味美思' => '苦艾酒',
+'毛里塔尼亚' => '茅利塔尼亞',
+'毛里塔尼亞' => '茅利塔尼亞',
+'霍尔木兹' => '荷姆茲',
+'霍爾木茲' => '荷姆茲',
+'荷李活道' => '荷李活道',
+'莫桑比克' => '莫三比克',
+'瓦文萨' => '華勒沙',
+'華里沙' => '華勒沙',
+'瓦格纳' => '華格納',
+'烟具' => '菸具',
+'煙具' => '菸具',
+'烟品' => '菸品',
+'煙品' => '菸品',
+'烟嘴' => '菸嘴',
+'煙嘴' => '菸嘴',
+'烟卷' => '菸捲',
+'煙捲' => '菸捲',
+'烟斗' => '菸斗',
+'煙斗' => '菸斗',
+'烟民' => '菸民',
+'煙民' => '菸民',
+'烟灰' => '菸灰',
+'煙灰' => '菸灰',
+'烟瘾' => '菸癮',
+'煙癮' => '菸癮',
+'烟丝' => '菸絲',
+'煙絲' => '菸絲',
+'烟草' => '菸草',
+'煙草' => '菸草',
+'烟叶' => '菸葉',
+'煙葉' => '菸葉',
+'烟蒂' => '菸蒂',
+'煙蒂' => '菸蒂',
+'烟袋' => '菸袋',
+'煙袋' => '菸袋',
+'烟农' => '菸農',
+'煙農' => '菸農',
+'烟酒' => '菸酒',
+'煙酒' => '菸酒',
+'烟头' => '菸頭',
+'煙頭' => '菸頭',
+'烟鬼' => '菸鬼',
+'煙鬼' => '菸鬼',
+'烟碱' => '菸鹼',
+'煙鹼' => '菸鹼',
+'万历朝鲜战争' => '萬曆朝鮮戰爭',
+'瓦努阿图' => '萬那杜',
+'瓦努阿圖' => '萬那杜',
+'叶利钦' => '葉爾欽',
+'葉利欽' => '葉爾欽',
+'埃里温' => '葉里溫',
+'埃里溫' => '葉里溫',
+'也門' => '葉門',
+'也门' => '葉門',
+'着' => '著',
+'着眼于' => '著眼於',
+'科摩罗' => '葛摩',
+'科摩羅' => '葛摩',
+'格林美獎' => '葛萊美獎',
+'格莱美奖' => '葛萊美獎',
+'黑山共和国' => '蒙特內哥羅共和國',
+'黑山共和國' => '蒙特內哥羅共和國',
+'滿地可' => '蒙特婁',
+'蒙特利尔' => '蒙特婁',
+'蒙特利爾' => '蒙特婁',
+'普密蓬' => '蒲美蓬',
+'布隆迪' => '蒲隆地',
+'圭亚那' => '蓋亞那',
+'肖斯塔科维奇' => '蕭士塔高維奇',
+'蕭士達高維契' => '蕭士塔高維奇',
+'肖邦' => '蕭邦',
+'薛定谔' => '薛丁格',
+'扎伊尔' => '薩伊',
+'扎伊爾' => '薩伊',
+'素檀' => '蘇丹',
+'苏里南' => '蘇利南',
+'浮罗交怡' => '蘭卡威',
+'浮羅交怡' => '蘭卡威',
+'劳拉' => '蘿拉',
+'荧光' => '螢光',
+'荧屏' => '螢屏',
+'屏幕' => '螢幕',
+'行人路权' => '行人路權',
+'行人路權' => '行人路權',
+'流動網絡' => '行動網路',
+'移动网络' => '行動網路',
+'流動電話' => '行動電話',
+'移动电话' => '行動電話',
+'冲着' => '衝著',
+'埃塞俄比亚' => '衣索比亞',
+'埃塞俄比亞' => '衣索比亞',
+'克隆人' => '複製人',
+'国际象棋' => '西洋棋',
+'國際象棋' => '西洋棋',
+'赫梯' => '西臺',
+'分辨率' => '解析度',
+'解像度' => '解析度',
+'译码' => '解碼',
+'出租车' => '計程車',
+'约翰逊' => '詹森',
+'诺曼底' => '諾曼第',
+'瑙魯' => '諾魯',
+'瑙鲁' => '諾魯',
+'科特迪瓦' => '象牙海岸',
+'碧咸' => '貝克漢',
+'貝爾格萊德' => '貝爾格勒',
+'贝尔格莱德' => '貝爾格勒',
+'伯利兹' => '貝里斯',
+'伯利茲' => '貝里斯',
+'首席财务官' => '財務長',
+'集装箱' => '貨櫃',
+'数据库' => '資料庫',
+'數據庫' => '資料庫',
+'信息时代' => '資訊時代',
+'信息论' => '資訊理論',
+'乔布斯' => '賈伯斯',
+'本·拉登' => '賓·拉登',
+'宾西法尼亚' => '賓夕法尼亞',
+'本拉登' => '賓拉登',
+'利比里亚' => '賴比瑞亞',
+'利比里亞' => '賴比瑞亞',
+'莱索托' => '賴索托',
+'萊索托' => '賴索托',
+'塞浦路斯' => '賽普勒斯',
+'赫丘勒·波洛' => '赫丘勒·白羅',
+'赫鲁晓夫' => '赫魯雪夫',
+'切尔诺贝利' => '車諾比',
+'软驱' => '軟碟機',
+'軟件' => '軟體',
+'软件' => '軟體',
+'津巴布韋' => '辛巴威',
+'津巴布韦' => '辛巴威',
+'径入' => '逕入',
+'径到' => '逕到',
+'径取' => '逕取',
+'径启' => '逕啟',
+'径寄' => '逕寄',
+'径庭' => '逕庭',
+'径往' => '逕往',
+'径自' => '逕自',
+'径行' => '逕行',
+'径迎' => '逕迎',
+'链接' => '連結',
+'連結他' => '連結他',
+'进制' => '進位',
+'达·芬奇' => '達·文西',
+'达芬奇' => '達文西',
+'溫納圖萬' => '那杜',
+'丘吉尔' => '邱吉爾',
+'多普勒' => '都卜勒',
+'酰' => '醯',
+'里士满' => '里奇蒙',
+'金沙萨' => '金夏沙',
+'金沙薩' => '金夏沙',
+'健力士世界紀錄' => '金氏世界紀錄',
+'健力士世界纪录' => '金氏世界紀錄',
+'吉尼斯世界纪录' => '金氏世界紀錄',
+'钚' => '鈽',
+'鈎' => '鉤',
+'钩' => '鉤',
+'锎' => '鉲',
+'锫' => '鉳',
+'镅' => '鋂',
+'镎' => '錼',
+'钫' => '鍅',
+'炼金' => '鍊金',
+'锻炼' => '鍛鍊',
+'锝' => '鎝',
+'鐵杆' => '鐵桿',
+'铁杆' => '鐵桿',
+'泰坦尼克号' => '鐵達尼號',
+'锿' => '鑀',
+'关系着' => '關係著',
+'写保护' => '防寫',
+'阿布扎比' => '阿布達比',
+'阿拉伯联合酋长国' => '阿拉伯聯合大公國',
+'阿拉伯聯合酋長國' => '阿拉伯聯合大公國',
+'亚拉巴马' => '阿拉巴馬',
+'阿联酋' => '阿聯',
+'阿聯酋' => '阿聯',
+'罗纳德·里根' => '隆納·雷根',
+'私隱' => '隱私',
+'耶加達' => '雅加達',
+'雅尔塔' => '雅爾達',
+'雅爾塔' => '雅爾達',
+'雅穆苏克雷' => '雅穆索戈',
+'雅穆蘇克雷' => '雅穆索戈',
+'悉尼' => '雪梨',
+'雪茄烟' => '雪茄菸',
+'雪茄煙' => '雪茄菸',
+'莱特湾' => '雷伊泰灣',
+'萊特灣' => '雷伊泰灣',
+'激光' => '雷射',
+'雷诺阿' => '雷諾瓦',
+'电子烟' => '電子菸',
+'電子煙' => '電子菸',
+'晶体管' => '電晶體',
+'晶體管' => '電晶體',
+'电杆' => '電桿',
+'电线杆' => '電線桿',
+'电脑程序' => '電腦程式',
+'计算机程序' => '電腦程式',
+'荷尔斯泰因' => '霍爾斯坦',
+'荷爾斯泰因' => '霍爾斯坦',
+'面包着' => '面包著',
+'朝鲜战争' => '韓戰',
+'声卡' => '音效卡',
+'缺省' => '預設',
+'导弹' => '飛彈',
+'糊口' => '餬口',
+'香烟' => '香菸',
+'香煙' => '香菸',
+'馬里共和國' => '馬利共和國',
+'马里共和国' => '馬利共和國',
+'马拉维' => '馬拉威',
+'馬斯特里赫特' => '馬斯垂克',
+'马斯特里赫特' => '馬斯垂克',
+'马耳他' => '馬爾他',
+'馬爾代夫' => '馬爾地夫',
+'马尔代夫' => '馬爾地夫',
+'馬利蘭' => '馬里蘭',
+'高清电视' => '高畫質電視',
+'斗着' => '鬥著',
+'魯賓斯·巴里切羅' => '魯本·巴瑞切羅',
+'咪高峰' => '麥克風',
+'迈克尔' => '麥可',
+'麦克尔' => '麥可',
+'迈凯轮' => '麥拿輪',
+'邁凱輪' => '麥拿輪',
+'马萨诸塞' => '麻薩諸塞',
+'戴安娜' => '黛安娜',
+'狄安娜' => '黛安娜',
+'点烟' => '點菸',
+'點煙' => '點菸',
+'霉素' => '黴素',
+);
+
+public static $zh2HK = array(
+'0字节' => '0位元組',
+'1字节' => '1位元組',
+'2字节' => '2位元組',
+'3字节' => '3位元組',
+'4字节' => '4位元組',
+'5字节' => '5位元組',
+'6字节' => '6位元組',
+'7字节' => '7位元組',
+'8字节' => '8位元組',
+'9字节' => '9位元組',
+'IP地址' => 'IP位址',
+'·威尔士' => '·威爾士',
+'·威爾士' => '·威爾士',
+'一地里' => '一地裏',
+'一年里' => '一年裏',
+'三十六著' => '三十六着',
+'三極體' => '三極管',
+'旧金山' => '三藩市',
+'舊金山' => '三藩市',
+'上台面' => '上枱面',
+'下著' => '下着',
+'下著作' => '下著作',
+'下著名' => '下著名',
+'下著有' => '下著有',
+'下著称' => '下著稱',
+'下著稱' => '下著稱',
+'下著者' => '下著者',
+'下著述' => '下著述',
+'下著录' => '下著錄',
+'下著錄' => '下著錄',
+'不占' => '不佔',
+'不萊梅' => '不來梅',
+'不著痕跡' => '不着痕跡',
+'不著邊際' => '不着邊際',
+'世纪里' => '世紀裏',
+'C型肝炎' => '丙型肝炎',
+'C肝' => '丙肝',
+'并发布' => '並發佈',
+'中文里' => '中文裏',
+'乘著' => '乘着',
+'乘著作' => '乘著作',
+'乘著名' => '乘著名',
+'乘著書' => '乘著書',
+'乘著称' => '乘著稱',
+'乘著稱' => '乘著稱',
+'乘著者' => '乘著者',
+'乘著述' => '乘著述',
+'乘著錄' => '乘著錄',
+'B型肝炎' => '乙型肝炎',
+'B肝' => '乙肝',
+'吉力馬札羅' => '乞力馬札羅',
+'葉門' => '也門',
+'事里' => '事裏',
+'二極體' => '二極管',
+'因特网' => '互聯網',
+'網際網路' => '互聯網',
+'井里' => '井裏',
+'亮著' => '亮着',
+'亮著作' => '亮著作',
+'亮著名' => '亮著名',
+'亮著書' => '亮著書',
+'亮著称' => '亮著稱',
+'亮著稱' => '亮著稱',
+'亮著者' => '亮著者',
+'亮著述' => '亮著述',
+'亮著錄' => '亮著錄',
+'人工智慧' => '人工智能',
+'人数里' => '人數裏',
+'仗著' => '仗着',
+'仗著作' => '仗著作',
+'仗著名' => '仗著名',
+'仗著書' => '仗著書',
+'仗著稱' => '仗著稱',
+'仗著者' => '仗著者',
+'仗著述' => '仗著述',
+'仗著錄' => '仗著錄',
+'代表著' => '代表着',
+'代表著作' => '代表著作',
+'代表著名' => '代表著名',
+'代表著書' => '代表著書',
+'代表著稱' => '代表著稱',
+'代表著者' => '代表著者',
+'代表著述' => '代表著述',
+'代表著錄' => '代表著錄',
+'伊斯蘭瑪巴德' => '伊斯蘭堡',
+'埃博拉' => '伊波拉',
+'伏著' => '伏着',
+'貝里斯' => '伯利茲',
+'伯明罕' => '伯明翰',
+'伴著' => '伴着',
+'伴著作' => '伴著作',
+'伴著名' => '伴著名',
+'伴著書' => '伴著書',
+'伴著稱' => '伴著稱',
+'伴著者' => '伴著者',
+'伴著述' => '伴著述',
+'伴著錄' => '伴著錄',
+'布下了' => '佈下了',
+'布下的' => '佈下的',
+'布光' => '佈光',
+'布告' => '佈告',
+'布局' => '佈局',
+'布展' => '佈展',
+'布控' => '佈控',
+'布于' => '佈於',
+'布於' => '佈於',
+'布施' => '佈施',
+'布景' => '佈景',
+'布满' => '佈滿',
+'布滿' => '佈滿',
+'布置' => '佈置',
+'布設' => '佈設',
+'布设' => '佈設',
+'布警' => '佈警',
+'布道' => '佈道',
+'布防' => '佈防',
+'布阵' => '佈陣',
+'布陣' => '佈陣',
+'布雷、' => '佈雷、',
+'布雷。' => '佈雷。',
+'布雷封鎖' => '佈雷封鎖',
+'布雷封锁' => '佈雷封鎖',
+'布雷的' => '佈雷的',
+'布雷艇' => '佈雷艇',
+'布雷舰' => '佈雷艦',
+'布雷艦' => '佈雷艦',
+'布雷速度' => '佈雷速度',
+'布雷,' => '佈雷,',
+'布雷;' => '佈雷;',
+'布点' => '佈點',
+'布點' => '佈點',
+'低著' => '低着',
+'低著作' => '低著作',
+'低著名' => '低著名',
+'低著書' => '低著書',
+'低著称' => '低著稱',
+'低著稱' => '低著稱',
+'低著者' => '低著者',
+'低著述' => '低著述',
+'低著錄' => '低著錄',
+'住著' => '住着',
+'住著作' => '住著作',
+'住著名' => '住著名',
+'住著書' => '住著書',
+'住著稱' => '住著稱',
+'住著者' => '住著者',
+'住著述' => '住著述',
+'住著錄' => '住著錄',
+'占0' => '佔0',
+'占1' => '佔1',
+'占2' => '佔2',
+'占3' => '佔3',
+'占4' => '佔4',
+'占5' => '佔5',
+'占6' => '佔6',
+'占7' => '佔7',
+'占8' => '佔8',
+'占9' => '佔9',
+'占A' => '佔A',
+'占B' => '佔B',
+'占C' => '佔C',
+'占D' => '佔D',
+'占E' => '佔E',
+'占F' => '佔F',
+'占G' => '佔G',
+'占H' => '佔H',
+'占I' => '佔I',
+'占J' => '佔J',
+'占K' => '佔K',
+'占L' => '佔L',
+'占M' => '佔M',
+'占N' => '佔N',
+'占O' => '佔O',
+'占P' => '佔P',
+'占Q' => '佔Q',
+'占R' => '佔R',
+'占S' => '佔S',
+'占T' => '佔T',
+'占U' => '佔U',
+'占V' => '佔V',
+'占W' => '佔W',
+'占X' => '佔X',
+'占Y' => '佔Y',
+'占Z' => '佔Z',
+'占〇' => '佔〇',
+'占一' => '佔一',
+'占七' => '佔七',
+'占三' => '佔三',
+'占上風' => '佔上風',
+'占上风' => '佔上風',
+'占下' => '佔下',
+'占下風' => '佔下風',
+'占下风' => '佔下風',
+'占不占' => '佔不佔',
+'占不足' => '佔不足',
+'占世界' => '佔世界',
+'占中' => '佔中',
+'占主' => '佔主',
+'占主要' => '佔主要',
+'占九' => '佔九',
+'占了' => '佔了',
+'占二' => '佔二',
+'占五' => '佔五',
+'占人便宜' => '佔人便宜',
+'占位' => '佔位',
+'占住' => '佔住',
+'占占' => '佔佔',
+'占便宜' => '佔便宜',
+'占俄' => '佔俄',
+'占个' => '佔個',
+'占個' => '佔個',
+'占个位' => '佔個位',
+'占個位' => '佔個位',
+'占亿' => '佔億',
+'占億' => '佔億',
+'占优' => '佔優',
+'占優' => '佔優',
+'占先' => '佔先',
+'占光' => '佔光',
+'占全' => '佔全',
+'占两' => '佔兩',
+'占兩' => '佔兩',
+'占八' => '佔八',
+'占六' => '佔六',
+'占分' => '佔分',
+'占到' => '佔到',
+'占加' => '佔加',
+'占劣' => '佔劣',
+'占北' => '佔北',
+'占十' => '佔十',
+'占千' => '佔千',
+'占半' => '佔半',
+'占南' => '佔南',
+'占印' => '佔印',
+'占去' => '佔去',
+'占取' => '佔取',
+'占台' => '佔台',
+'占囁' => '佔囁',
+'占四' => '佔四',
+'占国' => '佔國',
+'占國' => '佔國',
+'占在' => '佔在',
+'占地' => '佔地',
+'占场' => '佔場',
+'占場' => '佔場',
+'占压' => '佔壓',
+'占壓' => '佔壓',
+'占多' => '佔多',
+'占大' => '佔大',
+'占好' => '佔好',
+'占小' => '佔小',
+'占少' => '佔少',
+'占局部' => '佔局部',
+'占屋' => '佔屋',
+'占山为' => '佔山為',
+'占山為' => '佔山為',
+'占市' => '佔市',
+'占平均' => '佔平均',
+'占床' => '佔床',
+'占座' => '佔座',
+'占後' => '佔後',
+'占得' => '佔得',
+'占德' => '佔德',
+'占所有' => '佔所有',
+'占掉' => '佔掉',
+'占据' => '佔據',
+'占據' => '佔據',
+'占整' => '佔整',
+'占新' => '佔新',
+'占有' => '佔有',
+'占东' => '佔東',
+'占東' => '佔東',
+'占查' => '佔查',
+'占次' => '佔次',
+'占比' => '佔比',
+'占法' => '佔法',
+'占满' => '佔滿',
+'占滿' => '佔滿',
+'占澳' => '佔澳',
+'占为' => '佔為',
+'占為' => '佔為',
+'占率' => '佔率',
+'占用' => '佔用',
+'占毕' => '佔畢',
+'占畢' => '佔畢',
+'占百' => '佔百',
+'占尽' => '佔盡',
+'占盡' => '佔盡',
+'占着' => '佔着',
+'占著' => '佔着',
+'占網' => '佔網',
+'占网' => '佔網',
+'占線' => '佔線',
+'占线' => '佔線',
+'占总' => '佔總',
+'占總' => '佔總',
+'占缺' => '佔缺',
+'占美国' => '佔美國',
+'占美國' => '佔美國',
+'占耕' => '佔耕',
+'占至多' => '佔至多',
+'占至少' => '佔至少',
+'占臺' => '佔臺',
+'占英' => '佔英',
+'占万' => '佔萬',
+'占萬' => '佔萬',
+'占著名' => '佔著名',
+'占著者' => '佔著者',
+'占葡' => '佔葡',
+'占苏' => '佔蘇',
+'占蘇' => '佔蘇',
+'占西' => '佔西',
+'占資' => '佔資',
+'占资' => '佔資',
+'占起' => '佔起',
+'占超过' => '佔超過',
+'占超過' => '佔超過',
+'占过' => '佔過',
+'占過' => '佔過',
+'占道' => '佔道',
+'占零' => '佔零',
+'占領' => '佔領',
+'占领' => '佔領',
+'占头' => '佔頭',
+'占頭' => '佔頭',
+'占头筹' => '佔頭籌',
+'占頭籌' => '佔頭籌',
+'占香' => '佔香',
+'占馬' => '佔馬',
+'占马' => '佔馬',
+'占高枝' => '佔高枝',
+'維德角' => '佛得角',
+'作品里' => '作品裏',
+'來著' => '來着',
+'來著作' => '來著作',
+'來著名' => '來著名',
+'來著書' => '來著書',
+'來著稱' => '來著稱',
+'來著者' => '來著者',
+'來著述' => '來著述',
+'來著錄' => '來著錄',
+'侵占' => '侵佔',
+'俄占' => '俄佔',
+'保障著' => '保障着',
+'保障著作' => '保障著作',
+'保障著名' => '保障著名',
+'保障著書' => '保障著書',
+'保障著稱' => '保障著稱',
+'保障著者' => '保障著者',
+'保障著述' => '保障著述',
+'保障著錄' => '保障著錄',
+'信著' => '信着',
+'信著作' => '信著作',
+'信著名' => '信著名',
+'信著書' => '信著書',
+'信著称' => '信著稱',
+'信著稱' => '信著稱',
+'信著者' => '信著者',
+'信著述' => '信著述',
+'信著錄' => '信著錄',
+'个月里' => '個月裏',
+'个里' => '個裏',
+'倒楣' => '倒霉',
+'候著' => '候着',
+'候著作' => '候著作',
+'候著名' => '候著名',
+'候著書' => '候著書',
+'候著稱' => '候著稱',
+'候著者' => '候著者',
+'候著述' => '候著述',
+'候著錄' => '候著錄',
+'借著' => '借着',
+'借著作' => '借著作',
+'借著名' => '借著名',
+'借著書' => '借著書',
+'借著稱' => '借著稱',
+'借著者' => '借著者',
+'借著述' => '借著述',
+'借著錄' => '借著錄',
+'假里' => '假裏',
+'做著' => '做着',
+'做著作' => '做著作',
+'做著名' => '做著名',
+'做著書' => '做著書',
+'做著稱' => '做著稱',
+'做著者' => '做著者',
+'做著述' => '做著述',
+'做著錄' => '做著錄',
+'吉尼斯世界纪录' => '健力士世界紀錄',
+'金氏世界紀錄' => '健力士世界紀錄',
+'側著' => '側着',
+'側著作' => '側著作',
+'側著名' => '側著名',
+'側著書' => '側著書',
+'側著稱' => '側著稱',
+'側著者' => '側著者',
+'側著述' => '側著述',
+'側著錄' => '側著錄',
+'偷著' => '偷着',
+'偷著作' => '偷著作',
+'偷著名' => '偷著名',
+'偷著書' => '偷著書',
+'偷著稱' => '偷著稱',
+'偷著者' => '偷著者',
+'偷著述' => '偷著述',
+'偷著錄' => '偷著錄',
+'備著' => '備着',
+'備著作' => '備著作',
+'備著名' => '備著名',
+'備著書' => '備著書',
+'備著稱' => '備著稱',
+'備著者' => '備著者',
+'備著述' => '備著述',
+'備著錄' => '備著錄',
+'傻里傻气' => '傻裏傻氣',
+'雇员' => '僱員',
+'雇用' => '僱用',
+'凶惡' => '兇惡',
+'凶殘' => '兇殘',
+'凶殺' => '兇殺',
+'先占' => '先佔',
+'雪鐵龍' => '先進',
+'雪铁龙' => '先進',
+'光著' => '光着',
+'光著作' => '光著作',
+'光著名' => '光著名',
+'光著書' => '光著書',
+'光著称' => '光著稱',
+'光著稱' => '光著稱',
+'光著者' => '光著者',
+'光著述' => '光著述',
+'光著錄' => '光著錄',
+'柯林頓' => '克林頓',
+'克羅埃西亞' => '克羅地亞',
+'公布' => '公佈',
+'冒著' => '冒着',
+'冒著作' => '冒著作',
+'冒著名' => '冒著名',
+'冒著書' => '冒著書',
+'冒著稱' => '冒著稱',
+'冒著者' => '冒著者',
+'冒著述' => '冒著述',
+'冒著錄' => '冒著錄',
+'冰山里' => '冰山裏',
+'恺撒' => '凱撒',
+'函数里' => '函數裏',
+'分布' => '分佈',
+'分布于' => '分佈於',
+'分佈著' => '分佈着',
+'分布著' => '分佈着',
+'分占' => '分佔',
+'分钟里' => '分鐘裏',
+'錢尼' => '切尼',
+'切尔诺贝利' => '切爾諾貝爾',
+'列支敦斯登' => '列支敦士登',
+'別著' => '別着',
+'賴比瑞亞' => '利比里亞',
+'刮著' => '刮着',
+'到山里' => '到山裏',
+'制著' => '制着',
+'制著作' => '制著作',
+'制著名' => '制著名',
+'制著書' => '制著書',
+'制著稱' => '制著稱',
+'制著者' => '制著者',
+'制著述' => '制著述',
+'制著錄' => '制著錄',
+'刻著' => '刻着',
+'刻著作' => '刻著作',
+'刻著名' => '刻著名',
+'刻著書' => '刻著書',
+'刻著称' => '刻著稱',
+'刻著稱' => '刻著稱',
+'刻著者' => '刻著者',
+'刻著述' => '刻著述',
+'刻著錄' => '刻著錄',
+'前波莫瑞' => '前波美拉尼亞',
+'剪彩' => '剪綵',
+'割占' => '割佔',
+'劃著' => '劃着',
+'击剑' => '劍擊',
+'擊劍' => '劍擊',
+'加薩走廊' => '加沙地帶',
+'迦納' => '加納',
+'加彭' => '加蓬',
+'努力著' => '努力着',
+'努力著作' => '努力著作',
+'努力著名' => '努力著名',
+'努力著書' => '努力著書',
+'努力著称' => '努力著稱',
+'努力著稱' => '努力著稱',
+'努力著者' => '努力著者',
+'努力著述' => '努力著述',
+'努力著錄' => '努力著錄',
+'布蘭登堡' => '勃蘭登堡',
+'動著' => '動着',
+'動著作' => '動著作',
+'動著名' => '動著名',
+'動著書' => '動著書',
+'動著稱' => '動著稱',
+'動著者' => '動著者',
+'動著述' => '動著述',
+'動著錄' => '動著錄',
+'包著' => '包着',
+'北朝鲜' => '北韓',
+'南朝鲜' => '南韓',
+'波札那' => '博茨瓦納',
+'占卜' => '占卜',
+'占国桥' => '占國橋',
+'占國橋' => '占國橋',
+'占有五不' => '占有五不',
+'占著作' => '占著作',
+'占著稱' => '占著稱',
+'占著述' => '占著述',
+'占著錄' => '占著錄',
+'卡普里亚蒂' => '卡佩雅蒂',
+'喀拉蚩' => '卡拉奇',
+'卡斯楚' => '卡斯特羅',
+'印著' => '印着',
+'印著作' => '印著作',
+'印著名' => '印著名',
+'印著書' => '印著書',
+'印著稱' => '印著稱',
+'印著者' => '印著者',
+'印著述' => '印著述',
+'印著錄' => '印著錄',
+'瓜地馬拉' => '危地馬拉',
+'厄瓜多' => '厄瓜多爾',
+'厄瓜多尔' => '厄瓜多爾',
+'厄瓜多爾' => '厄瓜多爾',
+'厄利垂亚' => '厄立特里亞',
+'厄利垂亞' => '厄立特里亞',
+'源代码' => '原始碼',
+'去山里' => '去山裏',
+'参数里' => '參數裏',
+'受著' => '受着',
+'受著作' => '受著作',
+'受著名' => '受著名',
+'受著書' => '受著書',
+'受著稱' => '受著稱',
+'受著者' => '受著者',
+'受著述' => '受著述',
+'受著錄' => '受著錄',
+'丛林里' => '叢林裏',
+'口里' => '口裏',
+'只占' => '只佔',
+'叫著' => '叫着',
+'叫著作' => '叫著作',
+'叫著名' => '叫著名',
+'叫著書' => '叫著書',
+'叫著稱' => '叫著稱',
+'叫著者' => '叫著者',
+'叫著述' => '叫著述',
+'叫著錄' => '叫著錄',
+'古柯鹼' => '可卡因',
+'叱吒' => '叱咤',
+'斯坦福大学' => '史丹福大學',
+'史匹柏' => '史匹堡',
+'斯皮尔伯格' => '史匹堡',
+'史蒂芬·史匹柏' => '史提芬·史匹堡',
+'斯蒂芬·斯皮尔伯格' => '史提芬·史匹堡',
+'吃不著' => '吃不着',
+'吃得著' => '吃得着',
+'吃著' => '吃着',
+'吃里扒外' => '吃裏扒外',
+'吃里爬外' => '吃裏爬外',
+'吉布地' => '吉布堤',
+'吊著' => '吊着',
+'向著' => '向着',
+'向著作' => '向著作',
+'向著名' => '向著名',
+'向著書' => '向著書',
+'向著稱' => '向著稱',
+'向著者' => '向著者',
+'向著述' => '向著述',
+'向著錄' => '向著錄',
+'吞占' => '吞佔',
+'吧台' => '吧枱',
+'含著' => '含着',
+'含著作' => '含著作',
+'含著名' => '含著名',
+'含著書' => '含著書',
+'含著稱' => '含著稱',
+'含著者' => '含著者',
+'含著述' => '含著述',
+'含著錄' => '含著錄',
+'吹著' => '吹着',
+'吹著作' => '吹著作',
+'吹著名' => '吹著名',
+'吹著書' => '吹著書',
+'吹著稱' => '吹著稱',
+'吹著者' => '吹著者',
+'吹著述' => '吹著述',
+'吹著錄' => '吹著錄',
+'呆著' => '呆着',
+'呆里呆气' => '呆裏呆氣',
+'味著' => '味着',
+'味著作' => '味著作',
+'味著名' => '味著名',
+'味著書' => '味著書',
+'味著称' => '味著稱',
+'味著稱' => '味著稱',
+'味著者' => '味著者',
+'味著述' => '味著述',
+'味著錄' => '味著錄',
+'咖哩' => '咖喱',
+'麥克風' => '咪高峰',
+'麦克风' => '咪高峰',
+'哥特式' => '哥德式',
+'哥斯大黎加' => '哥斯達黎加',
+'哪里' => '哪裏',
+'哭著' => '哭着',
+'哭著作' => '哭著作',
+'哭著名' => '哭著名',
+'哭著書' => '哭著書',
+'哭著稱' => '哭著稱',
+'哭著者' => '哭著者',
+'哭著述' => '哭著述',
+'哭著錄' => '哭著錄',
+'唱著' => '唱着',
+'唱著作' => '唱著作',
+'唱著名' => '唱著名',
+'唱著書' => '唱著書',
+'唱著稱' => '唱著稱',
+'唱著者' => '唱著者',
+'唱著述' => '唱著述',
+'唱著錄' => '唱著錄',
+'喝著' => '喝着',
+'喝著作' => '喝著作',
+'喝著名' => '喝著名',
+'喝著書' => '喝著書',
+'喝著稱' => '喝著稱',
+'喝著者' => '喝著者',
+'喝著述' => '喝著述',
+'喝著錄' => '喝著錄',
+'賈伯斯' => '喬布斯',
+'乔治·奥威尔' => '喬治·歐威爾',
+'单反相机' => '單鏡反光機',
+'單眼相機' => '單鏡反光機',
+'嗅不著' => '嗅不着',
+'嗅得著' => '嗅得着',
+'嗅著' => '嗅着',
+'凯瑟琳' => '嘉芙蓮',
+'凱薩琳' => '嘉芙蓮',
+'嘯吒' => '嘯咤',
+'嘴里' => '嘴裏',
+'嚷著' => '嚷着',
+'嚷著作' => '嚷著作',
+'嚷著名' => '嚷著名',
+'嚷著書' => '嚷著書',
+'嚷著稱' => '嚷著稱',
+'嚷著者' => '嚷著者',
+'嚷著述' => '嚷著述',
+'嚷著錄' => '嚷著錄',
+'回著' => '回着',
+'回著名' => '回著名',
+'因著' => '因着',
+'因著〈' => '因著〈',
+'因著《' => '因著《',
+'因著作' => '因著作',
+'因著名' => '因著名',
+'因著書' => '因著書',
+'因著稱' => '因著稱',
+'因著者' => '因著者',
+'因著述' => '因著述',
+'因著錄' => '因著錄',
+'困著' => '困着',
+'困著作' => '困著作',
+'困著名' => '困著名',
+'困著書' => '困著書',
+'困著稱' => '困著稱',
+'困著者' => '困著者',
+'困著述' => '困著述',
+'困著錄' => '困著錄',
+'固著' => '固着',
+'圈占' => '圈佔',
+'圈里' => '圈裏',
+'西洋棋' => '國際象棋',
+'圍著' => '圍着',
+'圍著作' => '圍著作',
+'圍著名' => '圍著名',
+'圍著書' => '圍著書',
+'圍著稱' => '圍著稱',
+'圍著者' => '圍著者',
+'圍著述' => '圍著述',
+'圍著錄' => '圍著錄',
+'园里' => '園裏',
+'吐瓦魯' => '圖瓦盧',
+'土魯斯' => '圖盧茲',
+'图里的' => '圖裏的',
+'图里,' => '圖裏,',
+'土里' => '土裏',
+'在山里' => '在山裏',
+'蓋亞那' => '圭亞那',
+'地占' => '地佔',
+'地图里' => '地圖裏',
+'堪培拉' => '坎培拉',
+'坐台' => '坐枱',
+'坐著' => '坐着',
+'坐著作' => '坐著作',
+'坐著名' => '坐著名',
+'坐著書' => '坐著書',
+'坐著稱' => '坐著稱',
+'坐著者' => '坐著者',
+'坐著述' => '坐著述',
+'坐著錄' => '坐著錄',
+'坑里' => '坑裏',
+'坦尚尼亞' => '坦桑尼亞',
+'衣索匹亞' => '埃塞俄比亚',
+'衣索比亞' => '埃塞俄比亞',
+'葉里溫' => '埃里溫',
+'城市里' => '城市裏',
+'城里' => '城裏',
+'域里' => '域裏',
+'吉里巴斯' => '基里巴斯',
+'堅貞著' => '堅貞着',
+'场里' => '場裏',
+'塗著' => '塗着',
+'塞普勒斯' => '塞浦路斯',
+'賽普勒斯' => '塞浦路斯',
+'塞爾維亞與蒙特內哥羅' => '塞爾維亞和黑山',
+'塞席爾' => '塞舌爾',
+'境里' => '境裏',
+'壓著' => '壓着',
+'壓著作' => '壓著作',
+'壓著名' => '壓著名',
+'壓著書' => '壓著書',
+'壓著稱' => '壓著稱',
+'壓著者' => '壓著者',
+'壓著述' => '壓著述',
+'壓著錄' => '壓著錄',
+'壶里' => '壺裏',
+'多占' => '多佔',
+'夜晚里' => '夜晚裏',
+'夜里' => '夜裏',
+'夢有五不占' => '夢有五不占',
+'梦有五不占' => '夢有五不占',
+'夢著' => '夢着',
+'夢著作' => '夢著作',
+'夢著名' => '夢著名',
+'夢著書' => '夢著書',
+'夢著稱' => '夢著稱',
+'夢著者' => '夢著者',
+'夢著述' => '夢著述',
+'夢著錄' => '夢著錄',
+'梦里' => '夢裏',
+'天里' => '天裏',
+'宇航员' => '太空人',
+'夾著' => '夾着',
+'夾著作' => '夾著作',
+'夾著名' => '夾著名',
+'夾著書' => '夾著書',
+'夾著稱' => '夾著稱',
+'夾著者' => '夾著者',
+'夾著述' => '夾著述',
+'夾著錄' => '夾著錄',
+'奥占' => '奧佔',
+'奧占' => '奧佔',
+'歐巴馬' => '奧巴馬',
+'妆台' => '妝枱',
+'威斯伐倫' => '威斯特法倫',
+'威尔士' => '威爾斯',
+'威爾士' => '威爾斯',
+'子里' => '子裏',
+'字里行间' => '字裏行間',
+'存在著' => '存在着',
+'存著' => '存着',
+'存著作' => '存著作',
+'存著名' => '存著名',
+'孟德爾頌' => '孟德爾遜',
+'门德尔松' => '孟德爾遜',
+'學著' => '學着',
+'學著作' => '學著作',
+'學著名' => '學著名',
+'學著書' => '學著書',
+'學著稱' => '學著稱',
+'學著者' => '學著者',
+'學著述' => '學著述',
+'學著錄' => '學著錄',
+'学里' => '學裏',
+'守著' => '守着',
+'守著作' => '守著作',
+'守著名' => '守著名',
+'守著書' => '守著書',
+'守著称' => '守著稱',
+'守著稱' => '守著稱',
+'守著者' => '守著者',
+'守著述' => '守著述',
+'守著錄' => '守著錄',
+'安哈特' => '安哈爾特',
+'安地卡及巴布達' => '安提瓜和巴布達',
+'定著' => '定着',
+'定著作' => '定著作',
+'定著名' => '定著名',
+'定著書' => '定著書',
+'定著称' => '定著稱',
+'定著稱' => '定著稱',
+'定著者' => '定著者',
+'定著述' => '定著述',
+'定著錄' => '定著錄',
+'宣布' => '宣佈',
+'宫里' => '宮裏',
+'家里' => '家裏',
+'密布' => '密佈',
+'密西根' => '密歇根',
+'沃尓沃' => '富豪',
+'寡占' => '寡佔',
+'写字台' => '寫字枱',
+'寫著' => '寫着',
+'寫著作' => '寫著作',
+'寫著名' => '寫著名',
+'寫著書' => '寫著書',
+'寫著稱' => '寫著稱',
+'寫著者' => '寫著者',
+'寫著述' => '寫著述',
+'寫著錄' => '寫著錄',
+'宝里宝气' => '寶裏寶氣',
+'封面里' => '封面裏',
+'将占' => '將佔',
+'將占' => '將佔',
+'将占卜' => '將占卜',
+'將占卜' => '將占卜',
+'专辑里' => '專輯裏',
+'尋著' => '尋着',
+'尋著作' => '尋著作',
+'尋著名' => '尋著名',
+'尋著書' => '尋著書',
+'尋著稱' => '尋著稱',
+'尋著者' => '尋著者',
+'尋著述' => '尋著述',
+'尋著錄' => '尋著錄',
+'對著' => '對着',
+'對著作' => '對著作',
+'對著名' => '對著名',
+'對著書' => '對著書',
+'對著稱' => '對著稱',
+'對著者' => '對著者',
+'對著述' => '對著述',
+'對著錄' => '對著錄',
+'小时里' => '小時裏',
+'少占' => '少佔',
+'就里' => '就裏',
+'尼克松' => '尼克遜',
+'奈及利亞' => '尼日利亞',
+'局里' => '局裏',
+'屋里' => '屋裏',
+'展著' => '展着',
+'展著作' => '展著作',
+'展著名' => '展著名',
+'展著書' => '展著書',
+'展著稱' => '展著稱',
+'展著者' => '展著者',
+'展著述' => '展著述',
+'展著錄' => '展著錄',
+'屯里' => '屯裏',
+'山里有' => '山裏有',
+'山里的' => '山裏的',
+'甘比亞' => '岡比亞',
+'岸裡' => '岸裡',
+'工作台' => '工作枱',
+'已占' => '已佔',
+'巴塞罗那' => '巴塞隆拿',
+'巴塞隆納' => '巴塞隆拿',
+'巴貝多' => '巴巴多斯',
+'巴布亞紐幾內亞' => '巴布亞新畿內亞',
+'巴士拉' => '巴斯拉',
+'巷里' => '巷裏',
+'市占' => '市佔',
+'市里的' => '市裏的',
+'布吉納法索' => '布基納法索',
+'布什' => '布殊',
+'布里斯托尔' => '布里斯托',
+'蒲隆地' => '布隆迪',
+'希冀著' => '希冀着',
+'席哈克' => '希拉克',
+'希拉蕊' => '希拉莉',
+'希特勒' => '希特拉',
+'帛琉' => '帕勞',
+'巴尔米拉环礁' => '帕邁拉環礁',
+'帕劳' => '帛琉',
+'帶著' => '帶着',
+'帶著作' => '帶著作',
+'帶著名' => '帶著名',
+'帶著書' => '帶著書',
+'帶著稱' => '帶著稱',
+'帶著者' => '帶著者',
+'帶著述' => '帶著述',
+'帶著錄' => '帶著錄',
+'幅图里' => '幅圖裏',
+'幫著' => '幫着',
+'幫著作' => '幫著作',
+'幫著名' => '幫著名',
+'幫著書' => '幫著書',
+'幫著稱' => '幫著稱',
+'幫著者' => '幫著者',
+'幫著述' => '幫著述',
+'幫著錄' => '幫著錄',
+'干着急' => '干着急',
+'賓士' => '平治',
+'年代里' => '年代裏',
+'年里' => '年裏',
+'干着' => '幹着',
+'幹著' => '幹着',
+'幹著名' => '幹著名',
+'幹著稱' => '幹著稱',
+'幾內亞比索' => '幾內亞比紹',
+'店里' => '店裏',
+'庫德人' => '庫爾德人',
+'庫德族' => '庫爾德族',
+'坎城' => '康城',
+'戛纳' => '康城',
+'庙里' => '廟裏',
+'广播里' => '廣播裏',
+'強占' => '強佔',
+'强占' => '強佔',
+'约翰斯顿岛' => '強斯頓環礁',
+'弹子台' => '彈子枱',
+'蹦床' => '彈床',
+'弹珠台' => '彈珠枱',
+'形上學' => '形而上學',
+'谢丽·布莱尔' => '彭雪玲',
+'往里' => '往裏',
+'待著' => '待着',
+'待著作' => '待著作',
+'待著名' => '待著名',
+'待著書' => '待著書',
+'待著稱' => '待著稱',
+'待著者' => '待著者',
+'待著述' => '待著述',
+'待著錄' => '待著錄',
+'得著' => '得着',
+'得著作' => '得著作',
+'得著名' => '得著名',
+'得著書' => '得著書',
+'得著稱' => '得著稱',
+'得著者' => '得著者',
+'得著述' => '得著述',
+'得著錄' => '得著錄',
+'从图里' => '從圖裏',
+'从山里' => '從山裏',
+'从里到外' => '從裏到外',
+'从里向外' => '從裏向外',
+'循著' => '循着',
+'循著作' => '循著作',
+'循著名' => '循著名',
+'循著書' => '循著書',
+'循著稱' => '循著稱',
+'循著者' => '循著者',
+'循著述' => '循著述',
+'循著錄' => '循著錄',
+'征占' => '徵佔',
+'徵占' => '徵佔',
+'德占' => '德佔',
+'得克萨斯' => '德克薩斯',
+'德勒斯登' => '德累斯頓',
+'澈底' => '徹底',
+'心著' => '心着',
+'心著作' => '心著作',
+'心著名' => '心著名',
+'心著書' => '心著書',
+'心著称' => '心著稱',
+'心著稱' => '心著稱',
+'心著者' => '心著者',
+'心著述' => '心著述',
+'心著錄' => '心著錄',
+'心里' => '心裏',
+'心里面' => '心裏面',
+'忍著' => '忍着',
+'忍著作' => '忍著作',
+'忍著名' => '忍著名',
+'忍著書' => '忍著書',
+'忍著稱' => '忍著稱',
+'忍著者' => '忍著者',
+'忍著述' => '忍著述',
+'忍著錄' => '忍著錄',
+'忙著' => '忙着',
+'忙著作' => '忙著作',
+'忙著名' => '忙著名',
+'忙著書' => '忙著書',
+'忙著稱' => '忙著稱',
+'忙著者' => '忙著者',
+'忙著述' => '忙著述',
+'忙著錄' => '忙著錄',
+'忙里' => '忙裏',
+'忠貞著' => '忠貞着',
+'急著' => '急着',
+'急著作' => '急著作',
+'急著名' => '急著名',
+'急著書' => '急著書',
+'急著稱' => '急著稱',
+'急著者' => '急著者',
+'急著述' => '急著述',
+'急著錄' => '急著錄',
+'怪里怪气' => '怪裏怪氣',
+'悠著' => '悠着',
+'悠著作' => '悠著作',
+'悠著名' => '悠著名',
+'悠著書' => '悠著書',
+'悠著稱' => '悠著稱',
+'悠著者' => '悠著者',
+'悠著述' => '悠著述',
+'悠著錄' => '悠著錄',
+'悶著' => '悶着',
+'想象' => '想像',
+'想著' => '想着',
+'想著作' => '想著作',
+'想著名' => '想著名',
+'想著書' => '想著書',
+'想著称' => '想著稱',
+'想著稱' => '想著稱',
+'想著者' => '想著者',
+'想著述' => '想著述',
+'想著錄' => '想著錄',
+'意占' => '意佔',
+'義占' => '意佔',
+'義大利' => '意大利',
+'艾滋' => '愛滋',
+'愛著' => '愛着',
+'愛著作' => '愛著作',
+'愛著名' => '愛著名',
+'愛著書' => '愛著書',
+'愛著稱' => '愛著稱',
+'愛著者' => '愛著者',
+'愛著述' => '愛著述',
+'愛著錄' => '愛著錄',
+'慌里慌张' => '慌裏慌張',
+'慣著' => '慣着',
+'慣著作' => '慣著作',
+'慣著名' => '慣著名',
+'慣著書' => '慣著書',
+'慣著稱' => '慣著稱',
+'慣著者' => '慣著者',
+'慣著述' => '慣著述',
+'慣著錄' => '慣著錄',
+'宪法里' => '憲法裏',
+'应用程序' => '應用程式',
+'應著' => '應着',
+'應著作' => '應著作',
+'應著名' => '應著名',
+'應著書' => '應著書',
+'應著稱' => '應著稱',
+'應著者' => '應著者',
+'應著述' => '應著述',
+'應著錄' => '應著錄',
+'懷著' => '懷着',
+'懷著作' => '懷著作',
+'懷著名' => '懷著名',
+'懷著書' => '懷著書',
+'懷著稱' => '懷著稱',
+'懷著者' => '懷著者',
+'懷著述' => '懷著述',
+'懷著錄' => '懷著錄',
+'怀里' => '懷裏',
+'戀著' => '戀着',
+'戀著作' => '戀著作',
+'戀著名' => '戀著名',
+'戀著書' => '戀著書',
+'戀著稱' => '戀著稱',
+'戀著者' => '戀著者',
+'戀著述' => '戀著述',
+'戀著錄' => '戀著錄',
+'戈巴契夫' => '戈爾巴喬夫',
+'戰著' => '戰着',
+'戰著作' => '戰著作',
+'戰著名' => '戰著名',
+'戰著書' => '戰著書',
+'戰著稱' => '戰著稱',
+'戰著者' => '戰著者',
+'戰著述' => '戰著述',
+'戰著錄' => '戰著錄',
+'戏彩娱亲' => '戲綵娛親',
+'戲彩娛親' => '戲綵娛親',
+'戏里' => '戲裏',
+'撒切尔' => '戴卓爾',
+'柴契爾' => '戴卓爾',
+'狄安娜' => '戴安娜',
+'黛安娜' => '戴安娜',
+'戴著' => '戴着',
+'戴著作' => '戴著作',
+'戴著名' => '戴著名',
+'戴著書' => '戴著書',
+'戴著稱' => '戴著稱',
+'戴著者' => '戴著者',
+'戴著述' => '戴著述',
+'戴著錄' => '戴著錄',
+'房里' => '房裏',
+'所占' => '所佔',
+'索羅門群島' => '所羅門群島',
+'手里' => '手裏',
+'手里剑' => '手裏劍',
+'列印' => '打印',
+'印表機' => '打印機',
+'打著' => '打着',
+'打著作' => '打著作',
+'打著名' => '打著名',
+'打著書' => '打著書',
+'打著稱' => '打著稱',
+'打著者' => '打著者',
+'打著述' => '打著述',
+'打著錄' => '打著錄',
+'扛著' => '扛着',
+'扛著作' => '扛著作',
+'扛著名' => '扛著名',
+'扛著書' => '扛著書',
+'扛著稱' => '扛著稱',
+'扛著者' => '扛著者',
+'扛著述' => '扛著述',
+'扛著錄' => '扛著錄',
+'找不著' => '找不着',
+'找得著' => '找得着',
+'承宣布政' => '承宣布政',
+'抓著' => '抓着',
+'抓著作' => '抓著作',
+'抓著名' => '抓著名',
+'抓著稱' => '抓著稱',
+'抓著者' => '抓著者',
+'抓著述' => '抓著述',
+'抓著錄' => '抓著錄',
+'披著' => '披着',
+'披著作' => '披著作',
+'披著名' => '披著名',
+'披著書' => '披著書',
+'披著稱' => '披著稱',
+'披著者' => '披著者',
+'披著述' => '披著述',
+'披著錄' => '披著錄',
+'抬著' => '抬着',
+'抬著作' => '抬著作',
+'抬著名' => '抬著名',
+'抬著稱' => '抬著稱',
+'抬著者' => '抬著者',
+'抬著述' => '抬著述',
+'抬著錄' => '抬著錄',
+'抱著' => '抱着',
+'抱著作' => '抱著作',
+'抱著名' => '抱著名',
+'抱著稱' => '抱著稱',
+'抱著者' => '抱著者',
+'抱著述' => '抱著述',
+'抱著錄' => '抱著錄',
+'拉著' => '拉着',
+'拉著作' => '拉著作',
+'拉著名' => '拉著名',
+'拉著書' => '拉著書',
+'拉著稱' => '拉著稱',
+'拉著者' => '拉著者',
+'拉著述' => '拉著述',
+'拉著錄' => '拉著錄',
+'拎著' => '拎着',
+'拎著作' => '拎著作',
+'拎著名' => '拎著名',
+'拎著稱' => '拎著稱',
+'拎著者' => '拎著者',
+'拎著述' => '拎著述',
+'拎著錄' => '拎著錄',
+'拖著' => '拖着',
+'拖著作' => '拖著作',
+'拖著名' => '拖著名',
+'拖著稱' => '拖著稱',
+'拖著者' => '拖著者',
+'拖著述' => '拖著述',
+'拖著錄' => '拖著錄',
+'拼著' => '拼着',
+'拼著作' => '拼著作',
+'拼著名' => '拼著名',
+'拼著稱' => '拼著稱',
+'拼著者' => '拼著者',
+'拼著述' => '拼著述',
+'拼著錄' => '拼著錄',
+'拿著' => '拿着',
+'拿著作' => '拿著作',
+'拿著名' => '拿著名',
+'拿著稱' => '拿著稱',
+'拿著者' => '拿著者',
+'拿著述' => '拿著述',
+'拿著錄' => '拿著錄',
+'持著' => '持着',
+'持著作' => '持著作',
+'持著名' => '持著名',
+'持著稱' => '持著稱',
+'持著者' => '持著者',
+'持著述' => '持著述',
+'持著錄' => '持著錄',
+'挑著' => '挑着',
+'挑著作' => '挑著作',
+'挑著名' => '挑著名',
+'挑著稱' => '挑著稱',
+'挑著者' => '挑著者',
+'挑著述' => '挑著述',
+'挑著錄' => '挑著錄',
+'挨著' => '挨着',
+'挨著作' => '挨著作',
+'挨著名' => '挨著名',
+'挨著稱' => '挨著稱',
+'挨著者' => '挨著者',
+'挨著述' => '挨著述',
+'挨著錄' => '挨著錄',
+'捆著' => '捆着',
+'捆著作' => '捆著作',
+'捆著名' => '捆著名',
+'捆著稱' => '捆著稱',
+'捆著者' => '捆著者',
+'捆著述' => '捆著述',
+'捆著錄' => '捆著錄',
+'伏地挺身' => '掌上壓',
+'俯卧撑' => '掌上壓',
+'掖著' => '掖着',
+'掖著作' => '掖著作',
+'掖著名' => '掖著名',
+'掖著稱' => '掖著稱',
+'掖著者' => '掖著者',
+'掖著述' => '掖著述',
+'掖著錄' => '掖著錄',
+'掙著' => '掙着',
+'掙著作' => '掙著作',
+'掙著名' => '掙著名',
+'掙著書' => '掙著書',
+'掙著稱' => '掙著稱',
+'掙著者' => '掙著者',
+'掙著述' => '掙著述',
+'掙著錄' => '掙著錄',
+'掛著' => '掛着',
+'接著' => '接着',
+'接著作' => '接著作',
+'接著名' => '接著名',
+'接著稱' => '接著稱',
+'接著者' => '接著者',
+'接著述' => '接著述',
+'接著錄' => '接著錄',
+'揉著' => '揉着',
+'揉著作' => '揉著作',
+'揉著名' => '揉著名',
+'揉著書' => '揉著書',
+'揉著稱' => '揉著稱',
+'揉著者' => '揉著者',
+'揉著述' => '揉著述',
+'揉著錄' => '揉著錄',
+'提著' => '提着',
+'提著作' => '提著作',
+'提著名' => '提著名',
+'提著稱' => '提著稱',
+'提著者' => '提著者',
+'提著述' => '提著述',
+'提著錄' => '提著錄',
+'揮著' => '揮着',
+'揮著作' => '揮著作',
+'揮著名' => '揮著名',
+'揮著稱' => '揮著稱',
+'揮著者' => '揮著者',
+'揮著述' => '揮著述',
+'揮著錄' => '揮著錄',
+'搜索引擎' => '搜尋引擎',
+'抢占' => '搶佔',
+'搶占' => '搶佔',
+'摟著' => '摟着',
+'摟著作' => '摟著作',
+'摟著名' => '摟著名',
+'摟著稱' => '摟著稱',
+'摟著者' => '摟著者',
+'摟著述' => '摟著述',
+'摟著錄' => '摟著錄',
+'折台' => '摺枱',
+'撒马尔罕' => '撒馬爾罕',
+'撼著' => '撼着',
+'撼著作' => '撼著作',
+'撼著名' => '撼著名',
+'撼著書' => '撼著書',
+'撼著稱' => '撼著稱',
+'撼著者' => '撼著者',
+'撼著述' => '撼著述',
+'撼著錄' => '撼著錄',
+'擋著' => '擋着',
+'擋著作' => '擋著作',
+'擋著名' => '擋著名',
+'擋著稱' => '擋著稱',
+'擋著者' => '擋著者',
+'擋著述' => '擋著述',
+'擋著錄' => '擋著錄',
+'擔著' => '擔着',
+'據著' => '據着',
+'據著作' => '據著作',
+'據著名' => '據著名',
+'據著書' => '據著書',
+'據著稱' => '據著稱',
+'據著者' => '據著者',
+'據著述' => '據著述',
+'據著錄' => '據著錄',
+'擡著' => '擡着',
+'摆布' => '擺佈',
+'擺布' => '擺佈',
+'擺著' => '擺着',
+'擺著作' => '擺著作',
+'擺著名' => '擺著名',
+'擺著稱' => '擺著稱',
+'擺著者' => '擺著者',
+'擺著述' => '擺著述',
+'擺著錄' => '擺著錄',
+'攻占' => '攻佔',
+'放著' => '放着',
+'放著作' => '放著作',
+'放著名' => '放著名',
+'放著称' => '放著稱',
+'放著稱' => '放著稱',
+'敞著' => '敞着',
+'敞著作' => '敞著作',
+'敞著名' => '敞著名',
+'敞著稱' => '敞著稱',
+'敞著者' => '敞著者',
+'敞著述' => '敞著述',
+'敞著錄' => '敞著錄',
+'散布' => '散佈',
+'散佈著' => '散佈着',
+'散布著' => '散佈着',
+'数字照相机' => '数碼照相機',
+'數位照相機' => '数碼照相機',
+'數著' => '數着',
+'数字化' => '數碼化',
+'數位化' => '數碼化',
+'数字技术' => '數碼技術',
+'數位技術' => '數碼技術',
+'數位相機' => '數碼相機',
+'数字信号' => '數碼訊號',
+'數碼訊號' => '數碼訊號',
+'数字电视' => '數碼電視',
+'數位電視' => '數碼電視',
+'數著作' => '數著作',
+'數著名' => '數著名',
+'數著稱' => '數著稱',
+'數著者' => '數著者',
+'數著述' => '數著述',
+'數著錄' => '數著錄',
+'斥著' => '斥着',
+'斥著作' => '斥著作',
+'斥著名' => '斥著名',
+'斥著書' => '斥著書',
+'斥著稱' => '斥著稱',
+'斥著者' => '斥著者',
+'斥著述' => '斥著述',
+'斥著錄' => '斥著錄',
+'史瓦濟蘭' => '斯威士蘭',
+'斯洛維尼亞' => '斯洛文尼亞',
+'紐澳良' => '新奧爾良',
+'紐西蘭' => '新西蘭',
+'方法里' => '方法裏',
+'族里' => '族裏',
+'日占' => '日佔',
+'日里' => '日裏',
+'昂山素季' => '昂山素姬',
+'翁山蘇姬' => '昂山素姬',
+'昂著' => '昂着',
+'昂著作' => '昂著作',
+'昂著名' => '昂著名',
+'昂著書' => '昂著書',
+'昂著稱' => '昂著稱',
+'昂著者' => '昂著者',
+'昂著述' => '昂著述',
+'昂著錄' => '昂著錄',
+'星罗棋布' => '星羅棋佈',
+'星羅棋布' => '星羅棋佈',
+'映著' => '映着',
+'映著作' => '映著作',
+'映著名' => '映著名',
+'映著書' => '映著書',
+'映著稱' => '映著稱',
+'映著者' => '映著者',
+'映著述' => '映著述',
+'映著錄' => '映著錄',
+'晃著' => '晃着',
+'晃著作' => '晃著作',
+'晃著名' => '晃著名',
+'晃著稱' => '晃著稱',
+'晃著者' => '晃著者',
+'晃著述' => '晃著述',
+'晃著錄' => '晃著錄',
+'晶元' => '晶片',
+'芯片' => '晶片',
+'智慧型' => '智能',
+'智慧卡' => '智能卡',
+'智慧手機' => '智能手機',
+'暗地里' => '暗地裏',
+'暗沟里' => '暗溝裏',
+'暗著' => '暗着',
+'暗著作' => '暗著作',
+'暗著名' => '暗著名',
+'暗著書' => '暗著書',
+'暗著稱' => '暗著稱',
+'暗著者' => '暗著者',
+'暗著述' => '暗著述',
+'暗著錄' => '暗著錄',
+'暗里' => '暗裏',
+'会占' => '會佔',
+'會占' => '會佔',
+'会占卜' => '會占卜',
+'會占卜' => '會占卜',
+'会里' => '會裏',
+'月裡来' => '月裏來',
+'有著' => '有着',
+'有著作' => '有著作',
+'有著名' => '有著名',
+'有著書' => '有著書',
+'有著稱' => '有著稱',
+'有著者' => '有著者',
+'有著述' => '有著述',
+'有著錄' => '有著錄',
+'罗纳德·里根' => '朗奴·列根',
+'罗纳尔多' => '朗拿度',
+'罗纳尔迪尼奥' => '朗拿甸奴',
+'望著' => '望着',
+'望著作' => '望著作',
+'望著名' => '望著名',
+'望著書' => '望著書',
+'望著稱' => '望著稱',
+'望著者' => '望著者',
+'望著述' => '望著述',
+'望著錄' => '望著錄',
+'朝著' => '朝着',
+'朝著作' => '朝著作',
+'朝著名' => '朝著名',
+'朝著稱' => '朝著稱',
+'朝著者' => '朝著者',
+'朝著述' => '朝著述',
+'朝著錄' => '朝著錄',
+'板球' => '木球',
+'賓·拉登' => '本·拉登',
+'班傑明' => '本傑明',
+'賓拉登' => '本拉登',
+'本著' => '本着',
+'本著作' => '本著作',
+'本著名' => '本著名',
+'本著書' => '本著書',
+'本著稱' => '本著稱',
+'本著者' => '本著者',
+'本著述' => '本著述',
+'本著錄' => '本著錄',
+'里瓦尔多' => '李華度',
+'村里' => '村裏',
+'杜塞道夫' => '杜塞爾多夫',
+'迪拜' => '杜拜',
+'東協助' => '東協助',
+'東協會' => '東協會',
+'東協議' => '東協議',
+'東南亞國家協會' => '東南亞國家聯盟',
+'亚细安' => '東盟',
+'東協' => '東盟',
+'板著臉' => '板着臉',
+'枕著' => '枕着',
+'枕著作' => '枕著作',
+'枕著名' => '枕著名',
+'枕著稱' => '枕著稱',
+'枕著者' => '枕著者',
+'枕著述' => '枕著述',
+'枕著錄' => '枕著錄',
+'檯' => '枱',
+'台布' => '枱布',
+'台历' => '枱曆',
+'台灯' => '枱燈',
+'台面上' => '枱面上',
+'台面化' => '枱面化',
+'柏林墙' => '柏林圍牆',
+'奧黛莉·朵杜' => '柯德莉·塔圖',
+'奥黛丽·赫本' => '柯德莉·夏萍',
+'奧黛麗·赫本' => '柯德莉·夏萍',
+'哥廷根' => '格丁根',
+'格瑞那達' => '格林納達',
+'格莱美奖' => '格林美獎',
+'葛萊美獎' => '格林美獎',
+'格鲁吉亚' => '格魯吉亞',
+'框里' => '框裏',
+'台式电脑' => '桌上型電腦',
+'台球' => '桌球',
+'撞球' => '桌球',
+'梅鐸' => '梅鐸',
+'默多克' => '梅鐸',
+'梳著' => '梳着',
+'梳著作' => '梳著作',
+'梳著名' => '梳著名',
+'梳著稱' => '梳著稱',
+'梳著者' => '梳著者',
+'梳著述' => '梳著述',
+'梳著錄' => '梳著錄',
+'棉里' => '棉裏',
+'桑巴舞' => '森巴舞',
+'森林里' => '森林裏',
+'棺材里' => '棺材裏',
+'榴莲' => '榴槤',
+'榴蓮' => '榴槤',
+'樂著' => '樂着',
+'樂著作' => '樂著作',
+'樂著名' => '樂著名',
+'樂著書' => '樂著書',
+'樂著稱' => '樂著稱',
+'樂著者' => '樂著者',
+'樂著述' => '樂著述',
+'樂著錄' => '樂著錄',
+'標志著' => '標志着',
+'寶獅' => '標致',
+'標誌著' => '標誌着',
+'树林里' => '樹林裏',
+'工具機' => '機床',
+'机器人' => '機械人',
+'機器人' => '機械人',
+'柜台' => '櫃枱',
+'柜里' => '櫃裏',
+'历史里' => '歷史裏',
+'死里求生' => '死裏求生',
+'死里逃生' => '死裏逃生',
+'殺著' => '殺着',
+'殺著作' => '殺著作',
+'殺著名' => '殺著名',
+'殺著書' => '殺著書',
+'殺著稱' => '殺著稱',
+'殺著者' => '殺著者',
+'殺著述' => '殺著述',
+'殺著錄' => '殺著錄',
+'壳里' => '殼裏',
+'茅利塔尼亞' => '毛里塔尼亞',
+'模里西斯' => '毛里裘斯',
+'毛里求斯' => '毛里裘斯',
+'公厘' => '毫米',
+'公釐' => '毫米',
+'水来汤里去' => '水來湯裏去',
+'水里' => '水裏',
+'求著' => '求着',
+'求著作' => '求著作',
+'求著名' => '求著名',
+'求著書' => '求著書',
+'求著稱' => '求著稱',
+'求著者' => '求著者',
+'求著述' => '求著述',
+'求著錄' => '求著錄',
+'池里' => '池裏',
+'汙' => '污',
+'文莱' => '汶萊',
+'沈著' => '沈着',
+'沉著' => '沉着',
+'沉著作' => '沉著作',
+'沉著名' => '沉著名',
+'沉著書' => '沉著書',
+'沉著稱' => '沉著稱',
+'沉著者' => '沉著者',
+'沉著述' => '沉著述',
+'沉著錄' => '沉著錄',
+'沖著' => '沖着',
+'沖著。' => '沖著。',
+'沖著《' => '沖著《',
+'沖著,' => '沖著,',
+'沙地阿拉伯' => '沙特阿拉伯',
+'沙烏地阿拉伯' => '沙特阿拉伯',
+'沙里淘金' => '沙裏淘金',
+'河里' => '河裏',
+'沿著' => '沿着',
+'沿著作' => '沿著作',
+'沿著名' => '沿著名',
+'沿著書' => '沿著書',
+'沿著稱' => '沿著稱',
+'沿著者' => '沿著者',
+'沿著述' => '沿著述',
+'沿著錄' => '沿著錄',
+'法占' => '法佔',
+'法里,' => '法裏,',
+'玻里尼西亞' => '波利尼西亞',
+'波士尼亞' => '波斯尼亞',
+'波士尼亞赫塞哥維納' => '波斯尼亞黑塞哥維那',
+'宝莱坞' => '波里活',
+'寶萊塢' => '波里活',
+'幫浦' => '泵',
+'洞里' => '洞裏',
+'辛巴威' => '津巴布韋',
+'宏都拉斯' => '洪都拉斯',
+'活著' => '活着',
+'活著作' => '活著作',
+'活著名' => '活著名',
+'活著書' => '活著書',
+'活著稱' => '活著稱',
+'活著者' => '活著者',
+'活著述' => '活著述',
+'活著錄' => '活著錄',
+'移动网络' => '流動網絡',
+'行動網路' => '流動網絡',
+'移动电话' => '流動電話',
+'行動電話' => '流動電話',
+'流著' => '流着',
+'流著作' => '流著作',
+'流著名' => '流著名',
+'流著書' => '流著書',
+'流著稱' => '流著稱',
+'流著者' => '流著者',
+'流著述' => '流著述',
+'流著錄' => '流著錄',
+'流露著' => '流露着',
+'浮著' => '浮着',
+'蘭卡威' => '浮羅交怡',
+'浮著作' => '浮著作',
+'浮著名' => '浮著名',
+'浮著書' => '浮著書',
+'浮著稱' => '浮著稱',
+'浮著者' => '浮著者',
+'浮著述' => '浮著述',
+'浮著錄' => '浮著錄',
+'海上布雷' => '海上佈雷',
+'海洛因' => '海洛英',
+'海湾布雷' => '海灣佈雷',
+'海灣布雷' => '海灣佈雷',
+'涼著' => '涼着',
+'涼著作' => '涼著作',
+'涼著名' => '涼著名',
+'涼著書' => '涼著書',
+'涼著稱' => '涼著稱',
+'涼著者' => '涼著者',
+'涼著述' => '涼著述',
+'涼著錄' => '涼著錄',
+'深山里' => '深山裏',
+'渊里' => '淵裏',
+'渴著' => '渴着',
+'渴著作' => '渴著作',
+'渴著名' => '渴著名',
+'渴著書' => '渴著書',
+'渴著稱' => '渴著稱',
+'渴著者' => '渴著者',
+'渴著述' => '渴著述',
+'渴著錄' => '渴著錄',
+'湊合著' => '湊合着',
+'湖里' => '湖裏',
+'准将' => '準將',
+'准將' => '準將',
+'准尉' => '準尉',
+'溢著' => '溢着',
+'溢著作' => '溢著作',
+'溢著名' => '溢著名',
+'溢著書' => '溢著書',
+'溢著稱' => '溢著稱',
+'溢著者' => '溢著者',
+'溢著述' => '溢著述',
+'溢著錄' => '溢著錄',
+'演著' => '演着',
+'演著作' => '演著作',
+'演著名' => '演著名',
+'演著書' => '演著書',
+'演著稱' => '演著稱',
+'演著者' => '演著者',
+'演著述' => '演著述',
+'演著錄' => '演著錄',
+'漠里' => '漠裏',
+'漢諾瓦' => '漢諾威',
+'漫著' => '漫着',
+'漫著作' => '漫著作',
+'漫著名' => '漫著名',
+'漫著書' => '漫著書',
+'漫著稱' => '漫著稱',
+'漫著者' => '漫著者',
+'漫著述' => '漫著述',
+'漫著錄' => '漫著錄',
+'潜意识里' => '潛意識裏',
+'潤著' => '潤着',
+'潤著作' => '潤著作',
+'潤著名' => '潤著名',
+'潤著書' => '潤著書',
+'潤著稱' => '潤著稱',
+'潤著者' => '潤著者',
+'潤著述' => '潤著述',
+'潤著錄' => '潤著錄',
+'潭里' => '潭裏',
+'溼' => '濕',
+'火山里' => '火山裏',
+'火箭布雷' => '火箭佈雷',
+'為著' => '為着',
+'為著《' => '為著《',
+'為著作' => '為著作',
+'為著名' => '為著名',
+'為著稱' => '為著稱',
+'為著者' => '為著者',
+'為著述' => '為著述',
+'為著錄' => '為著錄',
+'菸' => '煙',
+'照占' => '照佔',
+'照著' => '照着',
+'照著作' => '照著作',
+'照著名' => '照著名',
+'照著書' => '照著書',
+'照著稱' => '照著稱',
+'照著者' => '照著者',
+'照著述' => '照著述',
+'照著錄' => '照著錄',
+'燒著' => '燒着',
+'燒著作' => '燒著作',
+'燒著名' => '燒著名',
+'燒著書' => '燒著書',
+'燒著稱' => '燒著稱',
+'燒著者' => '燒著者',
+'燒著述' => '燒著述',
+'燒著錄' => '燒著錄',
+'爭著' => '爭着',
+'爭著作' => '爭著作',
+'爭著名' => '爭著名',
+'爭著書' => '爭著書',
+'爭著稱' => '爭著稱',
+'爭著者' => '爭著者',
+'爭著述' => '爭著述',
+'爭著錄' => '爭著錄',
+'墙里' => '牆裏',
+'版图里' => '版圖裏',
+'版权信息' => '版權資訊',
+'千里達托貝哥' => '特立尼達和多巴哥',
+'牽著' => '牽着',
+'牽著作' => '牽著作',
+'牽著名' => '牽著名',
+'牽著書' => '牽著書',
+'牽著稱' => '牽著稱',
+'牽著者' => '牽著者',
+'牽著述' => '牽著述',
+'牽著錄' => '牽著錄',
+'犯不著' => '犯不着',
+'犯不著作' => '犯不著作',
+'犯不著名' => '犯不著名',
+'犯不著書' => '犯不著書',
+'犯不著稱' => '犯不著稱',
+'犯不著者' => '犯不著者',
+'犯不著述' => '犯不著述',
+'犯不著錄' => '犯不著錄',
+'犯得著' => '犯得着',
+'狂占' => '狂佔',
+'猜著' => '猜着',
+'猜著作' => '猜著作',
+'猜著名' => '猜著名',
+'猜著書' => '猜著書',
+'猜著稱' => '猜著稱',
+'猜著者' => '猜著者',
+'猜著述' => '猜著述',
+'猜著錄' => '猜著錄',
+'猶豫著' => '猶豫着',
+'狱里' => '獄裏',
+'独占' => '獨佔',
+'獨占' => '獨佔',
+'獨立國家國協' => '獨立國家聯合體',
+'獨立國協' => '獨聯體',
+'獲著' => '獲着',
+'獲著作' => '獲著作',
+'獲著名' => '獲著名',
+'獲著書' => '獲著書',
+'獲著稱' => '獲著稱',
+'獲著者' => '獲著者',
+'獲著述' => '獲著述',
+'獲著錄' => '獲著錄',
+'班固著' => '班固著',
+'班里' => '班裏',
+'球台' => '球枱',
+'卢塞恩' => '琉森',
+'諾鲁' => '瑙魯',
+'萬那杜' => '瓦努阿圖',
+'肯尼迪' => '甘迺迪',
+'甜著' => '甜着',
+'甜著作' => '甜著作',
+'甜著名' => '甜著名',
+'甜著書' => '甜著書',
+'甜著稱' => '甜著稱',
+'甜著者' => '甜著者',
+'甜著述' => '甜著述',
+'甜著錄' => '甜著錄',
+'用不著' => '用不着',
+'用得著' => '用得着',
+'用法里' => '用法裏',
+'用著' => '用着',
+'用著作' => '用著作',
+'用著名' => '用著名',
+'用著書' => '用著書',
+'用著稱' => '用著稱',
+'用著者' => '用著者',
+'用著述' => '用著述',
+'用著錄' => '用著錄',
+'田里' => '田裏',
+'由表及里' => '由表及裏',
+'A型肝炎' => '甲型肝炎',
+'A肝' => '甲肝',
+'界里' => '界裏',
+'留著' => '留着',
+'留著作' => '留著作',
+'留著名' => '留著名',
+'留著書' => '留著書',
+'留著稱' => '留著稱',
+'留著者' => '留著者',
+'留著述' => '留著述',
+'留著錄' => '留著錄',
+'畫著' => '畫着',
+'畫著作' => '畫著作',
+'畫著名' => '畫著名',
+'畫著稱' => '畫著稱',
+'畫著者' => '畫著者',
+'當著' => '當着',
+'當著作' => '當著作',
+'過著作' => '當著作',
+'當著名' => '當著名',
+'過著名' => '當著名',
+'當著書' => '當著書',
+'過著書' => '當著書',
+'當著稱' => '當著稱',
+'過著稱' => '當著稱',
+'當著者' => '當著者',
+'過著者' => '當著者',
+'當著述' => '當著述',
+'過著述' => '當著述',
+'當著錄' => '當著錄',
+'過著錄' => '當著錄',
+'几内亚' => '畿內亞',
+'幾內亞' => '畿內亞',
+'迭代' => '疊代',
+'疑著' => '疑着',
+'疑著作' => '疑著作',
+'疑著名' => '疑著名',
+'疑著書' => '疑著書',
+'疑著稱' => '疑著稱',
+'疑著者' => '疑著者',
+'疑著述' => '疑著述',
+'疑著錄' => '疑著錄',
+'狂牛症' => '瘋牛症',
+'发布' => '發佈',
+'發布' => '發佈',
+'發著' => '發着',
+'發著《' => '發著《',
+'發著作' => '發著作',
+'發著名' => '發著名',
+'發著稱' => '發著稱',
+'發著者' => '發著者',
+'白里透红' => '白裏透紅',
+'戈登·布朗' => '白高敦',
+'百科里' => '百科裏',
+'的图里' => '的圖裏',
+'的山里' => '的山裏',
+'皮里春秋' => '皮裏春秋',
+'皮里阳秋' => '皮裏陽秋',
+'皺著' => '皺着',
+'皺著作' => '皺著作',
+'皺著名' => '皺著名',
+'皺著書' => '皺著書',
+'皺著稱' => '皺著稱',
+'皺著者' => '皺著者',
+'皺著述' => '皺著述',
+'皺著錄' => '皺著錄',
+'盒里' => '盒裏',
+'盛著' => '盛着',
+'盛著作' => '盛著作',
+'盛著名' => '盛著名',
+'盛著書' => '盛著書',
+'盛著稱' => '盛著稱',
+'盛著者' => '盛著者',
+'盛著述' => '盛著述',
+'盛著錄' => '盛著錄',
+'盘里' => '盤裏',
+'盧安達' => '盧旺達',
+'羅亞爾' => '盧瓦爾',
+'盯著' => '盯着',
+'盯著作' => '盯著作',
+'盯著名' => '盯著名',
+'盯著書' => '盯著書',
+'盯著稱' => '盯著稱',
+'盯著者' => '盯著者',
+'盯著述' => '盯著述',
+'盯著錄' => '盯著錄',
+'看不著' => '看不着',
+'看得著' => '看得着',
+'看法里' => '看法裏',
+'看著' => '看着',
+'看著作' => '看著作',
+'看著名' => '看著名',
+'看著書' => '看著書',
+'看著稱' => '看著稱',
+'看著者' => '看著者',
+'看著述' => '看著述',
+'看著錄' => '看著錄',
+'眼眶里' => '眼眶裏',
+'眼睛里' => '眼睛裏',
+'眼里' => '眼裏',
+'著什' => '着什',
+'著他' => '着他',
+'著你' => '着你',
+'著力' => '着力',
+'著地' => '着地',
+'著墨' => '着墨',
+'著她' => '着她',
+'著妳' => '着妳',
+'著它' => '着它',
+'著實' => '着實',
+'著忙' => '着忙',
+'著急' => '着急',
+'著想' => '着想',
+'著意' => '着意',
+'著我' => '着我',
+'著手' => '着手',
+'著數' => '着數',
+'著法' => '着法',
+'著涼' => '着涼',
+'著火' => '着火',
+'著甚麽' => '着甚麽',
+'著眼' => '着眼',
+'著祂' => '着祂',
+'著筆' => '着筆',
+'著絲' => '着絲',
+'著緊' => '着緊',
+'著腳' => '着腳',
+'著艦' => '着艦',
+'著色' => '着色',
+'著落' => '着落',
+'著衣' => '着衣',
+'著裝' => '着裝',
+'著迷' => '着迷',
+'著重' => '着重',
+'著錄' => '着錄',
+'著陸' => '着陸',
+'著鞭' => '着鞭',
+'睡不著' => '睡不着',
+'睡得著' => '睡得着',
+'睡著' => '睡着',
+'睡著作' => '睡著作',
+'睡著名' => '睡著名',
+'睡著書' => '睡著書',
+'睡著稱' => '睡著稱',
+'睡著者' => '睡著者',
+'睡著述' => '睡著述',
+'睡著錄' => '睡著錄',
+'瞞著' => '瞞着',
+'瞞著作' => '瞞著作',
+'瞞著名' => '瞞著名',
+'瞞著書' => '瞞著書',
+'瞞著稱' => '瞞著稱',
+'瞞著者' => '瞞著者',
+'瞞著述' => '瞞著述',
+'瞞著錄' => '瞞著錄',
+'瞪著' => '瞪着',
+'瞪著作' => '瞪著作',
+'瞪著名' => '瞪著名',
+'瞪著書' => '瞪著書',
+'瞪著稱' => '瞪著稱',
+'瞪著者' => '瞪著者',
+'瞪著述' => '瞪著述',
+'瞪著錄' => '瞪著錄',
+'矛盾著' => '矛盾着',
+'智慧財產權' => '知識產權',
+'智財權' => '知識產權',
+'短信' => '短訊',
+'簡訊' => '短訊',
+'什勒斯維希' => '石勒蘇益格',
+'硅' => '矽',
+'硅藻' => '硅藻',
+'硬件' => '硬件',
+'硬體' => '硬件',
+'碗里' => '碗裏',
+'貝克漢' => '碧咸',
+'贝克汉姆' => '碧咸',
+'社里' => '社裏',
+'福馬林' => '福爾馬林',
+'福著' => '福着',
+'福著作' => '福著作',
+'福著名' => '福著名',
+'福著書' => '福著書',
+'福著稱' => '福著稱',
+'福著者' => '福著者',
+'福著述' => '福著述',
+'福著錄' => '福著錄',
+'秀发布' => '秀發佈',
+'私下里' => '私下裏',
+'隐私' => '私隱',
+'隱私' => '私隱',
+'葛摩' => '科摩羅',
+'程序员' => '程式設計師',
+'捷豹' => '積架',
+'稳占' => '穩佔',
+'穩占' => '穩佔',
+'穫著' => '穫着',
+'空中布雷' => '空中佈雷',
+'空投布雷' => '空投佈雷',
+'空气质量' => '空氣質素',
+'空氣品質' => '空氣質素',
+'空著' => '空着',
+'空著作' => '空著作',
+'空著名' => '空著名',
+'空著書' => '空著書',
+'空著稱' => '空著稱',
+'空著者' => '空著者',
+'空著述' => '空著述',
+'空著錄' => '空著錄',
+'太空梭' => '穿梭機',
+'航天飞机' => '穿梭機',
+'穿著' => '穿着',
+'穿著作' => '穿著作',
+'穿著名' => '穿著名',
+'穿著書' => '穿著書',
+'穿著稱' => '穿著稱',
+'穿著者' => '穿著者',
+'穿著述' => '穿著述',
+'穿著錄' => '穿著錄',
+'窝里' => '窩裏',
+'窝里斗' => '窩裏鬥',
+'立著' => '立着',
+'立著《' => '立著《',
+'立著作' => '立著作',
+'立著名' => '立著名',
+'立著有' => '立著有',
+'立著称' => '立著稱',
+'立著稱' => '立著稱',
+'立著者' => '立著者',
+'立著(' => '立著(',
+'站著' => '站着',
+'站著作' => '站著作',
+'站著名' => '站著名',
+'站著書' => '站著書',
+'站著稱' => '站著稱',
+'站著者' => '站著者',
+'站著述' => '站著述',
+'站著錄' => '站著錄',
+'竪著' => '竪着',
+'笑著' => '笑着',
+'笑著作' => '笑著作',
+'笑著名' => '笑著名',
+'笑著書' => '笑著書',
+'笑著稱' => '笑著稱',
+'笑著者' => '笑著者',
+'笑著述' => '笑著述',
+'笑著錄' => '笑著錄',
+'笑里藏刀' => '笑裏藏刀',
+'提比里西' => '第比利斯',
+'管著' => '管着',
+'管著作' => '管著作',
+'管著名' => '管著名',
+'管著書' => '管著書',
+'管著稱' => '管著稱',
+'管著者' => '管著者',
+'管著述' => '管著述',
+'管著錄' => '管著錄',
+'箱里' => '箱裏',
+'节目里' => '節目裏',
+'簽著' => '簽着',
+'篮板球' => '籃板球',
+'籃板球' => '籃板球',
+'迈克尔' => '米高',
+'麦克尔' => '米高',
+'迈克尔·欧文' => '米高·奧雲',
+'糊里糊涂' => '糊裏糊塗',
+'系列里' => '系列裏',
+'係數' => '系數',
+'系里' => '系裏',
+'約占' => '約佔',
+'约占' => '約佔',
+'紐賓士域' => '紐賓士域',
+'索尔仁尼琴' => '索贊尼辛',
+'索忍尼辛' => '索贊尼辛',
+'索馬利亞' => '索馬里',
+'索馬利里' => '索馬里',
+'紮著' => '紮着',
+'紮著作' => '紮著作',
+'紮著名' => '紮著名',
+'紮著書' => '紮著書',
+'紮著稱' => '紮著稱',
+'紮著者' => '紮著者',
+'紮著述' => '紮著述',
+'紮著錄' => '紮著錄',
+'组里' => '組裏',
+'吉他' => '結他',
+'結彩' => '結綵',
+'结彩' => '結綵',
+'綁著' => '綁着',
+'綁著作' => '綁著作',
+'綁著名' => '綁著名',
+'綁著書' => '綁著書',
+'綁著稱' => '綁著稱',
+'綁著者' => '綁著者',
+'綁著述' => '綁著述',
+'綁著錄' => '綁著錄',
+'网站里' => '網站裏',
+'網路' => '網絡',
+'网里' => '網裏',
+'彩带' => '綵帶',
+'彩帶' => '綵帶',
+'彩排' => '綵排',
+'彩楼' => '綵樓',
+'彩樓' => '綵樓',
+'彩牌楼' => '綵牌樓',
+'彩牌樓' => '綵牌樓',
+'彩球' => '綵球',
+'彩綢' => '綵綢',
+'彩绸' => '綵綢',
+'彩线' => '綵綫',
+'彩線' => '綵線',
+'彩船' => '綵船',
+'彩衣' => '綵衣',
+'线图里' => '線圖裏',
+'緝凶' => '緝兇',
+'县里' => '縣裏',
+'缝里' => '縫裏',
+'縱著' => '縱着',
+'总数里' => '總數裏',
+'尖峰時段' => '繁忙時段',
+'尖峰時間' => '繁忙時間',
+'正體中文' => '繁體中文',
+'繃著' => '繃着',
+'繞著' => '繞着',
+'繞著作' => '繞著作',
+'繞著名' => '繞著名',
+'繞著書' => '繞著書',
+'繞著稱' => '繞著稱',
+'繞著者' => '繞著者',
+'繞著述' => '繞著述',
+'繞著錄' => '繞著錄',
+'系着' => '繫着',
+'繫著' => '繫着',
+'纏著' => '纏着',
+'纏著作' => '纏著作',
+'纏著名' => '纏著名',
+'纏著書' => '纏著書',
+'纏著稱' => '纏著稱',
+'纏著者' => '纏著者',
+'纏著述' => '纏著述',
+'纏著錄' => '纏著錄',
+'罩著' => '罩着',
+'罩著作' => '罩著作',
+'罩著名' => '罩著名',
+'罩著書' => '罩著書',
+'罩著稱' => '罩著稱',
+'罩著者' => '罩著者',
+'罩著述' => '罩著述',
+'罩著錄' => '罩著錄',
+'罵著' => '罵着',
+'罵著作' => '罵著作',
+'罵著名' => '罵著名',
+'罵著書' => '罵著書',
+'罵著稱' => '罵著稱',
+'罵著者' => '罵著者',
+'罵著述' => '罵著述',
+'罵著錄' => '罵著錄',
+'卢浮宫' => '羅浮宮',
+'美占' => '美佔',
+'美著' => '美着',
+'美著作' => '美著作',
+'美著名' => '美著名',
+'美著書' => '美著書',
+'美著称' => '美著稱',
+'美著稱' => '美著稱',
+'美著者' => '美著者',
+'美著述' => '美著述',
+'美著錄' => '美著錄',
+'耀著' => '耀着',
+'耀著作' => '耀著作',
+'耀著名' => '耀著名',
+'耀著書' => '耀著書',
+'耀著稱' => '耀著稱',
+'耀著者' => '耀著者',
+'耀著述' => '耀著述',
+'耀著錄' => '耀著錄',
+'寮國' => '老撾',
+'寮人民民主共和國' => '老撾人民民主共和國',
+'寮語' => '老撾語',
+'考著' => '考着',
+'考著作' => '考著作',
+'考著名' => '考著名',
+'考著書' => '考著書',
+'考著稱' => '考著稱',
+'考著者' => '考著者',
+'考著述' => '考著述',
+'考著錄' => '考著錄',
+'圣基茨和尼维斯' => '聖吉斯納域斯',
+'聖克里斯多福及尼維斯' => '聖吉斯納域斯',
+'聖文森及格瑞那丁' => '聖文森特和格林納丁斯',
+'聖露西亞' => '聖盧西亞',
+'聖馬利諾' => '聖馬力諾',
+'聽不著' => '聽不着',
+'聽得著' => '聽得着',
+'聽著' => '聽着',
+'聽著作' => '聽著作',
+'聽著名' => '聽著名',
+'聽著書' => '聽著書',
+'聽著稱' => '聽著稱',
+'聽著者' => '聽著者',
+'聽著述' => '聽著述',
+'聽著錄' => '聽著錄',
+'肚里' => '肚裏',
+'肯尼亚' => '肯雅',
+'胃里' => '胃裏',
+'背地里' => '背地裏',
+'背著' => '背着',
+'背著作' => '背著作',
+'背著名' => '背著名',
+'背著書' => '背著書',
+'背著稱' => '背著稱',
+'背著者' => '背著者',
+'背著述' => '背著述',
+'背著錄' => '背著錄',
+'胡里胡涂' => '胡裏胡塗',
+'腰里' => '腰裏',
+'膠著' => '膠着',
+'膠著作' => '膠著作',
+'膠著名' => '膠著名',
+'膠著書' => '膠著書',
+'膠著稱' => '膠著稱',
+'膠著者' => '膠著者',
+'膠著述' => '膠著述',
+'膠著錄' => '膠著錄',
+'塑料袋' => '膠袋',
+'臨著' => '臨着',
+'臨著作' => '臨著作',
+'臨著名' => '臨著名',
+'臨著書' => '臨著書',
+'臨著稱' => '臨著稱',
+'臨著者' => '臨著者',
+'臨著述' => '臨著述',
+'臨著錄' => '臨著錄',
+'自行火炮' => '自走炮',
+'與著' => '與着',
+'與著作' => '與著作',
+'與著名' => '與著名',
+'與著書' => '與著書',
+'與著稱' => '與著稱',
+'與著者' => '與著者',
+'與著述' => '與著述',
+'與著錄' => '與著錄',
+'舒马赫' => '舒麥加',
+'愛荷華' => '艾奧瓦',
+'爱荷华' => '艾奧瓦',
+'埃菲尔' => '艾菲爾',
+'帕塔亚' => '芭達亞',
+'花盆里' => '花盆裏',
+'苑里' => '苑裏',
+'苑裡' => '苑裡',
+'苦著' => '苦着',
+'苦著作' => '苦著作',
+'苦著名' => '苦著名',
+'苦著書' => '苦著書',
+'苦著稱' => '苦著稱',
+'苦著者' => '苦著者',
+'苦著述' => '苦著述',
+'苦著錄' => '苦著錄',
+'苦里' => '苦裏',
+'英占' => '英佔',
+'共和联邦' => '英聯邦',
+'大英國協' => '英聯邦',
+'草丛里' => '草叢裏',
+'霍爾斯坦' => '荷爾斯泰因',
+'好莱坞' => '荷里活',
+'好萊塢' => '荷里活',
+'庄里' => '莊裏',
+'莫三比克' => '莫桑比克',
+'巴伦西亚' => '華倫西亞',
+'巴倫西亞' => '華倫西亞',
+'瓦倫西亞' => '華倫西亞',
+'瓦文萨' => '華里沙',
+'華勒沙' => '華里沙',
+'菲利普亲王' => '菲臘親王',
+'菲利普親王' => '菲臘親王',
+'賴索托' => '萊索托',
+'马恩岛' => '萌島',
+'馬自達' => '萬事得',
+'马自达' => '萬事得',
+'万历朝鲜战争' => '萬曆朝鮮戰爭',
+'落著' => '落着',
+'落著作' => '落著作',
+'落著名' => '落著名',
+'落著書' => '落著書',
+'落著稱' => '落著稱',
+'落著者' => '落著者',
+'落著述' => '落著述',
+'落著錄' => '落著錄',
+'葉爾欽' => '葉利欽',
+'葡占' => '葡佔',
+'葫芦里卖甚么药' => '葫蘆裏賣甚麼藥',
+'滿地可' => '蒙特利爾',
+'蒙特婁' => '蒙特利爾',
+'蒙著' => '蒙着',
+'蒙著作' => '蒙著作',
+'蒙著名' => '蒙著名',
+'蒙著書' => '蒙著書',
+'蒙著稱' => '蒙著稱',
+'蒙著者' => '蒙著者',
+'蒙著述' => '蒙著述',
+'蒙著錄' => '蒙著錄',
+'蓋著' => '蓋着',
+'蓋著作' => '蓋著作',
+'蓋著名' => '蓋著名',
+'蓋著稱' => '蓋著稱',
+'肖斯塔科维奇' => '蕭士達高維契',
+'蕭士塔高維奇' => '蕭士達高維契',
+'肖邦' => '蕭邦',
+'薛丁格' => '薛定諤',
+'塞拉耶佛' => '薩拉熱窩',
+'萨达姆' => '薩達姆',
+'藉著' => '藉着',
+'藏著' => '藏着',
+'藏著作' => '藏著作',
+'藏著名' => '藏著名',
+'藏著書' => '藏著書',
+'藏著稱' => '藏著稱',
+'藏著者' => '藏著者',
+'藏著述' => '藏著述',
+'藏著錄' => '藏著錄',
+'蘊涵著' => '蘊涵着',
+'蘸著' => '蘸着',
+'蘸著作' => '蘸著作',
+'蘸著名' => '蘸著名',
+'蘸著書' => '蘸著書',
+'蘸著稱' => '蘸著稱',
+'蘸著者' => '蘸著者',
+'蘸著述' => '蘸著述',
+'蘸著錄' => '蘸著錄',
+'蜜里调油' => '蜜裏調油',
+'荧屏' => '螢屏',
+'屏幕' => '螢幕',
+'人行道' => '行人路',
+'行家里手' => '行家裏手',
+'首席执行官' => '行政總裁',
+'行著' => '行着',
+'行著作' => '行著作',
+'行著名' => '行著名',
+'行著書' => '行著書',
+'行著稱' => '行著稱',
+'行著者' => '行著者',
+'行著述' => '行著述',
+'行著錄' => '行著錄',
+'衝著' => '衝着',
+'衣著' => '衣着',
+'衣著作' => '衣著作',
+'衣著名' => '衣著名',
+'衣著書' => '衣著書',
+'衣著稱' => '衣著稱',
+'衣著者' => '衣著者',
+'衣著述' => '衣著述',
+'衣著錄' => '衣著錄',
+'表里' => '表裏',
+'表里一致' => '表裏一致',
+'表里不一' => '表裏不一',
+'表里如一' => '表裏如一',
+'表里山河' => '表裏山河',
+'袋里' => '袋裏',
+'袖里' => '袖裏',
+'被里' => '被裏',
+'裡' => '裏',
+'里勾外连' => '裏勾外連',
+'里屋' => '裏屋',
+'里层' => '裏層',
+'里带' => '裏帶',
+'里弦' => '裏弦',
+'里应外合' => '裏應外合',
+'里海' => '裏海',
+'里脊' => '裏脊',
+'里衣' => '裏衣',
+'里通外国' => '裏通外國',
+'里通外敌' => '裏通外敵',
+'里边' => '裏邊',
+'里间' => '裏間',
+'里面' => '裏面',
+'里头' => '裏頭',
+'裝著' => '裝着',
+'裝著作' => '裝著作',
+'裝著名' => '裝著名',
+'裝著書' => '裝著書',
+'裝著稱' => '裝著稱',
+'裝著者' => '裝著者',
+'裝著述' => '裝著述',
+'裝著錄' => '裝著錄',
+'裡冷' => '裡冷',
+'裹著' => '裹着',
+'裹著作' => '裹著作',
+'裹著名' => '裹著名',
+'裹著書' => '裹著書',
+'裹著稱' => '裹著稱',
+'裹著者' => '裹著者',
+'裹著述' => '裹著述',
+'裹著錄' => '裹著錄',
+'衬里' => '襯裏',
+'西占' => '西佔',
+'塞維亞' => '西維爾',
+'塞维利亚' => '西維爾',
+'要占' => '要佔',
+'要占卜' => '要占卜',
+'覆著' => '覆着',
+'覆蓋著' => '覆蓋着',
+'見著' => '見着',
+'見著作' => '見著作',
+'見著名' => '見著名',
+'見著書' => '見著書',
+'見著稱' => '見著稱',
+'見著者' => '見著者',
+'見著述' => '見著述',
+'見著錄' => '見著錄',
+'視著' => '視着',
+'視著名' => '視著名',
+'角落里' => '角落裏',
+'分辨率' => '解像度',
+'解析度' => '解像度',
+'言里' => '言裏',
+'計畫' => '計劃',
+'記著' => '記着',
+'記著作' => '記著作',
+'記著名' => '記著名',
+'記著書' => '記著書',
+'記著稱' => '記著稱',
+'記著者' => '記著者',
+'記著述' => '記著述',
+'記著錄' => '記著錄',
+'試著' => '試着',
+'試著作' => '試著作',
+'試著名' => '試著名',
+'試著書' => '試著書',
+'試著稱' => '試著稱',
+'試著者' => '試著者',
+'試著述' => '試著述',
+'試著錄' => '試著錄',
+'话里有话' => '話裏有話',
+'语法里' => '語法裏',
+'語著' => '語着',
+'語著作' => '語著作',
+'語著名' => '語著名',
+'語著書' => '語著書',
+'語著稱' => '語著稱',
+'語著者' => '語著者',
+'語著述' => '語著述',
+'語著錄' => '語著錄',
+'语里' => '語裏',
+'說著' => '說着',
+'說著作' => '說著作',
+'說著稱' => '說著稱',
+'說著者' => '說著者',
+'說著述' => '說著述',
+'數據機' => '調制解調器',
+'诺曼底' => '諾曼第',
+'警戒著' => '警戒着',
+'變著' => '變着',
+'變著作' => '變著作',
+'變著名' => '變著名',
+'變著書' => '變著書',
+'變著稱' => '變著稱',
+'變著者' => '變著者',
+'變著述' => '變著述',
+'變著錄' => '變著錄',
+'豎著' => '豎着',
+'豎著作' => '豎著作',
+'豎著名' => '豎著名',
+'豎著書' => '豎著書',
+'豎著稱' => '豎著稱',
+'豎著者' => '豎著者',
+'豎著述' => '豎著述',
+'豎著錄' => '豎著錄',
+'象徵著名' => '象徵著名',
+'象徵著' => '象著着',
+'貝爾格勒' => '貝爾格萊德',
+'布莱尔' => '貝理雅',
+'負著' => '負着',
+'貢寮' => '貢寮',
+'買凶' => '買兇',
+'費占' => '費佔',
+'费占' => '費佔',
+'信息时代' => '資訊時代',
+'赌台' => '賭枱',
+'尚比亞' => '贊比亞',
+'西臺人' => '赫梯人',
+'西臺國' => '赫梯國',
+'西臺帝' => '赫梯帝',
+'西臺文' => '赫梯文',
+'西臺族' => '赫梯族',
+'西臺王' => '赫梯王',
+'西臺語' => '赫梯語',
+'赫魯雪夫' => '赫魯曉夫',
+'走為上著' => '走為上着',
+'走著' => '走着',
+'走著作' => '走著作',
+'走著名' => '走著名',
+'走著書' => '走著書',
+'走著稱' => '走著稱',
+'走著者' => '走著者',
+'走著述' => '走著述',
+'走著錄' => '走著錄',
+'趕著' => '趕着',
+'趕著作' => '趕著作',
+'趕著名' => '趕著名',
+'趕著書' => '趕著書',
+'趕著稱' => '趕著稱',
+'趕著者' => '趕著者',
+'趕著述' => '趕著述',
+'趕著錄' => '趕著錄',
+'趴著' => '趴着',
+'趴著作' => '趴著作',
+'趴著名' => '趴著名',
+'趴著書' => '趴著書',
+'趴著稱' => '趴著稱',
+'趴著者' => '趴著者',
+'趴著述' => '趴著述',
+'趴著錄' => '趴著錄',
+'跑著' => '跑着',
+'跑著作' => '跑著作',
+'跑著名' => '跑著名',
+'跑著書' => '跑著書',
+'跑著稱' => '跑著稱',
+'跑著者' => '跑著者',
+'跑著述' => '跑著述',
+'跑著錄' => '跑著錄',
+'跟著' => '跟着',
+'跟著作' => '跟著作',
+'跟著名' => '跟著名',
+'跟著書' => '跟著書',
+'跟著稱' => '跟著稱',
+'跟著者' => '跟著者',
+'跟著述' => '跟著述',
+'跟著錄' => '跟著錄',
+'跪著' => '跪着',
+'跪著作' => '跪著作',
+'跪著名' => '跪著名',
+'跪著書' => '跪著書',
+'跪著稱' => '跪著稱',
+'跪著者' => '跪著者',
+'跪著述' => '跪著述',
+'跪著錄' => '跪著錄',
+'路图里' => '路圖裏',
+'跳著' => '跳着',
+'跳著作' => '跳著作',
+'跳著名' => '跳著名',
+'跳著書' => '跳著書',
+'跳著稱' => '跳著稱',
+'跳著者' => '跳著者',
+'跳著述' => '跳著述',
+'跳著錄' => '跳著錄',
+'踏著' => '踏着',
+'踏著作' => '踏著作',
+'踏著名' => '踏著名',
+'踏著稱' => '踏著稱',
+'踏著者' => '踏著者',
+'踏著述' => '踏著述',
+'踏著錄' => '踏著錄',
+'踩著' => '踩着',
+'踩著作' => '踩著作',
+'踩著名' => '踩著名',
+'踩著書' => '踩著書',
+'踩著稱' => '踩著稱',
+'踩著者' => '踩著者',
+'踩著述' => '踩著述',
+'踩著錄' => '踩著錄',
+'躍著' => '躍着',
+'躍著作' => '躍著作',
+'躍著名' => '躍著名',
+'躍著書' => '躍著書',
+'躍著稱' => '躍著稱',
+'躍著者' => '躍著者',
+'躍著述' => '躍著述',
+'躍著錄' => '躍著錄',
+'身著' => '身着',
+'身著作' => '身著作',
+'身著名' => '身著名',
+'身著書' => '身著書',
+'身著稱' => '身著稱',
+'身著者' => '身著者',
+'身著述' => '身著述',
+'身著錄' => '身著錄',
+'躺著' => '躺着',
+'躺著作' => '躺著作',
+'躺著名' => '躺著名',
+'躺著書' => '躺著書',
+'躺著稱' => '躺著稱',
+'躺著者' => '躺著者',
+'躺著述' => '躺著述',
+'躺著錄' => '躺著錄',
+'车库里' => '車庫裏',
+'车站里' => '車站裏',
+'车里' => '車裏',
+'车里雅宾斯克' => '車里雅賓斯克',
+'軟體' => '軟件',
+'軟體動物' => '軟體動物',
+'軟體家具' => '軟體家具',
+'載著' => '載着',
+'載著作' => '載著作',
+'載著名' => '載著名',
+'載著書' => '載著書',
+'載著稱' => '載著稱',
+'載著者' => '載著者',
+'載著述' => '載著述',
+'載著錄' => '載著錄',
+'轉著' => '轉着',
+'轉著作' => '轉著作',
+'轉著名' => '轉著名',
+'轉著書' => '轉著書',
+'轉著稱' => '轉著稱',
+'轉著者' => '轉著者',
+'轉著述' => '轉著述',
+'轉著錄' => '轉著錄',
+'办公台' => '辦公枱',
+'辦著' => '辦着',
+'辦著作' => '辦著作',
+'辦著名' => '辦著名',
+'辦著書' => '辦著書',
+'辦著稱' => '辦著稱',
+'辦著者' => '辦著者',
+'辦著述' => '辦著述',
+'辦著錄' => '辦著錄',
+'迫著' => '迫着',
+'追著' => '追着',
+'追著作' => '追著作',
+'追著名' => '追著名',
+'追著書' => '追著書',
+'追著稱' => '追著稱',
+'追著者' => '追著者',
+'追著述' => '追著述',
+'追著錄' => '追著錄',
+'逆著' => '逆着',
+'逆著作' => '逆著作',
+'逆著名' => '逆著名',
+'逆著書' => '逆著書',
+'逆著稱' => '逆著稱',
+'逆著者' => '逆著者',
+'逆著述' => '逆著述',
+'逆著錄' => '逆著錄',
+'径入' => '逕入',
+'径到' => '逕到',
+'径取' => '逕取',
+'径启' => '逕啟',
+'径寄' => '逕寄',
+'径庭' => '逕庭',
+'径往' => '逕往',
+'径自' => '逕自',
+'径行' => '逕行',
+'径迎' => '逕迎',
+'这里' => '這裏',
+'连占' => '連佔',
+'連占' => '連佔',
+'連著' => '連着',
+'链接' => '連結',
+'連著作' => '連著作',
+'連著名' => '連著名',
+'連著書' => '連著書',
+'連著稱' => '連著稱',
+'連著者' => '連著者',
+'連著述' => '連著述',
+'連著錄' => '連著錄',
+'进占' => '進佔',
+'進占' => '進佔',
+'演化論' => '進化論',
+'逼著' => '逼着',
+'逼著作' => '逼著作',
+'逼著名' => '逼著名',
+'逼著書' => '逼著書',
+'逼著稱' => '逼著稱',
+'逼著者' => '逼著者',
+'逼著述' => '逼著述',
+'逼著錄' => '逼著錄',
+'遇著' => '遇着',
+'遇著作' => '遇著作',
+'遇著名' => '遇著名',
+'遇著書' => '遇著書',
+'遇著称' => '遇著稱',
+'遇著稱' => '遇著稱',
+'遇著者' => '遇著者',
+'遇著述' => '遇著述',
+'遇著錄' => '遇著錄',
+'游戏里' => '遊戲裏',
+'遍布' => '遍佈',
+'遍佈著' => '遍佈着',
+'遍布著' => '遍佈着',
+'過著' => '過着',
+'达·芬奇' => '達·文西',
+'达芬奇' => '達文西',
+'達著' => '達着',
+'達著作' => '達著作',
+'達著名' => '達著名',
+'達著書' => '達著書',
+'達著稱' => '達著稱',
+'達著者' => '達著者',
+'達著述' => '達著述',
+'達著錄' => '達著錄',
+'还占' => '還佔',
+'還占' => '還佔',
+'邋里邋遢' => '邋裏邋遢',
+'那里' => '那裏',
+'都市里' => '都市裏',
+'配合著' => '配合着',
+'配合著名' => '配合著名',
+'配图里' => '配圖裏',
+'配著' => '配着',
+'配著作' => '配著作',
+'配著名' => '配著名',
+'配著書' => '配著書',
+'配著稱' => '配著稱',
+'配著者' => '配著者',
+'配著述' => '配著述',
+'配著錄' => '配著錄',
+'醯' => '酰',
+'醜著' => '醜着',
+'醜著作' => '醜著作',
+'醜著名' => '醜著名',
+'醜著書' => '醜著書',
+'醜著稱' => '醜著稱',
+'醜著者' => '醜著者',
+'醜著述' => '醜著述',
+'醜著錄' => '醜著錄',
+'醯壶' => '醯壺',
+'醯壺' => '醯壺',
+'醯醋' => '醯醋',
+'醯醢' => '醯醢',
+'醯酱' => '醯醬',
+'醯醬' => '醯醬',
+'醯雞' => '醯雞',
+'醯鸡' => '醯雞',
+'釀著' => '釀着',
+'釀著作' => '釀著作',
+'釀著名' => '釀著名',
+'釀著書' => '釀著書',
+'釀著稱' => '釀著稱',
+'釀著者' => '釀著者',
+'釀著述' => '釀著述',
+'釀著錄' => '釀著錄',
+'金装玉里' => '金裝玉裏',
+'鉤' => '鈎',
+'鋪著' => '鋪着',
+'鋪著作' => '鋪著作',
+'鋪著名' => '鋪著名',
+'鋪著書' => '鋪著書',
+'鋪著稱' => '鋪著稱',
+'鋪著者' => '鋪著者',
+'鋪著述' => '鋪著述',
+'鋪著錄' => '鋪著錄',
+'镜图里' => '鏡圖裏',
+'钟在寺里' => '鐘在寺裏',
+'狄托' => '鐵托',
+'泰坦尼克号' => '鐵達尼號',
+'门里' => '門裏',
+'閉著' => '閉着',
+'閉著作' => '閉著作',
+'閉著名' => '閉著名',
+'閉著書' => '閉著書',
+'閉著稱' => '閉著稱',
+'閉著者' => '閉著者',
+'閉著述' => '閉著述',
+'閉著錄' => '閉著錄',
+'克卜勒' => '開普勒',
+'開著' => '開着',
+'開著作' => '開著作',
+'開著名' => '開著名',
+'開著書' => '開著書',
+'開著稱' => '開著稱',
+'開著者' => '開著者',
+'開著述' => '開著述',
+'開著錄' => '開著錄',
+'开诚布公' => '開誠佈公',
+'開誠布公' => '開誠佈公',
+'閑著' => '閑着',
+'閑著作' => '閑著作',
+'閑著名' => '閑著名',
+'閑著書' => '閑著書',
+'閑著稱' => '閑著稱',
+'閑著者' => '閑著者',
+'閑著述' => '閑著述',
+'閑著錄' => '閑著錄',
+'閒著' => '閒着',
+'间里' => '間裏',
+'關係著' => '關係着',
+'關著' => '關着',
+'關著作' => '關著作',
+'關著名' => '關著名',
+'關著書' => '關著書',
+'關著稱' => '關著稱',
+'關著者' => '關著者',
+'關著述' => '關著述',
+'關著錄' => '關著錄',
+'聞不著' => '闻不着',
+'聞得著' => '闻得着',
+'聞著' => '闻着',
+'亞塞拜然' => '阿塞拜疆',
+'阿布達比' => '阿布扎比',
+'阿拉伯聯合大公國' => '阿拉伯聯合酋長國',
+'亞斯文' => '阿斯旺',
+'阿联酋' => '阿聯酋',
+'艾里爾·夏隆' => '阿里埃勒·沙龍',
+'附著' => '附着',
+'附著作' => '附著作',
+'附著名' => '附著名',
+'附著書' => '附著書',
+'附著稱' => '附著稱',
+'附著者' => '附著者',
+'附著述' => '附著述',
+'附著錄' => '附著錄',
+'陋著' => '陋着',
+'陋著作' => '陋著作',
+'陋著名' => '陋著名',
+'陋著書' => '陋著書',
+'陋著稱' => '陋著稱',
+'陋著者' => '陋著者',
+'陋著述' => '陋著述',
+'陋著錄' => '陋著錄',
+'院里' => '院裏',
+'陪著' => '陪着',
+'陪著作' => '陪著作',
+'陪著名' => '陪著名',
+'陪著書' => '陪著書',
+'陪著稱' => '陪著稱',
+'陪著者' => '陪著者',
+'陪著述' => '陪著述',
+'陪著錄' => '陪著錄',
+'阴沟里翻船' => '陰溝裏翻船',
+'隔著' => '隔着',
+'隔著作' => '隔著作',
+'隔著名' => '隔著名',
+'隔著書' => '隔著書',
+'隔著稱' => '隔著稱',
+'隔著者' => '隔著者',
+'隔著述' => '隔著述',
+'隔著錄' => '隔著錄',
+'隨著' => '隨着',
+'隨著作' => '隨著作',
+'隨著名' => '隨著名',
+'隨著書' => '隨著書',
+'隨著稱' => '隨著稱',
+'隨著者' => '隨著者',
+'隨著述' => '隨著述',
+'隨著錄' => '隨著錄',
+'隐占' => '隱佔',
+'隱占' => '隱佔',
+'雅爾達' => '雅爾塔',
+'雅著' => '雅着',
+'雅穆索戈' => '雅穆蘇克雷',
+'雅著作' => '雅著作',
+'雅著名' => '雅著名',
+'雅著書' => '雅著書',
+'雅著称' => '雅著稱',
+'雅著稱' => '雅著稱',
+'雅著者' => '雅著者',
+'雅著述' => '雅著述',
+'雅著錄' => '雅著錄',
+'集数里' => '集數裏',
+'集里' => '集裏',
+'雜著' => '雜着',
+'雜著作' => '雜著作',
+'雜著名' => '雜著名',
+'雜著書' => '雜著書',
+'雜著稱' => '雜著稱',
+'雜著者' => '雜著者',
+'雜著述' => '雜著述',
+'雜著錄' => '雜著錄',
+'鸡蛋里挑骨头' => '雞蛋裏挑骨頭',
+'冰淇淋' => '雪糕',
+'冰激凌' => '雪糕',
+'雪里' => '雪裏',
+'云里雾里' => '雲裏霧裏',
+'莱特湾' => '雷伊泰灣',
+'萊特灣' => '雷伊泰灣',
+'电影里' => '電影裏',
+'晶体管' => '電晶體',
+'晶體管' => '電晶體',
+'电梯里' => '電梯裏',
+'电脑程序' => '電腦程式',
+'计算机程序' => '電腦程式',
+'电视里' => '電視裏',
+'霄裡' => '霄裡',
+'荷姆茲' => '霍爾木茲',
+'雾里' => '霧裏',
+'霸占' => '霸佔',
+'非占不可' => '非佔不可',
+'靠著' => '靠着',
+'靠著作' => '靠著作',
+'靠著名' => '靠著名',
+'靠著称' => '靠著稱',
+'靠著稱' => '靠著稱',
+'靠著者' => '靠著者',
+'靠著述' => '靠著述',
+'靠著录' => '靠著錄',
+'靠著錄' => '靠著錄',
+'面包著' => '面包着',
+'鞋里' => '鞋裏',
+'鞭辟入里' => '鞭辟入裏',
+'朝鲜战争' => '韓戰',
+'響著' => '響着',
+'響著作' => '響著作',
+'響著名' => '響著名',
+'響著書' => '響著書',
+'響著稱' => '響著稱',
+'響著者' => '響著者',
+'響著述' => '響著述',
+'響著錄' => '響著錄',
+'頂著' => '頂着',
+'頂著作' => '頂著作',
+'頂著名' => '頂著名',
+'頂著書' => '頂著書',
+'頂著稱' => '頂著稱',
+'頂著者' => '頂著者',
+'頂著述' => '頂著述',
+'頂著錄' => '頂著錄',
+'順著' => '順着',
+'順著作' => '順著作',
+'順著名' => '順著名',
+'順著書' => '順著書',
+'順著稱' => '順著稱',
+'順著者' => '順著者',
+'順著述' => '順著述',
+'順著錄' => '順著錄',
+'頒布' => '頒佈',
+'颁布' => '頒佈',
+'領著' => '領着',
+'領著作' => '領著作',
+'領著名' => '領著名',
+'領著書' => '領著書',
+'領著稱' => '領著稱',
+'領著者' => '領著者',
+'領著述' => '領著述',
+'領著錄' => '領著錄',
+'头里' => '頭裏',
+'风里' => '風裏',
+'颳著' => '颳着',
+'飃著' => '飃着',
+'飄著' => '飄着',
+'飄著作' => '飄著作',
+'飄著名' => '飄著名',
+'飄著書' => '飄著書',
+'飄著稱' => '飄著稱',
+'飄著者' => '飄著者',
+'飄著述' => '飄著述',
+'飄著錄' => '飄著錄',
+'餐台' => '餐枱',
+'馆里' => '館裏',
+'糊口' => '餬口',
+'馬里蘭' => '馬利蘭',
+'马里兰' => '馬利蘭',
+'马拉特·萨芬' => '馬拉特·沙芬',
+'馬斯垂克' => '馬斯特里赫特',
+'馬爾地夫' => '馬爾代夫',
+'馬利共和國' => '馬里共和國',
+'駕著' => '駕着',
+'駕著作' => '駕著作',
+'駕著名' => '駕著名',
+'駕著書' => '駕著書',
+'駕著稱' => '駕著稱',
+'駕著者' => '駕著者',
+'駕著述' => '駕著述',
+'駕著錄' => '駕著錄',
+'騎著' => '騎着',
+'騎著作' => '騎著作',
+'騎著名' => '騎著名',
+'騎著書' => '騎著書',
+'騎著稱' => '騎著稱',
+'騎著者' => '騎著者',
+'騎著述' => '騎著述',
+'騎著錄' => '騎著錄',
+'騙著' => '騙着',
+'騙著作' => '騙著作',
+'騙著名' => '騙著名',
+'騙著書' => '騙著書',
+'騙著稱' => '騙著稱',
+'騙著者' => '騙著者',
+'騙著述' => '騙著述',
+'騙著錄' => '騙著錄',
+'驶著' => '驶着',
+'体里' => '體裏',
+'高畫質' => '高清',
+'高著' => '高着',
+'高著作' => '高著作',
+'高著名' => '高著名',
+'高著書' => '高著書',
+'高著称' => '高著稱',
+'高著稱' => '高著稱',
+'高著者' => '高著者',
+'高著述' => '高著述',
+'高著錄' => '高著錄',
+'斗着' => '鬥着',
+'鬥著' => '鬥着',
+'鬥著作' => '鬥著作',
+'鬥著名' => '鬥著名',
+'鬥著書' => '鬥著書',
+'鬥著稱' => '鬥著稱',
+'鬥著者' => '鬥著者',
+'鬥著述' => '鬥著述',
+'鬥著錄' => '鬥著錄',
+'鬧著' => '鬧着',
+'牛軋' => '鳥結',
+'牛轧' => '鳥結',
+'鳩占' => '鳩佔',
+'鸠占' => '鳩佔',
+'麗著' => '麗着',
+'麗著作' => '麗著作',
+'麗著名' => '麗著名',
+'麗著書' => '麗著書',
+'麗著稱' => '麗著稱',
+'麗著者' => '麗著者',
+'麗著述' => '麗著述',
+'麗著錄' => '麗著錄',
+'麼著' => '麼着',
+'芮氏0' => '黎克特制0',
+'里氏0' => '黎克特制0',
+'芮氏1' => '黎克特制1',
+'里氏1' => '黎克特制1',
+'芮氏2' => '黎克特制2',
+'里氏2' => '黎克特制2',
+'芮氏3' => '黎克特制3',
+'里氏3' => '黎克特制3',
+'芮氏4' => '黎克特制4',
+'里氏4' => '黎克特制4',
+'芮氏5' => '黎克特制5',
+'里氏5' => '黎克特制5',
+'芮氏6' => '黎克特制6',
+'里氏6' => '黎克特制6',
+'芮氏7' => '黎克特制7',
+'里氏7' => '黎克特制7',
+'芮氏8' => '黎克特制8',
+'里氏8' => '黎克特制8',
+'芮氏9' => '黎克特制9',
+'里氏9' => '黎克特制9',
+'芮氏地震規模' => '黎克特制地震震級',
+'里氏地震规模' => '黎克特制地震震級',
+'芮氏規模' => '黎克特制震級',
+'里氏规模' => '黎克特制震級',
+'里氏震级' => '黎克特制震級',
+'黏著' => '黏着',
+'黏著作' => '黏著作',
+'黏著名' => '黏著名',
+'黏著書' => '黏著書',
+'黏著稱' => '黏著稱',
+'黏著者' => '黏著者',
+'黏著述' => '黏著述',
+'黏著錄' => '黏著錄',
+'蒙特內哥羅' => '黑山',
+'點著' => '點着',
+'點著作' => '點著作',
+'點著名' => '點著名',
+'點著書' => '點著書',
+'點著稱' => '點著稱',
+'點著者' => '點著者',
+'點著述' => '點著述',
+'點著錄' => '點著錄',
+'点里' => '點裏',
+'点里程' => '點里程',
+'鼓里' => '鼓裏',
+);
+
+public static $zh2CN = array(
+'16進位制' => '16进位制',
+'16進位' => '16进制',
+'IP位址' => 'IP地址',
+'一份子' => '一分子',
+'全球資訊網' => '万维网',
+'三十六著' => '三十六着',
+'三極體' => '三极管',
+'下著' => '下着',
+'下著作' => '下著作',
+'下著名' => '下著名',
+'下著录' => '下著录',
+'下著錄' => '下著录',
+'下著有' => '下著有',
+'下著称' => '下著称',
+'下著稱' => '下著称',
+'下著者' => '下著者',
+'下著述' => '下著述',
+'不著' => '不着',
+'不著書' => '不著书',
+'不著名' => '不著名',
+'不著錄' => '不著录',
+'不著稱' => '不著称',
+'不著述' => '不著述',
+'與著' => '与着',
+'與著書' => '与著书',
+'與著作' => '与著作',
+'與著名' => '与著名',
+'與著錄' => '与著录',
+'與著稱' => '与著称',
+'與著者' => '与著者',
+'與著述' => '与著述',
+'醜著' => '丑着',
+'醜著書' => '丑著书',
+'醜著作' => '丑著作',
+'醜著名' => '丑著名',
+'醜著錄' => '丑著录',
+'醜著稱' => '丑著称',
+'醜著者' => '丑著者',
+'醜著述' => '丑著述',
+'邱吉爾' => '丘吉尔',
+'C型肝炎' => '丙型肝炎',
+'C肝' => '丙肝',
+'東協會' => '东协会',
+'東協助' => '东协助',
+'東協議' => '东协议',
+'東南亞國家協會' => '东南亚国家联盟',
+'亚细安' => '东盟',
+'東協' => '东盟',
+'仲介' => '中介',
+'臨著' => '临着',
+'臨著書' => '临著书',
+'臨著作' => '临著作',
+'臨著名' => '临著名',
+'臨著錄' => '临著录',
+'臨著稱' => '临著称',
+'臨著者' => '临著者',
+'臨著述' => '临著述',
+'為著' => '为着',
+'為著《' => '为著《',
+'為著作' => '为著作',
+'為著名' => '为著名',
+'為著錄' => '为著录',
+'為著稱' => '为著称',
+'為著者' => '为著者',
+'為著述' => '为著述',
+'主機板' => '主板',
+'麗著' => '丽着',
+'麗著書' => '丽著书',
+'麗著作' => '丽著作',
+'麗著名' => '丽著名',
+'麗著錄' => '丽著录',
+'麗著稱' => '丽著称',
+'麗著者' => '丽著者',
+'麗著述' => '丽著述',
+'麼著' => '么着',
+'樂著' => '乐着',
+'樂著書' => '乐著书',
+'樂著作' => '乐著作',
+'樂著名' => '乐著名',
+'樂著錄' => '乐著录',
+'樂著稱' => '乐著称',
+'樂著者' => '乐著者',
+'樂著述' => '乐著述',
+'賈伯斯' => '乔布斯',
+'喬治·歐威爾' => '乔治·奥威尔',
+'乘著' => '乘着',
+'乘著書' => '乘著书',
+'乘著作' => '乘著作',
+'乘著名' => '乘著名',
+'乘著錄' => '乘著录',
+'乘著称' => '乘著称',
+'乘著稱' => '乘著称',
+'乘著者' => '乘著者',
+'乘著述' => '乘著述',
+'B型肝炎' => '乙型肝炎',
+'B肝' => '乙肝',
+'吉力馬札羅' => '乞力马扎罗',
+'葉門' => '也门',
+'買帳' => '买账',
+'了結他' => '了结他',
+'爭著' => '争着',
+'爭著書' => '争著书',
+'爭著作' => '争著作',
+'爭著名' => '争著名',
+'爭著錄' => '争著录',
+'爭著稱' => '争著称',
+'爭著者' => '争著者',
+'爭著述' => '争著述',
+'二極體' => '二极管',
+'二進位制' => '二进位制',
+'二進位' => '二进制',
+'網際網絡' => '互联网',
+'網際網路' => '互联网',
+'亞歷山卓' => '亚历山大',
+'雅穆索戈' => '亚穆苏克罗',
+'交帳' => '交账',
+'亮著' => '亮着',
+'亮著書' => '亮著书',
+'亮著作' => '亮著作',
+'亮著名' => '亮著名',
+'亮著錄' => '亮著录',
+'亮著称' => '亮著称',
+'亮著稱' => '亮著称',
+'亮著者' => '亮著者',
+'亮著述' => '亮著述',
+'人工智慧' => '人工智能',
+'行人路' => '人行道',
+'甚麼' => '什么',
+'甚麽' => '什么',
+'仗著' => '仗着',
+'仗著書' => '仗著书',
+'仗著作' => '仗著作',
+'仗著名' => '仗著名',
+'仗著錄' => '仗著录',
+'仗著稱' => '仗著称',
+'仗著者' => '仗著者',
+'仗著述' => '仗著述',
+'付帳' => '付账',
+'代表著' => '代表着',
+'代表著書' => '代表著书',
+'代表著作' => '代表著作',
+'代表著名' => '代表著名',
+'代表著錄' => '代表著录',
+'代表著稱' => '代表著称',
+'代表著者' => '代表著者',
+'代表著述' => '代表著述',
+'乙太網' => '以太网',
+'伊莉莎白' => '伊丽莎白',
+'伊利諾' => '伊利诺伊',
+'伊利諾伊' => '伊利诺伊',
+'伊斯蘭瑪巴德' => '伊斯兰堡',
+'伊斯坦堡' => '伊斯坦布尔',
+'伏著' => '伏着',
+'優先順序' => '优先级',
+'傳著' => '传着',
+'傳著書' => '传著书',
+'傳著作' => '传著作',
+'傳著名' => '传著名',
+'傳著錄' => '传著录',
+'傳著稱' => '传著称',
+'傳著者' => '传著者',
+'傳著述' => '传著述',
+'貝里斯' => '伯利兹',
+'伯明罕' => '伯明翰',
+'伴著' => '伴着',
+'伴著書' => '伴著书',
+'伴著作' => '伴著作',
+'伴著名' => '伴著名',
+'伴著錄' => '伴著录',
+'伴著稱' => '伴著称',
+'伴著者' => '伴著者',
+'伴著述' => '伴著述',
+'點陣圖' => '位图',
+'低著' => '低着',
+'低著書' => '低著书',
+'低著作' => '低著作',
+'低著名' => '低著名',
+'低著錄' => '低著录',
+'低著称' => '低著称',
+'低著稱' => '低著称',
+'低著者' => '低著者',
+'低著述' => '低著述',
+'住著' => '住着',
+'住著書' => '住著书',
+'住著作' => '住著作',
+'住著名' => '住著名',
+'住著錄' => '住著录',
+'住著称' => '住著称',
+'住著稱' => '住著称',
+'住著者' => '住著者',
+'住著述' => '住著述',
+'餘' => '余',
+'維德角' => '佛得角',
+'侏儸紀' => '侏罗纪',
+'側著' => '侧着',
+'側著書' => '侧著书',
+'側著作' => '侧著作',
+'側著名' => '侧著名',
+'側著錄' => '侧著录',
+'側著稱' => '侧著称',
+'側著者' => '侧著者',
+'側著述' => '侧著述',
+'可攜式' => '便携式',
+'攜帶型' => '便携式',
+'保護著' => '保护着',
+'保障著' => '保障着',
+'保障著書' => '保障著书',
+'保障著作' => '保障著作',
+'保障著名' => '保障著名',
+'保障著錄' => '保障著录',
+'保障著称' => '保障著称',
+'保障著稱' => '保障著称',
+'保障著者' => '保障著者',
+'保障著述' => '保障著述',
+'資訊時代' => '信息时代',
+'資訊理論' => '信息论',
+'信著' => '信着',
+'信著書' => '信著书',
+'信著作' => '信著作',
+'信著名' => '信著名',
+'信著錄' => '信著录',
+'信著称' => '信著称',
+'信著稱' => '信著称',
+'信著者' => '信著者',
+'信著述' => '信著述',
+'伏地挺身' => '俯卧撑',
+'掌上壓' => '俯卧撑',
+'倒帳' => '倒账',
+'候著' => '候着',
+'候著書' => '候著书',
+'候著作' => '候著作',
+'候著名' => '候著名',
+'候著錄' => '候著录',
+'候著稱' => '候著称',
+'候著者' => '候著者',
+'候著述' => '候著述',
+'借著' => '借着',
+'藉著' => '借着',
+'借著書' => '借著书',
+'借著作' => '借著作',
+'借著名' => '借著名',
+'借著錄' => '借著录',
+'借著稱' => '借著称',
+'借著者' => '借著者',
+'借著述' => '借著述',
+'假帳' => '假账',
+'做著' => '做着',
+'做著書' => '做著书',
+'做著作' => '做著作',
+'做著名' => '做著名',
+'做著錄' => '做著录',
+'做著稱' => '做著称',
+'做著者' => '做著者',
+'做著述' => '做著述',
+'偷著' => '偷着',
+'偷著書' => '偷著书',
+'偷著作' => '偷著作',
+'偷著名' => '偷著名',
+'偷著錄' => '偷著录',
+'偷著稱' => '偷著称',
+'偷著者' => '偷著者',
+'偷著述' => '偷著述',
+'傅利葉' => '傅里叶',
+'母音' => '元音',
+'光著' => '光着',
+'光著書' => '光著书',
+'光著作' => '光著作',
+'光著名' => '光著名',
+'光著錄' => '光著录',
+'光著称' => '光著称',
+'光著稱' => '光著称',
+'光著者' => '光著者',
+'光著述' => '光著述',
+'光碟機' => '光驱',
+'柯林頓' => '克林顿',
+'克羅埃西亞' => '克罗地亚',
+'轉殖' => '克隆',
+'複製人' => '克隆人',
+'入帳' => '入账',
+'八進位制' => '八进位制',
+'八進位' => '八进制',
+'西元1' => '公元1',
+'西元2' => '公元2',
+'西元3' => '公元3',
+'西元4' => '公元4',
+'西元5' => '公元5',
+'西元6' => '公元6',
+'西元7' => '公元7',
+'西元8' => '公元8',
+'西元9' => '公元9',
+'西元前' => '公元前',
+'公帳' => '公账',
+'六進位制' => '六进位制',
+'六進位' => '六进制',
+'關著' => '关着',
+'關係著' => '关系着',
+'關著書' => '关著书',
+'關著作' => '关著作',
+'關著名' => '关著名',
+'關著錄' => '关著录',
+'關著稱' => '关著称',
+'關著者' => '关著者',
+'關著述' => '关著述',
+'關帳' => '关账',
+'記憶體' => '内存',
+'甘比亞' => '冈比亚',
+'冒著' => '冒着',
+'冒著書' => '冒著书',
+'冒著作' => '冒著作',
+'冒著名' => '冒著名',
+'冒著錄' => '冒著录',
+'冒著稱' => '冒著称',
+'冒著者' => '冒著者',
+'冒著述' => '冒著述',
+'寫著' => '写着',
+'寫著書' => '写著书',
+'寫著作' => '写著作',
+'寫著名' => '写著名',
+'寫著錄' => '写著录',
+'寫著稱' => '写著称',
+'寫著者' => '写著者',
+'寫著述' => '写著述',
+'沖著' => '冲着',
+'衝著' => '冲着',
+'沖著。' => '冲著。',
+'沖著《' => '冲著《',
+'沖著(' => '冲著(',
+'沖著,' => '冲著,',
+'沖帳' => '冲账',
+'涼著' => '凉着',
+'涼著書' => '凉著书',
+'涼著作' => '凉著作',
+'涼著名' => '凉著名',
+'涼著錄' => '凉著录',
+'涼著稱' => '凉著称',
+'涼著者' => '凉著者',
+'涼著述' => '凉著述',
+'湊合著' => '凑合着',
+'畿內亞' => '几内亚',
+'幾內亞比索' => '几内亚比绍',
+'凱薩琳' => '凯瑟琳',
+'嘉芙蓮' => '凯瑟琳',
+'份內' => '分内',
+'份外' => '分外',
+'分佈著' => '分布着',
+'分布著' => '分布着',
+'解像度' => '分辨率',
+'解析度' => '分辨率',
+'份量' => '分量',
+'車諾比' => '切尔诺贝利',
+'劃著' => '划着',
+'李奧納多' => '列奥那多',
+'列支敦斯登' => '列支敦士登',
+'賴比瑞亞' => '利比里亚',
+'別著' => '别着',
+'刮著' => '刮着',
+'颳著' => '刮着',
+'到帳' => '到账',
+'制著' => '制着',
+'制著書' => '制著书',
+'制著作' => '制著作',
+'制著名' => '制著名',
+'制著錄' => '制著录',
+'制著稱' => '制著称',
+'制著者' => '制著者',
+'制著述' => '制著述',
+'煞車' => '刹车',
+'刻著' => '刻着',
+'刻著書' => '刻著书',
+'刻著作' => '刻著作',
+'刻著名' => '刻著名',
+'刻著錄' => '刻著录',
+'刻著称' => '刻著称',
+'刻著稱' => '刻著称',
+'刻著者' => '刻著者',
+'刻著述' => '刻著述',
+'前波莫瑞' => '前波美拉尼亚',
+'辦著' => '办着',
+'辦著書' => '办著书',
+'辦著作' => '办著作',
+'辦著名' => '办著名',
+'辦著錄' => '办著录',
+'辦著稱' => '办著称',
+'辦著者' => '办著者',
+'辦著述' => '办著述',
+'加薩走廊' => '加沙地带',
+'迦納' => '加纳',
+'加彭' => '加蓬',
+'動著' => '动着',
+'動著書' => '动著书',
+'動著作' => '动著作',
+'動著名' => '动著名',
+'動著錄' => '动著录',
+'動著稱' => '动著称',
+'動著者' => '动著者',
+'動著述' => '动著述',
+'努力著' => '努力着',
+'努力著書' => '努力著书',
+'努力著作' => '努力著作',
+'努力著名' => '努力著名',
+'努力著錄' => '努力著录',
+'努力著称' => '努力著称',
+'努力著稱' => '努力著称',
+'努力著者' => '努力著者',
+'努力著述' => '努力著述',
+'蘿拉' => '劳拉',
+'布蘭登堡' => '勃兰登堡',
+'白朗寧' => '勃朗宁',
+'包著' => '包着',
+'北韓' => '北朝鲜',
+'十進位制' => '十进位制',
+'十進位' => '十进制',
+'公升' => '升',
+'單眼相機' => '单反相机',
+'單鏡反光機' => '单反相机',
+'波札那' => '博茨瓦纳',
+'占著' => '占着',
+'占著作' => '占著作',
+'占著名' => '占著名',
+'占著者' => '占著者',
+'喀拉蚩' => '卡拉奇',
+'卡斯楚' => '卡斯特罗',
+'卡佩雅蒂' => '卡普里亚蒂',
+'盧安達' => '卢旺达',
+'羅浮宮' => '卢浮宫',
+'羅亞爾' => '卢瓦尔',
+'印著' => '印着',
+'印著書' => '印著书',
+'印著作' => '印著作',
+'印著名' => '印著名',
+'印著錄' => '印著录',
+'印著稱' => '印著称',
+'印著者' => '印著者',
+'印著述' => '印著述',
+'瓜地馬拉' => '危地马拉',
+'厄瓜多' => '厄瓜多尔',
+'厄瓜多尔' => '厄瓜多尔',
+'厄瓜多爾' => '厄瓜多尔',
+'厄利垂亚' => '厄立特里亚',
+'厄利垂亞' => '厄立特里亚',
+'厄立特里亞' => '厄立特里亚',
+'壓著' => '压着',
+'壓著書' => '压著书',
+'壓著作' => '压著作',
+'壓著名' => '压著名',
+'壓著錄' => '压著录',
+'壓著稱' => '压著称',
+'壓著者' => '压著者',
+'壓著述' => '压著述',
+'發著' => '发着',
+'發著《' => '发著《',
+'發著作' => '发著作',
+'發著名' => '发著名',
+'發著稱' => '发著称',
+'發著者' => '发著者',
+'已開發國家' => '发达国家',
+'受著' => '受着',
+'受著書' => '受著书',
+'受著作' => '受著作',
+'受著名' => '受著名',
+'受著錄' => '受著录',
+'受著稱' => '受著称',
+'受著者' => '受著者',
+'受著述' => '受著述',
+'變著' => '变着',
+'變著書' => '变著书',
+'變著作' => '变著作',
+'變著名' => '变著名',
+'變著錄' => '变著录',
+'變著稱' => '变著称',
+'變著者' => '变著者',
+'變著述' => '变著述',
+'隻字片語' => '只字片语',
+'隻言片語' => '只言片语',
+'唯讀' => '只读',
+'叫著' => '叫着',
+'叫著書' => '叫著书',
+'叫著作' => '叫著作',
+'叫著名' => '叫著名',
+'叫著錄' => '叫著录',
+'叫著稱' => '叫著称',
+'叫著者' => '叫著者',
+'叫著述' => '叫著述',
+'桌上型電腦' => '台式电脑',
+'撞球' => '台球',
+'台帳' => '台账',
+'叱吒' => '叱咤',
+'吃著' => '吃着',
+'結他' => '吉他',
+'健力士世界紀錄' => '吉尼斯世界纪录',
+'金氏世界紀錄' => '吉尼斯世界纪录',
+'吉布地' => '吉布提',
+'吊著' => '吊着',
+'名份' => '名分',
+'向著' => '向着',
+'向著書' => '向著书',
+'向著作' => '向著作',
+'向著名' => '向著名',
+'向著錄' => '向著录',
+'向著稱' => '向著称',
+'向著者' => '向著者',
+'向著述' => '向著述',
+'含著' => '含着',
+'含著書' => '含著书',
+'含著作' => '含著作',
+'含著名' => '含著名',
+'含著錄' => '含著录',
+'含著稱' => '含著称',
+'含著者' => '含著者',
+'含著述' => '含著述',
+'聽著' => '听着',
+'聽著書' => '听著书',
+'聽著作' => '听著作',
+'聽著名' => '听著名',
+'聽著錄' => '听著录',
+'聽著稱' => '听著称',
+'聽著者' => '听著者',
+'聽著述' => '听著述',
+'吹著' => '吹着',
+'吹著書' => '吹著书',
+'吹著作' => '吹著作',
+'吹著名' => '吹著名',
+'吹著錄' => '吹著录',
+'吹著稱' => '吹著称',
+'吹著者' => '吹著者',
+'吹著述' => '吹著述',
+'呆著' => '呆着',
+'呆帳' => '呆账',
+'味著' => '味着',
+'味著書' => '味著书',
+'味著作' => '味著作',
+'味著名' => '味著名',
+'味著錄' => '味著录',
+'味著称' => '味著称',
+'味著稱' => '味著称',
+'味著者' => '味著者',
+'味著述' => '味著述',
+'咖哩' => '咖喱',
+'諮' => '咨',
+'響著' => '响着',
+'響著書' => '响著书',
+'響著作' => '响著作',
+'響著名' => '响著名',
+'響著錄' => '响著录',
+'響著稱' => '响著称',
+'響著者' => '响著者',
+'響著述' => '响著述',
+'哥斯大黎加' => '哥斯达黎加',
+'哥德式' => '哥特式',
+'哭著' => '哭着',
+'哭著書' => '哭著书',
+'哭著作' => '哭著作',
+'哭著名' => '哭著名',
+'哭著錄' => '哭著录',
+'哭著稱' => '哭著称',
+'哭著者' => '哭著者',
+'哭著述' => '哭著述',
+'唱著' => '唱着',
+'唱著書' => '唱著书',
+'唱著作' => '唱著作',
+'唱著名' => '唱著名',
+'唱著錄' => '唱著录',
+'唱著稱' => '唱著称',
+'唱著者' => '唱著者',
+'唱著述' => '唱著述',
+'啸吒' => '啸咤',
+'喝著' => '喝着',
+'喝著書' => '喝著书',
+'喝著作' => '喝著作',
+'喝著名' => '喝著名',
+'喝著錄' => '喝著录',
+'喝著稱' => '喝著称',
+'喝著者' => '喝著者',
+'喝著述' => '喝著述',
+'嗅著' => '嗅着',
+'雜訊' => '噪声',
+'嚷著' => '嚷着',
+'嚷著書' => '嚷著书',
+'嚷著作' => '嚷著作',
+'嚷著名' => '嚷著名',
+'嚷著錄' => '嚷著录',
+'嚷著稱' => '嚷著称',
+'嚷著者' => '嚷著者',
+'嚷著述' => '嚷著述',
+'回著' => '回着',
+'回著名' => '回著名',
+'因著' => '因着',
+'因著〈' => '因著〈',
+'因著《' => '因著《',
+'因著書' => '因著书',
+'因著作' => '因著作',
+'因著名' => '因著名',
+'因著录' => '因著录',
+'因著錄' => '因著录',
+'因著稱' => '因著称',
+'因著者' => '因著者',
+'因著述' => '因著述',
+'困著' => '困着',
+'困著書' => '困著书',
+'困著作' => '困著作',
+'困著名' => '困著名',
+'困著錄' => '困著录',
+'困著稱' => '困著称',
+'困著者' => '困著者',
+'困著述' => '困著述',
+'圍著' => '围着',
+'圍著書' => '围著书',
+'圍著作' => '围著作',
+'圍著名' => '围著名',
+'圍著錄' => '围著录',
+'圍著稱' => '围著称',
+'圍著者' => '围著者',
+'圍著述' => '围著述',
+'韌體' => '固件',
+'固著' => '固着',
+'西洋棋' => '国际象棋',
+'土魯斯' => '图卢兹',
+'吐瓦魯' => '图瓦卢',
+'原子筆' => '圆珠笔',
+'聖露西亞' => '圣卢西亚',
+'聖克里斯多福及尼維斯' => '圣基茨和尼维斯',
+'聖吉斯納域斯' => '圣基茨和尼维斯',
+'聖文森及格瑞那丁' => '圣文森特和格林纳丁斯',
+'聖馬利諾' => '圣马力诺',
+'蓋亞那' => '圭亚那',
+'坐著' => '坐着',
+'坐著書' => '坐著书',
+'坐著作' => '坐著作',
+'坐著名' => '坐著名',
+'坐著錄' => '坐著录',
+'坐著稱' => '坐著称',
+'坐著者' => '坐著者',
+'坐著述' => '坐著述',
+'堅貞著' => '坚贞着',
+'坦尚尼亞' => '坦桑尼亚',
+'伊波拉' => '埃博拉',
+'衣索匹亞' => '埃塞俄比亚',
+'衣索比亞' => '埃塞俄比亚',
+'艾菲爾' => '埃菲尔',
+'葉里溫' => '埃里温',
+'功能變數名稱' => '域名',
+'吉里巴斯' => '基里巴斯',
+'堂姊' => '堂姐',
+'坎培拉' => '堪培拉',
+'塑膠袋' => '塑料袋',
+'塞爾維亞與蒙特內哥羅' => '塞尔维亚和黑山',
+'塞拉利昂' => '塞拉利昂',
+'塞普勒斯' => '塞浦路斯',
+'賽普勒斯' => '塞浦路斯',
+'塞維亞' => '塞维利亚',
+'西維爾' => '塞维利亚',
+'塞席爾' => '塞舌尔',
+'音效卡' => '声卡',
+'備著' => '备着',
+'備著書' => '备著书',
+'備著作' => '备著作',
+'備著名' => '备著名',
+'備著錄' => '备著录',
+'備著稱' => '备著称',
+'備著者' => '备著者',
+'備著述' => '备著述',
+'外部連結' => '外部链接',
+'托巴哥' => '多巴哥',
+'都卜勒' => '多普勒',
+'多明尼加' => '多米尼加',
+'大姊' => '大姐',
+'天份' => '天分',
+'夾著' => '夹着',
+'夾著書' => '夹著书',
+'夾著作' => '夹著作',
+'夾著名' => '夹著名',
+'夾著錄' => '夹著录',
+'夾著稱' => '夹著称',
+'夾著者' => '夹著者',
+'夾著述' => '夹著述',
+'賓士' => '奔驰',
+'歐巴馬' => '奥巴马',
+'柯德莉·夏萍' => '奥黛丽·赫本',
+'忌廉' => '奶油',
+'荷里活' => '好莱坞',
+'姊夫' => '姐夫',
+'姊姊' => '姐姐',
+'姊弟' => '姐弟',
+'威爾斯' => '威尔士',
+'威斯伐倫' => '威斯特法伦',
+'字型大小' => '字号',
+'字型檔' => '字库',
+'欄位' => '字段',
+'位元組' => '字节',
+'存在著' => '存在着',
+'存著' => '存着',
+'存著作' => '存著作',
+'存著名' => '存著名',
+'學姊' => '学姐',
+'學著' => '学着',
+'學著書' => '学著书',
+'學著作' => '学著作',
+'學著名' => '学著名',
+'學著錄' => '学著录',
+'學著稱' => '学著称',
+'學著者' => '学著者',
+'學著述' => '学著述',
+'太空飛行員' => '宇航员',
+'太空衣' => '宇航服',
+'守著' => '守着',
+'守著書' => '守著书',
+'守著作' => '守著作',
+'守著名' => '守著名',
+'守著錄' => '守著录',
+'守著称' => '守著称',
+'守著稱' => '守著称',
+'守著者' => '守著者',
+'守著述' => '守著述',
+'安哈特' => '安哈尔特',
+'安地卡及巴布達' => '安提瓜和巴布达',
+'巨集' => '宏',
+'定著' => '定着',
+'定著書' => '定著书',
+'定著作' => '定著作',
+'定著名' => '定著名',
+'定著錄' => '定著录',
+'定著称' => '定著称',
+'定著稱' => '定著称',
+'定著者' => '定著者',
+'定著述' => '定著述',
+'波里活' => '宝莱坞',
+'寬頻' => '宽带',
+'密执安' => '密歇根',
+'密西根' => '密歇根',
+'對著' => '对着',
+'對著書' => '对著书',
+'對著作' => '对著作',
+'對著名' => '对著名',
+'對著錄' => '对著录',
+'對著稱' => '对著称',
+'對著者' => '对著者',
+'對著述' => '对著述',
+'對帳' => '对账',
+'尋著' => '寻着',
+'尋著書' => '寻著书',
+'尋著作' => '寻著作',
+'尋著名' => '寻著名',
+'尋著錄' => '寻著录',
+'尋著稱' => '寻著称',
+'尋著者' => '寻著者',
+'尋著述' => '寻著述',
+'飛彈' => '导弹',
+'祖雲達斯' => '尤文图斯',
+'奈及利亞' => '尼日利亚',
+'尼日爾' => '尼日尔',
+'區域網' => '局域网',
+'區域網路' => '局域网络',
+'螢幕' => '屏幕',
+'展著' => '展着',
+'展著書' => '展著书',
+'展著作' => '展著作',
+'展著名' => '展著名',
+'展著錄' => '展著录',
+'展著稱' => '展著称',
+'展著者' => '展著者',
+'展著述' => '展著述',
+'瓦倫西亞' => '巴伦西亚',
+'華倫西亞' => '巴伦西亚',
+'巴塞隆拿' => '巴塞罗那',
+'巴塞隆納' => '巴塞罗那',
+'巴斯拉' => '巴士拉',
+'帕邁拉環礁' => '巴尔米拉环礁',
+'巴貝多' => '巴巴多斯',
+'巴布亞紐幾內亞' => '巴布亚新几内亚',
+'布殊' => '布什',
+'布吉納法索' => '布基纳法索',
+'布隆泉' => '布隆方丹',
+'蒲隆地' => '布隆迪',
+'希冀著' => '希冀着',
+'席哈克' => '希拉克',
+'希拉莉' => '希拉里',
+'希拉蕊' => '希拉里',
+'希特拉' => '希特勒',
+'帛琉' => '帕劳',
+'派屈克' => '帕特里克',
+'頻寬' => '带宽',
+'帶著' => '带着',
+'帶著書' => '带著书',
+'帶著作' => '带著作',
+'帶著名' => '带著名',
+'帶著錄' => '带著录',
+'帶著稱' => '带著称',
+'帶著者' => '带著者',
+'帶著述' => '带著述',
+'幫著' => '帮着',
+'幫著書' => '帮著书',
+'幫著作' => '帮著作',
+'幫著名' => '帮著名',
+'幫著錄' => '帮著录',
+'幫著稱' => '帮著称',
+'幫著者' => '帮著者',
+'幫著述' => '帮著述',
+'乾姊' => '干姐',
+'幹著' => '干着',
+'幹著名' => '幹著名',
+'幹著稱' => '幹著称',
+'庇護著' => '庇护着',
+'庫德人' => '库尔德人',
+'庫德族' => '库尔德族',
+'應用程式' => '应用程序',
+'應著' => '应着',
+'應著書' => '应著书',
+'應著作' => '应著作',
+'應著名' => '应著名',
+'應著錄' => '应著录',
+'應著稱' => '应著称',
+'應著者' => '应著者',
+'應著述' => '应著述',
+'建帳' => '建账',
+'克卜勒' => '开普勒',
+'開著' => '开着',
+'開著書' => '开著书',
+'開著作' => '开著作',
+'開著名' => '开著名',
+'開著錄' => '开著录',
+'開著稱' => '开著称',
+'開著者' => '开著者',
+'開著述' => '开著述',
+'開帳' => '开账',
+'非同步' => '异步',
+'若且唯若' => '当且仅当',
+'當著' => '当着',
+'當著書' => '当著书',
+'當著作' => '当著作',
+'當著名' => '当著名',
+'當著錄' => '当著录',
+'當著稱' => '当著称',
+'當著者' => '当著者',
+'當著述' => '当著述',
+'錄影帶' => '录像带',
+'形上學' => '形而上学',
+'澈底' => '彻底',
+'逕入' => '径入',
+'逕到' => '径到',
+'逕取' => '径取',
+'逕啟' => '径启',
+'逕寄' => '径寄',
+'逕庭' => '径庭',
+'逕往' => '径往',
+'逕自' => '径自',
+'逕行' => '径行',
+'逕迎' => '径迎',
+'待著' => '待着',
+'待著書' => '待著书',
+'待著作' => '待著作',
+'待著名' => '待著名',
+'待著錄' => '待著录',
+'待著稱' => '待著称',
+'待著者' => '待著者',
+'待著述' => '待著述',
+'得著' => '得着',
+'得著書' => '得著书',
+'得著作' => '得著作',
+'得著名' => '得著名',
+'得著錄' => '得著录',
+'得著稱' => '得著称',
+'得著者' => '得著者',
+'得著述' => '得著述',
+'御姊' => '御姐',
+'迴圈' => '循环',
+'循著' => '循着',
+'循著書' => '循著书',
+'循著作' => '循著作',
+'循著名' => '循著名',
+'循著錄' => '循著录',
+'循著稱' => '循著称',
+'循著者' => '循著者',
+'循著述' => '循著述',
+'德勒斯登' => '德累斯顿',
+'德希達' => '德里达',
+'心著' => '心着',
+'心著書' => '心著书',
+'心著作' => '心著作',
+'心著名' => '心著名',
+'心著錄' => '心著录',
+'心著称' => '心著称',
+'心著稱' => '心著称',
+'心著者' => '心著者',
+'心著述' => '心著述',
+'忍著' => '忍着',
+'忍著書' => '忍著书',
+'忍著作' => '忍著作',
+'忍著名' => '忍著名',
+'忍著錄' => '忍著录',
+'忍著稱' => '忍著称',
+'忍著者' => '忍著者',
+'忍著述' => '忍著述',
+'忙著' => '忙着',
+'忙著書' => '忙著书',
+'忙著作' => '忙著作',
+'忙著名' => '忙著名',
+'忙著錄' => '忙著录',
+'忙著稱' => '忙著称',
+'忙著者' => '忙著者',
+'忙著述' => '忙著述',
+'忠貞著' => '忠贞着',
+'懷著' => '怀着',
+'懷著書' => '怀著书',
+'懷著作' => '怀著作',
+'懷著名' => '怀著名',
+'懷著錄' => '怀著录',
+'懷著稱' => '怀著称',
+'懷著者' => '怀著者',
+'懷著述' => '怀著述',
+'急著' => '急着',
+'急著書' => '急著书',
+'急著作' => '急著作',
+'急著名' => '急著名',
+'急著錄' => '急著录',
+'急著稱' => '急著称',
+'急著者' => '急著者',
+'急著述' => '急著述',
+'匯流排' => '总线',
+'總帳' => '总账',
+'戀著' => '恋着',
+'戀著書' => '恋著书',
+'戀著作' => '恋著作',
+'戀著名' => '恋著名',
+'戀著錄' => '恋著录',
+'戀著稱' => '恋著称',
+'戀著者' => '恋著者',
+'戀著述' => '恋著述',
+'恰如其份' => '恰如其分',
+'悠著' => '悠着',
+'悠著書' => '悠著书',
+'悠著作' => '悠著作',
+'悠著名' => '悠著名',
+'悠著錄' => '悠著录',
+'悠著稱' => '悠著称',
+'悠著者' => '悠著者',
+'悠著述' => '悠著述',
+'慣著' => '惯着',
+'慣著書' => '惯著书',
+'慣著作' => '惯著作',
+'慣著名' => '惯著名',
+'慣著錄' => '惯著录',
+'慣著稱' => '惯著称',
+'慣著者' => '惯著者',
+'慣著述' => '惯著述',
+'想著' => '想着',
+'想著書' => '想著书',
+'想著作' => '想著作',
+'想著名' => '想著名',
+'想著錄' => '想著录',
+'想著称' => '想著称',
+'想著稱' => '想著称',
+'想著者' => '想著者',
+'想著述' => '想著述',
+'義大利' => '意大利',
+'戈巴契夫' => '戈尔巴乔夫',
+'成份' => '成分',
+'戰著' => '战着',
+'戰著書' => '战著书',
+'戰著作' => '战著作',
+'戰著名' => '战著名',
+'戰著錄' => '战著录',
+'戰著稱' => '战著称',
+'戰著者' => '战著者',
+'戰著述' => '战著述',
+'坎城' => '戛纳',
+'黛安娜' => '戴安娜',
+'戴著' => '戴着',
+'戴著書' => '戴著书',
+'戴著作' => '戴著作',
+'戴著名' => '戴著名',
+'戴著錄' => '戴著录',
+'戴著稱' => '戴著称',
+'戴著者' => '戴著者',
+'戴著述' => '戴著述',
+'索羅門群島' => '所罗门群岛',
+'紮著' => '扎着',
+'紮著書' => '扎著书',
+'紮著作' => '扎著作',
+'紮著名' => '扎著名',
+'紮著錄' => '扎著录',
+'紮著稱' => '扎著称',
+'紮著者' => '扎著者',
+'紮著述' => '扎著述',
+'列印' => '打印',
+'印表機' => '打印机',
+'打著' => '打着',
+'打著書' => '打著书',
+'打著作' => '打著作',
+'打著名' => '打著名',
+'打著錄' => '打著录',
+'打著稱' => '打著称',
+'打著者' => '打著者',
+'打著述' => '打著述',
+'扛著' => '扛着',
+'扛著書' => '扛著书',
+'扛著作' => '扛著作',
+'扛著名' => '扛著名',
+'扛著錄' => '扛著录',
+'扛著稱' => '扛著称',
+'扛著者' => '扛著者',
+'扛著述' => '扛著述',
+'掃瞄' => '扫描',
+'掃瞄器' => '扫描仪',
+'抓著' => '抓着',
+'抓著作' => '抓著作',
+'抓著名' => '抓著名',
+'抓著錄' => '抓著录',
+'抓著稱' => '抓著称',
+'抓著者' => '抓著者',
+'抓著述' => '抓著述',
+'投機份子' => '投机分子',
+'護著' => '护着',
+'護著書' => '护著书',
+'護著作' => '护著作',
+'護著名' => '护著名',
+'護著錄' => '护著录',
+'護著稱' => '护著称',
+'護著者' => '护著者',
+'護著述' => '护著述',
+'報帳' => '报账',
+'披著' => '披着',
+'披著書' => '披著书',
+'披著作' => '披著作',
+'披著名' => '披著名',
+'披著錄' => '披著录',
+'披著稱' => '披著称',
+'披著者' => '披著者',
+'披著述' => '披著述',
+'抬著' => '抬着',
+'擡著' => '抬着',
+'抬著作' => '抬著作',
+'抬著名' => '抬著名',
+'抬著錄' => '抬著录',
+'抬著稱' => '抬著称',
+'抬著者' => '抬著者',
+'抬著述' => '抬著述',
+'抱著' => '抱着',
+'抱著作' => '抱著作',
+'抱著名' => '抱著名',
+'抱著錄' => '抱著录',
+'抱著稱' => '抱著称',
+'抱著者' => '抱著者',
+'抱著述' => '抱著述',
+'擔著' => '担着',
+'拉著' => '拉着',
+'拉著書' => '拉著书',
+'拉著作' => '拉著作',
+'拉著名' => '拉著名',
+'拉著錄' => '拉著录',
+'拉著稱' => '拉著称',
+'拉著者' => '拉著者',
+'拉著述' => '拉著述',
+'拎著' => '拎着',
+'拎著作' => '拎著作',
+'拎著名' => '拎著名',
+'拎著錄' => '拎著录',
+'拎著稱' => '拎著称',
+'拎著者' => '拎著者',
+'拎著述' => '拎著述',
+'拖著' => '拖着',
+'拖著作' => '拖著作',
+'拖著名' => '拖著名',
+'拖著錄' => '拖著录',
+'拖著稱' => '拖著称',
+'拖著者' => '拖著者',
+'拖著述' => '拖著述',
+'拼著' => '拼着',
+'拼著作' => '拼著作',
+'拼著名' => '拼著名',
+'拼著錄' => '拼著录',
+'拼著稱' => '拼著称',
+'拼著者' => '拼著者',
+'拼著述' => '拼著述',
+'拿著' => '拿着',
+'拿著作' => '拿著作',
+'拿著名' => '拿著名',
+'拿著錄' => '拿著录',
+'拿著稱' => '拿著称',
+'拿著者' => '拿著者',
+'拿著述' => '拿著述',
+'持著' => '持着',
+'持著作' => '持著作',
+'持著名' => '持著名',
+'持著錄' => '持著录',
+'持著稱' => '持著称',
+'持著者' => '持著者',
+'持著述' => '持著述',
+'掛著' => '挂着',
+'挑著' => '挑着',
+'挑著作' => '挑著作',
+'挑著名' => '挑著名',
+'挑著錄' => '挑著录',
+'挑著稱' => '挑著称',
+'挑著者' => '挑著者',
+'挑著述' => '挑著述',
+'擋著' => '挡着',
+'擋著作' => '挡著作',
+'擋著名' => '挡著名',
+'擋著錄' => '挡著录',
+'擋著稱' => '挡著称',
+'擋著者' => '挡著者',
+'擋著述' => '挡著述',
+'掙著' => '挣着',
+'掙著書' => '挣著书',
+'掙著作' => '挣著作',
+'掙著名' => '挣著名',
+'掙著錄' => '挣著录',
+'掙著稱' => '挣著称',
+'掙著者' => '挣著者',
+'掙著述' => '挣著述',
+'揮著' => '挥着',
+'揮著作' => '挥著作',
+'揮著名' => '挥著名',
+'揮著錄' => '挥著录',
+'揮著稱' => '挥著称',
+'揮著者' => '挥著者',
+'揮著述' => '挥著述',
+'挨著' => '挨着',
+'挨著作' => '挨著作',
+'挨著名' => '挨著名',
+'挨著錄' => '挨著录',
+'挨著稱' => '挨著称',
+'挨著者' => '挨著者',
+'挨著述' => '挨著述',
+'捆著' => '捆着',
+'捆著作' => '捆著作',
+'捆著名' => '捆著名',
+'捆著錄' => '捆著录',
+'捆著稱' => '捆著称',
+'捆著者' => '捆著者',
+'捆著述' => '捆著述',
+'據著' => '据着',
+'據著書' => '据著书',
+'據著作' => '据著作',
+'據著名' => '据著名',
+'據著錄' => '据著录',
+'據著稱' => '据著称',
+'據著者' => '据著者',
+'據著述' => '据著述',
+'積架' => '捷豹',
+'掖著' => '掖着',
+'掖著作' => '掖著作',
+'掖著名' => '掖著名',
+'掖著錄' => '掖著录',
+'掖著稱' => '掖著称',
+'掖著者' => '掖著者',
+'掖著述' => '掖著述',
+'接著' => '接着',
+'接著作' => '接著作',
+'接著名' => '接著名',
+'接著錄' => '接著录',
+'接著稱' => '接著称',
+'接著者' => '接著者',
+'接著述' => '接著述',
+'控制項' => '控件',
+'揉著' => '揉着',
+'揉著書' => '揉著书',
+'揉著作' => '揉著作',
+'揉著名' => '揉著名',
+'揉著錄' => '揉著录',
+'揉著稱' => '揉著称',
+'揉著者' => '揉著者',
+'揉著述' => '揉著述',
+'提著' => '提着',
+'提著作' => '提著作',
+'提著名' => '提著名',
+'提著錄' => '提著录',
+'提著稱' => '提著称',
+'提著者' => '提著者',
+'提著述' => '提著述',
+'外掛程式' => '插件',
+'摟著' => '搂着',
+'摟著作' => '搂著作',
+'摟著名' => '搂著名',
+'摟著錄' => '搂著录',
+'摟著稱' => '搂著称',
+'摟著者' => '搂著者',
+'摟著述' => '搂著述',
+'搜尋引擎' => '搜索引擎',
+'擺著' => '摆着',
+'擺著作' => '摆著作',
+'擺著名' => '摆著名',
+'擺著錄' => '摆著录',
+'擺著稱' => '摆著称',
+'擺著者' => '摆著者',
+'擺著述' => '摆著述',
+'電單車' => '摩托车',
+'戴卓爾' => '撒切尔',
+'柴契爾' => '撒切尔',
+'撼著' => '撼着',
+'撼著書' => '撼著书',
+'撼著作' => '撼著作',
+'撼著名' => '撼著名',
+'撼著錄' => '撼著录',
+'撼著稱' => '撼著称',
+'撼著者' => '撼著者',
+'撼著述' => '撼著述',
+'作業系統' => '操作系统',
+'收帳' => '收账',
+'放著' => '放着',
+'放著作' => '放著作',
+'放著名' => '放著名',
+'放著称' => '放著称',
+'放著稱' => '放著称',
+'放帳' => '放账',
+'敞著' => '敞着',
+'敞著作' => '敞著作',
+'敞著名' => '敞著名',
+'敞著錄' => '敞著录',
+'敞著稱' => '敞著称',
+'敞著者' => '敞著者',
+'敞著述' => '敞著述',
+'散佈著' => '散布着',
+'散布著' => '散布着',
+'數位訊號' => '数字信号',
+'數碼訊號' => '数字信号',
+'數位化' => '数字化',
+'數位技術' => '数字技术',
+'數位電視' => '数字电视',
+'數碼電視' => '数字电视',
+'資料庫' => '数据库',
+'數著' => '数着',
+'數位照相機' => '数码照相机',
+'數位相機' => '数码相机',
+'數著作' => '数著作',
+'數著名' => '数著名',
+'數著錄' => '数著录',
+'數著稱' => '数著称',
+'數著者' => '数著者',
+'數著述' => '数著述',
+'汶萊' => '文莱',
+'鬥著' => '斗着',
+'鬥著書' => '斗著书',
+'鬥著作' => '斗著作',
+'鬥著名' => '斗著名',
+'鬥著錄' => '斗著录',
+'鬥著稱' => '斗著称',
+'鬥著者' => '斗著者',
+'鬥著述' => '斗著述',
+'斥著' => '斥着',
+'斥著書' => '斥著书',
+'斥著作' => '斥著作',
+'斥著名' => '斥著名',
+'斥著錄' => '斥著录',
+'斥著稱' => '斥著称',
+'斥著者' => '斥著者',
+'斥著述' => '斥著述',
+'史丹福大學' => '斯坦福大学',
+'史達林' => '斯大林',
+'史瓦濟蘭' => '斯威士兰',
+'斯洛維尼亞' => '斯洛文尼亚',
+'史特勞斯' => '斯特劳斯',
+'紐幾內亞' => '新几内亚',
+'紐澤西' => '新泽西',
+'紐西蘭' => '新西兰',
+'舊帳' => '旧账',
+'三藩市' => '旧金山',
+'昂山素姬' => '昂山素季',
+'翁山蘇姬' => '昂山素季',
+'昂著' => '昂着',
+'昂著書' => '昂著书',
+'昂著作' => '昂著作',
+'昂著名' => '昂著名',
+'昂著錄' => '昂著录',
+'昂著稱' => '昂著称',
+'昂著者' => '昂著者',
+'昂著述' => '昂著述',
+'明白帳' => '明白账',
+'映著' => '映着',
+'映著書' => '映著书',
+'映著作' => '映著作',
+'映著名' => '映著名',
+'映著錄' => '映著录',
+'映著稱' => '映著称',
+'映著者' => '映著者',
+'映著述' => '映著述',
+'顯示卡' => '显卡',
+'显著' => '显著',
+'顯著' => '显著',
+'晃著' => '晃着',
+'晃著作' => '晃著作',
+'晃著名' => '晃著名',
+'晃著錄' => '晃著录',
+'晃著稱' => '晃著称',
+'晃著者' => '晃著者',
+'晃著述' => '晃著述',
+'普利茲' => '普利策',
+'蒲美蓬' => '普密蓬',
+'蒲朗克' => '普朗克',
+'電晶體' => '晶体管',
+'智慧型' => '智能',
+'智慧卡' => '智能卡',
+'智慧手機' => '智能手机',
+'暗著' => '暗着',
+'暗著書' => '暗著书',
+'暗著作' => '暗著作',
+'暗著名' => '暗著名',
+'暗著錄' => '暗著录',
+'暗著稱' => '暗著称',
+'暗著者' => '暗著者',
+'暗著述' => '暗著述',
+'有著' => '有着',
+'有著書' => '有著书',
+'有著作' => '有著作',
+'有著名' => '有著名',
+'有著錄' => '有著录',
+'有著稱' => '有著称',
+'有著者' => '有著者',
+'有著述' => '有著述',
+'伺服器' => '服务器',
+'望著' => '望着',
+'望著作' => '望著作',
+'望著名' => '望著名',
+'望著錄' => '望著录',
+'望著稱' => '望著称',
+'望著者' => '望著者',
+'望著述' => '望著述',
+'朝著' => '朝着',
+'朝著作' => '朝著作',
+'朝著名' => '朝著名',
+'朝著錄' => '朝著录',
+'朝著稱' => '朝著称',
+'朝著者' => '朝著者',
+'朝著述' => '朝著述',
+'賓·拉登' => '本·拉登',
+'本份' => '本分',
+'賓拉登' => '本拉登',
+'本本份份' => '本本分分',
+'班傑明' => '本杰明',
+'本著' => '本着',
+'本著書' => '本著书',
+'本著作' => '本著作',
+'本著名' => '本著名',
+'本著錄' => '本著录',
+'本著稱' => '本著称',
+'本著者' => '本著者',
+'本著述' => '本著述',
+'本帳' => '本账',
+'機械人' => '机器人',
+'工具機' => '机床',
+'殺著' => '杀着',
+'殺著書' => '杀著书',
+'殺著作' => '杀著作',
+'殺著名' => '杀著名',
+'殺著錄' => '杀著录',
+'殺著稱' => '杀著称',
+'殺著者' => '杀著者',
+'殺著述' => '杀著述',
+'雜著' => '杂着',
+'雜著書' => '杂著书',
+'雜著作' => '杂著作',
+'雜著名' => '杂著名',
+'雜著錄' => '杂著录',
+'雜著稱' => '杂著称',
+'雜著者' => '杂著者',
+'雜著述' => '杂著述',
+'杜塞道夫' => '杜塞尔多夫',
+'來著' => '来着',
+'來著書' => '来著书',
+'來著作' => '来著作',
+'來著名' => '来著名',
+'來著錄' => '来著录',
+'來著稱' => '来著称',
+'來著者' => '来著者',
+'來著述' => '来著述',
+'板著臉' => '板着脸',
+'枕著' => '枕着',
+'枕著作' => '枕著作',
+'枕著名' => '枕著名',
+'枕著錄' => '枕著录',
+'枕著稱' => '枕著称',
+'枕著者' => '枕著者',
+'枕著述' => '枕著述',
+'槍枝' => '枪支',
+'柏林圍牆' => '柏林墙',
+'查帳' => '查账',
+'查維茲' => '查韦斯',
+'標志著' => '标志着',
+'標誌著' => '标志着',
+'格瑞那達' => '格林纳达',
+'格林美獎' => '格莱美奖',
+'葛萊美獎' => '格莱美奖',
+'森巴舞' => '桑巴舞',
+'梅赫西迪' => '梅赛德斯',
+'夢著' => '梦着',
+'夢著書' => '梦著书',
+'夢著作' => '梦著作',
+'夢著名' => '梦著名',
+'夢著錄' => '梦著录',
+'夢著稱' => '梦著称',
+'夢著者' => '梦著者',
+'夢著述' => '梦著述',
+'梳著' => '梳着',
+'梳著作' => '梳著作',
+'梳著名' => '梳著名',
+'梳著錄' => '梳著录',
+'梳著稱' => '梳著称',
+'梳著者' => '梳著者',
+'梳著述' => '梳著述',
+'梵谷' => '梵高',
+'機率' => '概率',
+'欠帳' => '欠账',
+'死帳' => '死账',
+'庇里牛斯' => '比利牛斯',
+'畢卡索' => '毕加索',
+'茅利塔尼亞' => '毛里塔尼亚',
+'模里西斯' => '毛里求斯',
+'毛里裘斯' => '毛里求斯',
+'公厘' => '毫米',
+'公釐' => '毫米',
+'氧份' => '氧分',
+'胺基酸' => '氨基酸',
+'水份' => '水分',
+'水氣' => '水汽',
+'求著' => '求着',
+'求著書' => '求著书',
+'求著作' => '求著作',
+'求著名' => '求著名',
+'求著錄' => '求著录',
+'求著稱' => '求著称',
+'求著者' => '求著者',
+'求著述' => '求著述',
+'漢諾瓦' => '汉诺威',
+'沈著' => '沉着',
+'沉著' => '沉着',
+'沉著書' => '沉著书',
+'沉著作' => '沉著作',
+'沉著名' => '沉著名',
+'沉著錄' => '沉著录',
+'沉著稱' => '沉著称',
+'沉著者' => '沉著者',
+'沉著述' => '沉著述',
+'沙地阿拉伯' => '沙特阿拉伯',
+'沙烏地阿拉伯' => '沙特阿拉伯',
+'沿著' => '沿着',
+'沿著書' => '沿著书',
+'沿著作' => '沿著作',
+'沿著名' => '沿著名',
+'沿著錄' => '沿著录',
+'沿著稱' => '沿著称',
+'沿著者' => '沿著者',
+'沿著述' => '沿著述',
+'玻里尼西亞' => '波利尼西亚',
+'波士尼亞' => '波斯尼亚',
+'波士尼亞赫塞哥維納' => '波斯尼亚和黑塞哥维那',
+'鐵達尼號' => '泰坦尼克号',
+'幫浦' => '泵',
+'辛巴威' => '津巴布韦',
+'宏都拉斯' => '洪都拉斯',
+'活著' => '活着',
+'活著書' => '活著书',
+'活著作' => '活著作',
+'活著名' => '活著名',
+'活著錄' => '活著录',
+'活著稱' => '活著称',
+'活著者' => '活著者',
+'活著述' => '活著述',
+'流水帳' => '流水账',
+'流著' => '流着',
+'流著書' => '流著书',
+'流著作' => '流著作',
+'流著名' => '流著名',
+'流著錄' => '流著录',
+'流著稱' => '流著称',
+'流著者' => '流著者',
+'流著述' => '流著述',
+'流露著' => '流露着',
+'浮著' => '浮着',
+'蘭卡威' => '浮罗交怡',
+'浮著書' => '浮著书',
+'浮著作' => '浮著作',
+'浮著名' => '浮著名',
+'浮著錄' => '浮著录',
+'浮著稱' => '浮著称',
+'浮著者' => '浮著者',
+'浮著述' => '浮著述',
+'海洛英' => '海洛因',
+'海浬' => '海里',
+'塗著' => '涂着',
+'潤著' => '润着',
+'潤著書' => '润著书',
+'潤著作' => '润著作',
+'潤著名' => '润著名',
+'潤著錄' => '润著录',
+'潤著稱' => '润著称',
+'潤著者' => '润著者',
+'潤著述' => '润著述',
+'混帳' => '混账',
+'清澈' => '清澈',
+'清帳' => '清账',
+'渴著' => '渴着',
+'渴著書' => '渴著书',
+'渴著作' => '渴著作',
+'渴著名' => '渴著名',
+'渴著錄' => '渴著录',
+'渴著稱' => '渴著称',
+'渴著者' => '渴著者',
+'渴著述' => '渴著述',
+'原始碼' => '源代码',
+'溢著' => '溢着',
+'溢著書' => '溢著书',
+'溢著作' => '溢著作',
+'溢著名' => '溢著名',
+'溢著錄' => '溢著录',
+'溢著稱' => '溢著称',
+'溢著者' => '溢著者',
+'溢著述' => '溢著述',
+'滑鼠蛇' => '滑鼠蛇',
+'滿16進位' => '满16进位',
+'滿二進位' => '满二进位',
+'滿八進位' => '满八进位',
+'滿六進位' => '满六进位',
+'滿十六進位' => '满十六进位',
+'滿十進位' => '满十进位',
+'滿著' => '满着',
+'滿著作' => '满著作',
+'滿著名' => '满著名',
+'滿著者' => '满著者',
+'演著' => '演着',
+'演著書' => '演著书',
+'演著作' => '演著作',
+'演著名' => '演著名',
+'演著錄' => '演著录',
+'演著稱' => '演著称',
+'演著者' => '演著者',
+'演著述' => '演著述',
+'漫著' => '漫着',
+'漫著書' => '漫著书',
+'漫著作' => '漫著作',
+'漫著名' => '漫著名',
+'漫著錄' => '漫著录',
+'漫著稱' => '漫著称',
+'漫著者' => '漫著者',
+'漫著述' => '漫著述',
+'雷射' => '激光',
+'點著' => '点着',
+'點著作' => '点著作',
+'點著名' => '点著名',
+'點著錄' => '点著录',
+'點著稱' => '点著称',
+'點著者' => '点著者',
+'點著述' => '点著述',
+'爛帳' => '烂账',
+'燒著' => '烧着',
+'燒著作' => '烧著作',
+'燒著名' => '烧著名',
+'燒著錄' => '烧著录',
+'燒著稱' => '烧著称',
+'燒著者' => '烧著者',
+'燒著述' => '烧著述',
+'照著' => '照着',
+'照著書' => '照著书',
+'照著作' => '照著作',
+'照著名' => '照著名',
+'照著錄' => '照著录',
+'照著稱' => '照著称',
+'照著者' => '照著者',
+'照著述' => '照著述',
+'愛護著' => '爱护着',
+'愛著' => '爱着',
+'愛著書' => '爱著书',
+'愛著作' => '爱著作',
+'愛著名' => '爱著名',
+'愛著錄' => '爱著录',
+'愛著稱' => '爱著称',
+'愛著者' => '爱著者',
+'愛著述' => '爱著述',
+'牽著' => '牵着',
+'牽著書' => '牵著书',
+'牽著作' => '牵著作',
+'牽著名' => '牵著名',
+'牽著錄' => '牵著录',
+'牽著稱' => '牵著称',
+'牽著者' => '牵著者',
+'牽著述' => '牵著述',
+'千里達' => '特立尼达',
+'千里達及托巴哥' => '特立尼达和多巴哥',
+'千里達托貝哥' => '特立尼达和托巴哥',
+'狗隻' => '犬只',
+'猶豫著' => '犹豫着',
+'獨立國家國協' => '独立国家联合体',
+'獨立國協' => '独联体',
+'猜著' => '猜着',
+'猜著書' => '猜着书',
+'猜著作' => '猜著作',
+'猜著名' => '猜著名',
+'猜著錄' => '猜著录',
+'猜著稱' => '猜著称',
+'猜著者' => '猜著者',
+'猜著述' => '猜著述',
+'玩著' => '玩着',
+'班固著' => '班固著',
+'溫納圖' => '瓦努阿图',
+'萬那杜' => '瓦努阿图',
+'華勒沙' => '瓦文萨',
+'華里沙' => '瓦文萨',
+'甜著' => '甜着',
+'甜著書' => '甜著书',
+'甜著作' => '甜著作',
+'甜著名' => '甜著名',
+'甜著錄' => '甜著录',
+'甜著稱' => '甜著称',
+'甜著者' => '甜著者',
+'甜著述' => '甜著述',
+'用著' => '用着',
+'用著書' => '用著书',
+'用著作' => '用著作',
+'用著名' => '用著名',
+'用著錄' => '用著录',
+'用著稱' => '用著称',
+'用著者' => '用著者',
+'用著述' => '用著述',
+'A型肝炎' => '甲型肝炎',
+'A肝' => '甲肝',
+'電視劇集' => '电视剧',
+'電視影集' => '电视系列剧',
+'畫著' => '画着',
+'畫著作' => '画著作',
+'畫著名' => '画著名',
+'畫著稱' => '画著称',
+'畫著者' => '画著者',
+'介面' => '界面',
+'留著' => '留着',
+'留著書' => '留着书',
+'留著作' => '留著作',
+'留著名' => '留著名',
+'留著錄' => '留著录',
+'留著稱' => '留著称',
+'留著者' => '留著者',
+'留著述' => '留著述',
+'疑著' => '疑着',
+'疑著書' => '疑著书',
+'疑著作' => '疑著作',
+'疑著名' => '疑著名',
+'疑著錄' => '疑著录',
+'疑著稱' => '疑著称',
+'疑著者' => '疑著者',
+'疑著述' => '疑著述',
+'狂牛症' => '疯牛病',
+'徵狀' => '症状',
+'百慕達' => '百慕大',
+'皮雅斯·布士南' => '皮尔斯·布鲁斯南',
+'皺著' => '皱着',
+'皺著書' => '皱著书',
+'皺著作' => '皱著作',
+'皺著名' => '皱著名',
+'皺著錄' => '皱著录',
+'皺著稱' => '皱著称',
+'皺著者' => '皱著者',
+'皺著述' => '皱著述',
+'鹽份' => '盐分',
+'蓋著' => '盖着',
+'蓋著作' => '盖著作',
+'蓋著名' => '盖著名',
+'蓋著稱' => '盖著称',
+'盛著' => '盛着',
+'盛著書' => '盛著书',
+'盛著作' => '盛著作',
+'盛著名' => '盛著名',
+'盛著錄' => '盛著录',
+'盛著稱' => '盛著称',
+'盛著者' => '盛著者',
+'盛著述' => '盛著述',
+'盯著' => '盯着',
+'盯著書' => '盯着书',
+'盯著作' => '盯著作',
+'盯著名' => '盯著名',
+'盯著錄' => '盯著录',
+'盯著稱' => '盯著称',
+'盯著者' => '盯著者',
+'盯著述' => '盯著述',
+'看著' => '看着',
+'看著書' => '看着书',
+'看著作' => '看著作',
+'看著名' => '看著名',
+'看著錄' => '看著录',
+'看著稱' => '看著称',
+'看著者' => '看著者',
+'看著述' => '看著述',
+'著業' => '着业',
+'著絲' => '着丝',
+'著麼' => '着么',
+'著人' => '着人',
+'著什麼' => '着什么',
+'著甚麽' => '着什么',
+'著他' => '着他',
+'著令' => '着令',
+'著位' => '着位',
+'著體' => '着体',
+'著你' => '着你',
+'著便' => '着便',
+'著涼' => '着凉',
+'著力' => '着力',
+'著勁' => '着劲',
+'著號' => '着号',
+'著呢' => '着呢',
+'著哩' => '着哩',
+'著地' => '着地',
+'著墨' => '着墨',
+'著聲' => '着声',
+'著處' => '着处',
+'著她' => '着她',
+'著妳' => '着妳',
+'著姓' => '着姓',
+'著它' => '着它',
+'著定' => '着定',
+'著實' => '着实',
+'著己' => '着己',
+'著帳' => '着帐',
+'著床' => '着床',
+'著庸' => '着庸',
+'著式' => '着式',
+'著錄' => '着录',
+'著心' => '着心',
+'著志' => '着志',
+'著忙' => '着忙',
+'著急' => '着急',
+'著惱' => '着恼',
+'著驚' => '着惊',
+'著想' => '着想',
+'著意' => '着意',
+'著慌' => '着慌',
+'著我' => '着我',
+'著手' => '着手',
+'著抹' => '着抹',
+'著摸' => '着摸',
+'著撰' => '着撰',
+'著數' => '着数',
+'著明' => '着明',
+'著末' => '着末',
+'著極' => '着极',
+'著格' => '着格',
+'著棋' => '着棋',
+'著氣' => '着气',
+'著法' => '着法',
+'著淺' => '着浅',
+'著火' => '着火',
+'著然' => '着然',
+'著甚' => '着甚',
+'著生' => '着生',
+'著疑' => '着疑',
+'著白' => '着白',
+'著相' => '着相',
+'著眼' => '着眼',
+'著著' => '着着',
+'著祂' => '着祂',
+'著積' => '着积',
+'著稿' => '着稿',
+'著筆' => '着笔',
+'著籍' => '着籍',
+'著緊' => '着紧',
+'著緑' => '着緑',
+'著絆' => '着绊',
+'著績' => '着绩',
+'著緋' => '着绯',
+'著綠' => '着绿',
+'著肉' => '着肉',
+'著腳' => '着脚',
+'著艦' => '着舰',
+'著色' => '着色',
+'著節' => '着节',
+'著花' => '着花',
+'著莫' => '着莫',
+'著落' => '着落',
+'著槁' => '着藁',
+'著衣' => '着衣',
+'著裝' => '着装',
+'著要' => '着要',
+'著警' => '着警',
+'著趣' => '着趣',
+'著邊' => '着边',
+'著迷' => '着迷',
+'著跡' => '着迹',
+'著重' => '着重',
+'著録' => '着録',
+'著聞' => '着闻',
+'著陸' => '着陆',
+'著雝' => '着雝',
+'著鞭' => '着鞭',
+'著題' => '着题',
+'著魔' => '着魔',
+'睡著' => '睡着',
+'睡著書' => '睡著书',
+'睡著作' => '睡著作',
+'睡著名' => '睡著名',
+'睡著錄' => '睡著录',
+'睡著稱' => '睡著称',
+'睡著者' => '睡著者',
+'睡著述' => '睡著述',
+'瞞著' => '瞒着',
+'瞞著書' => '瞒著书',
+'瞞著作' => '瞒著作',
+'瞞著名' => '瞒著名',
+'瞞著錄' => '瞒著录',
+'瞞著稱' => '瞒著称',
+'瞞著者' => '瞒著者',
+'瞞著述' => '瞒著述',
+'瞧著' => '瞧着',
+'瞧著書' => '瞧着书',
+'瞧著作' => '瞧著作',
+'瞧著名' => '瞧著名',
+'瞧著錄' => '瞧著录',
+'瞧著稱' => '瞧著称',
+'瞧著者' => '瞧著者',
+'瞧著述' => '瞧著述',
+'瞪著' => '瞪着',
+'瞪著書' => '瞪著书',
+'瞪著作' => '瞪著作',
+'瞪著名' => '瞪著名',
+'瞪著錄' => '瞪著录',
+'瞪著稱' => '瞪著称',
+'瞪著者' => '瞪著者',
+'瞪著述' => '瞪著述',
+'矛盾著' => '矛盾着',
+'智慧財產權' => '知识产权',
+'智財權' => '知识产权',
+'知識份子' => '知识分子',
+'什勒斯維希' => '石勒苏益格',
+'矽塵' => '矽尘',
+'矽尘' => '矽尘',
+'矽肺' => '矽肺',
+'矽鋼' => '矽钢',
+'矽钢' => '矽钢',
+'矽' => '硅',
+'矽片' => '硅片',
+'矽谷' => '硅谷',
+'硬體' => '硬件',
+'硬碟' => '硬盘',
+'磁碟' => '磁盘',
+'磁軌' => '磁道',
+'福馬林' => '福尔马林',
+'福著' => '福着',
+'福著書' => '福著书',
+'福著作' => '福著作',
+'福著名' => '福著名',
+'福著錄' => '福著录',
+'福著稱' => '福著称',
+'福著者' => '福著者',
+'福著述' => '福著述',
+'私帳' => '私账',
+'葛摩' => '科摩罗',
+'象牙海岸' => '科特迪瓦',
+'積極份子' => '积极分子',
+'流動電話' => '移动电话',
+'行動電話' => '移动电话',
+'流動網絡' => '移动网络',
+'行動網路' => '移动网络',
+'程式設計師' => '程序员',
+'程式控制' => '程控',
+'空中巴士' => '空中客车',
+'空氣品質' => '空气质量',
+'空氣質素' => '空气质量',
+'空著' => '空着',
+'空著書' => '空著书',
+'空著作' => '空著作',
+'空著名' => '空著名',
+'空著錄' => '空著录',
+'空著稱' => '空著称',
+'空著者' => '空著者',
+'空著述' => '空著述',
+'穿著' => '穿着',
+'穿著書' => '穿著书',
+'穿著作' => '穿著作',
+'穿著名' => '穿著名',
+'穿著錄' => '穿著录',
+'穿著稱' => '穿著称',
+'穿著者' => '穿著者',
+'穿著述' => '穿著述',
+'突尼西亞' => '突尼斯',
+'立著' => '立着',
+'立著《' => '立著《',
+'立著作' => '立著作',
+'立著名' => '立著名',
+'立著有' => '立著有',
+'立著称' => '立著称',
+'立著稱' => '立著称',
+'立著者' => '立著者',
+'立著(' => '立著(',
+'豎著' => '竖着',
+'豎著書' => '竖著书',
+'豎著作' => '竖著作',
+'豎著名' => '竖著名',
+'豎著錄' => '竖著录',
+'豎著稱' => '竖著称',
+'豎著者' => '竖著者',
+'豎著述' => '竖著述',
+'站著' => '站着',
+'站著書' => '站著书',
+'站著作' => '站著作',
+'站著名' => '站著名',
+'站著錄' => '站著录',
+'站著稱' => '站著称',
+'站著者' => '站著者',
+'站著述' => '站著述',
+'笑著' => '笑着',
+'笑著書' => '笑著书',
+'笑著作' => '笑著作',
+'笑著名' => '笑著名',
+'笑著錄' => '笑著录',
+'笑著稱' => '笑著称',
+'笑著者' => '笑著者',
+'笑著述' => '笑著述',
+'筆帳' => '笔账',
+'提比里西' => '第比利斯',
+'簽著' => '签着',
+'簽帳' => '签账',
+'運算元' => '算子',
+'演算法' => '算法',
+'算帳' => '算账',
+'管著' => '管着',
+'管著書' => '管著书',
+'管著作' => '管著作',
+'管著名' => '管著名',
+'管著錄' => '管著录',
+'管著稱' => '管著称',
+'管著者' => '管著者',
+'管著述' => '管著述',
+'管帳' => '管账',
+'公尺' => '米',
+'糊塗帳' => '糊涂账',
+'糖份' => '糖分',
+'動畫影集' => '系列动画片',
+'繫著' => '系着',
+'索忍尼辛' => '索尔仁尼琴',
+'索贊尼辛' => '索尔仁尼琴',
+'蘇辛尼津' => '索尔仁尼琴',
+'索馬利亞' => '索马里',
+'索馬利蘭' => '索马里兰',
+'正體中文' => '繁体中文',
+'強斯頓環礁' => '约翰斯顿岛',
+'縱著' => '纵着',
+'組份' => '组分',
+'經常帳' => '经常账',
+'經濟帳' => '经济账',
+'綁著' => '绑着',
+'綁著書' => '绑著书',
+'綁著作' => '绑著作',
+'綁著名' => '绑著名',
+'綁著錄' => '绑著录',
+'綁著稱' => '绑著称',
+'綁著者' => '绑著者',
+'綁著述' => '绑著述',
+'結帳' => '结账',
+'繞著' => '绕着',
+'繞著書' => '绕著书',
+'繞著作' => '绕著作',
+'繞著名' => '绕著名',
+'繞著錄' => '绕著录',
+'繞著稱' => '绕著称',
+'繞著者' => '绕著者',
+'繞著述' => '绕著述',
+'維根斯坦' => '维特根斯坦',
+'繃著' => '绷着',
+'緣份' => '缘分',
+'纏著' => '缠着',
+'纏著書' => '缠著书',
+'纏著作' => '缠著作',
+'纏著名' => '缠著名',
+'纏著錄' => '缠著录',
+'纏著稱' => '缠著称',
+'纏著者' => '缠著者',
+'纏著述' => '缠著述',
+'網站連結' => '网站链接',
+'網路' => '网络',
+'網頁連結' => '网页链接',
+'罩著' => '罩着',
+'罩著書' => '罩著书',
+'罩著作' => '罩著作',
+'罩著名' => '罩著名',
+'罩著錄' => '罩著录',
+'罩著稱' => '罩著称',
+'罩著者' => '罩著者',
+'罩著述' => '罩著述',
+'美著' => '美着',
+'美著書' => '美著书',
+'美著作' => '美著作',
+'美著名' => '美著名',
+'美著錄' => '美著录',
+'美著称' => '美著称',
+'美著稱' => '美著称',
+'美著者' => '美著者',
+'美著述' => '美著述',
+'耀著' => '耀着',
+'耀著書' => '耀著书',
+'耀著作' => '耀著作',
+'耀著名' => '耀著名',
+'耀著錄' => '耀著录',
+'耀著稱' => '耀著称',
+'耀著者' => '耀著者',
+'耀著述' => '耀著述',
+'寮國' => '老挝',
+'寮人民民主共和國' => '老挝人民民主共和国',
+'寮語' => '老挝语',
+'考著' => '考着',
+'考著書' => '考著书',
+'考著作' => '考著作',
+'考著名' => '考著名',
+'考著錄' => '考著录',
+'考著稱' => '考著称',
+'考著者' => '考著者',
+'考著述' => '考著述',
+'職份' => '职分',
+'辛康納利' => '肖恩·康纳利',
+'蕭士塔高維奇' => '肖斯塔科维奇',
+'蕭士達高維契' => '肖斯塔科维奇',
+'甘迺迪' => '肯尼迪',
+'背著' => '背着',
+'背著書' => '背著书',
+'背著作' => '背著作',
+'背著名' => '背著名',
+'背著錄' => '背著录',
+'背著稱' => '背著称',
+'背著者' => '背著者',
+'背著述' => '背著述',
+'膠著' => '胶着',
+'膠著書' => '胶著书',
+'膠著作' => '胶著作',
+'膠著名' => '胶著名',
+'膠著錄' => '胶著录',
+'膠著稱' => '胶著称',
+'膠著者' => '胶著者',
+'膠著述' => '胶著述',
+'舒麥加' => '舒马赫',
+'太空梭' => '航天飞机',
+'穿梭機' => '航天飞机',
+'愛滋' => '艾滋',
+'晶元' => '芯片',
+'晶片' => '芯片',
+'蘇利南' => '苏里南',
+'苦著' => '苦着',
+'苦著書' => '苦著书',
+'苦著作' => '苦著作',
+'苦著名' => '苦著名',
+'苦著錄' => '苦著录',
+'苦著稱' => '苦著称',
+'苦著者' => '苦著者',
+'苦著述' => '苦著述',
+'英吋' => '英寸',
+'英呎' => '英尺',
+'共和联邦' => '英联邦',
+'大英國協' => '英联邦',
+'士多啤梨' => '草莓',
+'螢光棒' => '荧光棒',
+'螢屏' => '荧屏',
+'霍爾斯坦' => '荷尔斯泰因',
+'莫三比克' => '莫桑比克',
+'雷伊泰灣' => '莱特湾',
+'賴索托' => '莱索托',
+'獲著' => '获着',
+'穫著' => '获着',
+'獲著書' => '获著书',
+'獲著作' => '获著作',
+'獲著名' => '获著名',
+'獲著錄' => '获著录',
+'獲著稱' => '获著称',
+'獲著者' => '获著者',
+'獲著述' => '获著述',
+'塞拉耶佛' => '萨拉热窝',
+'落著' => '落着',
+'落著書' => '落著书',
+'落著作' => '落著作',
+'落著名' => '落著名',
+'落著錄' => '落著录',
+'落著稱' => '落著称',
+'落著者' => '落著者',
+'落著述' => '落著述',
+'滿地可' => '蒙特利尔',
+'蒙特婁' => '蒙特利尔',
+'蒙著' => '蒙着',
+'蒙著書' => '蒙著书',
+'蒙著作' => '蒙著作',
+'蒙著名' => '蒙著名',
+'蒙著錄' => '蒙著录',
+'蒙著稱' => '蒙著称',
+'蒙著者' => '蒙著者',
+'蒙著述' => '蒙著述',
+'藍芽' => '蓝牙',
+'蘊涵著' => '蕴涵着',
+'薛丁格' => '薛定谔',
+'藏著' => '藏着',
+'藏著書' => '藏著书',
+'藏著作' => '藏著作',
+'藏著名' => '藏著名',
+'藏著錄' => '藏著录',
+'藏著稱' => '藏著称',
+'藏著者' => '藏著者',
+'藏著述' => '藏著述',
+'蘸著' => '蘸着',
+'蘸著書' => '蘸著书',
+'蘸著作' => '蘸著作',
+'蘸著名' => '蘸著名',
+'蘸著錄' => '蘸著录',
+'蘸著稱' => '蘸著称',
+'蘸著者' => '蘸著者',
+'蘸著述' => '蘸著述',
+'行人路权' => '行人路权',
+'行人路權' => '行人路权',
+'行著' => '行着',
+'行著書' => '行著书',
+'行著作' => '行著作',
+'行著名' => '行著名',
+'行著錄' => '行著录',
+'行著稱' => '行著称',
+'行著者' => '行著者',
+'行著述' => '行著述',
+'衣著' => '衣着',
+'衣著書' => '衣著书',
+'衣著作' => '衣著作',
+'衣著名' => '衣著名',
+'衣著錄' => '衣著录',
+'衣著称' => '衣著称',
+'衣著稱' => '衣著称',
+'衣著者' => '衣著者',
+'衣著述' => '衣著述',
+'表姊' => '表姐',
+'裝著' => '装着',
+'裝著書' => '装著书',
+'裝著作' => '装著作',
+'裝著名' => '装著名',
+'裝著錄' => '装著录',
+'裝著稱' => '装著称',
+'裝著者' => '装著者',
+'裝著述' => '装著述',
+'裹著' => '裹着',
+'裹著書' => '裹著书',
+'裹著作' => '裹著作',
+'裹著名' => '裹著名',
+'裹著錄' => '裹著录',
+'裹著稱' => '裹著称',
+'裹著者' => '裹著者',
+'裹著述' => '裹著述',
+'要帳' => '要账',
+'覆蓋著' => '覆盖着',
+'覆著' => '覆着',
+'見著' => '见着',
+'見著書' => '见著书',
+'見著作' => '见著作',
+'見著名' => '见著名',
+'見著錄' => '见著录',
+'見著稱' => '见著称',
+'見著者' => '见著者',
+'見著述' => '见著述',
+'規畫' => '规划',
+'視著' => '视着',
+'視著名' => '视著名',
+'占士邦' => '詹姆斯·邦德',
+'警戒著' => '警戒着',
+'計畫' => '计划',
+'電腦程式' => '计算机程序',
+'認帳' => '认账',
+'記著' => '记着',
+'記著書' => '记著书',
+'記著作' => '记著作',
+'記著名' => '记著名',
+'記著錄' => '记著录',
+'記著稱' => '记著称',
+'記著者' => '记著者',
+'記著述' => '记著述',
+'記帳' => '记账',
+'片語' => '词组',
+'試著' => '试着',
+'試著書' => '试著书',
+'試著作' => '试著作',
+'試著名' => '试著名',
+'試著錄' => '试著录',
+'試著稱' => '试著称',
+'試著者' => '试著者',
+'試著述' => '试著述',
+'語著' => '语着',
+'語著書' => '语著书',
+'語著作' => '语著作',
+'語著名' => '语著名',
+'語著錄' => '语著录',
+'語著稱' => '语著称',
+'語著者' => '语著者',
+'語著述' => '语著述',
+'說著' => '说着',
+'說著作' => '说著作',
+'說著稱' => '说著称',
+'說著者' => '说著者',
+'說著述' => '说著述',
+'諾曼第' => '诺曼底',
+'數據機' => '调制解调器',
+'象徵著' => '象征着',
+'象徵著名' => '象征著名',
+'碧咸' => '贝克汉姆',
+'貝爾格勒' => '贝尔格莱德',
+'負著' => '负着',
+'貢寮' => '贡寮',
+'帳上' => '账上',
+'帳冊' => '账册',
+'帳務' => '账务',
+'帳單' => '账单',
+'帳號' => '账号',
+'帳外' => '账外',
+'帳戶' => '账户',
+'帳房' => '账房',
+'帳本' => '账本',
+'帳款' => '账款',
+'帳目' => '账目',
+'帳簿' => '账簿',
+'帳面' => '账面',
+'賒帳' => '赊账',
+'賴帳' => '赖账',
+'尚比亞' => '赞比亚',
+'西臺人' => '赫梯人',
+'西臺國' => '赫梯国',
+'西臺帝' => '赫梯帝',
+'西臺文' => '赫梯文',
+'西臺族' => '赫梯族',
+'西臺王' => '赫梯王',
+'西臺語' => '赫梯语',
+'赫魯雪夫' => '赫鲁晓夫',
+'走為上著' => '走为上着',
+'走著' => '走着',
+'走著書' => '走著书',
+'走著作' => '走著作',
+'走著名' => '走著名',
+'走著錄' => '走著录',
+'走著稱' => '走著称',
+'走著者' => '走著者',
+'走著述' => '走著述',
+'趕著' => '赶着',
+'趕著書' => '赶著书',
+'趕著作' => '赶著作',
+'趕著名' => '赶著名',
+'趕著錄' => '赶著录',
+'趕著稱' => '赶著称',
+'趕著者' => '赶著者',
+'趕著述' => '赶著述',
+'超連結' => '超链接',
+'趴著' => '趴着',
+'趴著書' => '趴著书',
+'趴著作' => '趴著作',
+'趴著名' => '趴著名',
+'趴著錄' => '趴著录',
+'趴著稱' => '趴著称',
+'趴著者' => '趴著者',
+'趴著述' => '趴著述',
+'躍著' => '跃着',
+'躍著書' => '跃著书',
+'躍著作' => '跃著作',
+'躍著名' => '跃著名',
+'躍著錄' => '跃著录',
+'躍著稱' => '跃著称',
+'躍著者' => '跃著者',
+'躍著述' => '跃著述',
+'跑著' => '跑着',
+'跑著書' => '跑著书',
+'跑著作' => '跑著作',
+'跑著名' => '跑著名',
+'跑著錄' => '跑著录',
+'跑著稱' => '跑著称',
+'跑著者' => '跑著者',
+'跑著述' => '跑著述',
+'跟著' => '跟着',
+'跟著書' => '跟著书',
+'跟著作' => '跟著作',
+'跟著名' => '跟著名',
+'跟著錄' => '跟著录',
+'跟著稱' => '跟著称',
+'跟著者' => '跟著者',
+'跟著述' => '跟著述',
+'跪著' => '跪着',
+'跪著書' => '跪著书',
+'跪著作' => '跪著作',
+'跪著名' => '跪著名',
+'跪著錄' => '跪著录',
+'跪著稱' => '跪著称',
+'跪著者' => '跪著者',
+'跪著述' => '跪著述',
+'跳著' => '跳着',
+'跳著書' => '跳著书',
+'跳著作' => '跳著作',
+'跳著名' => '跳著名',
+'跳著錄' => '跳著录',
+'跳著稱' => '跳著称',
+'跳著者' => '跳著者',
+'跳著述' => '跳著述',
+'踏著' => '踏着',
+'踏著書' => '踏著书',
+'踏著作' => '踏著作',
+'踏著名' => '踏著名',
+'踏著錄' => '踏著录',
+'踏著稱' => '踏著称',
+'踏著者' => '踏著者',
+'踏著述' => '踏著述',
+'踩著' => '踩着',
+'踩著書' => '踩著书',
+'踩著作' => '踩著作',
+'踩著名' => '踩著名',
+'踩著錄' => '踩著录',
+'踩著稱' => '踩著称',
+'踩著者' => '踩著者',
+'踩著述' => '踩著述',
+'笨豬跳' => '蹦极跳',
+'绑紧跳' => '蹦极跳',
+'身分' => '身份',
+'身著' => '身着',
+'身著書' => '身著书',
+'身著作' => '身著作',
+'身著名' => '身著名',
+'身著錄' => '身著录',
+'身著稱' => '身著称',
+'身著者' => '身著者',
+'身著述' => '身著述',
+'躺著' => '躺着',
+'躺著書' => '躺著书',
+'躺著作' => '躺著作',
+'躺著名' => '躺著名',
+'躺著錄' => '躺著录',
+'躺著稱' => '躺著称',
+'躺著者' => '躺著者',
+'躺著述' => '躺著述',
+'轉著' => '转着',
+'轉著書' => '转著书',
+'轉著作' => '转著作',
+'轉著名' => '转著名',
+'轉著錄' => '转著录',
+'轉著稱' => '转著称',
+'轉著者' => '转著者',
+'轉著述' => '转著述',
+'轉帳' => '转账',
+'軟體' => '软件',
+'軟體動物' => '软体动物',
+'軟體家具' => '软体家具',
+'軟碟機' => '软驱',
+'載著' => '载着',
+'載著書' => '载著书',
+'載著作' => '载著作',
+'載著名' => '载著名',
+'載著錄' => '载著录',
+'載著稱' => '载著称',
+'載著者' => '载著者',
+'載著述' => '载著述',
+'達·文西' => '达·芬奇',
+'達著' => '达着',
+'三蘭港' => '达累斯萨拉姆',
+'達文西' => '达芬奇',
+'達著書' => '达著书',
+'達著作' => '达著作',
+'達著名' => '达著名',
+'達著錄' => '达著录',
+'達著稱' => '达著称',
+'達著者' => '达著者',
+'達著述' => '达著述',
+'過份' => '过分',
+'過著' => '过着',
+'過著作' => '过著作',
+'過著名' => '过著名',
+'過著錄' => '过著录',
+'過著稱' => '过著称',
+'過著者' => '过著者',
+'過著述' => '过著述',
+'米高·奧雲' => '迈克尔·欧文',
+'還帳' => '还账',
+'演化論' => '进化论',
+'進帳' => '进账',
+'連著' => '连着',
+'連結他' => '连结他',
+'連著書' => '连著书',
+'連著作' => '连著作',
+'連著名' => '连著名',
+'連著錄' => '连著录',
+'連著稱' => '连著称',
+'連著者' => '连著者',
+'連著述' => '连著述',
+'杜拜' => '迪拜',
+'迫著' => '迫着',
+'疊代' => '迭代',
+'追著' => '追着',
+'追著書' => '追著书',
+'追著作' => '追著作',
+'追著名' => '追著名',
+'追著錄' => '追著录',
+'追著稱' => '追著称',
+'追著者' => '追著者',
+'追著述' => '追著述',
+'逆著' => '逆着',
+'逆著書' => '逆著书',
+'逆著作' => '逆著作',
+'逆著名' => '逆著名',
+'逆著錄' => '逆著录',
+'逆著稱' => '逆著称',
+'逆著者' => '逆著者',
+'逆著述' => '逆著述',
+'逼著' => '逼着',
+'逼著書' => '逼著书',
+'逼著作' => '逼著作',
+'逼著名' => '逼著名',
+'逼著錄' => '逼著录',
+'逼著稱' => '逼著称',
+'逼著者' => '逼著者',
+'逼著述' => '逼著述',
+'遇著' => '遇着',
+'遇著書' => '遇著书',
+'遇著作' => '遇著作',
+'遇著名' => '遇著名',
+'遇著錄' => '遇著录',
+'遇著称' => '遇著称',
+'遇著稱' => '遇著称',
+'遇著者' => '遇著者',
+'遇著述' => '遇著述',
+'遍佈著' => '遍布着',
+'遍布著' => '遍布着',
+'部份' => '部分',
+'配合著' => '配合着',
+'配合著名' => '配合著名',
+'配著' => '配着',
+'配著書' => '配著书',
+'配著作' => '配著作',
+'配著名' => '配著名',
+'配著錄' => '配著录',
+'配著稱' => '配著称',
+'配著者' => '配著者',
+'配著述' => '配著述',
+'釀著' => '酿着',
+'釀著書' => '酿著书',
+'釀著作' => '酿著作',
+'釀著名' => '酿著名',
+'釀著錄' => '酿著录',
+'釀著稱' => '酿著称',
+'釀著者' => '酿著者',
+'釀著述' => '酿著述',
+'黎克特制' => '里氏',
+'芮氏0' => '里氏0',
+'芮氏1' => '里氏1',
+'芮氏2' => '里氏2',
+'芮氏3' => '里氏3',
+'芮氏4' => '里氏4',
+'芮氏5' => '里氏5',
+'芮氏6' => '里氏6',
+'芮氏7' => '里氏7',
+'芮氏8' => '里氏8',
+'芮氏9' => '里氏9',
+'芮氏地震規模' => '里氏地震规模',
+'芮氏規模' => '里氏震级',
+'金夏沙' => '金沙萨',
+'鈽' => '钚',
+'鍅' => '钫',
+'狄托' => '铁托',
+'卯足' => '铆足',
+'鋪著' => '铺着',
+'鋪著書' => '铺著书',
+'鋪著作' => '铺著作',
+'鋪著名' => '铺著名',
+'鋪著錄' => '铺著录',
+'鋪著稱' => '铺著称',
+'鋪著者' => '铺著者',
+'鋪著述' => '铺著述',
+'鏈結' => '链接',
+'銷帳' => '销账',
+'鉲' => '锎',
+'鎝' => '锝',
+'鉳' => '锫',
+'鑀' => '锿',
+'鋂' => '镅',
+'錼' => '镎',
+'孟德爾遜' => '门德尔松',
+'孟德爾頌' => '门德尔松',
+'快閃記憶體' => '闪存',
+'閉著' => '闭着',
+'閉著書' => '闭著书',
+'閉著作' => '闭著作',
+'閉著名' => '闭著名',
+'閉著錄' => '闭著录',
+'閉著稱' => '闭著称',
+'閉著者' => '闭著者',
+'閉著述' => '闭著述',
+'閑著' => '闲着',
+'閒著' => '闲着',
+'閑著書' => '闲著书',
+'閑著作' => '闲著作',
+'閑著名' => '闲著名',
+'閑著錄' => '闲著录',
+'閑著稱' => '闲著称',
+'閑著者' => '闲著者',
+'閑著述' => '闲著述',
+'悶著' => '闷着',
+'鬧著' => '闹着',
+'聞著' => '闻着',
+'亞塞拜然' => '阿塞拜疆',
+'阿布達比' => '阿布扎比',
+'阿拉伯聯合大公國' => '阿拉伯联合酋长国',
+'亞斯文' => '阿斯旺',
+'附著' => '附着',
+'附著書' => '附著书',
+'附著作' => '附著作',
+'附著名' => '附著名',
+'附著錄' => '附著录',
+'附著稱' => '附著称',
+'附著者' => '附著者',
+'附著述' => '附著述',
+'陋著' => '陋着',
+'陋著書' => '陋著书',
+'陋著作' => '陋著作',
+'陋著名' => '陋著名',
+'陋著錄' => '陋著录',
+'陋著稱' => '陋著称',
+'陋著者' => '陋著者',
+'陋著述' => '陋著述',
+'陪著' => '陪着',
+'陪著書' => '陪著书',
+'陪著作' => '陪著作',
+'陪著名' => '陪著名',
+'陪著錄' => '陪著录',
+'陪著稱' => '陪著称',
+'陪著者' => '陪著者',
+'陪著述' => '陪著述',
+'隨著' => '随着',
+'隨著書' => '随著书',
+'隨著作' => '随著作',
+'隨著名' => '随著名',
+'隨著錄' => '随著录',
+'隨著稱' => '随著称',
+'隨著者' => '随著者',
+'隨著述' => '随著述',
+'私隱' => '隐私',
+'隔著' => '隔着',
+'隔著書' => '隔著书',
+'隔著作' => '隔著作',
+'隔著名' => '隔著名',
+'隔著錄' => '隔著录',
+'隔著稱' => '隔著称',
+'隔著者' => '隔著者',
+'隔著述' => '隔著述',
+'耶加達' => '雅加达',
+'雅爾達' => '雅尔塔',
+'雅著' => '雅着',
+'雅著書' => '雅著书',
+'雅著作' => '雅著作',
+'雅著名' => '雅著名',
+'雅著錄' => '雅著录',
+'雅著称' => '雅著称',
+'雅著稱' => '雅著称',
+'雅著者' => '雅著者',
+'雅著述' => '雅著述',
+'雷諾瓦' => '雷诺阿',
+'荷姆茲' => '霍尔木兹',
+'非份' => '非分',
+'靠著' => '靠着',
+'靠著作' => '靠著作',
+'靠著名' => '靠著名',
+'靠著錄' => '靠著录',
+'靠著稱' => '靠著称',
+'靠著者' => '靠著者',
+'靠著述' => '靠著述',
+'南韓' => '韩国',
+'音樂錄影帶' => '音乐录影带',
+'頂著' => '顶着',
+'頂著書' => '顶著书',
+'頂著作' => '顶著作',
+'頂著名' => '顶著名',
+'頂著錄' => '顶著录',
+'頂著稱' => '顶著称',
+'頂著者' => '顶著者',
+'頂著述' => '顶著述',
+'順著' => '顺着',
+'順著書' => '顺著书',
+'順著作' => '顺著作',
+'順著名' => '顺著名',
+'順著錄' => '顺著录',
+'順著稱' => '顺著称',
+'順著者' => '顺著者',
+'順著述' => '顺著述',
+'領著' => '领着',
+'領著書' => '领著书',
+'領著作' => '领著作',
+'領著名' => '领著名',
+'領著錄' => '领著录',
+'領著稱' => '领著称',
+'領著者' => '领著者',
+'領著述' => '领著述',
+'飃著' => '飘着',
+'飄著' => '飘着',
+'飄著書' => '飘著书',
+'飄著作' => '飘著作',
+'飄著名' => '飘著名',
+'飄著錄' => '飘著录',
+'飄著稱' => '飘著称',
+'飄著者' => '飘著者',
+'飄著述' => '飘著述',
+'行政總裁' => '首席执行官',
+'執行長、' => '首席执行官、',
+'執行長。' => '首席执行官。',
+'執行長,' => '首席执行官,',
+'財務長、' => '首席财务官、',
+'財務長。' => '首席财务官。',
+'財務長,' => '首席财务官,',
+'營運長、' => '首席运营官、',
+'營運長。' => '首席运营官。',
+'營運長,' => '首席运营官,',
+'馬爾地夫' => '马尔代夫',
+'萌島' => '马恩岛',
+'馬拉威' => '马拉维',
+'馬斯垂克' => '马斯特里赫特',
+'馬爾他' => '马耳他',
+'麻薩諸塞' => '马萨诸塞',
+'馬利共和國' => '马里共和国',
+'駛著' => '驶着',
+'駕著' => '驾着',
+'駕著書' => '驾著书',
+'駕著作' => '驾著作',
+'駕著名' => '驾著名',
+'駕著錄' => '驾著录',
+'駕著稱' => '驾著称',
+'駕著者' => '驾著者',
+'駕著述' => '驾著述',
+'罵著' => '骂着',
+'罵著書' => '骂著书',
+'罵著作' => '骂著作',
+'罵著名' => '骂著名',
+'罵著錄' => '骂著录',
+'罵著稱' => '骂著称',
+'罵著者' => '骂著者',
+'罵著述' => '骂著述',
+'騎著' => '骑着',
+'騎著書' => '骑著书',
+'騎著作' => '骑著作',
+'騎著名' => '骑著名',
+'騎著錄' => '骑著录',
+'騎著稱' => '骑著称',
+'騎著者' => '骑著者',
+'騎著述' => '骑著述',
+'騙著' => '骗着',
+'騙著書' => '骗著书',
+'騙著作' => '骗著作',
+'騙著名' => '骗著名',
+'騙著錄' => '骗著录',
+'騙著稱' => '骗著称',
+'騙著者' => '骗著者',
+'騙著述' => '骗著述',
+'尖峰時段' => '高峰时段',
+'尖峰時間' => '高峰时间',
+'高畫質' => '高清',
+'高著' => '高着',
+'高著書' => '高著书',
+'高著作' => '高著作',
+'高著名' => '高著名',
+'高著錄' => '高著录',
+'高著称' => '高著称',
+'高著稱' => '高著称',
+'高著者' => '高著者',
+'高著述' => '高著述',
+'魚雷' => '鱼雷',
+'鱼雷' => '鱼雷',
+'咪高峰' => '麦克风',
+'黏著' => '黏着',
+'黏著書' => '黏著书',
+'黏著作' => '黏著作',
+'黏著名' => '黏著名',
+'黏著錄' => '黏著录',
+'黏著稱' => '黏著称',
+'黏著者' => '黏著者',
+'黏著述' => '黏著述',
+'蒙特內哥羅' => '黑山',
+'滑鼠' => '鼠标',
+);
+}
index 51e930c..59c868c 100644 (file)
        "passwordreset-emailtext-ip": "Iemand, waarskynlik u vanaf die IP-adres $1, het u gebruikersgegewens vir {{SITENAME}} ($4) opgevra.\nDie volgende {{PLURAL:$3|gebruiker is|gebruikers is}} aan die e-posadres gekoppel:\n\n$2\n\n{{PLURAL:$3|Die tydelike wagwoord verval|Hierdie tydelike wagwoorde verval}} oor {{PLURAL:$5|een dag|$5 dae}}.\nMeld asseblief nou aan en wysig u wagwoord. As u dit nie versoek het nie, of as u die oorspronklike wagwoord nog ken en dit nie wil verander nie, ignoreer die berig en hou aan om u ou wagwoord te gebruik.",
        "passwordreset-emailtext-user": "Gebruiker $1 op die webtuiste {{SITENAME}} het u gebruikersgegewens vir {{SITENAME}} ($4) opgevra.\nDie volgende {{PLURAL:$3|gebruiker is|gebruikers is}} aan die e-posadres gekoppel:\n\n$2\n\n{{PLURAL:$3|Die tydelike wagwoord verval|Hierdie tydelike wagwoorde verval}} oor {{PLURAL:$5|een dag|$5 dae}}.\nMeld asseblief aan en verander u wagwoord nou. As u dit nie versoek het nie, of as u die oorspronklike wagwoord nog ken en dit nie wil verander nie, ignoreer die berig en hou aan om u ou wagwoord te gebruik.",
        "passwordreset-emailelement": "Gebruikersnaam: \n$1\n\nTydelike wagwoord: \n$2",
-       "passwordreset-emailsent": "'n E-pos is gestuur om u wagwoord te herstel.",
+       "passwordreset-emailsentemail": "'n E-pos is gestuur om u wagwoord te herstel.",
        "passwordreset-emailsent-capture": "'n E-pos vir die herstel van 'n wagwoord is gestuur. Dit word hieronder vertoon.",
        "passwordreset-emailerror-capture": "'n E-pos vir die herstel van 'n wagwoord is saamgestel. Dit word hieronder vertoon. Die uitstuur daarvan na die {{GENDER:$2|gebruiker}} het egter gefaal: $1",
        "changeemail": "Wysig E-posadres",
        "prefs-displayrc": "Vertoonopsies",
        "prefs-displaywatchlist": "Weergaweopsies",
        "prefs-diffs": "Verskille",
-       "email-address-validity-valid": "Die e-posadres lyk geldig",
-       "email-address-validity-invalid": "Verskaf 'n geldige e-posadres",
        "userrights": "Bestuur gebruikersregte",
        "userrights-lookup-user": "Beheer gebruikersgroepe",
        "userrights-user-editname": "Voer gebruikersnaam in:",
        "right-blockemail": "Ontneem 'n gebruiker die reg om E-pos te stuur",
        "right-hideuser": "Blokkeer 'n gebruiker, versteek dit van die publiek",
        "right-ipblock-exempt": "Omseil IP-blokkades",
-       "right-proxyunbannable": "Blokkades vir instaanbedieners (proxy's) geld nie",
        "right-unblockself": "Eie gebruiker deblokkeer",
        "right-protect": "Verander beveiligingsvlakke en wysig kaskade-beskermde bladsye",
        "right-editprotected": "Wysig bladsye beskermd as \"{{int:protect-level-sysop}}\"",
        "watchthisupload": "Hou die lêer dop",
        "filewasdeleted": "'n Lêer met hierdie naam is al voorheen opgelaai en daarna geskrap.\nKyk asseblief na die $1 voor u aangaan om dit weer op te laai.",
        "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.\nKies asseblief 'n meer beskrywende naam vir die lêer.",
-       "upload-success-subj": "Laai suksesvol",
-       "upload-success-msg": "U het [$2] suksesvol opgelaai. Dit is nou beskikbaar by: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Oplaaiprobleem",
-       "upload-failure-msg": "Daar was 'n probleem met u oplaai van [$2]:\n\n$1",
-       "upload-warning-subj": "Oplaai-waarskuwing",
-       "upload-warning-msg": "Daar was 'n probleem met u oplaai van [$2].\nGaan terug na die [[Special:Upload/stash/$1|oplaaivorm]] om die probleem op te los.",
        "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",
        "activeusers-hidebots": "Versteek bots",
        "activeusers-hidesysops": "Versteek administrateurs",
        "activeusers-noresult": "Geen gebruikers gevind nie.",
+       "activeusers-submit": "Wys",
        "listgrouprights": "Gebruikersgroepregte",
        "listgrouprights-summary": "Hier volg 'n lys van gebruikersgroepe met hulle ooreenstemmende regte wat op die wiki gedefinieer is.\nDaar kan [[{{MediaWiki:Listgrouprights-helppage}}|extra inligting]] oor individuele regte aanwesig wees.",
        "listgrouprights-key": "Sleutel:\n* <span class=\"listgrouprights-granted\">Toegekende regte</span>\n* <span class=\"listgrouprights-revoked\">Teruggetrekte regte</span>",
        "wlheader-showupdated": "Bladsye wat verander is sedert u hulle laas besoek het word in '''vetdruk''' uitgewys.",
        "wlnote": "Hier volg die laaste {{PLURAL:$1|verandering|'''$1''' veranderings}} binne die laaste {{PLURAL:$2|uur|'''$2''' ure}}, soos vanaf $3 om $4.",
        "wlshowlast": "Wys afgelope $1 ure, $2 dae of",
-       "watchlistall2": "alles",
        "watchlist-hide": "Versteek",
        "wlshowtime": "Wys laaste:",
        "wlshowhideminor": "klein wysigings",
        "contributions": "{{GENDER:$1|Gebruikersbydraes}}",
        "contributions-title": "$1 se bydraes",
        "mycontris": "Bydraes",
+       "anoncontribs": "Bydraes",
        "contribsub2": "Vir {{GENDER:$3|$1}} ($2)",
        "contributions-userdoesnotexist": "Die gebruiker \"$1\" is nie geregistreer nie.",
        "nocontribs": "Geen veranderinge wat by hierdie kriteria pas, is gevind nie.",
        "javascripttest-pagetext-frameworks": "Kies een van die volgende toetsraamwerke: $1",
        "javascripttest-pagetext-skins": "Kies 'n omslag waarmee die toets uitgevoer moet word:",
        "javascripttest-qunit-intro": "Sien die [$1 toetsdokumentasie] op mediawiki.org.",
-       "tooltip-pt-userpage": "My gebruikerbladsy",
+       "tooltip-pt-userpage": "{{GENDER:|My}} gebruikerbladsy",
        "tooltip-pt-anonuserpage": "Die gebruikersbladsy vir die IP-adres waaronder u wysigings aanbring",
-       "tooltip-pt-mytalk": "My besprekingsbladsy",
+       "tooltip-pt-mytalk": "{{GENDER:|My}} besprekingsbladsy",
        "tooltip-pt-anontalk": "Bespreking oor bydraes van hierdie IP-adres",
-       "tooltip-pt-preferences": "My voorkeure",
+       "tooltip-pt-preferences": "{{GENDER:|My}} voorkeure",
        "tooltip-pt-watchlist": "Die lys bladsye wat u vir veranderinge dophou",
-       "tooltip-pt-mycontris": "Lys van my bydraes",
+       "tooltip-pt-mycontris": "Lys van {{GENDER:|my}} bydraes",
        "tooltip-pt-login": "U word aangemoedig om aan te meld. Dit is egter nie verpligtend nie.",
        "tooltip-pt-logout": "Meld af",
        "tooltip-pt-createaccount": "U word aangemoedig om 'n gebruiker te skep en aan te meld, hoewel dit nie verpligtend is nie.",
        "tooltip-t-recentchangeslinked": "Onlangse wysigings aan bladsye wat vanaf hierdie bladsy geskakel is",
        "tooltip-feed-rss": "RSS-voed vir hierdie bladsy",
        "tooltip-feed-atom": "Atoomvoer vir hierdie bladsy",
-       "tooltip-t-contributions": "Bekyk 'n lys van bydraes deur hierdie gebruiker",
+       "tooltip-t-contributions": "Bekyk 'n lys van bydraes deur {{GENDER:$1|hierdie gebruiker}}",
        "tooltip-t-emailuser": "Stuur 'n e-pos aan hierdie gebruiker",
        "tooltip-t-upload": "Laai lêers op",
        "tooltip-t-specialpages": "'n Lys van al die spesiale bladsye",
index 31bb696..983b3ce 100644 (file)
        "virus-scanfailed": "فشل المسح (كود $1)",
        "virus-unknownscanner": "مضاد فيروسات غير معروف:",
        "logouttext": "<strong>أنت الآن غير مسجل الدخول.</strong> قد ترى بعض الصفحات كما لو أنك ما زلت مسجل الدخول، وذلك حتى تفرغ التخزين المؤقت في متصفحك.",
+       "cannotlogoutnow-title": "لا يمكن تسجيل الخروج الآن",
+       "cannotlogoutnow-text": "لا يمكن تسجيل الخروج عند استخدام $1",
        "welcomeuser": "أهلاً بك يا $1!",
        "welcomecreation-msg": "تم إنشاء حسابك.\nلا تنس تعديل [[Special:Preferences|تفضيلاتك في {{SITENAME}}]].",
        "yourname": "اسم المستخدم:",
        "remembermypassword": "تذكر دخولي بهذا المتصفح (لمدة أقصاها {{PLURAL:$1||يوم واحد|يومان|$1 أيام|$1 يوما|$1 يوم}})",
        "userlogin-remembermypassword": "أبقني مسجلا للدخول",
        "userlogin-signwithsecure": "الولوج باتصّال مؤمّن",
+       "cannotloginnow-title": "لا يمكن تسجيل الدخول الآن",
+       "cannotloginnow-text": "لا يمكن تسجيل الدخول عند استخدام $1.",
        "yourdomainname": "نطاقك:",
        "password-change-forbidden": "أنت لا يمكنك تغيير كلمات السر على هذا الويكي.",
        "externaldberror": "هناك إما خطأ في دخول قاعدة البيانات الخارجية أو أنه غير مسموح لك بتحديث حسابك الخارجي.",
        "resetpass_submit": "ضبط كلمة السر والدخول",
        "changepassword-success": "تم تغيير كلمة السر بنجاح!",
        "changepassword-throttled": "لديك محاولات تسجيل دخول كثيرة حديثة. من فضلك انتظر $1 قبل المحاولة ثانية.",
+       "botpasswords-label-appid": "اسم البوت:",
+       "botpasswords-label-create": "أنشأ",
+       "botpasswords-label-cancel": "ألغ",
+       "botpasswords-label-delete": "احذف",
+       "botpasswords-label-resetpassword": "أعد ضبط كلمة السر",
        "resetpass_forbidden": "كلمات السر لا يمكن تغييرها",
        "resetpass-no-info": "يجب أن تكون مسجل الدخول للوصول إلى هذه الصفحة مباشرة.",
        "resetpass-submit-loggedin": "تغيير كلمة السر",
        "filewasdeleted": "تم رفع ثم حذف ملف بهذا الاسم من قبل.\nمن الأفضل مراجعة $1 قبل رفعه مرة أخرى.",
        "filename-bad-prefix": "اسم الملف الذي ترفعه يبدأ ب'''\"$1\"'''، وهو اسم غير وصفي غالباً ما تخصصه الكاميرات الرقمية تلقائياً.\nمن فضلك اختر اسماً يصف ملفك بوضوح أكثر.",
        "filename-prefix-blacklist": " #<!-- اترك هذا السطر تماما كما هو --> <pre>\n# الصيغة كالتالي:\n#   * كل شيء من علامة \"#\" إلى آخر السطر هو تعليق\n#   * كل سطر غير فارغ هو بادئة لأسماء الملفات النمطية التي توضع تلقائيا بواسطة الكاميرات الرقمية\nCIMG # كاسيو\nDSC_ # نيكون\nDSCF # فوجي\nDSCN # نيكون\nDUW # بعض الهواتف المحمولة\nIMG # عام\nJD # جينوبتيك\nMGP # بينتاكس\nPICT # متنوع\n #</pre> <!-- اترك هذا السطر تماما كما هو -->",
-       "upload-success-subj": "تم رفع الملف بنجاح",
-       "upload-success-msg": "مرفوعك من [$2] قد نجح، وهو متوفر هنا: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "مشكلة رفع",
-       "upload-failure-msg": "توجد مشكلة في مرفوعك من [$2]:\n\n$1",
-       "upload-warning-subj": "تحذير رفع",
-       "upload-warning-msg": "ثمة مشكلة في مرفوعك من [$2]. يمكنك الرجوع إلى [[Special:Upload/stash/$1|نموذج الرفع]] لتصحيح المشكلة.",
        "upload-proto-error": "بروتوكول غير صحيح",
        "upload-proto-error-text": "الرفع عن بعد يتطلب مساراً يبدأ بـ <code>http://</code> أو <code>ftp://</code>.",
        "upload-file-error": "خطأ داخلي",
        "log-title-wildcard": "ابحث عن عناوين تبدأ بهذا النص",
        "showhideselectedlogentries": "غير رؤية مدخلات السجل المختارة",
        "log-edit-tags": "عدل وسوم مدخلات السجل المختار",
+       "checkbox-select": "اختر: $1",
+       "checkbox-all": "الكل",
+       "checkbox-none": "لا شيء",
+       "checkbox-invert": "اعكس",
        "allpages": "كل الصفحات",
        "nextpage": "الصفحة التالية ($1)",
        "prevpage": "الصفحة السابقة ($1)",
        "wlheader-showupdated": "الصفحات التي تم تحريرها بعد مطالعتك إياها آخر مرة عناوينها بالخط '''الغليظ'''",
        "wlnote": "بالأسفل {{PLURAL:$1|لا توجد تغييرات|التغيير الأخير|آخر تغييرين|آخر '''$1''' تغييرات|آخر '''$1''' تغييرا|آخر '''$1''' تغيير}} في {{PLURAL:$2||'''الساعة''' الماضية|'''الساعتين''' الماضيتين|ال'''$2''' ساعات الماضية|ال'''$2''' ساعة الماضية}} وفقاً ل$3، $4.",
        "wlshowlast": "عرض آخر $1 ساعات $2 يوما",
-       "watchlistall2": "الكل",
        "watchlist-hide": "إخفاء",
        "watchlist-submit": "أظهر",
        "wlshowtime": "الفترة الزمنية للعرض:",
        "version-hook-subscribedby": "يستخدم بواسطة",
        "version-version": "($1)",
        "version-no-ext-name": "[لا اسم]",
-       "version-svn-revision": "ن$1",
        "version-license": "ترخيص ميدياويكي",
        "version-ext-license": "ترخيص",
        "version-ext-colheader-name": "امتداد",
        "redirect-page": "معرف الصفحة",
        "redirect-revision": "مراجعة صفحة",
        "redirect-file": "اسم ملف",
+       "redirect-logid": "معرف السجل",
        "redirect-not-exists": "المطلوب غير موجود",
        "fileduplicatesearch": "بحث عن ملفات مكررة",
        "fileduplicatesearch-summary": "ابحث عن الملفات المكررة بناء على قيم الهاش.",
        "pagelang-select-lang": "اختر اللغة",
        "right-pagelang": "تغيير لغة الصفحة",
        "action-pagelang": "تغيير لغة الصفحة",
-       "log-name-pagelang": "تغÙ\8aÙ\8aر Ø³Ø¬Ù\84 Ø§Ù\84صÙ\81Ø­ة",
+       "log-name-pagelang": "سجÙ\84 ØªØºÙ\8aÙ\8aر Ø§Ù\84Ù\84غة",
        "log-description-pagelang": "هذا سجل تغيرات في صفحة اللغات.",
-       "logentry-pagelang-pagelang": " {{GENDER:$2|غÙ\8aÙ\91ر|غÙ\8aّرت}} $1 لغة الصفحة «$3» من $4 إلى $5.",
+       "logentry-pagelang-pagelang": " {{GENDER:$2|غÙ\8aÙ\8eÙ\91ر|غÙ\8aÙ\8eّرت}} $1 لغة الصفحة «$3» من $4 إلى $5.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (مفعل)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''معطل''')",
        "mediastatistics": "إحصاءات الميديا",
        "mediastatistics-header-text": "نصي",
        "mediastatistics-header-executable": "تنفيذية",
        "mediastatistics-header-archive": "صيغ مضغوطة",
+       "mediastatistics-header-total": "كل الملفات",
        "json-warn-trailing-comma": "تمت إزالة {{PLURAL:$1|فاصلة انتهائية واحدة|فاصلتين انتهائيتين|$1 فاصلات انتهائية|$1 فاصلة انتهائية}} من JSON",
        "json-error-unknown": "وقعت مشكلة مع JSON. رسالة الخطأ: $1",
        "json-error-depth": "عمق الستاك الأقصى تم تجاوزه",
        "mw-widgets-dateinput-no-date": "لا تاريخ تم اختياره",
        "mw-widgets-titleinput-description-new-page": "الصفحة غير موجودة بعد",
        "mw-widgets-titleinput-description-redirect": "تحويل إلى $1",
-       "api-error-blacklisted": "اختر عنوانا مختلفا ومفهوما."
+       "api-error-blacklisted": "اختر عنوانا مختلفا ومفهوما.",
+       "randomrootpage": "صفحة جذر عشوائية"
 }
index 138696f..e5320cc 100644 (file)
        "filewasdeleted": "فيه فايل بنفس الاسم دا اتأپلود قبل كدا و بعدين اتمسح.\nلازم تشيّك على $1 قبل ما تأپلود الفايل كمان مره.",
        "filename-bad-prefix": "اسم الملف اللى بتحمله بيبتدى بـ'''\"$1\"'''، واللى هو اسم مش وصفى بيتحط غالبا من الكاميرات الديجيتال اوتوماتيكي.\nلو سمحت تختار اسم يكون بيوصف الملف بتاعك احسن من كدا.",
        "filename-prefix-blacklist": " #<!-- سيب السطر ده زى ما هوه --> <pre>\n# الصيغة كدا:\n#   * كل حاجة من أول علامة \"#\" لحد أخر السطر هى تعليق\n#   * كل سطر مش فاضى هو بريفيكس لأسماء الملفات النمطية اللى بتحطها اوتوماتيكى  الكاميرات الديجيتال\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # بعض التليفونات المحمولة\nIMG # generic\nJD # Jenoptik\nMGP # Pentax\nPICT # misc.\n #</pre> <!-- سيب السطر ده زى ما هوه -->",
-       "upload-success-subj": "التحميل ناجح",
-       "upload-warning-subj": "تحذير التحميل",
        "upload-proto-error": "بروتوكول مش صحيح",
        "upload-proto-error-text": "االتحميل عن بعد لازمله يوأرإل بيبتدى بـ <code>http://</code> أو <code>ftp://</code>.",
        "upload-file-error": "غلط داخلي",
        "wlheader-showupdated": "الصفحات اللى اتغيرت  بعد زيارتك ليها اخر مرة معروضة بالخط '''العريض'''",
        "wlnote": "تحت فى {{PLURAL:$1|آخر تغيير|آخر '''$1''' تغيير}} فى آخر {{PLURAL:$2|ساعه|'''$2''' ساعه}}، من الوقت $3، $4.",
        "wlshowlast": "عرض اخر $1 ساعات $2 ايام",
-       "watchlistall2": "الكل",
        "watchlist-options": "اختيارات قايمة المراقبة",
        "watching": "بيراقب...",
        "unwatching": "بيبطل مراقبه...",
index f9572d1..80935bb 100644 (file)
        "mergehistory-from": "Páxina d'orixe:",
        "mergehistory-into": "Páxina de destín:",
        "mergehistory-list": "Historial d'ediciones fusionable",
-       "mergehistory-merge": "Les siguientes revisiones de [[:$1]] puen fusionase en [[:$2]]. Usa la columna de botones d'opción pa fusionar namaí les revisiones creaes na y enantes de la hora especificada. has fixate en que si uses los enllaces de navegación esborraránse les seleiciones feches nesta columna.",
+       "mergehistory-merge": "Les siguientes revisiones de [[:$1]] puen fusionase'n [[:$2]]. Usa la columna de botones d'opción pa fusionar namai les revisiones creaes na y enantes de la hora especificada.\nHas fixate en que si uses los enllaces de navegación esborraránse les seleiciones feches nesta columna.",
        "mergehistory-go": "Amosar ediciones fusionables",
        "mergehistory-submit": "Fusionar revisiones",
        "mergehistory-empty": "Nun se pue fusionar nenguna revisión.",
        "recentchangescount": "Númberu d'ediciones p'amosar de mou predetermináu:",
        "prefs-help-recentchangescount": "Incluye los cambios recientes, los historiales de páxines y los rexistros.",
        "prefs-help-watchlist-token2": "Esta ye la clave secreta pa la canal de noticies web de la so llista de vixilancia.\nCualquiera que la sepa podrá lleer la so llista de vixilancia; nun la comparta.\n[[Special:ResetTokens|Calque equí si necesita reaniciala]].",
-       "savedprefs": "Les tos preferencies quedaron grabaes.",
+       "savedprefs": "Guardáronse les preferencies.",
        "savedrights": "Guardáronse los permisos d'{{GENDER:$1|usuariu|usuaria}} de $1.",
        "timezonelegend": "Estaya horaria:",
        "localtime": "Hora llocal:",
        "right-import": "Importar páxines dende otres wikis",
        "right-importupload": "Importar páxines dende un ficheru xubíu",
        "right-patrol": "Marcar ediciones d'otros como supervisaes",
-       "right-autopatrol": "Marcar automáticamente les ediciones como supervisaes",
+       "right-autopatrol": "Marcar automáticamente les ediciones propies como supervisaes",
        "right-patrolmarks": "Ver les marques de supervisión nos cambeos de recién",
        "right-unwatchedpages": "Ver una llista de páxines non vixilaes",
        "right-mergehistory": "Fusionar historiales de páxines",
-       "right-userrights": "Editar tolos drechos d'usuariu",
-       "right-userrights-interwiki": "Editar los drechos d'usuariu d'usuarios d'otros sitios wiki",
+       "right-userrights": "Editar tolos permisos d'usuariu",
+       "right-userrights-interwiki": "Editar los permisos d'usuariu de los usuarios d'otres wikis",
        "right-siteadmin": "Candar y descandar la base de datos",
        "right-override-export-depth": "Esportar páxines, incluyendo páxines enllazaes fasta una fondura de 5",
        "right-sendemail": "Unviar corréu a otros usuarios",
        "right-managechangetags": "Crear y desaniciar [[Special:Tags|etiquetes]] dende la base de datos",
        "right-applychangetags": "Aplicar [[Special:Tags|etiquetes]] xunto colos cambios propios",
        "right-changetags": "Amestar y desaniciar [[Special:Tags|etiquetes]] arbitraries en revisiones individuales y entraes del rexistru",
-       "grant-generic": "Conxuntu de drechos \"$1\"",
+       "grant-generic": "Conxuntu de drechos «$1»",
        "grant-group-page-interaction": "Interactuar con páxines",
        "grant-group-file-interaction": "Interactuar con multimedia",
        "grant-group-watchlist-interaction": "Interactuar cola to llista de vixilancia",
        "grant-viewmywatchlist": "Ver la to llista de siguimientu",
        "newuserlogpage": "Rexistru de creación d'usuarios",
        "newuserlogpagetext": "Esti ye un rexistru de creación d'usuarios.",
-       "rightslog": "Rexistru de perfil d'usuariu",
-       "rightslogtext": "Esti ye un rexistru de los cambeos de los perfiles d'usuariu.",
+       "rightslog": "Rexistru de permisos d'usuariu",
+       "rightslogtext": "Esti ye un rexistru de los cambeos nos permisos d'usuariu.",
        "action-read": "lleer esta páxina",
        "action-edit": "editar esta páxina",
        "action-createpage": "crear páxines",
        "action-minoredit": "marcar esta edición como menor",
        "action-move": "treslladar esta páxina",
        "action-move-subpages": "treslladar esta páxina y les sos subpáxines",
-       "action-move-rootuserpages": "treslladar páxines d'un usuariu root",
+       "action-move-rootuserpages": "treslladar páxines principales d'usuariu",
        "action-move-categorypages": "treslladar les páxines de categoría",
-       "action-movefile": "treslladar esti archivu",
-       "action-upload": "xubir esti archivu",
-       "action-reupload": "sobreescribir esti archivu esistente",
-       "action-reupload-shared": "sustituyir esti archivu nun direutoriu compartíu",
-       "action-upload_by_url": "xubir esti archivu dende una direición URL",
+       "action-movefile": "treslladar esti ficheru",
+       "action-upload": "xubir esti ficheru",
+       "action-reupload": "reemplazar esti ficheru esistente",
+       "action-reupload-shared": "sustituyir esti ficheru d'un direutoriu compartíu",
+       "action-upload_by_url": "xubir esti ficheru dende una URL",
        "action-writeapi": "usar l'API d'escritura",
        "action-delete": "desaniciar esta páxina",
-       "action-deleterevision": "eliminar esta revisión",
+       "action-deleterevision": "desaniciar esta revisión",
        "action-deletedhistory": "ver l'historial elimináu d'esta páxina",
        "action-browsearchive": "buscar páxines desaniciaes",
        "action-undelete": "restaurar esta páxina",
-       "action-suppressrevision": "revisar y restaurar esta revisión oculta",
+       "action-suppressrevision": "revisar y restaurar esta revisión tapecida",
        "action-suppressionlog": "ver esti rexistru priváu",
        "action-block": "bloquiar qu'esti usuariu edite",
        "action-protect": "camudar los niveles de proteición pa esta páxina",
        "action-autopatrol": "marcar la to edición como supervisada",
        "action-unwatchedpages": "ver la llista de páxines non vixilaes",
        "action-mergehistory": "fusionar l'historial d'esta páxina",
-       "action-userrights": "editar tolos drechos d'usuariu",
-       "action-userrights-interwiki": "editar los drechos d'usuariu d'usuarios d'otres wikis",
+       "action-userrights": "editar tolos permisos d'usuariu",
+       "action-userrights-interwiki": "editar los permisos d'usuariu de los usuarios d'otres wikis",
        "action-siteadmin": "candar o descandar la base de datos",
        "action-sendemail": "unviar correos",
        "action-editmywatchlist": "editar la llista de vixilancia",
        "minoreditletter": "m",
        "newpageletter": "N",
        "boteditletter": "b",
-       "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|usuariu|ususarios}} vixilando]",
+       "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|usuariu|usuarios}} vixilando]",
        "rc_categories": "Llendar a les categoríes (dixebrar con \"|\"):",
        "rc_categories_any": "Cualquiera de les esbillaes",
        "rc-change-size-new": "$1 {{PLURAL:$1|byte|bytes}} dempués del cambiu",
        "autochange-username": "Cambiu automáticu de MediaWiki",
        "upload": "Xubir ficheru",
        "uploadbtn": "Xubir ficheru",
-       "reuploaddesc": "Cancelar la xubida y tornar al formulariu de xubíes",
+       "reuploaddesc": "Encaboxar la xubida y tornar al formulariu de xubíes",
        "upload-tryagain": "Unviar descripción camudada del ficheru",
        "uploadnologin": "Nun anició sesión",
        "uploadnologintext": "Tien d'$1 pa xubir ficheros.",
-       "upload_directory_missing": "El direutoriu de xubida ($1) nun esiste y nun pudo ser creáu pol sirvidor de web.",
-       "upload_directory_read_only": "El sirvidor nun pue modificar el direutoriu de xubida d'archivos ($1).",
+       "upload_directory_missing": "El direutoriu de xubida ($1) nun esiste y nun pudo crease pol sirvidor web.",
+       "upload_directory_read_only": "El sirvidor web nun pue escribir nel direutoriu de xubíes ($1).",
        "uploaderror": "Error de xubida",
        "upload-recreate-warning": "'''Avisu: Se desanició o treslladó un ficheru con esi nome.'''\n\nEquí s'ufre'l rexistru de desaniciu y treslláu d'esta páxina por comodidá:",
        "uploadtext": "Usa'l formulariu de más abaxo pa xubir ficheros.\nPa ver o buscar ficheros xubíos previamente, vete a la [[Special:FileList|llista de ficheros xubíos]]. Les (re)xubíes tamién queden conseñaes nel [[Special:Log/upload|rexistru de xubíes]], y los desanicios nel [[Special:Log/delete|rexistru de desanicios]].\n\nPa incluir un ficheru nuna páxina, usa un enllaz con ún de los siguientes formatos:\n*<strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Ficheru.jpg]]</nowiki></code></strong> pa usar la versión completa del ficheru\n*<strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Ficheru.png|200px|thumb|left|testu alternativu]]</nowiki></code></strong> pa usar una versión de 200 píxeles d'anchu nun cuadru nel marxe izquierdu con «testu alternativu» como descripción\n*<strong><code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:Ficheru.ogg]]</nowiki></code></strong> pa enllazar al ficheru direutamente ensin amosalu",
        "uploaded-script-svg": "Alcontróse l'elementu «$1» que puede recibir scripts nel ficheru SVG xubíu.",
        "uploaded-hostile-svg": "Alcontróse CSS inseguru nel elementu d'estilu del ficheru SVG xubíu.",
        "uploaded-event-handler-on-svg": "Nun se permite configurar los atributos de controladores de socesos <code>$1=\"$2\"</code> nos ficheros SVG.",
-       "uploaded-href-attribute-svg": "Nun se permiten los atributos href <code>&lt;$1 $2=\"$3\"&gt;</code> con destín nun llocal (p. ex. http://, javascript:, etc) nos ficheros SVG.",
-       "uploaded-href-unsafe-target-svg": "Alcontróse un \"href\" a un destín inseguru <code>&lt;$1 $2=\"$3\"&gt;</code> nel ficheru SVG xubíu.",
+       "uploaded-href-attribute-svg": "Los atributos href de los ficheros SVG are sólo pueden enllazar a destinos http:// o https://, alcontróse <code>&lt;$1 $2=\"$3\"&gt;</code>.",
+       "uploaded-href-unsafe-target-svg": "Alcontróse un href a datos inseguros: la URI de destín <code>&lt;$1 $2=\"$3\"&gt;</code> nel ficheru SVG xubíu.",
        "uploaded-animate-svg": "Alcontróse la etiqueta \"animate\" que puede cambiar href, usando l'atributu \"from\" <code>&lt;$1 $2=\"$3\"&gt;</code> nel ficheru SVG xubíu.",
        "uploaded-setting-event-handler-svg": "Ta torgada la configuración d'atributos del xestor de socesos. Alcontróse <code>&lt;$1 $2=\"$3\"&gt;</code> nel ficheru SVG xubíu.",
        "uploaded-setting-href-svg": "Usar la etiqueta «set» p'amestar l'atributu «href» al elementu padre ta torgao.",
        "filename-thumb-name": "Esto paez un títulu de miniatura. Por favor, nun xubas miniatures a la mesma wiki de la que salieron. D'otra manera, igua'l nome del ficheru pa que tenga más significáu, y que nun tenga'l prefixu de miniatura.",
        "filename-bad-prefix": "El nome del ficheru que tas xubiendo entama con '''\"$1\"''', que ye un nome non descriptivu que de vezu conseñen automáticamente les cámares dixitales.\nPor favor escueyi un nome más descriptivu pal to ficheru.",
        "filename-prefix-blacklist": " #<!-- dexa esta llinia exactamente como ta --> <pre>\n# La sintaxis ye la siguiente:\n#   * Lo que va del caráuter \"#\" al fin de llinia ye un comentariu\n#   * Toa llinia non-balera ye un prefixu pa los nomes de ficheru típicos que ponen les cámares dixitales\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # dellos teléfonos móviles\nIMG # xenéricu\nJD # Jenoptik\nMGP # Pentax\nPICT # misc.\n #</pre> <!-- dexa esta llinia exactamente como ta -->",
-       "upload-success-subj": "Xubida correuta",
-       "upload-success-msg": "La xubía de [$2] foi correuta. Ta disponible equí: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Problema na xubía",
-       "upload-failure-msg": "Hebo un problema cola to xubía de [$2]:\n\n$1",
-       "upload-warning-subj": "Avisu de xubía",
-       "upload-warning-msg": "Hebo un problema cola to xubía de [$2]. Pues volver al [[Special:Upload/stash/$1|formulariu de xubía]] pa iguar esti problema.",
        "upload-proto-error": "Protocolu incorreutu",
        "upload-proto-error-text": "La xubida remota requier que l'URL entame por <code>http://</code> o <code>ftp://</code>.",
        "upload-file-error": "Error internu",
        "upload-too-many-redirects": "La URL contenía demasiaes redireiciones",
        "upload-http-error": "Hebo un error HTTP: $1",
        "upload-copy-upload-invalid-domain": "La xubida de copies nun ta disponible dende esti dominiu.",
+       "upload-foreign-cant-upload": "Esta wiki nun ta configurada pa xubir ficheros al estoyu de ficheros esternu solicitáu.",
        "upload-dialog-title": "Xubir ficheru",
        "upload-dialog-button-cancel": "Encaboxar",
        "upload-dialog-button-done": "Fecho",
        "wlheader-showupdated": "Les páxines que camudaron dende que les visitasti anteriormente amuesense en '''negrina'''",
        "wlnote": "Abaxo {{PLURAL:$1|tá'l caberu cambiu|tan los caberos <strong>$1</strong> cambios}} {{PLURAL:$2|na cabera hora|nes caberes <strong>$2</strong> hores}}, a día $3, a les $4.",
        "wlshowlast": "Amosar les últimes $1 hores, los últimos $2 díes",
-       "watchlistall2": "toos",
        "watchlist-hide": "Anubrir",
        "watchlist-submit": "Amosar",
        "wlshowtime": "Periodu de tiempu a amosar:",
        "lockedbyandtime": "(por $1 el $2 a les $3)",
        "move-page": "Treslladar $1",
        "move-page-legend": "Treslladar páxina",
-       "movepagetext": "Usando'l siguiente formulariu vas renomar una páxina, treslladando'l so historial al nuevu nome.\nEl nome vieyu va convertise nuna páxina de redireición al títulu nuevu.\nPues actualizar les redireiciones qu'enllacien al títulu orixinal automáticamente.\nSi prefieres nun lo facer, asegúrate de que nun dexes [[Special:DoubleRedirects|redireiciones dobles]] o [[Special:BrokenRedirects|rotes]].\nTu yes el responsable de facer que los enllaces queden apuntando au se supón que tienen d'apuntar.\n\nRecuerda que la páxina '''nun''' va movese si yá hai una páxina col nuevu títulu, a nun ser que la mesma seya una redireición y nun tenga historial.\nEsto significa que pues volver a renomar una páxina col nome orixinal si t'enquivoques, y nun pues sobreescribir una páxina yá esistente.\n\n¡Avisu!'''\nEsti pue ser un cambéu importante ya inesperáu pa una páxina popular;\npor favor, asegúrate d'entender les consecuencies de lo que vas facer enantes de siguir.",
-       "movepagetext-noredirectfixer": "Usando'l siguiente formulariu vas renomar una páxina, treslladando'l so historial al nuevu nome.\nEl nome vieyu va convertise nuna redireición al nuevu.\nAsegúrate de que nun dexes [[Special:DoubleRedirects|redireiciones dobles]] o [[Special:BrokenRedirects|rotes]].\nTu yes el responsable de facer que los enllaces queden apuntando au se supón qu'han apuntar.\n\nRecuerda que la páxina '''nun''' va movese si yá hai una páxina col nuevu títulu, a nun ser que tea balera o seya una redireición que nun tenga historial.\nEsto significa que pues volver a renomar una páxina col nome orixinal si t'enquivoques, y que nun pues sobreescribir una páxina yá esistente.\n\n¡AVISU!'''\nEsti pue ser un cambéu importante y inesperáu pa una páxina popular;\npor favor, asegúrate d'entender les consecuencies de lo que vas facer enantes de siguir.",
+       "movepagetext": "Usando'l siguiente formulariu vas renomar una páxina, treslladando'l so historial al nuevu nome.\nEl nome vieyu va convertise nuna páxina de redireición al títulu nuevu.\nPues actualizar les redireiciones qu'enllacien al títulu orixinal automáticamente.\nSi prefieres nun lo facer, asegúrate de que nun dexes [[Special:DoubleRedirects|redireiciones dobles]] o [[Special:BrokenRedirects|rotes]].\nTu yes el responsable de facer que los enllaces queden apuntando au se supón que tienen d'apuntar.\n\nRecuerda que la páxina <strong>nun</strong> va movese si yá hai una páxina col nuevu títulu, a nun ser que la mesma seya una redireición y nun tenga historial.\nEsto significa que pues volver a renomar una páxina col nome orixinal si t'enquivoques, y nun pues sobreescribir una páxina yá esistente.\n\n<strong>Nota:</strong>\nEsti pue ser un cambéu importante ya inesperáu pa una páxina popular;\npor favor, asegúrate d'entender les consecuencies de lo que vas facer enantes de siguir.",
+       "movepagetext-noredirectfixer": "Usando'l siguiente formulariu vas renomar una páxina, treslladando'l so historial al nuevu nome.\nEl nome vieyu va convertise nuna redireición al nuevu.\nAsegúrate de que nun dexes [[Special:DoubleRedirects|redireiciones dobles]] o [[Special:BrokenRedirects|rotes]].\nTu yes el responsable de facer que los enllaces queden apuntando au se supón qu'han apuntar.\n\nRecuerda que la páxina <strong>nun</strong> va movese si yá hai una páxina col nuevu títulu, a nun ser que tea balera o seya una redireición que nun tenga historial.\nEsto significa que pues volver a renomar una páxina col nome orixinal si t'enquivoques, y que nun pues sobreescribir una páxina yá esistente.\n\n<strong>Nota:</strong>\nEsti pue ser un cambéu importante y inesperáu pa una páxina popular;\npor favor, asegúrate d'entender les consecuencies de lo que vas facer enantes de siguir.",
        "movepagetalktext": "Si marques esti cuadru, la páxina d'alderique asociada va treslladase automáticamente al títulu nuevu, a nun ser que yá esista una páxina d'alderique non vacia allí.\n\nNesti casu tendrás que treslladar o fusionar la páxina manualmente si lo desees.",
        "moveuserpage-warning": "'''Atención:''' Tas a piques de mover una páxina d'usuariu. Atalanta que namái se va mover la páxina y que ''nun'' se va renomar l'usuariu.",
        "movecategorypage-warning": "<strong>Avisu:</strong> Tas a piques de treslladar una páxina de categoría. Ten en cuenta que sólo se treslladará la páxina y que cualquier páxina que tuviera na categoría antigua <em>nun</em> se recategorizará na nueva.",
        "movenosubpage": "Esta páxina nun tien subpáxines.",
        "movereason": "Motivu:",
        "revertmove": "revertir",
-       "delete_and_move_text": "==Necesítase esborrar==\n\nLa páxina de destín \"[[:$1]]\" yá esiste. ¿Quies esborrala pa dexar sitiu pal treslláu?",
+       "delete_and_move_text": "==Necesítase esborrar==\n\nLa páxina de destín «[[:$1]]» yá esiste. ¿Quies desaniciala pa dexar sitiu pal treslláu?",
        "delete_and_move_confirm": "Sí, esborrar la páxina",
        "delete_and_move_reason": "Desaniciada pa facer sitiu pa treslladar dende «[[$1]]»",
        "selfmove": "Los nomes d'orixe y destín son los mesmos, nun se pue treslladar una páxina sobre ella mesma.",
        "move-leave-redirect": "Dexar una redireición detrás",
        "protectedpagemovewarning": "'''Avisu: Esta páxina ta candada pa que sólo los alministradores puedan treslladala.'''\nLa cabera entrada del rexistru s'ufre darréu pa referencia:",
        "semiprotectedpagemovewarning": "'''Nota:''' Esta páxina ta candada pa que namái los usuarios rexistraos puedan treslladala.\nLa cabera entrada del rexistru s'ufre darréu pa referencia:",
-       "move-over-sharedrepo": "== Ficheru esistente ==\n[[:$1]] esiste nun repositoriu compartíu. Si mueves un ficheru a esti títulu se saltará el ficheru compartíu.",
+       "move-over-sharedrepo": "\n[[:$1]] esiste nun estoyu compartíu. Si mueves un ficheru a esti títulu saltaráse'l ficheru compartíu.",
        "file-exists-sharedrepo": "El nome de ficheru qu'escoyisti yá ta n'usu nun repositoriu compartíu.\nEscueyi otru nome, por favor.",
        "export": "Esportar páxines",
        "exporttext": "Pues esportar el testu y l'historial d'ediciones d'una páxina en particular o d'una\nriestra páxines endolcaes nun documentu XML. Esti se pue importar depués n'otra wiki\nqu'use MediaWiki al traviés de la páxina [[Special:Import|importar]].\n\nPa esportar páxines, pon los títulos na caxa de testu d'embaxo, un títulu por llinia,\ny seleiciona si quies la versión actual xunto con toles versiones antigües, xunto col\nso historial, o namái la versión actual cola información de la postrer edición.\n\nPor último, tamién pues usar un enllaz: p.e. [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] pa la páxina \"[[{{MediaWiki:Mainpage}}]]\".",
        "lastmodifiedatby": "L'últimu cambiu d'esta páxina foi el $1, a les $2, por $3.",
        "othercontribs": "Basao nel trabayu fechu por $1.",
        "others": "otros",
-       "siteusers": "{{SITENAME}} {{PLURAL:$2|usuariu|usuarios}} $1",
+       "siteusers": "{{SITENAME}} {{PLURAL:$2|{{GENDER:$1|usuariu|usuaria}}|usuarios}} $1",
        "anonusers": "{{PLURAL:$2|Usuariu anónimu|usuarios anónimos}} de {{SITENAME}} $1",
        "creditspage": "Páxina de creitos",
        "nocredits": "Nun hai disponible información de creitos pa esta páxina.",
        "expand_templates_preview_fail_html": "<em>Como {{SITENAME}} tien activáu el códigu HTML puru y hebo una perda de datos de la sesión, la vista previa ta tapecida como precaución escontra ataques de JavaScript.</em>\n\n<strong>Si esti ye un intentu llexítimu d'accesu a la vista previa, vuelvi a intentalo.</strong>\nSi inda nun funciona, intenta [[Special:UserLogout|salir]] y volver a entrar na to cuenta.",
        "expand_templates_preview_fail_html_anon": "<em>Como {{SITENAME}} tien activáu el códigu HTML puru y nun aniciasti sesión, la vista previa ta tapecida como precaución escontra ataques de JavaScript.</em>\n\n<strong>Si esti ye un intentu llexítimu d'accesu a la vista previa, intenta [[Special:UserLogin|entrar]] y vuelvi a intentalo.</strong>",
        "expand_templates_input_missing": "Fai falta dar daqué de testu d'entrada.",
-       "pagelanguage": "Selector de llingua de la páxina",
+       "pagelanguage": "Cambiar la llingua de la páxina",
        "pagelang-name": "Páxina",
        "pagelang-language": "Llingua",
        "pagelang-use-default": "Usar la llingua predeterminada",
        "pagelang-submit": "Unviar",
        "right-pagelang": "Cambiar la llingua de la páxina",
        "action-pagelang": "cambiar la llingua de la páxina",
-       "log-name-pagelang": "Rexistru de cambios de llingua",
+       "log-name-pagelang": "Rexistru de cambeos d'idioma",
        "log-description-pagelang": "Esti ye un rexistru de los cambios de llingua de les páxines.",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|cambió}} la llingua de la páxina $3 del $4 al $5.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|cambió}} la llingua de $3 del $4 al $5.",
        "default-skin-not-found": "¡Vaya! L'aspeutu predetermináu pa la to wiki, definíu en <code dir=\"ltr\">$wgDefaultSkin</code> como <code>$1</code> nun ta disponible.\n\nLa instalación paez qu'incluye {{PLURAL:$4|el siguiente aspeutu|los siguientes aspeutos}}. Llei [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] pa más información sobro cómo {{PLURAL:$4|activalu|activalos y escoyer el predetermináu}}.\n\n$2\n\n; Si acabes d'instalar MediaWiki:\n: Probablemente instalasti dende git, o direutamente'l códigu fonte usando algún otru métodu. Esto ye d'esperar. Intenta instalar dellos aspeutos dende'l [https://www.mediawiki.org/wiki/Category:All_skins direutoriu d'aspeutos de mediawiki.org's], asina:\n:* Descargando [https://www.mediawiki.org/wiki/Download l'instalador tarball], que vien con dellos aspeutos y estensiones. Pues copiar y apegar el direutoriu <code>skins/</code> d'ehí.\n:* Descargando paquetes tar d'aspeutu individuales de [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Usando Git pa descargar aspeutos].\n: Facer esto nun tendría d'interferir col to repositoriu git si yes un desendolcador de MediaWiki.\n\n; Si acabes d'anovar MediaWiki:\n: MediaWiki 1.24 y más nuevu yá nun activa automáticamente los aspeutos instalaos (llei [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]). Pues apegar {{PLURAL:$5|la llinia siguiente|les llinies siguientes}} en <code>LocalSettings.php</code> p'activar {{PLURAL:$5|l'aspeutu instaláu|tolos aspeutos instalaos}}:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Si acabes d'editar <code>LocalSettings.php</code>:\n: Vuelvi a comprobar los nomes de los aspeutos por si hai errores d'escritura.",
        "default-skin-not-found-no-skins": "L'aspeutu predetermináu pa la to wiki, definíu en <code>$wgDefaultSkin</code> como <code>$1</code> nun ta disponible.\n\nNun tienes aspeutos instalaos.\n\n; Si acabes d'instalar MediaWiki:\n: Probablemente instalasti dende git, o'l códigu fonte direutamente usando algún otru métodu. Esto ye d'esperar. MediaWiki 1.24 y más nuevu nun incluye nengún aspeutu nel repositoriu principal. Intenta instalar dellos aspeutos dende'l [https://www.mediawiki.org/wiki/Category:All_skins direutoriu d'aspeutos de mediawiki.org], asina:\n:* Descargando [https://www.mediawiki.org/wiki/Download l'instalador tarball], que vien con dellos aspeutos y estensiones. Pues copiar y apegar el direutoriu <code>skins/</code> d'ehí.\n:* Descargando paquetes tar d'aspeutu individuales de [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:*  [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Usando Git pa descargar aspeutos].\n: Facer esto nun tendría d'interferir col to repositoriu git si yes un desendolcador de MediaWiki. Llei [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] pa más información sobro cómo activar los aspeutos y escoyer el predetermináu.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (activáu)",
index 31dd377..f53fc65 100644 (file)
        "november-date": "نوْوامبرین $1-ی",
        "december-date": "دئسامبرین $1-ی",
        "pagecategories": "{{PLURAL:$1|بؤلمه|بؤلمه‌لر}}",
-       "category_header": "«$1» بؤلمه‌سین‌ده صحیفه‌لر",
+       "category_header": "«$1» بؤلمه‌سینده صفحه‌لر",
        "subcategories": "آلت‌بؤلمه‌لر",
        "category-media-header": "«$1» بؤلمه‌سین‌ده مئدیا",
        "category-empty": "<em>بو بؤلمه‌ده ایندی فایل یا مئدیا یوْخدور.</em>",
        "hidden-categories": "{{PLURAL:$1|گیزلی بؤلمه|گیزلی بؤلمه‌لر}}",
        "hidden-category-category": "گیزلی بؤلمه‌لر",
-       "category-subcat-count": "{{PLURAL:$2|بۇ بؤلمه‌ده یالنیز آشاغیداکی آلت‌بؤلمه واردیر.|بۇ بؤلمه‌ده، توپلام $2-دن، آشاغیداکی {{PLURAL:$1|آلت‌بؤلمه|$1 آلت‌بؤلمه}} واردیر.}}",
+       "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 صحیفه}} واردیر.",
        "prefs-labs": "آزماییشی اؤزل‌لیکلر",
        "prefs-user-pages": "ایستیفاده‌چی صحیفه‌لری",
        "prefs-personal": "ایشلدن وئری‌لری",
-       "prefs-rc": "سون دَییشیکلیکلر",
+       "prefs-rc": "سÙ\88Ù\92Ù\86 Ø¯Ù\8eÛ\8cÛ\8cØ´Û\8cÚ©Ù\84Û\8cÚ©Ù\84ر",
        "prefs-watchlist": "ایزله‌دیکلر",
        "prefs-editwatchlist": "ایزله‌دیکلریم صفحه‌‌لری دَییشدیر",
        "prefs-editwatchlist-label": "بۆتون ایزله‌دیکلرینیزین دَییشدیرمه‌سی:",
        "nchanges": "$1 {{PLURAL:$1|دَییشیکلیک}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|سون گوروش دن}}",
        "enhancedrc-history": "گئچمیش",
-       "recentchanges": "سون دَییشیکلیکلر",
+       "recentchanges": "سÙ\88Ù\92Ù\86 Ø¯Ù\8eÛ\8cÛ\8cØ´Û\8cÚ©Ù\84Û\8cÚ©Ù\84ر",
        "recentchanges-legend": "سون دَییشیکلیکلر سئچمه‌لری",
        "recentchanges-summary": "بۇ صفحه‌ده، بۇ ویکیده وئریلن ان سوْن دَییشیکلیکلری ایزله‌یین.",
        "recentchanges-noresult": "وئریلمیش دؤنم‌ده، بو معیارلارا تطبیق اولان دَییشدیرمه یوخدور.",
        "watchthisupload": "بو فايلی ایزله",
        "filewasdeleted": "بو آددا بیر فایل یاخین زاماندا یوکلندی و سونرا ایداره‌چی‌لر طرفین‌دن سیلیندی. فای‌لی یوکلئمئدئن اول، $1 صحیفه‌سینه بیر گؤز آتین.",
        "filename-bad-prefix": "یوکلمکده اولدوغونوز فایلین آدی، عمومی اولا‌راق رقمسال کامئرا‌لار طرفین‌دن آوتوماتیک اولا‌راق ائکئلئنئن و آچیقلاییجی اولمایان '\"$1\"' ایله باشلاییر.\nخاهیش ائدیریک فایلینیز اوچون داها آچیقلاییجی بیر آد سئچین.\n\nیوکلمکده اولدوغونوز فایلین آدی، عمومی اولا‌راق رقمسال کامئرا‌لار طرفین‌دن آوتوماتیک اولا‌راق باغلانان و آچیقلاییجی اولمایان '\"$1\"' ایله باشلاییر.\nخاهیش ائدیریک فایلینیز اوچون داها آچیقلاییجی بیر آد سئچین.",
-       "upload-success-subj": "یوکلمه گوتولدو",
-       "upload-success-msg": "[$2] یوکلمه‌نیز موفقیت‌لی اولدو. یوکلمه‌نیز بورادا مؤوجود: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "یوکلمه پروبلئمی",
-       "upload-failure-msg": "[$2]-دن یوکله‌دیگینیزده بیر ایشکال قاباغا گلدی:\n\n$1",
-       "upload-warning-subj": "یوکلمه خبردارلیغی",
-       "upload-warning-msg": "[$2]-دن یوکله‌دیگینیزده بیر ایشکال قاباغا گلدی. بو ایشکالی دوزلدمک اوچون، [[Special:Upload/stash/$1|یوکلمه فورمو]]نا قاییدا بیلرسینیز.",
        "upload-proto-error": "یانلیش پروتوکول",
        "upload-proto-error-text": "اوزاقدان یوکلمه، <code>http://</code> یوخسا <code>ftp://</code> ایله باشلانان آدرس ایسته‌ییر.",
        "upload-file-error": "ایچ خطاسی",
        "statistics-files": "یوکلنمیش فایل‌لار",
        "statistics-edits": "{{SITENAME}} یوْلا دۆشندن بۇ یانا صفحه دَییشیکلیکلری",
        "statistics-edits-average": "هر صفحه‌ده اوْرتا دَییشیکلیک سایی",
-       "statistics-users": "Û\8cازÛ\8cÙ\84Ù\85Û\8cØ´ [[Special:ListUsers|اÛ\8cستÛ\8cÙ\81ادÙ\87â\80\8cÚ\86Û\8cلر]]",
-       "statistics-users-active": "Ú\86اÙ\84Û\8cØ´Ù\82اÙ\86 Ø§Û\8cستÛ\8cÙ\81ادÙ\87â\80\8cÚ\86Û\8cلر",
-       "statistics-users-active-desc": "سÙ\88Ù\86 {{PLURAL:$1|بÛ\8cر|$1}} Ú¯Ù\88Ù\86â\80\8cدÙ\87 Ø¨Û\8cر Ø§Û\8cØ´ Ú¯Ø¤Ø±Ù\86 Ø§Û\8cستÛ\8cÙ\81ادÙ\87â\80\8cÚ\86Û\8cلر",
+       "statistics-users": "Û\8cازÛ\8cÙ\84Ù\85Û\8cØ´ [[Special:ListUsers|اÛ\8cØ´Ù\84دÙ\86لر]]",
+       "statistics-users-active": "Ú\86اÙ\84Û\8cØ´Ù\82اÙ\86 Ø§Û\8cØ´Ù\84دÙ\86لر",
+       "statistics-users-active-desc": "سÙ\88Ù\92Ù\86 {{PLURAL:$1|بÛ\8cر|$1}} Ú¯Û\86Ù\86â\80\8cدÙ\87 Ø¨Û\8cر Ø§Û\8cØ´ Ú¯Ø¤Ø±Ù\86 Ø§Û\8cØ´Ù\84دÙ\86لر",
        "pageswithprop": "صحیفه اؤزل‌لیگی اولان صحیفه‌لر",
        "pageswithprop-legend": "صحیفه اؤزل‌لیگی اولان صحیفه‌لر",
        "pageswithprop-text": "بو صحیفه‌ده، بیر خاص صحیفه اؤزل‌لیگی ایشلدن صحیفه‌لرین لیستی واردیر.",
        "uncategorizedpages": "بؤلمه‌سیز صحیفه‌لر",
        "uncategorizedcategories": "بؤلمه‌سیز بؤلمه‌لر",
        "uncategorizedimages": "بؤلمه‌سیز شکیل‌لر",
-       "uncategorizedtemplates": "بؤلمه‌سیز شابلونلار",
+       "uncategorizedtemplates": "بؤلمه‌سیز شابلونلار",
        "unusedcategories": "ایستیفاده ائدیلمه‌میش بؤلمه‌لر",
        "unusedimages": "ایشلنمه‌میش فایل‌لار",
        "wantedcategories": "یسته نن بؤلمه‌لر",
        "linksearch-text": "«*.wikipedia.org» کیمی نیشانلاری ایشلده بیلرسینیز.\nآزی بیر دنه «*.org» کیمی یوخاری دامنه لازیم‌دیر.<br />\nدستلکلنمیش {{PLURAL:$2|پروتوکول|پروتوکول‌لار}}: $1 (بوش بیراخیلسا، http:// نظرده آلیناجاقدیر).",
        "linksearch-line": "$1، $2-دن باغلانیب‌دیر",
        "linksearch-error": "نیشانلار یالنیز آدی اولینده گله بیلرلر.",
-       "listusersfrom": "بÙ\88Ù\86داÙ\86 Ø¨Ø§Ø´Ù\84اÛ\8cاراÙ\82 Ø§Û\8cستÛ\8cÙ\81ادÙ\87â\80\8cÚ\86Û\8cÙ\84رÛ\8c Ú¯Ø¤Ø³ØªØ±:",
+       "listusersfrom": "بÛ\87Ù\86داÙ\86 Ø¨Ø§Ø´Ù\84اÛ\8cاÙ\86 Ø§Û\8cØ´Ù\84دÙ\86â\80\8cÙ\84رÛ\8c Ú¯Ø¤Ø³ØªØ±:",
        "listusers-submit": "گؤستر",
        "listusers-noresult": "هئچ ایستیفاده‌چی تاپیلمادی.",
        "listusers-blocked": "(باغلانیب)",
-       "activeusers": "چالیشان ایستیفاده‌چیلرین لیستی",
-       "activeusers-intro": "بوردا سون {{PLURAL:$1|بیر|$1}} گون‌ده بیر ایشلر گؤرن ایستیفاده‌چیلرین لیستی گؤستریلیر.",
+       "activeusers": "چالیشقان ایشلدنلرین لیستی",
+       "activeusers-intro": "بۇرادا سوْن {{PLURAL:$1|بیر|$1}} گۆن‌ده دَییشدیرمه ائدن ایشلدن‌لرین لیستی گؤروشور.",
        "activeusers-count": "سون {{PLURAL:$3|گون|$3 گون}}‌ده، {{PLURAL:$1|$1}} چالیشما",
-       "activeusers-from": "بÙ\88Ù\86داÙ\86 Ø¨Ø§Ø´Ù\84اÛ\8cاراÙ\82 Ø§Û\8cستÛ\8cÙ\81ادÙ\87â\80\8cÚ\86Û\8cÙ\84رÛ\8c Ú¯Ø¤Ø³ØªØ±:",
+       "activeusers-from": "بÛ\87Ù\86داÙ\86 Ø¨Ø§Ø´Ù\84اÛ\8cاÙ\86 Ø§Û\8cØ´Ù\84دÙ\86â\80\8cÙ\84رÛ\8c Ú¯Ø¤Ø³ØªØ±:",
        "activeusers-hidebots": "روْبات‌لاری گیزلت",
        "activeusers-hidesysops": "ایداره‌چیلری گیزلت",
        "activeusers-noresult": "هئچ ایشلدن تاپیلمادی.",
+       "activeusers-submit": "چالیشقان ایشلدن‌لری گؤستر",
        "listgrouprights": "ایستیفاده‌چی قروپ حاقلاری",
        "listgrouprights-summary": "آشاغیدا، بو ویکی‌ده تانیلان ایستیفاده‌چی گروپلاری و اونلارین حاقلاری گؤستریلیر.\nتک حاقلار اوچون ده، [[{{MediaWiki:Listgrouprights-helppage}}|آرتیق بیلگیلر]] اولا بیلر.",
        "listgrouprights-key": "یوْل گؤستری:\n* <span class=\"listgrouprights-granted\">وئریلمیش حاق</span>\n* <span class=\"listgrouprights-revoked\">قایتاریلمیش حاق</span>",
        "wlheader-showupdated": "سون گؤروشونوزدن سوْنرا ائدیلن دییشیکلیکلر '''قالین''' گؤرسدیلیب‌دیر.",
        "wlnote": "آشاغیداکی {{PLURAL:$1|بیر ديَیشیک‌لیک|<strong>$1</strong> ديَیشیک‌لیک}}  سون {{PLURAL:$2|ساعتدا|<strong>$2</strong> ساعتدا}} ائدیلمیشدیر. $3، $4",
        "wlshowlast": "سون $1 ساعات $2 گون گؤستر",
-       "watchlistall2": "بوتون",
        "watchlist-options": "ایزله‌دیکلر سئچمه‌لری",
        "watching": "ایزله‌نیلیر...",
        "unwatching": "ایزله‌مه...",
        "deletepage": "صحیفه‌‌نی سیل",
        "confirm": "تصدیق ائت",
        "excontent": "کؤهنه مظمون: '$1'",
-       "excontentauthor": "ترکÛ\8cب: '$1 (Ù\88'[[Special:Contributions/$2|$2]]' ØªØ§Ø±Û\8cØ®Ú\86Ù\87â\80\8cدÙ\87 Ù\81اÙ\84Û\8cتÛ\8c Ù\82ئÛ\8cد Ø§Ø¦Ø¯Û\8cÙ\84Ù\86 Û\8cئگاÙ\86Ù\87 Ø§Û\8cستÛ\8cÙ\81ادÙ\87â\80\8cÚ\86Û\8câ\80\8cدÛ\8cر)",
+       "excontentauthor": "صÙ\81Ø­Ù\87 Ø§Û\8cÚ\86Û\8cÙ\86دÙ\87â\80\8cÚ©Û\8cÙ\84ر Ø¨Û\87 Ø§Û\8cدÛ\8c: Â«$1» Ù\88 ØªÚ©Ø¬Ù\87 Ú\86اÙ\84Û\8cشاÙ\86 Â«[[Special:Contributions/$2|$2]] ([[User talk:$2|داÙ\86Û\8cØ´Û\8cÙ\82]])» Ø§Û\8cدÛ\8c.",
        "exbeforeblank": "سیلینمه‌دن اوولکی مزمون: '$1",
        "delete-confirm": "سیل $1",
        "delete-legend": "سیل",
        "sp-contributions-toponly": "تکجه سون نوسخه اولان دییشیکلری گؤستر",
        "sp-contributions-newonly": "تکجه صفحه یاراتماق دَییشیکلیکلرینی گؤستر",
        "sp-contributions-submit": "آختار",
-       "whatlinkshere": "بو صفحه‌یه باغلانتیلار",
+       "whatlinkshere": "بۇ صحیفه‌‌يه باغلانتیلار",
        "whatlinkshere-title": "«$1»-ه باغلانان صحیفه‌لر",
        "whatlinkshere-page": "صفحه:",
        "linkshere": "آشاغیداکی صفحه‌لر '''[[:$1]]'''-ه باغلانیب:",
        "allmessagesname": "آد",
        "allmessagesdefault": "دفالت دانیشیق متنی",
        "allmessagescurrent": "ایندیکی متن",
-       "allmessagestext": "بو مئدیا ویکی-ده اولان سیستئم مئساژلارینین سیاهی‌سی‌دیر. اگر مئدیا ویکی-نی لوکاللاش‌دیرماق ایشینده کؤمک ائتمک ایسییرسینیزسه، لطفاً [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation MediaWiki Localisation] و [//translatewiki.net translatewiki.net]-ا باش چکین.",
+       "allmessagestext": "بۇ مئدیاویکی-ده اوْلان سیستم مئساژلاری‌نین سیاهی‌سی‌دیر. اگر مئدیاویکی-نی لوْکاللاشدیرماق ایشینده کؤمک ائتمک ایسه‌يیرسینیزسه، لطفاً [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation MediaWiki Localisation] و [//translatewiki.net translatewiki.net]-ه باش چکین.",
        "allmessagesnotsupportedDB": "'''$ wgUseDatabaseMessages''' باغ‌لی اولدوغو اوچون '{{ns:special}}: Allmessages ایستیفاده‌یه آچیق دئییل.",
        "allmessages-filter-legend": "سۆزگَج",
        "allmessages-filter": "خصوصی ائتمک وضعیتینه گؤره فیلترلی:",
        "others": "آیریلار",
        "siteusers": "{{SITENAME}} {{PLURAL:$2|وسئر|یستیفاده‌چی}} $1",
        "anonusers": "{{SITENAME}} آنونیم {{PLURAL:$2|وسئر|یستیفاده‌چی}} $1",
-       "creditspage": "صحیفه اعتبارلاری",
+       "creditspage": "صفحه اعتبارلاری",
        "nocredits": "بو صحیفه اوچون هئچ بیر اعتیبار بیلگیلری ال‌ده دئییل.",
        "spamprotectiontitle": "فایداسیز یازما قوروما فیلتری",
        "spamprotectiontext": "سیز قئید ائتمک ایسته‌دیگینیز یازینین قاباغی، اِسپم فیلتِریله، آلیندی.\nبو ایش، اوندا ائشیک قره‌لیست‌ده اولان بیر سایتا باغلانتی وئرمک اوچون اولا بیلر.",
        "pageinfo-header-basic": "اساس معلومات‌لار",
        "pageinfo-header-edits": "تاریخچه نی دییشدیر",
        "pageinfo-header-restrictions": "صفحه دن محافظت ائله مک",
-       "pageinfo-header-properties": "صحیفه خصوصیت‌لری",
+       "pageinfo-header-properties": "صفحه خصوصیتلری",
        "pageinfo-display-title": "گؤستریلن باشلیق",
        "pageinfo-default-sort": "فرض ائدیلن سیرالاما آچاری",
        "pageinfo-length": "صحیفه‌‌ اوزونلوغو (بايت)",
        "img-lang-go": "گئت",
        "ascending_abbrev": "آرتما سیراسینا گؤره",
        "descending_abbrev": "آزالما سیراسینا گؤره",
-       "table_pager_next": "سÙ\88Ù\86راکÛ\8c ØµØ­Û\8cÙ\81ه",
+       "table_pager_next": "سÙ\88Ù\92Ù\86راکÛ\8c ØµÙ\81Ø­ه",
        "table_pager_prev": "قاباغکی صحیفه",
        "table_pager_first": "ایلک صحیفه‌‌",
        "table_pager_last": "سون صحیفه‌‌",
index b00e6dd..8cb4b42 100644 (file)
        "searchrelated": "ҡағылышлы",
        "searchall": "барыһы",
        "showingresults": "Түбәндә №&nbsp;<strong>$2</strong> һөҙөмтәнән башлап <strong>$1</strong> {{PLURAL:$1|һөҙөмтә}} күрһәтелгән.",
+       "search-showingresults": "{{PLURAL:$4|<strong>$3</strong> нәтижәнән <strong>$1</strong>| <strong>$3</strong> нәтижәләрҙән <strong>$1 — $2</strong>}}",
        "search-nonefound": "Был һорауға яуап биреүсе һөҙөмтәләр табылманы.",
        "powersearch-legend": "Киңәйтелгән эҙләү",
        "powersearch-ns": "Исем аралыҡтарында эҙләү:",
        "recentchanges-label-unpatrolled": "Был төҙәтеү ҡаралмаған әле",
        "recentchanges-label-plusminus": "Бит шул тиклем байтҡа үҙгәрҙе",
        "recentchanges-legend-heading": "'''Легенда:'''",
-       "recentchanges-legend-newpage": "$1 — яңы бит",
+       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|Яңы биттәр исемлеген]] ҡарағыҙ)",
        "rcnotefrom": "Түбәндә '''$2''' башлап ('''$1''' тиклем) үҙгәртеүҙәр күрһәтелгән.",
        "rclistfrom": "$3 $2 башлап яңы үҙгәртеүҙәрҙе күрһәт.",
        "rcshowhideminor": "бәләкәй төҙәтеүҙәрҙе $1",
        "watchthisupload": "Файлды күҙәтергә",
        "filewasdeleted": "Бындай исемле файл бығаса булған һәм юйылған. Зинһар, ҡабаттан тейәр алдынан $1 битен ҡарағыҙ.",
        "filename-bad-prefix": "Тейәлә торған файлдың исеме ''«$1»''' менән башлана һәм ул цифрлы камераларҙа файлдарға уҙенән-үҙе бирелә торған исемгә оҡшаған.\nЗинһар, файлды яҡшыраҡ тасуирлаған исем һайлағыҙ.",
-       "upload-success-subj": "Файл тейәү уңышлы тамамланды",
-       "upload-success-msg": "Һеҙҙең [$2] адресынан тейәүегеҙ уңышлы тамаланды. Файлды ошонда ҡарай алаһығыҙ: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Тейәү уңышлы түгел",
-       "upload-failure-msg": "[$2] адресынан тейәгән ваҡытта ҡыйынлыҡтар тыуҙы:\n$1",
-       "upload-warning-subj": "Тейәү ваҡытында киҫәтеү",
-       "upload-warning-msg": "[$2] адресынан тейәгән ваҡытта ҡыйынлыҡтар тыуҙы. Хатаны төҙәтеү өсөн [[Special:Upload/stash/$1|файл тейәү формаһына]] кире ҡайта алаһығыҙ.",
        "upload-proto-error": "Протокол дөрөҫ түгел",
        "upload-proto-error-text": "Алыҫтан тейәү өсөн <code>http://</code> йәки <code>ftp://</code> менән башланған адрес кәрәк.",
        "upload-file-error": "Эске хата",
        "wlheader-showupdated": "Һеҙҙең аҙаҡҡы кереүегеҙҙән һуң үҙгәргән биттәр '''ҡалын''' шрифт менән күрһәтелгән.",
        "wlnote": "Түбәндә $3 $4 ваҡытына тиклем аҙаҡҡы {{PLURAL:$2|1=сәғәт|'''$2''' сәғәт}} эсендә эшләнгән {{PLURAL:$1|1=үҙгәртеү|'''$1''' үҙгәртеү}} күрһәтелгән.",
        "wlshowlast": "Һуңғы $1 сәғәт $2 көн өсөн күрһәт",
-       "watchlistall2": "бөтә",
        "watchlist-options": "Күҙәтеү исемлеге көйләүҙәре",
        "watching": "Күҙәтеү исемлегенә өҫтәү...",
        "unwatching": "Күҙәтеү исемлегенән сығарыу...",
        "tooltip-pt-logout": "Сығырға",
        "tooltip-pt-createaccount": "Мотлаҡ булмаһа ла, Һеҙгә иҫәп яҙмаһы төҙөргө һәм системала танылырға тәҡдим итәбеҙ.",
        "tooltip-ca-talk": "Биттең эстәлеге тураһында фекерләшеү",
-       "tooltip-ca-edit": "ҺеÒ\99 Ð±Ñ\8bл Ð±Ð¸Ñ\82Ñ\82е Ò¯Ò\99гÓ\99Ñ\80Ñ\82Ó\99 Ð°Ð»Ð°Ò»Ñ\8bÒ\93Ñ\8bÒ\99. Ð\97инһаÑ\80, Ñ\8fÒ\99Ñ\8bп Ò¡Ñ\83йÑ\8bÑ\80 Ð°Ð»Ð´Ñ\8bнан Ò¡Ð°Ñ\80ап Ñ\81Ñ\8bÒ\93Ñ\8bÒ\93Ñ\8bÒ\99",
+       "tooltip-ca-edit": "Ð\91Ñ\8bл Ð±Ð¸Ñ\82Ñ\82е Ò¯Ò\99гÓ\99Ñ\80Ñ\82еÑ\80гÓ\99",
        "tooltip-ca-addsection": "Яңы бүлек эшләргә",
        "tooltip-ca-viewsource": "Был бит үҙгәртеүҙән һаҡланған.\nТик сығанаҡ текстын ғына ҡарай һәм күсереп ала алаһығыҙ.",
        "tooltip-ca-history": "Биттең төҙәтеүҙәр исемлеге",
        "tooltip-t-recentchangeslinked": "Был биттән һылтанған биттәрҙә һуңғы үҙгәртеүҙәр",
        "tooltip-feed-rss": "Был бит өсөн RSS-таҫма",
        "tooltip-feed-atom": "Был бит өсөн Atom-таҫма",
-       "tooltip-t-contributions": "Был ҡулланыусының кереткән өлөшөн ҡарарға",
+       "tooltip-t-contributions": "{{GENDER:$1|Был ҡулланыусының}} кереткән өлөшөн ҡарарға",
        "tooltip-t-emailuser": "Был ҡулланыусыға хат ебәрергә",
        "tooltip-t-upload": "Рәсем йәки тауыш эстәлекле файлдарҙы тейәргә",
        "tooltip-t-specialpages": "Барлыҡ махсус биттәр исемлеге",
        "spam_reverting": "$1 һылтанмаһыҙ һуңғы өлгөгә ҡайтарыу",
        "spam_blanking": "Бөтә өлгөләрҙә лә $1 һылтанмаһы бар, таҙартыу",
        "spam_deleting": "Бөтә өлгөләрҙә лә $1 һылтанма бар, таҙартыу бара",
-       "simpleantispam-label": "Спамға ҡаршы тикшереү.\nБыны '''ТУЛТЫРМАҒЫҘ'''!",
+       "simpleantispam-label": "Спамға ҡаршы тикшереү.\nБыны <strong>ТУЛТЫРМАҒЫҘ</strong>!",
        "pageinfo-title": "«$1» буйынса мәғлүмәт",
        "pageinfo-not-current": "Ғәфү итегеҙ, был мәғлүмәтте иҫке версиялар өсөн күрһәтеп булмай.",
        "pageinfo-header-basic": "Төп мәғлүмәт",
index 3b4c16c..682b540 100644 (file)
        "botpasswords-summary": "<em>Паролі робатаў</em> дазваляюць доступ да рахунку ўдзельніка праз API без выкарыстаньня лагіну і паролю асноўнага рахунку. Правы ўдзельніка пры выкарыстаньні паролю робата могуць быць абмежаваныя.\n\nКалі вы ня ведаеце, навошта вам гэта, мабыць, не рабіце гэтага. Ніхто не павінен прасіць вас згенэраваць такі пароль і перадаць гэты пароль яму.",
        "botpasswords-disabled": "Паролі робатаў адключаныя.",
        "botpasswords-no-central-id": "Для ўжываньня пароляў робатаў вы мусіце ўвайсьці ў свой глябальны рахунак.",
+       "botpasswords-existing": "Існыя паролі робатаў",
+       "botpasswords-createnew": "Стварыць новы пароль робата",
+       "botpasswords-editexisting": "Рэдагаваць існы пароль робата",
+       "botpasswords-label-appid": "Назва робата:",
        "botpasswords-label-create": "Стварыць",
        "botpasswords-label-update": "Абнавіць",
        "botpasswords-label-cancel": "Скасаваць",
        "botpasswords-label-delete": "Выдаліць",
        "botpasswords-label-resetpassword": "Ачысьціць пароль",
+       "botpasswords-label-grants": "Прыдатныя дазволы:",
+       "botpasswords-help-grants": "Кожны дазвол дае доступ да правоў удзельніка, якія ўжо мае рахунак удзельніка. Глядзіце [[Special:ListGrants|табліцу дазволаў]] дзеля дадатковых зьвестак.",
+       "botpasswords-label-restrictions": "Абмежаваньні на выкарыстаньне:",
+       "botpasswords-label-grants-column": "Дазволена",
+       "botpasswords-bad-appid": "Назва робата «$1» зьяўляецца няслушнай.",
+       "botpasswords-insert-failed": "Не атрымалася дадаць робата зь імем «$1». Магчыма, ён ужо быў дададзены?",
+       "botpasswords-update-failed": "Не атрымалася абнавіць робата зь імем «$1». Магчыма, ён быў выдалены?",
+       "botpasswords-created-title": "Пароль робата створаны",
        "resetpass_forbidden": "Пароль ня можа быць зьменены",
        "resetpass-no-info": "Для непасрэднага доступу да гэтай старонкі Вам неабходна ўвайсьці ў сыстэму.",
        "resetpass-submit-loggedin": "Зьмяніць пароль",
        "uploaded-script-svg": "У загружаным SVG-файле знойдзены небясьпечны элемэнт з падтрымкай сцэнароў «$1».",
        "uploaded-hostile-svg": "Знойдзены небясьпечны CSS у элемэнце стылю загружанага SVG-файла.",
        "uploaded-event-handler-on-svg": "Усталёўваць атрыбуты апрацоўніка падзеяў <code>$1=\"$2\"</code> не дазволена для SVG-файлаў.",
-       "uploaded-href-attribute-svg": "У SVG-файлах не дазволеныя href-атрыбуты <code>&lt;$1 $2=\"$3\"&gt;</code> зь нелякальнай мэтай (напрыклад, http://, javascript:, і г. д.).",
-       "uploaded-href-unsafe-target-svg": "У загружаным SVG-файле знойдзеная спасылка на небясьпечную мэту <code>&lt;$1 $2=\"$3\"&gt;</code>.",
+       "uploaded-href-unsafe-target-svg": "У загружаным SVG-файле знойдзеная спасылка на небясьпечныя зьвесткі: URI-мэты <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploaded-animate-svg": "У загружаным SVG-файле знойдзены тэг «animate», які можа зьмяняць спасылку з дапамогай атрыбуту «from» <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploaded-setting-event-handler-svg": "Усталёўка атрыбутаў апрацоўкі падзеяў заблякаваная, у загружаным SVG-файле знойдзены код <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploaded-setting-href-svg": "Выкарыстаньне тэгу «set» для дадаваньня атрыбуту «href» у бацькоўскі элемэнт заблякаванае.",
        "filewasdeleted": "Файл з такой назвай загружаўся, але быў выдалены.\nВам трэба праверыць $1 перад новай загрузкай.",
        "filename-thumb-name": "Гэта выглядае як назва мініятуры. Калі ласка, не загружайце мініятуры назад у тую ж вікі. Калі вам неабходны гэты файл, выпраўце назву на больш зразумелую, каб яна ня ўтрымлівала прэфікс мініятуры.",
        "filename-bad-prefix": "Назва файла, які Вы загружаеце, пачынаецца з '''«$1»'''. Падобныя бессэнсоўныя назвы звычайна ствараюцца аўтаматычна лічбавымі фотаапаратамі. Калі ласка, абярыце больш зразумелую назву для Вашага файла.",
-       "upload-success-subj": "Загрузка пасьпяхова скончылася",
-       "upload-success-msg": "Вашая загрузка з [$2] была пасьпяховая. Яна даступная тут: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Праблема загрузкі",
-       "upload-failure-msg": "Узьнікла праблема пад час Вашай загрузкі з [$2]:\n\n$1",
-       "upload-warning-subj": "Папярэджаньне загрузкі",
-       "upload-warning-msg": "Узьнікла праблема з Вашай загрузкай з [$2]. Вы можаце вярнуцца на [[Special:Upload/stash/$1|форму загрузкі]] для вырашэньня гэтай праблемы.",
        "upload-proto-error": "Няслушны пратакол",
        "upload-proto-error-text": "Аддаленая загрузка файлаў патрабуе URL-адрас, які пачынаецца з <code>http://</code> альбо <code>ftp://</code>.",
        "upload-file-error": "Унутраная памылка",
        "querypage-disabled": "Гэта спэцыяльная старонка адключаная для падвышэньня прадукцыйнасьці",
        "apihelp": "Даведка API",
        "apihelp-no-such-module": "Модуль «$1» ня знойдзены.",
-       "booksources": "Ð\9fоÑ\88Ñ\83к кніг",
+       "booksources": "Ð\9aÑ\80Ñ\8bнÑ\96Ñ\86Ñ\8b кніг",
        "booksources-search-legend": "Пошук кніг",
        "booksources-isbn": "ISBN:",
        "booksources-search": "Шукаць",
        "log-title-wildcard": "Шукаць назвы, якія пачынаюцца з гэтага тэксту",
        "showhideselectedlogentries": "Паказаць/схаваць выбраныя запісы ў журнале",
        "log-edit-tags": "Рэдагаваць меткі да абраных запісаў у журнале падзеяў",
+       "checkbox-all": "Усе",
        "allpages": "Усе старонкі",
        "nextpage": "Наступная старонка ($1)",
        "prevpage": "Папярэдняя старонка ($1)",
        "wlheader-showupdated": "Старонкі, зьмененыя з часу вашага апошняга візыту, вылучаныя '''тоўстым''' шрыфтам.",
        "wlnote": "Ніжэй {{PLURAL:$1|паказаная <strong>$1</strong> апошняя зьмена|паказаныя <strong>$1</strong> апошнія зьмены|паказаныя <strong>$1</strong> апошніх зьменаў}} за <strong>$2</strong> {{PLURAL:$2|гадзіну|гадзіны|гадзінаў}}, па стане на $4 $3.",
        "wlshowlast": "Паказаць за апошнія $1 гадзінаў, $2 дзён",
-       "watchlistall2": "усё",
        "watchlist-hide": "Схаваць",
        "watchlist-submit": "Паказаць",
        "wlshowtime": "Пэрыяд часу для паказу:",
        "whatlinkshere": "Спасылкі на старонку",
        "whatlinkshere-title": "Старонкі, якія спасылаюцца на $1",
        "whatlinkshere-page": "Старонка:",
-       "linkshere": "Наступныя старонкі спасылаюцца на '''[[:$1]]''':",
+       "linkshere": "Наступныя старонкі спасылаюцца на <strong>[[:$1]]</strong>:",
        "nolinkshere": "Ніводная старонка не спасылаецца на '''[[:$1]]'''.",
        "nolinkshere-ns": "Ніводная старонка не спасылаецца на '''[[:$1]]''' з выбранай прасторы назваў.",
        "isredirect": "старонка-перанакіраваньне",
        "istemplate": "уключэньне",
        "isimage": "спасылка на файл",
-       "whatlinkshere-prev": "{{PLURAL:$1|папярэдняя|папярэднія|папярэднія}} $1",
-       "whatlinkshere-next": "{{PLURAL:$1|наступная|наступныя|наступныя}} $1",
+       "whatlinkshere-prev": "{{PLURAL:$1|папярэдняя|папярэднія}} $1",
+       "whatlinkshere-next": "{{PLURAL:$1|наступная|наступныя}} $1",
        "whatlinkshere-links": "← спасылкі",
        "whatlinkshere-hideredirs": "$1 перанакіраваньні",
        "whatlinkshere-hidetrans": "$1 уключэньні",
        "lockedbyandtime": "($1 $2 у $3)",
        "move-page": "Перанесьці $1",
        "move-page-legend": "Перанесьці старонку",
-       "movepagetext": "З дапамогай гэтай формы Вы можаце перанесьці старонку, і разам зь ёй усю гісторыю.\nСтарая назва будзе перанакіроўваць на новую.\nВы можаце аўтаматычна абнавіць перанакіраваньні на першапачатковую назву.\nКалі вы адмовіцеся, упэўніцеся ў адсутнасьці [[Special:DoubleRedirects|падвойных]] ці [[Special:BrokenRedirects|няслушных перанакіраваньняў]].\nАдказнасьць за дакладнасьць спасылак ляжыць на тым, хто перанёс старонку.\n\nЗаўважце, што старонка '''ня будзе''' перанесеная, калі пад новай назвай ужо існуе іншая старонка, за выключэньнем выпадкаў, калі яна пустая альбо зьяўляецца перанакіраваньнем і ня мае гісторыі рэдагаваньняў. Гэта азначае, што існуе магчымасьць скасаваць зьмену назвы, калі Вы памыліліся, але немагчыма выдаліць існую старонку.\n\n'''Увага!'''\nЗьмена назвы папулярных старонак можна стацца вельмі нечаканай і рэзкай;\nкалі ласка, упэўніцеся, што Вы разумееце наступствы такіх зьменаў.",
-       "movepagetext-noredirectfixer": "Скарыстаўшыся гэтай формай, Вы перанесяце старонку з усёй гісторыяй зьменаў да новай назвы.\nСтаронка са старой назвай будзе перанакіроўваць на старонку з новай.\nКалі ласка, праверце існаваньне [[Special:DoubleRedirects|падвоеных]] і [[Special:BrokenRedirects|няслушных перанакіраваньняў]].\nВы адказныя за тое, каб спасылкі працягвалі весьці туды, куды яны павінны.\n\nЗаўважце, калі ласка, што старонка '''ня будзе''' перанесеная, калі ўжо існуе старонка з новай назвай, акрамя выпадкаў, калі яна пустая ці зьмяшчае перанакіраваньне, а таксама ня мае папярэдняй гісторыі рэдагаваньняў.\nГэта значыць, што Вы можаце перанесьці старонку назад, калі зробіце памылку, але ня можаце выпадкова перазапісаць існуючую старонку.\n\n'''Папярэджаньне!'''\nПеранос можа быць маштабным і нечаканым для ''папулярных'' старонак.\nУпэўніцеся, калі ласка, што Вы разумееце ўсе магчымыя наступствы пераносу.",
+       "movepagetext": "З дапамогай гэтай формы Вы можаце перанесьці старонку, і разам зь ёй усю гісторыю.\nСтарая назва будзе перанакіроўваць на новую.\nВы можаце аўтаматычна абнавіць перанакіраваньні на першапачатковую назву.\nКалі вы адмовіцеся, упэўніцеся ў адсутнасьці [[Special:DoubleRedirects|падвойных]] ці [[Special:BrokenRedirects|няслушных перанакіраваньняў]].\nАдказнасьць за дакладнасьць спасылак ляжыць на тым, хто перанёс старонку.\n\nЗаўважце, што старонка <strong>ня будзе</strong> перанесеная, калі пад новай назвай ужо існуе іншая старонка, за выключэньнем выпадкаў, калі яна пустая альбо зьяўляецца перанакіраваньнем і ня мае гісторыі рэдагаваньняў. Гэта азначае, што існуе магчымасьць скасаваць зьмену назвы, калі Вы памыліліся, але немагчыма выдаліць існую старонку.\n\n<strong>Заўвага:</strong>\nЗьмена назвы папулярных старонак можна стацца вельмі нечаканай і рэзкай;\nкалі ласка, упэўніцеся, што Вы разумееце наступствы такіх зьменаў.",
+       "movepagetext-noredirectfixer": "Скарыстаўшыся гэтай формай, Вы перанесяце старонку з усёй гісторыяй зьменаў да новай назвы.\nСтаронка са старой назвай будзе перанакіроўваць на старонку з новай.\nКалі ласка, праверце існаваньне [[Special:DoubleRedirects|падвоеных]] і [[Special:BrokenRedirects|няслушных перанакіраваньняў]].\nВы адказныя за тое, каб спасылкі працягвалі весьці туды, куды яны павінны.\n\nЗаўважце, калі ласка, што старонка <strong>ня будзе</strong> перанесеная, калі ўжо існуе старонка з новай назвай, акрамя выпадкаў, калі яна зьмяшчае перанакіраваньне, а таксама ня мае папярэдняй гісторыі рэдагаваньняў.\nГэта значыць, што Вы можаце перанесьці старонку назад, калі зробіце памылку, але ня можаце выпадкова перазапісаць існую старонку.\n\n<strong>Заўвага:</strong>\nПеранос можа быць маштабным і нечаканым для папулярных старонак.\nУпэўніцеся, калі ласка, што Вы разумееце ўсе магчымыя наступствы пераносу.",
        "movepagetalktext": "Калі вы адзначыце гэтае поле, старонка абмеркаваньня будзе аўтаматычна перанесеная пад новую назву разам з асноўнай старонкай, за выключэньнем выпадку, калі не пустая старонка абмеркаваньня ўжо існуе пад новай назвай.\n\nУ такім выпадку вы можаце перанесьці ці аб’яднаць старонку абмеркаваньня самастойна.",
        "moveuserpage-warning": "'''Папярэджаньне:''' Вы зьбіраецеся перанесьці старонку ўдзельніка. Калі ласка заўважце, што старонка будзе перанесеная, але імя ўдзельніка ''ня'' будзе зьмененае.",
        "movecategorypage-warning": "<strong>Увага:</strong> вы зьбіраецеся перанесьці старонку катэгорыі. Калі ласка, заўважце, што будзе перанесеная толькі гэтая старонка, а ўсе старонкі з старой катэгорыі <em>ня</em> будуць перанесеныя ў новую.",
        "movenosubpage": "Гэтая старонка ня мае падстаронак.",
        "movereason": "Прычына:",
        "revertmove": "адкат",
-       "delete_and_move_text": "==Патрабуецца выдаленьне==\nМэтавая старонка «[[:$1]]» ужо існуе.\nЦі жадаеце Вы яе выдаліць, каб вызваліць месца для пераносу?",
+       "delete_and_move_text": "Ужо існуе мэтавая старонка «[[:$1]]».\nЦі жадаеце Вы яе выдаліць, каб вызваліць месца для пераносу?",
        "delete_and_move_confirm": "Так, выдаліць старонку",
        "delete_and_move_reason": "Выдаленая, каб вызваліць месца для пераносу «[[$1]]»",
        "selfmove": "Крынічная і мэтавая назвы супадаюць;\nнемагчыма перанесьці старонку саму на сябе.",
        "move-leave-redirect": "Пакінуць перанакіраваньне",
        "protectedpagemovewarning": "'''Папярэджаньне:''' Гэтая старонка была абароненая, і яе могуць пераносіць толькі ўдзельнікі з правамі адміністратара.\nАпошні запіс з журнала пададзены ніжэй для даведкі:",
        "semiprotectedpagemovewarning": "'''Заўвага:''' Гэта старонка была абароненая, і яе могуць пераносіць толькі зарэгістраваныя ўдзельнікі.\nАпошні запіс з журнала пададзены ніжэй для даведкі:",
-       "move-over-sharedrepo": "== Файл існуе ==\n\n[[:$1]] існуе ў агульным сховішчы. Перайменаваньне файла ў гэтую назву закрые агульны файл.",
+       "move-over-sharedrepo": "[[:$1]] існуе ў агульным сховішчы. Перайменаваньне файла ў гэтую назву закрые агульны файл.",
        "file-exists-sharedrepo": "Выбраная назва файла ўжо выкарыстоўваецца ў агульным сховішчы.\nКалі ласка, выберыце іншую назву.",
        "export": "Экспартаваць старонкі",
        "exporttext": "Вы можаце экспартаваць тэкст і гісторыю рэдагаваньняў асобнай старонкі ці набору старонак у XML-фармаце.\nГэта потым можа быць імпартаванае ў іншую вікі, якая выкарыстоўвае MediaWiki праз [[Special:Import|старонку імпартаваньня]].\n\nКаб экспартаваць старонкі, увядзіце назвы старонак у тэкставае поле ніжэй, адну назву ў адзін радок, і абярыце жадаеце Вы цяперашнюю вэрсію разам з усімі папярэднімі вэрсіямі і гісторыяй рэдагаваньняў, ці толькі цяперашнюю вэрсію з інфармацыяй пра апошняе рэдагаваньне.\n\nУ апошнім выпадку Вы можаце таксама скарыстацца спасылкай, напрыклад, [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] для «[[{{MediaWiki:Mainpage}}]]».",
        "lastmodifiedatby": "Гэтую старонку апошні раз рэдагаваў $3 $2, $1.",
        "othercontribs": "На аснове працы $1.",
        "others": "іншыя",
-       "siteusers": "{{PLURAL:$2|1=Удзельнік|Удзельнікі}} {{GRAMMAR:родны|{{SITENAME}}}} $1",
+       "siteusers": "{{PLURAL:$2|1={{GENDER:$1|Удзельнік|Удзельніца}}|Удзельнікі}} {{GRAMMAR:родны|{{SITENAME}}}} $1",
        "anonusers": "{{PLURAL:$2|1=Ананімны ўдзельнік|Ананімныя ўдзельнікі}} {{GRAMMAR:родны|{{SITENAME}}}} $1",
        "creditspage": "Падзякі",
        "nocredits": "Няма інфармацыі пра аўтараў гэтай старонкі.",
        "version-hook-subscribedby": "Падпісаны на",
        "version-version": "($1)",
        "version-no-ext-name": "[бяз назвы]",
-       "version-svn-revision": "(r$2)",
        "version-license": "Ліцэнзія MediaWiki",
        "version-ext-license": "Ліцэнзія",
        "version-ext-colheader-name": "Пашырэньне",
        "version-libraries-license": "Ліцэнзія",
        "version-libraries-description": "Апісаньне",
        "version-libraries-authors": "Аўтары",
-       "redirect": "Перанакіраваньне да файла, удзельніка, старонкі або вэрсіі старонкі",
+       "redirect": "Перанакіраваньне да файла, удзельніка, старонкі, вэрсіі або журнала",
        "redirect-legend": "Перанакіраваньне да файла або старонкі",
-       "redirect-summary": "Гэтая спэцыяльная старонка перанакіруе да файла (паводле імя файла), старонкі (паводле нумару вэрсіі або старонкі) або старонкі ўдзельніка (паводле нумару ўдзельніка). Ужываньне: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] або [[{{#Special:Redirect}}/user/101]].",
+       "redirect-summary": "Гэтая спэцыяльная старонка перанакіруе да файла (паводле імя файла), старонкі (паводле нумару вэрсіі або старонкі), старонкі ўдзельніка (паводле нумару ўдзельніка) або запісу ў журнале падзеяў (паводле нумару ў журнале). Ужываньне: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]],[[{{#Special:Redirect}}/user/101]] або [[{{#Special:Redirect}}/logid/186]].",
        "redirect-submit": "Перайсьці",
        "redirect-lookup": "Шукаць паводле:",
        "redirect-value": "Значэньне:",
        "expand_templates_preview": "Папярэдні прагляд",
        "expand_templates_preview_fail_html": "<em>Праз тое што {{SITENAME}} мае ўключаным сыры HTML і адбылася страта зьвестак сэсіі, папярэдні прагляд схаваны, як засьцярога ад атакаў з дапамогай JavaScript.</em>\n\n<strong>Калі гэта слушная спроба перадпрагляду, калі ласка, паспрабуйце яшчэ раз.</strong>\nКалі гэта не спрацуе, паспрабуйце [[Special:UserLogout|выйсьці]] і ўвайсьці яшчэ раз.",
        "expand_templates_preview_fail_html_anon": "<em>Праз тое што {{SITENAME}} мае ўключаным сыры HTML і вы не ўвайшлі ў сыстэму, папярэдні прагляд схаваны, як засьцярога ад атакаў з дапамогай JavaScript.</em>\n\n<strong>Калі гэта слушная спроба перадпрагляду, калі ласка, [[Special:UserLogin|увайдзіце ў сыстэму]] і паспрабуйце яшчэ раз.</strong>",
-       "pagelanguage": "Ð\92Ñ\8bбаÑ\80 мовы старонкі",
+       "pagelanguage": "Ð\97Ñ\8cмена мовы старонкі",
        "pagelang-name": "Старонка",
        "pagelang-language": "Мова",
        "pagelang-use-default": "Ужываць мову па змоўчаньні",
        "action-pagelang": "зьмену мовы старонкі",
        "log-name-pagelang": "Журнал зьменаў мовы",
        "log-description-pagelang": "Гэта журнал зьменаў мовы старонак.",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|зьмяніў|зьмяніла}} мову старонкі $3 з $4 на $5.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|зьмяніў|зьмяніла}} мову старонкі $3 з $4 на $5",
        "default-skin-not-found": "Упс! Тэма афармленьня па змоўчаньні для вашай вікі, вызначаная ў <code dir=\"ltr\">$wgDefaultSkin</code> як <code>$1</code> недаступная.\n\nВашае ўсталяваньне, падобна, уключае {{PLURAL:$4|наступную тэму афармленьне|наступныя тэмы афармленьня}}. Глядзіце старонку [https://www.mediawiki.org/wiki/Manual:Skin_configuration Інструкцыя:Наладка тэмаў афармленьня] дзеля інфармацыі, як падключыць {{PLURAL:$4|яе|іх і абраць тэму па змоўчаньні}}.\n\n$2\n\n; Калі вы толькі што ўсталявалі MediaWiki:\n: Напэўна вы ўсталявалі з git або наўпрост з крынічнага коду з ужываньнем іншага мэтаду. Гэта чакана. Паспрабуйце ўсталяваць некалькі тэмаў афармленьня з [https://www.mediawiki.org/wiki/Category:All_skins каталёгу тэмаў mediawiki.org]:\n:* Спампуйце [https://www.mediawiki.org/wiki/Download tarball-усталёўнік], які ўтрымлівае некалькі тэмаў і пашырэньняў. Вы можаце скапіяваць каталёг <code>skins/</code> зь яго.\n:* Спампуйце tarball-усталёўнікі для асобных тэмаў з [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Выкарыстайце Git, каб спампаваць тэмы афармленьня].\n: Калі вы распрацоўнік MediaWiki, гэта не павінна ўплываць на вашае git-сховішча.\n\n; Калі вы толькі што абнавілі MediaWiki:\n: MediaWiki вэрсіі 1.24 і навейшыя больш не падключаюць тэмы афармленьня аўтаматычна (глядзіце [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Інструкцыя:Аўтаматычнае выяўленьне тэмаў афармленьня]). Вы можаце дадаць {{PLURAL:$5|наступны радок у|наступныя радкі ў}} <code>LocalSettings.php</code>, каб падключыць {{PLURAL:$5|усталяваную тэму|усе ўсталяваныя тэмы}} афармленьня:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Калі вы толькі што зьмянілі <code>LocalSettings.php</code>:\n: Пераправерце назвы тэмаў афармленьня на наяўнасьць памылак.",
        "default-skin-not-found-no-skins": "Упс! Тэма афармленьня па змоўчаньні для вашай вікі, вызначаная ў <code>$wgDefaultSkin</code> як <code>$1</code>, недаступная.\n\nВы ня маеце ўсталяваных тэмаў афармленьня.\n\n; Калі вы толькі што ўсталявалі або абнавілі MediaWiki:\n: Напэўна вы ўсталявалі з git або наўпрост з крынічнага коду з ужываньнем іншага мэтаду. Гэта чакана. MediaWiki вэрсіі 1.24 і навейшыя ня ўтрымліваюць тэмы афармленьня ў галоўным сховішчы. Паспрабуйце ўсталяваць некалькі тэмаў афармленьня з [https://www.mediawiki.org/wiki/Category:All_skins каталёгу тэмаў mediawiki.org]:\n:* Спампуйце [https://www.mediawiki.org/wiki/Download tarball-усталёўнік], які ўтрымлівае некалькі тэмаў і пашырэньняў. Вы можаце скапіяваць каталёг <code dir=\"ltr\">skins/</code> зь яго.\n:* Спампуйце tarball-усталёўнікі для асобны тэмаў афармленьня з [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Выкарыстайце Git, каб спампаваць тэмы афармленьня].\n: Калі вы распрацоўнік MediaWiki, гэта не павінна ўплываць на вашае git-сховішча. Глядзіце [https://www.mediawiki.org/wiki/Manual:Skin_configuration Інструкцыя:Наладка тэмаў афармленьня] дзеля інфармацыі, як падключыць іх і абраць тэму па змоўчаньні.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (уключана)",
index 73012b5..c17f252 100644 (file)
        "title-invalid-utf8": "Назва запытанай старонкі ўтрымлівае недапушчальную ў UTF-8 паслядоўнасць.",
        "title-invalid-interwiki": "Запытаны загаловак зьмяшчае інтэрвікі-спасылку, якую нельга ўжываць у назвах.",
        "title-invalid-talk-namespace": "Запытаная назва старонкі адпавядае старонцы размоў, якая не можа існаваць.",
+       "title-invalid-characters": "Запытаная назва старонкі ўтрымлівае недапушчальныя сімвалы: \"$1\".",
+       "title-invalid-magic-tilde": "Запытаная назва старонкі ўтрымлівае недапушчальную паслядоўнасць тыльдаў (<nowiki>~~~</nowiki>).",
+       "title-invalid-too-long": "Запытаная назва старонкі занадта доўгая. Яна павінна быць не даўжэй за $1 {{PLURAL:$1|байт|байты|байтаў}} у кадаванні UTF-8.",
+       "title-invalid-leading-colon": "Запытаная назва старонкі ўтрымлівае недапушчальнае двухкроп'е ў пачатку.",
        "perfcached": "Гэта ўзятыя з кэшу звесткі, і яны могуць не быць актуальнымі. У кэшы захоўваецца не больш за {{PLURAL:$1|адзін вынік|$1 вынікі|$1 вынікаў}}.",
        "perfcachedts": "Наступныя звесткі кэшаваныя і апошні раз былі абноўленыя $1. У кэшы {{PLURAL:$4|даступны|даступныя}} не больш за $4 {{PLURAL:$4|вынік|вынікі|вынікаў}}.",
        "querypage-no-updates": "Абнаўленне гэтай старонкі цяпер адключана.\nПаказаныя тут звесткі зараз не абновяцца.",
        "viewsource": "Паказаць зыходны тэкст",
        "viewsource-title": "Прагляд зыходнага тэксту старонкі $1",
        "actionthrottled": "Дзеянне прыгашана",
-       "actionthrottledtext": "Дзеля абароны ад спаму, вам не дазваляецца выконваць гэтае дзеянне занадта часта за пэўны адрэзак часу, і вы гэты ліміт перасягнулі. Паспрабуйце ізноў праз некалькі мінут.",
+       "actionthrottledtext": "Дзеля абароны ад спаму, вам не дазваляецца выконваць гэтае дзеянне занадта часта за пэўны адрэзак часу, і вы гэты ліміт перасягнулі.\nПаспрабуйце ізноў праз некалькі мінут.",
        "protectedpagetext": "Старонка ахоўваецца, каб нельга было яе правіць ці яшчэ што рабіць.",
-       "viewsourcetext": "Можна бачыць і капіраваць зыходны тэкст гэтай старонкі:",
-       "viewyourtext": "Вы можаце праглядзець і скапіяваць зыходны тэкст '''вашых правак''' на гэтай старонцы:",
+       "viewsourcetext": "Можна бачыць і капіраваць зыходны тэкст гэтай старонкі.",
+       "viewyourtext": "Вы можаце праглядзець і скапіяваць зыходны тэкст <strong>вашых правак</strong> на гэтай старонцы.",
        "protectedinterface": "Старонка ўтрымлівае інтэрфейснае паведамленне праграмнага забеспячэння гэтага вікі-праекта і ахоўваецца, каб прадухіліць вандалізм.\nКаб дабавіць ці змяніць пераклады ва ўсіх вікі-праектах, калі ласка, выкарыстоўвайце сайт лакалізацыі MediaWiki [//translatewiki.net/ translatewiki.net].",
-       "editinginterface": "<strong>Увага:</strong> Вы правіце старонку, якая ўтрымлівае тэкст карыстальніцкага інтэрфейсу.\nЯе змяненне паўплывае на вонкавы выгляд праграмы для ўсіх удзельнікаў гэтай вікі.\nПраект лакалізацыі MediaWiki: [//translatewiki.net/wiki/ translatewiki.net].",
-       "cascadeprotected": "Старонка знаходзіцца пад аховай ад правак, таму што яна ўлучана ў наступн{{PLURAL:$1|ую старонку|ыя старонкі}}, якія ахоўваюцца з магчымасцю \"каскаднага распаўсюджвання\" аховы:\n$2",
+       "editinginterface": "<strong>Увага:</strong> Вы правіце старонку, якая ўтрымлівае тэкст карыстальніцкага інтэрфейсу.\nЯе змяненне паўплывае на вонкавы выгляд праграмы для ўсіх удзельнікаў гэтай вікі.",
+       "translateinterface": "Каб дабавіць ці змяніць пераклады ва ўсіх вікі-праектах, калі ласка, выкарыстоўвайце сайт лакалізацыі MediaWiki [//translatewiki.net/ translatewiki.net].",
+       "cascadeprotected": "Старонка знаходзіцца пад аховай ад правак, таму што яна ўлучана ў наступн{{PLURAL:$1|ую старонку, якая ахоўваецца|ыя старонкі, якія ахоўваюцца}} з магчымасцю \"каскаднага распаўсюджання\" аховы:\n$2",
        "namespaceprotected": "Вам не дазволена правіць старонкі ў прасторы назваў <strong>$1</strong>.",
        "customcssprotected": "У вас няма дазволу рэдагаваць гэтую CSS-старонку, бо яна ўтрымлівае асабістыя настройкі іншага ўдзельніка.",
        "customjsprotected": "У вас няма дазволу рэдагаваць гэтую JavaScript-старонку, таму што яна ўтрымлівае асабістыя настройкі іншага ўдзельніка.",
        "mypreferencesprotected": "Вам не дазволена рэдагаваць свае настройкі.",
        "ns-specialprotected": "Не дазволена правіць старонкі ў прасторы назваў {{ns:special}}.",
        "titleprotected": "Назва засцерагаецца ад стварэння; ахова пастаўлена ўдзельнікам: [[User:$1|$1]].\nТлумачэнне пастаноўкі пад ахову: \"<em>$2</em>\".",
-       "filereadonlyerror": "Ð\9dемагÑ\87Ñ\8bма Ð·Ð¼Ñ\8fнÑ\96Ñ\86Ñ\8c Ñ\84айл \"$1\", Ñ\82амÑ\83 Ñ\88Ñ\82о Ñ\84айлавае Ñ\81Ñ\85овÑ\96Ñ\88Ñ\87а \"$2\" Ð·Ð°Ñ\80аз Ñ\83 Ñ\80Ñ\8dжÑ\8bме \"Ñ\82олÑ\8cкÑ\96 Ð´Ð»Ñ\8f Ñ\87Ñ\8bÑ\82аннÑ\8f\".\n\nÐ\90дміністратар, які абмежаваў доступ, патлумачыў гэта так: \"$3\".",
+       "filereadonlyerror": "Ð\9dемагÑ\87Ñ\8bма Ð·Ð¼Ñ\8fнÑ\96Ñ\86Ñ\8c Ñ\84айл \"$1\", Ñ\82амÑ\83 Ñ\88Ñ\82о Ñ\84айлавае Ñ\81Ñ\85овÑ\96Ñ\88Ñ\87а \"$2\" Ð·Ð°Ñ\80аз Ñ\83 Ñ\80Ñ\8dжÑ\8bме \"Ñ\82олÑ\8cкÑ\96 Ð´Ð»Ñ\8f Ñ\87Ñ\8bÑ\82аннÑ\8f\".\n\nСÑ\96Ñ\81Ñ\82Ñ\8dмнÑ\8b Ð°дміністратар, які абмежаваў доступ, патлумачыў гэта так: \"$3\".",
        "invalidtitle-knownnamespace": "Недапушчальны загаловак з прасторай імёнаў \"$2\" і тэкстам \"$3\"",
        "invalidtitle-unknownnamespace": "Недапушчальны загаловак з невядомым лікам прасторы імён $1 і тэкстам \"$2\"",
        "exception-nologin": "Вы не ўвайшлі ў сістэму",
        "virus-scanfailed": "не ўдалося праверыць (код $1)",
        "virus-unknownscanner": "невядомы антывірус:",
        "logouttext": "<strong>Вы выйшлі з сістэмы.</strong>\n\nЗаўважце, што некаторыя старонкі могуць паказвацца так, быццам вы яшчэ не выйшлі; у такім разе трэба ачысціць кэш вашага браўзера.",
+       "cannotlogoutnow-title": "Зараз немагчыма выйсці",
+       "cannotlogoutnow-text": "Пры выкарыстанні $1 выхад з сістэмы немагчымы.",
        "welcomeuser": "Вітаем, $1!",
        "welcomecreation-msg": "Ваш рахунак быў створаны.\nНе забудзьцеся ажыццявіць [[Special:Preferences|настройку]] для {{SITENAME}}.",
        "yourname": "Імя ўдзельніка:",
        "remembermypassword": "Памятаць мяне на гэтым камп'ютары (не даўжэй за $1 {{PLURAL:$1|дзень|дні|дзён}})",
        "userlogin-remembermypassword": "Заставацца ў сістэме",
        "userlogin-signwithsecure": "Выкарыстоўваць абароненае злучэнне",
+       "cannotloginnow-title": "Зараз немагчыма ўвайсці",
+       "cannotloginnow-text": "Пры выкарыстанні $1 немагчыма прадставіцца сістэме.",
        "yourdomainname": "Ваш дамен:",
        "password-change-forbidden": "Вы не можаце змяняць паролі на гэтай Вікі.",
        "externaldberror": "Або памылка вонкавай аўтэнтыкацыі ў базе дадзеных, або вам не дазволена абнаўляць свой вонкавы рахунак.",
        "createacct-benefit-body2": "{{PLURAL:$1|старонка|старонкі|старонак}}",
        "createacct-benefit-body3": "{{PLURAL:$1|апошні \nўкладальнік|апошнія \nўкладальнікі|апошніх \nукладальнікаў}}",
        "badretype": "Уведзеныя паролі не аднолькавыя.",
+       "usernameinprogress": "Стварэнне рахунку для гэтага імені ўдзельніка ўжо ў працэсе.\nКалі ласка, пачакайце.",
        "userexists": "Такое імя ўдзельніка ўжо занятае.\nКалі ласка, выбярыце іншае імя.",
        "loginerror": "Памылка ўваходу",
        "createacct-error": "Памылка стварэння ўліковага запісу",
        "wrongpassword": "Уведзены няправільны пароль. Паспрабуйце нанова.",
        "wrongpasswordempty": "Быў уведзены пусты пароль. Паспрабуйце нанова.",
        "passwordtooshort": "Трэба, каб у паролі было найменей {{PLURAL:$1|1 знак|$1 знакаў}}.",
+       "passwordtoolong": "Пароль не можа быць даўжэй за {{PLURAL:$1|1 сімвал|1 сімвалы|$1 сімвалаў}}.",
+       "passwordtoopopular": "Нельга выкарыстоўваць часта ўжываныя паролі. Калі ласка, выберыце больш унікальны пароль.",
        "password-name-match": "Ваш пароль павінен адрознівацца ад імя карыстальніка.",
        "password-login-forbidden": "Выкарыстанне гэтага імя карыстальніка і пароля было забаронена.",
        "mailmypassword": "Скінуць пароль",
        "createaccount-text": "На пляцоўцы {{SITENAME}} ($4) быў створаны рахунак удзельніка з гэтым адрасам эл.пошты. Назва рахунка \"$2\", пароль \"$3\". Варта адразу ўвайсці ў сістэму і змяніць пароль.\n\nКалі рахунак быў створаны памылкова, то на гэтае паведамленне можна не звяртаць увагі.",
        "login-throttled": "Занадта многа нядаўніх спроб увайсці пад гэтым уліковым запісам. \nПачакайце $1 перад тым, як спрабаваць ізноў.",
        "login-abort-generic": "Няўдалая спроба ўвайсці ў сістэму",
+       "login-migrated-generic": "Ваш уліковы запіс быў перанесены, ваша імя карыстальніка больш не існуе ў гэтай вікі.",
        "loginlanguagelabel": "Мова: $1",
        "suspicious-userlogout": "Ваш запыт на выхад быў адмоўлены, паколькі ён выглядае як накіраваны са зламанага браўзера або кэшаванне проксі-сервераў.",
        "createacct-another-realname-tip": "Сапраўднае імя паведамляць неабавязкова.\nКалі вы паведаміце яго, яно будзе выкарыстоўвацца для пазначэння вашага ўкладу.",
        "resetpass_submit": "Наставіць пароль і ўвайсці",
        "changepassword-success": "Ваш пароль паспяхова зменены!",
        "changepassword-throttled": "Занадта многа нядаўніх спроб увайсці пад гэтым уліковым запісам. \nПачакайце $1 перад тым, як спрабаваць ізноў.",
+       "botpasswords": "Паролі робатаў",
        "resetpass_forbidden": "Не дазволена мяняць паролі",
        "resetpass-no-info": "Трэба ўвайсці ў сістэму, каб звяртацца да гэтай старонкі наўпрост.",
        "resetpass-submit-loggedin": "Змяніць пароль",
        "watchthisupload": "Назіраць за файлам",
        "filewasdeleted": "Файл з такою назвай быў раней укладзены сюды, а потым сцёрты. Варта паглядзець у $1 перад тым, як укладаць яго нанова.",
        "filename-bad-prefix": "Назва файла, які вы ўкладаеце, пачынаецца з <strong>\"$1\"</strong>, што падобна на аўтаматычныя, неінфарматыўныя назвы файлаў, якія робяць лічбавыя фотаапараты. Калі ласка, змяніце назву на больш зразумелую.",
-       "upload-success-subj": "Паспяховае ўкладанне",
-       "upload-success-msg": "Ваша загрузка [$2] прайшла паспяхова. Вы можаце паглядзець вынік тут: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Праблема загрузкі",
-       "upload-failure-msg": "Выяўлена праблема з вашай загрузкай з [$2]:\n\n$1",
-       "upload-warning-subj": "Дадаць папярэджанне",
-       "upload-warning-msg": "Пры ўкладанні з [$2] адбылася памылка. Для выпраўлення памылкі вярніцеся ў [[Special:Upload/stash/$1|форму ўкладання]].",
        "upload-proto-error": "Няправільны пратакол",
        "upload-proto-error-text": "Укладанне файла зводдаль патрабуе URL, які пачынаецца з <code>http://</code> або <code>ftp://</code>.",
        "upload-file-error": "Унутраная памылка",
        "wlheader-showupdated": "Старонкі, якія былі зменены пасля вашага апошняга наведвання, паказаны <strong>абрысам шрыфту</strong>.",
        "wlnote": "Ніжэй {{PLURAL:$1|паказана апошняя <strong>$1</strong> змена|паказаны апошнія <strong>$1</strong> змены|паказаны апошнія <strong>$1</strong> змен}} за {{PLURAL:$2|апошнюю|апошнія|апошнія}} <strong>$2</strong> {{PLURAL:$2|гадзіну|гадзіны|гадзін}}, на момант часу $3 $4.",
        "wlshowlast": "Паказваць апошнія $1 гадз. $2 дзён",
-       "watchlistall2": "усе",
        "watchlist-options": "Магчымасці назірання",
        "watching": "Дапісваецца ў спіс назірання...",
        "unwatching": "Спыняем назіранне...",
index e7bfb22..fb49e5c 100644 (file)
        "resetpass_submit": "Избиране на парола и влизане",
        "changepassword-success": "Паролата ви беше променена успешно!",
        "changepassword-throttled": "Направили сте твърде много опити да въведете паролата за тази сметка.\nНеобходимо е да изчакате $1 преди да опитате отново.",
+       "botpasswords-label-appid": "Име на бота:",
+       "botpasswords-label-create": "Създаване",
+       "botpasswords-label-update": "Обновяване",
+       "botpasswords-label-cancel": "Отказване",
+       "botpasswords-label-delete": "Изтриване",
+       "botpasswords-label-resetpassword": "Възстановяване на парола",
        "resetpass_forbidden": "Не е разрешена смяна на паролата",
        "resetpass-no-info": "За да достъпвате тази страница директно, необходимо е да влезете в системата.",
        "resetpass-submit-loggedin": "Промяна на паролата",
        "right-override-export-depth": "Изнасяне на страници, включително свързаните с тях в дълбочина до пето ниво",
        "right-sendemail": "Изпращане на е-писма до другите потребители",
        "right-passwordreset": "Преглеждане на е-писма за възстановяване на парола",
+       "grant-delete": "Изтриване на страници, редакции и записи в дневника",
+       "grant-editmyoptions": "Редактиране на вашите потребителски настройки",
+       "grant-editmywatchlist": "редактиране на списъка ви за наблюдение",
+       "grant-editpage": "Редактиране на съществуващи страници",
+       "grant-editprotected": "Редактиране на защитени страници",
+       "grant-basic": "Основни права",
+       "grant-viewdeleted": "Преглед на изтрити файлове и страници",
+       "grant-viewmywatchlist": "преглед на списъка ви за наблюдение",
        "newuserlogpage": "Дневник на регистрациите",
        "newuserlogpagetext": "В този дневник се записват регистрациите на потребители.",
        "rightslog": "Дневник на потребителските права",
        "watchthisupload": "Наблюдаване на файла",
        "filewasdeleted": "Файл в този име е съществувал преди време, но е бил изтрит. Проверете $1 преди да го качите отново.",
        "filename-bad-prefix": "Името на файла, който качвате, започва с '''„$1“''', което е неописателно име, типично задавано по автоматичен начин от цифровите камери или апарати. Изберете по-описателно име на файла.",
-       "upload-success-subj": "Качването беше успешно",
-       "upload-success-msg": "Качването ви от [$2] е успешно. Достъпно е тук: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Проблем при качване",
-       "upload-failure-msg": "Имаше проблем с вашето качване от [$2]: \n\n$1",
-       "upload-warning-subj": "Предупреждение за качването",
-       "upload-warning-msg": "Имаше проблем с качването ви от [$2]. Може да се върнете към [[Special:Upload/stash/$1|страницата за качване]], за да поправите проблема.",
        "upload-proto-error": "Неправилен протокол",
        "upload-proto-error-text": "Изисква се адрес започващ с <code>http://</code> или <code>ftp://</code>.",
        "upload-file-error": "Вътрешна грешка",
        "wlheader-showupdated": "Страниците, които са били променени след последния път, когато сте ги посетили, са показани в '''получер'''.",
        "wlnote": "{{PLURAL:$1|Показана е последната промяна|Показани са последните '''$1''' промени}} през {{PLURAL:$2|последния час|последните '''$2''' часа}}.",
        "wlshowlast": "Показване на последните $1 часа $2 дни",
-       "watchlistall2": "всички",
        "watchlist-hide": "Скриване",
        "watchlist-submit": "Показване",
        "wlshowtime": "Период от време за показване:",
index 55f58ad..1ebe1b4 100644 (file)
        "october-date": "অক্টোবর $1",
        "november-date": "নভেম্বর $1",
        "december-date": "ডিসেম্বর $1",
+       "period-am": "পূর্বাহ্ণ",
+       "period-pm": "অপরাহ্ণ",
        "pagecategories": "{{PLURAL:$1|বিষয়শ্রেণী|বিষয়শ্রেণীসমূহ}}",
        "category_header": "\"$1\" বিষয়শ্রেণীতে অন্তর্ভুক্ত পাতাগুলি",
        "subcategories": "উপবিষয়শ্রেণীসমূহ",
        "virus-scanfailed": "স্ক্যান করা যাচ্ছে না (কোড $1)",
        "virus-unknownscanner": "অজানা এন্টিভাইরাস:",
        "logouttext": "'''আপনি এখন আপনার অ্যাকাউন্ট থেকে প্রস্থান করেছেন।'''\n\nনোট করুন যে কিছু পাতায় আপনাকে এখনও প্রবেশ অবস্থায় দেখাবে, যতক্ষণ না আপনি ব্রাউজার ক্যাশ পরিষ্কার করছেন।",
+       "cannotlogoutnow-title": "এখন প্রস্থান করা যাবে না",
+       "cannotlogoutnow-text": "$1 ব্যবহার করার সময় প্রস্থান করা সম্ভব নয়।",
        "welcomeuser": "স্বাগতম, $1!",
        "welcomecreation-msg": "আপনার অ্যাকাউন্ট তৈরী হয়েছে।\nআপনার [[Special:Preferences|{{SITENAME}} পছন্দসমূহ]]  পরিবর্তন করে নিতে ভুলবেন না।",
        "yourname": "ব্যবহারকারী নাম:",
        "remembermypassword": "এই ব্রাউজারে আমার প্রবেশ মনে রাখা হোক (সর্বোচ্চ $1 {{PLURAL:$1|দিনের}} জন্য)",
        "userlogin-remembermypassword": "আমাকে প্রবেশ অবস্থায় রাখো",
        "userlogin-signwithsecure": "নিরাপদ সংযোগ ব্যবহার করুন",
+       "cannotloginnow-title": "এখন প্রবেশ করা যাবে না",
+       "cannotloginnow-text": "$1 ব্যবহার করার সময় প্রবেশ করা সম্ভব নয়।",
        "yourdomainname": "আপনার ডোমেইন:",
        "password-change-forbidden": "আপনি এই উইকিতে পাসওয়ার্ড পরিবর্তন করতে পারবেন না।",
        "externaldberror": "হয় কোন বহিঃস্থ যাচাইকরণ ডাটাবেজ ত্রুটি ঘটেছে অথবা আপনার বহিঃস্থ অ্যাকাউন্ট হালনাগাদ করার অনুমতি নেই।",
        "wrongpasswordempty": "পাসওয়ার্ড প্রবেশের ঘরটি খালি ছিল। দয়া করে আবার চেষ্টা করুন।",
        "passwordtooshort": "পাসওয়ার্ড কমপক্ষে {{PLURAL:$1|১ অক্ষরের|$1 অক্ষরের}} হতে হবে।",
        "passwordtoolong": "পাসওয়ার্ড {{PLURAL:$1|১|$1}} অক্ষরের চেয়ে দীর্ঘ হতে পারবে না।",
+       "passwordtoopopular": "সাধারণভাবে নির্বাচিত পাসওয়ার্ড ব্যবহার করা যাবে না। দয়া করে একটি অনন্য পাসওয়ার্ড নির্বাচন করুন।",
        "password-name-match": "আপনার পাসওয়ার্ড আপনার ব্যবহারকারী নাম থেকে আলাদা হতে হবে।",
        "password-login-forbidden": "এই ব্যবহারকারীর নাম এবং পাসওয়ার্ডটি ব্যবহার নিষিদ্ধ করা হয়েছে।",
        "mailmypassword": "পাসওয়ার্ড পুনঃস্থাপন",
        "resetpass_submit": "পাসওয়ার্ড দাও এবং লগ-ইন করো",
        "changepassword-success": "আপনার পাসওয়ার্ড সাফলভাবে পরিবর্তীত হয়েছে।",
        "changepassword-throttled": "আপনি সম্প্রতি পরপর বেশ কয়েকবার প্রবেশের চেষ্টা করেছেন। পুনরায় চেষ্টা করার পূর্বে অনুগ্রহ করে $1 অপেক্ষা করুন।",
+       "botpasswords": "বট পাসওয়ার্ড",
+       "botpasswords-label-appid": "বটের নাম:",
+       "botpasswords-label-create": "তৈরি করো",
+       "botpasswords-label-update": "হালনাগাদ",
+       "botpasswords-label-cancel": "বাতিল",
+       "botpasswords-label-delete": "অপসারণ",
+       "botpasswords-label-resetpassword": "পাসওয়ার্ড পুনঃস্থাপন",
+       "botpasswords-label-grants": "প্রয়োগযোগ্য মঞ্জুরি:",
+       "botpasswords-label-grants-column": "অনুমদিত",
+       "botpasswords-bad-appid": "\"$1\" বট নামটি সঠিক নয়।",
+       "botpasswords-insert-failed": "\"$1\" নামের বট যুক্ত করা যায়নি। আগে থেকেই তালিকায় রয়েছে?",
+       "botpasswords-update-failed": "\"$1\" নামের বট যুক্ত করা যায়নি। আগে অপসারণ করা হয়েছিল?",
+       "botpasswords-created-title": "বট পাসওয়ার্ড তৈরী করা হয়েছে",
+       "botpasswords-created-body": "\"$1\", বট পাসওয়ার্ড তৈরী করা হয়েছে।",
+       "botpasswords-updated-title": "বট পাসওয়ার্ড আপডেট করা হয়েছে",
+       "botpasswords-updated-body": "\"$1\" বট পাসওয়ার্ডটি সফলভাবে হালনাগাদ করা হয়েছে।",
+       "botpasswords-deleted-title": "বট পাসওয়ার্ড অপসারণ করা হয়েছে",
        "resetpass_forbidden": "পাসওয়ার্ড পরিবর্তন করা সম্ভব নয়",
        "resetpass-no-info": "এই পাতাটিতে সরাসরি প্রবেশাধিকার পেতে আপনাকে অবশ্যই লগইন করতে হবে।",
        "resetpass-submit-loggedin": "পাসওয়ার্ড পরিবর্তন",
        "userrights": "ব্যবহারকারী অধিকার ব্যবস্থাপনা",
        "userrights-lookup-user": "ব্যবহারকারী দল ব্যবস্থাপনা করুন",
        "userrights-user-editname": "ব্যবহারকারীর নাম লিখুন:",
-       "editusergroup": "ব্যবহারকারীর দল সম্পাদনা করো",
+       "editusergroup": "{{GENDER:$1|ব্যবহারকারীর}} দল সম্পাদনা করো",
        "editinguser": "<strong>[[User:$1|$1]]</strong> $2 {{GENDER:$1|ব্যবহারকারীর}} জন্য ব্যবহারকারী অধিকার পরিবর্তন করছেন",
        "userrights-editusergroup": "ব্যবহারকারীর দল সম্পাদনা করো",
-       "saveusergroups": "ব্যবহারকারীর দল সংরক্ষণ করো",
+       "saveusergroups": "{{GENDER:$1|ব্যবহারকারীর}} দল সংরক্ষণ করো",
        "userrights-groupsmember": "সদস্য:",
        "userrights-groupsmember-auto": "শর্তহীন সদস্য",
        "userrights-groups-help": "আপনি এই ব্যবহারকারীর বর্তমান দল পরিবর্তন করতে পারবেন:\n* টিক চিহ্ন দেওয়া ঘরের অর্থ ব্যবহারকারী এখন ঐ দলের অন্তর্ভুক্ত।\n* টিক চিহ্ন বিহীন ঘরের অর্থ ব্যবহারকারী ঐ দলের অন্তর্ভুক্ত নন।\n* একটি তারকা চিহ্ন (*) দ্বারা বোঝানো হচ্ছে এই দলের অন্তর্ভুক্তির পর আপনি আর তা বাতিল করতে পারবেন না।",
        "right-changetags": "নির্দিষ্ট সংস্করণ এবং দীর্ঘ সম্পাদনাগুলোতে [[Special:Tags|ট্যাগ]] সংযোজন ও অপসারণ করুন",
        "grant-group-email": "ইমেইল পাঠান",
        "grant-createaccount": "অ্যাকাউন্ট তৈরি করুন",
+       "grant-editmycssjs": "আপনার সিএসএস/জাভাস্ক্রিপ্ট সম্পাদনা করুন",
        "grant-editmyoptions": "আপনার ব্যবহারকারী পছন্দসমূহ সম্পাদনা করুন",
        "grant-editmywatchlist": "আপনার নজরতালিকা সম্পাদনা করুন",
+       "grant-basic": "মৌলিক অধিকার",
        "newuserlogpage": "ব্যবহারকারী সৃষ্টির লগ",
        "newuserlogpagetext": "এটি নতুন ব্যবহারকারী সৃষ্টির লগ",
        "rightslog": "ব্যবহারকারীর অধিকার লগ",
        "watchthisupload": "এই ফাইলটি নজরে রাখুন",
        "filewasdeleted": "এই নামের একটি ফাইল পূর্বে আপলোড করা হয়েছিল এবং তারপর মুছে ফেলা হয়েছিল। আপনি ফাইলটি আবার আপলোড করার আগে $1 পরীক্ষা করে দেখুন।",
        "filename-bad-prefix": "আপনি যে ফাইলটি আপলোড করছেন, তার নাম '''\"$1\"''' দিয়ে শুরু হয়েছে। এ ধরনের নাম সাধারণত ডিজিটাল ক্যামেরাগুলি স্বয়ংক্রিয়ভাবে দিয়ে থাকে এবং এগুলি ব্যাখ্যামূলক নয়। অনুগ্রহ করে আপনার ফাইলের জন্য আরও ব্যাখ্যামূলক একটি নাম পছন্দ করুন।",
-       "upload-success-subj": "আপলোড সফল হয়েছে",
-       "upload-success-msg": "[$2] থেকে আপনার আপলোড সফল হয়েছে। এটি এখানে: [[:{{ns:file}}:$1]] পাওয়া যাবে",
-       "upload-failure-subj": "আপলোড সমস্যা",
-       "upload-failure-msg": "আপনার আপলোড ফর্ম [$2]-এ একটি সমস্যা হয়েছে:\n\n$1",
-       "upload-warning-subj": "আপলোড সতর্কীকরণ",
-       "upload-warning-msg": "[$2] থেকে করা আপনার আপলোডে সমস্যা হয়েছে। সমস্যার সমাধানকল্পে আপনাকে সম্ভবত [[Special:Upload/stash/$1|আপলোড ফর্ম]]-এ ফিরে যেতে হবে।",
        "upload-proto-error": "ভুল প্রোটোকল",
        "upload-proto-error-text": "দূরবর্তী আপলোডের জন্য URLগুলি <code>http://</code> বা <code>ftp://</code> দিয়ে শুরু হওয়া আবশ্যক।",
        "upload-file-error": "আভ্যন্তরীণ ত্রুটি",
        "foreign-structured-upload-form-label-infoform-categories": "বিষয়শ্রেণীসমূহ",
        "foreign-structured-upload-form-label-infoform-date": "তারিখ",
        "foreign-structured-upload-form-label-not-own-work-local-local": "এছাড়াও আপনি [[Special:Upload|ডিফল্ট আপলোডের পাতা]] চেষ্টা করতে পারেন।",
+       "foreign-structured-upload-form-2-label-ccbysa": "[https://creativecommons.org/licenses/by-sa/4.0/deed.bn ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন-শেয়ার অ্যালাইক ৪.০] লাইসেন্সের আওতায় এটি ইন্টারনেটে <strong>চিরতরে প্রকাশ করা ঠিক হবে</strong>",
        "foreign-structured-upload-form-3-label-yes": "হ্যাঁ",
        "foreign-structured-upload-form-3-label-no": "না",
        "backend-fail-stream": "\"$1\" ফাইলের স্ট্রিম দেখানো যাচ্ছে না।",
        "logempty": "মিলে যায় এমন কিছু লগে পাওয়া যায়নি।",
        "log-title-wildcard": "এই টেক্সট দিয়ে শুরু হওয়া শিরোনামগুলি অনুসন্ধান করা হোক",
        "showhideselectedlogentries": "নির্বাচিত লগগুলো দেখাও/লুকাও",
+       "checkbox-select": "নির্বাচন: $1",
+       "checkbox-all": "সব",
+       "checkbox-none": "কোনটিই নয়",
+       "checkbox-invert": "ব্যুত্ক্রমে",
        "allpages": "সব পাতা",
        "nextpage": "পরবর্তী পাতা ($1)",
        "prevpage": "পূর্ববর্তী পাতা ($1)",
        "listgrouprights-removegroup-self-all": "নিজের অ্যাকাউন্ট থেকে সকল দল অপসারণ",
        "listgrouprights-namespaceprotection-header": "নামস্থান নিষেধাজ্ঞাসমূহ",
        "listgrouprights-namespaceprotection-namespace": "নামস্থান",
-       "listgrants-rights": "অধিকার",
+       "listgrants-rights": "অধিকারসমূহ",
        "trackingcategories": "বিষয়শ্রেণীসমূহ অনুসরণ করা হচ্ছে",
        "trackingcategories-msg": "বিষয়শ্রেণী অনুসরণ করা হচ্ছে",
        "trackingcategories-name": "বার্তা নাম",
        "wlheader-showupdated": "আপনার শেষ আগমনের পর থেকে যেসব পাতায় পরিবর্তন হয়েছে সেগুলি '''গাঢ়''' করে দেখানো হয়েছে।",
        "wlnote": "নিচে $3, $4 তারিখ থেকে বিগত {{PLURAL:$2|১ ঘন্টায়|<strong>$2</strong> ঘন্টায়}} সংঘটিত {{PLURAL:$1|শেষ ১টি পরিবর্তন|শেষ <strong>$1টি</strong> পরিবর্তন}} দেখানো হল।",
        "wlshowlast": "সর্বশেষ $1 ঘণ্টা $2 দিনে দেখাও",
-       "watchlistall2": "সমস্ত",
        "watchlist-hide": "আড়াল করো",
        "watchlist-submit": "দেখাও",
        "wlshowtime": "প্রদর্শনের সময় কাল:",
        "changecontentmodel-reason-label": "কারণ:",
        "changecontentmodel-success-title": "বিষয়বস্তুর প্রতিরূপ পরিবর্তিত হয়েছিলো",
        "changecontentmodel-success-text": "[[:$1]]-এর বিষয়বস্তুর ধরণ পরিবর্তন হয়েছে।",
+       "log-name-contentmodel": "বিষয়বস্তুর মডেল পরিবর্তন লগ",
        "logentry-contentmodel-change": "$1 $3 পাতার বিষয়বস্তুর মডেল \"$4\" থেকে \"$5\"-এ {{GENDER:$2|পরিবর্তন করেছেন}}",
        "logentry-contentmodel-change-revertlink": "প্রত্যাবর্তন",
        "logentry-contentmodel-change-revert": "প্রত্যাবর্তন",
        "export-download": "ফাইল হিসেবে সংরক্ষণ করা হোক",
        "export-templates": "টেমপ্লেট অন্তর্ভুক্তি",
        "export-pagelinks": "সম্পর্কিত পাতাগুলো এই ধাপ পর্যন্ত যুক্ত করো:",
+       "export-manual": "হাতেকরে পাতা যোগ করুন:",
        "allmessages": "সিস্টেম বার্তাসমূহ",
        "allmessagesname": "নাম",
        "allmessagesdefault": "আদি টেক্সট",
        "javascripttest-pagetext-frameworks": "অনুগ্রহ করে নিচের কোনো একটি ফ্রেমওয়ার্ক নির্ধারণ করুন: $1",
        "javascripttest-pagetext-skins": "পরীক্ষার জন্য একটি স্কীন নির্ধারণ করুন:",
        "javascripttest-qunit-intro": "mediawiki.org থেকে [$1 পরীক্ষার ডলুমেন্টেশন] দেখুন।",
-       "tooltip-pt-userpage": "আপনার ব্যবহারকারী পাতা",
+       "tooltip-pt-userpage": "{{GENDER:|আপনার ব্যবহারকারী}} পাতা",
        "tooltip-pt-anonuserpage": "যে আইপি ঠিকানা থেকে আপনি সম্পাদনা করছেন, তার ব্যবহারকারী পাতা",
-       "tooltip-pt-mytalk": "আপনার আলাপের পাতা",
+       "tooltip-pt-mytalk": "{{GENDER:|আপনার}} আলাপ পাতা",
        "tooltip-pt-anontalk": "এই আইপি ঠিকানা থেকে করা সম্পাদনার উপর আলোচনা",
-       "tooltip-pt-preferences": "আমার পছন্দ",
+       "tooltip-pt-preferences": "{{GENDER:|আপনার}} পছন্দ",
        "tooltip-pt-watchlist": "যে পাতাগুলির পরিবর্তন আপনি নজরে রেখেছেন, তাদের তালিকা",
-       "tooltip-pt-mycontris": "আপনার অবদানগুলোর তালিকা",
+       "tooltip-pt-mycontris": "{{GENDER:|আপনার}} অবদানগুলোর একটি তালিকা",
        "tooltip-pt-anoncontribs": "এই আইপি ঠিকানা থেকে করা সম্পাদনার একটি তালিকা",
        "tooltip-pt-login": "আপনার প্রবেশ করাটা বাঞ্চনীয়, কিন্তু তা বাধ্যতামূলক নয়।",
        "tooltip-pt-logout": "প্রস্থান",
        "tooltip-t-recentchangeslinked": "এই পাতা থেকে সংযোগ আছে, এমন পাতাগুলিতে সাম্প্রতিক পরিবর্তন",
        "tooltip-feed-rss": "এই পাতার জন্য আরএসএস ফিড",
        "tooltip-feed-atom": "এই পাতার জন্য অ্যাটম ফিড",
-       "tooltip-t-contributions": "এই ব্যবহারকারীর অবদানগুলির তালিকা দেখুন",
-       "tooltip-t-emailuser": "এই ব্যবহারকারীকে একটি ই-মেইল পাঠান",
+       "tooltip-t-contributions": "{{GENDER:|এই ব্যবহারকারীর}} অবদানগুলির একটি তালিকা",
+       "tooltip-t-emailuser": "{{GENDER:|এই ব্যবহারকারীকে}} একটি ই-মেইল পাঠান",
        "tooltip-t-info": "এই পাতা সম্পর্কে আরো তথ্য",
        "tooltip-t-upload": "ফাইল আপলোড করুন",
        "tooltip-t-specialpages": "সব বিশেষ পাতার তালিকা",
        "pageinfo-category-files": "ফাইলের সংখ্যা",
        "markaspatrolleddiff": "পরীক্ষিত হিসেবে চিহ্নিত করুন",
        "markaspatrolledtext": "এই পাতাটি পরীক্ষিত হিসেবে চিহ্নিত করুন",
+       "markaspatrolledtext-file": "এই ফাইলের সংস্করণ পরীক্ষিত হিসেবে চিহ্নিত করুন",
        "markedaspatrolled": "পরীক্ষিত বলে চিহ্নিত করুন",
        "markedaspatrolledtext": "আপনার নির্বাচিত সংস্করণ [[:$1]] পরীক্ষিত বলে চিহ্নিত করা হয়েছে।",
        "rcpatroldisabled": "সাম্প্রতিক পরিবর্তন প্যাট্রোল নিষ্ক্রিয়",
        "widthheightpage": "$1 × $2, $3টি {{PLURAL:$1|পাতা}}",
        "file-info": "ফাইলের আকার: $1, MIME ধরণ: $2",
        "file-info-size": "$1 × $2 পিক্সেল, ফাইলের আকার: $3, এমআইএমই ধরণ: $4",
-       "file-info-size-pages": "$1 × $2 পিক্সেল, fফাইলের আকার: $3, MIME ধরন: $4, $5 {{PLURAL:$5|পাতা|পাতাসমূহ}}",
+       "file-info-size-pages": "$1 × $2 পিক্সেল, ফাইলের আকার: $3, MIME ধরন: $4, $5টি {{PLURAL:$5|পাতা}}",
        "file-nohires": "এর চেয়ে বেশি রেজোলিউশন লভ্য নয়।",
        "svg-long-desc": "এসভিজি ফাইল, সাধারণত $1 × $2 পিক্সেল, ফাইলের আকার: $3",
        "svg-long-desc-animated": "এনিমেটেড এসভিজি ফাইল, সাধারণত $1 × $2 পিক্সেল, ফাইলের আকার: $3",
        "exif-morepermissionsurl": "অতিরিক্ত লাইসেন্সিং তথ্যাদি",
        "exif-attributionurl": "যখন এই কাজটি পুনরায় ব্যবহার করবেন, অনুগ্রহ করে এই লিংকটি যোগ করুন",
        "exif-preferredattributionname": "যখন এই কাজটি পুনরায় ব্যবহার করবেন, অনুগ্রহ করে প্রণেতাকে ক্রেডিট দিন",
-       "exif-pngfilecomment": "পিএনজি ফাইল কমেন্ট",
+       "exif-pngfilecomment": "পিএনজি ফাইলের মন্তব্য",
        "exif-disclaimer": "দাবিত্যাগ",
        "exif-contentwarning": "বিষয়বস্তু সতর্কবার্তা",
-       "exif-giffilecomment": "জিআইএফ ফাইল কমেন্ট",
+       "exif-giffilecomment": "জিআইএফ ফাইলের মন্তব্য",
        "exif-intellectualgenre": "উপাদানের প্রকার",
        "exif-subjectnewscode": "বিষয় কোড",
        "exif-scenecode": "আইপিটিসি সিন কোড",
        "exif-compression-4": "সিসিআইটিটি গ্রুপ ৪ ফ্যাক্স এনকোডিং",
        "exif-copyrighted-true": "কপিরাইটকৃত",
        "exif-copyrighted-false": "কপিরাইট সংক্রান্ত তথ্য নেই",
+       "exif-photometricinterpretation-1": "কালো এবং সাদা (কালো হল 0)",
        "exif-unknowndate": "অজানা তারিখ",
        "exif-orientation-1": "সাধারণ",
        "exif-orientation-2": "অনুভূমিকভাবে উল্টানো",
        "scarytranscludefailed-httpstatus": "[$1: HTTP $2 এর জন্য টেমপ্লেট আনা বিফল হয়েছে]",
        "scarytranscludetoolong": "[URL অতিরিক্ত দীর্ঘ]",
        "deletedwhileediting": "'''সতর্কীকরণ''': আপনি পাতাটি সম্পাদনা শুরু করার পরে তা মুছে ফেলা হয়েছে!",
-       "confirmrecreate": "আপনি সম্পাদনা শুরু করার পর ব্যবহারকারী [[User:$1|$1]] ([[User talk:$1|আলাপ]]) এই পাতাটি মুছে দিয়েছেন, নিচের কারণ দেখিয়ে:\n: ''$2''\nআপনি সত্যিই যে পাতাটি পুনরায় সৃষ্টি করতে চান, তা দয়া করে নিশ্চিত করুন।",
-       "confirmrecreate-noreason": "আপনি সম্পাদনা শুরু করার পর ব্যবহারকারী [[User:$1|$1]] ([[User talk:$1|আলাপ]]) এই পাতাটি মুছে দিয়েছেন। আপনি সত্যিই যে পাতাটি পুনরায় সৃষ্টি করতে চান, তা দয়া করে নিশ্চিত করুন।",
+       "confirmrecreate": "আপনি সম্পাদনা শুরু করার পর ব্যবহারকারী [[User:$1|$1]] ([[User talk:$1|আলাপ]]) এই পাতাটি মুছে দিয়েছেন, নিচের কারণ দেখিয়ে:\n: <em>$2</em>\nআপনি সত্যিই যে পাতাটি পুনরায় সৃষ্টি করতে চান, তা দয়া করে নিশ্চিত করুন।",
+       "confirmrecreate-noreason": "আপনি সম্পাদনা শুরু করার পর ব্যবহারকারী [[User:$1|$1]] ([[User talk:$1|আলাপ]]) এই পাতাটি {{GENDER:$1|মুছে}} দিয়েছেন। আপনি সত্যিই যে পাতাটি পুনরায় সৃষ্টি করতে চান, তা দয়া করে নিশ্চিত করুন।",
        "recreate": "পুনরায় তৈরি করো",
        "confirm_purge_button": "ঠিক আছে",
        "confirm-purge-top": "এই পাতার ক্যাশে পরিষ্কার করতে চান?",
        "hebrew-calendar-m12": "এলুল",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|আলাপ]])",
        "timezone-utc": "ইউটিসি",
+       "timezone-local": "স্থানীয়",
        "duplicate-defaultsort": "' ' ' সাবধান: ' ' '  ডিফল্ট সাজানোর কীঃ \"$2\" পূর্বে ডিফল্ট সাজানোর কীঃ \"$1\" কে অগ্রাহ্য করে।",
        "duplicate-displaytitle": "<strong>সতর্কীকরণ:</strong> প্রদর্শন শিরোনাম \"$2\" আগের প্রদর্শন শিরোনাম \"$1\" অগ্রাহ্য করবে।",
        "invalid-indicator-name": "<strong>ত্রুটি:</strong> পাতার অবস্থা নির্দেশক <code>name</code> অ্যাট্রিবিউট খালি হতে পারবে না।",
        "htmlform-title-not-exists": "$1-এর অস্তিত্ব নেই।",
        "htmlform-user-not-exists": "<strong>$1</strong>-এর অস্তিত্ব নেই।",
        "htmlform-user-not-valid": "<strong>$1</strong> একটি বৈধ ব্যবহারকারীর নাম নয়।",
-       "sqlite-has-fts": "$1 সহ পূর্ণ টেক্সট সার্চ সমর্থন",
-       "sqlite-no-fts": "$1 বাদে পূর্ণ টেক্সট সার্চ সমর্থন",
+       "sqlite-has-fts": "$1 সহ পূর্ণ-পাঠ্য অনুসন্ধান সমর্থন",
+       "sqlite-no-fts": "$1 বাদে পূর্ণ-পাঠ্য অনুসন্ধান সমর্থন",
        "logentry-delete-delete": "$1 কর্তৃক $3 পাতাটি অপসারিত হয়েছে",
        "logentry-delete-restore": "$1 কর্তৃক $3 পাতাটি {{GENDER:$2|ফিরিয়ে আনা}} হয়েছে",
        "logentry-delete-event": "$1 {{PLURAL:$5|একটি লগ ইভেন্টের|$5 লগ ইভেন্টসমূহের}} দৃশ্যমানতা {{GENDER:$2|পরিবর্তন}} করেছেন $3: $4",
        "expand_templates_generate_xml": "XML পার্স বৃক্ষ দেখাও",
        "expand_templates_generate_rawhtml": "এইচটিএমএল দেখাও",
        "expand_templates_preview": "প্রাকদর্শন",
-       "pagelanguage": "পাতার à¦­à¦¾à¦·à¦¾ à¦¨à¦¿à¦°à§\8dবাà¦\9aà¦\95",
+       "pagelanguage": "পাতার à¦­à¦¾à¦·à¦¾ à¦ªà¦°à¦¿à¦¬à¦°à§\8dতন à¦\95রà§\81ন",
        "pagelang-name": "পাতা",
        "pagelang-language": "ভাষা",
        "pagelang-use-default": "ডিফল্ট ভাষা ব্যবহার করুন",
        "pagelang-select-lang": "ভাষা নির্বাচন করুন",
+       "pagelang-submit": "জমা দাও",
        "right-pagelang": "পাতার ভাষা পরিবর্তন করুন",
        "action-pagelang": "পাতার ভাষা পরিবর্তন করুন",
        "log-name-pagelang": "ভাষা পরিবর্তন লগ",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''নিষ্ক্রিয় করা''')",
        "mediastatistics": "মিডিয়া পরিসংখ্যান",
        "mediastatistics-nbytes": "{{PLURAL:$1|$1 বাইট}} ($2; $3%)",
-       "mediastatistics-bytespertype": "এই অনুচ্ছেদের জন্য মোট ফাইলের আকার: $1 বাইট।",
-       "mediastatistics-allbytes": "সব ফাইলের জন্য মোট ফাইলের আকার: $1 বাইট।",
+       "mediastatistics-bytespertype": "এই অনুচ্ছেদের জন্য মোট ফাইলের আকার: {{PLURAL:$1|$1 বাইট}} ($2; $3%)।",
+       "mediastatistics-allbytes": "সব ফাইলের জন্য মোট ফাইলের আকার: {{PLURAL:$1|$1 বাইট}} ($2)।",
        "mediastatistics-table-mimetype": "MIME ধরন",
        "mediastatistics-table-extensions": "সম্ভাব্য এক্সটেনশন",
        "mediastatistics-table-count": "ফাইলের সংখ্যা",
        "mediastatistics-header-video": "ভিডিও",
        "mediastatistics-header-office": "অফিস",
        "mediastatistics-header-archive": "সংকুচিত বিন্যাস",
+       "mediastatistics-header-total": "সকল ফাইল",
        "json-error-unknown": "JSON-এ একটি সমস্যা রয়েছে। ত্রুটি: $1",
        "json-error-state-mismatch": "অকার্যকর বা ত্রুটিপূর্ণ JSON",
        "json-error-ctrl-char": "অক্ষর নিয়ন্ত্রণ ত্রুটি, সম্ভবত ভুল এনকোডকৃত",
        "mw-widgets-dateinput-placeholder-month": "বববব-মম",
        "mw-widgets-titleinput-description-new-page": "পাতা এখনো বিদ্যমান নয়",
        "mw-widgets-titleinput-description-redirect": "$1-এ পুনঃনির্দেশিত",
-       "api-error-blacklisted": "অনুগ্রহ করে অপর কোনো বর্ণনামূলক নাম ব্যবহার করুন।"
+       "api-error-blacklisted": "অনুগ্রহ করে অপর কোনো বর্ণনামূলক নাম ব্যবহার করুন।",
+       "sessionprovider-generic": "$1টি সেশন",
+       "sessionprovider-mediawiki-session-cookiesessionprovider": "কুকি-ভিত্তিক সেশন",
+       "sessionprovider-nocookies": "কুকি নিষ্ক্রিয় করা। নিশ্চিত করুন যে আপনার কুকি সক্রিয় আছে এবং আবার শুরু করুন।",
+       "randomrootpage": "অজানা মূল পাতা"
 }
index 7b59b50..b3dae32 100644 (file)
        "resetpass_submit": "Cheñch ar ger-tremen ha kevreañ",
        "changepassword-success": "Cheñchet eo bet ho ker-tremen !",
        "changepassword-throttled": "Betek re hoc'h heus klasket kevreañ en aner.\nGortozit $1, mar plij, a-raok esaeañ en-dro.",
+       "botpasswords-label-create": "Krouiñ",
+       "botpasswords-label-cancel": "Nullañ",
+       "botpasswords-label-delete": "Dilemel",
        "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",
        "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.",
        "filename-bad-prefix": "Anv ar restr emaoc'h oc'h enporzhiañ a grog gant '''\"$1\"''', da lavaret eo un anv dizeskrivus roet alies ent emgefre gant luc'hskeudennerezioù niverel. Dibabit un anv splannoc'h evit deskrivañ ar restr.",
        "filename-prefix-blacklist": " #<!-- lezel al linenn-mañ tre ha tre evel m'emañ --> <pre>\n# Setu penaos emañ an ereadur :\n#   * Pep tra adal un arouezenn \"#\" betek dibenn al linenn a ya d'ober un notenn\n#   * Pep linenn n'eo ket goullo zo ur rakger evit anvioù restroù heverk roet ent emgefre gant luc'hskeudennerezioù niverel\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # pellgomzerioù hezoug zo\nIMG # jenerik\nJD # Jenoptik\nMGP # Pentax\nPICT # misc.\n #</pre> <!-- leave this line exactly as it is -->",
-       "upload-success-subj": "Eiladenn kaset da benn vat",
-       "upload-success-msg": "Ho kargadenn eus [$2] a zo bet graet. Gellout a rit kavout anezhi amañ : [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Kudenn kargañ",
-       "upload-failure-msg": "Ur gudenn 'zo bet e-pad ho kargadenn adalek [$2] :\n\n$1",
-       "upload-warning-subj": "Kemenn diwall en ur ezporzhiañ",
-       "upload-warning-msg": "Ur gudenn zo bet e-kerzh hoc'h ezporzhiadur eus [$2]. Gallout a c'heller distreiñ d'ar [[Special:Upload/stash/$1|furmskrid ezporzhiañ]] evit renkañ ar gudenn.",
        "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",
        "wlheader-showupdated": "E '''tev''' emañ merket ar pajennoù bet kemmet abaoe ar wezh ziwezhañ hoc'h eus sellet outo",
        "wlnote": "Setu aze {{PLURAL:$1|ar c'hemm diwezhañ|ar '''$1''' kemm diwezhañ}} c'hoarvezet e-kerzh an {{PLURAL:$2|eurvezh|'''$2''' eurvezh}} diwezhañ, d'an $3 da $4.",
        "wlshowlast": "Diskouez an $1 eurvezh $2 devezh diwezhañ",
-       "watchlistall2": "pep tra",
        "wlshowhidemine": "ma c'hemmoù",
        "watchlist-options": "Dibarzhioù ar roll evezhiañ",
        "watching": "Heuliet...",
index d52c605..f688bae 100644 (file)
        "rcshowhidemine": "$1 moje izmjene",
        "rcshowhidemine-show": "Prikaži",
        "rcshowhidemine-hide": "Sakrij",
-       "rcshowhidecategorization": "$1 kategorizaciju stranice",
+       "rcshowhidecategorization": "$1 kategorizaciju stranica",
        "rcshowhidecategorization-show": "Prikaži",
        "rcshowhidecategorization-hide": "Sakrij",
        "rclinks": "Prikaži posljednjih $1 izmjena u posljednjih $2 dana<br />$3",
        "uploaded-script-svg": "Pronađen skriptni element \"$1\" u postavljenoj SVG datoteci.",
        "uploaded-hostile-svg": "Pronađen nesiguran CSS u stilskom elementu postavljene SVG datoteke.",
        "uploaded-event-handler-on-svg": "Nije dozvoljeno postavljanje atributa koji kontroliraju događaje <code>$1=\"$2\"</code> u SVG datotekama.",
-       "uploaded-href-attribute-svg": "href atributi <code>&lt;$1 $2=\"$3\"&gt;</code> sa nelokalnom metom (npr. http://, javascript:, etc) nisu dozvoljeni u SVG datotekama.",
        "uploaded-href-unsafe-target-svg": "Pronađen href sa nesigurnom metom <code>&lt;$1 $2=\"$3\"&gt;</code> u postavljenoj SVG datoteci.",
        "uploaded-animate-svg": "Pronađena \"animate\" oznaka koja možda mijenja href koristeći se \"from\" atributom <code>&lt;$1 $2=\"$3\"&gt;</code> u postavljenoj SVG datoteci.",
        "uploaded-setting-event-handler-svg": "Postavljanje kontrole događaja je blokirano, pronađeno <code>&lt;$1 $2=\"$3\"&gt;</code> u postavljenoj SVG datoteci.",
        "filename-thumb-name": "Izgleda da je naslov u obliku sličice. Nemojte postavljati sličice nazad na istu wiki. Ako je riječ o nečemu drugom, popravite naziv datoteke tako da ima više značenja i da nema prefiks sličice.",
        "filename-bad-prefix": "Naziv datoteke koju postavljate počinje sa '''\"$1\"''', što je naziv koji obično automatski dodjeljuju digitalni fotoaparati i kamere.\nMolimo Vas da odaberete naziv datoteke koji opisuje njen sadržaj.",
        "filename-prefix-blacklist": " #<!-- ostavite ovu liniju onakvom kakva jeste --> <pre>\n# Sintaksa je slijedeća:\n#   * Sve od karaktera \"#\" pa do kraja je komentar\n#   * Svaka neprazna linija je prefiks za tipična imena datoteka koja automatski dodjeljuje digitalna kamera\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # neki mobilni telefoni\nIMG # generic\nJD # Jenoptik\nMGP # Pentax\nPICT # razni\n #</pre> <!-- ostavite ovu liniju onakvom kakva jeste -->",
-       "upload-success-subj": "Uspješno slanje",
-       "upload-success-msg": "Vaša datoteka iz [$2] je uspješno postavljena. Dostupna je ovdje: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Problem pri postavljanju",
-       "upload-failure-msg": "Nastao je problem s Vašim postavljanjem sa [$2]:\n\n$1",
-       "upload-warning-subj": "Upozorenje pri slanju",
-       "upload-warning-msg": "Nastao je problem sa vašim postavljanjem sa [$2]. Morate se vratiti na [[Special:Upload/stash/$1|formu za postavljanje]] kako biste riješili ovaj problem.",
        "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",
        "wlheader-showupdated": "Stranice koje su izmijenjene otkad ste ih posljednji put posjetili prikazane su <strong>podebljanim slovima</strong>.",
        "wlnote": "Ispod {{PLURAL:$1|je najskorija izmjena|su <strong>$1</strong> najskorije izmjene|<strong>$1</strong> najskorijih izmjena}} načinjenih {{PLURAL:$2|posljednjeg sata|u posljednjih <strong>$2</strong> sata|u posljednjih <strong>$2</strong> sati}}, od $3, $4.",
        "wlshowlast": "Prikaži posljednjih $1 sati $2 dana",
-       "watchlistall2": "sve",
        "watchlist-hide": "Sakrij",
        "watchlist-submit": "Prikaži",
        "wlshowtime": "Prikaži posljednjih:",
index c0fefac..c2d5f48 100644 (file)
        "october-date": "$1 d'octubre",
        "november-date": "$1 de novembre",
        "december-date": "$1 de desembre",
+       "period-am": "AM",
+       "period-pm": "PM",
        "pagecategories": "{{PLURAL:$1|Categoria|Categories}}",
        "category_header": "Pàgines a la categoria «$1»",
        "subcategories": "Subcategories",
        "laggedslavemode": "Avís: La pàgina podria mancar de modificacions recents.",
        "readonly": "La base de dades està bloquejada",
        "enterlockreason": "Escriviu una raó pel bloqueig, així com una estimació de quan tindrà lloc el desbloqueig",
-       "readonlytext": "La base de dades està temporalment bloquejada segurament per tasques de manteniment, després de les quals es tornarà a la normalitat.\n\nL'administrador que l'ha bloquejada ha donat aquesta explicació: $1",
+       "readonlytext": "La base de dades està temporalment bloquejada a noves entrades i altres tasques de manteniment, segurament per tasques rutinàries de manteniment, després de les quals es tornarà a la normalitat.\n\nL'administrador que l'ha bloquejada ha donat aquesta explicació: $1",
        "missing-article": "La base de dades no ha trobat el text d'una pàgina que hauria d'haver trobat, anomenada «$1» $2.\n\nNormalment això passa perquè s'ha seguit una diferència desactualitzada o un enllaç d'historial a una pàgina que s'ha suprimit.\n\nSi no fos el cas, podríeu haver trobat un error en el programari.\nAviseu-ho llavors a un [[Special:ListUsers/sysop|administrador]], deixant-li clar l'adreça URL causant del problema.",
        "missingarticle-rev": "(revisió#: $1)",
        "missingarticle-diff": "(dif: $1, $2)",
        "virus-scanfailed": "escaneig fallit (codi $1)",
        "virus-unknownscanner": "antivirus desconegut:",
        "logouttext": "'''Heu finalitzat la sessió.'''\n\nTingueu en compte que, fins que buideu la memòria cau del navegador, algunes pàgines poden continuar mostrant-se com si encara estiguéssiu en una sessió.",
+       "cannotlogoutnow-title": "Ara no es pot finalitzar la sessió",
+       "cannotlogoutnow-text": "No es pot finalitzar la sessió quan s'utilitza $1.",
        "welcomeuser": "Benvingut, $1!",
        "welcomecreation-msg": "El vostre compte ha estat creat.\nNo oblideu de canviar les vostres [[Special:Preferences|preferències de {{SITENAME}}]].",
        "yourname": "Nom d'usuari",
        "remembermypassword": "Recorda la contrasenya entre sessions (per un màxim de $1 {{PLURAL:$1|dia|dies}})",
        "userlogin-remembermypassword": "Mantén-me connectat",
        "userlogin-signwithsecure": "Connexió segura",
+       "cannotloginnow-title": "Ara no es pot iniciar la sessió",
+       "cannotloginnow-text": "No es pot iniciar la sessió quan s'utilitza $1.",
        "yourdomainname": "El vostre domini",
        "password-change-forbidden": "No podeu canviar les contrasenyes en aquest wiki.",
        "externaldberror": "Hi ha hagut un error en la base de dades d'autenticació o bé no teniu permís per a actualitzar el vostre compte extern.",
        "resetpass_submit": "Definiu una contrasenya i inicieu una sessió",
        "changepassword-success": "S'ha canviat la vostra contrasenya amb èxit!",
        "changepassword-throttled": "Heu realitzat massa intents d'inici de sessió.\nEspereu $1 abans de tornar-ho a provar.",
+       "botpasswords": "Contrasenyes de bot",
+       "botpasswords-label-appid": "Nom del bot:",
+       "botpasswords-label-create": "Crea",
+       "botpasswords-label-update": "Actualitza",
+       "botpasswords-label-cancel": "Cancel·la",
+       "botpasswords-label-delete": "Suprimeix",
+       "botpasswords-label-resetpassword": "Reinicia la contrasenya",
        "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",
        "right-createpage": "Crear pàgines (que no són de discussió)",
        "right-createtalk": "Crear pàgines de discussió",
        "right-createaccount": "Crear nous comptes",
+       "right-autocreateaccount": "Inicia una sessió automàticament amb un compte d'usuari extern",
        "right-minoredit": "Marcar les edicions com a menors",
        "right-move": "Moure pàgines",
        "right-move-subpages": "Moure pàgines amb les seves subpàgines",
        "right-blockemail": "Impedir que un usuari envii correu electrònic",
        "right-hideuser": "Blocar un nom d'usuari amagant-lo del públic",
        "right-ipblock-exempt": "Evitar blocatges d'IP, de rang i automàtics",
-       "right-proxyunbannable": "Evitar els blocatges automàtics a proxies",
        "right-unblockself": "Desblocar-se a si mateixos",
        "right-protect": "Canviar el nivell de protecció i modificar pàgines protegides",
        "right-editprotected": "Modificar pàgines protegides (sense protecció de cascada)",
        "right-managechangetags": "Crear i suprimir [[Special:Tags|etiquetes]] des de la base de dades",
        "right-applychangetags": "Aplica les [[Special:Tags|etiquetes]] juntament amb els canvis propis",
        "right-changetags": "Afegeix i suprimeix [[Special:Tags|etiquetes]] en revisions individuals i entrades de registre",
+       "grant-group-page-interaction": "Interacció amb pàgines",
+       "grant-group-file-interaction": "Interacció amb fitxes multimèdia",
+       "grant-group-watchlist-interaction": "Interacció amb la vostra llista de seguiment",
+       "grant-group-email": "Enviament de correu",
+       "grant-createaccount": "Crea comptes",
+       "grant-createeditmovepage": "Crea, modifica i reanomena pàgines",
+       "grant-delete": "Suprimeix pàgines, revisions i entrades de registre",
        "newuserlogpage": "Registre de creació d'usuaris",
        "newuserlogpagetext": "Aquest és un registre de creació de nous usuaris.",
        "rightslog": "Registre dels permisos d'usuari",
        "uploaded-script-svg": "S’ha trobat l’element programable «$1» al fitxer SVG carregat.",
        "uploaded-hostile-svg": "S’ha trobat codi CSS no segur a l’element d’estil del fitxer SVG carregat.",
        "uploaded-event-handler-on-svg": "No es permet establir els atributs de gestió d’esdeveniments <code>$1=\"$2\"</code> en fitxers SVG.",
-       "uploaded-href-attribute-svg": "No es permeten els atributs d’«href» <code>&lt;$1 $2=\"$3\"&gt;</code> amb objectius no locals (p. ex., http:// i javascript:) als fitxers SVG.",
        "uploaded-href-unsafe-target-svg": "S’ha trobat un element «href» amb un objectiu no segur <code>&lt;$1 $2=\"$3\"&gt;</code> al fitxer SVG carregat.",
        "uploaded-animate-svg": "S'ha trobat l'etiqueta «animate» que pot estar canviant l'href mitjançant l'atribut <code>&lt;$1 $2=\"$3\"&gt;</code> en el fitxer SVG carregat.",
        "uploadscriptednamespace": "Aquest fitxer SVG conté un espai de noms \"$1\" no autoritzat",
        "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.",
        "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-success-subj": "El fitxer s'ha carregat amb èxit",
-       "upload-success-msg": "El material carregat de [$2] està disponible ací: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Problema en la càrrega",
-       "upload-failure-msg": "Hi ha hagut un problema amb la vostra càrrega des de [$2]:\n\n$1",
-       "upload-warning-subj": "Avís de càrrega",
-       "upload-warning-msg": "Hi ha hagut un problema amb la càrrega de [$2]. Podeu tornar a [[Special:Upload/stash/$1|formulari de càrrega]] per corregir aquest problema.",
        "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",
        "log-title-wildcard": "Cerca els títols que comencin amb aquest text",
        "showhideselectedlogentries": "Mostra/amaga les entrades de registre seleccionades",
        "log-edit-tags": "Edita les etiquetes de les entrades seleccionades del registre",
+       "checkbox-select": "Selecciona: $1",
+       "checkbox-all": "Tot",
+       "checkbox-none": "Cap",
+       "checkbox-invert": "Inverteix",
        "allpages": "Totes les pàgines",
        "nextpage": "Pàgina següent ($1)",
        "prevpage": "Pàgina anterior ($1)",
        "listgrouprights-namespaceprotection-header": "Restriccions dels espais de noms",
        "listgrouprights-namespaceprotection-namespace": "Espai de noms",
        "listgrouprights-namespaceprotection-restrictedto": "Permisos que permeten modificar a l'usuari",
+       "listgrants": "Autoritzacions",
+       "listgrants-grant": "Autoritza",
+       "listgrants-rights": "Permisos",
        "trackingcategories": "Categories de seguiment",
        "trackingcategories-summary": "Aquesta pàgina llista les categories de seguiment que s'omplen automàticament pel programari MediaWiki. Es poden canviar els seus noms modificant els missatges del sistema corresponents en l'espai de noms {{ns:8}}.",
        "trackingcategories-msg": "Categoria de seguiment",
        "wlheader-showupdated": "Les pàgines que s'han canviat des de la vostra darrera visita es mostren en '''negreta'''.",
        "wlnote": "A sota hi ha {{PLURAL:$1|el darrer canvi|els darrers <strong>$1</strong> canvis}} en {{PLURAL:$2|la darrera hora|les <strong>$2</strong> darreres hores}}, a $4 del $3.",
        "wlshowlast": "Mostra les darreres $1 hores, els darrers $2 dies",
-       "watchlistall2": "tots",
        "watchlist-hide": "Amaga",
        "watchlist-submit": "Mostra",
        "wlshowhideminor": "edicions menors",
        "export-download": "Ofereix desar com a fitxer",
        "export-templates": "Inclou les plantilles",
        "export-pagelinks": "Inclou pàgines enllaçades fins a una profunditat de:",
+       "export-manual": "Afegeix pàgines manualment:",
        "allmessages": "Tots els missatges del sistema",
        "allmessagesname": "Nom",
        "allmessagesdefault": "Text per defecte",
index e35509e..2601677 100644 (file)
@@ -9,7 +9,8 @@
                        "Mywood",
                        "Impersonator 1",
                        "LNDDYL",
-                       "唐吉訶德的侍從"
+                       "唐吉訶德的侍從",
+                       "Ztl8702"
                ]
        },
        "tog-underline": "下劃綫鏈接",
        "qbpageoptions": "茲蜀頁",
        "qbmyoptions": "我其頁面",
        "faq": "經稠碰著其問題",
-       "faqpage": "Project:ç\93稠碰è\91\97其問題",
+       "faqpage": "Project:稠å\95\8f其問題",
        "actions": "動作",
        "namespaces": "命名空間",
        "variants": "變體",
        "createaccountreason": "原因:",
        "createacct-reason": "原因",
        "createacct-reason-ph": "汝奚勢復想開另外蜀隻賬戶?",
-       "createacct-captcha": "安全檢查",
-       "createacct-imgcaptcha-ph": "將汝敆懸頂看見其文字拍出來",
        "createacct-submit": "開賬戶",
        "createacct-another-submit": "新建另外蜀萆賬號",
        "createacct-benefit-heading": "{{SITENAME}}是共汝蜀様其儂做其。",
        "passwordreset-username": "用戶名:",
        "passwordreset-domain": "域名:",
        "passwordreset-email": "電批地址:",
-       "passwordreset-emailsent": "蜀萆密碼重新設置其電批已經寄出去了。",
+       "passwordreset-emailsentemail": "蜀萆密碼重新設置其電批已經寄出去了。",
        "passwordreset-emailsent-capture": "蜀萆密碼重新設置其電批已經寄出去了,內容就是生下底總款。",
        "changeemail": "修改電批其地址",
+       "changeemail-header": "修改賬戶電子郵件地址",
        "changeemail-oldemail": "現刻時其電批地址:",
        "changeemail-newemail": "新其電批地址:",
        "changeemail-none": "(無)",
        "sourcefilename": "源文件名:",
        "destfilename": "目標文件名:",
        "watchthisupload": "監視茲文件",
-       "upload-success-subj": "成功上傳",
        "license": "版權聲明:",
        "license-header": "版權說明",
        "imgfile": "文件",
        "linksearch-ok": "尋討",
        "linksearch-line": "$1是趁$2𡅏鏈接過其",
        "emailuser": "寄電批乞茲隻用戶",
-       "emailpage": "寄電子郵件乞用戶",
        "defemailsubject": "{{SITENAME}}其用戶「$1」寄來其批",
        "noemailtitle": "無電批地址",
        "emailfrom": "趁:",
        "move-page-legend": "移動頁面",
        "movepagetext": "使下底其表單重新乞茲蜀頁起蜀萆名字,移動伊共伊所有其歷史遘伊其新名字。\n舊其標題會變成新其標題其重定向頁。\n汝會使自動更新重定向許蜀點遘原底其標題。\n如果伊結果伓是總款其話,汝著檢查蜀下[[Special:DoubleRedirects|雙重重定向]]或者[[Special:BrokenRedirects|獃其重定向]]。\n汝有責任讓頁面鏈接遘正確其地方。\n\n注意儷是許塊已經有蜀隻頁面,噲就'''無能耐'''移動過了,除開噲儷是蜀萆重定向並且無舊底其修改歷史。\n嚽其意思就是講儷是汝名字起綻了,汝會使將茲蜀萆頁面重新起伊原底其名字,但是𣍐使覆蓋已經有其頁面。\n\n'''警告!'''\n嚽可能會對一般頁面造成盡大其並且無能耐想遘其改變;\n起動汝著敆做之前會意總款做其後果。",
        "movepagetalktext": "相關其討論頁會自動共伊移遘'''無挃''':\n* 汝其新其用戶名已經有蜀頁有內容其討論頁,或者\n* 汝取消下底其框框。\n\n若總款,汝會使自家移動或者是合併頁面。",
-       "movearticle": "移動頁面",
        "movenologintext": "著[[Special:UserLogin|躒入]]才有能耐移動頁面。",
        "newtitle": "遘新題目:",
        "move-watch": "監視茲頁",
        "movelogpage": "移動日誌",
        "movelogpagetext": "下底是乞移動過其頁其單單。",
        "movereason": "原因:",
-       "delete_and_move": "刪掉並且移動",
        "delete_and_move_confirm": "正式,刪掉茲蜀頁",
        "allmessages": "系統消息",
        "allmessagesname": "名",
index 6c34312..d3b4ae5 100644 (file)
        "virus-scanfailed": "сканиран гӀалат (код $1)",
        "virus-unknownscanner": "йозуш йоцу антивирус:",
        "logouttext": "'''Ахьа болх дӀаберзийна.'''\n\nЦхьайолу агӀонаш чохь хьо хьай цӀарца болх беш сана хила тарло ишта ца хилийта керлаякха браузеран кэш.",
+       "cannotlogoutnow-title": "ХӀинца чудаха таро яц",
        "welcomeuser": "Марша ДогӀийла, $1!",
        "welcomecreation-msg": "Хьан декъашхочун дӀаяздар кхоьлина.\nДиц ма делахь {{SITENAME}} сайтан [[Special:Preferences|декъашхочун гӀирс]].",
        "yourname": "Декъашхочун цӀе:",
        "remembermypassword": "Даглаца сан дӀаяздар хӀокху компьютеран тӀехь (цхьан $1 {{PLURAL:$1|дийнахь}})",
        "userlogin-remembermypassword": "Системин чохь Ӏойла",
        "userlogin-signwithsecure": "Ларийна цхьаьнакхетар",
+       "cannotloginnow-title": "ХӀинца чудаха таро яц",
        "yourdomainname": "Хьан машан меттиг:",
        "password-change-forbidden": "Хьан йиш яц хӀокху вики чохь пароль хийца.",
        "externaldberror": "Арахьара хаамийн базан гӀоьнца аутентификаци ечу хенахь гӀалат даьлла я хьа дӀаяздаран хийцам бан бакъонаш яц.",
        "resetpass_submit": "Пароль дӀахӀоттийна а системин чугӀо",
        "changepassword-success": "Хьан пароль кхиамца хийцина!",
        "changepassword-throttled": "Хьо дукха гӀиртира.\nДехар до, собар де $1 юха гӀортале.",
+       "botpasswords": "Ботийн парольш",
+       "botpasswords-editexisting": "Тае ботан йолуш йолу пароль",
+       "botpasswords-label-appid": "Ботан цӀе:",
+       "botpasswords-label-create": "Кхолла",
+       "botpasswords-label-update": "Карлаяккха",
+       "botpasswords-label-cancel": "Юхаяккха",
+       "botpasswords-label-delete": "ДӀаяккхар",
+       "botpasswords-label-restrictions": "Лелоран доза тохар:",
+       "botpasswords-label-grants-column": "Магийна",
+       "botpasswords-bad-appid": "«$1» ботан цӀе магийна яц.",
+       "botpasswords-created-body": "Ботан «$1» пароль кхиамца кхоьллина.",
        "resetpass_forbidden": "Пароль хийца йиш яц",
        "resetpass-no-info": "ХӀара агӀо лело системин чугӀо.",
        "resetpass-submit-loggedin": "Хийца пароль",
        "newsectionsummary": "/* $1 */ Керла хьедар",
        "rc-enhanced-expand": "Гайта мадарра",
        "rc-enhanced-hide": "Ма дарра дерг къайладаккха",
-       "rc-old-title": "дуьххьара кхоьллина яра цӀарца «$1»",
+       "rc-old-title": "дуьххьара кхоьллина яра «$1» цӀарца",
        "recentchangeslinked": "Кхуьнца долу нисдарш",
        "recentchangeslinked-feed": "Кхуьнца долу нисдарш",
        "recentchangeslinked-toolbox": "Кхуьнца долу нисдарш",
        "recentchangeslinked-page": "АгӀон цӀе:",
        "recentchangeslinked-to": "Кхечу агӀор, гайта хийцамаш агӀонашца, хӀоттийначу агӀонтӀе хьажорг йолуш",
        "recentchanges-page-added-to-category": "[[:$1]] категори чу тоьхна",
+       "recentchanges-page-removed-from-category": "[[:$1]] дӀаяьккхина категори чура",
        "upload": "Файл чуяккхар",
        "uploadbtn": "Файл чуяккхар",
        "reuploaddesc": "Юху гӀо файл чуйоккху агӀоне",
        "filewasdeleted": "Иштта цӀе йолуш файл хьалха чуяьккхина хила, амма дӀаяьккхина. Дехар до, юху чуяккхале $1 хьажа.",
        "filename-bad-prefix": "Чуйоккхучу файлан цӀе йолалуш ю «'''$1'''» и сурт доккхучу хӀумнан кепан цӀе хилла мега. Дехар до, хьаржа файлан йогӀуш йолу цӀе.",
        "filename-prefix-blacklist": "#<!-- битийша хlара могlа ша мабарра --> <pre>\n# Бухасиз шолгlа:\n#  * Массо, саболчунтlийра йуьлалуш ерш «#» хуьлу хетаме дерг (могlа чекх балац)\n#  * Хlора баьсса боцу могlа — хlман цlе лораш йу, терахьца сурт доккхучо луш ма хиллар\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # ишта цхьаболу лера гlирс а\nIMG # еригге\nJD # Jenoptik\nMGP # Pentax\nPICT # тайп тайпан\n #</pre> <!-- битийша хlара могlа ша мабарра -->",
-       "upload-success-subj": "Чуяккхар кхиамца чекхделира.",
-       "upload-success-msg": "Хьа чуяккхар [$2] кхиамца чекхделира. Хиллачуьнга хьажа йиш ю кхузахь: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Чуяккхаран бала",
-       "upload-failure-msg": "Хьа чуяккхаран бала карина [$2]:\n\n$1",
-       "upload-warning-subj": "ДӀахьедар",
-       "upload-warning-msg": "Чуйоккхуш [$2] гӀалат даьлла. И нисдан юхагӀо [[Special:Upload/stash/$1|upload form]] чу.",
        "upload-proto-error": "Нийса йоцу протокол",
        "upload-file-error": "Чоьхьара гӀалат",
        "upload-misc-error": "Чуяккхаран цадевза гӀалат",
        "logempty": "Тептарш чохь хӀокху агӀона дӀаяздарш дац.",
        "log-title-wildcard": "ХӀокху символашца болалуш болу кортанаш карабе",
        "showhideselectedlogentries": "Гайта/къайлаяха хаьржина башхонаш",
+       "checkbox-select": "Харжар: $1",
+       "checkbox-all": "Массо",
+       "checkbox-none": "ХӀума а",
+       "checkbox-invert": "Инверт ян",
        "allpages": "Массо агӀонаш",
        "nextpage": "ТӀаьхьа йогӀу агӀо ($1)",
        "prevpage": "Хьалха йоьду агӀо ($1)",
        "listgrouprights-namespaceprotection-header": "ЦӀеран анан бехкам",
        "listgrouprights-namespaceprotection-namespace": "ЦӀерийн ана",
        "listgrouprights-namespaceprotection-restrictedto": "Декъашхочун хийцамаш бан таро хуьлуьйту бакъонаш",
+       "listgrants": "Бакъо",
        "listgrants-grant": "Бакъо",
        "listgrants-rights": "Бакъонаш",
        "trackingcategories": "Хьожуш йолу категореш",
        "wlheader-showupdated": "Хийцам бина агӀонаш '''Ӏаьржа''' шрифтцан билгальяха ю.",
        "wlnote": "Гойту <strong>$2</strong> {{plural:$2|сахьтчохь}} бина {{PLURAL:$1|тӀеххьара '''$1''' хийцам}}, хан $3 $4",
        "wlshowlast": "Гайта тӀаьххьара $1 сахьт $2 де",
-       "watchlistall2": "массо",
        "watchlist-hide": "Къайлаяккха",
        "watchlist-submit": "Гайта",
        "wlshowtime": "Гаран хенан мур:",
        "block-log-flags-hiddenname": "декъашхочун цӀе къайлаяьккхина",
        "range_block_disabled": "Куьйгалхошна диапазонашна блоктоха цамага до.",
        "ipb_expiry_invalid": "Дешдерг дан нийса йоцу хан.",
+       "ipb_expiry_old": "Хан чаккхе — хьалхалера.",
        "ipb_already_blocked": "«$1» хӀинцале блоктоьхна ю.",
        "ipb-needreblock": "ХӀокху $1 декъашхочун {{GENDER:$1|блоктоьхна ю}}. Лаьий хьуна блоктохаран параметраш хийца?",
        "ipb-otherblocks-header": "{{PLURAL:$1|Кхин блоктохар|Кхин блоктохарш}}",
        "allmessagescurrent": "Карарчу хенан йоза",
        "allmessagestext": "ХӀара «MediaWiki» цӀерийн меттигера системан хаамийн могӀа бу.\nХьайна MediaWiki тая лууш делахь, дехар до, проект [//translatewiki.net translatewiki.net] [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation юьйцучу хьажа].",
        "allmessagesnotsupportedDB": "'''$wgUseDatabaseMessages''' дӀаяйина хилар бахьнехь хӀара агӀо дӀачӀаьгӀна ю.",
-       "allmessages-filter-legend": "Литтар",
-       "allmessages-filter": "Литтар оцу хьола хийцамца:",
+       "allmessages-filter-legend": "Луьттург",
+       "allmessages-filter": "Луьттург оцу хьола хийцамца:",
        "allmessages-filter-unmodified": "Хийцан йоцурш",
        "allmessages-filter-all": "Массо",
        "allmessages-filter-modified": "Хийцнарш",
-       "allmessages-prefix": "Литтар оцу дешахьалхе:",
+       "allmessages-prefix": "Луьттург оцу дешахьалхе:",
        "allmessages-language": "Мотт:",
        "allmessages-filter-submit": "Дехьа гӀо",
        "allmessages-filter-translate": "Гочйе",
        "anonusers": "{{PLURAL:$2|1=цӀе хьулйина декъашхо|цӀе хьулйина декъашхой}} {{grammar:genitive|{{SITENAME}}}} $1",
        "creditspage": "Баркаллаш",
        "nocredits": "Бац декъашхойн могӀам хӀокху яззамца",
-       "spamprotectiontitle": "СовбилаÑ\80на Ð»Ð¸Ñ\82Ñ\82аÑ\80",
+       "spamprotectiontitle": "Спам-лÑ\83Ñ\8cÑ\82Ñ\82Ñ\83Ñ\80г",
        "spamprotectiontext": "Хьо дӀаязъян гӀерта агӀо спам-литтаро дӀакъоьвлина.\nЦуна бахьана хила там бу агӀона чохь зулам литтаран чутоьхна йолу хьажорг хилар.",
        "spambot_username": "Спам дӀацӀаняр",
        "pageinfo-title": "Хаамаш цу «$1»",
        "file-info-png-frames": "$1 {{PLURAL:$1|кадр|кадраш}}",
        "newimages": "Керлачу файлийн галерей",
        "newimages-summary": "ХӀокху белхан агӀона чохь гойтуш ю дукха хан йоццуш чуяьхна файлаш.",
-       "newimages-legend": "Литтар",
+       "newimages-legend": "Луьттург",
        "newimages-showbots": "Гайта боташ чуяьхна файлаш",
        "newimages-hidepatrolled": "Къайлаяха патруль йина файлаш",
        "noimages": "Суьрташ дац.",
        "years": "{{PLURAL:$1|$1 шо|$1 шо}}",
        "ago": "$1 хьалха",
        "just-now": "хӀинца",
-       "hours-ago": "$1 {{PLURAL:$1|сахьт}}",
+       "hours-ago": "$1 {{PLURAL:$1|сахьт}} хьалха",
        "minutes-ago": "$1 {{PLURAL:$1|минот}} хьалха",
        "seconds-ago": "$1 {{PLURAL:$1|секунд}} хьалха",
        "monday-at": "оршотан дийнахь $1",
        "watchlisttools-edit": "Хьажа/нисбé могӀам",
        "watchlisttools-raw": "Йоза санна тае",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|дийцаре]])",
+       "timezone-local": "Меттигера",
        "version": "Верси MediaWiki",
        "version-extensions": "ДӀахӀоттийна шордарш",
        "version-skins": "ДӀахӀоттийна кечяран темаш",
        "redirect-page": "АгӀона ID",
        "redirect-revision": "АгӀона верси",
        "redirect-file": "Файлан цӀе",
+       "redirect-logid": "Тептаран ID",
        "redirect-not-exists": "МаьӀна цакарий",
        "fileduplicatesearch": "Лаха цхьатерра йолу файлаш",
        "fileduplicatesearch-summary": "Хэш-кодаца цхьатерра файлаш лахар.",
        "specialpages-group-spam": "Спаман дуьхьала гӀирсаш",
        "blankpage": "Еса агӀо",
        "tags": "Болш болу хийцаман къастам",
-       "tag-filter": "Къастам [[Special:Tags|хьажар]]:",
+       "tag-filter": "[[Special:Tags|Билгалонаш]] луьттург:",
        "tag-filter-submit": "Литта",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|1=Билгало|Билгалонаш}}]]: $2)",
        "tags-title": "Билгалонаш",
        "special-characters-title-emdash": "деха сиз",
        "special-characters-title-minus": "хьаьрк минус",
        "mw-widgets-titleinput-description-redirect": "ДӀасхьажорг $1 тӀе",
+       "sessionprovider-generic": "$1 сесси",
        "randomrootpage": "Цахууш нисъелла ораман агӀо"
 }
index 1a083ca..e07376f 100644 (file)
@@ -50,7 +50,7 @@
        "tog-watchlisthidebots": "دەستکارییەکانی بات بشارەوە لە لیستی چاودێری",
        "tog-watchlisthideminor": "دەستکارییە بچووکەکان لە لیستی چاودێریدا بشارەوە",
        "tog-watchlisthideliu": "دەستکارییەکانی ئەو بەکارهێنەرانەی لە ژوورەوەن بشارەوە لە لیستی چاودێری",
-       "tog-watchlisthideanons": "دەستکارییەکانی بەکارهێنەرانی نەناسراو بشارەوە لە لیستی چاودێری",
+       "tog-watchlisthideanons": "دەستکارییەکانی بەکارهێنەرە نەناسراوەکان لە لیستی چاودێریدا بشارەوە",
        "tog-watchlisthidepatrolled": "لە پێرستی چاودێرییەکاندا دەستکارییە پاس دراوەکان بشارەوە",
        "tog-ccmeonemails": "کۆپییەک لەو ئیمەیلانە کە بۆ بەکارھێنەرانی تر دەنێرم بۆ خۆشم بنێرە",
        "tog-diffonly": "ناوەرۆکی پەڕە لە ژێرەوەی جیاوازییەکاندا نیشان مەدە",
        "laggedslavemode": "ئاگاداری: لەوانەیە لاپەڕەکە نوێکردنەکان لە بەر نەگرێت.",
        "readonly": "بنکەدراوە داخراوە",
        "enterlockreason": "هۆیەک بۆ قوفڵ‌کردنەکە بنووسە کە  تێیدا کاتی کردنەوەی قۆفڵەکە باس کرابێت",
-       "readonlytext": "بÙ\86Ú©Û\95دراÙ\88Û\95Ú©Û\95 Ù\84Û\95Ù\85 Ú©Ø§ØªÛ\95دا  Ù\84Û\95بÛ\95ر Ú\86اکسازÛ\8c Ø¦Ø§Ø³Ø§Û\8cÛ\8c Ø¨Û\86 Ù\86Ù\88سÛ\8cÙ\86Û\8c Ù\86Ù\88Û\8e Ù\88 Ø¯Û\95ستکارÛ\8c Ù\82Ù\88Ù\81Úµ Ú©Ø±Ø§Ù\88Ù\87. Ø¯Ù\88اÛ\8c Ø¦Û\95Ù\88Û\95 Ø¦Û\95گرÛ\8eتÛ\95Ù\88Û\95 Ø¨Û\86 Ø¦Ø§Ø³ØªÛ\8c Ø®Û\86Û\8c.\n\nئÛ\95Ù\88 Ø¨Û\95Ú\95Û\8eÙ\88بÛ\95رÛ\95Û\8c Ú©Û\95 Ù\82Ù\88Ù\81ÚµÛ\8c Ú©Ø±Ø¯Ù\88Ù\88Ù\87 Ø¦Û\95Ù\85 Ú\95Ù\88Ù\88Ù\86â\80\8cکردÙ\86Û\95Ù\88Û\95Û\8c Ù\86Ù\88Ù\88سÛ\8cÙ\88Û\95 : $1",
+       "readonlytext": "داتابÛ\8eس Ø¦Û\8eستا Ø¨Û\95 Ú¾Û\86Û\8c Ø¯Ø§Ù\86اÙ\86Û\8c Ø¨Ø§Ø¨Û\95تÛ\8c Ù\86Ù\88Û\8e Ù\88 Ú¯Û\86Ú\95اÙ\86کارÛ\8cÛ\8c Ø¯Û\8cÚ©Û\95 Ø¯Ø§Ø®Ø±Ø§Ù\88Û\95Ø\8c Ù\84Û\95Ù\88اÙ\86Û\95Û\8cÛ\95 Ø¨Û\95 Ù\85Û\95بÛ\95ستÛ\8c Ú\86اکسازÛ\8cÛ\8c Ú\95Û\86تÛ\8cÙ\86 Ø¨Û\8eت Ù\88 Ø¯Û\95Ú¯Ú\95Û\8eتÛ\95Ù\88Û\95 Ø¨Û\86 Ø¯Û\86Ø®Û\8c Ø¦Ø§Ø³Ø§Û\8cÛ\8c.\n\nئÛ\95Ù\88 Ø¨Û\95Ú\95Û\8eÙ\88Û\95بÛ\95رÛ\8c Ø³Û\8cستÛ\95Ù\85Û\95 Ú©Û\95 Ø¯Ø§Û\8cخستÙ\88Ù\88Û\95 Ø¦Û\95Ù\85 Ú\95Ù\88Ù\88Ù\86کردÙ\86Û\95Ù\88Û\95Û\8cÛ\95Û\8c Ù¾Û\8eØ´Ú©Û\95Ø´ Ú©Ø±Ø¯Ù\88Ù\88Û\95: $1",
        "missing-article": "داتابەیسەکە نەیتوانی دەقی پەڕەیەک بەناوی «$1» $2  بدۆزێتەوە کە دەبوا بیدۆزیبایەتەوە.\n\nئەمە زیاتر لە بەدواچوونی بەستەری جیاوازی یان مێژووی کۆنی پەڕەیەکی سڕدراو ڕوودەدات.\n\nئەگەر وا نەبێت، ئەوا ڕەنگە گرفتێکت لەم نەرمامێرەدا دۆزیبێتەوە.\nتکایە ئەمە بە ئاماژەدان بە ناونیشانی URLـەکەیەوە بە [[Special:ListUsers/sysop|بەڕێوبەرێک]] ڕاپۆرت بدە.",
        "missingarticle-rev": "(پێداچوونەوە#: $1)",
        "missingarticle-diff": "(جیاوازی: $1، $2)",
        "loginsuccesstitle": "سەرکەوتی بۆ چوونە ژوورەوە",
        "loginsuccess": "'''ئێستا بە ناوی «$1»ەوە لە {{SITENAME}} چوویتەتەژوورەوە.'''",
        "nosuchuser": "بەکارھێنەرێک بە ناوی «$1» نیە.\nناوی بەکارھێنەر بە گەورە و بچووک بوونی پیتەکان ھەستیارە.\nڕێنووسەکەت چاولێکەرەوە، یان [[Special:UserLogin/signup|ھەژمارێکی نوێ دروست بکە]].",
-       "nosuchusershort": "بەکارهێنەر بە ناوی \"$1\" نیە.\nچاو لە ڕێنووسەکە بکە.",
-       "nouserspecified": "دەبێ ناوی بەکارهێنەر دابین‌ بکەی.",
+       "nosuchusershort": "بەکارھێنەرێک بە ناوی «$1»ەوە نیە.\nبە نووسراوەکەتدا بچۆرەوە.",
+       "nouserspecified": "دەبێت ناوێکی بەکارھێنەری دەستنیشان بکەیت.",
        "login-userblocked": "ئەم بەکارهێنەرە بڵۆک کراوە. چوونەژوورەوە ڕێگەپێنەدراوە.",
        "wrongpassword": "تێپەڕوشەی ھەڵە.\nتکایە دووبارە تێبکۆشە.",
        "wrongpasswordempty": "تێپەڕەوشەی لێدراو بەتاڵبوو.\nتکایە هەوڵ بدەوە.",
        "password-login-forbidden": "بەکارهێنانی ئەم ناوی بەکارهێنەر و تێپەڕەووشەیە قەدەغەکراوە.",
        "mailmypassword": "تێپەڕوشەکە ڕێک بخەوە",
        "passwordremindertitle": "تێپەڕوشەیەکی نوێی کاتی بۆ  {{SITENAME}}",
-       "passwordremindertext": "کەسێک (لەوانەیە خۆت، لە ئای‌پی ئەدرەسی $1) داوای تێپەڕوشەیەکی نوێی کردووە بۆ {{SITENAME}} ($4). تێپەڕوشەیەکی کاتی بۆ بەکارهێنەر «$2» دروستکراو و وەک «$3» دانراوه. ئەگەر ئەمە داخوازی تۆ بووە، پێویستت بەوەیە ئێستا بچیتە ژوورەوە و تێپەڕوشەیەکی نوێ هەڵبژێریت. ماوەی‌ تێپەڕوشە کاتییەکەت لە {{PLURAL:$5|یەک ڕۆژدا|$5 ڕۆژدا}} بەسەردەچێت.\n\nئەگەر کەسێکی تر ئەم داوایەی کردووە یان تێپەڕوشەکەت هاتووەتەوە بیرت و ئیتر پێویستت بە گۆڕانی نییە، دەتوانی گوێ بەم پەیامە نەدەیت و لە تێپەڕوشە کۆنەکەت کەڵک وەربگری.",
+       "passwordremindertext": "کەسێک (لەوانەیە خۆت، لە ناونیشانی IPی $1ـەوە) داوای تێپەڕوشەیەکی نوێی کردووە بۆ {{SITENAME}} ($4). تێپەڕوشەیەکی کاتی بۆ بەکارھێنەر «$2» دروست کراوە و بە «$3» دانراوه. ئەگەر ئەمە داخوازی تۆ بووە، پێویستت بەوەیە ئێستا بچیتە ژوورەوە و تێپەڕوشەیەکی نوێ هەڵبژێریت. ماوەی‌ تێپەڕوشە کاتییەکەت لە {{PLURAL:$5|یەک ڕۆژدا|$5 ڕۆژدا}} بەسەر دەچێت.\n\nئەگەر کەسێکی تر ئەم داوایەی کردووە یان تێپەڕوشەکەت هاتووەتەوە بیرت و ئیدی پێویستت بە گۆڕینی نییە، دەتوانیت گوێ بەم پەیامە نەدەیت و لە تێپەڕوشە کۆنەکەت کەڵک وەربگریت.",
        "noemail": "ھیچ ئەدرەسێکی ئیمەیل تۆمار نەکراوە بۆ بەکارھێنەر « $1 ».",
        "noemailcreate": "دەبێ ناونیشانێکی دروستی ئیمەیل بنووسی",
        "passwordsent": "تێپەڕوشەیەکی نوێ نێررا بۆ ئەدرەسی ئیمێلی تۆمارکراوی «$1».\nتکایە دوای وەرگرتنی، دیسان بچۆ ژوورەوە.",
        "emaildisabled": "ئەم ماڵپەڕە ناتوانێ ئیمەیل بنێرێ.",
        "accountcreated": "ھەژمار دروست کرا",
        "accountcreatedtext": "هەژماری بەکارهێنەری [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|لێدوان]]) دروست کراوە.",
-       "createaccount-title": "درووست‌کردنی هەژمارە بۆ {{SITENAME}}",
-       "createaccount-text": "کەسێک هەژمارەیەکی بۆ ئی‌مێڵ ئەدرەسەکی تۆ لەسەر {{SITENAME}} ($4) بەناوی \"$2\"، بە وشەی نهێنی \"$3\".\nئێستا دەبێ بڕۆیتە ژوورەوە و وشەی نهێنی بگۆڕیت.\n\nئەگەر ئەو هەژمارە بە هەڵە درووست‌کراوە، ئەم برووسکە لە بەرچاو مەگرە.",
+       "createaccount-title": "درووست کردنی ھەژمار بۆ {{SITENAME}}",
+       "createaccount-text": "کەسێک ھەژمارێکی بۆ ناونیشانی ئیمێلی تۆ لە {{SITENAME}}دا ($4) بە ناوی «$2»ـەوە و بە تێپەڕوشەی  «$3»ـەوە دروست کردووە.\nدەبێت ھەر ئێستا بچیتە چوورەوە و تێپەڕوشەیەکەت بگۆڕیت.\n\nئەگەر ئەم ھەژمارە بە ھەڵە دروست کراوە، دەکرێت گوێ بەم پەیامە نەدەیت.",
        "login-throttled": "زۆر زۆر ھەوڵت داوە بۆ چوونە ژوورەوە.\nتکایە $1 بوەستە پێش ھەوڵی دووبارە.",
        "loginlanguagelabel": "زمان: $1",
        "pt-login": "بچۆ ژوورەوە",
        "confirmedittext": "پێویستە پێش هەرجۆرە دەستکاریەکی لاپەڕەکان ئەدرەسی ئیمەیلت ڕاچاو کردبێت .<br />\nتکایە لە [[Special:Preferences|ھەڵبژاردەکانی بەکارھێنەر]] ئی‌مەیلەکەت دانێ و بڕواپێکراوی بکە.",
        "nosuchsectiontitle": "بەش نەدۆزرایەوە",
        "nosuchsectiontext": "هەوڵی دەستکاریکردنی بەشێکت داوە کە بوونی نیە.\nلەوانەیە لەو کاتە خەریکی بینینی پەڕە بوویت گۆزرابێتەوە یان سڕابێتەوە.",
-       "loginreqtitle": "پێویستە بچییە ژوورەوە",
-       "loginreqlink": "بچییە ژوورەوە",
+       "loginreqtitle": "پێویستە بچیتە ژوورەوە",
+       "loginreqlink": "بچیتە ژوورەوە",
        "loginreqpagetext": "بۆ دیتنی لاپەڕەکانی دیکە دەبێ $1 .",
        "accmailtitle": "تێپەڕوشە نێررا",
        "accmailtext": "تێپەڕوشەیەک کە بە هەڕەمەکی بۆ [[User talk:$1|$1]] دروست کرا، نێررا بۆ $2. دەتوانیت لە پەڕەی <em>[[Special:ChangePassword|گۆڕینی تێپەڕوشەدا]]</em> لە کاتی چوونەژوورەوەدا بیگۆڕی.",
        "anontalkpagetext": "----''ئەمە لاپەڕەی وتووێژە بۆ بەکارهێنەرێکی نەناسراوە کە هێشتا هەژمارەی درووست‌نەکردووه یان کەڵکی‌ لێ وەرناگرێ .\nلەبەر ئەوە مەجبوورین ئای‌پی ئەدرەسەکی ژمارەیی بۆ ناساندنی بەکار بێنین.\nئای‌پی ئەدرەسی وا لەوانەیه لە لایەن چەندین بەکارهێنەروە بەکاربێت.\nئەگەر تۆ بەکارهێنەرێکی نەناسراوی و هەست ئەکەی ئەم لێدوانە پەیوەندی بە تۆوە نیە تکایە [[Special:UserLogin/signup|ھەژمارێکی نوێ دروست بکە]] یان [[Special:UserLogin|بچۆ ژوورەوە]] لەبەر ئەوەی لەداهاتوودا دەگەڵ بەکارهێنەرانی‌ نەناسراوی دی تێکەڵ نەکرێیت. ''",
        "noarticletext": "ھەنووکە ھیچ دەقێک لەم پەڕەیەدا نییە.\nدەتوانی بۆ ئەم ناوە لە [[Special:Search/{{PAGENAME}}|پەڕەکانی تردا بگەڕێی]]، <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} لە لۆگەکاندا بگەڕێی]، یان [{{fullurl:{{FULLPAGENAME}}|action=edit}} ئەم پەڕەیە دەستکاری بکەیت]</span>.",
        "noarticletext-nopermission": "ھەنووکە ھیچ دەقێک لەم پەڕەیەدا نییە.\nدەتوانی لە پەڕەکانی تردا [[Special:Search/{{PAGENAME}}|بۆ ئەم ناوە بگەڕێی]]، یان <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} لە لۆگە پەیوەندیدارەکاندا بگەڕێی]</span>، بەڵام ناتوانی ئەم پەڕەیە دروست بکەی.",
-       "userpage-userdoesnotexist": "هەژماری بەکارهێنەری \"<nowiki>$1</nowiki>\" تۆمار نەکراوە.<br />\nگەر دەتەوێ ئەم لاپەڕە درووست‌کەی یان دەستکاری بکەی تکایە تاقی‌بکەوە .",
+       "userpage-userdoesnotexist": "ھەژماری بەکارھێنەریی «$1» تۆمار نەکراوە.\nتکایە دڵنیا ببەرەوە ئەگەر دەتھەوێت ئەم پەڕەیە دروست یان دەستکاری بکەیت.",
        "userpage-userdoesnotexist-view": "ھەژماری بەکارھێنەریی «$1» تۆمار نەکراوە.",
        "blocked-notice-logextract": "ھەنووکە ئەم بەکارھێنەرە بەربەست کراوە.\nدوایین بابەتی لۆگی بەربەستن لە ژێرەوە ھاتووە:",
        "clearyourcache": "تێبینی:''' لە دوای پاشەکەوت کردن، لەوانەیە  بۆ بینینی گۆڕانکارییەکان پێویست بێ cacheی وێبگەڕەکەت پاکبکەیتەوە.\n* '''Firefox / Safari:''' دوگمەی ''Shift'' بگرە کاتێک لەسەر ''Reload''دا کرتە دەکەی، یان ھەرکام لە ''Ctrl-F5'' یان ''Ctrl-R'' لێبدە (''⌘-R'' لەسەر Mac دا)\n* '''Google Chrome:''' دوگمەکانی ''Ctrl-Shift-R'' لێبدە  (''⌘-Shift-R'' لەسەر Mac دا)\n* '''Internet Explorer:''' دوگمەی ''Ctrl'' بگرە کاتێک لەسەر  ''Refresh''دا کرتە دەکەی، یان ''Ctrl-F5'' لێبدە\n* '''Opera:''' لە ڕێگەی ''Tools → Preferences'' ەوە cacheەکە بسڕەوە.",
        "template-semiprotected": "(نیوەپارێزراو)",
        "hiddencategories": "ئەم پەڕە ئەندامێکی {{PLURAL:$1|١ پۆلی شاراوەیە|$1 پۆلی شاراوەیە}}:",
        "edittools": "<!-- دەقی ئێرە لە ژێری فۆرمی دەستکاری و بارکردندا نیشان دەدرێت. -->",
-       "nocreatetext": "{{SITENAME}} توانای درووست‌کردنی لاپەڕە نوێکانی داخستووە.<br />\nئەتوانی بگەڕێتەوە دواوە و یەکێک لەو لاپەڕانەی وا هەن دەستکاری بکەیت ، یان [[Special:UserLogin|بچۆ ژوورەوە یان هەژمارێک درووست‌بکە]]",
+       "nocreatetext": "{{SITENAME}} توانای دروست کردنی پەڕەی نوێی سنووردار کردووە.\nدەتوانیت بگەڕێیتەوە دواوە و پەڕەیەک دەستکاری بکەیت یان [[Special:UserLogin|بچیتە ژوورەوە یان ھەژمارێک دروست بکەیت]].",
        "nocreate-loggedin": "ئیجازەی دروست کردنی پەڕەی نوێت نیە.",
        "sectioneditnotsupported-title": "بەش دەستکاریکردنی پشتیوانی ناکرێ",
        "sectioneditnotsupported-text": "دەستکاریکردنی بەش لە پەڕەدا پشتیوانی ناکرێ.",
        "powersearch-legend": "گەڕانی پێشکەوتوو",
        "powersearch-ns": "گەڕان لە بۆشاییی ناوەکانی:",
        "powersearch-togglelabel": "تاوتوێ بکە:",
-       "powersearch-toggleall": "ھەموو",
+       "powersearch-toggleall": "ھەموویان",
        "powersearch-togglenone": "ھیچیان",
        "powersearch-remember": "ھەڵبژاردەکانت بۆ گەڕانەکانی تر لە بیر بێت",
        "search-external": "گەڕانی دەرەکی",
        "userrights-lookup-user": "بەڕێوەبردنی گرووپەکانی بەکارھێنەر",
        "userrights-user-editname": "ناوی بەکارهێنەرێک بنووسە:",
        "editusergroup": "گرووپەکانی بەکارھێنەر دەستکاری بکە",
-       "editinguser": "گۆڕینی مافەکانی بەکارهێنەر {{GENDER:$1|بەکارھێنەر}} <strong>[[User:$1|$1]]</strong> $2",
-       "userrights-editusergroup": "دەستکاریی گرووپەکانی بەکارهێنەر",
+       "editinguser": "گۆڕینی مافە بەکارھێنەرییەکانی {{GENDER:$1|بەکارھێنەر}} <strong>[[User:$1|$1]]</strong> $2",
+       "userrights-editusergroup": "گرووپە بەکارھێنەرییەکان دەستکاری بکە",
        "saveusergroups": "گرووپەکانی بەکارھێنەر پاشەکەوت بکە",
        "userrights-groupsmember": "ئەندامە لە:",
        "userrights-groupsmember-auto": "ئەندامی ناڕاشکاوە لە:",
        "action-edit": "دەستکاریی ئەم پەڕەیە",
        "action-createpage": "دروستکردنی پەڕەکان",
        "action-createtalk": "دروستکردنی پەڕەکانی وتووێژ",
-       "action-createaccount": "درووست‌کردنی هەژمارەی ئەم بەکارهێنەرە",
+       "action-createaccount": "دروست کردنی ئەم ھەژماری بەکارھێنەرییە",
        "action-history": "مێژووی ئەم پەڕەیە ببینە",
        "action-minoredit": "نیشان‌کردنی ئەم دەستکاریە وەک بچووک",
        "action-move": "گواستنەوەی ئەم پەڕەیە",
        "watchthisupload": "ئەم پەڕگەیە بخە ژێر چاودێری",
        "filewasdeleted": "پەڕگەیەک بەم ناوە لەم دواییانەدا بارکرا و بە خێرایی سڕایەوە.\nباشتر وایە پێش هەوڵی دووبارە بۆ بارکردن سەرنجی $1 بدەی.",
        "filename-bad-prefix": "دەستپێکی ناوی ئەو پەڕگەی باری دەکەی '''\"$1\"'''، کە ناوێکی ناسێنەر نیە؛ ئەو جۆرە ناوە زۆربەی کات کامێرا دیجیتاڵەکان خۆکار بەکاری‌دەبەن.\nتکایە ناوێک هەڵبژێرە کە زانیاریی زیاتر بدات سەبارەت بە پەڕگەکەت.",
-       "upload-success-subj": "بارکردنی سەرکەوتوو",
-       "upload-success-msg": "بارکردنی [$2] سەرکەوتووانە جێبەجێکرا. لێرە لەبەردەستدایە: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "کێشەی بارکردن",
-       "upload-failure-msg": "کێشەیەک لەگەڵ بارکردنی [$2]دا ھەبوو:\n\n$1",
-       "upload-warning-subj": "ئاگاداریی بارکردن",
        "upload-proto-error": "پرۆتۆکۆڵی هەڵە",
        "upload-proto-error-text": "بۆ بارکردن لە تۆڕ، URL دەبێ بە <code>http://</code>  یان <code>ftp://</code> دەست‌پێ‌بکات.",
        "upload-file-error": "ھەڵەی ناوخۆیی",
        "imagelinks": "بەکارھێنانی پەڕگە",
        "linkstoimage": "لەم {{PLURAL:$1|پەڕەی خوارەوە بەستەر دراوە|$1 پەڕەی خوارەوە بەستەر دراوە}} بۆ ئەم پەڕگە:",
        "linkstoimage-more": "زیاتر لە $1 {{PLURAL:$1|بەستەری لاپەڕە|بەستەری لاپەڕە}} بۆ ئەم پەڕگه.\nئەم لیستە {{PLURAL:$1|یەکەم لاپەڕەی بەستەرە|یەکەم لاپەڕە $1 بەستەرە}} بۆ تەنها یەم پەڕگە.\nهەروا [[Special:WhatLinksHere/$2|لیستی تەواو]] ئامادەی کەڵک وەرگرتنە.",
-       "nolinkstoimage": "‌لاپەڕەیەک نەدۆزرایەوە کە بەستەری هەبێ بۆ ئەم پەڕگە.",
+       "nolinkstoimage": "ھیچ پەڕەیەک نییە کە بەستەری ھەبێت بۆ ئەم پەڕگەیە.",
        "morelinkstoimage": "[[Special:WhatLinksHere/$1|بەستەری زیاتر]] ببینە بۆ ئەم پەڕگە.",
        "linkstoimage-redirect": "$1 (ڕەوانەکەری پەڕگە) $2",
        "duplicatesoffile": "ئەم {{PLURAL:$1|پەڕگە دووبارەکرنەوەیەکی|پەڕگانە دووبارەکردنەوەی}} ئەم پەڕگەن ([[Special:FileDuplicateSearch/$2|وردەکاری زیاتر]]):",
        "unusedtemplatestext": "ئەم پەڕە هەموو پەڕەکانی بۆشاییی ناوی {{ns:template}} بە لیست دەکات کە لە پەڕەی تردا بەکارنەھێنراون.\nلە بیری نەکەی پێش سڕینەوەیان پشکنینی بەستەرەکانی تر بۆ داڕێژەکان بکەی.",
        "unusedtemplateswlh": "بەستەرەکانی تر",
        "randompage": "پەڕەی ھەڕەمەکی",
-       "randompage-nopages": "هیچ لاپەڕەیەک لەم {{PLURAL:$2|ناوبۆشاییەدا|ناوبۆشاییانەدا}} نیە: $1.",
+       "randompage-nopages": "ھیچ پەڕەیەک لە {{PLURAL:$2|بۆشایی ناو|بۆشایی ناوەکان}}ی خوارەوەدا نییە: $1.",
        "randomincategory": "پەڕەیەک بە ھەڵکەوت لە پۆلدا",
        "randomincategory-submit": "بڕۆ",
        "randomredirect": "ڕەوانەکەری ھەڕەمەکی",
        "listgrouprights-rights": "مافەکان",
        "listgrouprights-helppage": "Help:مافەکانی گرووپ",
        "listgrouprights-members": "(پێرستی ئەندامەکان)",
-       "listgrouprights-addgroup": "زیادکردنی {{PLURAL:$2|گرووپ|گرووپ}}: $1",
-       "listgrouprights-removegroup": "لابردنی {{PLURAL:$2|گرووپ|گرووپ}}: $1",
+       "listgrouprights-addgroup": "زیادکردنی {{PLURAL:$2|گرووپی|گرووپەکانی}}: $1",
+       "listgrouprights-removegroup": "لابردنی {{PLURAL:$2|گرووپی|گرووپەکانی}}: $1",
        "listgrouprights-addgroup-all": "زیادکردنی هەموو گرووپەکان",
        "listgrouprights-removegroup-all": "لابردنی هەموو گرووپەکان",
        "listgrouprights-addgroup-self": "زیادکردنی {{PLURAL:$2|گرووپ|گرووپەکان}} بۆ سەر ھەژماری خۆی: $1",
        "wlheader-showupdated": "‏ئەو پەڕانە کە لە پاش دوایین سەردانت دەستکاری کراون بە <strong>ئەستوور</strong> نیشان دراون.",
        "wlnote": "خوارەوە {{PLURAL:$1|دوایین گۆڕانکارییە|دوایین <strong>$1</strong> گۆڕانکارییە}} لە دوایین {{PLURAL:$2|کاتژمێر|<strong>$2</strong> کاتژمێر}}دا ھەتا $4ی $3.",
        "wlshowlast": "دوایین $1 کاتژمێری $2 ڕۆژ نیشان بدە",
-       "watchlistall2": "ھەموو",
        "watchlist-options": "ھەڵبژاردەکانی لیستی چاودێری",
        "watching": "چاودێری...",
        "unwatching": "لابردنی چاودێری...",
        "deletereason-dropdown": "* ھۆکارە باوەکانی سڕینەوە\n** سپام\n** خراپکاری\n** پێشێلکردنی مافی لەبەرگرتنەوە\n** داخوازی دانەر\n** ڕەوانەکەری شکاو",
        "delete-edit-reasonlist": "دەستکاری کردنی ھۆکارەکانی سڕینەوە",
        "delete-toobig": "ئەم لاپەڕە مێژوویەکی دەستکاری زۆر گەورەی هەیە، زیاتر لە $1 {{PLURAL:$1|پێداچوونەوە|پێداچوونەوە}}.\nبۆ بەرگری لە خراپ‌بوونی چاوەڕوان نەکراوی {{SITENAME}}، سڕینەوەی لاپەڕەی وا بەربەست‌کراوە.",
-       "delete-warning-toobig": "ئÛ\95Ù\85 Ù\84اپÛ\95Ú\95Û\95 Ù\85Û\8eÚ\98Ù\88Ù\88Û\8cÛ\95Ú©Û\8c Ø¯Û\95ستکارÛ\8c Ø²Û\86ر Ú¯Û\95Ù\88رÛ\95Û\8c Ù\87Û\95Û\8cÛ\95Ø\8c Ø²Û\8cاتر Ù\84Û\95 $1 {{PLURAL:$1|Ù¾Û\8eداÚ\86Ù\88Ù\88Ù\86Û\95Ù\88Û\95|Ù¾Û\8eداÚ\86Ù\88Ù\88Ù\86Û\95Ù\88Û\95}}.\nسÚ\95Û\8cÙ\86Û\95Ù\88Û\8c Ø¦Û\95Ù\88Û\95 Ù\84Û\95 Ù\88اÙ\86Û\95Û\8cÛ\95 Ú©Ø§Ø±Û\95کاÙ\86Û\8c Ø¨Ù\86Ú©Û\95دراÙ\88Û\8c {{SITENAME}} ØªÙ\88Ù\88Ø´Û\8c Ú©Û\8eØ´Û\95 Ø¨Ú©Ø§ØªØ\9b\nدÙ\88Ù\88رÙ\86Ù\88اÚ\95اÙ\86Û\95 Ø¬Û\8eâ\80\8cبÛ\95جÛ\8eÛ\8c Ø¨Ú©ە.",
+       "delete-warning-toobig": "ئÛ\95Ù\85 Ù¾Û\95Ú\95Û\95Û\8cÛ\95 Ù\85Û\8eÚ\98Ù\88Ù\88Û\8cÛ\95Ú©Û\8c Ø¯Û\95ستکارÛ\8cÛ\8c Ø²Û\86ر Ú¯Û\95Ù\88رÛ\95Û\8c Ú¾Û\95Û\8cÛ\95Ø\8c Ø²Û\86رتر Ù\84Û\95 $1 {{PLURAL:$1|Ù¾Û\8eداÚ\86Ù\88Ù\88Ù\86Û\95Ù\88Û\95}}.\nسÚ\95Û\8cÙ\86Û\95Ù\88Û\95Û\8c Ø¦Û\95Ù\88 Ù¾Û\95Ú\95Û\95Û\8cÛ\95 Ù\84Û\95Ù\88اÙ\86Û\95Û\8c Ú©Ø§Ø±Û\95کاÙ\86Û\8c Ø¨Ù\86Ú©Û\95دراÙ\88Û\95Û\8c {{SITENAME}} ØªÙ\88Ù\88Ø´Û\8c Ú©Û\8eØ´Û\95 Ø¨Ú©Ø§ØªØ\9b\nبÛ\95 Ø³Û\95رÙ\86جÛ\95Ù\88Û\95 Ø¨Ú\86Û\86 Ù¾Û\8eØ´Û\95Ù\88ە.",
        "deleting-backlinks-warning": "'''ھۆشدار:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|پەڕەکانی تر]] بەم پەڕەیەی دەتەوێ بیسڕییەوە بەستەر دراوە.",
        "rollback": "گەڕاندنەوەی دەستکارییەکان",
        "rollbacklink": "گەڕاندنەوە",
        "cannotundelete": "ھێنانەوە سەرکەوتوو نەبوو:\n$1",
        "undeletedpage": "'''$1 هێنراوەتەوە'''\n\nبۆ دیتنی پێشینەی دوایین سڕینەوەکان و هێنانەوەکان سەرنجی [[Special:Log/delete|لۆگی سڕینەوە]] بدە.",
        "undelete-header": "بۆ دیتنی ئەو لاپەڕانەی لەم داییانەدا سڕاونەتەوە چاو لە [[Special:Log/delete|لۆگی سڕینەوە]] بکە.",
-       "undelete-search-title": "Ú¯Û\95Ú\95اÙ\86 Ø¨Û\86 Ù\84اپÛ\95Ú\95Û\95 Ø³Ú\95اوەکان",
-       "undelete-search-box": "Ú¯Û\95Ú\95اÙ\86 Ø¨Û\86 Ù\84اپÛ\95Ú\95Û\95 Ø³Ú\95اوەکان",
+       "undelete-search-title": "Ú¯Û\95Ú\95اÙ\86 Ø¨Û\86 Ù¾Û\95Ú\95Û\95 Ø³Ú\95راوەکان",
+       "undelete-search-box": "Ú¯Û\95Ú\95اÙ\86 Ø¨Û\86 Ù¾Û\95Ú\95Û\95 Ø³Ú\95راوەکان",
        "undelete-search-prefix": "نیشان‌دانی ئەو لاپەڕانەی دەستپێکیان ئەمەیە:",
        "undelete-search-submit": "گەڕان",
        "undelete-no-results": "لە ئەرشیڤی سڕاوەکانی لاپەڕەیەکی هاوتا نەدۆزرایەوە.",
        "sp-contributions-uploads": "بارکردنەکان",
        "sp-contributions-logs": "لۆگەکان",
        "sp-contributions-talk": "لێدوان",
-       "sp-contributions-userrights": "بەڕێوبەرایەتی مافەکانی بەکارهێنەر",
+       "sp-contributions-userrights": "بەڕێوەبەرایەتیی مافە بەکارهێنەرییەکان",
        "sp-contributions-blocked-notice": "ھەنووکە ئەم بەکارھێنەرە بەربەست کراوە.\nدوایین بابەتی لۆگی بەربەستن لە ژێرەوە ھاتووە:",
        "sp-contributions-blocked-notice-anon": "ھەنووکە ئەم ناونیشانەی IPیە بەربەست کراوە.\nدوایین بابەتی لۆگی بەربەستن لە ژێرەوە ھاتووە:",
        "sp-contributions-search": "گەڕان بۆ بەشدارییەکان",
        "whatlinkshere-title": "ئەو پەڕانەی بەستەریان ھەیە بۆ «$1»",
        "whatlinkshere-page": "پەڕە:",
        "linkshere": "پەڕەکانی ژێرەوە بەستەر دراون بۆ <strong>[[:$1]]</strong>:",
-       "nolinkshere": "هیچ لاپەڕەیەک بەستەری نەداوە بە '''[[:$1]]'''.",
-       "nolinkshere-ns": "هیچ لاپەڕەیەک بەستەری نەداوە بە '''[[:$1]]''' لە بۆشایی‌ناوی هەڵبژێردراو.",
+       "nolinkshere": "ھیچ پەڕەیەک بەستەری نییە بۆ <strong>[[:$1]]</strong>.",
+       "nolinkshere-ns": "ھیچ پەڕەیەک بەستەری نییە بۆ <strong>[[:$1]]</strong> لە بۆشایی ناوی هەڵبژێرراودا.",
        "isredirect": "پەڕەی ڕەوانەکەر",
        "istemplate": "بەکارھێنراو",
        "isimage": "بەستەری پەڕگە",
        "ipbsubmit": "بەربەستکردنی ئەم بەکارھێنەرە",
        "ipbother": "کاتی‌ دیکە:",
        "ipboptions": "٢ کاتژمێر:2 hours,١ ڕۆژ:1 day,٣ ڕۆژ:3 days,١ ھەفتە:1 week,٢ ھەفتە:2 weeks,١ مانگ:1 month,٣ مانگ:3 months,٦ مانگ:6 months,١ ساڵ:1 year,بێ‌سنوور:infinite",
-       "ipbhidename": "شاردنەوەی ناوی‌ بەکارهێنەر لە دەستکاری و لیستەکان",
+       "ipbhidename": "ناوی‌ بەکارھێنەر لە دەستکارییەکان و لیستەکاندا بشارەوە",
        "ipbwatchuser": "پەڕەکانی بەکارھێنەر و لێدوانی ئەم بەکارهێنەرە بخە ژێر چاودێری",
        "ipb-disableusertalk": "بەرگری ئەم بەکارھێنەرە بکە لە دستکاریکردنی پەڕەی لێدوانەکەی کاتێک بەربەست کراوە",
        "ipb-change-block": "دیسان بەربەست‌کردنەوەی ئەم بەکارهێنەرە بەم هەڵبژاردانە",
        "movenotallowed": "ڕێگەت پێ‌نەدراوە بۆ گواستنەوەی لاپەڕەکان.",
        "movenotallowedfile": "ڕێگەت پێ‌نەدراوە بۆ گواستنەوەی پەڕگەکان.",
        "cant-move-user-page": "ڕێگەت پێ‌نەدراوە بۆ گواستنەوەی لاپەڕەکانی بەکارهێنەر (جیاواز لە ژێرلاپەڕەکان).",
-       "cant-move-to-user-page": "ڕێگەت پێ‌نەدراوە بۆ گواستنەوەی لاپەڕەیەک بۆ لاپەڕەی بەکارهێنەر (غەیری بۆ ژێرلاپەڕەی بەکارهێنەر).",
+       "cant-move-to-user-page": "مافی ئەوەت نییە کە پەڕەیەک بگوێزیتەوە بۆ پەڕەیەکی بەکارھێنەری (بەڵام بۆ ژێرپەڕەیەکی بەکارھێنەری دەتوانیت).",
        "newtitle": "بۆ ناوی نوێی:",
        "move-watch": "پەڕەی سەرچاوە و مەبەست بخە ژێر چاودێری",
        "movepagebtn": "ئەم پەڕەیە بگوازەوە",
        "movepage-moved-redirect": "ڕەوانەکەرێک دروست کرا.",
        "movepage-moved-noredirect": "لە دانانی ڕەوانەکەر بەرگری کرا.",
        "articleexists": "پەڕەیەک بەم ناوە ھەیە یان ئەو ناوەی تۆ ھەڵتبژاردووە ڕێگەی پێنەدراوە.\nتکایە ناوێکی دیکە ھەڵبژێرە.",
-       "cantmove-titleprotected": "ناتوانی لاپەڕەیەک بگوێزیتەوە بۆ ئەم شوێنە، لەبەر ئەوەی سەردێڕی نوێ لە درووست‌کردن پارێزراوە.",
+       "cantmove-titleprotected": "ناتوانیت پەڕەیەک بگوێزیتەوە بۆ ئەم شوێنە، چونکە سەرناوە نوێیەکە پارێزراوە لە درووست کردن.",
        "movetalk": "پەڕەی لێدوانی پەیوەندیدار بگوازەوە",
        "move-subpages": "ژێرپەڕەکانی بگوازەوە (ھەتا $1 پەڕە)",
        "move-talk-subpages": "ژێرپەڕەکانی پەڕەی لێدوان بگوازەوە (ھەتا $1 پەڕە)",
        "delete_and_move_text": "== پێویستییەکانی سڕینەوە ==\nلاپەڕەی مەبەست \"[[:$1]]\" لە پێش‌دا هەیە.\nئایا دەتەوێ ئەوە بسڕیتەوە تا ڕێگە بۆ گواستنەوەی بکەیتەوە؟",
        "delete_and_move_confirm": "بەڵێ، پەڕەکە بسڕەوه",
        "delete_and_move_reason": "سڕایەوە بۆ کردنەوەی ڕیگە بۆ گواستنەوە لە «[[$1]]»ەوە",
-       "selfmove": "سەردێڕەکانی سەرچاوە و مەبەست یەکێکن؛\nناکرێ لاپەڕەیەک بۆ سەر خۆی‌ بگوازرێتەوە.",
+       "selfmove": "سەرناوی سەرچاوە و مەبەست یەکێکن؛\nناکرێت پەڕەیەک بۆ سەر خۆی‌ بگوازرێتەوە.",
        "immobile-source-namespace": "پەڕەکان لە بۆشاییی ناوی \"$1\"دا ناگوێزرێنەوە.",
        "immobile-target-namespace": "گواستنەوەی لاپەڕە بۆناو بۆشایی‌ناو \"$1\" ناکرێت.",
        "immobile-target-namespace-iw": "بەستەرێکی نێوان‌ویکی ئامانجێکی گونجاو نیە بۆ گواستنەوەی لاپەڕە.",
        "protectedpagemovewarning": "'''ھۆشیار بە: ئەم پەڕە پارێزراوە بۆ ئەوی تەنیا ئەو بەکارھێنەرانە کە مافەکانی بەڕێوەبەرایەتییان ھەیە بتوانن بیگوازنەوە.'''\nدوایین لۆگ بۆ ژێدەر لە خوارەوەدا ھاتووە:",
        "semiprotectedpagemovewarning": "'''ئاگاداری:''' ئەم پەڕە پارێزراوە بۆ ئەوی تەنھا بەکارھێنەرە تۆمارکراوەکان بتوانن بیگوازنەوە.\nدوایین لۆگ بۆ ژێدەر لە خوارەوەدا ھاتووە:",
        "export": "ھەناردنی پەڕەکان",
-       "exporttext": "دەتوانی دەق و مێژووی دەستکاری لاپەڕەیەکی تایبەت یان دەستە لاپەڕەیەک بۆ ناو پەڕگەیەکی XML هەناردن بکەیت.\nدواتر بە کەڵک‌وەرگرتن لە [[Special:Import|لاپەڕەی هێنانەناوە]] لە مێدیاویکی‌دا، دەتوانی بیهێنیتە ناو ویکی‌یەکانی دیکە.\n\nبۆ هەناردنی لاپەڕەکان، سەردێڕەکان لە چوارچێوەی دەقی خوارەوە بنووسە، هەر هێڵێک یەک سەردێڕ. هەروا هەڵبژێرە ئایا پێداچوونەوەی ئێستا و هەموو پێداچوونەوە کۆنەکانت دەوێ یان هەر پێداچوونەوەی ئێستا و زانیاریی سەبارەت بە دوایین دەستکاری.\n\nلە بابەتی دواتر هەروەها دەتوانی لە بەستەرێک کەڵک وەرگریت، بۆ نموونە [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] بۆ لەپەڕەی \"[[{{MediaWiki:Mainpage}}]]\".",
+       "exporttext": "دەتوانیت دەق و مێژووی دەستکاریی پەڕەیەکی دەستنیشان کراو یان کۆمەڵێک پەڕە کە ناو پەڕگەیەکی XML دا پێچراونەتەوە، هەناردە بکەیت.\nدەکرێت ئەمە لە ویکییەکی دیکەدا ھاوردە بکرێت بە کەڵک وەرگرتن لە  ئامرازی [[Special:Import|ھاوردە کردنی پەڕە]]ی MediaWiki.\n\nبۆ هەناردە کردنی پەڕەکان، سەرناوەکانیان لە چوارچێوەی خوارەوەدا بنووسە، هەر سەرناوێک لە هێڵێکدا. و هەڵبژێرە کە پێداچوونەوەی ئێستا و ھەموو پێداچوونەوە کۆنەکانت دەوێت یان تەنھا پێداچوونەوەی ئێستا و زانیاریی سەبارەت بە دوایین دەستکاری.\n\nئەگەر تەنھا پێداچوونەوەی ئێستات دەوێت، دەتوانیت بەستەرێکیش بە کار بھێنیت، بۆ نموونە [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] بۆ پەڕەی «[[{{MediaWiki:Mainpage}}]]».",
        "exportall": "ھەموو پەڕەکان ھەناردە بکە",
        "exportcuronly": "تەنها پێداچوونەوەی ئێستا لەخۆ بگرێت نەک هەموو مێژوو",
        "exportnohistory": "----\n'''ئاگاداربە: '''ھەناردنی ھەموو مێژووی پەڕەکان لەم فۆرمەوە لەبەر ھۆکاری ڕێخستن، داخراوە.",
        "tooltip-watch": "ئەم پەڕە بخە سەر لیستی چاودێریت",
        "tooltip-watchlistedit-normal-submit": "ناونیشانەکان لاببە",
        "tooltip-watchlistedit-raw-submit": "نوێکردنەوەی لیستی چاودێری",
-       "tooltip-recreate": "درووست‌کردنەوەی لاپەڕە ئەگەرچی سڕاوەتەوە",
+       "tooltip-recreate": "پەڕەکە دروست‌ بکەرەوە ئەگەرچی سڕراوەتەوە",
        "tooltip-upload": "دەستپێکردنی بارکردن",
        "tooltip-rollback": "«گەڕاندنەوە» بە یەک کرتە گۆڕانکاریی/گۆڕانکارییەکانی ئەم پەڕەیە دەگەڕێنێتەوە بۆ دوایین بەشداربوو",
        "tooltip-undo": "«پووچەڵکردنەوە» ئەم گۆڕانکارییە دەگەڕێنێتەوە و فۆرمی دەستکاریکردن لە شێوەی پێشبینیندا دەکاتەوە. بەم جۆرە دەکرێ ھۆکارێک لە کورتەی دەستکاریدا بنووسرێ.",
        "tooltip-preferences-save": "هەڵبژاردنەکانت بپارێزە",
        "tooltip-summary": "پوختەیەکی کورتی تێبخە",
-       "anonymous": "{{PLURAL:$1|بەکارهێنەری|بەکارهێنەرانی}} نەناسراوی {{SITENAME}}",
+       "anonymous": "{{PLURAL:$1|بەکارھێنەری نەناسراوی|بەکارھێنەرە نەناسراوەکانی}} {{SITENAME}}",
        "siteuser": "بەکارھێنەری {{SITENAME}}، $1",
        "anonuser": "$1، بەکارھێنەری نامۆی {{SITENAME}}",
        "lastmodifiedatby": "ئەم پەڕە دواجار لە $2ی $1 بە دەستی $3 گۆڕدراوە.",
        "othercontribs": "لەسەر بنەمای کاری $1.",
        "others": "ئەوانی دیکە",
-       "siteusers": "{{PLURAL:$2|بەکارهێنەری|بەکارهێنەرانی}} {{SITENAME}} $1",
+       "siteusers": "{{PLURAL:$2|بەکارھێنەری|بەکارھێنەرانی}} {{SITENAME}} $1",
        "anonusers": "{{PLURAL:$2|بەکارھێنەر|بەکارھێنەر}}ی نامۆی {{SITENAME}} $1",
        "creditspage": "بایەخەکانی لاپەڕە",
        "nocredits": "هیچ زانیارییەکی بایەخ لەبەردەست‌دا نیە بۆ ئەم لاپەڕە.",
        "exif-colorspace": "بۆشایی ره‌نگ",
        "exif-pixelydimension": "پانی وێنە",
        "exif-pixelxdimension": "بەرزی وێنە",
-       "exif-usercomment": "بۆچوونەکانی بەکارهێنەر",
+       "exif-usercomment": "بۆچوونەکانی بەکارھێنەر",
        "exif-relatedsoundfile": "فایلی ده‌نگی لێکچوو",
        "exif-datetimeoriginal": "ڕێکەوت و کاتی بەرھەمھێنانی داتا",
        "exif-datetimedigitized": "ڕێکەوت و کاتی بە دیجیتاڵی کردن",
index 3e3ab4d..eae4dfd 100644 (file)
        "changeemail-newemail": "Nová e-mailová adresa:",
        "changeemail-newemail-help": "Toto pole by mělo zůstat prázdné, pokud chcete odstranit svou e-mailovou adresu. Pokud bude e-mailová adresa odstraněná, nebudete si moct obnovit zapomenuté heslo a přijímat e-maily z této wiki.",
        "changeemail-none": "(žádná)",
-       "changeemail-password": "Vaše heslo do {{gender:2sg|{{SITENAME}}}}:",
+       "changeemail-password": "{{GENDER:|Vaše heslo}} do {{GRAMMAR:2sg|{{SITENAME}}}}:",
        "changeemail-submit": "Změnit e-mail",
        "changeemail-throttled": "Provedli jste příliš mnoho pokusů o přihlášení.\nČekejte prosím $1 a zkuste to znovu.",
        "changeemail-nochange": "Zadejte prosím odlišnou e-mailovou adresu.",
        "uploaded-script-svg": "V načteném SVG souboru byl nalezen skriptovatelný element „$1“.",
        "uploaded-hostile-svg": "V načteném SVG souboru bylo v elementu se styly nalezeno nebezpečné CSS.",
        "uploaded-event-handler-on-svg": "Nastavování atributů pro obsluhu událostí <code>$1=\"$2\"</code> není v SVG souborech dovoleno.",
-       "uploaded-href-attribute-svg": "Atributy href <code>&lt;$1 $2=\"$3\"&gt;</code> s nelokálním cílem (např. http://, javascript: apod.) nejsou v SVG souborech dovoleny.",
        "uploaded-href-unsafe-target-svg": "V načteném SVG souboru byl nalezen href s nebezpečným cílem <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploaded-animate-svg": "V načteném SVG souboru byla nalezena značka „animate“, která by mohla měnit href, s atributem „from“ <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploaded-setting-event-handler-svg": "Nastavování atributů pro obsluhu událostí je zablokováno, v načteném SVG souboru bylo nalezeno <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "filename-thumb-name": "Tohle vypadá jako název souboru s náhledem obrázku. Nenačítejte prosím náhledy zpět na stejnou wiki. Případně opravte název, aby byl smysluplnější a neobsahoval prefix jako náhledy.",
        "filename-bad-prefix": "Jméno souboru, který načítáte, začíná na '''„$1“''', což je nevhodné jméno, obvykle automaticky přiřazované digitálním fotoaparátem. Zvolte jméno, které váš soubor popíše lépe.",
        "filename-prefix-blacklist": " #<!-- tuto řádku ponechte beze změny --> <pre>\n# Používá se následující syntaxe:\n#   * Cokoli od znaku „#“ až do konce řádky je komentář\n#   * Každá neprázdná řádka je prefix typických jmen souborů automaticky generovaných digitálními fotoaparáty\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # některé mobilní telefony\nIMG # obecné\nJD # Jenoptik\nMGP # Pentax\nPICT # různé\n #</pre> <!-- tuto řádku ponechte beze změny -->",
-       "upload-success-subj": "Načtení úspěšně provedeno!",
-       "upload-success-msg": "Soubor vámi načtený z [$2] je dostupný na [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Problém s načítaným souborem",
-       "upload-failure-msg": "U souboru vámi načítaného z [$2] se vyskytl problém:\n\n$1",
-       "upload-warning-subj": "Upozornění k načítání",
-       "upload-warning-msg": "Při vašem načítání souboru z [$2] nastal problém. Pokud ho chcete vyřešit, můžete se vrátit do [[Special:Upload/stash/$1|načítacího formuláře]].",
        "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",
        "backend-fail-connect": "Nepodařilo se připojit ke koncovému úložnému systému „$1“.",
        "backend-fail-internal": "V koncovém úložném systému „$1“ došlo k neznámé chybě.",
        "backend-fail-contenttype": "Nelze určit typ obsahu souboru k uložení do „$1“.",
-       "backend-fail-batchsize": "Koncový úložný systém přijal dávku s $1 {{PLURAL:souborovou operací|souborovými operacemi}}; maximum je {{PLURAL:$2|$2}}.",
+       "backend-fail-batchsize": "Koncový úložný systém přijal dávku s $1 {{PLURAL:$1|souborovou operací|souborovými operacemi}}; limit je {{PLURAL:$2|jedna operace|$2 operace|$2 operací}}.",
        "backend-fail-usable": "Nepodařilo se zapsat do souboru „$1“ kvůli nedostatečným oprávněním nebo chybějícím adresářům/kontejnerům.",
        "filejournal-fail-dbconnect": "Nelze se připojit k žurnálové databázi pro koncový úložný systém „$1“.",
        "filejournal-fail-dbquery": "Nepodařilo se aktualizovat žurnálovou databázi pro koncový úložný systém „$1“.",
        "wlheader-showupdated": "Stránky, které se změnily od vaší poslední návštěvy, jsou zobrazeny '''tučně'''.",
        "wlnote": "Níže {{PLURAL:$1|je poslední změna|jsou poslední <strong>$1</strong> změny|je posledních <strong>$1</strong> změn}} za {{PLURAL:$2|poslední hodinu|poslední <strong>$2</strong> hodiny|posledních <strong>$2</strong> hodin}} do $4, $3.",
        "wlshowlast": "Ukázat posledních $1 hodin $2 dnů",
-       "watchlistall2": "všechno",
        "watchlist-hide": "Skrýt",
        "watchlist-submit": "Zobrazit",
        "wlshowtime": "Zobrazené období:",
        "lockedbyandtime": "({{gender:$1|zamkl|zamkla|zamkl}} $1 $2 v $3)",
        "move-page": "Přesunout „$1“",
        "move-page-legend": "Přesunout stránku",
-       "movepagetext": "Použitím tohoto formuláře změníte název stránky a přesunete i celou její historii na nový název.\nPůvodní název se stane přesměrováním na nový název.\nPřesměrování na původní název můžete nechat aktualizovat automaticky.\nPokud nenecháte, nezapomeňte poté zkontrolovat [[Special:DoubleRedirects|dvojitá]] nebo [[Special:BrokenRedirects|přerušená]] přesměrování.\nJe vaší zodpovědností zajistit, aby odkazy stále vedly tam, kam mají.\n\nStránku '''není možno''' přejmenovat, pokud pod cílovým názvem již nějaká stránka existuje, s výjimkou situace, kdy je cílová stránka přesměrováním na tuto stránku a nemá žádnou historii editací.\nTo znamená, že stránku můžete přesunout zpět na původní název, pokud uděláte chybu, a že nemůžete přepsat existující stránku.\n\n'''Upozornění!'''\nPřejmenování oblíbené stránky může být drastická a nečekaná změna;\npředtím, než změnu provedete, se ujistěte, že chápete důsledky svého kroku.",
-       "movepagetext-noredirectfixer": "Použitím tohoto formuláře změníte název stránky a přesunete i celou její historii na nový název.\nPůvodní název se stane přesměrováním na nový název.\nNezapomeňte poté zkontrolovat [[Special:DoubleRedirects|dvojitá]] nebo [[Special:BrokenRedirects|přerušená]] přesměrování.\nJe vaší zodpovědností zajistit, aby odkazy stále vedly tam, kam mají.\n\nStránku '''není možno''' přejmenovat, pokud pod cílovým názvem již nějaká stránka existuje, s výjimkou situace, kdy je cílová stránka prázdná nebo je přesměrováním na tuto stránku a nemá žádnou historii editací.\nTo znamená, že stránku můžete přesunout zpět na původní název, pokud uděláte chybu, a že nemůžete přepsat existující stránku.\n\n'''Upozornění!'''\nPřejmenování oblíbené stránky může být drastická a nečekaná změna; předtím, než změnu provedete, se prosím ujistěte, že chápete důsledky svého kroku.",
+       "movepagetext": "Použitím tohoto formuláře změníte název stránky a přesunete i celou její historii na nový název.\nPůvodní název se stane přesměrováním na nový název.\nPřesměrování na původní název můžete nechat aktualizovat automaticky.\nPokud nenecháte, nezapomeňte poté zkontrolovat [[Special:DoubleRedirects|dvojitá]] nebo [[Special:BrokenRedirects|přerušená]] přesměrování.\nJe vaší zodpovědností zajistit, aby odkazy stále vedly tam, kam mají.\n\nStránku <strong>není možné</strong> přejmenovat, pokud pod cílovým názvem již nějaká stránka existuje, s výjimkou situace, kdy je cílová stránka přesměrováním na tuto stránku a nemá žádnou historii editací.\nTo znamená, že stránku můžete přesunout zpět na původní název, pokud uděláte chybu, a že nemůžete přepsat existující stránku.\n\n<strong>Poznámka:</strong>\nPřejmenování oblíbené stránky může být drastická a nečekaná změna;\npředtím, než změnu provedete, se ujistěte, že chápete důsledky svého kroku.",
+       "movepagetext-noredirectfixer": "Použitím tohoto formuláře změníte název stránky a přesunete i celou její historii na nový název.\nPůvodní název se stane přesměrováním na nový název.\nNezapomeňte poté zkontrolovat [[Special:DoubleRedirects|dvojitá]] nebo [[Special:BrokenRedirects|přerušená]] přesměrování.\nJe vaší zodpovědností zajistit, aby odkazy stále vedly tam, kam mají.\n\nStránku <strong>není možno</strong> přejmenovat, pokud pod cílovým názvem již nějaká stránka existuje, s výjimkou situace, kdy je cílová stránka prázdná nebo je přesměrováním na tuto stránku a nemá žádnou historii editací.\nTo znamená, že stránku můžete přesunout zpět na původní název, pokud uděláte chybu, a že nemůžete přepsat existující stránku.\n\n<strong>Poznámka:</strong>\nPřejmenování oblíbené stránky může být drastická a nečekaná změna; předtím, než změnu provedete, se prosím ujistěte, že chápete důsledky svého kroku.",
        "movepagetalktext": "Pokud zaškrtnete toto pole, přidružená diskusní stránka bude automaticky přesunuta na nový název, leda by tam již neprázdná diskusní stránka existovala.\n\nV takovém případě musíte stránky přesunout nebo sloučit ručně, přejete-li si to.",
        "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.",
        "movecategorypage-warning": "<strong>Upozornění:</strong> Chystáte se přesunout stránku kategorie. Uvědomte si, že bude přesunuta pouze tato stránka a že žádné stránky v původní kategorii <em>nebudou</em> do nové překategorizovány.",
        "movenosubpage": "Tato stránka nemá žádné podstránky.",
        "movereason": "Důvod:",
        "revertmove": "vrátit",
-       "delete_and_move_text": "==Je potřeba smazání==\n\nCílová stránka „[[:$1]]“ již existuje. Přejete si ji smazat pro uvolnění místa pro přesun?",
+       "delete_and_move_text": "Cílová stránka „[[:$1]]“ již existuje.\nPřejete si ji smazat pro uvolnění místa pro přesun?",
        "delete_and_move_confirm": "Ano, smazat cílovou stránku",
        "delete_and_move_reason": "Smazáno pro umožnění přesunu z „[[$1]]“",
        "selfmove": "Původní a nový název jsou stejné; nelze stránku přesunout na sebe samu.",
        "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.\nNíž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é.\nNíže je pro přehled zobrazen nejnovější protokolovací záznam:",
-       "move-over-sharedrepo": "== Soubor existuje ==\n[[:$1]] existuje ve sdíleném úložišti. Přesun souboru na tento název způsobí potlačení sdíleného souboru.",
+       "move-over-sharedrepo": "[[:$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.\nProsíme, vyberte jiné jméno.",
        "export": "Exportovat stránky",
        "exporttext": "Můžete exportovat text a historii editací některé stránky nebo sady stránek zabalené v XML. Výsledný soubor lze naimportovat do jiné wiki, která běží na software MediaWiki, pomocí [[Special:Import|importovací stránky]].\n\nDo níže uvedeného editačního pole zadejte názvy stránek, které chcete exportovat; každý řádek jeden název. Zvolte také, zda se mají exportovat i starší verze stránky včetně informací v historii editací, nebo jen aktuální verze s informací o poslední editaci.\n\nV druhém případě můžete také používat přímý odkaz, např. pomocí [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] se vyexportuje „[[{{MediaWiki:Mainpage}}]]“.",
        "action-pagelang": "měnit jazyk stránky",
        "log-name-pagelang": "Kniha změn jazyků",
        "log-description-pagelang": "Toto je protokol změn jazyků stránek.",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|změnil|změnila}} jazyk stránky $3 z $4 na $5.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|změnil|změnila}} jazyk stránky $3 z $4 na $5",
        "default-skin-not-found": "Jejda! Výchozí vzhled vaší wiki, definovaný ve <code dir=\"ltr\">$wgDefaultSkin</code> jako <code>$1</code>, není dostupný.\n\nVaše instalace zřejmě obsahuje následující {{PLURAL:$4|vzhled|vzhledy}}. Informace o tom, jak {{PLURAL:$4|jej|je}} povolit a vybrat výchozí, najdete na stránce [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Skin_configuration/cs Manual:Skin configuration].\n\n$2\n\n; Pokud jste právě nainstalovali MediaWiki:\n: Zřejmě jste instalovali z gitu nebo nějakým jiným způsobem přímo ze zdrojového kódu. Tak to má fungovat. Zkuste nainstalovat některé vzhledy ze [https://www.mediawiki.org/wiki/Category:All_skins seznamu vzhledů na mediawiki.org] buď:\n:* Můžete si stáhnout [https://www.mediawiki.org/wiki/Download/cs instalaci v tarballu], která zahrnuje několik vzhledů a rozšíření, a vykopírovat si z ní adresář <code dir=\"ltr\">skins/</code>.\n:* Nebo si můžete stáhnout tarbally jednotlivých vzhledů z [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* Nebo si můžete [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins vzhledy stáhnout pomocí Gitu].\n: Pokud jste vývojářem MediaWiki, nemělo by to nijak narušit váš gitový repozitář.\n\n; Pokud jste právě aktualizovali MediaWiki:\n: MediaWiki 1.24 a novější již automaticky nepovolují nainstalované vzhledy (vizte [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Skin_autodiscovery/cs Manual:Skin autodiscovery]). Pro povolení {{PLURAL:$5|právě nainstalovaného vzhledu|všech nainstalovaných vzhledů}} vlepte následující {{PLURAL:$5|řádku|řádky}} do <code>LocalSettings.php</code>:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Pokud jste právě upravili <code>LocalSettings.php</code>:\n: Překontrolujte případné překlepy v názvech vzhledů.",
        "default-skin-not-found-no-skins": "Jejda! Výchozí vzhled vaší wiki, definovaný ve <code dir=\"ltr\">$wgDefaultSkin</code> jako <code>$1</code>, není dostupný.\n\nNemáte nainstalovány žádné vzhledy.\n\n; Pokud jste právě nainstalovali nebo aktualizovali MediaWiki:\n: Zřejmě jste instalovali z gitu nebo nějakým jiným způsobem přímo ze zdrojového kódu. Tak to má fungovat. MediaWiki 1.24 a novější již v hlavním repozitáři neobsahují žádné vzhledy. Zkuste nainstalovat některé vzhledy ze [https://www.mediawiki.org/wiki/Category:All_skins seznamu vzhledů na mediawiki.org] buď:\n:* Můžete si stáhnout [https://www.mediawiki.org/wiki/Download/cs instalaci v tarballu], která zahrnuje několik vzhledů a rozšíření, a vykopírovat si z ní adresář <code>skins/</code>.\n:* Nebo si můžete stáhnout tarbally jednotlivých vzhledů z [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* Nebo si můžete [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins vzhledy stáhnout pomocí Gitu].\n: Pokud jste vývojářem MediaWiki, nemělo by to nijak narušit váš gitový repozitář. Informace o tom, jak povolit vzhledy a vybrat výchozí, najdete na stránce [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Skin_configuration/cs Manual:Skin configuration].",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (povolený)",
index 3e1bdb3..145a9bc 100644 (file)
        "jumptonavigation": "плаваниѥ",
        "jumptosearch": "исканиѥ",
        "pool-errorunknown": "нєвѣдома блаꙁна",
-       "aboutsite": "О {{grammar:instrumental|{{SITENAME}}}}",
+       "aboutsite": "{{grammar:genitive|{{SITENAME}}}} опьсаниѥ",
        "aboutpage": "Project:О сѥмь опꙑтьствовании",
        "copyright": "подъ прощєниѥмь $1 пьсано ѥстъ · ащє ино нє каꙁано ѥстъ",
        "copyrightpage": "{{ns:project}}:Творьцъ права",
        "upload-source": "источьно дѣло",
        "sourcefilename": "источьна дѣла имꙗ :",
        "watchthisupload": "си дѣла блюдєниѥ",
-       "upload-success-subj": "дѣло положєно ѥстъ",
        "upload-dialog-button-cancel": "отъмѣтаниѥ",
        "license": "прощєниѥ :",
        "license-header": "прощєниѥ",
        "nlinks": "$1 {{PLURAL:$1|съвѧꙁь|съвѧꙁи|съвѧꙁии}}",
        "nmembers": "$1 {{PLURAL:$1|члѣнъ|члѣна|члѣни|члѣнъ}}",
        "shortpages": "кратъкꙑ страницѧ",
+       "protectedpages-reason": "какъ съмꙑслъ",
        "listusers": "польꙃєватєлъ каталогъ",
        "usereditcount": "$1 {{PLURAL:$1|мѣна|мѣнꙑ|мѣнъ}}",
        "usercreated": "{{GENDER:$3|сътворилъ|сътворила}} мѣсто $1 въ $2",
        "watch": "блюдєниѥ",
        "watchthispage": "си страницѧ блюдєниѥ",
        "unwatch": "остави блюдєниѥ",
-       "watchlistall2": "вьсꙗ",
        "watchlist-options": "блюдєниѩ строи",
        "watching": "блюдєниѥ ...",
        "unwatching": "оставьлєниѥ блюдєниꙗ ...",
        "fileduplicatesearch-submit": "ищи",
        "specialpages": "нарочьнꙑ страницѧ",
        "tag-filter": "[[Special:Tags|мѣтъць]] сито :",
+       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|мѣтъка|мѣтъцѣ|мѣтъци}}]]: $2)",
+       "tags-active-yes": "да",
+       "tags-active-no": "нѣтъ",
        "tags-edit": "исправи",
+       "tags-hitcount": "$1 {{PLURAL:$1|мѣна|мѣноу|мѣнъ}}",
+       "tags-create-reason": "какъ съмꙑслъ :",
+       "tags-create-submit": "сътворѥниѥ",
+       "tags-delete-reason": "какъ съмꙑслъ :",
+       "tags-activate-reason": "какъ съмꙑслъ :",
+       "tags-deactivate-reason": "какъ съмꙑслъ :",
        "htmlform-no": "нѣтъ",
        "htmlform-yes": "да",
        "logentry-delete-delete": "$1 {{GENDER:$2|поничьжилъ|поничьжила}} страницѫ ⁖ $3 ⁖",
index ac70c5a..4f3b094 100644 (file)
        "qbmyoptions": "Сирĕн ĕнĕрлевсем",
        "faq": "ЫйХу",
        "faqpage": "Project:ЫйХу",
+       "namespaces": "Ят хушшисем",
        "variants": "Вариантсем",
        "errorpagetitle": "Йăнăш",
        "returnto": "$1 таврăн.",
        "sourcefilename": "Файлăн чăн ячĕ",
        "watchthisupload": "Ку файла сăнав списокне кĕртмелле",
        "filewasdeleted": "Ку ятла файл малтан пулнă, анчах та ăна кăларса пăрахнă. Тархасшăн, $1 кĕртес умĕн тĕрĕслĕр.",
-       "upload-success-subj": "Файла ăнăçлă тултартăмăр",
        "upload-proto-error": "Йăнăш протокол",
        "upload-file-error": "Шалти йăнăш",
        "upload-misc-error": "Файла кĕртнĕ чухне паллă мар йăнăш пулчĕ",
        "special-categories-sort-count": "шучĕ тăрăх йĕркеле",
        "special-categories-sort-abc": "алфавит тăрăх йĕркеле",
        "deletedcontributions": "Тулашран тунă ӳсĕм",
+       "linksearch-ns": "Ят хушши:",
        "linksearch-ok": "Шырамалли",
        "listusers-submit": "Кăтарт",
        "listusers-noresult": "Хутшăнакансем тупăнмарĕç.",
        "unwatch": "ан сăна",
        "unwatchthispage": "Сăнама пăрах",
        "notanarticle": "Ку статья мар",
-       "watchlistall2": "пурте",
        "watchlist-submit": "Кăтарт",
        "watching": "Сăнамаллисем шутне хушасси…",
        "unwatching": "Сăнав ят-йышĕнчен кăларса пăрахасси…",
        "rollbackfailed": "Каялла куçарнă çухна йăнăш тухнă",
        "protectlogpage": "Хӳтĕленин логĕ",
        "protectlogtext": "Аяларах эсир статьясене хӳтĕленин тата хӳтĕлев паллине пăрахаçланин журналне куратăр.",
-       "protectedarticle": "«[[$1]]» страницăна хӳтĕлерĕмĕр",
+       "protectedarticle": "хӳтĕлерĕ \"[[$1]]\"",
        "unprotectedarticle": "«[[$1]]» страницăн хӳтĕлевне пăрахăçланă",
        "prot_1movedto2": "$1 $2 çине куçарнă",
        "protectcomment": "Сăлтавĕ",
        "undeletedfiles": "{{PLURAL:$1|1 файл|$1 файлсене}} тавăрнă",
        "undelete-search-box": "Кăларса пăрахнă страницăсен хушшинчи шырав",
        "undelete-search-submit": "Шыра",
+       "namespace": "Ят хушши:",
        "blanknamespace": "(Тĕп)",
        "contributions": "{{GENDER:$1|Усă куракан}} ӳсĕмĕсем",
        "contributions-title": "Усă куракан $1 хушни",
index f07ee92..ade3f30 100644 (file)
                        "Poullindholm",
                        "Mads Haupt",
                        "Stefan2",
-                       "Ribewiki"
+                       "Ribewiki",
+                       "Jens Jensen"
                ]
        },
        "tog-underline": "Understreg henvisninger:",
        "tog-hideminor": "Skjul mindre ændringer i listen over seneste ændringer",
        "tog-hidepatrolled": "Skjul patruljerede redigeringer i seneste ændringer",
        "tog-newpageshidepatrolled": "Skjul patruljerede sider på listen over nye sider",
+       "tog-hidecategorization": "Skjul kategorisering af sider",
        "tog-extendwatchlist": "Udvid overvågningslisten til at vise alle ændringer og ikke kun den nyeste",
        "tog-usenewrc": "Gruppér ændringer per side i listen over seneste ændringer og i overvågningslisten",
        "tog-numberheadings": "Automatisk nummerering af overskrifter",
        "tog-watchlisthidebots": "Skjul ændringer fra botter i overvågningslisten",
        "tog-watchlisthideminor": "Skjul mindre ændringer i overvågningslisten",
        "tog-watchlisthideliu": "Skjul indloggede brugeres redigeringer i overvågningslisten",
+       "tog-watchlistreloadautomatically": "Opdater overvågningslisten automatisk, når et filter er ændret (JavaScript påkrævet)",
        "tog-watchlisthideanons": "Skjul anonyme brugeres redigeringer i overvågningslisten",
        "tog-watchlisthidepatrolled": "Skjul patruljerede ændringer fra overvågningslisten",
+       "tog-watchlisthidecategorization": "Skjul kategorisering af sider",
        "tog-ccmeonemails": "Send mig kopier af e-mails som jeg sender til andre brugere",
        "tog-diffonly": "Vis ikke sideindhold neden under versionssammenligninger",
        "tog-showhiddencats": "Vis skjulte kategorier",
        "morenotlisted": "Denne liste er ikke komplet.",
        "mypage": "Side",
        "mytalk": "Diskussion",
-       "anontalk": "Diskussionsside for denne IP-adresse",
+       "anontalk": "Diskussion",
        "navigation": "Navigation",
        "and": "&#32;og",
        "qbfind": "Søg",
        "viewcount": "Siden er vist {{PLURAL:$1|en gang|$1 gange}}.",
        "protectedpage": "Beskyttet side",
        "jumpto": "Skift til:",
-       "jumptonavigation": "Navigation",
-       "jumptosearch": "Søgning",
+       "jumptonavigation": "navigering",
+       "jumptosearch": "søgning",
        "view-pool-error": "Beklager, men serverne er i øjeblikket overbelastede.\nFor mange brugere prøver at se denne side.\nVent et øjeblik, før du prøver at besøge denne side igen.\n\n$1",
        "generic-pool-error": "Beklager, men serverne er i øjeblikket overbelastede.\nFor mange brugere prøver at se denne side.\nVent et øjeblik før du prøver at besøge denne side igen.",
        "pool-timeout": "Timeout mens man venter på låsningen",
        "virus-scanfailed": "virus-scan fejlede med fejlkode $1",
        "virus-unknownscanner": "ukendt virus-scanner:",
        "logouttext": "'''Du er nu logget af.'''\n\nBemærk, at nogle sider stadigvæk kan vises som om du var logget på, indtil du tømmer din browsers cache.",
+       "cannotlogoutnow-title": "Kan ikke logge af på nuværende tidspunkt",
+       "cannotlogoutnow-text": "Det er ikke muligt at logge af når du bruger $1.",
        "welcomeuser": "Velkommen, $1!",
        "welcomecreation-msg": "Din konto er blevet oprettet.\nGlem ikke at ændre dine [[Special:Preferences|{{SITENAME}} indstillinger]].",
        "yourname": "Dit brugernavn:",
        "remembermypassword": "Husk mit brugernavn i denne browser (højst $1 {{PLURAL:$1|dag|dage}})",
        "userlogin-remembermypassword": "Husk mig",
        "userlogin-signwithsecure": "Brug sikker forbindelse",
+       "cannotloginnow-title": "Kan ikke logge ind på nuværende tidspunkt",
+       "cannotloginnow-text": "Det er ikke muligt at logge på når du bruger $1.",
        "yourdomainname": "Dit domænenavn:",
        "password-change-forbidden": "Du kan ikke ændre adgangskoder på denne wiki.",
        "externaldberror": "Der er opstået en fejl i en ekstern adgangsdatabase, eller du har ikke rettigheder til at opdatere denne.",
        "wrongpasswordempty": "Du glemte at indtaste adgangskode. Prøv igen.",
        "passwordtooshort": "Adgangskoden skal mindst være på $1 {{PLURAL:$1|tegn|tegn}}.",
        "passwordtoolong": "Adgangskoden må ikke være længere end {{PLURAL:$1|et tegn|$1 tegn}}.",
+       "passwordtoopopular": "Almindeligt brugte adgangskoder, kan ikke bruges. Vælg venligst en mere unik adgangskode.",
        "password-name-match": "Adgangskoden må ikke være det samme som brugernavnet.",
        "password-login-forbidden": "Brugen af dette brugernavn og adgangskode er blevet forbudt.",
        "mailmypassword": "Nulstil adgangskode",
        "resetpass_submit": "Gem adgangskode og log på",
        "changepassword-success": "Din adgangskode er nu ændret!",
        "changepassword-throttled": "Du har forsøgt at logge på for mange gange for nylig.\nVent venligst $1, før du prøver igen.",
+       "botpasswords": "Bot adgangskoder",
+       "botpasswords-summary": "<em>Bot adgangskoder</em> giver adgang til en brugerkonto via API'en, uden at bruge kontoens normale login-legitimationsoplysninger. Brugerrettighederne kan være begrænset, når du er logget på med et bot password,.\n\nHvis du ikke ved, hvorfor du måske ønsker at gøre dette, bør du nok ikke gøre det. Ingen bør nogensinde bede dig om at generere et af disse, og give det til dem.",
+       "botpasswords-disabled": "Bot adgangskoder er deaktiveret.",
+       "botpasswords-no-central-id": "For at bruge bot adgangskoder, skal du være logget på en central konto.",
+       "botpasswords-existing": "Eksisterende bot adgangskoder",
+       "botpasswords-createnew": "Opret en ny bot adgangskode",
+       "botpasswords-editexisting": "Redigere en eksisterende bot adgangskode",
+       "botpasswords-label-appid": "Botnavn:",
+       "botpasswords-label-create": "Opret",
+       "botpasswords-label-update": "Opdatér",
+       "botpasswords-label-cancel": "Afbryd",
+       "botpasswords-label-delete": "Slet",
+       "botpasswords-label-resetpassword": "Nulstil adgangskode",
+       "botpasswords-label-grants": "Tilgængelige bevillinger:",
        "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",
        "revision-info": "Version fra $1 af $2 {{GENDER:$6|$2}}$7",
        "previousrevision": "←Ældre version",
        "nextrevision": "Nyere version→",
-       "currentrevisionlink": "se nuværende version",
+       "currentrevisionlink": "Nuværende version",
        "cur": "nuværende",
        "next": "næste",
        "last": "forrige",
        "mergelog": "Sammenfletningslog",
        "revertmerge": "Gendan sammenfletning",
        "mergelogpagetext": "Nedenfor vises en liste med de nyeste sammenfletninger af en sides historik i en anden.",
-       "history-title": "$1: Versionshistorik",
+       "history-title": "Versionshistorik for \"$1\"",
        "difference-title": "Forskel mellem versioner af \"$1\"",
        "difference-title-multipage": "Forskel mellem siderne \"$1\" og \"$2\"",
        "difference-multipage": "(Forskel mellem sider)",
        "right-blockemail": "Blokere en brugers mulighed for at sende mail",
        "right-hideuser": "Blokere et brugernavn og skjule navnet",
        "right-ipblock-exempt": "Redigere fra blokerede IP-adresser",
-       "right-proxyunbannable": "Redigere gennem automatisk blokeret proxy",
        "right-unblockself": "Fjerne blokering af dig selv",
        "right-protect": "Ændre beskyttelsesniveauer og redigere cascade-beskyttede sider",
        "right-editprotected": "Redigere sider beskyttet som \"{{int:protect-level-sysop}}\"",
        "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.",
        "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.",
        "filename-prefix-blacklist": " #<!-- efterlad denne linje præcis som den er --> <pre>\n# Syntax is as follows:\n#   * Alt fra at \"#\" tegn til slutningen af linjen er en kommentar\n#   * Hver ikke tom linje er et præfiks for typiske filnavne automatisk tildelt af digitalkameraer\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # nogen mobil telefoner\nIMG # generic\nJD # Jenoptik\nMGP # Pentax\nPICT # div.\n #</pre> <!-- efterlad denne linje præcis som den er -->",
-       "upload-success-subj": "Oplægningen er gennemført",
-       "upload-success-msg": "Din upload fra [$2] lykkedes. Den er tilgængelig her: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Upload problem",
-       "upload-failure-msg": "Der var et problem med din upload fra [$2]:\n\n$1",
-       "upload-warning-subj": "Uploadadvarsel",
-       "upload-warning-msg": "Der var et problem med din upload fra [$2]. Du kan vende tilbage til [[Special:Upload/stash/$1|upload form]] for at løse dette problem.",
        "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",
        "listfiles-summary": "Denne specialside viser alle oplagte filer.",
        "listfiles_search_for": "Søge efter fil:",
        "listfiles-userdoesnotexist": "Brugerkontoen \"$1\" er ikke registreret.",
-       "imgfile": "Fil",
+       "imgfile": "fil",
        "listfiles": "Filliste",
        "listfiles_thumb": "Thumbnail",
        "listfiles_date": "Dato",
        "mimetype": "MIME-type:",
        "download": "DownloadHerunterladen",
        "unwatchedpages": "Ikke overvågede sider",
-       "listredirects": "Henvisningsliste",
+       "listredirects": "Liste over omdirigeringer",
        "listduplicatedfiles": "Liste over filer med dubletter",
        "listduplicatedfiles-summary": "Dette er en liste over filer, hvor den seneste version af filen er en kopi af den seneste version af en anden fil. Kun lokale filer er taget i betragtning.",
        "listduplicatedfiles-entry": "[[:File:$1|$1]] har [[$3|{{PLURAL:$2|en dublet|$2 dubletter}}]].",
        "wlheader-showupdated": "Sider, der er ændret siden dit sidste besøg, er vist med '''fed skrift'''.",
        "wlnote": "Nedenfor ses {{PLURAL:$1|den seneste ændring|de seneste <strong>$1</strong> ændringer}} i {{PLURAL:$2|den sidste time|de sidste <strong>$2</strong> timer}} op til den $3 kl. $4.",
        "wlshowlast": "Vis de seneste $1 timer $2 dage",
-       "watchlistall2": "alle",
        "watchlist-hide": "Skjul",
        "wlshowtime": "Vis seneste:",
        "wlshowhideminor": "mindre ændringer",
        "deleting-backlinks-warning": "'''Advarsel:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Andre sider]] linker til eller inkluderer den side, du er ved at slette.",
        "rollback": "Fjern redigeringer",
        "rollbacklink": "rul tilbage",
-       "rollbacklinkcount": "tilbagefør $1 {{PLURAL:$1|redigering|redigeringer}}",
-       "rollbacklinkcount-morethan": "tilbagefør mere end $1 {{PLURAL:$1|redigering|redigeringer}}",
+       "rollbacklinkcount": "rul {{PLURAL:$1|en redigering|$1 redigeringer}} tilbage",
+       "rollbacklinkcount-morethan": "rul mere end {{PLURAL:$1|en redigering|$1 redigeringer}} 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}}]]);\nen anden har allerede redigeret siden eller fjernet redigeringen.\n\nDen seneste redigering er foretaget af [[User:$3|$3]] ([[User talk:$3|diskussion]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
        "contributions-userdoesnotexist": "Brugerkontoen \"$1\" er ikke registreret.",
        "nocontribs": "Ingen ændringer er fundet som opfylder disse kriterier.",
        "uctop": "(seneste)",
-       "month": "Måned:",
-       "year": "År:",
+       "month": "Fra måned (og tidligere):",
+       "year": "Fra år (og tidligere):",
        "sp-contributions-newbies": "Vis kun bidrag fra nye brugere",
        "sp-contributions-newbies-sub": "Fra nye kontoer",
        "sp-contributions-newbies-title": "Brugerbidrag fra nye konti",
        "blocklist-nousertalk": "kan ikke redigere egen diskussionsside",
        "ipblocklist-empty": "Blokeringslisten er tom.",
        "ipblocklist-no-results": "Den angivene IP-addresse eller brugernavn er ikke blokeret.",
-       "blocklink": "bloker",
+       "blocklink": "blokér",
        "unblocklink": "ophæv blokering",
        "change-blocklink": "ændring af blokering",
        "contribslink": "bidrag",
        "javascripttest-pagetext-frameworks": "Vælg venligst en af de følgende testmiljøer: $1",
        "javascripttest-pagetext-skins": "Vælg et udseende, som testene skal køres med:",
        "javascripttest-qunit-intro": "Se [$1 testdokumentationen] på mediawiki.org.",
-       "tooltip-pt-userpage": "Din brugerside",
+       "tooltip-pt-userpage": "{{GENDER:|Din}} brugerside",
        "tooltip-pt-anonuserpage": "Brugersiden for den ip-adresse du redigerer som",
-       "tooltip-pt-mytalk": "Din diskussionsside",
+       "tooltip-pt-mytalk": "{{GENDER:|Din}} diskussionsside",
        "tooltip-pt-anontalk": "Diskussion om redigeringer fra denne ip-adresse",
-       "tooltip-pt-preferences": "Dine indstillinger",
+       "tooltip-pt-preferences": "{{GENDER:|Dine}} indstillinger",
        "tooltip-pt-watchlist": "Listen over sider du overvåger for ændringer.",
-       "tooltip-pt-mycontris": "Liste over dine bidrag",
+       "tooltip-pt-mycontris": "Liste over {{GENDER:|dine}} bidrag",
        "tooltip-pt-login": "Du opfordres til at logge på, men det er ikke obligatorisk.",
        "tooltip-pt-logout": "Log af",
        "tooltip-pt-createaccount": "Du opfordres til at oprette en konto og logge på, men det er ikke obligatorisk",
        "tooltip-n-randompage": "Gå til en tilfældig side",
        "tooltip-n-help": "Stedet hvor du finder hjælp",
        "tooltip-t-whatlinkshere": "Liste med alle sider som henviser hertil",
-       "tooltip-t-recentchangeslinked": "Seneste ændringer i sider som denne side henviser til",
+       "tooltip-t-recentchangeslinked": "Seneste ændringer af sider som denne side henviser til",
        "tooltip-feed-rss": "RSS-feed for denne side",
        "tooltip-feed-atom": "Atom-feed for denne side",
-       "tooltip-t-contributions": "Se denne brugers bidrag",
+       "tooltip-t-contributions": "En liste over bidrag fra {{GENDER:$1|denne bruger}}",
        "tooltip-t-emailuser": "Send en e-mail til denne bruger",
        "tooltip-t-info": "Yderligere oplysninger om denne side",
        "tooltip-t-upload": "Upload et billede eller anden mediafil",
        "file-info-size": "$1 × $2 punkter, filstørrelse: $3, MIME-Type: $4",
        "file-info-size-pages": "$1 × $2 punkter, filstørrelse: $3, MIME-type: $4, $5 {{PLURAL:$5|side|sider}}",
        "file-nohires": "Ingen højere opløsning fundet.",
-       "svg-long-desc": "SVG fil, basisstørrelse $1 × $2 punkters, størrelse: $3",
+       "svg-long-desc": "SVG fil, basisstørrelse $1 × $2 pixels, filstørrelse: $3",
        "svg-long-desc-animated": "Animeret SVG-fil, basisstørrelse $1 × $2 punkter, filstørrelse: $3",
        "svg-long-error": "Ugyldig SVG-fil: $1",
        "show-big-image": "Oprindelige fil",
        "special-characters-title-endash": "tankestreg",
        "special-characters-title-emdash": "lang tankestreg",
        "special-characters-title-minus": "minustegn",
+       "mw-widgets-dateinput-no-date": "Ingen dato valgt",
        "mw-widgets-dateinput-placeholder-day": "ÅÅÅÅ-MM-DD",
        "mw-widgets-dateinput-placeholder-month": "ÅÅÅÅ-MM",
-       "api-error-blacklisted": "Vælg venligst en anden, beskrivende titel."
+       "mw-widgets-titleinput-description-new-page": "side eksisterer ikke endnu",
+       "mw-widgets-titleinput-description-redirect": "omdiriger til $1",
+       "api-error-blacklisted": "Vælg venligst en anden, beskrivende titel.",
+       "randomrootpage": "Tilfældig stamside"
 }
index 0ab314e..aaa9eed 100644 (file)
@@ -85,7 +85,8 @@
                        "R4c0r",
                        "MGChecker",
                        "FriedhelmW",
-                       "Schniggendiller"
+                       "Schniggendiller",
+                       "Predatorix"
                ]
        },
        "tog-underline": "Links unterstreichen:",
        "search": "Suche",
        "searchbutton": "Suchen",
        "go": "Ausführen",
-       "searcharticle": "Seite",
+       "searcharticle": "Suchen",
        "history": "Versionen",
        "history_short": "Versionsgeschichte",
        "updatedmarker": "Änderung seit deinem letzten Besuch",
        "copyrightpage": "{{ns:project}}:Urheberrechte",
        "currentevents": "Aktuelle Ereignisse",
        "currentevents-url": "Project:Aktuelle Ereignisse",
-       "disclaimers": "Impressum",
+       "disclaimers": "Haftungsausschluss",
        "disclaimerpage": "Project:Impressum",
        "edithelp": "Bearbeitungshilfe",
        "helppage-top-gethelp": "Hilfe",
        "versionrequiredtext": "Version $1 von MediaWiki ist erforderlich, um diese Seite zu nutzen.\nSiehe die [[Special:Version|Versionsseite]]",
        "ok": "Okay",
        "pagetitle": "$1 – {{SITENAME}}",
-       "retrievedfrom": "Von „$1“",
+       "retrievedfrom": "Abgerufen von „$1“",
        "youhavenewmessages": "Du hast $1 ($2).",
        "youhavenewmessagesfromusers": "{{PLURAL:$4|Du hast}} $1 von {{PLURAL:$3|einem anderen Benutzer|$3 Benutzern}} ($2).",
        "youhavenewmessagesmanyusers": "Du hast $1 von vielen Benutzern ($2).",
        "uploaded-script-svg": "Skriptelement „$1“ in der hochgeladenen SVG-Datei gefunden.",
        "uploaded-hostile-svg": "Unsicheres CSS im Styleelement der hochgeladenen SVG-Datei gefunden.",
        "uploaded-event-handler-on-svg": "Das Festlegen von Ereignis-Handler-Attributen <code>$1=\"$2\"</code> ist in SVG-Dateien nicht erlaubt.",
-       "uploaded-href-attribute-svg": "href-Attribute <code>&lt;$1 $2=\"$3\"&gt;</code> mit nicht-lokalem Ziel (z.&nbsp;B. http://, javascript: etc.) sind in SVG-Dateien nicht erlaubt.",
-       "uploaded-href-unsafe-target-svg": "href zu unsicherem Ziel <code>&lt;$1 $2=\"$3\"&gt;</code> in der hochgeladenen SVG-Datei gefunden.",
+       "uploaded-href-attribute-svg": "href-Attribute in SVG-Dateien sind nur als Verlinkung zu http://- oder https://-Zielen erlaubt. <code>&lt;$1 $2=\"$3\"&gt;</code> gefunden.",
+       "uploaded-href-unsafe-target-svg": "href zu unsicheren Daten gefunden: URI-Ziel <code>&lt;$1 $2=\"$3\"&gt;</code> in der hochgeladenen SVG-Datei.",
        "uploaded-animate-svg": "Tag „animate“ gefunden, das href mithilfe des Attributs „from“ <code>&lt;$1 $2=\"$3\"&gt;</code> in der hochgeladenen SVG-Datei ändern könnte.",
        "uploaded-setting-event-handler-svg": "Das Festlegen von Ereignis-Handler-Attributen ist gesperrt. <code>&lt;$1 $2=\"$3\"&gt;</code> in der hochgeladenen SVG-Datei gefunden.",
        "uploaded-setting-href-svg": "Die Verwendung des Tags „set“ zum Hinzufügen des Attributs „href“ zum übergeordneten Element ist gesperrt.",
        "filename-thumb-name": "Dies scheint ein Titel für Vorschaubilder zu sein. Lade bitte keine Vorschaubilder zurück auf das gleiche Wiki hoch. Anderenfalls ändere bitte den Dateinamen ab, so dass er aussagekräftiger ist und kein Vorschaubild-Präfix hat.",
        "filename-bad-prefix": "Der Dateiname beginnt mit '''„$1“'''. Dies ist im allgemeinen der von einer Digitalkamera vorgegebene Dateiname und daher nicht sehr aussagekräftig.\nBitte gib der Datei einen Namen, der den Inhalt besser beschreibt.",
        "filename-prefix-blacklist": " #<!-- Diese Zeile darf nicht verändert werden! --> <pre>\n#  Syntax:\n#   * Alles von einem #-Zeichen bis zum Ende der Zeile ist ein Kommentar.\n#   * Jede nicht-leere Zeile ist der Anfang eines typischen Dateinamens, der automatisch von einer Digitalkamera erzeugt wird.\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # einige Mobiltelefone\nIMG # allgemein\nJD # Jenoptik\nMGP # Pentax\nPICT # verschiedene\n #</pre> <!-- Diese Zeile darf nicht verändert werden!-->",
-       "upload-success-subj": "Erfolgreich hochgeladen",
-       "upload-success-msg": "Das Hochladen von [$2] war erfolgreich. Sie ist hier verfügbar: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Hochladefehler",
-       "upload-failure-msg": "Es gab ein Problem mit deiner hochgeladenen Datei von [$2]:\n\n$1",
-       "upload-warning-subj": "Hochladewarnung",
-       "upload-warning-msg": "Es gab ein Problem beim Hochladen von [$2]. Bitte zum [[Special:Upload/stash/$1|Hochladeformular]] zurückkehren, um dieses Problem zu beheben.",
        "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-too-many-redirects": "Die URL beinhaltete zu viele Weiterleitungen",
        "upload-http-error": "Ein HTTP-Fehler ist aufgetreten: $1",
        "upload-copy-upload-invalid-domain": "Als Kopie hochladbare Dateien sind über diese Domain nicht verfügbar.",
+       "upload-foreign-cant-upload": "Dieses Wiki ist nicht konfiguriert, um Dateien auf das gewünschte fremde Dateirepositorium hochzuladen.",
        "upload-dialog-title": "Datei hochladen",
        "upload-dialog-button-cancel": "Abbrechen",
        "upload-dialog-button-done": "Schließen",
        "wlheader-showupdated": "Seiten mit noch nicht gesehenen Änderungen werden '''fett''' dargestellt.",
        "wlnote": "Es {{PLURAL:$1|folgt die letzte Änderung|folgen die letzten <strong>$1</strong> Änderungen}} der letzten {{PLURAL:$2|Stunde|<strong>$2</strong> Stunden}}. Stand: $3, $4 Uhr.",
        "wlshowlast": "Zeige die Änderungen der letzten $1 Stunden, $2 Tage.",
-       "watchlistall2": "alle",
        "watchlist-hide": "Ausblenden",
        "watchlist-submit": "Anzeigen",
        "wlshowtime": "Anzuzeigende Zeitperiode:",
        "lockedbyandtime": "(von $1 am $2 um $3 Uhr)",
        "move-page": "Verschieben von „$1“",
        "move-page-legend": "Seite verschieben",
-       "movepagetext": "Mit untenstehendem Formular kannst du eine Seite umbenennen, indem du sie mitsamt allen Versionen auf einen neuen Titel verschiebst.\nDer alte Titel wird danach zum neuen weiterleiten.\nDu kannst Weiterleitungen, die auf den Originaltitel verlinken, automatisch korrigieren lassen.\nStelle sicher, dass du im Anschluss alle [[Special:DoubleRedirects|doppelten]] oder [[Special:BrokenRedirects|defekten Weiterleitungen]] überprüfst.\nDu bist dafür verantwortlich, dass Links weiterhin auf das korrekte Ziel verweisen.\n\nDie Seite wird '''nicht''' verschoben, sofern es bereits eine Seite mit dem vorgesehenen Titel gibt, es sei denn, letztere ist eine Weiterleitung ohne Versionsgeschichte.\nDies bedeutet, dass du die Umbenennung rückgängig machen kannst, sofern du einen Fehler gemacht hast. Du kannst hingegen keine existierende Seite überschreiben.\n\n'''Warnung!'''\nDie Verschiebung kann weitreichende und unerwartete Folgen für häufig besuchte Seiten haben.\nDu solltest daher die Konsequenzen verstanden haben, bevor du jetzt fortfährst.",
-       "movepagetext-noredirectfixer": "Mit untenstehendem Formular kannst du eine Seite umbenennen, indem du sie mitsamt allen Versionen auf einen neuen Titel verschiebst.\nDer alte Titel wird danach zum neuen weiterleiten.\nStelle sicher, dass du im Anschluss alle [[Special:DoubleRedirects|doppelten]] oder [[Special:BrokenRedirects|defekten Weiterleitungen]] überprüfst.\nDu bist dafür verantwortlich, dass Links weiterhin auf das korrekte Ziel verweisen.\n\nDie Seite wird '''nicht''' verschoben, sofern es bereits eine Seite mit dem vorgesehenen Titel gibt, es sei denn, diese ist eine Weiterleitung ohne Versionsgeschichte.\nDies bedeutet, dass du die Umbenennung rückgängig machen kannst, sofern du einen Fehler gemacht hast. Du kannst hingegen keine existierende Seite überschreiben.\n\n'''Warnung!'''\nDie Verschiebung kann weitreichende und unerwartete Folgen für häufig besuchte Seiten haben.\nDu solltest daher die Konsequenzen verstanden haben, bevor du jetzt fortfährst.",
+       "movepagetext": "Mit untenstehendem Formular kannst du eine Seite umbenennen, indem du sie mitsamt allen Versionen auf einen neuen Titel verschiebst.\nDer alte Titel wird danach zum neuen weiterleiten.\nDu kannst Weiterleitungen, die auf den Originaltitel verlinken, automatisch korrigieren lassen.\nStelle sicher, dass du im Anschluss alle [[Special:DoubleRedirects|doppelten]] oder [[Special:BrokenRedirects|defekten Weiterleitungen]] überprüfst.\nDu bist dafür verantwortlich, dass Links weiterhin auf das korrekte Ziel verweisen.\n\nDie Seite wird <strong>nicht</strong> verschoben, sofern es bereits eine Seite mit dem vorgesehenen Titel gibt, es sei denn, letztere ist eine Weiterleitung ohne Versionsgeschichte.\nDies bedeutet, dass du die Umbenennung rückgängig machen kannst, sofern du einen Fehler gemacht hast. Du kannst hingegen keine existierende Seite überschreiben.\n\n<strong>Hinweis:</strong>\nDie Verschiebung kann weitreichende und unerwartete Folgen für häufig besuchte Seiten haben.\nDu solltest daher die Konsequenzen verstanden haben, bevor du jetzt fortfährst.",
+       "movepagetext-noredirectfixer": "Mit untenstehendem Formular kannst du eine Seite umbenennen, indem du sie mitsamt allen Versionen auf einen neuen Titel verschiebst.\nDer alte Titel wird danach zum neuen weiterleiten.\nStelle sicher, dass du im Anschluss alle [[Special:DoubleRedirects|doppelten]] oder [[Special:BrokenRedirects|defekten Weiterleitungen]] überprüfst.\nDu bist dafür verantwortlich, dass Links weiterhin auf das korrekte Ziel verweisen.\n\nDie Seite wird <strong>nicht</strong> verschoben, sofern es bereits eine Seite mit dem vorgesehenen Titel gibt, es sei denn, diese ist eine Weiterleitung ohne Versionsgeschichte.\nDies bedeutet, dass du die Umbenennung rückgängig machen kannst, sofern du einen Fehler gemacht hast. Du kannst hingegen keine existierende Seite überschreiben.\n\n<strong>Hinweis:</strong>\nDie Verschiebung kann weitreichende und unerwartete Folgen für häufig besuchte Seiten haben.\nDu solltest daher die Konsequenzen verstanden haben, bevor du jetzt fortfährst.",
        "movepagetalktext": "Falls du dieses Kästchen aktivierst, wird die dazugehörige Diskussionsseite automatisch auf den neuen Titel verschoben, sofern nicht bereits eine nicht-leere Diskussionsseite dort vorhanden ist.\n\nIn diesem Fall musst du die Seite manuell verschieben oder zusammenführen, falls erforderlich.",
        "moveuserpage-warning": "'''Warnung:''' Du bist dabei, eine Benutzerseite zu verschieben. Bitte bedenke, dass dadurch nur die Benutzerseite verschoben, '''nicht''' aber der Benutzer umbenannt wird.",
        "movecategorypage-warning": "<strong>Warnung:</strong> Du bist gerade dabei, eine Kategorieseite zu verschieben. Bitte sei dir bewusst, dass nur die Seite verschoben wird. Alle Seiten in der alten Kategorie werden <em>nicht</em> neu kategorisiert.",
        "movenosubpage": "Diese Seite hat keine Unterseiten.",
        "movereason": "Grund:",
        "revertmove": "zurück verschieben",
-       "delete_and_move_text": "== Löschung erforderlich ==\n\nDie Seite „[[:$1]]“ existiert bereits. Möchtest du diese löschen, um die Seite verschieben zu können?",
+       "delete_and_move_text": "Die Seite „[[:$1]]“ existiert bereits.\nMöchtest du diese löschen, um die Seite verschieben zu können?",
        "delete_and_move_confirm": "Ja, Seite löschen",
        "delete_and_move_reason": "gelöscht, um Platz für die Verschiebung von „[[$1]]“ zu machen",
        "selfmove": "Ursprungs- und Zielname sind gleich.\nEine Seite kann nicht auf sich selbst verschoben werden.",
        "move-leave-redirect": "Weiterleitung erstellen",
        "protectedpagemovewarning": "'''Warnung:''' Diese Seite wurde so geschützt, dass sie nur von Benutzern mit Administratorenrechten verschoben werden kann.\nZur Information folgt der aktuelle Logbucheintrag:",
        "semiprotectedpagemovewarning": "'''Hinweis:''' Diese Seite wurde so geschützt, dass sie nur von angemeldeten Benutzern verschoben werden kann.\nZur Information folgt der aktuelle Logbucheintrag:",
-       "move-over-sharedrepo": "==Datei existiert==\n[[:$1]] existiert in einem gemeinsam genutzten Repositorium. Das Verschieben einer Datei zu diesem Titel überschreibt die gemeinsam genutzte Datei.",
+       "move-over-sharedrepo": "[[:$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.\nBitte wähle einen anderen Namen.",
        "export": "Seiten exportieren",
        "exporttext": "Mit dieser Spezialseite kannst du den Text inklusive der Versionsgeschichte einzelner Seiten in eine XML-Datei exportieren.\nDie Datei kann in ein anderes MediaWiki-Wiki über die [[Special:Import|Importfunktion]] eingespielt werden.\n\nTrage den oder die entsprechenden Seitentitel in das folgende Textfeld ein (pro Zeile jeweils nur eine Seite).\n\nAlternativ ist der Export auch mit der Syntax [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] möglich, beispielsweise für die [[{{MediaWiki:Mainpage}}]].",
        "tooltip-ca-watch": "Diese Seite zur persönlichen Beobachtungsliste hinzufügen",
        "tooltip-ca-unwatch": "Diese Seite von der persönlichen Beobachtungsliste entfernen",
        "tooltip-search": "{{SITENAME}} durchsuchen",
-       "tooltip-search-go": "Gehe direkt zu der Seite, die exakt dem eingegebenen Namen entspricht.",
+       "tooltip-search-go": "Gehe direkt zu der Seite mit genau diesem Namen, falls sie vorhanden ist.",
        "tooltip-search-fulltext": "Suche nach Seiten, die diesen Text enthalten",
        "tooltip-p-logo": "Hauptseite",
        "tooltip-n-mainpage": "Hauptseite anzeigen",
        "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}} $1",
+       "siteusers": "{{SITENAME}}-{{PLURAL:$2|{{GENDER:$1|Benutzer|Benutzerin}}|Benutzer}} $1",
        "anonusers": "{{PLURAL:$2|unangemeldetem|unangemeldeten}} {{SITENAME}}-{{PLURAL:$2|Benutzer|Benutzern}} $1",
        "creditspage": "Seitenzuschreibung",
        "nocredits": "Für diese Seite sind keine Zuschreibungen vorhanden.",
        "version-hook-subscribedby": "Aufruf von",
        "version-version": "($1)",
        "version-no-ext-name": "[kein Name]",
-       "version-svn-revision": "(Version $2)",
        "version-license": "MediaWiki-Lizenz",
        "version-ext-license": "Lizenz",
        "version-ext-colheader-name": "Bezeichnung",
        "expand_templates_preview_fail_html": "<em>Da {{SITENAME}} rohes HTML aktiviert hat und es einen Verlust deiner Sitzungsdaten gab, ist die Vorschau als Vorsichtsmaßnahme gegen JavaScript-Angriffe versteckt.</em>\n\n<strong>Falls dies ein zulässiger Vorschauversuch ist, versuche es bitte erneut.</strong>\nFalls dieses Problem weiterhin bestehen bleibt, versuche dich [[Special:UserLogout|abzumelden]] und erneut anzumelden.",
        "expand_templates_preview_fail_html_anon": "<em>Da {{SITENAME}} rohes HTML aktiviert hat und du nicht angemeldet bist, ist die Vorschau als Vorsichtsmaßnahme gegen JavaScript-Angriffe versteckt.</em>\n\n<strong>Falls dies ein zulässiger Vorschauversuch ist, [[Special:UserLogin|melde dich bitte an]] und versuche es erneut.</strong>",
        "expand_templates_input_missing": "Du musst mindestens einen Eingabetext angeben.",
-       "pagelanguage": "Seitensprachenauswahl",
+       "pagelanguage": "Seitensprache ändern",
        "pagelang-name": "Seite",
        "pagelang-language": "Sprache",
        "pagelang-use-default": "Standardsprache verwenden",
        "action-pagelang": "die Seitensprache zu ändern",
        "log-name-pagelang": "Sprachenänderungs-Logbuch",
        "log-description-pagelang": "Dies ist ein Logbuch mit Änderungen an Seitensprachen.",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|änderte}} die Seitensprache für $3 von $4 nach $5.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|änderte}} die Sprache für $3 von $4 nach $5.",
        "default-skin-not-found": "Hoppla! Die mit <code>$wgDefaultSkin</code> als <code>$1</code>&nbsp;für dein Wiki definierte Standardbenutzeroberfläche ist nicht verfügbar.\n\n{{PLURAL:$4|Die folgende Benutzeroberfläche scheint|Die folgenden Benutzeroberflächen scheinen}} vorhanden zu sein:\n\n$2\n\nSiehe hierzu das [https://www.mediawiki.org/wiki/Manual:Skin_configuration/de Benutzerhandbuch zur Konfiguration von Benutzeroberflächen].\n\n; Sofern du MediaWiki gerade installiert hast\n: Du hast MediaWiki vermutlich mit Hilfe von Git oder den Quellcode direkt anhand einer anderen Methode installiert. Das aktuelle Problem war deshalb zu erwarten. Installiere zumindest eine im [https://www.mediawiki.org/wiki/Category:All_skins Verzeichnis der Benutzeroberflächen] enthaltene Benutzeroberfläche indem du:\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Git zum Herunterladen von Benutzeroberflächen verwendest].\n:* die Dateiveröffentlichungen einzelner Benutzeroberflächen aus [https://www.mediawiki.org/wiki/Special:SkinDistributor MediaWiki.org] herunterlädst und in das Verzeichnis <code dir=\"ltr\">skins/</code> deiner MediaWiki-Installation kopierst,\n:* die [https://www.mediawiki.org/wiki/Download/de Dateiveröffentlichung von MediaWiki] herunterlädst, die verschiedene Benutzeroberflächen sowie Erweiterungen enthält. Du kannst das dort enthaltene Verzeichnis <code>skins/</code> Verzeichnis nutzen und in das Verzeichnis <code dir=\"ltr\">skins/</code> deiner MediaWiki-Installation kopieren.\n\n; Sofern du MediaWiki gerade aktualisiert hast\n: Bei MediaWiki 1.24 und neueren Versionen werden die installierten Benutzeroberflächen nicht mehr automatisch aktiviert (siehe das [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Benutzerhandbuch]). Du kannst die {{PLURAL:$5|folgende Zeile|folgenden Zeilen}} in die Datei <code>LocalSettings.php</code> einfügen, um {{PLURAL:$5|die installierte Benutzeroberfläche|alle installierten Benutzeroberflächen}} zu aktivieren:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Falls du gerade die Datei <code>LocalSettings.php</code> geändert hast\n: Überprüfe die Namen der Benutzeroberflächen auf Tippfehler.",
        "default-skin-not-found-no-skins": "Hoppla! Die mit <code>$wgDefaultSkin</code> als <code>$1</code>&nbsp;für dein Wiki definierte Standardbenutzeroberfläche ist nicht verfügbar.\n\nDu hast keine Benutzeroberfläche installiert.\n\n; Sofern du MediaWiki gerade installiert oder aktualisiert hast\n: Du hast MediaWiki vermutlich mit Hilfe von Git oder den Quellcode direkt anhand einer anderen Methode installiert. Das aktuelle Problem war deshalb zu erwarten, da MediaWiki 1.24 und neuere Versionen keine Benutzeroberflächen im Hauptrepositorium enthalten. Installiere zumindest eine im [https://www.mediawiki.org/wiki/Category:All_skins Verzeichnis der Benutzeroberflächen] enthaltene Benutzeroberfläche indem du:\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Git zum Herunterladen von Benutzeroberflächen verwendest].\n:* die Dateiveröffentlichungen einzelner Benutzeroberflächen aus [https://www.mediawiki.org/wiki/Special:SkinDistributor MediaWiki.org] herunterlädst und in das Verzeichnis <code dir=\"ltr\">skins/</code> deiner MediaWiki-Installation kopierst,\n:* die [https://www.mediawiki.org/wiki/Download/de Dateiveröffentlichung von MediaWiki] herunterlädst, die verschiedene Benutzeroberflächen sowie Erweiterungen enthält. Du kannst das dort enthaltene Verzeichnis <code>skins/</code> Verzeichnis nutzen und in das Verzeichnis <code dir=\"ltr\">skins/</code> deiner MediaWiki-Installation kopieren.\n: Siehe hierzu das [https://www.mediawiki.org/wiki/Manual:Skin_configuration/de Benutzerhandbuch zur Konfiguration von Benutzeroberflächen].",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (aktiviert)",
index f2370d6..8c09ed9 100644 (file)
        "october-date": "Tışrino Verên $1",
        "november-date": "Tışrino Peyên $1",
        "december-date": "Kanun $1",
+       "period-am": "AM",
+       "period-pm": "PM",
        "pagecategories": "{{PLURAL:$1|Kategoriye|Kategoriyi}}",
        "category_header": "Pelê ke kategoriya \"$1\" derê",
        "subcategories": "Kategoriyê bınêni",
        "resetpass-wrong-oldpass": "parolayo parola maqbul niyo.\nşıma ya parolaye xo vurnayo ya zi parolayo muwaqqat waşto.",
        "resetpass-recycled": "Parolaya şımaya newiye wa paroloya şımaya verêne ra ferqıne bo.",
        "resetpass-temp-password": "parolayo muweqet:",
-       "resetpass-abort-generic": "Parola vurnayış jew derganey ra tepya ibtal biyo",
+       "resetpass-abort-generic": "Vurnayışê parola terefê yew niçıki ra texeliya.",
        "passwordreset": "Parola reset ke",
        "passwordreset-text-one": "Na form de parola reset kerdış temamiye",
        "passwordreset-text-many": "{{PLURAL:$1|Qande parola yana e-posta reset kerdışi cayanra taynın pırkeri.}}",
        "searchprofile-advanced": "Raverşiyaye",
        "searchprofile-articles-tooltip": "$1 de cı geyré",
        "searchprofile-images-tooltip": "Dosya cı geyr",
-       "searchprofile-everything-tooltip": "Tedeestey hemine cı geyre (pelanê mınaqeşey zi tey)",
+       "searchprofile-everything-tooltip": "Tedeesteyan hemine cı geyre (pelanê mınaqeşeyi zi tey)",
        "searchprofile-advanced-tooltip": "qe cayê nimeyî bigêre",
        "search-result-size": "$1 ({{PLURAL:$2|1 çekuyo|$2 çekuyê}})",
        "search-result-category-size": "{{PLURAL:$1|1 eza|$1 ezayan}} ({{PLURAL:$2|1 kategoriyê bini|$2 kategirayanê binan}}, {{PLURAL:$3|1 dosya|$3 dosyayan}})",
        "right-blockemail": "Yew karberê erşawıtışê/rıştena e-maili ra bloke bıke",
        "right-hideuser": "Yew nameyê karberi şari ra miyanki bloke bıke",
        "right-ipblock-exempt": "Blokanê IPi, oto-blokan u blokanê menzıli ra ravêre",
-       "right-proxyunbannable": "Blokanê otomatikiê proksiyan ra ravêre",
        "right-unblockself": "Blokeyınan ake",
        "right-protect": "Sewiyanê pawıtışi (mıhafezey) bıvurne u pelanê kılitbiyaiyan sero bıgureye.",
        "right-editprotected": "Pera pawıtiyan sero bıxebteye (bê pawıtena kaskadi (game be game))",
        "filewasdeleted": "no name de yew dosya yew wexto nızdi de bar biya u dıma zi serkaran hewn a kerdo. wexya ke şıma dosya bar keni bıewnê no pel $1.",
        "filename-bad-prefix": "name yo ke şıma bar keni zey nameyê kamerayê dijital î, pê ney '''\"$1\"''' destpêkeno .\nkerem kere yewna nameyo eşkera bıvicinê.",
        "filename-prefix-blacklist": " #<!-- leave this line exactly as it is --> <pre>\n# Syntax is as follows:\n#   * Everything from a \"#\" character to the end of the line is a comment\n#   * Every non-blank line is a prefix for typical file names assigned automatically by digital cameras\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # some mobile phones\nIMG # generic\nJD # Jenoptik\nMGP # Pentax\nPICT # misc.\n #</pre> <!-- leave this line exactly as it is -->",
-       "upload-success-subj": "bar biyo",
-       "upload-success-msg": "[$2] barkerdışê şıma qebul bı. Barkerdışê şımayo itado: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Problem bar ke",
-       "upload-failure-msg": "[$1] delal: $2 ra barkerdıştê şıman ra jew xelat vıcyayo.",
-       "upload-warning-subj": "İqazê barkerdışi",
-       "upload-warning-msg": "Barkerdış dê [$2] de xırabey vıcyê. Xırabi timar kerdışi re  peyser şırê  [[Special:Upload/stash/$1|heruna barkerdışi]].",
        "upload-proto-error": "Porotokol raşt ni yo.",
        "upload-proto-error-text": "Bar kerdişê durî gani  URLî estbiye ke pe <code>http://</code> ya zi <code>ftp://</code> başli beno.",
        "upload-file-error": "Xeta daxılkiye",
        "wlheader-showupdated": "ziyaretê şıma ye peyini de vuryayişê peli pê '''nuşteyo qalıni''' mocyayo.",
        "wlnote": "$3 seate u bahde $4 deqa dıma {{PLURAL:$2|ju seate dı|'''$2''' ju seate dı}} {{PLURAL:$1|vurnayışe peyeni|vurnayışe '''$1''' peyeni}} cêrdeyê",
        "wlshowlast": "Peyni de vurnayışan ra  $1 seata u $2 roca  bımocnê",
-       "watchlistall2": "pêro",
        "watchlist-hide": "Bınımne",
        "wlshowtime": "Peyênan bımocne:",
        "wlshowhideminor": "vurnayışê werdiyi",
        "restriction-upload": "Bar ke",
        "restriction-level-sysop": "tam pawiyayo",
        "restriction-level-autoconfirmed": "nêm pawiyayo",
-       "restriction-level-all": "heme yew sewiya",
+       "restriction-level-all": "kamci be sewiya",
        "undelete": "Peleyê ke besterneyayê enê bımocnê",
        "undeletepage": "bıewn revizyonê peli yê hewn a şiyayeyan u tepiya biyar",
        "undeletepagetitle": "'''pelo [[:$1|$1]] cêrın, wayirê revizyonê hewn a şiyayeyan o'''.",
        "allmessages": "Mesacê sistemi",
        "allmessagesname": "Name",
        "allmessagesdefault": "Metnê mesacê hesabiyayey",
-       "allmessagescurrent": "Nuşteyê mesacê rocaney",
+       "allmessagescurrent": "Nuşteyê mesacê rocaneyi",
        "allmessagestext": "na liste, listeya mesajê cayê nameyê wikimedya yo.\neke şıma qayili paşt bıdi mahalli kerdışê wikimedyayi, kerem kerê pelê [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation mahalli kerdışê wikimedyayi] u [//translatewiki.net translatewiki.net] ziyaret bıkerê.",
        "allmessagesnotsupportedDB": "'''$wgUseDatabaseMessages''' qefelnaye yo u ey ra '''{{ns:special}}:Allmessages''' karkerdışi re akerde niyo.",
        "allmessages-filter-legend": "Avrêc",
        "version-hook-name": "Nameyê çengelî",
        "version-hook-subscribedby": "Eza biyayoğ",
        "version-version": "($1)",
-       "version-svn-revision": "(r$2)",
        "version-license": "Lisansê MediaWiki",
        "version-ext-license": "Lisans",
        "version-ext-colheader-name": "Dergiye",
        "feedback-submit": "Bırışe",
        "feedback-thanks": "Teşekkur kemê! Vatışê şıma pela da \"[$2 $1]\" esta.",
        "searchsuggest-search": "Cı geyre",
-       "searchsuggest-containing": "Estên...",
+       "searchsuggest-containing": "estebiyaye...",
        "api-error-badaccess-groups": "Ena wiki de dosya barkerdışi rê mısade nêdeyêno.",
        "api-error-badtoken": "Xetaya zerreki: Antışo xırabın.",
        "api-error-copyuploaddisabled": "URL barkerdış ena waster dı qefılyayo.",
index 6db5b77..5564b18 100644 (file)
        "virus-scanfailed": "Η σάρωση απέτυχε (κώδικας $1)",
        "virus-unknownscanner": "άγνωστο αντιικό:",
        "logouttext": "'''Έχετε αποσυνδεθεί.'''\n\nΈχετε υπόψη σας πως αρκετές σελίδες θα συνεχίσουν να εμφανίζονται κανονικά, σαν να μην έχετε αποσυνδεθεί, μέχρι να καθαρίσετε την προσωρινή μνήμη του φυλλομετρητή σας.",
+       "cannotlogoutnow-title": "Δεν μπορείτε να αποσυνδεθείτε τώρα",
+       "cannotlogoutnow-text": "Η αποσύνδεση δεν είναι δυνατή όταν χρησιμοποιείτε την $1.",
        "welcomeuser": "Καλώς ορίσατε, $1!",
        "welcomecreation-msg": "Ο λογαριασμός σας έχει δημιουργηθεί.\nΜην ξεχάσετε να αλλάξετε τις [[Special:Preferences|{{SITENAME}} προτιμήσεις]] σας.",
        "yourname": "Όνομα χρήστη:",
        "remembermypassword": "Απομνημόνευση της σύνδεσής μου σε αυτόν τον περιηγητή (για μέγιστο $1 {{PLURAL:$1|ημέρα|ημέρες}})",
        "userlogin-remembermypassword": "Να διατηρούμαι μόνιμα σε σύνδεση",
        "userlogin-signwithsecure": "Χρησιμοποιείστε ασφαλή σύνδεση",
+       "cannotloginnow-title": "Δεν μπορείτε να συνδεθείτε τώρα",
+       "cannotloginnow-text": "Η σύνδεση δεν είναι δυνατή όταν χρησιμοποιείτε την $1.",
        "yourdomainname": "Το domain σας:",
        "password-change-forbidden": "Δεν μπορείτε να αλλάξετε τους κωδικούς πρόσβασης σε αυτό το βίκι.",
        "externaldberror": "Είτε συνέβη κάποιο σφάλμα εξωτερικής πιστοποίησης της βάσης δεδομένων είτε δεν σας έχει επιτραπεί να ενημερώσετε τον εξωτερικό σας λογαριασμό.",
        "resetpass_submit": "Δώστε κωδικό πρόσβασης και συνδεθείτε",
        "changepassword-success": "Ο κωδικός πρόσβασής σας άλλαξε επιτυχώς!",
        "changepassword-throttled": "Κάνατε πάρα πολλές πρόσφατες απόπειρες σύνδεσης.\nΠαρακαλούμε περιμένετε $1 προτού ξαναδοκιμάσετε.",
+       "botpasswords": "Κωδικοί πρόσβασης για Μποτ",
+       "botpasswords-disabled": "Οι κωδικοί πρόσβασης των ρομπότ είναι απενεργοποιημένοι.",
+       "botpasswords-no-central-id": "Για να χρησιμοποιήσετε τους κωδικούς πρόσβασης των ρομπότ θα πρέπει να συνδεθείτε με έναν κεντρικό λογαριασμό.",
+       "botpasswords-existing": "Υπάρχοντες κωδικοί πρόσβασης ρομπότ",
+       "botpasswords-createnew": "Δημιουργία νέου κωδικού πρόσβασης ρομπότ",
+       "botpasswords-editexisting": "Επεξεργασία υπάρχοντος κωδικού πρόσβασης ρομπότ",
+       "botpasswords-label-appid": "Ονομασία ρομπότ:",
+       "botpasswords-label-create": "Δημιουργία",
+       "botpasswords-label-update": "Ενημέρωση",
+       "botpasswords-label-cancel": "Ακύρωση",
+       "botpasswords-label-delete": "Διαγραφή",
+       "botpasswords-label-resetpassword": "Επαναφορά κωδικού",
+       "botpasswords-label-grants": "Ισχύουσες άδειες:",
+       "botpasswords-label-restrictions": "Περιορισμοί χρήσης:",
+       "botpasswords-bad-appid": "Η ονομασία του ρομπότ «$1» δεν είναι έγκυρη.",
+       "botpasswords-update-failed": "Αποτυχία ενημέρωσης της ονομασίας του ρομπότ «$1». Μήπως διαγράφτηκε ο κωδικός;",
+       "botpasswords-created-title": "Ο κωδικός πρόσβασης του ρομπότ δημιουργήθηκε",
+       "botpasswords-created-body": "Ο κωδικός πρόσβασης του ρομπότ «$1» δημιουργήθηκε επιτυχώς.",
+       "botpasswords-updated-title": "Ο κωδικός πρόσβασης του ρομπότ ενημερώθηκε",
+       "botpasswords-updated-body": "Ο κωδικός πρόσβασης του ρομπότ «$1» ενημερώθηκε με επιτυχία.",
+       "botpasswords-deleted-title": "Ο κωδικός πρόσβασης του ρομπότ διαγράφτηκε",
+       "botpasswords-no-provider": "BotPasswordsSessionProvider δεν είναι διαθέσιμο.",
        "resetpass_forbidden": "Οι κωδικοί πρόσβασης δεν μπορούν να αλλαχθούν",
        "resetpass-no-info": "Πρέπει να είστε συνδεδεμένος για να δείτε αυτήν την σελίδα απευθείας",
        "resetpass-submit-loggedin": "Αλλαγή κωδικού",
        "userrights": "Διαχείριση δικαιωμάτων χρηστών",
        "userrights-lookup-user": "Διαχείριση ομάδων χρηστών",
        "userrights-user-editname": "Δηλώστε όνομα χρήστη:",
-       "editusergroup": "Επεξεργασία ομάδων χρηστών",
+       "editusergroup": "Επεξεργασία {{GENDER:$1|ομάδων}} χρηστών",
        "editinguser": "Αλλαγή δικαιωμάτων χρήστη {{GENDER:$1|του χρήστη|της χρήστριας}} <strong>[[User:$1|$1]]</strong> $2",
        "userrights-editusergroup": "Επεξεργασία ομάδων χρηστών",
-       "saveusergroups": "Αποθήκευση ομάδων χρηστών",
+       "saveusergroups": "Αποθήκευση {{GENDER:$1|ομάδων}}  χρηστών",
        "userrights-groupsmember": "Μέλος της ομάδας:",
        "userrights-groupsmember-auto": "Αυτονόητο μέλος του:",
        "userrights-groups-help": "Μπορείτε να μεταβάλετε τις ομάδες στις οποίες ανήκει {{GENDER:$1|αυτός ο χρήστης|αυτή η χρήστρια}}:\n* Τσεκαρισμένο κουτάκι σημαίνει ότι {{GENDER:$1|ο χρήστης|η χρήστρια}} ανήκει σε αυτήν την ομάδα.\n* Μη τσεκαρισμένο κουτάκι σημαίνει ότι {{GENDER:$1|ο χρήστης|η χρήστρια}} δεν ανήκει σε αυτήν την ομάδα.\n* Αστερίσκος (*) σημαίνει ότι δεν μπορείτε να αφαιρέσετε την ομάδα άπαξ και την προσθέσετε, ή το ανάποδο.",
        "right-createpage": "Δημιουργία σελίδων (που δεν είναι σελίδες συζήτησης)",
        "right-createtalk": "Δημιουργία σελίδων συζήτησης",
        "right-createaccount": "Δημιουργία νέων λογαριασμών χρηστών",
+       "right-autocreateaccount": "Συνδεθείτε αυτόματα με έναν εξωτερικό λογαριασμό χρήστη",
        "right-minoredit": "Σημείωση των επεξεργασιών ως μικρής κλίμακας",
        "right-move": "Μετακίνηση σελίδων",
        "right-move-subpages": "Μετακίνηση σελίδων μαζί με τις υποσελίδες τους",
        "right-managechangetags": "Δημιουργία και διαγραφή [[Special:Tags|ετικετών]] από τη βάση δεδομένων",
        "right-applychangetags": "Εφαρμόστε [[Special:Tags|ετικέτες]] μαζί με τις αλλαγές",
        "right-changetags": "Προσθέστε και αφαιρέστε αυθαίρετες [[Special:Tags|ετικέτες]] σε μεμονωμένες εκδόσεις και καταχωρήσεις καταγραφών",
+       "grant-group-page-interaction": "Αλληλεπίδραση με σελίδες",
+       "grant-group-file-interaction": "Αλληλεπίδραση με πολυμέσα",
+       "grant-group-watchlist-interaction": "Αλληλεπίδραση με τη λίστα παρακολούθησής σου",
+       "grant-group-email": "Αποστολή email",
+       "grant-group-high-volume": "Εκτέλεση υψηλής έντασης δραστηριότητας",
+       "grant-group-customization": "Ρυθμίσεις και προτιμήσεις",
+       "grant-group-administration": "Εκτέλεση διαχειριστικών ενεργειών",
+       "grant-blockusers": "Φραγή και αναίρεση φραγής χρηστών",
+       "grant-createaccount": "Δημιουργία λογαριασμών",
+       "grant-createeditmovepage": "Δημιουργία, επεξεργασία και μετακίνηση σελίδων",
+       "grant-delete": "Διαγραφή σελίδων, αναθεωρήσεων, και αρχείων καταγραφής",
+       "grant-editinterface": "Επεξεργασία του ονοματοχώρου Mediawiki και της CSS/JavaScript χρήστη",
+       "grant-editmyoptions": "Επεξεργασία των προτιμήσεών χρήστη σας",
+       "grant-editmywatchlist": "Επεξεργασία της λίστας παρακολούθησής σας",
+       "grant-editpage": "Επεξεργασία υπαρχουσών σελίδων",
+       "grant-editprotected": "Επεξεργασία προστατευμένων σελίδων",
+       "grant-highvolume": "Υψηλής έντασης επεξεργασία",
+       "grant-oversight": "Απόκρυψη χρηστών και καταστολή αναθεωρήσεων",
+       "grant-patrol": "Περιπολία αλλαγών σε σελίδες",
+       "grant-protect": "Προστασία και κατάργηση προστασίας σελίδων",
+       "grant-rollback": "Η επαναφορά αλλαγών σε σελίδες",
+       "grant-sendemail": "Αποστολή μηνύματος ηλεκτρονικού ταχυδρομείου σε άλλους χρήστες",
+       "grant-uploadeditmovefile": "Ανέβασμα, αντικατάσταση, και μετακίνηση αρχείων",
+       "grant-basic": "Βασικά δικαιώματα",
        "newuserlogpage": "Αρχείο καταγραφών δημιουργίας χρηστών",
        "newuserlogpagetext": "Αυτή είναι μια καταγραφή δημιουργίας χρηστών.",
        "rightslog": "Αρχείο καταγραφών δικαιωμάτων χρηστών",
        "uploaded-script-svg": "Βρέθηκε στοιχείο με δυνατότητα δημιουργίας δέσμης ενεργειών «$1» στο ανεβασμένο αρχείο SVG.",
        "uploaded-hostile-svg": "Βρέθηκε μη ασφαλές CSS στο στοιχείο στυλ του ανεβασμένου αρχείου SVG.",
        "uploaded-event-handler-on-svg": "Δεν επιτρέπεται ο ορισμός ιδιοτήτων χειρισμού συμβάντων <code>$1=\"$2\"</code> σε αρχεία SVG.",
-       "uploaded-href-attribute-svg": "Δεν επιτρέπονται οι ιδιότητες href <code>&lt;$1 $2=\"$3\"&gt;</code> με μη τοπικό προορισμό (π.χ. http://, javascript:, κ.τ.λ.) σε αρχεία SVG.",
        "uploaded-href-unsafe-target-svg": "Βρέθηκε href προς έναν μη ασφαλή προορισμό <code>&lt;$1 $2=\"$3\"&gt;</code> στο ανεβασμένο αρχείο SVG.",
        "uploaded-animate-svg": "Βρέθηκε μία ετικέτα <code>&lt;animate&gt;</code> που ίσως να αλλάζει το href, με την ιδιότητα \"from\" <code>&lt;$1 $2=\"$3\"&gt;</code> στο ανεβασμένο αρχείο SVG.",
        "uploaded-setting-event-handler-svg": "Η ρύθμιση ιδιοτήτων χειρισμού σφαλμάτων είναι αποκλεισμένη, βρέθηκε <code>&lt;$1 $2=\"$3\"&gt;</code> στο ανεβασμένο αρχείο SVG.",
        "filename-thumb-name": "Αυτό μοιάζει με έναν τίτλο μικρογραφίας. Παρακαλούμε μην ανεβάζετε εικόνες μικρογραφίας και πάλι στο ίδιο wiki. Διαφορετικά, παρακαλούμε να διορθώσετε το όνομα του αρχείου έτσι ώστε να έχει περισσότερο νόημα, και να μην έχει πρόθεμα μικρογραφίας.",
        "filename-bad-prefix": "Το όνομα του αρχείου που ανεβάζετε ξεκινά με '''\"$1\"''', που είναι ένα μη περιγραφικό όνομα που συνήθως εκχωρείται αυτόματα από ψηφιακές φωτογραφικές μηχανές. Παρακαλώ διαλέξτε ένα πιο περιγραφικό όνομα για το αρχείο σας.",
        "filename-prefix-blacklist": " #<!-- leave this line exactly as it is --> <pre>\n# Η σύνταξη είναι ως ακολούθως:\n#   * Οτιδήποτε από ένα χαρακτήρα «#» μέχρι το τέλος της γραμμής είναι ένα σχόλιο\n#   * Οποιαδήποτε μη κενή γραμμή είναι ένα πρόθεμα για τυπικά ονόματα αρχείων ορισμένα\n#     αυτόματα από ψηφιακές φωτογραφικές μηχανές\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # μερικά κινητά τηλέφωνα\nIMG # γενικά\nJD # Jenoptik\nMGP # Pentax\nPICT # διάφορα\n #</pre> <!-- leave this line exactly as it is -->",
-       "upload-success-subj": "Επιτυχής φόρτωση",
-       "upload-success-msg": "Το ανέβασμα σας από [$2] ήταν επιτυχές.Είναι διαθέσιμο εδώ: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Πρόβλημα στα ανέβασμα.",
-       "upload-failure-msg": "Υπήρξε ένα πρόβλημα με το φόρτωσή σας από [$2]:\n\n$1",
-       "upload-warning-subj": "Προειδοποίηση φόρτωσης",
-       "upload-warning-msg": "Υπήρξε ένα πρόβλημα με τη φόρτωσή σας από [$2]. Μπορείτε να επιστρέψετε στη [[Special:Upload/stash/$1|φόρμα φόρτωσης]] για να διορθώσετε αυτό το πρόβλημα.",
        "upload-proto-error": "Λανθασμένο πρωτόκολλο",
        "upload-proto-error-text": "Το απομακρυσμένο ανέβασμα απαιτεί URL με πρόθεμα <code>http://</code> ή <code>ftp://</code>.",
        "upload-file-error": "Εσωτερικό σφάλμα",
        "log-title-wildcard": "Αναζήτησε τίτλους που αρχίζουν με αυτό το κείμενο",
        "showhideselectedlogentries": "Αλλαγή ορατότητας των επιλεγμένων καταχωρήσεων στο αρχείο καταγραφής συμβάντων",
        "log-edit-tags": "Επεξεργασία ετικετών των επιλεγμένων καταχωρήσεων του αρχείου καταγραφής",
+       "checkbox-all": "Όλα",
+       "checkbox-none": "Κανένα",
        "allpages": "Όλες οι σελίδες",
        "nextpage": "Επόμενη σελίδα ($1)",
        "prevpage": "Προηγούμενη σελίδα ($1)",
        "listgrouprights-namespaceprotection-header": "Περιορισμοί ονοματοχώρων",
        "listgrouprights-namespaceprotection-namespace": "Ονοματοχώρος",
        "listgrouprights-namespaceprotection-restrictedto": "Δικαίωμα(τα) που επιτρέπει(ουν) σε χρήστη να επεξεργαστεί",
+       "listgrants-rights": "Δικαιώματα",
        "trackingcategories": "Κατηγορίες παρακολούθησης",
        "trackingcategories-summary": "Αυτή η σελίδα εμφανίζει τις κατηγορίες παρακολούθησης το περιεχόμενο των οποίων συμπληρώνεται αυτόματα από το λογισμικό MediaWiki. Τα ονόματά τους μπορεί να αλλαχθούν με την αλλαγή των σχετικών μηνυμάτων συστήματος στον ονοματοχώρο {{ns:8}}.",
        "trackingcategories-msg": "Κατηγορία παρακολούθησης",
        "wlheader-showupdated": "Σελίδες που έχουν υποστεί αλλαγές από την τελευταία φορά που τις επισκεφθήκατε εμφανίζονται με '''έντονους χαρακτήρες'''.",
        "wlnote": "Παρακάτω είναι {{PLURAL:$1|η πιο πρόσφατη αλλαγή|οι <strong>$1</strong> πιο πρόσφατες αλλαγές}} κατά τη διάρκεια {{PLURAL:$2|της τελευταίας ώρας|των <strong>$2</strong> τελευταίων ωρών}} ως προς τις $3 στις $4.",
        "wlshowlast": "Εμφάνιση των τελευταίων $1 ωρών $2 ημερών",
-       "watchlistall2": "όλα",
        "watchlist-hide": "Απόκρυψη",
        "watchlist-submit": "Προβολή",
        "wlshowtime": "Περίοδος χρόνου για να εμφανιστεί:",
        "block-log-flags-hiddenname": "όνομα χρήστη κρυμμένο",
        "range_block_disabled": "Η δυνατότητα του διαχειριστή να δημιουργεί περιοχές φραγής είναι απενεργοποιημένη.",
        "ipb_expiry_invalid": "Άκυρος χρόνος λήξης",
+       "ipb_expiry_old": "Ο χρόνος λήξης αναφέρεται στο παρελθόν.",
        "ipb_expiry_temp": "Οι κρυμμένες φραγές ονομάτων χρηστών πρέπει να είναι μόνιμες.",
        "ipb_hide_invalid": "Μη εφικτή καταστολή αυτού του λογαριασμού. Μπορεί να έχει περισσότερες από {{PLURAL:$1|μια επεξεργασία|$1 επεξεργασίες}}.",
        "ipb_already_blocked": "Η διεύθυνση IP \"$1\" είναι ήδη φραγμένη",
        "lockedbyandtime": "(Από {{GENDER:$1| $1 }} στις $2 στις $3 )",
        "move-page": "Μετακίνηση $1",
        "move-page-legend": "Μετακίνηση σελίδας",
-       "movepagetext": "Χρησιμοποιώντας τη φόρμα που ακολουθεί θα γίνει μετονομασία σελίδας, μεταφέροντας όλο το ιστορικό της στο νέο όνομα.\nΟ παλιός τίτλος της σελίδας θα γίνει σελίδα ανακατεύθυνσης προς τον νέο τίτλο.\nΜπορείτε να ενημερώσετε αυτόματα τις ανακατευθύνσεις που οδηγούν στον αρχικό τίτλο.\nΑν επιλέξετε να μην ενημερωθούν αυτόματα, μην ξεχάσετε να ελέγξετε για [[Special:DoubleRedirects|διπλές]] ή [[Special:BrokenRedirects|κατεστραμμένες ανακατευθύνσεις]].\nΕίναι δική σας ευθύνη να επιβεβαιώσετε ότι οι σύνδεσμοι εξακολουθούν να δείχνουν προς τη σωστή κατεύθυνση.\n\nΛάβετε υπόψιν σας ότι η σελίδα '''δεν''' θα μετακινηθεί αν υπάρχει ήδη μια άλλη σελίδα υπό το νέο τίτλο, εκτός αν η σελίδα αυτή είναι ανακατεύθυνση και δεν έχει ιστορικό επεξεργασίας.\n\nΑυτό σημαίνει ότι σε περίπτωση λάθους μπορείτε να μετονομάσετε ξανά μια σελίδα δίνοντας της την αρχική της ονομασία αλλά δεν μπορείτε να αντικαταστήσετε μια υπάρχουσα σελίδα.\n\n'''ΠΡΟΣΟΧΗ!'''\nΑυτή η αλλαγή μπορεί να αποβεί δραστική και αναπάντεχη όταν πρόκειται για δημοφιλείς σελίδες.\nΠαρακαλούμε βεβαιωθείτε ότι αντιλαμβάνεστε τις επιπτώσεις αυτής της ενέργειας πριν προχωρήσετε.",
-       "movepagetext-noredirectfixer": "Χρησιμοποιώντας τη φόρμα που ακολουθεί μπορείτε να μετονομάσετε σελίδες και να μεταφέρετε όλο το ιστορικό τους στο νέο όνομα.\nΟ παλιός τίτλος της σελίδας θα γίνει μια σελίδα ανακατεύθυνσης στο νέο τίτλο.\nΜπορείτε να ενημερώσετε τις ανακατευθύνσεις που οδηγούν στον αρχικό τίτλο αυτόματα.\nΑν επιλέξετε να μην γίνει, θα πρέπει να ελέγξετε τις  [[Special:DoubleRedirects|διπλές]] και τις [[Special:BrokenRedirects|κατεστραμμένες ανακατευθύνσεις]].\nΕίστε υπεύθυνος να επιβεβαιώσετε ότι οι σύνδεσμοι εξακολουθούν να οδηγούν προς τις κατευθύνσεις που πρέπει.\n\nΛάβετε υπόψη σας ότι η σελίδα '''δεν''' θα μετακινηθεί αν υπάρχει ήδη μια άλλη σελίδα κάτω από το νέο τίτλο, εκτός αν η σελίδα αυτή είναι κενή ή είναι ανακατεύθυνση χωρίς ιστορικό επεξεργασίας.\nΑυτό σημαίνει ότι, στην περίπτωση που έχετε κάνει λάθος, μπορείτε να μετονομάσετε μια σελίδα ξαναδίνοντας της την αρχική της ονομασία αλλά δεν μπορείτε να αντικαταστήσετε μια υπάρχουσα σελίδα.\n\n'''ΠΡΟΣΟΧΗ!'''\nΗ μετονομασία σελίδας είναι μια αιφνίδια και δραστική αλλαγή όταν πρόκειται για δημοφιλείς σελίδες.\nΠαρακαλούμε, πριν το αποφασίσετε, να εξετάσετε προσεκτικά τις πιθανές επιπτώσεις αυτής της ενέργειας.",
+       "movepagetext": "Χρησιμοποιώντας τη φόρμα που ακολουθεί θα γίνει μετονομασία σελίδας, μεταφέροντας όλο το ιστορικό της στο νέο όνομα.\nΟ παλιός τίτλος της σελίδας θα γίνει σελίδα ανακατεύθυνσης προς τον νέο τίτλο.\nΜπορείτε να ενημερώσετε αυτόματα τις ανακατευθύνσεις που οδηγούν στον αρχικό τίτλο.\nΑν επιλέξετε να μην ενημερωθούν αυτόματα, μην ξεχάσετε να ελέγξετε για [[Special:DoubleRedirects|διπλές]] ή [[Special:BrokenRedirects|κατεστραμμένες ανακατευθύνσεις]].\nΕίναι δική σας ευθύνη να επιβεβαιώσετε ότι οι σύνδεσμοι εξακολουθούν να δείχνουν προς τη σωστή κατεύθυνση.\n\nΛάβετε υπόψιν σας ότι η σελίδα <strong>δεν</strong> θα μετακινηθεί αν υπάρχει ήδη μια άλλη σελίδα υπό το νέο τίτλο, εκτός αν η σελίδα αυτή είναι ανακατεύθυνση και δεν έχει ιστορικό επεξεργασίας.\n\nΑυτό σημαίνει ότι σε περίπτωση λάθους μπορείτε να μετονομάσετε ξανά μια σελίδα δίνοντας της την αρχική της ονομασία αλλά δεν μπορείτε να αντικαταστήσετε μια υπάρχουσα σελίδα.\n\n<strong>Σημείωση:</strong>\nΑυτή η αλλαγή μπορεί να αποβεί δραστική και αναπάντεχη όταν πρόκειται για δημοφιλείς σελίδες.\nΠαρακαλούμε βεβαιωθείτε ότι αντιλαμβάνεστε τις επιπτώσεις αυτής της ενέργειας πριν προχωρήσετε.",
+       "movepagetext-noredirectfixer": "Χρησιμοποιώντας τη φόρμα που ακολουθεί μπορείτε να μετονομάσετε σελίδες και να μεταφέρετε όλο το ιστορικό τους στο νέο όνομα.\nΟ παλιός τίτλος της σελίδας θα γίνει μια σελίδα ανακατεύθυνσης στο νέο τίτλο.\nΜπορείτε να ενημερώσετε τις ανακατευθύνσεις που οδηγούν στον αρχικό τίτλο αυτόματα.\nΑν επιλέξετε να μην γίνει, θα πρέπει να ελέγξετε τις  [[Special:DoubleRedirects|διπλές]] και τις [[Special:BrokenRedirects|κατεστραμμένες ανακατευθύνσεις]].\nΕίστε υπεύθυνος να επιβεβαιώσετε ότι οι σύνδεσμοι εξακολουθούν να οδηγούν προς τις κατευθύνσεις που πρέπει.\n\nΛάβετε υπόψη σας ότι η σελίδα <strong>δεν</strong>  θα μετακινηθεί αν υπάρχει ήδη μια άλλη σελίδα κάτω από το νέο τίτλο, εκτός αν η σελίδα αυτή είναι κενή ή είναι ανακατεύθυνση χωρίς ιστορικό επεξεργασίας.\nΑυτό σημαίνει ότι, στην περίπτωση που έχετε κάνει λάθος, μπορείτε να μετονομάσετε μια σελίδα ξαναδίνοντας της την αρχική της ονομασία αλλά δεν μπορείτε να αντικαταστήσετε μια υπάρχουσα σελίδα.\n\n<strong>Σημείωση:</strong> \nΗ μετονομασία σελίδας είναι μια αιφνίδια και δραστική αλλαγή όταν πρόκειται για δημοφιλείς σελίδες.\nΠαρακαλούμε, πριν το αποφασίσετε, να εξετάσετε προσεκτικά τις πιθανές επιπτώσεις αυτής της ενέργειας.",
        "movepagetalktext": "Αν τσεκάρετε αυτό το κουτί, η σχετιζόμενη σελίδα συζήτησης θα μετακινηθεί αυτόματα στο νέο τίτλο, εκτός αν υπάρχει κάτω από το νέο όνομα μια σελίδα συζήτησης που δεν είναι κενή.\n\nΣε αυτή την περίπτωση, θα πρέπει να μετακινήσετε ή να συγχωνεύσετε τη σελίδα με το χέρι αν είναι επιθυμητό.",
        "moveuserpage-warning": "'''Προσοχή:''' Ετοιμάζεστε να μετακινήσετε μια σελίδα χρήστη. Σημειώστε παρακαλώ ότι θα μετακινηθεί μόνο η σελίδα και ο χρήστης '''δεν''' θα μετονομαστεί.",
        "movecategorypage-warning": "<strong>Προειδοποίηση:</strong>Πρόκειται να μετακινήσετε μια σελίδα κατηγορίας. Έχετε υπόψη ότι θα μετακινηθεί μόνο η σελίδα και τυχόν σελίδες στην παλιά κατηγορία <em>δεν</em> θα μεταφερθούν στη νέα κατηγορία.",
        "move-leave-redirect": "Αφήστε πίσω μια ανακατεύθυνση",
        "protectedpagemovewarning": "Προειδοποίηση'' ':''' Αυτή η σελίδα έχει κλειδωθεί ώστε μόνο χρήστες με δικαιώματα διαχειριστή μπορούν να την μετακινήσουν.\nΗ πιο πρόσφατη καταχώρηση του αρχείου καταγραφής παρέχεται παρακάτω για αναφορά:",
        "semiprotectedpagemovewarning": "'''Σημείωση:''' Αυτή η σελίδα έχει κλειδωθεί έτσι ώστε μόνο οι εγγεγραμμένοι χρήστες να μπορούν να την μετακινήσουν.\nΗ πιο πρόσφατη καταχώρηση του αρχείου καταγραφής παρέχεται παρακάτω για αναφορά:",
-       "move-over-sharedrepo": "== Î¤Î¿ Î±Ï\81Ï\87είο Ï\85Ï\80άÏ\81Ï\87ει ==\nΤο [[:$1]] Ï\85Ï\80άÏ\81Ï\87ει Ï\83ε Î¼Î¹Î± ÎºÎ¿Î¹Î½Î® Î±Ï\80οθήκη. Η μετακίνηση ενός αρχείου προς αυτόν τον τίτλο θα παρακάμψει το κοινό αρχείο.",
+       "move-over-sharedrepo": "== Î¤Î¿ Î±Ï\81Ï\87είο Ï\85Ï\80άÏ\81Ï\87ει ==\nΤο [[:$1]] Ï\85Ï\80άÏ\81Ï\87ει Ï\83ε Î­Î½Î± ÎºÎ¿Î¹Î½Ï\8c Î±Ï\80οθεÏ\84ήÏ\81ιο. Η μετακίνηση ενός αρχείου προς αυτόν τον τίτλο θα παρακάμψει το κοινό αρχείο.",
        "file-exists-sharedrepo": "Το όνομα αρχείου που επιλέχθηκε είναι ήδη σε χρήση σε ένα κοινό χώρο αποθήκευσης.\nΠαρακαλούμε επιλέξτε ένα άλλο όνομα.",
        "export": "Εξαγωγή σελίδων",
        "exporttext": "Μπορείτε να εξαγάγετε σε XML το κείμενο και το ιστορικό επεξεργασίας μιας συγκεκριμένης σελίδας ή ενός συνόλου σελίδων. \nΑυτό μπορεί να εισαχθεί σε ένα άλλο wiki μέσω της [[Special:Import|σελίδας εισαγωγής]] αν χρησιμοποιείτε το MediaWiki.\n\nΓια την εξαγωγή σελίδων, συμπληρώστε τους τίτλους στο παρακάτω πλαίσιο κειμένου, ένα τίτλο σε κάθε σειρά και επιλέξτε μεταξύ του να εξαγάγετε την τρέχουσα έκδοση μαζί με τις παλιότερες αναθεωρήσεις συν τις καταγραφές του ιστορικού, ή μόνο την τρέχουσα έκδοση με πληροφορίες μόνο για την τελευταία επεξεργασία.\n\nΣτην τελευταία περίπτωση μπορείτε εναλλακτικά να κάνετε και χρήση συνδέσμου, π.χ. [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] για τη σελίδα «[[{{MediaWiki:Mainpage}}]]».",
        "javascripttest-pagetext-frameworks": "Παρακαλώ επιλέξτε ένα από τα ακόλουθα πλαίσια δοκιμών: $1",
        "javascripttest-pagetext-skins": "Επιλέξτε ένα skin για να εκτελέσετε δοκιμές με αυτό:",
        "javascripttest-qunit-intro": "Ανατρέξτε στην ενότητα [ $1 τεκμηρίωση δοκιμών] στο mediawiki.org.",
-       "tooltip-pt-userpage": "Η σελίδα χρήστη σας",
+       "tooltip-pt-userpage": "Η σελίδα {{GENDER:|χρήστη σας|χρήστριας σας}}",
        "tooltip-pt-anonuserpage": "Η σελίδα χρήστη στον οποίο αντιστοιχεί η διεύθυνση IP που έχετε",
-       "tooltip-pt-mytalk": "Η σελίδα συζήτησής σας",
+       "tooltip-pt-mytalk": "Η σελίδα συζήτησής {{GENDER:|σας}}",
        "tooltip-pt-anontalk": "Συζήτηση σχετικά με τις αλλαγές που έγιναν από αυτή τη διεύθυνση IP",
-       "tooltip-pt-preferences": "Οι προτιμήσεις σας",
+       "tooltip-pt-preferences": "Οι προτιμήσεις {{GENDER:|σας}}",
        "tooltip-pt-watchlist": "Η λίστα με τις σελίδες που παρακολουθείτε για αλλαγές",
-       "tooltip-pt-mycontris": "Κατάλογος των συνεισφορών σας",
+       "tooltip-pt-mycontris": "Κατάλογος των συνεισφορών {{GENDER:|σας}}",
        "tooltip-pt-anoncontribs": "Μια λίστα με τις επεξεργασίες που έγιναν από αυτή τη διεύθυνση IP",
        "tooltip-pt-login": "Σας ενθαρρύνουμε να συνδεθείτε· ωστόσο, δεν είναι υποχρεωτικό",
        "tooltip-pt-logout": "Έξοδος",
        "tooltip-t-recentchangeslinked": "Πρόσφατες αλλαγές σε σελίδες που παραπέμπουν οι σύνδεσμοι αυτής της σελίδας",
        "tooltip-feed-rss": "RSS feed για αυτή τη σελίδα",
        "tooltip-feed-atom": "Ροή Atom για αυτήν τη σελίδα",
-       "tooltip-t-contributions": "Λίστα με τις συνεισφορές αυτού του χρήστη",
-       "tooltip-t-emailuser": "Αποστολή μηνύματος ηλεκτρονικής αλληλογραφίας σε αυτόν το χρήστη",
+       "tooltip-t-contributions": "Λίστα με τις συνεισφορές {{GENDER:$1|αυτού του χρήστη|αυτής της χρήστη}}",
+       "tooltip-t-emailuser": "Αποστολή μηνύματος ηλεκτρονικής αλληλογραφίας σε {{GENDER:$1|αυτόν το χρήστη|αυτήν τη χρήστη}}",
        "tooltip-t-info": "Περισσότερες πληροφορίες σχετικά με αυτήν τη σελίδα",
        "tooltip-t-upload": "Ανέβασμα αρχείων",
        "tooltip-t-specialpages": "Κατάλογος με όλες τις ειδικές σελίδες",
        "htmlform-user-not-valid": "Το <strong>$1</strong> δεν είναι έγκυρο όνομα χρήστη.",
        "sqlite-has-fts": "$1 με υποστήριξη αναζήτησης πλήρους κειμένου",
        "sqlite-no-fts": "$1 χωρίς την υποστήριξη αναζήτησης πλήρους κειμένου",
-       "logentry-delete-delete": "{{GENDER:$1|Ο|Η}} $1 διέγραψε τη σελίδα $3",
+       "logentry-delete-delete": "{{GENDER:$2|Ο|Η}} $1 διέγραψε τη σελίδα $3",
        "logentry-delete-restore": "Ο/Η $1 αποκατέστησε τη σελίδα $3",
        "logentry-delete-event": "{{GENDER:$2|Ο|Η}} $1 άλλαξε την ορατότητα {{PLURAL:$5|ενός καταγραφόμενου συμβάντος|$5 καταγραφόμενων συμβάντων}} στο $3: $4",
        "logentry-delete-revision": "{{GENDER:$2|Ο|Η}} $1 άλλαξε την ορατότητα {{PLURAL:$5|μίας αναθεώρησης|$5 αναθεωρήσεων}} στη σελίδα $3: $4",
        "expand_templates_preview": "Προεπισκόπηση",
        "expand_templates_preview_fail_html": "<em>Επειδή το {{SITENAME}} έχει ενεργοποιημένη ακατέργαστη HTML  και υπάρχει μια απώλεια της συνόδου δεδομένων, η προεπισκόπηση είναι κρυμμένη ως ένα προληπτικό μέτρο κατά επιθέσεων JavaScript.</em>\n\n<strong>Αν αυτή είναι μια δικαιολογημένη προσπάθεια προεπισκόπησης, παρακαλούμε δοκιμάστε ξανά.</strong>\nΑν εξακολουθεί να μην λειτουργεί, δοκιμάστε να [[Special:UserLogout|αποσυνδεθείτε]] και να συνδεθείτε πάλι.",
        "expand_templates_preview_fail_html_anon": "<em>Επειδή το {{SITENAME}} έχει ενεργοποιημένη raw HTML και δεν είστε συνδεδεμένοι, η προεπισκόπηση είναι κρυμμένη ως ένα προληπτικό μέτρο ενάντια σε επιθέσεις JavaScript.</em>\n\n<strong>Αν αυτό είναι δικαιολογημένη απόπειρα προεπισκόπησης, παρακαλούμε να [[Special:UserLogin|συνδεθείτε]] και δοκιμάστε πάλι.</strong>",
-       "pagelanguage": "Î\95Ï\80ιλογέαÏ\82 γλώσσας σελίδας",
+       "pagelanguage": "Î\91λλαγή γλώσσας σελίδας",
        "pagelang-name": "Σελίδα",
        "pagelang-language": "Γλώσσα",
        "pagelang-use-default": "Χρήση προεπιλεγμένης γλώσσας",
        "action-pagelang": "αλλαγή της γλώσσας σελίδας",
        "log-name-pagelang": "Αρχείο καταγραφών αλλαγών γλώσσας",
        "log-description-pagelang": "Αυτό είναι ένα αρχείο καταγραφής των αλλαγών στη σελίδα γλώσσες.",
-       "logentry-pagelang-pagelang": "{{GENDER:$2|Î\9f\97}} $1 Î¬Î»Î»Î±Î¾Îµ Ï\84η Î³Î»Ï\8eÏ\83Ï\83α Ï\83ελίδαÏ\82 Ï\84ηÏ\82 Ï\83ελίδαÏ\82 $3 Î±Ï\80Ï\8c $4 Ï\83ε $5.",
+       "logentry-pagelang-pagelang": "{{GENDER:$2|Ο|Η}} $1 άλλαξε τη γλώσσα της σελίδας $3 από $4 σε $5.",
        "default-skin-not-found": "Ουπς! Το default skin για το wiki, που ορίζεται στο <code dir=\"ltr\">$wgDefaultSkin</code> ως <code>$1</code>, δεν είναι διαθέσιμη.\n\nΗ εγκατάσταση φαίνεται να περιλαμβάνει τις ακόλουθες {{PLURAL:$4|δερμάτων|δέρματα}}. Δείτε [https://www.mediawiki.org/wiki/Manual:Skin_configuration Εγχειρίδιο: Δέρμα διαμόρφωση] για πληροφορίες σχετικά με τον τρόπο για να ενεργοποιήσετε {{PLURAL:$4|it|και να επιλέξετε το default}}.\n\n$2\n\n; Αν έχετε μόλις εγκαταστήσει το MediaWiki:\n: Πιθανότατα εγκατεστημένο από το git, ή απευθείας από τον πηγαίο κώδικα χρησιμοποιώντας κάποια άλλη μέθοδο. Αυτό είναι αναμενόμενο. Δοκιμάστε να εγκαταστήσετε κάποια δέρματα από [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org δέρματος, κατάλογος]:\n:* Τη λήψη του [https://www.mediawiki.org/wiki/Download tarball installer], το οποίο έρχεται με πολλά δέρματα και επεκτάσεις. Μπορείτε να αντιγράψετε και να επικολλήσετε τα <code>δέρματα/</code> directory.\n:* Λήψη μεμονωμένων δέρμα tarballs από [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Χρησιμοποιώντας το Git για να κατεβάσετε τα δέρματα].\n: Το κάνεις αυτό δεν πρέπει να παρεμβαίνει με το git repository αν είσαι MediaWiki προγραμματιστής.\n\n; Αν έχετε μόλις αναβαθμίσει MediaWiki:\n: Το MediaWiki 1.24 και νεότερα πλέον να ενεργοποιεί αυτόματα τα εγκατεστημένα δέρματα (βλέπε [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Εγχειρίδιο: Δέρμα autodiscovery]). Μπορείτε να επικολλήσετε το παρακάτω {{PLURAL:$5|γραμμή|γραμμές}} σε <code>LocalSettings.php</code> για να ενεργοποιήσετε {{PLURAL:$5|η|all}} εγκατασταθεί {{PLURAL:$5|δερμάτων|δέρματα}}:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Αν έχετε μόλις τροποποιήσατε <code>LocalSettings.php</code>:\n: Ελέγξτε το δέρμα ονόματα για τυπογραφικά λάθη.",
        "default-skin-not-found-no-skins": "Ουπς! Το default skin για το wiki, που ορίζεται στο <code>$wgDefaultSkin</code> ως <code>$1</code>, δεν είναι διαθέσιμη.\n\nΔεν έχετε κανένα εγκατεστημένο δέρματα.\n\n; Αν έχετε μόλις εγκαταστήσει ή να αναβαθμιστούν MediaWiki:\n: Πιθανότατα εγκατεστημένο από το git, ή απευθείας από τον πηγαίο κώδικα χρησιμοποιώντας κάποια άλλη μέθοδο. Αυτό είναι αναμενόμενο. Το MediaWiki 1.24 και νεότερη έκδοση δεν περιλαμβάνει κανένα από τα δέρματα στο κύριο αποθετήριο. Δοκιμάστε να εγκαταστήσετε κάποια δέρματα από [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org δέρματος, κατάλογος]:\n:* Τη λήψη του [https://www.mediawiki.org/wiki/Download tarball installer], το οποίο έρχεται με πολλά δέρματα και επεκτάσεις. Μπορείτε να αντιγράψετε και να επικολλήσετε τα <code>δέρματα/</code> directory.\n:* Λήψη μεμονωμένων δέρμα tarballs από [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Χρησιμοποιώντας το Git για να κατεβάσετε τα δέρματα].\n: Το κάνεις αυτό δεν πρέπει να παρεμβαίνει με το git repository αν είσαι MediaWiki προγραμματιστής. Δείτε [https://www.mediawiki.org/wiki/Manual:Skin_configuration Εγχειρίδιο: Δέρμα διαμόρφωση] για πληροφορίες για το πώς να ενεργοποιήσετε τα δέρματα και να επιλέξετε την προεπιλεγμένη.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> /$2 (ενεργοποιημένο)",
        "mw-widgets-dateinput-placeholder-month": "ΕΕΕΕ-ΜΜ",
        "mw-widgets-titleinput-description-new-page": "η σελίδα που δεν υπάρχει ακόμα",
        "mw-widgets-titleinput-description-redirect": "ανακατεύθυνση στο $1",
-       "api-error-blacklisted": "Παρακαλώ επιλέξτε ένα διαφορετικό, περιγραφικό τίτλο."
+       "api-error-blacklisted": "Παρακαλώ επιλέξτε ένα διαφορετικό, περιγραφικό τίτλο.",
+       "sessionprovider-generic": "$1 συνεδρίες",
+       "sessionprovider-mediawiki-session-cookiesessionprovider": "συνεδρίες με βάση τα cookies",
+       "sessionprovider-nocookies": "Τα Cookies μπορούν να απενεργοποιηθούν. Βεβαιωθείτε ότι έχετε ενεργοποιημένα τα cookies και ξεκινήστε πάλι.",
+       "randomrootpage": "Τυχαία σελίδα ρίζα"
 }
index a54a88b..cb9f7c4 100644 (file)
        "virus-scanfailed": "scan failed (code $1)",
        "virus-unknownscanner": "unknown antivirus:",
        "logouttext": "<strong>You are now logged out.</strong>\n\nNote that some pages may continue to be displayed as if you were still logged in, until you clear your browser cache.",
-       "cannotlogoutnow-title": "Cannot log out now",
-       "cannotlogoutnow-text": "Logging out is not possible when using $1.",
        "welcomeuser": "Welcome, $1!",
        "welcomecreation-msg": "Your account has been created.\nYou can change your {{SITENAME}} [[Special:Preferences|preferences]] if you wish.",
        "yourname": "Username:",
        "remembermypassword": "Remember my login on this browser (for a maximum of $1 {{PLURAL:$1|day|days}})",
        "userlogin-remembermypassword": "Keep me logged in",
        "userlogin-signwithsecure": "Use secure connection",
-       "cannotloginnow-title": "Cannot log in now",
-       "cannotloginnow-text": "Logging in is not possible when using $1.",
        "yourdomainname": "Your domain:",
        "password-change-forbidden": "You cannot change passwords on this wiki.",
        "externaldberror": "There was either an authentication database error or you are not allowed to update your external account.",
        "resetpass_submit": "Set password and log in",
        "changepassword-success": "Your password has been changed successfully!",
        "changepassword-throttled": "You have made too many recent login attempts.\nPlease wait $1 before trying again.",
-       "botpasswords": "Bot passwords",
-       "botpasswords-summary": "<em>Bot passwords</em> allow access to a user account via the API without using the account's main login credentials. The user rights available when logged in with a bot password may be restricted.\n\nIf you don't know why you might want to do this, you should probably not do it. No one should ever ask you to generate one of these and give it to them.",
-       "botpasswords-disabled": "Bot passwords are disabled.",
-       "botpasswords-no-central-id": "To use bot passwords, you must be logged in to a centralized account.",
-       "botpasswords-existing": "Existing bot passwords",
-       "botpasswords-createnew": "Create a new bot password",
-       "botpasswords-editexisting": "Edit an existing bot password",
-       "botpasswords-label-appid": "Bot name:",
-       "botpasswords-label-create": "Create",
-       "botpasswords-label-update": "Update",
-       "botpasswords-label-cancel": "Cancel",
-       "botpasswords-label-delete": "Delete",
-       "botpasswords-label-resetpassword": "Reset the password",
-       "botpasswords-label-grants": "Applicable grants:",
-       "botpasswords-help-grants": "Each grant gives access to listed user rights that a user account already has. See the [[Special:ListGrants|table of grants]] for more information.",
-       "botpasswords-label-restrictions": "Usage restrictions:",
-       "botpasswords-label-grants-column": "Granted",
-       "botpasswords-bad-appid": "The bot name \"$1\" is not valid.",
-       "botpasswords-insert-failed": "Failed to add bot name \"$1\". Was it already added?",
-       "botpasswords-update-failed": "Failed to update bot name \"$1\". Was it deleted?",
-       "botpasswords-created-title": "Bot password created",
-       "botpasswords-created-body": "The bot password \"$1\" was created successfully.",
-       "botpasswords-updated-title": "Bot password updated",
-       "botpasswords-updated-body": "The bot password \"$1\" was updated successfully.",
-       "botpasswords-deleted-title": "Bot password deleted",
-       "botpasswords-deleted-body": "The bot password \"$1\" was deleted.",
-       "botpasswords-newpassword": "The new password to log in with <strong>$1</strong> is <strong>$2</strong>. <em>Please record this for future reference.</em>",
-       "botpasswords-no-provider": "BotPasswordsSessionProvider is not available.",
-       "botpasswords-restriction-failed": "Bot password restrictions prevent this login.",
-       "botpasswords-invalid-name": "The username specified does not contain the bot password separator (\"$1\").",
-       "botpasswords-not-exist": "User \"$1\" does not have a bot password named \"$2\".",
        "resetpass_forbidden": "Passwords cannot be changed",
        "resetpass-no-info": "You must be logged in to access this page directly.",
        "resetpass-submit-loggedin": "Change password",
        "right-createpage": "Create pages (which are not discussion pages)",
        "right-createtalk": "Create discussion pages",
        "right-createaccount": "Create new user accounts",
-       "right-autocreateaccount": "Automatically log in with an external user account",
        "right-minoredit": "Mark edits as minor",
        "right-move": "Move pages",
        "right-move-subpages": "Move pages with their subpages",
        "action-createpage": "create pages",
        "action-createtalk": "create discussion pages",
        "action-createaccount": "create this user account",
-       "action-autocreateaccount": "automatically create this external user account",
        "action-history": "view the history of this page",
        "action-minoredit": "mark this edit as minor",
        "action-move": "move this page",
        "uploaded-script-svg": "Found scriptable element \"$1\" in the uploaded SVG file.",
        "uploaded-hostile-svg": "Found unsafe CSS in the style element of uploaded SVG file.",
        "uploaded-event-handler-on-svg": "Setting event-handler attributes <code>$1=\"$2\"</code> is not allowed in SVG files.",
-       "uploaded-href-attribute-svg": "href attributes <code>&lt;$1 $2=\"$3\"&gt;</code> with non-local target (e.g. http://, javascript:, etc) are not allowed in SVG files.",
-       "uploaded-href-unsafe-target-svg": "Found href to unsafe target <code>&lt;$1 $2=\"$3\"&gt;</code> in the uploaded SVG file.",
+       "uploaded-href-attribute-svg": "href attributes in SVG files are only allowed to link to http:// or https:// targets, found <code>&lt;$1 $2=\"$3\"&gt;</code>.",
+       "uploaded-href-unsafe-target-svg": "Found href to unsafe data: URI target <code>&lt;$1 $2=\"$3\"&gt;</code> in the uploaded SVG file.",
        "uploaded-animate-svg": "Found \"animate\" tag that might be changing href, using the \"from\" attribute <code>&lt;$1 $2=\"$3\"&gt;</code> in the uploaded SVG file.",
        "uploaded-setting-event-handler-svg": "Setting event-handler attributes is blocked, found <code>&lt;$1 $2=\"$3\"&gt;</code> in the uploaded SVG file.",
        "uploaded-setting-href-svg": "Using the \"set\" tag to add \"href\" attribute to parent element is blocked.",
        "filename-thumb-name": "This looks like a thumbnail title. Please do not upload thumbnails back to the same wiki. Otherwise, please fix the filename so it is more meaningful, and does not have the thumbnail prefix.",
        "filename-bad-prefix": "The name of the file you are uploading begins with <strong>\"$1\"</strong>, which is a non-descriptive name typically assigned automatically by digital cameras.\nPlease choose a more descriptive name for your file.",
        "filename-prefix-blacklist": " #<!-- leave this line exactly as it is --> <pre>\n# Syntax is as follows:\n#   * Everything from a \"#\" character to the end of the line is a comment\n#   * Every non-blank line is a prefix for typical filenames assigned automatically by digital cameras\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # some mobile phones\nIMG # generic\nJD # Jenoptik\nMGP # Pentax\nPICT # misc.\n #</pre> <!-- leave this line exactly as it is -->",
-       "upload-success-subj": "Successful upload",
-       "upload-success-msg": "Your upload from [$2] was successful. It is available here: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Upload problem",
-       "upload-failure-msg": "There was a problem with your upload from [$2]:\n\n$1",
-       "upload-warning-subj": "Upload warning",
-       "upload-warning-msg": "There was a problem with your upload from [$2]. You may return to the [[Special:Upload/stash/$1|upload form]] to correct this problem.",
        "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-too-many-redirects": "The URL contained too many redirects",
        "upload-http-error": "An HTTP error occurred: $1",
        "upload-copy-upload-invalid-domain": "Copy uploads are not available from this domain.",
+       "upload-foreign-cant-upload": "This wiki is not configured to upload files to the requested foreign file repository.",
        "upload-dialog-title": "Upload file",
        "upload-dialog-button-cancel": "Cancel",
        "upload-dialog-button-done": "Done",
        "wlheader-showupdated": "Pages that have been changed since you last visited them are shown in <strong>bold</strong>.",
        "wlnote": "Below {{PLURAL:$1|is the last change|are the last <strong>$1</strong> changes}} in the last {{PLURAL:$2|hour|<strong>$2</strong> hours}}, as of $3, $4.",
        "wlshowlast": "Show last $1 hours $2 days",
-       "watchlistall2": "all",
        "watchlist-hide": "Hide",
        "watchlist-submit": "Show",
        "wlshowtime": "Period of time to display:",
        "move-page": "Move $1",
        "movepage-summary": "",
        "move-page-legend": "Move page",
-       "movepagetext": "Using the form below will rename a page, moving all of its history to the new name.\nThe old title will become a redirect page to the new title.\nYou can update redirects that point to the original title automatically.\nIf you choose not to, be sure to check for [[Special:DoubleRedirects|double]] or [[Special:BrokenRedirects|broken redirects]].\nYou are responsible for making sure that links continue to point where they are supposed to go.\n\nNote that the page will <strong>not</strong> be moved if there is already a page at the new title, unless the latter is a redirect and has no past edit history.\nThis means that you can rename a page back to where it was renamed from if you make a mistake, and you cannot overwrite an existing page.\n\n<strong>Warning!</strong>\nThis can be a drastic and unexpected change for a popular page;\nplease be sure you understand the consequences of this before proceeding.",
-       "movepagetext-noredirectfixer": "Using the form below will rename a page, moving all of its history to the new name.\nThe old title will become a redirect page to the new title.\nBe sure to check for [[Special:DoubleRedirects|double]] or [[Special:BrokenRedirects|broken redirects]].\nYou are responsible for making sure that links continue to point where they are supposed to go.\n\nNote that the page will <strong>not</strong> be moved if there is already a page at the new title, unless it is a redirect and has no past edit history.\nThis means that you can rename a page back to where it was renamed from if you make a mistake, and you cannot overwrite an existing page.\n\n<strong>Warning!</strong>\nThis can be a drastic and unexpected change for a popular page;\nplease be sure you understand the consequences of this before proceeding.",
+       "movepagetext": "Using the form below will rename a page, moving all of its history to the new name.\nThe old title will become a redirect page to the new title.\nYou can update redirects that point to the original title automatically.\nIf you choose not to, be sure to check for [[Special:DoubleRedirects|double]] or [[Special:BrokenRedirects|broken redirects]].\nYou are responsible for making sure that links continue to point where they are supposed to go.\n\nNote that the page will <strong>not</strong> be moved if there is already a page at the new title, unless the latter is a redirect and has no past edit history.\nThis means that you can rename a page back to where it was renamed from if you make a mistake, and you cannot overwrite an existing page.\n\n<strong>Note:</strong>\nThis can be a drastic and unexpected change for a popular page;\nplease be sure you understand the consequences of this before proceeding.",
+       "movepagetext-noredirectfixer": "Using the form below will rename a page, moving all of its history to the new name.\nThe old title will become a redirect page to the new title.\nBe sure to check for [[Special:DoubleRedirects|double]] or [[Special:BrokenRedirects|broken redirects]].\nYou are responsible for making sure that links continue to point where they are supposed to go.\n\nNote that the page will <strong>not</strong> be moved if there is already a page at the new title, unless it is a redirect and has no past edit history.\nThis means that you can rename a page back to where it was renamed from if you make a mistake, and you cannot overwrite an existing page.\n\n<strong>Note:</strong>\nThis can be a drastic and unexpected change for a popular page;\nplease be sure you understand the consequences of this before proceeding.",
        "movepagetalktext": "If you check this box, the associated talk page will be automatically moved to new title, unless a non-empty talk page already exists there.\n\nIn this case, you will have to move or merge the page manually if desired.",
        "moveuserpage-warning": "<strong>Warning:</strong> You are about to move a user page. Please note that only the page will be moved and the user will <em>not</em> be renamed.",
        "movecategorypage-warning": "<strong>Warning:</strong> You are about to move a category page. Please note that only the page will be moved and any pages in the old category will <em>not</em> be recategorized into the new one.",
        "move-redirect-text": "",
        "category-move-redirect-override": "-",
        "revertmove": "revert",
-       "delete_and_move_text": "== Deletion required ==\nThe destination page \"[[:$1]]\" already exists.\nDo you want to delete it to make way for the move?",
+       "delete_and_move_text": "The destination page \"[[:$1]]\" already exists.\nDo you want to delete it to make way for the move?",
        "delete_and_move_confirm": "Yes, delete the page",
        "delete_and_move_reason": "Deleted to make way for move from \"[[$1]]\"",
        "selfmove": "Source and destination titles are the same;\ncannot move a page over itself.",
        "move-leave-redirect": "Leave a redirect behind",
        "protectedpagemovewarning": "<strong>Warning:</strong> This page has been protected so that only users with administrator privileges can move it.\nThe latest log entry is provided below for reference:",
        "semiprotectedpagemovewarning": "<strong>Note:</strong> This page has been protected so that only registered users can move it.\nThe latest log entry is provided below for reference:",
-       "move-over-sharedrepo": "== File exists ==\n[[:$1]] exists on a shared repository. Moving a file to this title will override the shared file.",
+       "move-over-sharedrepo": "[[:$1]] exists on a shared repository. Moving a file to this title will override the shared file.",
        "file-exists-sharedrepo": "The filename chosen is already in use on a shared repository.\nPlease choose another name.",
        "export": "Export pages",
        "export-summary": "",
        "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",
+       "siteusers": "{{SITENAME}} {{PLURAL:$2|{{GENDER:$1|user}}|users}} $1",
        "anonusers": "{{SITENAME}} anonymous {{PLURAL:$2|user|users}} $1",
        "creditspage": "Page credits",
        "nocredits": "There is no credits info available for this page.",
        "version-hook-subscribedby": "Subscribed by",
        "version-version": "($1)",
        "version-no-ext-name": "[no name]",
-       "version-svn-revision": "r$1",
        "version-license": "MediaWiki License",
        "version-ext-license": "License",
        "version-ext-colheader-name": "Extension",
        "expand_templates_preview_fail_html": "<em>Because {{SITENAME}} has raw HTML enabled and there was a loss of session data, the preview is hidden as a precaution against JavaScript attacks.</em>\n\n<strong>If this is a legitimate preview attempt, please try again.</strong>\nIf it still does not work, try [[Special:UserLogout|logging out]] and logging back in.",
        "expand_templates_preview_fail_html_anon": "<em>Because {{SITENAME}} has raw HTML enabled and you are not logged in, the preview is hidden as a precaution against JavaScript attacks.</em>\n\n<strong>If this is a legitimate preview attempt, please [[Special:UserLogin|log in]] and try again.</strong>",
        "expand_templates_input_missing": "You need to provide at least some input text.",
-       "pagelanguage": "Page language selector",
+       "pagelanguage": "Change page language",
        "pagelang-name": "Page",
        "pagelang-language": "Language",
        "pagelang-use-default": "Use default language",
        "pagelang-submit": "Submit",
        "right-pagelang": "Change page language",
        "action-pagelang": "change the page language",
-       "log-name-pagelang": "Change language log",
+       "log-name-pagelang": "Language change log",
        "log-description-pagelang": "This is a log of changes in page languages.",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|changed}} page language for $3 from $4 to $5.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|changed}} the language of $3 from $4 to $5",
        "default-skin-not-found": "Whoops! The default skin for your wiki, defined in <code dir=\"ltr\">$wgDefaultSkin</code> as <code>$1</code>, is not available.\n\nYour installation seems to include the following {{PLURAL:$4|skin|skins}}. See [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] for information how to enable {{PLURAL:$4|it|them and choose the default}}.\n\n$2\n\n; If you have just installed MediaWiki:\n: You probably installed from git, or directly from the source code using some other method. This is expected. Try installing some skins from [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's skin directory], by:\n:* Downloading the [https://www.mediawiki.org/wiki/Download tarball installer], which comes with several skins and extensions. You can copy and paste the <code>skins/</code> directory from it.\n:* Downloading individual skin tarballs from [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Using Git to download skins].\n: Doing this should not interfere with your git repository if you're a MediaWiki developer.\n\n; If you have just upgraded MediaWiki:\n: MediaWiki 1.24 and newer no longer automatically enables installed skins (see [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]). You can paste the following {{PLURAL:$5|line|lines}} into <code>LocalSettings.php</code> to enable {{PLURAL:$5|the|all}} installed {{PLURAL:$5|skin|skins}}:\n\n<pre dir=\"ltr\">$3</pre>\n\n; If you have just modified <code>LocalSettings.php</code>:\n: Double-check the skin names for typos.",
        "default-skin-not-found-no-skins": "Whoops! The default skin for your wiki, defined in <code>$wgDefaultSkin</code> as <code>$1</code>, is not available.\n\nYou have no installed skins.\n\n; If you have just installed or upgraded MediaWiki:\n: You probably installed from git, or directly from the source code using some other method. This is expected. MediaWiki 1.24 and newer doesn't include any skins in the main repository. Try installing some skins from [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's skin directory], by:\n:* Downloading the [https://www.mediawiki.org/wiki/Download tarball installer], which comes with several skins and extensions. You can copy and paste the <code>skins/</code> directory from it.\n:* Downloading individual skin tarballs from [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Using Git to download skins].\n: Doing this should not interfere with your git repository if you're a MediaWiki developer. See [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] for information how to enable skins and choose the default.\n",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (enabled)",
        "mw-widgets-titleinput-description-new-page": "page does not exist yet",
        "mw-widgets-titleinput-description-redirect": "redirect to $1",
        "api-error-blacklisted": "Please choose a different, descriptive title.",
-       "sessionmanager-tie": "Cannot combine multiple request authentication types: $1.",
-       "sessionprovider-generic": "$1 sessions",
-       "sessionprovider-mediawiki-session-cookiesessionprovider": "cookie-based sessions",
-       "sessionprovider-nocookies": "Cookies may be disabled. Ensure you have cookies enabled and start again.",
        "randomrootpage": "Random root page"
 }
index 5468580..5dc6ea6 100644 (file)
        "expensive-parserfunction-warning": "Averto: Ĉi tiu paĝo enhavas tro da multekostaj sintaksaj funkcio-vokoj.\n\nĜi havu malpli ol $2 {{PLURAL:$2|vokon|vokojn}}, sed nun estas $1 {{PLURAL:$1|voko|vokoj}}.",
        "expensive-parserfunction-category": "Paĝoj kun tro da multekostaj sintaksaj funkcio-vokoj",
        "post-expand-template-inclusion-warning": "Averto: Inkluziva pezo de ŝablonoj estas tro granda.\nIuj ŝablonoj ne estos inkluzivitaj.",
-       "post-expand-template-inclusion-category": "Paĝoj kie inkluziva pezo de ŝablonoj estas tro granda.",
+       "post-expand-template-inclusion-category": "Paĝoj kie inkluziva pezo de ŝablonoj estas tro granda",
        "post-expand-template-argument-warning": "Averto: Ĉi tiu paĝo enhavas almenaŭ unu ŝablonan argumenton, kiu havas tro grandan etendan pezon.\nĈi tiuj argumentoj estis forlasitaj.",
        "post-expand-template-argument-category": "Paĝoj enhavantaj forlasitajn argumentojn de ŝablonoj",
        "parser-template-loop-warning": "Rekursiva ŝablono estis trovita: [[$1]]",
        "watchthisupload": "Atenti ĉi tiun dosieron",
        "filewasdeleted": "Dosiero de ĉi tiu nomo estis antaŭe alŝutita kaj poste forigita. Bonvolu kontroli en la $1 antaŭ alŝuti ĝin denove.",
        "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-success-subj": "Alŝuto sukcesis!",
-       "upload-success-msg": "Via alŝuto el [$2] sukcesis. Ĝi disponeblas ĉi tie [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Alŝuta problemo",
-       "upload-failure-msg": "Estis problemo kun via alŝuto de [$2]:\n\n$1",
-       "upload-warning-subj": "Averto pri alŝutado",
-       "upload-warning-msg": "Okazis problemo pro via alŝuto el [$2]. Vi povas reveni al la [[Special:Upload/stash/$1|alŝutan formularon]] por korektigi ĉi tiun problemon.",
        "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",
        "foreign-structured-upload-form-label-own-work": "Tio estas mia propra laboro",
        "foreign-structured-upload-form-label-infoform-categories": "Kategorioj",
        "foreign-structured-upload-form-label-infoform-date": "Dato",
+       "foreign-structured-upload-form-3-label-yes": "Jes",
+       "foreign-structured-upload-form-3-label-no": "Ne",
        "backend-fail-stream": "Ne povis fluigi dosieron $1.",
        "backend-fail-backup": "Ne povis enarkivigi dosieron $1.",
        "backend-fail-notexists": "La dosiero $1 ne ekzistas.",
        "protectedpages-performer": "Protektinto",
        "protectedpages-params": "Ecoj de protekto",
        "protectedpages-reason": "Kialo",
+       "protectedpages-submit": "Montri paĝojn",
        "protectedpages-unknown-timestamp": "Nekonata",
        "protectedpages-unknown-performer": "Nekonata uzanto",
        "protectedtitles": "Protektitaj titoloj",
        "protectedtitles-summary": "Ĉi tiu paĝo listigas titolojn, kiuj estas nuntempe protektitaj kontraŭ kreado. Por listo de ekzistantaj paĝoj, kiuj estas protektitaj, vidu [[{{#special:ProtectedPages}}|{{int:protectedpages}}]].",
        "protectedtitlesempty": "Neniuj titoloj estas nune protektitaj kun ĉi parametroj.",
+       "protectedtitles-submit": "Montri titolojn",
        "listusers": "Uzantaro",
        "listusers-editsonly": "Montri uzantojn kun redaktoj nur",
        "listusers-creationsort": "Ordigi laŭ dato de kreado",
        "wlheader-showupdated": "Paĝoj montriĝis per '''dikaj literoj''' kiuj estis ŝanĝitaj ekde vi laste vizitis.",
        "wlnote": "Jen la {{PLURAL:$1|lasta redakto|lastaj <strong>$1</strong> redaktoj}} dum la {{PLURAL:$2|lasta horo|lastaj <strong>$2</strong> horoj}}, ekde $3, $4.",
        "wlshowlast": "Montri el lastaj $1 horoj $2 tagoj",
-       "watchlistall2": "ĉiuj",
        "watchlist-hide": "Kaŝi",
        "watchlist-submit": "Montri",
        "wlshowhideminor": "Etaj redaktoj",
        "javascripttest-pagetext-frameworks": "Bonvolu elekti unu el la jenaj test-framoj: $1",
        "javascripttest-pagetext-skins": "Elektu kun kio etoso irigi la testojn:",
        "javascripttest-qunit-intro": "Vidu [$1 testa dokumentaro] en mediawiki.org.",
-       "tooltip-pt-userpage": "Via uzantopaĝo",
+       "tooltip-pt-userpage": "Via uzantpaĝo",
        "tooltip-pt-anonuserpage": "La uzantopaĝo por la IP adreso sub kiu vi estas redaktanta",
        "tooltip-pt-mytalk": "Via diskutpaĝo",
        "tooltip-pt-anontalk": "Diskuto pri redaktoj sub tiu ĉi IP adreso",
-       "tooltip-pt-preferences": "Miaj preferoj",
+       "tooltip-pt-preferences": "{{GENDER:|Viaj}} preferoj",
        "tooltip-pt-watchlist": "Listo de paĝoj kies ŝanĝojn vi priatentas.",
        "tooltip-pt-mycontris": "Listo de viaj kontribuoj",
        "tooltip-pt-login": "Vi estas invitita ensaluti, tamen ne estas devige.",
        "tooltip-ca-move": "Alinomigi tiun ĉi paĝon",
        "tooltip-ca-watch": "Aldoni tiun ĉi paĝon al via atentaro",
        "tooltip-ca-unwatch": "Forigi tiun ĉi paĝon el via atentaro",
-       "tooltip-search": "Traserĉi {{SITENAME}}",
+       "tooltip-search": "Serĉi tra {{SITENAME}}",
        "tooltip-search-go": "Iru al paĝo kun ĉi preciza nomo se ĝi ekzistas",
        "tooltip-search-fulltext": "Serĉi la paĝojn por ĉi tiu teksto",
        "tooltip-p-logo": "Ĉefpaĝo",
        "tooltip-t-recentchangeslinked": "Lastaj ŝanĝoj en paĝoj kiuj ligas al tiu ĉi paĝo",
        "tooltip-feed-rss": "RSS-fonto por tiu ĉi paĝo",
        "tooltip-feed-atom": "Atom-fonto por ĉi tiu paĝo",
-       "tooltip-t-contributions": "Rigardi la liston de kontribuoj de tiu ĉi uzanto",
+       "tooltip-t-contributions": "Listo de kontribuoj de {{GENDER:$1|ĉi tiu uzanto}}",
        "tooltip-t-emailuser": "Sendi retmesaĝon al tiu ĉi uzanto",
        "tooltip-t-info": "Pli da informo pri ĉi tiu paĝo",
        "tooltip-t-upload": "Alŝuti bildojn aŭ dosierojn",
index fa60975..3487702 100644 (file)
                        "Rodm23",
                        "Yllelder",
                        "Syum90",
-                       "Cindie.Capel"
+                       "Cindie.Capel",
+                       "ElGatoSaez",
+                       "Joaquin1001"
                ]
        },
        "tog-underline": "Subrayar los enlaces:",
        "tog-numberheadings": "Numerar automáticamente los encabezados",
        "tog-showtoolbar": "Mostrar la barra de edición",
        "tog-editondblclick": "Editar páginas al hacer doble clic",
-       "tog-editsectiononrightclick": "Permitir modificar secciones al pulsar con el botón secundario del ratón en sus títulos",
+       "tog-editsectiononrightclick": "Permitir las modificaciones por sección al hacer clic derecho en sus títulos",
        "tog-watchcreations": "Añadir las páginas que cree y los archivos que suba a mi lista de seguimento",
        "tog-watchdefault": "Añadir las páginas y archivos que edite a mi lista de seguimiento",
        "tog-watchmoves": "Añadir las páginas y archivos que mueva a mi lista de seguimiento",
        "databaseerror-query": "Consulta: $1",
        "databaseerror-function": "Función: $1",
        "databaseerror-error": "Error: $1",
+       "transaction-duration-limit-exceeded": "Para evitar la creación de lentitud alta de respuesta, la transacción fue abortada porque la duración de escritura ($1) excedió el límite de $2 {{PLURAL:$2|segundo|segundos}}.\nSi estás cambiando muchos elementos a la vez, trata de hacer operaciones similares más pequeñas.",
        "laggedslavemode": "<strong>Advertencia:</strong> puede que falten las actualizaciones más recientes en esta página.",
        "readonly": "Base de datos bloqueada",
        "enterlockreason": "Explica el motivo del bloqueo, incluyendo una estimación de cuándo se producirá el desbloqueo",
-       "readonlytext": "La base de datos no permite nuevas entradas u otras modificaciones de forma temporal, probablemente por mantenimiento rutinario, tras lo cual volverá a la normalidad.\n\nLa explicación dada por el administrador que la bloqueó fue: $1",
+       "readonlytext": "Actualmente la base de datos no permite nuevas entradas u otras modificaciones, probablemente por mantenimiento rutinario, tras lo cual volverá a la normalidad.\n\nLa explicación dada por el administrador que la bloqueó fue: $1",
        "missing-article": "La base de datos no ha encontrado el texto de la página «$1» $2, cuando debería haberse hallado.\n\nLa causa de esto suele ser un ''diff'' anacrónico o un enlace al historial de una página que ha sido borrada.\n\nSi no fuera el caso, puede que hayas encontrado un fallo en el software.\n\nPor favor, informa de esto a [[Special:ListUsers/sysop|administrador]], y anota la URL actual.",
        "missingarticle-rev": "(revisión: $1)",
        "missingarticle-diff": "(diferencia: $1, $2)",
        "readonly_lag": "La base de datos se ha bloqueado automáticamente mientras sus servidores esclavos se sincronizan con el maestro.",
+       "nonwrite-api-promise-error": "El encabezado HTTP 'Promise-Non-Write-API-Action' ha sido enviado pero la petición fue hacia un módulo de escritura de la API.",
        "internalerror": "Error interno",
        "internalerror_info": "Error interno: $1",
        "internalerror-fatal-exception": "Excepción grave de tipo \"$1\"",
        "userlogin-remembermypassword": "Mantener mi sesión iniciada",
        "userlogin-signwithsecure": "Usar conexión segura",
        "cannotloginnow-title": "No se puede iniciar sesión ahora",
+       "cannotloginnow-text": "No se puede iniciar sesión cuando se usa $1.",
        "yourdomainname": "Tu dominio:",
        "password-change-forbidden": "No puedes cambiar las contraseñas en este wiki.",
        "externaldberror": "Hubo un error de autenticación en la base de datos, o bien no tienes autorización para actualizar tu cuenta externa.",
        "wrongpasswordempty": "No has escrito una contraseña.\nInténtalo de nuevo.",
        "passwordtooshort": "Las contraseñas deben tener al menos {{PLURAL:$1|1 carácter|$1 caracteres}}.",
        "passwordtoolong": "Las contraseñas no deben tener más de {{PLURAL:$1|1 carácter|$1 caracteres}}.",
+       "passwordtoopopular": "No se pueden usar las contraseñas más comunes. Elige una menos popular.",
        "password-name-match": "Tu contraseña debe ser diferente de tu nombre de usuario.",
        "password-login-forbidden": "El uso de este nombre de usuario y contraseña han sido prohibidos.",
        "mailmypassword": "Restablecer la contraseña",
        "changepassword-success": "La contraseña se modificó correctamente.",
        "changepassword-throttled": "Has intentado acceder demasiadas veces recientemente.\nEspera $1 antes de intentarlo de nuevo.",
        "botpasswords": "Contraseñas de bots",
+       "botpasswords-summary": "Las <em>contraseñas de bots</em> permiten el acceso a una cuenta de usuario mediante la API sin usar las credenciales principales de la cuenta. Los derechos de un usuario mientras haya iniciado sesión con una contraseña de bot pueden estar restringidos.\n\nSi no sabes por qué querrías hacer esto, probablemente no deberías hacerlo. Nadie debería pedirte que generes una de estas claves y que se la entregues.",
        "botpasswords-disabled": "Las contraseñas de bot están desactivadas.",
+       "botpasswords-no-central-id": "Para usar una contraseña de bot, debes estar conectado a una cuenta centralizada.",
        "botpasswords-existing": "Contraseñas de bots existentes",
+       "botpasswords-createnew": "Crear una nueva contraseña de bot",
+       "botpasswords-editexisting": "Editar una contraseña de bot existente",
        "botpasswords-label-appid": "Nombre del bot:",
        "botpasswords-label-create": "Crear",
        "botpasswords-label-update": "Actualizar",
        "botpasswords-label-cancel": "Cancelar",
        "botpasswords-label-delete": "Borrar",
        "botpasswords-label-resetpassword": "Restablecer la contraseña",
+       "botpasswords-label-grants": "Permisos aplicables:",
        "botpasswords-label-restrictions": "Restricciones de uso:",
        "botpasswords-label-grants-column": "Concedido",
        "botpasswords-bad-appid": "El nombre del bot \"$1\" no es válido.",
+       "botpasswords-insert-failed": "No se pudo agregar el nombre del bot \"$1\". ¿Ya ha sido añadido?",
+       "botpasswords-update-failed": "No se pudo actualizar el nombre del bot \"$1\". ¿Ha sido borrado?",
        "botpasswords-created-title": "Se creó la contraseña de bot",
        "botpasswords-created-body": "La contraseña de bot \"$1\" se creó correctamente.",
+       "botpasswords-updated-title": "La contraseña de bot ha sido actualizada",
+       "botpasswords-updated-body": "La contraseña de bot\"$1\" se actualizó correctamente.",
+       "botpasswords-deleted-title": "La contraseña de bot ha sido eliminada",
+       "botpasswords-deleted-body": "La contraseña de bot \"$1\" ha sido eliminada.",
+       "botpasswords-newpassword": "La nueva contraseña para iniciar sesión con <strong>$1</strong> es <strong>$2</strong>. <em>Conserva estos datos para usos futuros.</em>",
        "botpasswords-no-provider": "BotPasswordsSessionProvider no está disponible.",
+       "botpasswords-restriction-failed": "Las restricciones de la contraseña de bot impiden este inicio de sesión.",
        "botpasswords-invalid-name": "El nombre de usuario especificado no contiene el separador de contraseña de bot (\"$1\").",
+       "botpasswords-not-exist": "El usuario \"$1\" no tiene una contraseña de bot llamada \"$2\".",
        "resetpass_forbidden": "No se pueden cambiar las contraseñas",
        "resetpass-no-info": "Debes iniciar sesión para acceder directamente a esta página.",
        "resetpass-submit-loggedin": "Cambiar contraseña",
        "changeemail-no-info": "Debes iniciar sesión para acceder directamente a esta página.",
        "changeemail-oldemail": "Dirección de correo electrónico actual:",
        "changeemail-newemail": "Dirección de correo electrónico nueva:",
+       "changeemail-newemail-help": "Este campo debería dejarse en blanco si quieres quitar tu dirección de correo electrónico. No podrás restablecer una contraseña olvidada y no recibirás correos de esta wiki si se quita la dirección de correo electrónico.",
        "changeemail-none": "(ninguna)",
        "changeemail-password": "Tu contraseña en {{SITENAME}}:",
        "changeemail-submit": "Cambiar correo electrónico",
        "uploaded-script-svg": "Se encontró el elemento habilitado para secuencias de órdenes «$1» en el archivo SVG cargado.",
        "uploaded-hostile-svg": "Se encontró código CSS no seguro en el elemento de estilo del archivo SVG cargado.",
        "uploaded-event-handler-on-svg": "No está permitido configurar atributos controladores de eventos <code>$1=\"$2\"</code> en los archivos SVG.",
-       "uploaded-href-attribute-svg": "No se permite que los archivos SVG contengan los atributos de «href» <code>&lt;$1 $2=\"$3\"&gt;</code> apuntando a recursos no locales (p. ej., http:// o javascript:).",
        "uploaded-href-unsafe-target-svg": "Se encontró un \"href\" hacia un destino inseguro <code><$1 $2=\"$3\"></code> en el archivo SVG cargado.",
        "uploaded-animate-svg": "Se encontró un etiqueta \"animate\" que puede estar cambiando \"href\", mediante el atributo \"from\" <code>&lt;$1 $2=\"$3\"&gt;</code> en el archivo SVG cargado.",
        "uploaded-setting-event-handler-svg": "Está bloqueada la configuración de atributos controladores de eventos. Se encontró <code>&lt;$1 $2=\"$3\"&gt;</code> en el archivo SVG cargado.",
        "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.",
        "filename-bad-prefix": "El nombre del archivo que estás subiendo comienza por <strong>«$1»</strong>, un nombre nada descriptivo de su contenido. Es un típico nombre de los que asignan automáticamente las cámaras digitales.\nElige un nombre más descriptivo para tu archivo.",
        "filename-prefix-blacklist": " #<!-- deja esta línea exactamente como está --> <pre>\n# La sintaxis de esta página es la siguiente:\n#   * Todo texto que se encuentre después del carácter \"#\" hasta el final de la línea se tratará como un comentario y será ignorado\n#   * Cualquier línea que no esté en blanco será interpretada como un prefijo típico en nombres de archivo que suelen asignar automáticamente las cámaras digitales\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # algunos teléfonos móviles / celulares\nIMG # genérico\nJD # Jenoptik\nMGP # Pentax\nPICT # misc.\n #</pre> <!-- deja esta línea exactamente como está -->",
-       "upload-success-subj": "Subida con éxito",
-       "upload-success-msg": "La subida desde [$2] se realizó correctamente. Está disponible aquí: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Problema en la subida",
-       "upload-failure-msg": "Hubo un problema durante la subida desde [$2]:\n\n$1",
-       "upload-warning-subj": "Alerta de subida",
-       "upload-warning-msg": "Hubo un problema con tu subida desde [$2]. Puedes regresar al [[Special:Upload/stash/$1|formulario de subida]] para corregir este problema.",
        "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",
        "upload-too-many-redirects": "La URL contenía demasiadas redirecciones",
        "upload-http-error": "Ha ocurrido un error HTTP: $1",
        "upload-copy-upload-invalid-domain": "No se pueden realizar subidas remotas desde este dominio.",
+       "upload-foreign-cant-upload": "Este wiki no está configurado para subir archivos al repositorio de archivos externo solicitado.",
        "upload-dialog-title": "Subir archivo",
        "upload-dialog-button-cancel": "Cancelar",
        "upload-dialog-button-done": "Hecho",
        "log-title-wildcard": "Buscar títulos que empiecen con este texto",
        "showhideselectedlogentries": "Cambiar la visibilidad de las entradas del registro seleccionadas",
        "log-edit-tags": "Editar las etiquetas de las entradas del registro seleccionadas",
-       "checkbox-select": "Seleccione:$1",
-       "checkbox-all": "Todos",
-       "checkbox-none": "Ninguno",
-       "checkbox-invert": "invertir",
+       "checkbox-select": "Seleccionar: $1",
+       "checkbox-all": "Todas",
+       "checkbox-none": "Ninguna",
+       "checkbox-invert": "Invertir",
        "allpages": "Todas las páginas",
        "nextpage": "Siguiente página ($1)",
        "prevpage": "Página anterior ($1)",
        "listgrouprights-namespaceprotection-header": "Restricciones del espacio de nombres",
        "listgrouprights-namespaceprotection-namespace": "Espacio de nombres",
        "listgrouprights-namespaceprotection-restrictedto": "Derechos de usuario para editar",
+       "listgrants-grant": "Conceder",
        "listgrants-rights": "Conceder",
        "trackingcategories": "Categorías de seguimiento",
        "trackingcategories-summary": "Esta página lista categorías de seguimiento que han sido generadas automáticamente por el software MediaWiki. Sus nombres pueden cambiarse editando su mensaje correspondiente en el espacio de nombres {{ns:8}}.",
        "wlheader-showupdated": "Las páginas modificadas desde tu última visita aparecen en <strong>negrita</strong>.",
        "wlnote": "A continuación {{PLURAL:$1|se muestra el último cambio|se muestran los últimos <strong>$1</strong> cambios}} en {{PLURAL:$2|la última hora|las últimas <strong>$2</strong> horas}} a fecha de $4 $3.",
        "wlshowlast": "Ver los cambios de las últimas $1 horas, $2 días",
-       "watchlistall2": "todos",
        "watchlist-hide": "Ocultar",
        "watchlist-submit": "Mostrar",
        "wlshowtime": "Período de tiempo para mostrar:",
        "lockedbyandtime": "(por {{GENDER:$1|$1}} el $2 a las $3)",
        "move-page": "Trasladar $1",
        "move-page-legend": "Renombrar página",
-       "movepagetext": "Mediante el siguiente formulario puedes renombrar una página, moviendo todo su historial al nombre nuevo.\nEl título anterior redirigirá al nuevo.\nPuedes actualizar automáticamente las redirecciones que apuntan al título original.\nSi eliges no hacerlo, asegúrate de revisar posibles redirecciones [[Special:DoubleRedirects|dobles]] o [[Special:BrokenRedirects|rotas]].\nTú eres responsable de asegurar que los enlaces continúen funcionando correctamente.\n\nNota que la página <strong>no</strong> se moverá si ya hay una página con el título nuevo, a menos de que ésta sea una redirección y no tenga historial de ediciones pasadas.\nEsto significa que puedes deshacer el renombrado en caso de un error, y que no puedes sobreescribir una página existente.\n\n<strong>Aviso</strong>\nEsto puede representar un cambio drástico e inesperado para una página popular;\nasegúrate de entender las consecuencias de esta acción antes de proceder.",
-       "movepagetext-noredirectfixer": "Usando el siguiente formulario se renombrará una página, trasladando todo su historial al nuevo nombre.\nEl título anterior se convertirá en una redirección al nuevo título.\nAsegúrate de no dejar [[Special:DoubleRedirects|redirecciones dobles]] o [[Special:BrokenRedirects|rotas]].\nTú eres responsable de hacer que los enlaces sigan apuntando adonde se supone que deberían hacerlo.\n\nRecuerda que la página '''no''' será renombrada si ya existe una página con el nuevo título, a no ser que sea una página vacía o una redirección sin historial.\nEsto significa que podrás renombrar una página a su título original si has cometido un error, pero que no podrás sobrescribir una página existente.\n\n'''¡Aviso!'''\nEste puede ser un cambio drástico e inesperado para una página popular;\npor favor, asegúrate de entender las consecuencias del procedimiento antes de seguir adelante.",
+       "movepagetext": "Al usar el siguiente formulario, se renombrará una página y se trasladará todo su historial al nuevo nombre.\nEl título anterior se convertirá en una redirección al título nuevo.\nPuedes actualizar automáticamente las redirecciones que apuntan al título original.\nSi eliges no hacerlo, asegúrate de revisar posibles redirecciones [[Special:DoubleRedirects|dobles]] o [[Special:BrokenRedirects|incorrectas]].\nTú eres responsable de asegurarte de que los enlaces sigan apuntando adonde se supone que deberían hacerlo.\n\nRecuerda que la página <strong>no</strong> se trasladará si ya existe una página con el título nuevo, salvo que sea una redirección y no tenga historial de edición.\nEsto significa que podrás renombrar una página a su título original si has cometido un error, pero que no podrás sobrescribir una página existente.\n\n<strong>Nota:</strong>\nEste puede ser un cambio drástico e inesperado para una página popular; asegúrate de entender las consecuencias del procedimiento antes de seguir adelante.",
+       "movepagetext-noredirectfixer": "Al usar el siguiente formulario, se renombrará una página y se trasladará todo su historial al nuevo nombre.\nEl título anterior se convertirá en una redirección al título nuevo.\nAsegúrate de no dejar [[Special:DoubleRedirects|redirecciones dobles]] o [[Special:BrokenRedirects|incorrectas]].\nTú eres responsable de asegurarte de que los enlaces sigan apuntando adonde se supone que deberían hacerlo.\n\nRecuerda que la página <strong>no</strong> se trasladará si ya existe una página con el título nuevo, salvo que sea una redirección y no tenga historial de edición.\nEsto significa que podrás renombrar una página a su título original si has cometido un error, pero que no podrás sobrescribir una página existente.\n\n<strong>Nota:</strong>\nEste puede ser un cambio drástico e inesperado para una página popular; asegúrate de entender las consecuencias del procedimiento antes de seguir adelante.",
        "movepagetalktext": "Si marcas esta casilla, la página de discusión asociada se trasladará automáticamente al título nuevo a menos que ya exista una página de discusión no vacía allí.\n\nEn este caso, deberás trasladar o fusionar manualmente la página si así lo quieres.",
        "moveuserpage-warning": "<strong>Advertencia:</strong> estás a punto de trasladar una página de usuario. Ten en cuenta que solo se trasladará la página; el usuario <em>no</em> se renombrará.",
        "movecategorypage-warning": "<strong>Advertencia:</strong> estás a punto de trasladar una página de categoría. Ten en cuenta que se trasladará sólo la página, y las páginas en la antigua categoría <em>no</em> se recategorizarán en la nueva.",
        "movenosubpage": "Esta página no tiene subpáginas.",
        "movereason": "Motivo:",
        "revertmove": "revertir",
-       "delete_and_move_text": "==Se necesita borrado==\n\nLa página de destino (\"[[:$1]]\") ya existe. ¿Quiere borrarla para permitir al traslado?",
+       "delete_and_move_text": "La página de destino «[[:$1]]» ya existe.\n¿Quieres borrarla para permitir el traslado?",
        "delete_and_move_confirm": "Sí, borrar la página",
        "delete_and_move_reason": "Borrada para permitir el traslado de \"[[$1]]\"",
        "selfmove": "Los títulos de origen y destino son los mismos;\nno se puede trasladar una página sobre sí misma.",
        "move-leave-redirect": "Dejar una redirección",
        "protectedpagemovewarning": "<strong>Advertencia:</strong> esta página ha sido protegida de tal manera que solamente usuarios con privilegios de administrador puedan trasladarla.\nA continuación se muestra la última entrada de registro como referencia:",
        "semiprotectedpagemovewarning": "<strong>Nota:</strong> esta página ha sido protegida de tal manera que solamente usuarios registrados puedan trasladarla.\nA continuación se muestra la última entrada de registro como referencia:",
-       "move-over-sharedrepo": "== El archivo existe ==\n[[:$1]] existe en un repositorio compartido. El traslado a este título invalidará la compartición del archivo.",
+       "move-over-sharedrepo": "[[:$1]] existe en un repositorio compartido. Trasladar el archivo a este título sobrescribirá el archivo compartido.",
        "file-exists-sharedrepo": "El nombre de archivo elegido ya está siendo usado en un repositorio compartido.\nPor favor, elige otro nombre.",
        "export": "Exportar páginas",
        "exporttext": "Puedes exportar el texto y el historial de ediciones de una página en particular o de un conjunto de páginas a un texto XML. En el futuro, este texto podría importarse en otro wiki que ejecutase MediaWiki a través de [[Special:Import|importar página]].\n\nPara exportar páginas, escribe los títulos en la caja de texto de abajo, un título por línea, y selecciona si quieres la versión actual junto a las versiones anteriores, con las líneas del historial, o sólo la versión actual con la información sobre la última edición.\n\nEn el último caso también puedes usar un enlace, por ejemplo [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] para la página \"[[{{MediaWiki:Mainpage}}]]\".",
        "lastmodifiedatby": "Esta página fue modificada por última vez el $1 a las $2 por $3.",
        "othercontribs": "Basado en el trabajo de $1.",
        "others": "otros",
-       "siteusers": "{{PLURAL:$2|el usuario|los usuarios}} $1 de {{SITENAME}}",
+       "siteusers": "{{PLURAL:$2|{{GENDER:$1|el usuario|la usuaria}}|los usuarios}} $1 de {{SITENAME}}",
        "anonusers": "{{PLURAL:$2|el usuario anónimo|los usuarios anónimos}} $1 de {{SITENAME}}",
        "creditspage": "Créditos de la página",
        "nocredits": "No hay información de créditos para esta página.",
        "expand_templates_ok": "Aceptar",
        "expand_templates_remove_comments": "Eliminar comentarios (<!-- ... -->)",
        "expand_templates_remove_nowiki": "Suprimir etiquetas <nowiki> en el resultado",
-       "expand_templates_generate_xml": "Mostrar el árbol XML.",
+       "expand_templates_generate_xml": "Mostrar el árbol XML",
        "expand_templates_generate_rawhtml": "Mostrar HTML en crudo",
        "expand_templates_preview": "Previsualización",
        "expand_templates_preview_fail_html": "<em>Se ha ocultado la previsualización como precaución frente a ataques JavaScript. Esto se debe a que {{SITENAME}} tiene habilitada la característica de código HTML en bruto, y se perdieron los datos de la sesión.</em>\n\n<strong>Si se trata de un intento de previsualización legítimo, inténtalo de nuevo.</strong>\nSi aun así no funciona, intenta [[Special:UserLogout|cerrar sesión]] y volver a acceder.",
        "expand_templates_preview_fail_html_anon": "<em>Se ha ocultado la previsualización como precaución frente a ataques JavaScript. Esto se debe a que {{SITENAME}} tiene habilitada la característica de código HTML en bruto, y no has iniciado sesión.</em>\n\n<strong>Si se trata de un intento de previsualización legítimo, [[Special:UserLogin|inicia sesión]] e inténtalo de nuevo.</strong>",
        "expand_templates_input_missing": "Necesitas proporcionar al menos algún texto de entrada.",
-       "pagelanguage": "Selector de idioma de página",
+       "pagelanguage": "Cambiar el idioma de la página",
        "pagelang-name": "Página",
        "pagelang-language": "Idioma",
        "pagelang-use-default": "Utilizar el idioma predeterminado",
        "pagelang-submit": "Enviar",
        "right-pagelang": "Cambiar el idioma de la página",
        "action-pagelang": "cambiar el idioma de la página",
-       "log-name-pagelang": "Registro de cambios en idiomas",
+       "log-name-pagelang": "Registro de cambios de idiomas",
        "log-description-pagelang": "Este es un registro de los cambios en los idiomas de las páginas.",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|cambió}} el idioma de la página «$3» del $4 al $5.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|cambió}} el idioma de «$3» del $4 al $5.",
        "default-skin-not-found": "¡Vaya! La apariencia predeterminada de tu wiki, definida en <code dir=\"ltr\">$wgDefaultSkin</code> como <code>$1</code>, no está disponible.\n\nLa instalación parece contener {{PLURAL:$4|la siguiente apariencia|las siguientes apariencias}}. Revisa [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Configuración de apariencias] para más información sobre cómo {{PLURAL:$4|activarla|activarlas y seleccionar la predeterminada}}.\n\n$2\n\n; Si acabas de instalar MediaWiki:\n: Probablemente la hayas instalado desde git, o directamente desde el código fuente usando algún otro método. Es normal que ocurra esto. Intenta instalar algunas apariencias desde [https://www.mediawiki.org/wiki/Category:All_skins el directorio de apariencias de mediawiki.org] ya sea:\n:* Descargando [https://www.mediawiki.org/wiki/Download el instalador tarball], el cual contiene varias apariencias y extensiones. Puedes copiar y pegar el directorio <code>skins/</code> de ahí.\n:* Descargando tarballs individuales de cada apariencia de [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Usando Git para descargar apariencias].\n: Hacer esto no debería interferir con tu repositorio git si eres un desarrollador de MediaWiki.\n\n; Si acabas de actualizar MediaWiki:\n: A partir de MediaWiki 1.24 ya no se activan automáticamente las apariencias instaladas (revisa [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]). Puedes pegar {{PLURAL:$5|la siguiente línea|las siguientes líneas}} en <code>LocalSettings.php</code> para activar {{PLURAL:$5|la apariencia instalada|todas las apariencias instaladas}} actualmente:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Si acabas de modificar <code>LocalSettings.php</code>:\n: Comprueba detenidamente posibles errores tipográficos en los nombres de las apariencias.",
        "default-skin-not-found-no-skins": "¡Vaya! La apariencia predeterminada de tu wiki, definida en <code>$wgDefaultSkin</code> como <code>$1</code>, no está disponible.\n\nNo tienes apariencias instaladas.\n\n; Si has instalado o actualizado MediaWiki recientemente:\n: Probablemente has instalado desde git, o directamente desde el código fuente usando algún otro método. Esto puede ocurrir en este caso. A partir de MediaWiki 1.24 ya no se incluye ninguna apariencia en el repositorio principal. Trata de instalar algunas apariencias desde el [https://www.mediawiki.org/wiki/Category:All_skins directorio de apariencias de mediawiki.org], ya sea:\n:* Descargando el [https://www.mediawiki.org/wiki/Download instalador tarball], que viene con varias apariencias y extensiones. Puedes copiar y pegar el directorio <code>skins/</code> desde ahí.\n:* Descargando tarballs individuales de cada apariencia de [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Usando Git para descargar apariencias].\n: Hacer esto no debería interferir con tu repositorio de MediaWiki si eres un desarrollador de MediaWiki. Revisa [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Configuración de apariencias] para información sobre cómo habilitar las apariencias y seleccionar la predeterminada.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (activado)",
        "mw-widgets-titleinput-description-new-page": "la página aún no existe",
        "mw-widgets-titleinput-description-redirect": "redirigir a $1",
        "api-error-blacklisted": "Elige un título diferente, más descriptivo.",
+       "sessionmanager-tie": "No se pueden combinar múltiples tipos de autentificación de solicitudes: $1",
        "sessionprovider-generic": "sesiones $1",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "sesiones basadas en cookies",
        "sessionprovider-nocookies": "Puede que las cookies estén desactivadas. Actívalas y comienza de nuevo.",
index c4057a3..720c350 100644 (file)
        "uploaded-script-svg": "Üleslaaditud SVG-failist leiti skriptitav element \"$1\".",
        "uploaded-hostile-svg": "Üleslaaditud SVG-faili laadielemendist leiti ebaturvaline CSS.",
        "uploaded-event-handler-on-svg": "Sündmuse halduse atribuutide <code>$1=\"$2\"</code> seadmine pole SVG-failis lubatud.",
-       "uploaded-href-attribute-svg": "Mittekohaliku sihtkohaga (nt http://, javascript:) href-atribuudid <code>&lt;$1 $2=\"$3\"&gt;</code> pole SVG-failides lubatud.",
        "uploaded-href-unsafe-target-svg": "Üleslaaditud SVG-failist leiti href, mille sihtkoht <code>&lt;$1 $2=\"$3\"&gt;</code> on ebaturvaline.",
        "uploaded-animate-svg": "Üleslaaditud SVG-failist leiti silt \"animate\", mis võib href-i muuta, kasutades from-atribuuti <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploaded-setting-event-handler-svg": "Sündmuse halduse atribuutide seadmine on keelatud, üleslaaditud SVG-failist leiti <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "filename-thumb-name": "Tundub, et tegu on pisipildi pealkirjaga. Palun ära laadi pisipilti samas vikis uuesti üles. Või siis paranda palun failinimi, nii et see oleks sisukam ja ei sisaldaks pisipildi eesliidet.",
        "filename-bad-prefix": "Üleslaaditava faili nimi algab eesliitega '''\"$1\"''', mis on omane digikaamera antud ebamäärastele nimedele.\nPalun vali oma failile kirjeldavam nimi.",
        "filename-prefix-blacklist": " #<!-- jäta see rida muutmata --> <pre>\n# Süntaks on järgmine:\n#   * Kõik alates märgist \"#\" kuni rea lõpuni on kommentaar.\n#   * Iga mittetühi rida on tüüpiline eesliide, mille digikaamerad automaatselt failinimele lisavad.\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # mõned mobiiltelefonid\nIMG # üldine\nJD # Jenoptik\nMGP # Pentax\nPICT # erinevad\n #</pre> <!-- jäta see rida muutmata -->",
-       "upload-success-subj": "Üleslaadimine õnnestus",
-       "upload-success-msg": "Üleslaadimine allikast [$2] läks edukalt. See on leitav siit: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Üleslaadimisprobleem",
-       "upload-failure-msg": "Üleslaadimisel allikast [$2] ilmnes probleem:\n\n$1",
-       "upload-warning-subj": "Üleslaadimishoiatus",
-       "upload-warning-msg": "Üleslaadimisel allikast [$2] tekkis probleem. Probleemi eemaldamiseks võid naasta [[Special:Upload/stash/$1|üleslaadimisvormi]] juurde.",
        "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",
        "wlheader-showupdated": "Leheküljed, mida on muudetud peale sinu viimast külastust, on '''rasvases kirjas'''.",
        "wlnote": "Allpool on {{PLURAL:$1|viimane muudatus|viimased <strong>$1</strong> muudatust}} viimase {{PLURAL:$2|tunni|<strong>$2</strong> tunni}} jooksul seisuga $3, kell $4.",
        "wlshowlast": "Näita viimast $1 tundi $2 päeva.",
-       "watchlistall2": "kõike",
        "watchlist-hide": "Peida",
        "watchlist-submit": "Näita",
        "wlshowtime": "Näita viimast:",
index b80513d..0071de3 100644 (file)
        "october-date": "urriak $1",
        "november-date": "azaroak $1",
        "december-date": "abenduak $1",
+       "period-am": "AM",
+       "period-pm": "PM",
        "pagecategories": "{{PLURAL:$1|Kategoria|Kategoriak}}",
        "category_header": "«$1» kategoriako artikuluak",
        "subcategories": "Azpikategoriak",
        "resetpass_submit": "Pasahitza definitu eta saioa hasi",
        "changepassword-success": "Zure pasahitza ondo aldatu da!",
        "changepassword-throttled": "Saioa hasteko saiakera gehiegi egin berri dituzu.\nBerriro saiatu aurretik $1 itxoin, mesedez.",
+       "botpasswords-label-create": "Sortu",
+       "botpasswords-label-update": "Eguneratu",
+       "botpasswords-label-delete": "Ezabatu",
        "resetpass_forbidden": "Ezin dira pasahitzak aldatu",
        "resetpass-no-info": "Orrialde honetara zuzenean sartzeko izena eman behar duzu.",
        "resetpass-submit-loggedin": "Pasahitza aldatu",
        "watchthisupload": "Fitxategi hau jarraitu",
        "filewasdeleted": "Izen hau duen fitxategi bat igo eta ezabatu da jada. $1 aztertu beharko zenuke berriz igo aurretik.",
        "filename-bad-prefix": "Igotzen ari zaren fitxategiaren izena '''\"$1\"'''ekin hasten da, normalki kamera digitalek automatikoki ezartzen duten izen ez deskriptibo bat.\nAukera ezazu, mesedez, fitxategi izen deskriptiboago bat.",
-       "upload-success-subj": "Igoera arrakastatsua",
-       "upload-success-msg": "Zure [$2] igoera arrakastatsua izan da. Hemen duzu eskuragarri: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Igoera-arazoa",
-       "upload-failure-msg": "Hurrengo arazoa egon da zure [$2] igoerarekin:\n\n$1",
-       "upload-warning-subj": "Igoera oharra",
        "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",
        "wlheader-showupdated": "Bisitatu zenituen azken alditik aldaketak izan dituzten orrialdeak '''beltzez''' nabarmenduta daude.",
        "wlnote": "Jarraian {{PLURAL:$2|ikus daiteke azken orduko|ikus daitezke azken '''$2''' orduetako}} azken {{PLURAL:$1|aldaketa|'''$1''' aldaketak}}, $3, $4 gisa.",
        "wlshowlast": "Erakutsi azken $1 orduak, azken $2 egunak",
-       "watchlistall2": "guztia",
        "watchlist-hide": "Ezkutatu",
        "watchlist-submit": "Erakutsi",
        "wlshowtime": "Erakutsi azkenak:",
index db32ba6..cc7dcf8 100644 (file)
@@ -59,7 +59,7 @@
        "tog-extendwatchlist": "گسترش فهرست پیگیری‌ها برای نمایش همهٔ تغییرات، نه فقط جدیدترین‌ها",
        "tog-usenewrc": "گروه‌بندی تغییرات بر پایهٔ صفحه‌ در تغییرات اخیر و فهرست پیگیری‌ها",
        "tog-numberheadings": "شماره‌گذاری خودکار عنوان‌ها",
-       "tog-showtoolbar": "نامیش نوار ابزار ویرایش",
+       "tog-showtoolbar": "نمایش نوار ابزار ویرایش",
        "tog-editondblclick": "ویرایش صفحات با دو کلیک",
        "tog-editsectiononrightclick": "فعال کردن ویرایش بخش‌ها با کلیک راست روی عنوان بخش‌ها",
        "tog-watchcreations": "افزودن صفحه‌هایی که می‌سازم و پرونده‌هایی که بارگذاری می‌کنم به فهرست پیگیری‌های من",
        "changepassword-success": "گذرواژهٔ شما با موفقیت تغییر داده شد!",
        "changepassword-throttled": "شما به تازگی چندین‌بار برای ثبت ورود تلاش کرده‌اید.\nلطفاً پیش از آنکه دوباره تلاش کنید $1 صبر کنید.",
        "botpasswords": "گذرواژه ربات",
+       "botpasswords-summary": "<em>گذرواژه‌های رباتی</em> اجازه دسترسی به یک حساب کاربری با ای‌پی‌آی بدون استفاده از رمز اصلی حساب را می‌دهد. دسترسی‌های کاربری موجود هنگامی که با گذرواژهٔ رباتیک وارد می‌شوید ممکن است محدود باشند.\n\nاگر نمی‌دانید که ممکن است با این چه کنید، احتمالاً نباید هیچ کاری کنید. هیچ‌کس نباید از شما خواسته باشد که یکی از این‌ها درست کنید به آن‌ها بدهید.",
        "botpasswords-disabled": "گذرواژه‌های ربات غیرفعال شده‌است.",
+       "botpasswords-no-central-id": "برای استفاده از گذرواژه‌های رباتی، شما ابتدا می‌بایست به یک حساب متمرکز وارد شود.",
        "botpasswords-existing": "گذرواژه‌های موجود ربات",
        "botpasswords-createnew": "ایجاد گذرواژه ربات",
        "botpasswords-editexisting": "ویرایش گذرواژه موجود ربات",
        "botpasswords-label-delete": "حذف",
        "botpasswords-label-resetpassword": "بازگردانی گذرواژه",
        "botpasswords-label-grants": "اعطاهای اجرا شدنی:",
+       "botpasswords-help-grants": "هر اجازه به حقوق کاربری که یک حساب کاربری دارد. [[Special:ListGrants|table of grants]] را برای اطلاعات بیشتر مشاهده کنید.",
        "botpasswords-label-restrictions": "محدودیت استفاده:",
        "botpasswords-label-grants-column": "اعطا شد",
        "botpasswords-bad-appid": "نام ربات \"$1\" معتبر نیست.",
+       "botpasswords-insert-failed": "شکست در افزودن نام ربات «$1». در حال حاضر اضافه شده است؟",
+       "botpasswords-update-failed": "شکست در به‌روزرسانی نام رباتی «$1». حذف شده است؟",
        "botpasswords-created-title": "گذرواژه ربات ایجاد شد",
+       "botpasswords-created-body": "گذرواژهٔ رباتی «$1» با موفقیت ایجاد شد.",
        "botpasswords-updated-title": "گذرواژه ربات به‌روز شد",
+       "botpasswords-updated-body": "گذرواژهٔ رباتی «$1» با موفقیت به‌روز شد.",
        "botpasswords-deleted-title": "گذرواژه ربات حذف شد",
+       "botpasswords-deleted-body": "گذرواژهٔ رباتی «$1» حذف شد.",
+       "botpasswords-newpassword": "<strong>$2</strong> گذرواژهٔ جدید برای ورود با <strong>$1</strong> است. <em>لطفاً این را برای ارجاع در آینده ذخیره کنید.</em>",
+       "botpasswords-no-provider": "BotPasswordsSessionProvider موجود نیست.",
+       "botpasswords-restriction-failed": "محدودیت‌های گذرواژهٔ ربات از این ورود جلوگیری می‌کند.",
+       "botpasswords-invalid-name": "نام کاربری مشخص شده دارای جداکنندهٔ گذرواژهٔ رباتی نیست (\"$1\").",
+       "botpasswords-not-exist": "کاربر «$1» گذرواژهٔ رباتی نام‌دهی شدهٔ «$2» ندارد.",
        "resetpass_forbidden": "نمی‌توان گذرواژه‌ها را تغییر داد",
        "resetpass-no-info": "برای دسترسی مستقیم به این صفحه شما باید به سامانه وارد شده باشید.",
        "resetpass-submit-loggedin": "تغییر گذرواژه",
        "right-createpage": "ایجاد صفحه (در مورد صفحه‌های غیر بحث)",
        "right-createtalk": "ایجاد صفحه‌های بحث",
        "right-createaccount": "ایجاد حساب‌های کاربری",
+       "right-autocreateaccount": "ورود خودکار با یک حساب کاربری خارجی",
        "right-minoredit": "علامت زدن ویرایش‌ها به عنوان جزئی",
        "right-move": "انتقال صفحه",
        "right-move-subpages": "انتقال صفحات به همراه زیر‌صفحات‌شان",
        "uploaded-script-svg": "عنصر قابل برنامه‌ریزی «$1» در پرونده بارگذاری اس‌وی‌جی یافت شد.",
        "uploaded-hostile-svg": "سی‌اس‌اس نا امن در عنصر سبک پروندهٔ بارگذاری شدهٔ اس‌وی‌جی یافت شد.",
        "uploaded-event-handler-on-svg": "قرار دادن ویژگی‌های مدیریت رویداد <code>$1=\"$2\"</code> در پرونده‌های اس‌وی‌جی مجاز نیست.",
-       "uploaded-href-attribute-svg": "ویژگی‌های href <code>&lt;$1 $2=\"$3\"&gt;</code> با هدف غیر محلی (برای نمونه، http://, javascript:, etc) در پرونده‌های اس‌وی‌جی مجاز نیست.",
        "uploaded-href-unsafe-target-svg": "در پرونده SVG بارگذاری‌شده برای هدف نادرست <code>&lt;$1 $2=\"$3\"&gt;</code> برچسب href یافت شد.",
        "uploaded-animate-svg": "برچسب  \"animate\" یافت شده ممکن است herf را تغییر دهد. از مشخصه \"from\" <code>&lt;$1 $2=\"$3\"&gt;</code> در پرونده SVG بارگذاری‌شده استفاده کنید.",
        "uploaded-setting-event-handler-svg": "تنظیمات مشخصه گرداننده رویداد بسته شده‌است. کد <code>&lt;$1 $2=\"$3\"&gt;</code>  در پرونده بارگذاری‌شده یافت شد.",
        "filewasdeleted": "پرونده‌ای با همین نام پیشتر بارگذاری و پس از آن پاک شده‌است.\nشما باید $1 را قبل از بارگذاری مجدد آن ببینید.",
        "filename-thumb-name": "به نظر می رسد که عنوان thumbnail است. لطفاً تصویر thumbnail  از دیگر ویکی‌ها را بارگذاری نکنید. عنوان پرونده را اصلاح کنید به صورتی که پیشوند thumbnail نداشته باشد.",
        "filename-bad-prefix": "نام پرونده‌ای که بارگذاری می‌کنید با '''$1''' آغاز می‌شود که یک پیشوند مخصوص تصاویر ثبت شده توسط دوربین‌های دیجیتال است.\nلطفاً نامی بهتر برای پرونده برگزینید.",
-       "upload-success-subj": "بارگذاری با موفقیت انجام شد",
-       "upload-success-msg": "بارگذاری شما از [$2] موفق بود. این پرونده در اینجا قابل دسترسی است: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "مشکل در بارگذاری",
-       "upload-failure-msg": "مشکلی در بارگذاری شما از [$2] وجود داشت:\n\n$1",
-       "upload-warning-subj": "هشدار بارگذاری",
-       "upload-warning-msg": "فرم بارگذاری مشکلی داشت [$2]. شما می‌توانید به [[Special:Upload/stash/$1|فرم بارگذاری]] بازگردید تا این اشکال را رفع کنید.",
        "upload-proto-error": "پروتکل نادرست",
        "upload-proto-error-text": "بارگذاری از دوردست به نشانی‌هایی که با <code dir=ltr>http://</code> یا <code dir=ltr>ftp://</code> آغاز شوند نیاز دارد.",
        "upload-file-error": "خطای داخلی",
        "wlheader-showupdated": "صفحه‌هایی که پس از آخرین بازدید شما تغییر کرده‌اند '''پررنگ''' نمایش داده شده‌اند.",
        "wlnote": "در زیر {{PLURAL:$1|تغییری|<strong>$1</strong> تغییری}} که در {{PLURAL:$2|ساعت|<strong>$2</strong> ساعت}} گذشته انجام شده موجود است، تاریخ آخرین بازیابی: $3، $4",
        "wlshowlast": "نمایش آخرین $1 ساعت $2 روز",
-       "watchlistall2": "همه",
        "watchlist-hide": "نهفتن",
        "watchlist-submit": "نمایش",
        "wlshowtime": "نمایش بازهٔ زمانی:",
        "version-hook-subscribedby": "وارد شده توسط",
        "version-version": "($1)",
        "version-no-ext-name": "[بدون نام]",
-       "version-svn-revision": "(&رلم;r$2)",
        "version-license": "اجازه‌نامهٔ مدیاویکی",
        "version-ext-license": "مجوزها",
        "version-ext-colheader-name": "گستره‌ها",
        "mw-widgets-titleinput-description-new-page": "این صفحه هنوز وجود ندارد",
        "mw-widgets-titleinput-description-redirect": "تغییر مسیر به $1",
        "api-error-blacklisted": "لطفاً یک عنوان توصیفی متفاوت انتخاب کنید.",
+       "sessionmanager-tie": "نمی‌توان چندین نوع درخواست هویت‌سنجی را ترکیب کرد: $1.",
        "sessionprovider-generic": "$1 فصل",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "فصل‌های کوکی‌محور",
+       "sessionprovider-nocookies": "کوکی‌ها ممکن است غیر فعال شده باشند. اطمینان کسب کنید که کوکی‌ها را فعال کرده‌اید و دوباره آغاز کنید.",
        "randomrootpage": "صفحهٔ ریشهٔ تصادفی"
 }
index e2cc9ea..8fc2a21 100644 (file)
        "passwordreset-emailtext-ip": "Joku (todennäköisesti sinä, IP-osoitteesta $1) pyysi salasanasi\nvaihtamista sivustolla {{SITENAME}} ($4). {{PLURAL:$3|Seuraava käyttäjätunnus on|Seuraavat käyttäjätunnukset ovat}}\nyhdistettynä tähän sähköpostiosoitteeseen:\n\n$2\n\n{{PLURAL:$3|Tämä väliaikainen salasana vanhentuu|Nämä väliaikaiset salasanat vanhentuvat}} {{PLURAL:$5|yhden päivän|$5 päivän}} kuluttua.\nKirjaudu sisään nyt ja valitse uusi salasana heti. Jos joku toinen teki tämän pyynnön \ntai jos muistitkin vanhan salasanasi etkä halua enää muuttaa sitä,\nvoit jättää tämän viestin huomiotta ja jatkaa vanhan salasanasi käyttämistä.",
        "passwordreset-emailtext-user": "Käyttäjä $1 pyysi muistutusta tunnuksesi tiedoista sivustolla {{SITENAME}} ($4).\n{{PLURAL:$3|Seuraava käyttäjätunnus on|Seuraavat käyttäjätunnukset ovat}} liitetty tähän sähköpostiosoitteeseen:\n\n$2\n\n{{PLURAL:$3|Tämä väliaikainen salasana vanhentuu|Nämä väliaikaiset salasanat vanhentuvat}} {{PLURAL:$5|yhden päivän|$5 päivän}} kuluttua.\nSinun kannattaa kirjautua sisään ja valita uusi salasana. Jos joku toinen teki tämän\npyynnön, tai muistat sittenkin vanhan salasanasi, etkä halua muuttaa sitä,\nvoit jättää tämän viestin huomiotta ja jatkaa vanhan salasanan käyttöä.",
        "passwordreset-emailelement": "Käyttäjätunnus: \n$1\n\nVäliaikainen salasana: \n$2",
-       "passwordreset-emailsentemail": "Mikäli tämä sähköpostiosoite on liitetty tiliisi, salasanan nollaamisviesti lähetetään.",
-       "passwordreset-emailsentusername": "Mikäli tähän käyttäjänimeen liitetty sähköpostiosoite löytyy, salasanan nollaamisviesti lähetetään.",
+       "passwordreset-emailsentemail": "Jos tämä on sinun tunnuksellesi rekisteröity sähköpostiosoite, salasanan uudistamisesta kertova viesti lähetetään.",
+       "passwordreset-emailsentusername": "Jos on olemassa vastaava rekisteröity sähköpostiosoite, salasanan uudistamisesta kertova viesti lähetetään.",
        "passwordreset-emailsent-capture": "Salasanan uudistamisesta kertova sähköpostiviesti on lähetetty, ja se näkyy myös alla.",
        "passwordreset-emailerror-capture": "Allaoleva sähköpostiviesti luotiin, mutta sen lähettäminen {{GENDER:$2|käyttäjälle}} epäonnistui: $1",
        "changeemail": "Muuta tai poista sähköpostiosoite",
        "grant-uploadeditmovefile": "Tallentaa, korvata ja siirtää tiedostoja",
        "grant-uploadfile": "Tallentaa uusia tiedostoja",
        "grant-basic": "Perustason oikeudet",
-       "grant-viewdeleted": "Näe poistetut tiedostot ja sivut",
-       "grant-viewmywatchlist": "Näe oma tarkkailulistasi",
+       "grant-viewdeleted": "Nähdä poistettuja sivuja ja tiedostoja",
+       "grant-viewmywatchlist": "Nähdä oma tarkkailulista",
        "newuserlogpage": "Uudet käyttäjät",
        "newuserlogpagetext": "Tämä on loki luoduista käyttäjätunnuksista.",
        "rightslog": "Käyttöoikeusloki",
        "uploaded-script-svg": "Found scriptable element \"$1\" in the uploaded SVG file.",
        "uploaded-hostile-svg": "Tallennetun SVG-tiedoston tyylielementissä löytyi turvaton CSS.",
        "uploaded-event-handler-on-svg": "Setting event-handler attributes <code>$1=\"$2\"</code> is not allowed in SVG files.",
-       "uploaded-href-attribute-svg": "href attributes <code>&lt;$1 $2=\"$3\"&gt;</code> with non-local target (e.g. http://, javascript:, etc) are not allowed in SVG files.",
        "uploaded-href-unsafe-target-svg": "Found href to unsafe target <code>&lt;$1 $2=\"$3\"&gt;</code> in the uploaded SVG file.",
        "uploaded-animate-svg": "Found \"animate\" tag that might be changing href, using the \"from\" attribute <code>&lt;$1 $2=\"$3\"&gt;</code> in the uploaded SVG file.",
        "uploaded-setting-event-handler-svg": "Setting event-handler attributes is blocked, found <code>&lt;$1 $2=\"$3\"&gt;</code> in the uploaded SVG file.",
        "filename-thumb-name": "Tämä vaikuttaa olevan esikatselukuvan nimi. Älä tallenna esikatselukuvia takaisin samaan wikiin. Muussa tapauksessa korjaa tiedoston nimi sellaiseksi, joka on mielekkäämpi ja joka ei sisällä esikatselun etuliitettä.",
        "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.",
        "filename-prefix-blacklist": " #<!-- älä muokkaa tätä riviä --> <pre>\n# Syntaksi on seuraava:\n#   * #-merkki aloittaa kommentin, joka jatkuu rivin loppuun\n#   * Jokainen epätyhjä rivi on tiedostonimien etuliite digitaalikameroiden yleisesti käyttämille tiedostonimille\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # jotkut matkapuhelimet\nIMG # yleinen\nJD # Jenoptik\nMGP # Pentax\nPICT # muut\n #</pre> <!-- älä muokkaa tätä riviä -->",
-       "upload-success-subj": "Tallennus onnistui",
-       "upload-success-msg": "Tallennuksesi [$2] onnistui. Tiedosto on saatavilla täällä: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Tallennusongelma",
-       "upload-failure-msg": "Tiedoston tallentaminen osoitteesta [$2] ei onnistunut:\n\n$1",
-       "upload-warning-subj": "Tallennusvaroitus",
-       "upload-warning-msg": "Tiedoston tallennuksessasi oli ongelmia [$2]. Voit palata [[Special:Upload/stash/$1|tallennussivulle]] ja korjata ongelman.",
        "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": "Sisäinen virhe",
        "log-title-wildcard": "Haun kohteet alkavat tällä tekstillä",
        "showhideselectedlogentries": "Muuta valittujen lokitapahtumien näkyvyyttä",
        "log-edit-tags": "Muuta merkkauksia valituissa lokimerkinnöissä",
+       "checkbox-select": "Valitse: $1",
+       "checkbox-all": "Kaikki",
+       "checkbox-none": "Ei mitään",
+       "checkbox-invert": "Päinvastoin",
        "allpages": "Kaikki sivut",
        "nextpage": "Seuraava sivu ($1)",
        "prevpage": "Edellinen sivu ($1)",
        "listgrouprights-namespaceprotection-header": "Nimiavaruuksien rajoitukset",
        "listgrouprights-namespaceprotection-namespace": "Nimiavaruus",
        "listgrouprights-namespaceprotection-restrictedto": "Käyttäjän muokkausoikeudet",
+       "listgrants": "Toimintaoikeudet",
+       "listgrants-grant": "Toimintaoikeus",
+       "listgrants-rights": "Oikeudet",
        "trackingcategories": "Tarkkailuluokat",
        "trackingcategories-summary": "Tällä sivulla on luettelo sellaisista ongelmia havaitsevista luokista (tarkkailuluokat), joiden sisällön koostaa automaattisesti MediaWiki-ohjelmisto. Luokkien nimiä voi vaihtaa muuttamalla asianomaista järjestelmäviestiä nimiavaruudessa {{ns:8}}.",
        "trackingcategories-msg": "Tarkkailuluokka",
        "wlheader-showupdated": "Sivut, joita on muokattu viimeisen käyntisi jälkeen, on '''lihavoitu'''.",
        "wlnote": "Alla {{PLURAL:$1|on viimeisin muutos|ovat viimeisimmät <strong>$1</strong> muutosta}} edellisen {{PLURAL:$2|tunnin|<strong>$2</strong> tunnin}} ajalta $3 kello $4 lukien.",
        "wlshowlast": "Näytä edelliset $1 tuntia tai $2 päivää",
-       "watchlistall2": "kaikki",
        "watchlist-hide": "Piilota",
        "watchlist-submit": "Näytä",
        "wlshowtime": "Näytettävä aikajakso:",
        "lastmodifiedatby": "Tätä sivua muokkasi viimeksi $3 $1 kello $2.",
        "othercontribs": "Perustuu seuraavien tekijöiden työhön: $1.",
        "others": "muut",
-       "siteusers": "{{GRAMMAR:genitive|{{SITENAME}}}} {{PLURAL:$2|käyttäjä|käyttäjät}} $1",
+       "siteusers": "{{GRAMMAR:genitive|{{SITENAME}}}} {{PLURAL:$2|{{GENDER:$1|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.",
        "expand_templates_preview_fail_html": "<em>Koska sivustolla {{SITENAME}} on käytössä puhdas HTML-koodi ja koska istunnon tiedot ovat kadonneet, esikatselu on piilotettu JavaScript-hyökkäyksien torjumiseksi.</em>\n\n<strong>Jos olet oikealla asialla, yritä uudestaan.</strong>\nJos esikatselu ei vieläkään toimi, kokeile [[Special:UserLogout|kirjautua ulos]] ja sen jälkeen kirjaudu uudestaan sisään.",
        "expand_templates_preview_fail_html_anon": "<em>Koska sivustolla {{SITENAME}} on käytössä puhdas HTML-koodi ja koska et ole kirjautunut sisään, esikatselu on piilotettu JavaScript-hyökkäyksien torjumiseksi.</em>\n\n<strong>Jos olet oikealla asialla, [[Special:UserLogin|kirjaudu sisään]] ja yritä uudestaan.</strong>",
        "expand_templates_input_missing": "Sinun on annettava edes jotakin tekstiä syötteeksi.",
-       "pagelanguage": "Sivun kielen valinta",
+       "pagelanguage": "Vaihda sivun kieltä",
        "pagelang-name": "Sivu",
        "pagelang-language": "Kieli",
        "pagelang-use-default": "Käytä oletuskieltä",
        "action-pagelang": "muuttaa sivun kieliasetuksia",
        "log-name-pagelang": "Kielenvaihtoloki",
        "log-description-pagelang": "Tämä on loki, johon merkitään muutokset sivujen kieliasetuksissa.",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|muutti}} sivun kieltä sivulla $3 kielestä $4 kieleksi $5.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|muutti}} kielen sivulla $3 kielestä $4 kieleksi $5.",
        "default-skin-not-found": "Hupsista! Oletuksena tuleva ulkoasu sinun wikillesi, joka on määritelty koodissa <code dir=\"ltr\">$wgDefaultSkin</code> muotoon <code>$1</code>, ei ole saatavilla.\n\nAlla on ohjeet englannin kielellä:\n\nYour installation seems to include the following {{PLURAL:$4|skin|skins}}. See [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] for information how to enable {{PLURAL:$4|it|them and choose the default}}.\n\n$2\n\n; If you have just installed MediaWiki:\n: You probably installed from git, or directly from the source code using some other method. This is expected. Try installing some skins from [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's skin directory], by:\n:* Downloading the [https://www.mediawiki.org/wiki/Download tarball installer], which comes with several skins and extensions. You can copy and paste the <code>skins/</code> directory from it.\n:* Downloading individual skin tarballs from [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Using Git to download skins].\n: Doing this should not interfere with your git repository if you're a MediaWiki developer.\n\n; If you have just upgraded MediaWiki:\n: MediaWiki 1.24 and newer no longer automatically enables installed skins (see [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]). You can paste the following {{PLURAL:$5|line|lines}} into <code>LocalSettings.php</code> to enable {{PLURAL:$5|the|all}} installed {{PLURAL:$5|skin|skins}}:\n\n<pre dir=\"ltr\">$3</pre>\n\n; If you have just modified <code>LocalSettings.php</code>:\n: Double-check the skin names for typos.",
        "default-skin-not-found-no-skins": "Hupsista! Oletusulkoasua sinun wikillesi ei ole saatavilla. Se on määritelty ulkoasuksi <code>$1</code> kohteessa <code>$wgDefaultSkin</code>.\n\nAlla on ohjeet englannin kielellä:\n\nYou have no installed skins.\n\n; If you have just installed or upgraded MediaWiki:\n: You probably installed from git, or directly from the source code using some other method. This is expected. MediaWiki 1.24 and newer doesn't include any skins in the main repository. Try installing some skins from [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's skin directory], by:\n:* Downloading the [https://www.mediawiki.org/wiki/Download tarball installer], which comes with several skins and extensions. You can copy and paste the <code>skins/</code> directory from it.\n:* Downloading individual skin tarballs from [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Using Git to download skins].\n: Doing this should not interfere with your git repository if you're a MediaWiki developer. See [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] for information how to enable skins and choose the default.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (käytössä)",
index a7905ec..7bd7fb7 100644 (file)
        "uploaded-script-svg": "Élément scriptable « $1 » trouvé dans le fichier SVG téléchargé.",
        "uploaded-hostile-svg": "CSS non sûr trouvé dans l’élément style d’un fichier SVG téléchargé.",
        "uploaded-event-handler-on-svg": "Fixer des attributs de gestionnaire d’événement <code>$1=\"$2\"</code> n’est pas autorisé dans les fichiers SVG.",
-       "uploaded-href-attribute-svg": "Les attributs href <code>&lt;$1 $2=\"$3\"&gt;</code> avec une cible non locale (par ex. http://, javascript:, etc.) ne sont pas autorisés dans les fichiers SVG.",
-       "uploaded-href-unsafe-target-svg": "href vers une cible non sûre <code>&lt;$1 $2=\"$3\"&gt;</code> trouvé dans le fichier SVG téléchargé.",
+       "uploaded-href-attribute-svg": "les attributs href dans les fichiers SVG ne sont autorisés que pour faire référence à des cibles http:// ou https://, <code>&lt;$1 $2=\"$3\"&gt;</code> trouvé.",
+       "uploaded-href-unsafe-target-svg": "href vers des données non sûres trouvé dans le fichier SVG téléchargé : URI cible <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploaded-animate-svg": "Balise « animate » trouvée, qui pourrait modifier le href en utilisant l’attribut « from » <code>&lt;$1 $2=\"$3\"&gt;</code> dans le fichier SVG téléchargé.",
        "uploaded-setting-event-handler-svg": "Positionner des attributs de gestionnaire d’événement est bloqué, <code>&lt;$1 $2=\"$3\"&gt;</code> trouvé dans le fichier SVG téléchargé.",
        "uploaded-setting-href-svg": "L’utilisation de la balise « set » pour ajouter un attribut « href » à l’élément parent est interdite.",
        "filename-thumb-name": "Ce titre ressemble à celui d’une vignette. Évitez d’importer des vignettes d’une image déjà présente sur le wiki. Si ce n’est pas le cas, veuillez corriger le nom de fichier afin qu’il soit plus descriptif et qu’il ne commence pas comme un titre de vignette.",
        "filename-bad-prefix": "Le nom du fichier commence par '''« $1 »''' qui est typiquement un nom attribué automatiquement par les appareils photo numériques.\nVeuillez choisir un nom de fichier descriptif.",
        "filename-prefix-blacklist": " #<!-- laisser cette ligne telle quelle --><pre>\n# La syntaxe est la suivante :\n#  * Tout ce qui figure entre un caractère \"#\" jusqu’à la fin de la ligne est un commentaire ;\n#  * Toute ligne non vide est un préfixe typique de nom de fichier assigné automatiquement par les appareils numériques :\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # certains téléphones mobiles\nIMG # générique\nJD # Jenoptik\nMGP # Pentax\nPICT # divers\n #</pre><!-- laisser cette ligne telle quelle -->",
-       "upload-success-subj": "Import effectué avec succès",
-       "upload-success-msg": "Votre import depuis [$2] a réussi. Il est disponible ici : [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Problème d'import",
-       "upload-failure-msg": "Il y a eu un problème avec votre import depuis [$2] :\n\n$1",
-       "upload-warning-subj": "Avertissement lors de l’import",
-       "upload-warning-msg": "Un problème est survenu lors de l’import depuis [$2]. Vous pouvez revenir au [[Special:Upload/stash/$1|formulaire d’import]] pour le résoudre.",
        "upload-proto-error": "Protocole incorrect",
        "upload-proto-error-text": "L’import requiert des URL commençant par <code>http://</code> ou <code>ftp://</code>.",
        "upload-file-error": "Erreur interne",
        "upload-too-many-redirects": "L’URL contient trop de redirections.",
        "upload-http-error": "Une erreur HTTP est survenue : $1",
        "upload-copy-upload-invalid-domain": "La copie des téléversements n’est pas disponible depuis ce domaine.",
+       "upload-foreign-cant-upload": "Ce wiki n’est pas configuré pour télécharger des fichiers vers le dépôt de fichiers externe demandé.",
        "upload-dialog-title": "Téléverser un fichier",
        "upload-dialog-button-cancel": "Annuler",
        "upload-dialog-button-done": "Fait",
        "watchlist-details": "{{PLURAL:$1|$1 page|$1 pages}} dans votre liste de suivi, sans compter les pages de discussion.",
        "wlheader-enotif": "La notification par courriel est activée.",
        "wlheader-showupdated": "Les pages qui ont été modifiées depuis votre dernière visite sont affichées en '''gras'''.",
-       "wlnote": "Ci-dessous {{PLURAL:$1|figure la dernière modification effectuée|figurent les <strong>$1</strong> dernières modifications effectuées}} durant {{PLURAL:$2|la dernière heure|les <strong>$2</strong> dernières heures}}, depuis $3, $4.",
+       "wlnote": "Ci-dessous {{PLURAL:$1|figure la dernière modification effectuée|figurent les <strong>$1</strong> dernières modifications effectuées}} durant {{PLURAL:$2|la dernière heure|les <strong>$2</strong> dernières heures}}, jusqu'au $3, $4.",
        "wlshowlast": "Montrer les dernières $1 heures, les derniers $2 jours",
-       "watchlistall2": "tout",
        "watchlist-hide": "Masquer",
        "watchlist-submit": "Lister",
        "wlshowtime": "Période affichée :",
        "lockedbyandtime": "(par $1 le $2 à $3)",
        "move-page": "Renommer $1",
        "move-page-legend": "Renommer une page",
-       "movepagetext": "Utilisez le formulaire ci-dessous pour renommer une page, en déplaçant tout son historique vers le nouveau nom. L'ancien titre deviendra une page de redirection vers le nouveau titre. Vous pouvez mettre à jour automatiquement les redirections actuelles qui pointent vers le titre original. Si vous choisissez de ne pas le faire, assurez-vous de vérifier toute [[Special:DoubleRedirects|double redirection]] ou [[Special:BrokenRedirects|redirection cassée]]. Vous avez la responsabilité de vous assurer que les liens continuent de pointer vers leur destination supposée.\n\nNotez que la page ne sera '''pas''' renommée s'il existe déjà une page avec le nouveau titre, sauf si cette dernière est une simple redirection avec un historique de modifications vierge. Ceci permet de renommer une page vers sa position d'origine si le déplacement s'avère erroné.\n\n'''Attention !'''\nCeci peut provoquer un changement radical et imprévu pour une page souvent consultée ; assurez-vous d'en avoir compris les conséquences avant de continuer.",
-       "movepagetext-noredirectfixer": "Utilisez le formulaire ci-dessous pour renommer une page, en déplaçant tout son historique vers le nouveau nom.\nL'ancien titre deviendra une page de redirection vers le nouveau titre.\nVérifiez bien les [[Special:DoubleRedirects|doubles redirections]] ou les [[Special:BrokenRedirects|redirections cassées]].\nVous avez la responsabilité de vous assurer que les liens continuent de pointer vers leur destination supposée.\n\nNotez que la page ne sera '''pas''' déplacée s'il existe déjà une page avec le nouveau titre, sauf si cette dernière a un historique de modifications vierge et est soit vide, soit une simple redirection. Ceci permet de renommer une page vers sa position d'origine si le déplacement s'avère erroné, et il est impossible d'écraser une page existante.\n\n'''Attention !'''\nCeci peut provoquer un changement radical et imprévu pour une page souvent consultée ; assurez-vous d'en avoir compris les conséquences avant de continuer.",
+       "movepagetext": "Utilisez le formulaire ci-dessous pour renommer une page, en déplaçant tout son historique vers le nouveau nom. L’ancien titre deviendra une page de redirection vers le nouveau titre. Vous pouvez mettre à jour automatiquement les redirections actuelles qui pointent vers le titre original. Si vous choisissez de ne pas le faire, assurez-vous de vérifier toute [[Special:DoubleRedirects|double redirection]] ou [[Special:BrokenRedirects|redirection cassée]]. Vous avez la responsabilité de vous assurer que les liens continuent de pointer vers leur destination supposée.\n\nNotez que la page ne sera <string>pas</strong> renommée s’il existe déjà une page avec le nouveau titre, sauf si cette dernière est une simple redirection avec un historique de modifications vierge. Ceci permet de renommer une page vers sa position d’origine si le déplacement s’avère erroné.\n\n<strong>Attention !</strong>\nCeci peut provoquer un changement radical et imprévu pour une page souvent consultée ; assurez-vous d’en avoir compris les conséquences avant de continuer.",
+       "movepagetext-noredirectfixer": "Utilisez le formulaire ci-dessous pour renommer une page, en déplaçant tout son historique vers le nouveau nom.\nL’ancien titre deviendra une page de redirection vers le nouveau titre.\nVérifiez bien les [[Special:DoubleRedirects|doubles redirections]] ou les [[Special:BrokenRedirects|redirections cassées]].\nVous avez la responsabilité de vous assurer que les liens continuent de pointer vers leur destination supposée.\n\nNotez que la page ne sera <strong>pas</stong> déplacée s’il existe déjà une page avec le nouveau titre, sauf si cette dernière a un historique de modifications vierge et est soit vide, soit une simple redirection. Ceci permet de renommer une page vers sa position d’origine si le déplacement s’avère erroné, et il est impossible d’écraser une page existante.\n\n<strong>Attention !</stong>\nCeci peut provoquer un changement radical et imprévu pour une page souvent consultée ; assurez-vous d’en avoir compris les conséquences avant de continuer.",
        "movepagetalktext": "Si vous cochez cette case, la page de discussion associée sera automatiquement renommée, à moins qu’une page de discussion non vide existe déjà sous ce nouveau nom.\n\nDans ce cas, vous devrez renommer ou fusionner cette page de discussion manuellement si vous le désirez.",
        "moveuserpage-warning": "'''Attention :''' Vous êtes sur le point de renommer une page d’utilisateur. Veuillez noter que seule la page sera renommée et que l’utilisateur '''ne''' sera '''pas''' renommé.",
        "movecategorypage-warning": "<strong>Avertissement :</strong> Vous êtes sur le point de renommer une page de catégorie. Veuillez noter que seule la catégorie sera renommée et <em>qu’aucune</em> des pages de l’ancienne catégorie ne sera transférée dans la nouvelle.",
        "movenosubpage": "Cette page n'a aucune sous-page.",
        "movereason": "Motif :",
        "revertmove": "rétablir",
-       "delete_and_move_text": "== Suppression requise ==\nLa page de destination « [[:$1]] » existe déjà.\nÊtes-vous certain{{GENDER:||e|}} de vouloir la supprimer pour permettre ce renommage ?",
+       "delete_and_move_text": "La page de destination « [[:$1]] » existe déjà.\nÊtes-vous certain{{GENDER:||e|}} de vouloir la supprimer pour permettre ce renommage ?",
        "delete_and_move_confirm": "Oui, supprimer la page de destination",
        "delete_and_move_reason": "Page supprimée pour permettre le renommage depuis « [[$1]] »",
        "selfmove": "Les titres d'origine et de destination sont les mêmes ;\nimpossible de renommer une page sur elle-même.",
        "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 ==\n[[:$1]] existe déjà sur un dépôt partagé. Renommer ce fichier rendra le fichier sur le dépôt partage inaccessible.",
+       "move-over-sharedrepo": "[[:$1]] existe déjà sur un dépôt partagé. Renommer ce fichier rendra le fichier sur le dépôt partagé inaccessible.",
        "file-exists-sharedrepo": "Le nom choisi est déjà utilisé par un fichier sur un dépôt partagé.\nChoisissez un autre nom.",
        "export": "Exporter des pages",
        "exporttext": "Vous pouvez exporter en XML le texte et l’historique d’une page ou d’un ensemble de pages ; le résultat peut alors être importé dans un autre wiki utilisant le logiciel MediaWiki via la [[Special:Import|page d’importation]].\n\nPour exporter des pages, entrez leurs titres dans la boîte de texte ci-dessous, à raison d’un titre par ligne. Sélectionnez si vous désirez la version actuelle avec toutes les anciennes versions, avec les lignes de l’historique de la page, ou simplement la page actuelle avec des informations sur la dernière modification.\n\nDans ce dernier cas vous pouvez aussi utiliser un lien, tel que [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] pour la page [[{{MediaWiki:Mainpage}}]].",
        "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}}",
+       "siteusers": "{{PLURAL:$2|{{GENDER:$1|l’utilisateur|l’utilisatrice}}|{{Gender:$1|les utilisateurs|les utilisatrices}}}} $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.",
        "version-libraries-license": "Licence",
        "version-libraries-description": "Description",
        "version-libraries-authors": "Auteurs",
-       "redirect": "Redirigé par ID de fichier, utilisateur, page, révision ou journal",
+       "redirect": "Rediriger par ID de fichier, utilisateur, page, révision ou journal",
        "redirect-legend": "Rediriger vers une page ou un fichier",
        "redirect-summary": "Cette page spéciale redirige vers un fichier (nom de fichier fourni), une page (ID de révision ou de page fourni), une page d’utilisateur (identifiant numérique de l’utilisateur fourni), ou une entrée de journal (ID du journal fourni). Utilisation : [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], ou [[{{#Special:Redirect}}/logid/186]].",
        "redirect-submit": "Valider",
        "expand_templates_preview_fail_html": "<em>Comme {{SITENAME}} a HTML brut activé et qu’il y a eu une perte de données de session, l’aperçu est masqué par précaution contre les attaques JavaScript.</em>\n\n<strong>Si c’est une demande d’aperçu légitime, veuillez réessayer.</strong>\nSi cela ne fonctionne toujours pas, essayez de [[Special:UserLogout|vous déconnecter]] et vous reconnecter.",
        "expand_templates_preview_fail_html_anon": "<em>Comme {{SITENAME}} a HTML brut activé et que vous n’êtes pas connecté, l’aperçu est masqué par précaution contre les attaques JavaScript.</em>\n\n<strong>Si c’est une demande d’aperçu légitime, veuillez [[Special:UserLogin|vous connecter]] et réessayer.</strong>",
        "expand_templates_input_missing": "Vous devez fournir au moins un texte d’entrée.",
-       "pagelanguage": "Sélecteur de langue de la page",
+       "pagelanguage": "Modifier la langue de la page",
        "pagelang-name": "Page",
        "pagelang-language": "Langue",
        "pagelang-use-default": "Utiliser la langue par défaut",
index f26d0ad..551586e 100644 (file)
@@ -9,13 +9,15 @@
                        "Tocaibon",
                        "Urhixidur",
                        "לערי ריינהארט",
-                       "아라"
+                       "아라",
+                       "Marsitown"
                ]
        },
        "tog-underline": "Sotlinee leams",
        "tog-hideminor": "Plate lis piçulis modifichis tai ultins cambiaments",
        "tog-hidepatrolled": "Plate lis modifichis controladis intai ultins cambiaments",
        "tog-newpageshidepatrolled": "Plate lis pagjinis verificadis de liste des pagjinis gnovis",
+       "tog-hidecategorization": "Plate la categorizazion des pagjinis",
        "tog-extendwatchlist": "Slargje la liste des controladis specialis, no dome aes ultimis",
        "tog-usenewrc": "Ragrupe lis modifichis par pagjine intes ultimis modifichis e inati oservâts speciai",
        "tog-numberheadings": "Numerazion automatiche dai titui",
@@ -26,6 +28,7 @@
        "tog-watchdefault": "Zonte in automatic lis pagjinis che o cambii inte liste di chês tignudis di voli",
        "tog-watchmoves": "Zonte in automatic lis pagjinis che o cambii inte liste di chês tignudis di voli",
        "tog-watchdeletion": "Zonte in automatic lis pagjinis che o cambii inte liste di chês tignudis di voli",
+       "tog-watchrollback": "Zonte ai osservâts speciâi lis pagjinis dulà che tu âs fat il rollback",
        "tog-minordefault": "Imposte come opzion predeterminade ducj i cambiaments come piçui",
        "tog-previewontop": "Mostre anteprime parsore dal spazi pe modifiche",
        "tog-previewonfirst": "Mostre anteprime te prime modifiche",
        "tog-shownumberswatching": "Mostre il numar di utents che a stan tignint di voli",
        "tog-oldsig": "Firme esistente",
        "tog-fancysig": "Interprete lis firmis come test wiki (cence un leam automatic)",
-       "tog-uselivepreview": "Dopre la anteprime direte (sperimentâl)",
+       "tog-uselivepreview": "Dopre la anteprime direte",
        "tog-forceeditsummary": "Domande conferme se il cjamp ogjet al è vueit",
        "tog-watchlisthideown": "Plate i miei cambiaments inte liste des pagjinis tignudis di voli",
        "tog-watchlisthidebots": "Plate i bot de liste dai oservâts speciai",
        "tog-watchlisthideminor": "Plate i piçui cambiaments de liste dai oservâts speciai",
        "tog-watchlisthideliu": "Plate lis modifichis dai utents regjstrâts de liste dai oservâts speciai",
+       "tog-watchlistreloadautomatically": "Ricjarie la liste dai osservâts speciâi dutis lis voltis che tu modifichis un filtri (al covente Javascript)",
        "tog-watchlisthideanons": "Palte lis modifichis dai utents anonims dai oservâts speciai",
        "tog-watchlisthidepatrolled": "Plate lis modifichis verificadis de liste dai oservâts speciai",
+       "tog-watchlisthidecategorization": "Plate la categorizazion des pagjinis",
        "tog-ccmeonemails": "Mandimi une copie dai messaçs che o mandi ai altris utents",
        "tog-diffonly": "No mostrâ la pagjine dopo il control des versions",
        "tog-showhiddencats": "Mostre categoriis platadis",
        "october-date": "$1 di Otubar",
        "november-date": "$1 di Novembar",
        "december-date": "$1 di Dicembar",
+       "period-am": "AM",
+       "period-pm": "PM",
        "pagecategories": "{{PLURAL:$1|Categorie|Categoriis}}",
        "category_header": "Vôs inte categorie \"$1\"",
        "subcategories": "Sot categoriis",
        "morenotlisted": "La liste no je complete",
        "mypage": "Pagjine",
        "mytalk": "Discussions",
-       "anontalk": "Discussion par chest IP",
+       "anontalk": "Discussions",
        "navigation": "somari",
        "and": "&#32;e",
        "qbfind": "Cjate",
        "permalink": "Leam permanent",
        "print": "Stampe",
        "view": "Viodi",
+       "view-foreign": "Vjôt su $1",
        "edit": "Cambie",
+       "edit-local": "Zonte une descrizion locâl",
        "create": "Cree",
+       "create-local": "Zonte une descrizion locâl",
        "editthispage": "Cambie cheste pagjine",
        "create-this-page": "Cree cheste pagjine",
        "delete": "Elimine",
        "otherlanguages": "Altris lenghis",
        "redirectedfrom": "(Inviât ca di $1)",
        "redirectpagesub": "Pagjine di redirezion",
+       "redirectto": "Reindriçât a:",
        "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",
        "jumptonavigation": "navigazion",
        "jumptosearch": "ricercje",
        "view-pool-error": "Scusinus ma i server a son sovrecjariats in chest moment. Masse utents a stan cjalant cheste pagjnie. Torne a provâ fra cualchi minût.\n\n$1",
+       "generic-pool-error": "Scusinus ma i server a son sovrecjariats in chest moment. Masse utents a stan cjalant cheste pagjnie. Torne a provâ fra cualchi minût.",
        "pool-timeout": "Timeout durant la spiete dal sbolc.",
        "pool-queuefull": "La code dal pool e je plene",
        "pool-errorunknown": "Erôr no cognossût",
+       "pool-servererror": "Il servizi contatôr dai pool nol è disponibil $1",
+       "poolcounter-usage-error": "Erôr di ûs: $1",
        "aboutsite": "Informazions su {{SITENAME}}",
        "aboutpage": "Project:Informazions",
        "copyright": "Il contignût al è disponibil sot de licence $1 se nol è specificât in altre maniere",
        "disclaimers": "Avîs legâi",
        "disclaimerpage": "Project:Avîs gjenerâi",
        "edithelp": "Jutori pai cambiaments",
+       "helppage-top-gethelp": "Jutori",
        "mainpage": "Pagjine principâl",
        "mainpage-description": "Pagjine principâl",
        "policy-url": "Project:Politiche",
        "hidetoc": "plate",
        "collapsible-collapse": "Strenç",
        "collapsible-expand": "Slargje",
+       "confirmable-confirm": "Sestu {{GENDER:$1|sugûr|sigure}}?",
+       "confirmable-yes": "Sì",
+       "confirmable-no": "No",
        "thisisdeleted": "Vuelistu cjalâ o ripristinâ $1?",
        "viewdeleted": "Vuelistu viodi $1?",
        "restorelink": "{{PLURAL:$1|une modifiche eliminade|$1 modifichis eliminadis}}",
        "nstab-template": "Model",
        "nstab-help": "Jutori",
        "nstab-category": "Categorie",
+       "mainpage-nstab": "Pagjine principâl",
        "nosuchaction": "Azion no pussibile",
        "nosuchactiontext": "La azion specificade inte URL no je valide. Forsit la URL no je stade scrite juste o forsit il leam no l'è valit. Forsit al è un bug in {{SITENAME}}.",
        "nosuchspecialpage": "Pagjine speciâl no disponibil",
        "databaseerror-query": "Interogazion: $1",
        "databaseerror-function": "Funzion $1",
        "databaseerror-error": "Erôr: $1",
+       "transaction-duration-limit-exceeded": "Par evitâ masse ritart te rispueste, cheste operazion è je stade fermade par vie che la durade dal timp di scriture ($1) al à passât il limit di $2 {{PLURAL:$2|secont|seconts}}.\nSe si stan modificant tancj elements in un colp al sarès di provâ a fâ la stesse operazion cun mancul elements a la volte.",
        "laggedslavemode": "Atenzion: La pagjine podarès no segnalâ inzornaments recents.",
        "readonly": "Base di dâts blocade",
        "enterlockreason": "Scrivi il motîf dal bloc e indicâ cuant che al varès di jessi gjavât.",
-       "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.\n\nL'aministradôr ch'al à metût il bloc al à scrit cheste motivazion: $1",
+       "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, une volte finide dut al tornarà normâl.\n\nL'aministradôr che al à metût il bloc al à scrit cheste motivazion: $1",
        "missing-article": "La base di dâts no à cjatât il test di une pagjine che e varès di vê vût cjatât, di non \"$1\" $2.\n\nChest in gjenar al è causât dal jessi lâts daûr dal leam a une pagjine che e je stade eliminade, partint dal confront di dôs versions o di un leam tal storic.\n\nSe la cause no samee jessi cheste, tu podaressis vê cjatât un problem tal software.\nSegnalilu par plasê a un [[Special:ListUsers/sysop|administrator]], notant la URL.",
        "missingarticle-rev": "(numar de revision: $1)",
        "missingarticle-diff": "(Dif.: $1, $2)",
        "readonly_lag": "Par cumò il database al è stât blocât pe sincronizazion cul server",
+       "nonwrite-api-promise-error": "E je stade mandade la intestazion HTTP 'Promise-Non-Write-API-Action', ma la domande e jere di un modul API in scriture.",
        "internalerror": "Erôr interni",
        "internalerror_info": "Erôr interni: $1",
+       "internalerror-fatal-exception": "Erôr ireversibil di tipo \"$1\"",
        "filecopyerror": "No si pues copiâ il file \"$1\" in \"$2\"",
        "filerenameerror": "No si pues rinominâ \"$1\" in \"$2\"",
        "filedeleteerror": "No si pues eliminâ il file \"$1\".",
        "directorycreateerror": "No si pues creâ la cartele \"$1\"",
+       "directoryreadonlyerror": "La directory \"$1\" e je dome di leture.",
+       "directorynotreadableerror": "La directory \"$1\" non si rive a lei.",
        "filenotfound": "No si pues cjatâ il file \"$1\".",
        "unexpected": "Valor no proviodût: \"$1\" = \"$2\"",
        "formerror": "Erôr: no si rive a mandâ il form",
        "no-null-revision": "No si pues creâ une version vuedie de pagjine \"$1\"",
        "badtitle": "Titul sbaliât",
        "badtitletext": "Il titul de pagjine che tu âs inserît nol è valit, al è vuelit, o al veve un erôr tal colegament tra wiki diviersis o tra versions in altris lenghis.\nAl podarès vê dentri caratars che no podin jessi doprâts tai titui.",
+       "title-invalid-empty": "Il titul de pagjine domandade al è vueit o al à dome il non dal namespace",
+       "title-invalid-utf8": "Il titul de pagjine domandade al à une secuence UTF-8 no valide.",
+       "title-invalid-interwiki": "Il titul de pagjine domandade al à un leam interwiki che no si pues doprâ tai titui.",
+       "title-invalid-talk-namespace": "Il titul de pagjine domandade al clame une pagjine di discussion che no esist",
+       "title-invalid-characters": "Il titul de pagjine domandade al à caratars no valits: \"$1\".",
+       "title-invalid-relative": "Il titul al à un percors (./, ../). al è di cambiâ parcè che nol è dite che il browser dal utent al rivedi a cjatâlu.",
+       "title-invalid-magic-tilde": "Il titul de pagjine domandade nol + valit par vie che al à une sucession speciâl di tildis (<nowiki>~~~</nowiki>).",
+       "title-invalid-too-long": "Il titul de pagjine domandade al è masse lunc. Nol à di jessi plui lunc di {{PLURAL:$1|byte}} in codifiche UTF-8.",
+       "title-invalid-leading-colon": "Il titul de pagjine domandade nol è valit par vie che al à i doi pont al inizi dal titul",
        "perfcached": "I dats seguints a vegnin di une copie de \"cache\" dal database e a podaressin no jessi inzornâts. La cache e rive a tignî al massim  {{PLURAL:$1|un risultâ disponibil|$1 risultats disponibii}}",
        "perfcachedts": "I dats seguints a vegnin di une copie de \"cache\" dal database dal $1 e a podaressin no jessi inzornâts. La cache e rive a tignî al massim  {{PLURAL:$1|un risultâ disponibil|$1 risultats disponibii}}",
        "querypage-no-updates": "Inzornaments de pagjine a son al moment sospindûts. I dats metûts no saràn salvâts.",
        "viewsource": "Cjale risultive",
        "viewsource-title": "Cjale il codiç di $1",
        "actionthrottled": "Azion ritardade",
-       "actionthrottledtext": "Come misure anti-spam tu âs des limitazion tal fâ cheste azion masse voltis in toc di timp curt. Il limit al è stât superât. Tu puedis tornâ a provâ fra cualchi minût.",
+       "actionthrottledtext": "Come misure anti-spam tu âs des limitazion tal fâ cheste azion masse voltis in pôc timp. Il limit al è stât superât. Tu puedis tornâ a provâ fra cualchi minût.",
        "protectedpagetext": "Pagjine protete par evitâ modifichis o altris azions.",
        "viewsourcetext": "Tu puedis viodi e copiâ la risultive di cheste pagjine:",
        "viewyourtext": "Tu puedis viodi o copiâ il codiç des \"tôs modifichis\" in cheste pagjine.",
+       "mycustomcssprotected": "Non hai i permessi per modificare questa pagina CSS",
+       "mycustomjsprotected": "Non hai i permessi per modificare questa pagina JavaScript",
+       "myprivateinfoprotected": "Non si dispone dei permessi necessari per modificare i propri dati personali.",
+       "mypreferencesprotected": "Non si dispone dei permessi necessari per modificare le proprie preferenze.",
        "ns-specialprotected": "Lis pagjinis specialis no si puedin modificâ",
        "exception-nologin": "No tu sês jentrât",
        "virus-unknownscanner": "antivirus no cognossût:",
        "logouttext": "'''Tu sës cumò lât fûr.'''\n\nConsidere che cualchi pagjine e pues mostrâti ancjemò come jentrât tal sît fin cuant che no tu netis la memorie cache dal sgarfadôr.",
        "yourname": "Non utent",
+       "userlogin-yourname": "Non utent",
+       "userlogin-yourname-ph": "Scrîf il to non",
        "yourpassword": "Peraule clâf",
+       "userlogin-yourpassword": "Password",
+       "userlogin-yourpassword-ph": "Scrîf la tô password",
+       "createacct-yourpassword-ph": "Scrîf la tô password",
        "yourpasswordagain": "Torne a scrivile",
+       "createacct-yourpasswordagain": "Conferme la password",
+       "createacct-yourpasswordagain-ph": "Torne a scrivi la tô password",
        "remembermypassword": "Visiti di me di une session a chê altre (fin a $1 {{PLURAL:$1|zornade|zornadis}})",
+       "userlogin-remembermypassword": "Tegnimi colegât",
        "yourdomainname": "Il to domini",
        "login": "Jentre",
        "nav-login-createaccount": "Regjistriti o jentre",
        "logout": "Jes",
        "userlogout": "Jes",
        "notloggedin": "No tu sês jentrât",
+       "userlogin-noaccount": "No âstu ancjemò une identitât?",
+       "userlogin-joinproject": "Regjstriti du {{SITENAME}}",
        "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",
        "userlogin-resetlink": "Dismenteât i detais par jentrâ?",
+       "userlogin-resetpassword-link": "Password dismenteade?",
+       "userlogin-helplink2": "Judimi a jentrâ",
+       "createacct-emailoptional": "Direzion email (opzionâl)",
+       "createacct-email-ph": "Scrîl la tô direzion email",
        "createaccountmail": "par pueste eletroniche",
        "createaccountreason": "Reson:",
+       "createacct-submit": "Cree il to profîl utent",
+       "createacct-benefit-heading": "{{SITENAME}} al è fat di int come te",
+       "createacct-benefit-body1": "$1 {{PLURAL:$1|contribût|contribûts}}",
+       "createacct-benefit-body2": "{{PLURAL:$1|pagjine|pagjinis}}",
+       "createacct-benefit-body3": "{{PLURAL:$1|ultin contributôr|ultins contributôrs}}",
        "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.",
+       "userexists": "Il nome utente inserito è già utilizzato.\nScegli un nome utente diverso.",
        "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.",
        "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]].",
+       "nosuchuser": "Non è registrato alcun utente di nome \"$1\".\nI nomi utente sono sensibili alle maiuscole.\nVerificare il nome inserito o [[Special:UserLogin/signup|creare una nuova utenza]].",
        "nosuchusershort": "Nol esist nissun utent cul non \"$1\". 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â.",
        "accountcreatedtext": "La identitât utent par $1 e je stade creade.",
        "createaccount-title": "Creazion di une identitât par {{SITENAME}}",
        "loginlanguagelabel": "Lenghe: $1",
+       "pt-login": "Coleghiti",
+       "pt-login-button": "Coleghiti",
+       "pt-createaccount": "Regjistris",
+       "pt-userlogout": "Va fûr",
        "changepassword": "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",
+       "passwordreset": "Azere la password",
        "passwordreset-username": "Non utent:",
        "bold_sample": "Test in gruessut",
        "bold_tip": "Test in gruessut",
        "preview": "Anteprime",
        "showpreview": "Mostre anteprime",
        "showdiff": "Mostre cambiaments",
-       "anoneditwarning": "No tu sês jentrât cuntun non utent. La to direzion IP e vignarà regjistrade tal storic di cheste pagjine.",
+       "anoneditwarning": "<strong>Atenzion:</strong>No tu sês jentrât cuntun non utent. La to direzion IP e vignarà regjistrade tal storic di cheste pagjine. -se tu <strong>[$1 jentris]</strong> o <strong>[$2 tu ti regjistris]</strong>, lis tôs modifichis a saran atribuidis al to non utent, adun ad altris beneficis.",
        "missingsummary": "'''Atenzion:''' no tu âs specificât un ogjet par chest cambiament. Se tu tornis a fracâ su \"Salve la pagjine\", il cambiament al vignarà salvât cuntun ogjet vueit.",
        "missingcommenttext": "Inserìs un coment ca sot.",
        "missingcommentheader": "'''Atenzion:''' no tu âs specificât un ogjet/intestazion par chest coment. Se tu tornis a fracâ su \"Salve la pagjine\", il to cambiament al vignarà salvât cuntune intestazion vueide.",
        "note": "'''Note:'''",
        "previewnote": "'''Visiti che cheste e je dome une anteprime.'''\nI tiei cambiaments no son stâts ancjemò salvâts!",
        "editing": "Cambiament di $1",
+       "creating": "Tu creis $1",
        "editingsection": "Cambiament di $1 (sezion)",
        "editingcomment": "Cambiament di $1 (gnove sezion)",
        "editconflict": "Conflit inte modifiche: $1",
        "currentrev": "Version atuâl",
        "currentrev-asof": "Revision atuâl dai $1",
        "revisionasof": "Version dai $1",
-       "revision-info": "Version dal $1, autôr: $2",
+       "revision-info": "Version dal $1 di {{GENDER:$6|$2}}$7",
        "previousrevision": "← Version plui vecje",
        "nextrevision": "Version plui gnove →",
        "currentrevisionlink": "Version atuâl",
        "revdelete-reasonotherlist": "Altri motîf",
        "revertmerge": "Anule unions",
        "history-title": "Storic dai cambiaments di \"$1\"",
+       "difference-title": "$1: diferencis tra lis versions",
        "lineno": "Rie $1:",
        "compareselectedversions": "Confronte versions selezionadis",
        "editundo": "anule",
+       "diff-multi-sameuser": "({{PLURAL:$1|Une version  intermedie|$1 versions intermedis}} di un stess utent no {{PLURAL:$1|je mostrade|son mostradis}})",
        "searchresults": "Risultâts de ricercje",
        "searchresults-title": "Risultâts de ricercje di \"$1\"",
        "titlematches": "Corispondencis tai titui des pagjinis",
        "shown-title": "Mostre $1 {{PLURAL:$1|risultât|risultâts}} par pagjine",
        "viewprevnext": "Cjale ($1 {{int:pipe-separator}} $2) ($3).",
        "searchmenu-exists": "'''E je une pagjine di non \"[[:$1]]\" su cheste wiki'''",
-       "searchmenu-new": "'''Cree la pagjine \"[[:$1]]\" su cheste wiki!'''",
+       "searchmenu-new": "'''Cree la pagjine \"[[:$1]]\" su cheste wiki!'''</strong> {{PLURAL:$2|0=|Viôt ancje lis pagjinis cjatadis cu la tô ricercje .|Viôt ancje i risultâts de ricercje.}}",
        "searchprofile-articles": "Pagjinis di contignûts",
        "searchprofile-images": "Multimedia",
        "searchprofile-everything": "Dut",
        "searchrelated": "leâts",
        "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'''.",
+       "search-showingresults": "{{PLURAL:$4|Risultât <strong>$1</strong> di <strong>$3</strong>|Resultâts <strong>$1 - $2</strong> di <strong>$3</strong>}}",
        "search-nonefound": "Nissun risultât par cheste ricercje.",
        "powersearch-legend": "Ricercje avanzade",
        "powersearch-ns": "Cîr tai spazis dai nons:",
        "group-all": "Utents",
        "group-user-member": "{{GENDER:$1|Utent}}",
        "grouppage-sysop": "{{ns:project}}:Aministradôrs",
+       "right-writeapi": "Dopre la API di scriture",
        "newuserlogpage": "Regjistri dai gnûfs utents",
        "newuserlogpagetext": "Ca sot tu cjatis un regjistri dai gnûfs utents creâts.",
        "rightslog": "Regjistri dai dirits dai utents",
        "action-edit": "cambiâ cheste pagjine",
        "nchanges": "$1 {{PLURAL:$1|cambiament|cambiaments}}",
+       "enhancedrc-history": "Storic",
        "recentchanges": "Ultins cambiaments",
        "recentchanges-legend": "Opzions dai ultins cambiaments",
        "recentchanges-summary": "Cheste pagjine e mostre i plui recents cambiaments inte {{SITENAME}}.",
        "recentchanges-label-bot": "Chest cambiament al è stât eseguît di un bot",
        "recentchanges-label-unpatrolled": "Chest cambiament nol è stât ancjemò verificât",
        "recentchanges-label-plusminus": "La dimension de pagjine e je cambiade di chest numar di byte",
+       "recentchanges-legend-heading": "'''Lejende:'''",
+       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (cjale lis [[Special:NewPages|gnovis pagjinis]])",
        "rcnotefrom": "Ca sot i cambiaments dal '''$2''' (fintremai al '''$1''').",
        "rclistfrom": "Mostre i ultins cambiaments dal $3 $2",
        "rcshowhideminor": "$1 i piçui cambiaments",
+       "rcshowhideminor-show": "Mostre",
+       "rcshowhideminor-hide": "Plate",
        "rcshowhidebots": "$1 i bots",
+       "rcshowhidebots-show": "Mostre",
+       "rcshowhidebots-hide": "Plate",
        "rcshowhideliu": "$1 utents regjstrâts",
+       "rcshowhideliu-hide": "Plate",
        "rcshowhideanons": "$1 utents anonims",
+       "rcshowhideanons-show": "Mostre",
+       "rcshowhideanons-hide": "Plate",
        "rcshowhidepatr": "$1 cambiaments verificâts",
        "rcshowhidemine": "$1 miei cambiaments",
+       "rcshowhidemine-show": "Mostre",
+       "rcshowhidemine-hide": "plate",
        "rclinks": "Mostre i ultins $1 cambiaments tes ultimis $2 zornadis<br />$3",
        "diff": "difarencis",
        "hist": "stor",
        "number_of_watching_users_pageview": "[tignude di voli di {{PLURAL:$1|un utent|$1 utents}}]",
        "rc_categories": "Limite aes categoriis (dividilis cun \"|\")",
        "rc_categories_any": "Cualsisei",
+       "rc-change-size-new": "$1 {{PLURAL:$1|byte|bytes}} dopo la modifiche",
        "newsectionsummary": "/* $1 */ gnove sezion",
        "rc-enhanced-expand": "Cjale i detais (al covente JavaScript)",
        "rc-enhanced-hide": "Plate detais",
        "destfilename": "Non dal file di destinazion:",
        "upload-description": "Descrizion dal file",
        "watchthisupload": "Ten di voli chest file",
-       "upload-success-subj": "Cjamât sù cun sucès",
        "license": "Licence pal ûs:",
        "license-header": "Licence pal ûs",
        "nolicense": "Nissune licence sielte",
        "sharedupload-desc-here": "Chest file al ven di $1 e al pues jessi doprât di altris progjets.\nLa descrizion su la sô [$2 pagjine di descrizion] e je mostrade ca sot.",
        "uploadnewversion-linktext": "Cjame sù une gnove version di chest file",
        "shared-repo-from": "di $1",
+       "upload-disallowed-here": "No si pues sorescrivi chest file",
        "filerevert-comment": "Reson:",
        "filedelete": "Elimine $1",
        "filedelete-legend": "Elimine il file",
        "nlinks": "$1 {{PLURAL:$1|leam|leams}}",
        "nmembers": "$1 {{PLURAL:$1|element|elements}}",
        "nrevisions": "$1 {{PLURAL:$1|revision|revisions}}",
-       "nviews": "$1 {{PLURAL:$1|viodude|viodudis}}",
        "nimagelinks": "Doprât $1 {{PLURAL:$1|intune pagjine|in $1 pagjinis}}",
        "lonelypages": "Pagjinis solitaris",
        "lonelypagestext": "Lis pagjinis ca sot no àn leams di altris pagjinis di {{SITENAME}} e no son includudis in altris pagjinis.",
        "pager-older-n": "{{PLURAL:$1|1 plui vieri|$1 plui vieris}}",
        "booksources": "Fonts librariis",
        "booksources-search-legend": "Ricercje di fonts libraris",
+       "booksources-search": "Cîr",
        "specialloguserlabel": "Utent:",
        "speciallogtitlelabel": "Titul:",
        "log": "Regjistris",
        "listgrouprights-rights": "Dirits",
        "listgrouprights-members": "(liste dai membris)",
        "emailuser": "Messaç di pueste a chest utent",
-       "emailpage": "Mande un messaç di pueste eletroniche al utent",
        "defemailsubject": "Messaç di {{SITENAME}}",
        "noemailtitle": "Nissune direzion email",
        "noemailtext": "Chest utent nol à specificât une direzion di pueste valide.",
        "deleteotherreason": "Altri motîf o motîf in plui:",
        "deletereasonotherlist": "Altri motîf",
        "rollbacklink": "revoche",
+       "rollbacklinkcount": "torne indaûr di $1 {{PLURAL:$1|modifiche|modifichis}}",
        "protectlogpage": "Regjistri des protezions",
        "protectedarticle": "$1 protezût",
        "modifiedarticleprotection": "cambiât il nivel di protezion par \"[[$1]]\"",
        "undelete-show-file-submit": "Sì",
        "namespace": "Non dal spazi:",
        "invert": "Invertìs selezion",
+       "tooltip-invert": "Selezione cheste casele par platâ lis modifichis ae pagjine dentri il namespace selezionât (e il namespace asociât, se selezionât)",
+       "namespace_association": "Namespace associât",
+       "tooltip-namespace_association": "Selezione cheste casele par includi ancje la pagjine di discussion o l'ogjet dal namespace associât cul namespace selezionât",
        "blanknamespace": "(Principâl)",
        "contributions": "Contribûts {{GENDER:$1|dal utent|de utente}}",
        "contributions-title": "Contribûts di $1",
        "mycontris": "Contribûts",
+       "anoncontribs": "Contribûts",
        "contribsub2": "Par {{GENDER:$3|$1}} ($2)",
        "nocontribs": "Nissun cambiament che al rispiete chescj criteris cjatât.",
        "uctop": "atuâl",
        "move-page-legend": "Môf pagjine",
        "movepagetext": "Cun il formulari ca sot tu puedis gambiâ il non a une pagjine, movint dut il sô storic al gnûf non.\nIl vieri titul al deventarà une pagjine di reindirizament al gnûf titul. I leams ae vecje pagjine no saran gambiâts; verifiche\npar plasê che no sedin reindirizaments  [[Special:DoubleRedirects|doplis]] o [[Special:BrokenRedirects|no funzionants]].\nTu sês responsabil che i leams a continui a mandâ tal puest just.\n\nNote che la pagjine '''no''' sarà movude se e je za une pagjine cul gnûf titul, a mancul che no sedi vueide o un reindirizament e\ncence un storic. Chest al vûl dî che tu puedis tornâ a movi la pagjine tal titul precedent, se\ntu 'nd âs sbaliât e che no tu puedis sorescrivi une pagjine esistìnte.\n\n<b>ATENZION!</b>\nChest al pues jessi un cambiament drastic e surprendint par une pagjine popolâr;\ntu âs di cognossi lis conseguencis prime di lâ indevant.",
        "movepagetalktext": "La pagjine di discussion corispuindinte e vegnarà ancje movude in automaticc, '''fûr che in chescj câs:'''\n* Il spostament de pagjine e je tra spazis dai nons diviers\n* Sot dal gnûf titul e esist za une pagjine di discussion (e no je vueide)\n* Tu âs gjavât la sponte te casele culì sot.\n\nIn chescj câs, tu varâs di movi o unî a man lis informazions contignudis te pagjine di discussion, se tu lu desideris.",
-       "movearticle": "Môf la vôs",
        "movenologintext": "Tu âs di jessi un utent regjistrât e [[Special:UserLogin|jentrât]] par movi une pagjine.",
        "movenotallowed": "No tu âs i permès che a coventin par movi lis pagjinis.",
        "newtitle": "Al gnûf titul",
        "movelogpagetext": "Ca sot e je une liste des pagjinis movudis.",
        "movereason": "Reson:",
        "revertmove": "ripristine",
-       "delete_and_move": "Elimine e môf",
        "delete_and_move_confirm": "Sì, elimine la pagjine",
        "export": "Espuarte pagjinis",
        "exportcuronly": "Inclût dome la revision corinte, no dut il storic",
        "importlogpage": "Regjistris des impuartazions",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|revision|revisions}}",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|revision|revisions}} di $2",
-       "tooltip-pt-userpage": "La  pagjine utent",
+       "tooltip-pt-userpage": "La {{GENDER:|tô}} pagjine utent",
        "tooltip-pt-anonuserpage": "La pagjine utent di cheste direzion IP",
-       "tooltip-pt-mytalk": "La  pagjine di discussion",
+       "tooltip-pt-mytalk": "La {{GENDER:|tô}} pagjine di discussion",
        "tooltip-pt-anontalk": "Discussions dai cambiaments fats di cheste direzion IP",
-       "tooltip-pt-preferences": "Lis mês preferencis",
+       "tooltip-pt-preferences": "Lis {{GENDER:|mês}} preferencis",
        "tooltip-pt-watchlist": "La liste des pagjinis che tu stâs tignint di voli",
-       "tooltip-pt-mycontris": "Liste dai tiei contribûts",
+       "tooltip-pt-mycontris": "Liste dai {{GENDER:|tiei}} contribûts",
        "tooltip-pt-login": "La regjistrazion e je conseade, ancje se no obligatorie.",
        "tooltip-pt-logout": "Jes (logout)",
+       "tooltip-pt-createaccount": "Al sarès preferibil se tu ti regjistrassis par jentrâ. Dut câs nol è obligatori.",
        "tooltip-ca-talk": "Discussions su cheste pagjine",
-       "tooltip-ca-edit": "Tu puedis cambiâ cheste pagjine. Par plasê dopre il boton de anteprime prime di salvâ.",
+       "tooltip-ca-edit": "Modifiche cheste pagjine.",
        "tooltip-ca-addsection": "Scomence une gnove sezion",
        "tooltip-ca-viewsource": "Cheste pagjine e je protezude, ma tu puedis viodi la sô risultive.",
        "tooltip-ca-history": "Versions precedentis di cheste pagjine.",
        "tooltip-t-recentchangeslinked": "Liste dai ultins cambiaments intes pagjinis leadis a cheste",
        "tooltip-feed-rss": "Cjanâl RSS par cheste pagjine",
        "tooltip-feed-atom": "Cjanâl Atom par cheste pagjine",
-       "tooltip-t-contributions": "Liste dai contribûts di chest utent",
+       "tooltip-t-contributions": "Liste dai contribûts di {{GENDER:$1|chest utent|cheste utente}}",
        "tooltip-t-emailuser": "Mande un messaç di pueste eletroniche a chest utent",
        "tooltip-t-upload": "Cjame sù files multimediâi",
        "tooltip-t-specialpages": "Liste di dutis lis pagjinis speciâls",
        "anonusers": "$1, {{PLURAL:$2|utent anonim|utents anonims}} di {{SITENAME}}",
        "creditspage": "Pagjine dai ricognossiments",
        "nocredits": "Nissune informazion sui ricognossiments disponibil par cheste pagjine.",
+       "simpleantispam-label": "Control anti-spam.\n<strong>NON</strong> riempirlo!",
+       "pageinfo-toolboxlink": "Informazions",
        "previousdiff": "← Difarence precedente",
        "nextdiff": "Prossime difarence →",
        "thumbsize": "Dimension miniature:",
        "file-nohires": "No son disponibilis versions cun risoluzion plui alte.",
        "svg-long-desc": "file tal formât SVG, dimensions nominâls $1 × $2 pixels, dimensions dal file: $3",
        "show-big-image": "File origjnâl",
+       "show-big-image-preview": "Dimension di cheste anteprime: $1.",
+       "show-big-image-other": "{{PLURAL:$2|Altre risoluzion|Altris risoluzions}}: $1.",
+       "show-big-image-size": "$1 × $2 pixels",
        "newimages": "Galarie dai gnûfs files",
        "imagelisttext": "Ca sot e je une liste di $1 {{PLURAL:$1|file|files}} ordenâts $2.",
        "noimages": "Nuie di viodi.",
        "exif-orientation": "Orientament",
        "exif-xresolution": "Risoluzion orizontâl",
        "exif-yresolution": "Risoluzion verticâl",
+       "exif-datetime": "Date e ore di modifiche dal file",
        "exif-imagedescription": "Titul de figure",
        "exif-make": "Produtôr machine",
        "exif-model": "Model di machine fotografiche",
        "exif-software": "Software doprât",
        "exif-artist": "Autôr",
+       "exif-exifversion": "Version del formât Exif",
+       "exif-colorspace": "Spazi dai colôrs",
        "exif-datetimeoriginal": "Date e ore di creazion dai dâts",
+       "exif-datetimedigitized": "Date e ore di digitalizazion",
        "exif-exposuretime": "Timp di esposizion",
        "exif-flash": "Flash",
        "exif-focallength": "Lungjece focâl obietîf",
        "watchlisttools-view": "Cjale i cambiaments rilevants",
        "watchlisttools-edit": "Cjale e cambie la liste des pagjinis tignudis di voli",
        "watchlisttools-raw": "Modifiche la liste des pagjinis tignudis di voli in formât testuâl",
+       "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|discussion]])",
        "duplicate-defaultsort": "'''Avîs:''' La clâf predeterminade par l'ordenament \"$2\" invalide la clâf predeterminade precedente \"$1\".",
        "version": "Version",
        "version-variables": "Variabilis",
        "external_image_whitelist": " #Lasse cheste rie cemût che a je<pre>\n#Inserìs lis espressions regolârs (dome il toc che al va tal mieç di //) ca sot\n#Chestis e saran controladis cun lis URLs des figuris esternis\n#A vignaran mostradis dome chês che a corispuindin, di chês altris si viodarà dome un leam\n#Lis riis che a scomencin cun # a son consideradis come coments\n#Si considerin diviersis lis letaris maiusculis e minusculis\n\n#Met ducj i framents regex parsore di cheste rie. Lasse cheste rie cemût che e je</pre>",
        "tag-filter": "Filtre par [[Special:Tags|etichetis]]:",
        "tag-filter-submit": "Filtre",
+       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Etichete|Etichetis}}]]: $2)",
        "tags-edit": "cambie",
        "tags-hitcount": "$1 {{PLURAL:$1|cambiament|cambiaments}}",
        "dberr-problems": "Nus displâs, chest sît web al è daûr a vê dificoltâts tecnichis.",
        "dberr-info": "(No si pues contatâ il servidor de base di dâts: $1)",
        "htmlform-submit": "Invie",
        "htmlform-selectorother-other": "Altris",
+       "logentry-delete-delete": "$1 {{GENDER:$2|al à cancelât|e à cancelât}} la pagjine $3",
+       "logentry-move-move": "$1 {{GENDER:$2|al à spostât}} la pagjine $3 a $4",
+       "logentry-newusers-create": "L'utent $1 al è stât {{GENDER:$2|creât}}",
+       "logentry-upload-upload": "$1 {{GENDER:$2|al à tirât su}} $3",
        "searchsuggest-search": "Ricercje",
        "searchsuggest-containing": "che al à dentri...",
        "api-error-unclassified": "Al è capitât un erôr no cognossût",
index bce3e94..2a4e4a0 100644 (file)
        "right-blockemail": "Cead cleachdaiche a bhacadh o chur phost-d",
        "right-hideuser": "Cead ainm-chleachdaiche a bhacadh 's fhalach on t-sealladh phoblach",
        "right-ipblock-exempt": "Cead bacaidhean IP, bacaidhean fèin-obrachail 's bacaidhean rainse a leigeil seachad",
-       "right-proxyunbannable": "Cead bacadh fèin-obrachail phrogsaidhean a leigeil seachad",
        "right-unblockself": "Cead bacadh a thoirt uaithe fhèin",
        "right-protect": "Cead leibheilean an dìona atharrachadh 's duilleagan le dìon o bhith mar eas a dheasachadh",
        "right-editprotected": "Cead gus duilleagan le dìon \"{{int:protect-level-sysop}}\" a dheasachadh",
        "filewasdeleted": "Chaidh faidhle air a bheil an t-ainm seo a luchdadh suas roimhe 's a sguabadh às an uairsin.\nBu chòir dhut sùil a thoirt air $1 mur luchdaich thu suas e a-rithist.",
        "filename-bad-prefix": "Tha ainm an fhaidhle a tha thu a' luchdadh suas a' tòiseachadh le <strong>\"$1\"</strong> na tha 'na ainm fhaidhle gun mhìneachadh a chruthaicheas camara digiteach gu fèin-obrachail mar as trice.\nFeuch an tagh thu ainm eile airson an fhaidhle agad a mhìnicheas dè th' ann.",
        "filename-prefix-blacklist": " #<!-- fàg an loidhne seo dìreach mar a tha i --> <pre>\n# Seo an co-chàradh:\n#   * 'Se facal-mìneachaidh a th' anns gach rud on charactar \"#\" gu deireadh na loidhne\n#   * Tha gach loidhne nach eil bàn 'na ro-leasachan airson ainm faidhle àbhaisteach a thèid a thoirt seachad le camara digiteach gu fèin-obrachail\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # cuid a dh'fhònaichean-làimhe\nIMG # coitcheann\nJD # Jenoptik\nMGP # Pentax\nPICT # measgaichte\n #</pre> <!-- fàg an loidhne seo dìreach mar a tha i -->",
-       "upload-success-subj": "Shoirbhich leis an luchdadh suas",
-       "upload-success-msg": "Shoirbhich leis an luchdadh suas agad o [$2]. Seo far a bheil e ri làimh: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Duilgheadas leis an luchdadh suas",
-       "upload-failure-msg": "Thachair duilgheadas leis an luchdadh suas agad o [$2]:\n\n$1",
-       "upload-warning-subj": "Rabhadh luchdaidh suas",
-       "upload-warning-msg": "Thachair duilgheadas leis an luchdadh suas agad o [$2]. 'S urrainn dhut tilleadh gu [[Special:Upload/stash/$1|foirm an luchdaidh suas]] gus an duilgheadas seo a chàradh.",
        "upload-proto-error": "Pròtacal nach eil mar bu chòir",
        "upload-proto-error-text": "Iarraidh an luchdadh suas cèin URLan a thòisicheas le <code>http://</code> no <code>ftp://</code>.",
        "upload-file-error": "Mearachd inntearnail",
        "booksources": "Tùsan a tha 'nan leabhraichean",
        "booksources-search-legend": "Lorg tùsan a tha 'nan leabhraichean",
        "booksources-isbn": "ISBN:",
+       "booksources-search": "Lorg",
        "booksources-text": "Chì thu liosta dhe cheanglaichean gu làraichean eile a reiceas leabhraichean ùra 's cleachdte gu h-ìosal 's ma dh'fhaoidte gum faigh thu barrachd fiosrachaidh orra mu leabhraichean a tha thu a' sireadh:",
        "booksources-invalid-isbn": "Tha coltas mì-dhligheach air an ISBN a chaidh a thoirt seachad; dearbhaich gun deach lethbhreac a dhèanamh dheth on tùs gun mhearachd.",
        "specialloguserlabel": "Cò rinn e:",
        "wlheader-showupdated": "Tha clò <strong>trom</strong> air duilleagan a chaidh atharrachadh on turas mu dheireadh a thadhail thu orra.",
        "wlnote": "Chì thu gu h-ìosal {{PLURAL:$1|a' $1 mhùthadh|an $1 mhùthadh|na $1 mùthaidhean|am $1 mùthadh}} mu dheireadh san {{PLURAL:$2|$2 uair a thìde|$2 uair a thìde|$2 uairean a thìde|$2 uair a thìde}} mu dheireadh, mar a bha e $3, $4.",
        "wlshowlast": "Seall na $1 uairean a thìde mu dheireadh $2 làithean mu dheireadh",
-       "watchlistall2": "na h-uile",
        "watchlist-options": "Roghainnean mo chlàir-faire",
        "watching": "'Ga chur air a' chlàr-fhaire...",
        "unwatching": "A' toirt far a' chlàir-fhaire...",
        "contributions": "Obair a' chleachdaiche",
        "contributions-title": "Obair a rinn $1",
        "mycontris": "M' obair",
+       "anoncontribs": "M’ obair",
        "contribsub2": "Airson $1 ($2)",
        "contributions-userdoesnotexist": "Cha deach an cunntas cleachdaiche \"$1\" a chlàradh.",
        "nocontribs": "Cha deach atharrachadh a lorg a dh'fhreagradh ris na cuspairean-luirg seo.",
        "javascripttest-pagetext-frameworks": "Feuch an tagh thu aon dhe na frameworks deuchainn seo: $1",
        "javascripttest-pagetext-skins": "Tagh craiceann airson ruith nan deuchainnean:",
        "javascripttest-qunit-intro": "Faic [$1 docamaideadh nan deuchainnean] air mediawiki.org.",
-       "tooltip-pt-userpage": "An duilleag phearsanta agad",
+       "tooltip-pt-userpage": "An duilleag phearsanta {{GENDER:|agad}}",
        "tooltip-pt-anonuserpage": "Duilleag a' chleachdaiche airson an t-seòlaidh IP leis a bheil thu a' deasachadh",
-       "tooltip-pt-mytalk": "Duilleag do dheasbaireachd",
+       "tooltip-pt-mytalk": "An duilleag deasbaireachd {{GENDER:|agad}}",
        "tooltip-pt-anontalk": "deasbaireachd mu dheasachaidhean on t-seòladh IP seo",
-       "tooltip-pt-preferences": "Do roghainnean",
+       "tooltip-pt-preferences": "Na roghainnean {{GENDER:|agad}}",
        "tooltip-pt-watchlist": "Seo liosta nan duilleagan a tha thu a' cumail sùil orra a thaobh mhùthaidhean a nithear orra",
-       "tooltip-pt-mycontris": "Liosta na h-obrach a rinn thu",
+       "tooltip-pt-mycontris": "Liosta na h-obrach a rinn {{GENDER:|thu}}",
        "tooltip-pt-login": "Mholamaidh dhut logadh a-steach; ge-tà, cha leig thu leas seo a dhèanamh",
        "tooltip-pt-logout": "Log a-mach",
        "tooltip-pt-createaccount": "Ged nach eil e riatanach, tha e nas fhearr ma chruthaicheas tu cunntas agus ma logas tu air.",
        "tooltip-t-recentchangeslinked": "Mùthaidhean a rinneadh o chionn ghoirid air duilleagan a tha ceangal ann thuca on duilleag seo",
        "tooltip-feed-rss": "Inbhir RSS airson na duilleige seo",
        "tooltip-feed-atom": "Inbhir Atom airson na duilleige seo",
-       "tooltip-t-contributions": "Seall liosta na h-obrach a rinn an cleachdaiche seo",
+       "tooltip-t-contributions": "Seall liosta na h-obrach a rinn {{GENDER:$1|an cleachdaiche}} seo",
        "tooltip-t-emailuser": "Cuir post-dealain dhan chleachdaiche seo",
        "tooltip-t-upload": "Luchdaich suas faidhle",
        "tooltip-t-specialpages": "Liosta de gach duilleag shònraichte",
index 2449c72..b45bfc6 100644 (file)
        "resettokens-watchlist-token": "Pase para a fonte de novas (Atom/RSS) web dos [[Special:Watchlist|cambios feitos nas páxinas da súa lista de vixilancia]]",
        "resettokens-done": "Restablecéronse os pases.",
        "resettokens-resetbutton": "Restablecer os pases seleccionados",
-       "bold_sample": "Texto en negra",
-       "bold_tip": "Texto en negra",
+       "bold_sample": "Texto en letra grosa",
+       "bold_tip": "Texto en letra grosa",
        "italic_sample": "Texto en cursiva",
        "italic_tip": "Texto en cursiva",
        "link_sample": "Título da ligazón",
        "uploaded-script-svg": "Atopado elemento de comandos \"$1\" no ficheiro SVG subido.",
        "uploaded-hostile-svg": "Atopado CSS non seguro no elemento de estilo do ficheiro SVG subido.",
        "uploaded-event-handler-on-svg": "Fixar atributos de xestión de eventos <code>$1=\"$2\"</code> no está permitido en ficheiros SVG.",
-       "uploaded-href-attribute-svg": "Atributos href <code>&lt;$1 $2=\"$3\"&gt;</code> con obxectivos non locais (p. ex. http://, javascript:, etc) non están permitidos en ficheiros SVG.",
        "uploaded-href-unsafe-target-svg": "Atopado href a obxectivo non seguro <code>&lt;$1 $2=\"$3\"&gt;</code> no ficheiro SVG subido.",
        "uploaded-animate-svg": "Atopada etiqueta \"animate\" que podería estar cambiando a href, usando o atributo \"from\" <code>&lt;$1 $2=\"$3\"&gt;</code> no ficheiro SVG subido.",
        "uploaded-setting-event-handler-svg": "Fichar os atributos de xestión de eventos non está permitido, atopado <code>&lt;$1 $2=\"$3\"&gt;</code> no ficheiro SVG subido.",
        "filename-thumb-name": "Semella que este título é dunha miniatura. Non cargue miniaturas no wiki do que as sacou. Se non é así, corrixa o nome do ficheiro para que sexa máis significativo e non teña o prefixo das miniaturas.",
        "filename-bad-prefix": "O nome do ficheiro que está cargando comeza con '''\"$1\"''', que é un típico nome non descritivo asignado automaticamente polas cámaras dixitais.\nPor favor, escolla un nome máis descritivo para o seu ficheiro.",
        "filename-prefix-blacklist": " #<!-- Deixe esta liña tal e como está --> <pre>\n# A sintaxe é a seguinte:\n#   * Todo o que vaia despois dun carácter \"#\" ata o final da liña é un comentario\n#   * Toda liña que non estea en branco é un prefixo para os nomes típicos dos ficheiros asignados automaticamente polas cámaras dixitais\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # algúns teléfonos móbiles\nIMG # xenérico\nJD # Jenoptik\nMGP # Pentax\nPICT # varios\n #</pre> <!-- Deixe esta liña tal e como está -->",
-       "upload-success-subj": "A carga realizouse correctamente",
-       "upload-success-msg": "A súa carga desde [$2] rematou correctamente e está dispoñible aquí: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Problema ao cargar",
-       "upload-failure-msg": "Houbo un problema durante a carga desde [$2]:\n\n$1",
-       "upload-warning-subj": "Advertencia ao cargar",
-       "upload-warning-msg": "Houbo un problema durante a carga desde [$2]. Pode volver ao [[Special:Upload/stash/$1|formulario de subidas]] para corrixilo.",
        "upload-proto-error": "Protocolo incorrecto",
        "upload-proto-error-text": "A carga remota require enderezos URL que comecen por <code>http://</code> ou <code>ftp://</code>.",
        "upload-file-error": "Erro interno",
        "upload-too-many-redirects": "O enderezo URL contiña moitas redireccións",
        "upload-http-error": "Produciuse un erro HTTP: $1",
        "upload-copy-upload-invalid-domain": "A copia de cargas non está dispoñible neste dominio.",
+       "upload-foreign-cant-upload": "Esta wiki non está configurada para subir ficheiros ó repositorio de ficheiros externo solicitado.",
        "upload-dialog-title": "Subir un ficheiro",
        "upload-dialog-button-cancel": "Cancelar",
        "upload-dialog-button-done": "Feito",
        "wlheader-showupdated": "As páxinas que cambiaron desde a súa última visita móstranse en '''negra'''.",
        "wlnote": "A continuación {{PLURAL:$1|está a última modificación|están as últimas <strong>$1</strong> modificacións}} {{PLURAL:$2|na última hora|nas últimas <strong>$2</strong> horas}} ata o $3 ás $4.",
        "wlshowlast": "Mostrar as últimas $1 horas e os últimos $2 días",
-       "watchlistall2": "todo",
        "watchlist-hide": "Agochar",
        "watchlist-submit": "Mostrar",
        "wlshowtime": "Periodo de tempo a amosar:",
        "lockedbyandtime": "(por $1 o $2 ás $3)",
        "move-page": "Mover \"$1\"",
        "move-page-legend": "Mover unha páxina",
-       "movepagetext": "Ao usar o formulario inferior vai cambiar o nome da páxina, movendo todo o seu historial ao novo nome.\nO título vello vaise converter nunha páxina de redirección ao novo título.\nPode actualizar automaticamente as redireccións que van dar ao título orixinal.\nSe escolle non facelo, asegúrese de verificar que non hai redireccións [[Special:DoubleRedirects|dobres]] ou [[Special:BrokenRedirects|crebadas]].\nVostede é responsable de asegurarse de que as ligazóns continúan a apuntar cara a onde se supón que deberían.\n\nTeña en conta que a páxina '''non''' será trasladada se xa existe unha páxina co novo título, a menos que esta última sexa unha redirección e non teña historial de edicións.\nIsto significa que pode volver renomear unha páxina ao seu nome antigo se comete un erro, e que non pode sobrescribir unha páxina que xa existe.\n\n'''Atención!'''\nEste cambio nunha páxina popular pode ser drástico e inesperado;\npor favor, asegúrese de que entende as consecuencias disto antes de proseguir.",
-       "movepagetext-noredirectfixer": "Ao usar o formulario inferior vai cambiar o nome da páxina, movendo todo o seu historial ao novo nome.\nO título vello vaise converter nunha páxina de redirección ao novo título.\nAsegúrese de verificar que non hai redireccións [[Special:DoubleRedirects|dobres]] ou [[Special:BrokenRedirects|crebadas]].\nVostede é responsable de asegurarse de que as ligazóns continúan a apuntar cara a onde se supón que deberían.\n\nTeña en conta que a páxina '''non''' será trasladada se xa existe unha páxina co novo título, a menos que esta última sexa unha redirección e non teña historial de edicións.\nIsto significa que pode volver renomear unha páxina ao seu nome antigo se comete un erro, e que non pode sobrescribir unha páxina que xa existe.\n\n'''Atención!'''\nEste cambio nunha páxina popular pode ser drástico e inesperado;\npor favor, asegúrese de que entende as consecuencias disto antes de proseguir.",
+       "movepagetext": "Ao usar o formulario inferior vai cambiar o nome da páxina, movendo todo o seu historial ao novo nome.\nO título vello vaise converter nunha páxina de redirección ao novo título.\nPode actualizar automaticamente as redireccións que van dar ao título orixinal.\nSe escolle non facelo, asegúrese de verificar que non hai redireccións [[Special:DoubleRedirects|dobres]] ou [[Special:BrokenRedirects|crebadas]].\nVostede é responsable de asegurarse de que as ligazóns continúan a apuntar cara a onde se supón que deberían.\n\nTeña en conta que a páxina <strong>non</strong> será trasladada se xa existe unha páxina co novo título, a menos que esta última sexa unha redirección e non teña historial de edicións.\nIsto significa que pode volver renomear unha páxina ao seu nome antigo se comete un erro, e que non pode sobrescribir unha páxina que xa existe.\n\n<strong>Nota:</strong>\nEste cambio nunha páxina popular pode ser drástico e inesperado;\npor favor, asegúrese de que entende as consecuencias disto antes de proseguir.",
+       "movepagetext-noredirectfixer": "Ao usar o formulario inferior vai cambiar o nome da páxina, movendo todo o seu historial ao novo nome.\nO título vello vaise converter nunha páxina de redirección ao novo título.\nAsegúrese de verificar que non hai redireccións [[Special:DoubleRedirects|dobres]] ou [[Special:BrokenRedirects|crebadas]].\nVostede é responsable de asegurarse de que as ligazóns continúan a apuntar cara a onde se supón que deberían.\n\nTeña en conta que a páxina <strong>non</strong> será trasladada se xa existe unha páxina co novo título, a menos que esta última sexa unha redirección e non teña historial de edicións.\nIsto significa que pode volver renomear unha páxina ao seu nome antigo se comete un erro, e que non pode sobrescribir unha páxina que xa existe.\n\n<strong>Nota:</strong>\nEste cambio nunha páxina popular pode ser drástico e inesperado;\npor favor, asegúrese de que entende as consecuencias disto antes de proseguir.",
        "movepagetalktext": "Se marca esta caixa, a páxina de conversa asociada moverase automaticamente ó título novo a menos que xa exista unha páxina de conversa non baleira alí.\n\nNeste caso, deberá trasladar ou fusionar manualmente a páxina se así o desexa.",
        "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.",
        "movecategorypage-warning": "'''Aviso:''' Está a piques de mover unha páxina de categoría. Por favor, teña en conta que só se trasladará a páxina e que as páxinas presentes na categoría vella '''non''' serán recategorizadas na categoría nova.",
        "movenosubpage": "Esta páxina non ten subpáxinas.",
        "movereason": "Motivo:",
        "revertmove": "reverter",
-       "delete_and_move_text": "== Cómpre borrar ==\nA páxina de destino, chamada \"[[:$1]]\", xa existe.\nQuérea borrar para deixar sitio para facer o traslado?",
+       "delete_and_move_text": "A páxina de destino, chamada \"[[:$1]]\", xa existe.\nQuérea borrar para deixar sitio para facer o traslado?",
        "delete_and_move_confirm": "Si, borrar a páxina",
        "delete_and_move_reason": "Eliminado para facer sitio para mover \"[[$1]]\"",
        "selfmove": "O título de orixe e o de destino é o mesmo; non se pode mover unha páxina sobre si mesma.",
        "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.\nVelaquí 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.\nVelaquí está a última entrada no rexistro, por se quere consultala:",
-       "move-over-sharedrepo": "== O ficheiro xa existe ==\n\"[[:$1]]\" xa existe nun repositorio compartido. Ao mover un ficheiro a este título sobrescribirase o ficheiro compartido.",
+       "move-over-sharedrepo": "\"[[:$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.\nPor favor, escolla outro nome.",
        "export": "Exportar páxinas",
        "exporttext": "Pode exportar o texto e o historial de edición dunha páxina calquera ou un conxunto de páxinas agrupadas nalgún ficheiro XML. Este pódese importar noutro wiki que utilice o programa MediaWiki mediante a [[Special:Import|páxina de importación]].\n\nPara exportar páxinas, insira os títulos na caixa de texto que está máis abaixo, poñendo un título por liña, e se quere seleccione a versión actual e todas as versións vellas, coas liñas do historial da páxina, ou só a versión actual con información sobre a última edición.\n\nNo último caso, pode usar tamén unha ligazón, por exemplo [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]], para a páxina \"[[{{MediaWiki:Mainpage}}]]\".",
        "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}}",
+       "siteusers": "{{PLURAL:$2|{{GENDER:$1|o usuario|a usuaria}}|os usuarios}} $1 de {{SITENAME}}",
        "anonusers": "{{PLURAL:$2|o usuario anónimo|os usuarios anónimos}} $1 de {{SITENAME}}",
        "creditspage": "Páxina de créditos",
        "nocredits": "Esta páxina non ten dispoñible información de créditos.",
        "expand_templates_preview_fail_html": "<em>Dado que o código HTML puro está activado en {{SITENAME}} e produciuse unha perda dos datos da sesión, a vista previa está oculta como precaución contra ataques mediante código JavaScript.</em>\n\n<strong>Se este é un intento lexítimo de acceso á vista previa, inténteo de novo.</strong>\nSe segue sen funcionar, probe a [[Special:UserLogout|saír]] e volver a entrar coa súa conta.",
        "expand_templates_preview_fail_html_anon": "<em>Dado que o código HTML puro está activado en {{SITENAME}} e produciuse unha perda dos datos da sesión, a vista previa está oculta como precaución contra ataques mediante código JavaScript.</em>\n\n<strong>Se este é un intento lexítimo de acceso á vista previa, probe a [[Special:UserLogout|saír]] e volver a entrar coa súa conta.</strong>",
        "expand_templates_input_missing": "Necesita proporcionar polo menos algún texto de entrada.",
-       "pagelanguage": "Selector de lingua da páxina",
+       "pagelanguage": "Cambiar a lingua da páxina",
        "pagelang-name": "Páxina",
        "pagelang-language": "Lingua",
        "pagelang-use-default": "Utilizar a lingua por defecto",
        "pagelang-submit": "Enviar",
        "right-pagelang": "Cambiar a lingua da páxina",
        "action-pagelang": "cambiar a lingua da páxina",
-       "log-name-pagelang": "Rexistro de cambios de lingua",
+       "log-name-pagelang": "Rexistro de cambios de linguas",
        "log-description-pagelang": "Este é un rexistro dos cambios na lingua das páxinas.",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|cambiou}} a lingua da páxina \"$3\" do $4 ao $5.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|cambiou}} a lingua de \"$3\" do $4 ao $5.",
        "default-skin-not-found": "Ups! O aspecto predeterminado do wiki, definido en <code dir=\"ltr\">$wgDefaultSkin</code> como <code>$1</code>, non está dispoñíbel.\n\nA súa instalación parece incluír {{PLURAL:$4|o seguinte aspecto|os seguintes aspectos}}. Lea o [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual de configuración dos aspectos] para obter información sobre como {{PLURAL:$4|activalo|activalos}} e escoller o predeterminado.\n\n$2\n\n; Se acaba de instalar MediaWiki:\n: Probablemente instalou MediaWiki a partir de Git, ou directamente a partir do código fonte mediante algún outro método. En tal caso, este problema é normal. Probe a instalar algúns aspectos do [https://www.mediawiki.org/wiki/Category:All_skins cartafol de aspectos de mediawiki.org]. Para instalar aspectos, siga calquera destes pasos:\n:* Descargue o [https://www.mediawiki.org/wiki/Download arquivo do instalador], que inclúe varios aspectos e complementos. Pode copiar e pegar o cartafol <code>skins/</code> que atopará no arquivo.\n:* Descargue arquivos de aspectos individuais de [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Usando Git para descargar aspectos].\n: Isto non debería interferir co seu repositorio Git se é vostede un desenvolvedor de MediaWiki.\n\n; Se acaba de anovar MediaWiki:\n: MediaWiki 1.24 e versións posteriores xa non activan aspectos de maneira automática (lea o [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual de descubrimento automático de aspectos]). Pode pegar {{PLURAL:$5|a seguinte liña|as seguintes liñas}} no seu ficheiro <code>LocalSettings.php</code> para activar {{PLURAL:$5|o|todos os}} {{PLURAL:$5|aspecto instalado|aspectos instalados}} actualmente:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Se acaba de modificar <code>LocalSettings.php</code>:\n: Asegúrese de que os nomes dos aspectos están escritos correctamente.",
        "default-skin-not-found-no-skins": "Ups! O aspecto predeterminado do wiki, definido en <code dir=\"ltr\">$wgDefaultSkin</code> como <code>$1</code>, non está dispoñíbel.\n\nNon ten aspectos instalados.\n\n; Se acaba de instalar MediaWiki:\n: Probablemente instalou MediaWiki a partir de Git, ou directamente a partir do código fonte mediante algún outro método. En tal caso, este problema é normal. Probe a instalar algúns aspectos do [https://www.mediawiki.org/wiki/Category:All_skins cartafol de aspectos de mediawiki.org]. Para instalar aspectos, siga calquera destes pasos:\n:* Descargue o [https://www.mediawiki.org/wiki/Download arquivo do instalador], que inclúe varios aspectos e complementos. Pode copiar e pegar o cartafol <code>skins/</code> que atopará no arquivo.\n:* Descargue arquivos de aspectos individuais de [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Use Git para descargar aspectos individuais].\n: Isto non debería interferir co seu repositorio Git se é vostede un desenvolvedor de MediaWiki. Lea o [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual de configuración de aspectos] para obter información sobre como activar aspectos e escoller o aspecto predeterminado.",
        "default-skin-not-found-row-enabled": "* <code>$1</code>/$2 (activada)",
index e4f19df..2081f83 100644 (file)
        "uploaded-script-svg": "Ir ufegladnigen SVG-Datei het’s ds Skript-Elemänt «$1».",
        "uploaded-hostile-svg": "Im Style-Elemänt vor ufegladnigen SVG-Datei het’s unsichers CSS.",
        "uploaded-event-handler-on-svg": "I SVG-Dateien isch ds Event-Handler-Attribut <code>$1=\"$2\"</code> nid erloubt.",
-       "uploaded-href-attribute-svg": "I SVG-Dateien isch ds href-Attribut <code>&lt;$1 $2=\"$3\"&gt;</code> mit emne nid-lokale Zil (byspilswys http://, javascript: etc.) nid erloubt.",
        "uploaded-href-unsafe-target-svg": "Ir ufegladnige SVG-Datei het’s es href uf ds unsichere Zil <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploaded-animate-svg": "Ir ufegladnigen SVG-Datei het’s en «animate»-Tag, wo über ds «from»-Attribut <code>&lt;$1 $2=\"$3\"&gt;</code> chönnt href ändere.",
        "uploaded-setting-event-handler-svg": "Ir ufegladnigen SVG-Datei het’s ds Event-Handler-Attribut <code>&lt;$1 $2=\"$3\"&gt;</code>. Event-Handler-Attribut sy nid erloubt.",
        "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.",
        "filename-thumb-name": "Das gseht uus wi’ne Titel für’nes Vorschoubildli. Bitte lad kener Vorschoubildli zrügg ufen uf ds glyche Wiki. We’s nid eso isch, de tue bitte der Dateinamen eso ändere, das er ussagchräftiger isch u nid ds Präfix vomene Vorschoubildli het.",
        "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.\nBitte gib dr Datei e Name, wu dr Inhalt besser bschryybt.",
-       "upload-success-subj": "Erfolgryych uffegelade",
-       "upload-success-msg": "Dyyni vu [$2] uffeglade Datei isch jetz do verfiegbar: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Fähler bim Uffelade",
-       "upload-failure-msg": "S het e Probläm gee mit Dyyre vu [$2] uffegladene Datei:\n\n$1",
-       "upload-warning-subj": "Warnig bim Uffelade",
-       "upload-warning-msg": "S het e Probläm gee bim Uffelade vu [$2]. Du chasch zruckgoh zum [[Special:Upload/stash/$1|Ufffeladformular]] go des Probläm lese.",
        "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",
        "wlheader-showupdated": "Syte, wo syt em letste Bsuech hei g’änderet, sy <strong>fett</strong> dargstellt.",
        "wlnote": "Unde {{PLURAL:$1|steit di letsti Änderig|stöh di letste <strong>$1</strong> Änderigen}} us {{PLURAL:$2|der letste Stund|de letste <strong>$2</strong> Stunde}}. Stand: $3, $4 Uhr.",
        "wlshowlast": "Zeig di letste $1 Stunden und $2 Täg",
-       "watchlistall2": "alli",
        "watchlist-options": "Aazeigoptione",
        "watching": "Am beobachte …",
        "unwatching": "Nümm am beobachten …",
index 5112bf8..9c70672 100644 (file)
        "watchthisupload": "આ પાનાને ધ્યાનમાં રાખો",
        "filewasdeleted": "આ નામે ફાઇલ ચડાવાઇ હતી અને પછે થી ભૂંસાડી દેવાઇ હતી.\nફરીથી ફાઇલ ચડાવતા પહેલા $1 ચકાસો.",
        "filename-bad-prefix": "તમે ચડાવેલી ફાઇલનું નામ '''\"$1\"''' થી શરૂ થાય છે, જેમાં ફાઇલની માહિતી વિષે વર્ણન નથી. લાગે ચે તે ડિજીટલ કેમેરા દ્વારા સામાન્ય રીતે સ્વયંચાલિત રીતે અપાતું છબીનું નામ છે.\nકૃપયા તમે ચડાવેલી ફાઇલ માટે એક વર્ણનાત્મક નામ આપો.",
-       "upload-success-subj": "ફાઇલ ચડાવ સફળ",
-       "upload-success-msg": "[$2]થી તમારુઁ ફાઇલ ચડાવ સફળ રહ્યો. તે અહીઁ ઉપલબ્ધ છે. : [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "ફાઇલ ચઢાવ મુશ્કેલી",
-       "upload-failure-msg": "તમરા ફાઇલ ચડાવવામાં [$2]થી અડચણ થઇ:\n\n$1",
-       "upload-warning-subj": "ફાઇલ ચઢાવ ચેતવણી",
-       "upload-warning-msg": "[$2]થી કરાયેલ તમારા ચડાવા માં તકલીફ હતી. તમે [[Special:Upload/stash/$1|upload form]]  પર ફરી જઇ આ ત્રુટિ હટાવી ફરી ફાઇલ ચડાવો",
        "upload-proto-error": "ખોટો શિષ્ટાચાર",
        "upload-proto-error-text": "દુરના ફાઇલ ચઢાવના  URL ની શરૂઆત <code>http://</code> કે <code>ftp://</code>થી થવી જોઇએ.",
        "upload-file-error": "આંતરિક ત્રુટિ",
        "wlheader-showupdated": "તમારી છેલ્લી મુલાકાત પછી બદલાયેલાં પાના  '''ઘાટા''' અક્ષરો વડે દર્શાવ્યાં છે.",
        "wlnote": "નીચે $3, $4 વાગ્યા સુધીના છેલ્લા {{PLURAL:$2|એક કલાક|'''$2''' કલાક}}માં થયેલા {{PLURAL:$1|ફેરફાર|'''$1''' ફેરફારો }} દર્શાવ્યા છે.",
        "wlshowlast": "છેલ્લા $1 કલાકો $2 દિવસો બતાવો",
-       "watchlistall2": "બધા",
        "watchlist-options": "ધ્યાનસૂચિના વિકલ્પો",
        "watching": "નજર રાખી રહ્યાં છો...",
        "unwatching": "નજર રાખવાની બંધ કરી છે...",
        "enotif_lastvisited": "તમારી પાછલી મુલાકાત પછી થયેલા બધા ફેરફારો માટે $1 જુઓ",
        "enotif_lastdiff": "આ ફેરફાર જોવા $1 જુઓ",
        "enotif_anon_editor": "અનામિ સભ્ય $1",
-       "enotif_body": "પ્રિય $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nફેરફારોનો સારાંશ: $PAGESUMMARY $PAGEMINOREDIT\n\nસંપાદકનો સંપર્ક:\nઇમેલ: $PAGEEDITOR_EMAIL\nવિકિ: $PAGEEDITOR_WIKI\n\nજ્યાં સુધી તમે પ્રવેશ કરીને આ પાનાની મુલાકાત નહી લો ત્યાં સુધી તેમાં ભવિષ્યમાં થનાર કોઇ પણ ફેરફારની સૂચના તમને મળશે નહિ. તમે તમારી ધ્યાન સૂચિમાં તમે જોયેલા પાના સંબંધી સૂચનાને લાગતા વિકલ્પોમાં ફેરફાર કરી શકો છો.\n\n\nઆપની વિશ્વાસુ {{SITENAME}} સૂચના પ્રણાલી   \n\n--\nઇમેલ સૂચના પ્રણાલી બદલવા માટે, મુલાકાત લો\n{{canonicalurl:{{#special:Preferences}}}}\n\nતમારી ધ્યાનસૂચિની વિક્લ્પ ગોઠવણી માટે, મુલાકાત લો\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nધ્યાનસૂચિમાંથી પાનું હટાવવા માટે, મુલાકાત લો\n$UNWATCHURL\n\nમંતવ્યો અને વધુ મદદ માટે:\n$HELPPAGE",
+       "enotif_body": "પ્રિય $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nફેરફારોનો સારાંશ: $PAGESUMMARY $PAGEMINOREDIT\n\nસંપાદકનો સંપર્ક:\nઇમેલ: $PAGEEDITOR_EMAIL\nવિકિ: $PAGEEDITOR_WIKI\n\nજ્યાં સુધી તમે પ્રવેશ કરીને આ પાનાની મુલાકાત નહી લો ત્યાં સુધી તેમાં ભવિષ્યમાં થનાર કોઇ પણ ફેરફારની સૂચના તમને મળશે નહિ. તમે તમારી ધ્યાન સૂચિમાં તમે જોયેલા પાના સંબંધી સૂચનાને લાગતા વિકલ્પોમાં ફેરફાર કરી શકો છો.\n\nઆપની વિશ્વાસુ {{SITENAME}} સૂચના પ્રણાલી   \n\n--\nઇમેલ સૂચના પ્રણાલી બદલવા માટે, મુલાકાત લો\n{{canonicalurl:{{#special:Preferences}}}}\n\nતમારી ધ્યાનસૂચિની વિક્લ્પ ગોઠવણી માટે, મુલાકાત લો\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nધ્યાનસૂચિમાંથી પાનું હટાવવા માટે, મુલાકાત લો\n$UNWATCHURL\n\nમંતવ્યો અને વધુ મદદ માટે:\n$HELPPAGE",
        "created": "બનાવ્યું",
        "changed": "બદલ્યું",
        "deletepage": "પાનું હટાવો",
index 36ec2d7..ca39584 100644 (file)
        "createaccountreason": "原因:",
        "createacct-reason": "原因",
        "createacct-reason-ph": "汝做麽嘅愛創建另一隻帳號",
-       "createacct-captcha": "安全檢查",
-       "createacct-imgcaptcha-ph": "輸入汝在上背看到嘅字符",
        "createacct-submit": "建立帳號",
        "createacct-benefit-heading": "{{SITENAME}}是由撈您共樣嘅人建立。",
        "createacct-benefit-body1": "$1次編寫",
        "resetpass-temp-password": "臨時密碼:",
        "resetpass-abort-generic": "擴充插件已中止矣更改密碼操作。",
        "passwordreset": "重設密碼",
-       "passwordreset-legend": "重置密码",
        "passwordreset-disabled": "邇隻維基上已禁止矣重設密碼。",
        "passwordreset-emaildisabled": "電子郵件功能在此 wiki 上已禁用。",
        "passwordreset-username": "用戶名:",
        "passwordreset-capture-help": "係講汝選中邇隻框,電子郵件(包括臨時密碼)將顯示,並發送分用戶。",
        "passwordreset-email": "電郵地址:",
        "passwordreset-emailtitle": "在{{SITENAME}}上嘅詳細信息",
-       "passwordreset-emailsent": "密碼重置電子郵件已發送。",
+       "passwordreset-emailsentemail": "密碼重置電子郵件已發送。",
        "changeemail": "更改電子郵件地址",
+       "changeemail-header": "更改電子郵件帳戶",
        "changeemail-no-info": "汝必須登入後直接進入邇隻頁面。",
        "changeemail-oldemail": "當前電郵地址:",
        "changeemail-newemail": "新嘅電郵地址:",
        "default": "默認",
        "prefs-files": "文件",
        "youremail": "電子郵件:",
-       "username": "Yung-fu miàng-chhṳ̂n:",
+       "username": "{{GENDER:$1|用戶名稱}}:",
        "yourrealname": "真名:",
        "yourlanguage": "語言:",
        "yourvariant": "Sṳ-thí pien-von:",
-       "yournick": "Kién-chhṳ̂n:",
+       "yournick": "新个簽名:",
        "badsig": "錯誤嘅原始簽名。請檢查HTML標籤。",
        "badsiglength": "Tshiâm-miàng ko-liong.\nTshòng-tón pit-sî chhai $1-ke sṳ-ngièn yî-ha.",
        "email": "電子郵件",
        "destfilename": "目標文件名",
        "watchthisupload": "監視本文件",
        "filewasdeleted": "早先已經有一隻同名文件分上傳後又分刪除矣。在上傳邇文件之前汝愛檢查$1。",
-       "upload-success-subj": "上傳成功",
        "upload-proto-error": "協議毋著",
        "upload-proto-error-text": "遠程上傳要求URL以<code>http://</code>或 <code>ftp://</code>開頭。",
        "upload-file-error": "內部差錯",
        "nlinks": "$1隻鏈接",
        "nmembers": "$1隻成員",
        "nrevisions": "$1隻修訂版本",
-       "nviews": "$1次瀏覽",
        "specialpage-empty": "本報告無結果。",
        "lonelypages": "孤立頁面",
        "lonelypagestext": "Yî-ha vùn-chông mò-yû lièn-kiet liá-ke wiki chûng ke khì-thâ vùn-chông.",
        "mailnologin": "無電郵地址",
        "mailnologintext": "汝必須先[[Special:UserLogin|登入]]\n並在[[Special:Preferences|偏好設定]]\n肚有一隻有效嘅電郵地址正做得發郵件分其他用戶。",
        "emailuser": "電郵聯繫邇隻用戶",
-       "emailpage": "電郵聯繫用戶",
        "emailpagetext": "Kó-yèn ke-yung-fu yí-kîn chhai chhâm-su sat-chṳ chông chûng sû-ngi̍p yû-háu ke e-mail thi-tiám, yî-ha ke péu-kak chiông-ki yit-ke sêu-sit pûn ke-yung-fu. Ngì chhai chhâm-su sat-chṳ chûng só sû-ngi̍p ke e-mail thi-tiám chiông chhut-hien chhai email \"fat-khien-ngìn\" yit-làn-chûng, liá-yong ke-yung-fu chhiu khó-yî fì-fu̍k.",
        "defemailsubject": "{{SITENAME}} Email",
        "noemailtitle": "電郵地址:",
        "deleteotherreason": "其它/附加理由:",
        "deletereasonotherlist": "其它理由",
        "rollback": "編寫倒轉頭",
-       "rollback_short": "倒轉頭",
        "rollbacklink": "打轉頭",
        "rollbackfailed": "無法倒轉頭",
        "cantrollback": "編寫無法打轉頭;最後嘅貢獻者人本文嘅唯一作者。",
        "protect-cascadeon": "下背嘅$1嘅頁面包含緊本頁面嘅同時,還啟動矣連鎖保護,故所本頁面目前也分保護,還㬟做得編寫。汝做得設定本頁面嘅保護級別,毋過邇影響毋到連鎖保護。",
        "protect-default": "容許所有用戶",
        "protect-fallback": "Sî-yeu \"$1\" ke hí-khó",
-       "protect-level-autoconfirmed": "Kim-chṳ́  sîn-ke lâu hàn-mò chu-chhak ke yung-fu",
+       "protect-level-autoconfirmed": "只有已經自動確定个用戶",
        "protect-level-sysop": "Kón-lî-yèn chôn-cho",
        "protect-summary-cascade": "連鎖",
        "protect-expiring": "終止於$1(UTC)",
        "sp-contributions-uploads": "上傳",
        "sp-contributions-logs": "日誌",
        "sp-contributions-talk": "交流",
-       "sp-contributions-userrights": "Yung-fu khièn-han kón-lî",
+       "sp-contributions-userrights": "用戶權限管理",
        "sp-contributions-search": "搜尋貢獻記錄",
        "sp-contributions-username": "IP地址或用戶名:",
        "sp-contributions-toponly": "單淨展示最新修訂版本嘅編寫",
        "move-page-legend": "Yì-thung vùn-chông",
        "movepagetext": "Yung ha-mien ke péu-tân lòi chhùng-sîn min-miàng yit-ke vùn-chông, pin chiông siû-thin li̍t-sṳ́ thùng-sṳ̀ yì-thung to sîn vùn-chông.\nLó-ke vùn-chông chiông sṳ̀n-vì sîn vùn-chông ke chhûng-thin hong-mien.\nLièn-kiet to ló vùn-chông ke lièn-kiet pin-mò chhṳ-thung kiên-kói;\nchhiáng kiám-chhà sûng-chhûng fe̍t-he sún-fái chhûng-thin-hiong lièn-kiet.\nYin-tông fu-chit khok-thin só-yû lièn-kiet chiông-voi lièn-to chṳ́-thin ke vùn-chông.\n\nChu-yi kó-yèn sîn vùn-chông yí-kîn yû nui-yùng, vùn-chông chiông '''put-voi''' pûn yì-thung, chhù-fî sîn vùn-chông mò nui-yùng fe̍t-he chhûng-thin-hiong, yì-yèn mò-yû siû-thin li̍t-sṳ́.\nNgì chai pit-yeu sṳ̀ khó-yî chhai yì-thung to sîn vùn-chông heu chai yì-fì ló-ke vùn-chông, thùng-sṳ̀ ya-he vù-fap koi-hien yû hong-mien.\n\n'''Kín-ko!'''\nTui yit-ke kîn-sòng pûn fóng-mun ke vùn-chông lòi ngièn, liá khó-nèn he yit-ke chṳ̂n-thai khi̍p thòng-thu̍t ke kiên-kói;\nchhiáng chhai hàng-thung chṳ̂-chhièn siên liáu-kié khì-thâ khó-nèn tai-lòi ke heu-kó.",
        "movepagetalktext": "Yû-kôan ke tui-fa-hiong chiông-voi pûn chhṳ-thung lâu ke-vùn-chông yit-hí yì-thung, '''chhù-fî''':\n*Ngì chiông vùn-chông yì-thung to siông-thùng ke miàng-sṳ, fe̍t-chá\n*Sîn vùn-chông yí-kîn yû yit-ke pâu-hàm nui-yùng ke tui-fa-hiong, fe̍t-he\n*Ngì put kiêu-sién ha-mien ke fu̍k-sién khiông. Chhai liá-chúng chhìn-khóng hâ, pit-sî sú-kûng yì-thung fe̍t-he ha̍p-phîn vùn-chông.",
-       "movearticle": "Yì-thung vùn-chông",
        "movenologintext": "Ngì pit-sî he yit-miàng tên-ki yung-fu pin-chhiâ [[Special:UserLogin|tên-ngi̍p]] heu chhòi-nèn Yì-thung yit-ke vùn-chông.",
        "newtitle": "新標題:",
        "move-watch": "Kam-sṳ chhṳ́-chông",
        "movelogpagetext": "Yî-ha he yí-kîn yì-thung ke vùn-chông chhîn-tân.",
        "movereason": "原因:",
        "revertmove": "恢復",
-       "delete_and_move": "刪除並移動",
        "delete_and_move_text": "==愛刪除==\n\n目標頁面\"[[:$1]]\"已經存在。汝確認愛刪除原頁面並進行移動係無?",
        "delete_and_move_confirm": "著,刪除邇頁",
        "delete_and_move_reason": "Chhù-thet yî-phien yì-thung",
        "import-interwiki-text": "選擇一隻wiki撈頁面標題進行導入。\n修訂日期與編寫人嘅名會分保存。\n所有嘅跨wiki導入操作分記錄在[[Special:Log/import|導入日誌]]肚。",
        "import-interwiki-history": "Fuk-chṳ chhṳ́-chông ke só-yû li̍t-sṳ́ pán-pún",
        "import-interwiki-submit": "導入",
-       "import-interwiki-namespace": "Chiông vùn-chông chón-yì to miàng-sṳ khûng-kiên:",
        "importtext": "Chhiáng sṳ́-yung Special:Export kûng-nèn chhiùng-ngièn wiki thô-chhuttóng-on, tú-chhùn to ngì ke-phién pin song-chhòn to liá-piên.",
        "importstart": "頁面導入中……",
        "import-revision-count": "$1-ke siû-thin",
        "importnofile": "無上傳導入文件。",
        "importlogpage": "導入日誌",
        "importlogpagetext": "管理性導入在其他Wiki上有編寫歷史嘅頁面",
-       "import-logentry-upload": "Theu-ko tóng-on sông-chhòn thô-ngi̍p ke $1",
        "import-logentry-upload-detail": "$1-ke siû-thin",
-       "import-logentry-interwiki": "Khiam-wiki $1",
        "import-logentry-interwiki-detail": "Lòi-chhṳ $2-ke $1-ke siû-thin",
        "tooltip-pt-userpage": "汝嘅用戶頁面",
        "tooltip-pt-anonuserpage": "Ngì-ke phiên-siá pún-chham só yung IP ke tui-yin yung-fu-chông",
        "markedaspatrollederror": "Put-nèn phêu-ki sṳ̀n-vì yí-kîn kiám-chhà",
        "markedaspatrollederrortext": "Ngì sî-yeu chṳ́-thin mêu-ke pán-pún chhòi-nèn phêu-ki sṳ̀n-vì yí-kîn kiám-chhà.",
        "markedaspatrollederror-noautopatrol": "Ngì mò-fap chiông ngì chhṳ-kí só-chok ke kiên-kói phêu-ki sṳ̀n-vì yí-kîn kiám-chhà.",
-       "patrol-log-page": "Sùn-chhà ki-liu̍k",
+       "patrol-log-page": "巡邏檢查日誌",
        "deletedrevision": "已刪除舊版本$1",
        "previousdiff": "←上隻版本",
        "nextdiff": "下隻版本→",
index 50c52e3..d247970 100644 (file)
        "uploaded-script-svg": "נמצא אלמנט שאפשר לכתוב בו תסריט \"$1\" בקובץ ה־SVG שהועלה.",
        "uploaded-hostile-svg": "נמצא CSS בלתי־מאובטח באלמנט style בקובץ ה־SVG שהועלה.",
        "uploaded-event-handler-on-svg": "אסור להגדיר מאפייני טיפול באירועים <code dir=\"ltr\">$1=\"$2\"</code> בקובצי SVG.",
-       "uploaded-href-attribute-svg": "×\9e×\90פ×\99×\99× ×\99 href ×\91צ×\95רת <code dir=\"ltr\">&lt;$1 $2=\"$3\"&gt;</code> ×¢×\9d ×\99×¢×\93 ×\91×\9cת×\99Ö¾×\9eק×\95×\9e×\99 (×\9c×\9eש×\9c http://â\80\8eâ\80\8f, javascript:â\80\8e, ×\95×\9b×\95') ×\90ס×\95ר×\99×\9d ×\91ק×\95×\91צ×\99 SVG.",
-       "uploaded-href-unsafe-target-svg": "× ×\9eצ×\90 href ×\9c×\99×¢×\93 ×\91×\9cת×\99Ö¾×\9e×\90×\95×\91×\98×\97 <code dir=\"ltr\">&lt;$1 $2=\"$3\"&gt;</code> בקובץ ה־SVG שהועלה.",
+       "uploaded-href-attribute-svg": "×\9c×\9e×\90פ×\99×\99× ×\99 href ×\91ק×\95×\91צ×\99 SVG ×\9e×\95תר ×\9cקשר ×¨×§ ×\9c×\99×¢×\93×\99 http ×\90×\95 https, ×\95× ×\9eצ×\90 <code dir=\"ltr\">&lt;$1 $2=\"$3\"&gt;</code>.",
+       "uploaded-href-unsafe-target-svg": "× ×\9eצ×\90 href ×\9cנת×\95× ×\99×\9d ×\9c×\90 ×\9e×\90×\95×\91×\98×\97×\99×\9d <code dir=\"ltr\">&lt;$1 $2=\"$3\"&gt;</code> בקובץ ה־SVG שהועלה.",
        "uploaded-animate-svg": "נמצא תג \"animate\" שיכול לשנות href באמצעות מאפיין \"from\"  בצורת <code dir=\"ltr\">&lt;$1 $2=\"$3\"&gt;</code> בקובץ ה־SVG שהועלה.",
        "uploaded-setting-event-handler-svg": "הגדרת מאפייני טיפול באירועים חסומה, נמצא <code dir=\"ltr\">&lt;$1 $2=\"$3\"&gt;</code> בקובץ ה־SVG שהועלה.",
        "uploaded-setting-href-svg": "השימוש בתג set כדי להוסיף מאפיין href לאלמנט הורה חסום.",
        "filename-thumb-name": "נראה שכותרת הקובץ היא כותרת של תמונה מוקטנת (ממוזערת). יש להימנע מהעלאת תמונות ממוזערות בחזרה לאותו אתר ויקי. אם זו אינה תמונה ממוזערת, יש לתקן את שם הקובץ כך שיהיה משמעותי יותר ושלא יכלול את הקידומת של תמונה ממוזערת.",
        "filename-bad-prefix": "שם הקובץ שאתם מעלים מתחיל ב־<strong>\"$1\"</strong>, שהוא שם שאינו מתאר את הקובץ ובדרך כלל מוקצה אוטומטית על־ידי מצלמות דיגיטליות.\nיש לבחור שם מתאים יותר לקובץ, שיתאר את תכניו.",
        "filename-prefix-blacklist": " #<!-- נא להשאיר שורה זו בדיוק כפי שהיא --> <pre>\n# התחביר הוא כדלקמן:\n#   * כל דבר מתו \"#\" לסוף השורה הוא הערה\n#   * כל שורה לא ריקה היא קידומת לשמות קבצים טיפוסיים שמצלמות דיגיטליות נותנות אוטומטית\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # מספר טלפונים סלולריים\nIMG # כללי\nJD # Jenoptik\nMGP # Pentax\nPICT # שונות\n #</pre> <!-- נא להשאיר שורה זו בדיוק כפי שהיא -->",
-       "upload-success-subj": "ההעלאה הושלמה בהצלחה",
-       "upload-success-msg": "ההעלאה מהכתובת [$2] הושלמה בהצלחה. הקובץ שהעליתם זמין כאן: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "בעיה בהעלאה",
-       "upload-failure-msg": "הייתה בעיה עם הקובץ שהעלית מהכתובת [$2]:\n\n$1",
-       "upload-warning-subj": "אזהרה בהעלאה",
-       "upload-warning-msg": "הייתה בעיה עם הקובץ שהעליתם מהכתובת [$2]. באפשרותכם לחזור ל[[Special:Upload/stash/$1|טופס ההעלאה]] כדי לתקן בעיה זו.",
        "upload-proto-error": "פרוטוקול שגוי",
        "upload-proto-error-text": "בהעלאה מרוחקת, יש להשתמש בכתובות URL המתחילות עם <code>http://</code> או <code>ftp://</code>.",
        "upload-file-error": "שגיאה פנימית",
        "upload-too-many-redirects": "הכתובת מכילה הפניות רבות מדי",
        "upload-http-error": "התרחשה שגיאת HTTP‏: $1",
        "upload-copy-upload-invalid-domain": "העלאת קבצים משרת זה אינה אפשרית.",
+       "upload-foreign-cant-upload": "בוויקי הזה לא מוגדר איך להעלות קבצים למאגר קבצים זר.",
        "upload-dialog-title": "העלאת קובץ",
        "upload-dialog-button-cancel": "ביטול",
        "upload-dialog-button-done": "בוצע",
        "wlheader-showupdated": "דפים שהשתנו מאז ביקורך האחרון בהם מוצגים ב'''הדגשה'''.",
        "wlnote": "להלן {{PLURAL:$1|השינוי האחרון|<strong>$1</strong> השינויים האחרונים}} {{PLURAL:$2|בשעה האחרונה|בשעתיים האחרונות|ב־<strong>$2</strong> השעות האחרונות}}, עד $4, $3.",
        "wlshowlast": "הצגת $1 שעות אחרונות $2 ימים אחרונים",
-       "watchlistall2": "הכול",
        "watchlist-hide": "הסתרה",
        "watchlist-submit": "הצגה",
        "wlshowtime": "תקופת זמן לצפייה:",
        "lockedbyandtime": "(על־ידי $1 ב־$3, $2)",
        "move-page": "העברת $1",
        "move-page-legend": "העברת דף",
-       "movepagetext": "שימוש בטופס שלהלן ישנה את שמו של דף, ויעביר את כל ההיסטוריה שלו לשם חדש.\nהשם הישן יהפוך לדף הפניה אל הדף עם השם החדש.\nבאפשרותכם לעדכן אוטומטית דפי הפניה לכותרת המקורית.\nאם תבחרו לא לעשות זאת, אנא ודאו שאין [[Special:DoubleRedirects|הפניות כפולות]] או [[Special:BrokenRedirects|שבורות]].\nאתם אחראים לוודא שכל הקישורים ימשיכו להצביע למקום שאליו הם אמורים להצביע.\n\nשימו לב: הדף '''לא''' יועבר אם כבר יש דף תחת השם החדש, אלא אם הדף השני הוא הפניה ואין לו היסטוריית עריכות קודמות.\nפירוש הדבר שאפשר לשנות חזרה את שמו של דף לשם המקורי אם נעשתה טעות, ושלא ניתן לדרוס דף קיים.\n\n'''אזהרה!'''\nשינוי זה עשוי להיות שינוי דרסטי ובלתי צפוי לדף פופולרי;\nאנא ודאו שאתם מבינים את השלכות המעשה לפני שאתם ממשיכים.",
-       "movepagetext-noredirectfixer": "שימוש בטופס שלהלן ישנה את שמו של דף, ויעביר את כל ההיסטוריה שלו לשם חדש.\nהשם הישן יהפוך לדף הפניה אל הדף עם השם החדש.\nאנא ודאו שאין [[Special:DoubleRedirects|הפניות כפולות]] או [[Special:BrokenRedirects|שבורות]].\nאתם אחראים לוודא שכל הקישורים ימשיכו להצביע למקום שאליו הם אמורים להצביע.\n\nשימו לב: הדף '''לא''' יועבר אם כבר יש דף תחת השם החדש, אלא אם הדף הזה הוא הפניה ואין לו היסטוריית עריכות קודמות.\nפירוש הדבר שאפשר לשנות חזרה את שמו של דף לשם המקורי אם נעשתה טעות, ושלא ניתן לדרוס דף קיים.\n\n'''אזהרה!'''\nשינוי זה עשוי להיות שינוי דרסטי ובלתי צפוי לדף פופולרי;\nאנא ודאו שאתם מבינים את השלכות המעשה לפני שאתם ממשיכים.",
+       "movepagetext": "שימוש בטופס שלהלן ישנה את שמו של דף, ויעביר את כל ההיסטוריה שלו לשם חדש.\nהשם הישן יהפוך לדף הפניה אל הדף עם השם החדש.\nבאפשרותכם לעדכן אוטומטית דפי הפניה לכותרת המקורית.\nאם תבחרו לא לעשות זאת, אנא ודאו שאין [[Special:DoubleRedirects|הפניות כפולות]] או [[Special:BrokenRedirects|שבורות]].\nאתם אחראים לוודא שכל הקישורים ימשיכו להצביע למקום שאליו הם אמורים להצביע.\n\nשימו לב: הדף <strong>לא</strong> יועבר אם כבר יש דף תחת השם החדש, אלא אם הדף השני הוא הפניה ואין לו היסטוריית עריכות קודמות.\nפירוש הדבר שאפשר לשנות חזרה את שמו של דף לשם המקורי אם נעשתה טעות, ושלא ניתן לדרוס דף קיים.\n\n<strong>לתשומת לבכם:</strong>\nשינוי זה עשוי להיות שינוי דרסטי ובלתי צפוי לדף פופולרי;\nאנא ודאו שאתם מבינים את השלכות המעשה לפני שאתם ממשיכים.",
+       "movepagetext-noredirectfixer": "שימוש בטופס שלהלן ישנה את שמו של דף, ויעביר את כל ההיסטוריה שלו לשם חדש.\nהשם הישן יהפוך לדף הפניה אל הדף עם השם החדש.\nאנא ודאו שאין [[Special:DoubleRedirects|הפניות כפולות]] או [[Special:BrokenRedirects|שבורות]].\nאתם אחראים לוודא שכל הקישורים ימשיכו להצביע למקום שאליו הם אמורים להצביע.\n\nשימו לב: הדף <strong>לא</strong> יועבר אם כבר יש דף תחת השם החדש, אלא אם הדף הזה הוא הפניה ואין לו היסטוריית עריכות קודמות.\nפירוש הדבר שאפשר לשנות חזרה את שמו של דף לשם המקורי אם נעשתה טעות, ושלא ניתן לדרוס דף קיים.\n\n<strong>לתשומת לבכם:</strong>\nשינוי זה עשוי להיות שינוי דרסטי ובלתי צפוי לדף פופולרי;\nאנא ודאו שאתם מבינים את השלכות המעשה לפני שאתם ממשיכים.",
        "movepagetalktext": "אם התיבה הזאת מסומנת, דף השיחה של דף זה יועבר אוטומטית לכותרת החדשה, אלא אם קיים שם דף שיחה שאינו ריק.\n\nבמקרה הזה, תצטרכו להעביר או לשלב את הדפים באופן ידני, אם תרצו.",
        "moveuserpage-warning": "'''אזהרה:''' אתם עומדים להעביר דף משתמש. שימו לב שרק הדף יועבר וששם המשתמש '''לא''' ישתנה.",
        "movecategorypage-warning": "<strong>אזהרה:</strong> אתם עומדים להעביר דף קטגוריה. שימו לב שרק הדף יועבר ושכל הדפים בקטגוריה הישנה <strong>לא</strong> יסווגו לקטגוריה החדשה.",
        "movenosubpage": "לדף זה אין דפי משנה.",
        "movereason": "סיבה:",
        "revertmove": "החזרה",
-       "delete_and_move_text": "== בקשת מחיקה ==\nדף היעד, \"[[:$1]]\", כבר קיים.\nהאם ברצונך למחוק אותו כדי לאפשר את ההעברה?",
+       "delete_and_move_text": "דף היעד, \"[[:$1]]\", כבר קיים.\nהאם ברצונך למחוק אותו כדי לאפשר את ההעברה?",
        "delete_and_move_confirm": "אישור מחיקת הדף",
        "delete_and_move_reason": "מחיקה כדי לאפשר העברה מהשם \"[[$1]]\"",
        "selfmove": "כותרות המקור והיעד זהות; לא ניתן להעביר דף לעצמו.",
        "move-leave-redirect": "השארת הפניה בדף המקורי",
        "protectedpagemovewarning": "'''אזהרה:''' דף זה מוגן כך שרק מפעילי מערכת יכולים להעביר אותו.\nפעולת היומן האחרונה מוצגת להלן:",
        "semiprotectedpagemovewarning": "'''הערה:''' דף זה מוגן כך שרק משתמשים רשומים יכולים להעביר אותו.\nפעולת היומן האחרונה מוצגת להלן:",
-       "move-over-sharedrepo": "== הקובץ קיים ==\n[[:$1]] כבר קיים כקובץ משותף. העברת הקובץ לכותרת זו תדרוס את הקובץ המשותף.",
+       "move-over-sharedrepo": "[[:$1]] כבר קיים במאגר משותף. העברת הקובץ לכותרת זו תדרוס את הקובץ המשותף.",
        "file-exists-sharedrepo": "קובץ בשם שנבחר כבר קיים כקובץ משותף.\nיש לבחור שם אחר.",
        "export": "ייצוא דפים",
        "exporttext": "באפשרותכם לייצא את התוכן ואת היסטוריית העריכה של דף אחד או של מספר דפים, בתבנית של קובץ XML.\nניתן לייבא את הקובץ למיזם ויקי אחר המשתמש בתוכנת מדיה־ויקי באמצעות [[Special:Import|דף הייבוא]].\n\nכדי לייצא דפים, הקישו את שמותיהם בתיבת הטקסט שלהלן, כל שם בשורה נפרדת, ובחרו האם לייצא גם את הגרסה הנוכחית וגם את היסטוריית השינויים של הדפים, או רק את הגרסה הנוכחית עם מידע על העריכה האחרונה.\n\nבנוסף, ניתן להשתמש בקישור, כגון [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] לדף [[{{MediaWiki:Mainpage}}]] ללא היסטוריית השינויים שלו.",
        "lastmodifiedatby": "דף זה שונה לאחרונה ב־$2, $1 על־ידי $3.",
        "othercontribs": "מבוסס על העבודה של $1.",
        "others": "אחרים",
-       "siteusers": "{{PLURAL:$2|משתמש|משתמשי}} {{SITENAME}} $1",
+       "siteusers": "{{PLURAL:$2|{{GENDER:$1|משתמש}}|משתמשי}} {{SITENAME}} $1",
        "anonusers": "{{PLURAL:$2|משתמש אנונימי|משתמשים אנונימיים}} של {{SITENAME}} $1",
        "creditspage": "קרדיטים בדף",
        "nocredits": "אין קרדיטים זמינים בדף זה.",
        "expand_templates_preview_fail_html": "<em>מכיוון שב{{GRAMMAR:תחילית|{{SITENAME}}}} מופעלת הצגת HTML גולמית ואירע אבדן מידע כניסה, התצוגה המקדימה מוסתרת, וזאת כאמצעי זהירות מפני התקפות JavaScript.</em>\n\n<strong>אם זה ניסיון תקין להציג תצוגה מקדימה, יש לנסות שוב.</strong>\nאם זה עדיין לא עובד, יש לנסות [[Special:UserLogout|לצאת מהחשבון]] ולהיכנס שוב.",
        "expand_templates_preview_fail_html_anon": "<em>מכיוון שב{{GRAMMAR:תחילית|{{SITENAME}}}} מופעלת הצגת HTML גולמית ולא נכנסת לחשבון, התצוגה המקדימה מוסתרת, וזאת כאמצעי זהירות מפני התקפות JavaScript.</em>\n\n<strong>אם זה ניסיון תקין להציג תצוגה מקדימה, יש [[Special:UserLogin|להיכנס לחשבון]] ולנסות שוב.</strong>",
        "expand_templates_input_missing": "יש לכתוב טקסט (לפחות טקסט קצר).",
-       "pagelanguage": "×\91×\95רר שפת הדף",
+       "pagelanguage": "ש×\99× ×\95×\99 שפת הדף",
        "pagelang-name": "דף",
        "pagelang-language": "שפה",
        "pagelang-use-default": "להשתמש בשפה הרגילה",
        "action-pagelang": "לשנות את שפת הדף",
        "log-name-pagelang": "יומן שינוי שפה",
        "log-description-pagelang": "זהו יומן של שינויים בשפות של הדפים.",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|ש×\99× ×\94|ש×\99נת×\94}} ×\90ת ×©×¤×ª ×\94×\93×£ $3 מ$4 ל$5.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|ש×\99× ×\94|ש×\99נת×\94}} ×\90ת ×\94שפ×\94 ×©×\9c $3 מ$4 ל$5.",
        "default-skin-not-found": "אופס! עיצוב ברירת המחדל עבור אתר הוויקי שלכם, שמוגדר ב־<code dir=\"ltr\">$wgDefaultSkin</code> כ־<code>$1</code>, אינו זמין.\n\nנראה שההתקנה שלכם כוללת את {{PLURAL:$4|העיצוב|העיצובים}} הבאים. ראו מידע בדף [https://www.mediawiki.org/wiki/Manual:Skin_configuration \"הגדרת עיצובים\" במדריך] על האפשרות להפעיל {{PLURAL:$4|אותו|אותם ולבחור את עיצוב ברירת המחדל}}.\n\n$2\n\n; אם כרגע התקנתם את מדיה־ויקי:\n: נראה שזו התקנה מ־git, או ישירות מקוד המקור בשיטה אחרת כלשהי. במקרה הזה, בעיה זו צפויה. נסו להתקין כמה עיצובים מ[https://www.mediawiki.org/wiki/Category:All_skins ספריית העיצובים של mediawiki.org], על־ידי:\n:* הורדת [https://www.mediawiki.org/wiki/Download קובץ ה־tar להתקנה], שכולל מספר עיצובים והרחבות. באפשרותכם להעתיק ולהדביק מתוכו את תיקיית ה‏‏־<code>skins/</code>.\n:* הורדת קבצי tar של עיצובים ספציפיים מ־[https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins שימוש ב־Git כדי להוריד עיצובים].\n: אם תעשו זאת, זה לא אמור להפריע ל‏‏מאגר ה־git שלכם אם אתם מפתחים של מדיה־ויקי.\n\n; אם כרגע שדרגתם את מדיה־ויקי:\n: מדיה־ויקי 1.24 וגרסאות חדשות יותר כבר לא מפעילות עיצובים מותקנים באופן אוטומטי (ראו [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery \"גילוי אוטומטי של עיצובים\" במדריך]). תוכלו להעתיק את {{PLURAL:$5|השורה הבאה|השורות הבאות}} לתוך הקובץ <code>LocalSettings.php</code> כדי להפעיל את {{PLURAL:$5|העיצוב המותקן|כל העיצובים המותקנים}}.\n\n<pre dir=\"ltr\">$3</pre>\n\n; אם כרגע שיניתם את <code>LocalSettings.php</code>:\n: בדקו שנית האם עשיתם שגיאות הקלדה בשמות העיצובים.",
        "default-skin-not-found-no-skins": "אופס! עיצוב ברירת המחדל עבור אתר הוויקי שלכם, שמוגדר ב־<code dir=\"ltr\">$wgDefaultSkin</code> כ־<code>$1</code>, אינו זמין.\n\nאין לכם עיצובים מותקנים.\n\n; אם כרגע התקנתם או שדרגתם את מדיה־ויקי:\n: נראה שזו התקנה מ־git, או ישירות מקוד המקור בשיטה אחרת כלשהי. במקרה הזה, בעיה זו צפויה. מדיה־ויקי 1.24 וגרסאות חדשות יותר אינן כוללות עיצובים ב־git repository הראשי. נסו להתקין כמה עיצובים מ[https://www.mediawiki.org/wiki/Category:All_skins ספריית העיצובים של mediawiki.org], על־ידי:\n:* הורדת [https://www.mediawiki.org/wiki/Download קובץ ה‏‏־tar להתקנה], שכולל מספר עיצובים והרחבות. באפשרותכם להעתיק ולהדביק מתוכו את תיקיית ה‏‏־<code>skins/</code>.\n:* הורדת קבצי tar של עיצובים ספציפיים מ־[https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins שימוש ב־Git כדי להוריד עיצובים].\n: אם תעשו זאת, זה לא אמור להפריע ל‏‏מאגר ה־git שלכם (אם אתם מפתחים של מדיה־ויקי). ראו מידע בדף [https://www.mediawiki.org/wiki/Manual:Skin_configuration \"הגדרת עיצובים\" במדריך] על האפשרות להפעיל עיצובים ולבחור את עיצוב ברירת המחדל.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (מופעל)",
index e396039..ea03c06 100644 (file)
        "pool-servererror": "पूल काउंटर सेवा उपलब्ध नहीं है ($1)।",
        "poolcounter-usage-error": "उपयोग त्रुटि: $1",
        "aboutsite": "{{SITENAME}} के बारे में",
-       "aboutpage": "Project:परिचय",
+       "aboutpage": "परियोजना:परिचय",
        "copyright": "उपलब्ध सामग्री $1 के अधीन है जब तक अलग से उल्लेख ना किया गया हो।",
        "copyrightpage": "{{ns:project}}:कॉपीराइट",
        "currentevents": "हाल की घटनाएँ",
        "uploaded-script-svg": "अपलोड की गयी एसवीजी फ़ाइल में स्क्रीप्ट अवयव \"$1\" पाया गया।",
        "uploaded-hostile-svg": "अपलोड की गयी एसवीजी फाइल के शैली अवयव में असुरक्षित सीएसएस पायी गयी।",
        "uploaded-event-handler-on-svg": "सेटिंग ईवेंट हैंडलर (आयोजन प्रबन्धनकर्ता वरियता) <code>$1=\"$2\"</code> एसवीजी फ़ाइल में अनुमत नहीं है।",
-       "uploaded-href-attribute-svg": "गैर-स्थानीय लक्ष्य के साथ एचआरईऍफ श्रेय (href attributes) <code>&lt;$1 $2=\"$3\"&gt;</code> (उदाहरण के लिए http://, जावास्क्रीप्ट:, इत्यादि) एसवीजी फाइल में अनुमत नहीं हैं।",
        "uploaded-href-unsafe-target-svg": "अपलोड की गयी फ़ाइल में असुरक्षित लक्ष्य <code>&lt;$1 $2=\"$3\"&gt;</code> पाये गए।",
        "uploaded-animate-svg": "चिप्पि \"animate\" पायी गई जिससे href परिवर्तित हो सकता है, अपलोड की गयी फ़ाइल में \"from\" विशेषता <code>&lt;$1 $2=\"$3\"&gt;</code> काम में ली जा रही है।",
        "uploaded-setting-event-handler-svg": "विकल्प आयोजन-संभालने वाला अवरोधित है, एसवीजी फ़ाइल में मिला <code>&lt;$1 $2=\"$3\"&gt;</code> है।",
        "filename-thumb-name": "यह एक थंबनेल शीर्षक की तरह लग रहा है। कृपया थंबनेल  वापस विकि पर अपलोड न करें। अन्यथा, कृपया फ़ाइल नाम ठीक करें।",
        "filename-bad-prefix": "आप जो फ़ाइल अपलोड कर रहे हैं उसका नाम '''\"$1\"''' से शुरू होता है, जो डिजिटल कैमेरे द्वारा दिया गया नाम है।\nकृपया इस फ़ाइल के लिये कोई दूसरा अधिक जानकारीयुक्त नाम चुनें।",
        "filename-prefix-blacklist": "#<!-- leave this line exactly as it is --> <pre>\n# रूपरेखा इस प्रकार हैं:\n#   *  \"#\" अक्षर से शुरू होने वाली लाइनें टिप्पणीयाँ हैं।\n#   *हर नई लाइन कैमेरा उत्पादक द्वारा लगाये जाने वाले उपपदों की सूची है।\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # some mobil phones\nIMG # generic\nJD # Jenoptik\nMGP # Pentax\nPICT # misc.\n #</pre> <!-- leave this line exactly as it is -->",
-       "upload-success-subj": "अपलोड हो गई",
-       "upload-success-msg": "आपका [$2] से अपलोड असफल रहा। यह [[:{{ns:file}}:$1]] पर उपलब्ध है",
-       "upload-failure-subj": "अपलोड समस्या",
-       "upload-failure-msg": "[$2] से आपके अपलोड में एक समस्या थी:\n\n$1",
-       "upload-warning-subj": "अपलोड चेतावनी",
-       "upload-warning-msg": "आपके [$2] से अपलोड के साथ एक समस्या थी। आप इस समस्या को ठीक करने के लिए [[Special:Upload/stash/$1|अपलोड फ़ॉर्म]] पर लौट सकते हैं।",
        "upload-proto-error": "गलत प्रोटोकॉल",
        "upload-proto-error-text": "रिमोट अपलोड के लिये यू॰आर॰एल का नाम <code>http://</code> या <code>ftp://</code> से शुरू होना आवश्यक है।",
        "upload-file-error": "आतंरिक त्रुटि",
        "log-title-wildcard": "इस पाठ से शुरू होने वाले शीर्षक खोजें",
        "showhideselectedlogentries": "चयनित लॉग प्रविष्टियाँ दिखाएँ/छुपाएँ",
        "log-edit-tags": "चुने गए लॉग प्रविक्तियों एक सम्पादन टैग",
+       "checkbox-select": "चुनें: $1",
+       "checkbox-all": "सभी",
        "allpages": "सभी पृष्ठ",
        "nextpage": "अगला पृष्ठ ($1)",
        "prevpage": "पिछला पृष्ठ ($1)",
        "wlheader-showupdated": "पृष्ठ जो आपके द्वारा देखे जाने के बाद बदले गये हैं '''बोल्ड''' दिखेंगे।",
        "wlnote": "$3 को $4 बजे तक पिछले <strong>$2</strong> {{PLURAL:$2|घंटे|घंटों}} में {{PLURAL:$1|हुआ एक|हुए <strong>$1</strong>}} परिवर्तन निम्न {{PLURAL:$1|है|हैं}}।",
        "wlshowlast": "पिछले $1 घंटे $2 दिन  देखें",
-       "watchlistall2": "सभी",
        "wlshowtime": "अंतिम दिखाएँ:",
        "wlshowhideminor": "छोटा संपादन",
        "wlshowhidebots": "बॉट",
        "contributions": "{{GENDER:$1|सदस्य}} योगदान",
        "contributions-title": "$1 के योगदान",
        "mycontris": "योगदान",
+       "anoncontribs": "योगदान",
        "contribsub2": "{{GENDER:$3|$1}} ($2) के लिये",
        "contributions-userdoesnotexist": "उपयोगकर्ता खाता  \"$1\" पंजीकृत नहीं है।",
        "nocontribs": "इन कसौटियों से मिलनेवाले बदलाव मिले नहीं।",
        "javascripttest-pagetext-frameworks": "कृपया निम्न परीक्षण ढाँचों में से एक चुनें: $1",
        "javascripttest-pagetext-skins": "परीक्षण करने के लिए त्वचा चुनें:",
        "javascripttest-qunit-intro": "mediawiki.org पर [$1 परीक्षण के प्रलेखन] देखें।",
-       "tooltip-pt-userpage": "आपका प्रयोक्ता पृष्ठ",
+       "tooltip-pt-userpage": "{{GENDER:|आपका प्रयोक्ता}} पृष्ठ",
        "tooltip-pt-anonuserpage": "आप जिस आईपी से बदलाव कर रहें हैं उसका सदस्य पान",
-       "tooltip-pt-mytalk": "आपका वार्ता पृष्ठ",
+       "tooltip-pt-mytalk": "{{GENDER:|आपका}} वार्ता पृष्ठ",
        "tooltip-pt-anontalk": "इस आईपी एड्रेससे हुए बदलावों के बारे में वार्ता",
-       "tooltip-pt-preferences": "आपकी वरीयताएँ",
+       "tooltip-pt-preferences": "{{GENDER:|आपकी}} वरीयताएँ",
        "tooltip-pt-watchlist": "आपने ध्यान दिये हुए पन्नोंकी सूची",
        "tooltip-pt-mycontris": "आपके योगदानों की सूची",
        "tooltip-pt-login": "आपको सत्रारम्भ करने के लिए प्रोत्साहित किया जाता है; लेकिन यह अनिवार्य नहीं है",
        "tooltip-t-recentchangeslinked": "यहाँ जुड़े हुए सभी पन्नों में हुए हाल के बदलाव",
        "tooltip-feed-rss": "इस पृष्ठ की आरएसएस फ़ीड",
        "tooltip-feed-atom": "इस पृष्ठ की अणु फ़ीड",
-       "tooltip-t-contributions": "इस सदस्यके योगदानकी सूची देखियें",
+       "tooltip-t-contributions": "इस सदस्य के योगदान की सूची",
        "tooltip-t-emailuser": "इस सदस्य को इमेल भेजें",
        "tooltip-t-info": "इस पृष्ठ के बारे में अधिक जानकारी",
        "tooltip-t-upload": "फ़ाइल अपलोड करें",
        "confirmemail_text": "{{SITENAME}} पर उपलब्ध इ-मेल सुविधाओंका लाभ उठाने के लिये प्रमाणित एड्रेस होना जरूरी हैं।\nआपके एड्रेस पर एक कन्फर्मेशन कोड भेजने के लिये नीचे दिये बटन पर क्लिक करें।\nउस मेल में एक कोड से लदी एक कड़ी होगी;\nआपके इ-मेल के प्रमाणिकरण के लिये इसे अपने ब्राउज़रमें खोलें।",
        "confirmemail_pending": "आपको पहलेसे ही एक कन्फर्मेशन कोड भेजा गया हैं;\nअगर आपने हालमें खाता खोला हैं, तो नये कोड की माँग करने से पहले कुछ पल उसका इंतज़ार करें।",
        "confirmemail_send": "एक कन्फर्मेशन कोड भेजें",
-       "confirmemail_sent": "à¤\95नà¥\8dफरà¥\8dमà¥\87शन à¤\87-मà¥\87ल à¤­à¥\87à¤\9c à¤¦à¤¿या।",
+       "confirmemail_sent": "सतà¥\8dयापन à¤¹à¥\87तà¥\81 à¤\88मà¥\87ल à¤­à¥\87à¤\9cा à¤\97या।",
        "confirmemail_oncreate": "आपके इ-मेल पते पर एक कन्फर्मेशन कोड भेजा गया हैं।\nलॉग इन करने के लिये इसकी आवश्यकता नहीं हैं, पर इस विकिपर उपलब्ध इ-मेल आधारित सुविधाओंका इस्तेमाल करने के लिये यह देना जरूरी हैं।",
        "confirmemail_sendfailed": "{{SITENAME}} आपको पुष्टि डाक नहीं भेज पाई।\nकृपया अपना डाक पता जाँच लें, कहीं उसमें अवैध  अक्षर तो नहीं हैं?\n\nडाक प्रेषक ने कहा: $1",
        "confirmemail_invalid": "गलत कन्फर्मेशन कोड।\nकोड रद्द हो गया होने की संभावना हैं।",
index 59428e1..cdb3a9c 100644 (file)
                        "Fraxinus",
                        "Srdjan m",
                        "Teoo3",
-                       "Matma Rex"
+                       "Matma Rex",
+                       "Vrhnje"
                ]
        },
        "tog-underline": "Podcrtane poveznice",
        "tog-hideminor": "Sakrij manje izmjene u nedavnim promjenama",
        "tog-hidepatrolled": "Sakrij pregledane izmjene u nedavnim promjenama",
        "tog-newpageshidepatrolled": "Sakrij pregledane stranice iz popisa novih stranica",
+       "tog-hidecategorization": "Sakrij kategorizaciju stranica",
        "tog-extendwatchlist": "Proširi popis praćenih stranica tako da prikaže sve promjene, ne samo najnovije",
        "tog-usenewrc": "Grupne promjene po stranici u popisu nedavnih izmjena i popisu praćenih stranica (zahtijeva JavaScript)",
        "tog-numberheadings": "Automatski označi naslove brojevima",
        "tog-watchlisthidebots": "Sakrij uređivanja botova s popisa praćenja",
        "tog-watchlisthideminor": "Sakrij manje promjene s popisa praćenja",
        "tog-watchlisthideliu": "Sakrij uređivanja prijavljenih s popisa praćenja",
+       "tog-watchlistreloadautomatically": "Automatski ponovno pokreni nadzornu listu kad god dođe do promjene filtra (potreban JavaScript)",
        "tog-watchlisthideanons": "Sakrij uređivanja neprijavljenih s popisa praćenja",
        "tog-watchlisthidepatrolled": "Sakrij pregledane izmjene u popisu praćenja",
+       "tog-watchlisthidecategorization": "Sakrij kategorizaciju stranica",
        "tog-ccmeonemails": "Pošalji mi kopiju e-maila kojeg pošaljem drugim suradnicima",
        "tog-diffonly": "Ne prikazuj sadržaj stranice prilikom usporedbe inačica",
        "tog-showhiddencats": "Prikaži skrivene kategorije",
        "october-date": "$1. listopada",
        "november-date": "$1. studenoga",
        "december-date": "$1. prosinca",
+       "period-am": "AM",
+       "period-pm": "PM",
        "pagecategories": "{{PLURAL:$1|Kategorija|Kategorije|Kategorija}}",
        "category_header": "Članci u kategoriji \"$1\"",
        "subcategories": "Potkategorije",
        "pool-timeout": "Istek vremena (''timeout'') čekajući zaključavanje",
        "pool-queuefull": "Red čekanja je pun",
        "pool-errorunknown": "Nepoznata pogrješka",
+       "poolcounter-usage-error": "Greška korištenja: $1",
        "aboutsite": "O projektu {{SITENAME}}",
        "aboutpage": "Project:O_projektu_{{SITENAME}}",
        "copyright": "Sadržaji se koriste u skladu s $1.",
        "delete-hook-aborted": "Brisanje prekinuto softverskim priključkom (hook).\nNema obrazloženja ili poruke o pogrješci.",
        "badtitle": "Loš naslov",
        "badtitletext": "Navedeni naslov stranice nepravilan ili loše formirana interwiki poveznica.",
+       "title-invalid-empty": "Naslov tražene stranice je prazan ili sadrži samo naziv prostora imena.",
+       "title-invalid-utf8": "Traženi naziv stranice koristi nevažeću UTF-8 sekvencu.",
+       "title-invalid-interwiki": "Traženi naziv stranice sadrži interwiki poveznicu koja se ne može koristiti u nazivima.",
+       "title-invalid-talk-namespace": "Traženi naziv stranice odnosi se na stranicu rasprave koja ne može postojati.",
+       "title-invalid-characters": "Traženi naziv stranice sadrži nevažeće znakove: \"$1\"",
        "perfcached": "Sljedeći podaci su iz međuspremnika i možda nisu najsvježiji. Međuspremnik sadrži $1 {{PLURAL:$1|rezultat|rezultata}} pretraživanja.",
        "perfcachedts": "Sljedeći podaci su iz međuspremnika i posljednji puta su ažurirani u $1. Međuspremnik sadrži $4 {{PLURAL:$4|rezultat|rezultata}} pretraživanja.\n\nViše o ovoj [[Wikipedija:Posebne stranice|posebnoj stranici]] na [[Razgovor Wikipedija:Special:{{PAGENAME}}]].",
        "querypage-no-updates": "Osvježavanje ove stranice je trenutačno onemogućeno. Nove promjene neće biti vidljive.",
        "virus-scanfailed": "skeniranje neuspješno (kod $1)",
        "virus-unknownscanner": "nepoznati antivirus:",
        "logouttext": "'''Odjavili ste se.'''\n\nNeke se stranice mogu prikazivati kao da ste još uvijek prijavljeni, sve dok ne očistite međuspremnik svog preglednika.",
+       "cannotlogoutnow-title": "Odjava trenutno nije moguća.",
        "welcomeuser": "Dobrodošli, $1!",
        "welcomecreation-msg": "Vaš je suradnički račun otvoren.\nNe zaboravite prilagoditi Vaše [[Special:Preferences|{{SITENAME}} postavke]].",
        "yourname": "Suradničko ime",
        "remembermypassword": "Zapamti moju lozinku na ovom računalu (najduže $1 {{PLURAL:$1|dan|dana}})",
        "userlogin-remembermypassword": "Zapamti me",
        "userlogin-signwithsecure": "Rabi sigurnu vezu",
+       "cannotloginnow-title": "Prijava trenutno nije moguća.",
        "yourdomainname": "Vaša domena",
        "password-change-forbidden": "Ne možete promjeniti zaporku na ovom projektu.",
        "externaldberror": "Došlo je do pogreške s vanjskom autorizacijom ili Vam nije dopušteno osvježavanje vanjskog suradničkog računa.",
        "createacct-reason": "Razlog",
        "createacct-reason-ph": "Zašto stvarate drugi račun",
        "createacct-submit": "Stvorite svoj suradnički račun",
-       "createacct-another-submit": "Stvori još jedan račun",
+       "createacct-another-submit": "Otvori račun",
        "createacct-benefit-heading": "{{SITENAME}} su stvorili ljudi poput Vas.",
        "createacct-benefit-body1": "{{PLURAL:$1|uređivanje|uređivanja}}",
        "createacct-benefit-body2": "{{PLURAL:$1|stranica|stranice|stranica}}",
        "resetpass_submit": "Postavite lozinku i prijavite se",
        "changepassword-success": "Zaporka je uspješno postavljena!",
        "changepassword-throttled": "Nedavno ste se previše puta pokušali prijaviti.\nMolimo Vas pričekajte $1 prije nego što pokušate ponovno.",
+       "botpasswords-label-create": "Stvori",
+       "botpasswords-label-update": "Ažuriraj",
+       "botpasswords-label-cancel": "Odustani",
+       "botpasswords-label-resetpassword": "Reset lozinke",
+       "botpasswords-insert-failed": "Nije moguće dodavanje imena bota \"$1\". Možda je već dodano?",
        "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",
        "passwordreset-emailsentemail": "E-mail podsjetnik zaporke je poslan.",
        "passwordreset-emailsent-capture": "Poslan Vam je podsjetnik kao e-pošta (tekst je prikazan dolje).",
        "passwordreset-emailerror-capture": "Napravljena je e-poruka za ponovno postavljanje zaporke (prikazana ispod), ali njeno slanje suradniku nije uspjelo: $1",
-       "changeemail": "Promijeni e-mail adresu",
+       "changeemail": "Promijeni ili izbriši e-mail adresu",
        "changeemail-header": "Promijeni adresu e-pošte računa",
        "changeemail-no-info": "Morate biti prijavljeni da biste izravno pristupili ovoj stranici.",
        "changeemail-oldemail": "Trenutačna adresa e-pošte:",
        "sig_tip": "Vaš potpis s datumom",
        "hr_tip": "Vodoravna crta (koristiti rijetko)",
        "summary": "Sažetak:",
-       "subject": "Predmet:",
+       "subject": "Tema:",
        "minoredit": "Ovo je manja promjena",
        "watchthis": "Prati ovu stranicu",
        "savearticle": "Sačuvaj stranicu",
        "right-override-export-depth": "Izvezi stranice uključujući i povezane stranice do dubine od 5",
        "right-sendemail": "Slanje e-pošte drugim suradnicima",
        "right-passwordreset": "Vidi poruku e-pošte o ponovnom postavljanju lozinke",
+       "grant-group-email": "Pošalji e-mail",
+       "grant-blockusers": "Blokiraj i odblokiraj korisnike",
+       "grant-createaccount": "Otvori račune",
+       "grant-createeditmovepage": "Stvori, uredi i premjesti stranice",
+       "grant-editmyoptions": "Izmjeni korisničke postavke",
        "grant-highvolume": "Uređivanja velikog opsega",
+       "grant-basic": "Osnovna prava",
+       "grant-viewdeleted": "Prikaz izbrisanih datoteka i stranica",
+       "grant-viewmywatchlist": "Pregled popisa praćenih stranica",
        "newuserlogpage": "Evidencija novih suradnika",
        "newuserlogpagetext": "Ispod je popis nedavno otvorenih suradničkih imena.",
        "rightslog": "Evidencija suradničkih prava",
        "rcshowhidemine": "$1 moje promjene",
        "rcshowhidemine-show": "prikaži",
        "rcshowhidemine-hide": "sakrij",
+       "rcshowhidecategorization": "$1 kategorizaciju stranica",
        "rcshowhidecategorization-show": "Prikaži",
+       "rcshowhidecategorization-hide": "Sakrij",
        "rclinks": "Prikaži posljednjih $1 promjena {{PLURAL:$2|prethodni dan|u posljednja $2 dana|u posljednjih $2 dana}}<br />$3",
        "diff": "razl",
        "hist": "pov",
        "newpageletter": "N",
        "boteditletter": "b",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|suradnik|suradnika|suradnika}} prati ovu stranicu]",
-       "rc_categories": "Ograniči na kategorije (odvojene znakom  \"|\")",
-       "rc_categories_any": "Sve",
+       "rc_categories": "Ograniči na kategorije (odvoji sa \"|\")",
+       "rc_categories_any": "Bilo koji od odabranih",
        "rc-change-size-new": "$1 {{PLURAL:$1|bajt|bajta|bajtova}} poslije uređivanja",
        "newsectionsummary": "/* $1 */ novi odlomak",
        "rc-enhanced-expand": "Pokaži detalje (potreban JavaScript)",
        "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'''.",
        "recentchangeslinked-page": "Naslov stranice:",
        "recentchangeslinked-to": "Pokaži promjene na stranicama s poveznicom na ovu stranicu",
+       "recentchanges-page-added-to-category": "[[:$1]] dodana u kategoriju",
+       "recentchanges-page-removed-from-category": "[[:$1]] uklonjeno iz kategorije",
        "upload": "Postavi datoteku",
        "uploadbtn": "Postavi datoteku",
        "reuploaddesc": "Vratite se u obrazac za postavljanje.",
        "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.",
        "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-success-subj": "Postavljanje uspješno.",
-       "upload-success-msg": "Vaša datoteka iz [$2] je uspješno postavljena. Dostupna je ovdje: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Greška pri postavljanju",
-       "upload-failure-msg": "Došlo je do problema s Vašim postavljanjem datoteke [$2]:\n\n$1",
-       "upload-warning-subj": "Upozorenje kod postavljanja",
-       "upload-warning-msg": "Došlo je do problema s Vašim postavljanjem datoteke iz [$2]. Možete se vratiti u [[Special:Upload/stash/$1|obrazac za postavljanje]] i ispraviti problem.",
        "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 pogrješka",
        "upload-dialog-button-save": "Spremi",
        "upload-dialog-button-upload": "Postavi",
        "upload-form-label-select-file": "Odaberi datoteku",
+       "upload-form-label-infoform-title": "Detalji",
+       "upload-form-label-infoform-name": "Ime",
+       "upload-form-label-infoform-description": "Opis",
+       "upload-form-label-usage-title": "Korištenje",
+       "upload-form-label-usage-filename": "Ime datoteke",
        "foreign-structured-upload-form-label-own-work": "Ovo je moje djelo",
+       "foreign-structured-upload-form-label-infoform-categories": "Kategorije",
+       "foreign-structured-upload-form-label-infoform-date": "Datum",
        "foreign-structured-upload-form-label-not-own-work-local-default": "Možete pokušati [[Special:Upload|postaviti datoteku na projektu {{SITENAME}}]], pod uvjetom da može biti tamo postavljena, sukladno pravilima projekta.",
        "foreign-structured-upload-form-label-own-work-message-shared": "Potvrđujem da posjedujem autorska prava ove datoteke i slažem se da je nepozivo postavljam na Zajednički poslužitelj pod licencijom  [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0], i pristajem na [https://wikimediafoundation.org/wiki/Terms_of_Use Uvjete uporabe].",
        "foreign-structured-upload-form-label-not-own-work-message-shared": "Ako ne posjedujete autorska prava za ovu datoteku, ili je želite objaviti pod drugom licencijom, razmislite o uporabi [https://commons.wikimedia.org/wiki/Special:UploadWizard Čarobnjaka za postavljanje] na Zajedničkom poslužitelju.",
        "foreign-structured-upload-form-label-not-own-work-local-shared": "Možete pokušati [[Special:Upload|postaviti datoteku na projektu {{SITENAME}}]], pod uvjetom da je dopušteno postavljanje ove datoteke, sukladno pravilima projekta.",
+       "foreign-structured-upload-form-3-label-yes": "Da",
        "backend-fail-stream": "Ne mogu prikazati datoteku $1.",
        "backend-fail-backup": "Izrada sigurnosne kopije datoteke \"$1\" nije uspjela.",
        "backend-fail-notexists": "Datoteka $1 ne postoji.",
        "protectedpagesempty": "Nema zaštićenih stranica koje ispunjavaju uvjete koje ste postavili.",
        "protectedpages-page": "Stranica",
        "protectedpages-expiry": "Istječe",
+       "protectedpages-performer": "Zaštita suradnika",
        "protectedpages-params": "Stupanj zaštite",
        "protectedpages-reason": "Razlog",
+       "protectedpages-submit": "Prikaži stranice",
+       "protectedpages-unknown-timestamp": "Nepoznato",
+       "protectedpages-unknown-performer": "Nepoznati korisnik",
        "protectedtitles": "Zaštićeni naslovi",
        "protectedtitlesempty": "Nijedan naslov nije trenutačno zaštićen s tim parametrima.",
+       "protectedtitles-submit": "Prikaži nazive",
        "listusers": "Popis suradnika",
        "listusers-editsonly": "Prikaži samo suradnike s uređivanjem",
        "listusers-creationsort": "Razvrstaj po datumu stvaranja",
        "pager-older-n": "{{PLURAL:$1|starija $1|starije $1|starijih $1}}",
        "suppress": "Nadzor",
        "querypage-disabled": "Ova posebna stranica onemogućena je jer bi usporila funkcioniranje projekta.",
+       "apihelp": "Pomoć za API",
        "booksources": "Pretraživanje po ISBN-u",
        "booksources-search-legend": "Traženje izvora za knjigu",
        "booksources-search": "Traži",
        "logempty": "Nema pronađenih stavki.",
        "log-title-wildcard": "Traži stranice koje počinju s navedenim izrazom",
        "showhideselectedlogentries": "Otkrij/sakrij odabrane evidencije",
+       "checkbox-select": "Odaberite: $1",
+       "checkbox-all": "Sve",
+       "checkbox-none": "Nijedan",
        "allpages": "Sve stranice",
        "nextpage": "Sljedeća stranica ($1)",
        "prevpage": "Prethodna stranica ($1)",
        "activeusers-hidebots": "Sakrij botove",
        "activeusers-hidesysops": "Sakrij administratore",
        "activeusers-noresult": "Niti jedan suradnik nije nađen.",
+       "activeusers-submit": "Prikaz aktivnih sudionika",
        "listgrouprights": "Prava suradničkih skupina",
        "listgrouprights-summary": "Ovo je popis suradničkih skupina određenih na ovoj wiki, s njihovim pripadajućim pravima.\nDodatne informacije o pojedinim pravim se mogu pronaći [[{{MediaWiki:Listgrouprights-helppage}}|ovdje]].",
        "listgrouprights-key": "* <span class=\"listgrouprights-granted\">Dodijeljeno pravo</span>\n* <span class=\"listgrouprights-revoked\">Ukinuto pravo</span>",
        "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",
+       "listgrouprights-namespaceprotection-header": "Ograničenja prostora imena",
        "listgrouprights-namespaceprotection-namespace": "Imenski prostor",
        "trackingcategories-nodesc": "Opis nije dostupan.",
        "mailnologin": "Nema adrese pošiljatelja",
        "wlheader-showupdated": "Stranice koje su promijenjene od Vašeg posljednjeg posjeta prikazane su '''podebljano'''.",
        "wlnote": "Ovdje {{PLURAL:$1|je posljednja $1 promjena|su posljednje $1 promjene|je posljednjih $1 promjena}} u {{PLURAL:$2|posljednjem <strong>$2</strong> satu|posljednja '''$2''' sata|posljednjih <strong>$2</strong> sati}}, od $3, $4.",
        "wlshowlast": "Prikaži posljednjih $1 sati $2 dana",
-       "watchlistall2": "sve",
        "watchlist-hide": "Sakrij",
        "watchlist-submit": "Prikaži",
        "wlshowtime": "Prikaži posljednjih:",
        "rollback-success": "uklonjeno uređivanje {{GENDER:$1|suradnika|suradnice}} $1\nvraćeno na posljednju inačicu {{GENDER:$2|suradnika|suradnice}} $2.",
        "sessionfailure-title": "Prekid sesije",
        "sessionfailure": "Uočili smo problem s Vašom prijavom. Zadnja naredba nije izvršena kako bi se izbjegla zloupotreba. Molimo Vas da se u pregledniku vratite natrag na prethodnu stranicu, ponovno je učitate i zatim pokušate opet.",
+       "changecontentmodel-legend": "Promjeni model sadržaja",
+       "changecontentmodel-title-label": "Naziv stranice",
+       "changecontentmodel-model-label": "Novi model sadržaja",
+       "changecontentmodel-reason-label": "Razlog:",
+       "changecontentmodel-success-title": "Sadržaj modela je promijenjen",
        "protectlogpage": "Evidencija zaštićivanja",
        "protectlogtext": "Ispod je evidencija zaštićivanja i uklanjanja zaštite pojedinih stranica.\nPogledajte [[Special:ProtectedPages|zaštićene stranice]] za popis trenutačno zaštićenih stranica.",
        "protectedarticle": "članak \"[[$1]]\" je zaštićen",
        "movenotallowedfile": "Nemate ovlasti za premještanje datoteka.",
        "cant-move-user-page": "Nemate dopuštenja za premještanje root suradničkih stranica.",
        "cant-move-to-user-page": "Nemate dopuštenje za premještanje stranice na suradničku stranicu (osim kao podstranicu)",
-       "newtitle": "Na novi naslov",
+       "newtitle": "Novi naziv:",
        "move-watch": "Prati ovu stranicu",
        "movepagebtn": "Premjesti stranicu",
        "pagemovedsub": "Premještanje uspjelo",
        "allmessages-prefix": "Filtriraj prema prefiksu:",
        "allmessages-language": "Jezik:",
        "allmessages-filter-submit": "Idi",
+       "allmessages-filter-translate": "Prevedi",
        "thumbnail-more": "Povećaj",
        "filemissing": "Nedostaje datoteka",
        "thumbnail_error": "Pogreška pri izradbi sličice: $1",
        "javascripttest-pagetext-frameworks": "Molimo izaberite jednu od sljedećih testnih okolina: $1",
        "javascripttest-pagetext-skins": "Izaberite temu (''skin'') za testiranje:",
        "javascripttest-qunit-intro": "Pogledajte [$1 testnu dokumentaciju] na mediawiki.org.",
-       "tooltip-pt-userpage": "Moja suradnička stranica",
+       "tooltip-pt-userpage": "Stranica suradnika {{GENDER:|Your user}}",
        "tooltip-pt-anonuserpage": "Suradnička stranica za IP adresu pod kojom uređujete",
        "tooltip-pt-mytalk": "Moja stranica za razgovor",
        "tooltip-pt-anontalk": "Razgovor o suradnicima s ove IP adrese",
-       "tooltip-pt-preferences": "Moje postavke",
+       "tooltip-pt-preferences": "Vaše postavke",
        "tooltip-pt-watchlist": "Popis stranica koje pratite.",
        "tooltip-pt-mycontris": "Popis mojih doprinosa",
        "tooltip-pt-login": "Predlažemo Vam da se prijavite, ali nije obvezno.",
        "tooltip-t-recentchangeslinked": "Nedavne promjene na stranicama na koje vode ovdašnje poveznice",
        "tooltip-feed-rss": "RSS feed za ovu stranicu",
        "tooltip-feed-atom": "Atom feed za ovu stranicu",
-       "tooltip-t-contributions": "Pogledaj popis suradnikovih doprinosa",
+       "tooltip-t-contributions": "Pogledaj popis doprinosa suradnika  {{GENDER:$1|this user}}",
        "tooltip-t-emailuser": "Pošalji suradniku e-mail",
        "tooltip-t-info": "Više informacija o ovoj stranici",
        "tooltip-t-upload": "Postavi slike i druge medije",
        "version-entrypoints-header-entrypoint": "Početna adresa",
        "version-entrypoints-header-url": "URL",
        "version-libraries": "Instalirane biblioteke",
+       "version-libraries-library": "Knjižnica",
        "version-libraries-version": "Inačica",
        "redirect-submit": "Idi",
        "redirect-value": "Vrijednost:",
        "fileduplicatesearch-result-n": "Datoteka \"$1\" ima {{PLURAL:$2|1 identičnu kopiju|$2 identične kopije}}.",
        "fileduplicatesearch-noresults": "Nije pronađena datoteka s imenom \"$1\".",
        "specialpages": "Posebne stranice",
+       "specialpages-note-top": "Legenda",
        "specialpages-note": "* Normalne posebne stranice\n* <span class=\"mw-specialpagerestricted\">Posebne stranice s ograničenim pristupom.</span>",
        "specialpages-group-maintenance": "Izvještaji za održavanje",
        "specialpages-group-other": "Ostale posebne stranice",
        "tags-deactivate-reason": "Razlog:",
        "tags-deactivate-not-allowed": "Nije moguće isključiti oznaku \"$1\".",
        "tags-deactivate-submit": "Isključi",
+       "tags-edit-title": "Uredi oznake",
+       "tags-edit-manage-link": "Upravljaj oznakama",
+       "tags-edit-existing-tags": "Postojeće oznake:",
+       "tags-edit-existing-tags-none": "\"Nema\"",
+       "tags-edit-new-tags": "Nove oznake:",
+       "tags-edit-add": "Dodaj ove oznake:",
+       "tags-edit-remove": "Ukloni ove oznake:",
+       "tags-edit-chosen-placeholder": "Odaberite neke oznake",
+       "tags-edit-chosen-no-results": "Nisu pronađene odgovarajuće oznake",
+       "tags-edit-reason": "Razlog:",
        "comparepages": "Usporedite stranice",
        "compare-page1": "Stranica 1",
        "compare-page2": "Stranica 2",
        "expand_templates_remove_nowiki": "Ukloni <nowiki> tagove u rezultatima.",
        "expand_templates_generate_xml": "Prikaži XML stablo",
        "expand_templates_preview": "Vidi kako će izgledati",
+       "pagelang-name": "Stranica",
+       "pagelang-language": "Jezik",
+       "pagelang-use-default": "Koristi zadani jezik",
        "pagelang-select-lang": "Odaberi jezik",
+       "pagelang-submit": "Pošalji",
+       "right-pagelang": "Promijeni jezik stranice",
        "mediastatistics": "Statistika datoteka",
        "mediastatistics-summary": "Slijede statistike postavljenih datoteka koje pokazuju zadnju inačicu datoteke. Starije ili izbrisane inačice nisu prikazane.",
+       "mediastatistics-header-drawing": "Crteži (vektorske slike)",
+       "mediastatistics-header-audio": "Audio",
+       "mediastatistics-header-video": "Videozapisi",
+       "mediastatistics-header-office": "Ured",
+       "mediastatistics-header-text": "Tekst",
+       "mediastatistics-header-total": "Sve datoteke",
        "headline-anchor-title": "Poveznica na ovaj odlomak",
        "special-characters-group-latin": "latinica",
        "special-characters-group-latinextended": "proširena latinica",
index 0eeb6d5..cd1d1dc 100644 (file)
@@ -77,6 +77,7 @@
        "tog-watchlisthidebots": "Robotok szerkesztéseinek elrejtése",
        "tog-watchlisthideminor": "Apró változtatások elrejtése",
        "tog-watchlisthideliu": "Bejelentkezett szerkesztők módosításainak elrejtése a figyelőlistáról",
+       "tog-watchlistreloadautomatically": "A figyelőlista automatikus újratöltése bármelyik szűrő megváltoztatása esetén (JavaScript szükséges)",
        "tog-watchlisthideanons": "Névtelen szerkesztések elrejtése",
        "tog-watchlisthidepatrolled": "Az ellenőrzött szerkesztések elrejtése",
        "tog-watchlisthidecategorization": "Lapok kategorizálásának elrejtése",
        "october-date": "Október $1",
        "november-date": "November $1",
        "december-date": "December $1",
+       "period-am": "de.",
+       "period-pm": "du.",
        "pagecategories": "{{PLURAL:$1|Kategória|Kategóriák}}",
        "category_header": "A(z) „$1” kategóriába tartozó lapok",
        "subcategories": "Alkategóriák",
        "viewsource": "Lapforrás",
        "viewsource-title": "$1 forrásának megtekintése",
        "actionthrottled": "Művelet megszakítva",
-       "actionthrottledtext": "A spamek elleni védekezés miatt nem végezheted el a műveletet túl sokszor egy adott időn belül, és te átlépted a megengedett határt. Próbálkozz újra néhány perc múlva.",
+       "actionthrottledtext": "A visszaélések elleni védekezés miatt nem végezheted el a műveletet túl sokszor egy adott időn belül, és te átlépted a megengedett határt. Próbálkozz újra néhány perc múlva.",
        "protectedpagetext": "Ez egy védett lap, így nem végezhető rajta szerkesztés és más tevékenység.",
        "viewsourcetext": "Megtekintheted és másolhatod a lap forrását.",
        "viewyourtext": "Megtekintheted és kimásolhatod a <strong>saját szerkesztéseidet</strong> az alábbi lapra.",
        "virus-scanfailed": "az ellenőrzés nem sikerült (hibakód: $1)",
        "virus-unknownscanner": "ismeretlen antivírus:",
        "logouttext": "'''Sikeresen kijelentkeztél.'''\n\nLehetséges, hogy néhány oldalon továbbra is azt látod, be vagy jelentkezve, mindaddig, amíg nem üríted a böngésződ gyorsítótárát.",
+       "cannotlogoutnow-title": "Nem lehet most kijelentkezni",
        "welcomeuser": "Üdvözlünk, $1!",
        "welcomecreation-msg": "A felhasználói fiókod elkészült.\nNe felejtsd el módosítani a [[Special:Preferences|{{SITENAME}} beállításaidat]].",
        "yourname": "Szerkesztőneved:",
        "remembermypassword": "Emlékezzen rám ezen a számítógépen (legfeljebb $1 napig)",
        "userlogin-remembermypassword": "Maradjak bejelentkezve",
        "userlogin-signwithsecure": "Biztonságos kapcsolat használata",
+       "cannotloginnow-title": "Nem lehet most bejelentkezni",
        "yourdomainname": "A domainneved:",
        "password-change-forbidden": "Nem módosíthatod a jelszót ezen a wikin.",
        "externaldberror": "Hiba történt a külső adatbázis hitelesítése közben, vagy nem vagy jogosult a külső fiókod frissítésére.",
        "createacct-benefit-body2": "{{PLURAL:$1|lap|lap}}",
        "createacct-benefit-body3": "aktív {{PLURAL:$1|szerkesztő|szerkesztő}}",
        "badretype": "A megadott jelszavak nem egyeznek.",
+       "usernameinprogress": "Egy fiók létrehozása ezzel a névvel már folyamatban van.\nKérlek, várj.",
        "userexists": "A megadott felhasználónév már foglalt.\nKérlek, válassz másikat!",
        "loginerror": "Hiba történt a bejelentkezés során",
        "createacct-error": "Fióklétrehozási hiba",
        "wrongpasswordempty": "Nem adtál meg jelszót. Próbáld meg újra.",
        "passwordtooshort": "A jelszónak legalább $1 karakterből kell állnia.",
        "passwordtoolong": "A jelszó nem lehet hosszabb $1 karakternél.",
+       "passwordtoopopular": "A gyakori jelszavak nem használhatók. Válassz egy egyedibb jelszót.",
        "password-name-match": "A jelszavadnak különböznie kell a szerkesztőnevedtől.",
        "password-login-forbidden": "Ezen felhasználónév és jelszó használata tiltott.",
        "mailmypassword": "Jelszó alaphelyzetbe állítása",
        "resetpass_submit": "Add meg a jelszót és jelentkezz be",
        "changepassword-success": "A jelszavad megváltoztatása sikeresen befejeződött!",
        "changepassword-throttled": "Túl sok hibás bejelentkezés.\nVárj $1, mielőtt újra próbálkozol.",
+       "botpasswords": "Botjelszavak",
+       "botpasswords-summary": "A <em>botjelszavak</em> lehetővé teszik egy felhasználói fiókhoz való hozzáférést az API-n keresztül a fiók fő bejelentkezési adatainak megadása nélkül. A botjelszóval történő bejelentkezéskor a felhasználói jogok korlátozottak lehetnek.\n\nHa nem tudod, hogy miért szeretnél ilyet, valószínűleg nem kell csinálnod. Soha senkinek nem szabadna megkérnie téged, hogy generálj neki egyet, hogy odaadhasd neki.",
+       "botpasswords-disabled": "A botjelszavak le vannak tiltva.",
+       "botpasswords-no-central-id": "A botjelszavak használatához egy globális fiókba kell bejelentkezned.",
+       "botpasswords-existing": "Létező botjelszavak",
+       "botpasswords-createnew": "Új botjelszó létrehozása",
+       "botpasswords-editexisting": "Létező botjelszó szerkesztése",
+       "botpasswords-label-appid": "A bot neve:",
+       "botpasswords-label-create": "Létrehozás",
+       "botpasswords-label-update": "Frissítés",
+       "botpasswords-label-cancel": "Mégsem",
        "botpasswords-label-delete": "Törlés",
+       "botpasswords-label-resetpassword": "Új jelszó kérése",
+       "botpasswords-label-grants": "Elérhető jogosultságok:",
+       "botpasswords-label-restrictions": "Használati korlátozások:",
+       "botpasswords-label-grants-column": "Megadva",
+       "botpasswords-bad-appid": "A(z) „$1” botnév érvénytelen.",
+       "botpasswords-insert-failed": "A(z) „$1” botnév hozzáadása sikertelen. Nem lehet, hogy már hozzá lett adva?",
+       "botpasswords-created-title": "Bot jelszó létrehozva",
+       "botpasswords-updated-title": "Bot jelszó frissítve",
+       "botpasswords-deleted-title": "Bot jelszó törölve",
        "resetpass_forbidden": "A jelszavak nem változtathatók meg",
        "resetpass-no-info": "Be kell jelentkezned, hogy közvetlenül elérd ezt a lapot.",
        "resetpass-submit-loggedin": "Jelszó megváltoztatása",
        "uploaded-script-svg": "A feltöltött SVG fájlodban szkriptelemet találtunk: \"$1\".",
        "uploaded-hostile-svg": "Nem biztonságos CSS kódot találtunk a feltöltött SVG fájlod stíluselemei között.",
        "uploaded-event-handler-on-svg": "Az alábbi eseménykezelő-attribútum beállítása nem megengedett az SVG fájlokban: <code>$1=$2</code>.",
-       "uploaded-href-attribute-svg": "Az alábbi nem lokális célra (pl. http://, javascript, stb.) mutató href attribútum nem megengedett az SVG fájlokban: <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploaded-href-unsafe-target-svg": "Nem biztonságos célra mutató href-et találtam a feltöltött SVG fájlban: <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploaded-animate-svg": "A feltöltött SVG fájlban \"animate\" taget találtam, ami az alábbi \"from\" attribútumával megváltoztathat egy href-et: <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploaded-setting-handler-svg": "Az SVG kódok, amelyek a \"handler\" attribútumot távolra/adatra/szkriptre állítják, le vannak tiltva. A feltöltött SVG fájlban a következőt találtam: <code>$1=\"$2\"</code>.",
        "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.",
        "filename-bad-prefix": "Annak a fájlnak a neve, amelyet fel akarsz tölteni '''„$1”''' karakterekkel kezdődik. Ilyeneket általában a digitális kamerák adnak a fájloknak, automatikusan, azonban ezek nem írják le annak tartalmát. Válassz egy leíró nevet!",
        "filename-prefix-blacklist": " #<!-- ezt a sort hagyd így --> <pre>\n#A szintaktika a következő:\n#   * Minden a „#” karaktertől a sor végéig megjegyzésnek számít\n#   * Minden nemüres sor egy, a digitális fényképezőképek által fájlok neveként használt előtag\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # néhány mobiltelefon\nIMG # általános\nJD # Jenoptik\nMGP # Pentax\nPICT # ált.\n #</pre> <!-- ezt a sort hagyd így -->",
-       "upload-success-subj": "A feltöltés sikerült",
-       "upload-success-msg": "A feltöltés (innen $2) sikeres volt. A feltöltésed itt érhető el: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Feltöltési hiba",
-       "upload-failure-msg": "Probléma történt a feltöltéseddel (innen: $2):\n\n$1",
-       "upload-warning-subj": "Feltöltési figyelmeztetés",
-       "upload-warning-msg": "Hiba történt a feltöltéseddel innen: [$2]. Visszatérhetsz a [[Special:Upload/stash/$1|feltöltéshez]], hogy orvosold a hibát.",
        "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",
        "wlheader-showupdated": "Azok a lapok, amelyek megváltoztak, mióta utoljára megnézted őket, '''vastagítva''' láthatók.",
        "wlnote": "Alább {{PLURAL:$1|az utolsó változás|az utolsó <strong>$1</strong> változás}} látható az elmúlt {{PLURAL:$2|órában|<strong>$2</strong> órában}}, $3 $4-kor.",
        "wlshowlast": "Az elmúlt $1 órában | $2 napon történt változtatások legyenek láthatóak",
-       "watchlistall2": "bármikor",
        "watchlist-hide": "Elrejtés",
        "watchlist-submit": "Megjelenítés",
        "wlshowtime": "Időszak:",
        "expand_templates_preview": "Előnézet",
        "expand_templates_preview_fail_html": "<em>Mivel a(z) {{SITENAME}} engedélyezi a nyers HTML használatát, és a kapcsolati adatok elvesztek, az előnézet el van rejtve a JavaScript támadások megelőzése érdekében.</em>\n\n<strong>Ha ez egy ligitim előnézet kérés, akkor próbáld meg újra!</strong>\nHa nem működik, akkor próbálj meg [[Special:UserLogout|kijelentkezni]] és újra bejelentkezni!",
        "expand_templates_preview_fail_html_anon": "<em>Mivel a(z) {{SITENAME}} engedélyezi a nyers HTML használatát, és a kapcsolati adatok elvesztek, az előnézet el van rejtve a JavaScript támadások megelőzése érdekében.</em>\n\n<strong>Ha ez egy legitim előnézet kérés, akkor próbálj meg [[Special:UserLogin|bejelentkezni]] és újra próbálni!</strong>",
-       "pagelanguage": "Oldalnyelv-választó",
+       "pagelanguage": "Oldal nyelvének megváltoztatása",
        "pagelang-name": "Oldal",
        "pagelang-language": "Nyelv",
        "pagelang-use-default": "Alapértelmezett nyelv használata",
        "action-pagelang": "oldal nyelvének módosítása",
        "log-name-pagelang": "Nyelvváltoztatások naplója",
        "log-description-pagelang": "Ebben a naplóban a lap nyelvének változásait követheted nyomon.",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|megváltoztatta}} a(z) $3 lap nyelvét $4 nyelvről $5 nyelvre.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|megváltoztatta}} a(z) $3 lap nyelvét $4 nyelvről $5 nyelvre",
        "default-skin-not-found": "Upsz! A wiki alapértelmezett felülete, amely a <code dir=\"ltr\">$wgDefaultSkin</code> szerint <code>$1</code>, nem áll rendelkezésre.\n\nA telepítés az alábbi {{PLURAL:$4|felületet|felületeket}} tartalmazza.\nTovábbi információkat a felület konfigurálásáról és az alapértelmezett felület beállításáról a [https://www.mediawiki.org/wiki/Manual:Skin_configuration Kézikönyv: Felület konfigurálása] helyen találsz.\n\n$2\n\n; Ha frissen telepítetted a MediaWikit:\n: Valószínűleg a gitről telepítetted, vagy közvetlenül forráskódból más módon. Ebben az esetben ez várható. Próbálj telepíteni felületeket a [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org felületkönyvtárából], az alábbi módokon:\n:* Töltsd le a [https://www.mediawiki.org/wiki/Download tarball telepítőt], amely számos felületet és kiegészítést tartalmaz. Simán másold át belőle a <code>skins/</code> könyvtárat.\n:* Tölts le az egyedi felülettelepítő-készleteket a [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org] helyről.\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Felület letöltése Git segítségével].\n: Ez nem ütközik a git repository-val, ha MediaWiki fejlesztő vagy.\n\n; Ha most frissítetted a MediaWikit:\n: A MediaWiki 1.24 és újabb verziók már nem engedélyezik automatikusan a telepített felületeket (lásd [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Kézikönyv: Felület automatikus felderítése]). Illeszd be az alábbi {{PLURAL:$5|sort|sorokat}} a <code>LocalSettings.php</code> fájlba, ha engedélyezni akarod {{PLURAL:$5|a|az összes}} telepített felületet:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Ha most módosítottad a <code>LocalSettings.php</code> fájlt:\n: Ellenőrizd a felületneveket, mert lehet, hogy elírtad!",
        "default-skin-not-found-no-skins": "Upsz! A wiki alapértelmezett felülete, amely a <code dir=\"ltr\">$wgDefaultSkin</code> szerint <code>$1</code>, nem áll rendelkezésre.\n\nNincs telepített felület\n\n; Ha frissen telepítetted a MediaWikit:\n: Valószínűleg a git-ről telepítetted, vagy forrás kódból más módon. Ebben az esetben ez várható. Próbálj telepíteni felületeket a [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org felület könyvtárából], az alábbi módokon:\n:* Töltsd le a [https://www.mediawiki.org/wiki/Download tarball telepítőt], amely számos felületet és kiegészítést tartalmaz. Simán másold ki és beilleszt be a <code>skins/</code> könyvtárat belőle.\n:* Töltsd le az egyedi felület telepítő készleteket a [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org] helyről.\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Felület letöltése Git segítségével].\n: Ez nem ütközik a git repository-val, ha MediaWiki fejlesztő vagy.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (engedélyezve)",
index 2e93731..94b59e1 100644 (file)
        "right-blockemail": "Blocar un usator de inviar e-mail",
        "right-hideuser": "Blocar un nomine de usator, celante lo del publico",
        "right-ipblock-exempt": "Contornar le blocadas de adresses IP, blocadas automatic e blocadas de intervallos IP",
-       "right-proxyunbannable": "Contornar le blocadas automatic de proxy",
        "right-unblockself": "Disblocar se mesme",
        "right-protect": "Cambiar nivellos de protection e modificar paginas protegite in cascada",
        "right-editprotected": "Modificar paginas protegite con \"{{int:protect-level-sysop}}\"",
        "right-managechangetags": "Crear e deler [[Special:Tags|etiquettas]] in le base de datos",
        "right-applychangetags": "Applicar [[Special:Tags|etiquettas]] al proprie modificationes",
        "right-changetags": "Adder e remover qualcunque [[Special:Tags|etiquettas]] sur individual versiones e entratas de registro",
+       "grant-generic": "gruppo de derectos \"$1\"",
+       "grant-group-administration": "Exequer actiones administrative",
+       "grant-blockusers": "Blocar e disblocar usatores",
+       "grant-createeditmovepage": "Crear, modificar e renominar paginas",
+       "grant-delete": "Deler paginas, versiones e entratas de registro",
+       "grant-editinterface": "Modificar le spatio de nomines MediaWiki e le CSS/JS de usatores",
+       "grant-editmycssjs": "Modificar le CSS/JS del proprie usator",
+       "grant-editmywatchlist": "Modificar le proprie observatorio",
+       "grant-editpage": "Modificar paginas existente",
+       "grant-editprotected": "Modificar paginas protegite",
+       "grant-highvolume": "Modification in massa",
+       "grant-oversight": "Celar usatores e supprimer versiones",
+       "grant-patrol": "Patruliar cambiamentos in paginas",
+       "grant-protect": "Proteger e disproteger paginas",
+       "grant-rollback": "Revocar cambiamentos in paginas",
+       "grant-sendemail": "Inviar e-mail a altere usatores",
+       "grant-uploadeditmovefile": "Actualisar, reimplaciar e renominar files",
+       "grant-uploadfile": "Incargar nove files",
+       "grant-viewdeleted": "Vider information delite",
+       "grant-viewmywatchlist": "Vider le proprie observatorio",
        "newuserlogpage": "Registro de creation de usatores",
        "newuserlogpagetext": "Isto es un registro de creation de usatores.",
        "rightslog": "Registro de derectos de usator",
        "uploaded-script-svg": "Un elemento de script \"$1\" se trova in le file SVG incargate.",
        "uploaded-hostile-svg": "Certe codice CSS insecur se trova in le elemento de stilo del file SVG incargate.",
        "uploaded-event-handler-on-svg": "Fixar attributos de gestion de eventos <code>$1=\"$2\"</code> non es permittite in files SVG.",
-       "uploaded-href-attribute-svg": "Attributos href <code>&lt;$1 $2=\"$3\"&gt;</code> con objectivos non local (p.ex. http://, javascript:, etc) non es permittite in files SVG.",
        "uploaded-href-unsafe-target-svg": "Un href a un objectivo non secur <code>&lt;$1 $2=\"$3\"&gt;</code> se trova in le file SVG incargate.",
        "uploaded-animate-svg": "Un etiqueta \"animate\" que poterea cambiar le href, usante le attributo \"from\" <code>&lt;$1 $2=\"$3\"&gt;</code>, se trova in le file SVG incargate.",
        "uploaded-setting-event-handler-svg": "Fixar le attributos de gestion de eventos non es permittite, ma le codice <code>&lt;$1 $2=\"$3\"&gt;</code> se trova in le file SVG incargate.",
        "filename-thumb-name": "Isto pare como un titulo de miniatura. Per favor non re-incarga miniaturas in le mesme wiki. Alteremente, per favor modifica le nomine del file de maniera que illo es plus significative e non ha le prefixo de miniatura.",
        "filename-bad-prefix": "Le nomine del file que tu es super le puncto de incargar comencia con '''\"$1\"''', le qual es un nomine non descriptive, typicamente assignate automaticamente per le cameras digital.\nPer favor selige un nomine plus descriptive pro tu file.",
        "filename-prefix-blacklist": " #<!-- non modificar de alcun modo iste linea --> <pre>\n# Le syntaxe es como seque:\n#   * Toto a partir de un character \"#\" usque al fin del linea es un commento\n#   * Cata linea non vacue es un prefixo pro tal nomines de file como automaticamente assignate per cameras digital\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # alcun telephonos mobile\nIMG # generic\nJD # Jenoptik\nMGP # Pentax\nPICT # misc.\n #</pre> <!-- non modificar de alcun modo iste linea -->",
-       "upload-success-subj": "Incargamento succedite",
-       "upload-success-msg": "Le incargamento de [$2] ha succedite. Illo es disponibile hic: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Problema de incargamento",
-       "upload-failure-msg": "Il ha occurrite un problema con tu incargamento ab [$2]:\n\n$1",
-       "upload-warning-subj": "Advertimento de incargamento",
-       "upload-warning-msg": "Occurreva un problema con le incargamento de [$2]. Tu pote retornar al [[Special:Upload/stash/$1|formulario de incargamento]] pro corriger iste problema.",
        "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",
        "wlheader-showupdated": "Le paginas que ha essite modificate post tu ultime visita se monstra in litteras '''grasse'''.",
        "wlnote": "Ecce le ultime {{PLURAL:$1|modification|<strong>$1</strong> modificationes}} durante le ultime {{PLURAL:$2|hora|<strong>$2</strong> horas}}, a partir del $3 a $4.",
        "wlshowlast": "Monstrar le ultime $1 horas $2 dies",
-       "watchlistall2": "toto",
        "watchlist-hide": "Celar",
        "wlshowtime": "Periodo de tempore a monstrar:",
        "wlshowhideminor": "modificationes minor",
        "mw-widgets-dateinput-placeholder-month": "AAAA-MM",
        "mw-widgets-titleinput-description-new-page": "pagina non existe ancora",
        "mw-widgets-titleinput-description-redirect": "redirection a $1",
-       "api-error-blacklisted": "Per favor elige un altere titulo, plus descriptive."
+       "api-error-blacklisted": "Per favor elige un altere titulo, plus descriptive.",
+       "randomrootpage": "Pagina-radice aleatori"
 }
index 8ef32b7..6c13a83 100644 (file)
        "right-blockemail": "Agserra iti agar-aramat manipud iti panagipatulod ti esurat",
        "right-hideuser": "Agserra iti nagan ti agar-aramat, ken agilemmeng manipud iti publiko",
        "right-ipblock-exempt": "Labsanna dagiti serra ti IP, dagiti automatiko a serra ken dagiti sakop a serra.",
-       "right-proxyunbannable": "Labsanna dagiti automatiko a serra dagiti pannakbagi",
        "right-unblockself": "Bukod nga agikkat it pannakaserra",
        "right-protect": "Agsukat kadagiti agpang ti salaknib ken agurnos kadagiti nasalakniban ti sariap a panid",
        "right-editprotected": "Agurnos kadagiti panid a nasalakniban a kas \"{{int:protect-level-sysop}}\"",
        "uploaded-script-svg": "Nakabiruk ti maieskritu nga elemento ti \"$1\" iti naikarga a papeles ti SVG.",
        "uploaded-hostile-svg": "Nakabiruk ti saan a natalged a CSS iti elemento ti estilo ti naikarga a papeles ti SVG.",
        "uploaded-event-handler-on-svg": "Ti panangisaad kadagiti gupit ti panagtengngel ti pasamak ti <code>$1=\"$2\"</code> ket saan a maipalubos kadagiti papeles ti SVG.$1",
-       "uploaded-href-attribute-svg": "Dagiti gupit ti href ti <code>&lt;$1 $2=\"$3\"&gt;</code> nga addaan iti saan a lokal a puntaan (kas ti http://, javascript:, kdpy) ket saan a maipalubos kadagiti papeles ti SVG.",
        "uploaded-href-unsafe-target-svg": "Nakabiruk ti href iti saan a natalged a puntaan ti <code>&lt;$1 $2=\"$3\"&gt;</code> iti naikarga a papeles ti SVG.",
        "uploaded-animate-svg": "Nakabiruk ti etiketa ti \"animado\" a mabalin a mangbalbaliw iti href, nga agus-usar iti gupit ti \"manipud\" ti <code>&lt;$1 $2=\"$3\"&gt;</code> iti naikarga a papeles ti SVG.",
        "uploaded-setting-event-handler-svg": "Naserraan ti panangisaad ti kadagiti gupit ti panagtengngel ti pasamak, nakabiruk iti <code>&lt;$1 $2=\"$3\"&gt;</code> iti naikarga a papeles ti SVG.",
        "watchthisupload": "Bantayan daytoy a papeles",
        "filewasdeleted": "Ti papeles iti daytoy a nagan ket dati a naikarga ken kanungpalan a naikkat.\nNasken a kitaem ti $1 sakbay nga agtuloy a mangikarga manen.",
        "filename-bad-prefix": "Ti nagan ti papeles nga ikarkargam ket mangrugi iti <strong>\"$1\"</strong>,  ken saan a deskriptibo a nagan a kadawyan nga automatiko nga ited babaen dagiti digital a kamera.\nPangngaasi nga agpili ti nasaysayaat a deskriptibo a nagan ti papelesmo.",
-       "upload-success-subj": "Balligi ti panagikarga",
-       "upload-success-msg": "Ti panagikargam manipud ti [$2] ket nagballigi. Daytoy ket magun-od ditoy [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Parikut ti panagikarga",
-       "upload-failure-msg": "Adda parikut ti panagikargam manipud iti [$2]:\n\n$1",
-       "upload-warning-subj": "Ballaag ti panagikarga",
-       "upload-warning-msg": "Adda parikut iti panagikargam manipud iti [$2]. Mabalinmo ti agsubli iti [[Special:Upload/stash/$1|porma ti panagikarga]] tapno masimpa daytoy a parikut.",
        "upload-proto-error": "Saan a husto a protokol",
        "upload-proto-error-text": "Ti adayo a panagikarga ket makasapul kadagiti URL a mangrugi iti <code>http://</code> wenno <code>ftp://</code>.",
        "upload-file-error": "Akin-uneg a biddut",
        "wlheader-showupdated": "Dagiti panid a nasukatanen manipud ti kinaudi a panagsarungkarmo ket naipakita iti <strong>napuskol</strong>.",
        "wlnote": "Dita baba ket {{PLURAL:$1|naudi a sinukatan|dagiti naudi a <strong>$1</strong> a sinukatan}} iti napalabas {{PLURAL:$2|nga oras|a <strong>$2</strong> nga or-oras}}, manipud idi $3, $4.",
        "wlshowlast": "Ipakita dagiti naudi a $1 nga or-oras $2 nga al-aldaw",
-       "watchlistall2": "amin",
        "watchlist-hide": "Ilemmeng",
        "watchlist-submit": "Ipakita",
        "wlshowtime": "Ipakita a paset ti panawen:",
        "mw-widgets-dateinput-placeholder-month": "TTTT-BB",
        "mw-widgets-titleinput-description-new-page": "awan pay ti panid",
        "mw-widgets-titleinput-description-redirect": "ibaw-ing iti $1",
-       "api-error-blacklisted": "Pangngaasi nga agpili iti sabali, a mangipalpalawag a titulo."
+       "api-error-blacklisted": "Pangngaasi nga agpili iti sabali, a mangipalpalawag a titulo.",
+       "randomrootpage": "Pugto a ramut a panid"
 }
index cca5512..020b6bd 100644 (file)
        "prefs-rc": "Ultime modifiche",
        "prefs-watchlist": "Osservati speciali",
        "prefs-editwatchlist": "Modifica osservati speciali",
-       "prefs-editwatchlist-label": "Modifica le pagine della tua watchlist:",
-       "prefs-editwatchlist-edit": "Visualizza e rimuovi titoli sulla tua watchlist",
+       "prefs-editwatchlist-label": "Modifica i tuoi osservati speciali:",
+       "prefs-editwatchlist-edit": "Visualizza e rimuovi titoli nei tuoi osservati speciali",
        "prefs-editwatchlist-raw": "Modifica la lista in formato testo",
-       "prefs-editwatchlist-clear": "Cancella la tua watchlist",
+       "prefs-editwatchlist-clear": "Svuota i tuoi osservati speciali",
        "prefs-watchlist-days": "Numero di giorni da mostrare negli osservati speciali:",
        "prefs-watchlist-days-max": "Massimo $1 {{PLURAL:$1|giorno|giorni}}",
        "prefs-watchlist-edits": "Numero di modifiche da mostrare con le funzioni avanzate:",
        "uploaded-script-svg": "Trovato elemento di script \"$1\" nel file caricato in formato SVG.",
        "uploaded-hostile-svg": "Trovato CSS non sicuro nell'elemento di stile del file in formato SVG caricato.",
        "uploaded-event-handler-on-svg": "Impostazione gestione eventi ed attributi <code>$1=\"$2\"</code> non è consentito in file SGV",
-       "uploaded-href-attribute-svg": "Attributi href <code>&lt;$1 $2=\"$3\"&gt;</code> com un bersaglio non locale (e.g. http://, javascript:, etc) non sono permessi file SGV",
-       "uploaded-href-unsafe-target-svg": "Trovati href ad un bersaglio non sicuro <code>&lt;$1 $2=\"$3\"&gt;</code> caricato nel file SVG",
+       "uploaded-href-attribute-svg": "attributi href in file SVG sono consentiti collegamenti solo verso destinazioni http:// o https://, trovato <code>&lt;$1 $2=\"$3\"&gt;</code>.",
+       "uploaded-href-unsafe-target-svg": "Trovati href a dati non sicuri: destinazione URI <code>&lt;$1 $2=\"$3\"&gt;</code> caricato nel file SVG",
        "uploaded-animate-svg": "Trovato il tag \"animate\" che potrebbe cambiare href, usando l'attributo \"from\" <code>&lt;$1 $2=\"$3\"&gt;</code> nel file SVG caricato.",
        "uploaded-setting-event-handler-svg": "La configurazione di attributi per il gestore di eventi è bloccata, trovato <code>&lt;$1 $2=\"$3\"&gt;</code> nel file SVG caricato.",
        "uploaded-setting-href-svg": "Utilizzare il tag \"set\" per aggiungere l'attributo \"href\" all'elemento parentale è bloccato.",
        "filename-thumb-name": "Questo sembra essere il titolo di una miniatura. Non caricare le miniature sulla stessa wiki. Oppure, modifica il nome del file in modo che sia più significativo e non abbia il prefisso della miniatura.",
        "filename-bad-prefix": "Il nome del file che si sta caricando inizia con '''\"$1\"''', che è un nome generico simile a quelli assegnati automaticamente dalle fotocamere digitali. Si prega di scegliere un nome più descrittivo per il file.",
        "filename-prefix-blacklist": " #<!-- lascia questa riga esattamente com'è --> <pre>\n# La sintassi è la seguente:\n#   * Tutto ciò che segue il carattere \"#\" sino alla fine della riga è un commento\n#   * Ogni riga non vuota è un prefisso per nomi di file tipici assegnati automaticamente da fotocamere digitali\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # alcuni telefonini\nIMG # generic\nJD # Jenoptik\nMGP # Pentax\nPICT # misc.\n #</pre> <!-- lascia questa riga esattamente com'è -->",
-       "upload-success-subj": "Caricamento completato",
-       "upload-success-msg": "L'upload da [$2] è riuscito. Il file è disponibile qui: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Problema nell'upload",
-       "upload-failure-msg": "Si è verificato un problema con il caricamento da [$2]:\n\n$1",
-       "upload-warning-subj": "Avviso di caricamento",
-       "upload-warning-msg": "C'è stato un problema con il caricamento da [$2]. Si può tornare al [[Special:Upload/stash/$1|form di upload]] per correggere questo problema.",
        "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-too-many-redirects": "L'URL conteneva troppi redirect",
        "upload-http-error": "Si è verificato un errore HTTP: $1",
        "upload-copy-upload-invalid-domain": "Non è consentito il caricamento di copie da questo dominio.",
+       "upload-foreign-cant-upload": "Questo wiki non è configurato per caricare i file nel repository di file esterno richiesto.",
        "upload-dialog-title": "Carica file",
        "upload-dialog-button-cancel": "Annulla",
        "upload-dialog-button-done": "Fatto",
        "wlheader-showupdated": "Le pagine che sono state modificate dopo l'ultima visita sono evidenziate in '''grassetto'''.",
        "wlnote": "Di seguito {{PLURAL:$1|è elencata la modifica più recente apportata|sono elencate le <strong>$1</strong> modifiche più recenti apportate}} {{PLURAL:$2|nella scorsa ora|nelle scorse <strong>$2</strong> ore}}; i dati sono aggiornati alle $4 del $3.",
        "wlshowlast": "Mostra le ultime $1 ore $2 giorni",
-       "watchlistall2": "tutte",
        "watchlist-hide": "Nascondi",
        "watchlist-submit": "Mostra",
        "wlshowtime": "Periodo di tempo da visualizzare:",
        "lockedbyandtime": "(da $1 il $2 alle $3)",
        "move-page": "Spostamento di $1",
        "move-page-legend": "Spostamento di pagina",
-       "movepagetext": "Questo modulo consente di rinominare una pagina, spostando tutta la sua cronologia al nuovo nome. La pagina attuale diverrà automaticamente un redirect al nuovo titolo. Puoi aggiornare automaticamente i redirect che puntano al titolo originale. Puoi decidere di non farlo, ma ricordati di verificare che lo spostamento non abbia creato [[Special:DoubleRedirects|doppi redirect]] o [[Special:BrokenRedirects|redirect errati]]. L'onere di garantire che i collegamenti alla pagina restino corretti spetta a chi la sposta.\n\nSi noti che la pagina '''non''' sarà spostata se ne esiste già una con il nuovo nome, a meno che quest'ultima non sia costituita solo da un redirect alla vecchia e sia priva di versioni precedenti. In caso di spostamento errato si può quindi tornare subito al vecchio titolo, e non è possibile sovrascrivere per errore una pagina già esistente.\n\n'''ATTENZIONE:'''\nUn cambiamento così drastico può creare contrattempi e problemi, soprattutto per le pagine più visitate. Accertarsi di aver valutato le conseguenze dello spostamento prima di procedere.",
-       "movepagetext-noredirectfixer": "Questo modulo consente di rinominare una pagina, spostando tutta la sua cronologia al nuovo nome. La pagina attuale diverrà automaticamente un redirect al nuovo titolo. Controlla che lo spostamento non abbia creato [[Special:DoubleRedirects|doppi redirect]] o [[Special:BrokenRedirects|redirect errati]]. L'onere di garantire che i collegamenti alla pagina restino corretti spetta a chi la sposta.\n\nSi noti che la pagina '''non''' sarà spostata se ne esiste già una con il nuovo nome, a meno che non sia vuota o costituita solo da un redirect alla vecchia e sia priva di versioni precedenti. In caso di spostamento errato si può quindi tornare subito al vecchio titolo, e non è possibile sovrascrivere per errore una pagina già esistente.\n\n'''ATTENZIONE:'''\nUn cambiamento così drastico può creare contrattempi e problemi, soprattutto per le pagine più visitate. Accertarsi di aver valutato le conseguenze dello spostamento prima di procedere.",
+       "movepagetext": "Questo modulo consente di rinominare una pagina, spostando tutta la sua cronologia al nuovo nome. La pagina attuale diverrà automaticamente un redirect al nuovo titolo. Puoi aggiornare automaticamente i redirect che puntano al titolo originale. Puoi decidere di non farlo, ma ricordati di verificare che lo spostamento non abbia creato [[Special:DoubleRedirects|doppi redirect]] o [[Special:BrokenRedirects|redirect errati]]. L'onere di garantire che i collegamenti alla pagina restino corretti spetta a chi la sposta.\n\nSi noti che la pagina <strong>non</strong> sarà spostata se ne esiste già una con il nuovo nome, a meno che quest'ultima non sia costituita solo da un redirect e sia priva di versioni precedenti. In caso di spostamento errato si può quindi tornare subito al vecchio titolo, e non è possibile sovrascrivere per errore una pagina già esistente.\n\n<strong>Nota:</strong>\nUn cambiamento così drastico può creare contrattempi e problemi, soprattutto per le pagine più visitate. Accertarsi di aver valutato le conseguenze dello spostamento prima di procedere.",
+       "movepagetext-noredirectfixer": "Questo modulo consente di rinominare una pagina, spostando tutta la sua cronologia al nuovo nome. La pagina attuale diverrà automaticamente un redirect al nuovo titolo. Controlla che lo spostamento non abbia creato [[Special:DoubleRedirects|doppi redirect]] o [[Special:BrokenRedirects|redirect errati]]. L'onere di garantire che i collegamenti alla pagina restino corretti spetta a chi la sposta.\n\nSi noti che la pagina <strong>non</strong> sarà spostata se ne esiste già una con il nuovo nome, a meno che non sia costituita solo da un redirect e sia priva di versioni precedenti. In caso di spostamento errato si può quindi tornare subito al vecchio titolo, e non è possibile sovrascrivere per errore una pagina già esistente.\n\n<strong>Nota:</strong>\nUn cambiamento così drastico può creare contrattempi e problemi, soprattutto per le pagine più visitate. Accertarsi di aver valutato le conseguenze dello spostamento prima di procedere.",
        "movepagetalktext": "Se selezioni questa casella, la corrispondente pagina di discussione sarà spostata automaticamente al nuovo titolo, a meno che esiste già una pagina di discussione non vuota.\n\nIn questi casi, dovrai spostare o unire manualmente la pagina, se lo si ritiene opportuno.",
        "moveuserpage-warning": "'''Attenzione:''' Si sta per spostare una pagina utente. Nota che verrà spostata solamente la pagina. L'utente ''non'' sarà rinominato.",
        "movecategorypage-warning": "<strong>Attenzione:</strong> si sta per spostare una categoria. Solo questa pagina verrà spostata: tutte le pagine nella vecchia categoria <em>non</em> saranno inserite nella nuova.",
        "movenosubpage": "Questa pagina non ha sottopagine.",
        "movereason": "Motivo:",
        "revertmove": "ripristina",
-       "delete_and_move_text": "==Cancellazione richiesta==\n\nLa pagina specificata come destinazione \"[[:$1]]\" esiste già. Vuoi cancellarla per proseguire con lo spostamento?",
+       "delete_and_move_text": "La pagina specificata come destinazione \"[[:$1]]\" esiste già. Vuoi cancellarla per proseguire con lo spostamento?",
        "delete_and_move_confirm": "Sì, sovrascrivi la pagina esistente",
        "delete_and_move_reason": "Cancellata per rendere possibile lo spostamento da \"[[$1]]\"",
        "selfmove": "Il titolo di destinazione è uguale a quello di provenienza, non è possibile spostare una pagina su sé stessa.",
        "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.'''\nL'ultimo elemento del registro è riportato di seguito per informazione:",
        "semiprotectedpagemovewarning": "'''Nota:''' Questa pagina è stata bloccata in modo che solo gli utenti registrati possano spostarla.\nL'ultimo elemento del registro è riportato di seguito per informazione:",
-       "move-over-sharedrepo": "== File già esistente ==\n[[:$1]] è già presente in una struttura condivisa. Spostare un file a questo titolo comporterà la sovrascrittura del file condiviso.",
+       "move-over-sharedrepo": "[[:$1]] esiste già in un archivio condiviso. Lo spostamento di un file a questo titolo comporterà la sovrascrittura del file condiviso.",
        "file-exists-sharedrepo": "Il nome che hai scelto per il file è già utilizzato.\nPer favore, scegli un nome diverso.",
        "export": "Esporta pagine",
        "exporttext": "È possibile esportare il testo e la cronologia delle modifiche di una pagina o di un gruppo di pagine in formato XML per importarle in altri siti che utilizzano il software MediaWiki, attraverso la [[Special:Import|pagina delle importazioni]].\n\nPer esportare le pagine indicare i titoli nella casella di testo sottostante, uno per riga, e specificare se si desidera ottenere l'ultima versione e tutte le versioni precedenti, con i dati della cronologia della pagina, oppure soltanto l'ultima versione e i dati corrispondenti all'ultima modifica.\n\nIn quest'ultimo caso si può anche utilizzare un collegamento, ad esempio [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] per esportare \"[[{{MediaWiki:Mainpage}}]]\".",
        "lastmodifiedatby": "Questa pagina è stata modificata per l'ultima volta il $1 alle $2 da $3.",
        "othercontribs": "Il testo attuale è basato su contributi di $1.",
        "others": "altri",
-       "siteusers": "$1, {{PLURAL:$2|utente|utenti}} di {{SITENAME}}",
+       "siteusers": "$1, {{PLURAL:$2|{{GENDER:$1|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.",
        "expand_templates_preview_fail_html": "<em>Poiché {{SITENAME}} ha dell'HTML grezzo attivato e c'è stata una perdita dei dati della sessione, l'anteprima è nascosta come precauzione contro gli attacchi JavaScript.</em>\n\n<strong>Se si tratta di un normale tentativo d'anteprima, riprova.</strong> \nSe comunque non dovesse funzionare, prova ad [[Special:UserLogout|uscire]] ed a rientrare.",
        "expand_templates_preview_fail_html_anon": "<em>Poiché {{SITENAME}} ha dell'HTML grezzo attivato e non hai effettuato l'accesso, l'anteprima è nascosta come precauzione contro gli attacchi JavaScript.</em>\n\n<strong>Se si tratta di un normale tentativo d'anteprima, [[Special:UserLogin|entra]] e riprova.</strong>",
        "expand_templates_input_missing": "Devi inserire del testo come input.",
-       "pagelanguage": "Seleziona lingua della pagina",
+       "pagelanguage": "Modifica lingua della pagina",
        "pagelang-name": "Pagina",
        "pagelang-language": "Lingua",
        "pagelang-use-default": "Utilizza la lingua predefinita",
        "action-pagelang": "modificare la lingua della pagina",
        "log-name-pagelang": "Modifiche lingua",
        "log-description-pagelang": "Questo è un registro delle modifiche alla lingua delle pagine.",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|ha modificato}} la lingua della pagina $3 da $4 a $5.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|ha modificato}} la lingua di $3 da $4 a $5",
        "default-skin-not-found": "Oops! Il tema predefinito per il tuo wiki, definito in <code dir=\"ltr\">$wgDefaultSkin</code> come <code>$1</code>, non è disponibile.\n\nLa tua installazione sembra includere {{PLURAL:$4|il seguente|i seguenti}} temi. Vedi [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manuale: configurazione tema] per informazioni su come {{PLURAL:$4|abilitarlo|abilitarli e scegliere quello predefinito}}.\n\n$2\n\n; Se hai appena installato MediaWiki:\n: Probabilmente lo hai installato da git, o direttamente dal codice sorgente usando qualche altro metodo. Ciò era previsto. Prova ad installare alcuni temi dalla [https://www.mediawiki.org/wiki/Category:All_skins directory su mediawiki.org], tramite:\n:* Scaricando il [https://www.mediawiki.org/wiki/Download programma di installazione tarball], che viene fornito con diversi temi ed estensioni. Puoi fare copia ed incolla della directory <code dir=\"ltr\">skins/</code> da lì.\n:* Scaricando tarball di singoli temi da [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Usando Git per scaricare i temi].\n: In questo modo non dovrebbe interferire con il tuo repository git se sei uno sviluppatore MediaWiki.\n\n; Se hai appena aggiornato MediaWiki:\n: MediaWiki 1.24 e versioni successive non abilitano più automaticamente i temi installati (vedi [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manuale: rilevamento automatico temi]). Puoi copiare {{PLURAL:$5|la seguente linea|le seguenti linee}} nel <code>LocalSettings.php</code> per abilitare {{PLURAL:$5|il tema installato|tutti i temi installati}}:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Se hai appena modificato <code>LocalSettings.php</code>:\n: Ricontrolla i nomi dei temi per errori di battitura.",
        "default-skin-not-found-no-skins": "Oops! Il tema predefinito per il tuo wiki, definito in <code>$wgDefaultSkin</code> come <code>$1</code>, non è disponibile.\n\nNon hai temi installati.\n\n; Se hai appena installato o aggiornato MediaWiki:\n: Probabilmente lo hai installato da git, o direttamente dal codice sorgente usando qualche altro metodo. Ciò era previsto. MediaWiki 1.24 e versioni successive non include alcun tema nel repository principale. Prova ad installare alcuni temi dalla [https://www.mediawiki.org/wiki/Category:All_skins directory su mediawiki.org], tramite:\n:* Scaricando il [https://www.mediawiki.org/wiki/Download programma di installazione tarball], che viene fornito con diversi temi ed estensioni. Puoi fare copia ed incolla della directory <code>skins/</code> da lì.\n:* Scaricando tarball di singoli temi da [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Usando Git per scaricare i temi].\n: In questo modo non dovrebbe interferire con il tuo repository git se sei uno sviluppatore MediaWiki. Vedi [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manuale: configurazione temi] per informazioni su come abilitarle e scegliere quello predefinito.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (abilitata)",
index 59112e6..b561bcd 100644 (file)
        "tog-watchlisthidebots": "ボットによる編集をウォッチリストに表示しない",
        "tog-watchlisthideminor": "細部の編集をウォッチリストに表示しない",
        "tog-watchlisthideliu": "ログイン利用者による編集をウォッチリストに表示しない",
-       "tog-watchlistreloadautomatically": "ã\83\95ã\82£ã\83«ã\82¿ã\81\8cå¤\89æ\9b´ã\81\95ã\82\8cã\82\8bã\81\9fã\81³ã\81«ã\80\81ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\82\92è\87ªå\8b\95ç\9a\84ã\81«å\86\8d読ã\81¿è¾¼ã\81¿ã\81\97ã\81¾ã\81\99(JavaScript が必要)",
+       "tog-watchlistreloadautomatically": "ã\83\95ã\82£ã\83«ã\82¿ã\81\8cå¤\89æ\9b´ã\81\95ã\82\8cã\82\8bã\81\9fã\81³ã\81«ã\80\81ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\82\92è\87ªå\8b\95ç\9a\84ã\81«å\86\8d読ã\81¿è¾¼ã\81¿ã\81\99ã\82\8b(JavaScript が必要)",
        "tog-watchlisthideanons": "匿名利用者による編集をウォッチリストに表示しない",
        "tog-watchlisthidepatrolled": "巡回済みの編集をウォッチリストに表示しない",
        "tog-watchlisthidecategorization": "ページのカテゴリ化を隠す",
        "october-date": "10月$1日",
        "november-date": "11月$1日",
        "december-date": "12月$1日",
+       "period-am": "午前",
+       "period-pm": "午後",
        "pagecategories": "{{PLURAL:$1|カテゴリ}}",
        "category_header": "カテゴリ「$1」にあるページ",
        "subcategories": "下位カテゴリ",
        "virus-scanfailed": "スキャンに失敗しました (コード $1)",
        "virus-unknownscanner": "不明なウイルス対策ソフトウェア:",
        "logouttext": "<strong>ログアウトしました。</strong>\n\nページによっては、ブラウザーのキャッシュをクリアするまで、ログインしているかのように表示され続ける場合があるためご注意ください。",
+       "cannotlogoutnow-title": "今はログアウトできません",
+       "cannotlogoutnow-text": "$1 使用中には、ログアウトは不可能です。",
        "welcomeuser": "ようこそ、$1さん!",
        "welcomecreation-msg": "アカウントが作成されました。\nお好みで[[Special:Preferences|{{SITENAME}}の個人設定]]を変更できます。",
        "yourname": "利用者名:",
        "remembermypassword": "このブラウザーにログイン情報を保存 (最長 $1 {{PLURAL:$1|日|日間}})",
        "userlogin-remembermypassword": "ログイン状態を保持",
        "userlogin-signwithsecure": "安全な接続の使用",
+       "cannotloginnow-title": "今はログインできません",
        "yourdomainname": "あなたのドメイン:",
        "password-change-forbidden": "このウィキではパスワードを変更できません。",
        "externaldberror": "認証データベースでエラーが発生したか、または外部アカウントの更新が許可されていません。",
        "resetpass_submit": "再設定してログイン",
        "changepassword-success": "パスワードを変更しました!",
        "changepassword-throttled": "最近のログインの試行回数が多すぎます。\n$1待ってから再度試してください。",
+       "botpasswords": "ボットのパスワード",
+       "botpasswords-disabled": "ボットのパスワードは無効です。",
+       "botpasswords-existing": "既存のボットのパスワード",
+       "botpasswords-createnew": "ボットのパスワードの新規作成",
+       "botpasswords-label-appid": "ボット名:",
+       "botpasswords-label-create": "作成",
+       "botpasswords-label-update": "更新",
+       "botpasswords-label-cancel": "中止",
+       "botpasswords-label-delete": "削除",
+       "botpasswords-label-resetpassword": "パスワードをリセット",
+       "botpasswords-bad-appid": "ボット「$1」は有効ではありません。",
+       "botpasswords-insert-failed": "ボット「$1」の追加に失敗しました。既に追加されていないか確認してください。",
+       "botpasswords-update-failed": "ボット「$1」の更新に失敗しました。削除されていないか確認してください。",
+       "botpasswords-created-title": "ボットのパスワードが作成されました",
+       "botpasswords-created-body": "ボット「$1」のパスワードが作成されました。",
+       "botpasswords-updated-title": "ボットのパスワードが更新されました",
+       "botpasswords-updated-body": "ボット「$1」のパスワードを更新しました。",
+       "botpasswords-deleted-title": "ボットのパスワードが削除されました",
+       "botpasswords-deleted-body": "ボット「$1」のパスワードを削除しました。",
+       "botpasswords-no-provider": "BotPasswordsSessionProvider が有効ではありません。",
+       "botpasswords-invalid-name": "指定された利用者名には、ボットのパスワードに区切り (「$1」) が含まれていません。",
+       "botpasswords-not-exist": "利用者「$1」はボット「$2」のパスワードを所持していません。",
        "resetpass_forbidden": "パスワードは変更できません",
        "resetpass-no-info": "このページに直接アクセスするためにはログインしている必要があります。",
        "resetpass-submit-loggedin": "パスワードを変更",
        "userrights": "利用者権限を管理",
        "userrights-lookup-user": "利用者グループを管理",
        "userrights-user-editname": "利用者名を入力:",
-       "editusergroup": "利用者グループを編集",
+       "editusergroup": "{{GENDER:$1|利用者}}グループを編集",
        "editinguser": "利用者<strong> [[User:$1|$1]]</strong> $2 の権限を変更",
        "userrights-editusergroup": "利用者グループを編集",
-       "saveusergroups": "利用者グループを保存",
+       "saveusergroups": "{{GENDER:$1|利用者}}グループを保存",
        "userrights-groupsmember": "所属グループ:",
        "userrights-groupsmember-auto": "自動的に付与される権限:",
        "userrights-groupsmember-type": "$1",
        "grant-sendemail": "他の利用者へのメールの送信",
        "grant-uploadeditmovefile": "ファイルをアップロード/置き換え/移動",
        "grant-uploadfile": "新しいファイルをアップロード",
+       "grant-basic": "基礎的な権限",
        "grant-viewdeleted": "削除されたファイルとページを閲覧",
        "grant-viewmywatchlist": "自身のウォッチリストを閲覧",
        "newuserlogpage": "アカウント作成記録",
        "rcshowhidemine": "自分の編集を$1",
        "rcshowhidemine-show": "表示",
        "rcshowhidemine-hide": "非表示",
-       "rcshowhidecategorization": "$1 ページ カテゴリ化",
+       "rcshowhidecategorization": "ページ カテゴリ化を$1",
        "rcshowhidecategorization-show": "表示",
        "rcshowhidecategorization-hide": "非表示",
        "rclinks": "最近 $2 日間の更新を最大 $1 件表示<br />$3",
        "uploaded-script-svg": "アップロードされたSVGファイルにスクリプト可能な要素「$1」が見つかりました。",
        "uploaded-hostile-svg": "アップロードされたSVGファイルのスタイル要素に安全ではないCSSが見つかりました。",
        "uploaded-event-handler-on-svg": "イベントハンドラをセットする属性 <code>$1=\"$2\"</code> は、SVGファイルを許可されていません。",
-       "uploaded-href-attribute-svg": "ローカル以外のターゲット(http://、javascript: など) と href 属性の <code>&lt;$1 $2=\"$3\"&gt;</code> は、SVGファイルで許可されません。",
-       "uploaded-href-unsafe-target-svg": "アップロードされたSVGファイルに、安全ではないターゲット <code>&lt;$1 $2=\"$3\"&gt;</code> の href が見つかりました。",
+       "uploaded-href-attribute-svg": "SVG ファイルの href 属性が http:// または https:// のターゲットのみにリンクする <code>&lt;$1 $2=\"$3\"&gt;</code> が見つかりました。",
+       "uploaded-href-unsafe-target-svg": "アップロードされた SVG ファイルの、安全ではないデータ URI にターゲット <code>&lt;$1 $2=\"$3\"&gt;</code> の href が見つかりました。",
        "uploaded-animate-svg": "アップロードされたSVGファイルに、「from」属性 <code>&lt;$1 $2=\"$3\"&gt;</code> を使用した、href を変更させる可能性がある「animate」タグが見つかりました。",
        "uploaded-setting-event-handler-svg": "アップロードされたSVGファイルに、ブロックされているイベントハンドラ属性が設定された <code>&lt;$1 $2=\"$3\"&gt;</code> が見つかりました。",
        "uploaded-setting-href-svg": "親要素に「href」属性を追加する「set」タグの使用がブロックされています。",
        "filename-thumb-name": "これはサムネイルのタイトルのように見えます。けっして同じウィキに戻ってサムネイルをアップロードしないでください。そうでなければ、それはより多くの意味があるので、ファイル名を修正し、サムネイル接頭辞を持たなくしてください。",
        "filename-bad-prefix": "アップロードしようとしているファイルの名前が<strong>「$1」</strong>から始まっていますが、これはデジタルカメラによって自動的に付与されるような具体性を欠いた名前です。\nファイルの内容をより具体的に説明する名前を使用してください。",
        "filename-prefix-blacklist": " #<!-- この行はそのままにしておいてください --> <pre>\n# 構文は以下の通り:\n#   * \"#\" 記号から行末まではすべてがコメント\n#   * 空ではない行はすべてデジタルカメラによって自動的に付けられる典型的なファイル名の接頭辞\nCIMG # カシオ\nDSC_ # ニコン\nDSCF # 富士フイルム\nDSCN # ニコン\nDUW # 一部の携帯電話\nIMG # 一般\nJD # Jenoptik\nMGP # ペンタックス\nPICT # その他\n #</pre> <!-- この行はそのままにしておいてください -->",
-       "upload-success-subj": "アップロード成功",
-       "upload-success-msg": "[$2] からアップロードしました。こちらで利用できます: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "アップロード失敗",
-       "upload-failure-msg": "[$2] からアップロードする際に問題が発生しました:\n\n$1",
-       "upload-warning-subj": "アップロードの警告",
-       "upload-warning-msg": "[$2] からアップロードしようとしたデータに問題があります。 [[Special:Upload/stash/$1|アップロードのフォーム]]に戻って問題を修正してください。",
        "upload-proto-error": "無効なプロトコル",
        "upload-proto-error-text": "遠隔アップロード機能では、URLが<code>http://</code>または<code>ftp://</code>で始まっている必要があります。",
        "upload-file-error": "内部エラー",
        "log-title-wildcard": "この文字列で始まるページ名を検索",
        "showhideselectedlogentries": "選択した記録項目を表示/非表示",
        "log-edit-tags": "選択した記録項目のタグを編集",
+       "checkbox-select": "選択: $1",
+       "checkbox-all": "すべて",
+       "checkbox-none": "なし",
+       "checkbox-invert": "反転",
        "allpages": "全ページ",
        "nextpage": "次のページ ($1)",
        "prevpage": "前のページ ($1)",
        "wlheader-showupdated": "最終訪問以降に変更されたページは、<strong>太字</strong>で表示されます。",
        "wlnote": "$3 $4 までの{{PLURAL:$2|<strong>$2</strong>時間}}になされた{{PLURAL:$1|<strong>$1</strong>件の変更}}は以下の通りです。",
        "wlshowlast": "表示する期間: $1時間、$2日間",
-       "watchlistall2": "すべて",
        "watchlist-hide": "非表示",
        "watchlist-submit": "表示",
        "wlshowtime": "表示範囲:",
        "unblock": "利用者のブロックを解除",
        "blockip": "{{GENDER:$1|利用者}}をブロック",
        "blockip-legend": "利用者をブロック",
-       "blockiptext": "以下のフォームを使用して、指定したIPアドレスまたは利用者からの書き込みアクセスをブロックできます。\nこのような措置は、荒らしからの防御の目的のみに行われるべきで、また[[{{MediaWiki:Policy-url}}|方針]]に沿ったものであるべきです。\n以下にブロックの理由を具体的に書いてください (例えば、荒らされたページへの言及など)。",
+       "blockiptext": "以下のフォームを使用して、指定したIPアドレスまたは利用者からの書き込みアクセスをブロックできます。\nこのような措置は、荒らしからの防御の目的のみに行われるべきで、また[[{{MediaWiki:Policy-url}}|方針]]に沿ったものであるべきです。\n以下にブロックの理由を具体的に書いてください (例えば、荒らされたページへの言及など)。\n[https://ja.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR] 構文を使用して、IP 範囲をブロックできます。許可された最大の範囲は、IPv4 の場合は /$1、IPv6 の場合は /$2 です。",
        "ipaddressorusername": "IPアドレスまたは利用者名:",
        "ipbexpiry": "有効期限:",
        "ipbreason": "理由:",
        "lockedbyandtime": "($1 が $2 $3 から)",
        "move-page": "「$1」の移動",
        "move-page-legend": "ページの移動",
-       "movepagetext": "下のフォームを使用すると、ページ名を変更でき、そのページの履歴も変更先に移動できます。\n移動元のページは移動先への転送ページになります。\n移動元のページへの転送ページを自動的に修正できます。\n[[Special:DoubleRedirects|二重転送]]や[[Special:BrokenRedirects|迷子のリダイレクト]]を確認する必要があります。\nリンクを正しく維持するのは移動した人の責任です。\n\n移動先のページが既に存在する場合は、その移動先が転送ページであり、かつ過去の版を持たない場合以外は移動<strong>できません</strong>。\nつまり、間違えてページ名を変更した場合には元に戻せます。また移動によって既存のページを上書きしてしまうことはありません。\n\n<strong>注意!</strong>\nよく閲覧されるページや、他の多くのページからリンクされているページを移動すると予期しない結果が起こるかもしれません。\nページの移動に伴う影響をよく考えてから踏み切るようにしてください。",
-       "movepagetext-noredirectfixer": "下のフォームを使用すると、ページ名を変更でき、そのページの履歴も変更先に移動できます。\n移動元のページは移動先への転送ページになります。\n自動的な修正を選択しない場合は、[[Special:DoubleRedirects|二重転送]]や[[Special:BrokenRedirects|迷子のリダイレクト]]を確認する必要があります。\nつながるべき場所にリンクがつながるよう維持するのは移動した人の責任です。\n\n移動先が既に存在する場合は、そのページが転送ページであり、かつ過去の版を持たない場合を除いて移動<strong>できません</strong>。\nつまり、間違えてページ名を変更した場合には元に戻せます。また移動によって既存のページを上書きしてしまうことはありません。\n\n<strong>警告!</strong>\n多く閲覧されるページや多くリンクされているページを移動すると、予期しない大きな変化が起こるかもしれないことにご注意ください。\nページの移動に伴う影響をよく考えてから移動してください。",
+       "movepagetext": "下のフォームを使用すると、ページ名を変更でき、そのページの履歴も変更先に移動できます。\n移動元のページは移動先への転送ページになります。\n移動元のページへの転送ページを自動的に修正できます。\n[[Special:DoubleRedirects|二重転送]]や[[Special:BrokenRedirects|迷子のリダイレクト]]を確認する必要があります。\nリンクを正しく維持するのは移動した人の責任です。\n\n移動先のページが既に存在する場合は、その移動先が転送ページであり、かつ過去の版を持たない場合以外は移動<strong>できません</strong>。\nつまり、間違えてページ名を変更した場合には元に戻せます。また移動によって既存のページを上書きしてしまうことはありません。\n\n<strong>注意</strong>\nよく閲覧されるページや、他の多くのページからリンクされているページを移動すると予期しない結果が起こるかもしれません。\nページの移動に伴う影響をよく考えてから踏み切るようにしてください。",
+       "movepagetext-noredirectfixer": "下のフォームを使用すると、ページ名を変更でき、そのページの履歴も変更先に移動できます。\n移動元のページは移動先への転送ページになります。\n自動的な修正を選択しない場合は、[[Special:DoubleRedirects|二重転送]]や[[Special:BrokenRedirects|迷子のリダイレクト]]を確認する必要があります。\nつながるべき場所にリンクがつながるよう維持するのは移動した人の責任です。\n\n移動先が既に存在する場合は、そのページが転送ページであり、かつ過去の版を持たない場合を除いて移動<strong>できません</strong>。\nつまり、間違えてページ名を変更した場合には元に戻せます。また移動によって既存のページを上書きしてしまうことはありません。\n\n<strong>注意</strong>\n多く閲覧されるページや多くリンクされているページを移動すると、予期しない大きな変化が起こるかもしれないことにご注意ください。\nページの移動に伴う影響をよく考えてから移動してください。",
        "movepagetalktext": "ここにチェックを付けると、関連付けられたトークページも一緒に、自動的に新しいページ名に移動されます。ただし、移動先に空ではないトークページが既に存在する場合を除きます。\n\nこの場合、手動でトークページを移動または統合する必要があります。",
        "moveuserpage-warning": "<strong>警告:</strong> 利用者ページを移動しようとしています。この操作ではページのみが移動され、利用者名は<em>変更されない</em>点に注意してください。",
        "movecategorypage-warning": "<strong>警告:</strong> カテゴリのページを移動させようとしています。カテゴリのページのみが移動するため、元のカテゴリに属していたどのページも新しいカテゴリには移動 <em>しない</em> ことにご注意ください。",
        "movenosubpage": "このページに下位ページはありません。",
        "movereason": "理由:",
        "revertmove": "差し戻し",
-       "delete_and_move_text": "== 削除が必要です ==\n移動先「[[:$1]]」は既に存在します。\n移動のためにこのページを削除しますか?",
+       "delete_and_move_text": "移動先「[[:$1]]」は既に存在します。\n移動のためにこのページを削除しますか?",
        "delete_and_move_confirm": "はい、ページを削除します",
        "delete_and_move_reason": "「[[$1]]」からの移動のために削除",
        "selfmove": "移動元と移動先のページ名が同じです。\n自分自身には移動できません。",
        "move-leave-redirect": "移動元に転送ページを作成する",
        "protectedpagemovewarning": "<strong>警告:</strong> このページは保護されているため、管理者権限を持つ利用者のみが移動できます。\n参考として以下に最後の記録を表示します:",
        "semiprotectedpagemovewarning": "<strong>注意:</strong> このページは保護されているため、登録利用者のみが移動できます。\n参考として以下に最後の記録を表示します:",
-       "move-over-sharedrepo": "== ファイルが存在します ==\n[[:$1]]は共有リポジトリ上に存在します。ファイルをこの名前に移動すると共有ファイルを上書きします。",
+       "move-over-sharedrepo": "[[:$1]]は共有リポジトリ上に存在します。ファイルをこの名前に移動すると共有ファイルを上書きします。",
        "file-exists-sharedrepo": "選ばれたファイル名は既に共有リポジトリ上で使用されています。\n別の名前を選んでください。",
        "export": "ページの書き出し",
        "exporttext": "ここでは単独あるいは複数のページの本文と編集履歴を、XMLの形で書き出しができます。\nこのXMLは、他のMediaWikiを使用しているウィキで[[Special:Import|取り込みページ]]を使用して取り込みができます。\n\nページを書き出すには、下の入力ボックスに一行に一つずつ書き出したいページの名前を記入してください。また、編集履歴とともにすべての過去版を含めて書き出すのか、最新版のみを書き出すのか選択してください。\n\n後者の場合ではリンクの形で使うこともできます。例えば、[[{{#Special:Export}}/{{MediaWiki:Mainpage}}]]はページ「[[{{MediaWiki:Mainpage}}]]」が対象になります。",
        "javascripttest-pagetext-frameworks": "以下のテストフレームワークから1つ選択してください: $1",
        "javascripttest-pagetext-skins": "テストを実行する外装を選択してください:",
        "javascripttest-qunit-intro": "mediawiki.org上の[$1 テストのドキュメント]を参照してください。",
-       "tooltip-pt-userpage": "自分の利用者ページ",
+       "tooltip-pt-userpage": "{{GENDER:|自分の利用者}}ページ",
        "tooltip-pt-anonuserpage": "自分が編集しているIPアドレスの利用者ページ",
        "tooltip-pt-mytalk": "自分のトークページ",
        "tooltip-pt-anontalk": "このIPアドレスからなされた編集についての議論",
        "tooltip-feed-rss": "このページのRSSフィード",
        "tooltip-feed-atom": "このページのAtomフィード",
        "tooltip-t-contributions": "{{GENDER:$1|この利用者}}による投稿の一覧",
-       "tooltip-t-emailuser": "この利用者にメールを送信する",
+       "tooltip-t-emailuser": "{{GENDER:$1|この利用者}}にメールを送信します",
        "tooltip-t-info": "このページについての詳細情報",
        "tooltip-t-upload": "ファイルをアップロードする",
        "tooltip-t-specialpages": "特別ページの一覧",
        "hebrew-calendar-m11-gen": "アブ",
        "hebrew-calendar-m12-gen": "エルール",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|トーク]])",
+       "timezone-local": "ローカル",
        "duplicate-defaultsort": "<strong>警告:</strong> 既定のソートキー「$2」が、その前に書かれている既定のソートキー「$1」を上書きしています。",
        "duplicate-displaytitle": "<strong>警告:</strong> DISPLAYTITLE「$2」が、その前に書かれているDISPLAYTITLE「$1」を上書きしています。",
        "invalid-indicator-name": "<strong>エラー:</strong> ページ・ステータス・インディケーターの <code>name</code> 属性は空であってはいけません。",
        "version-libraries-license": "ライセンス",
        "version-libraries-description": "説明",
        "version-libraries-authors": "作者",
-       "redirect": "ファイル名、利用者ID、ページID、版IDでの転送",
+       "redirect": "ã\83\95ã\82¡ã\82¤ã\83«å\90\8dã\80\81å\88©ç\94¨è\80\85IDã\80\81ã\83\9aã\83¼ã\82¸IDã\80\81ç\89\88IDã\80\81è¨\98é\8c²IDã\81§ã\81®è»¢é\80\81",
        "redirect-legend": "ファイルまたはページヘの転送",
-       "redirect-summary": "ã\81\93ã\81®ç\89¹å\88¥ã\83\9aã\83¼ã\82¸ã\81¯ã\80\81ã\83\95ã\82¡ã\82¤ã\83« (ã\83\95ã\82¡ã\82¤ã\83«å\90\8dã\82\92æ\8c\87å®\9a\80\81ã\83\9aã\83¼ã\82¸ (ç\89\88 ID ã\81¾ã\81\9fã\81¯ã\83\9aã\83¼ã\82¸ ID ã\82\92æ\8c\87å®\9a\80\81å\88©ç\94¨è\80\85ã\83\9aã\83¼ã\82¸ (å\88©ç\94¨è\80\85 ID ã\82\92æ\95´æ\95°ã\81§æ\8c\87å®\9a) ã\81«è»¢é\80\81ã\81\95ã\82\8cã\81¾ã\81\99ã\80\82使ç\94¨ä¾\8b: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]]",
+       "redirect-summary": "ã\81\93ã\81®ç\89¹å\88¥ã\83\9aã\83¼ã\82¸ã\81¯ã\80\81ã\83\95ã\82¡ã\82¤ã\83« (ã\83\95ã\82¡ã\82¤ã\83«å\90\8dã\82\92æ\8c\87å®\9a\80\81ã\83\9aã\83¼ã\82¸ (ç\89\88 ID ã\81¾ã\81\9fã\81¯ã\83\9aã\83¼ã\82¸ ID ã\82\92æ\8c\87å®\9a\80\81å\88©ç\94¨è\80\85ã\83\9aã\83¼ã\82¸ (å\88©ç\94¨è\80\85 ID ã\82\92æ\95´æ\95°ã\81§æ\8c\87å®\9a) ã\80\81è¨\98é\8c²é \85ç\9b® (è¨\98é\8c² ID ã\82\92æ\8c\87å®\9a) ã\81«è»¢é\80\81ã\81\95ã\82\8cã\81¾ã\81\99ã\80\82使ç\94¨ä¾\8b: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], [[{{#Special:Redirect}}/logid/186]]",
        "redirect-submit": "実行",
        "redirect-lookup": "検索の種類:",
        "redirect-value": "値:",
        "redirect-page": "ページ ID",
        "redirect-revision": "ページの版 ID",
        "redirect-file": "ファイル名",
+       "redirect-logid": "記録 ID",
        "redirect-not-exists": "値が見つかりません",
        "fileduplicatesearch": "重複ファイルの検索",
        "fileduplicatesearch-summary": "重複ファイルをハッシュ値に基づいて検索します。",
        "expand_templates_preview_fail_html": "<em>{{SITENAME}} ではHTMLソースが有効になっており、セッションデータの損失が生じているので、JavaScript の攻撃に対する予防措置としてプレビューは表示されません。</em>\n\n<strong>これが合法的なプレビューの試みである場合には、もう一度試してください。</strong>\nそれでも動作しない場合は、[[Special:UserLogout|ログアウト]]して再度ログインしてみてください。",
        "expand_templates_preview_fail_html_anon": "<em>{{SITENAME}} ではHTMLソースが有効になっており、ログインしていないため、JavaScript の攻撃に対する予防措置としてプレビューは表示されません。</em>\n\n<strong>これが合法的なプレビューの試みである場合には、[[Special:UserLogin|ログイン]]してもう一度試してください。</strong>",
        "expand_templates_input_missing": "文章を入力してください。",
-       "pagelanguage": "ページ言語選択",
+       "pagelanguage": "ページ言語の変更",
        "pagelang-name": "ページ",
        "pagelang-language": "言語",
        "pagelang-use-default": "既定の言語を使用",
        "pagelang-submit": "変更",
        "right-pagelang": "ページの言語を変更",
        "action-pagelang": "ページの言語の変更",
-       "log-name-pagelang": "言語変更記録",
+       "log-name-pagelang": "言語変更記録",
        "log-description-pagelang": "これはページ言語の変更の記録です。",
-       "logentry-pagelang-pagelang": "$1 がページ $3 の言語を $4 から $5 に{{GENDER:$2|変更しました}}",
+       "logentry-pagelang-pagelang": "$1 が $3 の言語を $4 から $5 に{{GENDER:$2|変更しました}}",
        "default-skin-not-found": "あなたのウィキの既定の外装 <code>$1</code> として定義されている <code>$wgDefaultSkin</code> は利用できません。\n\nあなたのインストールには以下の{{PLURAL:$4|skin|外装}}が含まれています。{{PLURAL:$4|it|外装の有効化と既定の選択}}については、[https://www.mediawiki.org/wiki/Manual:Skin_configuration マニュアル: 外装設定] をご覧ください。\n\n$2\n\n; MediaWikiをインストールしたばかりの場合:\n: gitからインストールしたか、その他の何らかの方法でソースコードから直接インストールした場合には、これは期待されたとおりの動作です。[https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's skin directory] から外装をインストールしてみてください。\n:* [https://www.mediawiki.org/wiki/Download tarball installer] をダウンロードしてみてください。これにはいくつかの外装と拡張機能が含まれています。 <code>skins/</code> ディレクトリからコピー&ペーストできます。\n:* Downloading individual skin tarballs from [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Using Git to download skins].\n: あなたがMediaWiki開発者の場合、これを行うことであなたのgitリポジトリに干渉することはありません。\n\n; MediaWiki をアップグレードした場合:\n: MediaWiki 1.24 以降のバージョンでは、インストール済みの外装は自動的には有効になりません。 ([https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery マニュアル:外装の自動探索] をご覧ください)。<code>LocalSettings.php</code> に以下の{{PLURAL:$5|line|行}}をペーストして、現在インストールされている{{PLURAL:$5|skin|外装}}を有効にできます。\n\n<pre dir=\"ltr\">$3</pre>\n\n; <code>LocalSettings.php</code>を編集したばかりの場合:\n: 外装名に打ち間違いがないか再度確認してください。",
        "default-skin-not-found-no-skins": "<code>$1</code>で定義されている、あなたのウィキの既定の外装 (<code>$wgDefaultSkin</code>)は利用できません。\n\n外装をインストールしていません。\n\n; MediaWikiをインストールしたばかりか更新したばかりの場合:\n: gitからインストールしたか、その他の何らかの方法でソースコードから直接インストールした場合には、これは期待されたとおりの動作です。MediaWikiの1.24およびそれ以降は、メインのリポジトリ内には任意の外装が含まれていません。[https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's skin directory] から外装をインストールしてみてください。, by:\n:* 個々の外装 tarballs を[https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org] ダウンロードすること。\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Using Git to download skins].\n: あなたがMediaWiki開発者の場合、これを行うことであなたのgitリポジトリに干渉することはありません。外装の有効化と既定の選択についての情報は、[https://www.mediawiki.org/wiki/Manual:Skin_configuration マニュアル:外装設定] をご覧ください。",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (有効)",
index ac1921e..7079b8a 100644 (file)
@@ -6,7 +6,8 @@
                        "Yocahuna",
                        "គីមស៊្រុន",
                        "아라",
-                       "Chabi1"
+                       "Chabi1",
+                       "Katxis"
                ]
        },
        "tog-underline": "Lingk andalainin",
        "actions": "Akshan",
        "namespaces": "Niemspies",
        "variants": "Vieriant",
+       "navigation-heading": "Navigieshan menyuu",
        "errorpagetitle": "Era",
        "returnto": "Ritoern a $1",
        "tagline": "Frahn {{SITENAME}}",
        "disclaimers": "Diskliema",
        "disclaimerpage": "Project: Jinaral diskliema",
        "edithelp": "Editin elp",
-       "mainpage": "Mien piej",
+       "mainpage": "Mien Piej",
        "mainpage-description": "Mien piej",
        "policy-url": "Project:Palisi",
        "portal": "Komiuniti puotal",
        "nstab-template": "Templit",
        "nstab-help": "Elp piej",
        "nstab-category": "Kiatigari",
+       "mainpage-nstab": "Mien piej",
        "nosuchaction": "No soch akshan",
        "nosuchactiontext": "Di akshan spesifai bai di URL invalid.\nYu maita mistaip di URL, ar fala a inkarek lingk.\nDis maita indikiet alzwel wahn bog ina di saafwier yuuz bai {{SITENAME}}.",
        "nosuchspecialpage": "No soch peshal piej",
        "login-throttled": "Yu mek tomoch riisant lagiin atemp.\nBegyu wiet likl bifuo yu chrai agen.",
        "loginlanguagelabel": "Langwij: $1",
        "suspicious-userlogout": "Yu rikwes fi lag out dinai bikaa iluk laik se isen bai a brok brouza ar kiashin praxi.",
+       "pt-login": "Lagiin‎",
+       "pt-login-button": "Lagiin‎",
+       "pt-createaccount": "Kriet akount‎",
        "resetpass_announce": "Yu lag iin wid a tempareri e-miel kuod.\nFi finish lag iin, yu mos set a nyuu paaswod yaso:",
        "resetpass_header": "Chienj akount paaswod",
        "oldpassword": "Uol paaswod:",
        "notextmatches": "No piej tex mach",
        "prevn": "priivos {{PLURAL:$1|$1}}",
        "nextn": "nex {{PLURAL:$1|$1}}",
+       "shown-title": "Shuo $1 {{PLURAL:$1|result|results}} po piej",
        "viewprevnext": "Vyuu ($1 {{int:pipe-separator}} $2) ($3)",
+       "searchprofile-articles": "Kantent piej",
+       "searchprofile-images": "Moltimidia",
+       "searchprofile-everything": "Ebriting",
+       "searchprofile-advanced": "Advans",
+       "searchprofile-articles-tooltip": "Saach ina $1",
+       "searchprofile-images-tooltip": "Saach fi fail",
+       "searchprofile-everything-tooltip": "Saach aal kantent (inkluudn taak piej)",
+       "searchprofile-advanced-tooltip": "Saach ina kostom niemspies",
        "search-result-size": "$1 ({{PLURAL:$2|1 wod|$2 wod}})",
        "search-redirect": "(riidirek $1)",
        "search-section": "(sekshan $1)",
        "recentchanges": "Riisant chienjdem",
        "recentchanges-legend": "Riisant chienj apshan",
        "recentchanges-feed-description": "Chrak di muos riisant chienjdem tu di wiki ina dis fiid.",
+       "recentchanges-label-newpage": "Dis edit kriet nyuu piej",
+       "recentchanges-label-minor": "Dis a maina edit",
+       "recentchanges-label-bot": "Dis edit pofaam bai bot",
        "rclistfrom": "Shuo nyuu chienjdem we taat frahn $3 $2",
        "rcshowhideminor": "$1 maina editdem",
+       "rcshowhideminor-show": "Shuo",
        "rcshowhidebots": "$1 batdem",
        "rcshowhideliu": "$1 lag-iin yuuzadem",
        "rcshowhideanons": "$1 ananimos yuuzadem",
+       "rcshowhideanons-show": "Shuo",
        "rcshowhidemine": "$1 mi editdem",
+       "rcshowhidemine-show": "Shuo",
        "rclinks": "Shuo laas $1 chienj ina laas $2 die<br />$3",
        "diff": "dif",
        "hist": "isch",
        "rc-enhanced-expand": "Shuo ditiel (rikwaya JavaScript)",
        "rc-enhanced-hide": "Aid ditiel",
        "recentchangeslinked": "Rilietid chienj",
+       "recentchangeslinked-toolbox": "Rilietid chienj‎",
        "recentchangeslinked-title": "Chienj riliet tu \"$1\"",
        "recentchangeslinked-summary": "Dis a lis a riisent chienj wa mek tu piej wa lingk frahn spesifai piej (ar tu memba a spesifai kiatigeri).\nPiej pahn [[Special:Watchlist|yu wachlis]] dem '''buol'''.",
        "recentchangeslinked-page": "Piej niem",
        "recentchangeslinked-to": "Shuo chienjdem tu piej wa lingk tu di gibn piej insted",
        "upload": "Opluod fail",
        "uploadlogpage": "Opluod lag",
+       "imgfile": "fail",
+       "file-anchor-link": "Fail",
        "filehist": "Fail ischri",
        "filehist-help": "Klik pan a diet/taim fi vyuu di fail az ou iapier a di taim.",
        "filehist-current": "korant",
        "filehist-user": "Yuuza",
        "filehist-dimensions": "Daimenshan",
        "filehist-comment": "Kament",
-       "imagelinks": "Fail lingk",
+       "imagelinks": "Fail Yuusij",
        "linkstoimage": "Di falarin {{PLURAL:$1|piej lingk|$1 piejdem lingk}}",
        "sharedupload": "Dis fail kom frahn $1 ahn kiahn yuuz bai ada prajek.",
        "uploadnewversion-linktext": "Opluod nyuu voerjan a dis fail",
+       "randompage": "Random piej",
        "statistics": "Tatistik",
        "nbytes": "$1 {{PLURAL:$1|bait|bait}}",
        "nmembers": "$1 {{PLURAL:$1|memba|membadem}}",
        "pager-older-n": "{{PLURAL:$1|uola 1|uola $1}}",
        "booksources": "Buk suos",
        "booksources-search-legend": "Saach fi buk suos",
+       "booksources-search": "Saach",
        "log": "Lagdem",
        "allpages": "Aal piej",
        "prevpage": "Priivos piej ($1)",
        "block-log-flags-nocreate": "akount krieshan disiebl",
        "movepagetext": "Yuuz di faam biluo fi riniem a piej, ahn muuv aal a i'ischri tu di nyuu niem.\nDi uol taikl wi bikomz a riidirek piej tu di nyuu taikl.\nYu kiahn opdiet riidirek wa paint tu di orijinal taikl aatamatikali.\nEf yu no chuuz fi dwiit, bi shuor fi chek fi [[Special:DoubleRedirects|dobl]] ar [[Special:BrokenRedirects|brok riidirek]].\nYu rispans fi mek shuor se lingk kantiniu fi paint we dehn supuoz fi go.\n\nNuot se di piej '''naa''' go muuv ef piej de aredi a di nyuu taikl, anles iempti ar a riidirek ahn no ha no paas edit ischri.\nDis miin se yu kiahn riiniem a piej bak tu wa iriiniem fram ef yu mek mistiek, ahn yu kyaahn uovarait a egzistin piej.\n\n'''Waanin!'''\nDis kiahn bi a jrastik ahn anexpektid chienj fi a papiula piej;\nbegyu mek shuor yu andastan di kansikwens a dis bifuo yu prosiid.",
        "movepagetalktext": "Di asuosietid taak piej wi aatamatikali muuv alangx widi '''anles:'''\n* A nan-emti taak piej egzis aredi anda di nyuu niem, ar\n*Yu anchel di bax biluo.\n\nIna demde kies, yu wi afi muuv ar moerj di piej manyuali ef yu dizaya.",
-       "movearticle": "Muuv piej",
        "newtitle": "Tu nyuu taikl:",
        "move-watch": "Wach suos piej ahn taagit piej",
        "movepagebtn": "Muuv piej",
        "tooltip-pt-mycontris": "Lis a yu kanchribyuushan",
        "tooltip-pt-login": "Yu inkorij fi lag iin; ousomeba, ino mos ahn boun",
        "tooltip-pt-logout": "Lag out",
+       "tooltip-pt-createaccount": "Yu inkorij fi kriet wah akount ah lagiin; ousomeba, a no mos",
        "tooltip-ca-talk": "Diskoshan bout di kantent piej",
-       "tooltip-ca-edit": "Yu kiahn edit dis piej. Du yuuz di priivyuu botn bifuo yu sieb",
+       "tooltip-ca-edit": "Edit dis piej",
        "tooltip-ca-addsection": "Taat a nyuu sekshan",
        "tooltip-ca-viewsource": "Dis piej protek.\nYu kiahn vyuu isuos.",
        "tooltip-ca-history": "Paas rivijan a dis piej",
        "tooltip-search": "Saach {{SITENAME}}",
        "tooltip-search-go": "Go tu a piej wid disaya egzak niem ef iegzis",
        "tooltip-search-fulltext": "Saach di piejdem fi disaya tex",
+       "tooltip-p-logo": "Visit di mien piej",
        "tooltip-n-mainpage": "Vizit di mien piej",
        "tooltip-n-mainpage-description": "Vizit di mien piej",
        "tooltip-n-portal": "Bout di prajek, wa yu kiahn du, we fi fain tingz",
        "tooltip-watch": "Ad dis piej tu yu wachlis",
        "tooltip-rollback": "\"Ruolbak\" rivoert edit(dem) tu dis piej a di laas kanchribiuta ina wan klik",
        "tooltip-undo": "\"Andu\" rivoert dis edit ahn opin di edit faam ina priivyuu muod. Ilou yu fi ad riizn ina di somari.",
+       "pageinfo-toolboxlink": "Piej infamieshan",
        "previousdiff": "← Uola edit",
        "nextdiff": "Nyuwa edit",
        "file-info-size": "$1 × $2 pixl, fail saiz: $3, MIME taip: $4",
        "watchlisttools-view": "Vyuu rilivant chienjdem",
        "watchlisttools-edit": "Vyuu ahn edit wachlis",
        "watchlisttools-raw": "Edit raa wachlis",
-       "specialpages": "Peshal piej"
+       "specialpages": "Peshal piej",
+       "logentry-upload-upload": "$1 {{GENDER:$2|uploaded}} $3",
+       "searchsuggest-search": "Saach‎"
 }
index 230697a..b190c1d 100644 (file)
@@ -32,6 +32,7 @@
        "tog-hideminor": "დამალე მცირე რედაქტირება ბოლო ცვლილებებში",
        "tog-hidepatrolled": "დამალეთ შესწორებული რედაქტირებები ბოლო ცვლილებებში",
        "tog-newpageshidepatrolled": "დამალეთ შემოწმებული გვერდები ახალი გვერდების სიიდან",
+       "tog-hidecategorization": "გვერდების კატეგორიზაციის დამალვა",
        "tog-extendwatchlist": "გავრცობილი კონტროლის სია ყველა დაკავშირებული ცვლილების ჩვენების ჩათვლით",
        "tog-usenewrc": "ბოლო ცვლილებების და კონტროლის სიის ცვლილებების დაჯგუფება",
        "tog-numberheadings": "ავტომატურად დანომრე ქვესათაურები",
        "tog-watchlisthidebots": "დამალე რობოტის რედაქტირება კონტროლის სიაში",
        "tog-watchlisthideminor": "დამალეთ საკონტროლო სიიდან მცირე რედაქტირებები",
        "tog-watchlisthideliu": "დამალეთ დარეგისტრირებულ მოხმარებელთა ცვლილებები ჩემი კონტროლის სიიდან",
+       "tog-watchlistreloadautomatically": "გადატვირთე კონტროლის სია ავტომატურად, როგორც კი ფილტრი შეიცვლება (საჭიროა JavaScript)",
        "tog-watchlisthideanons": "დამალეთ ანონიმურ მომხმარებელთა შესწორებები ჩემი კონტროლის სიიდან",
        "tog-watchlisthidepatrolled": "დამალეთ საკონტროლო სიიდან პატრულირებული რედაქტირებები",
+       "tog-watchlisthidecategorization": "გვერდების კატეგორიზაციის დამალვა",
        "tog-ccmeonemails": "გამომიგზავნე ელფოსტების ასლები, რომლებსაც მე სხვა მომხმარებლებს ვუგზავნი",
        "tog-diffonly": "დამალე გვერდის შიგთავსი ცვლილების ქვევით",
        "tog-showhiddencats": "დამალული კატეგორიების ჩვენება",
        "october-date": "$1 ოქტომბერი",
        "november-date": "$1 ნოემბერი",
        "december-date": "$1 დეკემბერი",
+       "period-am": "AM",
+       "period-pm": "PM",
        "pagecategories": "{{PLURAL:$1|კატეგორია|კატეგორიები}}",
        "category_header": "სტატიები კატეგორიაში „$1“",
        "subcategories": "ქვეკატეგორიები",
        "morenotlisted": "ეს არასრული სიაა.",
        "mypage": "გვერდი",
        "mytalk": "განხილვა",
-       "anontalk": "á\83\90á\83\9b IP-á\83¡ á\83\92á\83\90á\83\9cá\83®á\83\98á\83\9aá\83\95á\83\90",
+       "anontalk": "განხილვა",
        "navigation": "ნავიგაცია",
        "and": "&#32;და",
        "qbfind": "მოძებნე",
        "laggedslavemode": "ყურადღება: გვერდი შესაძლოა არ შეიცავდეს ბოლო ცვლილებებს.",
        "readonly": "მონაცემთა ბაზა დახურულია",
        "enterlockreason": "მიუთიეთ ბლოკირების მიზეზი და ხანგრძლივობის ვადა",
-       "readonlytext": "მონაცემთა ბაზა ამჟამად დახურული ახალი რედაქტირებისთვის და სხვა ცვლილებებისთვის, სავარაუდოდ პერიოდული ბაზის გამართვის სამუშაოების გამო, რის შემდეგაც ის კვლავ ნორმალურ ფუნქციას დაუბრუნდება.\n\nადმინისტრატორმა, რომელმაც ის დაბლოკა, შემდეგი მიზეზი მოიყვანა: $1",
+       "readonlytext": "მონაცემთა ბაზა ამჟამად დახურულია ახალი რედაქტირებისთვის და სხვა ცვლილებებისთვის, სავარაუდოდ პერიოდული ბაზის გამართვის სამუშაოების გამო, რის შემდეგაც ის კვლავ ნორმალურ ფუნქციონირებას დაუბრუნდება.\n\nსისტემურმა ადმინისტრატორმა, რომელმაც ის დაბლოკა, შემდეგი მიზეზი მოიყვანა: $1",
        "missing-article": "სისტემამ ვერ აღმოაჩინა მოთხოვნილი გვერდის ტექსტი მონაცემთა ბაზაში,  „$1“ $2.\n\nამგვარი სიტუაცია შესაძლოა წარმოიშვა იმ გვერდის ისტორიის სანახავად, რომელიც უკვე წაშლილი იყო.\n\nიმ შემთხვევაში, თუ საქმე ამაში არ არის, სავარაუდოდ თქვენ აღმოაჩინეთ შეცდომა პროგრამულ კოდში.\nგთხოვთ შეატყობინოთ [[Special:ListUsers/sysop|ადმინისტრატორს]],  URL-ის მითითებით.",
        "missingarticle-rev": "(ჩასწორება#: $1)",
        "missingarticle-diff": "(ცვლილება: $1, $2)",
        "viewsource": "იხილე წყარო",
        "viewsource-title": "იხილეთ წყარო გვერდისთვის $1",
        "actionthrottled": "სიჩქარის შეზღუდვა.",
-       "actionthrottledtext": "á\83¡á\83\9eá\83\90á\83\9bá\83\97á\83\90á\83\9c á\83\91á\83 á\83«á\83\9dá\83\9aá\83\90á\83¡á\83\97á\83\90á\83\9c á\83\93á\83\90á\83\99á\83\90á\83\95á\83¨á\83\98á\83 á\83\94á\83\91á\83\98á\83\97 á\83\90á\83\99á\83 á\83«á\83\90á\83\9aá\83£á\83\9aá\83\98á\83\90 á\83¨á\83\94á\83\9bá\83\93á\83\94á\83\92á\83\98 á\83\9bá\83\9dá\83\9cá\83\90á\83ªá\83\94á\83\9bá\83\94á\83\91á\83\98á\83¡ á\83\9bá\83 á\83\90á\83\95á\83\90á\83\9aá\83¯á\83\94á\83  á\83\92á\83\90á\83\9bá\83\94á\83\9dá\83 á\83\94á\83\91á\83\90. á\83\92á\83\97á\83®á\83\9dá\83\95á\83\97 á\83\92á\83\90á\83\98á\83\9bá\83\94á\83\9dá\83 á\83\9dá\83\97 á\83\98á\83\92á\83\98 á\83\9bá\83\9dá\83\92á\83\95á\83\98á\83\90á\83\9cá\83\94á\83\91á\83\98á\83\97.",
+       "actionthrottledtext": "á\83¡á\83\9eá\83\90á\83\9bá\83\97á\83\90á\83\9c á\83\91á\83 á\83«á\83\9dá\83\9aá\83\90á\83¡á\83\97á\83\90á\83\9c á\83\93á\83\90á\83\99á\83\90á\83\95á\83¨á\83\98á\83 á\83\94á\83\91á\83\98á\83\97 á\83\90á\83\99á\83 á\83«á\83\90á\83\9aá\83£á\83\9aá\83\98á\83\90 á\83\90á\83\9b á\83\9bá\83\9dá\83¥á\83\9bá\83\94á\83\93á\83\94á\83\91á\83\98á\83¡ á\83\9bá\83 á\83\90á\83\95á\83\90á\83\9aá\83¯á\83\94á\83  á\83\92á\83\90á\83\9bá\83\94á\83\9dá\83 á\83\94á\83\91á\83\90 á\83\93á\83 á\83\9dá\83\98á\83¡ á\83\9bá\83\9dá\83\99á\83\9aá\83\94 á\83\9bá\83\9dá\83\9cá\83\90á\83\99á\83\95á\83\94á\83\97á\83¨á\83\98. á\83\97á\83¥á\83\95á\83\94á\83\9c á\83\9aá\83\98á\83\9bá\83\98á\83¢á\83¡ á\83\92á\83\90á\83\93á\83\90á\83\90á\83­á\83\90á\83 á\83\91á\83\94á\83\97. á\83\92á\83\97á\83®á\83\9dá\83\95á\83\97, á\83\92á\83\90á\83\98á\83\9bá\83\94á\83\9dá\83 á\83\9dá\83\97 á\83 á\83\90á\83\9bá\83\93á\83\94á\83\9cá\83\98á\83\9bá\83\94 á\83¬á\83£á\83\97á\83¨á\83\98.",
        "protectedpagetext": "ეს გვერდი დაბლოკილია რედაქტირებისათვის ან სხვა მოქმედებისათვის.",
        "viewsourcetext": "თქვენ შეგიძლიათ ნახოთ ამ გვერდის საწყისი ფაილი და მისი ასლი შექმნათ.",
        "viewyourtext": "თქვენ შეგიძლიათ იხილოთ და დააკოპიროთ  <strong>თქვენი რედაქტირებების</strong> საწყისი ტექსტი ამ გვერდზე:",
        "protectedinterface": "ეს გვერდი წარმოადგენს ტექსტურ ინტერფეისს პროგრამული უზრუნველყოფისათვის და დაცულია ვანდალიზმის აღკვეთის მიზნით.",
        "editinginterface": "'''ყურადღება:''' თქვენ არედაქტირებთ გვერდს, რომელიც პროგრამის ინტერფეისის ტექსტს შეიცავს. \nამ გვერდზე განხორციელებული რედაქტირება გამოიწვევს ამ ვიკის სხვა მომხმარებელთა სამუშაო ინტერფეისის შეცვლასაც. \nიმისათვის, რომ დაამატოთ ან შეცვალოთ თარგმანები ყველა ვიკიში, გთხოვთ, გამოიყენოთ მედიავიკის ლოკალიზაციის პროექტი [//translatewiki.net/ translatewiki.net].",
        "translateinterface": "თარგმანების ყველა ვიკიში დასამატებლად ან შესაცვლელად, გთხოვთ გამოიყენოთ მედიავიკებისლოკალიზაციის პროექტი [//translatewiki.net/ translatewiki.net].",
-       "cascadeprotected": "ეს გვერდი რედაქტირებისგან დაცულია, რადგან იგი ჩართულია შემდეგ {{PLURAL:$1|გვერდში, რომლის |გვერდებში, რომელთა}} დასაცავადაც ჩართულია პარამეტრი \"იერარქიული\":\n$2",
+       "cascadeprotected": "ეს გვერდი რედაქტირებისგან დაცულია, რადგან იგი ჩართულია შემდეგ {{PLURAL:$1|გვერდში, რომლის|გვერდებში, რომელთა}} დასაცავადაც ჩართულია პარამეტრი \"იერარქიული\":\n$2",
        "namespaceprotected": "თქვენ არ გაქვთ '''$1''' სახელთა სივრცეში გვერდების რედაქტირების უფლება.",
        "customcssprotected": "თქვენ არ გაქვთ ამ CSS გვერდის რედაქტირების უფლება, ვინაიდან ის სხვა მომხმარებლის პირად კონფიგურაციას შეიცავს.",
        "customjsprotected": "თქვენ არ გაქვთ ამ JavaScript გვერდის რედაქტირების უფლება, ვინაიდან ის სხვა მომხმარებლის პირად კონფიგურაციას შეიცავს.",
        "mypreferencesprotected": "თქვენ არ გაქვთ თქვენი კონფიგურაციის შეცვლის ნებართვა.",
        "ns-specialprotected": "გვერდების რედაქტირება სახელთა სივრცეში {{ns:special}} შეუძლებელია.",
        "titleprotected": "შემდეგი გვერდის შექმნა აკრძალულია მომხმარებელ [[User:$1|$1]]-ს მიერ.\nმოცემულია შემდეგი ახსნა: „''$2''“.",
-       "filereadonlyerror": "ფაილი \"$1\" შეცვლა ვერ ხერხდება, რადგანაც ფაილის საცავი \"$2\" მხოლოდ კითხვის რეჟიმშია.\n\nადმინისტრატორი რომელმაც ის დაბლოკა მიუთითა შემდეგი მიზეზი: \"$3\".",
+       "filereadonlyerror": "ფაილის \"$1\" შეცვლა ვერ ხერხდება, რადგანაც ფაილის საცავი \"$2\" მხოლოდ კითხვის რეჟიმშია.\n\nსისტემურმა ადმინისტრატორმა, რომელმაც ის დაბლოკა, მოიყვანა შემდეგი მიზეზი: \"$3\".",
        "invalidtitle-knownnamespace": "დაუშვებელი სათაური სახელთა სივრცე \"$2\" და ტექსტი \"$3\"-თან",
        "invalidtitle-unknownnamespace": "დაუშვებელი სათაური უცნობი სახელთა სივრცის ნომერი $1 და ტექსტი \"$2\"-ით",
        "exception-nologin": "შესვლა არ განხორციელდა",
        "virus-scanfailed": "სკანირების შეცდომა  (კოდი $1)",
        "virus-unknownscanner": "უცნობი ანტივირუსი:",
        "logouttext": "'''თქვენ ამჟამად გასული ხართ სისტემიდან.'''\n\nზოგიერთმა გვერდმა შესაძლოა ისევ ისე გააგრძელოს ჩვენება თითქოს თქვენ ჯერ კიდევ სისტემაში იყოთ. ამის მოსაგვარებლად საჭიროა თქვენი ბრაუზერის მეხსიერების გაწმენდა.",
+       "cannotlogoutnow-title": "ამჟამად გასვლა შეუძლებელია",
+       "cannotlogoutnow-text": "გასვლა შეუძლებელია, როდესაც იყენებთ $1-ს.",
        "welcomeuser": "მოგესალმებით, $1!",
        "welcomecreation-msg": "თქვენი ანგარიში შექმნილია.\nარ დაგავიწყდეთ თქვენი [[Special:Preferences|{{SITENAME}}-ის კონფიგურაციის]] შეცვლა.",
        "yourname": "მომხმარებელი:",
        "remembermypassword": "დამიმახსოვრე ამ კომპიუტერზე (მაქსიმუმ $1 {{PLURAL:$1|დღე}})",
        "userlogin-remembermypassword": "დამიმახსოვრე",
        "userlogin-signwithsecure": "უსაფრთხო კავშირის გამოყენება",
+       "cannotloginnow-title": "ამჟამად შესვლა შუეძლებელია",
+       "cannotloginnow-text": "შესვლა შეუძლებელია, როდესაც იყენებთ $1-ს.",
        "yourdomainname": "თქვენი დომენი",
        "password-change-forbidden": "თქვენ არ შეგიძლიათ ამ ვიკიში პაროლის შეცვლა.",
        "externaldberror": "საგარეო მონაცემთა ბაზაში აუტენტიფიკაციის შეცდომაა, ან თქვენ არ გაქვთ საკმარისი უფლებები საგარეო ანგარიშში ცვლილებების შესატანად.",
        "createacct-benefit-body2": "{{PLURAL:$1|გვერდი|გვერდი}}",
        "createacct-benefit-body3": "ბოლო {{PLURAL:$1|მომხმარებელი|მომხმარებელი}}",
        "badretype": "თქვენს მიერ შეყვანილი პაროლები ერთმანეთს არ ემთხვევა.",
+       "usernameinprogress": "ამ მომხმარებლისათვის ანგარიში იქმნება. გთხოვთ, დაიცადეთ.",
        "userexists": "ეს სახელი უკვე გამოყენებულია.\nგთხოვთ, აირჩიეთ სხვა.",
        "loginerror": "შეცდომა შესვლაში",
        "createacct-error": "ანგარიშის შექმნის შეცდომა",
        "wrongpasswordempty": "პაროლი არ არის შეყვანილი. სცადეთ განმეორებით.",
        "passwordtooshort": "შეტანილი პაროლი ძალიან მოკლეა.\nიგი უნდა შეიცავდეს მინიმუმ $1 სიმბოლოს.",
        "passwordtoolong": "პაროლი არ შეიძლება აღემატებოდეს {{PLURAL:$1|1 სიმბოლო|$1 სიმბოლოები|$1 სიმბოლოს}}.",
+       "passwordtoopopular": "ფართოდ გავრცელებული პაროლის დაყენება შეუძლებელია. გთოხვთ, აირჩიეთ უფრო უნიკალური პაროლი.",
        "password-name-match": "შეტანილი პაროლი უნდა განსხვავდებოდეს მომხმარებლის სახელისგან.",
        "password-login-forbidden": "ამ მომხმარებლის სახელისა და პაროლის გამოყენება აკრძალულია.",
        "mailmypassword": "ახალი პაროლის დაყენება",
        "resetpass_submit": "მიუთითეთ პაროლი და დარეგისტრირდით",
        "changepassword-success": "თქვენი პაროლი წარმატებით შეიცვალა!",
        "changepassword-throttled": "თქვენ განახორციელეთ ანგარიშში შესვლის ზედმეტად ბევრი მცდელობა. გამორებით შეყვანამდე გთხოვთ დაიცადოთ $1.",
+       "botpasswords": "ბოტის პაროლები",
+       "botpasswords-disabled": "ბოტის პაროლები გათიშულია.",
+       "botpasswords-no-central-id": "ბოტის პაროლების გამოსაყენებლად, საჭიროა ცენტრალიზებული ანგარიშით შესვლა.",
+       "botpasswords-existing": "არსებული ბოტის პაროლები",
+       "botpasswords-createnew": "ახალი ბოტის პაროლის შექმნა",
+       "botpasswords-editexisting": "არსებული ბოტის პაროლის შეცვლა",
+       "botpasswords-label-appid": "ბოტის სახელი:",
+       "botpasswords-label-create": "შექმნა",
+       "botpasswords-label-update": "განახლება",
+       "botpasswords-label-cancel": "გაუქმება",
+       "botpasswords-label-delete": "წაშლა",
+       "botpasswords-label-resetpassword": "პაროლის აღდგენა",
+       "botpasswords-label-grants": "გამოყენებადი ნებართვები:",
+       "botpasswords-help-grants": "ყოველი ნებართვა იძლევა წვდომას ჩამოთვლილ მომხმარებელთა უფლებებზე, რომელიც მომხმარებელს აქვს. იხილეთ [[Special:ListGrants|ნებართვების ცხრილი]] მეტი ინფორმაციისთვის.",
+       "botpasswords-label-restrictions": "გამოყენების შეზღუდვები:",
+       "botpasswords-label-grants-column": "მინიჭებულია",
+       "botpasswords-bad-appid": "ბოტის სახელი \"$1\" არ არის მართებული.",
+       "botpasswords-insert-failed": "ბოტის სახელის $1\" დამატება შეუძლებელია. უკვე დამატებულია?",
+       "botpasswords-update-failed": "ბოტის სახელის \"$1\" განახლება შეუძლებელია. წაშლილია?",
+       "botpasswords-created-title": "ბოტის პაროლი შექმნილია",
+       "botpasswords-created-body": "ბოტის პაროლი \"$1\" წარმატებით შეიქმნა.",
+       "botpasswords-updated-title": "ბოტის პაროლი განახლდა",
+       "botpasswords-updated-body": "ბოტის პაროლი \"$1\" წარმატებით განახლდა.",
+       "botpasswords-deleted-title": "ბოტის პაროლი წაშლილია",
+       "botpasswords-deleted-body": "ბოტის პაროლი \"$1\" წაიშალა.",
+       "botpasswords-newpassword": "ახალი პაროლი <strong>$1</strong>-ით შესასვლელად არის <strong>$2</strong>. <em>გთხოვთ დაიმახსოვრეთ ან ჩაიწერეთ.</em>",
+       "botpasswords-no-provider": "BotPasswordsSessionProvider არ არის ხელმისაწვდომი.",
+       "botpasswords-restriction-failed": "ბოტის პაროლის შეზღუდვები არ უშვებს ამ ავტორიზაციას.",
+       "botpasswords-invalid-name": "მითითებული მომხმარებელი ბოტის პაროლის გამყოფს (\"$1\").",
+       "botpasswords-not-exist": "მომხმარებელ \"$1\"-ს არ აქვს ბოტის პაროლი, სახელად \"$2\".",
        "resetpass_forbidden": "პაროლის შეცვლა შეუძლებელია",
        "resetpass-no-info": "კონკრეტულად ამ გვერდთან სამუშაოდ თქვენ უნდა წარადგინოთ თავი სისტემისადმი.",
        "resetpass-submit-loggedin": "პაროლის შეცვლა",
        "passwordreset-emailtext-ip": "ვიღაცამ (შესაძლოა თქვენ, ამ IP-მისამართიდან $1) მოითხოვა თქვენი \nპაროლის თავიდან დაყენება საიტისათვის {{SITENAME}} ($4).\n{{PLURAL:$3|შემდეგი ანგარიში მიბმულია|შემდეგი ანგარიშები მიბმულია}} ამ ელ.ფოსტის მისამართზე:\n\n$2\n\n{{PLURAL:$3|ეს დროებითი პაროლი|ეს დროებითი პაროლები}} იმოქმედებს {{PLURAL:$5|ერთი დღე|$5 დღე}}.\nთქვენ უნდა შეხვიდეთ სისტემაში და აირჩიოთ ახალი პაროლი.\nთუ თქვენ არ გაგიკეთებიათ აღნიშნული მოთხოვნა, ან გაიხსენეთ თქვენი პაროლი\nდა აღარ გსურთ მისი შეცვლა, მაშინ შეგიძლიათ იგნორირება გაუკეთოთ ამ შეტყობინებას\nდა გააგრძელოთ თქვენი ძველი პაროლის გამოყენება.",
        "passwordreset-emailtext-user": "მომხმარებელმა $1 პროექტიდან {{SITENAME}} მოითხოვა თქვენი \nპაროლის თავიდან დაყენება საიტისათვის {{SITENAME}} ($4).\n{{PLURAL:$3|შემდეგი ანგარიში მიბმულია|შემდეგი ანგარიშები მიბმულია}} ამ ელ.ფოსტის მისამართზე:\n\n$2\n\n{{PLURAL:$3|ეს დროებითი პაროლი|ეს დროებითი პაროლები}} იმოქმედებს {{PLURAL:$5|ერთი დღე|$5 დღე}}.\nთქვენ უნდა შეხვიდეთ სისტემაში და აირჩიოთ ახალი პაროლი.\nთუ თქვენ არ გაგიკეთებიათ აღნიშნული მოთხოვნა, ან გაიხსენეთ თქვენი პაროლი\nდა აღარ გსურთ მისი შეცვლა, მაშინ შეგიძლიათ იგნორირება გაუკეთოთ ამ შეტყობინებას\nდა გააგრძელოთ თქვენი ძველი პაროლის გამოყენება.",
        "passwordreset-emailelement": "მომხმარებლის სახელი: \n$1\n\nდროებითი პაროლი: \n$2",
-       "passwordreset-emailsentemail": "პაროლის თავიდან დასაყენებელი ელ.ფოსტა გაიგზავნა.",
+       "passwordreset-emailsentemail": "თუ ეს მეილი თქვენს ანგარიშთანაა დაკავშირებული, გაიგზავნება პაროლის თავიდან დასაყენებელი ელექტრონული ფოსტა.",
+       "passwordreset-emailsentusername": "თუ არსებობს მეილი, რომელიც ამ ანგარიშთანაა დაკავშირებული, გაიგზავნება პაროლის თავიდან დასაყენებელი ელექტრონული ფოსტა.",
        "passwordreset-emailsent-capture": "ქვემოთ ნაჩვენები პაროლის თავიდან დასაყენებელი წერილი გაიგზავნა.",
        "passwordreset-emailerror-capture": "ქვემოთ მოცემულია შექმნილი პაროლის დასაყენებელი წერილი, რომლის გაგზავნაც {{GENDER:$2|მომხმარებელთან}} ვერ მოხერხდა: $1 გამო",
        "changeemail": "ელ-ფოსტის მისამართის შეცვლა ან წაშლა",
-       "changeemail-header": "ანგარიშის ელ-ფოსტის მისამართის შეცვლა",
+       "changeemail-header": "შეავსეთ ეს ფორმა მეილის შესაცვლელად. თუ გსურთ თქვენი ანგარიში არ იყოს დაკავშირებული არცერთ მეილთან, ახალი მეილის მისამართის ველი დატოვეთ ცარიელი.",
+       "changeemail-passwordrequired": "ამ ცვლილების დასადასტურებლად დაგჭირდებათ პაროლის შეყვანა.",
        "changeemail-no-info": "თქვენ ავტირიზებული უნდა იყოთ ამ გვერდთან უშუალო წვდომისთვის.",
        "changeemail-oldemail": "ელ-ფოსტის ამჟამინდელი მისამართი:",
        "changeemail-newemail": "ახალი ელ-ფოსტის მისამართი:",
+       "changeemail-newemail-help": "თუ გსურთ მეილის წაშლა, ეს ველი ცარიელი უნდა დარჩეს. თუ მეილი წაიშლება, თქვენ ვერ შეძლებთ დავიწყებული პაროლის აღდგენას, ასევე არ მიიღებთ ელექტრონულ შეტყობინებებს ამ პროექტიდან.",
        "changeemail-none": "(არაფერი)",
        "changeemail-password": "თქვენი პაროლი პროექტში {{SITENAME}}:",
        "changeemail-submit": "ელ-ფოსტის შეცვლა",
        "subject": "თემა:",
        "minoredit": "მცირე რედაქტირება",
        "watchthis": "უთვალთვალე ამ გვერდს",
-       "savearticle": "შენახვა",
+       "savearticle": "á\83\92á\83\95á\83\94á\83 á\83\93á\83\98á\83¡ á\83¨á\83\94á\83\9cá\83\90á\83®á\83\95á\83\90",
        "preview": "წინასწარი გადახედვა",
-       "showpreview": "წინასწარი გადახედვა",
+       "showpreview": "á\83¬á\83\98á\83\9cá\83\90á\83¡á\83¬á\83\90á\83 á\83\98 á\83\92á\83\90á\83\93á\83\90á\83®á\83\94á\83\93á\83\95á\83\98á\83¡ á\83©á\83\95á\83\94á\83\9cá\83\94á\83\91á\83\90",
        "showdiff": "ცვლილებების ჩვენება",
        "blankarticle": "გაფრთხილება: გვერდი, რომელსაც ქმნით, ცარიელია. თუკი კვლავ დააჭერთ ღილაკს \"{{int:savearticle}}\", გვერდი შეიქმნება შემცვლელობის გარეშე.",
        "anoneditwarning": "<strong>გაფრთხილება:</strong> თქვენ არ ხართ ავტორიზირებული. თქვენი IP მისამართი საჯაროდ ხილული იქნება, თუკი განახორციელებთ რედაქტირებას. თუ თქვენ გაივლით <strong>[$1 ავტორიზაციას]</strong> ან <strong>[$2 შექმნით ანგარიშს]</strong>, სხვა უპირატესობებთან ერთად, თქვენი რედაქტირებები დაუკავშირდება თქვენს მომხმარებლის სახელს.",
        "subject-preview": "თემის გადახედვა:",
        "previewerrortext": "თქვენი ცვლილებების წინასწარი გადახედვის მცდელობის დროს მოხდა შეცდომა",
        "blockedtitle": "მომხმარებელი ბლოკირებულია",
-       "blockedtext": "'''თქვენი მომხმარებლის სახელი ან IP მისამართი დაბლოკილ იქნა.'''\n\nბლოკირება განახორციელა $1-მ.\nმიზეზად დასახელდა შემდეგი: ''$2''.\n\n* დაბლოკვის დასაწყისი: $8\n* ბლოკის ვადის გასვლის დრო: $6\n* დაბლოკილ იქნა: $7\n\nშეგიძლიათ დაუკავშირდეთ $1-ს ან რომელიმე სხვა [[{{MediaWiki:Grouppage-sysop}}|ადმინისტრატორს]] დაბლოკვის განსახილველად.\nგაითვალისწინეთ, რომ თქვენ ვერ შეძლებთ გამოიყენოთ ფუნქცია „მომხმარებლისთვის ელ. ფოსტის გაგზავნა“, თუ არ გაქვთ მითითებული მოქმედი ელ. ფოსტის მისამართი თქვენი [[Special:Preferences|ანგარიშის კონფიგურაციაში]] ან თუ დაბლოკვის შედეგად გაქვთ ამ ფუნქციის გამოყენების ნებართვა ჩამორთმეული.\nთქვენი ამჟამინდელი IP მისამართია $3, ხოლო ბლოკის იდენტიფიკატორი #$5.\nგთხოვთ, მიუთითოთ ყველა ზემოთხსენებული მონაცემი თქვენს კორესპონდენციაში.",
+       "blockedtext": "<strong>თქვენი მომხმარებლის სახელი ან IP მისამართი დაიბლოკა.</strong>\n\nბლოკირება განახორციელა $1-მ.\nმიზეზად დასახელდა შემდეგი: <em>$2</em>.\n\n* დაბლოკვის დასაწყისი: $8\n* ბლოკის ვადის გასვლის დრო: $6\n* დაბლოკილ იქნა: $7\n\nშეგიძლიათ დაუკავშირდეთ $1-ს ან რომელიმე სხვა [[{{MediaWiki:Grouppage-sysop}}|ადმინისტრატორს]] დაბლოკვის განსახილველად.\nგაითვალისწინეთ, რომ თქვენ ვერ შეძლებთ გამოიყენოთ ფუნქცია „მომხმარებლისთვის ელ. ფოსტის გაგზავნა“, თუ არ გაქვთ მითითებული მოქმედი ელ. ფოსტის მისამართი თქვენი [[Special:Preferences|ანგარიშის კონფიგურაციაში]] ან თუ დაბლოკვის შედეგად გაქვთ ამ ფუნქციის გამოყენების ნებართვა ჩამორთმეული.\nთქვენი ამჟამინდელი IP მისამართია $3, ხოლო ბლოკის იდენტიფიკატორი #$5.\nგთხოვთ, მიუთითოთ ყველა ზემოთხსენებული მონაცემი თქვენს კორესპონდენციაში.",
        "autoblockedtext": "თქვენი IP მისამართი ავტომატურად დაიბლოკა, ვინაიდან მას სხვა მომხმარებელი იყენებდა, რომელიც დაბლოკა $1-მა.\nსაბაბად მოყვანილი იყო შემდეგი:\n\n:''$2''\n\n* ბლოკის დაწყების თარიღი: $8\n* ბლოკის ვადის გასვლა: $6\n*დაიბლოკა $7\n\nშეგიძლიათ დაუკავშირდეთ $10ს ან რომელიმე სხვა\n[[{{MediaWiki:Grouppage-sysop}}|ადმინისტრატორს]] ამ ბლოკის განსახილველად.\n\nგაითვალისწინეთ, რომ თქვენ ვერ გამოიყენებთ „მისწერეთ ელ-წერილი ამ მომხმარებელს“ ფუნქციას თუ თქვენ შემოწმებული ელ-ფოსტის მისამართი\nარ გაქვთ მითითებული თქვენს [[Special:Preferences|კონფიგურაციაში]] და არ ხართ დაბლოკილი მისი გამოყენებისთვის.\n\nთქვენი IP — $3. თქვენი დაბლოკვის საიდენტიფიკაციო ნომერია $5. გთხოვთ მიუთითოთ ეს ნომერი, ნებისმიერ მიმოწერაში.",
        "blockednoreason": "მიზეზი არ არის მითითებული",
        "whitelistedittext": "გვერდების რედაქტირებისათვის თქვენ გესაჭიროებათ $1.",
        "copyrightwarning2": "*გაითვალისწინეთ, რომ ნებისმიერი წვლილი {{SITENAME}}-ში შეიძლება ჩასწორდეს, შეიცვალოს ან წაიშალოს სხვა რედაქტორების მიერ.\n*თუ არ გსურთ, რომ თქვენი ნამუშევარი შეუზღუდავად იქნეს რედაქტირებული, მას აქ ნუ განათავსებთ.<br />\n*თქვენ აგრეთვე პირობას დებთ, რომ თქვენს მიერ განთავსებული ტექსტი თქვენი დაწერილია, ან გადმოწერილია საზოგადოებრივი დომენიდან ან მსგავსი თავისუფალი წყაროდან. (იხ. $1 დეტალებისთვის).\n*'''ნუ შემოიტანთ საავტორო უფლებებით დაცულ ნაშრომს ავტორის ნებართვის გარეშე!'''",
        "editpage-cannot-use-custom-model": "ამ გვერდის მასალის მოდელი არ შეიძლება, რომ შეიცვალოს.",
        "longpageerror": "'''შეცდომა: თქვენს მიერ აკრეფილი ტექსტის ზომა {{PLURAL:$1|$1 კილობაიტია}}, რაც აღემატება, დადგენილ {{PLURAL:$2|$2 კილობაიტიან}} ზღვარს. გვერდის შენახვა შეუძლებელია.'''",
-       "readonlywarning": "'''გაფრთხილება: მონაცემთა ბაზა დახურულია პერიოდული შემოწმებისთვის, შესაბამისად თქვენ ვერ შეძლებთ რედაქტირებას ამ მომენტში.'''\nსასურველია ტექსტის ასლი შეინახოთ ტექსტურ რედაქტორში და მოგვიანებით შემოიტანოთ.\n\nმონაცემთა ბაზის დამბლოკველმა ადმინისტრატორმა შემდეგი კომენტარი დატოვა: $1",
+       "readonlywarning": "<strong>გაფრთხილება: მონაცემთა ბაზა დახურულია პერიოდული შემოწმებისთვის, შესაბამისად თქვენ ვერ შეძლებთ რედაქტირებას ამ მომენტში.</strong>\nსასურველია ტექსტის ასლი შეინახოთ ტექსტურ რედაქტორში და მოგვიანებით შემოიტანოთ.\n\nსისტემურმა ადმინისტრატორმა შემდეგი კომენტარი დატოვა: $1",
        "protectedpagewarning": "'''ყურადღება:  ეს გვერდი დაბლოკილია და მისი რედაქტირება შეუძლიათ მხოლოდ მომხმარებლებს ადმინისტრატორის უფლებებით'''\nიხილეთ დაცვის ჟურნალის ჩანაწერი",
        "semiprotectedpagewarning": "'''ყურადღება:''' ეს გვერდი დაბლოკილია და მისი რედაქტირება მხოლოდ რეგისტრირებულ მომხმარებლებს შეუძლიათ.\nიხილეთ ჟურნალი დამატებითი ინფორმაციისთვის:",
-       "cascadeprotectedwarning": "'''გაფრთხილება:''' ეს გვერდი ჩაკეტილია ისე რომ მისი რედაქტირება მხოლოდ ადმინისტრატორებს შეუძლია, რადგან იგი ეკუთვნის შემდეგ კასკადურად დაცვის {{PLURAL:$1|გვერდს|გვერდებს}}:",
+       "cascadeprotectedwarning": "<strong>გაფრთხილება:</strong> ეს გვერდი დაცულია ისე, რომ მისი რედაქტირება მხოლოდ ადმინისტრატორებს შეუძლია, რადგან იგი ეკუთვნის შემდეგ კასკადურად დაცვის {{PLURAL:$1|გვერდს|გვერდებს}}:",
        "titleprotectedwarning": "'''ყურადღება! გვერდი ამ სათაურით დაცულია, მისი რედაქტირება შეუძლიათ მხოლოდ [[Special:ListGroupRights|სპეციალური უფლებების]] მქონე მომხმარებლებს.'''\nიხილეთ ჟურნალი დამატებითი ინფორმაციისთვის:",
        "templatesused": "ამ გვერდზე გამოყენებული {{PLURAL:$1|თარგი|თარგები}}:",
        "templatesusedpreview": "{{PLURAL:$1|თარგი, რომელიც|თარგები, რომლებიც}} წინასწარ გადახედვის გვერდზეა გამოყენებული:",
        "log-fulllog": "ყველა ჟურნალის ხილვა",
        "edit-hook-aborted": "შესწორება გაუქმებულია გადამჭერით.\nდამატებითი ახსნა არ ჩაწერილა.",
        "edit-gone-missing": "გვერდის განახლეა შეუძლებელია.\nშესაძლოა, იგი წაიშალა.",
-       "edit-conflict": "á\83 á\83\94á\83\93á\83\90á\83¥á\83ªá\83\98ების კონფლიქტი.",
+       "edit-conflict": "á\83 á\83\94á\83\93á\83\90á\83¥á\83¢á\83\98á\83 ების კონფლიქტი.",
        "edit-no-change": "თქვენი შესწორება არ იქნა შენახული, რადგანაც ტექსტის ცვლილება არ მოხდა.",
        "postedit-confirmation-created": "გვერდი შეიქმნა.",
        "postedit-confirmation-restored": "გვერდი აღდგა.",
        "history-show-deleted": "მხოლოდ წაშლილი",
        "histfirst": "უძველესი",
        "histlast": "უახლესი",
-       "historysize": "($1 ბაიტი)",
+       "historysize": "({{PLURAL:$1|$1 ბაიტი|$1 ბაიტი}})",
        "historyempty": "(ცარიელი)",
        "history-feed-title": "რედაქტირების ისტორია",
        "history-feed-description": "ამ გვერდის შესწორებათა ისტორია ვიკიში",
-       "history-feed-item-nocomment": "$1  $2-ზე",
+       "history-feed-item-nocomment": "$1 $2-ზე",
        "history-feed-empty": "თქვენს მიერ მოძიებული გვერდი არ არსებობს.\nშესაძლოა იგი წაშლილ იქნა ვიკიდან, ან მისი სათაური შეიცვალა.\nსცადეთ [[Special:Search|searching on the wiki]] მსგავსი გვერდების სანახავად.",
        "history-edit-tags": "არჩეული ვერსიების ტეგების შეცვლა",
        "rev-deleted-comment": "(რეზიუმე წაიშალა)",
        "mergehistory-go": "აჩვენეთ გაერთიანებული ცვლილებები",
        "mergehistory-submit": "ცვლილებების შერწყმა",
        "mergehistory-empty": "რაიმე ცვლილების შერწყმა შეუძლებელია.",
-       "mergehistory-done": "$3 {{PLURAL:$3|შესწორება|შესწორებები|შესწორებების}}  $1-დან წარმატებით {{PLURAL:$3|გადაიტანა|გადაიტანნენ|გადატანილი იქნენ}}  [[:$2]]-ში.",
+       "mergehistory-done": "$3 {{PLURAL:$3|შესწორება|შესწორებები}} $1-დან წარმატებით {{PLURAL:$3|შეერწყა|შეერწყა}} [[:$2]]-ს.",
        "mergehistory-fail": "ვერ მოხერხდა გვერდების ისტორიის გაერთიანება, გთხოვთ შეამოწმოთ გვერდის პაარამეტრები და დრო.",
        "mergehistory-fail-toobig": "არ ხერხდება ისტორიების შერწყმა, რამეთუ აუცილებელია დაშვებული ლიმიტის მეტი ნაწილის გადატანა $1 ვერსიაში.",
        "mergehistory-no-source": "დანიშნულების გვერდი $1 არ არსებობს.",
        "showingresultsinrange": "ქვემოთ მოცემულია $1-მდე შედეგი, $2-იდან $3-მდე დიაპაზონში.",
        "search-showingresults": "{{PLURAL:$4|შედეგი <strong>$1</strong> დან <strong>$3</strong>|შედეგი <strong>$1 - $2</strong> დან <strong>$3</strong>}}",
        "search-nonefound": "მსგავსი მოთხოვნით გვერდი ვერ მოიძებნა.",
+       "search-nonefound-thiswiki": "მსგავსი მოთხოვნით გვერდი ვერ მოიძებნა.",
        "powersearch-legend": "გაფართოებული ძიება",
        "powersearch-ns": "ძიება სახელთა სივრცეებში:",
        "powersearch-togglelabel": "მონიშვნა:",
        "userrights": "მომხმარებელთა უფლებების მართვა",
        "userrights-lookup-user": "მომხმარებელთა ჯგუფების მართვა",
        "userrights-user-editname": "შეიტანეთ მომხმარებლის სახელი:",
-       "editusergroup": "მომხმარებელთა ჯგუფების რედაქტირება",
+       "editusergroup": "{{GENDER:$1|მომხმარებელთა}} ჯგუფების რედაქტირება",
        "editinguser": "უფლებების შეცვლა {{GENDER:$1|მომხმარებლისთვის}} <strong>[[User:$1|$1]]</strong> $2",
        "userrights-editusergroup": "დაარედაქტირეთ მომხმარებელთა ჯგუფები",
-       "saveusergroups": "მომხმარებელთა ჯგუფების შენახვა",
+       "saveusergroups": "{{GENDER:$1|მომხმარებელთა}} ჯგუფების შენახვა",
        "userrights-groupsmember": "ჯგუფის წევრი:",
        "userrights-groupsmember-auto": "ნაგულისხმევი წევრი:",
        "userrights-groupsmember-type": "$1",
        "right-createpage": "გვერდების შექმნა (არა განხილვის გვერდებისა)",
        "right-createtalk": "განხილვის გვერდების შექმნა",
        "right-createaccount": "მომხმარებლების ახალი ანგარიშების შექმნა",
+       "right-autocreateaccount": "ავტომატურად შესვლა გარე მომხმარებლის ანგარიშით",
        "right-minoredit": "ცვლილებების მითითება, როგორც „მცირე რედაქტირება“",
        "right-move": "გვერდების გადატანა",
        "right-move-subpages": "გვერდები გადამისამართდეს ქვეგვერდებთან ერთად",
        "right-managechangetags": "[[Special:Tags|tags]] შექმნა და წაშლა მონაცემთა ბაზიდან",
        "right-applychangetags": "[[Special:Tags|tags]] მიღება თქვენ ცვლილებებთან ერთად",
        "right-changetags": "თვითნებური [[Special:Tags|tags]] დამატება ან წაშლა ცალკეულ ცვლილებებსა და ჟურნალის ჩანაწერებში",
-       "grant-group-email": "ელ.ფოსტის გაგზავნა",
+       "grant-generic": "\"$1\" უფლებები",
+       "grant-group-page-interaction": "კავშირი გვერდებთან",
+       "grant-group-file-interaction": "კავშირი მედია-ფაილებთან",
+       "grant-group-watchlist-interaction": "კავშირი კონტროლის სიასთან",
+       "grant-group-email": "ელექტრონული ფოსტის გაგზავნა",
+       "grant-group-customization": "კონფიგურაცია",
+       "grant-group-administration": "ადმინისტრაციული მოქმედებების შესრულება",
+       "grant-blockusers": "მომხმარებლების დაბლოკვა და ბლოკის მოხსნა",
+       "grant-createaccount": "ანგარიშების შექმნა",
+       "grant-createeditmovepage": "გვერდის შექმნა, რედაქტირება და გადატანა",
+       "grant-delete": "გვერდების, რედაქტირებების და ჟურნალის ჩანაწერების წაშლა",
+       "grant-editinterface": "მედიავიკის სახელთა სივრცისა და მომხმარებლის CSS/JavaScript-ის რედაქტირება",
+       "grant-editmycssjs": "თქვენი მომხმარებლის CSS/JavaScript-ის რედაქტირება",
        "grant-editmyoptions": "თქვენი საკუთარი კონფიგურაციის რედაქტირება",
        "grant-editmywatchlist": "თქვენი კონტროლის სიის რედაქტირება",
+       "grant-editpage": "არსებული გვერდების რედაქტირება",
+       "grant-editprotected": "დაცული გვერდების რედაქტირება",
+       "grant-oversight": "მომხმარებლებისა და შესწორებების დამალვა",
+       "grant-patrol": "გვერდების რედაქტირებების შემოწმება",
+       "grant-protect": "გვერდების და დაცვა და დაცვის მოხსნა",
+       "grant-rollback": "გვერდების რედაქტირებების სწრაფი გაუქმება",
+       "grant-sendemail": "გაგუგზავნე ელექტრონული ფოსტა სხვა მომხმარებლებს",
+       "grant-uploadeditmovefile": "ფაილების ატვირთვა, ჩანაცვლება და გადატანა",
+       "grant-uploadfile": "ახალი ფაილების ატვირთვა",
+       "grant-basic": "ძირითადი უფლებები",
+       "grant-viewdeleted": "წაშლილი ფაილებისა და გვერდების ნახვა",
+       "grant-viewmywatchlist": "თქვენი კონტროლის სიის ხილვა",
        "newuserlogpage": "მომხმარებლის რეგისტრაციის ჟურნალი",
        "newuserlogpagetext": "ბოლო დროს დარეგისტრირებულ მომხმარებელთა სია",
        "rightslog": "მომხმარებლის უფლებების ჟურნალი",
        "action-createpage": "გვერდების შექმნა",
        "action-createtalk": "განხილვის გვერდების შექმნა",
        "action-createaccount": "ამ ანგარიშის შექმნა",
+       "action-autocreateaccount": "გარე მომხმარებლის ანგარიშის ავტომატურად შექმნა",
        "action-history": "ამ გვერდის ისტორიის ნახვა",
        "action-minoredit": "მონიშვნა, როგორც მცირე რედაქტირება",
        "action-move": "ამ გვერდის გადატანა",
        "recentchanges-legend-heading": "'''ლეგენდა:'''",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (იხ. აგრეთვე [[Special:NewPages|ახალი გვერდების სია]])",
        "recentchanges-legend-plusminus": "(<em>±123</em>)",
+       "recentchanges-submit": "ჩვენება",
        "rcnotefrom": "ქვემოთ {{PLURAL:$5|ნაჩვენებია ცვლილება|ნაჩვენებია ცვლილებები}} <strong>$3, $4</strong>-დან (ნაჩვენებია არაუმეტეს <strong>$1</strong>).",
        "rclistfrom": "ახალი ცვლილებების ჩვენება დაწყებული $3 $2-დან",
        "rcshowhideminor": "მცირე რედაქტირების $1",
        "rcshowhidemine": "ჩემი რედაქტირების $1",
        "rcshowhidemine-show": "ჩვენება",
        "rcshowhidemine-hide": "დამალვა",
+       "rcshowhidecategorization": "$1 გვერდის კატეგორიზაცია",
        "rcshowhidecategorization-show": "ჩვენება",
        "rcshowhidecategorization-hide": "დამალვა",
        "rclinks": "ბოლო $1 ცვლილების ჩვენება უკანასკნელი $2 დღის მანძილზე<br />$3",
        "recentchangeslinked-summary": "ეს არის მითითებულ გვერდთან (ან მითითებული კატეგორიის წევრებთან) დაკავშირებულ გვერდებში ბოლო დროს განხორციელებული ცვლილებების სია.\nგვერდები [[Special:Watchlist|თქვენი კონტროლის სიაში]] გამოყოფილია '''სქლად'''.",
        "recentchangeslinked-page": "გვერდის დასახელება:",
        "recentchangeslinked-to": "საპირისპიროდ აჩვენეთ ამ გვერდზე ბმულის მქონე გვერდების ცვლილებები",
+       "recentchanges-page-added-to-category": "[[:$1]] დამატებულია კატეგორიაში",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] და {{PLURAL:$2|ერთი გვერდი|$2 გვერდი}} დამატებულია კატეგორიაში",
+       "recentchanges-page-removed-from-category": "[[:$1]] წაიშალა კატეგორიიდან",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] და {{PLURAL:$2|ერთი გვერდი|$2 გვერდი}} წაიშალა კატეგორიიდან",
+       "autochange-username": "მედიავიკის ავტომატური ცვლილება",
        "upload": "ფაილის დამატება",
        "uploadbtn": "ფაილის დამატება",
        "reuploaddesc": "გააუქმეთ ატვირთვა და დაუბრუნდით ატვირთვის ფორმას.",
        "uploaddisabledtext": "ფაილების ატვირთვა შეუძლებელია.",
        "php-uploaddisabledtext": "ფაილების ატვირთვა შეჩერებულია PHP-ით. გთხოვთ შეამოწმოთ file_uploads-ის მნიშვნელობა.",
        "uploadscripted": "ფაილი შეიცავს HTML-კოდს, ან სკრიპტს, რომელიც ბროუზერმა შეიძლება არასწორედ გაანალიზოს.",
+       "uploaded-hostile-svg": "ატვირთულ SVG-ფაილის style ელემენტში ნაპოვნია საფრთხის შემცვლელი CSS-ის კოდი.",
        "uploadscriptednamespace": "ეს SVG ფაილი შეიცავს სახელთა არაკორექტულ სივრცეს \"$1\".",
        "uploadinvalidxml": "XML ჩატვირთულ ფაილში არ შეიძლება იყოს ანალიზირებული",
        "uploadvirus": "ფაილი ვირუსს შეიცავს! დეტალები: $1",
        "watchthisupload": "უთვალთვალე ამ ფაილს",
        "filewasdeleted": "ამ სახელწოდების ფაილი უკვე არსებობდა, მაგრამ წაშლილ იქნა. ხელმეორედ ჩატვირთვამდე იხილეთ $1.",
        "filename-bad-prefix": "ასატვირთვი ფაილი იწყება '''„$1“''', რაც არის ფოტოკამერის მიერ სურათებისთვის მიცემული სტანდარტული სახელი. გთხოვთ აირჩიოთ ფაილის აღმწერი უკეთესი სახელი.",
-       "upload-success-subj": "წარმატებული გადატვირთვა",
-       "upload-success-msg": "თქვენი ატვირთვა [$2] შეგიძლიათ იხილოთ აქ: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "ატვირთვის პრობლემა",
-       "upload-failure-msg": "ატვირთვისას პრობლემა შეიქმნა [$2]:\n\n$1",
-       "upload-warning-subj": "ატვირთვისთვის გაფრთხილება",
-       "upload-warning-msg": "[$2]-ის ატვირთვისას დაფიქსირდა შეცდომა. შეცდომის გამოსასწორებლად დაბრუნდით [[Special:Upload/stash/$1|ატვირთვის ფორმა]]ზე.",
        "upload-proto-error": "არასწორი პროტოკოლი",
        "upload-proto-error-text": "ატვირთვის წასაშლელად საჭიროა მისამართი, რომელიც იწყება <code>http://</code> or <code>ftp://</code>-ით.",
        "upload-file-error": "შიდა შეცდომა",
        "foreign-structured-upload-form-label-own-work": "ეს ჩემი პირადი ნამუშევარია",
        "foreign-structured-upload-form-label-infoform-categories": "კატეგორიები",
        "foreign-structured-upload-form-label-infoform-date": "თარიღი",
+       "foreign-structured-upload-form-label-not-own-work-message-local": "თუ ვერ ტვირთავთ ამ ფაილს {{SITENAME}}-ის წესების დაცვით, გთხოვთ დახურეთ ეს ფანჯარა და სცადეთ სხვა მეთოდი.",
+       "foreign-structured-upload-form-label-not-own-work-local-local": "შეგიძლიათ სცადოთ [[Special:Upload|მთავარი ატვირთვის გვერდი]].",
        "foreign-structured-upload-form-label-own-work-message-shared": "მე ვადასტურებ, რომ ამ ფაილზე საავტორო უფლებების მფლობელი ვარ და ვთანხმდები ამ ფაილის შეუქცევადად განთავსებაზე ვიკისაწყობში [https://creativecommons.org/licenses/by-sa/4.0/deed.ka Creative Commons Attribution-ShareAlike 4.0] ლიცენზიით, აგრეთვე ვეთანხმები [https://wikimediafoundation.org/wiki/Terms_of_Use გამოყენების წესებს].",
+       "foreign-structured-upload-form-2-label-noderiv": "<strong>არ უნდა შეიცავდეს</strong> სხვის ნამუშევარს, ასევე არ უნდა იგრძნობოდეს სხვისი ნამუშევრის გავლენა",
+       "foreign-structured-upload-form-2-label-useful": "უნდა იყოს სხვებისთვის <strong>საგანმანათლებლო და სასარგებლო</strong>",
+       "foreign-structured-upload-form-3-label-yes": "დიახ",
+       "foreign-structured-upload-form-3-label-no": "არა",
        "backend-fail-stream": "ფაილი $1 ტრანსლირება ვერ მოხერხდა.",
        "backend-fail-backup": "ფაილი $1 სარეზერვო ასლის გაკეთება ვერ მოხერხდა.",
        "backend-fail-notexists": "ფაილი $1 არ არსებობს.",
        "mostrevisions": "ყველაზე მეტად რედაქტირებული სტატიები",
        "prefixindex": "ყველა გვერდი (პრეფიქსით)",
        "prefixindex-namespace": "ყველა პრეფიქსიანი გვერდი ($1 სახელთა სივრცე)",
+       "prefixindex-submit": "ჩვენება",
        "prefixindex-strip": "პრეფიქსის დამალვა შედეგების სიაში",
        "shortpages": "მოკლე გვერდები",
        "longpages": "გრძელი გვერდები",
        "protectedpages-performer": "მომხმარებლის დაცვა",
        "protectedpages-params": "დაცვის პარამეტრები",
        "protectedpages-reason": "მიზეზი",
+       "protectedpages-submit": "გვერდების ჩვენება",
        "protectedpages-unknown-timestamp": "უცნობი",
        "protectedpages-unknown-performer": "უცნობი მომხმარებელი",
        "protectedtitles": "დაცული სათაურები",
        "protectedtitles-summary": "ამ გვერდზე ჩამოთვლიია სახელწოდებები, რომლებიც შექმნისგანაა დაცული. არსებული გვერდების სიისთვის რომლებიც ამჟამად დაცულია, იხ. [[{{#special:ProtectedPages}}|{{int:protectedpages}}]].",
        "protectedtitlesempty": "ამ დროისთვის არ არსებობს მოთხოვნილი გვერდები მოცემული პარამეტრებით.",
+       "protectedtitles-submit": "სათაურების ჩვენება",
        "listusers": "მომხმარებლების სია",
        "listusers-editsonly": "აჩვენთ მხოლოდ ის მომხმარებლები, რომლებსაც ერთი შესწორება აქვს გაკეთებული.",
        "listusers-creationsort": "დაალაგეთ შექმნის თარიღის მიხედვით.",
        "usereditcount": "$1 რედაქტირება",
        "usercreated": "{{GENDER:$3|შექმნილია}} $2-ზე $1-ში",
        "newpages": "ახალი გვერდები",
+       "newpages-submit": "ჩვენება",
        "newpages-username": "მომხმარებლის სახელი:",
        "ancientpages": "უძველესი გვერდები",
        "move": "გადატანა",
        "specialloguserlabel": "შემსრულებელი:",
        "speciallogtitlelabel": "მიზანი (სათაური, ან {{ns:user}}:მომხმარებლის სახელი):",
        "log": "ჟურნალები",
+       "logeventslist-submit": "ჩვენება",
        "all-logs-page": "ყველა საზოგადო ჟურნალი",
        "alllogstext": "{{SITENAME}}-ის ყველა არსებული ჩანაწერის კომბინირებული ჩვენება.\nშეგიძლიათ გაცხრილოთ იგი ჩანაწერის ტიპის, მომხმარებლის სახელის, ან დაკავშირებული გვერდის შერჩევით.",
        "logempty": "შედეგები არ არის სიაში.",
        "log-title-wildcard": "სათაურების ძებნა, რომლებიც იწყება ამ ტექსტით",
        "showhideselectedlogentries": "არჩეული ჟურნალის ჩანაწერის ჩვენება/დამალვა",
        "log-edit-tags": "ტეგების რედაქტირება ამორჩეული ჟურნალის ჩანაწერებიდან",
+       "checkbox-select": "აირჩიეთ: $1",
+       "checkbox-all": "ყველა",
+       "checkbox-none": "არაფერი",
+       "checkbox-invert": "ჩასმა",
        "allpages": "ყველა გვერდი",
        "nextpage": "შემდეგი გვერდი ($1)",
        "prevpage": "წინა გვერდი ($1)",
        "activeusers-hidebots": "რობოტების დამალვა",
        "activeusers-hidesysops": "ადმინისტრატორების დამალვა",
        "activeusers-noresult": "მომხმარებლები არ არიან ნაპოვნი.",
+       "activeusers-submit": "აქტიური მომხმარებლების ჩვენება",
        "listgrouprights": "მომხმარებელთა ჯგუფების უფლებები",
        "listgrouprights-summary": "ქვემოთ წარმოდგენილია ამ ვიკიში გარკვეულ ჯგუფთა სია და მათი უფლებები.\nშესაძლოა არსებობს [[{{MediaWiki:Listgrouprights-helppage}}|დამატებითი ინფორმაცია]] ინდივიდუალურ უფლებებთან დაკავშირებით.",
        "listgrouprights-key": "ლეგენდა:\n* <span class=\"listgrouprights-granted\">მიცემული უფლებები</span>\n* <span class=\"listgrouprights-revoked\">ჩამორთმეული უფლებები</span>",
        "listgrouprights-namespaceprotection-header": "სახელთა სივრცის შეზღუდვები",
        "listgrouprights-namespaceprotection-namespace": "სახელთა სივრცე",
        "listgrouprights-namespaceprotection-restrictedto": "უფლება, რომელიც მომხმარებელს რედაქტირების უფლებას აძლევს",
+       "listgrants": "ანიჭებს",
+       "listgrants-grant": "ნებართვა",
+       "listgrants-rights": "უფლებები",
        "trackingcategories": "კატეგორიის მიდევნება",
        "trackingcategories-summary": "ამ გვერდზე ჩამოთვლილია სადამკვირებლო კატეგორიები, რომლებიც ავტომატურად იმსებიან MediaWiki-ის პროგრამული უზრუნველყოფით. მათი გადარქმევა შეიძლება, თუკი შეიცვლება შესაბამისი სისტემური შეტყობინება, MediaWiki-ის სახელთა სივრცეში.",
        "trackingcategories-msg": "კატეგორიის მიდევნება",
        "emailccsubject": "შეტყობინების ასლი გაუგზავნეთ $1: $2",
        "emailsent": "ელ. ფოსტა გაგზავნილია",
        "emailsenttext": "თქვენი ელ. შეტყობინება გაგზავნილია.",
-       "emailuserfooter": "ეს ელ. შეტყობინება $1-მა გაუგზავნა $2-ს „გაუგზავნეთ მომხმარებელს ელ. შეტყობინება“ ფუნქციით {{SITENAME}}-დან.",
+       "emailuserfooter": "ეს ელ. შეტყობინება $1-მა {{GENDER:$1|გაუგზავნა}} {{GENDER:$2|$2}}-ს ფუნქციით „გაუგზავნეთ მომხმარებელს ელ. შეტყობინება“ {{SITENAME}}-დან.",
        "usermessage-summary": "სისტემური შეტყობინების დატოვება.",
        "usermessage-editor": "სისტემური მესენჯერი",
        "usermessage-template": "MediaWiki:მომხმარებლის შეტყობინება",
        "watchlistanontext": "იხილეთ ან რედაქტირება გაუკეთეთ თქვენი კონტროლის სიაში შეტანილ ერთეულებს:",
        "watchnologin": "რეგისტრაცია ვერ შესრულდა",
        "addwatch": "კონტროლის სიაში დამატება",
-       "addedwatchtext": "გვერდი „[[:$1]]“ დაემატა თქვენს [[Special:Watchlist|კონტროლის სიას]].\nამ და მასთან დაკავშირებული განხილვის გვერდის შემდგომი ცვლილებები აისახება იქ.",
+       "addedwatchtext": "„[[:$1]]“ და მისი განხილვის გვერდი დაემატა თქვენს [[Special:Watchlist|კონტროლის სიას]].",
        "addedwatchtext-short": "გვერდი „$1“ დაემატა თქვენი კონტროლის სიას.",
        "removewatch": "კონტროლის სიიდან წაშლა",
-       "removedwatchtext": "გვერდი „[[:$1]]“ ამოღებულია თქვენი [[Special:Watchlist|კონტროლის სიიდან]].",
+       "removedwatchtext": "„[[:$1]]“ და მისი განხილვის გვერდი ამოღებულია თქვენი [[Special:Watchlist|კონტროლის სიიდან]].",
        "removedwatchtext-short": "გვერდი „$1“ წაიშალა თქვენი კონტროლის სიიდან.",
        "watch": "კონტროლი",
        "watchthispage": "ამ გვერდის კონტროლი",
        "wlheader-showupdated": "თქვენი ბოლო ვიზიტის შემდეგ შეცვლილი გვერდები, აღნიშნულია '''მუქად'''.",
        "wlnote": "ქვემოთ {{PLURAL:$1|ნაჩვენებია ბოლო ცვლილება|ნაჩვენებია ბოლო '''$1''' ცვლილება}} უკანასკნელი {{PLURAL:$2|საათის|'''$2''' საათის}} მანძილზე, $3, $4 მდგომარეობით.",
        "wlshowlast": "ბოლო $1 საათის $2 დღის ჩვენება",
-       "watchlistall2": "ყველა",
-       "wlshowtime": "აჩვენე უკანასკნელი:",
+       "watchlist-hide": "დამალვა",
+       "watchlist-submit": "ჩვენება",
+       "wlshowtime": "აჩვენე დროის პერიოდი:",
        "wlshowhideminor": "მცირე რედაქტირების",
        "wlshowhidebots": "რობოტების",
        "wlshowhideliu": "რეგისტრირებული მომხმარებლების",
        "wlshowhideanons": "ანონიმური მომხმარებლების",
+       "wlshowhidepatr": "შემოწმებული რედაქტირებები",
        "wlshowhidemine": "ჩემი რედაქტირება",
+       "wlshowhidecategorization": "გვერდის კატეგორიზაცია",
        "watchlist-options": "კონტროლის სიის პარამეტრები",
        "watching": "კონტროლებადი...",
        "unwatching": "არაკონტროლირებადი...",
        "deletepage": "გვერდის წაშლა",
        "confirm": "დადასტურება",
        "excontent": "შინაარსი იყო: „$1“",
-       "excontentauthor": "შინაარსი იყო: „$1“ (და ერთადერთი ავტორი იყო „[[Special:Contributions/$2|$2]]“)",
+       "excontentauthor": "შინაარსი იყო: „$1“ და ერთადერთი ავტორი იყო „[[Special:Contributions/$2|$2]]“ ([[User talk:$2|განხილვა]])",
        "exbeforeblank": "გვერდის შინაარსი წაშლამდე იყო შემდეგი: „$1“",
        "delete-confirm": "„$1“-ის წაშლა",
        "delete-legend": "წაშლა",
        "rollback-success": "გაუქმდა რედაქტირება $1; დაბრუნება ვერსიაზე $2.",
        "sessionfailure-title": "სეანსის შეცდომა",
        "sessionfailure": "ჩანს, რომ პრობლემაა თქვენი რეგისტრაციის სესიისათვის;\nეს მოქმედება შეჩერდა თქვენი სესიაში შემოჭრის თავიდან ასაცილებლად.\nგთხოვთ, დააწკაპუნოთ ღილაკს „უკან“ და თავიდან ჩართოთ გვერდი, რომლიდანაც შემოხვედით და სცადოთ განმეორებით.",
+       "changecontentmodel": "გვერდის კონტენტური მოდელის შეცვლა",
        "changecontentmodel-legend": "შინაარსის მოდელის შეცვლა",
        "changecontentmodel-title-label": "გვერდის სათაური",
        "changecontentmodel-model-label": "შინაარსის ახალი მოდელი",
        "changecontentmodel-reason-label": "მიზეზი:",
        "changecontentmodel-success-title": "შინაარსის მოდელი შეიცვალა",
+       "changecontentmodel-success-text": "[[:$1]]-ის კონტენტის ტიპი შეიცვალა.",
+       "changecontentmodel-cannot-convert": "[[:$1]]-ის შინაარსის $2-ის ტიპზე კონვერტაცია შეუძლებელია.",
        "logentry-contentmodel-change-revertlink": "დაბრუნება",
        "logentry-contentmodel-change-revert": "დაბრუნება",
        "protectlogpage": "დაცვის ისტორია",
        "whatlinkshere-hidelinks": "ბმულების $1",
        "whatlinkshere-hideimages": "$1 სურათის ბმულები",
        "whatlinkshere-filters": "ფილტრები",
+       "whatlinkshere-submit": "წინ",
        "autoblockid": "ავტომატური ბლოკირება #$1",
        "block": "მომხმარებლის დაბლოკვა",
        "unblock": "მომხმარებელზე ბლოკის მოხსნა",
        "blockip": "მომხმარებელ {{GENDER:$1|დაბლოკვა}}",
        "blockip-legend": "მომხმარებლის დაბლოკვა",
-       "blockiptext": "გამოიყენეთ ქვემოთ მოყვანილი ფორმა სპეციფიური IP მისამართის\nან მომხმარებლისთვის რედაქტირების ბლოკირებისთვის.\nამის გაკეთება შეიძლება მხოლოდ ვანდალიზმის ასარიდებლად,\nდა [[{{MediaWiki:Policy-url}}|პოლიტიკასთან]] თანხმობაში.\nჩაწერეთ სპეციფიური მიზეზი ქვემოთ (მაგ. მიუთითეთ გვერდები,\nრომლებზეც ვანდალიზმი განხორციელდა).",
+       "blockiptext": "გამოიყენეთ ქვემოთ მოყვანილი ფორმა სპეციფიური IP მისამართის\nან მომხმარებლისთვის რედაქტირების ბლოკირებისთვის.\nამის გაკეთება შეიძლება მხოლოდ ვანდალიზმის ასარიდებლად,\nდა [[{{MediaWiki:Policy-url}}|პოლიტიკასთან]] თანხმობაში.\nჩაწერეთ სპეციფიური მიზეზი ქვემოთ (მაგ. მიუთითეთ გვერდები,\nრომლებზეც ვანდალიზმი განხორციელდა).\nშეგიძლიათ დაბლოკოთ კონკრეტუყლი IP დიაპაზონი [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR] სინტაქსის გამოყენებით; უდიდესი შესაძლო დიაპაზონია /$1 IPv4-თვის და /$2 IPv6-თვის.",
        "ipaddressorusername": "IP მისამართი ან მომხმარებლის სახელი",
        "ipbexpiry": "ვადა",
        "ipbreason": "მიზეზი:",
        "block-log-flags-hiddenname": "მომხმარებლის სახელი დაფარულია",
        "range_block_disabled": "ადმინთათვის დაბლოკვათა აკრძალული დიაპაზონი",
        "ipb_expiry_invalid": "მოქმედების მიუღებელი პერიოდი",
+       "ipb_expiry_old": "ვადის გასვლის დრო წარსულშია.",
        "ipb_expiry_temp": "ბლოკირება მომხმარებლის სახელის დამალვით უვადო უნდა იყოს",
        "ipb_hide_invalid": "შეუძლებელია მოცემული ანგარიშის დამალვა, მისგან განხორციელებულია {{PLURAL:$1|ერთი რედაქტირება|$1 რედაქტირებები}}.",
        "ipb_already_blocked": "„$1“ უკვე ბლოკირებულია",
        "movenosubpage": "ამ გვერდს არა აქვს ქვეგვერდები",
        "movereason": "მიზეზი:",
        "revertmove": "გაუქმება",
-       "delete_and_move_text": "==საჭიროა წაშლა==\n\nსტატია დასახელებით „[[:$1]]“ უკვე არსებობს. გსურთ მისი წაშლა გადატანისთვის ადგილის დასათმობად?",
+       "delete_and_move_text": "სტატია დასახელებით „[[:$1]]“ უკვე არსებობს.\nგსურთ მისი წაშლა გადატანისთვის ადგილის დასათმობად?",
        "delete_and_move_confirm": "დიახ, წაშალეთ ეს გვერდი",
        "delete_and_move_reason": "წაშლილია „[[$1]]“-დან გადატანისთვის ადგილის დასათმობად",
        "selfmove": "წყარო და დანიშნულების სათაურები მსგავსია; შეუძლებელია გვერდის საკუთარ თავზე გადატანა.",
        "move-leave-redirect": "გადამისამართების დატოვება",
        "protectedpagemovewarning": "'''ყურადღება.''' ეს არის დაცული გვერდი. მისი გადატანა მხოლოდ ადმინისტრატორებს შეუძლია.\nიხილეთ დაცვის ჟურნალის ჩანაწერი ინფორმაციისთვის:",
        "semiprotectedpagemovewarning": "'''ყურადღება.''' ეს გვერდი დაცულია, მისი გადატანა მხოლოდ დარეგისტრირებულ მომხმარებლებს შეუძლიათ.\nიხილეთ დაცვის ჟურნალის ჩანაწერი ინფორმაციისთვის:",
-       "move-over-sharedrepo": "==ფაილი არსებობს==\n[[:$1]] არსებობს საზიარო საცავში. ფაილის ამ სათაურზე გადმოტანა საზიარო ფაილს გადაფარავს.",
+       "move-over-sharedrepo": "[[:$1]] არსებობს გაზიარებულ საცავში. ფაილის ამ სათაურზე გადატანა გაზიარებულ ფაილს გადაეწერება.",
        "file-exists-sharedrepo": "არჩეული ფაილის სახელი უკვე გამოყენებულია საზიარო საცავში.\nგთხოვთ სხვა სახელი აირჩიოთ.",
        "export": "გვერდების ექსპორტი",
        "exporttext": "თქვენ შეგიძლიათ ტექსტებისა, ცვლილებათა ჟურნალის და XML გვერდების ექსპორტირება, რომელიც შეიძლება შემდეგ [[Special:Import|გადატანილი]] იქნას სხვა ვიკიპროექტში, რომელიც მუშაობს MediaWiki-ზე.\n\nგვერდის ექსპორტირებისთვის შეიყვანეთ მათი სახელები თითო ხაზზე და აირჩიეთ, თუ გსურთ სტატიის ყველა ვერსიის გადატანა, თუ მხოლოდ ბოლო ვერსიისა.\n\nთქვენ შეგიძლიათ ასევე გამოიყენოთ სპეციალური მისამართი გვერდის მხოლოდ ბოლო ვერსიის საექსპორტოდ. მაგალითად [[{{MediaWiki:Mainpage}}]]  ეს არის მისამართი [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]].",
        "export-download": "შეინახე როგორც ფაილი",
        "export-templates": "ჩართეთ თარგები",
        "export-pagelinks": "ჩართეთ დაკავშირებული გვერდები სიღრმით:",
+       "export-manual": "დაამატეთ გვერდები ხელით:",
        "allmessages": "ყველა სისტემური შეტყობინება",
        "allmessagesname": "დასახელება",
        "allmessagesdefault": "სტანდარტული ტექსტი",
        "javascripttest-pagetext-frameworks": "გთხოვთ, აირჩიეთ ტესტირების ერთ-ერთი შემდეგი გარემო: $1",
        "javascripttest-pagetext-skins": "ტესტების გასაშვებად აირჩიეთ გაფორმების თემა:",
        "javascripttest-qunit-intro": "იხილეთ [$1 ტესტირების დოკუმენტები] mediawiki.org-ზე.",
-       "tooltip-pt-userpage": "თქვენი მომხმარებლის გვერდი",
+       "tooltip-pt-userpage": "{{GENDER:|თქვენი მომხმარებლის}} გვერდი",
        "tooltip-pt-anonuserpage": "ჩემი IP-ის მქონე მომხმარებლის გვერდი",
-       "tooltip-pt-mytalk": "თქვენი განხილვის გვერდი",
+       "tooltip-pt-mytalk": "{{GENDER:|თქვენი}} განხილვის გვერდი",
        "tooltip-pt-anontalk": "ჩემი  IP-ის განხილვის გვერდი",
-       "tooltip-pt-preferences": "თქვენი კონფიგურაცია",
+       "tooltip-pt-preferences": "{{GENDER:|თქვენი}} კონფიგურაცია",
        "tooltip-pt-watchlist": "გვერდების სია, რომელთა ცვლილებებს თქვენ უთვალთვალებთ",
-       "tooltip-pt-mycontris": "თქვენი წვლილის სია",
+       "tooltip-pt-mycontris": "{{GENDER:|თქვენი}} წვლილის სია",
        "tooltip-pt-anoncontribs": "რედაქტირებების სია შესრულებული ამ IP მისამართიდან",
        "tooltip-pt-login": "სასურველია დარეგისტრირდეთ, თუმცა აუცილებელია არაა.",
        "tooltip-pt-logout": "გასვლა",
        "tooltip-t-recentchangeslinked": "ბოლო ცვლილებები ამ გვერდთან დაკავშირებულ გვერდებზე",
        "tooltip-feed-rss": "მოცემული გვერდის RSS არხის ტრანსალაცია",
        "tooltip-feed-atom": "მოცემული გვერდის Atom არხის ტრანსალაცია",
-       "tooltip-t-contributions": "იხილეთ ამ მომხმარებლის წვლილის სია",
-       "tooltip-t-emailuser": "გაუგზავნე ელ. ფოსტა ამ მომხმარებელს",
+       "tooltip-t-contributions": "იხილეთ {{GENDER:$1|ამ მომხმარებლის}} წვლილის სია",
+       "tooltip-t-emailuser": "გაუგზავნე ელ. ფოსტა {{GENDER:$1|ამ მომხმარებელს}}",
        "tooltip-t-info": "მეტი ინფორმაცია ამ გვერდის შესახებ",
        "tooltip-t-upload": "ჩატვირთეთ მედიაფაილები",
        "tooltip-t-specialpages": "ყველა სპეციალური გვერდის სია",
        "lastmodifiedatby": "ეს გვერდი ბოლოს შეიცვალა $2, $1  $3-ით.",
        "othercontribs": "$1-ს ნამუშევრის მიხედვით.",
        "others": "სხვები",
-       "siteusers": "{{SITENAME}}-ის {{PLURAL:$2|მომხმარებელი|მომხმარებლები|}} $1",
+       "siteusers": "{{SITENAME}}-ის {{PLURAL:$2|{{GENDER:$1|მომხმარებელი}}|მომხმარებლები}} $1",
        "anonusers": "{{SITENAME}} ანონიმური {{PLURAL:$2|მომხმარებელი|მომხმარებლები}} $1",
        "creditspage": "წვლილი",
        "nocredits": "აქ ამ გვერდისთვის ხელმისაწვდომი ინფორმაცია არ არსებობს.",
        "pageinfo-robot-index": "დაშვებულია",
        "pageinfo-robot-noindex": "არ არის დაშვებული",
        "pageinfo-watchers": "გვერდის დამკვირვებელთა რაოდენობა",
+       "pageinfo-visiting-watchers": "გვერდის მნახველთა სია, რომლებიც ესტუმრნენ უკანასკნელ ცვლილებებს",
        "pageinfo-few-watchers": "სულ მცირე $1 {{PLURAL:$1|დამკვირვებელი|დამკვირვებელი}}",
        "pageinfo-redirects-name": "გადამისამართებების რაოდენობა ამ გვერდზე",
        "pageinfo-redirects-value": "$1",
        "pageinfo-category-files": "ფაილების რაოდენობა",
        "markaspatrolleddiff": "მონიშნე როგორც პატრულირებული",
        "markaspatrolledtext": "მონიშნე ეს სტატია როგორც პატრულირებული",
+       "markaspatrolledtext-file": "მონიშნეთ ამ ფაილის ვერსია, როგორც პატრულირებული",
        "markedaspatrolled": "მონიშნულია როგორც პატრულირებული",
        "markedaspatrolledtext": "არჩეული ვერსია [[:$1]] მონიშნულია როგორც პატრულირებული",
        "rcpatroldisabled": "ბოლო ცვლილებების პატრულირება აკრძალულია",
        "svg-long-error": "არასწორი SVG ფაილი: $1",
        "show-big-image": "თავდაპირველი ფაილი",
        "show-big-image-preview": "ზომა წინასწარი გადახედვისას: $1.",
+       "show-big-image-preview-differ": "ამ $2 ფაილის $3 წინასწარი გადახედვის ზომაა: $1.",
        "show-big-image-other": "სხვა {{PLURAL:$2|გაფართოება|გაფართოება}}: $1.",
        "show-big-image-size": "$1 × $2 პიქსელი",
        "file-info-gif-looped": "დარგოლილი",
        "newimages-legend": "ფილტრი",
        "newimages-label": "ფაილის (ან მისი სახელის) ნაწილი",
        "newimages-showbots": "ბოტის ატვირთვების ჩვენება",
+       "newimages-hidepatrolled": "დამალე შემოწმებული ატვირთვები",
        "noimages": "გადასახედი არაფერია.",
        "ilsubmit": "ძიება",
        "bydate": "თარიღით",
        "exif-compression-34712": "JPEG2000",
        "exif-copyrighted-true": "საავტორო უფლებებით დაცული",
        "exif-copyrighted-false": "საავტორო უფლებები არ არის არჩეული",
+       "exif-photometricinterpretation-1": "შავი და თეთრი (შავი არის 0)",
        "exif-photometricinterpretation-2": "RGB",
        "exif-photometricinterpretation-6": "YCbCr",
        "exif-unknowndate": "უცნობი თარიღი",
        "scarytranscludefailed-httpstatus": "[ვერ მოხერხდა თარგის ჩატვირთვა $1-თვის: HTTP $2]",
        "scarytranscludetoolong": "[URL ძალიან გრძელია]",
        "deletedwhileediting": "'''ყურადღება''': ეს გვერდი წაიშალა მას შემდეგ, რაც თქვენ მისი რედაქტირება დაიწყეთ!",
-       "confirmrecreate": "მომხმარებელმა [[User:$1|$1]] ([[User talk:$1|განხილვა]]) წაშალა ეს გვერდი მას შემდეგ რაც თქვენ დაიწყეთ რედაქტირება შემდეგი მიზეზით:\n: ''$2''\nგთხოვთ დაადასტუროთ, რომ ნამდვილად გსურთ ამ გვერდის აღდგენა.",
-       "confirmrecreate-noreason": "მომხმარებელმა [[User:$1|$1]] ([[User talk:$1|განხილვა]]) წაშალა ეს გვერდი მას შემდეგ, რაც თქვენ დაიწყეთ მისი რედაქტირება. გთხოვთ, დარწმუნდით, რომ თქვენ ნამდვილად გსურთ ამ გვერდის ხელახლა შექმნა.",
+       "confirmrecreate": "მომხმარებელმა [[User:$1|$1]] ([[User talk:$1|განხილვა]]) წაშალა ეს გვერდი მას შემდეგ რაც თქვენ დაიწყეთ რედაქტირება შემდეგი მიზეზით:\n: <em>$2</em>\nგთხოვთ დაადასტუროთ, რომ ნამდვილად გსურთ ამ გვერდის ხელახლა შექმნა.",
+       "confirmrecreate-noreason": "მომხმარებელმა [[User:$1|$1]] ([[User talk:$1|განხილვა]]) {{GENDER:$1|წაშალა}} ეს გვერდი მას შემდეგ, რაც თქვენ დაიწყეთ მისი რედაქტირება. გთხოვთ, დარწმუნდით, რომ თქვენ ნამდვილად გსურთ ამ გვერდის ხელახლა შექმნა.",
        "recreate": "აღადგინე",
        "unit-pixel": "პქ",
        "confirm_purge_button": "კარგი",
        "watchlisttools-raw": "კონტროლის სიის რედაქტირება ტექსტის ფორმატში",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|განხილვა]])",
        "timezone-utc": "UTC",
+       "timezone-local": "ლოკალური",
        "duplicate-defaultsort": "'''ყურადღება.'''სორტირების გასაღებს «$2»-ს გააჭრის წინა გასაღებს «$1»-ს.",
        "duplicate-displaytitle": "<strong>ყურადღება:</strong> დისპლეის სათაური \"$2\" განსაზღვრავს ადრე გაცემულ დისპლეის სათაურს \"$1\".",
        "invalid-indicator-name": "<strong>შეცდომა:</strong> გვერდის სტატუსის ინდიკატორი <code>name</code> ატრიბუტი არ უნდა იყოს ცარიელი.",
        "version-hook-subscribedby": "ჩაწერილია",
        "version-version": "($1)",
        "version-no-ext-name": "[სახელის გარეშე]",
-       "version-svn-revision": "(r$2)",
        "version-license": "მედიავიკის ლიცენზია",
        "version-ext-license": "ლიცენზია",
        "version-ext-colheader-name": "გაფართოებები",
        "version-libraries-license": "ლიცენზია",
        "version-libraries-description": "აღწერა",
        "version-libraries-authors": "ავტორები",
-       "redirect": "გადამისამართება ფაილიდან, მომხმარებლიდან, გვერდიდან ან ვერსიის იდენტიფიკატორიდან",
+       "redirect": "გადამისამართება ფაილიდან, მომხმარებლიდან, გვერდიდან, ვერსიის ან ავტორიზაციის იდენტიფიკატორიდან",
        "redirect-legend": "გადამისამართება ფაილზე ან გვერდზე",
        "redirect-summary": "ეს დამხმარე გვერდი ამისამართებს ფაილის (ფაილის სახელიდან) გვერდზე, (გვერდის ან ვერსიის იდენტიფიკატორიდან) ან მომხმარებლის გვერდზე (მომხმარებლის რაოდენობრივი იდენტიფიკატორიდან). გამოყენება: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] ან [[{{#Special:Redirect}}/user/101]].",
        "redirect-submit": "მიდი",
        "redirect-page": "გვერდის ID",
        "redirect-revision": "გვერდის ვერსია",
        "redirect-file": "ფაილის სახელი",
+       "redirect-logid": "შესვლის ID",
        "redirect-not-exists": "მნიშვნელობა ვერ მოიძებნა",
        "fileduplicatesearch": "ერთნაირი ფაილების ძიება",
        "fileduplicatesearch-summary": "ერთნაირი ფაილების ძიება ჰეშ-კოდის მიხედვით.",
        "htmlform-cloner-create": "მეტის დამატება",
        "htmlform-cloner-delete": "წაშლა",
        "htmlform-cloner-required": "აუცილებელია სულ მცირე ერთი მნიშვნელობა.",
+       "htmlform-title-badnamespace": "[[:$1]] არ მდებარეობს \"{{ns:$2}}\"-ის სახელთა სივრცეში.",
+       "htmlform-title-not-creatable": "$1\" არ არის მართებული გვერდის სათაური",
        "htmlform-title-not-exists": "$1 არ არსებობს.",
        "htmlform-user-not-exists": "<strong>$1</strong> არ არსებობს.",
        "htmlform-user-not-valid": "<strong>$1</strong> არ არის სწორი მომხმარებლის სახელი.",
        "logentry-suppress-block": "მომხმარებელმა $1 {{GENDER:$2|დაბლოკა}} {{GENDER:$4|$3}} ბლოკირების ვადაა $5 $6",
        "logentry-suppress-reblock": "მომხმარებელმა $1 {{GENDER:$2|შეცვალა}} ბლოკირების პარამეტრები {{GENDER:$4|$3}}-თვის  ბლოკირების ვადაა $5 $6",
        "logentry-import-upload": "$1 {{GENDER:$2|იმპორტირებული}} $3 ატვირთული ფაილი",
+       "logentry-import-upload-details": "$1-მ {{GENDER:$2|გადაიტანა}} $3 ფაილის ატვირთვით ($4 {{PLURAL:$4|ცვლილება|ცვლილება}})",
        "logentry-import-interwiki": "$1 {{GENDER:$2|იმპორტირებული}} $3 სხვა ვიკიდან",
+       "logentry-import-interwiki-details": "$1-მ {{GENDER:$2|გადაიტანა}} $3 $5-ზე ($4 {{PLURAL:$4|ცვლილება|ცვლილება}})",
        "logentry-merge-merge": "მომხმარებელმა $1 {{GENDER:$2|გააერთიანა}} $3 $4-ში ($5-მდე ვერსია)",
        "logentry-move-move": "მომხმარებელმა $1 გვერდი „$3“ {{GENDER:$2|გადაიტანა}} გვერდზე „$4“",
        "logentry-move-move-noredirect": "მომხმარებელმა $1 გვერდი „$3“ {{GENDER:$2|გადაიტანა}} გვერდზე „$4“ გადამისამართების დატოვების გარეშე",
        "logentry-newusers-create2": "მომხმარებლის ანგარიში $3 {{GENDER:$2|შექმნა}} მომხმარებელმა $1",
        "logentry-newusers-byemail": "მომხმარებლის ანგარიში $3 {{GENDER:$2|შექმნა}} მომხმარებელმა $1 და პაროლი გაგზავნა ელ. ფოსტით",
        "logentry-newusers-autocreate": "ავტომატურად {{GENDER:$2|შეიქმნა}} მომხმარებლის ანგარიში $1",
+       "logentry-protect-move_prot": "$1-მ {{GENDER:$2|გადაიტანა}} დაცვის კონფიგურაცია $4-დან $3-ზე",
+       "logentry-protect-unprotect": "$1-მა {{GENDER:$2|მოუხსნა}} დაცვა $3-ს",
+       "logentry-protect-protect": "$1-მ {{GENDER:$2|დაიცვა}} $3 $4",
+       "logentry-protect-protect-cascade": "$1-მ {{GENDER:$2|დაიცვა}} $3 $4 [კასკადური]",
+       "logentry-protect-modify": "$1-მ {{GENDER:$2|შეცვალა}} დაცვის დონე $3 $4-სთვის",
+       "logentry-protect-modify-cascade": "$1 {{GENDER:$2|შეცვალა}} დაცვის დონე $3 $4 [კასკადური]",
        "logentry-rights-rights": "მომხმარებელმა $1 {{GENDER:$2|შეცვალა}} ჯგუფის წევრობა $3-თვის $4-დან $5-ზე",
        "logentry-rights-rights-legacy": "მომხმარებელმა $1 {{GENDER:$2|შეცვალა}} ჯგუფის წევრობა $3-თვის",
        "logentry-rights-autopromote": "მომხმარებელი $1 ავტომატურად იქნა {{GENDER:$2|გადაყვანილი}} $4–დან $5–ში",
        "api-error-badaccess-groups": "თქვენ არ გაქვთ ამ ვიკიში ფაილების ატვირთვის უფლება.",
        "api-error-badtoken": "შიდა შეცდომა: ცუდი ტოკენი.",
        "api-error-copyuploaddisabled": "ამ სერვერზე URL-მისამართის საშუალებით ატვირთვა გამორთულია.",
-       "api-error-duplicate": "á\83£á\83\99á\83\95á\83\94 {{PLURAL:$1|á\83\90á\83 á\83¡á\83\94á\83\91á\83\9dá\83\91á\83¡ á\83¡á\83®á\83\95á\83\90 á\83¤á\83\90á\83\98á\83\9aá\83\98\83\90á\83 á\83¡á\83\94á\83\91á\83\9dá\83\91á\83¡ á\83¡á\83®á\83\95á\83\90 á\83\9bá\83¡á\83\92á\83\90á\83\95á\83¡á\83\98 á\83¤á\83\90á\83\98á\83\9aი}} ანალოგიური შინაარსით.",
+       "api-error-duplicate": "á\83¡á\83\90á\83\98á\83¢á\83\96á\83\94 á\83£á\83\99á\83\95á\83\94 {{PLURAL:$1|á\83\90á\83 á\83¡á\83\94á\83\91á\83\9dá\83\91á\83¡ á\83¡á\83®á\83\95á\83\90 á\83¤á\83\90á\83\98á\83\9aá\83\98\83\90á\83 á\83¡á\83\94á\83\91á\83\9dá\83\91á\83¡ á\83¡á\83®á\83\95á\83\90 á\83¤á\83\90á\83\98á\83\9aá\83\94á\83\91ი}} ანალოგიური შინაარსით.",
        "api-error-duplicate-archive": "საიტზე ადრე {{PLURAL:$1|უკვე იყო ფაილი}} ანალოგიური შინაარსით, მაგრამ {{PLURAL:$1|ის წაიშალა|ისინი წაიშალა}}.",
        "api-error-empty-file": "არჩეული ფაილი ცარიელია.",
        "api-error-emptypage": "ახალი, ცარიელი გვერდების შექმნა აკრძალულია.",
        "expand_templates_preview": "წინა",
        "expand_templates_preview_fail_html": "რადგან translatewiki.net-ზე ჩართული დაუმუშავებელი HTML-ის  მონაცემთა სესიის დაკარვა მოხდა, წინასწარი გადახედვა დამალულია უსაფრთხოების მიზნით, JavaScript-შეტევების საწინააღმდეგოდ.  \n\nთუ ეს იყო წინასწარი გადახედვის სწორი ცდა, გთხოვთ, კიდევ ერთხელ სცადეთ. თუკი თქვენ ისევ და ისევ არ გამოგდით, სცადეთ [[Special:UserLogout|სამუშაო სეანსის დასრულება]] და ხელახალი ავტორიზება.",
        "expand_templates_preview_fail_html_anon": "რადგან translatewiki.net-ზე ჩართული დაუმუშავებელი HTML და თქვენ არ გაქვთ გავლილი ავტორიზაცია, წინასწარი გადახედვა დამალულია უსაფრთხოების მიზნით, JavaScript-შეტევების საწინააღმდეგოდ.  \n\nთუ ეს იყო წინასწარი გადახედვის სწორი ცდა, გთხოვთ, [[Special:UserLogin|შედით]] და ხელმეორედ სცადეთ.",
-       "pagelanguage": "გვერდის ენის არჩევა",
+       "expand_templates_input_missing": "თქვენ უნდა შეიყვანოთ მცირე ტექსტი მაინც.",
+       "pagelanguage": "გვერდის ენის შეცვლა",
        "pagelang-name": "გვერდი",
        "pagelang-language": "ენა",
        "pagelang-use-default": "საწყისი ენის გამოყენება",
        "pagelang-select-lang": "აირჩიეთ ენა",
+       "pagelang-submit": "გაგზავნა",
        "right-pagelang": "გვერდის ენის შეცვლა",
        "action-pagelang": "გვერდის ენის შეცვლა",
        "log-name-pagelang": "ენის ცვლილებების ჟურნალი",
        "log-description-pagelang": "ეს არის გვერდის ენის ცვლილებების ჟურნალი",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|შეცვლილი}} ენის გვერდი $3-დან $4 $5-მდე.",
+       "logentry-pagelang-pagelang": "$1-მა {{GENDER:$2|შეცვალა}} $3-ის ენის გვერდი $4-დან $5-ზე.",
        "default-skin-not-found": "უფს! გაფორმების თემა ნაგულისხმევად თქვენი ვიკისთვის <code dir=\"ltr\">$wgDefaultSkin</code> როგორც <code>$1</code>, მიუწვდომელია.\n\nთქვენი დაყენება, როგორც ჩანს, შეიცავს გაფორმების შემდეგ თემებს. {{PLURAL:$4|skin|skins}}. იხ. [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] იმ ინფორმაციასთან ერთად, თუ როგორ ჩაირთოს და აირჩიოს თემა ნაგულისხმევად {{PLURAL:$4|it|them and choose the default}}.\n\n$2\n\n; თუ თქვენ ახლახან დააყენეთ MediaWiki:\n: თქვენ როგორც ჩანს ეს შეასრულეთ Git ან უშუალოდ საწყისი კოდიდან სხვა მეთოდის გამოყენებით. მაშინ ეს შესაძლებელია. შეეცადეთ დააყენოთ ზოგიერთი თემა [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's skin directory]:\n:* გადმოწერით [https://www.mediawiki.org/wiki/Download tarball installer], რომელიც შეიცავს გაფორმების თემებსა და გაფართოებებს. თქვენ შეგიძლიათ დააკოპიროთ მისგან ფოლდერი <code>skins/</code>.\n:* [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org]-დან ცალკეული გაფორმების თემების არქივიდან.\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Using Git to download skins].\n: ამან არ უნდა ავნოს თქვენ Git რეპოზიტორიას, თუ თქვენ MediaWiki შემმუშავებელი ხართ.\n\n; თუ თქვენ ახლახან განაახლეთ MediaWiki:\n: MediaWiki 1.24 და სხვა აღარ შეიცავენ ავტომატურად დაყენებულ თემებს (იხ. [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]). თქვენ შეგიძლიათ {{PLURAL:$5|line|lines}} <code>LocalSettings.php</code>-ში {{PLURAL:$5|the|all}} რათა ჩართოთ გაფორმების თემები  {{PLURAL:$5|skin|skins}}:\n\n<pre dir=\"ltr\">$3</pre>\n\n; თუ თქვენ ამ წუთას შეცვალეთ <code>LocalSettings.php</code>:\n: გადასინჯეთ თემების სახელწოდებები შეცდომების მაგალითზე..",
        "default-skin-not-found-no-skins": "უფს! გაფორმების თემა ნაგულისხმევად თქვენი ვიკისთვის <code>$wgDefaultSkin</code> როგორც <code>$1</code>, მიუწვდომელია.\n\nთქვენ არ გაქვთ დაყენებული გაფორმების თემები.\n\n; თუ თქვენ ახლახან დააყენეთ ან განაახლეთ MediaWiki:\n: თქვენ შესაძლოა ეს გააკეთეთ Git-იდან ან უშუალოდ სხვა მეთოდის გამოყენების საწყისი კოდიდან. მაშინ ეს შესაძლებელია. MediaWiki 1.24 არ შეიცავს გაფორმების თემებს ძირითად რეპოზიტორიაში. შეეცადეთ დააყენოთ ზოგიერთი თემა [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's skin directory]:\n:* გადმოწერით [https://www.mediawiki.org/wiki/Download tarball installer], რომელიც შეიცავს გაფორმების თემებსა და გაფართოებებს. თქვენ შეგიძლიათ დააკოპიროთ და ჩასვათ <code>skins/</code>.\n:* ცალკეული გაფორმების თემების არქივების გადმოწერით [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org]-დან.\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Using Git to download skins].\n: ამან არ უნდა ავნოს თქვენ Git რეპოზიტორიას, თუ თქვენ MediaWiki შემმუშავებელი ხართ. იხ. [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] ინფორმაცია იმის შესახებ თუ როგორ უნდა ჩაირთოს გაფორმების თემები და აირჩეს თემა ნაგულისხმევად.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (ჩართულია)",
        "mediastatistics": "მედია-სტატისტიკა",
        "mediastatistics-summary": "სტატისტიკური მონაცემები ჩატვირთული ფაილების ტიპების შესახებ. იგი შეიცავს ინფორმაციას მხოლოდ ფაილების ბოლო ვერსიის შესახებ. ფაილების უფრო ძველი ან წაშლილი ვერსიები არ ითვლება.",
        "mediastatistics-nbytes": "{{PLURAL:$1|$1 ბაიტი|$1 ბაიტი}} ($2; $3%)",
+       "mediastatistics-bytespertype": "სრული ფაილის ზომა ამ სექციისთვის: {{PLURAL:$1|$1 ბაიტი|$1 ბაიტი}} ($2; $3%).",
+       "mediastatistics-allbytes": "სრული ფაილის ზომა ყველა ფაილისთვის: {{PLURAL:$1|$1 ბაიტი|$1 ბაიტი}} ($2).",
        "mediastatistics-table-mimetype": "MIME-ტიპი",
        "mediastatistics-table-extensions": "შესაძლო გაფართოებები",
        "mediastatistics-table-count": "ფაილების რაოდენობა",
        "mediastatistics-header-text": "ტექსტური",
        "mediastatistics-header-executable": "შესრულებადი",
        "mediastatistics-header-archive": "შეკუმშული ფორმატები",
+       "mediastatistics-header-total": "ყველა ფაილი",
        "json-warn-trailing-comma": "$1 {{PLURAL:$1|ბოლოში არსებული ზედმეტი მძიმე წაიშალა|ბოლოში არსებული ზედმეტი მძიმეები წაიშალა|ბოლოში არსებული ზედმეტი მძიმე წაიშალა}} JSON-დან",
        "json-error-unknown": "არსებობს პრობლემა JSON-სთან დაკავშირებით, შეცდომა: $1",
        "json-error-depth": "მომატებულია სტეკის მაქსიმალური სიღრმე",
        "mw-widgets-titleinput-description-new-page": "გვერდი ჯერ არ არსებობს",
        "mw-widgets-titleinput-description-redirect": "გადამისამართება $1-ზე",
        "api-error-blacklisted": "გთხოვთ, აირჩიეთ სხვა, აღწერილობითი სათაური.",
+       "sessionprovider-generic": "$1 სესიები",
+       "sessionprovider-mediawiki-session-cookiesessionprovider": "cookie-სთან დაკავშირებული სესიები",
        "randomrootpage": "შემთხვევითი ძირეული გვერდი"
 }
index eab9811..4fe3fb6 100644 (file)
        "unwatch": "Şê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",
-       "watchlistall2": "pêro",
        "watchlist-options": "Alternatifê lista şêrkerdene",
        "watching": "Şêr ke…",
        "unwatching": "Şêr meke…",
        "restriction-upload": "Bar ke",
        "restriction-level-sysop": "tam sevekiyo",
        "restriction-level-autoconfirmed": "nêm sevekiyo",
-       "restriction-level-all": "heme jü sewiya",
+       "restriction-level-all": "kamci be sewiya",
        "undelete": "Pelunê esteriyau basna",
        "undeletepage": "Pelunê esteriyau bıvine u peyser biya",
        "undeletepagetitle": "'''Ni, [[:$1|$1]] be çımraviarnaunê pele ra yenê pêra'''.",
index 78ec4c8..15d9801 100644 (file)
        "throttled-mailpassword": "비밀번호 재설정 이메일을 이미 최근 {{PLURAL:$1|$1시간}} 안에 보냈습니다.\n악용을 방지하기 위해 비밀번호 재설정 메일은 {{PLURAL:$1|$1시간}}마다 오직 하나씩만 보낼 수 있습니다.",
        "mailerror": "메일을 보내는 중 오류: $1",
        "acct_creation_throttle_hit": "당신의 IP 주소를 이용한 방문자가 이전에 이미 {{PLURAL:$1|계정 $1개}}를 만들어, 계정 만들기 한도를 초과하였습니다.\n따라서 지금은 이 IP 주소로는 더 이상 계정을 만들 수 없습니다.",
-       "emailauthenticated": "이메일 주소는 $2 에 $3 에서 인증되었습니다.",
+       "emailauthenticated": "이메일 주소가 $2 $3에 인증되었습니다.",
        "emailnotauthenticated": "이메일 주소를 인증하지 않았습니다.\n이메일 확인 절차를 거치지 않으면 다음 이메일 기능을 사용할 수 없습니다.",
        "noemailprefs": "이 기능을 사용하기 위해서는 사용자 환경 설정에서 이메일 주소를 설정해야 합니다.",
        "emailconfirmlink": "이메일 주소 확인",
        "filewasdeleted": "같은 이름을 가진 파일이 올라온 적이 있었고 그 후에 삭제되었습니다.\n올리기 전에 $1을 확인해 주시기 바랍니다.",
        "filename-bad-prefix": "올리려고 하는 파일 이름이 '''\"$1\"''' 이름으로 시작합니다. \"$1\" 이름은 디지털 사진기가 자동으로 붙이는 의미없는 이름입니다.\n파일에 대해 알기 쉬운 이름을 골라주세요.",
        "filename-prefix-blacklist": " #<!-- 이 줄은 그대로 두십시오 --> <pre>\n# 문법은 다음과 같습니다:\n#   * \"#\" 문자에서 줄의 끝까지는 주석입니다\n#   * 비어 있지 않은 줄은 디지털 카메라에서 자동적으로 부여하는 파일 접두어입니다\nCIMG # 카시오\nDSC_ # 니콘\nDSCF # 후지\nDSCN # 니콘\nDUW # 일부 휴대폰\nIMG # 일반\nJD # 제놉틱\nMGP # 펜탁스\nPICT # 기타\n #</pre> <!-- 이 줄은 그대로 두십시오 -->",
-       "upload-success-subj": "올리기 성공",
-       "upload-success-msg": "파일을 [$2]에서 성공적으로 올렸습니다. 올린 파일은 여기 있습니다: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "올리기 실패",
-       "upload-failure-msg": "[$2]에서 파일을 올리는 중 문제가 발생했습니다:\n\n$1",
-       "upload-warning-subj": "파일 올리기 경고",
-       "upload-warning-msg": "[$2]에서 파일을 올리는 데 문제가 있습니다. 이 문제를 해결하려면 [[Special:Upload/stash/$1|올리기 양식]]으로 되돌아가십시오.",
        "upload-proto-error": "잘못된 프로토콜",
        "upload-proto-error-text": "파일을 URL로 올리려면 <code>http://</code>이나 <code>ftp://</code>로 시작해야 합니다.",
        "upload-file-error": "내부 오류",
        "wlheader-showupdated": "마지막으로 방문한 이후에 바뀐 문서는 '''굵은 글씨'''로 보입니다.",
        "wlnote": "$3 $4 기준으로, 아래에 최근 {{PLURAL:$2|한 시간|<strong>$2</strong>시간}} 동안 {{PLURAL:$1|마지막 바뀜이|마지막 바뀜 <strong>$1</strong>개가}} 있습니다.",
        "wlshowlast": "최근 $1시간 $2일 동안의 바뀜 보기",
-       "watchlistall2": "모두",
        "watchlist-hide": "숨기기",
        "watchlist-submit": "보기",
-       "wlshowtime": "시할 기간:",
+       "wlshowtime": "시할 기간:",
        "wlshowhideminor": "사소한 편집",
        "wlshowhidebots": "봇",
        "wlshowhideliu": "등록된 사용자",
index a54b02a..c1d1cff 100644 (file)
        "uploaded-script-svg": "Mer han e verbodde Skrepp_Elemänd en dä huhjelahde <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Scalable Vector Graphics\">SVG</i>_Dattei jefonge: „$1“",
        "uploaded-hostile-svg": "Mer han onseescher <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Cascading Style Sheet\">CSS</i>-Befähle en enem „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">style</code>“-Ellemänt vun dä huhjelahde <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Scalable Vector Graphics\">SVG</i>_Dattei jefonge.",
        "uploaded-event-handler-on-svg": "Projramme för Ä'eijschneße ze behanndelle „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">&lt;$1=\"$2\"&gt;</code>“ ennzesäze es en <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Scalable Vector Graphics\">SVG</i>_Datteije verbodde.",
-       "uploaded-href-attribute-svg": "De Eijeschaff „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">href</code>“ „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">&lt;$1 $2=\"$3\"&gt;</code>“ met Zihl_Datteije ußerhallef vum Wikki, Beijschpelle „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">http://</code>“,  „<code $3lang=\"en\" xml:lang=\"en\" dir=\"ltr\">javascript:</code>“, un esu wigger, sin verbodde en dä <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Scalable Vector Graphics\">SVG</i>_Datteije.",
        "uploaded-href-unsafe-target-svg": "Mer han ene „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">href</code>“-Befähl obb e onseescher Zihl „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">&lt;$1 $2=\"$3\"&gt;</code>“ en dä huhjelahde <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Scalable Vector Graphics\">SVG</i>_Dattei jefonge.",
        "uploaded-animate-svg": "Mer han dä Befähl „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">animate</code>“ en dä huhjelahde \n<i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Scalable Vector Graphics\">SVG</i>_Dattei jefonge, dä ene „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">href</code>“-Befähl verändere künnt övver de „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">from</code>“-Eijeschaff „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">&lt;$1 $2=\"$3\"&gt;</code>“.",
        "uploaded-setting-event-handler-svg": "Ed es verbodde, Projramme för Ä'eijschneße ze behanndelle ennzesäze, un de Datteije, di dat donn, wähde jeschpächt. Mer han „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">&lt;$1 $2=\"$3\"&gt;</code>“ en dä huhjelahde <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Scalable Vector Graphics\">SVG</i>_Dattei jefonge.",
        "filename-thumb-name": "Dä Nahme süht wi en Övverschreff för e Minnibelldsche uß. Donn kein Minnibelldscher retuhr en et sällve Wikki huhlahde. Söns kam_mer och dä Nahme för di Datteij änndere, datt_e mih Senn hät un keijne tüppesche Aanfang vun enem Minnibelldsche.",
        "filename-bad-prefix": "Dä Datei ier Name fängk met '''„$1“''' aan. dat eß fä jewöhnlesch ene Name, dä en dijjitaale Kammerra iere Belder jitt. Esu en Name donn uns esu winnisch verzälle, dat mer se nit jän em Wiki han wulle.\nBes esu joot un jiff dä enne Name, wo mer mieh met aanfange, öm ze wesse, wat en dä Datei dren es.",
        "filename-prefix-blacklist": " #<!-- Lohß di Reih jenou esu wie se es! --> <pre>\n#  Syntax:\n#   * Alles zwesche em #-Zeiche bes nohm Engk vun de Reih es ene Kommäntaa\n#   * Jede Reih met jet dren es ene typpesche Aanfang för ene Datteiname,\n#   * dä automattesch vun ene Dijjitahlkammera kütt\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # - et ein udder andere mobile Tellefohn -\nIMG # - alljemein üplesch -\nJD # Jenoptik\nMGP # Pentax\nPICT # - diverse -\n #</pre> <!-- Lohß di Reih jenou esu wie se es! -->",
-       "upload-success-subj": "Et Huhlade hät jeflupp",
-       "upload-success-msg": "Ding vun [$2] huhjelaade Dattei es jäz och hee: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Probleem bem Huhlaade",
-       "upload-failure-msg": "Mer hatte e Probleem met Dinge huhjelaade Dattei vun [$2]:\n\n$1",
-       "upload-warning-subj": "Warnung beim Huhlade",
-       "upload-warning-msg": "Met däm Huhlaade vun [$2] es jet donevve jejange, Do kanns retuur jon op et [[Special:Upload/stash/$1|Fommulaa zom Huhlaade]] öm dat ze repareere.",
        "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",
        "wlheader-showupdated": "Wann se Einer jeändert hätt, zickdäm De se et letzte Mol aanjeluurt häs, sin di Sigge <strong>extra markeet</strong>.",
        "wlnote": "{{PLURAL:$1|Hee es de läzde Änderong uß|Hee sin de läzde <strong>$1</strong> Änderonge uß|Mer han kein Änderonge en}} de läzde {{PLURAL:$2|Stund|<strong>$2</strong> Stunde|<strong>noll</strong> Stunde}} zigg em $3 öm $4 Uhr.",
        "wlshowlast": "Zeisch de läzde $1 Schtunde, $2 Dähsch aan.",
-       "watchlistall2": "all",
        "watchlist-hide": "Verschtisch",
        "wlshowhideminor": "klein Minni-Änderonge",
        "wlshowhidebots": "de Bots ehr Änderonge",
        "javascripttest-pagetext-frameworks": "Bes esu jood un söök eine vun dä Prööfömjävvonge us: $1",
        "javascripttest-pagetext-skins": "Sööke en Bovverfläsch udder et Ußsinn uß, öm di Prööfonge domet ze maache:",
        "javascripttest-qunit-intro": "Loor noh dä [$1 Dokemäntation övver et Prööfe] op mediawiki.org.",
-       "tooltip-pt-userpage": "Don Ding eije Metmaachersigg aanzeije",
+       "tooltip-pt-userpage": "Don Ding eije Metmaachersigg aanzeije{{GENDER:|}}",
        "tooltip-pt-anonuserpage": "Metmaachersigg för di <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Internet Protocol\">IP</i>-Adräß, vun wo uß De jraad Ding Ännderonge un Äjännzonge aam Wiki am maache bes",
-       "tooltip-pt-mytalk": "Dun Ding eije Klaafsigg aanzeije",
+       "tooltip-pt-mytalk": "Dun Ding eije Klaafsigg aanzeije{{GENDER:|}}",
        "tooltip-pt-anontalk": "Klaaf övver Änderunge, di vun dä IP-Adress uß jemaat wodte",
-       "tooltip-pt-preferences": "De eije Ennschtällonge",
+       "tooltip-pt-preferences": "De eije Ennschtällonge{{GENDER:|}}",
        "tooltip-pt-watchlist": "De Leß met de Sigge en Dinge eije Oppaßleß",
-       "tooltip-pt-mycontris": "en Leß met Dinge eije Beijdrähsch",
+       "tooltip-pt-mycontris": "En Leß met Dinge eije Beijdrähsch{{GENDER:|}}",
        "tooltip-pt-login": "Do moß Desch nit Enlogge, kannz_E ävver jähn maache!",
        "tooltip-pt-logout": "Ußlogge",
        "tooltip-pt-createaccount": "mer schlonn vör, dat De Desch aanmällde deihs un ennloggs, ävver müüdesch es et nit.",
        "tooltip-t-recentchangeslinked": "De neuste Änderonge aan Sigge, wo vun heh dä Sigg uß Lengks drop jon",
        "tooltip-feed-rss": "Dä RSS-Abonnomang-Kannal (Feed) för heh di Sigg",
        "tooltip-feed-atom": "Dä Atom-Abonnomang-Kannal (Feed) för heh di Sigg",
-       "tooltip-t-contributions": "Donn en Leß met dä Bedrähsch vun däm Metmaacher belooere",
+       "tooltip-t-contributions": "Donn en Leß met dä Bedrähsch {{GENDER:$1|vun heh däm|vun heh dämm|vun heh dämm Metmaacher|vun heh dä|vun heh däm}} belohre",
        "tooltip-t-emailuser": "Scheck en E-Mail aan dä Metmaacher",
        "tooltip-t-info": "Mih Aanjahbe övver heh di Sigg",
        "tooltip-t-upload": "Dateie huhlade",
index 253d1ed..b274dfe 100644 (file)
        "prefs-personal": "Proprietates",
        "prefs-rc": "Nuper mutata",
        "prefs-watchlist": "Paginae observandae",
-       "prefs-watchlist-days": "Per quot dies mutationes porrigendae sint:",
+       "prefs-watchlist-days": "Quot dies index respiciat:",
        "prefs-watchlist-days-max": "Numerus maximus: $1 {{PLURAL:$1|dies|dies}}",
-       "prefs-watchlist-edits": "Quot mutationes maxime porrigendae sint:",
+       "prefs-watchlist-edits": "Quot mutationes index summum respiciat:",
        "prefs-watchlist-edits-max": "Numerus maximus: 1000",
        "prefs-misc": "Misc",
        "prefs-resetpass": "Tesseram mutare",
        "rows": "Lineae:",
        "columns": "Columnae:",
        "searchresultshead": "Figuratio eventorum investigationis",
-       "recentchangesdays": "Per quot dies mutationes porrigendae sint:",
-       "recentchangescount": "Quot mutationes porrigendae sint:",
+       "recentchangesdays": "Quot dies index respiciat:",
+       "recentchangescount": "Quot mutationes index respiciat:",
        "savedprefs": "Praeferentiae tuae servatae sunt.",
        "timezonelegend": "Zona temporis:",
        "localtime": "Hora indigena:",
        "prefs-preview": "Prospectus",
        "prefs-advancedrc": "Modi speciales",
        "prefs-advancedwatchlist": "Indicis modi speciales",
-       "prefs-displayrc": "Praeferentiae vultus",
-       "prefs-displaywatchlist": "Praeferentiae vultus",
+       "prefs-displayrc": "Modi generales",
+       "prefs-displaywatchlist": "Modi generales",
        "prefs-diffs": "Differentiae",
        "userrights": "Usorum potestates",
        "userrights-lookup-user": "Greges usorum regere",
        "destfilename": "Nomen fasciculi petitum:",
        "upload-maxfilesize": "Maxima fasciculi magnitudo: $1",
        "watchthisupload": "Observare hunc fasciculum",
-       "upload-success-subj": "Impositum est perfectum",
        "upload-proto-error": "Protocollum incorrectum",
        "upload-file-error": "Erratum internum",
        "upload-misc-error": "Erratum impositionis ignotum",
        "wlheader-showupdated": "Paginae nondum a te inspectae <strong>typis crassioribus</strong> ostenduntur.",
        "wlnote": "{{PLURAL:$1|Indicatur mutatio novissima|Indicantur '''$1''' mutationes novissimae}} abhinc {{PLURAL:$2|superiorem horam|superiores '''$2''' horas}} (ab $3, $4) factae.",
        "wlshowlast": "Monstrare proximas $1 horas $2 dies",
-       "watchlistall2": "omnes",
        "watchlist-hide": "Supprimere recensiones",
        "watchlist-submit": "Porrige",
        "wlshowtime": "Temporis spatium porrigendum:",
index 89d169c..30252c6 100644 (file)
        "botpasswords-disabled": "Botpasswierder sinn desaktivéiert.",
        "botpasswords-no-central-id": "Fir Botpasswierder ze benotze musst Dir mat engem zentraliséierte Benotzerkont ageloggt sidd.",
        "botpasswords-existing": "Aktuell Botpasswierder.",
+       "botpasswords-createnew": "En neit Botpasswuert uleeën",
        "botpasswords-editexisting": "E Botpasswuert änneren",
        "botpasswords-label-appid": "Numm vum Bot:",
        "botpasswords-label-create": "Uleeën",
        "badsig": "D'Syntax vun Ärer Ënnerschrëft ass net korrekt; iwwerpréift w.e.g. den HTML Code.",
        "badsiglength": "Är Ënnerschrëft ass ze laang.\nSi muss manner wéi $1 {{PLURAL:$1|Zeechen|Zeechen}} hunn.",
        "yourgender": "Wéi wëllt Dir beschriwwe ginn?",
-       "gender-unknown": "Wann Dir ernimmt gëtt da benotzt d'Software do wou et méiglech ass geschlechtsneutral Wierder",
+       "gender-unknown": "Wann Dir ernimmt gitt da benotzt d'Software do wou et méiglech ass geschlechtsneutral Wierder",
        "gender-male": "Hien ännert Wikisäiten",
        "gender-female": "Si ännert Wikisäiten",
        "prefs-help-gender": "Fakultativ:\nD'Software benotzt seng Wäerter fir Iech unzeschwätzen a fir vun Iech vis-a-vis vun Aneren grammatesch ''Gender-korrekt'' ze schwätzen. \n\nDës Informatioun ass ëffentlech.",
        "grant-group-customization": "Upassungen an Astellungen",
        "grant-group-administration": "Administrativ Aktioune maachen",
        "grant-group-other": "Verschidden Aktivitéiten",
-       "grant-blockusers": "Benotzer spären an hir Spär ophiewen",
+       "grant-blockusers": "Benotzer spären an d'Spären ophiewen",
        "grant-createaccount": "Benotzerkonten opmaachen",
        "grant-createeditmovepage": "Säiten uleeën, änneren a réckelen",
        "grant-delete": "Säiten, Versiounen a Rubriken a Logbicher läschen",
        "grant-sendemail": "Anere Benotzer E-Maile schécken",
        "grant-uploadeditmovefile": "Fichieren eroplueden, ersetzen a réckelen",
        "grant-uploadfile": "Nei Fichieren eroplueden",
+       "grant-basic": "Basisrechter",
        "grant-viewdeleted": "Geläscht Fichieren a Säite weisen",
-       "grant-viewmywatchlist": "Kuckt Är Iwwerwaachungslëscht",
+       "grant-viewmywatchlist": "Är Iwwerwaachungslëscht weisen",
        "newuserlogpage": "Logbuch vun den neien Umeldungen",
        "newuserlogpagetext": "Dëst ass d'Lescht vun de Benotzernimm déi ugeluecht goufen.",
        "rightslog": "Logbuch vun de Benotzerrechter",
        "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.",
        "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.g. en Numm, deen den Inhalt besser beschreift, an deen net verwiesselt ka ginn.",
-       "upload-success-subj": "Eroplueden erfollegräich",
-       "upload-success-msg": "Äert Eropluede vun [$2] huet funktionéiert. De Fichier ass hei disponibel: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Problem beim Eroplueden",
-       "upload-failure-msg": "Et gouf e Problem mam Fichier vu(n) [$2] deen Dir eropgelueden hutt:\n\n$1",
-       "upload-warning-subj": "Warnung beim Eroplueden",
-       "upload-warning-msg": "Et gouf e Problem beim Eropluede vun [$2]. Dir kënnt op de [[Special:Upload/stash/$1|Formulaire fir eropzelueden]] goe fir de Problem ze léisen.",
        "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",
        "wlheader-showupdated": "Säiten déi zanter Ärer leschter Visite geännert goufen, si '''fett''' geschriwwen",
        "wlnote": "Hei {{PLURAL:$1|ass déi lescht Ännerung|sinn déi lescht <strong>$1</strong> Ännerunge}} vun {{PLURAL:$2|der leschter Stonn|de leschte(n) <strong>$2</strong> Stonnen}}, Stand: $3 ëm $4 Auer.",
        "wlshowlast": "Déi lescht $1 Stonnen $2 Deeg weisen",
-       "watchlistall2": "all",
        "watchlist-hide": "Verstoppen",
        "watchlist-submit": "Weisen",
        "wlshowtime": "Zäitraum dee gewise gëtt:",
        "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",
+       "siteusers": "{{SITENAME}} {{PLURAL:$2|Benotzer}} $1",
        "anonusers": "{{PLURAL:$2|Anonyme(n)|Anonym}} {{SITENAME}}-Benotzer $1",
        "creditspage": "Quellen",
        "nocredits": "Fir dës Säit si keng Informatiounen iwwer d'Mataarbechter vun der Säit disponibel.",
        "expand_templates_generate_rawhtml": "HTML-Format weisen",
        "expand_templates_preview": "Kucken ouni ofzespäicheren",
        "expand_templates_input_missing": "Dir musst mindestens een Text aginn.",
-       "pagelanguage": "Eraussiche vun der Sprooch vun der Säit",
+       "pagelanguage": "Sprooch vun der Säit änneren",
        "pagelang-name": "Säit",
        "pagelang-language": "Sprooch",
        "pagelang-use-default": "Standard-Sprooch benotzen",
index 78dc9e0..643c334 100644 (file)
@@ -7,7 +7,7 @@
                        "Mjbmr"
                ]
        },
-       "tog-underline": ":خط کیشائن ئۀ ژئر پئؤن",
+       "tog-underline": "کڕ(خط)کیشائن ژێر پیوندەل:",
        "tog-hideminor": "آشاردن دەسکاریەل گؤجەر  إژ گؤەڕیال(تغییرات) ایسە(اخیر)",
        "tog-hidepatrolled": "دسکاریۀل گه دیار بینۀ ئژ فئرست-رزگ تغییرات اخیر بشارا",
        "tog-newpageshidepatrolled": "وڵگۀل گه دیار بینۀ ئژ فئرست-رزگ ولگۀل تازۀ بشارا",
@@ -16,7 +16,7 @@
        "tog-usenewrc": "تنیا آڵؤن(آلشتی)کریال تازۀ ؤ لیست پئگیریۀل رزگ بنی-گروه بندی کۀ",
        "tog-numberheadings": "شؤمارۀ  نئ خودکار سروڵگۀل-عناوین",
        "tog-showtoolbar": "دیار دائن ابزار دسکاری",
-       "tog-editondblclick": "دسکاری ولگۀل ئۀ دؤ گل کلیک کردن",
+       "tog-editondblclick": "دەسکاری وەڵگەل وە دۆگل کلیک کردن",
        "tog-editsectiononrightclick": "دسکاری کردن راسال-بخشۀل ئۀ کلیک راست کردن ئۀرؤی سرولگۀل باج کار",
        "tog-watchcreations": "وڵگۀلئ گه مَسازم ؤ پرؤندۀلئ گه مۀنم اضافۀ که فئرست سئرکردنۀل",
        "tog-watchdefault": "ولگۀل ؤ پرؤندۀلئ گه دسکاری مۀکم بنه نؤم فئرست سئرکردن",
@@ -25,7 +25,7 @@
        "tog-watchrollback": "ولگۀل گه ماره ما-بازگردانی مۀکم بنه نؤم فئرست سئرکردن",
        "tog-minordefault": "کؤڵ دسکاری بیۀل به عنؤان پئش فرض عڵامت بۀرن",
        "tog-previewontop": "پیش نمایش وهِ رئ جعبۀ نمایش نیشؤن به",
-       "tog-previewonfirst": "پئش نمایش-ورئ سئرکردن ئۀ اؤڵئن دسکاری نیشؤن به",
+       "tog-previewonfirst": "پێش دئین وە اوەڵێن دەسکاری نیشۆن دە",
        "tog-enotifwatchlistpages": "ئۀر وڵگۀ یا پرؤندئه ئژ فئرست-رزگ پی‌گیری‌ۀلم دسکاری بی نامه ئۀرا مه کِلّ کۀ",
        "tog-enotifusertalkpages": "هۀنئگه-وختئ گه ئۀ وڵگۀ گپ کابریم تغییر کریا نامه ئۀرا مه کِل کۀ",
        "tog-enotifminoredits": "ئۀر تغییرۀل-آڵؤنۀل(آلشتۀل)گؤجۀریجی ئۀر وڵگۀل ؤ پرؤندۀلم کریا نامه ئۀرا مه کِل کۀ",
        "tog-watchlisthideown": "دسکاریۀل ووژم ئژ فئرست سئرکردن بشارآ",
        "tog-watchlisthidebots": "دسکاریۀل ربات ئژ فئرست سئرکردن بشآرا",
        "tog-watchlisthideminor": "دسکاریۀل گؤجۀر ئژ فئرست سئرکردن بشارآ",
-       "tog-watchlisthideliu": "دسکاری کاربرۀلئ گه هۀتۀنئ نؤم سیستم ئۀ فئرست سئرکردن بشارآ",
+       "tog-watchlisthideliu": "دەسکاری کاربرەل إنۆم هەتێ سیستم وە لیست پیگیریەل بشارآ",
        "tog-watchlistreloadautomatically": "Reload the watchlist automatically whenever a filter is changed (JavaScript required)",
        "tog-watchlisthideanons": "دةسکاری کاربرةل ناشنا ئة لیست نمائش بشارآ",
        "tog-watchlisthidepatrolled": "دسکاریۀل گشت خورده-سئرکریا ئژ فئرست سئرکردن بشآرا",
        "tog-watchlisthidecategorization": "نهفتن رده‌بندی صفحه‌ها",
-       "tog-ccmeonemails": "رؤی نؤیسیائ  ئژ نامۀلئگه کِلۀ مِه هۀم کاربرۀل-بهرۀگرۀل ئۀرا ووژم کِل که",
+       "tog-ccmeonemails": "کپی إژ ایمیلێ گإ أڕا کاربەرەل کِلە مەکەم أڕا ووژم کِل کە",
        "tog-diffonly": "نۆم جِک(محتوا)وەڵگە، أ ژێر تفاوت دیار ناوو(نمایش ندهد)",
        "tog-showhiddencats": "دسۀل-رزگۀل آشاریآ نیشؤن دۀ",
        "tog-norollbackdiff": "دؤما واگردانی تفاوت نیشؤن نه",
        "tog-prefershttps": "همؤیشۀ ئۀرا ئۀ نؤم سیستم هۀتن ئژ اتصالۀل امن بهرۀ بگر-استفادۀ کۀ",
        "underline-always": "همؤیشۀ",
        "underline-never": "هؤیچ وخت",
-       "underline-default": "Ù¾Ù\88ستÙ\87 Û\8cا Ù\85Ù\90Ù\87 Ù\86Ù\90Û\8c Ú©Û\80ر پیش‌فرض",
+       "underline-default": "Ù¾Ù\88ستÙ\87 Û\8cا Ù\85Ù\90Ù\86Ù\90Û\8c Ú©Û\95ر پیش‌فرض",
        "editfont-style": ":شئؤۀ قلم جعبهٔ دسکاری",
-       "editfont-default": "Ù¾Û\8cØ´Ù\81رض Ù\85Ù\90Ù\87 Ù\86Ù\90Û\8c Ú©Û\80ر",
-       "editfont-monospace": "قلم ئۀ ۋاصلۀ ثابت",
+       "editfont-default": "Ù¾Û\8cØ´Ù\81رض Ù\85Ù\90Ù\86Ù\90Û\8c Ú©Û\95ر",
+       "editfont-monospace": "قلم وە فاصلۀ ثابت",
        "editfont-sansserif": "قلم بئ گوشۀ",
        "editfont-serif": "قلم گوشۀ دار",
        "sunday": "یشۀمۀ",
        "redirectedfrom": "(تغییرمسیر إژ $1)",
        "redirectpagesub": "وةڵگة تغییرمسیر",
        "redirectto": ":تغییر مسیر به",
-       "lastmodifiedat": ".ئئ Ù\88Û\80Ù\84Ú¯Û\80آخرÛ\8cÙ\86 Ú¯Ù\90Ù\84 Ø¦Û\80 $1 Ø³Ø§Øª $2 ØªÛ\80غÛ\8cر Ú¯Ù\90رتÛ\8cÛ\80سئ",
+       "lastmodifiedat": ".اÛ\8e Ù\88Û\95ÚµÚ¯Û\95آخرÛ\8cÙ\86 Ú¯Ù\90Ù\84 Ù\88Û\95 $1 Ø³Ø§Øª $2 Ú¯Ø¤Û\95Ú\95Û\8cائÛ\95(تغÛ\8cÛ\8cرÛ\8cاÙ\81تÙ\87)",
        "viewcount": "إژ ئئ وةڵگة  {{PLURAL:$1|یإ گِل|$1$1چةن گِل}} بازدید بیة.",
        "protectedpage": "وەڵگە پڵۆم بیە",
        "jumpto": ":وازآ کردن/پریدن وۀ",
        "welcomeuser": "خؤةش هةتینة/هاتینة $1!",
        "welcomecreation-msg": "حساوو کاربری هۆمە دؤرس بی.\nویرتان نەچوو(فراموش نشە) گإ [[Special:Preferences|تمارزووەل(ترجیحات) {{SITENAME}}]] ووِژت بگؤەڕنین( تغییر دهی).",
        "yourname": ":نۆم کاربەری",
-       "userlogin-yourname": "نؤم بهرۀگر-کاربر",
+       "userlogin-yourname": "نۆم کاربەری",
        "userlogin-yourname-ph": "نۆم کاربەری ووژت وارد کە",
        "createacct-another-username-ph": "نام کاربۀری تؤن وارد کۀن",
        "yourpassword": ":رمز عبور",
        "nocookieslogin": "{{SITENAME}} برای ورود کاربران به سامانه از کوکی‌ها استفاده می‌کند.\nشما کوکی‌ها را از کار انداخته‌اید.\nلطفاً کوکی‌ها را به کار بیندازید و دوباره امتحان کنید.",
        "nocookiesfornew": "حساوو کاربةری نةسازریا، زیرا نتوانستیم منبع آن را تأیید کنیم.\nمطمئن شوید که کوکی‌ها فعال هستند، آن‌گاه صفحه را از نو بارگیری کنید و دوباره امتحان کنید.",
        "noname": ".هؤمة نام کاربةری معتبری دیاری نکردئة",
-       "loginsuccesstitle": "موفق بین چینإ سیستم",
+       "loginsuccesstitle": "إنۆم سیستم هەتن انجۆم گرت",
        "loginsuccess": "هؤمة ایسة هةتیإ نؤم سیستم {{SITENAME}} وۀ نام\"$1\".'",
        "nosuchuser": "کاربةری وۀ نام «$1» ئة ائرة نیة.\nنام کاربةری وة کةڵنگی و گؤجةری حروف حساسة .\nاملای نام را بررسی کنید، یا [[Special:UserLogin/signup|یک حساب کاربری تازه بسازید]].",
        "nosuchusershort": "هؤیچ کاربةری وة نام ''$1'' ئة ائرة نیة.\nاملایتان را وارسی کنید.",
        "nextrevision": "نسخهٔ جدیدتر ←",
        "currentrevisionlink": "نمایش نسخهٔ فعلی",
        "cur": "فعلی",
-       "next": "بچؤ نووا/بعدی",
+       "next": "بچۆ نووآ",
        "last": "قبلی/دؤمائن",
        "page_first": "إژ أؤةل",
        "page_last": "دؤمائن/آخرین",
        "textmatches": "تطبیق متن مقاله",
        "notextmatches": "متن هیچ مقاله‌ای مطابقت ندارد",
        "prevn": "تای قبلی{{PLURAL:$1|$1}}",
-       "nextn": "تای بعدی{{PLURAL:$1|$1}}",
+       "nextn": "گلە نووآ تر{{PLURAL:$1|$1}}",
        "prev-page": "صفحهٔ قبلی",
-       "next-page": "وةڵگة تِر/بعدی",
+       "next-page": "وەڵگە تِر(هەنی)",
        "prevn-title": "پيشتر $1 {{PLURAL:$1|نتيجه|نتيجةل}}",
        "nextn-title": "Next $1 {{PLURAL:$1|result|results}}",
        "shown-title": "نمایش$1 {{PLURAL:$1|نتیجه|نتایج}} وۀ هۀر وۀلگۀ",
        "search-interwiki-more": "(فرةتر)",
        "search-relatedarticle": "مرتبط",
        "searchrelated": "مرتبط",
-       "searchall": "کؤل",
+       "searchall": "کؤل(گشت)",
        "showingresults": "نمایش حداکثر {{PLURAL:$1|'''۱''' نتیجه|'''$1''' نتیجه}} در پایین، آغاز از شماره '''$2'''.",
        "showingresultsinrange": "نمایش در پائین تا {{PLURAL:$1|<strong>1</strong> نتیجه|<strong>$1</strong> نتیجه}} در محدودهٔ #<strong>$2</strong> تا #<strong>$3</strong>.",
        "search-showingresults": "{{PLURAL:$4|نتایج <strong>$1</strong> از <strong>$3</strong>|نتایج <strong>$1 - $2</strong> از <strong>$3</strong>}}",
        "powersearch-legend": "مِنِی کردن پیشرفته",
        "powersearch-ns": "جستجو در فضاهای نام:",
        "powersearch-togglelabel": "بررسی:",
-       "powersearch-toggleall": "کۆل",
+       "powersearch-toggleall": "کؤل(گشت)",
        "powersearch-togglenone": "هؤیچ کام",
        "powersearch-remember": "انتخاب را برای جستجوهای بعدی به خاطر داشته‌باش",
        "search-external": "جستجوی خارجی",
        "servertime": "زمان سرور:",
        "guesstimezone": "از مرورگر گرفته شود",
        "timezoneregion-africa": "ئافریقا",
-       "timezoneregion-america": "ئامریکا",
+       "timezoneregion-america": "Ø¢مریکا",
        "timezoneregion-antarctica": "قطب جنوبی",
        "timezoneregion-arctic": "قطب شمالی",
        "timezoneregion-asia": "ئاسیا",
        "group-sysop": "مدیران",
        "group-bureaucrat": "دیوان‌سالاران",
        "group-suppress": "فرونشانندگان",
-       "group-all": "(کۆل)",
+       "group-all": "(کؤل(گشت))",
        "group-user-member": "{{GENDER:$1|کاربةر}}",
        "group-autoconfirmed-member": "{{GENDER:$1|کاربةر تأیید بی}}",
        "group-bot-member": "ربات",
        "uploaded-script-svg": "عنصر قابل برنامه‌ریزی «$1» در پرونده بارگذاری اس‌وی‌جی یافت شد.",
        "uploaded-hostile-svg": "سی‌اس‌اس نا امن در عنصر سبک پروندهٔ بارگذاری شدهٔ اس‌وی‌جی یافت شد.",
        "uploaded-event-handler-on-svg": "قرار دادن ویژگی‌های مدیریت رویداد <code>$1=\"$2\"</code> در پرونده‌های اس‌وی‌جی مجاز نیست.",
-       "uploaded-href-attribute-svg": "ویژگی‌های href <code>&lt;$1 $2=\"$3\"&gt;</code> با هدف غیر محلی (برای نمونه، http://, javascript:, etc) در پرونده‌های اس‌وی‌جی مجاز نیست.",
        "uploaded-href-unsafe-target-svg": "در پرونده SVG بارگذاری‌شده برای هدف نادرست <code>&lt;$1 $2=\"$3\"&gt;</code> برچسب href یافت شد.",
        "uploaded-animate-svg": "برچسب  \"animate\" یافت شده ممکن است herf را تغییر دهد. از مشخصه \"from\" <code>&lt;$1 $2=\"$3\"&gt;</code> در پرونده SVG بارگذاری‌شده استفاده کنید.",
        "uploaded-setting-event-handler-svg": "تنظیمات مشخصه گرداننده رویداد بسته شده‌است. کد <code>&lt;$1 $2=\"$3\"&gt;</code>  در پرونده بارگذاری‌شده یافت شد.",
        "filewasdeleted": "پرونده‌ای با همین نام پیشتر بارگذاری و پس از آن پاک شده‌است.\nشما باید $1 را قبل از بارگذاری مجدد آن ببینید.",
        "filename-thumb-name": "به نظر می رسد که عنوان thumbnail است. لطفاً تصویر thumbnail  از دیگر ویکی‌ها را بارگذاری نکنید. عنوان پرونده را اصلاح کنید به صورتی که پیشوند thumbnail نداشته باشد.",
        "filename-bad-prefix": "نام پرونده‌ای که بارگذاری می‌کنید با '''$1''' آغاز می‌شود که یک پیشوند مخصوص تصاویر ثبت شده توسط دوربین‌های دیجیتال است.\nلطفاً نامی بهتر برای پرونده برگزینید.",
-       "upload-success-subj": "بارگذاری با موفقیت انجام شد",
-       "upload-success-msg": "بارگذاری شما از [$2] موفق بود. این پرونده در اینجا قابل دسترسی است: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "مشکل در بارگذاری",
-       "upload-failure-msg": "مشکلی در بارگذاری شما از [$2] وجود داشت:\n\n$1",
-       "upload-warning-subj": "هشدار بارگذاری",
-       "upload-warning-msg": "فرم بارگذاری مشکلی داشت [$2]. شما می‌توانید به [[Special:Upload/stash/$1|فرم بارگذاری]] بازگردید تا این اشکال را رفع کنید.",
        "upload-proto-error": "پروتکل نادرست",
        "upload-proto-error-text": "بارگذاری از دوردست به نشانی‌هایی که با <code dir=ltr>http://</code> یا <code dir=ltr>ftp://</code> آغاز شوند نیاز دارد.",
        "upload-file-error": "خطای داخلی",
        "file-anchor-link": "فایل",
        "filehist": "تاریخ پۀروۀندۀ",
        "filehist-help": ".روی تاریخ/زمان‌ها کلیک کنید تا نسخهٔ مربوط به آن هنگام را ببینید",
-       "filehist-deleteall": "حذف کۆل",
+       "filehist-deleteall": "کؤل(گشت) پاکآکە",
        "filehist-deleteone": "حۀذف کردن/پاک کردن",
        "filehist-revert": "واگردانی/گِلآ دائن",
        "filehist-current": "نؤسخهٔ ایسه",
        "mostimages": "پرونده‌هایی که بیشتر از همه به آن‌ها پیوند داده شده‌است",
        "mostinterwikis": "صفحه‌های دارای بیشترین میان‌ویکی",
        "mostrevisions": "صفحه‌های دارای بیشترین نسخه",
-       "prefixindex": "کۆل وةڵگةل با پیشوند",
-       "prefixindex-namespace": "کۆل وةڵگةل دارای پیشوند (فضای‌نام $1)",
+       "prefixindex": "کؤل(گشت)وەڵگەل پێشؤەند دار",
+       "prefixindex-namespace": "کؤل(گشت)وەڵگەل پیشوند دار(فضای‌نۆم $1)",
        "prefixindex-submit": "نیشان دائن",
        "prefixindex-strip": "حذف پیشوند در فهرست",
        "shortpages": "وةڵگةل کؤِڵ/کوتاه",
        "log-title-wildcard": "صفحه‌هایی را جستجو کن که عنوانشان با این عبارت آغاز می‌شود",
        "showhideselectedlogentries": "تغییر پدیداری موارد انتخاب‌شده سیاهه",
        "log-edit-tags": "ویرایش برچسب سیاههٔ انتخاب شده",
-       "allpages": "کۆل وةڵگةل",
+       "allpages": "کؤل(گشت)وەڵگەل",
        "nextpage": "وةڵگةبعد ($1)",
        "prevpage": "وةڵگة قبلی ($1)",
        "allpagesfrom": "نمایش وةڵگةل با شروع إژ:",
        "wlheader-showupdated": "صفحه‌هایی که پس از آخرین بازدید شما تغییر کرده‌اند '''پررنگ''' نمایش داده شده‌اند.",
        "wlnote": "در زیر {{PLURAL:$1|تغییری|<strong>$1</strong> تغییری}} که در {{PLURAL:$2|ساعت|<strong>$2</strong> ساعت}} گذشته انجام شده موجود است، تاریخ آخرین بازیابی: $3، $4",
        "wlshowlast": "نمایش آخرین $1 ساعت $2 روز",
-       "watchlistall2": "کؤل",
        "watchlist-hide": "ئآشاردن-پنهان کردن",
        "watchlist-submit": "نیشان دائن",
        "wlshowtime": "دوره زمانی نمایش:",
        "allmessages-filter-legend": "پالانۀل/فیلترۀل",
        "allmessages-filter": "پالودن بر اساس وضعیت شخصی‌سازی:",
        "allmessages-filter-unmodified": "نگؤەڕیائە/تغییرنیافته",
-       "allmessages-filter-all": "کۆل",
+       "allmessages-filter-all": "کؤل(گشت)",
        "allmessages-filter-modified": "گؤەڕیائە/تغییریافته",
        "allmessages-prefix": "پالودن بر اساس پسوند:",
        "allmessages-language": ":زوون",
        "exif-urgency-low": "کم ($1)",
        "exif-urgency-high": "فِرة/زیاد ($1)",
        "exif-urgency-other": "اولویت تعریف شده توسط کاربر ($1)",
-       "namespacesall": "کؤل",
-       "monthsall": "کؤل",
+       "namespacesall": "کؤل(گشت)",
+       "monthsall": "کؤل(گشت)",
        "confirmemail": "نیشانی ایمیل ووژتان تأئید کةن",
        "confirmemail_noemail": "شما در صفحهٔ [[Special:Preferences|تمارزووەل(ترجیحات)  کاربەری]] خود آدرس ایمیل معتبری وارد نکرده‌اید.",
        "confirmemail_text": "این ویکی، شما را ملزم به تأیید آدرس ایمیل خود، پیش از استفاده از خدمات ایمیل در اینجا می‌کند. دکمهٔ زیرین را فعال کنید تا ایمیلی تأییدی به آدرس ایمیل شما فرستاده شود. این ایمیل دربردارندهٔ پیوندی خواهد بود که حاوی یک کد است. پیوند را در مرورگر خود بار کنید کنید تا آدرس ایمیل شما تأیید شود.",
        "semicolon-separator": "؛&#32;",
        "quotation-marks": "«$1»",
        "imgmultipageprev": "&rarr; وەڵگە دؤماێن",
-       "imgmultipagenext": "وةڵگة تِر/بعدی→",
+       "imgmultipagenext": "وەڵگە تِر(هەنی)→",
        "imgmultigo": "بِچۆ!",
        "imgmultigoto": "بچۆ وةڵگة $1",
        "img-lang-default": "(زوون پئش فرض)",
        "img-lang-go": "بِچۆ",
        "ascending_abbrev": "ورِ بِڵِنگی/صعودی",
        "descending_abbrev": "ورِ هووار/نزولی",
-       "table_pager_next": "Ù\88Û\95ÚµÚ¯Û\95 Ø¨Ø¹Ø¯Û\8c",
+       "table_pager_next": "Ù\88Û\95ÚµÚ¯Û\95 ØªÙ\90ر(Ù\87Û\95Ù\86Û\8c)",
        "table_pager_prev": "وەڵگە دؤماێن",
        "table_pager_first": "وةڵگة أؤةڵئن",
        "table_pager_last": "وەڵگە دؤمائن(آخر)",
        "logentry-import-upload": "$1 $3 را توسط بارگذار پرونده {{GENDER:$2|درون‌ریزی کرد}}",
        "logentry-import-upload-details": "$1 {{GENDER:$2|imported}} $3 by file upload ($4 {{PLURAL:$4|revision|revisions}})",
        "logentry-import-interwiki": "$1 $3 را از ویکی دیگر {{GENDER:$2|درون‌ریز کرد}}",
-       "logentry-import-interwiki-details": "$1 {{GENDER:$2|imported}} $3 from $5 ($4 {{PLURAL:$4|revision|revisions}})",
+       "logentry-import-interwiki-details": "$1 $3 را از $5 {{GENDER:$2|درون‌ریزی کرد}} ($4 {{PLURAL:$4|نسخه}})",
        "logentry-merge-merge": "$1  $3  را به  $4 {{GENDER:$2| ادغام کرد}} (نسخه تا  $5)",
        "logentry-move-move": "$1 صفحهٔ $3 را به $4 {{GENDER:$2|منتقل کرد}}",
        "logentry-move-move-noredirect": "$1 وةڵگة $3 را بدون برجای‌گذاشتن تغییرمسیر به $4 {{GENDER:$2|منتقل کرد}}",
        "mediastatistics-header-text": "متنی",
        "mediastatistics-header-executable": "اجرایی",
        "mediastatistics-header-archive": "قالب‌های فشرده",
-       "mediastatistics-header-total": "کۆل فایلةل",
+       "mediastatistics-header-total": "کؤل(گشت)پەروەندەل",
        "json-warn-trailing-comma": "$1 کامای در انتها از جی‌سن {{PLURAL:$1|حذف شد}}.",
        "json-error-unknown": "مشکلی با جی‌سن بود. خطا: $1",
        "json-error-depth": "بیشینهٔ عمق پشته رد شده است",
index 389f02a..db89208 100644 (file)
        "uploaded-script-svg": "Įkeltame SVG faile rastas programuojamas elementas \"$1\".",
        "uploaded-hostile-svg": "Įkelto SVG failo stiliaus elemente rastas nesaugus CSS.",
        "uploaded-event-handler-on-svg": "SVG failuose neleidžiamas event-handler atributų nustatymas <code>$1=\"$2\"</code>.",
-       "uploaded-href-attribute-svg": "SVG failuose neleidžiami nuorodos atributai <code>&lt;$1 $2=\"$3\"&gt;</code> su ne lokalia nukreiptimi (pvz. http://, javascript:, ir kt.).",
        "uploaded-href-unsafe-target-svg": "Įkeltame SVG faile rasta nesaugi nukreiptis <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploaded-animate-svg": "Įkeltame SVG faile rasta \"animate\" žymė, kuri gali keisti nuorodas, panaudodama \"from\" atributą <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploaded-setting-event-handler-svg": "event-handler atributų nustatymas yra draudžiamas, įkeltame SVG faile rasta <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "filewasdeleted": "Failas šiuo vardu anksčiau buvo įkeltas, o paskui ištrintas. Jums reikėtų patikrinti $1 prieš bandant įkelti jį vėl.",
        "filename-thumb-name": "Tai panašu į miniatiūros pavadinimą. Prašome neįkėlinėti miniatiūrų atgal į tą patį vikį. Kitu atveju, prašome pataisyti failo pavadinimą taip, kad jis būtų prasmingesnis ir neturėtų miniatiūros prefikso.",
        "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-success-subj": "Įkelta sėkmingai",
-       "upload-success-msg": "Jūsų įkėlimas iš [$2] buvo sėkmingas. Jį galima rasti čia: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Įkėlimo problema",
-       "upload-failure-msg": "Įvyko įkėlimo iš [$2] problema:\n\n$1",
-       "upload-warning-subj": "Įkėlimo įspėjimas",
-       "upload-warning-msg": "Įvyko įkėlimo iš [$2] problema. Jums reikėtų grįžti į [[Special:Upload/stash/$1|įkėlimo formą]], norint išspręsti šią problemą.",
        "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-too-many-redirects": "URL yra per daug kartų peradresuotas",
        "upload-http-error": "Įvyko HTTP klaida: $1",
        "upload-copy-upload-invalid-domain": "Pakrovimų kopijos yra neleidžiamos iš šio domeno.",
+       "upload-foreign-cant-upload": "Šis vikis nėra sukonfigūruotas failų įkėlimui į nurodytą išorinę failų talpyklą.",
        "upload-dialog-title": "Įkelti failą",
        "upload-dialog-button-cancel": "Atšaukti",
        "upload-dialog-button-done": "Atlikta",
        "foreign-structured-upload-form-2-label-noderiv": "Jame <strong>neturi būti kieno nors kito darbo</strong>, arba įkvėpto kitų",
        "foreign-structured-upload-form-2-label-useful": "Tai turėtų būti <strong>edukaciška ir naudinga</strong> mokyti kitus",
        "foreign-structured-upload-form-2-label-ccbysa": "Jis turi būti <strong>tinkamas publikuoti visam laikui</strong> internete su [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0] licencija",
+       "foreign-structured-upload-form-2-label-alternative": "Jeigu ne viskas viršuje yra tiesa, jūs dar galite pabandyti įkelti šį failą naudodamiesi [https://commons.wikimedia.org/wiki/Special:UploadWizard Bendrybių įkėlimo vedliu], kol jis prieinamas pagal laisvąją licenciją.",
+       "foreign-structured-upload-form-2-label-termsofuse": "Įkeldami failą, jūs patvirtinate, kad jums priklauso autorinės šio failo teisės ir sutinkate besąlygiškai išleisti šį failą į Wikimedia Commons pagal Creative Commons Attribution-ShareAlike 4.0 licenciją, ir jūs sutinkate su [https://wikimediafoundation.org/wiki/Terms_of_Use Naudojimosi sąlygomis].",
        "foreign-structured-upload-form-3-label-question-website": "Ar atsisiuntėte šį paveikslėlį iš tinklapio, ar gavote jį iš paveikslėlių paieškos?",
        "foreign-structured-upload-form-3-label-question-ownwork": "Ar jūs sukūrėte šį paveikslėlį (nufotografavote, nupiešėte, kt.) pats?",
        "foreign-structured-upload-form-3-label-question-noderiv": "Ar jame yra, arba jis įkvėptas, kitiems priklausančio darbo, kaip pavyzdžiui logotipas?",
        "log-title-wildcard": "Ieškoti pavadinimų, prasidedančių šiuo tekstu",
        "showhideselectedlogentries": "Rodyti/slėpti pasirinktus sąrašo elementus",
        "log-edit-tags": "Redaguoti žymes pasirinktuose žurnalo įrašuose",
+       "checkbox-select": "Pasirinkti: $1",
+       "checkbox-all": "Visi",
+       "checkbox-none": "Nieko",
+       "checkbox-invert": "Invertuoti",
        "allpages": "Visi puslapiai",
        "nextpage": "Kitas puslapis ($1)",
        "prevpage": "Ankstesnis puslapis ($1)",
        "listgrouprights-namespaceprotection-namespace": "Vardų sritis",
        "listgrouprights-namespaceprotection-restrictedto": "Teisė(s), leidžiančios naudotojui atlikti keitimus",
        "listgrants": "Leidimai",
+       "listgrants-summary": "Toliau pateiktas leidimų sąrašas su susietomis naudotojo teisėmis. Naudotojai gali įgalioti programėles naudoti jų paskyras, bet su apribotais leidimais, kuriuos naudotojas suteikė programėlei. Programėlė veikianti naudotojo vardu negali naudotis teisėmis, kurių neturi pats naudotojas.\nGali būti [[{{MediaWiki:Listgrouprights-helppage}}|papildomos informacijos]] apie individualias teises.",
        "listgrants-grant": "Leisti",
        "listgrants-rights": "Teisės",
        "trackingcategories": "Sekimo kategorijos",
        "wlheader-showupdated": "Puslapiai pakeisti nuo tada, kai paskutinį kartą apsilankėte juose, yra pažymėti '''pastorintai'''",
        "wlnote": "{{PLURAL:$1|Rodomas '''$1''' paskutinis pakeitimas, atliktas|Rodomi '''$1''' paskutiniai pakeitimai, atlikti|Rodoma '''$1''' paskutinių pakeitimų, atliktų}} per '''$2''' {{PLURAL:$2|paskutinę valandą|paskutines valandas|paskutinių valandų}}, nuo $3 $4.",
        "wlshowlast": "Rodyti paskutinių $1 valandų, $2 dienų",
-       "watchlistall2": "visi",
        "watchlist-hide": "Slėpti",
        "watchlist-submit": "Rodyti",
        "wlshowtime": "Laiko trukmė, kurią rodyti:",
        "version-libraries-authors": "Autoriai",
        "redirect": "Nukreiptas iš failo, naudotojo, versijos arba žurnalo įrašo ID",
        "redirect-legend": "Nukreipti į failą ar puslapį",
-       "redirect-summary": "Šis specialus puslapis peradresuoją į failą (nurodant failo pavadinimą), puslapį (nurodant versijos ID ar puslapio ID), arba vartotojo puslapį (nurodant skaitinį vartotojo ID).\nNaudojimas: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].",
+       "redirect-summary": "Šis specialus puslapis peradresuoją į failą (nurodant failo pavadinimą), puslapį (nurodant versijos ID ar puslapio ID), naudotojo puslapį (nurodant skaitinį naudotojo ID), arba žurnalo įrašą (nurodant žurnalo įrašo ID).\nNaudojimas: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], arba[[{{#Special:Redirect}}/logid/186]].",
        "redirect-submit": "Eiti",
        "redirect-lookup": "Peržvalgos:",
        "redirect-value": "Vertė:",
index ece560a..018bc88 100644 (file)
        "morenotlisted": "Šis saraksts nav pilnīgs.",
        "mypage": "Lapa",
        "mytalk": "Diskusijas",
-       "anontalk": "Šīs IP adreses diskusija",
+       "anontalk": "Diskusijas",
        "navigation": "Navigācija",
        "and": "&#32;un",
        "qbfind": "Meklēšana",
        "laggedslavemode": "Uzmanību: Iespējams, šajā lapā nav redzami nesen izdarītie papildinājumi.",
        "readonly": "Datubāze bloķēta",
        "enterlockreason": "Ievadiet bloķēšanas iemeslu, ieskaitot aplēses, kad bloķēšana tiks beigta.",
-       "readonlytext": "Datubāze šobrīd ir bloķēta jaunu ierakstu izveidošanai un citām izmaiņām, visticamāk, kārtējā datubāzes uzturēšanas pasākuma dēļ, pēc kura tā tiks atjaunota normālā stāvoklī.\n\nAdministrators, kurš nobloķēja datubāzi, norādīja šādu iemeslu: $1",
+       "readonlytext": "Datubāze šobrīd ir bloķēta jaunu ierakstu izveidošanai un citām izmaiņām, visticamāk, kārtējā datubāzes uzturēšanas pasākuma dēļ, pēc kura tā tiks atjaunota normālā stāvoklī.\n\nSistēmas administrators, kurš nobloķēja datubāzi, norādīja šādu iemeslu: $1",
        "missing-article": "Teksts lapai ar nosaukumu \"$1\" $2 datubāzē nav atrodams.\n\nTas parasti notiek novecojušu saišu gadījumā: pieprasot izmaiņas vai hronoloģiju lapai, kas ir izdzēsta.\n\nJa lapai ir jābūt, tad, iespējams, ir kļūda programmā.\nPar to varat ziņot [[Special:ListUsers/sysop|kādam administratoram]], norādot arī URL.",
        "missingarticle-rev": "(Pārskatīšana #: $1)",
        "missingarticle-diff": "(Salīdz.: $1, $2)",
        "title-invalid-interwiki": "Pieprasītais lapas nosaukums satur interwiki saiti, bet tās nevar lietot nosaukumos.",
        "title-invalid-talk-namespace": "Pieprasītais lapas nosaukums norāda uz diskusijas lapu, kas nevar pastāvēt.",
        "title-invalid-characters": "Pieprasītais lapas nosaukums satur nederīgus simbolus: \"$1\".",
+       "title-invalid-leading-colon": "Pieprasītās lapas nosaukums satur neatļautu kolu tā sākumā.",
        "perfcached": "Šie dati ir no servera kešatmiņas un var būt novecojuši. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.",
        "perfcachedts": "Šie dati ir no servera kešatmiņas (''cache''), kas pēdējo reizi bija atjaunota $1. Kešatmiņā {{PLURAL:$4|pieejami|pieejams|pieejami}} ne vairāk kā {{PLURAL:$4|$4 rezultāti|viens rezultāts|$4 rezultāti}}.",
        "querypage-no-updates": "Šīs lapas atjaunošana pagaidām ir atslēgta. Te esošie dati tuvākajā laikā netiks atjaunoti.",
        "viewsource-title": "Apskatīt $1 izejas kodu",
        "actionthrottled": "Darbība netika atļauta",
        "protectedpagetext": "Šī lapa ir aizsargāta, lai novērstu tās izmainīšanu vai citas darbības.",
-       "viewsourcetext": "Tu vari apskatīt un nokopēt šīs lapas vikitekstu:",
+       "viewsourcetext": "Tu vari apskatīt un nokopēt šīs lapas vikitekstu.",
        "protectedinterface": "Šī lapa satur programmatūras interfeisā lietotu tekstu un ir bloķēta pret izmaiņām, lai pasargātu no bojājumiem.\nLai pievienotu izmaiņas tulkojumā visās ''wiki'', lūdzam izmantot ''MediaWiki'' lokalizēšanas projektu [//translatewiki.net/ translatewiki.net].",
        "editinginterface": "'''Brīdinājums:''' Tu izmaini lapu, kuras saturu izmanto wiki programmatūras lietotāja saskarnē (''interfeisā''). Šīs lapas izmaiņas ietekmēs lietotāja saskarni citiem lietotājiem. Pēc modificēšanas šīs izmaiņas būtu lietderīgi pievienot arī ''MediaWiki'' lokalizēšanas projektā [//translatewiki.net/ translatewiki.net].",
        "namespaceprotected": "Tev nav atļaujas izmainīt lapas, kas atrodas '''$1''' ''namespacē''.",
        "throttled-mailpassword": "Paroles atgādinājums jau ir ticis nosūtīts {{PLURAL:$1|pēdējās stundas|pēdējo $1 stundu}} laikā.\nLai novērstu šīs funkcijas ļaunprātīgu izmantošanu, iespējams nosūtīt tikai vienu paroles atgādinājumu, {{PLURAL:$1|katru stundu|katras $1 stundas}}.",
        "mailerror": "E-pasta sūtīšanas kļūda: $1",
        "acct_creation_throttle_hit": "Lietotāji no tavas IP adreses šajā viki pēdējo 24 stundu laikā jau ir izveidojuši {{PLURAL:$1|$1 kontus|1 kontu|$1 kontus}}, kas ir maksimālais atļautais skaits šajā laika periodā.\nTādēļ šobrīd no šīs IP adreses vairs nevar izveidot jaunus kontus.",
-       "emailauthenticated": "Tava e-pasta adrese tika apstiprināta $2, $3.",
-       "emailnotauthenticated": "Tava e-pasta adrese <strong>vēl nav apstiprināta</strong> un zemāk norādītās iespējas nav pieejamas.",
+       "emailauthenticated": "Tava e-pasta adrese tika apstiprināta $2 $3.",
+       "emailnotauthenticated": "Tava e-pasta adrese vēl nav apstiprināta.\nE-pasts netiks sūtīts, izmantojot šīs funkcijas.",
        "noemailprefs": "Norādi e-pasta adresi, lai lietotu šīs iespējas.",
        "emailconfirmlink": "Apstiprināt tavu e-pasta adresi",
        "invalidemailaddress": "E-pasta adrese nevar tikt apstiprināta, jo izskatās nederīga. Lūdzu ievadi korekti noformētu e-pasta adresi, vai arī atstāj to lauku tukšu.",
        "retypenew": "Atkārto jauno paroli",
        "resetpass_submit": "Uzstādīt paroli un ieiet",
        "changepassword-success": "Jūsu parole tika nomainīta veiksmīgi!",
+       "botpasswords-label-appid": "Bota nosaukums:",
+       "botpasswords-label-create": "Izveidot",
+       "botpasswords-label-update": "Atjaunināt",
+       "botpasswords-label-cancel": "Atcelt",
+       "botpasswords-label-delete": "Dzēst",
+       "botpasswords-label-resetpassword": "Atiestatīt paroli",
+       "botpasswords-label-restrictions": "Lietošanas ierobežojumi:",
+       "botpasswords-label-grants-column": "Piešķirts",
        "resetpass_forbidden": "Paroles nav iespējams nomainīt",
        "resetpass-no-info": "Jums ir nepieciešams ieiet, lai tūlīt piekļūtu šai lapai.",
        "resetpass-submit-loggedin": "Mainīt paroli",
        "watchthisupload": "Uzraudzīt šo failu",
        "filewasdeleted": "Fails ar šādu nosaukumu jau ir bijis augšupielādēts un pēc tam izdzēsts.\nApskatiet $1 pirms turpiniet šo failu augšupielādēt atkārtoti.",
        "filename-bad-prefix": "Faila vārds failam, kuru tu mēģini augšpulādēt, sākas ar '''\"$1\"''', kas ir neaprakstošs vārds, kādu parasti uzģenerē digitālais fotoaparāts.\nLūdzu izvēlies aprakstošāku vārdu šim failam.",
-       "upload-success-subj": "Augšupielāde veiksmīga",
-       "upload-success-msg": "Jūsu augšupielādēt no [$2] bija veiksmīga. Tā ir pieejama šeit: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Augšupielādes problēma",
-       "upload-failure-msg": "Radās problēma ar jūsu augšupielādi no [$2]:\n\n$1",
-       "upload-warning-subj": "Augšupielādes brīdinājums",
-       "upload-warning-msg": "Radās problēma ar jūsu augšupielādi no [$2]. Lai labotu šo problēmu, jūs varat atgriezties uz [[Special:Upload/stash/$1|augšupielādes formu]].",
        "upload-proto-error": "Nepareizs protokols",
        "upload-proto-error-text": "Attālinātai augšupielādei URL ir jāsākas ar <code>http://</code> vai <code>ftp://</code>.",
        "upload-file-error": "Iekšējā kļūda",
        "wlheader-enotif": "E-pasta paziņojumi ir ieslēgti.",
        "wlheader-showupdated": "Lapas, kuras ir tikušas izmainītas, kopš tu tās pēdējoreiz apskatījies, te rādās ar '''pustrekniem''' burtiem",
        "wlshowlast": "Parādīt izmaiņas pēdējo $1 stundu laikā vai $2 dienu laikā, vai arī .",
-       "watchlistall2": "visas",
        "watchlist-options": "Uzraugāmo rakstu saraksta opcijas",
        "watching": "Uzrauga...",
        "unwatching": "Neuzrauga...",
        "tooltip-pt-anontalk": "Diskusija par labojumiem, kas izdarīti no šīs IP adreses",
        "tooltip-pt-preferences": "Tavas izvēles",
        "tooltip-pt-watchlist": "Tevis uzraudzītās lapas",
-       "tooltip-pt-mycontris": "Tavs devums",
+       "tooltip-pt-mycontris": "{{GENDER:|Tavs}} devums",
        "tooltip-pt-anoncontribs": "Labojumi, kas veikti no šīs IP adreses",
        "tooltip-pt-login": "Aicinām tevi ieiet {{grammar:lokatīvs|{{SITENAME}}}}, tomēr tas nav obligāti.",
        "tooltip-pt-logout": "Iziet",
        "tooltip-t-recentchangeslinked": "Izmaiņas, kas nesen izdarītas lapās, kurās ir saites uz šo lapu",
        "tooltip-feed-rss": "Šīs lapas RSS barotne",
        "tooltip-feed-atom": "Šīs lapas Atom barotne",
-       "tooltip-t-contributions": "Apskatīt šā lietotāja ieguldījumu uzskaitījumu.",
-       "tooltip-t-emailuser": "Sūtīt e-pastu šim lietotājam",
+       "tooltip-t-contributions": "{{GENDER:$1|Šī dalībnieka|Šīs dalībnieces}} ieguldījumu uzskaitījums",
+       "tooltip-t-emailuser": "Sūtīt e-pastu {{GENDER:$1|šim dalībniekam|šai dalībniecei}}",
        "tooltip-t-upload": "Augšupielādēt failus",
        "tooltip-t-specialpages": "Visu īpašo lapu uzskaitījums",
        "tooltip-t-print": "Drukājama lapas versija",
        "compare-revision-not-exists": "Norādītā versija neeksistē.",
        "dberr-problems": "Atvainojiet!\nŠai vietnei ir radušās tehniskas problēmas.",
        "dberr-again": "Uzgaidiet dažas minūtes un pārlādējiet šo lapu.",
-       "dberr-info": "(Nevar sazināties ar datubāzes serveri: $1)",
-       "dberr-info-hidden": "(Nevar sazināties ar datubāzes serveri)",
+       "dberr-info": "(Nevar piekļūt datubāzei: $1)",
+       "dberr-info-hidden": "(Nevar piekļūt datubāzei)",
        "dberr-usegoogle": "Pa to laiku Jūs varat izmantot Google meklēšanu.",
        "dberr-outofdate": "Ņemiet vērā, ka mūsu satura indeksācija var būt novecojusi.",
        "dberr-cachederror": "Šī ir lapas agrāk saglabātā kopija, tā var nebūt atjaunināta.",
index 623ab53..8d79620 100644 (file)
@@ -17,7 +17,8 @@
                        "灰太狼Wolffy55",
                        "RalfX",
                        "Davidzdh",
-                       "Nemo bis"
+                       "Nemo bis",
+                       "飞舞回堂前"
                ]
        },
        "tog-underline": "鏈墊線:",
        "viewsourceold": "察源碼",
        "editlink": "纂",
        "viewsourcelink": "察源碼",
-       "editsectionhint": "纂 $1",
+       "editsectionhint": "纂段:$1",
        "toc": "章",
        "showtoc": "示",
        "hidetoc": "藏",
        "prefs-displayrc": "示項",
        "prefs-displaywatchlist": "示項",
        "prefs-diffs": "異",
-       "email-address-validity-valid": "電郵有效之",
-       "email-address-validity-invalid": "貢一效之電郵",
        "userrights": "秉治權任",
        "userrights-lookup-user": "司社",
        "userrights-user-editname": "簿名:",
        "right-blockemail": "鎖簿無電郵",
        "right-hideuser": "鎖簿名,予藏眾",
        "right-ipblock-exempt": "繞IP鎖、自鎖與圍鎖",
-       "right-proxyunbannable": "繞Proxy之自鎖",
        "right-unblockself": "自解鎖",
        "right-protect": "改錮級與纂錮頁",
        "right-editprotected": "纂錮頁(無連錮)",
        "upload-options": "貢項",
        "watchthisupload": "派哨",
        "filename-bad-prefix": "獻檔以'''「$1」'''首,常由相機瞎造,惠更述之。",
-       "upload-success-subj": "檔案安矣",
-       "upload-success-msg": "爾自[$2]之貢安矣,見於此:[[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "貢問",
-       "upload-failure-msg": "爾自[$2]之貢現問也:\n\n$1",
-       "upload-warning-subj": "貢警",
-       "upload-warning-msg": "爾自[$2]之貢出問。爾可回[[Special:Upload/stash/$1|貢表]]修此問。",
        "upload-proto-error": "協訂錯誤",
        "upload-too-many-redirects": "網址含多轉",
        "upload-http-error": "發一HTTP之錯:$1",
        "movelogpagetext": "頁遷如下:",
        "movereason": "因",
        "revertmove": "還",
-       "delete_and_move": "刪遷",
        "delete_and_move_text": "==准刪==\n\n往遷\"[[:$1]]\"存,刪之以替乎?",
        "delete_and_move_confirm": "刪之",
        "delete_and_move_reason": "為遷而刪之",
        "tooltip-pt-logout": "凡事盡,乘雲飄",
        "tooltip-pt-createaccount": "勸君增簿以登,然非必須之舉",
        "tooltip-ca-talk": "求異見、辯是非、妥紛擾",
-       "tooltip-ca-edit": "拓文意、校誤謬、潤辭藻",
+       "tooltip-ca-edit": "纂是頁",
        "tooltip-ca-addsection": "有言議,添新要",
        "tooltip-ca-viewsource": "文函緘,讀源老",
        "tooltip-ca-history": "誌流衍、備謄本、修惡盜",
        "tooltip-ca-move": "安居所,嚮正道",
        "tooltip-ca-watch": "哨此報",
        "tooltip-ca-unwatch": "撤此哨",
-       "tooltip-search": "索大典,籲自曉",
+       "tooltip-search": "尋於{{SITENAME}}",
        "tooltip-search-go": "確合契,躍步到",
        "tooltip-search-fulltext": "尋通篇,列倣傚",
        "tooltip-p-logo": "返卷首,訪露朝",
        "tooltip-t-contributions": "同肩戰,苦功高",
        "tooltip-t-emailuser": "言未猶,書信捎",
        "tooltip-t-upload": "貢彩件、獻樂謠",
-       "tooltip-t-specialpages": "å¥\87æ\80ªæ±\82ï¼\8cç\89¹æ\9f¥æ\89¾",
+       "tooltip-t-specialpages": "å±\95ç\9b¡å¥\87é \81",
        "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-special": "是爲奇頁,謝纂校",
        "tooltip-ca-nstab-project": "探爐灶",
        "tooltip-ca-nstab-image": "觀揮毫",
        "tooltip-ca-nstab-mediawiki": "聞官耗",
        "specialpages": "特查",
        "specialpages-note": "* 準特查。\n* <strong class=\"mw-specialpagerestricted\">限特查。</strong>",
        "specialpages-group-maintenance": "護報",
-       "specialpages-group-other": "它之奇頁",
+       "specialpages-group-other": "奇頁",
        "specialpages-group-login": "登/增",
        "specialpages-group-changes": "近易與誌",
        "specialpages-group-media": "媒報兼呈",
index a92dfea..280a99c 100644 (file)
        "watchthisupload": "ऐ पृष्ठपर नजरि राखू",
        "filewasdeleted": "ऐ नामक एकटा संचिका पहिने उपारोपित कएल गेल आ फेर मेटा देल गेल।\nअहाँ फेरसँ एकरा उपारोपित करबासँ पहिने ई $1 जाँचू।",
        "filename-bad-prefix": "जे संचिका अहाँ उपारोपित कऽ रहल छी से '''\"$1\"''' सँ शुरू होइए, ई बिन विवरणक नाम अछि जे मूल रूपेँ अंकीय कैमरा द्वारा स्वचालित रूपेँ देल जाइत अछि।\nकृपा कऽ ऐ संचिका लेल एकटा बेसी वर्णनात्मक नाम चुनू।",
-       "upload-success-subj": "सफलतापूर्वक उपारोपित",
-       "upload-success-msg": "[$2] सँ उपारोपन सफल भेल। ई एतए अछि: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "उपारोपण समस्या",
-       "upload-failure-msg": "[$2] सँ उपारोपणमे समस्या अछि:\n$1",
-       "upload-warning-subj": "उपारोपण चेतौनी",
-       "upload-warning-msg": "[$2] सँ उपारोपणमे समस्या छल। अहाँ घुरि सकै छी [[Special:Upload/stash/$1|उपारोपण आवेदन]] ऐ समस्याकेँ ठीक करबा लेल।",
        "upload-proto-error": "गलत संविद",
        "upload-proto-error-text": "दूरसँ उपारोपण लेल <code>http://</code> or <code>ftp://</code> सँ प्रारम्भ होएबला सार्वत्रिक विभव संकेत चाही।",
        "upload-file-error": "आन्तरिक भ्रम",
        "wlheader-showupdated": "पन्ना सभ जे अहाँक एतए अन्तिम बेर अएलाक बाद बदलल अछि तकर सूची देल अछि '''गाढ़''' मे",
        "wlnote": "नीचाँ {{PLURAL:$1|is the last change|are the last '''$1''' changes}} अन्तिम {{PLURAL:$2|hour|'''$2''' hours}} $3, $4 जेना।",
        "wlshowlast": "देखाउ अन्तिम $1 घण्टा $2 दिन",
-       "watchlistall2": "सभ",
        "watchlist-options": "साकांक्षसूचीक विकल्प सभ",
        "watching": "ताकिमे...",
        "unwatching": "छोड़ल ...",
index aed8c33..9df1e70 100644 (file)
        "virus-scanfailed": "неуспешно скенирање (код $1)",
        "virus-unknownscanner": "непознат антивирус:",
        "logouttext": "<strong>Сега сте одјавени.</strong>\n\nДа напоменеме дека некои страници може да продолжат да се прикажуваат како да сте најавени, сè додека не го исчистите меѓускладот на вашиот прелистувач.",
+       "cannotlogoutnow-title": "Во моментов не можам да ве одјавам",
+       "cannotlogoutnow-text": "Не можам да ве одјавам кога се користи $1.",
        "welcomeuser": "Добр едојдовте, $1!",
        "welcomecreation-msg": "Вашата корисничка сметка е создадена.\nНе заборавајте да ги измените вашите [[Special:Preferences|{{SITENAME}} нагодувања]].",
        "yourname": "Корисничко име:",
        "remembermypassword": "Запомни ме на овој сметач (највеќе $1 {{PLURAL:$1|ден|дена}})",
        "userlogin-remembermypassword": "Запомни ме",
        "userlogin-signwithsecure": "Користи безбеден опслужувач",
+       "cannotloginnow-title": "Во моментов не можам да ве најавм",
        "yourdomainname": "Вашиот домен:",
        "password-change-forbidden": "Не можете да ја менувате лозинката на ова вики.",
        "externaldberror": "Настана грешка при надворешното најавување на базата или пак немате дозвола да ја подновите вашата надворешна сметка.",
        "resetpass_submit": "Поставете лозинка и најавете се",
        "changepassword-success": "Вашата лозинка е успешно сменета!",
        "changepassword-throttled": "Имате премногу обиди за најава за кратко време.\nПочекајте $1 пред да се обидете повторно.",
+       "botpasswords-label-appid": "Име на ботот:",
+       "botpasswords-label-create": "Создај",
+       "botpasswords-label-update": "Поднови",
+       "botpasswords-label-cancel": "Откажи",
+       "botpasswords-label-delete": "Избриши",
+       "botpasswords-label-resetpassword": "Ставете нова лозинка",
+       "botpasswords-label-grants": "Применливи доделувања:",
        "resetpass_forbidden": "Лозинките не може да се менуваат",
        "resetpass-no-info": "Мора да сте најавени ако сакате да имате директен пристап до оваа страница.",
        "resetpass-submit-loggedin": "Смени лозинка",
        "uploaded-script-svg": "Пронајдов скриптен елемент „$1“ во подигнатата SVG-податотека.",
        "uploaded-hostile-svg": "Пронајдов небезбеден CSS во стилскиот елемент на подигнатата SVG-податотека.",
        "uploaded-event-handler-on-svg": "Задавањето на атрибути <code>$1=\"$2\"</code> за работа со настани не е дозволено за SVG-податотеки.",
-       "uploaded-href-attribute-svg": "href-атрибути <code>&lt;$1 $2=\"$3\"&gt;</code> со немесна цел (на пр. http://, javascript: и тн.) не се дозволени во SVG-податотеки.",
        "uploaded-href-unsafe-target-svg": "Пронајдов href кон небезбедна цел <code>&lt;$1 $2=\"$3\"&gt;</code> во подигнатата SVG-податотека.",
        "uploaded-animate-svg": "Пронајдов ознака „animate“ што може да го менува href, користејќи го атрибутот „from“ <code>&lt;$1 $2=\"$3\"&gt;</code> во подигнатата SVG-податотека.",
        "uploaded-setting-event-handler-svg": "Задавањето на атрибути за работа со настани е спречено. Пронајдов <code>&lt;$1 $2=\"$3\"&gt;</code> во подигнатата SVG-податотека.",
        "filename-thumb-name": "Изгледа дека ова е наслов на минијатура. Не подигајте минијатури од слики на истово вики. Ако ова не е така, исправете го името на податотеката за да биде поописно и да нема претставка на минијатура.",
        "filename-bad-prefix": "Името на податотеката која ја подигате започнува со '''„$1“''', типично за неописните називи кои дигиталните фотоапарати автоматски ги создаваат, што впрочем е недоволно описно.\nВе молиме одберете подобро описно име за вашата податотека.",
        "filename-prefix-blacklist": " #<!-- Не менувајте ја содржината на овој ред - оставете ја како што е --> <pre>\n# Опис на ситнаксата:\n#   * Било што по знакот „#“, па до крајот на редот претставува коментар\n#   * Секој ред означува претставка на типични имиња на податотеки што ги доделуваат дигиталните апарати\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # некои мобилни телефони\nIMG # општо\nJD # Jenoptik\nMGP # Pentax\nPICT # разни\n #</pre> <!-- Не менувајте ја содржината на овој ред - оставете ја како што е -->",
-       "upload-success-subj": "Подигањето е успешно",
-       "upload-success-msg": "Подигањето од [$2] заврши успешно. Подигнатото можете да го видите тука: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Проблем при подигањето",
-       "upload-failure-msg": "Се појави проблем со вашето подигање од [$2]:\n\n$1",
-       "upload-warning-subj": "Предупредување за подигањето",
-       "upload-warning-msg": "Се јави проблем при подигањето од [$2]. Можете да се вратите на [[Special:Upload/stash/$1|образецот]] за да го поправите проблемот.",
        "upload-proto-error": "Погрешен протокол",
        "upload-proto-error-text": "За далечинско подигање потребно е URL-то да почнува со <code>http://</code> или <code>ftp://</code>.",
        "upload-file-error": "Внатрешна грешка",
        "log-title-wildcard": "Пребарај наслови кои почнуваат со овој текст",
        "showhideselectedlogentries": "Прикажи/скриј одбрани записи",
        "log-edit-tags": "Измени ознаки на одредени дневнички записи",
+       "checkbox-select": "Одбери: $1",
+       "checkbox-all": "Сите",
+       "checkbox-none": "Ништо",
+       "checkbox-invert": "Избери обратно",
        "allpages": "Сите страници",
        "nextpage": "Следна страница ($1)",
        "prevpage": "Претходна страница ($1)",
        "wlheader-showupdated": "Страниците што се изменети од вашата последна посета се прикажани со '''задебелени''' букви",
        "wlnote": "Подолу {{PLURAL:$1|е прикажана последната промена|се прикажани последните <strong>$1</strong> промени}} во {{PLURAL:$2|последниов час|последниве <strong>$2</strong> часа}}, заклучно со $3, $4 ч.",
        "wlshowlast": "Прикажи ги последните $1 часа, $2 дена,",
-       "watchlistall2": "сè",
        "watchlist-hide": "Скриј",
        "watchlist-submit": "Прикажи",
        "wlshowtime": "Период за приказ:",
        "lockedbyandtime": "(од $1 на $2 цо $3 ч.)",
        "move-page": "Премести $1",
        "move-page-legend": "Премести страница",
-       "movepagetext": "Со ÐºÐ¾Ñ\80иÑ\81Ñ\82еÑ\9aеÑ\82о Ð½Ð° Ð¾Ð²Ð¾Ñ\98 Ð¾Ð±Ñ\80азеÑ\86 Ð¼Ð¾Ð¶ÐµÑ\82е Ð´Ð° Ð¿Ñ\80еименÑ\83ваÑ\82е Ñ\81Ñ\82Ñ\80аниÑ\86а, Ð¿Ñ\80емеÑ\81Ñ\82Ñ\83ваÑ\98Ñ\9cи Ñ\98а Ñ\86елаÑ\82а Ð½ÐµÑ\98зина Ð¸Ñ\81Ñ\82оÑ\80иÑ\98а Ð¿Ð¾Ð´ Ð½Ð¾Ð²Ð¾ Ð¸Ð¼Ðµ.\nСÑ\82аÑ\80иоÑ\82 Ð½Ð°Ñ\81лов Ñ\9cе Ñ\81Ñ\82ане Ð¿Ñ\80енаÑ\81оÑ\87Ñ\83ваÑ\87ка Ñ\81Ñ\82Ñ\80аниÑ\86а ÐºÐ¾Ð½ Ð½Ð¾Ð²Ð¸Ð¾Ñ\82 Ð½Ð°Ñ\81лов.\nÐ\90вÑ\82омаÑ\82Ñ\81ки Ð¼Ð¾Ð¶ÐµÑ\82е Ð´Ð° Ð³Ð¸ Ð¿Ð¾Ð´Ð½Ð¾Ð²Ð¸Ñ\82е Ð¿Ñ\80енаÑ\81оÑ\87Ñ\83ваÑ\9aаÑ\82а ÐºÐ¾Ð¸ Ð¿Ð¾ÐºÐ°Ð¶Ñ\83вааÑ\82 ÐºÐ¾Ð½ Ð¿Ñ\80вобиÑ\82ниоÑ\82 Ð½Ð°Ñ\81лов.\nÐ\90ко Ð½Ðµ Ð¸Ð·Ð±ÐµÑ\80еÑ\82е Ð°Ð²Ñ\82омаÑ\82Ñ\81ко Ð¿Ð¾Ð´Ð½Ð¾Ð²Ñ\83ваÑ\9aе, Ð¿Ñ\80овеÑ\80еÑ\82е Ð½Ð° [[Special:DoubleRedirects|двоÑ\98ни]] Ð¸Ð»Ð¸ [[Special:BrokenRedirects|пÑ\80екинаÑ\82и Ð¿Ñ\80енаÑ\81оÑ\87Ñ\83ваÑ\9aа]].\nÐ\9dа Ð²Ð°Ñ\81 Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð¾Ñ\80ноÑ\81Ñ\82а Ð´Ð° Ñ\81е Ð¾Ñ\81игÑ\83Ñ\80аÑ\82е Ð´ÐµÐºÐ° Ð²Ñ\80Ñ\81киÑ\82е Ñ\9cе Ð¿Ñ\80одолжаÑ\82 Ð´Ð° Ð½Ð°Ñ\81оÑ\87Ñ\83вааÑ\82 Ñ\82амÑ\83 Ð·Ð° ÐºÐ°Ð´Ðµ Ñ\81е Ð¿Ñ\80едвидени.\n\nÐ\98маÑ\98Ñ\82е Ð¿Ñ\80едвид Ð´ÐµÐºÐ° Ñ\81Ñ\82Ñ\80аниÑ\86аÑ\82а '''нема''' Ð´Ð° Ð±Ð¸Ð´Ðµ Ð¿Ñ\80емеÑ\81Ñ\82ена Ð°ÐºÐ¾ Ð²ÐµÑ\9cе Ð¿Ð¾Ñ\81Ñ\82ои Ñ\81Ñ\82Ñ\80аниÑ\86а Ñ\81о Ð½Ð¾Ð²Ð¸Ð¾Ñ\82 Ð½Ð°Ñ\81лов, Ð¾Ñ\81вен Ð°ÐºÐ¾ Ðµ Ð½Ðµ Ðµ Ð¿Ñ\80енаÑ\81оÑ\87Ñ\83ваÑ\9aе Ð¸ Ð½ÐµÐ¼Ð° Ð¸Ñ\81Ñ\82оÑ\80иÑ\98а Ð½Ð° Ð¼Ð¸Ð½Ð°Ñ\82и Ñ\83Ñ\80едÑ\83ваÑ\9aа. Ð¢Ð¾Ð° Ð·Ð½Ð°Ñ\87и Ð´ÐµÐºÐ° Ð¼Ð¾Ð¶ÐµÑ\82е Ð´Ð° Ñ\98а Ð¿Ñ\80еименÑ\83ваÑ\82е Ñ\81Ñ\82Ñ\80аниÑ\86аÑ\82а ÐºÐ°ÐºÐ¾ Ñ\88Ñ\82о Ð±Ð¸Ð»Ð° Ð¿Ñ\80еÑ\82Ñ\85одно Ð´Ð¾ÐºÐ¾Ð»ÐºÑ\83 Ñ\81Ñ\82е Ð½Ð°Ð¿Ñ\80авиле Ð³Ñ\80еÑ\88ка Ð±ÐµÐ· Ð´Ð° Ñ\98а Ð¿Ñ\80екÑ\80иеÑ\82е Ð¿Ð¾Ñ\81Ñ\82оеÑ\87каÑ\82а Ñ\81Ñ\82Ñ\80аниÑ\86а.\n\n'''Ð\9fÑ\80едÑ\83пÑ\80едÑ\83ваÑ\9aе!'''\nОва може да биде драстична и неочекувана промена за популарна страница;\nосигурајте се дека сте ги разбрале последиците од ова пред да продолжите.",
-       "movepagetext-noredirectfixer": "Со ÐºÐ¾Ñ\80иÑ\81Ñ\82еÑ\9aеÑ\82о Ð½Ð° Ð¾Ð²Ð¾Ñ\98 Ð¾Ð±Ñ\80азеÑ\86 Ð¼Ð¾Ð¶ÐµÑ\82е Ð´Ð° Ð¿Ñ\80еименÑ\83ваÑ\82е Ñ\81Ñ\82Ñ\80аниÑ\86а, Ð¿Ñ\80емеÑ\81Ñ\82Ñ\83ваÑ\98Ñ\9cи Ñ\98а Ñ\86елаÑ\82а Ð½ÐµÑ\98зина Ð¸Ñ\81Ñ\82оÑ\80иÑ\98а Ð¿Ð¾Ð´ Ð½Ð¾Ð²Ð¾ Ð¸Ð¼Ðµ.\nСÑ\82аÑ\80иоÑ\82 Ð½Ð°Ñ\81лов Ñ\9cе Ñ\81Ñ\82ане Ð¿Ñ\80енаÑ\81оÑ\87Ñ\83ваÑ\87ка Ñ\81Ñ\82Ñ\80аниÑ\86а ÐºÐ¾Ð½ Ð½Ð¾Ð²Ð¸Ð¾Ñ\82 Ð½Ð°Ñ\81лов.\nÐ\90вÑ\82омаÑ\82Ñ\81ки Ð¼Ð¾Ð¶ÐµÑ\82е Ð´Ð° Ð³Ð¸ Ð¿Ð¾Ð´Ð½Ð¾Ð²Ð¸Ñ\82е Ð¿Ñ\80енаÑ\81оÑ\87Ñ\83ваÑ\9aаÑ\82а ÐºÐ¾Ð¸ Ð¿Ð¾ÐºÐ°Ð¶Ñ\83вааÑ\82 ÐºÐ¾Ð½ Ð¿Ñ\80вобиÑ\82ниоÑ\82 Ð½Ð°Ñ\81лов.\nÐ\9dе Ð·Ð°Ð±Ð¾Ñ\80аваÑ\98Ñ\82е Ð´Ð° Ð¿Ñ\80овеÑ\80иÑ\82е [[Special:DoubleRedirects|двоÑ\98ни]] Ð¸ [[Special:BrokenRedirects|пÑ\80екинаÑ\82и Ð¿Ñ\80енаÑ\81оÑ\87Ñ\83ваÑ\9aа]].\nÐ\9dа Ð²Ð°Ñ\81 Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð¾Ñ\80ноÑ\81Ñ\82а Ð´Ð° Ñ\81е Ð¾Ñ\81игÑ\83Ñ\80аÑ\82е Ð´ÐµÐºÐ° Ð²Ñ\80Ñ\81киÑ\82е Ñ\9cе Ð¿Ñ\80одолжаÑ\82 Ð´Ð° Ð½Ð°Ñ\81оÑ\87Ñ\83вааÑ\82 Ñ\82амÑ\83 Ð·Ð° ÐºÐ°Ð´Ðµ Ñ\81е Ð¿Ñ\80едвидени.\n\nÐ\98маÑ\98Ñ\82е Ð¿Ñ\80едвид Ð´ÐµÐºÐ° Ñ\81Ñ\82Ñ\80аниÑ\86аÑ\82а '''Ð\9dÐ\95Ð\9cÐ\90''' Ð´Ð° Ð±Ð¸Ð´Ðµ Ð¿Ñ\80емеÑ\81Ñ\82ена Ð°ÐºÐ¾ Ð²ÐµÑ\9cе Ð¿Ð¾Ñ\81Ñ\82ои Ñ\81Ñ\82Ñ\80аниÑ\86а Ñ\81о Ð½Ð¾Ð²Ð¸Ð¾Ñ\82 Ð½Ð°Ñ\81лов, Ð¾Ñ\81вен Ð°ÐºÐ¾ Ðµ Ð¿Ñ\80азна Ð¸Ð»Ð¸ Ð°ÐºÐ¾ Ðµ Ð¿Ñ\80енаÑ\81оÑ\87Ñ\83ваÑ\9aе Ð¸ Ð½ÐµÐ¼Ð° Ð¸Ñ\81Ñ\82оÑ\80иÑ\98а Ð½Ð° Ð¼Ð¸Ð½Ð°Ñ\82и Ñ\83Ñ\80едÑ\83ваÑ\9aа. Ð¢Ð¾Ð° Ð·Ð½Ð°Ñ\87и Ð´ÐµÐºÐ° Ð¼Ð¾Ð¶ÐµÑ\82е Ð´Ð° Ñ\98а Ð¿Ñ\80еименÑ\83ваÑ\82е Ñ\81Ñ\82Ñ\80аниÑ\86аÑ\82а ÐºÐ°ÐºÐ¾ Ñ\88Ñ\82о Ð±Ð¸Ð»Ð° Ð¿Ñ\80еÑ\82Ñ\85одно Ð´Ð¾ÐºÐ¾Ð»ÐºÑ\83 Ñ\81Ñ\82е Ð½Ð°Ð¿Ñ\80авиле Ð³Ñ\80еÑ\88ка Ð±ÐµÐ· Ð´Ð° Ñ\98а Ð¿Ñ\80екÑ\80иеÑ\82е Ð¿Ð¾Ñ\81Ñ\82оеÑ\87каÑ\82а Ñ\81Ñ\82Ñ\80аниÑ\86а.\n\n'''Ð\9fРÐ\95Ð\94УÐ\9fРÐ\95Ð\94УÐ\92Ð\90Ð\8aÐ\95!'''\nОва може да биде драстична и неочекувана промена за популарна страница;\nосигурајте се дека сте ги разбрале последиците од ова пред да продолжите.",
+       "movepagetext": "Со ÐºÐ¾Ñ\80иÑ\81Ñ\82еÑ\9aеÑ\82о Ð½Ð° Ð¾Ð²Ð¾Ñ\98 Ð¾Ð±Ñ\80азеÑ\86 Ð¼Ð¾Ð¶ÐµÑ\82е Ð´Ð° Ð¿Ñ\80еименÑ\83ваÑ\82е Ñ\81Ñ\82Ñ\80аниÑ\86а, Ð¿Ñ\80емеÑ\81Ñ\82Ñ\83ваÑ\98Ñ\9cи Ñ\98а Ñ\86елаÑ\82а Ð½ÐµÑ\98зина Ð¸Ñ\81Ñ\82оÑ\80иÑ\98а Ð¿Ð¾Ð´ Ð½Ð¾Ð²Ð¾ Ð¸Ð¼Ðµ.\nСÑ\82аÑ\80иоÑ\82 Ð½Ð°Ñ\81лов Ñ\9cе Ñ\81Ñ\82ане Ð¿Ñ\80енаÑ\81оÑ\87Ñ\83ваÑ\87ка Ñ\81Ñ\82Ñ\80аниÑ\86а ÐºÐ¾Ð½ Ð½Ð¾Ð²Ð¸Ð¾Ñ\82 Ð½Ð°Ñ\81лов.\nÐ\90вÑ\82омаÑ\82Ñ\81ки Ð¼Ð¾Ð¶ÐµÑ\82е Ð´Ð° Ð³Ð¸ Ð¿Ð¾Ð´Ð½Ð¾Ð²Ð¸Ñ\82е Ð¿Ñ\80енаÑ\81оÑ\87Ñ\83ваÑ\9aаÑ\82а ÐºÐ¾Ð¸ Ð¿Ð¾ÐºÐ°Ð¶Ñ\83вааÑ\82 ÐºÐ¾Ð½ Ð¿Ñ\80вобиÑ\82ниоÑ\82 Ð½Ð°Ñ\81лов.\nÐ\90ко Ð½Ðµ Ð¸Ð·Ð±ÐµÑ\80еÑ\82е Ð°Ð²Ñ\82омаÑ\82Ñ\81ко Ð¿Ð¾Ð´Ð½Ð¾Ð²Ñ\83ваÑ\9aе, Ð¿Ñ\80овеÑ\80еÑ\82е Ð½Ð° [[Special:DoubleRedirects|двоÑ\98ни]] Ð¸Ð»Ð¸ [[Special:BrokenRedirects|пÑ\80екинаÑ\82и Ð¿Ñ\80енаÑ\81оÑ\87Ñ\83ваÑ\9aа]].\nÐ\9dа Ð²Ð°Ñ\81 Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð¾Ñ\80ноÑ\81Ñ\82а Ð´Ð° Ñ\81е Ð¾Ñ\81игÑ\83Ñ\80аÑ\82е Ð´ÐµÐºÐ° Ð²Ñ\80Ñ\81киÑ\82е Ñ\9cе Ð¿Ñ\80одолжаÑ\82 Ð´Ð° Ð½Ð°Ñ\81оÑ\87Ñ\83вааÑ\82 Ñ\82амÑ\83 Ð·Ð° ÐºÐ°Ð´Ðµ Ñ\81е Ð¿Ñ\80едвидени.\n\nÐ\98маÑ\98Ñ\82е Ð¿Ñ\80едвид Ð´ÐµÐºÐ° Ñ\81Ñ\82Ñ\80аниÑ\86аÑ\82а '''нема''' Ð´Ð° Ð±Ð¸Ð´Ðµ Ð¿Ñ\80емеÑ\81Ñ\82ена Ð°ÐºÐ¾ Ð²ÐµÑ\9cе Ð¿Ð¾Ñ\81Ñ\82ои Ñ\81Ñ\82Ñ\80аниÑ\86а Ñ\81о Ð½Ð¾Ð²Ð¸Ð¾Ñ\82 Ð½Ð°Ñ\81лов, Ð¾Ñ\81вен Ð°ÐºÐ¾ Ðµ Ð½Ðµ Ðµ Ð¿Ñ\80енаÑ\81оÑ\87Ñ\83ваÑ\9aе Ð¸ Ð½ÐµÐ¼Ð° Ð¸Ñ\81Ñ\82оÑ\80иÑ\98а Ð½Ð° Ð¼Ð¸Ð½Ð°Ñ\82и Ñ\83Ñ\80едÑ\83ваÑ\9aа. Ð¢Ð¾Ð° Ð·Ð½Ð°Ñ\87и Ð´ÐµÐºÐ° Ð¼Ð¾Ð¶ÐµÑ\82е Ð´Ð° Ñ\98а Ð¿Ñ\80еименÑ\83ваÑ\82е Ñ\81Ñ\82Ñ\80аниÑ\86аÑ\82а ÐºÐ°ÐºÐ¾ Ñ\88Ñ\82о Ð±Ð¸Ð»Ð° Ð¿Ñ\80еÑ\82Ñ\85одно Ð´Ð¾ÐºÐ¾Ð»ÐºÑ\83 Ñ\81Ñ\82е Ð½Ð°Ð¿Ñ\80авиле Ð³Ñ\80еÑ\88ка Ð±ÐµÐ· Ð´Ð° Ñ\98а Ð¿Ñ\80екÑ\80иеÑ\82е Ð¿Ð¾Ñ\81Ñ\82оеÑ\87каÑ\82а Ñ\81Ñ\82Ñ\80аниÑ\86а.\n\n'''Ð\9dапомена:'''\nОва може да биде драстична и неочекувана промена за популарна страница;\nосигурајте се дека сте ги разбрале последиците од ова пред да продолжите.",
+       "movepagetext-noredirectfixer": "Со ÐºÐ¾Ñ\80иÑ\81Ñ\82еÑ\9aеÑ\82о Ð½Ð° Ð¾Ð²Ð¾Ñ\98 Ð¾Ð±Ñ\80азеÑ\86 Ð¼Ð¾Ð¶ÐµÑ\82е Ð´Ð° Ð¿Ñ\80еименÑ\83ваÑ\82е Ñ\81Ñ\82Ñ\80аниÑ\86а, Ð¿Ñ\80емеÑ\81Ñ\82Ñ\83ваÑ\98Ñ\9cи Ñ\98а Ñ\86елаÑ\82а Ð½ÐµÑ\98зина Ð¸Ñ\81Ñ\82оÑ\80иÑ\98а Ð¿Ð¾Ð´ Ð½Ð¾Ð²Ð¾ Ð¸Ð¼Ðµ.\nСÑ\82аÑ\80иоÑ\82 Ð½Ð°Ñ\81лов Ñ\9cе Ñ\81Ñ\82ане Ð¿Ñ\80енаÑ\81оÑ\87Ñ\83ваÑ\87ка Ñ\81Ñ\82Ñ\80аниÑ\86а ÐºÐ¾Ð½ Ð½Ð¾Ð²Ð¸Ð¾Ñ\82 Ð½Ð°Ñ\81лов.\nÐ\90вÑ\82омаÑ\82Ñ\81ки Ð¼Ð¾Ð¶ÐµÑ\82е Ð´Ð° Ð³Ð¸ Ð¿Ð¾Ð´Ð½Ð¾Ð²Ð¸Ñ\82е Ð¿Ñ\80енаÑ\81оÑ\87Ñ\83ваÑ\9aаÑ\82а ÐºÐ¾Ð¸ Ð¿Ð¾ÐºÐ°Ð¶Ñ\83вааÑ\82 ÐºÐ¾Ð½ Ð¿Ñ\80вобиÑ\82ниоÑ\82 Ð½Ð°Ñ\81лов.\nÐ\9dе Ð·Ð°Ð±Ð¾Ñ\80аваÑ\98Ñ\82е Ð´Ð° Ð¿Ñ\80овеÑ\80иÑ\82е [[Special:DoubleRedirects|двоÑ\98ни]] Ð¸ [[Special:BrokenRedirects|пÑ\80екинаÑ\82и Ð¿Ñ\80енаÑ\81оÑ\87Ñ\83ваÑ\9aа]].\nÐ\9dа Ð²Ð°Ñ\81 Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð¾Ñ\80ноÑ\81Ñ\82а Ð´Ð° Ñ\81е Ð¾Ñ\81игÑ\83Ñ\80аÑ\82е Ð´ÐµÐºÐ° Ð²Ñ\80Ñ\81киÑ\82е Ñ\9cе Ð¿Ñ\80одолжаÑ\82 Ð´Ð° Ð½Ð°Ñ\81оÑ\87Ñ\83вааÑ\82 Ñ\82амÑ\83 Ð·Ð° ÐºÐ°Ð´Ðµ Ñ\81е Ð¿Ñ\80едвидени.\n\nÐ\98маÑ\98Ñ\82е Ð¿Ñ\80едвид Ð´ÐµÐºÐ° Ñ\81Ñ\82Ñ\80аниÑ\86аÑ\82а '''Ð\9dÐ\95Ð\9cÐ\90''' Ð´Ð° Ð±Ð¸Ð´Ðµ Ð¿Ñ\80емеÑ\81Ñ\82ена Ð°ÐºÐ¾ Ð²ÐµÑ\9cе Ð¿Ð¾Ñ\81Ñ\82ои Ñ\81Ñ\82Ñ\80аниÑ\86а Ñ\81о Ð½Ð¾Ð²Ð¸Ð¾Ñ\82 Ð½Ð°Ñ\81лов, Ð¾Ñ\81вен Ð°ÐºÐ¾ Ðµ Ð¿Ñ\80азна Ð¸Ð»Ð¸ Ð°ÐºÐ¾ Ðµ Ð¿Ñ\80енаÑ\81оÑ\87Ñ\83ваÑ\9aе Ð¸ Ð½ÐµÐ¼Ð° Ð¸Ñ\81Ñ\82оÑ\80иÑ\98а Ð½Ð° Ð¼Ð¸Ð½Ð°Ñ\82и Ñ\83Ñ\80едÑ\83ваÑ\9aа. Ð¢Ð¾Ð° Ð·Ð½Ð°Ñ\87и Ð´ÐµÐºÐ° Ð¼Ð¾Ð¶ÐµÑ\82е Ð´Ð° Ñ\98а Ð¿Ñ\80еименÑ\83ваÑ\82е Ñ\81Ñ\82Ñ\80аниÑ\86аÑ\82а ÐºÐ°ÐºÐ¾ Ñ\88Ñ\82о Ð±Ð¸Ð»Ð° Ð¿Ñ\80еÑ\82Ñ\85одно Ð´Ð¾ÐºÐ¾Ð»ÐºÑ\83 Ñ\81Ñ\82е Ð½Ð°Ð¿Ñ\80авиле Ð³Ñ\80еÑ\88ка Ð±ÐµÐ· Ð´Ð° Ñ\98а Ð¿Ñ\80екÑ\80иеÑ\82е Ð¿Ð¾Ñ\81Ñ\82оеÑ\87каÑ\82а Ñ\81Ñ\82Ñ\80аниÑ\86а.\n\n'''Ð\9dапомена:'''\nОва може да биде драстична и неочекувана промена за популарна страница;\nосигурајте се дека сте ги разбрале последиците од ова пред да продолжите.",
        "movepagetalktext": "Ако го штиклирате кутивчево, соодветната страница за разговор ќе биде автоматски преместена на нов наслов, освен ако таму веќе постои страница за разговор што не е празна.\n\nВо тој случај, ќе треба да ја преместите или споите страницата рачно, доколку сакате.",
        "moveuserpage-warning": "'''Предупредување:''' На пат сте да преместите корисничка страница. Имајте предвид дека само страницата ќе биде преместена, а самиот корисник ''нема'' да биде преименуван.",
        "movecategorypage-warning": "<strong>Предупредување:</strong> Преместувате категориска страница. Имајте предвид дека ќе се премести само страницата, а страниците во старата категорија <em>нема</em> да се прекатегоризираат во новата.",
        "movenosubpage": "Оваа страница нема потстраници.",
        "movereason": "Причина:",
        "revertmove": "врати",
-       "delete_and_move_text": "==Потребно бришење==\nЦелната статија „[[:$1]]“ веќе постои.\nДали сакате да ја избришете за да ослободите место за преместувањето?",
+       "delete_and_move_text": "Целната статија „[[:$1]]“ веќе постои.\nДали сакате да ја избришете за да ослободите место за преместувањето?",
        "delete_and_move_confirm": "Да, избриши ја страницата",
        "delete_and_move_reason": "Избришано за да се ослободи место за преместувањето од „[[$1]]“",
        "selfmove": "Појдовната и целната страница се истоветни;\nне можам да преместам.",
        "move-leave-redirect": "Направи пренасочување",
        "protectedpagemovewarning": "'''Предупредување:'''  Оваа страница е заштитена, така што само може да ја преместуваат само корисници со администраторски привилегии.\nЗа ваша информација, подолу е прикажана последната ставка во дневникот на измени:",
        "semiprotectedpagemovewarning": "'''Напомена:'''  Оваа страница е заштитена, така што може да ја преместуваат само регистрирани корисници.\nЗа ваша информација, подолу е прикажана последната ставка во дневникот на измени:",
-       "move-over-sharedrepo": "== Податотеката постои ==\n[[:$1]] постои на заедничко складиште. Ако податотеката ја преместите на овој наслов, тоа ќе ја потисне заедничката податотека.",
+       "move-over-sharedrepo": "[[:$1]] постои на заедничко складиште. Ако податотеката ја преместите на овој наслов, тоа ќе ја потисне заедничката податотека.",
        "file-exists-sharedrepo": "Одбраното име на податотеката веќе се користи на заедничко складиште.\nОдберете друго име.",
        "export": "Извоз на страници",
        "exporttext": "Можете да го извезете текстот и историјата на уредување на избрана страница или група на страници во XML формат.\nОвие податоци може да бидат вчитани на некое друго вики кое се користи со МедијаВики преку [[Special:Import|увезување на страница]].\n\nЗа извезување на страници, внесете ги насловите во полето прикажано подолу, еден наслов на статија во ред, потоа изберете дали сакате да ја извезете само последната преработка или и сите постари преработки.\n\nАко ја сакате само тековната верзија, би можеле да искористите врска од видот [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] за страницата „[[{{MediaWiki:Mainpage}}]]“.",
        "tooltip-feed-rss": "RSS емитување за оваа страница",
        "tooltip-feed-atom": "Атом-емитување за оваа страница",
        "tooltip-t-contributions": "Список на придонеси {{GENDER:$1|на овој корисник}}",
-       "tooltip-t-emailuser": "Испрати е-пошта на овој корисник",
+       "tooltip-t-emailuser": "Испрати е-пошта {{GENDER:$1|на овој корисник}}",
        "tooltip-t-info": "Повеќе информаици за страницава",
        "tooltip-t-upload": "Подигни податотеки",
        "tooltip-t-specialpages": "Список на сите службени страници",
        "lastmodifiedatby": "Последната промена на страницава е извршена на $1 г Сво $2 ч. Промената ја направи $3.",
        "othercontribs": "Засновано на работата на $1.",
        "others": "други",
-       "siteusers": "{{PLURAL:$2|корисникот|корисниците}} на {{SITENAME}} $1",
+       "siteusers": "{{SITENAME}} {{PLURAL:$2|{{GENDER:$1|корисник}}|корисници}} $1",
        "anonusers": "{{PLURAL:$2|анонимен корисник|анонимни корисници}} на {{SITENAME}} $1",
        "creditspage": "Автори на страницата",
        "nocredits": "Не постојат податоци за авторите на оваа страница.",
        "exif-bitspersample": "Длабочина на бојата",
        "exif-compression": "Вид на набивање",
        "exif-photometricinterpretation": "Пикселски состав",
-       "exif-orientation": "Ð\9eÑ\80иенÑ\82аÑ\86иÑ\98а",
+       "exif-orientation": "Ð\9dаÑ\81оÑ\87еноÑ\81Ñ\82",
        "exif-samplesperpixel": "Број на сост. делови",
        "exif-planarconfiguration": "Распоред на податоците",
        "exif-ycbcrsubsampling": "Однос на величината на Y спрема C",
        "version-hook-subscribedby": "Претплатено од",
        "version-version": "($1)",
        "version-no-ext-name": "[нема име]",
-       "version-svn-revision": "прер. $1",
        "version-license": "Лиценца на МедијаВики",
        "version-ext-license": "Лиценца",
        "version-ext-colheader-name": "Додаток",
        "redirect-page": "Назнака на страницата",
        "redirect-revision": "Преработка на страницата",
        "redirect-file": "Име на податотека",
+       "redirect-logid": "Назнака на дневникот",
        "redirect-not-exists": "Вредноста не е најдена",
        "fileduplicatesearch": "Барање на дуплирани податотеки",
        "fileduplicatesearch-summary": "Пребарување на дуплирани податотеки по тарабни вредности.",
        "expand_templates_preview_fail_html": "<em>Бидејќи {{SITENAME}} има овозможено сиров HTML и се јави губиток на седнички податоци, прегледот е скриен како мерка на претпазливост против напади со JavaScript.</em>\n\n<strong>Ако ова е е легитимен обид за преглед, тогаш обидете се повторно.</strong>\nАко не работи и тогаш, [[Special:UserLogout|одјавете се]] и повторно најавете се.",
        "expand_templates_preview_fail_html_anon": "<em>Бидејќи {{SITENAME}} има овозможено сиров HTML, а вие не сте најавени, прегледот е скриен како мерка на претпазливост против напади со JavaScript.</em>\n\n<strong>Ако ова е е легитимен обид за преглед, тогаш обидете се повторно.</strong>\nАко не работи и тогаш, [[Special:UserLogout|одјавете се]] и повторно најавете се.",
        "expand_templates_input_missing": "Треба да внесете некаков текст.",
-       "pagelanguage": "Ð\98збоÑ\80ник Ð·Ð° Ñ\98азик Ð½Ð° Ñ\81Ñ\82Ñ\80аниÑ\86аÑ\82а",
+       "pagelanguage": "Ð\9cенÑ\83ваÑ\9aе Ñ\98азик Ð½Ð° Ñ\81Ñ\82Ñ\80аниÑ\86а",
        "pagelang-name": "Страница",
        "pagelang-language": "Јазик",
        "pagelang-use-default": "Користи стандарден јазик",
        "mw-widgets-titleinput-description-new-page": "страницата сè уште не постои",
        "mw-widgets-titleinput-description-redirect": "пренасочување кон $1",
        "api-error-blacklisted": "Одберете поинаков, описен наслов.",
+       "sessionprovider-generic": "$1 седници",
+       "sessionprovider-mediawiki-session-cookiesessionprovider": "седници со колачиња",
        "randomrootpage": "Случајна основна страница"
 }
index 8a2845f..a2cd1cb 100644 (file)
        "uploaded-script-svg": "അപ്‌ലോഡ് ചെയ്ത എസ്.വി.ജി. പ്രമാണത്തിൽ സ്ക്രിപ്റ്റ് ചെയ്യാവുന്ന ഭാഗമായ \"$1\" കണ്ടെത്തി.",
        "uploaded-hostile-svg": "അപ്‌ലോഡ് ചെയ്ത എസ്.വി.ജി. പ്രമാണത്തിൽ സുരക്ഷിതമല്ലാത്ത സി.എസ്.എസ്. സ്റ്റൈൽ ഭാഗം കണ്ടെത്താനായി.",
        "uploaded-event-handler-on-svg": "എസ്.വി.ജി. പ്രമാണങ്ങളിൽ എവന്റ്-ഹാൻഡ്‌ലർ ആട്രിബ്യൂട്ടുകൾ <code>$1=\"$2\"</code>  എന്ന് സജ്ജീകരിച്ചിരിക്കുന്നവ അനുവദിച്ചിട്ടില്ല.",
-       "uploaded-href-attribute-svg": "എസ്.വി.ജി. പ്രമാണങ്ങളിൽ എച്ച്റെഫ് (href) ആട്രിബ്യൂട്ടുകൾ പ്രാദേശികമല്ലാത്ത ലക്ഷ്യങ്ങളിലേക്ക് <code>&lt;$1 $2=\"$3\"&gt;</code> എന്നുള്ളവ (ഉദാ: http://, javascript:, തുടങ്ങിയവ) അനുവദിച്ചിട്ടില്ല.",
        "uploaded-href-unsafe-target-svg": "അപ്‌ലോഡ് ചെയ്ത എസ്.വി.ജി. പ്രമാണത്തിൽ സുരക്ഷിതമല്ലാത്ത ലക്ഷ്യമായ <code>&lt;$1 $2=\"$3\"&gt;</code> കണ്ടെത്തി.",
        "uploaded-animate-svg": "അപ്‌ലോഡ് ചെയ്ത എസ്.വി.ജി. പ്രമാണത്തിൽ <code>&lt;$1 $2=\"$3\"&gt;</code> ആട്രിബ്യൂട്ട് ഉപയോഗിച്ച് href മാറ്റിയേക്കാവുന്ന \"animate\" റ്റാഗായ <code>&lt;$1 $2=\"$3\"&gt;</code> കണ്ടെത്തി.",
        "uploaded-setting-event-handler-svg": "അപ്‌ലോഡ് ചെയ്ത എസ്.വി.ജി. പ്രമാണത്തിൽ <code>&lt;$1 $2=\"$3\"&gt;</code> കണ്ടെത്തി, ഇവന്റ്-കൈകാര്യ സജ്ജീകരണ ആട്രിബ്യൂട്ടുകൾ തടഞ്ഞിരിക്കുന്നു.",
        "filewasdeleted": "ഈ പേരിലുള്ള ഒരു പ്രമാണം ഇതിനു മുൻപ് അപ്‌ലോഡ് ചെയ്യുകയും പിന്നീട് മായ്ക്കുകയും ചെയ്തിട്ടുള്ളതാണ്‌. ഈ പ്രമാണം തുടർന്നും അപ്‌ലോഡ് ചെയ്യുന്നതിനു മുൻപ് $1 പരിശോധിക്കേണ്ടതാണ്‌.",
        "filename-thumb-name": "ഇത് കണ്ടിട്ട് ലഘുചിത്രത്തിന്റെ തലക്കെട്ട് പോലെയുണ്ട്. ദയവായി ഇതേ വിക്കിയിലെ ചിത്രങ്ങളുടെ ലഘുചിത്രം തന്നെ അപ്‌ലോഡ് ചെയ്യരുത്. അങ്ങനെയല്ലെങ്കിൽ, ലഘുചിത്രമെന്ന പൂർവ്വപദഭാഗമില്ലാതെ, കൂടുതൽ അർത്ഥപൂർണ്ണമായ പേര് നൽകുക.",
        "filename-bad-prefix": "താങ്കൾ അപ്‌ലോഡ് ചെയ്യുവാൻ ശ്രമിക്കുന്ന പ്രമാണത്തിന്റെ പേര്‌ '''\"$1\"''' എന്നാണ്‌ തുടങ്ങുന്നത്. ഇതു ഡിജിറ്റൽ ക്യാമറയിൽ പടങ്ങൾക്കു യാന്ത്രികമായി ചേർക്കുന്ന പേരാണ്‌. ദയവു ചെയ്തു താങ്കൾ അപ്‌ലോഡ് ചെയ്യുന്ന പ്രമാണത്തെ വിശദീകരിക്കുന്ന അനുയോജ്യമായ ഒരു പേരു തിരഞ്ഞെടുക്കുക.",
-       "upload-success-subj": "അപ്‌ലോഡ് വിജയിച്ചിരിക്കുന്നു",
-       "upload-success-msg": "താങ്കളുടെ [$2]-ൽ നിന്നും വിജയകരമായി അപ്‌ലോഡ് ചെയ്തിരിക്കുന്നു. [[:{{ns:file}}:$1]] കാണുക",
-       "upload-failure-subj": "അപ്‌‌ലോഡിൽ പിഴവുണ്ട്",
-       "upload-failure-msg": "[$2] എന്നതിൽ നിന്നും താങ്കൾ നടത്തിയ അപ്‌‌ലോഡിൽ ഒരു പ്രശ്നമുണ്ട്:\n\n$1",
-       "upload-warning-subj": "അപ്‌ലോഡ് മുന്നറിയിപ്പ്",
-       "upload-warning-msg": "താങ്കൾ [$2]-ൽ നിന്നും ചെയ്ത അപ്‌ലോഡിൽ പിഴവുണ്ടായിരിക്കുന്നു. [[Special:Upload/stash/$1|അപ്‌ലോഡ് ഫോമിലേക്ക്]] തിരിച്ചുപോയി താങ്കൾക്ക് ഈ പ്രശ്നം പരിഹരിക്കാവുന്നതാണ്.",
        "upload-proto-error": "തെറ്റായ പ്രോട്ടോക്കോൾ",
        "upload-proto-error-text": "റിമോട്ട് അപ്‌ലോഡിനു <code>http://</code> അഥവാ <code>ftp://</code> എന്നു തുടങ്ങുന്ന URL വേണം.",
        "upload-file-error": "ആന്തരികപ്രശ്നം",
        "wlheader-showupdated": "താങ്കളുടെ അവസാന സന്ദർശനത്തിനു ശേഷം മാറ്റം വന്ന താളുകൾ  '''കടുപ്പിച്ച്''' കാണിച്ചിരിക്കുന്നു",
        "wlnote": "$3, $4-നു കഴിഞ്ഞ {{PLURAL:$2|മണിക്കൂറിൽ|<strong>$2</strong> മണിക്കൂറിൽ}} നടന്ന {{PLURAL:$1|ഒരു പുതിയ മാറ്റം|<strong>$1</strong> പുതിയ മാറ്റങ്ങൾ}} താഴെ പ്രദർശിപ്പിച്ചിരിക്കുന്നു.",
        "wlshowlast": "ഒടുവിലത്തെ $1 മണിക്കൂറുകൾ $2 ദിനങ്ങൾ പ്രദർശിപ്പിക്കുക",
-       "watchlistall2": "എല്ലാം",
        "watchlist-hide": "മറയ്ക്കുക",
        "watchlist-submit": "പ്രദർശിപ്പിക്കുക",
        "wlshowtime": "പ്രദർശിപ്പിക്കേണ്ട കാലാവധി:",
        "lockedbyandtime": "($3 $2-നു $1 ചെയ്തത്)",
        "move-page": "$1 മാറ്റുക",
        "move-page-legend": "താൾ മാറ്റുക",
-       "movepagetext": "താഴെയുള്ള ഫോം ഒരു താളിനെ പുനർനാമകരണം ചെയ്യാനുള്ളതാണ്, താളിന്റെ നാൾവഴിയും അക്കൂടെ പുതിയ പേരിലേയ്ക്ക് മാറുന്നതാണ്.\nപഴയ തലക്കെട്ട്, പുതിയ തലക്കെട്ടുള്ള താളിലേക്കുള്ള ഒരു തിരിച്ചുവിടൽ താളായി മാറും.\nപഴയ തലക്കെട്ടിലേക്കുള്ള തിരിച്ചുവിടലുകൾ യന്ത്രങ്ങൾ ഉപയോഗിച്ച് താങ്കൾക്ക് ശരിയാക്കാവുന്നതാണ്.\nഅങ്ങനെ വേണ്ട എന്നാണ് താങ്കളാഗ്രഹിക്കുന്നതെങ്കിൽ [[Special:DoubleRedirects|ഇരട്ട തിരിച്ചുവിടലുകളോ]], [[Special:BrokenRedirects|ഫലപ്രദമല്ലാത്ത തിരിച്ചുവിടലുകളോ]] ഉണ്ടാകുന്നുണ്ടോയെന്ന് ദയവായി പരിശോധിക്കുക.\nലിങ്കുകൾ ശരിയായി പ്രവർത്തിക്കുന്നുണ്ടോ എന്ന് പരിശോധിച്ച് ഉറപ്പു വരുത്തേണ്ടത് താങ്കളുടെ ചുമതലയാണ്.\n\nതാങ്കൾ പുതിയതായി ഉദ്ദേശിക്കുന്ന തലക്കെട്ടിൽ ഒരു താൾ നേരത്തേ നിലവിലുണ്ടെങ്കിൽ '''പുനർനാമകരണം സാധിക്കില്ല'''.\nഅല്ലെങ്കിൽ അതൊരു തിരിച്ചുവിടൽ താളോ, ശൂന്യമായ താളോ അതിനു മറ്റു പഴയരൂപങ്ങൾ ഇല്ലാതിരിക്കുകയോ ചെയ്യണം.\nഅതായത് താങ്കൾ ഒരു താൾ തെറ്റായി പുനർനാമകരണം ചെയ്താൽ മാത്രമേ അതിനേ തിരിച്ചാക്കാൻ സാധിക്കുകയുള്ളു.\nനിലവിലുള്ള ഒരു താളിന്റെ മുകളിൽ അതേ തലക്കെട്ടിൽ മറ്റൊരു താളുണ്ടാക്കാൻ സാധിക്കില്ല.\n\n'''മുന്നറിയിപ്പ്!:'''\nഈ പ്രവൃത്തി ഒരു നല്ലതാളിൽ അപ്രതീക്ഷിതവും, ഉഗ്രവുമായ ഫലങ്ങൾ ഉണ്ടാക്കിയേക്കാം.\nമുന്നോട്ടു പോകുന്നതിനു മുമ്പ് താങ്കൾ ചെയ്യുന്നതെന്താണെന്ന് വ്യക്തമായി മനസ്സിലാക്കുക.",
-       "movepagetext-noredirectfixer": "താഴെയുള്ള ഫോം ഒരു താളിനെ പുനർനാമകരണം ചെയ്യാനുള്ളതാണ്.\nതാളിന്റെ പഴയരൂപങ്ങളും ഈ മാറ്റത്തിന് വിധേയമാക്കപ്പെടും.\nപഴയ തലക്കെട്ട്, പുതിയ തലക്കെട്ടുള്ള താളിലേക്കുള്ള ഒരു തിരിച്ചുവിടൽ താളായി മാറും.\nപഴയതാളിലേക്കുള്ള ലിങ്കുകൾ ഈ മാറ്റത്തിൽ മാറുകയില്ല.\n[[Special:DoubleRedirects|ഇരട്ട തിരിച്ചുവിടലുകളോ]], [[Special:BrokenRedirects|ഫലപ്രദമല്ലാത്ത തിരിച്ചുവിടലുകളോ]] ഉണ്ടാകുന്നുണ്ടോയെന്ന് ദയവായി പരിശോധിക്കുക.\nലിങ്കുകൾ ശരിയായി പ്രവർത്തിക്കുന്നുണ്ടോ എന്ന് പരിശോധിച്ച് ഉറപ്പു വരുത്തേണ്ടത് താങ്കളുടെ ചുമതലയാണ്.\n\nതാങ്കൾ പുതിയതായി ഉദ്ദേശിക്കുന്ന തലക്കെട്ടിൽ ഒരു താൾ നേരത്തേ നിലവിലുണ്ടെങ്കിൽ '''പുനർനാമകരണം സാധിക്കില്ല'''.\nഅല്ലെങ്കിൽ അതൊരു തിരിച്ചുവിടൽ താളോ, ശൂന്യമായ താളോ അതിനു മറ്റു പഴയരൂപങ്ങൾ ഇല്ലാതിരിക്കുകയോ ചെയ്യണം.\nഅതായത് താങ്കൾ ഒരു താൾ തെറ്റായി പുനർനാമകരണം ചെയ്താൽ മാത്രമേ അതിനേ തിരിച്ചാക്കാൻ സാധിക്കുകയുള്ളു.\nനിലവിലുള്ള ഒരു താളിന്റെ മുകളിൽ അതേ തലക്കെട്ടിൽ മറ്റൊരു താളുണ്ടാക്കാൻ സാധിക്കില്ല.\n\n'''മുന്നറിയിപ്പ്!:'''\nഈ പ്രവൃത്തി ഒരു നല്ലതാളിൽ അപ്രതീക്ഷിതവും, ഉഗ്രവുമായ ഫലങ്ങൾ സൃഷ്ടിച്ചേക്കാം.\nമുന്നോട്ടു പോകുന്നതിനു മുമ്പ് താങ്കൾ ചെയ്യുന്നതെന്താണെന്ന് വ്യക്തമായി മനസ്സിലാക്കുക.",
+       "movepagetext": "താഴെയുള്ള ഫോം ഒരു താളിനെ പുനർനാമകരണം ചെയ്യാനുള്ളതാണ്, താളിന്റെ നാൾവഴിയും അക്കൂടെ പുതിയ പേരിലേയ്ക്ക് മാറുന്നതാണ്.\nപഴയ തലക്കെട്ട്, പുതിയ തലക്കെട്ടുള്ള താളിലേക്കുള്ള ഒരു തിരിച്ചുവിടൽ താളായി മാറും.\nപഴയ തലക്കെട്ടിലേക്കുള്ള തിരിച്ചുവിടലുകൾ യന്ത്രങ്ങൾ ഉപയോഗിച്ച് താങ്കൾക്ക് ശരിയാക്കാവുന്നതാണ്.\nഅങ്ങനെ വേണ്ട എന്നാണ് താങ്കളാഗ്രഹിക്കുന്നതെങ്കിൽ [[Special:DoubleRedirects|ഇരട്ട തിരിച്ചുവിടലുകളോ]], [[Special:BrokenRedirects|ഫലപ്രദമല്ലാത്ത തിരിച്ചുവിടലുകളോ]] ഉണ്ടാകുന്നുണ്ടോയെന്ന് ദയവായി പരിശോധിക്കുക.\nലിങ്കുകൾ ശരിയായി പ്രവർത്തിക്കുന്നുണ്ടോ എന്ന് പരിശോധിച്ച് ഉറപ്പു വരുത്തേണ്ടത് താങ്കളുടെ ചുമതലയാണ്.\n\nതാങ്കൾ പുതിയതായി ഉദ്ദേശിക്കുന്ന തലക്കെട്ടിൽ ഒരു താൾ നേരത്തേ നിലവിലുണ്ടെങ്കിൽ <strong>പുനർനാമകരണം സാധിക്കില്ല</strong>.\nഅല്ലെങ്കിൽ അതൊരു തിരിച്ചുവിടൽ താളോ, ശൂന്യമായ താളോ അതിനു മറ്റു പഴയരൂപങ്ങൾ ഇല്ലാതിരിക്കുകയോ ചെയ്യണം.\nഅതായത് താങ്കൾ ഒരു താൾ തെറ്റായി പുനർനാമകരണം ചെയ്താൽ മാത്രമേ അതിനേ തിരിച്ചാക്കാൻ സാധിക്കുകയുള്ളു.\nനിലവിലുള്ള ഒരു താളിന്റെ മുകളിൽ അതേ തലക്കെട്ടിൽ മറ്റൊരു താളുണ്ടാക്കാൻ സാധിക്കില്ല.\n\n<strong>മുന്നറിയിപ്പ്!:</strong>\nഈ പ്രവൃത്തി ഒരു നല്ലതാളിൽ അപ്രതീക്ഷിതവും, ഉഗ്രവുമായ ഫലങ്ങൾ ഉണ്ടാക്കിയേക്കാം.\nമുന്നോട്ടു പോകുന്നതിനു മുമ്പ് താങ്കൾ ചെയ്യുന്നതെന്താണെന്ന് വ്യക്തമായി മനസ്സിലാക്കുക.",
+       "movepagetext-noredirectfixer": "താഴെയുള്ള ഫോം ഒരു താളിനെ പുനർനാമകരണം ചെയ്യാനുള്ളതാണ്.\nതാളിന്റെ പഴയരൂപങ്ങളും ഈ മാറ്റത്തിന് വിധേയമാക്കപ്പെടും.\nപഴയ തലക്കെട്ട്, പുതിയ തലക്കെട്ടുള്ള താളിലേക്കുള്ള ഒരു തിരിച്ചുവിടൽ താളായി മാറും.\nപഴയതാളിലേക്കുള്ള ലിങ്കുകൾ ഈ മാറ്റത്തിൽ മാറുകയില്ല.\n[[Special:DoubleRedirects|ഇരട്ട തിരിച്ചുവിടലുകളോ]], [[Special:BrokenRedirects|ഫലപ്രദമല്ലാത്ത തിരിച്ചുവിടലുകളോ]] ഉണ്ടാകുന്നുണ്ടോയെന്ന് ദയവായി പരിശോധിക്കുക.\nലിങ്കുകൾ ശരിയായി പ്രവർത്തിക്കുന്നുണ്ടോ എന്ന് പരിശോധിച്ച് ഉറപ്പു വരുത്തേണ്ടത് താങ്കളുടെ ചുമതലയാണ്.\n\nതാങ്കൾ പുതിയതായി ഉദ്ദേശിക്കുന്ന തലക്കെട്ടിൽ ഒരു താൾ നേരത്തേ നിലവിലുണ്ടെങ്കിൽ <strong>പുനർനാമകരണം സാധിക്കില്ല</strong>.\nഅല്ലെങ്കിൽ അതൊരു തിരിച്ചുവിടൽ താളോ, ശൂന്യമായ താളോ അതിനു മറ്റു പഴയരൂപങ്ങൾ ഇല്ലാതിരിക്കുകയോ ചെയ്യണം.\nഅതായത് താങ്കൾ ഒരു താൾ തെറ്റായി പുനർനാമകരണം ചെയ്താൽ മാത്രമേ അതിനേ തിരിച്ചാക്കാൻ സാധിക്കുകയുള്ളു.\nനിലവിലുള്ള ഒരു താളിന്റെ മുകളിൽ അതേ തലക്കെട്ടിൽ മറ്റൊരു താളുണ്ടാക്കാൻ സാധിക്കില്ല.\n\n<strong>മുന്നറിയിപ്പ്!:</strong>\nഈ പ്രവൃത്തി ഒരു നല്ലതാളിൽ അപ്രതീക്ഷിതവും, ഉഗ്രവുമായ ഫലങ്ങൾ സൃഷ്ടിച്ചേക്കാം.\nമുന്നോട്ടു പോകുന്നതിനു മുമ്പ് താങ്കൾ ചെയ്യുന്നതെന്താണെന്ന് വ്യക്തമായി മനസ്സിലാക്കുക.",
        "movepagetalktext": "ഇവിടെ ശരിയിട്ട് നൽകിയിട്ടുണ്ടെങ്കിൽ, അതേ പേരിൽ തന്നെ ശൂന്യമല്ലാത്ത ഒരു സം‌വാദത്താൾ നിലവിലില്ലാത്ത പക്ഷം ബന്ധപ്പെട്ട സം‌വാദത്താൾ പുതിയ തലക്കെട്ടിലേക്ക് സ്വയം മാറപ്പെടുന്നതാണ്.\n\nഅത്തരം സന്ദർഭങ്ങളിൽ സം‌വാദത്താളുകൾ താങ്കൾ സ്വയം ലയിപ്പിക്കേണ്ടതാണ്.",
        "moveuserpage-warning": "'''മുന്നറിയിപ്പ്:''' ഉപയോക്താവിനുള്ള താളാണ് താങ്കൾ മാറ്റാൻ പോകുന്നത്. താൾ മാത്രമേ മാറുകയുള്ളു എന്നും ഉപയോക്താവിന്റെ പേര് ''മാറുകയില്ലെന്നും'' ദയവായി ഓർക്കുക.",
        "movecategorypage-warning": "<strong>മുന്നറിയിപ്പ്:</strong> താങ്കൾ ഒരു വർഗ്ഗതാൾ മാറ്റാൻ പോവുകയാണ്. ഈ താൾ മാത്രമേ മാറുകയുള്ളുവെന്നും പഴയ വർഗ്ഗത്തിൽ ഉണ്ടായിരുന്ന താളുകളൊന്നും പുനർവർഗ്ഗീകരണം ചെയ്യാത്ത പക്ഷം പുതിയതിലേക്ക് <em>മാറില്ലെന്നും</em> ഓർക്കുക.",
        "movenosubpage": "ഈ താളിന്‌ ഉപതാളുകൾ ഇല്ല",
        "movereason": "കാരണം:",
        "revertmove": "പൂർവ്വസ്ഥിതിയിലാക്കുക",
-       "delete_and_move_text": "==താൾ മായ്ക്കേണ്ടിയിരിക്കുന്നു==\n\nമാറ്റാനായി നൽകിയ \"[[:$1]]\" എന്ന താൾ നിലവിലുണ്ട്. ഈ മാറ്റം നടത്തുന്നതിനുവേണ്ടി ആ താൾ മായ്ക്കേണ്ടതുണ്ടോ?",
+       "delete_and_move_text": "മാറ്റത്തിനു ലക്ഷ്യമായി നൽകിയ \"[[:$1]]\" എന്ന താൾ നിലവിലുണ്ട്. ഈ മാറ്റം നടത്തുന്നതിനുവേണ്ടി ആ താൾ മായ്ക്കേണ്ടതുണ്ടോ?",
        "delete_and_move_confirm": "ശരി, താൾ നീക്കം ചെയ്യുക",
        "delete_and_move_reason": "\"[[$1]]\" എന്നതിൽ നിന്നും മാറ്റാനുള്ള സൗകര്യത്തിനായി മായ്ച്ചു",
        "selfmove": "പഴയ തലക്കെട്ടു തന്നെയാണ് മാറ്റാനായി നൽകിയിരിക്കുന്നത്; അതിനാൽ തലക്കെട്ടുമാറ്റം സാദ്ധ്യമല്ല.",
        "move-leave-redirect": "പിന്നിൽ ഒരു തിരിച്ചുവിടൽ നിലനിർത്തുക",
        "protectedpagemovewarning": "'''മുന്നറിയിപ്പ്:'''  കാര്യനിർവാഹക പദവിയുള്ളവർക്കു മാത്രം മാറ്റാൻ കഴിയുന്ന വിധത്തിൽ ഈ താൾ സംരക്ഷിക്കപ്പെട്ടിരിക്കുന്നു. അവലംബമായി രേഖകളിലെ ഏറ്റവും പുതിയ വിവരം താഴെ നൽകിയിരിക്കുന്നു:",
        "semiprotectedpagemovewarning": "'''കുറിപ്പ്:''' അംഗത്വമെടുത്ത ഉപയോക്താക്കൾക്കു മാത്രം മാറ്റാൻ കഴിയുന്ന വിധത്തിൽ ഈ താൾ സംരക്ഷിക്കപ്പെട്ടിരിക്കുന്നു. അവലംബമായി രേഖകളിലെ ഏറ്റവും പുതിയ വിവരം താഴെ കൊടുത്തിരിക്കുന്നു:",
-       "move-over-sharedrepo": "==പ്രമാണം നിലനിൽക്കുന്നുണ്ട്==\nപങ്ക് ‌‌വെച്ചുപയോഗിക്കുന്ന ശേഖരണിയൊന്നിൽ [[:$1]] നിലനിൽക്കുന്നു. ഈ തലക്കെട്ടിലേയ്ക്ക് ഒരു പ്രമാണത്തെ മാറ്റുന്നത് പങ്ക് വെച്ചുപയോഗിക്കുന്ന പ്രമാണത്തെ അതിലംഘിക്കുന്നതാണ്.",
+       "move-over-sharedrepo": "പങ്ക് ‌‌വെച്ചുപയോഗിക്കുന്ന ശേഖരണിയൊന്നിൽ [[:$1]] നിലനിൽക്കുന്നു. ഈ തലക്കെട്ടിലേയ്ക്ക് ഒരു പ്രമാണത്തെ മാറ്റുന്നത് പങ്ക് വെച്ചുപയോഗിക്കുന്ന പ്രമാണത്തെ അതിലംഘിക്കുന്നതാണ്.",
        "file-exists-sharedrepo": "താങ്കൾ തിരഞ്ഞെടുത്ത പ്രമാണ നാമം പങ്ക് വെയ്ക്കപ്പെട്ടുപയോഗിക്കുന്ന റെപ്പോസിറ്ററിയിൽ ഉപയോഗിക്കുന്നു.\nദയവായി മറ്റൊരു നാമം സ്വീകരിക്കുക.",
        "export": "താളുകൾ കയറ്റുമതി ചെയ്യുക",
        "exporttext": "ഒരു പ്രത്യേക താളിന്റേയോ താളുകളുടെ ഗണത്തിലേയോ എഴുത്തും നാൾവഴിയും എക്സ്.എം.എല്ലിൽ പൊതിഞ്ഞ് താങ്കൾക്ക് കയറ്റുമതി ചെയ്യാവുന്നതാണ്.\nഇത് മീഡിയവിക്കി ഉപയോഗിച്ചുള്ള മറ്റൊരു വിക്കിയിൽ [[Special:Import|ഇറക്കുമതി താൾ]] ഉപയോഗിച്ച് ഇറക്കുമതി ചെയ്യാവുന്നതാണ്.\n\nതാളുകൾ കയറ്റുമതി ചെയ്യാൻ, താഴെ കൊടുത്തിരിക്കുന്ന പെട്ടിയിൽ തലക്കെട്ടുകൾ, ഒരു വരിയിൽ ഒന്നു വീതം നൽകി, എല്ലാ നാൾപ്പതിപ്പും വേണോ അവസാനത്തെ തിരുത്തലിന്റെ വിവരങ്ങൾ ഉൾപ്പെടെയുള്ള ഇപ്പോഴുള്ള പതിപ്പ് മാത്രം മതിയോ എന്ന് തിരഞ്ഞെടുത്ത് നൽകുക.\n\nപിന്നീട് ഇതിനായി താങ്കൾക്ക് ഒരു കണ്ണി, ഉദാഹരണത്തിന് \"[[{{MediaWiki:Mainpage}}]]\" എന്ന താളിന് [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]], ഉപയോഗിക്കാവുന്നതാണ്.",
        "lastmodifiedatby": "$2, $1 നു $3 ആണ്‌ ഈ താൾ അവസാനം പുതുക്കിയത്.",
        "othercontribs": "$1 നടത്തിയ സൃഷ്ടിയെ അധികരിച്ച്.",
        "others": "മറ്റുള്ളവർ",
-       "siteusers": "{{SITENAME}} {{PLURAL:$2|ഉപയോക്താവ്‌|ഉപയോക്താക്കൾ}} $1",
+       "siteusers": "{{SITENAME}} {{PLURAL:$2|{{GENDER:$1|ഉപയോക്താവ്‌}}|ഉപയോക്താക്കൾ}} $1",
        "anonusers": "{{SITENAME}} പദ്ധതിയിലെ അജ്ഞാത {{PLURAL:$2|ഉപയോക്താവ്|ഉപയോക്താക്കൾ}} $1",
        "creditspage": "താളിനുള്ള കടപ്പാട്",
        "nocredits": "ഈ താളിന്റെ കടപ്പാട് വിവരങ്ങൾ ലഭ്യമല്ല.",
        "mw-widgets-titleinput-description-new-page": "താൾ ഇപ്പോൾ നിലവിലില്ല",
        "mw-widgets-titleinput-description-redirect": "$1 എന്ന താളിലേക്കുള്ള തിരിച്ചുവിടൽ",
        "api-error-blacklisted": "ദയവായി മറ്റൊരു വിവരണാത്മകമായ തലക്കെട്ട് തിരഞ്ഞെടുക്കുക.",
+       "sessionmanager-tie": "വ്യത്യസ്ത തരത്തിലുള്ള അനുമതി നൽകൽ തരങ്ങൾ സംയോജിപ്പിക്കാനാവില്ല: $1.",
        "sessionprovider-generic": "$1 സെഷനുകൾ",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "കൂക്കി-അധിഷ്ഠിത സെഷനുകൾ",
        "sessionprovider-nocookies": "കൂക്കികൾ സജ്ജമല്ലായിരിക്കാം. കൂക്കികൾ സജ്ജമാണോയെന്ന് ഉറപ്പാക്കിയ ശേഷം വീണ്ടും തുടങ്ങുക.",
index 4628e81..27d49c6 100644 (file)
@@ -12,7 +12,8 @@
                        "Zorigt",
                        "לערי ריינהארט",
                        "아라",
-                       "Sembuk"
+                       "Sembuk",
+                       "Munkhzaya.E"
                ]
        },
        "tog-underline": "Линкүүдийн доогуур зураас зур:",
        "createaccountreason": "Шалтгаан:",
        "createacct-reason": "Шалтгаан",
        "createacct-reason-ph": "Өөр бүртгэл үүсгэх шалтгаан",
-       "createacct-captcha": "Аюулгүй байдлын хяналт",
-       "createacct-imgcaptcha-ph": "Дээр харагдаж буй бичвэрийг оруулна уу",
        "createacct-submit": "Бүртгүүлэх",
        "createacct-another-submit": "Өөр нэгэн хэрэглэгч бүртгэх",
        "createacct-benefit-heading": "{{SITENAME}}-г тан шиг хүмүүс хийж байна.",
        "passwordreset-emailtext-ip": "Хэн нэгэн ($1 гэсэн IP хаягаас) {{SITENAME}} ($4) дээр таны бүртгэлийн сануулга авахаар хүссэн байна. Дараах {{PLURAL:$3|бүртгэл|бүртгэл}}\nуг е-шуудантай холбоотой:\n\n$2\n\n{{PLURAL:$3|Уг түр хэрэглэх нууц үг|Уг түр хэрэглэх нууц үгүүд}} нь {{PLURAL:$5|нэг өдрийн|$5 өдрийн}} дотор устах болно.\nТа уг нууц үгээр нэвтэрч, түүнийг шинэчлэх хэрэгтэй. Хэрэв өөр нэгэн уг хүсэлтийг явуулсан бол \nэсвэл өөрийн ориг нууц үгээ санаж байгаад түүнийгээ өөрчлөхийг хүсэхгүй байгаа бол энэ захиаг үл ойшоож \nэнгийнээр нэвтэрч болно.",
        "passwordreset-emailtext-user": "{{SITENAME}} дээрх $1 хэрэглэгч {{SITENAME}} ($4) дээр өөрийн тань бүртгэл дээр сануулга хүссэн байна. \nДараах {{PLURAL:$3|бүртгэл|бүртгэлүүд}} уг е-шуудантай холбоотой байна:\n\n$2\n\nЭнэ {{PLURAL:$3|түр нууц үг|түр нууц үгс}} {{PLURAL:$5|нэг өдрийн дараа|$5 өдрийн дараа}} устах болно.\nТүүгээр нэвтэрч ороод нууц үгээ шинэчилнэ үү. Энэ сануулгыг өөр хэн нэгэн хийсэн, эсвэл та\nнууц үгээ санаж байгаа бол энэ захиаг анхааралгүйгээр хуучнаараа ороход болно.",
        "passwordreset-emailelement": "Хэрэглэгчийн нэр: \n$1\n\nТүр зуурын нууц үг: \n$2",
-       "passwordreset-emailsent": "Нууц үг солин емайл илгээсэн.",
+       "passwordreset-emailsentemail": "Нууц үг солин емайл илгээсэн.",
        "passwordreset-emailsent-capture": "Доор харагдаж байгаа нь танируу илгээсэн нууц үг ресет хийх емайл.",
        "passwordreset-emailerror-capture": "Доор харагдаж байгаа нууц үг ресет хийх емайл үүссэх боловч {{GENDER:$2|хэрэглэгчид}} илгээхэд алдаа гарлаа : $1",
        "changeemail": "Цахим шуудангийн хаяг солих",
-       "changeemail-text": "Энэ маягтийг бөглөж цахим шуудангийн хаягаа солино уу. Өөрчлөлт хийхийн тулд нууц үгээ оруулна уу.",
+       "changeemail-header": "Цахим шуудангийн бүртгэлийн хаяг солих",
        "changeemail-no-info": "Энэ хуудсыг үзэхэд хэрэглэгчийн нэрээр орсон байх шаардлагатай.",
        "changeemail-oldemail": "Одоогийн цахим шуудан:",
        "changeemail-newemail": "Шинэ цахим шуудангийн хаяг:",
        "prefs-diffs": "Ялгаанууд",
        "prefs-help-prefershttps": "Гараад орох уг тохиргоо идэвхижнэ.",
        "prefs-tabs-navigation-hint": "Зөвлөмж: Баруун зүүн сумаар таб хооронд шилжиж болно.",
-       "email-address-validity-valid": "Цахим шуудан хүчинтэй байна",
-       "email-address-validity-invalid": "и-майл хаягаа зөв оруулна уу.",
        "userrights": "Хэрэглэгчдийн эрхийн удирдлага",
        "userrights-lookup-user": "Хэрэглэгчдийн бүлгүүдийг удирдах",
        "userrights-user-editname": "Хэрэглэгчийн нэрээ оруулна уу:",
        "right-blockemail": "Хэрэглэгчийг мэйл явуулахаас түгжих",
        "right-hideuser": "Хэрэглэгчийн нэрийг түгжиж нийтээс нуух",
        "right-ipblock-exempt": "IP-н түгжээ, автомат түгжээ, бүсийн түгжээг тойрч гарах",
-       "right-proxyunbannable": "Проксинуудын автомат түгжээг тойрч гарах",
        "right-unblockself": "Өөрт хийсэн түгжээг тайлах",
        "right-protect": "Хамгаалалтын түвшингүүдийг өөрчилж хамгаалагдсан хуудсуудыг засварлах",
        "right-editprotected": "Хамгаалагдсан хуудсуудыг \"{{int:protect-level-sysop}}\" хэлбэрээр засварлах",
        "filewasdeleted": "Өмнө нь ийм нэртэй файл оруулагдсан бөгөөд дараа нь устгагдсан байна.\nТа үүнийг дахин оруулахын өмнө $1-г шалгаж үзнэ үү.",
        "filename-bad-prefix": "Таны оруулж байгаа файлын нэр '''\"$1\"'''-р эхэлж байна. Энэ нь файлыг тодорхойлойлоогүй, голдуу дижитал аппаратын автоматаар гаргадаг нэр болно.\nФайланд түүнийг илүү сайн тодорхойлсон нэр өгнө үү.",
        "filename-prefix-blacklist": " #<!-- leave this line exactly as it is --> <pre>\n# Syntax is as follows:\n#   * Everything from a \"#\" character to the end of the line is a comment\n#   * Every non-blank line is a prefix for typical filenames assigned automatically by digital cameras\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # зарим гар утаснууд\nIMG # ерөнхий\nJD # Jenoptik\nMGP # Pentax\nPICT # бусад.\n #</pre> <!-- leave this line exactly as it is -->",
-       "upload-success-subj": "Файлыг амжилттай орууллаа",
-       "upload-success-msg": "[$2]-с амжилттай оруулав. Энд байна: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Оруулах үеийн асуудал",
-       "upload-failure-msg": "[$2]-с оруулахад асуудал үүсчээ:\n\n$1",
-       "upload-warning-subj": "Оруулах үеийн анхааруулга",
-       "upload-warning-msg": "[$2]-с хийсэн оруулалтад асуудал үүсэв. [[Special:Upload/stash/$1|Оруулах талбар]] руу буцаж энэ асуудлыг шийдвэрлэж болно.",
        "upload-proto-error": "Буруу протокол",
        "upload-proto-error-text": "Файл оруулахад хэрэгтэй URL-үүд нь <code>http://</code> эсвэл <code>ftp://</code>-р эхлэсэн байх шаардлагатай.",
        "upload-file-error": "Дотоод алдаа",
        "movenosubpage": "Энэ хуудас нь дэд хуудасгүй.",
        "movereason": "Шалтгаан:",
        "revertmove": "хуучин төлөвт шилжүүлэх",
-       "delete_and_move": "Устгаад зөөх",
        "delete_and_move_text": "==Устгалын шаардав==\nЗорьсон хуудас \"[[:$1]]\"-г нь урьд нь оруулсан байна.\nТа зөөхөд зай гаргахын тулд устгах уу?",
        "delete_and_move_confirm": "Тийм, хуудсыг устга",
        "delete_and_move_reason": "[[$1]] -с зөөхөд зай гаргахын тулд устгагдсан",
        "newimages-summary": "Энэ тусгай хуудсанд хамгийн сүүлд оруулагдсан файлуудыг үзүүлнэ.",
        "newimages-legend": "Шүүлтүүр",
        "newimages-label": "Файлын нэр (эсвэл түүний нэг хэсэг):",
+       "newimages-hidepatrolled": "Шалгасан файлуудыг нуух",
        "noimages": "Харах юмгүй.",
        "ilsubmit": "Хайлт",
        "bydate": "Огноогоор",
        "duration-millennia": "$1 {{PLURAL:$1|мянган|мянган}}",
        "expand_templates_input": "Оруулах бичиг:",
        "expand_templates_output": "Үр дүн",
-       "expand_templates_remove_comments": "Товч агуулгыг авч хаях"
+       "expand_templates_remove_comments": "Товч агуулгыг авч хаях",
+       "pagelanguage": "Хуудасны хэлийг өөрчлөх",
+       "log-name-pagelang": "Хэлний өөрчлөлтийн лог"
 }
index bdc2e67..0a57052 100644 (file)
        "right-blockemail": "Menyekat pengguna lain daripada mengirim e-mel",
        "right-hideuser": "Menyekat sesebuah nama pengguna, menyembunyikannya daripada orang ramai",
        "right-ipblock-exempt": "Melangkau sekatan IP, sekatan automatik dan sekatan julat",
-       "right-proxyunbannable": "Melangkau sekatan proksi automatik",
        "right-unblockself": "Menyahsekat diri sendiri",
        "right-protect": "Mengubah tahap perlindungan serta menyunting halaman yang dilindungi lata",
        "right-editprotected": "Menyunting halaman-halaman yang dilindungi sebagai \"{{int:protect-level-sysop}}\"",
        "uploaded-script-svg": "Terdapat elemen terskrip \"$1\" dalam fail SVG yang dimuat naik.",
        "uploaded-hostile-svg": "Terdapat CSS yang tidak selamat dalam elemen stail fail SVG yang dimuat naik.",
        "uploaded-event-handler-on-svg": "Penetapan atribut <i>event-handler</i> <code>$1=\"$2\"</code> tidak dibenarkan dalam fail SVG.",
-       "uploaded-href-attribute-svg": "Atribut href <code>&lt;$1 $2=\"$3\"&gt;</code> dengan sasaran bukan setempat (cth. http://, javascript:, dsb) tidak dibenarkan dalam fail SVG.",
        "uploaded-href-unsafe-target-svg": "Terdapat href ke sasaran tak selamat <code>&lt;$1 $2=\"$3\"&gt;</code> dalam fail SVG yang dimuat naik.",
        "uploaded-animate-svg": "Terdapat teg \"animate\" yang mungkin sedang mengubah href, menggunakan atribut \"from\" <code>&lt;$1 $2=\"$3\"&gt;</code> dalam fail SVG yang dimuat naik.",
        "uploaded-setting-event-handler-svg": "Dilarang menetapkan atribut <i>event-handler</i>, terdapat <code>&lt;$1 $2=\"$3\"&gt;</code> dalam fail SVG yang dimuat naik.",
        "filename-thumb-name": "Nampaknya macam tajuk gambar kenit (thumbnail). Tolong jangan muat naik gambar kenit balik ke dalam wiki yang sama. Selain itu, sila betulkan nama fail supaya ia nampak lebih bererti dan tiada awalan gambar kenit.",
        "filename-bad-prefix": "Nama bagi fail yang dimuat naik bermula dengan '''\"$1\"''', yang mana merupakan nama yang tidak deskriptif yang biasanya ditetapkan oleh kamera digital secara automatik. Sila berikan nama yang lebih deskriptif bagi fail tersebut.",
        "filename-prefix-blacklist": " #<!-- biarkan baris ini seperti sediakala --> <pre>\n# Sintaks adalah seperti berikut:\n#   * Segalanya mulai aksara \"#\" hingga akhir baris ialah komen\n#   * Setiap baris bukan kosong ialah awalan bagi nama-nama fail biasa yang ditetapkan secara automatik oleh kamera digital\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # sesetengah telefon bimbit\nIMG # generik\nJD # Jenoptik\nMGP # Pentax\nPICT # dll.\n #</pre> <!-- biarkan baris ini seperti sediakala -->",
-       "upload-success-subj": "Muat naik berjaya",
-       "upload-success-msg": "Muat naik anda dari [$2] berjaya. Ia ada di sini: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Masalah muat naik",
-       "upload-failure-msg": "Terdapat masalah dengan muat naik anda daripada [$2]:\n\n$1",
-       "upload-warning-subj": "Amaran muat naik",
-       "upload-warning-msg": "Terdapat masalah dengan muat naik anda daripada [$2]. Anda boleh kembali ke [[Special:Upload/stash/$1|borang muat naik]] untuk mengatasi masalah ini.",
        "upload-proto-error": "Protokol salah",
        "upload-proto-error-text": "Muat naik jauh memerlukan URL yang dimulakan dengan <code>http://</code> atau <code>ftp://</code>.",
        "upload-file-error": "Ralat dalaman",
        "wlheader-showupdated": "Laman-laman yang telah diubah sejak kunjungan terakhir anda dipaparkan dalam '''teks tebal'''.",
        "wlnote": "Yang berikut ialah <strong>$1</strong> perubahan terakhir sejak $2 jam yang lalu, sehingga $3, $4.",
        "wlshowlast": "Tunjukkan $2 hari $1 jam yang lalu",
-       "watchlistall2": "semua",
        "watchlist-hide": "Sorok",
        "wlshowtime": "Tempoh masa untuk dipaparkan:",
        "wlshowhideminor": "suntingan kecil",
        "mw-widgets-dateinput-no-date": "Tarik belum dipilih",
        "mw-widgets-titleinput-description-new-page": "laman belum wujud",
        "mw-widgets-titleinput-description-redirect": "melencong ke $1",
-       "api-error-blacklisted": "Sila pilih tajuk yang berbeza dan deskriptif."
+       "api-error-blacklisted": "Sila pilih tajuk yang berbeza dan deskriptif.",
+       "randomrootpage": "Laman akar rawak"
 }
index b03830e..ba28a76 100644 (file)
        "edit-conflict": "အငြင်းပွားမှုကို တည်းဖြတ်ရန်။",
        "edit-no-change": "စာသားကို အပြောင်းအလဲ မလုပ်ခဲ့သောကြောင့် တည်းဖြတ်မှုကို လျစ်လျူရှုလိုက်သည်။",
        "edit-already-exists": "စာမျက်နှာအသစ်တစ်ခု မဖန်တီးနိုင်ပါ။\nယင်းစာမျက်နှာ တည်ရှိပြီး ဖြစ်သည်။",
+       "duplicate-args-category": "တမ်းပလိတ်တွင်းရှိ arguments ထပ်နေသော စာမျက်နှာများ",
        "post-expand-template-inclusion-warning": "'''သတိပေးချက် -''' တမ်းပလိတ်အရွယ်အစား ကြီးလွန်းနေသည်။\nအချို့တမ်းပလိတ်တို့ ပါဝင်မည်မဟုတ်။",
        "post-expand-template-inclusion-category": "ထည့်သွင်းနိုင်သော တမ်းပလိတ်အရွယ်အစားပြည့်သွားပြီဖြစ်သော စာမျက်နှာများ",
        "post-expand-template-argument-warning": "'''သတိပေးချက် -''' ဤစာမျက်နှာတွင် ပမာဏအားဖြင့် ကြီးမားကျယ်ပြန့်သော template argument တစ်ခုပါဝင်သည်။\nယင်း arguments များကို ဖယ်ထုတ်လိုက်သည်။",
        "upload-description": "ဖိုင်ဖော်ပြချက်",
        "upload-options": "Upload တင်သည့် ရွေးချယ်မှုများ",
        "watchthisupload": "ဤဖိုင်အား စောင့်ကြည့်ရန်",
-       "upload-success-subj": "အောင်မြင်စွာ ့စူသေိ တင်လိုက်သည်",
-       "upload-failure-subj": "Upload တင်ရာတွင် တွေ့သည့် ပြဿနာ",
-       "upload-warning-subj": "Upload တင်ရာတွင် သတ်ပေးချက်",
        "upload-misc-error": "upload တင်ရာတွင် အမည်မသိ အမှား",
        "img-auth-accessdenied": "ဝင်ရောက်ခြင်းကို ငြင်းပယ်လိုက်သည်",
        "img-auth-nofile": "\"$1\" ဟူသည့်ဖိုင် မရှိပါ။",
        "allinnamespace": "စာမျက်နှာအားလုံး (အမည်ညွှန်း $1)",
        "allpagessubmit": "သွား​ပါ​",
        "allpages-hide-redirects": "ပြန်ညွှန်းများအား ဝှက်ရန်",
-       "categories": "á\80¡á\80\99á\80»á\80­á\80¯á\80¸á\80¡á\80\85á\80¬á\80¸များ",
+       "categories": "á\80\80á\80\8fá\80¹á\80\8dများ",
        "categories-submit": "ပြသရန်",
        "categoriesfrom": "ဤမှစသော အမျိုးအစားများကို ပြရန် -",
        "special-categories-sort-count": "အနည်းအများအလိုက်စီရန်",
        "watchlist-details": "{{PLURAL:$1|စာမျက်နှာ $1 ခု|စာမျက်နှာ $1 ခု}} သည် သင့်စောင့်ကြည့်စာရင်းတွင် ရှိပြီး ဆွေးနွေးချက်စာမျက်နှာများကို ထည့်တွက် မထားပါ။",
        "wlheader-showupdated": "သင် နောက်ဆုံးကြည့်ရှုခဲ့ပြီးနောက် ပြောင်းလဲမှုရှိခဲ့သော စာမျက်နှာများကို <strong>စာလုံးမဲ</strong> ဖြင့် ပြသထားသည်",
        "wlshowlast": "နောက်ဆုံး $1 နာရီ $2 ရက်  ကိုပြရန်",
-       "watchlistall2": "အားလုံး",
        "watchlist-hide": "ဝှက်",
        "watchlist-submit": "ပြသရန်",
        "wlshowhideminor": "အရေးမကြီးသော ပြင်ဆင်မှုများ",
index db2a66f..d484e60 100644 (file)
        "uploaded-script-svg": "Truvato n'elemento pe script \"$1\" int' 'o file SVG carrecato.",
        "uploaded-hostile-svg": "Truvato nu CSS insecuro int'a l'elemente 'e stile d' 'o file SVG carrecate.",
        "uploaded-event-handler-on-svg": "Mpustà 'e parametre 'e gistore-evente <code>$1=\"$2\"</code> nun è premmesso dint' 'e file SVG.",
-       "uploaded-href-attribute-svg": "Ll'attribbute href <code>&lt;$1 $2=\"$3\"&gt;</code> cu target non-local (e.g. http://, javascript:, ecc) nun so' premmesse int' 'e file SVG.",
        "uploaded-href-unsafe-target-svg": "S'è truvato nu href a nu target ca nun era sicuro <code>&lt;$1 $2=\"$3\"&gt;</code> dint' 'o file SVG carrecato.",
        "uploaded-animate-svg": "Truvato 'o tag \"animate\" ca putesse stà a cagnà href, ausanno l'attribbuto \"from\" <code>&lt;$1 $2=\"$3\"&gt;</code> int' 'o file carrecato SVG.",
        "uploaded-setting-event-handler-svg": "Mpustà n'attributo event-handler è bluccato, truvato <code>&lt;$1 $2=\"$3\"&gt;</code> int' 'o fie carrecato SVG.",
        "filewasdeleted": "Nu file ca se chiamave cumm'a chillo c'avete primma carrecato e pò è stato scancellato.\nVedite 'e cuntrullà 'o $1 apprimma ca cuntinuate c' 'a carreca.",
        "filename-thumb-name": "Chesto pare nu titolo 'e miniatura. Pe' piacere nun carrecate miniature 'a stessa wiki. 'E n'atu modo, cagnate pe' piacere 'o nomme d' 'o file, facenno chesto cchiù significativo e senza prefisso 'e miniatura.",
        "filename-bad-prefix": "'O nomme d' 'o file ca state a carrecà accummencia pe' ''\"$1\"''', ca nurmalmente è 'o nomme c'assegnasse na machina fotografeca automatecamente ed è nu nomme nun descrittivo.\nPe' piacere scigliete n'atu nomme ca fosse cchiù descrittivo.",
-       "upload-success-subj": "Carreca ngarrata",
-       "upload-success-msg": "'A carreca tuja d' 'o [$2] è asciuta bona. Mò è a disposizione ccà: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Probblema c' 'a carreca",
-       "upload-failure-msg": "Ce steva nu probblema c' 'a carreca 'a [$2]:\n\n$1",
-       "upload-warning-subj": "Avviso 'e carreca",
-       "upload-warning-msg": "Ce steva nu probblema c' 'a carreca 'a [$2]. Putite turnà arreto a 'o [[Special:Upload/stash/$1|module 'e carreche]] pe pruvà d'aggiustà stu prubblema.",
        "upload-proto-error": "Prutucollo sbagliato",
        "upload-proto-error-text": "'E carreche remote hann'abbesuogno 'e l'URL c'accummencieno c' 'a parola <code>http://</code> o <code>ftp://</code>.",
        "upload-file-error": "Errore 'nterno",
        "wlheader-showupdated": "* 'E paggene cca so' state cagnate a l'urdema visita avevano so' nzignate ccà 'n '''grassetto'''.",
        "wlnote": "Ccà abbascio {{PLURAL:$1|è elencato 'o cagnamiento cchiù ricente|songo elencate 'e <strong>$1</strong> cagnamiente cchiù recente}} {{PLURAL:$2|int'a ll'urdema ora|int' 'e ll'urdeme <strong>$2</strong> ore}}; 'e date songo agghiurnate 'o $3, $4.",
        "wlshowlast": "Mmusta ll'urdeme $1 ore $2 ghiuorne",
-       "watchlistall2": "tuttuquante",
        "watchlist-hide": "Annascunne",
        "watchlist-submit": "Faje vedé",
        "wlshowtime": "Periodo 'e tiempo a mmustà:",
index 6826c54..86971d1 100644 (file)
        "october-date": "$1. oktober",
        "november-date": "$1. november",
        "december-date": "$1. desember",
+       "period-am": "AM",
+       "period-pm": "PM",
        "pagecategories": "{{PLURAL:$1|Kategori|Kategorier}}",
        "category_header": "Sider i kategorien «$1»",
        "subcategories": "Underkategorier",
        "databaseerror-query": "Spørring: $1",
        "databaseerror-function": "Funksjon: $1",
        "databaseerror-error": "Feil: $1",
+       "transaction-duration-limit-exceeded": "For å unngå høye replikeringsforsinkelser ble denne transaksjonen avsluttet på grunn av at tiden det tok å lagre ($1) oversteg maksimumsgrensen på $2 {{PLURAL:$2|sekund|sekunder}}.\nHvis du endrer på mange ting på en gang, prøv å dele dette opp i mindre operasjoner.",
        "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",
        "resetpass_submit": "Angi passord og logg inn",
        "changepassword-success": "Passordet ditt ble korrekt endret!",
        "changepassword-throttled": "Du har foretatt for mange nylige innloggingsforsøk.\nVær vennlig å vente $1 før du prøver igjen.",
+       "botpasswords": "Robotpassord",
+       "botpasswords-summary": "<em>Robotpassord</em> gir tilgang til en brukerkonto via API uten å bruke hovedpassordet til kontoen. Brukerrettighetene kan bli begrenset ved bruk av dette passordet.\n\nHvis du ikke vet om du vil benytte dette, er det sannsynlig at du ikke bør fylle det ut. Det skal ikke være nødvendig for andre personer å be deg om å fylle ut dette for å gi det til de.",
+       "botpasswords-disabled": "Robotpassord er deaktivert.",
+       "botpasswords-no-central-id": "For å bruke robotpassord må du være logget inn med en sentralisert konto.",
+       "botpasswords-existing": "Eksisterende robotpassord",
+       "botpasswords-createnew": "Opprett et nytt robotpassord",
+       "botpasswords-editexisting": "Redigere et eksisterende robotpassord",
+       "botpasswords-label-appid": "Robotnavn:",
+       "botpasswords-label-create": "Opprett",
+       "botpasswords-label-update": "Oppdater",
+       "botpasswords-label-cancel": "Avbryt",
+       "botpasswords-label-delete": "Slett",
+       "botpasswords-label-resetpassword": "Tilbakestill passord",
+       "botpasswords-label-grants": "Tilgjengelige tildelinger:",
+       "botpasswords-help-grants": "Hver tildeling gir tilgang til opplistede brukerrettigheter som brukerkontoen allerede har. Se [[Special:ListGrants|tildelingstabellen]] for mer informasjon.",
+       "botpasswords-label-restrictions": "Bruksbegrensninger:",
+       "botpasswords-label-grants-column": "Bevilget",
+       "botpasswords-bad-appid": "Robotnavnet \"$1\" er ikke gyldig.",
+       "botpasswords-insert-failed": "Kunne ikke legge til robotnavnet \"$1\". Har det allerede blitt lagt til?",
+       "botpasswords-update-failed": "Kunne ikke oppdatere robotnavnet \"$1\". Er det slettet?",
+       "botpasswords-created-title": "Robotpassord opprettet",
+       "botpasswords-created-body": "Robotpassordet \"$1\" ble opprettet.",
+       "botpasswords-updated-title": "Robotpassord oppdatert",
+       "botpasswords-updated-body": "Robotpassordet \"$1\" ble oppdatert.",
+       "botpasswords-deleted-title": "Robotpassord slettet",
+       "botpasswords-deleted-body": "Robotpassordet \"$1\" ble slettet.",
+       "botpasswords-newpassword": "Det nye passordet for å logge inn med <strong>$1</strong> er <strong>$2</strong>. <em>Vennligst lagre dette for fremtidig referanse.</em>",
+       "botpasswords-no-provider": "BotPasswordsSessionProvider er ikke tilgjengelig.",
+       "botpasswords-restriction-failed": "Begrensninger for robotpassord tillater ikke denne innloggingen.",
+       "botpasswords-invalid-name": "Det angitte brukernavnet inneholder ikke separasjonstegnet for robotpassord (\"$1\").",
+       "botpasswords-not-exist": "Brukeren \"$1\" har ikke noe robotpassord for \"$2\".",
        "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",
        "passwordreset-emailtext-user": "Brukeren $1 på {{SITENAME}} ba om en tilbakestilling av passordet ditt for {{SITENAME}}\n($4). {{PLURAL:$3|Den følgende brukerkontoen|De følgende brukerkontoene}} er tilknyttet denne e-postadressen:\n\n$2\n\n{{PLURAL:$3|Dette midlertidige passordet|Disse midlertidige passordene}} utløper om {{én dag|$5 dager}}.\nDu bør logge på og velge et nytt passord nå. Dersom noen andre kom med denne\nforespørselen, eller du har kommet på ditt opprinnelige passord, og ikke lenger\nønsker å endre det, kan du ignorere denne meldingen og fortsette å bruke ditt gamle\npassord.",
        "passwordreset-emailelement": "Brukernavn: \n$1\n\nMidlertidig passord: \n$2",
        "passwordreset-emailsentemail": "Hvis dette er en registrert epostadresse for din konto, vil det bli sendt ut en passordtilbakestillingsepost.",
+       "passwordreset-emailsentusername": "Hvis det finnes en epostadresse knyttet til dette brukernavnet, vil en epost med informasjon om tilbakestilling av passord bli sendt.",
        "passwordreset-emailsent-capture": "Passordtilbakestillingseposten vist under har blitt sendt ut.",
        "passwordreset-emailerror-capture": "En passordtilbakestillingsepost ble laget, men det lyktes ikke å sende denne til {{GENDER:$2|brukeren}}: $1",
        "changeemail": "Endre eller fjerne epostadresse",
        "userrights": "Brukerrettighetskontroll",
        "userrights-lookup-user": "Ordne brukergrupper",
        "userrights-user-editname": "Fyll inn et brukernavn:",
-       "editusergroup": "Endre brukergrupper",
+       "editusergroup": "Endre {{GENDER:$1|brukergrupper}}",
        "editinguser": "Endrer brukerrettighetene for {{GENDER:$1|bruker}} <strong>[[User:$1|$1]]</strong> $2",
        "userrights-editusergroup": "Rediger brukergrupper",
-       "saveusergroups": "Lagre brukergrupper",
+       "saveusergroups": "Lagre {{GENDER:$1|brukergrupper}}",
        "userrights-groupsmember": "Medlem av:",
        "userrights-groupsmember-auto": "Implisitt medlem av:",
        "userrights-groups-help": "Du kan endre hvilke grupper denne brukeren er medlem av.\n* En avkrysset boks betyr at brukeren er medlem av gruppen.\n* En uavkrysset boks betyr at brukeren ikke er medlem av gruppen.\n* En * betyr at du ikke kan fjerne gruppemedlemskapet når du har lagt det til, eller vice versa.",
        "right-createpage": "Opprette sider (som ikke er diskusjonssider)",
        "right-createtalk": "Opprette diskusjonssider",
        "right-createaccount": "Opprette nye kontoer",
+       "right-autocreateaccount": "Logg inn automatisk med en ekstern brukerkonto",
        "right-minoredit": "Markere endringer som mindre",
        "right-move": "Flytte sider",
        "right-move-subpages": "Flytte sider med undersider",
        "filename-thumb-name": "Dette ser ut som tittelen til et miniatyrbilde (thumbnail). Miniatyrbilder skal ikke lastes opp igjen til den samme wikien. Hvis det ikke er et miniatyrbilde må du endre filnavnet til noe mer meningsfullt og fjerne miniatyrbilde-prefikset.",
        "filename-bad-prefix": "Navnet på filen du laster opp begynner med '''«$1»''', hvilket er et ikke-beskrivende navn som vanligvis brukes automatisk av digitalkameraer. Vennligst bruk et mer beskrivende navn på filen.",
        "filename-prefix-blacklist": " #<!-- leave this line exactly as it is --> <pre>\n# Syntaksen er som følger:\n#   * Alt fra tegnet «#» til slutten av linja er en kommentar\n#   * Alle linjer som ikke er blanke er et prefiks som vanligvis brukes automatisk av digitale kameraer\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # noen mobiltelefontyper\nIMG # generisk\nJD # Jenoptik\nMGP # Pentax\nPICT # div.\n #</pre> <!-- leave this line exactly as it is -->",
-       "upload-success-subj": "Opplastingen er gjennomført",
-       "upload-success-msg": "Din opplasting fra [$2] var vellykket. Den er tilgjengelig her: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Opplastingsproblem",
-       "upload-failure-msg": "Det oppsto et problem med opplastingen din fra [$2]:\n\n$1",
-       "upload-warning-subj": "Opplastingsadvarsel",
-       "upload-warning-msg": "Det oppsto et problem med opplastingen din fra [$2]. Du kan gå tilbake til [[Special:Upload/stash/$1|opplastingsskjemaet]] for å løse dette problemet.",
        "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",
        "wlheader-showupdated": "Sider som har blitt endret siden du besøkte dem sist vises med '''fet skrift'''.",
        "wlnote": "Nedenfor er {{PLURAL:$1|den siste endringen|de siste <strong>$1</strong> endringene}} {{PLURAL:$2|den siste timen|de siste <strong>$2</strong> timene}}, per $3 kl. $4",
        "wlshowlast": "Vis siste $1 timer $2 dager",
-       "watchlistall2": "alle",
        "watchlist-hide": "Skjul",
        "watchlist-submit": "Vis",
        "wlshowtime": "Tidsperiode som skal vises:",
index eb98058..fc37e41 100644 (file)
        "watchthisupload": "यो पृष्ठ निगरानी गर्नुहोस्",
        "filewasdeleted": "यस नामको एक फाइल पहिले पनि अपलोड गरे पछि हटाई सकिएको छ।\nपुनः अपलोड गर्नु पूर्व तपाईं $1 लाई राम्रोसँग जाँच गर्नुहोला।",
        "filename-bad-prefix": "तपाईं जुन फाइल अपलोड गर्दै हुनुहुन्छ त्यसको नाम <strong>\"$1\"</strong>बाट शुरू हुन्छ, जुन डिजिटल क्यामराद्वारा दिइएको नाम हो।\nकृपया यस फाइलको लागि कुनै दोश्रो अधिक जानकारीयुक्त नाम छान्नुहोस्।",
-       "upload-success-subj": "उर्ध्वभरण सफल",
-       "upload-success-msg": "[$2]बाट त्पाईंको उर्ध्वभरण सफल भयो। त्यो यहाँ पाउन सकिनेछ: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "उर्ध्वभरण समस्या",
-       "upload-failure-msg": "तपाईंको उर्ध्वभरण [$2]बाट समस्या आएकोछ:\n\n$1",
-       "upload-warning-subj": "उर्ध्वभरण चेतावनी",
-       "upload-warning-msg": "तपाईंको [$2] अपलोड सँग एक समस्या थियो। तपाईं यस समस्यालाई ठिक गर्नका लागि [[Special:Upload/stash/$1|अपलोड फ़र्म]]मा फर्किन सक्नुहुन्छ।",
        "upload-proto-error": "दूषित प्रोटोकल",
        "upload-proto-error-text": "दुर उर्ध्वभरण ठेगाना URLs  <code>http://</code> or <code>ftp://</code> बाट सुरु भएको हुनु पर्छ ।",
        "upload-file-error": "आन्तरिक त्रुटि",
        "log-title-wildcard": "पाठबाट सुरुहुने शीर्षकहरु खोज्नुहोस्",
        "showhideselectedlogentries": "चयन गरिएका लग प्रविष्टिहरूको दृश्यता परिवर्तन गर्ने",
        "log-edit-tags": "चयन गरिएको लग प्रविष्टिहरूको ट्यागहरू सम्पादन",
+       "checkbox-select": "छनौट:$1",
+       "checkbox-all": "सबै",
+       "checkbox-none": "कोहीपनि हैन",
+       "checkbox-invert": "ठाडो",
        "allpages": "सबै पृष्ठहरू",
        "nextpage": "अर्को पृष्ठ ($1)",
        "prevpage": "पहिलो पृष्ठ ($1)",
        "wlheader-showupdated": "तपाईँले पछिल्लो पल्ट भ्रमण गरेपछि परिवर्तन भएका पृष्ठहरूलाई <strong>गाढा<strong> गरेर देखाइएको छ ।",
        "wlnote": "$3 र $4 अनुसार विगत {{PLURAL:$2|घण्टामा|'''$2''' घण्टाहरूमा}} {{PLURAL:$1|गरिएको अन्तिम परिवर्तन तल दिइएकोछ|गरिएका अन्तिम  '''$1''' परिवर्तनहरू तल दिइएका छन्}}।",
        "wlshowlast": "पछिल्ला $2 दिनहरू $1 घण्टाहरू देखाउनुहोस्",
-       "watchlistall2": "सबै",
        "watchlist-hide": "लुकाउनुहोस्",
        "watchlist-submit": "देखाउनुहोस्",
        "wlshowhideminor": "सामान्य सम्पादनहरू",
index b658c69..87d1d9c 100644 (file)
@@ -72,7 +72,8 @@
                        "M!dgard",
                        "Matma Rex",
                        "Robin van der Vliet",
-                       "Catrope"
+                       "Catrope",
+                       "Edoderoo"
                ]
        },
        "tog-underline": "Koppelingen onderstrepen:",
        "tog-enotifrevealaddr": "Mijn e-mailadres weergeven in e-mailberichten",
        "tog-shownumberswatching": "Het aantal gebruikers weergeven dat deze pagina volgt",
        "tog-oldsig": "Bestaande ondertekening:",
-       "tog-fancysig": "Als wikitekst behandelen (zonder automatische koppeling)",
+       "tog-fancysig": "Handtekening als wikitekst behandelen (zonder automatische koppeling)",
        "tog-uselivepreview": "Livevoorvertoning gebruiken",
        "tog-forceeditsummary": "Een melding geven bij een lege bewerkingssamenvatting",
        "tog-watchlisthideown": "Eigen bewerkingen op mijn volglijst verbergen",
        "databaseerror-query": "Zoekopdracht: $1",
        "databaseerror-function": "Functie: $1",
        "databaseerror-error": "Fout: $1",
+       "transaction-duration-limit-exceeded": "Deze transactie ($1) is afgebroken omdat de limiet van $2 {{PLURAL:$2|seconde|seconden}} is bereikt. Hiermee worden grote achterstanden bij het repliceren voorkomen. \nWanneer u meerdere items tegelijk bewerkt, probeer het dan in meerdere kleinere opdrachten te doen.",
        "laggedslavemode": "<strong>Waarschuwing:</strong> in deze pagina zijn recente wijzigingen mogelijk nog niet verwerkt.",
        "readonly": "Database geblokkeerd",
        "enterlockreason": "Geef een reden op voor de blokkade en geef op wanneer die waarschijnlijk wordt opgeheven",
        "missingarticle-rev": "(versienummer: $1)",
        "missingarticle-diff": "(Wijziging: $1, $2)",
        "readonly_lag": "De database is automatisch vergrendeld terwijl de ondergeschikte databaseservers synchroniseren met de hoofdserver.",
+       "nonwrite-api-promise-error": "De HTTP-header 'Promise-Non-Write-API-Action' was meegestuurd, maar het verzoek behelsde een API-schrijfverzoek.",
        "internalerror": "Interne fout",
        "internalerror_info": "Interne fout: $1",
        "internalerror-fatal-exception": "Fatale fout van type \"$1\"",
        "virus-scanfailed": "scannen is mislukt (code $1)",
        "virus-unknownscanner": "onbekend antivirusprogramma:",
        "logouttext": "<strong>U bent nu afgemeld.</strong>\n\nSommige pagina's kunnen blijven weergegeven alsof u nog aangemeld bent, totdat u uw browsercache leegt.",
-       "cannotlogoutnow-title": "Niet mogelijk om nu uit te loggen",
-       "cannotlogoutnow-text": "Uitloggen is niet mogelijk bij het gebruik van $1.",
+       "cannotlogoutnow-title": "Niet mogelijk om nu af te melden",
+       "cannotlogoutnow-text": "Afmelden is niet mogelijk bij het gebruik van $1.",
        "welcomeuser": "Welkom, $1!",
        "welcomecreation-msg": "Uw account is aangemaakt.\nIndien gewenst kunt u uw [[Special:Preferences|voorkeuren]] voor {{SITENAME}} aanpassen.",
        "yourname": "Gebruikersnaam:",
        "remembermypassword": "Aanmeldgegevens onthouden (maximaal $1 {{PLURAL:$1|dag|dagen}})",
        "userlogin-remembermypassword": "Aangemeld blijven",
        "userlogin-signwithsecure": "Beveiligde verbinding gebruiken",
-       "cannotloginnow-title": "Niet mogelijk om nu in te loggen",
-       "cannotloginnow-text": "Inloggen is niet mogelijk bij het gebruik van $1.",
+       "cannotloginnow-title": "Niet mogelijk om aan te melden",
+       "cannotloginnow-text": "Aanmelden is niet mogelijk bij het gebruik van $1.",
        "yourdomainname": "Uw domein:",
        "password-change-forbidden": "U kunt uw wachtwoord niet wijzigen in deze wiki.",
        "externaldberror": "Er is een fout opgetreden bij het aanmelden bij de database of u hebt geen toestemming uw externe gebruiker bij te werken.",
        "changepassword-success": "Uw wachtwoord is gewijzigd.",
        "changepassword-throttled": "U heeft recentelijk te veel mislukte aanmeldpogingen gedaan.\nWacht alstublieft $1 voordat u het opnieuw probeert.",
        "botpasswords": "Botwachtwoorden",
+       "botpasswords-summary": "<em>Botwachtwoorden</em> zorgen voor toegang tot de API via een gebruikersaccount zonder gebruik te maken van de aanmeldgegevens van dat account. De gebruikersrechten die beschikbaar zijn kunnen afwijken indien er aangemeld is met een botwachtwoord.\n\nAls u niet weet wat de gevolgen hiervan zijn, is het handiger om dit ook dan niet te doen. Niemand hoort u te vragen om een botwachtwoord aan te maken en deze vervolgens aan hem of haar te geven.",
        "botpasswords-disabled": "Botwachtwoorden zijn uitgeschakeld.",
        "botpasswords-no-central-id": "Om botwachtwoorden te gebruiken, moet u ingelogd zijn met een gecentraliseerd account",
        "botpasswords-existing": "Bestaande botwachtwoorden",
        "botpasswords-label-cancel": "Annuleren",
        "botpasswords-label-delete": "Verwijderen",
        "botpasswords-label-resetpassword": "Het wachtwoord opnieuw instellen",
+       "botpasswords-label-grants": "Van toepassing zijnde rechten:",
+       "botpasswords-help-grants": "Iedere toestemming geeft toegang tot de opgegeven gebruikersrechten die de gebruiker al heeft. Zie [[Special:ListGrants|overzicht van rechten]] voor meer informatie.",
        "botpasswords-label-restrictions": "Gebruiksbeperkingen:",
        "botpasswords-label-grants-column": "Toegewezen",
        "botpasswords-bad-appid": "De botnaam \"$1\" is niet geldig.",
        "botpasswords-updated-body": "Het botwachtwoord \"$1\" is succesvol bijgewerkt.",
        "botpasswords-deleted-title": "Botwachtwoord verwijderd",
        "botpasswords-deleted-body": "Het botwachtwoord \"$1\" is verwijderd.",
+       "botpasswords-newpassword": "Het nieuwe wachtwoord om aan te melden met <strong>$1</strong> is nu <strong>$2</strong>. <em>Bewaar dit goed voor toekomstig gebruik.</em>",
        "botpasswords-no-provider": "BotPasswordsSessionProvider is niet beschikbaar.",
-       "botpasswords-restriction-failed": "Botwachtwoord-beperkingen maken het aanmelden onmogelijk.",
+       "botpasswords-restriction-failed": "Botwachtwoordbeperkingen maken het aanmelden onmogelijk.",
+       "botpasswords-invalid-name": "De gebruikersnaam mag niet het scheidingsteken van het botwachtwoord (\"$1\") bevatten.",
        "botpasswords-not-exist": "Gebruiker \"$1\" heeft geen botwachtwoord genaamd \"$2\"",
        "resetpass_forbidden": "Wachtwoorden kunnen niet gewijzigd worden",
        "resetpass-no-info": "U dient aangemeld zijn voordat u deze pagina kunt gebruiken.",
        "accmailtext": "Een willekeurig gegenereerd wachtwoord voor [[User talk:$1|$1]] is verzonden naar $2. Het kan worden gewijzigd op de pagina \"[[Special:ChangePassword|wachtwoord wijzigen]]\" na het aanmelden.",
        "newarticle": "(Nieuw)",
        "newarticletext": "Deze pagina bestaat niet.\nTyp in het onderstaande veld om de pagina aan te maken (meer informatie staat op de [$1 hulppagina]).\nGebruik de knop <strong>Terug</strong> in uw browser als u hier per ongeluk terecht bent gekomen.",
-       "anontalkpagetext": "----''Deze overlegpagina hoort bij een anonieme gebruiker die geen gebruikersnaam heeft of deze niet gebruikt.\nDaarom wordt het IP-adres ter identificatie gebruikt.\nHet is mogelijk dat meerdere personen hetzelfde IP-adres gebruiken.\nMogelijk ontvangt u hier berichten die niet voor u bedoeld zijn.\nAls u dat wilt voorkomen, [[Special:UserLogin/signup|registreer u]] of [[Special:UserLogin|meld u aan]] om verwarring met andere anonieme gebruikers te voorkomen.''",
+       "anontalkpagetext": "----\n<em>Deze overlegpagina hoort bij een anonieme gebruiker die geen gebruikersnaam heeft of deze niet gebruikt.</em>\nDaarom wordt het IP-adres ter identificatie gebruikt.\nHet is mogelijk dat meerdere personen hetzelfde IP-adres gebruiken.\nMogelijk ontvangt u hier berichten die niet voor u bedoeld zijn.\nAls 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.\nU 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.\nU kunt [[Special:Search/{{PAGENAME}}|naar deze term zoeken]] in andere pagina's of\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} de logboeken doorzoeken]</span>, maar u mag de pagina niet aanmaken.",
        "missing-revision": "De versie #$1 van de pagina \"{{FULLPAGENAME}}\" bestaat niet.\n\nDit wordt meestal veroorzaakt door het volgen van een verouderde koppeling naar een pagina die is verwijderd.\nMeer gegevens zijn mogelijk te vinden in het [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} verwijderingslogboek].",
        "prefs-info": "Basisinformatie",
        "prefs-i18n": "Taalinstellingen",
        "prefs-signature": "Ondertekening",
-       "prefs-dateformat": "Datumopmaak:",
+       "prefs-dateformat": "Datumopmaak",
        "prefs-timeoffset": "Tijdverschil",
        "prefs-advancedediting": "Algemene instellingen",
        "prefs-editor": "Tekstverwerker",
        "userrights": "Gebruikersrechtenbeheer",
        "userrights-lookup-user": "Gebruikersgroepen beheren",
        "userrights-user-editname": "Voer een gebruikersnaam in:",
-       "editusergroup": "{{GENDER:$1|Gebruiker}}sgroepen wijzigen",
+       "editusergroup": "{{GENDER:$1|Gebruikersgroepen}} wijzigen",
        "editinguser": "Bezig met wijzigen van de gebruikersrechten van gebruiker '''[[User:$1|$1]]''' $2",
        "userrights-editusergroup": "Gebruikersgroepen wijzigen",
-       "saveusergroups": "{{GENDER:$1|Gebruiker}}sgroepen opslaan",
+       "saveusergroups": "{{GENDER:$1|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.\n* Een aangekruist vakje betekent dat de gebruiker lid is van de groep.\n* Een niet aangekruist vakje betekent dat de gebruiker geen lid is van de groep.\n* Een \"*\" betekent dat u een gebruiker niet uit een groep kunt verwijderen nadat u die hebt toegevoegd of vice versa.",
        "right-createpage": "Pagina's aanmaken",
        "right-createtalk": "Overlegpagina's aanmaken",
        "right-createaccount": "Nieuwe gebruikers aanmaken",
-       "right-autocreateaccount": "Automatisch inloggen met een extern gebruikersaccount",
+       "right-autocreateaccount": "Automatisch aanmelden met een extern gebruikersaccount",
        "right-minoredit": "Bewerkingen als klein markeren",
        "right-move": "Pagina's hernoemen",
        "right-move-subpages": "Pagina's inclusief subpagina's verplaatsen",
        "grant-group-administration": "Beheerdershandelingen uitvoeren",
        "grant-group-other": "Diverse handelingen",
        "grant-blockusers": "Gebruikers (de)blokkeren",
-       "grant-createaccount": "Gebruikers aanmaken",
+       "grant-createaccount": "Accounts aanmaken",
        "grant-createeditmovepage": "Pagina's aanmaken, bewerken en hernoemen",
-       "grant-delete": "Pagina's, wijzigingen en vermeldingen in het logboek verwijderen",
+       "grant-delete": "Pagina's, wijzigingen en logboekregels verwijderen",
        "grant-editinterface": "De naamruimte MediaWiki en CSS en JavaScript van gebruikers bewerken",
-       "grant-editmycssjs": "Uw eigen CSS/JavaScript bewerken",
+       "grant-editmycssjs": "Eigen CSS en JavaScript bewerken",
        "grant-editmyoptions": "Eigen voorkeuren instellen",
-       "grant-editmywatchlist": "Uw eigen volglijst bewerken",
+       "grant-editmywatchlist": "Eigen volglijst bewerken",
        "grant-editpage": "Bestaande pagina's bewerken",
        "grant-editprotected": "Beveiligde pagina's bewerken",
        "grant-highvolume": "Veel bewerkingen in korte tijd maken",
        "grant-uploadfile": "Nieuwe bestanden uploaden",
        "grant-basic": "Basisrechten",
        "grant-viewdeleted": "Verwijderde bestanden en pagina's bekijken",
-       "grant-viewmywatchlist": "Uw volglijst bekijken",
+       "grant-viewmywatchlist": "Eigen volglijst bekijken",
        "newuserlogpage": "Logboek nieuwe gebruikers",
        "newuserlogpagetext": "Hieronder staan de nieuw ingeschreven gebruikers",
        "rightslog": "Gebruikersrechtenlogboek",
        "uploaded-script-svg": "Scriptbaar element \"$1\" in het geüploade SVG-bestand gevonden.",
        "uploaded-hostile-svg": "Onveilige CSS in het \"style\"-element van het geüploade SVG-bestand gevonden.",
        "uploaded-event-handler-on-svg": "Het instellen van de event-handlereigenschappen <code>$1=\"$2\"</code> is niet toegestaan in SVG-bestanden.",
-       "uploaded-href-attribute-svg": "href-eigenschappen <code>&lt;$1 $2=\"$3\"&gt;</code> met niet-lokaal doel (bijvoorbeeld http://, javascript:, enz.) zijn niet toegestaan in SVG-bestanden.",
        "uploaded-href-unsafe-target-svg": "href met onveilig doel <code>&lt;$1 $2=\"$3\"&gt;</code> in het geüploade SVG-bestand gevonden.",
        "uploaded-animate-svg": "\"animate\"-label gevonden in het geüploade svg-bestand die href zou kunnen veranderen, met behulp van het \"from\"-attribuut <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploaded-setting-event-handler-svg": "Het instellen van de event-handlereigenschappen is geblokkeerd, <code>&lt;$1 $2=\"$3\"&gt;</code> gevonden in het geüploade SVG-bestand.",
        "filename-thumb-name": "Dit ziet eruit als de naam van een miniatuurbestand. Upload alstublieft geen miniaturen opnieuw in de wiki. Is dit niet het geval, corrigeer dan de bestandsnaam naar een meer betekenisvolle naam zonder het voorvoegsel voor miniaturen.",
        "filename-bad-prefix": "De naam van het bestand dat u aan het uploaden bent begint met '''\"$1\"''', wat een niet-beschrijvende naam is die meestal automatisch door een digitale camera wordt gegeven.\nKies een duidelijke naam voor uw bestand.",
        "filename-prefix-blacklist": " #<!-- leave this line exactly as it is --> <pre>\n# De syntaxis is als volgt:\n#   * Alle tekst vanaf het karakter \"#\" tot het einde van de regel wordt gezien als opmerking\n#   * Iedere niet-lege regel is een voorvoegsel voor bestandsnamen die vaak automatisch worden toegekend door digitale camera's\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # sommige mobiele telefoons\nIMG # algemeen\nJD # Jenoptik\nMGP # Pentax\nPICT # overig\n #</pre> <!-- leave this line exactly as it is -->",
-       "upload-success-subj": "Het bestand is toegevoegd",
-       "upload-success-msg": "Uw upload van [$2] is geslaagd en is beschikbaar: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Uploadprobleem",
-       "upload-failure-msg": "Er was een probleem met uw upload van [$2]:\n\n$1",
-       "upload-warning-subj": "Uploadwaarschuwing",
-       "upload-warning-msg": "Er was een probleem met uw upload van [$2].\nGa terug naar het [[Special:Upload/stash/$1|uploadformulier]] om dit probleem te verhelpen.",
        "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-too-many-redirects": "De URL bevatte te veel doorverwijzingen",
        "upload-http-error": "Er is een HTTP-fout opgetreden: $1",
        "upload-copy-upload-invalid-domain": "Uploaden per kopie is niet beschikbaar vanuit dit domein.",
+       "upload-foreign-cant-upload": "Deze wiki is niet geconfigureerd om bestanden te uploaden naar de buiten deze wiki geplaatste file repository.",
        "upload-dialog-title": "Bestand uploaden",
        "upload-dialog-button-cancel": "Annuleren",
        "upload-dialog-button-done": "Afgerond",
        "upload-form-label-infoform-name": "Naam",
        "upload-form-label-infoform-name-tooltip": "Een korte beschrijvende naam voor het bestand, die als de bestandsnaam wordt gebruikt. U kunt platte tekst met spaties gebruiken. Neem de bestandsextensie niet op.",
        "upload-form-label-infoform-description": "Beschrijving",
+       "upload-form-label-infoform-description-tooltip": "Beschrijf kort alles wat voor het werk van belang is.\nBenoem voor een afbeelding de belangrijkste zaken die zijn afgebeeld, alsmede de plaats of de gelegenheid.",
        "upload-form-label-usage-title": "Gebruik",
        "upload-form-label-usage-filename": "Bestandsnaam",
        "foreign-structured-upload-form-label-own-work": "Dit is mijn eigen werk",
        "checkbox-select": "Selecteer: $1",
        "checkbox-all": "Alle",
        "checkbox-none": "Geen",
+       "checkbox-invert": "Omkeren",
        "allpages": "Alle pagina's",
        "nextpage": "Volgende pagina ($1)",
        "prevpage": "Vorige pagina ($1)",
        "wlheader-showupdated": "Pagina's die zijn bewerkt sinds uw laatste bezoek worden '''vet''' weergegeven.",
        "wlnote": "Hieronder {{PLURAL:$1|staat de laaste wijziging|staan de laatste $1 wijzigingen}} in {{PLURAL:$2|het laatste uur|de laatste $2 uur}} per $3 om $4.",
        "wlshowlast": "Laatste $1 uur, $2 dagen bekijken",
-       "watchlistall2": "alles",
        "watchlist-hide": "Verbergen",
        "watchlist-submit": "Weergeven",
-       "wlshowtime": "Periode om te weergeven:",
+       "wlshowtime": "Weer te geven periode:",
        "wlshowhideminor": "kleine bewerkingen",
        "wlshowhidebots": "bots",
        "wlshowhideliu": "geregistreerde gebruikers",
        "lockedbyandtime": "(door $1 om $3 op $2)",
        "move-page": "\"$1\" hernoemen",
        "move-page-legend": "Pagina hernoemen",
-       "movepagetext": "Door middel van het onderstaande formulier kunt u een pagina hernoemen.\nDe geschiedenis gaat mee naar de nieuwe pagina.\n* De oude naam wordt automatisch een doorverwijzing naar de nieuwe pagina.\n* Koppelingen naar de oude pagina worden niet aangepast.\n* De pagina's die doorverwijzen naar de oorspronkelijke paginanaam worden automatisch bijgewerkt.\nAls u dit niet wenst, controleer dan of er geen [[Special:DoubleRedirects|dubbele]] of [[Special:BrokenRedirects|onjuiste doorverwijzingen]] zijn ontstaan.\n\nEen pagina kan '''alleen''' hernoemd worden als de nieuwe paginanaam niet bestaat of een doorverwijspagina zonder verdere geschiedenis is.\n\n'''Waarschuwing!'''\nVoor veel bekeken pagina's kan het hernoemen drastische en onvoorziene gevolgen hebben.\nZorg ervoor dat u die gevolgen overziet voordat u deze handeling uitvoert.",
-       "movepagetext-noredirectfixer": "Door middel van het onderstaande formulier kunt u een pagina en alle bijbehorende oude versies hernoemen.\nDe oude naam wordt automatisch een doorverwijzing naar de nieuwe pagina.\nControleer dan of er geen [[Special:DoubleRedirects|dubbele]] of [[Special:BrokenRedirects|onjuiste doorverwijzingen]] zijn ontstaan.\n\nEen pagina kan '''alleen''' hernoemd worden als de nieuwe paginanaam niet bestaat of een doorverwijspagina zonder verdere geschiedenis is.\nU kunt dus een pagina die per ongeluk is hernoemd terug hernoemen en u kunt een bestaande pagina niet overschrijven. \n\n'''Waarschuwing!'''\nVoor veel bekeken pagina's kan het hernoemen drastische en onvoorziene gevolgen hebben.\nZorg ervoor dat u die gevolgen overziet voordat u deze handeling uitvoert.",
+       "movepagetext": "Door middel van het onderstaande formulier kunt u een pagina hernoemen.\nDe geschiedenis gaat mee naar de nieuwe pagina.\n* De oude naam wordt automatisch een doorverwijzing naar de nieuwe pagina.\n* Koppelingen naar de oude pagina worden niet aangepast.\n* De pagina's die doorverwijzen naar de oorspronkelijke paginanaam worden automatisch bijgewerkt.\nAls u dit niet wenst, controleer dan of er geen [[Special:DoubleRedirects|dubbele]] of [[Special:BrokenRedirects|onjuiste doorverwijzingen]] zijn ontstaan.\n\nEen pagina kan <strong>alleen</strong> hernoemd worden als de nieuwe paginanaam niet bestaat of een doorverwijspagina zonder verdere geschiedenis is.\n\n<strong>Opmerking:</strong>\nVoor veel bekeken pagina's kan het hernoemen drastische en onvoorziene gevolgen hebben.\nZorg ervoor dat u die gevolgen overziet voordat u deze handeling uitvoert.",
+       "movepagetext-noredirectfixer": "Door middel van het onderstaande formulier kunt u een pagina en alle bijbehorende oude versies hernoemen.\nDe oude naam wordt automatisch een doorverwijzing naar de nieuwe pagina.\nControleer dan of er geen [[Special:DoubleRedirects|dubbele]] of [[Special:BrokenRedirects|onjuiste doorverwijzingen]] zijn ontstaan.\n\nEen pagina kan <strong>alleen</strong> hernoemd worden als de nieuwe paginanaam niet bestaat of een doorverwijspagina zonder verdere geschiedenis is.\nU kunt dus een pagina die per ongeluk is hernoemd terug hernoemen en u kunt een bestaande pagina niet overschrijven. \n\n<strong>Opmerking:</strong>\nVoor veel bekeken pagina's kan het hernoemen drastische en onvoorziene gevolgen hebben.\nZorg ervoor dat u die gevolgen overziet voordat u deze handeling uitvoert.",
        "movepagetalktext": "Als u het onderstaande vinkje selecteert, krijgt de bijbehorende overlegpagina automatisch een andere naam, tenzij de overlegpagina onder de nieuwe naam al bestaat.\n\nIn dit geval moet u de pagina handmatig hernoemen of samenvoegen.",
        "moveuserpage-warning": "'''Waarschuwing:''' u gaat een gebruikerspagina hernoemen. Houd er rekening mee dat alleen de pagina wordt hernoemd, ''niet'' de gebruiker.",
        "movecategorypage-warning": "<strong>Waarschuwing:</strong> U staat op het punt een categoriepagina te hernoemen. Houdt u er rekening mee dat alleen de categoriepagina zelf hernoemd wordt; pagina's in de oude categorie worden <em>niet</em> automatisch naar de nieuwe verplaatst.",
        "movenosubpage": "Deze pagina heeft geen subpagina's.",
        "movereason": "Reden:",
        "revertmove": "terugdraaien",
-       "delete_and_move_text": "==Verwijdering nodig==\nOnder de naam \"[[:$1]]\" bestaat al een pagina.\nWilt u deze verwijderen om plaats te maken voor de te hernoemen pagina?",
+       "delete_and_move_text": "Onder de naam \"[[:$1]]\" bestaat al een pagina.\nWilt u deze verwijderen om plaats te maken voor de te hernoemen pagina?",
        "delete_and_move_confirm": "Ja, de pagina verwijderen",
        "delete_and_move_reason": "Verwijderd in verband met hernoeming van \"[[$1]]\"",
        "selfmove": "U kunt een pagina niet hernoemen naar dezelfde paginanaam.",
        "move-leave-redirect": "Een doorverwijzing achterlaten",
        "protectedpagemovewarning": "'''Waarschuwing:''' deze pagina kan alleen door beheerders hernoemd worden.\nDe laatste logboekregel staat hieronder:",
        "semiprotectedpagemovewarning": "'''Let op:''' deze pagina kan alleen door geregistreerde gebruikers hernoemd worden.\nDe laatste logboekregel staat hieronder:",
-       "move-over-sharedrepo": "== Het bestand bestaat al ==\n[[:$1]] bestaat al in een gedeelde mediadatabank.\nDoor een bestand te hernoemen naar deze naam, is het bestand uit de gedeelde mediadatabank niet langer te gebruiken.",
+       "move-over-sharedrepo": "[[:$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.\nKies een andere bestandsnaam.",
        "export": "Exporteren",
        "exporttext": "U kunt de tekst en geschiedenis van een pagina of pagina's exporteren naar XML.\nDit exportbestand is daarna te importeren in een andere MediaWiki via de [[Special:Import|importpagina]].\n\nGeef in het onderstaande veld de namen van de te exporteren pagina's op, één pagina per regel, en geef aan of u alle versies met de bewerkingssamenvatting of alleen de huidige versies met de bewerkingssamenvatting wilt exporteren.\n\nIn het laatste geval kunt u ook een koppeling gebruiken, bijvoorbeeld [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] voor de pagina \"[[{{MediaWiki:Mainpage}}]]\".",
        "version-libraries-license": "Licentie",
        "version-libraries-description": "Beschrijving",
        "version-libraries-authors": "Auteurs",
-       "redirect": "Doorverwijzen op bestandsnaam, gebruikersnummer, paginanummer, of versienummer",
+       "redirect": "Doorverwijzen op bestandsnaam, gebruikers-, pagina-, versie- of logboekregelnummer",
        "redirect-legend": "Doorverwijzen naar een bestand of pagina",
-       "redirect-summary": "Deze speciale pagina verwijst door naar een bestand (als een bestandsnaam wordt opgegeven), een pagina (als een paginanummer of versienummer wordt opgegeven) of een gebruikerspagina (als een gebruikersnummer wordt opgegeven). Gebruik: [[{{#Special:Redirect}}/file/Voorbeeld.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] of [[{{#Special:Redirect}}/user/101]].",
+       "redirect-summary": "Deze speciale pagina verwijst door naar een bestand (als een bestandsnaam wordt opgegeven), een pagina (als een paginanummer of versienummer wordt opgegeven), een gebruikerspagina (als een gebruikersnummer wordt opgegeven) of een logboekregel (als een logboekregel-ID wordt opgegeven). Gebruik: [[{{#Special:Redirect}}/file/Voorbeeld.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]] of [[{{#Special:Redirect}}/logid/186]].",
        "redirect-submit": "OK",
        "redirect-lookup": "Opzoeken:",
        "redirect-value": "Waarde:",
        "redirect-page": "Pagina-ID",
        "redirect-revision": "Paginaversie",
        "redirect-file": "Bestandsnaam",
+       "redirect-logid": "Logboekregel-ID",
        "redirect-not-exists": "Waarde niet gevonden",
        "fileduplicatesearch": "Duplicaatbestanden zoeken",
        "fileduplicatesearch-summary": "Duplicaatbestanden zoeken op basis van de hashwaarde.",
        "logentry-suppress-block": "$1 {{GENDER:$2|heeft}} {{GENDER:$4|$3}} geblokkeerd voor de duur van $5 $6",
        "logentry-suppress-reblock": "$1 {{GENDER:$2|heeft}} de blokkade voor {{GENDER:$4|$3}} aangepast. Deze vervalt nu op $5 $6",
        "logentry-import-upload": "$1 {{GENDER:$2|heeft}} $3 geïmporteerd via een bestandsupload",
+       "logentry-import-upload-details": "$1 {{GENDER:$2|heeft}} $3 door middel van een bestandsupload geïmporteerd ($4 {{PLURAL:$4|versie|versies}})",
        "logentry-import-interwiki": "$1 {{GENDER:$2|heeft}} $3 geïmporteerd vanuit een andere wiki",
+       "logentry-import-interwiki-details": "$1 {{GENDER:$2|heeft}} $3 uit $5 geïmporteerd ($4 {{PLURAL:$4|versie|versies}})",
        "logentry-merge-merge": "$1 {{GENDER:$2|heeft}} $3 samengevoegd naar $4 (versies tot en met $5)",
        "logentry-move-move": "$1 {{GENDER:$2|heeft}} pagina $3 hernoemd naar $4",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2|heeft}} de pagina $3 hernoemd naar $4 zonder een doorverwijzing achter te laten",
        "expand_templates_preview_fail_html": "<em>Omdat voor {{SITENAME}} ruwe HTML is ingeschakeld, en er sessiegegevens verloren zijn gegaan, is de voorvertoning verborgen als voorzorgmaatregel tegen JavaScriptaanvallen.</em>\n\n<strong>Als dit een legitieme poging is voor het weergeven van een voorvertoning, probeer het dan opnieuw.</strong>\nAls het dan nog steeds niet werkt, probeer dan [[Special:UserLogout|af te melden]] en opnieuw aan te melden.",
        "expand_templates_preview_fail_html_anon": "<em>Omdat in {{SITENAME}} ruwe HTML is ingeschakeld en u niet bent aangemeld, is de voorvertoning verborgen als voorzorgsmaatregel tegen de JavaScriptaanvallen.</em>\n\n<strong>Als dit een legitieme poging is voor het maken van een voorvertoning, [[Special:UserLogin|meld u dan aan]] en probeer het opnieuw.</strong>",
        "expand_templates_input_missing": "U moet wel iets invullen.",
-       "pagelanguage": "Paginataal kiezen",
+       "pagelanguage": "Paginataal wijzigen",
        "pagelang-name": "Pagina",
        "pagelang-language": "Taal",
        "pagelang-use-default": "Standaard taal gebruiken",
        "pagelang-select-lang": "Taal selecteren",
-       "pagelang-submit": "Verzenden",
+       "pagelang-submit": "Opslaan",
        "right-pagelang": "Paginataal wijzigen",
        "action-pagelang": "paginataal te wijzigen",
        "log-name-pagelang": "Logboek taalwijzigingen",
        "log-description-pagelang": "Dit is een logboek van wijzigingen van de taal van pagina's.",
-       "logentry-pagelang-pagelang": "$1 heeft de taal van de pagina \"$3\" gewijzigd van $4 naar $5.",
+       "logentry-pagelang-pagelang": "$1 heeft de paginataal van $3 {{GENDER:$2|gewijzigd}} van $4 naar $5",
        "default-skin-not-found": "Het standaard uiterlijk voor de wiki, dat is ingesteld in <code dir=\"ltr\">$wgDefaultSkin</code> as <code>$1</code>, is niet beschikbaar.\n\nUw installatie heeft {{PLURAL:$4|het volgende uiterlijk|de volgende uiterlijken}}. Zie [https://www.mediawiki.org/wiki/Manual:Skin_configuration Handboek: uiterlijk instellen] voor meer informatie over hoe u het uiterlijk instelt en een standaard uiterlijk aangeeft.\n\n$2\n\n; Als u MediaWiki zojuist hebt geïnstalleerd:\n: U hebt waarschijnlijk geïnstalleerd via git, or direct vanuit de broncode via een andere methode. Deze melding is verwacht. Installeer één of meer van de [https://www.mediawiki.org/wiki/Category:All_skins beschikbare uiterlijken op mediawiki.org], door:\n:* De [https://www.mediawiki.org/wiki/Download tarball te downloaden], die meerdere uiterlijken en uitbreidingen bevat. U kunt de map <code>skins/</code> daar uit kopiëren;\n:* Het downloaden van tarballs voor uiterlijken van [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org];\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Git gebruiken voor het downloaden van uiterlijken].\n: Als u dit doet en u bent MediaWikiontwikkelaar, heeft dit geen invloed op uw gitrepository.\n\n; Als u MediaWiki net hebt bijgewerkt:\n: In MediaWiki 1.24 en nieuwere versies worden geïnstalleerde uiterlijken niet langer automatisch ingeschakeld (zie [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Handboek: uiterlijken automatisch vinden]). U kunt de volgende {{PLURAL:$5|regel|regels}} kopieren naar <code>LocalSettings.php</code> om alle op dit moment geïnstalleerde uiterlijken in te schakelen:\n\n<pre dir=\"ltr\">$3</pre>\n\n; In het geval u zojuist <code>LocalSettings.php</code> hebt aangepast:\n: Controleer de namen van de uiterlijken op spelfouten.",
        "default-skin-not-found-no-skins": "Het standaard uiterlijk voor uw wiki, als aangegeven in <code>$wgDefaultSkin</code> als <code>$1</code>, is niet beschikbaar.\n\nU hebt geen geïnstalleerde uiterlijken.\n\n; Als u MediaWiki zojuist hebt geïnstalleerd:\n: U hebt waarschijnlijk geïnstalleerd via git, or direct vanuit de broncode via een andere methode. Deze melding is verwacht. Sinds MediaWiki 1.24 staan er geen skins meer in de hoofdrepository. Installeer één of meer van de [https://www.mediawiki.org/wiki/Category:All_skins beschikbare uiterlijken op mediawiki.org], door:\n:* De [https://www.mediawiki.org/wiki/Download tarball te downloaden], die meerdere uiterlijken en uitbreidingen bevat. U kunt de map <code>skins/</code> daar uit kopiëren;\n:* Het downloaden van tarballs voor uiterlijken van [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org];\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Git gebruiken voor het downloaden van uiterlijken].\n: Als u dit doet en u bent MediaWikiontwikkelaar, heeft dit geen invloed op uw gitrepository. Zie [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skinconfiguratie] voor meer informatie over hoe skins in te schakelen en een standaard te kiezen.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (ingeschakeld)",
        "mw-widgets-titleinput-description-new-page": "pagina bestaat nog niet",
        "mw-widgets-titleinput-description-redirect": "doorverwijzing naar $1",
        "api-error-blacklisted": "Kies een andere, beschrijvende naam.",
+       "sessionmanager-tie": "Het is niet mogelijk om meerdere authenticatietypen voor verzoeken te combineren: $1.",
        "sessionprovider-generic": "$1 sessies",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "sessies gebaseerd op cookies",
        "sessionprovider-nocookies": "Cookies kunnen uitgeschakeld zijn. Zorg ervoor dat u cookies hebt ingeschakeld en probeer het opnieuw.",
index 0bb4726..26e87c0 100644 (file)
        "confirmable-no": "Nei",
        "thisisdeleted": "Sjå eller attopprett $1?",
        "viewdeleted": "Sjå historikk for $1?",
-       "restorelink": "{{PLURAL:$1|Ã\89in sletta versjon|$1 sletta versjonar}}",
+       "restorelink": "{{PLURAL:$1|éin sletta versjon|$1 sletta versjonar}}",
        "feedlinks": "Abonnementskjelde:",
        "feed-invalid": "Ugyldig abonnementstype.",
        "feed-unavailable": "Det er ingen kjelder til abonnement",
        "right-blockemail": "Blokkere brukarar frå å sende e-post",
        "right-hideuser": "Blokkere eit brukarnamn og skjule det frå ålmenta.",
        "right-ipblock-exempt": "Kan gjere endringar frå blokkerte IP-adresser",
-       "right-proxyunbannable": "Kan gjere endringar frå blokkerte proxyar",
        "right-unblockself": "Avblokkera seg sjølve",
        "right-protect": "Endra vernenivå og verna sider",
        "right-editprotected": "Endre verna sider",
        "filewasdeleted": "Ei fil med same namnet er tidlegare vorte lasta opp og sletta. Du bør sjekke $1 før du prøver å laste henne opp att.",
        "filename-bad-prefix": "Namnet på fila du lastar opp byrjar med '''«$1»''', som er eit inkjeseiande namn som vanlegvis vert gjeve til bilete automatisk av digitale kamera. Ver venleg og vel eit meir skildrande namn på fila di.",
        "filename-prefix-blacklist": " #<!-- leave this line exactly as it is --> <pre>\n# Syntaksen er som følgjer:\n#  * Alt frå teiknet «#» til slutten av linja er ein kommentar\n#  * Alle linjer som ikkje er blanke er ei forstaving som vanlegvis vert nytta automatisk av digitale kamera\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # nokre mobiltelefontypar\nIMG # generisk\nJD # Jenoptik\nMGP # Pentax\nPICT # div.\n  #</pre> <!-- leave this line exactly as it is -->",
-       "upload-success-subj": "Opplastinga er ferdig",
-       "upload-success-msg": "Opplastinga di frå [$2] var vellukka. Han er tilgjengeleg her: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Opplastingsproblem",
-       "upload-failure-msg": "Det oppstod eit problem med opplastinga di frå [$2]:\n\n$1",
-       "upload-warning-subj": "Opplastingsåtvaring",
-       "upload-warning-msg": "Det oppstod eit problem med opplastinga di frå [$2]. Du kan gå attende til [[Special:Upload/stash/$1|opplastingsskjemaet]] for å løysa dette problemet.",
        "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",
        "wlheader-showupdated": "Sider som har vorte endra sidan du sist såg på dei er '''utheva'''",
        "wlnote": "Nedanfor er {{PLURAL:$1|den siste endringa|dei siste '''$1''' endringane}} {{PLURAL:$2|den siste timen|dei siste '''$2''' timane}}, for $3, kl. $4.",
        "wlshowlast": "Vis siste $1 timane $2 dagane",
-       "watchlistall2": "alt",
        "watchlist-hide": "Gøym",
        "wlshowtime": "Vis siste:",
        "wlshowhideminor": "småplukk",
        "contributions": "{{GENDER:$1|Brukarbidrag}}",
        "contributions-title": "Bidrag av $1",
        "mycontris": "Bidrag",
+       "anoncontribs": "Bidrag",
        "contribsub2": "For {{GENDER:$3|$1}} ($2)",
        "nocontribs": "Det vart ikkje funne nokon endringar gjorde av denne brukaren.",
        "uctop": "(gjeldande)",
        "javascripttest-pagetext-frameworks": "Vel eitt av dei fylgjande utrøyningsrammeverka: $1",
        "javascripttest-pagetext-skins": "Vel ei drakt som utrøyningane skal køyrast med:",
        "javascripttest-qunit-intro": "Sjå [$1 utrøyningsdokumentasjon] på mediawiki.org.",
-       "tooltip-pt-userpage": "Brukarsida di",
+       "tooltip-pt-userpage": "{{GENDER:|Brukarsida}} di",
        "tooltip-pt-anonuserpage": "Brukarsida for ip-adressa du endrar under",
-       "tooltip-pt-mytalk": "Diskusjonssida di",
+       "tooltip-pt-mytalk": "{{GENDER:|Diskusjonssida}} di",
        "tooltip-pt-anontalk": "Diskusjon om endringar gjorde av denne ip-adressa",
-       "tooltip-pt-preferences": "Innstillingane dine",
+       "tooltip-pt-preferences": "{{GENDER:|Innstillingane}} dine",
        "tooltip-pt-watchlist": "Liste over sidene du overvakar.",
-       "tooltip-pt-mycontris": "Liste over bidraga dine",
+       "tooltip-pt-mycontris": "{{GENDER:|Liste}} over bidraga dine",
        "tooltip-pt-login": "Det er ikkje obligatorisk å logga inn, men medfører mange fordelar.",
        "tooltip-pt-logout": "Logg ut",
        "tooltip-pt-createaccount": "Me oppfordrar til at du oppretter ein konto og loggar inn, men det er ikkje påkravd.",
        "logentry-newusers-create2": "Brukarkontoen $3 vart {{GENDER:$2|oppretta}} av $1",
        "logentry-newusers-byemail": "Brukarkontoen $3 vart {{GENDER:$2|oppretta}} av $1 og passord vart sendt med e-post",
        "logentry-newusers-autocreate": "Brukarkontoen $1 vart {{GENDER:$2|oppretta}} av seg sjølv",
+       "logentry-protect-protect": "$1 {{GENDER:$2|verna}} $3 $4",
        "logentry-rights-rights": "$1 {{GENDER:$2|endra}} gruppemedlemskap for $3 frå $4 til $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|endra}} gruppemedlemskap for $3",
        "logentry-rights-autopromote": "$1 vart automatisk {{GENDER:$2|forfremja}} frå $4 til $5",
        "special-characters-group-gujarati": "Gujarati",
        "mw-widgets-dateinput-placeholder-day": "ÅÅÅÅ-MM-DD",
        "mw-widgets-dateinput-placeholder-month": "ÅÅÅÅ-MM",
-       "api-error-blacklisted": "Vel eit anna namn som er meir skildrande."
+       "api-error-blacklisted": "Vel eit anna namn som er meir skildrande.",
+       "randomrootpage": "Tilfeldig rotsida"
 }
index 6216f61..0460e0e 100644 (file)
        "upload-description": "ਫਾਈਲ ਵੇਰਵਾ",
        "upload-options": "ਅੱਪਲੋਡ ਚੋਣਾਂ",
        "watchthisupload": "ਇਸ ਫ਼ਾਈਲ ’ਤੇ ਨਜ਼ਰ ਰੱਖੋ",
-       "upload-success-subj": "ਸਫ਼ਲ ਅੱਪਲੋਡ",
-       "upload-failure-subj": "ਅੱਪਲੋਡ ਸਮੱਸਿਆ",
-       "upload-warning-subj": "ਅੱਪਲੋਡ ਚੇਤਾਵਨੀ",
        "upload-proto-error": "ਗਲਤ ਪਰੋਟੋਕਾਲ",
        "upload-file-error": "ਅੰਦਰੂਨੀ ਗਲਤੀ",
        "upload-misc-error": "ਅਣਪਛਾਤੀ ਅੱਪਲੋਡ ਗਲਤੀ",
        "logempty": "ਚਿੱਠੇ ’ਚ ਮੇਲ ਖਾਂਦੀ ਕੋਈ ਚੀਜ਼ ਨਹੀਂ ਹੈ।",
        "log-title-wildcard": "ਇਸ ਲਿਖਤ ਨਾਲ਼ ਸ਼ੁਰੂ ਹੋਣ ਵਾਲ਼ੇ ਸਿਰਲੇਖ ਖੋਜੋ",
        "showhideselectedlogentries": "ਚਿੱਠੇ ਦੇ ਚੁਣੇ ਹੋਏ ਦਾਖ਼ਲੇ ਵਖਾਓ/ਲੁਕਾਓ",
+       "checkbox-select": "ਚੁਣੋ: $1",
+       "checkbox-all": "ਸਾਰੇ",
+       "checkbox-none": "ਕੋਈ ਨਹੀਂ",
        "allpages": "ਸਭ ਸਫ਼ੇ",
        "nextpage": "ਅਗਲਾ ਸਫ਼ਾ ($1)",
        "prevpage": "ਪਿਛਲਾ ਸਫ਼ਾ ($1)",
        "wlheader-enotif": "ਈਮੇਲ ਸੂਚਨਾ ਚਾਲੂ ਹੈ।",
        "wlnote": "$3, $4 ਮੁਤਾਬਕ ਆਖ਼ਰੀ {{PLURAL:$2|ਘੰਟੇ|'''$2''' ਘੰਟਿਆਂ}} ਵਿਚ {{PLURAL:\n$1|ਤਬਦੀਲੀ ਹੋਈ|'''$1''' ਤਬਦੀਲੀਆਂ ਹੋਈਆਂ}}, ਹੇਠਾਂ ਵੇਖੋ।",
        "wlshowlast": "ਪਿਛਲੇ $1 ਘੰਟੇ $2 ਦਿਨ  ਵਖਾਓ",
-       "watchlistall2": "ਸਭ",
        "watchlist-submit": "ਦਿਖਾਓ",
        "watchlist-options": "ਨਿਗਰਾਨੀ-ਲਿਸਟ ਦੀਆਂ ਚੋਣਾਂ",
        "watching": "ਨਿਗ੍ਹਾ (ਵਾਚ) ਰੱਖੀ ਜਾ ਰਹੀ ਹੈ...",
index d078d70..cc18bde 100644 (file)
        "viewyourtext": "Tekst źródłowy <strong>zmodyfikowanej przez Ciebie</strong> strony możesz podejrzeć i skopiować.",
        "protectedinterface": "Ta strona zawiera tekst interfejsu oprogramowania wiki i jest zabezpieczona przed nadużyciami.\nBy dodać lub zmienić tłumaczenia wszystkich serwisów wiki, użyj [//translatewiki.net/ translatewiki.net], projektu lokalizacji MediaWiki.",
        "editinginterface": "<strong>Ostrzeżenie:</strong> Edytujesz stronę, która zawiera tekst interfejsu oprogramowania.\nZmiany na tej stronie zmienią wygląd interfejsu dla innych użytkowników tej wiki.",
-       "translateinterface": "Aby dodać lub zmienić tłumaczenia wszystkich wiki, użyj [//translatewiki.net/ translatewiki.net], projekt lokalizacji oprogramowania MediaWiki.",
+       "translateinterface": "Aby dodać lub zmienić tłumaczenia wszystkich wiki, użyj [//translatewiki.net/ translatewiki.net], projektu lokalizacji oprogramowania MediaWiki.",
        "cascadeprotected": "Ta strona została zabezpieczona przed edycją, ponieważ jest ona 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:\n$2",
        "namespaceprotected": "Nie masz uprawnień do edytowania stron w przestrzeni nazw '''$1'''.",
        "customcssprotected": "Nie jesteś uprawniony do edytowania tej strony CSS, ponieważ zawiera ona ustawienia osobiste innego użytkownika.",
        "virus-scanfailed": "skanowanie nieudane (błąd $1)",
        "virus-unknownscanner": "nieznany antivirus:",
        "logouttext": "'''Nie jesteś już zalogowany.'''\n\nZauważ, że do momentu wyczyszczenia pamięci podręcznej przeglądarki niektóre strony mogą wyglądać tak, jakbyś wciąż był zalogowany.",
+       "cannotlogoutnow-title": "Nie możesz się teraz wylogować",
+       "cannotlogoutnow-text": "Podczas używania $1 wylogowanie nie jest niemożliwe.",
        "welcomeuser": "Witaj, $1!",
        "welcomecreation-msg": "Twoje konto zostało utworzone.\nMożesz zmienić swoje [[Special:Preferences|preferencje]], jeśli chcesz.",
        "yourname": "Nazwa {{GENDER:|użytkownika|użytkowniczki}}:",
        "filename-thumb-name": "Nazwa pliku wskazuje na to, że próbujesz przesłać miniaturkę obrazka. Prosimy nie przesyłać miniaturek w ramach tej samej wiki. Jeśli jest to konieczne, to zmień nazwę na bardziej opisową (w szczególności taką, w której nie ma prefiksu typowego dla miniaturek).",
        "filename-bad-prefix": "Nazwa pliku, który przesyłasz, zaczyna się od '''„$1”'''. Jest to nazwa zazwyczaj przypisywana automatycznie przez cyfrowe aparaty fotograficzne, która nie informuje o zawartości pliku.\nZmień nazwę pliku na bardziej opisową.",
        "filename-prefix-blacklist": " #<!-- nie modyfikuj tej linii --> <pre>\n# Składnia jest następująca:\n#  * Wszystko od znaku \"#\" do końca linii uznawane jest za komentarz\n#  * Każda niepusta linia zawiera początek nazwy pliku domyślnie wykorzystywany przez aparaty cyfrowe\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # niektóre telefony komórkowe\nIMG # ogólny\nJD # Jenoptik\nMGP # Pentax\nPICT # wiele różnych\n  #</pre> <!-- nie modyfikuj tej linii -->",
-       "upload-success-subj": "Przesłanie pliku powiodło się",
-       "upload-success-msg": "Przesłano plik z [$2]. Jest dostępny tutaj – [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Problem z przesłaniem pliku",
-       "upload-failure-msg": "Wystąpił problem przy przesyłaniu pliku z [$2]:\n\n$1",
-       "upload-warning-subj": "Ostrzeżenie dotyczące przesyłania",
-       "upload-warning-msg": "Wystąpił problem z przesyłaniem z [$2]. Możesz wrócić do [[Special:Upload/stash/$1|formularza przesłania]] w celu rozwiązania tego problemu.",
        "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",
        "log-title-wildcard": "Szukaj tytułów zaczynających się od tego tekstu",
        "showhideselectedlogentries": "Zmień widoczność wybranych wpisów rejestru",
        "log-edit-tags": "Edytuj znaczniki wybranych wpisów rejestru",
+       "checkbox-select": "Zaznacz: $1",
        "checkbox-all": "Wszystko",
        "checkbox-none": "Nic",
        "checkbox-invert": "Odwróć",
        "wlheader-showupdated": "'''Wytłuszczone''' zostały strony, które zostały zmodyfikowane od Twojej ostatniej wizyty na nich.",
        "wlnote": "Poniżej pokazano {{PLURAL:$1|zmianę wykonaną|<strong>$1</strong> zmiany wykonane|<strong>$1</strong> zmian wykonanych}} w ciągu {{PLURAL:$2|ostatniej godziny|ostatnich <strong>$2</strong> godzin}}, licząc od $4 dnia $3.",
        "wlshowlast": "Pokaż ostatnie $1 godzin, $2 dni",
-       "watchlistall2": "wszystkie",
        "watchlist-hide": "Ukryj",
        "watchlist-submit": "Pokaż",
-       "wlshowtime": "Okres czasu do wyświetlania:",
+       "wlshowtime": "Okres do wyświetlenia:",
        "wlshowhideminor": "drobne edycje",
        "wlshowhidebots": "boty",
        "wlshowhideliu": "zarejestrowanych",
        "block-log-flags-hiddenname": "nazwa użytkownika jest ukryta",
        "range_block_disabled": "Możliwość blokowania zakresu adresów IP została wyłączona.",
        "ipb_expiry_invalid": "Błędny czas wygaśnięcia blokady.",
+       "ipb_expiry_old": "Czas wygaśnięcia blokady już minął.",
        "ipb_expiry_temp": "Ukryte blokowanie nazwy użytkownika należy wykonać trwale.",
        "ipb_hide_invalid": "Ukrycie konta tego użytkownika nie jest możliwe, wykonał on więcej niż {{PLURAL:$1|jedną edycję|$1 edycje|$1 edycji}}.",
        "ipb_already_blocked": "„$1” jest już zablokowany",
        "lockedbyandtime": "(przez $1 dnia $2 o $3)",
        "move-page": "Przenieś $1",
        "move-page-legend": "Przeniesienie strony",
-       "movepagetext": "Za pomocą poniższego formularza zmienisz nazwę strony, przenosząc jednocześnie jej historię.\nPod starym tytułem zostanie umieszczona strona przekierowująca.\nMożesz automatycznie zaktualizować przekierowania wskazujące na tytuł przed zmianą.\nJeśli nie wybierzesz tej opcji, upewnij się po przeniesieniu strony, czy nie powstały [[Special:DoubleRedirects|podwójne]] lub [[Special:BrokenRedirects|zerwane przekierowania]].\nJesteś odpowiedzialny za to, by linki w dalszym ciągu prowadziły tam, gdzie powinny.\n\nStrona '''nie''' zostanie przeniesiona, jeśli strona o nowej nazwie już istnieje, chyba że jest pusta lub jest przekierowaniem i ma pustą historię edycji.\nTo oznacza, że błędną operację zmiany nazwy można bezpiecznie odwrócić, zmieniając nową nazwę strony na poprzednią, i że nie można nadpisać istniejącej strony.\n\n'''UWAGA!'''\nMoże to być drastyczna lub nieprzewidywalna zmiana w przypadku popularnych stron.\nUpewnij się co do konsekwencji tej operacji, zanim się na nią zdecydujesz.",
-       "movepagetext-noredirectfixer": "Za pomocą poniższego formularza zmienisz nazwę strony, przenosząc jednocześnie jej historię.\nPod starym tytułem zostanie umieszczona strona przekierowująca.\nUpewnij się po przeniesieniu strony, czy nie powstały [[Special:DoubleRedirects|podwójne]] lub [[Special:BrokenRedirects|zerwane przekierowania]].\nJesteś odpowiedzialny za to, by linki w dalszym ciągu pokazywały tam, gdzie powinny.\n\nStrona '''nie''' zostanie przeniesiona, jeśli strona o nowej nazwie już istnieje, chyba że jest pusta lub jest przekierowaniem i ma pustą historię edycji.\nTo oznacza, że błędną operację zmiany nazwy można bezpiecznie odwrócić, zmieniając nową nazwę strony na poprzednią, i że nie można nadpisać istniejącej strony.\n\n'''UWAGA!'''\nMoże to być drastyczna lub nieprzewidywalna zmiana w przypadku popularnych stron.\nUpewnij się co do konsekwencji tej operacji, zanim się na nią zdecydujesz.",
+       "movepagetext": "Za pomocą poniższego formularza zmienisz nazwę strony, przenosząc jednocześnie jej historię.\nPod starym tytułem zostanie umieszczona strona przekierowująca.\nMożesz automatycznie zaktualizować przekierowania wskazujące na tytuł przed zmianą.\nJeśli nie wybierzesz tej opcji, upewnij się po przeniesieniu strony, czy nie powstały [[Special:DoubleRedirects|podwójne]] lub [[Special:BrokenRedirects|zerwane przekierowania]].\nJesteś odpowiedzialny za to, by linki w dalszym ciągu prowadziły tam, gdzie powinny.\n\nStrona <strong>nie</strong> zostanie przeniesiona, jeśli strona o nowej nazwie już istnieje, chyba że jest pusta lub jest przekierowaniem i ma pustą historię edycji.\nOznacza to, że błędną operację zmiany nazwy można bezpiecznie odwrócić, zmieniając nową nazwę strony na poprzednią, i że nie można nadpisać istniejącej strony.\n\n<strong>UWAGA!</strong>\nW przypadku popularnych stron może to być drastyczna lub nieprzewidywalna zmiana.\nUpewnij się co do konsekwencji tej operacji, zanim się na nią zdecydujesz.",
+       "movepagetext-noredirectfixer": "Za pomocą poniższego formularza zmienisz nazwę strony, przenosząc jednocześnie jej historię.\nPod starym tytułem zostanie umieszczona strona przekierowująca.\nPo przeniesieniu strony upewnij się, czy nie powstały [[Special:DoubleRedirects|podwójne]] lub [[Special:BrokenRedirects|zerwane przekierowania]].\nJesteś odpowiedzialny za to, by linki w dalszym ciągu pokazywały tam, gdzie powinny.\n\nStrona <strong>nie</strong> zostanie przeniesiona, jeśli strona o nowej nazwie już istnieje, chyba że jest pusta lub jest przekierowaniem i ma pustą historię edycji.\nOznacza to, że błędną operację zmiany nazwy można bezpiecznie odwrócić, zmieniając nową nazwę strony na poprzednią, i że nie można nadpisać istniejącej strony.\n\n<strong>UWAGA!</strong>\nW przypadku popularnych stron może to być drastyczna lub nieprzewidywalna zmiana.\nUpewnij się co do konsekwencji tej operacji, zanim się na nią zdecydujesz.",
        "movepagetalktext": "Jeżeli zaznaczysz to pole, powiązana strona dyskusji zostanie przeniesiona automatycznie, chyba że już istnieje niepusta strona pod nową nazwą.\n\nW takim przypadku stronę dyskusji należy ręcznie przenieść bądź scalić.",
        "moveuserpage-warning": "'''Uwaga!''' Masz zamiar przenieść stronę użytkownika. Miej na uwadze, że zostanie przeniesiona tylko strona, a '''nazwa użytkownika pozostanie niezmieniona'''.",
        "movecategorypage-warning": "<strong>Uwaga!</strong> Masz zamiar przenieść stronę kategorii. Miej na uwadze, że strony, które należały do starej kategorii, <em>nie</em> zostaną przeniesione do nowej.",
        "movenosubpage": "Ta strona nie posiada podstron.",
        "movereason": "Powód:",
        "revertmove": "cofnij",
-       "delete_and_move_text": "== Przeniesienie wymaga usunięcia innej strony ==\nStrona docelowa „[[:$1]]” istnieje.\nCzy chcesz ją usunąć, by zrobić miejsce dla przenoszonej strony?",
+       "delete_and_move_text": "Strona docelowa „[[:$1]]” już istnieje.\nCzy chcesz ją usunąć, by zrobić miejsce dla przenoszonej strony?",
        "delete_and_move_confirm": "Tak, usuń stronę",
        "delete_and_move_reason": "Usunięto, by zrobić miejsce dla przenoszonej strony „[[$1]]”",
        "selfmove": "Nazwy stron źródłowej i docelowej są takie same.\nStrony nie można przenieść na nią samą.",
        "scarytranscludefailed-httpstatus": "[Pobranie szablonu dla $1 nie powiodło się: HTTP $2]",
        "scarytranscludetoolong": "[zbyt długi adres URL]",
        "deletedwhileediting": "'''Uwaga!''' Ta strona została usunięta po tym, jak rozpoczął{{GENDER:|eś|aś|eś(‐aś)}} jej edycję!",
-       "confirmrecreate": "[[User:$1|$1]] ([[User talk:$1|dyskusja]]) usun{{GENDER:$1|ął|ęła|ął(‐ęła)}} tę stronę po tym, jak rozpoczął{{GENDER:|eś|aś|eś(‐aś)}} jego edycję, podając jako powód usunięcia:\n: ''$2''\nCzy na pewno chcesz ją ponownie utworzyć?",
-       "confirmrecreate-noreason": "Użytkownik [[User:$1|$1]] ([[User talk:$1|dyskusja]]) usunął tę stronę po rozpoczęciu przez Ciebie edycji. Potwierdź, czy naprawdę chcesz, ponownie utworzyć tę stronę.",
+       "confirmrecreate": "{{GENDER:$1|Użytkownik|Użytkowniczka}} [[User:$1|$1]] ([[User talk:$1|dyskusja]]) {{GENDER:$1|usunął|usunęła}} tę stronę po tym, jak rozpocząłeś/rozpoczęłaś jej edycję, podając jako powód usunięcia:\n: <em>$2</em>\nPotwierdź, że na pewno chcesz odtworzyć tę stronę.",
+       "confirmrecreate-noreason": "{{GENDER:$1|Użytkownik|Użytkowniczka}} [[User:$1|$1]] ([[User talk:$1|dyskusja]]) {{GENDER:$1|usunął|usunęła}} tę stronę po tym, jak rozpocząłeś/rozpoczęłaś jej edycję. Potwierdź, że naprawdę chcesz odtworzyć tę stronę.",
        "recreate": "Utwórz powtórnie",
        "confirm_purge_button": "Wyczyść",
        "confirm-purge-top": "Wyczyścić pamięć podręczną dla tej strony?",
index 207f175..0ffcec6 100644 (file)
        "createaccountreason": "Rason:",
        "createacct-reason": "Rason",
        "createacct-reason-ph": "Përchè a crea n'àutr cont",
-       "createacct-captcha": "Contròl ëd sigurëssa",
-       "createacct-imgcaptcha-ph": "Ch'a anserissa ël test ch'a s-ciàira sì-dzora",
        "createacct-submit": "Ch'a crea sò cont",
        "createacct-another-submit": "Creé n'àutr cont",
        "createacct-benefit-heading": "{{SITENAME}} a l'é fàit da 'd gent coma chiel.",
        "passwordreset-emailtext-ip": "Quaidun (a l'é bel fé ch'a sia chiel, da l'adrëssa IP $1) a l'ha ciamà na riampostassion ëd soa ciav për {{SITENAME}} ($4). {{PLURAL:$3|Ël cont utent sì-sota a l'é|Ij cont utent sì-sota a son}} \nassocià a st'adrëssa ëd pòsta eletrònica:\n\n$2\n\n{{PLURAL:$3|Costa ciav provisòria|Coste ciav provisòrie}} a scadran da-sì {{PLURAL:$5|un di|$5 di}}.\nA dovrìa intré ant ël sistema e serne na ciav neuva adess. Se quaidun d'àutr a l'ha fàit costa arcesta, o s'a l'é arcordasse soa ciav original, e a veul pa pi cangela, a peule ignoré ës mëssagi e continué a dovré soa veja ciav.",
        "passwordreset-emailtext-user": "L'utent $1 ansima a {{SITENAME}} a l'ha ciamà na riampostassion ëd soa ciav për {{SITENAME}} ($4). {{PLURAL:$3|Ël cont utent sì-sota a l'é|Ij cont utent sì-sota a son}} associà a st'adrëssa ëd pòsta eletrònica:\n\n$2\n\n{{PLURAL:$3|Costa ciav provisòria|Coste ciav provisòrie}} a scadran da-sì {{PLURAL:$5|un di|$5 di}}.\nA dovrìa intré ant ël sistema e serne na ciav neuva adess. Se quaidun d'àutr a l'ha fàit costa arcesta, o s'a l'é arcordasse soa ciav original, e a veul pa pi cangela, a peul ignoré ës mëssagi e continué a dovré soa veja ciav.",
        "passwordreset-emailelement": "Stranòm: \n$1\n\nCiav provisòria: \n$2",
-       "passwordreset-emailsent": "Un mëssagi ëd riampostassion ëd la ciav a l'é stàit spedì.",
+       "passwordreset-emailsentemail": "Un mëssagi ëd riampostassion ëd la ciav a l'é stàit spedì.",
        "passwordreset-emailsent-capture": "Un mëssagi ëd riampostassion ëd la ciav a l'é stàit mandà, e a l'é mostrà sì-sota.",
        "passwordreset-emailerror-capture": "Un mëssagi ëd riampostassion ëd la ciav a l'é stàit generà, e a l'é smonù sì-sota, ma la spedission a {{GENDER:$2|l'utent}} a l'é falìa: $1",
        "changeemail": "Cangé l'adrëssa ëd pòsta eletrònica",
        "prefs-help-prefershttps": "Costa preferensa a ancaminrà a marcé a soa pròssima conession.",
        "prefswarning-warning": "A l'ha fàit dle modìfiche ai sò gust ch'a son ancor nen ëstàire argistrà.\nS'a chita sa pàgina sensa sgnaché «$1» ij sò gust a saran pa agiorné.",
        "prefs-tabs-navigation-hint": "Astussia: A peul dovré le flece a snistra e a drita për navighé antra le schede ant la lista dle schede.",
-       "email-address-validity-valid": "A smija bon",
-       "email-address-validity-invalid": "A-i é da manca ëd n'adrëssa bon-a!",
        "userrights": "Gestion dij drit dj'utent",
        "userrights-lookup-user": "Gestion dle partìe d'utent",
        "userrights-user-editname": "Che a buta në stranòm:",
        "right-blockemail": "Bloché n'utent da mandé 'd mëssagi an pòsta eletrònica",
        "right-hideuser": "Bloché un nòm utent, stërmandlo al pùblich",
        "right-ipblock-exempt": "Dëscavalché ij blocagi ëd j'IP, ij blocagi automàtich e ij blocagi ëd partìe d'IP",
-       "right-proxyunbannable": "Dëscavalché ij blòch automatich dij servent d'anonimà",
        "right-unblockself": "Dësblochesse da soj",
        "right-protect": "Cambié ij livej ëd protession e modifiché le pàgine protegiùe an cascada",
        "right-editprotected": "Modifiché le pàgine protegiùe con «{{int:protect-level-sysop}}»",
        "uploaded-script-svg": "Element ëscrivìbil «$1» trovà ant l'archivi SVG carià.",
        "uploaded-hostile-svg": "CSS nen sigur trovà ant l'element dë stil ëd n'archivi SVG carià.",
        "uploaded-event-handler-on-svg": "Fissé dj'atribù ëd gestion d'eveniment <code>$1=\"$2\"</code> a l'é nen përmëttù ant j'archivi SVG.",
-       "uploaded-href-attribute-svg": "J'atribù <code>&lt;$1 $2=\"$3\"&gt;</code> con un bërsaj nen local (për esempi http://, javascript:, e via fòrt) a son nen përmëttù ant j'archivi SVG.",
        "uploaded-href-unsafe-target-svg": "href ver un bërsaj nen sigur <code>&lt;$1 $2=\"$3\"&gt;</code> trovà ant l'archivi SVG carià.",
        "uploaded-animate-svg": "Trovà na tichëtta «animate», ch'a podrìa modifiché ël href an dovrand l'atribù «from» <code>&lt;$1 $2=\"$3\"&gt;</code> ant l'archivi SVG carià.",
        "uploaded-setting-event-handler-svg": "Ël posissionament dj'atribù ëd mansé a l'é blocà, <code>&lt;$1 $2=\"$3\"&gt;</code> trovà ant l'archivi SVG carià.",
        "filewasdeleted": "N'archivi con ës nòm-sì a l'é già stàit carià e peui scancelà. Për piasì, che a verìfica $1 anans che carielo n'àutra vira.",
        "filename-bad-prefix": "Ël nòm dl'archivi ch'a l'é dapress a carié as anandia për '''\"$1\"''', ch'a l'é un nòm sensa sust, për sòlit butà-lì n'aotomàtich da le màchine fotogràfiche digitaj, basta ch'a-i në sia un. Për piasì, ch'a-j daga a sò archivi un nòm ch'a disa lòn ch'a l'é.",
        "filename-prefix-blacklist": " #<!-- ch'a lassa sta riga-sì tanme ch'a l'é --> <pre>\n# La sintassi a l'é:\n#   * Tut lòn ch'a-i ven dapress al segn \"#\" fin a la fin dla riga a resta mach un coment\n#   * Na riga nen veujda a la resta un prefiss ëd nòm d'archivi për sòlit dovrà da na chèich màchina fotogràfica digitala\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # chèich sacociàbil\nIMG # genérich\nJD # Jenoptik\nMGP # Pentax\nPICT # vàire marche diferente\n #</pre> <!-- ch'a lassa sta riga-sì tanme ch'a l'é -->",
-       "upload-success-subj": "Carià con sucess",
-       "upload-success-msg": "A l'ha carià da [$2] për da bin. Lòn ch'a l'ha carià a l'é disponìbil ambelessì: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Problema a carié",
-       "upload-failure-msg": "A-i é staje un problema con lòn ch'a l'ha carià da [$2]:\n\n$1",
-       "upload-warning-subj": "Avis antramentre ch'as caria",
-       "upload-warning-msg": "A-i era un problema con lòn ch'a l'ha carià da [$2]. A peul artorné al [[Special:Upload/stash/$1|formolari për carié]] për corege ël problema.",
        "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",
        "movenosubpage": "Sta pàgina-sì a l'ha gnun-e sot-pàgine.",
        "movereason": "Rason:",
        "revertmove": "buté torna coma a l'era",
-       "delete_and_move": "Scancelé e tramudé",
        "delete_and_move_text": "==A fa da manca dë scancelé==\n\nL'artìcol ëd destinassion «[[:$1]]» a-i é già. Veul-lo scancelelo për avèj ëd pòst për tramudé l'àutr?",
        "delete_and_move_confirm": "É, scancelé la pàgina",
        "delete_and_move_reason": "Scancelà për liberé ël pòst për tramudé «[[$1]]»",
        "special-characters-title-minus": "segn meno",
        "mw-widgets-dateinput-placeholder-day": "AAAA-MM-DD",
        "mw-widgets-dateinput-placeholder-month": "AAAA-MM",
-       "api-error-blacklisted": "Për piasì sern un tìtol diferent, descritiv."
+       "api-error-blacklisted": "Për piasì sern un tìtol diferent, descritiv.",
+       "randomrootpage": "Pàgina root a cas"
 }
index 755f4b5..94f20a7 100644 (file)
        "content-model-css": "CSS",
        "content-model-json": "JSON",
        "content-json-empty-object": "تش څيز",
+       "duplicate-args-category-desc": "دا هغه مخ دی چې د کينډيو استدعاگانې لري او دوه ځلي آرگومنټونه کاروي، لکه <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> يا <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "post-expand-template-inclusion-warning": "'''گواښنه:''' دا کينډۍ د خپل ټاکلي بريد نه ډېره لويه ده.\nځينې کينډۍ به په کې گډې نه شي.",
        "post-expand-template-inclusion-category": "هغه مخونه چې په کې د کارېدلو کينډيو شمېر له ټاکلې کچې ډېر دی",
        "post-expand-template-argument-warning": "'''گواښنه:''' دا مخ لږ تر لږه د يوې کينډۍ عاملين لري چې بې حده لوی دی.\nدا عاملين ړنگ شول.",
        "upload-description": "د دوتنې څرگندونې",
        "upload-options": "د پورته کولو خوښنې",
        "watchthisupload": "همدا دوتنه کتل",
-       "upload-success-subj": "دوتنه پورته کېدل په برياليتوب سره ترسره شو",
-       "upload-failure-subj": "د پورته کېدو ستونزه",
-       "upload-warning-subj": "د پورته کولو گواښ",
        "upload-proto-error": "ناسم پروتوکول",
        "upload-file-error": "کورنۍ ستونزه",
        "upload-misc-error": "د پورته کېدنې نامالومه تېروتنه",
        "morelinkstoimage": "همدې دوتنې سره [[Special:WhatLinksHere/$1|نورې تړنې]] کتل.",
        "linkstoimage-redirect": "$1 (دوتنه مخ گرځېدنه) $2",
        "duplicatesoffile": "دا لاندينۍ {{PLURAL:$1| دوتنه د همدې دوتنې غبرګونې لمېسه ده|$1 دوتنې د همدې دوتنې غبرګونې لمېسې دي}} ([[Special:FileDuplicateSearch/$2|نور تفصيل]]):",
-       "sharedupload": "دا دوتنه د $1 لخوا نه ده او کېدای شي چې نورې پروژې به يې هم کاروي.",
+       "sharedupload": "دا دوتنه د $1 لخوا څخه ده او کېدای شي چې نورې پروژې به يې هم کاروي.",
+       "sharedupload-desc-there": "دا دوتنه د $1 څخه ده او کېدای شي چې په نورو پروژو به هم کارېږي.\nد نورو مالوماتو لپاره لطفاً [د $2 دوتنې د څرگندونو مخ] وگورئ.",
        "sharedupload-desc-here": "دا دوتنه د $1 لخوا خپرېږې او کېدای شي چې دا په نورو پروژو هم کارېدلې وي.\nد دوتنې د کارېدنې لا نور مالومات د [$2 دوتنې د څرگندنو په مخ] کې لاندې ښودل شوی.",
+       "sharedupload-desc-create": "دا دوتنه د $1 لخوا خپرېږې او کېدای شي چې دا په نورو پروژو هم کارېدلې وي.\nکېدای شي تاسو به غواړئ چې څرگندونې يې د دې دوتنې [د $2 دوتنې د څرگندنو په مخ] کې سمې کړئ.",
        "filepage-nofile": "په دې نوم کومه دوتنه نشته.",
        "filepage-nofile-link": "په دې نوم کومه دوتنه نشته، خو تاسې يې [$1 پورته کولی شی].",
        "uploadnewversion-linktext": "د همدغې دوتنې نوې بڼه پورته کول",
        "trackingcategories-name": "پيغام نوم",
        "trackingcategories-desc": "د وېشنيزې ورگډونې معيارونه",
        "noindex-category-desc": "دا مخ د روباټونو لخوا په ليکلړ کې نه دی راغلی دا ځکه چې دا مخ د <code><nowiki>__NOINDEX__</nowiki></code> کوډگريزه وييکه لري او په هغه نومتشيال کې دی چې رپی يې پرېښل شوی.",
+       "index-category-desc": "دا مخ يو <code><nowiki>__INDEX__</nowiki></code> لري (او په داسې يو نومتشيال کې دی چې هغه رپی پکې پرېښودل شوی)، او په همدې خاطر د روبوټانو له لارې ليکلړ کې کښل شوی چې په عادي توگه دا نه ترسره کېږي.",
        "trackingcategories-nodesc": "کومې څرگندونې نشته.",
        "trackingcategories-disabled": "وېشنيزه ناچارنه شوه",
        "mailnologin": "د لېږلو پته نشته",
        "wlheader-showupdated": "هغه مخونه چې ستاسې د کتلو نه وروسته بدلون موندلی په '''روڼ''' ليک په نښه شوي.",
        "wlnote": "دلته لاندې {{PLURAL:$1|وروستی بدلون دی|وروستي '''$1''' بدلونونه دي}} چې په {{PLURAL:$2|تېر ساعت|تېرو '''$2''' ساعتونو}} کې تر $3 نېټې او $4 بجو پېښ شوي.",
        "wlshowlast": "وروستي $1 ساعتونه $2 ورځې ښکاره کول",
-       "watchlistall2": "ټول",
        "watchlist-hide": "پټول",
        "watchlist-submit": "ښکاره کول",
        "wlshowtime": "وروستی ښکاره کول:",
        "databasenotlocked": "توکبنسټ نه دی تړل شوی.",
        "move-page": "$1 لېږدول",
        "move-page-legend": "مخ لېږدول",
-       "movepagetext": "د لاندينۍ فورمې په کارولو سره تاسې د يوه مخ نوم بدلولی شی، چې په همدې توگه به د يوه مخ ټول پېښليک د هغه د نوي نوم سرليک ته ولېږدېږي.\nد يوه مخ، پخوانی نوم به د نوي نوم ورگرځونکی مخ وگرځي او نوي سرليک ته به وگرځولی شي.\nهغه تړنې چې په زاړه مخ کې دي په هغو کې به هېڅ کوم بدلون را نه شي;\n[[Special:BrokenRedirects|د ماتو مخ گرځونو]] يا [[Special:DoubleRedirects|دوه ځلي مخ گرځونو]] د ستونزو د پېښېدو په خاطر ځان ډاډه کړی چې ستاسې مخ گرځونې ماتې يا دوه ځله نه وي.\nدا ستاسې پازه ده چې ځان په دې هم ډاډمن کړی چې آيا هغه تړنې کوم چې د يو مخ سره پکار دي چې وي، همداسې په پرله پسې توگه پېيلي او خپل موخن ځايونو سره اړونده دي.\n\nپه ياد مو اوسه چې يو مخ به '''هېڅکله''' و نه لېږدېږي که چېرته د پخوا نه په هماغه نوم يو مخ شتون ولري، خو که چېرته يو مخ تش وه او يا هم يوه مخ گرځونه چې پېښليک کې يې بدلون نه وي راغلی. نو دا په دې مانا ده چې تاسې کولای شی چې د يو مخ نوم بېرته هماغه پخواني نوم ته بدل کړی چې د پخوا نه يې درلوده، که چېرته تاسې تېرووځۍ نو په داسې حال کې تاسې نه شی کولای چې د يوه مخ پر سر يو څه وليکۍ.\n\n'''گواښنه!'''\nيوه نوي نوم ته د مخونو د نوم بدلون کېدای شي چې په نامتو مخونو کې بنسټيزه او نه اټکل کېدونکی بدلونونه رامېنځ ته کړي;\nمخکې له دې نه چې پرمخ ولاړ شی، لطفاُ لومړی خپل ځان په دې ډاډه کړی چې تاسې ددغې کړنې په پايلو ښه پوهېږۍ.",
-       "movepagetext-noredirectfixer": "د لاندينۍ فورمې په کارولو سره تاسې د يوه مخ نوم بدلولی شی، چې په همدې توگه به د يوه مخ ټول پېښليک د هغه د نوي نوم سرليک ته ولېږدېږي.\nد يوه مخ، پخوانی نوم به د نوي نوم ورگرځونکی مخ وگرځي او نوي سرليک ته به وگرځولی شي.\n\n[[Special:BrokenRedirects|د ماتو مخ گرځونو]] يا [[Special:DoubleRedirects|دوه ځلي مخ گرځونو]] د ستونزو د پېښېدو په خاطر ځان ډاډه کړی چې ستاسې مخ گرځونې ماتې يا دوه ځله نه وي.\nدا ستاسې پازه ده چې ځان په دې هم ډاډمن کړی چې آيا هغه تړنې کوم چې د يو مخ سره پکار دي چې وي، همداسې په پرله پسې توگه پېيلي او خپل د موخې ځايونو سره اړونده دي که نه.\n\nپه ياد مو اوسه چې يو مخ به '''هېڅکله''' و نه لېږدېږي که چېرته د پخوا نه په هماغه نوم يو بل مخ شتون ولري، خو که چېرته يو مخ تش وه او يا هم يوه مخ گرځونه چې پېښليک کې يې بدلون نه وي راغلی. نو دا په دې مانا ده چې تاسې کولای شی چې د يو مخ نوم بېرته هماغه پخواني نوم ته بدل کړی چې د پخوا نه يې درلوده، که چېرته تاسې تېرووځۍ نو په داسې حال کې تاسې نه شی کولای چې د يوه مخ پر سر يو څه وليکۍ.\n\n'''گواښنه!'''\nيوه نوي نوم ته د مخونو د نوم بدلون کېدای شي چې په نامتو مخونو کې بنسټيزه او نه اټکل کېدونکي بدلونونه رامېنځ ته کړي; مخکې له دې نه چې پرمخ ولاړ شی، لطفاُ لومړی خپل ځان په دې ډاډه کړی چې تاسې ددغې کړنې په پايلو ښه پوهېږۍ.",
+       "movepagetext": "د لاندينۍ فورمې په کارولو سره تاسې د يوه مخ نوم بدلولی شی، چې په همدې توگه به د يوه مخ ټول پېښليک د هغه د نوي نوم سرليک ته ولېږدېږي.\nد يوه مخ، پخوانی نوم به د نوي نوم ورگرځونکی مخ وگرځي او نوي سرليک ته به وگرځولی شي.\nهغه تړنې چې په زاړه مخ کې دي په هغو کې به هېڅ کوم بدلون را نه شي;\n[[Special:BrokenRedirects|د ماتو مخ گرځونو]] يا [[Special:DoubleRedirects|دوه ځلي مخ گرځونو]] د ستونزو د پېښېدو په خاطر ځان ډاډه کړی چې ستاسې مخ گرځونې ماتې يا دوه ځله نه وي.\nدا ستاسې پازه ده چې ځان په دې هم ډاډمن کړی چې آيا هغه تړنې کوم چې د يو مخ سره پکار دي چې وي، همداسې په پرله پسې توگه پېيلي او خپل موخن ځايونو سره اړونده دي.\n\nپه ياد مو اوسه چې يو مخ به <strong>هېڅکله</strong> و نه لېږدېږي که چېرته د پخوا نه په هماغه نوم يو مخ شتون ولري، خو که چېرته يو مخ تش وه او يا هم يوه مخ گرځونه چې پېښليک کې يې بدلون نه وي راغلی. نو دا په دې مانا ده چې تاسې کولای شی چې د يو مخ نوم بېرته هماغه پخواني نوم ته بدل کړی چې د پخوا نه يې درلوده، که چېرته تاسې تېرووځۍ نو په داسې حال کې تاسې نه شی کولای چې د يوه مخ پر سر يو څه وليکۍ.\n\n<strong>گواښنه:</strong>\nيوه نوي نوم ته د مخونو د نوم بدلون کېدای شي چې په نامتو مخونو کې بنسټيزه او نه اټکل کېدونکی بدلونونه رامېنځ ته کړي;\nمخکې له دې نه چې پرمخ ولاړ شی، لطفاُ لومړی خپل ځان په دې ډاډه کړی چې تاسې ددغې کړنې په پايلو ښه پوهېږۍ.",
+       "movepagetext-noredirectfixer": "د لاندينۍ فورمې په کارولو سره تاسې د يوه مخ نوم بدلولی شی، چې په همدې توگه به د يوه مخ ټول پېښليک د هغه د نوي نوم سرليک ته ولېږدېږي.\nد يوه مخ، پخوانی نوم به د نوي نوم ورگرځونکی مخ وگرځي او نوي سرليک ته به وگرځولی شي.\n\n[[Special:BrokenRedirects|د ماتو مخ گرځونو]] يا [[Special:DoubleRedirects|دوه ځلي مخ گرځونو]] د ستونزو د پېښېدو په خاطر ځان ډاډه کړی چې ستاسې مخ گرځونې ماتې يا دوه ځله نه وي.\nدا ستاسې پازه ده چې ځان په دې هم ډاډمن کړی چې آيا هغه تړنې کوم چې د يو مخ سره پکار دي چې وي، همداسې په پرله پسې توگه پېيلي او خپل د موخې ځايونو سره اړونده دي که نه.\n\nپه ياد مو اوسه چې يو مخ به <strong>هېڅکله</strong> و نه لېږدېږي که چېرته د پخوا نه په هماغه نوم يو بل مخ شتون ولري، خو که چېرته يو مخ تش وه او يا هم يوه مخ گرځونه چې پېښليک کې يې بدلون نه وي راغلی. نو دا په دې مانا ده چې تاسې کولای شی چې د يو مخ نوم بېرته هماغه پخواني نوم ته بدل کړی چې د پخوا نه يې درلوده، که چېرته تاسې تېرووځۍ نو په داسې حال کې تاسې نه شی کولای چې د يوه مخ پر سر يو څه وليکۍ.\n\n<strong>پاملرنه:</strong>\nيوه نوي نوم ته د مخونو د نوم بدلون کېدای شي چې په نامتو مخونو کې بنسټيزه او نه اټکل کېدونکي بدلونونه رامېنځ ته کړي; مخکې له دې نه چې پرمخ ولاړ شی، لطفاُ لومړی خپل ځان په دې ډاډه کړی چې تاسې ددغې کړنې په پايلو ښه پوهېږۍ.",
        "movepagetalktext": "همدې مخ ته اړونده د خبرواترو مخ هم په اتوماتيک ډول لېږدول کېږي '''خو که چېرته:'''\n*په نوي نوم د پخوا نه د خبرواترو يو مخ شتون ولري، او يا هم\n*تاسې ته لاندې ورکړ شوی څلورڅنډی په نښه شوی وي.\n\nنو په هغه وخت کې پکار ده چې د خبرواترو د مخ لېږدونه او د نوي مخ سره د يوځای کولو کړنه په لاسي توگه ترسره کړی.",
        "moveuserpage-warning": "'''گواښنه:''' تاسې د يو کارن مخ د لېږدولو په حال کې ياست. لطفاً دا مه هېروۍ چې يوازې همدا مخ به ولېږدول شي او د کارن نوم به ''نه'' بدلېږي.",
        "movenologintext": "ددې لپاره چې يو مخ ولېږدوی، نو تاسې بايد يو ثبت شوی کارن او غونډال کې [[Special:UserLogin|ننوتي]] اوسۍ.",
        "movenosubpage": "دا مخ کوم څېرمه مخونه نه لري.",
        "movereason": "سبب:",
        "revertmove": "په څټ گرځول",
-       "delete_and_move_text": "== د ړنگولو اړتيا ==\nد \"[[:$1]]\" په نوم مخ له پخوا څخه شته.\nآيا د دې په ړنگولو سره لېږدولو ته لاره هوارول غواړۍ؟",
+       "delete_and_move_text": "د \"[[:$1]]\" په نوم مخ له پخوا څخه شته.\nآيا د دې په ړنگولو سره لېږدولو ته لاره هوارول غواړئ؟",
        "delete_and_move_confirm": "هو, دا مخ ړنگ کړه",
        "immobile-source-page": "دا مخ نه لېږدېدنونکی دی",
        "imageinvalidfilename": "د موخنې دوتنې نوم سم نه دی",
        "move-leave-redirect": "يو ورگرځونکی مخ پر ځای پرېښودل",
-       "move-over-sharedrepo": "== دوتنه شته ==\nد [[:$1]] دوتنه په يو گډ زېرمتون کې شته. دې نوم ته د يوې دوتنې لېږدون به د گډې دوتنې د باطلېدلو سبب شي.",
+       "move-over-sharedrepo": "د [[:$1]] دوتنه په يو گډ زېرمتون کې شته. نوي نوم ته د يوې دوتنې لېږدون به د شريکې دوتنې د باطلېدلو سبب وگرځي.",
        "export": "مخونه صادرول",
        "exportall": "ټول مخونه صادرول",
        "export-submit": "صادرول",
        "mediastatistics-summary": "د پورته شويو دوتنو اړونده شمارنې. په دې ځای کې د يوې دوتنې يوازې تر ټولو تازه بڼې شاملې شوي. د دوتنو زړې يا ړنگې شوې بڼې په دې شمارنو کې نه دي شاملې شوي.",
        "mediastatistics-nfiles": "$1 ($2%)",
        "mediastatistics-nbytes": "{{PLURAL:$1|$1 بايټ|$1 بايټونه}} ($2; $3%)",
+       "mediastatistics-bytespertype": "د دې برخې د ټولټال دوتنو کچه: {{PLURAL:$1|$1 بايټ|$1 بايټونه}} ($2; $3%).",
+       "mediastatistics-allbytes": "د ټولو دوتنو ټولټال کچه: {{PLURAL:$1|$1 بايټ|$1 بايټونه}} ($2).",
        "mediastatistics-table-mimetype": "MIME بڼه",
        "mediastatistics-table-extensions": "ممکنه شاتاړي",
        "mediastatistics-table-count": "د دوتنو شمېر",
        "special-characters-group-hebrew": "عبراني",
        "special-characters-group-bangla": "بنگالي",
        "special-characters-group-tamil": "تاميلي",
-       "special-characters-group-telugu": "تÛ\90Ù\84Ù\88Ú«و",
+       "special-characters-group-telugu": "تÛ\90Ù\84Ù\88Ú¯و",
        "special-characters-group-sinhala": "سېنهالي",
        "special-characters-group-gujarati": "گوجراتي",
        "special-characters-group-devanagari": "دېواناگري",
index 8b260c8..3230f75 100644 (file)
        "october-date": "$1 de outubro",
        "november-date": "$1 de novembro",
        "december-date": "$1 de dezembro",
+       "period-am": "AM",
+       "period-pm": "PM",
        "pagecategories": "{{PLURAL:$1|Categoria|Categorias}}",
        "category_header": "Páginas na categoria \"$1\"",
        "subcategories": "Subcategorias",
        "morenotlisted": "Esta lista não está completa.",
        "mypage": "Página",
        "mytalk": "Discussão",
-       "anontalk": "Discussão para este endereço IP",
+       "anontalk": "Discussão",
        "navigation": "Navegação",
        "and": "&#32;e",
        "qbfind": "Procurar",
        "databaseerror-query": "Consulta: $1",
        "databaseerror-function": "Função: $1",
        "databaseerror-error": "Erro: $1",
+       "transaction-duration-limit-exceeded": "Para evitar a criação de lag replicação alta, esta operação foi abortada porque a duração de gravação ($1) excedeu o $2 {{PLURAL:$2|second|seconds}} limite.Se você está mudando muitos itens de uma vez, tente fazer várias operações menores em vez.",
        "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",
-       "readonlytext": "O banco de dados está atualmente bloqueado para novas entradas e outras modificações, provavelmente por uma manutenção rotineira; mais tarde voltará ao normal.\n\nO administrador que fez o bloqueio ofereceu a seguinte explicação: $1",
+       "readonlytext": "O banco de dados está atualmente bloqueado para novos artigos e outras modificações, provavelmente por uma manutenção de rotina de banco de dados, após o que estará de volta ao normal.\n\nO administrador do sistema que fez o bloqueio oferece a seguinte explicação: $1",
        "missing-article": "O banco de dados não encontrou o texto de uma página que deveria ter encontrado, com o nome \"$1\" $2.\n\nIsso normalmente é causado ao acessar um link de diferença (dif) desatualizado ou para o histórico de uma página que foi apagada.\n\nSe este não for o caso, você pode ter encontrado um defeito (bug) no software.\nAnote a URL e reporte o ocorrido a um [[Special:ListUsers/sysop|administrador]].",
        "missingarticle-rev": "(revisão#: $1)",
        "missingarticle-diff": "(Dif.: $1, $2)",
        "virus-scanfailed": "a verificação falhou (código $1)",
        "virus-unknownscanner": "antivírus desconhecido:",
        "logouttext": "'''Agora você encontra-se desautenticado.'''\n\nNote que algumas páginas podem continuar sendo exibidas como se você ainda estivesse autenticado até que você limpe a ''cache'' do seu navegador.",
+       "cannotlogoutnow-title": "Não é possível encerrar a sessão agora",
        "welcomeuser": "Bem-vindo, $1!",
        "welcomecreation-msg": "A sua conta foi criada.\nNão se esqueça de personalizar as suas [[Special:Preferences|preferências no wiki {{SITENAME}}]].",
        "yourname": "Nome de usuário:",
        "remembermypassword": "Lembrar meu login neste navegador (por no máximo $1 {{PLURAL:$1|dia|dias}})",
        "userlogin-remembermypassword": "Mantenha-me conectado",
        "userlogin-signwithsecure": "Use a conexão segura",
+       "cannotloginnow-title": "Não é possível iniciar a sessão agora",
        "yourdomainname": "Seu domínio:",
        "password-change-forbidden": "Você não pode alterar senhas nessa wiki.",
        "externaldberror": "Ocorreu ou um erro no banco de dados durante a autenticação ou não lhe é permitido atualizar a sua conta externa.",
        "resetpass_submit": "Definir senha e entrar",
        "changepassword-success": "Sua senha foi alterada com sucesso!",
        "changepassword-throttled": "Você realizou demasiadas tentativas de se registrar.\nPor favor, aguarde $1 antes de tentar novamente.",
+       "botpasswords-existing": "Senhas bot existentes",
+       "botpasswords-createnew": "Crie uma nova senha bot",
+       "botpasswords-editexisting": "Editar uma senha existente bot",
+       "botpasswords-label-appid": "Nome do robô:",
+       "botpasswords-label-create": "Criar",
+       "botpasswords-label-update": "Atualizar",
+       "botpasswords-label-cancel": "Cancelar",
+       "botpasswords-label-delete": "Apagar",
+       "botpasswords-label-resetpassword": "Redefinir a sua senha",
+       "botpasswords-label-grants": "Permissões aplicáveis",
+       "botpasswords-label-restrictions": "Restrições de uso:",
+       "botpasswords-label-grants-column": "Concedido",
+       "botpasswords-created-title": "Password Bot criado",
+       "botpasswords-updated-title": "Password Bot atualizado",
+       "botpasswords-deleted-title": "Bot senha excluído",
        "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",
        "passwordreset-emailtext-user": "O usuário $1 da {{SITENAME}} pediu a recuperação dos detalhes da sua conta na {{SITENAME}} ($4). {{PLURAL:$3|A seguinte conta está associada|As seguintes contas estão associadas}} a este e-mail:\n\n$2\n\n{{PLURAL:$3|Esta senha temporária irá|Estas senhas temporárias irão}} expirar dentro de {{PLURAL:$5|um dia|$5 dias}}. Deve autenticar-se e escolher uma senha nova agora. Se este pedido não foi feito por si, ou se entretanto se recordou da sua senha original e já não deseja alterá-la, pode ignorar esta mensagem e continuar a usar a senha antiga.",
        "passwordreset-emailelement": "Usuário: \n$1\n\nSenha temporária: \n$2",
        "passwordreset-emailsentemail": "Se este é um endereço de e-mail registrado para a sua conta, em seguida, um e-mail de redefinição de senha será enviada.",
+       "passwordreset-emailsentusername": "Se houver um endereço de email associado a esta conta, ser-lhe-á enviada uma mensagem para redefinir a sua senha.",
        "passwordreset-emailsent-capture": "Foi enviado um e-mail de lembrete, que é mostrado abaixo.",
        "passwordreset-emailerror-capture": "Foi gerado um e-mail de recuperação da senha, conforme mostrado abaixo, mas o envio {{GENDER:$2|ao usuário|à usuária}} falhou. $1",
        "changeemail": "Alterar ou remover endereço de email",
        "showingresultsinrange": "Apresenta-se abaixo {{PLURAL:$1|<strong>1</strong> resultado|até <strong>$1</strong> resultados}} no intervalo #<strong>$2</strong> a #<strong>$3</strong>.",
        "search-showingresults": "{{PLURAL:$4|Resultado <strong>$1</strong> de <strong>$3</strong>|Resultados <strong>$1 - $2</strong> de <strong>$3</strong>}}",
        "search-nonefound": "Não há resultados que correspondam à consulta.",
+       "search-nonefound-thiswiki": "Não há resultados que correspondam à consulta.",
        "powersearch-legend": "Pesquisa avançada",
        "powersearch-ns": "Pesquisar nos espaços nominais:",
        "powersearch-togglelabel": "Selecionar:",
        "userrights": "Gestão de privilégios {{GENDER:{{BASEPAGENAME}}|do usuário|da usuária|de usuário(a)}}",
        "userrights-lookup-user": "Administrar grupos de usuários",
        "userrights-user-editname": "Forneça um nome de usuário:",
-       "editusergroup": "Editar grupos de usuários",
+       "editusergroup": "Editar {{GENDER:$1|usuário}} grupos",
        "editinguser": "Modificando privilégios d{{GENDER:$1|o usuário|a usuária|o(a) usuário(a)}} <strong>[[User:$1|$1]]</Strong> $2",
        "userrights-editusergroup": "Editar grupos do usuário",
-       "saveusergroups": "Salvar grupos do usuário",
+       "saveusergroups": "Salvar grupos de{{GENDER:$1|usuário}}",
        "userrights-groupsmember": "Membro de:",
        "userrights-groupsmember-auto": "Membro implícito de:",
        "userrights-groups-help": "É possível alterar os grupos em que {{GENDER:$1|este usuário|esta usuária|este(a) usuário(a)}} se encontra:\n* Uma caixa de seleção selecionada significa que {{GENDER:$1|o usuário|a usuária|o(a) usuário(a)}} encontra-se no grupo.\n* Uma caixa de seleção não selecionada significa que {{GENDER:$1|o usuário|a usuária|o(a) usuário(a)}} não se encontra no grupo.\n* Um * indica que não pode remover o grupo depois de o adicionar, ou vice-versa.",
        "right-createpage": "Criar páginas (que não sejam páginas de discussão)",
        "right-createtalk": "Criar páginas de discussão",
        "right-createaccount": "Criar novas contas de usuário",
+       "right-autocreateaccount": "Iniciar a sessão automaticamente com uma conta de usuário externa",
        "right-minoredit": "Marcar edições como menores",
        "right-move": "Mover páginas",
        "right-move-subpages": "Mover páginas com as suas subpáginas",
        "right-blockemail": "Impedir um usuário de enviar email",
        "right-hideuser": "Bloquear um nome de usuário, escondendo-o do público",
        "right-ipblock-exempt": "Contornar bloqueios de IP, automáticos e de intervalo",
-       "right-proxyunbannable": "Contornar bloqueios automáticos de proxies",
        "right-unblockself": "Desbloquear a si mesmo",
        "right-protect": "Mudar níveis de proteção e editar páginas protegidas em cascata",
        "right-editprotected": "Editar páginas protegidas como \"{{int:protect-level-sysop}}\"",
        "grant-group-other": "Atividade diversa",
        "grant-blockusers": "Bloquear e desbloquear usuários",
        "grant-createaccount": "Criar contas",
-       "grant-createeditmovepage": "Fazer alterações nas páginas",
+       "grant-createeditmovepage": "Criar, editar e mover páginas",
        "grant-delete": "Excluir páginas, revisões e entradas de registro",
        "grant-editmyoptions": "Editar suas preferências de usuário",
        "grant-editmywatchlist": "Editar sua lista de páginas vigiadas",
        "grant-editprotected": "Editar páginas protegidas",
        "grant-highvolume": "Edição de grandes volumes",
        "grant-oversight": "Ocultar usuários e revisões suprimidas",
+       "grant-patrol": "Patrulhar as alterações nas páginas",
        "grant-protect": "Proteger e desproteger páginas",
        "grant-rollback": "Reverter alterações nas páginas",
        "grant-sendemail": "Enviar e-mail a outros usuários",
        "grant-uploadeditmovefile": "Enviar, substituir e mover arquivos",
        "grant-uploadfile": "Enviar novos arquivos",
+       "grant-basic": "Direitos básicos",
        "grant-viewdeleted": "Ver páginas e arquivos excluídos",
        "grant-viewmywatchlist": "Veja sua lista de páginas vigiadas",
        "newuserlogpage": "Registro de criação de usuários",
        "action-createpage": "criar páginas",
        "action-createtalk": "criar páginas de discussão",
        "action-createaccount": "criar esta conta de usuário",
+       "action-autocreateaccount": "Criar uma conta de usuário externa automaticamente",
        "action-history": "Ver o histórico desta página",
        "action-minoredit": "marcar esta edição como uma edição menor",
        "action-move": "mover esta página",
        "recentchanges-legend-heading": "'''Legenda''':",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (veja também a [[Special:NewPages|lista de páginas novas]])",
        "recentchanges-legend-plusminus": "(''±123'')",
+       "recentchanges-submit": "Exibir",
        "rcnotefrom": "Abaixo {{PLURAL:$5|é a mudança|são as mudanças}} desde <strong>$3, $4</strong> (up to <strong>$1</strong> shown).",
        "rclistfrom": "Mostrar as novas alterações a partir das $2 de $3",
        "rcshowhideminor": "$1 edições menores",
        "rcshowhidemine": "$1 minhas edições",
        "rcshowhidemine-show": "Exibir",
        "rcshowhidemine-hide": "Ocultar",
+       "rcshowhidecategorization-show": "Exibir",
+       "rcshowhidecategorization-hide": "Esconder",
        "rclinks": "Exibir as $1 alterações recentes feitas nos últimos $2 dias<br />$3",
        "diff": "dif",
        "hist": "his",
        "recentchangeslinked-page": "Nome da página:",
        "recentchangeslinked-to": "Inversamente, mostrar mudanças nas páginas que contêm ligações para esta",
        "recentchanges-page-added-to-category": "[[:$1]]adicionada à categoria",
+       "autochange-username": "Alteração automática do MediaWiki",
        "upload": "Enviar arquivo",
        "uploadbtn": "Enviar arquivo",
        "reuploaddesc": "Cancelar o envio e retornar ao formulário de upload",
        "filewasdeleted": "Um arquivo com este nome foi enviado anteriormente e eliminado.\nVerifique o $1 antes de enviar novamente.",
        "filename-bad-prefix": "O nome do arquivo que você está enviando começa com '''\"$1\"''', um nome pouco esclarecedor, comumente associado de forma automática por câmeras digitais.\nEscolha um nome de arquivo mais explicativo.",
        "filename-prefix-blacklist": " #<!-- deixe esta linha exatamente como está --> <pre>\n# A sintaxe é a seguinte:\n#   * Tudo a partir do caractere \"#\" até ao fim da linha é um comentário\n#   * Todas as linhas não vazias são um prefixo para nomes de arquivos típicos atribuídos automaticamente por câmaras digitais\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # alguns telefones móveis\nIMG # genérico\nJD # Jenoptik\nMGP # Pentax\nPICT # misc.\n #</pre> <!-- deixe esta linha exatamente como está -->",
-       "upload-success-subj": "Enviado com sucesso",
-       "upload-success-msg": "O envio feito a partir de [$2] foi bem sucedido. Ele está disponível aqui: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Problema no envio",
-       "upload-failure-msg": "Ocorreu um problema com envio a partir de [$2]:\n\n$1",
-       "upload-warning-subj": "Aviso de envio",
-       "upload-warning-msg": "Houve um problema com o envio a partir de [$2]. Retorne ao [[Special:Upload/stash/$1|formulário]] para corrigir este problema.",
        "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-form-label-infoform-description": "Descrição",
        "upload-form-label-usage-title": "Uso",
        "upload-form-label-usage-filename": "Nome do arquivo",
+       "foreign-structured-upload-form-label-own-work": "Isto é o meu próprio trabalho",
        "foreign-structured-upload-form-label-infoform-categories": "Categorias",
        "foreign-structured-upload-form-label-infoform-date": "Data",
+       "foreign-structured-upload-form-label-not-own-work-local-local": "Você pode também querer tentar [[Special:Upload|the default upload page]]",
+       "foreign-structured-upload-form-2-label-useful": "Deve ser <strong>educativo e útil</strong> para ensinar a outros.",
+       "foreign-structured-upload-form-3-label-yes": "Sim",
+       "foreign-structured-upload-form-3-label-no": "Não",
        "backend-fail-stream": "Não foi possível transmitir o arquivo  $1.",
        "backend-fail-backup": "Não foi possível fazer backup do arquivo  $1 .",
        "backend-fail-notexists": "O arquivo $1 não existe.",
        "mostrevisions": "Páginas de conteúdo com mais revisões",
        "prefixindex": "Todas as páginas com prefixo",
        "prefixindex-namespace": "Todas as páginas com prefixo (espaço nominal $1)",
+       "prefixindex-submit": "Exibir",
        "prefixindex-strip": "Remover prefixo",
        "shortpages": "Páginas curtas",
        "longpages": "Páginas longas",
        "protectedpages-performer": "Usuário que protegeu",
        "protectedpages-params": "Parâmetros de proteção.",
        "protectedpages-reason": "Motivo",
+       "protectedpages-submit": "Exibir páginas",
        "protectedpages-unknown-timestamp": "Desconhecido",
        "protectedpages-unknown-performer": "Usuário desconhecido",
        "protectedtitles": "Títulos protegidos",
        "protectedtitles-summary": "Esta página lista títulos cuja criação está impossibilitada. Para ver uma lista de páginas protegidas, consulte [[{{#special:ProtectedPages}}|{{int:protectedpages}}]].",
        "protectedtitlesempty": "Neste momento, nenhum dos títulos está protegido com estes parâmetros.",
+       "protectedtitles-submit": "Mostrar títulos",
        "listusers": "Lista de usuários",
        "listusers-editsonly": "Mostrar apenas usuários com edições",
        "listusers-creationsort": "Ordenar por data de criação",
        "usereditcount": "$1 {{PLURAL:$1|edição|edições}}",
        "usercreated": "{{GENDER:$3|criado|criada|criado(a)}} em $1 às $2",
        "newpages": "Páginas novas",
+       "newpages-submit": "Exibir",
        "newpages-username": "Nome de usuário:",
        "ancientpages": "Páginas mais antigas",
        "move": "Mover",
        "specialloguserlabel": "Executor:",
        "speciallogtitlelabel": "Alvo (título da página ou {{ns:user}}:'nomedeusuário' para usuários):",
        "log": "Registros",
+       "logeventslist-submit": "Exibir",
        "all-logs-page": "Todos os registros públicos",
        "alllogstext": "Exibição combinada de todos registros disponíveis para o {{SITENAME}}.\nVocê pode diminuir a lista escolhendo um tipo de registro, um nome de usuário (sensível a maiúsculas e minúsculas), ou uma página afetada (também sensível a maiúsculas e minúsculas).",
        "logempty": "Nenhum item correspondente no registro.",
        "log-title-wildcard": "Procurar por títulos que sejam iniciados com o seguinte texto",
        "showhideselectedlogentries": "Exibir/ocultar os itens de registros selecionados",
        "log-edit-tags": "Editar etiquetas das entradas selecionadas",
+       "checkbox-select": "Selecionar: $1",
+       "checkbox-all": "Tudo",
+       "checkbox-none": "Nenhum",
+       "checkbox-invert": "Inverter",
        "allpages": "Todas as páginas",
        "nextpage": "Próxima página ($1)",
        "prevpage": "Página anterior ($1)",
        "cachedspecial-viewing-cached-ts": "Você está visualizando uma versão de cache desta página que pode estar desatualizada.",
        "cachedspecial-refresh-now": "Ver a mais recente.",
        "categories": "Categorias",
+       "categories-submit": "Exibir",
        "categoriespagetext": "{{PLURAL:$1|A seguinte categoria contém|As seguintes contém}} páginas ou mídia.\n[[Special:UnusedCategories|Categorias não utilizadas]] não são mostradas aqui.\nVeja também [[Special:WantedCategories|categorias pedidas]].",
        "categoriesfrom": "Listar categorias começando por:",
        "special-categories-sort-count": "ordenar por contagem",
        "activeusers-hidebots": "Esconder robôs",
        "activeusers-hidesysops": "Esconder administradores",
        "activeusers-noresult": "Nenhum usuário encontrado.",
+       "activeusers-submit": "Mostrar usuários ativos",
        "listgrouprights": "Privilégios de grupos de usuários",
        "listgrouprights-summary": "O que segue é uma lista dos grupos de usuários definidos neste wiki, com os seus privilégios de acessos associados.\nPode haver [[{{MediaWiki:Listgrouprights-helppage}}|informações adicionais]] sobre privilégios individuais.",
        "listgrouprights-key": "Legenda:\n* <span class=\"listgrouprights-granted\">Privilégio concedido</span>\n* <span class=\"listgrouprights-revoked\">Privilégio revogado</span>",
        "listgrouprights-namespaceprotection-header": "Restrições de namespace",
        "listgrouprights-namespaceprotection-namespace": "Namespace",
        "listgrouprights-namespaceprotection-restrictedto": "Direito(s) permitindo edições do usuário",
+       "listgrants": "Permissões",
+       "listgrants-grant": "Permissão",
+       "listgrants-rights": "Direitos",
        "trackingcategories": "Categorias de rastreamento",
        "trackingcategories-summary": "Esta página lista categorias de monitoramento que são preenchidas automaticamente pelo software MediaWiki. Seus nomes podem ser alterados através da alteração das mensagens de sistema relevantes no namespace {{ns: 8}}.",
        "trackingcategories-msg": "Categoria de monitoramento",
        "wlheader-showupdated": "Páginas modificadas desde a sua última visita são mostradas em '''negrito'''",
        "wlnote": "A seguir {{PLURAL:$1|está a última alteração ocorrida|estão as últimas <strong>$1</strong> alterações ocorridas}} {{PLURAL:$2|na última hora|nas últimas <strong>$2</strong> horas}} até $3, $4.",
        "wlshowlast": "Ver últimas $1 horas $2 dias",
-       "watchlistall2": "todas",
        "watchlist-hide": "Ocultar",
+       "watchlist-submit": "Exibir",
+       "wlshowtime": "Período de tempo a mostrar:",
        "wlshowhideminor": "edições menores",
        "wlshowhidebots": "robôs",
        "wlshowhideliu": "usuários registrados",
        "wlshowhideanons": "usuários anônimos",
        "wlshowhidepatr": "edições patrulhadas",
        "wlshowhidemine": "minhas edições",
+       "wlshowhidecategorization": "categorização de páginas",
        "watchlist-options": "Opções da lista de páginas vigiadas",
        "watching": "Vigiando...",
        "unwatching": "Deixando de vigiar...",
        "delete-confirm": "Eliminar \"$1\"",
        "delete-legend": "Eliminar",
        "historywarning": "<strong>Aviso:</strong> A página que está prestes a eliminar tem um histórico com aproximadamente $1 {{PLURAL:$1|revisão|revisões}}:",
+       "historyaction-submit": "Exibir",
        "confirmdeletetext": "Encontra-se prestes a eliminar uma página juntamente com todo o seu histórico.\nPor 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 concluída",
        "actionfailed": "Falha na ação",
        "changecontentmodel": "Alterar o modelo de conteúdo de uma página",
        "changecontentmodel-legend": "Alterar o modelo de conteúdo",
        "changecontentmodel-title-label": "Título da página",
+       "changecontentmodel-model-label": "Modelo de conteúdo novo",
        "changecontentmodel-reason-label": "Motivo:",
        "changecontentmodel-success-title": "O modelo de conteúdo foi alterado",
        "changecontentmodel-success-text": "O tipo de conteúdo de [[:$1]] foi alterado.",
+       "log-name-contentmodel": "Log de alterações modelo de conteúdo",
        "logentry-contentmodel-change-revertlink": "reverter",
        "logentry-contentmodel-change-revert": "reverter",
        "protectlogpage": "Registro de proteção",
        "whatlinkshere-hidelinks": "$1 links",
        "whatlinkshere-hideimages": "$1 links para arquivos",
        "whatlinkshere-filters": "Filtros",
+       "whatlinkshere-submit": "Avançar",
        "autoblockid": "Autobloqueio #$1",
        "block": "Bloquear usuário(a)",
        "unblock": "Desbloquear usuário",
        "export-download": "Oferecer para salvar como um arquivo",
        "export-templates": "Incluir predefinições",
        "export-pagelinks": "Incluir páginas ligadas até uma profundidade de:",
+       "export-manual": "Adicionar páginas manualmente:",
        "allmessages": "Todas as mensagens de sistema",
        "allmessagesname": "Nome",
        "allmessagesdefault": "Texto padrão",
        "javascripttest-qunit-intro": "Veja a [$1 documentação de testes] no mediawiki.org.",
        "tooltip-pt-userpage": "Sua página de {{GENDER:|usuário|usuária|usuário(a)}}",
        "tooltip-pt-anonuserpage": "A página de usuário para o ip com o qual você está editando",
-       "tooltip-pt-mytalk": "Sua página de discussão",
+       "tooltip-pt-mytalk": "{{GENDER:|Sua}} página de discussão",
        "tooltip-pt-anontalk": "Discussão sobre edições deste endereço de ip",
-       "tooltip-pt-preferences": "Suas configurações",
+       "tooltip-pt-preferences": "{{GENDER:|Suas}} configurações",
        "tooltip-pt-watchlist": "Lista de alterações nas páginas que você está monitorando",
-       "tooltip-pt-mycontris": "Listagem de suas contribuições",
+       "tooltip-pt-mycontris": "Listagem das {{GENDER:|suas}} contribuições",
+       "tooltip-pt-anoncontribs": "Uma lista de edições feitas a partir deste endereço de IP",
        "tooltip-pt-login": "Você é encorajado a autenticar-se; no entanto, não é obrigatório",
        "tooltip-pt-logout": "Sair",
        "tooltip-pt-createaccount": "É recomendado que você crie uma conta e inicie uma seção; todavia, isto não é obrigatório",
        "tooltip-t-recentchangeslinked": "Mudanças recentes nas páginas para as quais esta possui links",
        "tooltip-feed-rss": "Feed RSS desta página",
        "tooltip-feed-atom": "Feed Atom desta página",
-       "tooltip-t-contributions": "Ver as contribuições {{GENDER:{{BASEPAGENAME}}|deste usuário|desta usuária|deste(a) usuário(a)}}",
+       "tooltip-t-contributions": "Ver as contribuições {{GENDER:$1{{BASEPAGENAME}}|deste usuário|desta usuária|deste(a) usuário(a)}}",
        "tooltip-t-emailuser": "Enviar um e-mail a {{GENDER:{{BASEPAGENAME}}|este usuário|esta usuária|este(a) usuário(a)}}",
        "tooltip-t-info": "Mais informações sobre esta página",
        "tooltip-t-upload": "Enviar arquivos",
        "pageinfo-category-files": "Número de arquivos",
        "markaspatrolleddiff": "Marcar como patrulhada",
        "markaspatrolledtext": "Marcar esta página como patrulhada",
+       "markaspatrolledtext-file": "Marcar esta versão de artigo como patrulhada",
        "markedaspatrolled": "Marcado como verificado",
        "markedaspatrolledtext": "A revisão selecionada de [[:$1]] foi marcada como patrulhada.",
        "rcpatroldisabled": "Edições verificadas nas Mudanças Recentes desativadas",
        "newimages-legend": "Filtrar",
        "newimages-label": "Nome de arquivo (ou parte dele):",
        "newimages-showbots": "Mostrar uploads realizados por bots",
+       "newimages-hidepatrolled": "Ocultar os carregamentos patrulhados.",
        "noimages": "Nada para ver.",
        "ilsubmit": "Pesquisar",
        "bydate": "por data",
        "exif-compression-4": "CCITT Grupo 4 codificação de fax",
        "exif-copyrighted-true": "Direitos autorais reservados",
        "exif-copyrighted-false": "Situação de direitos autorais não definido",
+       "exif-photometricinterpretation-1": "Preto e branco (Preto é 0)",
        "exif-unknowndate": "Data desconhecida",
        "exif-orientation-1": "Normal",
        "exif-orientation-2": "Espelhamento horizontal",
        "watchlisttools-edit": "Ver e editar a lista de páginas vigiadas",
        "watchlisttools-raw": "Edição crua da lista de páginas vigiadas",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|discussão]])",
+       "timezone-local": "Localização",
        "duplicate-defaultsort": "Aviso: A chave de ordenação padrão \"$2\" sobrepõe-se à anterior chave de ordenação padrão \"$1\".",
        "duplicate-displaytitle": "<strong>Aviso:</strong> O título exibido \"$2\" substituí o título anterior \"$1\".",
        "invalid-indicator-name": "<strong>Erro:</strong> O atributo indicador do status da página <code>name</code> não deve estar vazio.",
        "version-libraries-license": "Licença",
        "version-libraries-description": "Descrição",
        "version-libraries-authors": "Autores",
-       "redirect": "Redirecionar por arquivo, usuário ou ID de revisão",
+       "redirect": "Redirecionar por arquivo, usuário, página, revisão ou registro de identificação.",
        "redirect-legend": "Redirecionar para um arquivo ou página",
        "redirect-summary": "Esta página especial redireciona a um arquivo (dado o nome do arquivo), a uma página (dado um ID de revisão ou ID da página) ou a uma página de usuário (dado o ID do usuário). Uso: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].",
        "redirect-submit": "Ir",
        "tags-deactivate": "Desativar",
        "tags-hitcount": "$1 {{PLURAL:$1|modificação|modificações}}",
        "tags-manage-no-permission": "Você não possui permissão para gerenciar alterações de etiquetas",
+       "tags-manage-blocked": "Você não pode fazer mudanças nas etiquetas enquanto bloqueado.",
        "tags-create-heading": "Criar uma nova etiqueta",
        "tags-create-explanation": "Por padrão, etiquetas recém-criadas serão disponibilizadas para usuários e robôs",
        "tags-create-tag-name": "Nome de etiqueta",
        "tags-deactivate-not-allowed": "Não é possível desativar a etiqueta \"$1\".",
        "tags-deactivate-submit": "Desativar",
        "tags-apply-no-permission": "Você não tem permissão para aplicar mudanças de etiquetas, juntamente com suas alterações.",
+       "tags-apply-blocked": "Você não pode aplicar as mudanças nas etiquetas enquanto está bloqueado.",
        "tags-apply-not-allowed-one": "A etiqueta \"$1\" não pode ser aplicada manualmente.",
        "tags-apply-not-allowed-multi": "{{PLURAL:$2|A seguinte etiqueta não pode ser aplicada|As seguintes etiquetas não podem ser aplicadas}} manualmente: $1",
        "tags-update-no-permission": "Você não tem permissão para adicionar ou remover mudanças de etiquetas de revisões individuais ou entradas de registro.",
+       "tags-update-blocked": "Você não pode adicionar ou remover mudanças nas etiquetas enquanto bloqueado.",
        "tags-update-add-not-allowed-one": "A etiqueta \"$1\" não pode ser adicionada manualmente.",
        "tags-update-add-not-allowed-multi": "{{PLURAL:$2|A seguinte etiqueta não pode ser adicionada|As seguintes etiquetas não podem ser adicionadas}} manualmente: $1",
        "tags-update-remove-not-allowed-one": "A remoção da etiqueta \"$1\" não é permitida.",
        "pagelang-language": "Idioma",
        "pagelang-use-default": "Idioma padrão de uso",
        "pagelang-select-lang": "Selecionar idioma",
+       "pagelang-submit": "Enviar",
        "right-pagelang": "Mudar idioma da página",
        "action-pagelang": "mudar idioma da página",
        "log-name-pagelang": "Mudar idioma do log",
        "mw-widgets-dateinput-placeholder-month": "AAAA-MM",
        "mw-widgets-titleinput-description-new-page": "a página ainda não existe",
        "mw-widgets-titleinput-description-redirect": "redirecionar para $1",
-       "api-error-blacklisted": "Por favor, escolha  um título descritivo diferente."
+       "api-error-blacklisted": "Por favor, escolha  um título descritivo diferente.",
+       "randomrootpage": "Página raiz aleatória"
 }
index 24d4d72..72b7b3e 100644 (file)
        "october-date": "$1 de outubro",
        "november-date": "$1 de novembro",
        "december-date": "$1 de dezembro",
+       "period-am": "AM",
+       "period-pm": "PM",
        "pagecategories": "{{PLURAL:$1|Categoria|Categorias}}",
        "category_header": "Páginas na categoria \"$1\"",
        "subcategories": "Subcategorias",
        "laggedslavemode": "'''Aviso:''' A página pode não conter as atualizações mais recentes.",
        "readonly": "Base de dados bloqueada (limitada a leituras)",
        "enterlockreason": "Introduza um motivo para bloquear, incluindo uma estimativa de quando será desbloqueada",
-       "readonlytext": "A base de dados está bloqueada para impedir a inserção e modificação de dados, provavelmente para uma manutenção de rotina, após a qual a situação será normalizada.\n\nO administrador que a bloqueou deu a seguinte explicação: $1",
+       "readonlytext": "A base de dados está atualmente bloqueada para novas entradas e outras modificações, provavelmente para uma manutenção de rotina, após a qual voltará à sua normalidade.\n\nO administrador que a bloqueou deu a seguinte explicação: $1",
        "missing-article": "A base de dados não encontrou o texto de uma página que deveria ter encontrado, com o nome \"$1\" $2.\n\nGeralmente, esta situação ocorre ao clicar numa ligação para diferenças desatualizada ou para o histórico de uma página que tenha sido removida.\n\nSe nenhuma destas situações se verifica, pode ter encontrado um defeito no programa.\nAnote a URL e reporte este incidente a um [[Special:ListUsers/sysop|administrador]], por favor.",
        "missingarticle-rev": "(revisão#: $1)",
        "missingarticle-diff": "(Dif.: $1, $2)",
        "mypreferencesprotected": "Não tem permissão para editar as suas preferências.",
        "ns-specialprotected": "Não é possível editar páginas especiais.",
        "titleprotected": "Este título foi protegido contra criação por [[User:$1|$1]].\nA justificação dada foi \"''$2''\".",
-       "filereadonlyerror": "Não é possível modificar o ficheiro \"$1\" porque o repositório de ficheiros \"$2\" está em modo de leitura.\n\nO administrador que efetuou o bloqueio deu a seguinte explicação: \"$3\".",
+       "filereadonlyerror": "Não é possível modificar o ficheiro \"$1\" porque o repositório de ficheiros \"$2\" está em modo de leitura.\n\nO administrador do sistema que efetuou o bloqueio deu a seguinte explicação: \"$3\".",
        "invalidtitle-knownnamespace": "Título inválido com o domínio \"$2\" e texto \"$3\"",
        "invalidtitle-unknownnamespace": "Título inválido com número de domínio $1 desconhecido e texto \"$2\"",
        "exception-nologin": "Não está autenticado",
        "virus-unknownscanner": "antivírus desconhecido:",
        "logouttext": "<strong>Já não está autenticado.</strong>\n\nTenha em atenção que algumas páginas poderão continuar a ser apresentadas como se ainda estivesse autenticado até limpar a ''cache'' do seu navegador.",
        "cannotlogoutnow-title": "Não é possível encerrar a sessão agora",
+       "cannotlogoutnow-text": "Não pode encerrar a sessão quando utilizar $1.",
        "welcomeuser": "Bem-vindo, $1!",
        "welcomecreation-msg": "A sua conta foi criada.\nNão se esqueça de personalizar as suas [[Special:Preferences|preferências]].",
        "yourname": "Nome de utilizador(a):",
        "userlogin-remembermypassword": "Manter-me autenticado",
        "userlogin-signwithsecure": "Usar uma ligação segura",
        "cannotloginnow-title": "Não é possível iniciar sessão agora",
+       "cannotloginnow-text": "Não pode iniciar a sessão quando utilizar $1.",
        "yourdomainname": "O seu domínio:",
        "password-change-forbidden": "Não pode alterar palavras-passe nesta wiki.",
        "externaldberror": "Ocorreu um erro externo à base de dados durante a autenticação ou não lhe é permitido atualizar a sua conta externa.",
        "changepassword-success": "A sua palavra-passe foi alterada!",
        "changepassword-throttled": "Realizou demasiadas tentativas de início de sessão com esta conta.\nAguarde $1 antes de tentar novamente, por favor.",
        "botpasswords": "Palavras-passe de robô",
+       "botpasswords-summary": "As <em>palavras-passe de robô</em> permitem o acesso a uma conta de utilizador através da API sem utilizar as principais credenciais de login da conta. Os direitos de um utilizador, ao iniciar sessão com uma palavra-passe de robô, podem estar limitados.\n\nSe não sabe o que o leva a fazer isso, provavelmente não deveria fazê-lo. Ninguém deve solicitar que gere uma destas palavras-passe e a entregue.",
+       "botpasswords-disabled": "As palavras-passe de robô estão desactivadas.",
+       "botpasswords-no-central-id": "Para utilizar palavras-passe de robô, deve iniciar sessão com uma conta centralizada.",
+       "botpasswords-existing": "Palavras-passe de robô existentes",
        "botpasswords-createnew": "Criar uma nova palavra-passe para robô",
+       "botpasswords-editexisting": "Editar uma palavra-passe de robô existente",
        "botpasswords-label-appid": "Nome do robô:",
        "botpasswords-label-create": "Criar",
        "botpasswords-label-update": "Atualizar",
        "botpasswords-label-cancel": "Cancelar",
        "botpasswords-label-delete": "Eliminar",
        "botpasswords-label-resetpassword": "Redefinir palavra-passe",
+       "botpasswords-label-grants": "Permissões aplicáveis:",
        "botpasswords-label-restrictions": "Restrições de uso:",
+       "botpasswords-label-grants-column": "Concedido",
+       "botpasswords-bad-appid": "O nome do robô \"$1\" não é válido.",
+       "botpasswords-insert-failed": "Falhou ao adicionar o nome do robô \"$1\". Já foi adicionado?",
        "botpasswords-update-failed": "Falha ao atualizar o nome do robô \"$1\". Será que foi eliminado?",
        "botpasswords-created-title": "Criada palavra-passe para o robô",
        "botpasswords-created-body": "A palavra-passe para o robô \"$1\" foi criada com sucesso.",
+       "botpasswords-updated-title": "A palavra-passe de robô foi actualizada.",
+       "botpasswords-updated-body": "A palavra-passe de robô \"$1\" foi actualizada com sucesso.",
+       "botpasswords-deleted-title": "Palavra-passe de robô eliminada",
+       "botpasswords-deleted-body": "A palavra-passe de robô \"$1\" foi eliminada.",
        "botpasswords-newpassword": "A nova palavra-passe para iniciar sessão com <strong>$1</strong> é <strong>$2</strong>. Por favor, recorde-se dela para futura referência.</em>",
+       "botpasswords-no-provider": "BotPasswordsSessionProvider não está disponível.",
        "resetpass_forbidden": "Não é possível alterar palavras-passe",
        "resetpass-no-info": "Precisa de iniciar sessão para aceder diretamente a esta página.",
        "resetpass-submit-loggedin": "Alterar palavra-passe",
        "right-changetags": "Adicionar ou remover [[Special:Tags|etiquetas]] arbitrárias em revisões e entradas de registo individuais",
        "grant-generic": "Pacote de direitos \"$1\"",
        "grant-group-page-interaction": "Interagir com páginas",
-       "grant-group-file-interaction": "Interagir com multimédia",
+       "grant-group-file-interaction": "Interagir com conteúdo multimédia",
        "grant-group-watchlist-interaction": "Interagir com a sua lista de vigiados",
        "grant-group-email": "Enviar correio electrónico",
        "grant-group-high-volume": "Realizar actividades em grande quantidade",
        "action-createpage": "criar páginas",
        "action-createtalk": "criar páginas de discussão",
        "action-createaccount": "criar esta conta de utilizador",
+       "action-autocreateaccount": "criar automaticamente esta conta de utilizador externa",
        "action-history": "ver histórico desta página",
        "action-minoredit": "marcar esta edição como uma edição menor",
        "action-move": "mover esta página",
        "uploaded-script-svg": "Encontrou um elemento scriptable no ficheiro \"$1\" SVG carregado.",
        "uploaded-hostile-svg": "Encontrou-se um código CSS não seguro no elemento de estilo do arquivo SVG carregado.",
        "uploaded-event-handler-on-svg": "Não está permitido configurar atributos controladores de eventos <code>$1=\"$2\"</code> nos arquivos SVG.",
-       "uploaded-href-attribute-svg": "Não se permite que os arquivos SVG contenham os atributos de <code>&lt;$1 $2=\"$3\"&gt;</code> apontando a recursos não locais (p.ex. http://, javascript:,etc)",
        "uploadscriptednamespace": "Este ficheiro SVG contém um domínio que não é permitido \"$1\".",
        "uploadinvalidxml": "Erro detectado na análise do XML do ficheiro carregado.",
        "uploadvirus": "O ficheiro contém um vírus! \nDetalhes: $1",
        "filewasdeleted": "Um ficheiro com este nome foi carregado anteriormente e subsequentemente eliminado.\nDeverá verificar o $1 antes de voltar a enviá-lo.",
        "filename-bad-prefix": "O nome do ficheiro que está a enviar começa por '''\"$1\"''', um nome pouco explicativo, normalmente originado de forma automática por câmaras digitais. Escolha um nome de ficheiro mais explicativo, por favor.",
        "filename-prefix-blacklist": " #<!-- deixe esta linha exactamente como está --> <pre>\n# A sintaxe é a seguinte:\n#   * Tudo a partir do carácter \"#\" até ao fim da linha é um comentário\n#   * Todas as linhas não vazias são um prefixo para nomes de ficheiros típicos atribuídos automaticamente por câmaras digitais\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # alguns telefones móveis\nIMG # genérico\nJD # Jenoptik\nMGP # Pentax\nPICT # misc.\n #</pre> <!-- deixe esta linha exactamente como está -->",
-       "upload-success-subj": "Envio efetuado com sucesso",
-       "upload-success-msg": "O seu carregamento de [$2] foi bem sucedido. Está disponível aqui: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Problema no carregamento",
-       "upload-failure-msg": "Ocorreu um problema com o seu carregamento de [$2]:\n\n$1",
-       "upload-warning-subj": "Aviso de carregamento",
-       "upload-warning-msg": "Ocorreu um problema no seu carregamento de [$2]. Pode voltar ao [[Special:Upload/stash/$1|formulário de carregamento]] para resolver o problema.",
        "upload-proto-error": "Protocolo incorreto",
        "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-form-label-infoform-description": "Descrição",
        "upload-form-label-usage-title": "Uso",
        "upload-form-label-usage-filename": "Nome do ficheiro",
+       "foreign-structured-upload-form-label-own-work": "Este é minha obra própria",
        "foreign-structured-upload-form-label-infoform-categories": "Categorias",
        "foreign-structured-upload-form-label-infoform-date": "Data",
        "foreign-structured-upload-form-label-own-work-message-local": "Confirmo que estou a carregar este ficheiro segundo as condições de serviço e política de licenças de {{SITENAME}}.",
+       "foreign-structured-upload-form-label-not-own-work-message-local": "Se não é capaz de carregar este ficheiro sob as políticas de {{SITENAME}}, por favor feche esta janela e tente outro método.",
        "foreign-structured-upload-form-label-not-own-work-local-local": "Poderá querer experimentar [[Special:Upload|a página padrão de carregamento]].",
+       "foreign-structured-upload-form-label-own-work-message-default": "Entendo que estou a carregar este ficheiro em um repositório partilhado. Confirmo que estou a fazê-lo cumprindo com os termos de serviço e com as políticas de licenciamento dali.",
+       "foreign-structured-upload-form-label-not-own-work-message-default": "Se não é capaz de carregar este ficheiro sob as políticas do repositório partilhado, por favor feche esta janela e tente outro método.",
+       "foreign-structured-upload-form-label-not-own-work-local-default": "Pode querer tentar utilizar [[Special:Upload|a página de carregamento em {{SITENAME}}]], se este ficheiro puder ser carregado de acordo com suas políticas.",
+       "foreign-structured-upload-form-label-own-work-message-shared": "Confirmo que sou o proprietário dos direitos autorais deste ficheiro, e aceito liberar irrevogavelmente este ficheiro para o Wikimedia Commons nos termos da licença [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Atribuição-CompartilhaIgual 4.0], e concordo com os [https://wikimediafoundation.org/wiki/Terms_of_Use Termos de Utilização].",
+       "foreign-structured-upload-form-label-not-own-work-message-shared": "Se não é o proprietário dos direitos autorais deste ficheiro, ou caso deseje liberá-lo sob uma licença diferente, considere utilizar o [https://commons.wikimedia.org/wiki/Special:UploadWizard Assistente de Envio de Ficheiros do Commons].",
+       "foreign-structured-upload-form-label-not-own-work-local-shared": "Pode querer tentar utilizar [[Special:Upload|a página de carregamento em {{SITENAME}}]], se o sítio aceitar o carregamento deste ficheiro de acordo com suas políticas.",
+       "foreign-structured-upload-form-2-label-intro": "Obrigado por doar uma imagem para utilização em {{SITENAME}}. Deverá continuar apenas se cumprir algumas condições:",
+       "foreign-structured-upload-form-2-label-ownwork": "Deve ser inteiramente <strong>sua obra própria</strong>, não apenas retirada da Internet",
+       "foreign-structured-upload-form-2-label-noderiv": "Não pode conter <strong>nenhuma obra de qualquer outra pessoa</strong>, ou inspirado por elas",
+       "foreign-structured-upload-form-2-label-useful": "Deve ser <strong>educativo e útil</strong> para ensinar a outros",
+       "foreign-structured-upload-form-2-label-ccbysa": "Deve estar <strong>aceito para publicar para sempre</strong> na Internet nos termos da licença [https://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Atribuição-CompartilhaIgual 4.0]",
+       "foreign-structured-upload-form-2-label-alternative": "Caso nenhum dos itens acima for o correcto, ainda pode ser capaz de carregar este ficheiro ao utilizar o [https://commons.wikimedia.org/wiki/Special:UploadWizard Assistente para Envio de Ficheiros do Commons], desde que esteja disponível sob uma licença livre.",
        "foreign-structured-upload-form-3-label-yes": "Sim",
        "foreign-structured-upload-form-3-label-no": "Não",
+       "foreign-structured-upload-form-4-label-bad": "Não pode carregar imagens encontradas num motor de busca ou descarregadas de outros sítios.",
        "backend-fail-stream": "Não foi possível transmitir o ficheiro \"$1\".",
        "backend-fail-backup": "Não foi possível fazer cópia de segurança do ficheiro \"$1\".",
        "backend-fail-notexists": "O ficheiro $1 não existe.",
        "wlheader-showupdated": "As páginas modificadas desde a última vez que as visitou aparecem destacadas a '''negrito'''.",
        "wlnote": "A seguir {{PLURAL:$1|está a última alteração ocorrida|estão as últimas <strong>$1</strong> alterações ocorridas}} {{PLURAL:$2|na última hora|nas últimas <strong>$2</strong> horas}} até $3, $4.",
        "wlshowlast": "Ver últimas $1 horas $2 dias",
-       "watchlistall2": "desde sempre",
        "watchlist-hide": "Ocultar",
        "watchlist-submit": "Mostrar",
        "wlshowtime": "Período de tempo a mostrar:",
        "wlshowhideminor": "edições menores",
        "wlshowhidebots": "robôs",
-       "wlshowhideliu": "usuários registrados",
-       "wlshowhideanons": "usuários anônimos",
+       "wlshowhideliu": "utilizadores registados",
+       "wlshowhideanons": "utilizadores anónimos",
        "wlshowhidepatr": "edições patrulhadas",
        "wlshowhidemine": "minhas edições",
        "wlshowhidecategorization": "categorização de páginas",
        "lockedbyandtime": "(por {{GENDER:$1|$1}} em $2 às $3)",
        "move-page": "Mover $1",
        "move-page-legend": "Mover página",
-       "movepagetext": "Usando o formulário abaixo pode mover esta página e todo o seu histórico de edições para uma página nova com outro nome.\nA página original será transformada num redirecionamento para a página nova.\nPode corrigir de forma automática os redirecionamentos existentes que apontam para a página original.\nCaso escolha não o fazer, após a operação certifique-se de que dela não resultaram  [[Special:DoubleRedirects|redirecionamentos duplos]] ou [[Special:BrokenRedirects|quebrados]].\nÉ da sua responsabilidade verificar que as ligações continuam a apontar para onde é suposto que apontem.\n\nNote que a página '''não''' será movida se já existir uma página com o novo título, a menos que esta última seja um redirecionamento sem qualquer histórico de edições.\nIsto significa que pode mover uma página de volta para o seu nome original se a tiver movido por engano e que não pode mover uma página para cima de outra já existente.\n\n'''CUIDADO!'''\nNuma página popular esta operação pode representar uma mudança drástica e inesperada;\ncertifique-se de que compreende as consequências da mudança antes de prosseguir, por favor.",
-       "movepagetext-noredirectfixer": "Usando o formulário abaixo, pode alterar o nome de uma página e mover todo o histórico desta para o nome novo.\nA página antiga é transformada numa página de redirecionamento para a nova.\nVerifique a existência de [[Special:DoubleRedirects|redirecionamentos duplos]] ou [[Special:BrokenRedirects|quebrados]].\nÉ da sua responsabilidade certificar-se de que as ligações continuam a apontar para onde é suposto.\n\nNote que a página '''não''' será movida se já existir uma página com o nome novo, a menos que esta página já existente esteja vazia ou seja uma página de redirecionamento e não tenha um histórico de edições.\nIsto também significa que, se se tiver enganado, pode alterar o nome da página movida de volta para o seu nome original; e que não pode sobrescrever o conteúdo de uma página existente.\n\n'''Aviso!'''\nPara páginas populares, esta operação pode representar uma mudança drástica e inesperada;\ncertifique-se de que compreende as consequências da operação antes de continuar.",
+       "movepagetext": "Usando o formulário abaixo pode mover esta página e todo o seu histórico de edições para uma página nova com outro nome.\nA página original será transformada num redirecionamento para a página nova.\nPode corrigir de forma automática os redirecionamentos existentes que apontam para a página original.\nCaso escolha não o fazer, após a operação certifique-se de que dela não resultaram  [[Special:DoubleRedirects|redirecionamentos duplos]] ou [[Special:BrokenRedirects|quebrados]].\nÉ da sua responsabilidade verificar que as ligações continuam a apontar para onde é suposto que apontem.\n\nNote que a página '''não''' será movida se já existir uma página com o novo título, a menos que esta última seja um redirecionamento sem qualquer histórico de edições.\nIsto significa que pode mover uma página de volta para o seu nome original se a tiver movido por engano e que não pode mover uma página para cima de outra já existente.\n\n'''Nota:'''\nNuma página popular esta operação pode representar uma mudança drástica e inesperada;\ncertifique-se de que compreende as consequências da mudança antes de prosseguir, por favor.",
+       "movepagetext-noredirectfixer": "Usando o formulário abaixo, pode alterar o nome de uma página e mover todo o histórico desta para o nome novo.\nA página antiga é transformada numa página de redirecionamento para a nova.\nVerifique a existência de [[Special:DoubleRedirects|redirecionamentos duplos]] ou [[Special:BrokenRedirects|quebrados]].\nÉ da sua responsabilidade certificar-se de que as ligações continuam a apontar para onde é suposto.\n\nNote que a página '''não''' será movida se já existir uma página com o nome novo, a menos que esta página já existente esteja vazia ou seja uma página de redirecionamento e não tenha um histórico de edições.\nIsto também significa que, se se tiver enganado, pode alterar o nome da página movida de volta para o seu nome original; e que não pode sobrescrever o conteúdo de uma página existente.\n\n'''Nota:'''\nPara páginas populares, esta operação pode representar uma mudança drástica e inesperada;\ncertifique-se de que compreende as consequências da operação antes de continuar.",
        "movepagetalktext": "Se assinalar esta opção, e existir uma página de discussão associada, ela será automaticamente movida, a não ser que já exista uma página de discussão com o novo título que não esteja vazia.\n\nNeste caso, terá de mover a página de discussão manualmente, ou fundi-la com a existente, se assim desejar.",
        "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.",
        "movecategorypage-warning": "<strong>Aviso:</strong> Está prestes a mover uma categoria. Por favor, note que apenas moverá a página da categoria e quaisquer páginas que estejam listadas <em>não</em> serão recategorizadas na nova.",
        "movenosubpage": "Esta página não tem subpáginas.",
        "movereason": "Motivo:",
        "revertmove": "reverter",
-       "delete_and_move_text": "==Eliminação necessária==\nA página de destino (\"[[:$1]]\") já existe. Deseja eliminá-la de modo a poder mover?",
+       "delete_and_move_text": "A página de destino (\"[[:$1]]\") já existe. \nDeseja eliminá-la de modo a poder mover?",
        "delete_and_move_confirm": "Sim, eliminar a página",
        "delete_and_move_reason": "Eliminada para poder mover \"[[$1]]\" para este título",
        "selfmove": "Os títulos de origem e destino são iguais;\nnão é possível mover uma página para ela mesma.",
        "move-leave-redirect": "Criar um redirecionamento",
        "protectedpagemovewarning": "<strong>Aviso:</strong> Esta página foi protegida de modo que apenas os utilizadores com privilégios de administrador possam movê-la.\nA última entrada é fornecido abaixo como referência:",
        "semiprotectedpagemovewarning": "<strong>Note:</strong> Esta página foi protegida de modo que apenas utilizadores registados a possam mover.\nA última entrada é fornecida abaixo como referência:",
-       "move-over-sharedrepo": "== O ficheiro existe ==\n[[:$1]] já existe num repositório partilhado. Mover um ficheiro para o título [[:$1]] irá sobrepô-lo ao ficheiro partilhado.",
+       "move-over-sharedrepo": "[[:$1]] já existe num repositório partilhado. Mover um ficheiro para o título [[:$1]] irá substituir o ficheiro partilhado.",
        "file-exists-sharedrepo": "O nome de ficheiro que escolheu já é utilizado num repositório partilhado.\nEscolha outro nome, por favor.",
        "export": "Exportar páginas",
        "exporttext": "Pode exportar o texto e o histórico de edições de uma página em particular para um ficheiro XML. Poderá então importar esse conteúdo noutra wiki que utilize o programa MediaWiki, através da [[Special:Import|página de importações]].\n\nPara exportar páginas, introduza os títulos na caixa de texto abaixo (um título por linha) e selecione se deseja todas as versões, com as linhas de histórico de edições, ou apenas a edição atual e informações sobre a mais recente das edições.\n\nSe desejar, pode utilizar um link (por exemplo, [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] para a [[{{MediaWiki:Mainpage}}]]).",
        "expand_templates_preview": "Antevisão do resultado",
        "expand_templates_preview_fail_html": "<em>Devido ao fato de {{SITENAME}} possuir código HTML puro ativado e de ter havido perda de dados da sessão, a pré-visualização ficará oculta como precaução contra ataques por JavaScript.</em>\n\n<strong>Se esta é uma legítima tentativa de visualização, por favor tente novamente.</strong> Se ainda não funcionar, experimente [[Special:UserLogout|sair]] e iniciar sessão de novo.",
        "expand_templates_preview_fail_html_anon": "<em>Devido ao fato de {{SITENAME}} possuir código HTML puro ativado e de não ter sessão iniciada, a pré-visualização ficará oculta como precaução contra ataques do JavaScript.</em>\n\n<strong>Se esta é uma legítima tentativa de visualização, por favor [[Especial:UserLogin|inicie sessão]] e tente novamente.</strong>",
-       "pagelanguage": "Seletor de idioma da página",
+       "pagelanguage": "Alterar idioma da página",
        "pagelang-name": "Página",
        "pagelang-language": "Idioma",
        "pagelang-use-default": "Usar idioma pré-definido",
        "pagelang-submit": "Submeter",
        "right-pagelang": "Alterar o idioma da página",
        "action-pagelang": "alterar o idioma da página",
-       "log-name-pagelang": "Alterar registo de idioma",
+       "log-name-pagelang": "Registo de alteração de idioma",
        "log-description-pagelang": "Este é um registo de alterações aos idiomas das páginas.",
        "logentry-pagelang-pagelang": "$1 {{GENDER:$2|alterou}} o idioma da página $3 de $4 para $5.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (ativado)",
index 37e1a5a..388ec67 100644 (file)
        "virus-scanfailed": "Used as error message. \"scan\" stands for \"virus scan\". Parameters:\n* $1 - exit code of virus scanner",
        "virus-unknownscanner": "Used as error message. This message is followed by the virus scanner name.",
        "logouttext": "Log out message. Parameters:\n* $1 - (Unused) an URL to [[Special:Userlogin]] containing <code>returnto</code> and <code>returntoquery</code> parameters",
-       "cannotlogoutnow-title": "Error page title shown when logging out is not possible.",
-       "cannotlogoutnow-text": "Error page text shown when logging out is not possible. Parameters:\n* $1 - Session type in use that makes it not possible to log out, from a message like {{msg-mw|sessionprovider-mediawiki-session-cookiesessionprovider}}.",
        "welcomeuser": "Text for a welcome heading that users see after registering a user account.\n\nParameters:\n* $1 - the username of the new user. See [[phab:T44215]]",
        "welcomecreation-msg": "A welcome message users see after registering a user account, following a welcomeuser heading.\n\nParameters:\n* $1 - (Unused) the username of the new user.\n\nReplaces [[MediaWiki:welcomecreation|welcomecreation]] in 1.21wmf5, see [[phab:T44215]]",
        "yourname": "Since 1.22 no longer used in core, but used by some extensions.\n{{Identical|Username}}",
        "remembermypassword": "Used as checkbox label on [[Special:ChangePassword]]. Parameters:\n* $1 - number of days\n{{Identical|Remember my login on this computer}}",
        "userlogin-remembermypassword": "The text for a check box in [[Special:UserLogin]].",
        "userlogin-signwithsecure": "Text of link to HTTPS login form.\n\nSee example: [[Special:UserLogin]]",
-       "cannotloginnow-title": "Error page title shown when logging in is not possible.",
-       "cannotloginnow-text": "Error page text shown when logging in is not possible. Parameters:\n* $1 - Session type in use that makes it not possible to log in, from a message like {{msg-mw|sessionprovider-mediawiki-session-cookiesessionprovider}}.",
        "yourdomainname": "Used as label for listbox.",
        "password-change-forbidden": "Error message shown when an external authentication source does not allow the password to be changed.",
        "externaldberror": "This message is thrown when a valid attempt to change the wiki password for a user fails because of a database error or an error from an external system.",
        "resetpass_submit": "Submit button on [[Special:ChangePassword]]",
        "changepassword-success": "Used in [[Special:ChangePassword]].",
        "changepassword-throttled": "Error message shown at [[Special:ChangePassword]] after the user has tried to login with incorrect password too many times.\n\nThe user has to wait a certain time before trying to log in again.\n\nParameters:\n* $1 - the time to wait before the next login attempt. Automatically formatted using the following duration messages:\n** {{msg-mw|Duration-millennia}}\n** {{msg-mw|Duration-centuries}}\n** {{msg-mw|Duration-decades}}\n** {{msg-mw|Duration-years}}\n** {{msg-mw|Duration-weeks}}\n** {{msg-mw|Duration-days}}\n** {{msg-mw|Duration-hours}}\n** {{msg-mw|Duration-minutes}}\n** {{msg-mw|Duration-seconds}}\n\nThis is a protection against robots trying to find the password by trying lots of them.\nThe number of attempts and waiting time are configured via [[mw:Manual:$wgPasswordAttemptThrottle|$wgPasswordAttemptThrottle]].\nThis message is used in html.\n\nSee also:\n* {{msg-mw|Changeemail-throttled}}",
-       "botpasswords": "The name of the special page [[Special:BotPasswords]].",
-       "botpasswords-summary": "Explanatory text shown at the top of [[Special:BotPasswords]].",
-       "botpasswords-disabled": "Error message displayed when bot passwords are not enabled (<code>$wgEnableBotPasswords = false</code>).",
-       "botpasswords-no-central-id": "Error message displayed when the current user does not have a central ID (e.g. they're not logged in or not attached in something like CentralAuth).",
-       "botpasswords-existing": "Form section label for the part of the form listing the user's existing bot passwords.",
-       "botpasswords-createnew": "Form section label for the part of the form related to creating a new bot password.",
-       "botpasswords-editexisting": "Form section label for the part of the form related to editing an existing bot password.",
-       "botpasswords-label-appid": "Form field label for the \"bot name\", internally known as the \"application ID\".",
-       "botpasswords-label-create": "Button label for the button to create a new bot password.\n{{Identical|Create}}",
-       "botpasswords-label-update": "Button label for the button to save changes to a bot password.\n{{Identical|Update}}",
-       "botpasswords-label-cancel": "Button label for a button to cancel the creation or edit of a bot password.\n{{Identical|Cancel}}",
-       "botpasswords-label-delete": "Button label for the button to delete a bot password.\n{{Identical|Delete}}",
-       "botpasswords-label-resetpassword": "Label for the checkbox to reset the actual password for the current bot password.",
-       "botpasswords-label-grants": "Label for the checkmatrix for selecting grants allowed when the bot password is used.",
-       "botpasswords-help-grants": "Help text for the grant selection checkmatrix.",
-       "botpasswords-label-restrictions": "Label for the textarea field in which JSON defining access restrictions (e.g. which IP address ranges are allowed) is entered.",
-       "botpasswords-label-grants-column": "Label for the checkbox column on the checkmatrix for selecting grants allowed when the bot password is used.",
-       "botpasswords-bad-appid": "Used as an error message when an invalid \"bot name\" is supplied on [[Special:BotPasswords]]. Parameters:\n* $1 - The rejected bot name.",
-       "botpasswords-insert-failed": "Error message when saving a new bot password failed. It's likely that the failure was because the user resubmitted the form after a previous successful save. Parameters:\n* $1 - Bot name",
-       "botpasswords-update-failed": "Error message when saving changes to an existing bot password failed. It's likely that the failure was because the user deleted the bot password in another browser window. Parameters:\n* $1 - Bot name",
-       "botpasswords-created-title": "Title of the success page when a new bot password is created.",
-       "botpasswords-created-body": "Success message when a new bot password is created. Parameters:\n* $1 - Bot name",
-       "botpasswords-updated-title": "Title of the success page when a bot password is updated.",
-       "botpasswords-updated-body": "Success message when a bot password is updated. Parameters:\n* $1 - Bot name",
-       "botpasswords-deleted-title": "Title of the success page when a bot password is deleted.",
-       "botpasswords-deleted-body": "Success message when a bot password is deleted. Parameters:\n* $1 - Bot name",
-       "botpasswords-newpassword": "Success message to display the new password when a bot password is created or updated. Parameters:\n* $1 - User name to be used for login.\n* $2 - Password to be used for login.",
-       "botpasswords-no-provider": "Error message when login is attempted but the BotPasswordsSessionProvider is not included in <code>$wgSessionProviders</code>.",
-       "botpasswords-restriction-failed": "Error message when login is rejected because the configured restrictions were not satisfied.",
-       "botpasswords-invalid-name": "Error message when a username lacking the separator character is passed to BotPassword. Parameters:\n* $1 - The separator character.",
-       "botpasswords-not-exist": "Error message when a username exists but does not a bot password for the given \"bot name\". Parameters:\n* $1 - username\n* $2 - bot name",
        "resetpass_forbidden": "Used as error message in changing password. Maybe the external auth plugin won't allow local password changes.",
        "resetpass-no-info": "Error message for [[Special:ChangePassword]].\n\nParameters:\n* $1 (unused) - a link to [[Special:UserLogin]] with {{msg-mw|loginreqlink}} as link description",
        "resetpass-submit-loggedin": "Button on [[Special:ResetPass]] to submit new password.\n\n{{Identical|Change password}}",
        "right-createpage": "{{doc-right|createpage}}\nBasic right to create pages. The right to edit discussion/talk pages is {{msg-mw|right-createtalk}}.",
        "right-createtalk": "{{doc-right|createtalk}}\nBasic right to create discussion/talk pages. The right to edit other pages is {{msg-mw|right-createpage}}.",
        "right-createaccount": "{{doc-right|createaccount}}\nThe right to [[Special:CreateAccount|create a user account]].",
-       "right-autocreateaccount": "{{doc-right|autocreateaccount}}\nThe right to automatically create an account from an external source (e.g. CentralAuth).",
        "right-minoredit": "{{doc-right|minoredit}}\nThe right to use the \"This is a minor edit\" checkbox. See {{msg-mw|minoredit}} for the message used for that checkbox.",
        "right-move": "{{doc-right|move}}\nThe right to move any page that is not protected from moving.\n{{Identical|Move page}}",
        "right-move-subpages": "{{doc-right|move-subpages}}",
        "action-createpage": "{{Doc-action|createpage}}\n{{Identical|Create page}}",
        "action-createtalk": "{{Doc-action|createtalk}}",
        "action-createaccount": "{{Doc-action|createaccount}}",
-       "action-autocreateaccount": "{{Doc-action|autocreateaccount}}",
        "action-history": "{{Doc-action|history}}",
        "action-minoredit": "{{Doc-action|minoredit}}",
        "action-move": "{{Doc-action|move}}",
        "uploaded-script-svg": "Used as error message when uploading an SVG file that contains scriptable tags (script, handler, stylesheet, iframe).\n\nParameters:\n* $1 - The scriptable tag that blocked the SVG file from uploading.",
        "uploaded-hostile-svg": "Used as error message when uploading an SVG file that contains unsafe CSS.",
        "uploaded-event-handler-on-svg": "Used as error message when uploading an SVG file that contains event-handler attributes.\n\nParameters:\n* $1 - The event-handler attribute that is being modified in the SVG file.\n* $2 - The value that is given to the event-handler attribute.",
-       "uploaded-href-attribute-svg": "Used as error message when uploading an SVG file that contains href attribute with non-local target (like http://, javascript:, etc).\n\nParameters:\n* $1 - The name of the tag containing href attribute.\n* $2 - The attribute \"href\".\n* $3 - The value of the href attribute.",
+       "uploaded-href-attribute-svg": "Used as error message when uploading an SVG file that contains href attribute with disallowed target.\n\nParameters:\n* $1 - The name of the tag containing href attribute.\n* $2 - The attribute \"href\".\n* $3 - The value of the href attribute.",
        "uploaded-href-unsafe-target-svg": "Used as error message when uploading an SVG file that contains href to some unsafe target.\n\nParameters:\n* $1 - The name of the tag containing href attribute.\n* $2 - The attribute \"href\".\n* $3 - The value of the href attribute.",
        "uploaded-animate-svg": "Used as error message when uploading an SVG file that contains the element <animate> that might be changing href.\n\nParameters:\n* $1 - The name of the HTML tag.\n* $2 - The name of the attribute.\n* $3 - The value getting assigned to the attribute.",
        "uploaded-setting-event-handler-svg": "Used as error message when uploading an SVG file that sets the event-handler attribute, using <set> or <animate> tags.\n\nParameters:\n* $1 - The name of the HTML tag.\n* $2 - The name of the attribute.\n* $3 - The value getting assigned to the attribute.",
        "filename-thumb-name": "Appears when thumbnail title is similar to \"22px-Example.jpg\" - the prefix is what MW adds when downloading pictures as thumbnails.",
        "filename-bad-prefix": "Used as warning in [[Special:Upload]]. Parameters:\n* $1 - prefix\nSee also:\n* {{msg-mw|fileexists}}\n* {{msg-mw|filepageexists}}\n* {{msg-mw|fileexists-extension}}\n* {{msg-mw|fileexists-thumbnail-yes}}\n* {{msg-mw|file-thumbnail-no}}\n* {{msg-mw|filewasdeleted}}",
        "filename-prefix-blacklist": "{{optional}}\nDo not translate the file name prefixes before the hash mark (#). Leave all the wiki markup, including the spaces, as is. You can translate the text, including 'Leave this line exactly as it is'. The first line of this messages has one (1) leading space.",
-       "upload-success-subj": "Used as message subject which is posted on the user talk page.\n\nSee also:\n* {{msg-mw|upload-success-subj|subject}}\n* {{msg-mw|upload-success-msg|message}}\n* {{msg-mw|upload-failure-subj|subject}}\n* {{msg-mw|upload-failure-msg|message}}",
-       "upload-success-msg": "Used as message body which is posted on the user talk page. Parameters:\n* $1 - the local file name after uploading\n* $2 - the URL the file was uploaded from, when using upload-by-URL\nSee also:\n* {{msg-mw|upload-success-subj|subject}}\n* {{msg-mw|upload-success-msg|message}}\n* {{msg-mw|upload-failure-subj|subject}}\n* {{msg-mw|upload-failure-msg|message}}",
-       "upload-failure-subj": "Used as message subject which is posted on the user talk page.\n\nI think this message should be translated as opposed to {{msg-mw|upload-success-subj}}.\n\nSee also:\n* {{msg-mw|upload-success-subj|subject}}\n* {{msg-mw|upload-success-msg|message}}\n* {{msg-mw|upload-failure-subj|subject}}\n* {{msg-mw|upload-failure-msg|message}}",
-       "upload-failure-msg": "Used as message body which is posted on the user talk page. Parameters:\n* $1 - the specific error message\n* $2 - the URL the file tried to upload from, when using upload-by-URL.\nSee also:\n* {{msg-mw|upload-success-subj|subject}}\n* {{msg-mw|upload-success-msg|message}}\n* {{msg-mw|upload-failure-subj|subject}}\n* {{msg-mw|upload-failure-msg|message}}",
-       "upload-warning-subj": "Used as warning subject which is posted on the user talk page.\n\nSee also:\n* {{msg-mw|upload-warning-subj|subject}}\n* {{msg-mw|upload-warning-msg|message}}",
-       "upload-warning-msg": "Used as warning body which is posted on the user talk page. Parameters:\n* $1 - the URL the file was uploaded from, when using upload-by-URL\n* $2 - the session key for the upload\nSee also:\n* {{msg-mw|Upload-warning-subj|subject}}",
        "upload-proto-error": "See also:\n* {{msg-mw|Upload-proto-error|title}}\n* {{msg-mw|Upload-proto-error-text|text}}",
        "upload-proto-error-text": "\"Remote upload\" is explained on [[w:Uploading_and_downloading#Remote_upload|Wikipedia]].\n\nSee also:\n* {{msg-mw|Upload-proto-error|title}}\n* {{msg-mw|Upload-proto-error-text|text}}",
        "upload-file-error": "Unused on core [[mw:Special:Code/MediaWiki/53282]].\n\nExtensions making use of it:\n*ImportFreeImages\n*SemanticForms\nSee also:\n* {{msg-mw|Upload-file-error|title}}\n* {{msg-mw|Upload-file-error-text|text}}\n{{Identical|Internal error}}",
        "upload-too-many-redirects": "Error message shown when uploading a file via URL, if the upload failed because the URL returned too many redirects.",
        "upload-http-error": "Parameters:\n* $1 - error message",
        "upload-copy-upload-invalid-domain": "Error message shown if a user is trying to upload (i.e. copy) a file from a website that is not in $wgCopyUploadsDomains (if set).\n\nSee also:\n* {{msg-mw|http-invalid-url}}\n* {{msg-mw|tmp-create-error}}\n* {{msg-mw|tmp-write-error}}",
+       "upload-foreign-cant-upload": "Error message shown when a user is trying to upload a file to foreign repository that is not configured to receive file uploads from current wiki.",
        "upload-dialog-title": "Title of the upload dialog box\n{{Identical|Upload file}}",
        "upload-dialog-button-cancel": "Button to cancel the dialog\n{{Identical|Cancel}}",
        "upload-dialog-button-done": "Button to close the dialog once upload is complete\n{{Identical|Done}}",
        "foreign-structured-upload-form-label-own-work": "[[File:Cross-wiki media upload dialog, December 2015 AB test option 1.png|thumb]] Label for own work confirmation checkbox",
        "foreign-structured-upload-form-label-infoform-categories": "Label for category selector input\n{{Identical|Category}}",
        "foreign-structured-upload-form-label-infoform-date": "Label for date input\n{{Identical|Date}}",
-       "foreign-structured-upload-form-label-own-work-message-local": "Message shown by local when a user affirms that they are allowed to upload a file to the local wiki.",
+       "foreign-structured-upload-form-label-own-work-message-local": "Message shown by local when a user affirms that their file upload to the local wiki follows the terms of service and licensing policies of the local wiki.",
        "foreign-structured-upload-form-label-not-own-work-message-local": "Message shown by local when a user cannot upload a file to the local wiki.",
        "foreign-structured-upload-form-label-not-own-work-local-local": "Suggests uploading a file via Special:Upload instead of using whatever method they're currently using.",
        "foreign-structured-upload-form-label-own-work-message-default": "Message shown by default when a user affirms that they are allowed to upload a file to a remote wiki.",
        "wlheader-showupdated": "Message at the top of [[Special:Watchlist]], after {{msg-mw|watchlist-details}}. Has to be a full sentence.",
        "wlnote": "Used on [[Special:Watchlist]] when a maximum number of hours or days is specified.\n\nParameters:\n* $1 - the number of changes shown\n* $2 - the number of hours for which the changes are shown\n* $3 - a date alone\n* $4 - a time alone",
        "wlshowlast": "Appears on [[Special:Watchlist]]. Parameters:\n* $1 - a choice of different numbers of hours (\"1 | 2 | 6 | 12\")\n* $2 - a choice of different numbers of days (\"1 | 3 | 7\" and the maximum number of days available)\nClicking on your choice changes the list of changes you see (without changing the default in my preferences).",
-       "watchlistall2": "Appears on [[Special:Watchlist]], after {{msg-mw|wlshowtime}}, as the option to display all available data regardless of age.\n{{Identical|All}}",
        "watchlist-hide": "Appears on [[Special:Watchlist]]. It is the first word on a new line with checkboxes to hide/unhide options\n{{Identical|Hide}}",
        "watchlist-submit": "Label on the submit button in [[Special:Watchlist]]\n{{Identical|Show}}",
-       "wlshowtime": "Appears on [[Special:Watchlist]]. Label of a drop-down list used to specify the period of time to display in the watchlist. This period can be {{msg-mw|days}}, {{msg-mw|hours}}, or {{msg-mw|watchlistall2}}.",
+       "wlshowtime": "Appears on [[Special:Watchlist]]. Label of a drop-down list used to specify the period of time to display in the watchlist. This period can be {{msg-mw|days}} or {{msg-mw|hours}}.",
        "wlshowhideminor": "Option text in [[Special:Watchlist]]. Cf. {{msg-mw|rcshowhideminor}}.\n{{Identical|Minor edit}}",
        "wlshowhidebots": "Option text in [[Special:Watchlist]]. Cf. {{msg-mw|rcshowhidebots}}.\n{{Identical|Bot}}",
        "wlshowhideliu": "Option text in [[Special:Watchlist]]. Cf. {{msg-mw|rcshowhideliu}}.\n{{Identical|Registered user}}",
        "version-hook-subscribedby": "Shown in [[Special:Version]]",
        "version-version": "{{Optional}}\nUsed in [[Special:Version]]. Preceded by the MediaWiki extension name.\n\nParameters:\n* $1 - version number of the extension",
        "version-no-ext-name": "Used in [[Special:Version]], in the rows of the main table when a name for an extension is not provided.",
-       "version-svn-revision": "{{Identical|Revision}}{{optional}}\nUsed in [[Special:Version]], preceeding the Subversion revision numbers of the extensions loaded inside brackets, like this: \"({{int:version-revision}} r012345\"). Parameters:\n* $1 - (Unused) directory revision number or empty string\n* $2 - checkout revision number",
        "version-license": "Used specifically for the MediaWiki software.\n\nUsed as heading in [[Special:Version]].",
        "version-ext-license": "Used in [[Special:Version]].\n\nUsed as label for the link pointing to the extension's license page. e.g. [[Special:Version/License/Maps]]\n{{Identical|License}}",
        "version-ext-colheader-name": "Column header for the name of an extension.\n{{Identical|Extension}}",
        "version-libraries-license": "Column header for the library's license\n{{Identical|License}}",
        "version-libraries-description": "Column header for the library's description\n{{Identical|Description}}",
        "version-libraries-authors": "Column header for the library's authors\n{{Identical|Author}}",
-       "redirect": "{{doc-special|Redirect}}\nThis means \"Redirect by file'''name''', user '''ID''', page '''ID''', or revision ID\".",
+       "redirect": "{{doc-special|Redirect}}\nThis means \"Redirect by file '''name''', user '''ID''', page '''ID''', revision '''ID''', or log '''ID'''\".",
        "redirect-legend": "Legend of fieldset around input box in [[Special:Redirect]]",
        "redirect-text": "Inside fieldset for [[Special:Redirect]]",
        "redirect-summary": "Shown at top of [[Special:Redirect]]",
        "tags-update-remove-not-allowed-multi": "Error message seen via the API when a user tries to remove more than one tag that is not properly defined.\n\nParameters:\n* $1 - comma-separated list of tag names\n* $2 - number of tags",
        "tags-edit-title": "The title of a page where tags can be added or removed from selected revisions or log entries.\nFor more information on tags see [[mw:Manual:Tags]].",
        "tags-edit-manage-link": "Text of a link to [[Special:Tags]], in imperative mood. Refers to the same thing as {{msg-mw|log-name-managetags}}.",
-       "tags-edit-revision-selected": "{{Identical|revdelete-selected-text}}\n\nSee also:\n* {{msg-mw|tags-edit-logentry-selected}}",
+       "tags-edit-revision-selected": "{{Identical|revdelete-selected-text}}\n\nParameters:\n* $1 - Number of ids of selected revisions\n* $2 - Title of the page that user has selected revisions of\nSee also:\n* {{msg-mw|tags-edit-logentry-selected}}",
        "tags-edit-logentry-selected": "{{Identical|logdelete-selected}}\n\nSee also:\n* {{msg-mw|tags-edit-revision-selected}}",
        "tags-edit-revision-explanation": "Leave blank.\n\nSee also:\n* {{msg-mw|tags-edit-logentry-explanation}}",
        "tags-edit-logentry-explanation": "Leave blank.\n\nSee also:\n* {{msg-mw|tags-edit-revision-explanation}}",
        "mw-widgets-titleinput-description-new-page": "Description label for a new page in the title input widget.",
        "mw-widgets-titleinput-description-redirect": "Description label for a redirect in the title input widget.",
        "api-error-blacklisted": "Used as error message.\n\nFollowed by the link {{msg-mw|Mwe-upwiz-feedback-blacklist-info-prompt}}.",
-       "sessionmanager-tie": "Used as an error message when multiple session sources are tied in priority.\n\nParameters:\n* $1 - List of dession type descriptions, from messages like {{msg-mw|sessionprovider-mediawiki-session-cookiesessionprovider}}.",
-       "sessionprovider-generic": "Used to create a generic session type description when one isn't provided via the proper message. Should be phrased to make sense when added to a message such as {{msg-mw|cannotloginnow-text}}.\n\nParameters:\n* $1 - PHP classname.",
-       "sessionprovider-mediawiki-session-cookiesessionprovider": "Description of the sessions provided by the CookieSessionProvider class, which use HTTP cookies. Should be phrased to make sense when added to a message such as {{msg-mw|cannotloginnow-text}}.",
-       "sessionprovider-nocookies": "Used to inform the user that sessions may be missing due to lack of cookies.",
        "randomrootpage": "{{doc-special|RandomRootPage}}"
 }
index ccac1fe..fd35f68 100644 (file)
        "botpasswords": "Parole roboți",
        "botpasswords-summary": "<em>Parolele de roboți</em> permit accesul la un cont de utilizator prin intermediul API-ului fără utilizarea identificatorilor de conectare principali ai contului. Este posibil ca drepturile de utilizator disponibile după conectarea cu parole de roboți să fie restricționate.\n\nDacă nu știți exact de ce ați recurge la această metodă, probabil ar trebui să nu o faceți. Nimeni nu ar trebui să vă ceară vreodată să generați acest tip de parolă și să le-o furnizați.",
        "botpasswords-disabled": "Parolele de roboți sunt dezactivate.",
+       "botpasswords-existing": "Parole de robot existente",
+       "botpasswords-label-restrictions": "Restricții de utilizare:",
        "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",
        "userrights": "Administrare permisiuni de utilizator",
        "userrights-lookup-user": "Administrare grupuri de utilizatori",
        "userrights-user-editname": "Introduceți un nume de utilizator:",
-       "editusergroup": "Modificare grup de utilizatori",
+       "editusergroup": "Modificare grup de {{GENDER:$1|utilizatori}}",
        "editinguser": "Modificarea permisiunilor de {{GENDER:$1|utilizator}} pentru <strong>[[User:$1|$1]]</strong> $2",
        "userrights-editusergroup": "Modificare grup de utilizatori",
-       "saveusergroups": "Salvează grupul de utilizatori",
+       "saveusergroups": "Salvează grupul de {{GENDER:$1|utilizatori}}",
        "userrights-groupsmember": "Membru al:",
        "userrights-groupsmember-auto": "Membru, implicit, al:",
        "userrights-groups-help": "Puteți schimba grupul căruia îi aparține utilizatorul:\n*Căsuța bifată înseamnă că utilizatorul aparține grupului respectiv.\n*Căsuța nebifată înseamnă că utilizatorul nu aparține grupului respectiv.\n*Steluța (*) indică faptul că utilizatorul nu poate fi eliminat din grup odată adăugat, sau invers.",
        "right-managechangetags": "Creează și șterge [[Special:Tags|etichete]] din baza de date",
        "right-applychangetags": "Aplică [[Special:Tags|etichete]] asociate modificărilor unui utilizator",
        "right-changetags": "Adaugă și înlătură [[Special:Tags|etichete]] arbitrare din versiuni și intrări de jurnal individuale",
+       "grant-basic": "Drepturi de bază",
        "newuserlogpage": "Jurnal utilizatori noi",
        "newuserlogpagetext": "Acesta este jurnalul creărilor conturilor de utilizator.",
        "rightslog": "Jurnal permisiuni de utilizator",
        "uploaded-script-svg": "S-a găsit elementul „$1” scriptabil în fișierul SVG încărcat.",
        "uploaded-hostile-svg": "S-a descoperit CSS vulnerabil în elementul de stil al fișierului SVG încărcat.",
        "uploaded-event-handler-on-svg": "Setarea atributelor <code>$1=„$2”</code> de gestionare a evenimentului nu este permisă pentru fișierele SVG.",
-       "uploaded-href-attribute-svg": "Atributele href <code>&lt;$1 $2=„$3”&gt;</code> cu alte destinații decât cele locale (de ex. http://, javascript: etc.) nu sunt permise în fișierele SVG.",
        "uploaded-href-unsafe-target-svg": "S-a găsit href către o destinație nesigură <code>&lt;$1 $2=„$3”&gt;</code> în fișierul SVG încărcat.",
        "uploaded-animate-svg": "S-a găsit în fișierul SVG încărcat eticheta „animate” care ar putea modifica valoarea href folosind atributul „from” <code>&lt;$1 $2=„$3”&gt;</code>.",
        "uploaded-setting-event-handler-svg": "Setarea atributelor de gestionare a evenimentului nu este permisă; s-a găsit <code>&lt;$1 $2=„$3”&gt;</code> în fișierul SVG încărcat.",
        "filename-thumb-name": "Acesta arată ca un titlu pentru o miniatură. Vă rugăm să nu încărcați miniaturi înapoi pe același wiki. În caz contrar, vă rugăm să corectați numele fișierului pentru ca acesta să fie mai descriptiv și să nu aibă prefixul de miniatură.",
        "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.\nVă rugăm, alegeți un nume mai descriptiv pentru fișerul dumneavoastră.",
        "filename-prefix-blacklist": " #<!-- lăsați această linie exact așa cum este --> <pre>\n# Sintaxa după cum urmează:\n# * Tot ceea ce începe cu „#” și până la sfârșitul rândului reprezintă un comentariu\n# * Fiecare rând care nu este gol reprezintă un prefix pentru numele tipice de fișiere atribuite automat de camerele digitale\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # unele telefoane mobile\nIMG # generic\nJD # Jenoptik\nMGP # Pentax\nPICT # diverse\n#</pre> <!-- lăsați această linie exact așa cum este -->",
-       "upload-success-subj": "Fișierul a fost trimis",
-       "upload-success-msg": "Încărcarea de la [$2] s-a încheiat cu succes. Rezultatul este disponibil aici: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Problemă la trimitere",
-       "upload-failure-msg": "A apărut o problemă cu încărcarea de la [$2]:\n\n$1",
-       "upload-warning-subj": "Avertizare la încărcare",
-       "upload-warning-msg": "A apărut o problemă în timpul încărcării de la [$2]. Vă puteți întoarce la [[Special:Upload/stash/$1|formularul de trimitere]] pentru a corecta această problemă.",
        "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ă",
        "log-title-wildcard": "Caută titluri care încep cu acest text",
        "showhideselectedlogentries": "Arată/ascunde intrările selectate din jurnal",
        "log-edit-tags": "Modifică etichetele intrărilor de jurnal selectate",
+       "checkbox-select": "Selectare: $1",
+       "checkbox-all": "Toate",
+       "checkbox-none": "Niciuna",
+       "checkbox-invert": "Inversează",
        "allpages": "Toate paginile",
        "nextpage": "Pagina următoare ($1)",
        "prevpage": "Pagina anterioară ($1)",
        "listgrouprights-namespaceprotection-header": "Restricții de spațiu de nume",
        "listgrouprights-namespaceprotection-namespace": "Spațiu de nume",
        "listgrouprights-namespaceprotection-restrictedto": "Drept(uri) care permit(e) utilizatorului modificări",
+       "listgrants": "Permisiuni",
+       "listgrants-grant": "Permisiune",
+       "listgrants-rights": "Drepturi",
        "trackingcategories": "Categorii de urmărire",
        "trackingcategories-summary": "Această pagină conține categorii de urmărire care sunt populate în mod automat de către software-ul MediaWiki. Numele acestora se poate schimba modificând mesajele de sistem relevante din spațiul de nume {{ns:8}}.",
        "trackingcategories-msg": "Categorie de urmărire",
        "wlheader-showupdated": "Paginile care au fost modificate după ultima dumneavoastră vizită sunt afișate '''îngroșat'''.",
        "wlnote": "Mai jos se află {{PLURAL:$1|ultima schimbare|ultimele <strong>$1</strong> schimbări|ultimele <strong>$1</strong> de schimbări}} din {{PLURAL:$2|ultima oră|ultimele <strong>$2</strong> ore|ultimele <strong>$2</strong> de ore}}, așa cum era situația la $3, $4.",
        "wlshowlast": "Arată ultimele $1 ore $2 zile",
-       "watchlistall2": "toate",
        "watchlist-hide": "Ascunde",
        "watchlist-submit": "Afișează",
        "wlshowtime": "Perioada de timp de afișat:",
        "block-log-flags-hiddenname": "nume de utilizator ascuns",
        "range_block_disabled": "Abilitatea dezvoltatorilor de a bloca serii de adrese este dezactivată.",
        "ipb_expiry_invalid": "Dată de expirare invalidă.",
+       "ipb_expiry_old": "Timpul de expirare este din trecut.",
        "ipb_expiry_temp": "Blocarea numelor de utilizator ascunse trebuie să fie permanentă.",
        "ipb_hide_invalid": "Imposibil de suprimat acest cont; acesta are mai mult de {{PLURAL:$1|o modificare|$1 modificări|$1 de modificări}}.",
        "ipb_already_blocked": "„$1” este deja blocat",
        "movenosubpage": "Această pagină nu are subpagini.",
        "movereason": "Motiv:",
        "revertmove": "revenire",
-       "delete_and_move_text": "==Ștergere necesară==\n\nPagina destinație „[[:$1]]” există deja. Doriți să o ștergeți pentru a face loc redenumirii?",
+       "delete_and_move_text": "Pagina destinație „[[:$1]]” există deja. Doriți să o ștergeți pentru a face loc redenumirii?",
        "delete_and_move_confirm": "Da, șterge pagina.",
        "delete_and_move_reason": "Șters pentru a face loc redenumirii paginii „[[$1]]”",
        "selfmove": "Titlul sursei și al destinației este aceleași; nu puteți redenumi o pagină peste ea însăși.",
        "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.\nUltima 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.'''\nUltima intrare în jurnal este afișată mai jos pentru referință:",
-       "move-over-sharedrepo": "== Fișierul există ==\n[[:$1]] există deja într-un depozit partajat. Redenumirea fișierului la acest titlu va suprascrie fișierul partajat și îl va face inaccesibil.",
+       "move-over-sharedrepo": "[[:$1]] există deja într-un depozit partajat. Redenumirea fișierului la acest titlu va suprascrie fișierul partajat și îl va face inaccesibil.",
        "file-exists-sharedrepo": "Numele ales al fișierului este deja în utilizare într-un depozit împărțit.\nAlegeți un alt nume.",
        "export": "Exportare pagini",
        "exporttext": "Puteți exporta textul și istoricul unei pagini anume sau ale unui grup de pagini în XML.\nAcesta poate fi apoi importate în alt wiki care rulează software MediaWiki prin [[Special:Import|pagina de importare]].\n\nPentru a exporta, introduceți titlurile în căsuța de mai jos, unul pe linie, și alegeți dacă doriți să exportați doar această versiune sau și cele mai vechi, cu istoricul lor, sau versiunea curentă cu informații despre ultima modificare.\n\nÎn al doilea caz puteți folosi o legătură, de exemplu [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] pentru pagina „[[{{MediaWiki:Mainpage}}]]”.",
        "siteuser": "Utilizator {{SITENAME}} $1",
        "anonuser": "utlizator anonim $1 al {{SITENAME}}",
        "lastmodifiedatby": "Pagina a fost modificată pe $1, la $2 de către $3.",
-       "othercontribs": "Bazat pe munca lui $1.",
+       "othercontribs": "Bazat pe munca următorilor: $1.",
        "others": "alții",
-       "siteusers": "{{PLURAL:$2|Utilizator|Utilizatori}} {{SITENAME}} $1",
+       "siteusers": "{{PLURAL:$2|utilizator|utilizatori}} de la {{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ă.",
        "pageinfo-category-files": "Număr de fișiere",
        "markaspatrolleddiff": "Marchează pagina ca verificată",
        "markaspatrolledtext": "Marchează această pagină ca verificată",
+       "markaspatrolledtext-file": "Marchează această versiune a fișierului ca verificată",
        "markedaspatrolled": "Pagină nouă verificată",
        "markedaspatrolledtext": "Versiunea selectată a paginii [[:$1]] a fost marcată ca verificată.",
        "rcpatroldisabled": "Opțiunea de verificare a modificărilor recente este dezactivată",
        "newimages-legend": "Filtru",
        "newimages-label": "Numele fișierului (sau parte din el):",
        "newimages-showbots": "Arată încărcările roboților",
+       "newimages-hidepatrolled": "Ascunde încărcările patrulate",
        "noimages": "Nimic de văzut.",
        "ilsubmit": "Caută",
        "bydate": "după dată",
        "scarytranscludefailed-httpstatus": "[Șiretlicul formatului a dat greș pentru $1: HTTP $2]",
        "scarytranscludetoolong": "[URL-ul este prea lung]",
        "deletedwhileediting": "'''Atenție''': Această pagină a fost ștearsă după ce ați început s-o modificați!",
-       "confirmrecreate": "Utilizatorul [[User:$1|$1]] ([[User talk:$1|discuție]]) a șters acest articol după ce ați început să contribuiți la el din motivul:\n: ''$2''\nVă rugăm să confirmați faptul că într-adevăr doriți să recreați acest articol.",
-       "confirmrecreate-noreason": "Utilizatorul [[User:$1|$1]] ([[User talk:$1|discuție]]) a șters această pagină după ce dumneavoastră ați început să o modificați. Vă rugăm să confirmați faptul că într-adevăr doriți să recreați această pagină.",
+       "confirmrecreate": "Utilizatorul [[User:$1|$1]] ([[User talk:$1|discuție]]) {{GENDER:$1|a șters}} acest articol după ce ați început să contribuiți la el din motivul:\n: <em>$2</em>\nVă rugăm să confirmați faptul că într-adevăr doriți să recreați acest articol.",
+       "confirmrecreate-noreason": "Utilizatorul [[User:$1|$1]] ([[User talk:$1|discuție]]) {{GENDER:$1|a șters}} această pagină după ce dumneavoastră ați început să o modificați. Vă rugăm să confirmați faptul că într-adevăr doriți să recreați această pagină.",
        "recreate": "Recreează",
        "confirm_purge_button": "OK",
        "confirm-purge-top": "Doriți să reîncărcați pagina?",
        "version-libraries-license": "Licență",
        "version-libraries-description": "Descriere",
        "version-libraries-authors": "Autori",
-       "redirect": "Redirecționare după fișier, utilizator, ID-ul paginii sau al versiunii",
+       "redirect": "Redirecționare după fișier, utilizator, ID-ul paginii, al versiunii sau al jurnalului",
        "redirect-legend": "Redirecționare către un fișier sau o pagină",
        "redirect-summary": "Această pagină specială vă redirecționează către un fișier (dat fiind un nume de fișier), o pagină (dat fiind ID-ul unei versiuni sau ID-ul unei pagini) sau o pagină de utilizator (dat fiind un ID numeric al utilizatorului). Utilizare: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] sau [[{{#Special:Redirect}}/user/101]].",
        "redirect-submit": "Du-te",
        "redirect-page": "ID pagină",
        "redirect-revision": "Versiune de pagină",
        "redirect-file": "Nume de fișier",
+       "redirect-logid": "ID jurnal",
        "redirect-not-exists": "Valoarea nu a fot găsită",
        "fileduplicatesearch": "Căutare fișiere duplicate",
        "fileduplicatesearch-summary": "Căutarea fișierelor duplicate bazată pe valorile hash.",
        "expand_templates_preview_fail_html": "<em>Întrucât la {{SITENAME}} este activat HTML brut și a avut loc o pierdere a sesiunii de date, previzualizarea a fost ascunsă ca măsură de precauție împotriva atacurilor prin JavaScript.</em>\n\n<strong>Dacă aceasta este o încercare legitimă de a previzualiza, încercați din nou.</strong>\nDacă nici astfel nu funcționează, încercați să [[Special:UserLogout|închideţi sesiunea]] şi să vă autentificaţi din nou.",
        "expand_templates_preview_fail_html_anon": "<em>Întrucât la {{SITENAME}} este activat HTML brut și nu v-ați autentificat, previzualizarea a fost ascunsă ca măsură de precauție împotriva atacurilor prin JavaScript.</em>\n\n<strong>Dacă aceasta este o încercare legitimă de a previzualiza, [[Special:UserLogin|autentificați-vă]] și încercați din nou.</strong>",
        "expand_templates_input_missing": "Trebuie să furnizați cel puțin un text ca date de intrare.",
-       "pagelanguage": "Selector limbă pagină",
+       "pagelanguage": "Modificare limbă pagină",
        "pagelang-name": "Pagină",
        "pagelang-language": "Limbă",
        "pagelang-use-default": "Folosește limba implicită",
        "action-pagelang": "modificați limba paginii",
        "log-name-pagelang": "Jurnal modificare limbă",
        "log-description-pagelang": "Acesta este un jurnal cu modificări ale limbii paginilor.",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|a modificat}} limba paginii pentru $3 din $4 în $5.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|a schimbat}} limba pentru $3 din $4 în $5.",
        "default-skin-not-found": "Ups! Aspectul standard pentru wiki, definit în <code dir=\"ltr\">$wgDefaultSkin</code> ca <code>$1</code>, nu este disponibil.\n\nInstalarea dumneavoastră pare să includă {{PLURAL:$4|următorul aspect|următoarele aspecte}}. Vedeți [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Configurare aspecte] pentru informații despre cum {{PLURAL:$4|îl|le}} puteți activa și alege pe cel implicit.\n\n$2\n\n; Dacă tocmai ați instalat MediaWiki:\n: Probabil ați instalat folosind git sau direct din codul sursă print-o altă metodă. Acest lucru este normal. Încercați să instalați câteva aspecte din [https://www.mediawiki.org/wiki/Category:All_skins colecția de aspecte de la mediawiki.org]:\n:* Descărcând [https://www.mediawiki.org/wiki/Download instalatorul tarball], care este însoțit de câteva aspecte și extensii. Puteți copia directorul <code>skins/</code> din acesta.\n:* Descărcând arhive tar individuale cu aspecte de la [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Utilizând Git pentru a descărca aspecte].\n: Această operațiune nu ar trebui să interfereze cu depozitul dumnevoastră git dacă sunteți dezvoltator MediaWiki.\n\n; Dacă tocmai ați actualizat MediaWiki:\n: Începând cu MediaWiki 1.24, aspectele instalate nu mai sunt activate în mod automat (vedeți [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual:Autodescoperirea aspectelor]). Puteți copia {{PLURAL:$5|următoarea linie|următoarele linii}} în <code>LocalSettings.php</code> pentru a activa {{PLURAL:$5|aspectul instalat|toate aspectele instalate}}:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Dacă tocmai ați modificat <code>LocalSettings.php</code>:\n: Verificați numele aspectelor pentru eventuale greșeli.",
        "default-skin-not-found-no-skins": "Ups! Aspectul standard pentru wiki, definit în <code>$wgDefaultSkin</code> ca <code>$1</code>, nu este disponibil.\n\nNu există aspecte instalate\n\n; Dacă tocmai ați instalat sau actualizat MediaWiki:\n: Probabil ați instalat folosind git sau direct din codul sursă print-o altă metodă. Acest lucru este normal. Începând cu MediaWiki 1.24, aspectele nu mai sunt incluse în depozitul principal. Încercați să instalați câteva aspecte din [https://www.mediawiki.org/wiki/Category:All_skins colecția de aspecte de la mediawiki.org]:\n:* Descărcând [https://www.mediawiki.org/wiki/Download instalatorul tarball], care este însoțit de câteva aspecte și extensii. Puteți copia directorul <code>skins/</code> din acesta.\n:* Descărcând arhive tar individuale cu aspecte de la [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Utilizând Git pentru a descărca aspecte].\n: Această operațiune nu ar trebui să interfereze cu depozitul dumneavoastră git dacă sunteți dezvoltator MediaWiki. Vedeți [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Configurare aspecte] pentru informații despre cum puteți activa aspecte și alege pe cel implict.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (activat)",
        "mw-widgets-titleinput-description-new-page": "pagina nu există încă",
        "mw-widgets-titleinput-description-redirect": "redirecționare către $1",
        "api-error-blacklisted": "Vă rugăm să alegeți un alt titlu, mai descriptiv.",
+       "sessionprovider-generic": "sesiuni $1",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "sesiuni pe bază de module cookie."
 }
index c607569..79fa244 100644 (file)
        "passwordreset-emailtext-ip": "Quacchedune (pò essere tu, da 'u 'ndirizze IP $1) ha richieste 'na mail pe arrecurdarse de le dettaglie d'u cunde sue pe {{SITENAME}} ($4). {{PLURAL:$3|'U cunde utende seguende jè|le cunde utinde seguende sonde}} associate cu st'indirizze e-mail:\n\n$2\n\n{{PLURAL:$3|Sta passuord temboranèe scade|Ste passuord temboranèe scadene}} 'mbrà {{PLURAL:$5|'nu sciurne|$5 sciurne}}.\nTu avissa trasè e scacchià 'na passuord nova. Ce quacchedun'otre ha fatte sta richieste, o ce tu t'è arrecurdate 'a passuord origgenale toje, e non g'a vuè ccu cange cchiù, tu puè ignorà stu messagge e condinuà ausanne 'a passuord vecchie.",
        "passwordreset-emailtext-user": "L'utende $1 sus a {{SITENAME}} ave richieste 'na mail pe arrecurdarse le dettaglie d'u cunde sue pe {{SITENAME}}\n($4). {{PLURAL:$3|'U cunde utende seguende jè|le cunde utinde seguende sonde}} associate cu st'indirizze e-mail:\n\n$2\n\n{{PLURAL:$3|Sta passuord temboranèe scade|Ste passuord temboranèe scadene}}  'mbrà {{PLURAL:$5|'nu sciurne|$5 sciurne}}.\nTu avissa trasè e scacchià 'na passuord nova. Ce quacchedun'otre ha fatte sta richieste, o ce tu t'è arrecurdate 'a passuord origgenale toje, e non g'a vuè ccu cange cchiù, tu puè ignorà stu messagge e condinuà ausanne 'a passuord vecchie.",
        "passwordreset-emailelement": "Nome utende: \n$1\n\nPassuord temboranèe: \n$2",
-       "passwordreset-emailsent": "Ce quiste jè 'n'e-mail pu cunde tune, allore 'na password azzerate ha state mannate addà.",
+       "passwordreset-emailsentemail": "Ce quiste jè 'n'e-mail pu cunde tune, allore 'na password azzerate ha state mannate addà.",
        "passwordreset-emailsent-capture": "'Na e-mail pe azzeramende d'a passuord ha state mannate, ca jè fatte vedè aqquà sotte.",
        "passwordreset-emailerror-capture": "'Na e-mail de azzeramende d'a passuord ha state generate, ca jè fatte vedè aqquà sotte, ma 'u 'nvie a {{GENDER:$2|l'utende}} ha fallite: $1",
        "changeemail": "Cange o live 'u 'ndirizze e-mail",
        "prefs-help-prefershttps": "Sta preferenze pigghie effette sulamende quanne tràse arrete.",
        "prefswarning-warning": "Tu è fatte cangiaminde sus a le preferenze tune ca non g'onne state angore reggistrate.\nCe tu lasse sta pàgene senze ca è cazzate \"$1\" le preferenze tune non g'avènene aggiornate.",
        "prefs-tabs-navigation-hint": "Conziglie: Tu puè ausà le freccie de destre e sinistre pe navigà 'mbrà le schede de l'elenghe.",
-       "email-address-validity-valid": "L'indirizze e-mail pare valide",
-       "email-address-validity-invalid": "Mitte 'n'indirizze e-mail valide",
        "userrights": "Gestione de le deritte utende",
        "userrights-lookup-user": "Gestisce le gruppe de l'utinde",
        "userrights-user-editname": "Mitte 'nu nome utende:",
        "right-blockemail": "Blocche l'utente a fà mannà le email",
        "right-hideuser": "Bluecche 'nu cunde utende, scunnènnele da 'u pubbliche",
        "right-ipblock-exempt": "Zumbe le blocche de l'IP, auto blocche e le blocche a indervalle",
-       "right-proxyunbannable": "Zumbe automaticamende le condrolle d'u proxy",
        "right-unblockself": "Sbluecche da sule",
        "right-protect": "Cange le levèlle de protezione e cange le pàggene prutette",
        "right-editprotected": "Cange le pàggene prutette (senza protezzione a cascata)",
        "uploaded-script-svg": "Acchiate elemende pe script \"$1\" jndr'à 'u file SVG carecate.",
        "uploaded-hostile-svg": "Acchiate 'nu CSS insecure ndr'à l'elemende de stile d'u file SVG carecate.",
        "uploaded-event-handler-on-svg": "'A 'mbostazione de le attribute de gestione de l'evende <code>$1=\"$2\"</code> non ge se pò ffà cu le file SVG.",
-       "uploaded-href-attribute-svg": "le attribbute href <code>&lt;$1 $2=\"$3\"&gt;</code> cu le destinaziune de fore (p.e. http://, javascript:, etc) non ge se ponne mettere jndr'à le file SVG.",
        "uploaded-href-unsafe-target-svg": "Acchiate 'na destinazione href non secure <code>&lt;$1 $2=\"$3\"&gt;</code> jndr'à 'u file SVG carecate.",
        "uploadscriptednamespace": "Stu file SVG tène 'nu namespace illegale '$1'",
        "uploadinvalidxml": "L'XML jndr'à 'u file carecate non ge pò essere analizzate.",
        "filewasdeleted": "'Nu file ca se chiamave cumme a quidde tue ha state apprime carecate e pò ha state scangellete.\nTu avissa condrollà 'u $1 apprime ca condinue cu 'u carecamende.",
        "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.\nPe piacere scacchie 'n'otre nome ca jè cchiù descrittive.",
        "filename-prefix-blacklist": " #<!-- leave this line exactly as it is --> <pre>\n# 'A sindasse jè 'a seguende:\n#   * Ogneccose da 'u carattere \"#\" 'mbonde 'a fine d'a linèe jè 'nu commende\n#   * Ogne linèe chiene jè 'nu prefisse pe nome de file tipece assignate automaticamende da le fotocamere\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # quacche telefone mobbile\nIMG # generiche\nJD # Jenoptik\nMGP # Pentax\nPICT # misckate\n #</pre> <!-- leave this line exactly as it is -->",
-       "upload-success-subj": "Carecamende sciute apposte",
-       "upload-success-msg": "'U carecamende tue da [$2] ha riuscite. Mò jè disponibbele aqquà: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Careche le probbleme",
-       "upload-failure-msg": "Stave 'nu probbleme cu 'u carecamende tune da [$2]:\n\n$1",
-       "upload-warning-subj": "Avvise de carecamende",
-       "upload-warning-msg": "Stave 'nu probbleme cu 'u carecamende tune da [$2]. Tu puè turnà rrete a 'u [[Special:Upload/stash/$1|module de carecamende]] pe aggiustà stu probbleme.",
        "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",
        "wlheader-showupdated": "* Le pàggene ca onne state cangiate da l'urtema visite avènene fatte vedè in '''grascette'''",
        "wlnote": "Aqquà sotte {{PLURAL:$1|ste l'urteme cangiamende|stonne l'urteme <strong>$1</strong> cangiaminde}} jndr'à {{PLURAL:$2|l'urtema ore|l'urteme <strong>$2</strong> ore}}, jndr'à $3, $4.",
        "wlshowlast": "Vide l'urteme $1 ore $2 sciurne",
-       "watchlistall2": "tutte",
        "watchlist-options": "Opzione d'a liste de le pàggene condrollete",
        "watching": "Fà vedè...",
        "unwatching": "No fà vedè...",
        "movenosubpage": "Sta pàgene non ge tène sottopàggene.",
        "movereason": "Raggione:",
        "revertmove": "a smerse",
-       "delete_and_move": "Scangille e spuèste",
        "delete_and_move_text": "== Scangellazzione richieste ==\n'A pàgene de destinazione \"[[:$1]]\" esiste già.\nTu à vuè ccu scangille o vuè ccù iacchie 'nu mode pe spustarle?",
        "delete_and_move_confirm": "Sine, scangille 'a pàggene",
        "delete_and_move_reason": "'U scangellamende avène fatte pe spustà da \"[[$1]]\"",
        "version-hook-subscribedby": "Sottoscritte da",
        "version-version": "($1)",
        "version-no-ext-name": "[nisciune nome]",
-       "version-svn-revision": "(r$2)",
        "version-license": "Licenze",
        "version-ext-license": "Licenze",
        "version-ext-colheader-name": "Estenzione",
        "mw-widgets-dateinput-no-date": "Nisciune date scacchiate",
        "mw-widgets-titleinput-description-new-page": "'a pàgene non g'esiste angore",
        "mw-widgets-titleinput-description-redirect": "redirezionate sus a $1",
-       "api-error-blacklisted": "Pe piacere scacchie 'nu titole diverse, descrittive."
+       "api-error-blacklisted": "Pe piacere scacchie 'nu titole diverse, descrittive.",
+       "randomrootpage": "Pàgene prengepàle a uecchije"
 }
index d7d17c8..570efb3 100644 (file)
@@ -87,7 +87,8 @@
                        "INS Pirat",
                        "Краснорядцева Елена",
                        "Frhdkazan",
-                       "Ядерный Трамвай"
+                       "Ядерный Трамвай",
+                       "Исмаил Садуев"
                ]
        },
        "tog-underline": "Подчёркивание ссылок:",
        "uploaded-script-svg": "Найден небезопасный элемент с поддержкой сценариев «$1» в загруженном SVG-файле.",
        "uploaded-hostile-svg": "Найден небезопасный CSS-код в элементе стиля загруженного SVG-файла.",
        "uploaded-event-handler-on-svg": "Установка атрибутов обработчика событий <code>$1=\"$2\"</code> не разрешено для SVG-файлов.",
-       "uploaded-href-attribute-svg": "В SVG-файлах не допускаются href-атрибуты <code>&lt;$1 $2=\"$3\"&gt;</code> с нелокальной целью (т.е. http://, javascript:, и пр.).",
        "uploaded-href-unsafe-target-svg": "В загруженном SVG-файле найдена ссылка на небезопасную цель <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploaded-animate-svg": "Найден тег «animate», который может изменять ссылку с помощью «from»-атрибута <code>&lt;$1 $2=\"$3\"&gt;</code> в загруженном SVG-файле.",
        "uploaded-setting-event-handler-svg": "Установка атрибутов обработчика событий заблокирована, в загруженном SVG-файле найден код <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "filename-thumb-name": "Название файла похоже на название уменьшенной версии изображения. Пожалуйста, не загружайте подобные миниатюры обратно вики-проект. Если вам всё-таки необходим этот файл, пожалуйста, исправить имя файла, чтобы оно не содержало префикс миниатюры.",
        "filename-bad-prefix": "Имя загружаемого файла начинается с «<strong>$1</strong>» и, вероятно, представляет собой одно из шаблонных имён, генерируемых цифровыми фотокамерами. Пожалуйста, выберите имя, лучше описывающее содержание файла.",
        "filename-prefix-blacklist": " #<!-- оставьте эту строчку как есть --> <pre>\n# Синтаксис следующий:\n#   * Всё, что начинается с символа «#», считается комментарием (до конца строки)\n#   * Каждая непустая строка — префикс стандартного названия файла, которое обычно даёт цифровая камера\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # некоторые мобильные телефоны\nIMG # общее\nJD # Jenoptik\nMGP # Pentax\nPICT # различные\n #</pre> <!-- оставьте эту строчку как есть -->",
-       "upload-success-subj": "Загрузка успешно завершена",
-       "upload-success-msg": "Ваша загрузка [$2] прошла успешно. Вы можете посмотреть результат здесь: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Проблема загрузки",
-       "upload-failure-msg": "Обнаружена проблема с вашей загрузкой из [$2]:\n\n$1",
-       "upload-warning-subj": "Предупреждение при загрузке",
-       "upload-warning-msg": "При загрузке с [$2] произошла ошибка. Для исправления ошибки вернитесь на [[Special:Upload/stash/$1|upload form]].",
        "upload-proto-error": "Неправильный протокол",
        "upload-proto-error-text": "Для удалённой загрузки требуется адрес, начинающийся с <code>http://</code> или <code>ftp://</code>.",
        "upload-file-error": "Внутренняя ошибка",
        "upload-too-many-redirects": "URL содержит слишком много перенаправлений",
        "upload-http-error": "Произошла ошибка HTTP: $1",
        "upload-copy-upload-invalid-domain": "Копирование загрузок не доступно в этом домене.",
+       "upload-foreign-cant-upload": "Эта вики не настроена для загрузки файлов на запрошенный сторонний файловый репозиторий.",
        "upload-dialog-title": "Загрузить файл",
        "upload-dialog-button-cancel": "Отменить",
        "upload-dialog-button-done": "Готово",
        "wlheader-showupdated": "Страницы, изменившиеся с вашего последнего их посещения, выделены '''жирным''' шрифтом.",
        "wlnote": "Ниже {{PLURAL:$1|показано последнее изменение|показаны <strong>$1</strong> последние изменения|показаны <strong>$1</strong> последних изменений}} за {{PLURAL:$2|последний час|последние <strong>$2</strong> часа|последние <strong>$2</strong> часов}}, по состоянию на $3 $4.",
        "wlshowlast": "Показать за последние $1 часов $2 дней",
-       "watchlistall2": "все",
        "watchlist-hide": "Скрыть",
        "watchlist-submit": "Показать",
        "wlshowtime": "Период времени для отображения:",
        "lockedbyandtime": "($1 $2 $3)",
        "move-page": "$1 — переименование",
        "move-page-legend": "Переименование страницы",
-       "movepagetext": "Ð\92оÑ\81полÑ\8cзовавÑ\88иÑ\81Ñ\8c Ð½Ð¸Ð¶ÐµÐ¿Ñ\80иведÑ\91нной Ñ\84оÑ\80мой, Ð²Ñ\8b Ð¿ÐµÑ\80еименÑ\83еÑ\82е Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83, Ð¾Ð´Ð½Ð¾Ð²Ñ\80еменно Ð¿ÐµÑ\80емеÑ\81Ñ\82ив Ð½Ð° Ð½Ð¾Ð²Ð¾Ðµ Ð¼ÐµÑ\81Ñ\82о ÐµÑ\91 Ð¶Ñ\83Ñ\80нал Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹.\nСÑ\82аÑ\80ое Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ Ñ\81Ñ\82анеÑ\82 Ð¿ÐµÑ\80енапÑ\80авлением Ð½Ð° Ð½Ð¾Ð²Ð¾Ðµ.\nÐ\92Ñ\8b Ð¼Ð¾Ð¶ÐµÑ\82е Ð°Ð²Ñ\82омаÑ\82иÑ\87еÑ\81ки Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ\82Ñ\8c Ð¿ÐµÑ\80енапÑ\80авлениÑ\8f, ÐºÐ¾Ñ\82оÑ\80Ñ\8bе Ð²ÐµÐ»Ð¸ Ð½Ð° Ñ\81Ñ\82аÑ\80ое Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ.\nÐ\95Ñ\81ли Ð²Ñ\8b Ñ\8dÑ\82ого Ð½Ðµ Ñ\81делаеÑ\82е, Ð¿Ð¾Ð¶Ð°Ð»Ñ\83йÑ\81Ñ\82а, Ð¿Ñ\80овеÑ\80Ñ\8cÑ\82е Ð½Ð°Ð»Ð¸Ñ\87ие [[Special:DoubleRedirects|двойнÑ\8bÑ\85]] Ð¸ [[Special:BrokenRedirects|Ñ\80азоÑ\80ваннÑ\8bÑ\85 Ð¿ÐµÑ\80енапÑ\80авлений]].\nÐ\92Ñ\8b Ð¾Ñ\82веÑ\87аеÑ\82е Ð·Ð° Ñ\82о, Ñ\87Ñ\82обÑ\8b Ñ\81Ñ\81Ñ\8bлки Ð¿Ñ\80одолжали Ð¸ Ð´Ð°Ð»ÐµÐµ Ñ\83казÑ\8bваÑ\82Ñ\8c Ñ\82Ñ\83да, ÐºÑ\83да Ð¿Ñ\80едполагалоÑ\81Ñ\8c.\n\nÐ\9eбÑ\80аÑ\82иÑ\82е Ð²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ðµ, Ñ\87Ñ\82о Ñ\81Ñ\82Ñ\80аниÑ\86а <strong>не Ð±Ñ\83деÑ\82</strong> Ð¿ÐµÑ\80еименована, ÐµÑ\81ли Ñ\83же Ñ\81Ñ\83Ñ\89еÑ\81Ñ\82вÑ\83еÑ\82 Ñ\81Ñ\82Ñ\80аниÑ\86а Ñ\81 Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼, Ð¸Ð´ÐµÐ½Ñ\82иÑ\87нÑ\8bм Ð²Ñ\8bбÑ\80анномÑ\83, ÐºÑ\80оме Ñ\81лÑ\83Ñ\87аев, ÐºÐ¾Ð³Ð´Ð° Ñ\82акаÑ\8f Ñ\81Ñ\82Ñ\80аниÑ\86а Ð¿Ñ\83Ñ\81Ñ\82а Ð¸Ð»Ð¸ Ð¿Ñ\80едÑ\81Ñ\82авлÑ\8fеÑ\82 Ñ\81обой Ð¿ÐµÑ\80енапÑ\80авление, Ð¸ Ð¿Ñ\80и Ñ\8dÑ\82ом Ð½Ðµ Ð¸Ð¼ÐµÐµÑ\82 Ð¸Ñ\81Ñ\82оÑ\80ии Ð¿Ñ\80авок.\nЭÑ\82о Ð¾Ð·Ð½Ð°Ñ\87аеÑ\82, Ñ\87Ñ\82о Ñ\81делав Ð¾Ñ\88ибоÑ\87ное Ð¿ÐµÑ\80еименование, Ð²Ñ\8b Ð¼Ð¾Ð¶ÐµÑ\82е Ð¿ÐµÑ\80еименоваÑ\82Ñ\8c Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83 Ð¾Ð±Ñ\80аÑ\82но Ð² Ñ\82о Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ, ÐºÐ¾Ñ\82оÑ\80ое Ñ\83 Ð½ÐµÑ\91 Ñ\82олÑ\8cко Ñ\87Ñ\82о Ð±Ñ\8bло, Ð½Ð¾ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ\82е Ñ\81лÑ\83Ñ\87айно Ð·Ð°Ñ\82еÑ\80еÑ\82Ñ\8c Ñ\81Ñ\83Ñ\89еÑ\81Ñ\82вÑ\83Ñ\8eÑ\89Ñ\83Ñ\8e Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83.\n\n<strong>Ð\9fÑ\80едÑ\83пÑ\80еждение!</strong>\nПереименование популярных страниц может привести к масштабным и неожиданным изменениям.\nПожалуйста, прежде чем продолжать, убедитесь, что понимаете все возможные последствия.",
-       "movepagetext-noredirectfixer": "Ð\92оÑ\81полÑ\8cзовавÑ\88иÑ\81Ñ\8c Ñ\84оÑ\80мой Ð½Ð¸Ð¶Ðµ, Ð²Ñ\8b Ð¿ÐµÑ\80еименÑ\83еÑ\82е Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83, Ð¾Ð´Ð½Ð¾Ð²Ñ\80еменно Ð¿ÐµÑ\80емеÑ\81Ñ\82ив Ð½Ð° Ð½Ð¾Ð²Ð¾Ðµ Ð¼ÐµÑ\81Ñ\82о ÐµÑ\91 Ð¶Ñ\83Ñ\80нал Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹.\nСÑ\82аÑ\80ое Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ Ñ\81Ñ\82анеÑ\82 Ð¿ÐµÑ\80енапÑ\80авлением Ð½Ð° Ð½Ð¾Ð²Ð¾Ðµ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ.\nÐ\9fожалÑ\83йÑ\81Ñ\82а, Ð¿Ñ\80овеÑ\80Ñ\8cÑ\82е Ð½Ð°Ð»Ð¸Ñ\87ие [[Special:DoubleRedirects|двойнÑ\8bÑ\85]] Ð¸ [[Special:BrokenRedirects|Ñ\80азоÑ\80ваннÑ\8bÑ\85 Ð¿ÐµÑ\80енапÑ\80авлений]].\nÐ\92Ñ\8b Ð¾Ñ\82веÑ\87аеÑ\82е Ð·Ð° Ñ\82о, Ñ\87Ñ\82обÑ\8b Ñ\81Ñ\81Ñ\8bлки Ð¿Ñ\80одолжали Ð¸ Ð´Ð°Ð»ÐµÐµ Ñ\83казÑ\8bваÑ\82Ñ\8c Ñ\82Ñ\83да, ÐºÑ\83да Ð¿Ñ\80едполагалоÑ\81Ñ\8c.\n\nÐ\9eбÑ\80аÑ\82иÑ\82е Ð²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ðµ, Ñ\87Ñ\82о Ñ\81Ñ\82Ñ\80аниÑ\86а <strong>не Ð±Ñ\83деÑ\82</strong> Ð¿ÐµÑ\80еименована, ÐµÑ\81ли Ñ\81Ñ\82Ñ\80аниÑ\86а Ñ\81 Ð½Ð¾Ð²Ñ\8bм Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ Ñ\83же Ñ\81Ñ\83Ñ\89еÑ\81Ñ\82вÑ\83еÑ\82, ÐºÑ\80оме Ñ\81лÑ\83Ñ\87аев, ÐµÑ\81ли Ð¾Ð½Ð° Ð¿Ñ\83Ñ\81Ñ\82а Ð¸Ð»Ð¸ Ð¿Ñ\80едÑ\81Ñ\82авлÑ\8fеÑ\82 Ñ\81обой Ð¿ÐµÑ\80енапÑ\80авление, Ð¸ Ð¿Ñ\80и Ñ\8dÑ\82ом Ð½Ðµ Ð¸Ð¼ÐµÐµÑ\82 Ð¸Ñ\81Ñ\82оÑ\80ии Ð¿Ñ\80авок.\nЭÑ\82о Ð¾Ð·Ð½Ð°Ñ\87аеÑ\82, Ñ\87Ñ\82о Ñ\81делав Ð¾Ñ\88ибоÑ\87ное Ð¿ÐµÑ\80еименование, Ð²Ñ\8b Ñ\81можеÑ\82е Ð¿ÐµÑ\80еименоваÑ\82Ñ\8c Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83 Ð¾Ð±Ñ\80аÑ\82но Ð² Ñ\82о Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ, ÐºÐ¾Ñ\82оÑ\80ое Ñ\83 Ð½ÐµÑ\91 Ñ\82олÑ\8cко Ñ\87Ñ\82о Ð±Ñ\8bло, Ð½Ð¾ Ð½Ðµ Ñ\81можеÑ\82е Ñ\81лÑ\83Ñ\87айно Ð·Ð°Ñ\82еÑ\80еÑ\82Ñ\8c Ñ\81Ñ\83Ñ\89еÑ\81Ñ\82вÑ\83Ñ\8eÑ\89Ñ\83Ñ\8e Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83.\n\n<strong>Ð\9fÑ\80едÑ\83пÑ\80еждение!</strong>\nПереименование может привести к масштабным и неожиданным изменениям для популярных страниц.\nПожалуйста, прежде чем продолжить, убедитесь, что понимаете все возможные последствия.",
+       "movepagetext": "Ð\92оÑ\81полÑ\8cзовавÑ\88иÑ\81Ñ\8c Ð½Ð¸Ð¶ÐµÐ¿Ñ\80иведÑ\91нной Ñ\84оÑ\80мой, Ð²Ñ\8b Ð¿ÐµÑ\80еименÑ\83еÑ\82е Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83, Ð¾Ð´Ð½Ð¾Ð²Ñ\80еменно Ð¿ÐµÑ\80емеÑ\81Ñ\82ив Ð½Ð° Ð½Ð¾Ð²Ð¾Ðµ Ð¼ÐµÑ\81Ñ\82о ÐµÑ\91 Ð¶Ñ\83Ñ\80нал Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹.\nСÑ\82аÑ\80ое Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ Ñ\81Ñ\82анеÑ\82 Ð¿ÐµÑ\80енапÑ\80авлением Ð½Ð° Ð½Ð¾Ð²Ð¾Ðµ.\nÐ\92Ñ\8b Ð¼Ð¾Ð¶ÐµÑ\82е Ð°Ð²Ñ\82омаÑ\82иÑ\87еÑ\81ки Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ\82Ñ\8c Ð¿ÐµÑ\80енапÑ\80авлениÑ\8f, ÐºÐ¾Ñ\82оÑ\80Ñ\8bе Ð²ÐµÐ»Ð¸ Ð½Ð° Ñ\81Ñ\82аÑ\80ое Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ.\nÐ\95Ñ\81ли Ð²Ñ\8b Ñ\8dÑ\82ого Ð½Ðµ Ñ\81делаеÑ\82е, Ð¿Ð¾Ð¶Ð°Ð»Ñ\83йÑ\81Ñ\82а, Ð¿Ñ\80овеÑ\80Ñ\8cÑ\82е Ð½Ð°Ð»Ð¸Ñ\87ие [[Special:DoubleRedirects|двойнÑ\8bÑ\85]] Ð¸ [[Special:BrokenRedirects|Ñ\80азоÑ\80ваннÑ\8bÑ\85 Ð¿ÐµÑ\80енапÑ\80авлений]].\nÐ\92Ñ\8b Ð¾Ñ\82веÑ\87аеÑ\82е Ð·Ð° Ñ\82о, Ñ\87Ñ\82обÑ\8b Ñ\81Ñ\81Ñ\8bлки Ð¿Ñ\80одолжали Ð¸ Ð´Ð°Ð»ÐµÐµ Ñ\83казÑ\8bваÑ\82Ñ\8c Ñ\82Ñ\83да, ÐºÑ\83да Ð¿Ñ\80едполагалоÑ\81Ñ\8c.\n\nÐ\9eбÑ\80аÑ\82иÑ\82е Ð²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ðµ, Ñ\87Ñ\82о Ñ\81Ñ\82Ñ\80аниÑ\86а <strong>не Ð±Ñ\83деÑ\82</strong> Ð¿ÐµÑ\80еименована, ÐµÑ\81ли Ñ\83же Ñ\81Ñ\83Ñ\89еÑ\81Ñ\82вÑ\83еÑ\82 Ñ\81Ñ\82Ñ\80аниÑ\86а Ñ\81 Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼, Ð¸Ð´ÐµÐ½Ñ\82иÑ\87нÑ\8bм Ð²Ñ\8bбÑ\80анномÑ\83, ÐºÑ\80оме Ñ\81лÑ\83Ñ\87аев, ÐºÐ¾Ð³Ð´Ð° Ñ\82акаÑ\8f Ñ\81Ñ\82Ñ\80аниÑ\86а Ð¿Ñ\83Ñ\81Ñ\82а Ð¸Ð»Ð¸ Ð¿Ñ\80едÑ\81Ñ\82авлÑ\8fеÑ\82 Ñ\81обой Ð¿ÐµÑ\80енапÑ\80авление, Ð¸ Ð¿Ñ\80и Ñ\8dÑ\82ом Ð½Ðµ Ð¸Ð¼ÐµÐµÑ\82 Ð¸Ñ\81Ñ\82оÑ\80ии Ð¿Ñ\80авок.\nЭÑ\82о Ð¾Ð·Ð½Ð°Ñ\87аеÑ\82, Ñ\87Ñ\82о Ñ\81делав Ð¾Ñ\88ибоÑ\87ное Ð¿ÐµÑ\80еименование, Ð²Ñ\8b Ð¼Ð¾Ð¶ÐµÑ\82е Ð¿ÐµÑ\80еименоваÑ\82Ñ\8c Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83 Ð¾Ð±Ñ\80аÑ\82но Ð² Ñ\82о Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ, ÐºÐ¾Ñ\82оÑ\80ое Ñ\83 Ð½ÐµÑ\91 Ñ\82олÑ\8cко Ñ\87Ñ\82о Ð±Ñ\8bло, Ð½Ð¾ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ\82е Ñ\81лÑ\83Ñ\87айно Ð·Ð°Ñ\82еÑ\80еÑ\82Ñ\8c Ñ\81Ñ\83Ñ\89еÑ\81Ñ\82вÑ\83Ñ\8eÑ\89Ñ\83Ñ\8e Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83.\n\n<strong>Ð\9fÑ\80имеÑ\87ание:</strong>\nПереименование популярных страниц может привести к масштабным и неожиданным изменениям.\nПожалуйста, прежде чем продолжать, убедитесь, что понимаете все возможные последствия.",
+       "movepagetext-noredirectfixer": "Ð\92оÑ\81полÑ\8cзовавÑ\88иÑ\81Ñ\8c Ñ\84оÑ\80мой Ð½Ð¸Ð¶Ðµ, Ð²Ñ\8b Ð¿ÐµÑ\80еименÑ\83еÑ\82е Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83, Ð¾Ð´Ð½Ð¾Ð²Ñ\80еменно Ð¿ÐµÑ\80емеÑ\81Ñ\82ив Ð½Ð° Ð½Ð¾Ð²Ð¾Ðµ Ð¼ÐµÑ\81Ñ\82о ÐµÑ\91 Ð¶Ñ\83Ñ\80нал Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹.\nСÑ\82аÑ\80ое Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ Ñ\81Ñ\82анеÑ\82 Ð¿ÐµÑ\80енапÑ\80авлением Ð½Ð° Ð½Ð¾Ð²Ð¾Ðµ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ.\nÐ\9fожалÑ\83йÑ\81Ñ\82а, Ð¿Ñ\80овеÑ\80Ñ\8cÑ\82е Ð½Ð°Ð»Ð¸Ñ\87ие [[Special:DoubleRedirects|двойнÑ\8bÑ\85]] Ð¸ [[Special:BrokenRedirects|Ñ\80азоÑ\80ваннÑ\8bÑ\85 Ð¿ÐµÑ\80енапÑ\80авлений]].\nÐ\92Ñ\8b Ð¾Ñ\82веÑ\87аеÑ\82е Ð·Ð° Ñ\82о, Ñ\87Ñ\82обÑ\8b Ñ\81Ñ\81Ñ\8bлки Ð¿Ñ\80одолжали Ð¸ Ð´Ð°Ð»ÐµÐµ Ñ\83казÑ\8bваÑ\82Ñ\8c Ñ\82Ñ\83да, ÐºÑ\83да Ð¿Ñ\80едполагалоÑ\81Ñ\8c.\n\nÐ\9eбÑ\80аÑ\82иÑ\82е Ð²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ðµ, Ñ\87Ñ\82о Ñ\81Ñ\82Ñ\80аниÑ\86а <strong>не Ð±Ñ\83деÑ\82</strong> Ð¿ÐµÑ\80еименована, ÐµÑ\81ли Ñ\81Ñ\82Ñ\80аниÑ\86а Ñ\81 Ð½Ð¾Ð²Ñ\8bм Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ Ñ\83же Ñ\81Ñ\83Ñ\89еÑ\81Ñ\82вÑ\83еÑ\82, ÐºÑ\80оме Ñ\81лÑ\83Ñ\87аев, ÐµÑ\81ли Ð¾Ð½Ð° Ð¿Ñ\83Ñ\81Ñ\82а Ð¸Ð»Ð¸ Ð¿Ñ\80едÑ\81Ñ\82авлÑ\8fеÑ\82 Ñ\81обой Ð¿ÐµÑ\80енапÑ\80авление, Ð¸ Ð¿Ñ\80и Ñ\8dÑ\82ом Ð½Ðµ Ð¸Ð¼ÐµÐµÑ\82 Ð¸Ñ\81Ñ\82оÑ\80ии Ð¿Ñ\80авок.\nЭÑ\82о Ð¾Ð·Ð½Ð°Ñ\87аеÑ\82, Ñ\87Ñ\82о Ñ\81делав Ð¾Ñ\88ибоÑ\87ное Ð¿ÐµÑ\80еименование, Ð²Ñ\8b Ñ\81можеÑ\82е Ð¿ÐµÑ\80еименоваÑ\82Ñ\8c Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83 Ð¾Ð±Ñ\80аÑ\82но Ð² Ñ\82о Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ, ÐºÐ¾Ñ\82оÑ\80ое Ñ\83 Ð½ÐµÑ\91 Ñ\82олÑ\8cко Ñ\87Ñ\82о Ð±Ñ\8bло, Ð½Ð¾ Ð½Ðµ Ñ\81можеÑ\82е Ñ\81лÑ\83Ñ\87айно Ð·Ð°Ñ\82еÑ\80еÑ\82Ñ\8c Ñ\81Ñ\83Ñ\89еÑ\81Ñ\82вÑ\83Ñ\8eÑ\89Ñ\83Ñ\8e Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83.\n\n<strong>Ð\9fÑ\80имеÑ\87ание:</strong>\nПереименование может привести к масштабным и неожиданным изменениям для популярных страниц.\nПожалуйста, прежде чем продолжить, убедитесь, что понимаете все возможные последствия.",
        "movepagetalktext": "Если вы отметите этот пункт, связанная с ней страница обсуждения будет также автоматически переименована, если только уже не существует непустая страница обсуждения с таким же названием.\n\nВ этом случае вам нужно будет переименовать или объединить страницы вручную, если это необходимо.",
        "moveuserpage-warning": "'''Внимание.''' Вы собираетесь переименовать страницу участника. Пожалуйста, обратите внимание, что переименована будет только страница, участник '''не''' будет переименован.",
        "movecategorypage-warning": "<strong>Предупреждение:</strong> Вы собираетесь переименовать страницу категории. Пожалуйста, обратите внимание, что будет переименована только эта страница, а все страницы старой категории <em>не</em> будут перекатегоризованы в новую.",
        "movenosubpage": "У этой страницы нет подстраниц.",
        "movereason": "Причина:",
        "revertmove": "возврат",
-       "delete_and_move_text": "== Требуется удаление ==\nСтраница с именем «[[:$1]]» уже существует. \nХотите удалить её, чтобы сделать возможным переименование?",
+       "delete_and_move_text": "Страница с именем «[[:$1]]» уже существует. \nХотите удалить её, чтобы сделать возможным переименование?",
        "delete_and_move_confirm": "Да, удалить эту страницу",
        "delete_and_move_reason": "Удалено для возможности переименования «[[$1]]»",
        "selfmove": "Невозможно переименовать страницу: исходное и новое имя страницы совпадают.",
        "move-leave-redirect": "Оставить перенаправление",
        "protectedpagemovewarning": "'''Предупреждение. Эта страница была защищена; переименовать её могут только участники с полномочиями администраторов.'''\nНиже для справки приведена последняя запись журнала:",
        "semiprotectedpagemovewarning": "'''Замечание.''' Эта страница была защищена; переименовать её могут только зарегистрированные участники.\nНиже для справки приведена последняя запись журнала:",
-       "move-over-sharedrepo": "== Файл уже существует ==\nВ общем хранилище существует [[:$1]]. Переименование файла в это название вызовет перекрытие файла из общего хранилища.",
+       "move-over-sharedrepo": "В общем хранилище существует [[:$1]]. Переименование файла в это название вызовет перекрытие файла из общего хранилища.",
        "file-exists-sharedrepo": "Выбранное имя файла уже используется в общем хранилище.\nПожалуйста, выберите другое имя.",
        "export": "Экспорт страниц",
        "exporttext": "Вы можете экспортировать текст и журнал изменений конкретной страницы или набора страниц в XML, который потом может быть [[Special:Import|импортирован]] в другой вики-проект, работающий на программном обеспечении MediaWiki.\n\nЧтобы экспортировать статьи, введите их наименования в поле редактирования, одно название на строку, и выберите хотите ли вы экспортировать всю историю изменений статей или только последние версии статей.\n\nВы также можете использовать специальный адрес для экспорта только последней версии. Например для страницы [[{{MediaWiki:Mainpage}}]] это будет адрес [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]].",
        "lastmodifiedatby": "Эта страница последний раз была изменена $1 в $2, автор изменения — $3.",
        "othercontribs": "В создании приняли участие: $1.",
        "others": "другие",
-       "siteusers": "{{PLURAL:$2|1=участник|участники}} {{grammar:genitive|{{SITENAME}}}} $1",
+       "siteusers": "{{PLURAL:$2|1={{GENDER:$1|участник|участница}}|участники}} {{grammar:genitive|{{SITENAME}}}} $1",
        "anonusers": "{{PLURAL:$2|1=анонимный участник|анонимные участники}} {{grammar:genitive|{{SITENAME}}}} $1",
        "creditspage": "Благодарности",
        "nocredits": "Нет списка участников для этой статьи",
        "expand_templates_preview_fail_html": "<em>Поскольку на сайте {{SITENAME}} с включенным «сырым» HTML произошла потеря данных сессии, предварительный просмотр скрыт в качестве меры предосторожности против JavaScript-атак.</em>\n\n<strong>Если это была правомерная попытка предварительного просмотра, пожалуйста, попробуйте ещё раз.</strong>\nЕсли у вас по-прежнему не получается, попробуйте [[Special:UserLogout|завершить сеанс работы]] и авторизоваться ещё раз.",
        "expand_templates_preview_fail_html_anon": "<em>Поскольку на сайте {{SITENAME}} включен «сырой» HTML, а вы не авторизовались, предварительный просмотр скрыт в качестве меры предосторожности против JavaScript-атак.</em>\n\n<strong>Если это правомерная попытка предварительного просмотра, пожалуйста, [[Special:UserLogin|войдите]] и попробуйте ещё раз.",
        "expand_templates_input_missing": "Вы должны вставить хоть какой-то текст.",
-       "pagelanguage": "Ð\92Ñ\8bбоÑ\80 языка страницы",
+       "pagelanguage": "Ð\98зменение языка страницы",
        "pagelang-name": "Страница",
        "pagelang-language": "Язык",
        "pagelang-use-default": "Использовать язык по умолчанию",
        "action-pagelang": "изменять язык страницы",
        "log-name-pagelang": "Журнал изменения языка",
        "log-description-pagelang": "Это журнал изменений в языках страницы.",
-       "logentry-pagelang-pagelang": "$1 изменил{{GENDER:$2||а}} язык страницы для $3 с $4 на $5.",
+       "logentry-pagelang-pagelang": "$1 изменил{{GENDER:$2||а}} язык страницы $3 с $4 на $5.",
        "default-skin-not-found": "Упс! Тема оформления по умолчанию для вашей вики <code>$wgDefaultSkin</code>, <code>$1</code> недоступна.\n\nВаша установка, похоже, содержит {{PLURAL:$4|следующую тему|следующие темы}} оформления. См. [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Skin configuration] с информацией о том, как включить {{PLURAL:$4|её|их и выбрать тему по умолчанию}}.\n\n$2\n\n; Если вы только что установили MediaWiki:\n: Вы, видимо, сделали это с Git или непосредственно из исходного кода с использованием другого способа. Тогда такое возможно. Попробуйте установить некоторые темы из [https://www.mediawiki.org/wiki/Category:All_skins каталога тем оформления сайта mediawiki.org]:\n:* скачав [https://www.mediawiki.org/wiki/Download архив установочных файлов], который содержит несколько тем оформления и расширений; вы можете скопировать из него папку <code>skins/</code>;\n:* скачав архивы отдельных тем оформления с [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org];\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins использовав Git для загрузки тем оформления].\n: Это не должно навредить вашему репозиторию Git, если вы разработчик MediaWiki. См. [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Skin configuration] с информацией о том, как включить темы оформления и выбрать тему по умолчанию.\n; Если вы только что обновили MediaWiki:\n: MediaWiki версии 1.24 и новее больше не включает автоматически установленные темы (см. [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]).\nВы можете вставить {{PLURAL:$5|следующую строку|следующие строки}} в <code>LocalSettings.php</code>, чтобы включить {{PLURAL:$5|установленную тему|все установленные темы}} оформления: \n\n<pre dir=\"ltr\">$3</pre>\n\n; Если вы только что изменили <code>LocalSettings.php</code>:\n: Перепроверьте названия тем на наличие опечаток.",
        "default-skin-not-found-no-skins": "Упс! Тема оформления по умолчанию для вашей вики <code>$wgDefaultSkin</code>, <code>$1</code> недоступна.\n\nУ вас нет установленных тем оформления.\n\n; Если вы только что установили или обновили MediaWiki:\n: Вы, видимо, сделали это с Git или непосредственно из исходного кода с использованием другого способа. Тогда такое возможно. MediaWiki версии 1.24 и новее не содержат темы оформления в основном репозитории. Попробуйте установить некоторые темы из [https://www.mediawiki.org/wiki/Category:All_skins каталога тем оформления сайта mediawiki.org]:\n:* скачав [https://www.mediawiki.org/wiki/Download архив установочных файлов], который содержит несколько тем оформления и расширений; вы можете скопировать папку <code>skins/</code> из него;\n:* скачав архивы отдельных тем оформления с [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org];\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins использовав Git для загрузки тем оформления].\n: Это не должно навредить вашему репозиторию Git, если вы разработчик MediaWiki. См. [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Skin configuration] с информацией о том, как включить темы оформления и выбрать тему по умолчанию.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (включено)",
index 2a53b49..be77fd6 100644 (file)
@@ -48,6 +48,7 @@
        "tog-watchlisthidebots": "Кэтээн көрүү тиһигэр робот уларытыытын көрдөрүмэ",
        "tog-watchlisthideminor": "Кыра уларытыылары кэтээмэ",
        "tog-watchlisthideliu": "Бэлиэтэммит кыттааччылар уларытыыларын кэтиир тиһиккэ көрдөрүмэ",
+       "tog-watchlistreloadautomatically": "Сиидэ уларыйда да кэтээһин тиһилигин саҥардан ис(JavaScript баар буолуохтаах)",
        "tog-watchlisthideanons": "Ааттарын эппэтэх кыттааччылар уларытыыларын кэтээһин тиһигэр көрдөрүмэ",
        "tog-watchlisthidepatrolled": "Ботурууллааччы көрбүт көннөрүүтүн кэтээһин испииһэгэр көрдөрүмэ",
        "tog-watchlisthidecategorization": "Сирэй категорияларын көрдөрүмэ",
        "october-date": "Алтынньы $1",
        "november-date": "Сэтинньи $1",
        "december-date": "Ахсынньы $1",
+       "period-am": "ОИ",
+       "period-pm": "ОК",
        "pagecategories": "{{PLURAL:$1|Категория|Категориялар}}",
        "category_header": "\"$1\" категория ыстатыйалара",
        "subcategories": "Субкатегориялар",
        "viewsourceold": "исходнигын көрүү",
        "editlink": "көннөрөргө",
        "viewsourcelink": "исходнигын көрүү",
-       "editsectionhint": "$1 Ñ\81екÑ\86иÑ\8fнÑ\8b уларыт",
+       "editsectionhint": "$1 Ñ\81иÑ\8dкÑ\81ийÑ\8dни уларыт",
        "toc": "Ис хоһооно",
        "showtoc": "көрдөр",
        "hidetoc": "көрдөрүмэ",
        "resetpass_submit": "Киирии тылы уларыт уонна киир",
        "changepassword-success": "Киирии тылыҥ этэҥҥэ уларыйда!",
        "changepassword-throttled": "Ааккын аһара элбэхтик билиһиннэрэ сатаатыҥ.\nБука диэн $1 буолан баран өссө киирэн көрөөр.",
+       "botpasswords-createnew": "Оруобат саҥа аһарыгын оҥор",
+       "botpasswords-label-appid": "Оруобат аата:",
+       "botpasswords-label-create": "Оҥоруу",
+       "botpasswords-label-update": "Саҥарт",
+       "botpasswords-label-cancel": "Бигэргэтимэ",
+       "botpasswords-label-delete": "Сот",
+       "botpasswords-label-resetpassword": "Аһарыгы саҥаттан",
        "resetpass_forbidden": "Киирии тылы уларытар сатаммат",
        "resetpass-no-info": "Ааккын билиһиннэрдэххинэ эрэ бу сирэйгэ быһа тиийиэххин сөп.",
        "resetpass-submit-loggedin": "Киирии тылы уларытыы",
        "passwordreset-emailtext-ip": "Ким эрэ (баҕар эн буолуо, бу IP-ттан $1)  {{SITENAME}} ($4) бырайыакка киирии тылы уларытар туһунан ыйытык биэрбит.\nБу электрон аадырыһы кытта бу {{PLURAL:$3|аат ситимнээх|ааттар ситимнээхтэр}}:\n\n$2\n\nБу быстах кэмҥэ аналлаах {{PLURAL:$3|киирии тыл|кирии тыллар}} {{PLURAL:$5|биир күн үлэлиэҕэ|$5 күн үлэлиэхтэрэ}}.\nЭн тиһиликкэ ааккын этэн саҥа киирии тылы киллэриэхтээххин.\nӨскө бу ыйытыгы ыыппатах буоллаххына, эбэтэр урукку киирии тылгын өйдөөн кэлбит буоллаххына \nбу биллэриини ааххайыа суоххун сөп.\nОччоҕо урукку киирии тылыҥ оннунан хаалыа.",
        "passwordreset-emailtext-user": "$1 диэн кыттааччы  {{SITENAME}} ($4) бырайыакка киирии тылгын уларытар туһунан ыйытык ыыппыт.\nБу электрон аадырыһы кытта бу {{PLURAL:$3|аат ситимнээх|ааттар ситимнээхтэр}}\n\n$2\n\nБу быстах кэмҥэ аналлаах {{PLURAL:$3|киирии тыл|кирии тыллар}} {{PLURAL:$5|биир күн үлэлиэҕэ|$5 күн үлэлиэхтэрэ}}.\nЭн тиһиликкэ ааккын этэн саҥа киирии тылы киллэриэхтээххин.\nӨскө бу ыйытыгы ыыппатах буоллаххына, эбэтэр урукку киирии тылгын өйдөөн кэлбит буоллаххына \nбу биллэриини ааххайыа суоххун сөп.\nОччоҕо урукку киирии тылыҥ оннунан хаалыа.",
        "passwordreset-emailelement": "Кыттааччы: \n$1\n\nБыстах киирии тыл: \n$2",
-       "passwordreset-emailsent": "Өскө ааккар баайыллыбыт аадырыһы суруйбут буоллаххына, аһарык тылы уларытар туһунан сурук онно барыа.",
+       "passwordreset-emailsentemail": "Өскө ааккар баайыллыбыт аадырыһы суруйбут буоллаххына, аһарык тылы уларытар туһунан сурук онно барыа.",
        "passwordreset-emailsent-capture": "Киирии тылы уларытар туһунан сурук аллара эмиэ көрдөрүлүннэ.",
        "passwordreset-emailerror-capture": "Манна киирии тылы уларытар туһунан сурук көрдөрүлүннэ. Ол эрэн сурук бу төрүөттэн $2 кыттааччыга сатаан барбата: $1",
        "changeemail": "Аадырыһы уларытыы уонна сотуу",
        "prefs-help-prefershttps": "Аныгыскы киириигэр үлэлиир буолуо.",
        "prefswarning-warning": "Туруорууларгын уларыппыккын ол эрэн бигэргэппэтэххин.\nБу сирэйтэн «$1» баттамы баттаабакка таҕытаххына, барыта уруккутунан хаалыа.",
        "prefs-tabs-navigation-hint": "Сүбэ: Көмпүүтэриҥ клаватууратын стрелкаларын туһанан кыбытыктан кыбытыкка көһүөххүн сөп.",
-       "email-address-validity-valid": "Сөп курдук көстөр",
-       "email-address-validity-invalid": "Алҕаһа суох аадырыс ирдэнэр",
        "userrights": "Кыттааччылар бырааптарын салайыы",
        "userrights-lookup-user": "Кыттаачылар бөлөхтөрүн салайыы",
        "userrights-user-editname": "Кыттааччы аата:",
        "right-blockemail": "Эл. суругу ыытары бобуу",
        "right-hideuser": "Кыттааччы аатын бобуу уонна кистээһин",
        "right-ipblock-exempt": "IP хааччахтааһынын, аптамаатынан уонна диапазоннары хааччахтааһыны тумнуу",
-       "right-proxyunbannable": "Прокси аптааматынан хааччахтааһынын тумнуу",
        "right-unblockself": "Хааччаҕы бэйэ устуута",
        "right-protect": "Сирэйдэр көмүскэллэрин таһымын уонна каскаадынан көмүскэммит сирэйдэри уларытыы",
        "right-editprotected": "Уларытыллар сирэйдэр \"{{int:protect-level-sysop}}\" таһымынан көмүскэммиттэр",
        "uploaded-script-svg": "Хачайдаммыт SVG-билэҕэ сценарийы өйүүр куттааллаах «$1» элэмиэн көһүннэ.",
        "uploaded-hostile-svg": "Хачайдаммыт SVG-билэ истиилин элэмиэнигэр кутталлаах CSS-куод көһүннэ.",
        "uploaded-event-handler-on-svg": "SVG-билэлэргэ <code>$1=\"$2\"</code> сабыытыйаны таҥастааччы атрибууттарын туруоруу көҥүллэммэт.",
-       "uploaded-href-attribute-svg": "SVG-билэлэргэ олохтоох соруга суох href-атрибууттар <code>&lt;$1 $2=\"$3\"&gt;</code> бобуллаллар (а.э. http://, javascript:, уо.д.а.).",
        "uploaded-href-unsafe-target-svg": "Хачайдаммыт SVG-билэҕэ кутталлаах сигэ көһүннэ <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploaded-animate-svg": "«Animate» тиэк көһүннэ, кини «from»-атрибут көмөтүнэн  <code>&lt;$1 $2=\"$3\"&gt;</code> хачайдаммыт SVG-билэҕэ сигэни уларытыан сөп.",
        "uploaded-setting-event-handler-svg": "Дьайыы таҥастыыр тэрил атрибуутун уларытар бобуллубут, киллэриллибит SVG-билэҕэ <code>&lt;$1 $2=\"$3\"&gt;</code> куод көстүбүт.",
        "filename-thumb-name": "Билэҥ аата кыра ойуу аатыгар маарыҥныыр. Бука диэн, манныгы угума. Өскө, бу билэни хайаан да угуоххун баҕарар буоллаххына, аатын уларыт, кыра ойуу префиксын сотон баран.",
        "filename-bad-prefix": "Киллэрээри гынар билэҥ аата '''\"$1\"''' фотоаппарат аптамаатынан ааттыыр аатыгар майгынныыр. Бука диэн атыннык, арыый сиһилии ааттаан киллэрэриҥ буоллар.",
        "filename-prefix-blacklist": " #<!-- Бу строканы оннунан хааллар --> <pre>\n# Синтаксииһа маннык:\n#   * Бу \"#\" бэлиэттэн саҕалаан строка бүтүөр дылы быһаарыы\n#   * Кураанах буолбатах строка - билэ фотоаппарат аптамаатынан ааттаабыт ааттарын префикса\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # сорох мобильнай төлөппүөннэр\nIMG # generic\nJD # Jenoptik\nMGP # Pentax\nPICT # misc.\n #</pre> <!-- Бу строканы оннунан хааллар -->",
-       "upload-success-subj": "Сатанна",
-       "upload-success-msg": "[$2]  хачайдааһын табылынна. Ол түмүгүн манна көрүөххүн сөп: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Хачайдааһын моһуога",
-       "upload-failure-msg": "Эн хачайдааһыныҥ (мантан [$2]) моһуогурда:\n\n$1",
-       "upload-warning-subj": "Хачайдыырга сэрэтии",
-       "upload-warning-msg": "[$2] хачайдыырга алҕас таҕыста. Ол алҕаһы көннөрөргө манна төнүн [[Special:Upload/stash/$1|upload form]].",
        "upload-proto-error": "Сыыһа боротокуол",
        "upload-proto-error-text": "Ыраахтан суруттарарга маннык аадырыстар наадалар: <code>http://</code> эбэтэр <code>ftp://</code>.",
        "upload-file-error": "Ис сыыһа",
        "wlheader-showupdated": "Бүтэһик киирииҥ кэннэ уларыйбыт сирэйдэр '''модьу''' бичигинэн бэлиэтэннилэр.",
        "wlnote": "Манна кэлиҥҥи {{PLURAL:$2|чаас|<strong>$2</strong> чаас}} иһигэр оҥоһуллубут бүтэһик <strong>$1</strong> уларытыы көрдөрүлүннэ, бу кэминээҕи туругунан $3, $4.",
        "wlshowlast": "Бүтэһик $2 күҥҥэ $1 чааска көрдөр",
-       "watchlistall2": "бары",
        "wlshowtime": "Тиһэҕи көрдөр:",
        "wlshowhideminor": "кыра суолталаах уларытыы",
        "wlshowhidebots": "оруобат",
        "contributions": "{{GENDER:$1|Кыттааччы}} суруйуута (кылаата)",
        "contributions-title": "$1 кыттааччы киллэрбит уларытыылара",
        "mycontris": "Суруйуу тиһигэ",
+       "anoncontribs": "Суруйуу тиһилигэ",
        "contribsub2": "$1 ($2) суруйуута",
        "contributions-userdoesnotexist": "Маннык \"$1\" кыттааччы аата бэлиэтэниллибэтэх.",
        "nocontribs": "Эппит критерийгэр эппиэттиир уларытыылар көстүбэтилэр.",
        "javascripttest-pagetext-frameworks": "Бука диэн, бу тургуутуу эйгэлэриттэн биирин тал: $1",
        "javascripttest-pagetext-skins": "Тургутууну ыытарга тас көрүҥүн бастаан тал:",
        "javascripttest-qunit-intro": "[$1 тургутуу документациятын] манна mediawiki.org көр.",
-       "tooltip-pt-userpage": "Кыттааччы быһыытынан тус сирэйиҥ",
+       "tooltip-pt-userpage": "{{GENDER:|Кыттааччы}} быһыытынан тус сириҥ",
        "tooltip-pt-anonuserpage": "Билигин киирбит IP-м сирэйэ",
-       "tooltip-pt-mytalk": "Кэпсэтэр-ырытар сириҥ",
+       "tooltip-pt-mytalk": "Кэпсэтэр-ырытар {{GENDER:|сириҥ}}",
        "tooltip-pt-anontalk": "Бу IP ырытыыта",
-       "tooltip-pt-preferences": "Бэйэм туруорууларым",
+       "tooltip-pt-preferences": "{{GENDER:|Бэйэҥ}} туруорууларыҥ",
        "tooltip-pt-watchlist": "Кэтээн көрөр сирэйдэрим тиһигэ",
-       "tooltip-pt-mycontris": "Суруйбут/уларыппыт Ñ\81иÑ\80Ñ\8dйдÑ\8dÑ\80иҥ Ñ\82иһикÑ\82Ñ\8dÑ\80Ñ\8d",
+       "tooltip-pt-mycontris": "Суруйбут/уларыппыт {{GENDER:|Ñ\81иÑ\80Ñ\8dйдÑ\8dÑ\80иҥ}} Ñ\82иһиликÑ\82Ñ\8dÑ\80Ñ\8d",
        "tooltip-pt-login": "Манна бэйэҕин билиһиннэриэххин сөп (булгуччута суох).",
        "tooltip-pt-logout": "Тахсыы",
        "tooltip-pt-createaccount": "Манна киирэргэ бэлиэтэнэр уонна куруук ол аатынан киирэр ордук; ол булгуччута суох",
        "tooltip-t-recentchangeslinked": "Бу сирэй сигэнэр сирэйдэригэр кэнники уларыйыылар",
        "tooltip-feed-rss": "RSS бу сирэйгэ",
        "tooltip-feed-atom": "Atom бу сирэйгэ",
-       "tooltip-t-contributions": "Бу кыттааччы уларыппыт сирэйдэрин испииһэгэ",
+       "tooltip-t-contributions": "{{GENDER:$1|Бу кыттааччы}} уларыппыт сирэйдэрин тиһилигэ",
        "tooltip-t-emailuser": "Бу киһиэхэ сурук ыытарга",
        "tooltip-t-info": "Бу сирэй туһунан сиһилии",
        "tooltip-t-upload": "Билэлэри суруттарыы",
index ed06150..79f99b3 100644 (file)
        "passwordreset-emailtext-ip": "Quarchidunu (prubbabbilmenti tu, dô nnirizzu IP $1) fici n'addumannata pi l'azziramentu dâ tò password pi {{SITENAME}} ($4). {{PLURAL:$3|Lu cuntu utenti siguenti è assuciatu|Li cunti utenti siguenti sù assuciati}} cu stu nnirizzu di posta elittrònica:\n\n$2\n\n{{PLURAL:$3|Sta password timpurània|Sti password timpurànii}} scàdinu tra {{PLURAL:$5|un jornu|$5 jorna}}.\nOra tu avissi a tràsiri e scègghiri na password nova. Si fu quarchidun'àutru a fari st'addumannata e nun tu, o si t'arricurdasti la tò password origginali e nun la voi canciari cchiù, poi gnurari stu missaggiu e cuntinuari a adupirari la tò password vecchia.",
        "passwordreset-emailtext-user": "L'utenti $1 supra a {{SITENAME}} fici n'addumannata pi l'azziramentu dâ tò password pi {{SITENAME}} ($4). {{PLURAL:$3|Lu cuntu utenti siguenti è assuciatu|Li cunti utenti siguenti sù assuciati}} cu stu nnirizzu di posta elittrònica:\n\n$2\n\n{{PLURAL:$3|Sta password timpurània|Sti password timpurànii}} scàdinu tra {{PLURAL:$5|un jornu|$5 jorna}}.\nOra tu avissi a tràsiri e scègghiri na password nova. Si fu quarchidun'àutru a fari st'addumannata e nun tu, o si t'arricurdasti la tò password origginali e nun la voi canciari cchiù, poi gnurari stu missaggiu e cuntinuari a adupirari la tò password vecchia.",
        "passwordreset-emailelement": "Nomu utenti: \n$1\n\nPassword timpurània: \n$2",
-       "passwordreset-emailsent": "Nu missaggiu di posta elittrònica d'azziramentu dâ password fu mannatu.",
+       "passwordreset-emailsentemail": "Nu missaggiu di posta elittrònica d'azziramentu dâ password fu mannatu.",
        "passwordreset-emailsent-capture": "Nu missaggiu di posta elittrònica d'azziramentu dâ password fu mannatu, cû cuntinutu chi si pò taliari ccassutta.",
        "passwordreset-emailerror-capture": "Nu missaggiu di posta elittrònica d'azziramentu dâ password fu cumpilatu, cû cuntinutu chi si pò taliari ccassutta, pirò la sò spidizzioni a l'utenti {{GENDER:$2|user}} nun arriniscìu: $1",
        "changeemail": "Canciu dû nnirizzu di posta elittrònica",
        "prefs-help-prefershttps": "Sta prifirenza fa effettu â tò pròssima trasuta.",
        "prefswarning-warning": "Facisti canciamenti ê tò prifirenzi chi ancora nun foru sarvati.\nSi ti nni vai di sta pàggina senza carcari \"$1\" li tò prifirenzi nun sunnu sarvati.",
        "prefs-tabs-navigation-hint": "Cunzigghiu: Poi adupirari li buttuna fileccia a manu manca e a manu dritta pi navigari tra dî linguetti ntâ lista.",
-       "email-address-validity-valid": "Lu nnirizzu e-mail pari bonu",
-       "email-address-validity-invalid": "Nzirisci nu nnirizzu e-mail bonu",
        "userrights": "Gistioni dî dritti di l'utenti",
        "userrights-lookup-user": "Gistisci li gruppi di l'utenti",
        "userrights-user-editname": "Metti nu nomu utenti:",
        "right-blockemail": "Bluccari n'utenti pi nun fàricci mannari posta elittrònica",
        "right-hideuser": "Bluccari nu nomu utenti, ammucciànnulu ô pùbblicu",
        "right-ipblock-exempt": "Sautari li blocchi di IP, autumàtici e di ntirvalli di IP",
-       "right-proxyunbannable": "Sautari li blocchi autumàtici dî proxy",
        "right-unblockself": "Sbluccàrisi iddu stissu",
        "right-protect": "Canciari li liveddi di prutizzioni e canciari pàggini prutetti a cascata",
        "right-editprotected": "Canciari pàggini cu prutizzioni \"{{int:protect-level-sysop}}\"",
        "uploaded-script-svg": "Fu attruvatu n'elimentu prugrammàbbili \"$1\" ntô file SVG carricatu.",
        "uploaded-hostile-svg": "Fu attruvatu còdici CSS risicusu nta l'elimentu style dû file SVG carricatu.",
        "uploaded-event-handler-on-svg": "Nun è cunzintutu di mpustari l'attribbuti gistura d'eventi <code>$1=\"$2\"</code> ntê file SVG.",
-       "uploaded-href-attribute-svg": "Nun sunnu cunzintuti l'attribbuti href <code>&lt;$1 $2=\"$3\"&gt;</code> cu na distinazzioni ca nun è lucali (p'esempiu http://, javascript:, etc) ntê file SVG.",
        "uploaded-href-unsafe-target-svg": "Fu attruvatu n'href cu na distinazzioni risicusa <code>&lt;$1 $2=\"$3\"&gt;</code> ntô file SVG carricatu.",
        "uploaded-animate-svg": "Fu attruvata n'etichetta \"animate\" ca purrìa canciari href, adupirannu l'attribbutu \"from\" <code>&lt;$1 $2=\"$3\"&gt;</code>, ntô file SVG carricatu.",
        "uploaded-setting-event-handler-svg": "Lu mpustari l'attribbuti dî gistura di l'eventi veni bluccatu; fu attruvatu <code>&lt;$1 $2=\"$3\"&gt;</code> ntô file SVG carricatu.",
        "filewasdeleted": "Nu file cu stu nomu hà statu già carricatu e cancillatu n passatu. Virificari $1 prima di carricàrilu di novu.",
        "filename-bad-prefix": "Lu nomu dô file chi stai carricannu ncigna cu '''\"$1\"''', chi è nu nomu non descrittivu assignatu, di solitu, automaticamenti dê màchini fotugràfici diggitali. Pi favuri scegghia nu nomu cchiù descrtittivu pi lu tò file.",
        "filename-prefix-blacklist": " #<!-- dassa sta lìnia comu è già --> <pre>\n# Chista di sèquitu è la sintassi:\n#   * Tutti li scritti a pàrtiri dô carattiri \"#\" sugnu commenti\n#   * Tutti li lìnii non vacanti sugnu prefissi pi tipici nomi di file assignati automaticamenti dê màchini fotugràfici diggitali\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # arcuni cellulari\nIMG # genericu\nJD # Jenoptik\nMGP # Pentax\nPICT # arcuni\n #</pre> <!-- dassa sta lìnia comu è già -->",
-       "upload-success-subj": "Carricamentu arrinisciutu",
-       "upload-success-msg": "Lu tò carricamentu di [$2] arriniscìu. Ccà c'è lu file carricatu: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Prubblema ntô carricamentu",
-       "upload-failure-msg": "Ammattìu un prubblema ntô tò carricamentu di [$2]:\n\n$1",
-       "upload-warning-subj": "Avvisu pû carricamentu",
-       "upload-warning-msg": "Ammattìu un prubblema ntô tò carricamentu di [$2]. Poi turnari ô [[Special:Upload/stash/$1|mòdulu di carricamentu]] pi currèggiri stu prubblema.",
        "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",
        "wlheader-showupdated": "Li pàggini ca foru canciati dâ tò ùrtima vìsita sunnu evidinziati n <strong>grassettu</strong>.",
        "wlnote": "Sutta attrovi l'ùrtim{{PLURAL:$1|u canciamentu|i <strong>$1</strong> canciamenti}} fatti nta l'ùrtim{{PLURAL:$1|a ura|i <strong>$2</strong> uri}}, aggiurnati ê $4 dû $3.",
        "wlshowlast": "Ammustra l'ùrtimi $1 uri $2 jorna",
-       "watchlistall2": "tutti",
        "watchlist-options": "Opzioni dâ lista taliata",
        "watching": "Agghiunciuta â lista taliata...",
        "unwatching": "Cancillata dâ lista taliata...",
        "movenosubpage": "Sta pàggina nun havi suttapàggini.",
        "movereason": "Mutivu:",
        "revertmove": "riprìstina",
-       "delete_and_move": "Cancella e sposta",
        "delete_and_move_text": "==Richiesta di cancillazzioni==\n\nLa pàggina di distinazzioni \"[[:$1]]\" asisti già. S'addisìa cancillàrila pi rènniri pussìbbili lu spustamentu?",
        "delete_and_move_confirm": "Sì, suvrascrivi la pàggina asistenti",
        "delete_and_move_reason": "Cancillata pi fari largu ô spustamentu di \"[[$1]]\"",
        "special-characters-title-minus": "signu menu",
        "mw-widgets-dateinput-no-date": "Nudda data scigghiuta",
        "mw-widgets-titleinput-description-new-page": "sta pàggina ancora nun esisti",
-       "mw-widgets-titleinput-description-redirect": "rimannu a $1"
+       "mw-widgets-titleinput-description-redirect": "rimannu a $1",
+       "randomrootpage": "Pàggina ràdica casuali"
 }
index 11dbca2..b9f8739 100644 (file)
        "uploaded-script-svg": "اسڪرپٽ جوڳو ايليمينٽ ”$1” مليو آهي، اپلوڊ ٿيل ايس وي جي فائيل ۾.",
        "uploaded-hostile-svg": "اپلوڊ ٿيل ايس وي جي فائيل جو غير محفوظ سي ايس ايس ۾ اسٽائيل ايلمينٽ مليو",
        "uploaded-event-handler-on-svg": "ايس وي جي فائيل ۾ ايوينٽ هينڊلر خصوصيتون <code>$1=\"$2\"</code> مقرر ڪرڻ جي اجازت نہ آهي.",
-       "uploaded-href-attribute-svg": "Href خاصيتون <code>&lt;$1 $2=\"$3\"&gt;</code> نان لوڪل ٽارگيٽ سان جهڙوڪ ( http://, javascript:, وغيره) ايس وي جي فائيل ۾ اجازت مليل نه آهن.",
        "uploaded-href-unsafe-target-svg": "href جو غير محفوظ نشانو مليو آهي <code>&lt;$1 $2=\"$3\"&gt;</code> اپلوڊ ٿيل ايس وي جي فائيل ۾",
        "uploaded-animate-svg": "”اينيميٽ“ ٽيگ ڳوليو  جيڪا ٿي سگهي ٿو href کي تبديل ڪري رهي هجي. \"form\" وصف استعمال ڪندي <code>&lt;$1 $2=\"$3\"&gt;</code> اپلوڊ ٿيل ايس وي جي فائيل ۾",
        "uploaded-setting-event-handler-svg": "واقعي کي هينڊل ڪندڙ جي سيٽنگ جون وصفون بلاڪ ٿيل آهن. \n<code>&lt;$1 $2=\"$3\"&gt;</code> اپلوڊ ٿيل ايس وي جي فائيل ۾ مليو",
        "upload-description": "فائيل جي تشريح",
        "upload-options": "چاڙھ جا چارا",
        "watchthisupload": "هيءُ فائيل ٽيٽيو",
-       "upload-success-subj": "چاڙهہ ڪامياب",
-       "upload-failure-subj": "چاڙھ جو مسئلو",
-       "upload-warning-subj": "چاڙھ جو چتاءُ",
        "upload-file-error": "اندروني چُڪَ",
        "upload-dialog-title": "فائيل چاڙهيو",
        "upload-dialog-button-cancel": "رد",
        "notanarticle": "غير موادي صفحو",
        "watchlist-details": "{{PLURAL:$1|$1 صفحو|$1 صفحا}} توهان جي ٽيٽ فهرست، ڳالھ ٻولھ جا صفحا الڳ شمار نٿا ٿين.",
        "wlshowlast": "گذريل $1 ڪلاڪ $2 ڏينهن ڏيکاريو",
-       "watchlistall2": "سڀ",
        "watchlist-hide": "لڪايو",
        "watchlist-submit": "ڏيکاريو",
        "wlshowtime": "ڪيترو عرصو ڏيکارجي:",
index 1752d8c..406de5a 100644 (file)
        "upload-description": "Abruozdielė aprašīms",
        "upload-options": "Nostatīmā īkelėmō",
        "watchthisupload": "Keravuotė ton abruozdieli",
-       "upload-success-subj": "Ožkruovėms pavīka gerā",
-       "upload-failure-subj": "Ožkruovėma bieda",
        "upload-proto-error": "Nateisėngs protuokols",
        "upload-proto-error-text": "Nutuolinē ikielims raikalaun, kū URL prasėdietu <code>http://</code> o <code>ftp://</code>.",
        "upload-file-error": "Vėduojė bieda",
        "wlheader-showupdated": "Poslapē, katrėi pakeistė nu Tamstas paskotėnė apsėlonkėma čiesa anūs, īr pažīmietė '''pastuorintā'''",
        "wlnote": "Ruoduoma '''$1''' paskotėniu pakeitėmu, atlėktū par '''$2''' paskotėniu adīnu.",
        "wlshowlast": "Ruodītė paskotėniu $1 adīnu, $2 dėinū a  pakeitėmus",
-       "watchlistall2": "vėsos",
        "watchlist-options": "Keravuojamu sāroša pasėrinkėmā",
        "watching": "Kergiama keravuojamu sārošon...",
        "unwatching": "Šalėnama ėš keravuojamu sāraša...",
index a673d6e..31f5eac 100644 (file)
        "passwordreset-emailtext-ip": "Netko (vjerovatno Vi, s IP adrese $1) je zatražio resetiranje vaše lozinke/zaporke {{SITENAME}} ($4). Sljedeći {{PLURAL:$3|račun korisnika je|računi korisnika su}}\npovezani s ovom e-mail adresom:\n\n$2\n\n{{PLURAL:$3|Ova privremena lozinka|Ove privremene lozinke}} će isteći za {{PLURAL:$5|jedan dan|$5 dana}}.\nTrebate se prijaviti i odabrati novu lozinku. Ako je neko drugi napravio ovaj\nzahtjev, ili ako ste se sjetili Vaše početne lozinke, a ne želite je promijeniti, \nmožete zanemariti ovu poruku i nastaviti koristiti staru lozinku.",
        "passwordreset-emailtext-user": "Korisnik $1 na {{SITENAME}} je zatražio resetiranje vaše lozinke/zaporke za {{SITENAME}}\n($4). Sljedeći {{PLURAL:$3|korisnički račun je|korisnički računi su}} povezani s ovom e-mail adresom:\n\n$2\n\n{{PLURAL:$3|Ova privremena lozinka|Ove privremene lozinke}} će isteći za {{PLURAL:$5|jedan dan|$5 dana}}.\nTrebate se prijaviti i odabrati novu lozinku. Ako je neko drugi napravio ovaj\nzahtjev, ili ako ste se sjetili Vaše originalne lozinke, a ne želite je više promijeniti, \nmožete zanemariti ovu poruku i nastaviti koristiti staru lozinku.",
        "passwordreset-emailelement": "Korisničko ime: \n$1\n\nPrivremena šifra: \n$2",
-       "passwordreset-emailsent": "Ako je ovo adresa e-pošte s kojom ste registrirali ovaj račun, podsjetnik šifre/lozinke/zaporke će vam biti poslan na vašu adresu e-pošte.",
+       "passwordreset-emailsentemail": "Ako je ovo adresa e-pošte s kojom ste registrirali ovaj račun, podsjetnik šifre/lozinke/zaporke će vam biti poslan na vašu adresu e-pošte.",
        "passwordreset-emailsent-capture": "E-mail za resetiranje lozinke/zaporke je poslan (prikazan dolje).",
        "passwordreset-emailerror-capture": "E-mail za resetiranje lozinke/zaporke, prikazan dolje, je poslan, ali slanje {{GENDER:$2|korisniku|korisnici|korisniku}} nije uspjelo: $1",
        "changeemail": "Promeni ili ukloni e-adresu",
        "prefs-help-prefershttps": "Ova mogućnost će stupiti na snagu kod vaše sljedeće prijave.",
        "prefswarning-warning": "Napravili ste promjene u vašim postavkama koje još uvijek nisu sačuvane. Ako napustite ovu stranicu bez da pritisnete na \"$1\", postavke neće biti ažurirane.",
        "prefs-tabs-navigation-hint": "Savjet: Možete koristi lijevu i desnu navigacijsku tipku kako biste se kretali između tabova u popisu tabova.",
-       "email-address-validity-valid": "E-mail adresa izgleda valjano",
-       "email-address-validity-invalid": "Unesite valjanu e-mail adresu",
        "userrights": "Postavke korisničkih prava",
        "userrights-lookup-user": "Menadžment korisničkih prava",
        "userrights-user-editname": "Unesi korisničko ime:",
        "right-blockemail": "Blokiranje korisnika da šalje e-mail",
        "right-hideuser": "Blokiranje korisničkog imena, i njegovo sakrivanje od javnosti",
        "right-ipblock-exempt": "Zaobilaženje IP blokada, autoblokada i blokada IP grupe",
-       "right-proxyunbannable": "Zaobilaženje automatskih blokada proxy-ja",
        "right-unblockself": "Deblokiraj samog sebe",
        "right-protect": "Promjena nivoa zaštite i uređivanje kaskadno zaštićenih stranica",
        "right-editprotected": "Uređivanje stranice zaštićenih kao \"{{int:protect-level-sysop}}\"",
        "uploaded-script-svg": "Pronađen skriptni element \"$1\" u postavljenoj SVG datoteci.",
        "uploaded-hostile-svg": "Pronađen nesiguran CSS u stilskom elementu postavljene SVG datoteke.",
        "uploaded-event-handler-on-svg": "Nije dozvoljeno postavljanje atributa koji kontroliraju događaje <code>$1=\"$2\"</code> u SVG datotekama.",
-       "uploaded-href-attribute-svg": "href atributi <code>&lt;$1 $2=\"$3\"&gt;</code> sa nelokalnom metom (npr. http://, javascript:, etc) nisu dozvoljeni u SVG datotekama.",
        "uploaded-href-unsafe-target-svg": "Pronađen href sa nesigurnom metom <code>&lt;$1 $2=\"$3\"&gt;</code> u postavljenoj SVG datoteci.",
        "uploaded-animate-svg": "Pronađena \"animate\" oznaka koja možda mijenja href koristeći se \"from\" atributom <code>&lt;$1 $2=\"$3\"&gt;</code> u postavljenoj SVG datoteci.",
        "uploaded-setting-event-handler-svg": "Postavljanje kontrole događaja je blokirano, pronađeno <code>&lt;$1 $2=\"$3\"&gt;</code> u postavljenoj SVG datoteci.",
        "filewasdeleted": "Datoteka s ovim nazivom je ranije postavljana i nakon toga obrisana.\nPrije nego što nastavite da je ponovno postavite trebate provjeriti $1.",
        "filename-thumb-name": "Ovo izgleda kao thumbnail naslov. Molimo ne postavljate thumbnaile natrag na istu wiki. Ukoliko je riječ o nečemu drugome, molimo popravite ime datoteke tako da ima više značenja i nema thumbnail prefiks.",
        "filename-bad-prefix": "Naziv datoteke koju postavljate počinje sa '''\"$1\"''', što je naziv koji obično automatski dodjeljuju digitalni fotoaparati i kamere.\nMolimo Vas da odaberete naziv datoteke koji opisuje njen sadržaj.",
-       "upload-success-subj": "Uspješno slanje",
-       "upload-success-msg": "Vaša datoteka iz [$2] je uspješno postavljena. Dostupna je ovdje: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Problem pri postavljanju",
-       "upload-failure-msg": "Nastao je problem s Vašim postavljanjem iz [$2]:\n\n$1",
-       "upload-warning-subj": "Upozorenje pri slanju",
-       "upload-warning-msg": "Nastao je problem sa vašim postavljanjem sa [$2]. Morate se vratiti na [[Special:Upload/stash/$1|formular za postavljanje]] kako biste riješili ovaj problem.",
        "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": "Interna pogreška",
        "wlheader-showupdated": "* Stranice koje su izmijenjene od kad ste ih posljednji put posjetili su prikazane '''podebljanim slovima'''",
        "wlnote": "Ispod {{PLURAL:$1|je najskorija izmjena|su <strong>$1</strong> najskorije izmjene|<strong>$1</strong> najskorijih izmjena}} načinjenih {{PLURAL:$2|posljednjeg sata|u posljednjih <strong>$2</strong> sata|u posljednjih <strong>$2</strong> sati}}, od $3, $4.",
        "wlshowlast": "Prikaži posljednjih $1 sati $2 dana",
-       "watchlistall2": "sve",
        "watchlist-options": "Opcije liste praćenja",
        "watching": "Pratim... / Додавање на списак надгледања...",
        "unwatching": "Ne pratim…",
index f1529aa..7033701 100644 (file)
        "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.",
        "undo-failure": "Úpravu nie je možné vrátiť kvôli konfliktným medziľahlým úpravám.",
        "undo-norev": "Túto úpravu nie je možné vrátiť, pretože neexistuje alebo bola zmazaná.",
-       "undo-nochange": "Zdá se, že úprava už bola zrušená.",
+       "undo-nochange": "Zdá sa, že úprava už bola zrušená.",
        "undo-summary": "Revízia $1 používateľa [[Special:Contributions/$2|$2]] ([[User talk:$2|diskusia]]) bola vrátená",
        "undo-summary-username-hidden": "Vrátiť revíziu $1, ktorú vykonal skrytý používateľ",
        "cantcreateaccounttitle": "Nie je možné vytvoriť účet",
        "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.",
        "filename-bad-prefix": "Názov súboru, ktorý nahrávate, začína '''„$1“''', čo nie je popisné meno. Takýto názov typicky priraďujú digitálne fotoaparáty automaticky. Prosím, dajte vášmu súboru popisnejší názov.",
        "filename-prefix-blacklist": "  #<!-- tento riadok ponechajte bez zmeny --> <pre>\n# Syntax sa používa nasledovne:\n#   * Všetko od znaku \"#\" až po koniec riadku je komentár\n#   * Každý neprázdny riadok je prefix pre typické názvy súborov, ktorý sa automaticky priraďuje k digitálnym fotoaparátom\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # niektoré mobilné telefóny\nIMG # všeobecné\nJD # Jenoptik\nMGP # Pentax\nPICT # rôzne\n  #</pre> <!-- tento riadok ponechajte bez zmeny -->",
-       "upload-success-subj": "Nahranie bolo úspešné",
-       "upload-success-msg": "Nahranie súboru [$2]prebehlo úspešne. Je dostupný tu: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Problém s nahrávaním",
-       "upload-failure-msg": "Vyskytol sa problém s vašim nahrávaním z [$2]:\n\n$1",
-       "upload-warning-subj": "Upozornenie pri nahrávaní",
-       "upload-warning-msg": "Nastal problém pri nahrávaní z [$2]. Môžete sa vrátiť na [[Special:Upload/stash/$1|nahrávací formulár]] a tento problém napraviť.",
        "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",
        "wlheader-showupdated": "Stránky, ktoré boli zmenené od vašej poslednej návštevy sú zobrazené '''tučne'''.",
        "wlnote": "Nižšie {{PLURAL:$1|je posledná úprava|sú posledné <strong>$1</strong> úpravy|je posledných <strong>$1</strong> úprav}} za {{PLURAL:$2|poslednú hodinu|posledné <strong>$2</strong> hodiny|posledných <strong>$2</strong> hodín}} do $4, $3.",
        "wlshowlast": "Zobraziť posledných $1 hodín $2 dní",
-       "watchlistall2": "všetky",
        "watchlist-hide": "Skryť",
        "watchlist-submit": "Zobraziť",
        "wlshowtime": "Zobraziť posl.:",
index 09119f4..881c7c2 100644 (file)
        "uploaded-script-svg": "V naloženi datoteki SVG smo našli skriptni element »$1«.",
        "uploaded-hostile-svg": "V slogovnem elementu naložene datoteke SVG smo našli nevaren CSS.",
        "uploaded-event-handler-on-svg": "Določevanje atributov za dogodke <code>$1=\"$2\"</code> v datotekah SVG ni dovoljeno.",
-       "uploaded-href-attribute-svg": "Atributi href <code>&lt;$1 $2=\"$3\"&gt;</code> z nelokalnimi cilji (npr. http://, javascript: idr.) v datotekah SVG niso dovoljeni.",
-       "uploaded-href-unsafe-target-svg": "V naloženi datoteki SVG smo našli href z nevarnim ciljem <code>&lt;$1 $2=\"$3\"&gt;</code>.",
+       "uploaded-href-attribute-svg": "Atributi href v datotekah SVG lahko ciljajo samo na http:// ali https://, našli smo <code>&lt;$1 $2=\"$3\"&gt;</code>.",
+       "uploaded-href-unsafe-target-svg": "Našli smo href na nevaren podatek: cilj URI <code>&lt;$1 $2=\"$3\"&gt;</code> v naloženi datoteki SVG.",
        "uploaded-animate-svg": "V naloženi datoteki SVG smo našli oznako »animate«, ki lahko spreminja href z uporabo atributa »from« <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploaded-setting-event-handler-svg": "Določevanje atributov za dogodke je blokirano; v naloženi datoteki SVG smo našli <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploaded-setting-href-svg": "Uporaba oznake »set« za določevanje atributa »href« starševskega elementa je blokirano.",
        "filename-thumb-name": "Zdi se, da je to naslov predogledne sličice. Prosimo, ne nalagajte predoglednih sličic nazaj na isti wiki. V nasprotnem primeru popravite ime datoteke, da je bolj smiselno in da nima predpone sličice.",
        "filename-bad-prefix": "Ime datoteke, ki jo nalagate, se začne z '''»$1«''', ki je neopisno ime, ponavadi dodeljeno samodejno s strani digitalnih fotoaparatov.\nProsimo, izberite bolj opisno ime vaše datoteke.",
        "filename-prefix-blacklist": " #<!-- pustite to vrstico takšno, kot je --> <pre>\n# Sintaksa:\n#   * Vse od znaka »#« in do konca vrstice je komentar\n#   * Vsaka neprazna vrstica je predpona za tipična imena datotek, določena samodejno s strani digitalnih fotoaparatov\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # nekateri mobilni telefoni\nIMG # generično\nJD # Jenoptik\nMGP # Pentax\nPICT # mešano\n #</pre> <!-- pustite to vrstico takšno, kot je -->",
-       "upload-success-subj": "Datoteka je bila uspešno naložena",
-       "upload-success-msg": "Datoteka s strani [$2] se je uspešno naložila. Na razpolago je tukaj: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Težava pri nalaganju",
-       "upload-failure-msg": "Prišlo je do težave z vašo naloženo datoteko iz [$2]:\n\n$1",
-       "upload-warning-subj": "Opozorilo pri nalaganju",
-       "upload-warning-msg": "Prišlo je do težave pri nalaganju datoteke iz [$2]. Lahko se vrnete na [[Special:Upload/stash/$1|obrazec za nalaganje]], da odpravite težavo.",
        "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-too-many-redirects": "URL vsebuje preveč preusmeritev",
        "upload-http-error": "Prišlo je do napake HTTP: $1",
        "upload-copy-upload-invalid-domain": "Nalaganje kopij s te domene ni možno.",
+       "upload-foreign-cant-upload": "Wiki ni konfiguriran za nalaganje datotek z zahtevanega tujega skladišča datotek.",
        "upload-dialog-title": "Naloži datoteko",
        "upload-dialog-button-cancel": "Prekliči",
        "upload-dialog-button-done": "Končano",
        "wlheader-showupdated": "Strani, spremenjene od vašega zadnjega ogleda, so prikazane '''krepko'''.",
        "wlnote": "{{PLURAL:$1|Navedena je zadnja|Navedeni sta zadnji|Navedene so zadnje|Navedenih je zadnjih}} <strong>$1</strong> {{PLURAL:$1|sprememba|spremembi|spremembe|sprememb}} v {{PLURAL:$2|zadnji <strong>$2</strong> uri|zadnjih <strong>$2</strong> urah}}, od $3, $4.",
        "wlshowlast": "Prikaži zadnjih $1 ur; $2 dni",
-       "watchlistall2": "vse",
        "watchlist-hide": "Skrij",
        "watchlist-submit": "Prikaži",
        "wlshowtime": "Časovno obdobje za prikaz:",
        "lockedbyandtime": "($1 dne $2 ob $3)",
        "move-page": "Preimenuj $1",
        "move-page-legend": "Prestavitev strani",
-       "movepagetext": "Z naslednjim obrazcem lahko stran preimenujete in hkrati prestavite tudi vso njeno zgodovino.\nDosedanja stran se bo spremenila v preusmeritev na prihodnje mesto.\nSamodejno lahko posodobite preusmeritve, ki kažejo na dosedanji naslov.\nČe se za to ne odločite, ne pozabite preveriti vseh [[Special:DoubleRedirects|dvojnih]] ali [[Special:BrokenRedirects|pretrganih preusmeritev]].\nOdgovorni ste, da bodo povezave še naprej kazale na prava mesta.\n\nKjer stran z izbranim novim imenom že obstaja, dejanje '''ne''' bo izvedeno, razen če je sedanja stran preusmeritev in brez zgodovine urejanj.\nTo pomeni, da lahko, če se zmotite, strani vrnete prvotno ime, ne morete pa prepisati že obstoječe strani.\n\n'''Opozorilo!'''\nPrestavitev strani je lahko za priljubljeno stran velika in nepričakovana sprememba, zato pred izbiro ukaza dobro premislite.",
-       "movepagetext-noredirectfixer": "Z uporabo spodnjega obrazca lahko preimenujete stran tako, da prestavite vso njeno zgodovino na novo ime.\nStar naslov bo postal preusmeritvena stran na nov naslov.\nNe pozabite preveriti [[Special:DoubleRedirects|dvojnih]] ali [[Special:BrokenRedirects|pretrganih preusmeritev]].\nVi ste odgovorni, da vse povezave še naprej kažejo tja, kamor naj bi.\n\nUpoštevajte, da stran '''ne''' bo prestavljena, če že obstaja stran z novim naslovom, razen če je prazna ali preusmeritev brez pretekle zgodovine urejanj.\nTo pomeni, da lahko stran preimenujete nazaj, če ste naredili napako, vendar ne morete prepisati obstoječe strani.\n\n'''Opozorilo!'''\nTo je lahko velika in nepričakovana sprememba za priljubljeno stran;\nprosimo, pred nadaljevanjem se prepričajte, da razumete posledice tega dejanja.",
+       "movepagetext": "Z naslednjim obrazcem lahko stran preimenujete in hkrati prestavite tudi vso njeno zgodovino.\nDosedanja stran se bo spremenila v preusmeritev na prihodnje mesto.\nSamodejno lahko posodobite preusmeritve, ki kažejo na dosedanji naslov.\nČe se za to ne odločite, ne pozabite preveriti vseh [[Special:DoubleRedirects|dvojnih]] ali [[Special:BrokenRedirects|pretrganih preusmeritev]].\nOdgovorni ste, da bodo povezave še naprej kazale na prava mesta.\n\nKjer stran z izbranim novim imenom že obstaja, dejanje <strong>ne</strong> bo izvedeno, razen če je sedanja stran preusmeritev in brez zgodovine urejanj.\nTo pomeni, da lahko, če se zmotite, strani vrnete prvotno ime, ne morete pa prepisati že obstoječe strani.\n\n<strong>Opomba:</strong>\nPrestavitev strani je lahko za priljubljeno stran velika in nepričakovana sprememba, zato pred izbiro ukaza dobro premislite.",
+       "movepagetext-noredirectfixer": "Z uporabo spodnjega obrazca lahko preimenujete stran tako, da prestavite vso njeno zgodovino na novo ime.\nStar naslov bo postal preusmeritvena stran na nov naslov.\nNe pozabite preveriti [[Special:DoubleRedirects|dvojnih]] ali [[Special:BrokenRedirects|pretrganih preusmeritev]].\nVi ste odgovorni, da vse povezave še naprej kažejo tja, kamor naj bi.\n\nUpoštevajte, da stran <strong>ne</strong> bo prestavljena, če že obstaja stran z novim naslovom, razen če je preusmeritev brez pretekle zgodovine urejanj.\nTo pomeni, da lahko stran preimenujete nazaj, če ste naredili napako, vendar ne morete prepisati obstoječe strani.\n\n<strong>Opomba:</strong>\nTo je lahko velika in nepričakovana sprememba za priljubljeno stran;\nprosimo, pred nadaljevanjem se prepričajte, da razumete posledice tega dejanja.",
        "movepagetalktext": "Če označite to polje, bomo pripadajočo pogovorno stran samodejno prestavili na nov naslov, razen kadar tam že obstaja neprazna pogovorna stran.\n\nČe je tako, boste morali pogovorno stran, če želite, prestaviti ali združiti ročno.",
        "moveuserpage-warning": "'''Opozorilo:''' Premikate uporabniško stran. To pomeni, da bo premaknjena samo stran in uporabnik ''ne'' bo preimenovan.",
        "movecategorypage-warning": "<strong>Opozorilo:</strong> Prestavili boste stran kategorije. Pomnite, da boste prestavili samo stran; vse strani v stari kategoriji <em>ne</em> bomo prekategorizirali v novo kategorijo.",
        "movenosubpage": "Ta stran nima podstrani.",
        "movereason": "Razlog:",
        "revertmove": "vrni",
-       "delete_and_move_text": "==Treba bi bilo brisati==\n\nCiljna stran »[[:$1]]« že obstaja. Ali jo želite, da bi pripravili prostor za prestavitev, izbrisati?",
+       "delete_and_move_text": "Ciljna stran »[[:$1]]« že obstaja.\nAli jo želite izbrisati, da bi pripravite prostor za prestavitev?",
        "delete_and_move_confirm": "Da, izbriši stran",
        "delete_and_move_reason": "Izbrisano z namenom pripraviti prostor za »[[$1]]«",
        "selfmove": "Izvirni in ciljni naslov sta enaka;\nstrani ni mogoče prestaviti samo vaše.",
        "move-leave-redirect": "Na prejšnji strani ustvari preusmeritev",
        "protectedpagemovewarning": "'''Opozorilo:''' Stran je bila zaklenjena in jo lahko prestavljajo samo uporabniki z administratorskimi pravicami.\nZa sklicevanje je naveden zadnji vnos v dnevnik:",
        "semiprotectedpagemovewarning": "'''Opomba:''' Stran je bila zaklenjena in jo lahko prestavljajo samo registrirani uporabniki.\nZa sklicevanje je naveden zadnji vnos v dnevniku:",
-       "move-over-sharedrepo": "== Datoteka obstaja ==\n[[:$1]] obstaja v deljeni shrambi. Premik datoteke na ta naslov bo prepisalo deljeno datoteko.",
+       "move-over-sharedrepo": "[[:$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.\nProsimo, izberite drugo ime.",
        "export": "Izvoz strani",
        "exporttext": "Besedilo in urejevalno zgodovino ene ali več strani lahko izvozite v obliki XML.\nTo je mogoče uvoziti v drug wiki z uporabo MediaWiki preko [[Special:Import|strani za uvoz]].\n\nČe želite izvoziti strani, v spodnje polje vpišite naslove (enega v vsako vrstico) in označite, ali želite vse prejšnje različice z vrsticami o zgodovini strani ali le trenutno različico s podatki o trenutnem urejanju.\n\nČe gre za slednje, lahko uporabite tudi povezavo, npr. [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] za\nstran »[[{{MediaWiki:Mainpage}}]]«.",
        "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",
+       "siteusers": "{{PLURAL:$2|{{GENDER:$1|uporabnika|uporabnice}}|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.",
        "expand_templates_preview_fail_html": "<em>Ker ima {{SITENAME}} omogočen surov HTML in je prišlo do izgube podatkov o seji, smo predogled skrili kot previdnostni ukrep pred napadi z JavaScriptom.</em>\n\n<strong>Če je to veljaven poskus predogleda, poskusite znova.</strong>\nČe še vedno ne deluje, se poskusite [[Special:UserLogout|odjaviti]] in znova prijaviti.",
        "expand_templates_preview_fail_html_anon": "<em>Ker ima {{SITENAME}} omogočen surov HTML in niste prijavljeni, smo predogled skrili kot previdnostni ukrep pred napadi z JavaScriptom.</em>\n\n<strong>Če je to veljaven poskus predogleda, se [[Special:UserLogin|prijavite]] in poskusite znova.</strong>",
        "expand_templates_input_missing": "Navesti boste morali vsaj nekaj vhodnega besedila.",
-       "pagelanguage": "Izbirnik jezika strani",
+       "pagelanguage": "Spremeni jezik strani",
        "pagelang-name": "Stran",
        "pagelang-language": "Jezik",
        "pagelang-use-default": "Uporabi privzeti jezik",
        "pagelang-submit": "Potrdi",
        "right-pagelang": "Spreminjanje jezika strani",
        "action-pagelang": "spreminjanje jezika strani",
-       "log-name-pagelang": "Dnevnik spreminjanja jezika",
+       "log-name-pagelang": "Dnevnik sprememb jezika",
        "log-description-pagelang": "Dnevnik sprememb jezika strani.",
-       "logentry-pagelang-pagelang": "$1 je {{GENDER:$2|spremenil|spremenila|spremenil(-a)}} jezik strani $3 z jezika $4 na jezik $5.",
+       "logentry-pagelang-pagelang": "$1 je {{GENDER:$2|spremenil|spremenila|spremenil(-a)}} jezik strani $3 z jezika $4 na jezik $5",
        "default-skin-not-found": "Ups! Privzeta koža vašega wikija, določena v <code dir=\"ltr\">$wgDefaultSkin</code> kot <code>$1</code>, ni na voljo.\n\nKot kaže, vaša namestitev vsebuje {{PLURAL:$4|kožo, navedeno|2=koži, navedeni|3=kože, navedene|4=kože, navedene|kož, navedenih}} spodaj. Oglejte si [https://www.mediawiki.org/wiki/Manual:Skin_configuration Priročnik: Konfiguracija kož] za več informacij, kako {{PLURAL:$4|jo omogočiti in nastaviti kot privzeto|ju omogočiti in nastaviti kot privzeti|jih omogočiti in nastaviti kot privzete}}.\n\n$2\n\n; Če ste MediaWiki pravkar namestili:\n: Verjetno ste ga namestili z git ali neposredno iz izvorne kode na kakšen drug način. To je pričakovano. Poskusite namestiti nekaj kož z [https://www.mediawiki.org/wiki/Category:All_skins imenika kož mediawiki.org] tako:\n:* Prenesite [https://www.mediawiki.org/wiki/Download namestitveni program tarball], ki vsebuje nekaj kož in razširitev. Iz njega lahko kopirate in prilepite mapo <code>skins/</code>.\n:* Prenesite tarballe posamezne kož z [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Uporaba Gita za prenos kož].\n: Če ste razvijalec MediaWiki, to ne sme poseči v vaš repozitorij git.\n\n; Če ste MediaWiki pravkar posodobili:\n: MediaWiki 1.24 in novejši nameščenih kož več ne omogočijo samodejno (oglejte si [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Priročnik: Samodejno odkrivanje kož]). V <code>LocalSettings.php</code> lahko prilepite {{PLURAL:$5|naslednjo vrstico|naslednji vrstici|naslednje vrstice}}, da omogočite {{PLURAL:$4|nameščeno kožo|2=nameščeni koži|3=nameščene kože|4=nameščene kože|nameščenih kož}}:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Če ste pravkar spremenili <code>LocalSettings.php</code>:\n: Ponovno preverite imena kož, če ste se morda zatipkali.",
        "default-skin-not-found-no-skins": "Ups! Privzeta koža vašega wikija, določena v <code dir=\"ltr\">$wgDefaultSkin</code> kot <code>$1</code>, ni na voljo.\n\nNimate nameščenih kož.\n\n; Če ste MediaWiki pravkar namestili ali posodobili:\n: Verjetno ste ga namestili z git ali neposredno iz izvorne kode na kakšen drug način. To je pričakovano. MediaWiki 1.24 in novejši nimajo vključene nobene kože v glavnem repozitoriju. Poskusite namestiti nekaj kož z [https://www.mediawiki.org/wiki/Category:All_skins imenika kož mediawiki.org] tako:\n:* Prenesite [https://www.mediawiki.org/wiki/Download namestitveni program tarball], ki vsebuje nekaj kož in razširitev. Iz njega lahko kopirate in prilepite mapo <code dir=\"ltr\">skins/</code>.\n:* Prenesite tarballe posamezne kož z [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Uporaba Gita za prenos kož].\n: Če ste razvijalec MediaWiki, to ne sme poseči v vaš repozitorij git. Oglejte si [https://www.mediawiki.org/wiki/Manual:Skin_configuration Priročnik: Konfiguracija kož] za več informacij, kako jih omogočiti in nastaviti kot privzete.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (omogočeno)",
index 85ae24f..f49d715 100644 (file)
        "userrights": "Управљање корисничким правима",
        "userrights-lookup-user": "Управљање корисничким групама",
        "userrights-user-editname": "Корисничко име:",
-       "editusergroup": "Ð\9fÑ\80еÑ\82Ñ\80ажи",
+       "editusergroup": "УÑ\80еди {{GENDER:$1|коÑ\80иÑ\81ниÑ\87ке}} Ð³Ñ\80Ñ\83пе",
        "editinguser": "Мењате корисничка права {{GENDER:$1|корисника|кориснице}} <strong>[[User:$1|$1]]</strong> $2",
        "userrights-editusergroup": "Промена корисничких група",
-       "saveusergroups": "Сачувај корисничке групе",
+       "saveusergroups": "Сачувај {{GENDER:$1|корисничке}} групе",
        "userrights-groupsmember": "Члан:",
        "userrights-groupsmember-auto": "Подразумевано члан и:",
        "userrights-groups-help": "Можете променити групе којима овај корисник припада.\n* Означен квадратић означава да се корисник налази у тој групи.\n* Неозначен квадратић означава да се корисник не налази у тој групи.\n* Звездица означава да не можете уклонити групу ако је додате и обратно.",
        "uploaded-script-svg": "Пронађен скриптни елеменат „$1“ у постављеној SVG датотеци.",
        "uploaded-hostile-svg": "Пронађен небезбедан CSS у стилском елементу постављене SVG датотеке.",
        "uploaded-event-handler-on-svg": "Није дозвољено постављање атрибута који контролишу догађаје <code>$1=\"$2\"</code> у SVG датотекама.",
-       "uploaded-href-attribute-svg": "href атрибути <code>&lt;$1 $2=\"$3\"&gt;</code> са нелокалном метом (нпр. http://, javascript:, итд) нису дозвољени у SVG датотекама.",
        "uploaded-href-unsafe-target-svg": "Пронађен href са несигурном метом <code>&lt;$1 $2=\"$3\"&gt;</code> у постављеној SVG датотеци.",
        "uploaded-animate-svg": "Пронађена „animate“ ознака која можда мења href користећи се „from“ атрибутом <code>&lt;$1 $2=\"$3\"&gt;</code> у постављеној SVG датотеци.",
        "uploadscriptednamespace": "Ова SVG датотека садржи погрешан именски простор „$1“",
        "filewasdeleted": "Датотека с овим називом је раније послата, али је обрисана.\nПроверите $1 пре него што наставите с поновним слањем.",
        "filename-bad-prefix": "Назив датотеке коју шаљете почиње са <strong>„$1“</strong>, а њега обично додељују дигитални фотоапарати.\nИзаберите назив датотеке који описује њен садржај.",
        "filename-prefix-blacklist": " #<!-- оставите овај ред онаквим какав јесте --> <pre>\n# Синтакса је следећа:\n#   * Све од тарабе па до краја реда је коментар\n#   * Сваки ред означава префикс типичних назива датотека које додељивају дигитални апарати\nCIMG # Касио\nDSC_ # Никон\nDSCF # Фуџи\nDSCN # Никон\nDUW # неки мобилни телефони\nIMG # опште\nJD # Џеноптик\nMGP # Пентакс\nPICT # разно\n #</pre> <!-- оставите овај ред онаквим какав јесте -->",
-       "upload-success-subj": "Успешно отпремање",
-       "upload-success-msg": "Датотека из [$2] је послата. Доступна је овде: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Грешка при отпремању",
-       "upload-failure-msg": "Дошло је до проблема при слању из [$2]:\n\n$1",
-       "upload-warning-subj": "Упозорење при отпремању",
-       "upload-warning-msg": "Дошло је до грешке при слању из [$2]. Вратите се на [[Special:Upload/stash/$1|страницу за слање датотека]] да бисте решили проблем.",
        "upload-proto-error": "Неисправан протокол",
        "upload-proto-error-text": "Слање са спољне локације захтева адресу која почиње са <code>http://</code> или <code>ftp://</code>.",
        "upload-file-error": "Унутрашња грешка",
        "lockmanager-notlocked": "Не могу да откључам „$1“ јер није закључан.",
        "lockmanager-fail-closelock": "Не могу да затворим катанац за „$1“.",
        "lockmanager-fail-deletelock": "Не могу да обришем катанац за „$1“.",
-       "lockmanager-fail-acquirelock": "Не могу да добијем катанац за „$1“.",
+       "lockmanager-fail-acquirelock": "Не могу да се закључам за „$1“.",
        "lockmanager-fail-openlock": "Не могу да отворим катанац за „$1“.",
        "lockmanager-fail-releaselock": "Не могу да ослободим катанац за „$1“.",
        "lockmanager-fail-db-bucket": "Не могу да контактирам с довољно катанаца у канти $1.",
        "log-title-wildcard": "Тражи наслове који почињу с овим текстом",
        "showhideselectedlogentries": "Прикажи/сакриј изабране догађаје",
        "log-edit-tags": "Уреди ознаке изабраних уноса у дневницима",
+       "checkbox-select": "Изабери: $1",
+       "checkbox-all": "све",
+       "checkbox-none": "ништа",
+       "checkbox-invert": "обрни",
        "allpages": "Све странице",
        "nextpage": "Следећа страница ($1)",
        "prevpage": "Претходна страница ($1)",
        "wlheader-showupdated": "Странице које су измењене откад сте их последњи пут посетили су '''подебљане'''.",
        "wlnote": "Испод {{PLURAL:$1|је последња измена|су последње <strong>$1</strong> измене|је последњих <strong>$1</strong> измена}} у {{PLURAL:$2|претходном сату|претходна <strong>$2</strong> сата|претходних <strong>$2</strong> сати}}, закључно са $3, $4.",
        "wlshowlast": "Прикажи последњих $1 сати, $2 дана",
-       "watchlistall2": "све",
        "watchlist-hide": "Сакриј",
        "watchlist-submit": "Прикажи",
        "wlshowtime": "Период за приказ:",
        "lockedbyandtime": "(од $1 дана $2 у $3)",
        "move-page": "Премештање „$1“",
        "move-page-legend": "Премештање странице",
-       "movepagetext": "Доњи образац ће преименовати страницу, премештајући целу историју на ново име.\nСтари наслов постаће преусмерење на нови наслов.\nМожете аутоматски изменити преусмерење до изворног наслова.\nПогледајте [[Special:DoubleRedirects|двострука]] или [[Special:BrokenRedirects|покварена]] преусмерења.\nНа вама је одговорност да везе и даље иду тамо где би требало да иду.\n\nСтраница '''неће''' бити премештена ако већ постоји страница с тим именом, осим ако је она празна, садржи преусмерење или нема историју измена.\nТо значи да можете вратити страницу на претходно место ако погрешите, али не можете заменити постојећу страницу.\n\n'''Пажња!'''\nОво може представљати драстичну и неочекивану измену за популарну страницу;\nдобро размислите о последицама пре него што наставите.",
-       "movepagetext-noredirectfixer": "Доњи образац ће преименовати страницу, премештајући целу историју на ново име.\nСтари наслов постаће преусмерење на нови наслов.\nПогледајте [[Special:DoubleRedirects|двострука]] или [[Special:BrokenRedirects|покварена]] преусмерења.\nНа вама је одговорност да везе и даље иду тамо где би требало да иду.\n\nСтраница '''неће''' бити премештена ако већ постоји страница с тим именом, осим ако је она празна, садржи преусмерење или нема историју измена.\nТо значи да можете вратити страницу на претходно место ако погрешите, али не можете заменити постојећу страницу.\n\n'''Пажња!'''\nОво може представљати драстичну и неочекивану измену за популарну страницу;\nдобро размислите о последицама пре него што наставите.",
+       "movepagetext": "Доњи образац ће преименовати страницу, премештајући целу историју на ново име.\nСтари наслов постаће преусмерење на нови наслов.\nМожете аутоматски изменити преусмерење до изворног наслова.\nПогледајте [[Special:DoubleRedirects|двострука]] или [[Special:BrokenRedirects|покварена]] преусмерења.\nНа вама је одговорност да везе и даље иду тамо где би требало да иду.\n\nСтраница <strong>неће</strong> бити премештена ако већ постоји страница с тим именом, осим ако је она празна, садржи преусмерење или нема историју измена.\nТо значи да можете вратити страницу на претходно место ако погрешите, али не можете заменити постојећу страницу.\n\n<strong>Пажња!</strong>\nОво може представљати драстичну и неочекивану измену за популарну страницу;\nдобро размислите о последицама пре него што наставите.",
+       "movepagetext-noredirectfixer": "Доњи образац ће преименовати страницу, премештајући целу историју на ново име.\nСтари наслов постаће преусмерење на нови наслов.\nПогледајте [[Special:DoubleRedirects|двострука]] или [[Special:BrokenRedirects|покварена]] преусмерења.\nНа вама је одговорност да везе и даље иду тамо где би требало да иду.\n\nСтраница <strong>неће</strong> бити премештена ако већ постоји страница с тим именом, осим ако је она празна, садржи преусмерење или нема историју измена.\nТо значи да можете вратити страницу на претходно место ако погрешите, али не можете заменити постојећу страницу.\n\n<strong>Пажња!</strong>\nОво може представљати драстичну и неочекивану измену за популарну страницу;\nдобро размислите о последицама пре него што наставите.",
        "movepagetalktext": "Ако сте означили овај квадратић, одговарајућа страница за разговор биће аутоматски премештена на нови наслов, осим ако већ постоји страница за разговор са истим насловом.\n\nУ том случају, мораћете ручно да је преместите или спојите, ако има потребе за тим.",
        "moveuserpage-warning": "'''Упозорење:''' на путу сте да преместите корисничку страницу. Имајте у виду да ће само страница бити премештена, а сам корисник ''неће'' бити преименован.",
        "movecategorypage-warning": "<strong>Упозорење:</strong> премештате страницу категорије. Имајте на уму да ће само страница бити премештена и да све странице у старој категорији <em>неће</em> бити рекатегорисане у нову категорију.",
        "movenosubpage": "Ова страница нема подстрана.",
        "movereason": "Разлог:",
        "revertmove": "врати",
-       "delete_and_move_text": "== Потребно брисање ==\n\nОдредишна страница „[[:$1]]“ већ постоји. \nЖелите ли да је обришете да бисте ослободили место за премештање?",
+       "delete_and_move_text": "Одредишна страница „[[:$1]]“ већ постоји. \nЖелите ли да је обришете да бисте ослободили место за премештање?",
        "delete_and_move_confirm": "Да, обриши страницу",
        "delete_and_move_reason": "Обрисано да се ослободи место за премештање из „[[$1]]“",
        "selfmove": "Изворни и одредишни наслови су истоветни;\nне могу да преместим страницу преко саме себе.",
        "scarytranscludefailed-httpstatus": "[Не могу да преузмем шаблон $1: HTTP $2]",
        "scarytranscludetoolong": "[URL адреса је предугачка]",
        "deletedwhileediting": "<strong>Упозорење</strong>: ова страница је обрисана након што сте почели с уређивањем!",
-       "confirmrecreate": "Корисник [[User:$1|$1]] ([[User talk:$1|разговор]]) је обрисао ову страницу након што сте почели да је уређујете из следећег разлога:\n: <em>$2</em>\nПотврдите да стварно желите да направите страницу.",
-       "confirmrecreate-noreason": "Корисник [[User:$1|$1]] ([[User talk:$1|разговор]]) је обрисао ову страницу након што сте почели да га уређујете. Потврдите да стварно желите да поново направите ову страницу.",
+       "confirmrecreate": "{{GENDER:$1|Корисник|Корисница}} [[User:$1|$1]] ([[User talk:$1|разговор]]) је {{GENDER:$1|обрисао|обрисала}} ову страницу након што сте почели да је уређујете из следећег разлога:\n: <em>$2</em>\nПотврдите да стварно желите да направите страницу.",
+       "confirmrecreate-noreason": "{{GENDER:$1|Корисник|Корисница}} [[User:$1|$1]] ([[User talk:$1|разговор]]) је {{GENDER:$1|обрисао|обрисала}} ову страницу након што сте почели да је уређујете. Потврдите да стварно желите да поново направите ову страницу.",
        "recreate": "Поново направи",
        "unit-pixel": "px",
        "confirm_purge_button": "У реду",
        "version-hook-subscribedby": "Пријављено од",
        "version-version": "($1)",
        "version-no-ext-name": "[нема имена]",
-       "version-svn-revision": "(изм. $2)",
        "version-license": "Медијавики лиценца",
        "version-ext-license": "Лиценца",
        "version-ext-colheader-name": "Екстензија",
index 7e42258..3140260 100644 (file)
        "userrights": "Upravljanje korisničkim pravima",
        "userrights-lookup-user": "Upravljanje korisničkim grupama",
        "userrights-user-editname": "Korisničko ime:",
-       "editusergroup": "Pretraži",
+       "editusergroup": "Uredi {{GENDER:$1|korisničke}} grupe",
        "editinguser": "Menjate korisnička prava {{GENDER:$1|korisnika|korisnice|korisnika}} '''[[User:$1|$1]]''' $2",
        "userrights-editusergroup": "Promena korisničkih grupa",
-       "saveusergroups": "Sačuvaj korisničke grupe",
+       "saveusergroups": "Sačuvaj {{GENDER:$1|korisničke}} grupe",
        "userrights-groupsmember": "Član:",
        "userrights-groupsmember-auto": "Podrazumevano član i:",
        "userrights-groups-help": "Možete promeniti grupe kojima ovaj korisnik pripada.\n* Označen kvadratić označava da se korisnik nalazi u toj grupi.\n* Neoznačen kvadratić označava da se korisnik ne nalazi u toj grupi.\n* Zvezdica označava da ne možete ukloniti grupu ako je dodate i obratno.",
        "filewasdeleted": "Datoteka s ovim nazivom je ranije poslata, ali je obrisana.\nProverite $1 pre nego što nastavite s ponovnim slanjem.",
        "filename-bad-prefix": "Naziv datoteke koju šaljete počinje sa <strong>„$1“</strong>, a njega obično dodeljuju digitalni fotoaparati.\nIzaberite naziv datoteke koji opisuje njen sadržaj.",
        "filename-prefix-blacklist": " #<!-- ostavite ovaj red onakvim kakav jeste --> <pre>\n# Sintaksa je sledeća:\n#   * Sve od tarabe pa do kraja reda je komentar\n#   * Svaki red označava prefiks tipičnih naziva datoteka koje dodeljivaju digitalni aparati\nCIMG # Kasio\nDSC_ # Nikon\nDSCF # Fudži\nDSCN # Nikon\nDUW # neki mobilni telefoni\nIMG # opšte\nJD # Dženoptik\nMGP # Pentaks\nPICT # razno\n #</pre> <!-- ostavite ovaj red onakvim kakav jeste -->",
-       "upload-success-subj": "Uspešno otpremanje",
-       "upload-success-msg": "Datoteka iz [$2] je poslata. Dostupna je ovde: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Greška pri otpremanju",
-       "upload-failure-msg": "Došlo je do problema pri slanju iz [$2]:\n\n$1",
-       "upload-warning-subj": "Upozorenje pri otpremanju",
-       "upload-warning-msg": "Došlo je do greške pri slanju iz [$2]. Vratite se na [[Special:Upload/stash/$1|stranicu za slanje datoteka]] da biste rešili problem.",
        "upload-proto-error": "Neispravan protokol",
        "upload-proto-error-text": "Slanje sa spoljne lokacije zahteva adresu koja počinje sa <code>http://</code> ili <code>ftp://</code>.",
        "upload-file-error": "Unutrašnja greška",
        "lockmanager-notlocked": "Ne mogu da otključam „$1“ jer nije zaključan.",
        "lockmanager-fail-closelock": "Ne mogu da zatvorim katanac za „$1“.",
        "lockmanager-fail-deletelock": "Ne mogu da obrišem katanac za „$1“.",
-       "lockmanager-fail-acquirelock": "Ne mogu da dobijem katanac za „$1“.",
+       "lockmanager-fail-acquirelock": "Ne mogu da se zaključam za „$1“.",
        "lockmanager-fail-openlock": "Ne mogu da otvorim katanac za „$1“.",
        "lockmanager-fail-releaselock": "Ne mogu da oslobodim katanac za „$1“.",
        "lockmanager-fail-db-bucket": "Ne mogu da kontaktiram s dovoljno katanaca u kanti $1.",
        "wlheader-showupdated": "Stranice koje su izmenjene otkad ste ih poslednji put posetili su '''podebljane'''.",
        "wlnote": "Ispod {{PLURAL:$1|je poslednja izmena|su poslednje <strong>$1</strong> izmene|je poslednjih <strong>$1</strong> izmena}} u {{PLURAL:$2|prethodnom satu|prethodna <strong>$2</strong> sata|prethodnih <strong>$2</strong> sati}}, zaključno sa $3, $4.",
        "wlshowlast": "Prikaži poslednjih $1 sati, $2 dana",
-       "watchlistall2": "sve",
        "wlshowtime": "Period za prikaz:",
        "watchlist-options": "Postavke spiska nadgledanja",
        "watching": "Nadgledanje…",
        "lockedbyandtime": "(od $1 dana $2 u $3)",
        "move-page": "Premeštanje „$1“",
        "move-page-legend": "Premeštanje stranice",
-       "movepagetext": "Donji obrazac će preimenovati stranicu, premeštajući celu istoriju na novo ime.\nStari naslov postaće preusmerenje na novi naslov.\nMožete automatski izmeniti preusmerenje do izvornog naslova.\nPogledajte [[Special:DoubleRedirects|dvostruka]] ili [[Special:BrokenRedirects|pokvarena]] preusmerenja.\nNa vama je odgovornost da veze i dalje idu tamo gde bi trebalo da idu.\n\nStranica '''neće''' biti premeštena ako već postoji stranica s tim imenom, osim ako je ona prazna, sadrži preusmerenje ili nema istoriju izmena.\nTo znači da možete vratiti stranicu na prethodno mesto ako pogrešite, ali ne možete zameniti postojeću stranicu.\n\n'''Pažnja!'''\nOvo može predstavljati drastičnu i neočekivanu izmenu za popularnu stranicu;\ndobro razmislite o posledicama pre nego što nastavite.",
-       "movepagetext-noredirectfixer": "Donji obrazac će preimenovati stranicu, premeštajući celu istoriju na novo ime.\nStari naslov postaće preusmerenje na novi naslov.\nPogledajte [[Special:DoubleRedirects|dvostruka]] ili [[Special:BrokenRedirects|pokvarena]] preusmerenja.\nNa vama je odgovornost da veze i dalje idu tamo gde bi trebalo da idu.\n\nStranica '''neće''' biti premeštena ako već postoji stranica s tim imenom, osim ako je ona prazna, sadrži preusmerenje ili nema istoriju izmena.\nTo znači da možete vratiti stranicu na prethodno mesto ako pogrešite, ali ne možete zameniti postojeću stranicu.\n\n'''Pažnja!'''\nOvo može predstavljati drastičnu i neočekivanu izmenu za popularnu stranicu;\ndobro razmislite o posledicama pre nego što nastavite.",
+       "movepagetext": "Donji obrazac će preimenovati stranicu, premeštajući celu istoriju na novo ime.\nStari naslov postaće preusmerenje na novi naslov.\nMožete automatski izmeniti preusmerenje do izvornog naslova.\nPogledajte [[Special:DoubleRedirects|dvostruka]] ili [[Special:BrokenRedirects|pokvarena]] preusmerenja.\nNa vama je odgovornost da veze i dalje idu tamo gde bi trebalo da idu.\n\nStranica <strong>neće</strong> biti premeštena ako već postoji stranica s tim imenom, osim ako je ona prazna, sadrži preusmerenje ili nema istoriju izmena.\nTo znači da možete vratiti stranicu na prethodno mesto ako pogrešite, ali ne možete zameniti postojeću stranicu.\n\n<strong>Pažnja!</strong>\nOvo može predstavljati drastičnu i neočekivanu izmenu za popularnu stranicu;\ndobro razmislite o posledicama pre nego što nastavite.",
+       "movepagetext-noredirectfixer": "Donji obrazac će preimenovati stranicu, premeštajući celu istoriju na novo ime.\nStari naslov postaće preusmerenje na novi naslov.\nPogledajte [[Special:DoubleRedirects|dvostruka]] ili [[Special:BrokenRedirects|pokvarena]] preusmerenja.\nNa vama je odgovornost da veze i dalje idu tamo gde bi trebalo da idu.\n\nStranica <strong>neće</strong> biti premeštena ako već postoji stranica s tim imenom, osim ako je ona prazna, sadrži preusmerenje ili nema istoriju izmena.\nTo znači da možete vratiti stranicu na prethodno mesto ako pogrešite, ali ne možete zameniti postojeću stranicu.\n\n<strong>Pažnja!</strong>\nOvo može predstavljati drastičnu i neočekivanu izmenu za popularnu stranicu;\ndobro razmislite o posledicama pre nego što nastavite.",
        "movepagetalktext": "Ako ste označili ovaj kvadratić, odgovarajuća stranica za razgovor biće automatski premeštena na novi naslov, osim ako već postoji stranica za razgovor sa istim naslovom.\n\nU tom slučaju, moraćete ručno da je premestite ili spojite, ako ima potrebe za tim.",
        "moveuserpage-warning": "'''Upozorenje:''' na putu ste da premestite korisničku stranicu. Imajte u vidu da će samo stranica biti premeštena, a sam korisnik ''neće'' biti preimenovan.",
        "movecategorypage-warning": "<strong>Upozorenje:</strong> premeštate stranicu kategorije. Imajte na umu da će samo stranica biti premeštena i da sve stranice u staroj kategoriji <em>neće</em> biti rekategorisane u novu kategoriju.",
        "movenosubpage": "Ova stranica nema podstrana.",
        "movereason": "Razlog:",
        "revertmove": "vrati",
-       "delete_and_move_text": "== Potrebno brisanje ==\n\nOdredišna stranica „[[:$1]]“ već postoji. \nŽelite li da je obrišete da biste oslobodili mesto za premeštanje?",
+       "delete_and_move_text": "Odredišna stranica „[[:$1]]“ već postoji. \nŽelite li da je obrišete da biste oslobodili mesto za premeštanje?",
        "delete_and_move_confirm": "Da, obriši stranicu",
        "delete_and_move_reason": "Obrisano da se oslobodi mesto za premeštanje iz „[[$1]]“",
        "selfmove": "Izvorni i odredišni naslovi su istovetni;\nne mogu da premestim stranicu preko same sebe.",
        "scarytranscludefailed-httpstatus": "[Ne mogu da preuzmem šablon $1: HTTP $2]",
        "scarytranscludetoolong": "[URL adresa je predugačka]",
        "deletedwhileediting": "<strong>Upozorenje</strong>: ova stranica je obrisana nakon što ste počeli s uređivanjem!",
-       "confirmrecreate": "Korisnik [[User:$1|$1]] ([[User talk:$1|razgovor]]) je obrisao ovu stranicu nakon što ste počeli da je uređujete iz sledećeg razloga:\n: <em>$2</em>\nPotvrdite da stvarno želite da napravite stranicu.",
-       "confirmrecreate-noreason": "Korisnik [[User:$1|$1]] ([[User talk:$1|razgovor]]) je obrisao ovu stranicu nakon što ste počeli da ga uređujete. Potvrdite da stvarno želite da ponovo napravite ovu stranicu.",
+       "confirmrecreate": "{{GENDER:$1|Korisnik|Korisnica}} [[User:$1|$1]] ([[User talk:$1|razgovor]]) je {{GENDER:$1|obrisao|obrisala}} ovu stranicu nakon što ste počeli da je uređujete iz sledećeg razloga:\n: <em>$2</em>\nPotvrdite da stvarno želite da napravite stranicu.",
+       "confirmrecreate-noreason": "{{GENDER:$1|Korisnik|Korisnica}} [[User:$1|$1]] ([[User talk:$1|razgovor]]) je {{GENDER:$1|obrisao|obrisala}} ovu stranicu nakon što ste počeli da je uređujete. Potvrdite da stvarno želite da ponovo napravite ovu stranicu.",
        "recreate": "Ponovo napravi",
        "unit-pixel": "px",
        "confirm_purge_button": "U redu",
        "version-hook-subscribedby": "Prijavljeno od",
        "version-version": "($1)",
        "version-no-ext-name": "[nema imena]",
-       "version-svn-revision": "(izm. $2)",
        "version-license": "Medijaviki licenca",
        "version-ext-license": "Licenca",
        "version-ext-colheader-name": "Ekstenzija",
index b8d7ae0..161cc19 100644 (file)
        "databaseerror-query": "Fråga: $1",
        "databaseerror-function": "Funktion: $1",
        "databaseerror-error": "Fel: $1",
+       "transaction-duration-limit-exceeded": "För att undvika att skapa höga replikeringsförseningar avbröts denna transaktion eftersom skrivvaraktigheten ($1) översteg gränsen på $2 {{PLURAL:$2|sekund|sekunder}}.\nProva istället att göra flera mindre operationer om du vill ändra flera objekt på en gång.",
        "laggedslavemode": "<strong>Varning:</strong> Sidan kan sakna de senaste uppdateringarna.",
        "readonly": "Databasen är låst",
        "enterlockreason": "Ange varför databasen låsts och inkludera en uppskattning om när låsningen kommer att hävas",
        "changepassword-success": "Ditt lösenord har ändrats!",
        "changepassword-throttled": "Du har gjort för många inloggningsförsök nyligen.\nVänta $1 innan du försöker igen.",
        "botpasswords": "Botlösenord",
+       "botpasswords-summary": "<em>Botlösenord</em> ger åtkomst till ett användarkonto via API utan att använda kontots primära inloggningsuppgifter. Tillgängliga användarrättigheter när du är loggar in med ett botlösenord kan vara begränsade.\n\nOm du inte vet varför du kanske vill göra detta bör du förmodligen inte göra det. Ingen behöver någonsin be dig att generera ett av dessa och ge det till dem.",
        "botpasswords-disabled": "Botlösenord är inaktiverade.",
+       "botpasswords-no-central-id": "För att använda botlösenord måste du vara inloggad på ett centraliserat konto.",
        "botpasswords-existing": "Befintliga botlösenord",
        "botpasswords-createnew": "Skapa ett nytt botlösenord",
        "botpasswords-editexisting": "Redigera ett befintligt botlösenord",
        "botpasswords-label-cancel": "Avbryt",
        "botpasswords-label-delete": "Radera",
        "botpasswords-label-resetpassword": "Återställ lösenordet",
+       "botpasswords-label-grants": "Tillgängliga beviljanden:",
+       "botpasswords-help-grants": "Varje beviljande ger åtkomst till listade användarrättigheter som ett användarkonto redan har. Se [[Special:ListGrants|tabellen över beviljanden]] för mer information.",
+       "botpasswords-label-restrictions": "Användningsbegränsningar:",
+       "botpasswords-label-grants-column": "Beviljas",
        "botpasswords-bad-appid": "Botnamnet \"$1\" är inte giltigt.",
        "botpasswords-insert-failed": "Kunde inte lägga till botnamnet \"$1\". Har det redan lagts till?",
        "botpasswords-update-failed": "Kunde inte uppdatera botnamnet \"$1\". Har det raderats?",
        "botpasswords-deleted-title": "Botlösenord raderades",
        "botpasswords-deleted-body": "Botlösenordet \"$1\" raderades.",
        "botpasswords-newpassword": "Det nya lösenordet att logga in för <strong>$1</strong> är <strong>$2</strong>. <em>Spara detta som framtida referens.</em>",
+       "botpasswords-no-provider": "BotPasswordsSessionProvider är inte tillgänglig.",
+       "botpasswords-restriction-failed": "Begränsningar av botlösenord tillåter inte denna inloggning.",
+       "botpasswords-invalid-name": "Det angivna användarnamnet innehåller inte separatorn för botlösenord (\"$1\").",
        "botpasswords-not-exist": "Användaren \"$1\" har inte ett botlösenord som är \"$2\".",
        "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.",
        "grant-group-file-interaction": "Interagera med media",
        "grant-group-watchlist-interaction": "Interagera med din bevakningslista",
        "grant-group-email": "Skicka e-post",
-       "grant-group-high-volume": "Utför hög volymaktivitet",
+       "grant-group-high-volume": "Utför aktivitet av hög volym",
        "grant-group-customization": "Anpassning och inställningar",
        "grant-group-administration": "Utför administrativa åtgärder",
-       "grant-group-other": "Diverseaktivitet",
+       "grant-group-other": "Diverse aktivitet",
        "grant-blockusers": "Blockera och avblockera användare",
        "grant-createaccount": "Skapa konton",
        "grant-createeditmovepage": "Skapa, redigera och flytta sidor",
        "grant-editmywatchlist": "Redigera din bevakningslista",
        "grant-editpage": "Redigera befintliga sidor",
        "grant-editprotected": "Redigera skyddade sidor",
-       "grant-highvolume": "Högvolymsredigering",
-       "grant-oversight": "Dölj användare och undertryck revideringar",
+       "grant-highvolume": "Hög volymsredigering",
+       "grant-oversight": "Dölj användare och censurera versioner",
        "grant-patrol": "Patrullera ändringar på sidor",
        "grant-protect": "Skydda och ta bort skydd på sidor",
        "grant-rollback": "Rulla tillbaka ändringar på sidor",
        "action-createpage": "skapa sidor",
        "action-createtalk": "skapa diskussionssidor",
        "action-createaccount": "skapa detta användarkonto",
+       "action-autocreateaccount": "skapa detta externa användarkonto automatiskt",
        "action-history": "visa historiken för denna sida",
        "action-minoredit": "markera denna redigering som mindre",
        "action-move": "flytta denna sida",
        "uploaded-script-svg": "Hittade skriptelementet \"$1\" i den uppladdade SVG-filen.",
        "uploaded-hostile-svg": "Hittade osäker CSS i den uppladdade filens stilelement.",
        "uploaded-event-handler-on-svg": "Att ange event-handler-attribut <code>$1=\"$2\"</code> är inte tillåtet i SVG-filer.",
-       "uploaded-href-attribute-svg": "href-attribut <code>&lt;$1 $2=\"$3\"&gt;</code> med icke-lokala mål (t.ex. http://, javascript:, etc) tillåts inte i SVG filer.",
        "uploaded-href-unsafe-target-svg": "Hittade href till ett osäkert mål <code>&lt;$1 $2=\"$3\"&gt;</code> i den uppladdade SVG-filen.",
        "uploaded-animate-svg": "Hittades taggen \"animate\" som kan ändra href med hjälp av attributen \"from\" <code>&lt;$1 $2=\"$3\"&gt;</code> i den uppladdade SVG-filen.",
        "uploaded-setting-event-handler-svg": "Att ange event-handler-attribut är blockerat. Hittade <code>&lt;$1 $2=\"$3\"&gt;</code> i den uppladdade SVG-filen.",
        "filename-thumb-name": "Detta ser ut som en titel på en miniatyrbild. Ladda inte upp miniatyrer tillbaka till samma wiki. Om så inte är fallet, ändra vänligen filnamnet så att det blir mer meningsfullt, och inte har prefixet miniatyr (eller thumbnail).",
        "filename-bad-prefix": "Namnet på filen du vill ladda upp börjar med '''\"$1\"'''. Filnamnet kommer förmodligen direkt från en digitalkamera och beskriver inte filens innehåll. Välj ett annat filnamn som bättre beskriver filen.",
        "filename-prefix-blacklist": " #<!-- ändra inte den här raden --> <pre>\n# Syntaxen är följande:\n#   * All text från ett #-tecken till radens slut är en kommentar\n#   * Icke-tomma rader anger typiska prefix för filnamn som används av olika digitalkameror\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # en del mobiltelefoner\nIMG # allmänt bildprefix\nJD # Jenoptik\nMGP # Pentax\nPICT # allmänt bildprefix\n #</pre> <!-- ändra inte den här raden -->",
-       "upload-success-subj": "Uppladdningen lyckades",
-       "upload-success-msg": "Din uppladdning från [$2] lyckades. Den finns tillgänglig här: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Uppladdningsproblem",
-       "upload-failure-msg": "Det uppstod ett problem med din uppladdning från [$2]:\n\n$1",
-       "upload-warning-subj": "Uppladdningsvarning",
-       "upload-warning-msg": "Det uppstod ett problem med din uppladdning från [$2]. Du kan återvända till [[Special:Upload/stash/$1|uppladdningsformuläret]] för att rätta till detta problem.",
        "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-too-many-redirects": "URL-en innehöll för många omdirigeringar",
        "upload-http-error": "Ett HTTP-fel uppstod: $1",
        "upload-copy-upload-invalid-domain": "Uppladdning av kopior är inte tillgängligt från denna domän.",
+       "upload-foreign-cant-upload": "Denna wiki är inte konfigurerad för att ladda upp filer till det begärda externa filförvaret.",
        "upload-dialog-title": "Ladda upp fil",
        "upload-dialog-button-cancel": "Avbryt",
        "upload-dialog-button-done": "Klar",
        "log-title-wildcard": "Sök efter sidtitlar som börjar med texten",
        "showhideselectedlogentries": "Visa/Dölj markerade loggposter",
        "log-edit-tags": "Redigera taggar i valda loggposter",
+       "checkbox-select": "Välj: $1",
+       "checkbox-all": "Alla",
+       "checkbox-none": "Ingen",
+       "checkbox-invert": "Invertera",
        "allpages": "Alla sidor",
        "nextpage": "Nästa sida ($1)",
        "prevpage": "Föregående sida ($1)",
        "listgrouprights-namespaceprotection-header": "Namnrymdsbegränsningar",
        "listgrouprights-namespaceprotection-namespace": "Namnrymd",
        "listgrouprights-namespaceprotection-restrictedto": "Rättighet(er) som låter användare redigera",
-       "listgrants-summary": "Följande är en lista över OAuth-behörigheter, med deras associerade tillgång till användarrättigheter. Användare kan tillåta applikationer att använda deras konto, men med begränsad åtkomst baserat på de behörigheter användaren gav applikationen. En applikation som agerar på uppdrag av en användare kan i praktiken inte använda rättigheter som den användaren saknar.\nDet kan finnas [[{{MediaWiki:Listgrouprights-helppage}}|ytterligare information]] om individuella rättigheter.",
+       "listgrants": "Beviljanden",
+       "listgrants-summary": "Följande är en lista över behörigheter med deras associerade tillgång till användarrättigheter. Användare kan tillåta applikationer att använda deras konto, men med begränsad åtkomst baserat på de behörigheter användaren gav applikationen. En applikation som agerar på uppdrag av en användare kan i praktiken inte använda rättigheter som den användaren saknar.\nDet kan finnas [[{{MediaWiki:Listgrouprights-helppage}}|ytterligare information]] om individuella rättigheter.",
        "listgrants-grant": "Behörighet",
        "listgrants-rights": "Rättigheter",
        "trackingcategories": "Spårningskategorier",
        "wlheader-showupdated": "Sidor som har ändrats sedan ditt senaste besök visas i '''fetstil.'''",
        "wlnote": "Nedan finns {{PLURAL:$1|den senaste ändringen|de senaste <strong>$1</strong> ändringarna}} under {{PLURAL:$2|den senaste timmen|de senaste <strong>$2</strong> timmarna}} från den $3 kl. $4.",
        "wlshowlast": "Visa senaste $1 timmarna $2 dygnen",
-       "watchlistall2": "alla",
        "watchlist-hide": "Dölj",
        "watchlist-submit": "Visa",
        "wlshowtime": "Tidsperiod att visa:",
        "unblock": "Upphäv blockering av användare",
        "blockip": "Blockera {{GENDER:$1|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.\nDetta bör endast göras för att förhindra vandalisering, och i överensstämmelse med gällande [[{{MediaWiki:Policy-url}}|policy]].\nAnge orsak nedan (exempelvis genom att nämna sidor som blivit vandaliserade).",
+       "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.\nDetta bör endast göras för att förhindra vandalisering, och i överensstämmelse med gällande [[{{MediaWiki:Policy-url}}|policy]].\nAnge orsak nedan (exempelvis genom att nämna sidor som blivit vandaliserade).\nDu kan blockera intervaller av IP-adresser med [https://sv.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR]-syntax; det största tillåtna intervallet är /$1 för IPv4 och /$2 för IPv6.",
        "ipaddressorusername": "IP-adress eller användarnamn:",
        "ipbexpiry": "Varaktighet:",
        "ipbreason": "Anledning:",
        "block-log-flags-hiddenname": "användarnamn dolt",
        "range_block_disabled": "Möjligheten för administratörer att blockera intervall av IP-adresser har stängts av.",
        "ipb_expiry_invalid": "Ogiltig varaktighetstid.",
+       "ipb_expiry_old": "Utgångstiden har redan passerat.",
        "ipb_expiry_temp": "För att dölja användarnamnet måste blockeringen vara permanent.",
        "ipb_hide_invalid": "Kan inte undanhålla detta konto; det har fler än {{PLURAL:$1|en redigering|$1 redigeringar}}.",
        "ipb_already_blocked": "\"$1\" är redan blockerad",
        "lockedbyandtime": "(av $1 den $2 kl. $3)",
        "move-page": "Flytta $1",
        "move-page-legend": "Flytta sida",
-       "movepagetext": "Med hjälp av formuläret härunder kan du byta namn på en sida, och flytta hela dess historik till ett nytt namn.\nDen gamla sidtiteln kommer att göras om till en omdirigering till den nya titeln.\nDu kan välja att automatiskt uppdatera omdirigeringar som leder till den gamla titeln.\nOm du väljer att inte göra det, kontrollera då att du inte skapar några [[Special:DoubleRedirects|dubbla]] eller [[Special:BrokenRedirects|trasiga omdirigeringar]].\nDu bör också se till att länkar fortsätter att peka dit de ska.\n\nNotera att sidan '''inte''' kan flyttas om det redan finns en sida under den nya sidtiteln, såvida inte den sidan är en omdirigering till den gamla titeln och saknar annan versionshistorik.\nDet innebär att du kan flytta tillbaks en sida om du råkar göra fel, och att du inte kan skriva över existerande sidor.\n\n'''VARNING!'''\nAtt flytta en populär sida kan vara en drastisk och oväntad ändring;\ndärför bör du vara säker på att du förstår konsekvenserna innan du fortsätter med flytten.",
-       "movepagetext-noredirectfixer": "Formuläret nedan kommer att byta namn på en sida, och flytta hela sin historik till det nya namnet.\nDen gamla titeln kommer att bli en omdirigeringssida till den nya titeln.\nGlöm inte att kontrollera [[Special:DoubleRedirects|dubbla]] eller [[Special:BrokenRedirects|brutna omdirigeringar]].\nDu är ansvarig för att se till att länkar fortsätter att peka där de förväntas gå.\n\nObservera att sidan '''inte''' kommer att flyttas om det finns redan en sida på den nya titeln, förutom om den är tom eller en omdirigering och saknar tidigare redigeringshistorik.\nDetta innebär att du kan byta tillbaka namnet på en sida om du av misstag bytt namn på den, och du kan inte skriva över en befintlig sida.\n\n'''Varning!'''\nDetta kan vara en drastisk och oväntad förändring för en populär sida;\nse till att du förstår konsekvenserna av detta innan du fortsätter.",
+       "movepagetext": "Med hjälp av formuläret härunder kan du byta namn på en sida, och flytta hela dess historik till ett nytt namn.\nDen gamla sidtiteln kommer att göras om till en omdirigering till den nya titeln.\nDu kan välja att automatiskt uppdatera omdirigeringar som leder till den gamla titeln.\nOm du väljer att inte göra det, kontrollera då att du inte skapar några [[Special:DoubleRedirects|dubbla]] eller [[Special:BrokenRedirects|trasiga omdirigeringar]].\nDu bör också se till att länkar fortsätter att peka dit de ska.\n\nNotera att sidan <strong>inte</strong> kan flyttas om det redan finns en sida under den nya sidtiteln, såvida inte den sidan är en omdirigering till den gamla titeln och saknar annan versionshistorik.\nDet innebär att du kan flytta tillbaks en sida om du råkar göra fel, och att du inte kan skriva över existerande sidor.\n\n<strong>Observera:</strong>\nAtt flytta en populär sida kan vara en drastisk och oväntad ändring;\ndärför bör du vara säker på att du förstår konsekvenserna innan du fortsätter med flytten.",
+       "movepagetext-noredirectfixer": "Formuläret nedan kommer att byta namn på en sida, och flytta hela sin historik till det nya namnet.\nDen gamla titeln kommer att bli en omdirigeringssida till den nya titeln.\nGlöm inte att kontrollera [[Special:DoubleRedirects|dubbla]] eller [[Special:BrokenRedirects|brutna omdirigeringar]].\nDu är ansvarig för att se till att länkar fortsätter att peka där de förväntas gå.\n\nObservera att sidan <strong>inte</strong> kommer att flyttas om det finns redan en sida på den nya titeln, förutom om den är en omdirigering och saknar tidigare redigeringshistorik.\nDetta innebär att du kan byta tillbaka namnet på en sida om du av misstag bytt namn på den, och du kan inte skriva över en befintlig sida.\n\n<strong>Observera:</strong>\nDetta kan vara en drastisk och oväntad förändring för en populär sida;\nse till att du förstår konsekvenserna av detta innan du fortsätter.",
        "movepagetalktext": "Om du markerar denna ruta kommer den associerade diskussionssidan att automatiskt flyttas till en ny titel om inte en befintlig diskussionssida redan finns där.\n\nI detta fall måste du flytta eller sammanfoga sidan manuellt, om det önskas.",
        "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.",
        "movecategorypage-warning": "<strong>Varning:</strong> Du är på väg att flytta en kategorisida. Observera att endast sidan kommer att flyttas och eventuella sidor i den gamla kategorin kommer <em>inte</em> att kategoriseras om till den nya kategorin.",
        "movenosubpage": "Denna sida har inga undersidor.",
        "movereason": "Anledning:",
        "revertmove": "återställ",
-       "delete_and_move_text": "==Radering krävs==\nDen titel du vill flytta sidan till, \"[[:$1]]\", finns redan. Vill du radera den för att möjliggöra flytt av denna sida dit?",
+       "delete_and_move_text": "Den titel du vill flytta sidan till, \"[[:$1]]\", finns redan. Vill du radera den för att möjliggöra flytt av denna sida dit?",
        "delete_and_move_confirm": "Ja, radera sidan",
        "delete_and_move_reason": "Raderad för att göra plats till flyttning av \"[[$1]]\"",
        "selfmove": "Ursprungstitel och destinationstitel är identiska. Sidan kan inte flyttas till sig själv.",
        "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.\nDen senaste loggposten tillhandahålls nedan som referens:",
        "semiprotectedpagemovewarning": "'''Observera:''' Denna sida har låsts så att endast registrerade användare kan flytta den.\nDen senaste loggposten tillhandahålls nedan som referens:",
-       "move-over-sharedrepo": "== Filen existerar ==\n[[:$1]] existerar på en delad källa. Om du flyttar en fil till detta namn kommer den delad filen bli överskriven.",
+       "move-over-sharedrepo": "[[:$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.\nVar god välj ett annat namn.",
        "export": "Exportera sidor",
        "exporttext": "Du kan exportera text och versionshistorik för en eller flera sidor i XML-format.\nFilen kan sedan importeras till en annan MediaWiki-wiki med hjälp av sidan [[Special:Import|importera]].\n\nExportera sidor genom att skriva in sidtitlarna i rutan här nedan.\nSkriv en titel per rad och välj om du du vill exportera alla versioner av texten med sidhistorik, eller om du enbart vill exportera den nuvarande versionen med information om den senaste redigeringen.\n\nI det senare fallet kan du även använda en länk, exempel [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] för sidan \"[[{{MediaWiki:Mainpage}}]]\".",
        "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",
+       "siteusers": "{{SITENAME}}-{{PLURAL:$2|{{GENDER:$1|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.",
        "version-libraries-license": "Licens",
        "version-libraries-description": "Beskrivning",
        "version-libraries-authors": "Författare",
-       "redirect": "Omdirigering efter filnamn, användar-ID, sida eller versions-ID",
+       "redirect": "Omdirigering efter filnamn, användar-ID, sida, versions-ID eller logg-ID",
        "redirect-legend": "Omdirigera till en fil eller sida",
-       "redirect-summary": "Den här specialsidan omdirigerar till en fil (efter filnamn), en sida (efter en versions eller sidas ID) eller en användarsida (efter användar-ID). Användning: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], eller [[{{#Special:Redirect}}/user/101]].",
+       "redirect-summary": "Den här specialsidan omdirigerar till en fil (efter filnamn), en sida (efter en versions eller sidas ID), en användarsida (efter användar-ID) eller en loggpost (efter logg-ID). Användning: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]] eller [[{{#Special:Redirect}}/logid/186]].",
        "redirect-submit": "Kör",
        "redirect-lookup": "Slå upp:",
        "redirect-value": "Värde:",
        "redirect-page": "Sidans ID",
        "redirect-revision": "Sidversion",
        "redirect-file": "Filnamn",
+       "redirect-logid": "Logg-ID",
        "redirect-not-exists": "Värdet hittades inte",
        "fileduplicatesearch": "Sök efter dubblettfiler",
        "fileduplicatesearch-summary": "Sök efter dubblettfiler baserat på filernas hash-värden.",
        "tags-deactivate-not-allowed": "Det är inte möjligt att inaktivera taggen \"$1\".",
        "tags-deactivate-submit": "Inaktivera",
        "tags-apply-no-permission": "Du har inte behörighet att tillämpa taggar på dina ändringar",
-       "tags-apply-blocked": "Du kan inte använda(?) ändringsmärken när du är blockerad.",
+       "tags-apply-blocked": "Du kan inte ange ändringsmärken med dina ändringar medans du är blockerad.",
        "tags-apply-not-allowed-one": "Märket \"$1\" kan inte läggas till manuellt.",
        "tags-apply-not-allowed-multi": "Följande {{PLURAL:$2|märke|märken}} kan inte läggas till manuellt: $1",
        "tags-update-no-permission": "Du har inte behörighet att lägga till eller ta bort taggar från individuella sidversioner eller loggposter.",
        "expand_templates_preview": "Förhandsvisning",
        "expand_templates_preview_fail_html": "<em>Eftersom {{SITENAME}} har rå HTML aktiverat och det uppstod en förlust av sessionsdata har förhandsgranskningen dolts som en försiktighetsåtgärd för att skydda mot JavaScript-attacker.</em>\n\n<strong>Om detta är ett äkta försök att förhandsgranska sidan, vänligen försök igen.</strong>\nOm det fortfarande inte fungerar, försök att [[Special:UserLogout|logga ut]] och sedan logga in igen.",
        "expand_templates_preview_fail_html_anon": "<em>Eftersom {{SITENAME}} har rå HTML aktiverat och du inte är inloggad har förhandsgranskningen dolts som en försiktighetsåtgärd för att skydda mot JavaScript-attacker.</em>\n\n<strong>Om detta är ett äkta försök att förhandsgranska sidan, vänligen [[Special:UserLogin|logga in]] och försök igen.</strong>",
-       "pagelanguage": "Sidspråksväljare",
+       "expand_templates_input_missing": "Du måste åtminstone ange lite inmatningstext.",
+       "pagelanguage": "Ändra sidans språk",
        "pagelang-name": "Sida",
        "pagelang-language": "Språk",
        "pagelang-use-default": "Använd standardspråk",
        "action-pagelang": "ändra sidspråket",
        "log-name-pagelang": "Språkändringslogg",
        "log-description-pagelang": "Detta är en logg över ändringar i sidspråken.",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|ändrade}} sidspråket för $3 från $4 till $5.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|ändrade}} språket för $3 från $4 till $5.",
        "default-skin-not-found": "Ojsan! Standardutseendet för din wiki, definierad i <code dir=\"ltr\">$wgDefaultSkin</code> som <code>$1</code>, är inte tillgängligt.\n\nDin installation verkar innehålla följande {{PLURAL:$4|utseende|utseenden}}. Se [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manualen: Utseendeinställningar] för information om hur du aktiverar {{PLURAL:$4|det|dem}} och hur standard väljs.\n\n$2\n\n; Om du precis installerat MediaWiki:\n: Du installerade troligen från git, eller direkt från källkoden via någon annan metod. Detta är normalt. Försök att installera några utseenden från [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org:s utseendekatalog], genom att:\n:* Ladda ner [https://www.mediawiki.org/wiki/Download tarball-installeraren], som kommer med flera utseenden och tillägg. Du kan klippa och klistra in <code>skins/</code>-katalogen från den.\n:* Ladda ner individuella tarballs med utseenden från [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Använd Git för att ladda ner utseenden].\n: Att göra detta borde inte påverka ditt git-centralförvar om du är en MediaWiki-utvecklare. \n\n; Om du precis har uppgraderat MediaWiki:\n: MediaWiki 1.24 och nyare aktiverar ej längre automatiskt installerade utseenden (se [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Automatisk identifiering av utseenden]). Du kan klistra in följande {{PLURAL:$5|rad|rader}} i <code>LocalSettings.php</code> för att aktivera {{PLURAL:$5|det installerade utseendet|alla installerade utseenden}}:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Om du precis har modifierat <code>LocalSettings.php</code>:\n: Dubbelkolla namnen för utseendena för att identifiera stavfel.",
        "default-skin-not-found-no-skins": "Ojsan! Standardutseendet för din wiki, definierad i <code>$wgDefaultSkin</code> som <code>$1</code>, är inte tillgängligt.\n\nDu har inga installerade utseenden.\n\n; Om du precis installerat eller uppdaterat MediaWiki:\n: Du installerade troligen från git, eller direkt från källkoden via någon annan metod. Detta är att förvänta. MediaWiki 1.24 och nyare inkluderar inte några utseenden i det huvudsakliga centralförvaret. Försök att installera några utseenden från [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org:s utseendekatalog], genom att:\n:* Ladda ner [https://www.mediawiki.org/wiki/Download tarball-installeraren], som kommer med flera utseenden och tillägg. Du kan klipp-och-klistra in <code dir=\"ltr\">skins/</code>-katalogen från den.\n:* Ladda ner individuella tarballs med utseende från [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Använd Git för att ladda ner utseenden].\n: Att göra detta borde inte påverka ditt git-centralförvar om du är en MediaWiki-utvecklare. Se [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manualen: Utseendeinställningar] för information om hur utseenden aktiveras och hur standardutseendet väljs.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (aktiverad)",
        "mw-widgets-titleinput-description-new-page": "sidan existerar inte ännu",
        "mw-widgets-titleinput-description-redirect": "omdirigerar till $1",
        "api-error-blacklisted": "Välj en annan beskrivande titel.",
+       "sessionmanager-tie": "Kan inte kombinera flera begäransautentiseringstyper: $1.",
+       "sessionprovider-generic": "$1-sessioner",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "cookiebaserade sessioner",
        "sessionprovider-nocookies": "Cookies kan vara inaktiverade. Se till att du har cookies aktiverat och försök igen.",
        "randomrootpage": "Slumprotsida"
index 861a294..4b170ce 100644 (file)
        "php-uploaddisabledtext": "Дар PHP боркунии парванда ғайрифаъол шудааст.\nЛутфан танзимоти file_uploads баррасӣ намоед.",
        "uploadscripted": "Ин парванда коди скриптӣ ё HTML дорад, ки метавонад дар мурургарӣ веб нодуруст намоён шавад.",
        "upload-scripted-pi-callback": "Имкони боргузории файл ки мундариҷаи услуби коркарди XML-дастур дорад, нест.",
-       "uploaded-href-attribute-svg": "Муайянкунанда <нишон>&lt;$1 $2=\"$3\"&gt;</нишон> дар ҳадафҳои ғайри маҳаллӣ (масалан: http://, JavaScript:, ва ғайра) дар SVG-файлҳо иҷозат дода намешавад.",
        "uploadvirus": "Ин парванда вирус дорад! Ҷузъиёт: $1",
        "upload-source": "Парвандаи манбаъ",
        "sourcefilename": "Номи парвандаи аслӣ:",
        "watchthisupload": "Пайгирии ин парванда",
        "filewasdeleted": "Парвандае бо ҳамин ном пештар боргузорӣ ва пас аз он пок шудааст. Пеш аз боргузорӣ ба $1 нигаред.",
        "filename-bad-prefix": "Номи парвандае, ки шумо боргузори карданиед бо '''\"$1\"''' оғоз мешавад, ки як пешванди махсуси аксҳои сабтшуда тавассути аксбардоракҳои рақамӣ аст. Лутфан номи беҳтари тавсифотӣ барои парванда интихоб кунед.",
-       "upload-success-subj": "Фиристодан бомуваффақият",
-       "upload-success-msg": "Боркуниатон аз [$2] муваффақ буд. Он дар инҷо дастрас аст: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Ишколи боркунӣ",
-       "upload-warning-subj": "Ҳушдори боркунӣ",
        "upload-proto-error": "Қарордоди нодуруст",
        "upload-proto-error-text": "Боргузори аз дурдаст бо нишонаҳое, ки бо <code>http://</code> ё <code>ftp://</code> оғоз мешаванд, ниёз дорад.",
        "upload-file-error": "Хатои дохилӣ",
        "wlheader-showupdated": "Саҳифаҳое, ки пас аз охирин сар заданатон ба онҳо тағйир кардаанд '''пурранг''' нишон дода шудаанд",
        "wlnote": "Дар зер {{PLURAL:$1|охирин тағйир|'''$1''' охирин тағйирот}} дар $2 соати охир {{PLURAL:омадааст|омадаанд}}.",
        "wlshowlast": "Намоиши охирин $1 соат $2 рӯзҳо",
-       "watchlistall2": "ҳама",
        "watchlist-options": "Ихтиёроти феҳристи пайгириҳо",
        "watching": "Пайгири...",
        "unwatching": "Тавқифи пайгири...",
        "expand_templates_ok": "Таъйид",
        "expand_templates_remove_comments": "Ҳазфи тавзеҳот",
        "expand_templates_generate_xml": "Намоиши дарахти таҷзеҳи XML",
-       "expand_templates_preview": "Пешнамоиш"
+       "expand_templates_preview": "Пешнамоиш",
+       "randomrootpage": "Саҳифаи решавии тасодуфӣ"
 }
index cbcbb49..355e607 100644 (file)
        "watchthisupload": "เฝ้าดูไฟล์นี้",
        "filewasdeleted": "ไฟล์ชื่อนี้ถูกอัปโหลดก่อนหน้าและถูกลบไปแล้ว กรุณาตรวจสอบ $1 ก่อนอัปโหลดอีกครั้ง",
        "filename-bad-prefix": "ชื่อไฟล์ที่คุณกำลังอัปโหลดข้นต้นด้วย '''\"$1\"''' ซึ่งเป็นชื่อที่ไม่สื่อความหมายใด ๆ ที่ปกติกล้องถ่ายรูปดิจิทัลตั้งให้อัตโนมัติ \nกรุณาตั้งชื่อไฟล์ใหม่ให้สื่อความหมายกว่าเดิม",
-       "upload-success-subj": "อัปโหลดสำเร็จ",
-       "upload-success-msg": "การอัปโหลดของคุณจาก [$2] สำเร็จแล้ว และสามารถใช้ไฟล์ได้ที่นี่: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "ปัญหาการอัปโหลด",
-       "upload-failure-msg": "พบปัญหาการอัปโหลดของคุณจาก [$2]:\n\n$1",
-       "upload-warning-subj": "คำเตือนการอัปโหลด",
-       "upload-warning-msg": "พบปัญหาการอัปโหลดของคุณจาก [$2] คุณอาจกลับไปยัง[[Special:Upload/stash/$1|แบบอัปโหลด]]เพื่อแก้ไขปัญหานี้",
        "upload-proto-error": "โพรโทคอลไม่ถูกต้อง",
        "upload-proto-error-text": "การอัปโหลดโดยตรงจากเว็บต้องการยูอาร์แอลที่ขึ้นต้นด้วย <code>http://</code> หรือ <code>ftp://</code>",
        "upload-file-error": "มีข้อผิดพลาดภายใน",
        "log-title-wildcard": "ค้นหาชื่อเรื่องซึ่งขึ้นต้นด้วยข้อความนี้",
        "showhideselectedlogentries": "เปลี่ยนทัศนวิสัยของหน่วยปูมที่เลือก",
        "log-edit-tags": "ป้ายระบุการแก้ไขของรายการปูมที่เลือก",
+       "checkbox-select": "เลือก: $1",
+       "checkbox-all": "ทั้งหมด",
+       "checkbox-none": "ไม่เลือก",
+       "checkbox-invert": "กลับ",
        "allpages": "หน้าทั้งหมด",
        "nextpage": "หน้าถัดไป ($1)",
        "prevpage": "หน้าก่อนหน้า ($1)",
        "wlheader-showupdated": "หน้าที่มีการเปลี่ยนแปลงตั้งแต่คุณเยี่ยมครั้งสุดท้ายแสดงด้วย<strong>ตัวหนา</strong>",
        "wlnote": "ด้านล่างเป็น{{PLURAL:$1|การเปลี่ยนแปลงหลังสุด| <strong>$1</strong> การเปลี่ยนแปลงหลังสุด}} ใน{{PLURAL:$2|ชั่วโมง| <strong>$2</strong> ชั่วโมง}}ที่หลังสุด จนถึง $3, $4",
        "wlshowlast": "แสดง $1 ชั่วโมง $2 วันล่าสุด",
-       "watchlistall2": "ทั้งหมด",
        "watchlist-hide": "ซ่อน",
        "watchlist-submit": "แสดง",
        "wlshowtime": "ระยะเวลาที่แสดง:",
        "wlshowhideanons": "ผู้ใช้นิรนาม",
        "wlshowhidepatr": "การแก้ไขที่ตรวจสอบแล้ว",
        "wlshowhidemine": "การแก้ไขของฉัน",
+       "wlshowhidecategorization": "การจัดหมวดหมู่หน้า",
        "watchlist-options": "ตัวเลือกรายการเฝ้าดู",
        "watching": "กำลังเฝ้าดู...",
        "unwatching": "กำลังเลิกเฝ้าดู...",
        "tooltip-pt-preferences": "การตั้งค่าของคุณ",
        "tooltip-pt-watchlist": "รายการหน้าที่คุณกำลังเฝ้าดูการเปลี่ยนแปลง",
        "tooltip-pt-mycontris": "รายการหน้าที่คุณเขียน",
+       "tooltip-pt-anoncontribs": "รายการการแก้ไขจากเลขที่อยู่ไอพีนี้",
        "tooltip-pt-login": "สนับสนุนให้คุณล็อกอิน แต่ไม่บังคับ",
        "tooltip-pt-logout": "ล็อกเอาต์",
        "tooltip-pt-createaccount": "สนับสนุนให้คุณสร้างบัญชีและล็อกอิน แต่ไม่บังคับ",
        "pageinfo-category-files": "จำนวนไฟล์",
        "markaspatrolleddiff": "ทำเครื่องหมายว่าตรวจสอบแล้ว",
        "markaspatrolledtext": "ทำเครื่องหมายว่าหน้านี้ถูกตรวจสอบแล้ว",
+       "markaspatrolledtext-file": "ทำเครื่องหมายรุ่นไฟล์นี้ว่าตรวจสอบแล้ว",
        "markedaspatrolled": "ตรวจสอบแล้ว",
        "markedaspatrolledtext": "กำหนดรุ่นที่เลือกของ [[:$1]] ว่าตรวจสอบแล้ว",
        "rcpatroldisabled": "การตรวจสอบหน้าปรับปรุงล่าสุดถูกปิดใช้งาน",
        "newimages-legend": "ตัวกรอง",
        "newimages-label": "ชื่อไฟล์ (หรือส่วนหนึ่งของชื่อ):",
        "newimages-showbots": "แสดงไฟล์ที่บอตอัปโหลด",
+       "newimages-hidepatrolled": "ซ่อนการอัปโหลดที่ตรวจสอบแล้ว",
        "noimages": "ไม่มีให้ดู",
        "ilsubmit": "สืบค้น",
        "bydate": "ตามวันที่",
        "version-software-version": "รุ่น",
        "version-entrypoints-articlepath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgArticlePath เส้นทางบทความ]",
        "version-entrypoints-scriptpath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgScriptPath เส้นทางสคริปต์]",
-       "redirect": "การเปลี่ยนทางตามชื่อไฟล์ รหัสประจำผู้ใช้ หน้าหรือรุ่น",
+       "redirect": "การเปลี่ยนทางตามชื่อไฟล์ รหัสประจำผู้ใช้ หน้า รุ่นหรือปูม",
        "redirect-legend": "การเปลี่ยนทางไปยังไฟล์หรือหน้า",
        "redirect-summary": "หน้าพิเศษนี้เปลี่ยนทางไปยังไฟล์ (ระบุเป็นชื่อไฟล์) หน้า (ระบุเป็นรหัสรุ่นหรือรหัสหน้า) หรือหน้าผู้ใช้ (ระบุเป็นรหัสผู้ใช้ตัวเลข) การใช้งาน: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] หรือ [[{{#Special:Redirect}}/user/101]]",
        "redirect-submit": "ไป",
        "expand_templates_ok": "ตกลง",
        "expand_templates_remove_comments": "นำส่วนความเห็นออก",
        "expand_templates_preview": "ตัวอย่างผลแสดง",
-       "pagelanguage": "ตัวเลือกภาษาหน้า",
+       "expand_templates_input_missing": "คุณต้องให้ข้อความป้อนเข้าบ้าง",
+       "pagelanguage": "เปลี่ยนภาษาของหน้า",
        "pagelang-name": "หน้า",
        "pagelang-language": "ภาษา",
        "pagelang-use-default": "ใช้ภาษาโดยปริยาย",
        "pagelang-select-lang": "เลือกภาษา",
+       "pagelang-submit": "ส่ง",
        "right-pagelang": "เปลี่ยนภาษาหน้า",
        "action-pagelang": "เปลี่ยนภาษาหน้า",
        "log-name-pagelang": "ปูมการเปลี่ยนภาษา",
index dabc16c..0d673a5 100644 (file)
        "virus-unknownscanner": "bilinmeyen antivürüs:",
        "logouttext": "'''Artık oturumunuzu kapattınız.'''\n\nTarayıcınızın önbelleğini temizleyinceye kadar bazı sayfalarda, oturumunuz açıkmış gibi gözükmeye devam edebilir.",
        "cannotlogoutnow-title": "Şu an oturum kapatılamıyor",
-       "cannotlogoutnow-text": "$1 kullanılırken oturum kapatmak mümkün degil.",
+       "cannotlogoutnow-text": "$1 kullanılırken oturumu kapatmak mümkün değil.",
        "welcomeuser": "Hoş geldin $1!",
        "welcomecreation-msg": "Hesabınız açıldı.\n[[Special:Preferences|{{SITENAME}} tercihlerinizi]] değiştirmeyi unutmayın.",
        "yourname": "Kullanıcı adı:",
        "changepassword-success": "Parolanız başarıyla değiştirildi!",
        "changepassword-throttled": "Çok fazla yeni oturum açma girişiminde bulundunuz.\nLütfen tekrar denemeden önce $1 bekleyin.",
        "botpasswords": "Bot şifreleri",
-       "botpasswords-disabled": "Bot şifreleri devre dısı.",
-       "botpasswords-no-central-id": "Bot şifresini kullanmak için, merkezi bir hesabla giriş yapmalisiniz.",
-       "botpasswords-existing": "Mevcut bot şifreleri.",
-       "botpasswords-createnew": "Yeni bir bot şifresi olustur",
-       "botpasswords-editexisting": "Mevcut bir bot şifresini duzenle",
+       "botpasswords-disabled": "Bot şifreleri devre dışı.",
+       "botpasswords-no-central-id": "Bot şifresini kullanmak için, merkezi bir hesap ile giriş yapmalısınız.",
+       "botpasswords-existing": "Mevcut bot şifreleri",
+       "botpasswords-createnew": "Yeni bir bot şifresi oluştur",
+       "botpasswords-editexisting": "Mevcut bir bot şifresini düzenle",
        "botpasswords-label-appid": "Bot ismi:",
        "botpasswords-label-create": "Oluştur",
        "botpasswords-label-update": "Güncelle",
        "botpasswords-label-resetpassword": "Şifreyi sıfırla",
        "botpasswords-label-grants-column": "Verilen",
        "botpasswords-bad-appid": "Bot ismi \"$1\" geçerli değil.",
-       "botpasswords-insert-failed": "Bot adın $1 olarak eklenmesi. Zaten eklenmiş mıydı?",
-       "botpasswords-update-failed": "Bot ismini $1 olarak güncelleme başarısız oldu. Silinmiş mıydı?",
+       "botpasswords-insert-failed": "Bot adı \"$1\" eklenemedi. Zaten eklenmiş olmalı?",
+       "botpasswords-update-failed": "Bot ismini \"$1\" olarak güncelleme başarısız oldu. Silinmiş olabilir mi?",
        "botpasswords-created-title": "Bot şifresi oluşturuldu.",
        "botpasswords-created-body": "Bot şifresi \"$1\" başarıyla oluşturuldu.",
        "botpasswords-updated-title": "Bot şifresi guncellendi",
-       "botpasswords-updated-body": "Bot şifresi $1 başarıyla güncellendi.",
+       "botpasswords-updated-body": "Bot şifresi \"$1\" başarıyla güncellendi.",
        "botpasswords-deleted-title": "Bot şifresi silindi.",
        "botpasswords-deleted-body": "Bot şifresi $1 silinmiş.",
        "botpasswords-no-provider": "BotPasswordsSessionProvider kullanılamaz.",
        "prefs-watchlist-token": "İzleme listesi anahtarı:",
        "prefs-misc": "Diğer ayarlar",
        "prefs-resetpass": "Parolayı değiştir",
-       "prefs-changeemail": "E-posta adresini değiştir veya kaldir",
+       "prefs-changeemail": "E-posta adresini değiştir veya kaldır",
        "prefs-setemail": "E-posta adresini ayarlayın",
        "prefs-email": "E-posta seçenekleri",
        "prefs-rendering": "Görünüm",
        "uploaded-script-svg": "Yüklenen SVG dosyasında komutlanabilir (scriptable) öğe bulundu: \"$1\"",
        "uploaded-hostile-svg": "Yüklenen SVG dosyasının \"style\" öğesinde güvensiz CSS bulundu.",
        "uploaded-event-handler-on-svg": "SVG dosyalarında event-handler özniteliğini <code>$1=\"$2\"</code> şeklinde ayarlanmasına izin verilmiyor.",
-       "uploaded-href-attribute-svg": "SVG dosyalarında yerel olmayan (örn. http://, javascript:, vb.) hedefleri olan <code>&lt;$1 $2=\"$3\"&gt;</code> href özniteliklerine izin verilmez.",
        "uploaded-href-unsafe-target-svg": "Yüklenen SVG dosyasında <code>&lt;$1 $2=\"$3\"&gt;</code> güvensiz hedefine href bulundu.",
        "uploaded-animate-svg": "\"animate\" etiketi bulundu, href'i değiştiriyor olabilir. Yüklenen SVG dosyasındaki \"from\" özniteliği kullanılıyor  <code>&lt;$1 $2=\"$3\"&gt;</code>",
        "uploadscriptednamespace": "Bu SVG dosyası geçersiz \"$1\" alan adını içermektedir.",
        "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.",
        "filename-bad-prefix": "Yüklemekte olduğunuz dosyanın adı, genel olarak dijital kameralar tarafından otomatik olarak ekelenen ve açıklayıcı olmayan '''\"$1\"''' ile başlamaktadır.\nLütfen dosyanız için daha açıklayıcı bir isim seçin.",
        "filename-prefix-blacklist": " #<!-- leave this line exactly as it is --> <pre>\n# Syntax is as follows:\n#   * Everything from a \"#\" character to the end of the line is a comment\n#   * Every non-blank line is a prefix for typical file names assigned automatically by digital cameras\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # some mobile phones\nIMG # generic\nJD # Jenoptik\nMGP # Pentax\nPICT # misc.\n #</pre> <!-- leave this line exactly as it is -->",
-       "upload-success-subj": "Yükleme başarılı",
-       "upload-success-msg": "[$2] yüklemeniz başarılı oldu. Yüklemeniz burada mevcut: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Yükleme sorunu",
-       "upload-failure-msg": "[$2] adresinden yapılan yüklemenizle ilgili bir sorun var:\n\n$1",
-       "upload-warning-subj": "Yükleme uyarısı",
-       "upload-warning-msg": "[$2] yüklemenizde bir sorun oluştu. Sorunu düzeltmek için [[Special:Upload/stash/$1|yükleme formuna]] geri dönebilirsiniz.",
        "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-form-label-infoform-description": "Açıklama",
        "upload-form-label-usage-title": "Kullanımı",
        "upload-form-label-usage-filename": "Dosya adı",
+       "foreign-structured-upload-form-label-own-work": "Bu benim kendi çalışmam",
        "foreign-structured-upload-form-label-infoform-categories": "Kategoriler",
        "foreign-structured-upload-form-label-infoform-date": "Tarih",
        "foreign-structured-upload-form-3-label-yes": "Evet",
        "wlheader-showupdated": "Sayfaları son ziyaretinizden beri değişen sayfalar '''kalın''' gösterilmiştir.",
        "wlnote": "$3 saat $4 itibariyle son {{PLURAL:$2|bir saatte|'''$2''' saatte}} yapılan {{PLURAL:$1|son değişiklik|son '''$1''' değişiklik}} aşağıdadır.",
        "wlshowlast": "Son $1 saati $2 günü göster",
-       "watchlistall2": "Hepsini göster",
        "watchlist-hide": "Gizle",
        "wlshowtime": "Gösterilecek zaman aralığı:",
        "wlshowhideminor": "küçük değişiklikler",
        "javascripttest-pagetext-frameworks": "Lütfen aşağıdaki test çerçevelerinden birini seçin: $1",
        "javascripttest-pagetext-skins": "Testleri koşmak için bir tema seçin:",
        "javascripttest-qunit-intro": "mediawiki.org üzerinden [$1 deneme belgelerine] bakınız.",
-       "tooltip-pt-userpage": "Kullanıcı sayfanız",
+       "tooltip-pt-userpage": "{{GENDER:|Kullanıcı}} sayfanız",
        "tooltip-pt-anonuserpage": "IP adresine ait bir kullanıcı sayfasını düzenliyorsunuz",
-       "tooltip-pt-mytalk": "Mesaj sayfanız",
+       "tooltip-pt-mytalk": "{{GENDER:|Mesaj sayfanız}}",
        "tooltip-pt-anontalk": "Bu IP adresinden yapılmış değişiklikleri tartış",
-       "tooltip-pt-preferences": "Tercihleriniz (ayarlarınız)",
+       "tooltip-pt-preferences": "{{GENDER:|Tercihleriniz}}",
        "tooltip-pt-watchlist": "Değişiklikler için izlemeye aldığınız sayfaların listesi",
-       "tooltip-pt-mycontris": "Katkılarınızın listesi",
+       "tooltip-pt-mycontris": "{{GENDER:|Katkılarınızın}} listesi",
        "tooltip-pt-anoncontribs": "Bu IP adresinden yapılmış değişiklikler listesi",
        "tooltip-pt-login": "Oturum açmanız tavsiye edilmektedir; ancak bu zorunda değildir",
        "tooltip-pt-logout": "Sistemden çık",
        "tooltip-t-recentchangeslinked": "Bu sayfadan bağlantı verilen sayfalardaki son değişiklikler",
        "tooltip-feed-rss": "Bu sayfa için RSS beslemesi",
        "tooltip-feed-atom": "Bu sayfa için atom beslemesi",
-       "tooltip-t-contributions": "Kullanıcının katkılarının listesini gör",
+       "tooltip-t-contributions": "{{GENDER:$1|Bu kullanıcı}} tarafından yapılan katkıların listesi",
        "tooltip-t-emailuser": "Bu kullanıcıya e-posta gönder",
        "tooltip-t-info": "Bu sayfa hakkında daha fazla bilgi",
        "tooltip-t-upload": "Dosya yükle",
index a523c22..a705263 100644 (file)
        "retypenew": "Яңа серсүзне кабатлагыз:",
        "resetpass_submit": "Серсүз куеп керү",
        "changepassword-success": "Серсүзегез уңышлы үзгәртелде!",
+       "botpasswords-label-appid": "Бот исеме:",
+       "botpasswords-label-create": "Төзү",
+       "botpasswords-label-update": "Яңарту",
+       "botpasswords-label-cancel": "Баш тарту",
+       "botpasswords-label-delete": "Бетерү",
+       "botpasswords-label-resetpassword": "Серсүзне ташлау",
+       "botpasswords-label-grants": "Кулланылган рөхсәтләр:",
+       "botpasswords-label-restrictions": "Куллану чикләүләре:",
+       "botpasswords-label-grants-column": "Рөхсәт",
+       "botpasswords-bad-appid": "Атамасы «$1» булган бот исеме ярамый.",
        "resetpass_forbidden": "Серсүз үзгәртелә алмый",
        "resetpass-no-info": "Бу битне карау өчен сез системага үз хисап язмагыз ярдәмендә керергә тиеш.",
        "resetpass-submit-loggedin": "Серсүзне үзгәртү",
        "mergehistory-box": "Ике битнең үзгәртүләр тарихын берләштерү:",
        "mergehistory-from": "Чыганак:",
        "mergehistory-into": "Төп бит:",
+       "mergehistory-submit": "Төзәтмәләрне берләштерү",
        "mergehistory-reason": "Сәбәп:",
        "mergelog": "Берләштерүләр көндәлеге",
        "revertmerge": "Бүлү",
        "compareselectedversions": "Сайланган юрамаларны чагыштыру",
        "showhideselectedversions": "Сайланган юрамаларны күрсәтү/яшерү",
        "editundo": "үткәрмәү",
+       "diff-empty": "(аермалар юк)",
        "diff-multi-sameuser": "(шул ук кулланучының {{PLURAL:$1|бер арадаш юрамасы|$1 арадаш юрамасы}} күрсәтелмәгән)",
        "diff-multi-otherusers": "({{PLURAL:$2|Башка бер кулланучының|$2 кулланучының}} {{PLURAL:$1|бер арадаш юрамасы|$1 арадаш юрамасы}} күрсәтелмәгән)",
        "diff-multi-manyusers": "($2 күбрәк {{PLURAL:$2|кулланучының|кулланучының}} {{PLURAL:$1|Бер арадаш юрамасы|$1 арадаш юрамасы}} күрсәтелмәгән)",
        "userrights": "Кулланучы хокуклары белән идарә итү",
        "userrights-lookup-user": "Кулланучы төркемнәре белән идарә итү",
        "userrights-user-editname": "Кулланучының исемен кертегез:",
-       "editusergroup": "Кулланучының төркемнәрен алмаштыру",
+       "editusergroup": "{{GENDER:$1|Кулланучының}} төркемнәрен алмаштыру",
        "editinguser": "{{GENDER:$1|Кулланучы}} <strong>[[User:$1|$1]]</strong> $2 хокукларын үзгәртү",
        "userrights-editusergroup": "Кулланучының төркемнәрен алмаштыру",
-       "saveusergroups": "Кулланучы төркемнәрен саклау",
+       "saveusergroups": "{{GENDER:$1|Кулланучы}} төркемнәрен саклау",
        "userrights-groupsmember": "Әгъза:",
        "userrights-groupsmember-auto": "Билгесез әгъза:",
        "userrights-groups-help": "Сез бу кулланучының хокукларын үзгәртә алмыйсыз.\n*Әгәр дә кулланучы исеме янда тамга торса, димәк бу кулланучы бирелгән төркемнең әгъзасы.\n*Әгәр дә кулланучы исеме янда тамга тормаса, димәк бу кулланучы бирелгән төркемнең әгъзасы түгел.\n*\"*\" тамгасы торса сез бу кулланучыны бу төркемнән бетерә алмыйсыз.",
        "right-writeapi": "Язма өчен API куллану",
        "right-delete": "битләрне бетерү",
        "right-editinterface": "Кулланучы интерфейсын үзгәртү",
+       "grant-group-email": "Хатлар җибәрү",
+       "grant-uploadfile": "Яңа файллар йөкләү",
+       "grant-basic": "Төп хокуклар",
        "newuserlogpage": "Кулланучыларны теркәү көндәлеге",
        "newuserlogpagetext": "Яңа теркәлгән кулланучылар исемлеге",
        "rightslog": "Кулланучының хокуклары көндәлеге",
        "action-createpage": "битләрне язырга",
        "action-createtalk": "бәхәс битен ясарга",
        "action-move": "бу битне күчерерге",
+       "action-sendemail": "электрон хат җибәрү",
        "nchanges": "$1 {{PLURAL:$1|үзгәртү}}",
        "enhancedrc-history": "тарих",
        "recentchanges": "Соңгы үзгәртүләр",
        "rcshowhidemine-show": "Күрсәтү",
        "rcshowhidemine-hide": "Яшер",
        "rcshowhidecategorization-show": "Күрсәт",
+       "rcshowhidecategorization-hide": "Яшер",
        "rclinks": "Соңгы $2 көн эчендә ясалган $1 үзгәртүне күрсәт<br />$3",
        "diff": "аерма",
        "hist": "тарих",
        "filetype-banned": "Бу файл төре тыелган.",
        "verification-error": "Бу файл әлегә тикшерү узмаган.",
        "illegal-filename": "Мондый файл исеменә рөхсәт юк",
+       "uploadwarning": "Кисәтү",
        "savefile": "Файлны саклау",
        "uploaddisabled": "Йөкләү тыелган",
        "copyuploaddisabled": "URL адресы буенча йөкләү ябылган.",
        "filewasdeleted": "Мондый исемле файл бетерелгән булган инде. Зинһар,яңадан йөкләү алдыннан $1 карагыз",
        "filename-bad-prefix": "Файлның исеме '''«$1»''' дип башлана. Зинһар, файлны тасвирлаучы исем бирегез.",
        "filename-prefix-blacklist": " #<!-- ничек бар шулай калдырыгыз --> <pre>\n# Синтаксис төбәндәгечә:\n#   *  «#» дип башланган барлык нәрсә дә комментарий дип аталачак\n#   * Һәрбер буш рәт — файлның исеменең префиксы, цифрлы камера бирүче исем\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # кайсыбер кәрәзле телефоннар\nIMG # барлык\nJD # Jenoptik\nMGP # Pentax\nPICT # төрле\n #</pre> <!-- ничек бар шулай калдырыгыз -->",
-       "upload-success-subj": "Йөкләү әйбәт үтте",
+       "upload-dialog-title": "Файл йөкләү",
+       "upload-dialog-button-cancel": "Баш тарту",
+       "upload-dialog-button-done": "Әзер",
+       "upload-dialog-button-save": "Саклау",
+       "upload-dialog-button-upload": "Йөкләү",
+       "upload-form-label-select-file": "Файлны сайлагыз",
+       "upload-form-label-infoform-title": "Тулырак",
+       "upload-form-label-infoform-name": "Исем",
+       "upload-form-label-infoform-description": "Тасвир",
+       "upload-form-label-usage-title": "Куллану",
+       "upload-form-label-usage-filename": "Файл исеме",
+       "foreign-structured-upload-form-label-own-work": "Бу минем үз эшем",
+       "foreign-structured-upload-form-label-infoform-categories": "Төркемнәр",
+       "foreign-structured-upload-form-label-infoform-date": "Дата",
+       "foreign-structured-upload-form-3-label-yes": "Әйе",
+       "foreign-structured-upload-form-3-label-no": "Юк",
+       "uploadstash": "Яшерен йөкләү",
+       "uploadstash-summary": "Әлеге бит йөкләнгән (яисә йукләү барышында булган), әмма викида әлегә күрсәтелмәгән файлларны карау мөмкинлеген бирә. Бу файлларны йөкләгән кулланучыдан башка беркемдә күрә алмый.",
+       "uploadstash-clear": "Яшерен файлларны бетерү",
+       "uploadstash-nofiles": "Сезнең яшерен файллар юк.",
+       "uploadstash-badtoken": "Әлеге гамәлне башкарып булмады, сезнең хисап язмагыз гамәлдән чыгуы ихтимал. Яңадан кабатлап карагыз.",
+       "uploadstash-errclear": "Файлларны бетереп булмады.",
+       "uploadstash-refresh": "Файллар исемлеген яңарту",
+       "invalid-chunk-offset": "Кабул ителмәгән фрагмент шуышуы",
+       "img-auth-accessdenied": "Рөхсәт юк",
+       "img-auth-nopathinfo": "<code>PATH_INFO</code> күрсәтелмәгән.\nСезнең сервер әлеге мәгълүматларны бирүгә көйләнмәгән.\nБәлки ул CGI нигезендә эшлидер һәм <code>img_auth</code> белән эш итмидер.\nТулырак мәгълүмат: https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
+       "img-auth-notindir": "Соралган юл көйләнгән йөкләү тасмасына карамый.",
+       "img-auth-badtitle": "«$1» исеменән дөрес атама төзеп булмый.",
+       "img-auth-nologinnWL": "Сез теркәлмәгәнсез, «$1» ак исемлектә түгел.",
+       "img-auth-nofile": "«$1» файлы юк.",
+       "img-auth-streaming": "«$1» агымлы тапшыруы.",
+       "http-invalid-url": "Ялган URL: $1",
        "http-read-error": "HTTP укуда хата.",
        "license": "Лицензиясе:",
        "license-header": "Лицензиясе",
        "nolicense": "Юк",
        "license-nopreview": "(Алдан карау мөмкин түгел)",
        "upload_source_file": "(сезнең санакта сайланган файл)",
+       "listfiles-delete": "бетерү",
        "listfiles-summary": "Әлеге махсус бит Сез йөкләгән бөтен файлларны күрсәтә.",
+       "listfiles_search_for": "Файл исеме буенча эзләү:",
        "imgfile": "файл",
        "listfiles": "Сүрәтләр исемлеге",
        "listfiles_thumb": "Миниатюра",
        "listfiles_size": "Үлчәм",
        "listfiles_description": "Тасвир",
        "listfiles_count": "Юрамалар",
+       "listfiles-latestversion": "Агымдагы юрама",
+       "listfiles-latestversion-yes": "Әйе",
+       "listfiles-latestversion-no": "Юк",
        "file-anchor-link": "Файл",
        "filehist": "Файлның тарихы",
        "filehist-help": "Файлның нинди булганлыгын күрү өчен датага/сәгатькә басыгыз.",
        "filedelete-legend": "Файлны бетерү",
        "filedelete-comment": "Сәбәп:",
        "filedelete-submit": "Бетерү",
+       "filedelete-nofile": "<strong>$1</strong> файлы юк.",
        "filedelete-reason-otherlist": "Башка сәбәп",
        "mimesearch": "MIME эзләү",
        "mimetype": "MIME-тип:",
        "unwatchedpages": "Беркемдә күзәтмәүче  битләр",
        "listredirects": "Юнәлтүләр исемлеге",
        "unusedtemplates": "Кулланылмаган үрнәкләр",
+       "unusedtemplateswlh": "башка сылтамалар",
        "randompage": "Очраклы бит",
+       "randomincategory-category": "Төркем:",
+       "randomincategory-submit": "Күчү",
        "randomredirect": "Очраклы биткә күчү",
        "statistics": "Хисапнамә",
        "statistics-header-pages": "Битләр хисапнамәсе",
        "statistics-users": "Теркәлгән [[Special:ListUsers|кулланучылар]]",
        "statistics-users-active": "Актив кулланучылар",
        "statistics-users-active-desc": "{{PLURAL:$1|$1 көн }} өчендә нинди дә булса үзгәртүләр керткән кулланучылар",
+       "pageswithprop": "Үзенчәлекләре кабаттан билгеләнгән битләр",
+       "pageswithprop-legend": "Үзенчәлекләре кабаттан билгеләнгән битләр",
+       "pageswithprop-text": "Монда кайбер үзенчәлекләре кулдан яңартылган битләр күрсәтелгән.",
+       "pageswithprop-prop": "Үзенчәлекнең атамасы:",
+       "pageswithprop-submit": "Табу",
        "doubleredirects": "Икеләтә юнәлтүләр",
        "brokenredirects": "Бәйләнешсез юнәлтүләр",
        "brokenredirectstext": "Бу юнәлтүләр булмаган битләргә сылтыйлар:",
        "longpages": "Озын битләр",
        "deadendpages": "Тупик битләре",
        "protectedpages": "Якланган битләр",
+       "protectedpages-page": "Бит",
+       "protectedpages-expiry": "Тәмамлана",
+       "protectedpages-performer": "Кулланучыны яклау",
+       "protectedpages-params": "Сак параметрлары",
+       "protectedpages-reason": "Сәбәп",
+       "protectedpages-submit": "Битләрне күрсәтү",
+       "protectedpages-unknown-timestamp": "Билгесез",
+       "protectedpages-unknown-performer": "Билгесез кулланучы",
        "protectedtitles": "Тыелган исемнәр",
        "listusers": "Кулланучылар исемлеге",
        "usercreated": "$3 $1 көнне $2 вакытта {{GENDER:$3|теркәлде}}",
        "all-logs-page": "Барлык көндәлекләр",
        "alllogstext": "{{SITENAME}} сәхифәсенең гомуми көндәлекләре исемлеге.\nСез нәтиҗәләрне көндәлек төре, кулланучы исеме (хәреф зурлыгын истә тотыгыз) яки куззаллаган бит (шулай ук хәреф зурлыгын истә тотыгыз) буенча тәртипкә салырга мөмкин.",
        "logempty": "Кирәкле язмалар көндәлектә юк.",
+       "checkbox-select": "Сайлау: $1",
+       "checkbox-all": "Барысы",
+       "checkbox-none": "Юк",
+       "checkbox-invert": "Әйләндерү",
        "allpages": "Барлык битләр",
        "nextpage": "Киләсе бит ($1)",
        "prevpage": "Алдагы бит ($1)",
        "listgrouprights-rights": "Хокуклар",
        "listgrouprights-helppage": "Help:Төркемнәрнең хокуклары",
        "listgrouprights-members": "(төркем исемлеге)",
+       "listgrouprights-namespaceprotection-namespace": "Исемнәр мәйданы",
+       "listgrants": "Рөхсәтләр",
+       "listgrants-grant": "Рөхсәт",
+       "listgrants-rights": "Хокуклар",
+       "trackingcategories": "Күзәтелүче төркемнәр",
+       "trackingcategories-msg": "Күзәтүче төркем",
+       "trackingcategories-name": "Хат исеме",
        "emailuser": "Бу кулланучыга хат",
        "emailuser-title-target": "{{GENDER:$1|Кулланучыга}} электрон хат язу",
        "emailuser-title-notarget": "Кулланучыга хат җибәрү",
        "emailccsubject": "$1 өчен хәбәрегезнең күчермәсе: $2",
        "emailsent": "Хат җибәрелгән",
        "emailsenttext": "E-mail хатыгыз җиберелде.",
+       "usermessage-editor": "Система хәбәрчесе",
        "watchlist": "Күзәтү исемлеге",
        "mywatchlist": "Күзәтү исемлеге",
        "watchlistfor2": "$1 өчен $2",
        "wlheader-showupdated": "Сезнең соңгы төзәтмәләрдән соң үзгәргән битләр <strong>калын</strong> шрифт белән күрсәтелгән.",
        "wlnote": "Түбәндә $3 $4 вакыт аралыгының {{PLURAL:$2|соңгы сәгатендә|соңгы <strong>$2</strong> сәгатендә}} ясалган {{PLURAL:$1|ахыргы төзәтмә|ахыргы <strong>$1</strong> төзәтмә}} күрсәтелгән.",
        "wlshowlast": "$1 сәгать $2 көн өчендә күрсәтү",
-       "watchlistall2": "барлык",
+       "watchlist-hide": "Яшер",
        "watchlist-submit": "Күрсәт",
        "wlshowtime": "Күрсәтелүче вакыт аралыгы:",
        "wlshowhideminor": "кече үзгәртүләр",
+       "wlshowhidebots": "бот",
+       "wlshowhideliu": "теркәлгән кулланучы",
        "wlshowhideanons": "аноним кулланучыларныкын",
+       "wlshowhidepatr": "тикшерелгән үзгәртүләр",
+       "wlshowhidemine": "үзгәртүләрем",
        "watchlist-options": "Күзәтү исемлеге көйләүләре",
        "watching": "Күзәтү исемлегемә өстәүе…",
        "unwatching": "Күзәтү исемлегемнән чыгаруы…",
        "rollbacklinkcount": "$1 {{PLURAL:$1|төзәтмәне}} кире кагу",
        "editcomment": "Үзгәртү өчен тасвир: \"''$1''\".",
        "revertpage": "[[Special:Contributions/$2|$2]] үзгәртүләре ([[User talk:$2|бәхәс]])  [[User:$1|$1]] юрамасына кадәр кире кайтарылды",
+       "changecontentmodel-title-label": "Битнең исеме",
+       "changecontentmodel-reason-label": "Сәбәп:",
+       "logentry-contentmodel-change-revertlink": "кайтару",
+       "logentry-contentmodel-change-revert": "кайтару",
        "protectlogpage": "Яклану көндәлеге",
        "protectedarticle": "«[[$1]]» якланган",
        "modifiedarticleprotection": "\"[[$1]]\" бите өчен яклау дәрәҗәсе үзгәртелде",
        "whatlinkshere-hidelinks": "Сылтамаларны $1",
        "whatlinkshere-hideimages": "$1 файл сылтамалары",
        "whatlinkshere-filters": "Фильтрлар",
+       "whatlinkshere-submit": "Башкару",
+       "autoblockid": "Автотыю #$1",
+       "block": "Кулланучыны тыю",
+       "unblock": "Кулланучыны тыюдан азат итү",
        "blockip": "{{GENDER:$1|Кулланучыны}} тыю",
        "blockip-legend": "Кулланучыны тыю",
        "ipaddressorusername": "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",
+       "ipb-confirm": "Тыюны раслау",
        "badipaddress": "Ялгыш IP адресы",
        "blockipsuccesssub": "Тыю башкарылган",
        "ipb-unblock-addr": "$1 кулланучысын тыюдан азат итү",
        "unblockip": "Кулланучыны тыюдан азат итү",
        "ipusubmit": "Бу тыюны туктату",
        "ipblocklist": "Тыелган кулланучылар",
+       "blocklist-timestamp": "Дата/вакыт",
+       "blocklist-target": "Максат",
+       "blocklist-expiry": "Тәмамлана",
+       "blocklist-by": "Тыючы идарәче",
+       "blocklist-params": "Тыю параметрлары",
+       "blocklist-reason": "Сәбәп",
        "ipblocklist-submit": "Эзләү",
+       "ipblocklist-localblock": "Локаль тыюлык",
        "infiniteblock": "билгеле бер вакытсыз",
+       "expiringblock": "$1 $2 тәмамлана",
+       "anononlyblock": "анонимнар гына",
+       "noautoblockblock": "автотыю ябык",
+       "createaccountblock": "хисап язмасы теркәү тыелган",
+       "emailblock": "хат җибәрү тыелган",
        "blocklink": "тыю",
        "unblocklink": "тыюдан азат итү",
        "change-blocklink": "тыюны үзгәртү",
        "unlockbtn": "Мәгълүматлар базасына язу мөмкинлеген кайтару",
        "move-page": "$1 — исемен алмаштыру",
        "move-page-legend": "Битне күчерү",
-       "movepagetext": "Астагы форманы куллану битнең исемен алыштырып, аның барлык тарихын яңа исемле биткә күчерер.\nИске исемле бит яңа исемле биткә юнәлтү булып калыр.\nСез иске исемгә юнәлтүләрне автоматик рәвештә яңа исемгә күчерә аласыз.\nӘгәр моны эшләмәсәгез, [[Special:DoubleRedirects|икеле]] һәм [[Special:BrokenRedirects|өзелгән юнәлтүләрне]] тикшерегез.\nСез барлык сылтамаларның кирәкле җиргә сылтавына җаваплы.\n\nКүздә тотыгыз: әгәр яңа исем урынында бит булса инде, һәм ул буш яки юнәлтү түгел исә, бит <strong>күчерелмәячәк</strong>.\nБу шуны аңлата: сез ялгышып күчерсәгез, битне кайтара аласыз, әмма инде булган битне бетерә алмыйсыз.\n\n<strong>Игътибар!</strong>\nПопуляр битләрне күчерү зур һәм көтелмәгән нәтиҗәләргә китерә ала.\nДәвам иткәнче, барлык нәтиҗәләрне аңлавыгызны тагын бер кат уйлагыз.",
+       "movepagetext": "Астагы форманы куллану битнең исемен алыштырып, аның барлык тарихын яңа исемле биткә күчерер.\nИске исемле бит яңа исемле биткә юнәлтү булып калыр.\nСез иске исемгә юнәлтүләрне автоматик рәвештә яңа исемгә күчерә аласыз.\nӘгәр моны эшләмәсәгез, [[Special:DoubleRedirects|икеле]] һәм [[Special:BrokenRedirects|өзелгән юнәлтүләрне]] тикшерегез.\nСез барлык сылтамаларның кирәкле җиргә сылтавына җаваплы.\n\nКүздә тотыгыз: әгәр яңа исем урынында бит булса инде, һәм ул буш яки юнәлтү түгел исә, бит <strong>күчерелмәячәк</strong>.\nБу шуны аңлата: сез ялгышып күчерсәгез, битне кайтара аласыз, әмма инде булган битне бетерә алмыйсыз.\n\n<strong>Искәрмә:</strong>\nПопуляр битләрне күчерү зур һәм көтелмәгән нәтиҗәләргә китерә ала.\nДәвам иткәнче, барлык нәтиҗәләрне аңлавыгызны тагын бер кат уйлагыз.",
        "movepagetalktext": "Бу пунктны сайлаган очракта, аның бәхәс бите дә автоматик рәвештә күчереләчәк, әгәрдә шундый исемле башка тулы бәхәс бите булмаса.\n\nБу очракларда сезгә битләрне үзегезгә күчерергә туры киләчәк.",
        "movenotallowed": "Сездә мәкаләләрне күчерү хокуклары юк.",
        "newtitle": "Яңа исем:",
        "tooltip-feed-rss": "Бу бит өчен RSS трансляциясе",
        "tooltip-feed-atom": "Бу бит өчен Atom трансляциясе",
        "tooltip-t-contributions": "{{GENDER:$1|Бу кулланучының}} кертем исемлеге",
-       "tooltip-t-emailuser": "Бу кулланучыга хат җибәрү",
+       "tooltip-t-emailuser": "{{GENDER:$1|Бу кулланучыга}} хат җибәрү",
        "tooltip-t-upload": "Файлларны йөкләү",
        "tooltip-t-specialpages": "Барлык махсус битләр исемлеге",
        "tooltip-t-print": "Бу битнең басма юрамасы",
        "common.css": "/*  Монда урнаштырылган CSS башкаларында да урнашачак */",
        "anonymous": "{{grammar:genitive|{{SITENAME}}}} {{PLURAL:$1|1=Аноним кулланучысы|Аноним кулланучылары}}",
        "siteuser": "{{SITENAME}} кулланучысы $1",
-       "othercontribs": "«$1» эшенә нигезләнә.",
-       "siteusers": "{{grammar:genitive|{{SITENAME}}}} {{PLURAL:$2|1=кулланучы|кулланучылары}} $1",
+       "othercontribs": "Төзүдә катнаштылар: $1.",
+       "siteusers": "{{{{SITENAME}}}} {{PLURAL:$2|1=кулланучы|кулланучылары}} $1",
        "creditspage": "Рәхмәтләр",
        "spamprotectiontitle": "Спам фильтры",
        "simpleantispam-label": "Анти-спам тикшерә.\nМоны <strong>ТУТЫРМАГЫЗ!</strong>",
        "duration-days": "$1 {{PLURAL:$1|көн}}",
        "expandtemplates": "Үрнәкләрне ачу",
        "expand_templates_ok": "OK",
+       "mediastatistics": "Медиа хисабы",
        "special-characters-group-latin": "Латин",
        "special-characters-group-latinextended": "Латин (киңәйтелгән)",
        "special-characters-group-ipa": "ХФӘ (IPA)",
index 57ac62a..7e2096a 100644 (file)
        "oct": "октябрь",
        "nov": "ноябрь",
        "dec": "декабрь",
-       "pagecategories": "{{PLURAL:$1|Ð\9aаÑ\82егоÑ\80иÑ\8f\9aаÑ\82егоÑ\80иÑ\8fлар}}",
-       "category_header": "«$1» ÐºÐ°Ñ\82егоÑ\80иÑ\8fның арыннары",
+       "pagecategories": "{{PLURAL:$1|Ð\90ңгÑ\8bлал|Ð\90ңгÑ\8bлалдар}}",
+       "category_header": "«$1» Ð°Ò£Ð³Ñ\8bлалдың арыннары",
        "subcategories": "Адаккы бөлүктер",
        "category-media-header": "«$1» деп бөлүкте файлдар",
        "category-empty": "''Амгы бо бөлүкте медиа база арыннар чок.''",
-       "hidden-categories": "{{PLURAL:$1|1=Ð\9aөзүлбеÑ\81 ÐºÐ°Ñ\82егоÑ\80иÑ\8f\9aөзүлбеÑ\81 ÐºÐ°Ñ\82егоÑ\80иÑ\8fлар}}",
+       "hidden-categories": "{{PLURAL:$1|1=Ð\9aөзүлбеÑ\81 Ð°Ò£Ð³Ñ\8bлал|Ð\9aөзүлбеÑ\81 Ð°Ò£Ð³Ñ\8bлалдар}}",
        "hidden-category-category": "Чажыт бөлүктер",
-       "category-subcat-count": "{{PLURAL:$2|1=Ð\91о ÐºÐ°Ñ\82егоÑ\80иÑ\8f Ñ\87үгле Ð´Ð°Ñ\80аазÑ\8bнда Ð¸Ñ\88Ñ\82ики ÐºÐ°Ñ\82егоÑ\80иÑ\8fлÑ\8bг.|Ð\91о ÐºÐ°Ñ\82егоÑ\80иÑ\8fда Ð±Ð°Ñ\80-ла $2 Ð¸Ñ\88Ñ\82ики ÐºÐ°Ñ\82егоÑ\80иÑ\8fлаÑ\80нÑ\8bÒ£ $1 Ð´ÐµÐ¿ Ð¸Ñ\88Ñ\82ики ÐºÐ°Ñ\82егоÑ\80иÑ\8fзы көстүп турар.}}",
-       "category-subcat-count-limited": "Ð\91о Ð°Ò£Ð³Ñ\8bлал {{PLURAL:$1|1=биÑ\80|$1}} Ð°Ò£Ð³Ñ\8bламнÑ\8bг.",
-       "category-article-count": "{{PLURAL:$2|1=Ð\91о ÐºÐ°Ñ\82егоÑ\80иÑ\8fда Ñ\87үгле Ñ\87аңгÑ\8bÑ\81 Ð°Ñ\80Ñ\8bн Ð±Ð°Ñ\80.|Ук ÐºÐ°Ñ\82егоÑ\80иÑ\8fда бар $2 арыннарының аразындан}} |{{PLURAL:$1 арынны көргүскен| $1 арыннарны көргүскен.}}",
-       "category-file-count": "{{PLURAL:$2|1=Ð\91о ÐºÐ°Ñ\82егоÑ\80иÑ\8f Ñ\87үгле Ñ\87аңгÑ\8bÑ\81 Ñ\84айлдÑ\8bг.|Ð\91о ÐºÐ°Ñ\82егоÑ\80иÑ\8fнÑ\8bÒ£ Ñ\88Ñ\83пÑ\82Ñ\83 $2 Ñ\84айлÑ\8bнÑ\8bÒ£ $1 файлын көргүскен.}}",
+       "category-subcat-count": "{{PLURAL:$2|1=Ук Ð°Ò£Ð³Ñ\8bлал Ñ\87үгле Ð´Ð°Ñ\80аазÑ\8bнда Ð¸Ñ\88Ñ\82ики Ð°Ò£Ð³Ñ\8bлалдÑ\8bг.|Ук Ð°Ò£Ð³Ñ\8bлалда Ð±Ð°Ñ\80-ла $2 Ð¸Ñ\88Ñ\82ики Ð°Ò£Ð³Ñ\8bлалдаÑ\80нÑ\8bÒ£ $1 Ð¸Ñ\88Ñ\82ики Ð°Ò£Ð³Ñ\8bлалы көстүп турар.}}",
+       "category-subcat-count-limited": "Ук Ð°Ò£Ð³Ñ\8bлалда {{PLURAL:$1|1=биÑ\80|$1}} Ð¸Ñ\88Ñ\82ики Ð°Ò£Ð³Ñ\8bлал Ð±Ð°Ñ\80.",
+       "category-article-count": "{{PLURAL:$2|1=Ук Ð°Ò£Ð³Ñ\8bлалда Ñ\87үгле Ñ\87аңгÑ\8bÑ\81 Ð°Ñ\80Ñ\8bн Ð±Ð°Ñ\80.|Ук Ð°Ò£Ð³Ñ\8bлалда бар $2 арыннарының аразындан}} |{{PLURAL:$1 арынны көргүскен| $1 арыннарны көргүскен.}}",
+       "category-file-count": "{{PLURAL:$2|1=Ук Ð°Ò£Ð³Ñ\8bлал Ñ\87үгле Ñ\87аңгÑ\8bÑ\81 Ñ\84айлдÑ\8bг.|Ук Ð°Ò£Ð³Ñ\8bлалдÑ\8bÒ£ Ñ\88Ñ\83пÑ\82Ñ\83 $2 Ñ\84айлдаÑ\80Ñ\8bнÑ\8bÒ£ Ð°Ñ\80азÑ\8bндан $1 файлын көргүскен.}}",
        "listingcontinuesabbrev": "(уланчы)",
        "noindex-category": "Индекстелбес арынар",
        "broken-file-category": "Ажылдавайн турар файл-шөлүлгелиг арыннар",
        "nstab-mediawiki": "Чагаа",
        "nstab-template": "Майык",
        "nstab-help": "Дуза",
-       "nstab-category": "Ð\9aаÑ\82егоÑ\80иÑ\8f",
+       "nstab-category": "Ð\90ңгÑ\8bлал",
        "mainpage-nstab": "Кол арын",
        "nosuchaction": "Ындыг кылыг чок",
        "nosuchspecialpage": "Ындыг тускай арын чок",
        "templatesused": "Бо арында ажыглап турар{{PLURAL:$1|1=майык|майыктар}}:",
        "template-protected": "(камгалаан)",
        "template-semiprotected": "(чартык-чамдыызы камгалалдыг)",
-       "hiddencategories": "Бо арын{{PLURAL:$1|$1 көзүлбес категорияга|$1 көзүлбес категорияларга|1=бир көзүлбес категорияга}} хамааржыр:",
+       "hiddencategories": "Бо арын {{PLURAL:$1|$1 көзүлбес аңгылалга|$1 көзүлбес аңгылалдарга|1=чаңгыс көзүлбес аңгылалга}} хамааржыр:",
        "permissionserrorstext-withaction": "{{PLURAL:$1|1=дараазында чылдагаан-биле|дараазында чылдагааннар-биле}} $2-ни ажыглаар эрге силерде чок:",
        "recreate-moveddeleted-warn": "'''Кичээңейлиг. Ооң мурнунда казыттынган арынны катап тургузар деп тур Силер.'''\n\nОл арынны катап тургузары шынап-ла чугула бе, боданыңар.\nБо адаанда ол арынның казыышкыннар болгаш өскээр адалгалар журналдарын көргүскен.",
-       "moveddeleted-notice": "Ð\91о Ð°Ñ\80Ñ\8bн Ð°Ð¿ ÐºÐ°Ð°Ð²Ñ\8bÑ\82кан.\nÐ\90даанда Ð°Ð¿ ÐºÐ°Ð°Ð²Ñ\8bÑ\82кан Ð±Ð¸Ð»Ðµ өскээр адаан бижиктер шынзылгазын көргүскен.",
+       "moveddeleted-notice": "Ук Ð°Ñ\80Ñ\8bн ÐºÐ°Ð·Ñ\8bÑ\82Ñ\8bнган.\nÐ\90даанда ÐºÐ°Ð·Ñ\8bлда Ð±Ð¾Ð»Ð³Ð°Ñ\88 өскээр адаан бижиктер шынзылгазын көргүскен.",
        "post-expand-template-inclusion-warning": "Сагындырыг: Кошкан майыктарның ниити хемчээли дендии улуг.\nЧамдык майыктар коштунмаан боор.",
        "post-expand-template-inclusion-category": "Кожар майыктарга чөшпээрээн хемчээлин ашкан арыннар",
        "post-expand-template-argument-warning": "'''Кичээнгейлиг:''' бо арында тоң дора дээрге (по крайней мере) чаңгыс майыктыг, а ооң аргументизи эмин эрттир улуг калбаяр хемчээлдиг.\nЫндыг чергелиг аргументилерни эрттирип каан.",
        "filehist-filesize": "Файл хемчээли",
        "filehist-comment": "Тайылбыр",
        "imagelinks": "Файлдың ажыглаашкыны",
-       "linkstoimage": "Дараазында {{PLURAL:$1|1=арын|$1 арыннарның шөлүлгези файл}}:",
+       "linkstoimage": "Дараазында {{PLURAL:$1|1=арын|$1 ажыг арын ук файлче айтып турар}}:",
        "nolinkstoimage": "Бердинген файлче шөлүп турар арыннар чок.",
        "sharedupload-desc-here": "Моон $1 алган файл өске төлевилелдерге база ажыглаттынып болур.\nОоң [$2 тайылбыр арнындан] медээни адаанда киирген.",
        "upload-disallowed-here": "Бо файлды эде бижидип шыдавас силер.",
        "movelogpage": "Шимчээринге журнал",
        "movereason": "Чылдагаан:",
        "revertmove": "эгидип тургузары",
-       "delete_and_move": "Ырадыры болгаш шимчээри",
        "export": "Арынар үндүр дамчыдары",
        "allmessages": "Системниң дыңнадыглары",
        "allmessagesname": "Ат",
        "tooltip-ca-nstab-image": "Файлдың арны",
        "tooltip-ca-nstab-template": "Майыкты көөрү",
        "tooltip-ca-nstab-help": "Дуза арынын көөрү",
-       "tooltip-ca-nstab-category": "Ð\9aаÑ\82егоÑ\80иÑ\8f арны",
+       "tooltip-ca-nstab-category": "Ð\90ңгÑ\8bлал арны",
        "tooltip-minoredit": "Бо өскертилгени \"биче\" деп демдеглээр",
        "tooltip-save": "Эдилгелериңерни шыгжап арттырар",
        "tooltip-preview": "Арынның чижек көрүлдези: шыгжаар бетинде ону ажыглаар силер!",
index 190845c..54dfe40 100644 (file)
        "october-date": "$1 жовтня",
        "november-date": "$1 листопада",
        "december-date": "$1 грудня",
+       "period-am": "AM",
+       "period-pm": "PM",
        "pagecategories": "{{PLURAL:$1|1=Категорія|Категорії}}",
        "category_header": "Сторінки в категорії «$1»",
        "subcategories": "Підкатегорії",
        "virus-scanfailed": "помилка сканування (код $1)",
        "virus-unknownscanner": "невідомий антивірус:",
        "logouttext": "'''Ви вийшли з системи.'''\n\nДеякі сторінки можуть відображатися, ніби ви ще в системі, аж поки ви не оновите кеш браузера.",
+       "cannotlogoutnow-title": "Неможливо вийти прямо зараз",
+       "cannotlogoutnow-text": "Неможливо вийти із системи під час використання $1.",
        "welcomeuser": "Вітаємо, $1!",
        "welcomecreation-msg": "Ваш обліковий запис створено.\nТепер маєте змогу за бажанням змінювати ваші [[Special:Preferences|налаштування у {{GRAMMAR:genitive|{{SITENAME}}}}]].",
        "yourname": "Ім'я користувача:",
        "remembermypassword": "Запам'ятати мій обліковий запис на цьому комп'ютері (на строк не більше $1 {{PLURAL:$1|1=дня|днів}})",
        "userlogin-remembermypassword": "Запам'ятати мене",
        "userlogin-signwithsecure": "Захищене з'єднання",
+       "cannotloginnow-title": "Неможливо увійти прямо зараз",
+       "cannotloginnow-text": "Неможливо увійти під-час використання $1.",
        "yourdomainname": "Ваш домен:",
        "password-change-forbidden": "Ви не можна змінити пароль на цій вікі.",
        "externaldberror": "Сталася помилка при автентифікації за допомогою зовнішньої бази даних, або у вас недостатньо прав для внесення змін до свого зовнішнього облікового запису.",
        "resetpass_submit": "Встановити пароль і ввійти",
        "changepassword-success": "Ваш пароль успішно змінено!",
        "changepassword-throttled": "Ви нещодавно зробили надто багато спроб ввійти до системи.\nБудь ласка, зачекайте $1 перед повторною спробою.",
+       "botpasswords": "Паролі ботів",
+       "botpasswords-summary": "<em>Паролі бота</em> дозволяють отримати доступ до облікового запису користувача через API без використання логіну і пароля головного облікового запису. Права користувача при вході з паролем бота можуть бути обмеженні.\n\nЯкщо ви не знаєте, навіщо воно вам, імовірно, краще цього не робіть. Ніхто ніколи не повинен просити вас, щоб ви створили чи повідомили цей пароль.",
+       "botpasswords-disabled": "Паролі бота відключені.",
+       "botpasswords-no-central-id": "Для використання паролів бота ви повинні увійти в централізований обліковий запис.",
+       "botpasswords-existing": "Існуючі паролі бота",
+       "botpasswords-createnew": "Створити новий пароль бота",
+       "botpasswords-editexisting": "Редагувати існуючий пароль бота",
+       "botpasswords-label-appid": "Назва бота:",
+       "botpasswords-label-create": "Створити",
+       "botpasswords-label-update": "Оновити",
+       "botpasswords-label-cancel": "Скасувати",
+       "botpasswords-label-delete": "Видалити",
+       "botpasswords-label-resetpassword": "Скинути пароль",
+       "botpasswords-label-grants": "Придатні дозволи:",
+       "botpasswords-help-grants": "Кожен дозвіл дає доступ до перелічених прав користувача, які вже є у облікового запису користувача. Див. [[Special:ListGrants|таблицю дозволів]] для отримання додаткової інформації.",
+       "botpasswords-label-restrictions": "Обмеження на використання:",
+       "botpasswords-label-grants-column": "Дозволено",
+       "botpasswords-bad-appid": "Ім'я бота «$1» є недопустимим.",
+       "botpasswords-insert-failed": "Не вдалось додати бота з іменем «$1». Можливо, він вже був доданий?",
+       "botpasswords-update-failed": "Не вдалось оновити бота з іменем «$1». Можливо, він був видалений?",
+       "botpasswords-created-title": "Пароль бота створено",
+       "botpasswords-created-body": "Пароль бота «$1» був успішно створений.",
+       "botpasswords-updated-title": "Пароль бота оновлено",
+       "botpasswords-updated-body": "Пароль бота «$1» був успішно оновлений.",
+       "botpasswords-deleted-title": "Пароль бота видалено",
+       "botpasswords-deleted-body": "Пароль бота «$1» було видалено",
+       "botpasswords-newpassword": "Новий пароль для входу під <strong>$1</strong> — <strong>$2</strong>. <em>Запишіть його для подальшого використання.</em>",
+       "botpasswords-no-provider": "BotPasswordsSessionProvider не доступний.",
        "resetpass_forbidden": "Пароль не можна змінити",
        "resetpass-no-info": "Щоб звертатися безпосередньо до цієї сторінки, вам слід увійти до системи.",
        "resetpass-submit-loggedin": "Змінити пароль",
        "uploaded-script-svg": " \t\t\nЗнайдений небезпечний елемент з підтримкою сценаріїв «$1» в завантаженому файлі SVG.",
        "uploaded-hostile-svg": " \t\nЗнайдений небезпечний CSS-код в елементі стилю завантаженого файлу SVG.",
        "uploaded-event-handler-on-svg": " \t\nУстановка атрибутів обробника подій <code>$1=\"$2\"</code> не дозволено для SVG-файлів.",
-       "uploaded-href-attribute-svg": "У SVG-файлів не допускаються href-атрибути <code>&lt;$1 $2=\"$3\"&gt;</code> з не локальною ціллю (напр. http://, javascript:, тощо).",
        "uploaded-href-unsafe-target-svg": "У завантаженому SVG-файлі знайдено href до цілі <code>&lt;$1 $2=\"$3\"&gt;</code>, що не є безпечною.",
        "uploaded-animate-svg": "У завантаженому SVG-файлі знайдено теґ «animate», який може змінювати href, використовуючи атрибут «from» <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploaded-setting-event-handler-svg": "Встановлення  атрибутів обробника подій заблоковане, у завантаженому файлі SVG знайдено <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "filename-thumb-name": "Це виглядає як назва ескізу. Будь ласка, не завантажуйте ескізи назад на ту саму вікі. В іншому випадку, будь ласка, виправте назву файла, щоб вона виглядало  більш значущою, й не мала префіксу слайда.",
        "filename-bad-prefix": "Назва завантажуваного файлу починається на '''«$1»''' і, можливо, є шаблонною назвою, яку цифрова фотокамера дає знімкам. Будь ласка, виберіть назву, яка краще описуватиме вміст файлу.",
        "filename-prefix-blacklist": " #<!-- не змінюйте цей рядок --> <pre>\n# Синтаксис такий:\n#   * Все, що починається з символу «#» вважається коментарем (до кінця рядка)\n#   * Кожен непорожній рядок — префікс стандартної назви файлу, яку зазвичай дає цифрова камера\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # деякі мобільні телефони\nIMG # загальне\nJD # Jenoptik\nMGP # Pentax\nPICT # різні\n #</pre> <!-- не змінюйте цей рядок -->",
-       "upload-success-subj": "Завантаження успішно завершено",
-       "upload-success-msg": "Ваше завантаження з [$2] було успішним. Воно доступне тут: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "Проблема із завантаженням",
-       "upload-failure-msg": "З вашим завантаженням від [$2] виникла проблема:\n\n$1",
-       "upload-warning-subj": "Попередження при завантаженні",
-       "upload-warning-msg": "Сталася помилка при пересиланні з [$2]. Ви можете повернутися до [[Special:Upload/stash/$1|формуляру пересилання]], щоб вирішити проблему.",
        "upload-proto-error": "Невірний протокол",
        "upload-proto-error-text": "Віддалене завантаження вимагає адресів, що починаються з <code>http://</code> або <code>ftp://</code>.",
        "upload-file-error": "Внутрішня помилка",
        "wlheader-showupdated": "Сторінки, що змінилися після вашого останнього їх відвідування, виділені '''жирним''' шрифтом.",
        "wlnote": "Нижче наведено {{PLURAL:$1|останнє $1 редагування|останні $1 редагування|останні $1 редагувань}} за {{PLURAL:$2|останню|останні|останні}} <strong>$2</strong> {{PLURAL:$2|годину|години|годин}}, на час $3 $4.",
        "wlshowlast": "Показати зміни за останні $1 годин $2 днів",
-       "watchlistall2": "всі",
        "watchlist-hide": "Приховати",
        "watchlist-submit": "Показати",
        "wlshowtime": "Період часу для відображення:",
        "version-hook-subscribedby": "Підписаний на",
        "version-version": "($1)",
        "version-no-ext-name": "[без назви]",
-       "version-svn-revision": "(r$2)",
        "version-license": "Ліцензія MediaWiki",
        "version-ext-license": "Ліцензія",
        "version-ext-colheader-name": "Розширення",
index 17cfff1..56a55de 100644 (file)
        "rcshowhidemine": "ذاتی ترامیم $1",
        "rcshowhidemine-show": "دکھاؤ",
        "rcshowhidemine-hide": "چھپائیں",
+       "rcshowhidecategorization": "صفحاتی زمرہ بندی $1",
        "rcshowhidecategorization-show": "دکھائیں",
        "rcshowhidecategorization-hide": "چھپائیں",
        "rclinks": "آخری $2 روز میں ہونے والی $1 تبدیلیوں کا مشاہدہ کریں<br />$3",
        "recentchangeslinked-title": "\"$1\" سے متعلقہ تبدیلیاں",
        "recentchangeslinked-summary": "یہ ان تبدیلیوں کی فہرست ہے جو حال ہی میں کسی مخصوص صفحہ سے مربوط صفحات (یا مخصوص زمرہ کے اراکین) میں کی گئی ہیں\n\n[[Special:Watchlist|آپ کی زیر نظر فہرست]] میں یہ صفحات متجل (bold) نظر آئیں گےـ",
        "recentchangeslinked-page": "صفحۂ منصوبہ دیکھئے",
+       "recentchanges-page-added-to-category": "[[:$1]] کو زمرہ میں شامل کیا گیا",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] اور {{PLURAL:$2|ایک صفحہ|$2 صفحات}} زمرہ میں شامل {{PLURAL:$2|کیا گیا|$2 کیے گئے}}",
+       "recentchanges-page-removed-from-category": "[[:$1]] کو زمرہ سے ہٹایا",
        "autochange-username": "میڈیاویکی خودکار تبدیلیاں",
        "upload": "فائل اثقال/اپلوڈ فائل",
        "uploadbtn": "زبراثقال ملف (اپ لوڈ فائل)",
        "watchlist-details": "آپ کی زیرِنظرفہرست پر {{PLURAL:$1|$1 صفحہ ہے|$1 صفحات ہیں}}، اِس میں تبادلۂ خیال صفحات کی تعداد شامل نہیں.",
        "wlnote": "نیچےآخری $1 تبدیلیاں ہیں جو کے پیچھلے <b>$2</b> گھنٹوں میں کی گئیں۔",
        "wlshowlast": "دکھائیں آخری $1 گھنٹے $2 دن",
-       "watchlistall2": "تمام",
        "watchlist-hide": "چھپائیں",
        "watchlist-submit": "دکھائیں",
        "wlshowhideminor": "معمولی ترامیم",
index a342432..fbcc83e 100644 (file)
        "uploaded-script-svg": "Tìm thấy phần tử “$1” có khả năng chạy kịch bản trong tập tin SVG được tải lên.",
        "uploaded-hostile-svg": "Tìm thấy CSS nguy hiểm trong phần tử style của tập tin SVG được tải lên.",
        "uploaded-event-handler-on-svg": "Không cho phép đặt thuộc tính xử lý sự kiện <code>$1=\"$2\"</code> trong tập tin SVG.",
-       "uploaded-href-attribute-svg": "Không cho phép thuộc tính href <code>&lt;$1 $2=\"$3\"&gt;</code> có đích ngoài máy (ví dụ http://, javascript:, v.v.) trong tập tin SVG.",
        "uploaded-href-unsafe-target-svg": "Tìm thấy href đến đích nguy hiểm <code>&lt;$1 $2=\"$3\"&gt;</code> trong tập tin SVG được tải lên.",
        "uploaded-animate-svg": "Tìm thấy thẻ “animate” có thể thay đổi href qua thuộc tính “from” <code>&lt;$1 $2=\"$3\"&gt;</code> trong tập tin SVG được tải lên.",
        "uploaded-setting-event-handler-svg": "Đã ngăn cản việc đặt thuộc tính xử lý sự kiện khi tìm thấy <code>&lt;$1 $2=\"$3\"&gt;</code> trong tập tin SVG được tải lên.",
        "filename-thumb-name": "Hình như đây là tên của một hình thu nhỏ được tự động tạo ra. Xin đừng tải lên những hình nhỏ lại vào wiki ban đầu. Nếu không phải, xin vui lòng sửa tên tập tin để rõ ràng hơn và dời tiền tố cỡ hình khỏi tên.",
        "filename-bad-prefix": "Tên cho tập tin mà bạn đang tải lên bắt đầu bằng '''“$1”''', đây không phải là dạng tên tiêu biểu có tính chất miêu tả do các máy chụp ảnh số tự động đặt. Xin hãy chọn một tên có tính chất miêu tả và gợi nhớ hơn cho tập tin của bạn.",
        "filename-prefix-blacklist": " #<!-- xin để nguyên hàng này --> <pre>\n# Cú pháp như sau:\n#   * Các ký tự từ dấu \"#\" trở đến cuối hàng là chú thích\n#   * Các dòng sau là các tiền tố do các máy ảnh số gán tự động cho tên tập tin\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # một số điện thoại di động\nIMG # tổng quát\nJD # Jenoptik\nMGP # Pentax\nPICT # khác\n #</pre> <!-- xin để nguyên hàng này -->",
-       "upload-success-subj": "Đã tải xong",
-       "upload-success-msg": "Bạn đã tải lên tập tin thành công từ [$2]. Nó có sẵn tại [[:{{ns:file}}:$1]].",
-       "upload-failure-subj": "Vấn đề tải lên",
-       "upload-failure-msg": "Tập tin bạn tải lên từ [$2] có một vấn đề:\n\n$1",
-       "upload-warning-subj": "Cảnh báo tải lên",
-       "upload-warning-msg": "Tập tin tải lên từ [$2] đã gặp vấn đề. Xin hãy trở về [[Special:Upload/stash/$1|biểu mẫu tải lên]] để giải quyết vấn đề 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ộ",
        "wlheader-showupdated": "Các trang đã thay đổi kể từ lần cuối bạn xem chúng được in '''đậm'''",
        "wlnote": "Dưới đây là {{PLURAL:$1|thay đổi duy nhất|<strong>$1</strong> thay đổi gần nhất}} trong {{PLURAL:$2|giờ|<strong>$2</strong> giờ}} qua, tính tới $3 lúc $4.",
        "wlshowlast": "Hiển thị $1 giờ $2 ngày gần đây",
-       "watchlistall2": "tất cả",
        "watchlist-hide": "Ẩn",
        "watchlist-submit": "Xem",
        "wlshowtime": "Thời gian để hiển thị:",
index 3999604..0bbeced 100644 (file)
@@ -10,7 +10,8 @@
                        "לערי ריינהארט",
                        "아라",
                        "Rachmat.Wahidi",
-                       "Macofe"
+                       "Macofe",
+                       "Robin van der Vliet"
                ]
        },
        "tog-underline": "Dislienükön yümis:",
        "nstab-template": "Samafomot",
        "nstab-help": "Yufapad",
        "nstab-category": "Klad",
+       "mainpage-nstab": "Cifapad",
        "nosuchaction": "Atos no mögon",
        "nosuchactiontext": "Dun peflagöl fa el URL no sevädon vüke.\nBa epenol eli URL neverätiko, u ba esukol yümi dobik.\nMögos i, das atos sinifon, das dabinon säkädil pö program fa {{SITENAME}} pageböl.",
        "nosuchspecialpage": "Pad patik at no dabinon",
        "createaccountmail": "me pot leäktronik",
        "createaccountreason": "Kod:",
        "createacct-reason": "Kod",
-       "createacct-imgcaptcha-ph": "Penolöd vödemi, keli logol löpo",
        "createacct-submit": "Jafön kali olik",
        "createacct-benefit-body1": "{{PLURAL:$1|redakam|redakams}}",
        "createacct-benefit-body2": "{{PLURAL:$1|pad|pads}}",
        "right-blockemail": "Blokön gitäti gebana ad sedön penedis leäktronik",
        "right-hideuser": "Blokön gebananemi, klänedölo oni de votikans",
        "right-ipblock-exempt": "Nedemön blokamis-IP, blokamis itjäfidik e grupiblokamis",
-       "right-proxyunbannable": "Nedemön blokamis itjäfidik pladulömas",
        "right-protect": "Votükön jelanivodis e redakön padis pejelöl",
        "right-editprotected": "Bevobön padis pejelöl äs \"{{int:protect-level-sysop}}\"",
        "right-editinterface": "Votükön gebanaloveikömi",
        "watchthisupload": "Galädolöd ragivi at",
        "filewasdeleted": "Ragiv labü nem at büo pelöpükon e poso pemoükon. Kontrololös eli $1 büä olöpükol oni dönu.",
        "filename-bad-prefix": "Nem ragiva fa ol palöpüköl primon me '''\"$1\"''': nem no bepenöl nomiko pagevöl itjäfidiko fa käms nulädik. Välolös, begö! nemi bepenöl pro ragiv olik.",
-       "upload-success-subj": "Löpükam eplöpon",
        "upload-proto-error": "Protok neverätik",
        "upload-proto-error-text": "Löpükam flagon elis URLs me <code>http://</code> u <code>ftp://</code> primölis.",
        "upload-file-error": "Pöl ninik",
        "contributions": "{{GENDER:$1|Gebanakeblünots}}",
        "contributions-title": "Gebanakeblünots pro $1",
        "mycontris": "Keblünots",
+       "anoncontribs": "Keblünots",
        "contribsub2": "{{GENDER:$3|Hiela|Jiela|Ela}} $1 ($2)",
        "nocontribs": "Votükams nonik petuvons me paramets at.",
        "uctop": "(anuik)",
        "movenosubpage": "Pad at no labon donapadis.",
        "movereason": "Kod:",
        "revertmove": "sädunön",
-       "delete_and_move": "Moükolöd e topätükolöd",
        "delete_and_move_text": "==Moükam peflagon==\n\nYeged nulik \"[[:$1]]\" ya dabinon. Vilol-li moükön oni ad jafön spadi pro topätükam?",
        "delete_and_move_confirm": "Si! moükolöd padi",
        "delete_and_move_reason": "Pemoükon ad jafön spadi pro topätükam se ''[[$1]]''",
index ec65b9a..39465f6 100644 (file)
        "nstab-image": "文件",
        "nstab-mediawiki": "信息",
        "nstab-template": "模板",
-       "nstab-help": "幫å¿\99é \81",
+       "nstab-help": "帮å¿\99页",
        "nstab-category": "分类",
        "mainpage-nstab": "封面",
        "nosuchaction": "嘸能操作",
        "changepassword-success": "密碼改好哉!\n能界登錄當中...",
        "changepassword-throttled": "侬试登录忒多次哉。等$1再试试看。",
        "resetpass_forbidden": "密码弗好更改",
-       "resetpass-no-info": "侬必须登录ä»\94å\86\8d好ç\9b´æ\8e¥è¿\9bå\85¥ç®\87å\8fªé¡µé\9d¢ã\80\82",
+       "resetpass-no-info": "侬必须登录è\91\97æ\89\8d好ç\9b´æ\8e¥è¿\9bå\85¥ç®\87å\8fªé¡µé\9d¢ã\80\82",
        "resetpass-submit-loggedin": "更改密码",
        "resetpass-submit-cancel": "取消",
        "resetpass-wrong-oldpass": "无效个临时或者现有密码。\n侬作兴已经成功拿密码改脱,或者已经请求一个新个临时密码。",
        "passwordreset-emailelement": "用户名:\n$1\n\n临时密码:\n$2",
        "changeemail": "更改或删脱电子邮箱地址",
        "changeemail-passwordrequired": "侬需要输入密码来确认本次更改。",
-       "changeemail-no-info": "侬必须登录著å\86\8d好ç\9b´æ\8e¥è¿\9bå\85¥ç®\87å\8fªé¡µé\9d¢ã\80\82",
+       "changeemail-no-info": "侬必须登录著æ\89\8d好ç\9b´æ\8e¥è¿\9bå\85¥ç®\87å\8fªé¡µé\9d¢ã\80\82",
        "changeemail-oldemail": "当前电子邮件地址:",
        "changeemail-newemail": "新个电子邮件地址:",
        "changeemail-password": "侬个{{SITENAME}}密码:",
        "nosuchsectiontext": "侬尝试编辑个章节弗存在。\n作兴是垃拉侬查看页面个辰光已经移动或者畀删除。",
        "loginreqtitle": "必须登录",
        "loginreqlink": "登录",
-       "loginreqpagetext": "侬必须$1再好查看其它页面。",
+       "loginreqpagetext": "请$1来望其他页面。",
        "accmailtitle": "密码已发送哉。",
        "accmailtext": "已经为[[User talk:$1|$1]]产生只随机密码,并且已经发送到$2。登录之后,侬可以垃拉<em>[[Special:ChangePassword|箇只页面]]</em>更改密码。",
        "newarticle": "(新)",
        "userpage-userdoesnotexist": "用户账户“<nowiki>$1</nowiki>”弗曾创建。请垃拉创建/编辑迭个页面前头先检查一记。",
        "userpage-userdoesnotexist-view": "用户账户“$1”弗曾创建。",
        "blocked-notice-logextract": "箇位用户箇歇畀封锁垃许。\n下头有最近个封锁纪录以供参考:",
-       "clearyourcache": "<strong>注意:</strong>垃拉保存之后,侬作兴要清除浏览器个缓存å\86\8d好ç\9c\8bè§\81æ\94¹å\8f\98ã\80\82\n* <strong>Firefoxæ\88\96Safariï¼\9a</strong>æ\8f¿ç\89¢â\80\9cShiftâ\80\9d个å\90\8cæ\97¶ç\82¹å\87»â\80\9cå\88·æ\96°â\80\9dï¼\8cæ\88\96æ\8f¿â\80\9cCtrl-F5â\80\9dæ\88\96â\80\9cCtrl-Râ\80\9dï¼\88Macä¸\8aæ\98¯â\80\9câ\8c\98-Râ\80\9dï¼\89\n* <strong>Google Chromeï¼\9a</strong>æ\8f¿â\80\9cCtrl-Shift-Râ\80\9dï¼\88Macä¸\8aæ\98¯â\80\9câ\8c\98-Shift-Râ\80\9dï¼\89\n* <strong>Internet Explorerï¼\9a</strong>æ\8f¿ç\89¢â\80\9cCtrlâ\80\9d个å\90\8cæ\97¶ç\82¹å\87»â\80\9cå\88·æ\96°â\80\9dï¼\8cæ\88\96æ\8f¿â\80\9cCtrl-F5â\80\9d\n* <strong>Operaï¼\9a</strong>å\9e\83æ\8b\89â\80\9cå·¥å\85·â\86\92é¦\96é\80\89项â\80\9dé\87\8cå\90\91æ¸\85é\99¤ç¼\93å­\98",
+       "clearyourcache": "<strong>注意:</strong>垃拉保存之后,侬作兴要清除浏览器个缓存æ\89\8d好ç\9c\8bè§\81æ\94¹å\8f\98ã\80\82\n* <strong>Firefoxæ\88\96Safariï¼\9a</strong>æ\8f¿ç\89¢â\80\9cShiftâ\80\9d个å\90\8cæ\97¶ç\82¹å\87»â\80\9cå\88·æ\96°â\80\9dï¼\8cæ\88\96æ\8f¿â\80\9cCtrl-F5â\80\9dæ\88\96â\80\9cCtrl-Râ\80\9dï¼\88Macä¸\8aæ\98¯â\80\9câ\8c\98-Râ\80\9dï¼\89\n* <strong>Google Chromeï¼\9a</strong>æ\8f¿â\80\9cCtrl-Shift-Râ\80\9dï¼\88Macä¸\8aæ\98¯â\80\9câ\8c\98-Shift-Râ\80\9dï¼\89\n* <strong>Internet Explorerï¼\9a</strong>æ\8f¿ç\89¢â\80\9cCtrlâ\80\9d个å\90\8cæ\97¶ç\82¹å\87»â\80\9cå\88·æ\96°â\80\9dï¼\8cæ\88\96æ\8f¿â\80\9cCtrl-F5â\80\9d\n* <strong>Operaï¼\9a</strong>å\9e\83æ\8b\89â\80\9cå·¥å\85·â\86\92é¦\96é\80\89项â\80\9dé\87\8cå\90\91æ¸\85é\99¤ç¼\93å­\98",
        "usercssyoucanpreview": "'''提示:''' 垃拉保存之前请用“{{int:showpreview}}”揿钮来测试新 CSS 。",
        "userjsyoucanpreview": "'''提示:''' 垃拉保存之前请用“{{int:showpreview}}”揿钮来测试新 JavaScript 。",
        "usercsspreview": "'''注意侬只是垃许预览侬个 CSS。'''\n'''还弗曾保存!'''",
        "copyrightwarning2": "请注意侬对{{SITENAME}}个所有贡献\n侪可能畀别个贡献者编辑,修改或删除。\n假使侬弗希望侬个文字畀任意修改搭仔再发布,请弗要提交。<br />\n侬同时也要向我伲保证侬提交个内容是侬自家所作,或得自一个弗受版权保护或相似自由个来源(参阅$1个细节)。\n''' 弗要垃拉弗曾获得授权个情况下头发表!'''",
        "longpageerror": "<strong>错误:侬提交个文本长度有$1KB,大于$2KB个顶大值。</strong>该文本弗能保存。",
        "readonlywarning": "<strong>警告:数据库锁定垃许维护,侬箇歇弗好保存侬个修改。</strong>侬作兴希望先拿侬个文字复制并保存到文本文件,等歇再修改。\n\n锁牢数据库个系统管理员有如下解释:$1",
-       "protectedpagewarning": "<strong>警告:此页已经畀保护,只有拥有管理员权限个用户å\86\8d好修æ\94¹ã\80\82</strong>æ\9c\80è¿\91个æ\97¥å¿\97å\9e\83æ\8b\89ä¸\8båº\95æ\8f\90ä¾\9b以便å\8f\82è\80\83ï¼\9a",
+       "protectedpagewarning": "<strong>警告:此页已经畀保护,只有拥有管理员权限个用户æ\89\8d好修æ\94¹ã\80\82</strong>æ\9c\80è¿\91个æ\97¥å¿\97å\9e\83æ\8b\89ä¸\8båº\95æ\8f\90ä¾\9b以便å\8f\82è\80\83ï¼\9a",
        "semiprotectedpagewarning": "'''注意:''' 本页面畀锁定,仅限注册用户编辑。\n最近个日志垃拉下底提供以便参考:",
-       "cascadeprotectedwarning": "<strong>警告:</strong>本页已经畀保护,只有拥有管理员权限个用户å\86\8d好修æ\94¹ï¼\8cå\9b ä¸ºæ\9c¬é¡µå·²ç\95\80ä¸\8båº\95ç\9c¼çº§è\81\94ä¿\9dæ\8a¤ä¸ª{{PLURAL:$1|ä¸\80å\8fª|å¤\9aå\8fª}}页é\9d¢æ\89\80åµ\8cå\85¥ï¼\9a",
+       "cascadeprotectedwarning": "<strong>警告:</strong>本页已经畀保护,只有拥有管理员权限个用户æ\89\8d好修æ\94¹ï¼\8cå\9b ä¸ºæ\9c¬é¡µå·²ç\95\80ä¸\8båº\95ç\9c¼çº§è\81\94ä¿\9dæ\8a¤ä¸ª{{PLURAL:$1|ä¸\80å\8fª|å¤\9aå\8fª}}页é\9d¢æ\89\80åµ\8cå\85¥ï¼\9a",
        "titleprotectedwarning": "'''警告:本页面已畀锁定,需要[[Special:ListGroupRights|指定权限]]方可创建。'''\n最近个日志垃拉下底提供以便参考:",
        "templatesused": "箇页有{{PLURAL:$1|个模板}}:",
        "templatesusedpreview": "{{PLURAL:$1|只模板}}垃拉箇趟预览里向拨使用:",
        "revdelete-selected-file": "已选择文件[[:$2]]个$1只版本:",
        "logdelete-selected": "选取$1个日志事件:",
        "revdelete-confirm": "假使侬想箇能介做个闲话,请确认侬已经清爽箇能介做个后果,外加箇个程序符合[[{{MediaWiki:Policy-url}}|政策]]。",
-       "revdelete-suppress-text": "<strong>只有</strong>出现下头眼情况å\86\8dåº\94é\98»æ­¢è®¿é\97®ï¼\9a\n* æ½\9cå\9c¨ä¸ªè¯½è°¤ä¿¡æ\81¯\n* å¼\97é\80\82å\90\88个个人信æ\81¯\n*: <em>家庭å\9c°å\9d\80ã\80\81ç\94µè¯\9då\8f·ç \81ã\80\81身份è¯\81å\8f·ç \81ç­\89ã\80\82</em>",
+       "revdelete-suppress-text": "<strong>只有</strong>出现下头眼情况æ\89\8dåº\94é\98»æ­¢è®¿é\97®ï¼\9a\n* æ½\9cå\9c¨ä¸ªè¯½è°¤ä¿¡æ\81¯\n* å¼\97é\80\82å\90\88个个人信æ\81¯\n*: <em>家庭å\9c°å\9d\80ã\80\81ç\94µè¯\9då\8f·ç \81ã\80\81身份è¯\81å\8f·ç \81ç­\89ã\80\82</em>",
        "revdelete-legend": "设置可见性之限制",
        "revdelete-hide-text": "修订文本",
        "revdelete-hide-image": "隐藏文件内容",
        "prefs-advancedwatchlist": "高级选项",
        "prefs-tabs-navigation-hint": "提示:侬可以用左、右箭头键来选项卡之间切换。",
        "userrights-user-editname": "输入用户名:",
-       "editusergroup": "编辑用户组",
+       "editusergroup": "编辑{{GENDER:$1|用户}}组",
+       "editinguser": "改动{{GENDER:$1|用户}}<strong>[[User:$1|$1]]</strong>个用户权限$2",
        "group-bot": "机器人",
        "group-sysop": "管理员",
        "group-bureaucrat": "行政员",
        "right-deleterevision": "删脱搭恢复页面个特定版本",
        "right-deletedhistory": "检视畀删脱个历史项目,弗包括相关文本",
        "right-browsearchive": "搜尋已刪頁",
+       "right-unblockself": "解封自家",
        "right-editusercss": "编辑其他用户个CSS文件",
        "right-edituserjs": "编辑其他用户个JavaScript文件",
        "right-editmyusercss": "编辑侬自家个用户CSS文件",
        "grant-group-page-interaction": "搭頁面互動",
        "grant-group-file-interaction": "搭媒體互動",
        "grant-group-watchlist-interaction": "搭侬个关注表互动",
-       "grant-group-email": "發電子信",
+       "grant-group-email": "发电子邮件",
+       "grant-createaccount": "建立账号",
+       "grant-createeditmovepage": "建立、编辑搭著捅荡页面",
        "grant-rollback": "畀修改擂轉到頁面",
        "grant-sendemail": "發電子信畀各許用戶",
        "newuserlogpage": "用户创建日志",
        "rcshowhideanons": "$1匿名用户",
        "rcshowhideanons-show": "显示",
        "rcshowhideanons-hide": "囥脱",
+       "rcshowhidepatr-hide": "囥脱",
        "rcshowhidemine": "$1我个编辑",
        "rcshowhidemine-show": "显示",
        "rcshowhidemine-hide": "囥脱",
        "uploadbtn": "上载文件",
        "reuploaddesc": "弗傳,轉到傳表單",
        "uploadnologin": "朆登录",
-       "uploadnologintext": "倷板定要$1再好上载文件。",
+       "uploadnologintext": "请$1来上载文件。",
        "uploaderror": "上载出错",
        "uploadtext": "拿下头只表格来上载文件。要查看或者搜寻之前上载个图片个说法,请到[[Special:FileList|已上载文件列表]],上载搭仔删脱也记录勒拉[[Special:Log/upload|上载日志]]里向。\n\n要勒拉页面里向摆进图片个说法,用下头该种形式个链接\n'''<nowiki>[[{{ns:file}}:文件.jpg]]</nowiki>''',\n'''<nowiki>[[{{ns:file}}:文件.png|替代文本]]</nowiki>''' 或者用\n'''<nowiki>[[{{ns:media}}:文件.ogg]]</nowiki>''' 直接链到文件。",
        "uploadlogpage": "文件上传日志",
        "sourcefilename": "源文件:",
        "destfilename": "目标文件名:",
        "watchthisupload": "關注箇文件",
-       "upload-success-subj": "上载成功哉",
-       "upload-failure-subj": "傳個問題",
-       "upload-warning-subj": "傳個警告",
        "upload-misc-error": "弗識個傳錯誤",
        "foreign-structured-upload-form-label-infoform-date": "日脚",
        "backend-fail-delete": "文件“$1”刪弗爻。",
        "categories": "页面分类",
        "categoriespagetext": "下底个{{PLURAL:$1|分类包括}}页面或者媒体文件。[[Special:UnusedCategories|未使用分类]]弗勒伊𡍲显示。另见[[Special:WantedCategories|需要个分类]]。",
        "deletedcontributions": "删脱个用户贡献",
+       "deletedcontributions-title": "删脱个用户贡献",
        "linksearch": "外部链接搜寻",
        "linksearch-ns": "名字空間:",
        "linksearch-ok": "搜尋",
        "wlheader-showupdated": "勒侬上趟查看之后畀修改个页面<strong>加粗</strong>显示。",
        "wlnote": "下底是{{PLURAL:$2|过去<strong>$2</strong>个钟头}}个{{PLURAL:$1|最后<strong>$1</strong>届更改}},截至$3 $4。",
        "wlshowlast": "显示上$1个钟头$2日天",
-       "watchlistall2": "全部",
+       "watchlist-hide": "囥脱",
+       "wlshowhidemine": "我个编辑",
        "watchlist-options": "监控列表选项",
        "watching": "监控……",
        "unwatching": "解除监控……",
        "undelete-search-submit": "搜尋",
        "namespace": "名字空间:",
        "invert": "反选择",
-       "tooltip-invert": "请选择该框来囥脱指定名字空间(搭有关名字空间,如果你选择)个页面更改",
+       "tooltip-invert": "打上扎钩头来囥脱选定名字空间个改动(如果勾选有关名字空间,箇么一道囥脱)",
        "namespace_association": "有关个名字空间",
-       "tooltip-namespace_association": "选中该复选框可包括搭选定名字空间有关个讨论页或子页面",
+       "tooltip-namespace_association": "打上扎钩头来加上搭选定名字空间搭界个讨论或主题名字空间",
        "blanknamespace": "(主)",
        "contributions": "{{GENDER:$1|用户}}贡献",
        "contributions-title": "$1个贡献",
        "year": "从箇年往前:",
        "sp-contributions-newbies": "只显示新用户个贡献",
        "sp-contributions-blocklog": "查封记录",
+       "sp-contributions-deleted": "删脱个用户贡献",
        "sp-contributions-talk": "讲张",
        "sp-contributions-search": "搜寻贡献记录",
        "sp-contributions-username": "IP地址要勿用户名:",
        "whatlinkshere-hidelinks": "$1链接",
        "whatlinkshere-filters": "过滤器",
        "blockip": "查封{{GENDER:$1|用户}}",
-       "blockiptext": "用下头个表单来禁止来自某一特定IP地址或用户名个修改权限。只有勒勒为仔防止破坏,及符合[[{{MediaWiki:Policy-url}}|政策]]个情况下底再好采取此行动。请勒勒下底输入一个具体个理由(譬如引述一只畀破坏个页面)。",
+       "blockiptext": "用下头个表单来禁止来自某一特定IP地址或用户名个修改权限。只有勒勒为仔防止破坏,及符合[[{{MediaWiki:Policy-url}}|政策]]个情况下底才好采取此行动。请勒勒下底输入一个具体个理由(譬如引述一只畀破坏个页面)。侬好用[https://zh.wikipedia.org/wiki/无类别域间路由 CIDR]语法查封IP地址段;允许个最大段是/$1(针对IPv4)搭/$2(针对IPv6)。",
        "ipaddressorusername": "IP地址或用户名:",
        "ipbreason": "理由:",
        "ipbsubmit": "封杀该个用户",
        "move-page-legend": "页面捅荡",
        "movepagetext": "用下底个表会重命名一只页面,全部历史侪移到新名字里。老个名字会变成戳到新名字个重定向页。注意检查[[Special:DoubleRedirects|双重重定向]]或者[[Special:BrokenRedirects|坏脱个重定向]]。倷有实概个责任,让链接仍旧链到俚笃应该链到个场化去。\n\n注意,如果新名字归面搭已经有页面个说话,老名字个页面'''弗'''会畀移动,除非归个是只空页面或者是只重定向并且呒不编辑历史。箇也就是讲,假使倷犯错误个说话,倷好拿一只重命名过个页面还原到原来个名字,但倷弗好覆盖一只已经来上个页面。\n\n<strong>警告!</strong>箇呒数会引起对一只热门页面剧烈个、想弗着个改变。来操作前头请倷确定倷已经充分了解行为个后果。",
        "movepagetalktext": "如果侬勾选此框,相关讨论页会自动移动到新标题,除非箇𡍲已经有著一只非空个讨论页。\n\n来箇种情况下底,如果有需要,侬必须手工移动或合并页面。",
-       "movenologintext": "倷板定要是å·²ç\99»è®°ç\94¨æ\88·ä¸\94å\8b\92æ\8b\89[[Special:UserLogin|ç\99»å½\95]]ç\8a¶æ\80\81ä¸\8b头å\86\8d好æ\8b¿é¡µé\9d¢æ\8d\85è\8d¡ã\80\82",
+       "movenologintext": "倷板定要是注å\86\8cç\94¨æ\88·å¹¶ä¸\94[[Special:UserLogin|ç\99»å½\95]]è\91\97æ\89\8d好æ\8b¿é¡µé\9d¢æ\8d\85è\8d¡ã\80\82",
        "newtitle": "新标题:",
        "move-watch": "监控来源以及目标页",
        "movepagebtn": "页面移动",
        "tooltip-feed-rss": "订阅本页",
        "tooltip-feed-atom": "此页个Atom 订阅",
        "tooltip-t-contributions": "{{GENDER:$1|箇位用户}}个贡献列表",
-       "tooltip-t-emailuser": "发电子信畀箇个用户",
+       "tooltip-t-emailuser": "发电子信畀{{GENDER:$1|箇位用户}}",
        "tooltip-t-upload": "上传文件",
        "tooltip-t-specialpages": "全部特殊页列表",
        "tooltip-t-print": "箇页个打印版",
        "tooltip-ca-nstab-main": "望内容页",
        "tooltip-ca-nstab-user": "查看用户页",
        "tooltip-ca-nstab-media": "查看媒体页",
-       "tooltip-ca-nstab-special": "箇是特æ®\8a页é\9d¢ï¼\8cå¼\97è\83½ç¼\96è¾\91",
+       "tooltip-ca-nstab-special": "箇是特å\88«é¡µé\9d¢ï¼\8cå¼\97好ç¼\96è¾\91",
        "tooltip-ca-nstab-project": "望项目页",
        "tooltip-ca-nstab-image": "望文件页",
        "tooltip-ca-nstab-mediawiki": "查看系统讯息",
        "confirmemail_body_changed": "用IP地址$1嗰人,(呒数是你侬)徕{{SITENAME}}里一个账号“$2”建起,用你侬个电子信箱地址。\n\n确认记箇账号是弗是你侬嘅,激活{{SITENAME}}里嗰电子信功能。用浏览器打开下向嗰链接:\n\n$3\n\n假使你侬*朆*注册过箇账号,揿下向嗰链接取消电子信确认:\n\n$5\n\n确认码会到$4过期。",
        "scarytranscludetoolong": "[URL忒长]",
        "deletedwhileediting": "<strong>警告:</strong>此页拉侬开始编辑之后已经畀删脱!",
-       "confirmrecreate": "用户[[User:$1|$1]] ([[User talk:$1|讲张]])勒拉倷开始编辑该页面之后拿俚删脱,理由是: : ''$2'' 请拿定章程,倷阿是真个要重建该页面。",
+       "confirmrecreate": "用户[[User:$1|$1]]([[User talk:$1|讲张]])勒拉倷开始编辑该页面之后拿俚{{GENDER:$1|删脱}},理由是:\n: <em>$2</em>\n请拿定章程,倷啊是真个要重建该页面。",
        "confirm_purge_button": "确定",
        "comma-separator": "、",
        "parentheses": "($1)",
        "revdelete-unrestricted": "已移除对管理员个限制",
        "logentry-block-block": "$1{{GENDER:$2|查封}}{{GENDER:$4|$3}},终止辰光为$5$6",
        "logentry-move-move": "$1{{GENDER:$2|捅荡}}页面$3到$4",
+       "logentry-move-move-noredirect": "$1{{GENDER:$2|捅荡}}页面$3到$4,弗留重定向",
        "logentry-newusers-create": "用户账号$1畀{{GENDER:$2|创建}}",
        "logentry-newusers-create2": "用户账号$3畀$1{{GENDER:$2|创建}}",
        "logentry-newusers-autocreate": "用户账号$1畀自动{{GENDER:$2|创建}}",
index 687b7d9..b9093de 100644 (file)
        "upload-options": "ატვირთვის პარამეტრები",
        "watchthisupload": "უთვალთვალე ამ ფაილს",
        "filewasdeleted": "ამ სახელწოდების ფაილი უკვე არსებობდა, მაგრამ წაშლილ იქნა. ხელმეორედ ჩატვირთვამდე იხილეთ $1.",
-       "upload-success-subj": "წარმატებული ატვირთვა",
-       "upload-success-msg": "თქვენი ატვირთვა [$2] შეგიძლიათ იხილოთ აქ: [[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "ატვირთვის პრობლემა",
-       "upload-failure-msg": "ატვირთვისას პრობლემა შეიქმნა [$2]:\n\n$1",
-       "upload-warning-subj": "ატვირთვისთვის გაფრთხილება",
-       "upload-warning-msg": "[$2]-ის ატვირთვისას დაფიქსირდა შეცდომა. შეცდომის გამოსასწორებლად დაბრუნდით [[Special:Upload/stash/$1|ატვირთვის ფორმა]]ზე.",
        "upload-proto-error": "არასწორი პროტოკოლი",
        "upload-proto-error-text": "ატვირთვის წასაშლელად საჭიროა მისამართი, რომელიც იწყება <code>http://</code> or <code>ftp://</code>-ით.",
        "upload-file-error": "შიდა შეცდომა",
        "log-title-wildcard": "სათაურების ძებნა, რომლებიც იწყება ამ ტექსტით",
        "showhideselectedlogentries": "არჩეული ჟურნალის ჩანაწერის ჩვენება/დამალვა",
        "log-edit-tags": "ტეგების რედაქტირება ამორჩეული ჟურნალის ჩანაწერებიდან",
+       "checkbox-all": "არძა",
+       "checkbox-none": "აკა ვარი",
+       "checkbox-invert": "ინოხუნაფა",
        "allpages": "არძა ხასილა",
        "nextpage": "უკულ ხასილა ($1)",
        "prevpage": "წოხლენ ხასილა ($1)",
        "unwatch": "კონტროლიშ გოუქვაფა",
        "watchlist-details": "{{PLURAL:$1|$1 ხასილა|$1 ხასილეფ}} რე თქვან კონტროლიშ ერკებულს, სხუნუაშ ხასილეფიშ მეუკოროცხუო.",
        "wlshowlast": "ეკონია $1 საათიშ $2 დღაშ  ძირაფა",
-       "watchlistall2": "არძა",
        "watchlist-options": "კონტროლიშ ერკებულიშ ოფციეფ",
        "watching": "კონტროლირებად...",
        "unwatching": "კონტროლ მონწყუმილ რე ...-შა",
index 6a99e29..8c38430 100644 (file)
@@ -87,7 +87,8 @@
                        "Cdz",
                        "凡人丶",
                        "Nbdd0121",
-                       "Apflu"
+                       "Apflu",
+                       "飞舞回堂前"
                ]
        },
        "tog-underline": "链接下划线:",
        "blockedtext": "<strong>你的用户名或IP地址已被封禁。</strong>\n\n执行封禁的管理员是$1。封禁原因是<em>$2</em>。\n\n* 开始时间:$8\n* 到期时间:$6\n* 目标用户:$7\n\n你可以联系$1或其他[[{{MediaWiki:Grouppage-sysop}}|管理员]]讨论该封禁。只有当你在[[Special:Preferences|系统设置]]确认了电子邮件地址且未被禁止使用“电邮联系”功能时,才可以使用它。你当前的IP地址是$3,该封禁ID是#$5。请在你的询问中包含上面的所有信息。",
        "autoblockedtext": "您的IP地址因曾被一位被$1封禁的用户使用而被自动封禁。封禁原因:\n\n:<em>$2</em>\n\n* 开始时间:$8\n* 到期时间:$6\n* 目标用户:$7\n\n您可以联系$1或其他[[{{MediaWiki:Grouppage-sysop}}|管理员]]申诉该封禁。\n\n请注意,只有当您已在[[Special:Preferences|系统设置]]确认了电子邮件地址且未被禁止使用“电邮联系”功能时,才能发送电子邮件联系管理员。\n\n您当前的IP地址为$3,该封禁ID为#$5。\n请您在申诉内容中说明以上所有信息。",
        "blockednoreason": "未给出原因",
-       "whitelistedittext": "您必须先$1才可编辑页面。",
+       "whitelistedittext": "请$1以编辑页面。",
        "confirmedittext": "你必须确认你的电子邮件地址才能编辑页面。请通过[[Special:Preferences|系统设置]]设置并确认你的电子邮件地址。",
        "nosuchsectiontitle": "没有这个段落",
        "nosuchsectiontext": "您尝试编辑的章节并不存在。\n可能是在您查看页面时已经移动或删除。",
        "loginreqtitle": "需要登录",
        "loginreqlink": "登录",
-       "loginreqpagetext": "您必须$1才能查看其它页面。",
+       "loginreqpagetext": "请$1以查看其它页面。",
        "accmailtitle": "密码已寄出",
        "accmailtext": "为[[User talk:$1|$1]]随机生成的密码已送至$2。登录后可以在<em>[[Special:ChangePassword|更改密码]]</em>页面中修改。",
        "newarticle": "(新页面)",
        "rev-suppressed-unhide-diff": "该页面的其中一次版本已经被<strong>监督隐藏</strong>。\n在[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 监督日志]中可以找到更多的资料。如果您想继续的话,您可以仍然[$1 去查看这版本]。",
        "rev-deleted-diff-view": "差异对比中的一次版本已被<strong>删除</strong>。您可以对比此差异。详细信息可在[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 删除日志]中找到。",
        "rev-suppressed-diff-view": "差异对比中的一个版本已被<strong>监督隐藏</strong>。您可以对比此差异。详细信息可在[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 监督日志]中找到。",
-       "rev-delundel": "æ\98¾ç¤º/é\9a\90è\97\8f",
+       "rev-delundel": "æ\9b´æ\94¹å\8f¯è§\81æ\80§",
        "rev-showdeleted": "显示",
        "revisiondelete": "删除/还原版本",
        "revdelete-nooldid-title": "无效目标版本",
        "reuploaddesc": "取消上传,返回上传表格",
        "upload-tryagain": "提交修改过的文件说明",
        "uploadnologin": "未登录",
-       "uploadnologintext": "您必须先$1才能上传文件。",
+       "uploadnologintext": "请$1以上传文件。",
        "upload_directory_missing": "上传目录($1)遗失,不能由网页服务器建立。",
        "upload_directory_read_only": "上传目录($1)不存在或无写权限。",
        "uploaderror": "上传出错",
        "uploaded-script-svg": "在上传的SVG文件中找到可编写脚本的元素“$1”。",
        "uploaded-hostile-svg": "在上传的SVG文件中的样式元素中找到不安全CSS。",
        "uploaded-event-handler-on-svg": "在SVG文件中不允许设置event-handler属性<code>$1=\"$2\"</code>。",
-       "uploaded-href-attribute-svg": "在SVG文件中不允许href属性<code>&lt;$1 $2=\"$3\"&gt;</code>带非本地目标(例如http://、javascript:等)。",
-       "uploaded-href-unsafe-target-svg": "在上传的SVG文件中找到href至不安全目标<code>&lt;$1 $2=\"$3\"&gt;</code>。",
+       "uploaded-href-attribute-svg": "SVG文件中的href属性只允许链接至http://或https://目标,已找到<code>&lt;$1 $2=\"$3\"&gt;</code>。",
+       "uploaded-href-unsafe-target-svg": "在上传的SVG文件中找到了至不安全数据的href:URI目标<code>&lt;$1 $2=\"$3\"&gt;</code>。",
        "uploaded-animate-svg": "在上传的SVG文件找到“animate”标签,它可能会更改href,使用“from”属性<code>&lt;$1 $2=\"$3\"&gt;</code>。",
        "uploaded-setting-event-handler-svg": "设置event-handler属性时受阻,在上传的SVG文件中找到<code>&lt;$1 $2=\"$3\"&gt;</code>。",
        "uploaded-setting-href-svg": "使用“set”标签加入“href”属性至父元素时受阻。",
        "filename-thumb-name": "这看起来像是缩略图标题。请不要将缩略图上传回同一wiki。否则,请修改文件名使其更有意义,并且没有缩略图前缀。",
        "filename-bad-prefix": "您上传的文件名称是以<strong>“$1”</strong>作为开头,通常这种没有含意的文件名称是由数码相机中自动编排。请在您的文件中重新选择一个更加有意义的文件名称。",
        "filename-prefix-blacklist": " #<!-- 请将本行保留为原样 --> <pre>\n# 语法如下:\n#  * 任何以“#”开头到结尾的行为注释\n#  * 任何非空行是根据相机自动分配特定文件名的前缀\nCIMG # 卡西欧\nDSC_ # 尼康\nDSCF # 富士\nDSCN # 尼康\nDUW # 部分手机\nIMG # 一般\nJD # 业纳\nMGP # 宾得\nPICT # 其他\n #</pre> <!-- 请将本行保留为原样 -->",
-       "upload-success-subj": "上传成功",
-       "upload-success-msg": "您在[$2]的上传已经成功,可以在这里找到:[[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "上传问题",
-       "upload-failure-msg": "您在[$2]的上传出现了问题:\n\n$1",
-       "upload-warning-subj": "上传警告",
-       "upload-warning-msg": "您自[$2]的上传出错。您可以返回[[Special:Upload/stash/$1|上传表单]]并更正问题。",
        "upload-proto-error": "协议错误",
        "upload-proto-error-text": "远程上传要求 URL 以 <code>http://</code> 或 <code>ftp://</code> 开头。",
        "upload-file-error": "内部错误",
        "upload-too-many-redirects": "在网址中有太多重新定向",
        "upload-http-error": "发生HTTP错误:$1",
        "upload-copy-upload-invalid-domain": "不能从该域名上载文件副本。",
+       "upload-foreign-cant-upload": "此wiki未配置为上传文件至请求的外部文件存储库。",
        "upload-dialog-title": "上传文件",
        "upload-dialog-button-cancel": "取消",
        "upload-dialog-button-done": "完成",
        "upload-dialog-button-save": "保存",
        "upload-dialog-button-upload": "上传",
        "upload-form-label-select-file": "选择文件",
-       "upload-form-label-infoform-title": "详细信息",
+       "upload-form-label-infoform-title": "详",
        "upload-form-label-infoform-name": "名称",
        "upload-form-label-infoform-name-tooltip": "用于文件的唯一描述性标题,它将用作文件名。您可以使用带空格的普通语言。不要包含文件扩展名。",
        "upload-form-label-infoform-description": "说明",
        "wlheader-showupdated": "您上次访问后发生更改的页面<strong>加粗</strong>显示。",
        "wlnote": "下面是{{PLURAL:$2|过去<strong>$2</strong>小时}}的{{PLURAL:$1|最后<strong>$1</strong>个更改}},截至$3 $4。",
        "wlshowlast": "显示过去$1小时$2天",
-       "watchlistall2": "所有",
        "watchlist-hide": "隐藏",
        "watchlist-submit": "显示",
        "wlshowtime": "显示时段:",
        "tooltip-invert": "请选择该框以隐藏指定名字空间(及相关名字空间,若被选择)的页面更改",
        "tooltip-whatlinkshere-invert": "勾选此框以隐藏来自选定名字空间内页面的链接。",
        "namespace_association": "关联的名字空间",
-       "tooltip-namespace_association": "选中此复选框可包括与选定名字空间相关的讨论页或子页面",
+       "tooltip-namespace_association": "选中此复选框可包括与选定名字空间相关的讨论或主题名字空间",
        "blanknamespace": "(主)",
        "contributions": "{{GENDER:$1|用户}}贡献",
        "contributions-title": "$1的用户贡献",
        "lockedbyandtime": "(由 {{GENDER:$1|$1}} 于$2 $3执行)",
        "move-page": "移动$1",
        "move-page-legend": "移动页面",
-       "movepagetext": "您可以使用下面的表单来重命名一个页面,同时将其版本历史移动到新页面。同时老的条目将会被重定向到新条目。您可以自动地将重定向更新到原条目。如果您不选择这样做的话,请检查[[Special:DoubleRedirects|双重]]或[[Special:BrokenRedirects|损坏重定向]]链接。您有责任确保链接会被正确指向他们应该被指向的地方。\n\n注意:即使新条目已经有对应页面,此页面也<strong>不会</strong>被移动,除非新页面无任何编辑历史或是重定向页。这意味着您可在误操作后将页面移回原处,同时,您也无法覆盖现有页面。\n\n<strong>警告!</strong>对这样一个经常被访问的页面而言这可能是一个重大且唐突的更改;请在行动前先了解您的修改可能带来的一切后果。",
-       "movepagetext-noredirectfixer": "用下面的表单来重命名一个页面,并将其版本历史同时移动到新页面。\n老的页面将成为新页面的重定向页。\n请检查[[Special:DoubleRedirects|双重重定向]]或[[Special:BrokenRedirects|损坏重定向]]链接。\n您应当负责确定所有链接依然会链到指定的页面。\n\n注意如果新页面已经有内容的话,页面将'''不会'''被移动,\n除非新页面无内容或是重定向页,而且没有版本历史。\n这意味着您再必要时可以在移动到新页面后再移回老的页面,\n同时您也无法覆盖现有页面。\n\n'''警告!'''\n对一个经常被访问的页面而言这可能是一个重大与唐突的更改;\n请在行动前先确定您了解其所可能带来的后果。",
+       "movepagetext": "您可以使用下面的表单来重命名一个页面,同时将其版本历史移动到新页面。同时老的条目将会被重定向到新条目。您可以自动地将重定向更新到原条目。如果您不选择这样做的话,请检查[[Special:DoubleRedirects|双重]]或[[Special:BrokenRedirects|损坏重定向]]链接。您有责任确保链接会被正确指向他们应该被指向的地方。\n\n注意:即使新条目已经有对应页面,此页面也<strong>不会</strong>被移动,除非新页面无任何编辑历史或是重定向页。这意味着您可在误操作后将页面移回原处,同时,您也无法覆盖现有页面。\n\n<strong>注意:</strong>\n对这样一个经常被访问的页面而言这可能是一个重大且唐突的更改;请在行动前先了解您的修改可能带来的一切后果。",
+       "movepagetext-noredirectfixer": "用下面的表单来重命名一个页面,并将其版本历史同时移动到新页面。\n老的页面将成为新页面的重定向页。\n请检查[[Special:DoubleRedirects|双重重定向]]或[[Special:BrokenRedirects|损坏重定向]]链接。\n您应当负责确定所有链接依然会链到指定的页面。\n\n注意如果新页面已经有内容的话,页面将<strong>不会</strong>被移动,\n除非新页面无内容或是重定向页,而且没有版本历史。\n这意味着您再必要时可以在移动到新页面后再移回老的页面,\n同时您也无法覆盖现有页面。\n\n<strong>注意:</strong>\n对一个经常被访问的页面而言这可能是一个重大与唐突的更改;\n请在行动前先确定您了解其所可能带来的后果。",
        "movepagetalktext": "如果您勾选此框,相关联的讨论页将被自动移动到新的标题,除非这里已经有了一个非空讨论页。\n\n在这种情况下,如有需要,您将不得不手动移动或合并页面。",
        "moveuserpage-warning": "'''警告:'''你将移动一个用户页面。请注意,只有该页面会被移动,该用户''不''会被更名。",
        "movecategorypage-warning": "<strong>警告:</strong>您将移动分类页面。请注意只有此页面将会移动,旧有分类的任何页面将<em>不会</em>同步移动。",
        "movenosubpage": "这个页面没有子页面。",
        "movereason": "原因:",
        "revertmove": "恢复",
-       "delete_and_move_text": "== 需要删除 ==\n\n目标页面“[[:$1]]”已存在。是否确认删除该页面以便进行移动?",
+       "delete_and_move_text": "目标页面“[[:$1]]”已存在。您是否希望删除它以便移动?",
        "delete_and_move_confirm": "是,删除该页面",
        "delete_and_move_reason": "删除以便移动[[$1]]",
        "selfmove": "原始标题和目标标题相同,无法对页面进行自我移动。",
        "move-leave-redirect": "保留重定向",
        "protectedpagemovewarning": "'''警告:'''本页面已被保护,只有拥有管理员权限的用户可以移动。下面提供最后的日志条目以供参考:",
        "semiprotectedpagemovewarning": "'''注意:'''本页面已被保护,只有注册用户可以移动。下面提供最后的日志条目以供参考:",
-       "move-over-sharedrepo": "== 文件已存在 ==\n[[:$1]]已于共享资源存在,将文件移动到此标题会覆盖共享资源中的文件。",
+       "move-over-sharedrepo": "[[:$1]]已在一个共享的存储库存在。将文件移动到此标题将覆盖共享的文件。",
        "file-exists-sharedrepo": "同名文件已于共享资源存在。\n请选择另一个文件名。",
        "export": "导出页面",
        "exporttext": "您可以将特定页面或一组页面的文本以及编辑历史以 XML 格式导出;这样可以将有关页面通过“[[Special:Import|导入页面]]”导入到另一个运行 MediaWiki 的网站。\n\n要导出页面,请在下面的文本框中输入页面标题,每行一个标题,并选择您是否需要导出带有页面历史的以前的版本,或是只选择导出带有最后一次编辑信息的当前版本。\n\n此外您还可以利用链接导出文件,例如您可以使用[[{{#Special:Export}}/{{MediaWiki:Mainpage}}]]导出“[[{{MediaWiki:Mainpage}}]]”页面。",
        "lastmodifiedatby": "本页面被$3最后修改于$1 $2。",
        "othercontribs": "基于$1的工作。",
        "others": "其他",
-       "siteusers": "{{SITENAME}}{{PLURAL:$2|用户}}$1",
+       "siteusers": "{{SITENAME}}{{PLURAL:$2|{{GENDER:$1|用户}}}}$1",
        "anonusers": "{{SITENAME}}匿名{{PLURAL:$2|用户}}$1",
        "creditspage": "页面编辑名单",
        "nocredits": "本页面没有编辑名单信息。",
        "pageinfo-robot-index": "允许",
        "pageinfo-robot-noindex": "不允许",
        "pageinfo-watchers": "页面监视者数",
-       "pageinfo-visiting-watchers": "访问最近编辑的页面浏览者数量",
+       "pageinfo-visiting-watchers": "已访问最近编辑的页面监视者数",
        "pageinfo-few-watchers": "少于$1个监视者",
        "pageinfo-few-visiting-watchers": "这里可能有或可能没有观察用户正在访问最近编辑",
        "pageinfo-redirects-name": "至该页面的重定向数",
        "version-libraries-license": "许可协议",
        "version-libraries-description": "描述",
        "version-libraries-authors": "作者",
-       "redirect": "重定向(按文件、用户、页面、修订版本ID或日志ID)",
+       "redirect": "重定向(按文件、用户、页面、修订版本或日志ID)",
        "redirect-legend": "重定向至文件或页面",
        "redirect-summary": "本特殊页面可以跳转至一个文件(提供文件名)、页面(提供修订版本ID或页面ID)、用户页(提供数字用户ID)或日志记录(提供日志ID)。用法:[[{{#Special:Redirect}}/file/Example.jpg]]、[[{{#Special:Redirect}}/page/64308]]、[[{{#Special:Redirect}}/revision/328429]]、[[{{#Special:Redirect}}/user/101]]或[[{{#Special:Redirect}}/logid/186]]。",
        "redirect-submit": "提交",
        "logentry-newusers-byemail": "$1创建用户$3,并且密码已通过电子邮件发送",
        "logentry-newusers-autocreate": "用户账户$1被自动{{GENDER:$2|创建}}",
        "logentry-protect-move_prot": "$1将保护设置从$4{{GENDER:$2|移动}}到了$3",
-       "logentry-protect-unprotect": "$1{{GENDER:$2|移除了}}来自$3的保护",
+       "logentry-protect-unprotect": "$1{{GENDER:$2|移除了}}$3的保护",
        "logentry-protect-protect": "$1{{GENDER:$2|保护了}}$3 $4",
        "logentry-protect-protect-cascade": "$1{{GENDER:$2|保护了}}$3 $4[级联]",
        "logentry-protect-modify": "$1{{GENDER:$2|更改了}}$3的保护等级$4",
        "expand_templates_preview_fail_html": "<em>因为{{SITENAME}}启用了Raw HTML并且丢失了会话数据,预览被隐藏以防止JavaScript攻击。</em>\n\n<strong>如果这是合法的预览尝试,请再次重试。</strong>\n如果仍然不能工作,尝试[[Special:UserLogout|退出]]并重新登录。",
        "expand_templates_preview_fail_html_anon": "<em>因为{{SITENAME}}启用了Raw HTML并且丢失了会话数据,预览被隐藏以防止JavaScript攻击。</em>\n\n<strong>如果这是合法的预览尝试,请尝试[[Special:UserLogin|登录]]并重试。</strong>",
        "expand_templates_input_missing": "您需要提供至少一些输入文本。",
-       "pagelanguage": "页面语言选择器",
+       "pagelanguage": "更改页面语言",
        "pagelang-name": "页面",
        "pagelang-language": "语言",
        "pagelang-use-default": "使用默认语言",
        "pagelang-submit": "提交",
        "right-pagelang": "更改页面语言",
        "action-pagelang": "更改页面语言",
-       "log-name-pagelang": "更改语言日志",
+       "log-name-pagelang": "语言更改日志",
        "log-description-pagelang": "这是页面语言更改的日志。",
-       "logentry-pagelang-pagelang": "$1{{GENDER:$2|更改}}$3的页面语言:从$4改为$5。",
+       "logentry-pagelang-pagelang": "$1已将$3的语言从$4{{GENDER:$2|更改}}至$5",
        "default-skin-not-found": "天哪!您在<code dir=\"ltr\">$wgDefaultSkin</code>定义的wiki默认皮肤<code>$1</code>不可用。\n\n您的安装版本看起来需要包含以下{{PLURAL:$4|皮肤}}。参见MediaWiki官网手册[https://www.mediawiki.org/wiki/Manual:Skin_configuration “皮肤配置”]获取如何启用{{PLURAL:$4|它|它们并设置为默认}}。\n\n$2\n\n; 如果您刚刚安装完了MediaWiki的话:\n: 您可能是从git库安装的,或者使用其他方法直接从源代码安装的。这是正常现象。请尝试通过以下方法从[https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org的皮肤存储库]安装一些皮肤:\n:* 下载[https://www.mediawiki.org/wiki/Download/zh-hans 打包安装器],它已有一些皮肤和扩展。您可从那里复制粘贴<code>skins/</code>目录。\n:* 从[https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org]单独下载皮肤安装包。\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins 使用Git下载皮肤]。\n: 做这些事应该不会打扰您的git存储库如果你是MediaWiki开发人员的话。\n\n; 如果您升级了您的MediaWiki的话:\n: MediaWiki 1.24版本起不再自动启用已安装皮肤(参见[https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery 此手册])。您可复制粘贴以下{{PLURAL:$5|几行}}文本至您wiki的<code>LocalSettings.php</code>以启用{{PLURAL:$5||所有}}安装的{{PLURAL:$5|皮肤}}:\n\n<pre dir=\"ltr\">$3</pre>\n\n; 如果您已经修改了<code>LocalSettings.php</code>:\n: 请再次检查皮肤名以确保不存在错误拼写。",
        "default-skin-not-found-no-skins": "天哪!您在<code>$wgDefaultSkin</code>定义的wiki默认皮肤<code>$1</code>不可用。而且您没有安装任何皮肤。\n\n; 如果您刚刚安装完了MediaWiki的话:\n: 您可能是从git库安装的,或者使用其他方法直接从源代码安装的,这是预期的。这是因为MediaWiki 1.24版本起主代码库不再包含任何皮肤。尝试通过以下方法从[https://www.mediawiki.org/wiki/Special:MyLanguage/Category:All_skins mediawiki.org的皮肤存储库]安装一些皮肤:\n:* 下载[https://www.mediawiki.org/wiki/Download/zh-hans 打包安装器],它已有一些皮肤和扩展。您可从那里复制粘贴<code>skins/</code>目录。\n:* 从[https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org]单独下载皮肤安装包。\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins 使用Git下载皮肤]。\n: 做这些事应该不会打扰您的git存储库如果你是MediaWiki开发人员的话。参见MediaWiki官网手册[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Skin_configuration “皮肤配置”]获取如何启用他们并设置为默认。",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2(已启用)",
index aeb483c..6d680e7 100644 (file)
        "missingarticle-rev": "(修訂#:$1)",
        "missingarticle-diff": "(差異:$1, $2)",
        "readonly_lag": "資料庫已自動鎖定,正在等候次要資料庫同步資料到主要資料庫",
+       "nonwrite-api-promise-error": "非寫入 API 動作 'Promise-Non-Write-API-Action' HTTP 標頭已送出但請求被送至 API 寫入模組。",
        "internalerror": "內部錯誤",
        "internalerror_info": "內部錯誤:$1",
        "internalerror-fatal-exception": "嚴重例外類型 \"$1\"",
        "createaccount": "建立帳號",
        "gotaccount": "您已經擁有帳號了嗎? $1。",
        "gotaccountlink": "登入",
-       "userlogin-resetlink": "您忘記了登入的詳細資?",
+       "userlogin-resetlink": "您忘記了登入的詳細資?",
        "userlogin-resetpassword-link": "忘記密碼?",
        "userlogin-helplink2": "登入協助",
        "userlogin-loggedin": "您目前已登入 {{GENDER:$1|$1}} 使用者,\n請使用下列表單改登入另一位使用者。",
        "botpasswords-label-delete": "刪除",
        "botpasswords-label-resetpassword": "重設密碼",
        "botpasswords-label-grants": "適用的權限:",
+       "botpasswords-help-grants": "每個授權會給予擁有該授權的使用者帳號列於該授權清單的使用者權限。 請參考 [[Special:ListGrants|授權表]] 取得更多資訊。",
        "botpasswords-label-restrictions": "使用限制:",
        "botpasswords-label-grants-column": "已授權",
        "botpasswords-bad-appid": "機器人名稱 \"$1\" 無效。",
        "botpasswords-updated-body": "機器人密碼 \"$1\" 已修改成功。",
        "botpasswords-deleted-title": "已刪除機器人密碼",
        "botpasswords-deleted-body": "機器人密碼 \"$1\" 已刪除。",
+       "botpasswords-newpassword": "用來登入 <strong>$1</strong> 的新密碼為 <strong>$2</strong>。 <em>請記錄此密碼以供未來參考使用。</em>",
        "botpasswords-no-provider": "BotPasswordsSessionProvider 無法使用。",
        "botpasswords-restriction-failed": "機器人密碼限制已拒絕此次登入。",
        "botpasswords-invalid-name": "指定的使用者名稱未包含機器人密碼分隔字元 (\"$1\")。",
        "passwordreset-capture": "檢視電子郵件內容?",
        "passwordreset-capture-help": "若您勾選此核選方塊,電子郵件 (包含臨時密碼) 將直接顯示,並寄給使用者。",
        "passwordreset-email": "電子郵件地址:",
-       "passwordreset-emailtitle": "於 {{SITENAME}} 的帳號詳細資訊",
+       "passwordreset-emailtitle": "{{SITENAME}} 的帳號詳細資料",
        "passwordreset-emailtext-ip": "不明人士 (可能是您自己,來自 IP 位址 $1) 要求重設在 {{SITENAME}} ($4) 的密碼,下列是與此電子郵件地址有關的使用者{{PLURAL:$3|帳號}}:\n\n$2\n\n{{PLURAL:$3|這個臨時密碼|這些臨時密碼}}將會在{{PLURAL:$5|一天|$5 天}}內到期,\n您應立即登入並更改新的密碼。如果不是您要求重設密碼,或您已想起密碼,並不準備修改,\n您可以忽略本訊息並且繼續使用您原本的密碼。",
        "passwordreset-emailtext-user": "使用者 $1 要求重設在 {{SITENAME}} ($4) 的密碼,下列是與此電子郵件位址有關的使用者{{PLURAL:$3|帳號}}:\n\n$2\n\n{{PLURAL:$3|這個臨時密碼|這些臨時密碼}}將會在{{PLURAL:$5|一天|$5 天}}內到期,\n您應立即登入並更改新的密碼。如果不是您要求重設密碼,或您已想起密碼,並不準備修改,\n您可以忽略此訊息並且繼續使用您原本的密碼。",
        "passwordreset-emailelement": "使用者名稱:\n$1\n\n臨時密碼:\n$2",
        "nosuchsectiontext": "您嘗試編輯的章節並不存在。\n可能在您檢視頁面時已經移動或刪除。",
        "loginreqtitle": "需要登入",
        "loginreqlink": "登入",
-       "loginreqpagetext": "æ\82¨å¿\85é \88 $1 æ\89\8dè\83½檢視其他頁面。",
+       "loginreqpagetext": "æ\82¨å¿\85é \88 $1 æ\96¹å\8f¯檢視其他頁面。",
        "accmailtitle": "密碼已寄出",
        "accmailtext": "[[User talk:$1|$1]] 的隨機密碼已經寄送至 $2,可登入後至 <em>[[Special:ChangePassword|變更密碼]] 頁面更改</em>。",
        "newarticle": "(新)",
        "undo-summary": "取消由 [[Special:Contributions/$2|$2]] ([[User talk:$2|對話]]) 所作出的修訂 $1",
        "undo-summary-username-hidden": "還原隱藏使用者的修訂 $1",
        "cantcreateaccounttitle": "無法建立帳號",
-       "cantcreateaccount-text": "自這個 IP 位址(<strong>$1</strong>)建立帳號已經被 [[User:$3|$3]] 封鎖。\n\n$3 封鎖的原因是 <em>$2</em>",
+       "cantcreateaccount-text": "自這個 IP 位址 (<strong>$1</strong>) 建立帳號已經被 [[User:$3|$3]] 封鎖。\n\n$3 封鎖的原因是 <em>$2</em>",
        "cantcreateaccount-range-text": "來自 IP 位址範圍 '''$1''',包含您的 IP 位址 ('''$4''') 所建立的帳號已經被 [[User:$3|$3]] 封鎖。\n\n$3 封鎖的原因是 ''$2''",
        "viewpagelogs": "檢視此頁面的日誌",
        "nohistory": "此頁沒有任何的修訂記錄。",
        "preferences": "偏好設定",
        "mypreferences": "偏好設定",
        "prefs-edits": "編輯次數:",
-       "prefsnologintext2": "請登入以更改您的偏好設定。",
+       "prefsnologintext2": "請登入以變更您的偏好設定。",
        "prefs-skin": "外觀",
        "skin-preview": "預覽",
        "datedefault": "預設值",
        "userrights": "使用者權限管理",
        "userrights-lookup-user": "管理使用者群組",
        "userrights-user-editname": "請輸入使用者名稱:",
-       "editusergroup": "編輯使用者群組",
+       "editusergroup": "編輯{{GENDER:$1|使用者}}群組",
        "editinguser": "變更{{GENDER:$1|使用者}} <strong>[[User:$1|$1]]</strong> 的使用者權限 $2",
        "userrights-editusergroup": "編輯使用者群組",
-       "saveusergroups": "儲存使用者群組",
+       "saveusergroups": "儲存{{GENDER:$1|使用者}}群組",
        "userrights-groupsmember": "所屬群組:",
        "userrights-groupsmember-auto": "所屬隱含群組:",
        "userrights-groups-help": "您可以更改此使用者所屬的群組:\n* 已勾選的核選方塊代表該使用者屬於該群組。\n* 未勾選的核選方塊代表該使用者不屬於該群組。\n* 有 * 號標示代表一旦加入該群組後便不能移除,反之亦然。",
        "newuserlogpage": "建立使用者日誌",
        "newuserlogpagetext": "此為建立使用者的日誌。",
        "rightslog": "使用者權限日誌",
-       "rightslogtext": "此為更改使用者權限的日誌。",
+       "rightslogtext": "此為變更使用者權限的日誌。",
        "action-read": "閱讀此頁面",
        "action-edit": "編輯此頁面",
        "action-createpage": "建立頁面",
        "rc_categories_any": "任何選擇的",
        "rc-change-size-new": "變更後為 $1 位元組",
        "newsectionsummary": "/* $1 */ 新章節",
-       "rc-enhanced-expand": "顯示詳細資",
-       "rc-enhanced-hide": "隱藏詳細資",
+       "rc-enhanced-expand": "顯示詳細資",
+       "rc-enhanced-hide": "隱藏詳細資",
        "rc-old-title": "最初建立的名稱為 \"$1\"",
        "recentchangeslinked": "相關變更",
        "recentchangeslinked-feed": "相關變更",
        "uploaded-script-svg": "於已上傳的 SVG 檔案中找到可程式的腳本標籤 \"$1\"。",
        "uploaded-hostile-svg": "於已上傳的 SVG 檔案的樣式標籤中找到不安全的 CSS。",
        "uploaded-event-handler-on-svg": "不允許在 SVG 檔案設定 event-handler 屬性 <code>$1=\"$2\"</code>。",
-       "uploaded-href-attribute-svg": "不允許在 SVG 檔案中的 href 屬性 <code>&lt;$1 $2=\"$3\"&gt;</code> 使用非本地的目標  (例如 http://, javascript:, 等)。",
-       "uploaded-href-unsafe-target-svg": "於已上傳的 SVG 檔案中找到 href 連結至不安全的目標 <code>&lt;$1 $2=\"$3\"&gt;</code>。",
+       "uploaded-href-attribute-svg": "發現 SVG 檔案中的 href 屬性為 <code>&lt;$1 $2=\"$3\"&gt;</code>,僅允許連結至 http:// 或 https:// 的目標。",
+       "uploaded-href-unsafe-target-svg": "於已上傳的 SVG 檔案中找到 href 連結至不安全的資料:URI 目標為 <code>&lt;$1 $2=\"$3\"&gt;</code>。",
        "uploaded-animate-svg": "於已上傳的 SVG 檔案中找到 \"animate\" 標籤可能會使用 \"from\" 屬性 <code>&lt;$1 $2=\"$3\"&gt;</code> 更改 href。",
        "uploaded-setting-event-handler-svg": "於已上傳的 SVG 檔案中找到 <code>&lt;$1 $2=\"$3\"&gt;</code>,已禁止設定 event-handler 屬性。",
        "uploaded-setting-href-svg": "已禁止使用 \"set\" 標籤來加入 \"href\" 屬性至父元素。",
        "uploaded-image-filter-svg": "於已上傳的 SVG 檔案中找到圖片過濾器使用 URL:<code>&lt;$1 $2=\"$3\"&gt;</code>。",
        "uploadscriptednamespace": "此 SVG 檔案使用了非法的命名空間 \"$1\"。",
        "uploadinvalidxml": "無法解析已上傳檔案中的 XML。",
-       "uploadvirus": "該檔案含有病毒!\n詳細資:$1",
+       "uploadvirus": "該檔案含有病毒!\n詳細資:$1",
        "uploadjava": "該檔案為包含 Java .class 檔案的 ZIP 檔案。\n因 Java 檔案可能跳過安全檢查造成安全性問題,不允許上傳 Java 檔案。",
        "upload-source": "來源檔案",
        "sourcefilename": "來源檔案名稱:",
        "filewasdeleted": "先前已有同樣名稱的檔案上傳,後來被刪除。\n您應在上傳此檔案前檢查 $1。",
        "filename-thumb-name": "此檔名似乎為縮圖檔名,請不要重新上傳縮圖回相同 wiki。 否則請先修正為更具意義的檔案名稱並且去除縮圖的檔名字首。",
        "filename-bad-prefix": "您上傳的檔案名稱以 <strong>\"$1\"</strong> 開頭,是不具任何描述意義的名稱,通常由數位相機自動產生。\n請替您的檔案使用一個更具描述意義的名稱。",
-       "upload-success-subj": "成功上傳",
-       "upload-success-msg": "您已成功使用 [$2] 上傳檔案,可於此處取得檔案:[[:{{ns:file}}:$1]]",
-       "upload-failure-subj": "上傳問題",
-       "upload-failure-msg": "您使用 [$2] 上傳的檔案發生問題:\n\n$1",
-       "upload-warning-subj": "上傳警告",
-       "upload-warning-msg": "您使用 [$2] 上傳的檔案發生問題。 您可以返回 [[Special:Upload/stash/$1|上傳表單]] 更正此問題。",
        "upload-proto-error": "通訊協定不正確",
        "upload-proto-error-text": "遠端上傳檔案需要使用以 <code>http://</code> 或 <code>ftp://</code> 開頭的 URL。",
        "upload-file-error": "內部錯誤",
        "upload-too-many-redirects": "該 URL 重新導向至太多其他位址",
        "upload-http-error": "發生 HTTP 錯誤:$1",
        "upload-copy-upload-invalid-domain": "此網域不允許複製上傳的檔案。",
+       "upload-foreign-cant-upload": "此 wiki 未設定可上傳來自遠端檔案庫的請求的檔案。",
        "upload-dialog-title": "上傳檔案",
        "upload-dialog-button-cancel": "取消",
        "upload-dialog-button-done": "完成",
        "upload-dialog-button-save": "儲存",
        "upload-dialog-button-upload": "上傳",
        "upload-form-label-select-file": "選擇檔案",
-       "upload-form-label-infoform-title": "詳細資",
+       "upload-form-label-infoform-title": "詳細資",
        "upload-form-label-infoform-name": "名稱",
+       "upload-form-label-infoform-name-tooltip": "具獨特描述性的檔案標題,將會用來做為檔名。 您可以使用您的語系及空白做為檔名,請勿包含檔案副檔名。",
        "upload-form-label-infoform-description": "描述",
+       "upload-form-label-infoform-description-tooltip": "簡短描述該作品任何值得說明的事項。\n以照片為例,可提及照片中的事物、情境及地點。",
        "upload-form-label-usage-title": "用法",
        "upload-form-label-usage-filename": "檔案名稱",
        "foreign-structured-upload-form-label-own-work": "這是我的作品",
        "nolinkstoimage": "沒有頁面連結到此檔案。",
        "morelinkstoimage": "檢視連結到這個檔案的[[Special:WhatLinksHere/$1|更多連結]]。",
        "linkstoimage-redirect": "$1 (檔案重新導向) $2",
-       "duplicatesoffile": "以下 $1 個檔案與此檔案重複 ([[Special:FileDuplicateSearch/$2|瞭解詳細資]]):",
+       "duplicatesoffile": "以下 $1 個檔案與此檔案重複 ([[Special:FileDuplicateSearch/$2|瞭解詳細資]]):",
        "sharedupload": "此檔案來自 $1 且可能被其他專案所使用。",
        "sharedupload-desc-there": "此檔案來自 $1 且可能被其他專案所使用。\n請參考 [$2 檔案描述頁面] 瞭解進一步資訊。",
        "sharedupload-desc-here": "此檔案來自 $1 且可能被其他專案所使用。\n下方顯示此檔案於 [$2 檔案描述頁面] 的描述內容。",
        "log-title-wildcard": "搜尋以此欄位文字為字首的標題",
        "showhideselectedlogentries": "顯示/隱藏已選擇的日誌項目",
        "log-edit-tags": "編輯已選擇日誌項目的標籤",
+       "checkbox-select": "選擇: $1",
        "checkbox-all": "全部",
+       "checkbox-none": "無",
+       "checkbox-invert": "反向選擇",
        "allpages": "所有頁面",
        "nextpage": "下一頁 ($1)",
        "prevpage": "上一頁 ($1)",
        "wlheader-showupdated": "在您最後一次檢視過後修改的頁面會以 <strong>粗體</strong> 顯示。",
        "wlnote": "以下為自 $3 $4 之後的 <strong>$2</strong> 小時內所做的 <strong>$1</strong> 次變更。",
        "wlshowlast": "顯示最近 $1 小時 $2 天",
-       "watchlistall2": "全部",
        "watchlist-hide": "隱藏",
        "watchlist-submit": "顯示",
        "wlshowtime": "要顯示的時間長度:",
        "lockedbyandtime": "(由 {{GENDER:$1|$1}} 於 $2 的 $3)",
        "move-page": "移動 $1",
        "move-page-legend": "移動頁面",
-       "movepagetext": "以下表單可以用來重新命名一個頁面,並將該頁面的所有歷史記錄一併移至擁有新名稱的頁面。\n舊標題的頁面將會變成重新導向頁面,指向使用新標題的頁面。\n您可以選擇自動更新所有指向舊頁面的重新導向,讓它們改為指向新頁面。\n若您選擇不自動更新,請檢查有沒有[[Special:DoubleRedirects|雙重重新導向]]或[[Special:BrokenRedirects|損壞的重新導向]]需要修正。\n您有責任讓連結繼續指向正確的地方。\n\n請注意,若新的頁面名稱已經被使用,則此頁面將<strong>不會</strong>移動至該處,除非新名稱下是個重新導向頁面而且沒有任何編輯記錄。\n即是說,您可以將錯誤移動至其他名稱的頁面還原到原有名稱,但不能覆蓋任何現有的頁面。\n\n<strong>警告!</strong>\n這個動作對受歡迎的頁面來說可能是重大而唐突的更改;\n在行動前請先確認您了解移動可能帶來的後果。",
-       "movepagetext-noredirectfixer": "以下表單可以用來重新命名一個頁面,並將該頁面的所有歷史記錄一併移至擁有新名稱的頁面。\n舊標題的頁面將會變成重新導向頁面,指向使用新標題的頁面。\n請檢查有沒有[[Special:DoubleRedirects|雙重重新導向]]或[[Special:BrokenRedirects|損壞的重新導向]]需要修正。\n您有責任讓連結繼續指向正確的地方。\n\n請注意,若新的頁面名稱已經被使用,則此頁面將<strong>不會</strong>移動至該處,除非新名稱下是個重新導向頁面而且沒有任何編輯記錄。\n即是說,您可以將錯誤移動至其他名稱的頁面還原到原有名稱,但不能覆蓋任何現有的頁面。\n\n<strong>警告!</strong>\n這個動作對受歡迎的頁面來說可能是重大而唐突的更改;\n在行動前請先確認您了解移動可能帶來的後果。",
+       "movepagetext": "以下表單可以用來重新命名一個頁面,並將該頁面的所有歷史記錄一併移至擁有新名稱的頁面。\n舊標題的頁面將會變成重新導向頁面,指向使用新標題的頁面。\n您可以選擇自動更新所有指向舊頁面的重新導向,讓它們改為指向新頁面。\n若您選擇不自動更新,請檢查有沒有[[Special:DoubleRedirects|雙重重新導向]]或[[Special:BrokenRedirects|損壞的重新導向]]需要修正。\n您有責任讓連結繼續指向正確的地方。\n\n請注意,若新的頁面名稱已經被使用,則此頁面將<strong>不會</strong>移動至該處,除非新名稱下是個重新導向頁面而且沒有任何編輯歷史。\n即是說,您可以將錯誤移動至其他名稱的頁面還原到原有名稱,但不能覆蓋任何現有的頁面。\n\n<strong>注音:</strong>\n這個動作對受歡迎的頁面來說可能是重大而唐突的變更;\n在行動前請先確認您了解移動可能帶來的後果。",
+       "movepagetext-noredirectfixer": "以下表單可以用來重新命名一個頁面,並將該頁面的所有歷史記錄一併移至擁有新名稱的頁面。\n舊標題的頁面將會變成重新導向頁面,指向使用新標題的頁面。\n請檢查有沒有[[Special:DoubleRedirects|雙重重新導向]]或[[Special:BrokenRedirects|損壞的重新導向]]需要修正。\n您有責任讓連結繼續指向正確的地方。\n\n請注意,若新的頁面名稱已經被使用,則此頁面將<strong>不會</strong>移動至該處,除非新名稱下是個重新導向頁面而且沒有任何編輯歷史。\n即是說,您可以將錯誤移動至其他名稱的頁面還原到原有名稱,但不能覆蓋任何現有的頁面。\n\n<strong>注意:</strong>\n這個動作對受歡迎的頁面來說可能是重大而唐突的變更;\n在行動前請先確認您了解移動可能帶來的後果。",
        "movepagetalktext": "若勾選此方塊,相關的對話頁面會自動與此頁面一起移動至新的位置,除非新的名稱已有一個存在的對話頁面。\n在此情況下,若有必要您必須手動移動或合併已存在的頁面。",
        "moveuserpage-warning": "<strong>警告:</strong>您正要移動使用者頁面,請注意只有使用者頁面會變更名稱,並<em>不會</em>重新命名使用者。",
        "movecategorypage-warning": "<strong>警告:</strong>您正要移動分類頁面。請注意此操作只會移動頁面,在舊分類中的頁面將<em>不會</em>移動到新的分類。",
        "movenosubpage": "此頁面沒有任何子頁面。",
        "movereason": "原因",
        "revertmove": "還原",
-       "delete_and_move_text": "== 需要刪除 ==\n目標頁面 \"[[:$1]]\" 已存在。\n您是否要刪除該頁面以完成移動?",
+       "delete_and_move_text": "目標頁面 \"[[:$1]]\" 已存在。\n您是否要刪除該頁面以完成移動?",
        "delete_and_move_confirm": "是的,刪除該頁面",
        "delete_and_move_reason": "已刪除讓來自 [[$1]] 頁面可移動",
        "selfmove": "原始標題與目標標題相同,無法移動至自身頁面。",
        "move-leave-redirect": "留下重新導向頁面",
        "protectedpagemovewarning": "<strong>警告:</strong>本頁已經被保護,只有擁有管理員權限的使用者才可移動。\n以下提供最近的日誌以便參考:",
        "semiprotectedpagemovewarning": "<strong>注意:</strong>本頁已經被保護,只有已註冊的使用者才可移動。\n以下提供最近的日誌以便參考:",
-       "move-over-sharedrepo": "== 檔案已存在 ==\n[[:$1]] 已存在於共用檔案庫,將檔案移動到此標題會覆蓋該共用檔案。",
+       "move-over-sharedrepo": "[[:$1]] 已存在於共用檔案庫,將檔案移動到此標題會覆蓋該共用檔案。",
        "file-exists-sharedrepo": "選擇的檔案名稱於共用檔案庫已有其他檔案使用。\n請改選擇其他名稱。",
        "export": "匯出頁面",
        "exporttext": "您可以匯出指定頁面或多頁的文字與編輯歷史,使用 XML 格式包裝。\n這些檔案可以匯入至其他使用 MediaWiki 的 Wiki,透過 [[Special:Import|匯入頁面]]。\n\n要匯出頁面,請在下方文字方塊中輸入頁面標題,一個標題使用一行,並選擇是否要匯出目前的修訂含所有的歷史修訂記錄,或者只匯出目前的修訂與最後編輯的資訊。\n\n在文字方塊中您也可使用連結,如:[[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] 代表匯出頁面 \"[[{{MediaWiki:Mainpage}}]]\"。",
        "pageinfo-robot-index": "允許",
        "pageinfo-robot-noindex": "不允許",
        "pageinfo-watchers": "頁面監視者數",
-       "pageinfo-visiting-watchers": "最後一次編輯後參觀人數",
+       "pageinfo-visiting-watchers": "已訪問最近編輯的頁面監視者數",
        "pageinfo-few-watchers": "少於 $1 名監視者",
        "pageinfo-few-visiting-watchers": "參觀近期編輯的使用者可能為監視使用者",
        "pageinfo-redirects-name": "指向此頁面的重新導向頁面數量",
        "version-libraries-license": "授權條款",
        "version-libraries-description": "描述",
        "version-libraries-authors": "作者",
-       "redirect": "重新導向至檔案、使用者、頁面或修訂 ID",
+       "redirect": "依檔案、使用者、頁面、修訂或日誌 ID 來重新導向",
        "redirect-legend": "重新導向至檔案或頁面",
-       "redirect-summary": "此特殊頁面可用來重新導向至檔案 (指定檔案名稱)、頁面 (指定修訂 ID 或頁面 ID) 或使用者頁面 (指定使用者 ID)。用法:[[{{#Special:Redirect}}/file/Example.jpg]]、[[{{#Special:Redirect}}/page/64308]]、[[{{#Special:Redirect}}/revision/328429]] 或 [[{{#Special:Redirect}}/user/101]]。",
+       "redirect-summary": "此特殊頁面可用來重新導向至檔案 (指定檔案名稱)、頁面 (指定修訂 ID 或頁面 ID)、使用者頁面 (指定使用者 ID)、或者日誌項目 (指定日誌 ID)。用法:[[{{#Special:Redirect}}/file/Example.jpg]]、[[{{#Special:Redirect}}/page/64308]]、[[{{#Special:Redirect}}/revision/328429]]、[[{{#Special:Redirect}}/user/101]] 或 [[{{#Special:Redirect}}/logid/186]]。",
        "redirect-submit": "執行",
        "redirect-lookup": "查詢:",
        "redirect-value": "值:",
        "redirect-page": "頁面 ID",
        "redirect-revision": "頁面修訂 ID",
        "redirect-file": "檔案名稱",
+       "redirect-logid": "日誌 ID",
        "redirect-not-exists": "查無值",
        "fileduplicatesearch": "搜尋重複檔案",
        "fileduplicatesearch-summary": "依據雜湊值 (Hash) 來搜尋重複的檔案。",
        "logentry-suppress-delete": "$1 {{GENDER:$2|已禁止顯示}}頁面 $3",
        "logentry-suppress-event": "$1 {{GENDER:$2|已暗中更改}} $3 中 {{PLURAL:$5|1 筆日誌|$5 筆日誌}}的可見性:$4",
        "logentry-suppress-revision": "$1 {{GENDER:$2|已暗中更改}}頁面 $3 中 {{PLURAL:$5|1 筆修訂|$5 筆修訂}}的可見性:$4",
-       "logentry-suppress-event-legacy": "$1 {{GENDER:$2|已暗中更改}} $3 中日誌的可見性",
+       "logentry-suppress-event-legacy": "$1 {{GENDER:$2|已暗中變更}} $3 中日誌的可見性",
        "logentry-suppress-revision-legacy": "$1 {{GENDER:$2|已暗中更改}}頁面 $3 中修訂的可見性",
        "revdelete-content-hid": "已隱藏內容",
        "revdelete-summary-hid": "己隱藏摘要",
        "expand_templates_preview": "預覽",
        "expand_templates_preview_fail_html": "<em>因連線階段的資料遺失且 {{SITENAME}} 已開啟顯示原始 HTML 功能,為預防 JavaScript 攻擊已隱藏預覽內容。</em>\n\n<strong>若您目前的預覽動作並無非法,請再試一次。</strong>\n若仍然無效,請嘗試[[Special:UserLogout|登出]]並再登入一次。",
        "expand_templates_preview_fail_html_anon": "<em>因您尚未登入且 {{SITENAME}} 已開啟顯示原始 HTML 功能,為預防 JavaScript 攻擊已隱藏預覽內容。</em>\n\n<strong>若您目前的預覽動作並無非法,請[[Special:UserLogin|登入]]後再試一次。</strong>",
-       "pagelanguage": "頁面語言選擇器",
+       "pagelanguage": "變更頁面語言",
        "pagelang-name": "頁面",
        "pagelang-language": "語言",
        "pagelang-use-default": "使用預設語言",
        "pagelang-submit": "送出",
        "right-pagelang": "變更頁面語言",
        "action-pagelang": "變更頁面語言",
-       "log-name-pagelang": "è®\8aæ\9b´èª\9eè¨\80日誌",
+       "log-name-pagelang": "èª\9eè¨\80è®\8aæ\9b´日誌",
        "log-description-pagelang": "此頁為頁面語言的變更日誌。",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|已更改}}頁面 $3 的語言從 $4 到 $5",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|已更改}}頁面 $3 的語言從 $4 到 $5",
        "default-skin-not-found": "哎呀!您於 <code dir=\"ltr\">$wgDefaultSkin</code> 設定的 Wiki 預設外觀 <code>$1</code> 無法使用。\n\n您的安裝程序應包含以下{{PLURAL:$4|外觀}}。請參考 [https://www.mediawiki.org/wiki/Manual:Skin_configuration 操作手冊:外觀設定] 以取得如何{{PLURAL:$4|開啟外觀並設為預設值}}的資訊。\n\n$2\n\n; 若您才剛安裝完 MediaWiki:\n: 您大概是使用 git 或直接透過原始碼使用其他方法安裝,這種情況是正常的。請嘗試安裝 [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org 的外觀目錄] 中的部份外觀使用以下方式:\n:* 下載 [https://www.mediawiki.org/wiki/Special:MyLanguage/Download tarball 安裝程式],該程式包含數個外觀與擴充套件。您可以複製並貼上至 <code>skins/</code> 目錄。\n:* 自 [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org] 下載個別外觀 tarball。\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins 使用 Git 下載外觀]。\n: 若您是 MediaWiki 的開發人員,這麼做應該不會影響到您的 git 儲存庫。\n\n; 若您才剛升級 MediaWiki:\n: MediaWiki 1.24 與較新的版本不再自動開啟已安裝的外觀 (請參考 [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery 操作手冊:外觀自動搜尋])。您可以將下列{{PLURAL:$5|行}}貼上至 <code>LocalSettings.php</code> 來開啟{{PLURAL:$5|所有}}目前已經安裝的{{PLURAL:$5|外觀}}:\n\n<pre dir=\"ltr\">$3</pre>\n\n; 若您才剛修改 <code>LocalSettings.php</code>:\n: 請再次確認您輸入的外觀名稱是否有誤。",
        "default-skin-not-found-no-skins": "哎呀!您於 <code>$wgDefaultSkin</code> 設定的 Wiki 預設外觀 <code>$1</code> 無法使用。\n\n您未安裝任何的外觀。\n\n; 若您才剛安裝完或升級完 MediaWiki:\n: 您大概是使用 git 或直接透過原始碼使用其他方法安裝,這種情況是正常的。 MediaWiki 1.24 或較新的版本在主要儲存庫中不再包含任何的外觀。 請嘗試安裝 [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org 的外觀目錄] 中的部份外觀使用以下方式:\n:* 下載 [https://www.mediawiki.org/wiki/Special:MyLanguage/Download tarball 安裝程式],該程式包含數個外觀與擴充套件。 您可以複製並貼上至 <code>skins/</code> 目錄。\n:* 自 [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org] 下載個別外觀 tarball。\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins 使用 Git 下載外觀]。\n: 若您是 MediaWiki 的開發人員,這麼做應該不會影響到您的 git 儲存庫。 請參考 [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Skin_configuration 操作手冊:外觀設定] 以取得如何開啟外觀並設為預設值的資訊。",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (已開啟)",
index 2a1f85b..8fa13c6 100644 (file)
@@ -395,7 +395,6 @@ $specialPageAliases = array(
        'Blankpage'                 => array( 'BlankPage' ),
        'Block'                     => array( 'Block', 'BlockIP', 'BlockUser' ),
        'Booksources'               => array( 'BookSources' ),
-       'BotPasswords'              => array( 'BotPasswords' ),
        'BrokenRedirects'           => array( 'BrokenRedirects' ),
        'Categories'                => array( 'Categories' ),
        'ChangeContentModel'        => array( 'ChangeContentModel' ),
index 291920b..5a7f769 100644 (file)
@@ -84,7 +84,7 @@ abstract class Maintenance {
        protected $mQuiet = false;
        protected $mDbUser, $mDbPass;
 
-       // A description of the script, children should change this
+       // A description of the script, children should change this via addDescription()
        protected $mDescription = '';
 
        // Have we already loaded our user input?
diff --git a/maintenance/archives/patch-bot_passwords.sql b/maintenance/archives/patch-bot_passwords.sql
deleted file mode 100644 (file)
index bd60ff7..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
---
--- This table contains a user's bot passwords: passwords that allow access to
--- the account via the API with limited rights.
---
-CREATE TABLE /*_*/bot_passwords (
-  -- Foreign key to user.user_id
-  bp_user int NOT NULL,
-
-  -- Application identifier
-  bp_app_id varbinary(32) NOT NULL,
-
-  -- Password hashes, like user.user_password
-  bp_password tinyblob NOT NULL,
-
-  -- Like user.user_token
-  bp_token binary(32) NOT NULL default '',
-
-  -- JSON blob for MWRestrictions
-  bp_restrictions blob NOT NULL,
-
-  -- Grants allowed to the account when authenticated with this bot-password
-  bp_grants blob NOT NULL,
-
-  PRIMARY KEY ( bp_user, bp_app_id )
-) /*$wgDBTableOptions*/;
index a2ea554..deab60b 100644 (file)
@@ -38,7 +38,7 @@ class AttachLatest extends Maintenance {
                $this->addOption( "fix", "Actually fix the entries, will dry run otherwise" );
                $this->addOption( "regenerate-all",
                        "Regenerate the page_latest field for all records in table page" );
-               $this->mDescription = "Fix page_latest entries in the page table";
+               $this->addDescription( 'Fix page_latest entries in the page table' );
        }
 
        public function execute() {
index 1569234..40a877f 100644 (file)
@@ -34,7 +34,7 @@ require_once __DIR__ . '/Benchmarker.php';
 class BenchHttpHttps extends Benchmarker {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Benchmark HTTP request vs HTTPS request.";
+               $this->addDescription( 'Benchmark HTTP request vs HTTPS request.' );
        }
 
        public function execute() {
index 810937a..439947d 100644 (file)
@@ -34,7 +34,7 @@ require_once __DIR__ . '/Benchmarker.php';
 class BenchWikimediaBaseConvert extends Benchmarker {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Benchmark for Wikimedia\\base_convert.";
+               $this->addDescription( 'Benchmark for Wikimedia\base_convert.' );
                $this->addOption( "inbase", "Input base", false, true );
                $this->addOption( "outbase", "Output base", false, true );
                $this->addOption( "length", "Size in digits to generate for input", false, true );
index 572c548..9acb93a 100644 (file)
@@ -31,7 +31,7 @@ require_once __DIR__ . '/Benchmarker.php';
 class BenchmarkDeleteTruncate extends Benchmarker {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Benchmarks SQL DELETE vs SQL TRUNCATE.";
+               $this->addDescription( 'Benchmarks SQL DELETE vs SQL TRUNCATE.' );
        }
 
        public function execute() {
index 698a0f0..8f7f61d 100644 (file)
@@ -34,7 +34,7 @@ require_once __DIR__ . '/Benchmarker.php';
 class BenchIfSwitch extends Benchmarker {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Benchmark if elseif... versus switch case.";
+               $this->addDescription( 'Benchmark if elseif... versus switch case.' );
        }
 
        public function execute() {
index 44c8e03..f34d27f 100644 (file)
@@ -41,7 +41,7 @@ function bfNormalizeTitleStrReplace( $str ) {
 class BenchStrtrStrReplace extends Benchmarker {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Benchmark for strtr() vs str_replace().";
+               $this->addDescription( 'Benchmark for strtr() vs str_replace().' );
        }
 
        public function execute() {
index b742f66..bd18adb 100644 (file)
@@ -64,11 +64,10 @@ class BenchUtf8TitleCheck extends Benchmarker {
                $this->canRun = function_exists( 'mb_check_encoding' );
 
                if ( $this->canRun ) {
-                       $this->mDescription = "Benchmark for using a regexp vs. mb_check_encoding " .
-                               "to check for UTF-8 encoding.";
-                       mb_internal_encoding( 'UTF-8' );
+                       $this->addDescription( "Benchmark for using a regexp vs. mb_check_encoding " .
+                               "to check for UTF-8 encoding." );
                } else {
-                       $this->mDescription = "CANNOT RUN benchmark using mb_check_encoding: function not available.";
+                       $this->addDescription( 'CANNOT RUN benchmark using mb_check_encoding: function not available.' );
                }
        }
 
index 8446694..ea919ef 100644 (file)
@@ -34,7 +34,7 @@ require_once __DIR__ . '/Benchmarker.php';
 class BenchWfIsWindows extends Benchmarker {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Benchmark for wfIsWindows.";
+               $this->addDescription( 'Benchmark for wfIsWindows.' );
        }
 
        public function execute() {
index 1446871..3106f89 100644 (file)
@@ -31,7 +31,7 @@ require_once __DIR__ . '/Benchmarker.php';
 class BenchmarkHooks extends Benchmarker {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = 'Benchmark MediaWiki Hooks.';
+               $this->addDescription( 'Benchmark MediaWiki Hooks.' );
        }
 
        public function execute() {
index 9eca73c..e67d226 100644 (file)
@@ -31,7 +31,7 @@ require_once __DIR__ . '/Benchmarker.php';
 class BenchmarkPurge extends Benchmarker {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Benchmark the Squid purge functions.";
+               $this->addDescription( 'Benchmark the Squid purge functions.' );
        }
 
        public function execute() {
index 5d98e1f..8687f81 100644 (file)
@@ -37,7 +37,7 @@ class ChangePassword extends Maintenance {
                $this->addOption( "user", "The username to operate on", false, true );
                $this->addOption( "userid", "The user id to operate on", false, true );
                $this->addOption( "password", "The password to use", true, true );
-               $this->mDescription = "Change a user's password";
+               $this->addDescription( "Change a user's password" );
        }
 
        public function execute() {
index 500fc35..985df56 100644 (file)
@@ -31,7 +31,7 @@ require_once __DIR__ . '/Maintenance.php';
 class CheckBadRedirects extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Check for bad redirects";
+               $this->addDescription( 'Check for bad redirects' );
        }
 
        public function execute() {
index 7a85d64..9ec61dc 100644 (file)
@@ -12,8 +12,8 @@ require_once __DIR__ . '/Maintenance.php';
 class CheckComposerLockUpToDate extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription =
-                       'Checks whether your composer.lock file is up to date with the current composer.json';
+               $this->addDescription(
+                       'Checks whether your composer.lock file is up to date with the current composer.json' );
        }
 
        public function execute() {
index 9761927..9a8203f 100644 (file)
@@ -31,7 +31,7 @@ class CheckImages extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Check images to see if they exist, are readable, etc";
+               $this->addDescription( 'Check images to see if they exist, are readable, etc' );
                $this->setBatchSize( 1000 );
        }
 
index 2f533cf..889c903 100644 (file)
@@ -30,8 +30,8 @@ class CheckLess extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription =
-                       'Checks LESS files for errors by running the LessTestSuite PHPUnit test suite';
+               $this->addDescription(
+                       'Checks LESS files for errors by running the LessTestSuite PHPUnit test suite' );
        }
 
        public function execute() {
index 30a23d3..4821e04 100644 (file)
@@ -36,7 +36,7 @@ class CheckSyntax extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Check syntax for all PHP files in MediaWiki";
+               $this->addDescription( 'Check syntax for all PHP files in MediaWiki' );
                $this->addOption( 'with-extensions', 'Also recurse the extensions folder' );
                $this->addOption(
                        'path',
index 6f4d170..1b9a1cc 100644 (file)
@@ -35,7 +35,7 @@ class CheckUsernames extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Verify that database usernames are actually valid";
+               $this->addDescription( 'Verify that database usernames are actually valid' );
                $this->setBatchSize( 1000 );
        }
 
index f1467d5..7f67b60 100644 (file)
@@ -33,7 +33,7 @@ class CleanupAncientTables extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Cleanup ancient tables and indexes";
+               $this->addDescription( 'Cleanup ancient tables and indexes' );
                $this->addOption( 'force', 'Actually run this script' );
        }
 
index 437abe9..2efd7ab 100644 (file)
@@ -33,7 +33,7 @@ class CleanupBlocks extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Cleanup user blocks with user names not matching the 'user' table";
+               $this->addDescription( "Cleanup user blocks with user names not matching the 'user' table" );
                $this->setBatchSize( 1000 );
        }
 
index e0a0f49..a79c2d3 100644 (file)
@@ -42,7 +42,7 @@ class CapsCleanup extends TableCleanup {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Script to cleanup capitalization";
+               $this->addDescription( 'Script to cleanup capitalization' );
                $this->addOption( 'namespace', 'Namespace number to run caps cleanup on', false, true );
        }
 
index ab2d808..0110685 100644 (file)
@@ -42,7 +42,7 @@ class ImageCleanup extends TableCleanup {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Script to clean up broken, unparseable upload filenames";
+               $this->addDescription( 'Script to clean up broken, unparseable upload filenames' );
        }
 
        protected function processRow( $row ) {
index 810fad9..19949bc 100644 (file)
@@ -34,7 +34,8 @@ class CleanupRemovedModules extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = 'Remove cache entries for removed ResourceLoader modules from the database';
+               $this->addDescription(
+                       'Remove cache entries for removed ResourceLoader modules from the database' );
                $this->addOption( 'batchsize', 'Delete rows in batches of this size. Default: 500', false, true );
        }
 
index b43ce81..020f5cd 100644 (file)
@@ -32,7 +32,7 @@ class CleanupSpam extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Cleanup all spam from a given hostname";
+               $this->addDescription( 'Cleanup all spam from a given hostname' );
                $this->addOption( 'all', 'Check all wikis in $wgLocalDatabases' );
                $this->addOption( 'delete', 'Delete pages containing only spam instead of blanking them' );
                $this->addArg(
index 07df1b1..574d5bd 100644 (file)
@@ -35,7 +35,7 @@ require_once __DIR__ . '/cleanupTable.inc';
 class TitleCleanup extends TableCleanup {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Script to clean up broken, unparseable titles";
+               $this->addDescription( 'Script to clean up broken, unparseable titles' );
        }
 
        /**
index 70490e1..480059d 100644 (file)
@@ -37,7 +37,7 @@ class UploadStashCleanup extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Clean up abandoned files in temporary uploaded file stash";
+               $this->addDescription( 'Clean up abandoned files in temporary uploaded file stash' );
                $this->setBatchSize( 50 );
        }
 
index 16f7b61..d8c682b 100644 (file)
@@ -46,7 +46,7 @@ class WatchlistCleanup extends TableCleanup {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Script to remove broken, unparseable titles in the Watchlist";
+               $this->addDescription( 'Script to remove broken, unparseable titles in the Watchlist' );
                $this->addOption( 'fix', 'Actually remove entries; without will only report.' );
        }
 
index 6a6527f..4b5773c 100644 (file)
@@ -32,7 +32,7 @@ class ClearInterwikiCache extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Clear all interwiki links for all languages from the cache";
+               $this->addDescription( 'Clear all interwiki links for all languages from the cache' );
        }
 
        public function execute() {
index 98441b6..e5f0bb3 100644 (file)
@@ -27,7 +27,7 @@ require_once __DIR__ . '/Maintenance.php';
 class CompareParserCache extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Parse random pages and compare output to cache.";
+               $this->addDescription( 'Parse random pages and compare output to cache.' );
                $this->addOption( 'namespace', 'Page namespace number', true, true );
                $this->addOption( 'maxpages', 'Number of pages to try', true, true );
        }
index e67c439..f2540c7 100644 (file)
@@ -43,7 +43,7 @@ class CompareParsers extends DumpIterator {
        public function __construct() {
                parent::__construct();
                $this->saveFailed = false;
-               $this->mDescription = "Run a file or dump with several parsers";
+               $this->addDescription( 'Run a file or dump with several parsers' );
                $this->addOption( 'parser1', 'The first parser to compare.', true, true );
                $this->addOption( 'parser2', 'The second parser to compare.', true, true );
                $this->addOption( 'tidy', 'Run tidy on the articles.', false, false );
index 3113533..eeb2e6d 100644 (file)
@@ -55,7 +55,7 @@ class ConvertExtensionToRegistration extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = 'Converts extension entry points to the new JSON registration format';
+               $this->addDescription( 'Converts extension entry points to the new JSON registration format' );
                $this->addArg( 'path', 'Location to the PHP entry point you wish to convert',
                        /* $required = */ true );
                $this->addOption( 'skin', 'Whether to write to skin.json', false, false );
index 15ca14b..fa9c574 100644 (file)
@@ -36,9 +36,9 @@ 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";
+               $this->addDescription(
+                       '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' );
 
                $this->addArg( 'logperformance', "Log performance to perfLogFilename.", false );
                $this->addArg(
index 11768c8..c245a1e 100644 (file)
@@ -34,7 +34,7 @@ class ConvertUserOptions extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Convert user options from old to new system";
+               $this->addDescription( 'Convert user options from old to new system' );
                $this->setBatchSize( 50 );
        }
 
index b39ff55..25073f7 100644 (file)
@@ -40,7 +40,7 @@ class CopyFileBackend extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Copy files in one backend to another.";
+               $this->addDescription( 'Copy files in one backend to another.' );
                $this->addOption( 'src', 'Backend containing the source files', true, true );
                $this->addOption( 'dst', 'Backend where files should be copied to', true, true );
                $this->addOption( 'containers', 'Pipe separated list of containers', true, true );
index a9c9547..42c2dd4 100644 (file)
@@ -34,7 +34,7 @@ require_once __DIR__ . '/Maintenance.php';
 class CopyJobQueue extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Copy jobs from one queue system to another.";
+               $this->addDescription( 'Copy jobs from one queue system to another.' );
                $this->addOption( 'src', 'Key to $wgJobQueueMigrationConfig for source', true, true );
                $this->addOption( 'dst', 'Key to $wgJobQueueMigrationConfig for destination', true, true );
                $this->addOption( 'type', 'Types of jobs to copy (use "all" for all)', true, true );
index c1a2022..e7d666a 100644 (file)
@@ -35,7 +35,7 @@ class CreateAndPromote extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Create a new user account and/or grant it additional rights";
+               $this->addDescription( 'Create a new user account and/or grant it additional rights' );
                $this->addOption(
                        'force',
                        'If acccount exists already, just grant it rights or change password.'
index c678712..87e7e08 100644 (file)
@@ -37,7 +37,7 @@ class GenerateCommonPassword extends Maintenance {
        public function __construct() {
                global $IP;
                parent::__construct();
-               $this->mDescription = "Generate CDB file of common passwords";
+               $this->addDescription( 'Generate CDB file of common passwords' );
                $this->addOption( 'limit', "Max number of passwords to write", false, true, 'l' );
                $this->addArg( 'inputfile', 'List of passwords (one per line) to use or - for stdin', true );
                $this->addArg(
index 94ebf87..92f1a91 100644 (file)
@@ -34,7 +34,7 @@ require_once __DIR__ . '/Maintenance.php';
 class DeleteArchivedFiles extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Deletes all archived images.";
+               $this->addDescription( 'Deletes all archived images.' );
                $this->addOption( 'delete', 'Perform the deletion' );
                $this->addOption( 'force', 'Force deletion of rows from filearchive' );
        }
index 9924eb0..2fb83fc 100644 (file)
@@ -35,8 +35,8 @@ require_once __DIR__ . '/Maintenance.php';
 class DeleteArchivedRevisions extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription =
-                       "Deletes all archived revisions\nThese revisions will no longer be restorable";
+               $this->addDescription(
+                       "Deletes all archived revisions\nThese revisions will no longer be restorable" );
                $this->addOption( 'delete', 'Performs the deletion' );
        }
 
index 6c89e67..e8839c5 100644 (file)
@@ -39,7 +39,7 @@ class DeleteBatch extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Deletes a batch of pages";
+               $this->addDescription( '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" );
index a5c6199..7e1d315 100644 (file)
@@ -33,8 +33,8 @@ require_once __DIR__ . '/Maintenance.php';
 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\"";
+               $this->addDescription( 'Deletes all pages in the MediaWiki namespace' .
+                       ' which were last edited by "MediaWiki default"' );
        }
 
        public function execute() {
index e7bb866..f21f3e1 100644 (file)
@@ -30,8 +30,8 @@ require_once __DIR__ . '/Maintenance.php';
 class DeleteEqualMessages extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = 'Deletes all pages in the MediaWiki namespace that are equal to '
-                       . 'the default message';
+               $this->addDescription( 'Deletes all pages in the MediaWiki namespace that are equal to '
+                       . 'the default message' );
                $this->addOption( 'delete', 'Actually delete the pages (default: dry run)' );
                $this->addOption( 'delete-talk', 'Don\'t leave orphaned talk pages behind during deletion' );
                $this->addOption( 'lang-code', 'Check for subpages of this language code (default: root '
index f411148..123163f 100644 (file)
@@ -32,7 +32,7 @@ require_once __DIR__ . '/Maintenance.php';
 class DeleteOldRevisions extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Delete old (non-current) revisions from the database";
+               $this->addDescription( '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 );
        }
index 3d5c1a4..5f08b5a 100644 (file)
@@ -34,7 +34,8 @@ require_once __DIR__ . '/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->addDescription(
+                       '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' );
        }
 
index 6cda784..4606d92 100644 (file)
@@ -33,7 +33,7 @@ class DeleteRevision extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Delete one or more revisions by moving them to the archive table";
+               $this->addDescription( 'Delete one or more revisions by moving them to the archive table' );
        }
 
        public function execute() {
index f9bb416..ed15fd1 100644 (file)
@@ -32,7 +32,7 @@ require_once __DIR__ . '/Maintenance.php';
 class DeleteSelfExternals extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = 'Delete self-references to $wgServer from externallinks';
+               $this->addDescription( 'Delete self-references to $wgServer from externallinks' );
                $this->mBatchSize = 1000;
        }
 
index 2322909..6d5472e 100644 (file)
@@ -541,8 +541,6 @@ assert
 astriks
 asymp
 async
-asynccopyuploaddisabled
-asyncdownload
 at
 atend
 atext
@@ -2151,7 +2149,6 @@ lcount
 lcrocker
 ldquo
 le
-leavemessage
 len
 length
 leprop
index 18737a4..1904325 100644 (file)
@@ -31,7 +31,7 @@ class DumpBackup extends BackupDumper {
        function __construct( $args = null ) {
                parent::__construct();
 
-               $this->mDescription = <<<TEXT
+               $this->addDescription( <<<TEXT
 This script dumps the wiki page or logging database into an
 XML interchange wrapper format for export or backup.
 
@@ -40,7 +40,8 @@ XML output is sent to stdout; progress reports are sent to stderr.
 WARNING: this is not a full database dump! It is merely for public export
          of your wiki. For full backup, see our online help at:
          https://www.mediawiki.org/wiki/Backup
-TEXT;
+TEXT
+               );
                $this->stderr = fopen( "php://stderr", "wt" );
                // Actions
                $this->addOption( 'full', 'Dump all revisions of every page' );
index d8bc3a4..eef535a 100644 (file)
@@ -40,7 +40,7 @@ abstract class DumpIterator extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Does something with a dump";
+               $this->addDescription( 'Does something with a dump' );
                $this->addOption( 'file', 'File with text to run.', false, true );
                $this->addOption( 'dump', 'XML dump to execute all revisions.', false, true );
                $this->addOption( 'from', 'Article from XML dump to start from.', false, true );
@@ -164,7 +164,7 @@ class SearchDump extends DumpIterator {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Runs a regex in the revisions from a dump";
+               $this->addDescription( 'Runs a regex in the revisions from a dump' );
                $this->addOption( 'regex', 'Searching regex', true, true );
        }
 
index 74b500a..7139786 100644 (file)
@@ -40,7 +40,7 @@ require_once __DIR__ . '/Maintenance.php';
 class DumpLinks extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Quick demo hack to generate a plaintext link dump";
+               $this->addDescription( 'Quick demo hack to generate a plaintext link dump' );
        }
 
        public function execute() {
index 7511392..8169ef5 100644 (file)
@@ -93,13 +93,14 @@ class TextPassDumper extends BackupDumper {
        function __construct( $args = null ) {
                parent::__construct();
 
-               $this->mDescription = <<<TEXT
+               $this->addDescription( <<<TEXT
 This script postprocesses XML dumps from dumpBackup.php to add
 page text which was stubbed out (using --stub).
 
 XML input is accepted on stdin.
 XML output is sent to stdout; progress reports are sent to stderr.
-TEXT;
+TEXT
+               );
                $this->stderr = fopen( "php://stderr", "wt" );
 
                $this->addOption( 'stub', 'To load a compressed stub dump instead of stdin. ' .
index 026ac02..64884d5 100644 (file)
@@ -32,8 +32,8 @@ require_once __DIR__ . '/Maintenance.php';
 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->addDescription( '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' );
index b67a957..fc83a91 100644 (file)
@@ -31,7 +31,7 @@ require_once __DIR__ . '/Maintenance.php';
 class EditCLI extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Edit an article from the command line, text is from stdin";
+               $this->addDescription( 'Edit an article from the command line, text is from stdin' );
                $this->addOption( 'user', 'Username', false, true, 'u' );
                $this->addOption( 'summary', 'Edit summary', false, true, 's' );
                $this->addOption( 'minor', 'Minor edit', false, false, 'm' );
index 69a95e2..2fcdd14 100644 (file)
@@ -35,7 +35,7 @@ require_once __DIR__ . '/Maintenance.php';
 class EraseArchivedFile extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Erases traces of deleted files.";
+               $this->addDescription( 'Erases traces of deleted files.' );
                $this->addOption( 'delete', 'Perform the deletion' );
                $this->addOption( 'filename', 'File name', false, true );
                $this->addOption( 'filekey', 'File storage key (with extension) or "*"', true, true );
index 145c924..157a323 100644 (file)
@@ -15,7 +15,7 @@ require_once $basePath . '/maintenance/Maintenance.php';
 class ExportSites extends Maintenance {
 
        public function __construct() {
-               $this->mDescription = 'Exports site definitions the sites table to XML file';
+               $this->addDescription( 'Exports site definitions the sites table to XML file' );
 
                $this->addArg( 'file', 'A file to write the XML to (see docs/sitelist.txt). ' .
                        'Use "php://stdout" to write to stdout.', true
index cf12838..989e90a 100644 (file)
@@ -32,9 +32,10 @@ require_once __DIR__ . '/Maintenance.php';
 class FetchText extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Fetch the raw revision blob from an old_id.\n" .
+               $this->addDescription( "Fetch the raw revision blob from an old_id.\n" .
                        "NOTE: Export transformations are NOT applied. " .
-                       "This is left to backupTextPass.php";
+                       "This is left to backupTextPass.php"
+               );
        }
 
        /**
index 9dba818..feb927e 100644 (file)
@@ -32,7 +32,7 @@ require_once __DIR__ . '/Maintenance.php';
 class TestFileOpPerformance extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Test fileop performance";
+               $this->addDescription( 'Test fileop performance' );
                $this->addOption( 'b1', 'Backend 1', true, true );
                $this->addOption( 'b2', 'Backend 2', false, true );
                $this->addOption( 'srcdir', 'File source directory', true, true );
index 8c7e242..9022292 100644 (file)
@@ -124,7 +124,7 @@ class DeprecatedInterfaceFinder extends FileAwareNodeVisitor {
 class FindDeprecated extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = 'Find deprecated interfaces';
+               $this->addDescription( 'Find deprecated interfaces' );
        }
 
        public function getFiles() {
index f9c61c7..1cf818e 100644 (file)
@@ -49,7 +49,7 @@ class FindHooks extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = 'Find hooks that are undocumented, missing, or just plain wrong';
+               $this->addDescription( 'Find hooks that are undocumented, missing, or just plain wrong' );
                $this->addOption( 'online', 'Check against MediaWiki.org hook documentation' );
        }
 
index 5818ee2..2fad7ce 100644 (file)
@@ -25,7 +25,7 @@ class FindMissingFiles extends Maintenance {
        function __construct() {
                parent::__construct();
 
-               $this->mDescription = 'Find registered files with no corresponding file.';
+               $this->addDescription( 'Find registered files with no corresponding file.' );
                $this->addOption( 'start', 'Start after this file name', false, true );
                $this->addOption( 'mtimeafter', 'Only include files changed since this time', false, true );
                $this->addOption( 'mtimebefore', 'Only includes files changed before this time', false, true );
index 41650bd..2362957 100644 (file)
@@ -25,7 +25,7 @@ class FindOrphanedFiles extends Maintenance {
        function __construct() {
                parent::__construct();
 
-               $this->mDescription = "Find unregistered files in the 'public' repo zone.";
+               $this->addDescription( "Find unregistered files in the 'public' repo zone." );
                $this->addOption( 'subdir',
                        'Only scan files in this subdirectory (e.g. "a/a0")', false, true );
                $this->addOption( 'verbose', "Mention file paths checked" );
index 25ec342..18334d6 100644 (file)
@@ -32,8 +32,8 @@ require_once __DIR__ . '/Maintenance.php';
 class FixDefaultJsonContentPages extends LoggedUpdateMaintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription =
-                               'Fix instances of JSON pages prior to them being the ContentHandler default';
+               $this->addDescription(
+                       'Fix instances of JSON pages prior to them being the ContentHandler default' );
                $this->setBatchSize( 100 );
        }
 
index ca551f8..8faca27 100644 (file)
@@ -35,7 +35,7 @@ require_once __DIR__ . '/Maintenance.php';
 class FixDoubleRedirects extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Script to fix double redirects";
+               $this->addDescription( 'Script to fix double redirects' );
                $this->addOption( 'async', 'Don\'t fix anything directly, just queue the jobs' );
                $this->addOption( 'title', 'Fix only redirects pointing to this page', false, true );
                $this->addOption( 'dry-run', 'Perform a dry run, fix nothing' );
index a44f8e5..d04e0c2 100644 (file)
@@ -34,8 +34,8 @@ require_once __DIR__ . '/Maintenance.php';
 class FixExtLinksProtocolRelative extends LoggedUpdateMaintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription =
-                       "Fixes any entries in the externallinks table containing protocol-relative URLs";
+               $this->addDescription(
+                       'Fixes any entries in the externallinks table containing protocol-relative URLs' );
        }
 
        protected function getUpdateKey() {
index c2a748c..0fb3d38 100644 (file)
@@ -36,7 +36,7 @@ require_once __DIR__ . '/Maintenance.php';
 class FixTimestamps extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "";
+               $this->addDescription( '' );
                $this->addArg( 'offset', '' );
                $this->addArg( 'start', 'Starting timestamp' );
                $this->addArg( 'end', 'Ending timestamp' );
index d09760b..44ac220 100644 (file)
@@ -32,7 +32,7 @@ require_once __DIR__ . '/Maintenance.php';
 class FixUserRegistration extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Fix the user_registration field";
+               $this->addDescription( 'Fix the user_registration field' );
                $this->setBatchSize( 1000 );
        }
 
index b9c07fb..0b4f2ed 100644 (file)
@@ -35,7 +35,7 @@ require_once __DIR__ . '/Maintenance.php';
 class GenerateJsonI18n extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Build JSON messages files from a PHP messages file";
+               $this->addDescription( 'Build JSON messages files from a PHP messages file' );
 
                $this->addArg( 'phpfile', 'PHP file defining a $messages array', false );
                $this->addArg( 'jsondir', 'Directory to write JSON files to', false );
index c40d0ce..256824e 100644 (file)
@@ -145,7 +145,7 @@ class GenerateSitemap extends Maintenance {
         */
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Creates a sitemap for the site";
+               $this->addDescription( 'Creates a sitemap for the site' );
                $this->addOption(
                        'fspath',
                        'The file system path to save to, e.g. /tmp/sitemap; defaults to current directory',
index 5838201..b1140ec 100644 (file)
@@ -49,7 +49,7 @@ class GetConfiguration extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Get serialized MediaWiki site configuration";
+               $this->addDescription( 'Get serialized MediaWiki site configuration' );
                $this->addOption( 'regex', 'regex to filter variables with', false, true );
                $this->addOption( 'iregex', 'same as --regex but case insensitive', false, true );
                $this->addOption( 'settings', 'Space-separated list of wg* variables', false, true );
index 7365a2e..c2c6958 100644 (file)
@@ -31,7 +31,7 @@ require_once __DIR__ . '/Maintenance.php';
 class GetLagTimes extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Dump replication lag times";
+               $this->addDescription( 'Dump replication lag times' );
        }
 
        public function execute() {
index c858c38..81228cc 100644 (file)
@@ -32,7 +32,7 @@ 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";
+               $this->addDescription( 'Report the hostname of a slave server' );
        }
 
        public function execute() {
index c4b8cc9..f519a79 100644 (file)
@@ -33,7 +33,7 @@ require_once __DIR__ . '/Maintenance.php';
 class GetTextMaint extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = 'Outputs page text to stdout';
+               $this->addDescription( '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' );
        }
index 5806ffc..7c452a6 100644 (file)
@@ -49,7 +49,8 @@ class BackupReader extends Maintenance {
                        ? 'ok'
                        : '(disabled; requires PHP bzip2 module)';
 
-               $this->mDescription = <<<TEXT
+               $this->addDescription(
+                       <<<TEXT
 This script reads pages from an XML file as produced from Special:Export or
 dumpBackup.php, and saves them into the current wiki.
 
@@ -61,7 +62,8 @@ Compressed XML files may be read directly:
 Note that for very large data sets, importDump.php may be slow; there are
 alternate methods which can be much faster for full site restoration:
 <https://www.mediawiki.org/wiki/Manual:Importing_XML_dumps>
-TEXT;
+TEXT
+               );
                $this->stderr = fopen( "php://stderr", "wt" );
                $this->addOption( 'report',
                        'Report position and speed after every n pages processed', false, true );
index 5dfd2a8..366594d 100644 (file)
@@ -32,7 +32,7 @@ require_once __DIR__ . '/Maintenance.php';
 class ImportSiteScripts extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = 'Import site scripts from a site';
+               $this->addDescription( 'Import site scripts from a site' );
                $this->addArg( 'api', 'API base url' );
                $this->addArg( 'index', 'index.php base url' );
                $this->addOption( 'username', 'User name of the script importer' );
index c5c00aa..8845c60 100644 (file)
@@ -15,7 +15,7 @@ require_once $basePath . '/maintenance/Maintenance.php';
 class ImportSites extends Maintenance {
 
        public function __construct() {
-               $this->mDescription = 'Imports site definitions from XML into the sites table.';
+               $this->addDescription( 'Imports site definitions from XML into the sites table.' );
 
                $this->addArg( 'file', 'An XML file containing site definitions (see docs/sitelist.txt). ' .
                        'Use "php://stdin" to read from stdin.', true
index 14d8420..70b6574 100644 (file)
@@ -32,7 +32,7 @@ require_once __DIR__ . '/Maintenance.php';
 class ImportTextFiles extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Reads in text files and imports their content to pages of the wiki";
+               $this->addDescription( 'Reads in text files and imports their content to pages of the wiki' );
                $this->addOption( 'user', 'Username to which edits should be attributed. ' .
                        'Default: "Maintenance script"', false, true, 'u' );
                $this->addOption( 'summary', 'Specify edit summary for the edits', false, true, 's' );
index dee5db8..5d0dcc6 100644 (file)
@@ -35,7 +35,7 @@ class InitEditCount extends Maintenance {
 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 the load balancer, usually indicating a replication environment.' );
-               $this->mDescription = "Batch-recalculate user_editcount fields from the revision table";
+               $this->addDescription( 'Batch-recalculate user_editcount fields from the revision table' );
        }
 
        public function execute() {
index 8d26063..7e62b89 100644 (file)
@@ -33,7 +33,7 @@ require_once __DIR__ . '/Maintenance.php';
 class InitSiteStats extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Re-initialise the site statistics tables";
+               $this->addDescription( 'Re-initialise the site statistics tables' );
                $this->addOption( 'update', 'Update the existing statistics' );
                $this->addOption( 'active', 'Also update active users count' );
                $this->addOption( 'use-master', 'Count using the master database' );
index fddfc02..770251c 100644 (file)
@@ -33,7 +33,7 @@ class JSParseHelper extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Runs parsing/syntax checks on JavaScript files";
+               $this->addDescription( 'Runs parsing/syntax checks on JavaScript files' );
                $this->addArg( 'file(s)', 'JavaScript file to test', false );
        }
 
index 52f8201..9d92794 100644 (file)
@@ -31,7 +31,7 @@ require_once __DIR__ . '/Maintenance.php';
 class DatabaseLag extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Shows database lag";
+               $this->addDescription( 'Shows database lag' );
                $this->addOption( 'r', "Don't exit immediately, but show the lag every 5 seconds" );
        }
 
index d0e6e84..931718f 100644 (file)
@@ -32,7 +32,7 @@ require_once __DIR__ . '/../Maintenance.php';
 class AllTrans extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Get all messages as defined by the English language file";
+               $this->addDescription( 'Get all messages as defined by the English language file' );
        }
 
        public function execute() {
index 1463418..dc275ab 100644 (file)
@@ -34,7 +34,7 @@ class DateFormats extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Test various language time and date functions";
+               $this->addDescription( 'Test various language time and date functions' );
        }
 
        public function execute() {
index a6e0456..eddfa26 100644 (file)
@@ -41,7 +41,7 @@ class Digit2Html extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Check digit transformation";
+               $this->addDescription( 'Check digit transformation' );
        }
 
        public function execute() {
index a72e25b..5768232 100644 (file)
@@ -33,7 +33,7 @@ require_once __DIR__ . '/../Maintenance.php';
 class DumpMessages extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Dump an entire language, using the keys from English";
+               $this->addDescription( 'Dump an entire language, using the keys from English' );
        }
 
        public function execute() {
index 52ed81f..722db06 100644 (file)
@@ -33,7 +33,7 @@ require_once __DIR__ . '/../Maintenance.php';
 class GenerateNormalizerDataAr extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = 'Generate the normalizer data file for Arabic';
+               $this->addDescription( 'Generate the normalizer data file for Arabic' );
                $this->addOption( 'unicode-data-file', 'The local location of the data file ' .
                        'from http://unicode.org/Public/UNIDATA/UnicodeData.txt', false, true );
        }
index cb6ae69..412e7ef 100644 (file)
@@ -33,7 +33,7 @@ require_once __DIR__ . '/../Maintenance.php';
 class GenerateNormalizerDataMl extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = 'Generate the normalizer data file for Malayalam';
+               $this->addDescription( 'Generate the normalizer data file for Malayalam' );
        }
 
        public function getDbType() {
index 3520b87..676297e 100644 (file)
@@ -37,8 +37,8 @@ class GenerateUtf8Case extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = 'Generate Utf8Case.ser from the Unicode Character Database ' .
-                       'and supplementary files';
+               $this->addDescription( 'Generate Utf8Case.ser from the Unicode Character Database ' .
+                       'and supplementary files' );
                $this->addOption( 'unicode-data-file', 'The local location of the data file ' .
                        'from http://unicode.org/Public/UNIDATA/UnicodeData.txt', false, true );
        }
index 32cfcd7..7c16602 100644 (file)
@@ -34,8 +34,8 @@ class LangMemUsage extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Dumb program that tries to get the memory usage\n" .
-                       "for each language file";
+               $this->addDescription( "Dumb program that tries to get the memory usage\n" .
+                       "for each language file" );
        }
 
        public function execute() {
index 4bff891..e8137ba 100644 (file)
@@ -32,7 +32,7 @@ class ListVariants extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = 'Outputs a list of language variants';
+               $this->addDescription( 'Outputs a list of language variants' );
                $this->addOption( 'flat', 'Output variants in a flat list' );
                $this->addOption( 'json', 'Output variants as JSON' );
        }
index 9d3637f..afa71f2 100644 (file)
@@ -1,2 +1,2 @@
-../../../includes/ZhConversion.php: Makefile.py $(wildcard *.manual)
+../../../languages/data/ZhConversion.php: Makefile.py $(wildcard *.manual)
        ./Makefile.py
index 5924c66..999f25c 100755 (executable)
@@ -414,22 +414,25 @@ def main():
  * @file
  */
 
-$zh2Hant = array(\n'''
+namespace MediaWiki\Languages\Data;
+
+class ZhConversion {
+public static $zh2Hant = array(\n'''
     php += PHPArray(toHant) \
-        + '\n);\n\n$zh2Hans = array(\n' \
+        + '\n);\n\npublic static $zh2Hans = array(\n' \
         + PHPArray(toHans) \
-        + '\n);\n\n$zh2TW = array(\n' \
+        + '\n);\n\npublic static $zh2TW = array(\n' \
         + PHPArray(toTW) \
-        + '\n);\n\n$zh2HK = array(\n' \
+        + '\n);\n\npublic static $zh2HK = array(\n' \
         + PHPArray(toHK) \
-        + '\n);\n\n$zh2CN = array(\n' \
+        + '\n);\n\npublic static $zh2CN = array(\n' \
         + PHPArray(toCN) \
-        + '\n);\n'
+        + '\n);\n}\n'
 
     if pyversion[:1] in ['2']:
-        f = open(os.path.join('..', '..', '..', 'includes', 'ZhConversion.php'), 'wb', encoding='utf8')
+        f = open(os.path.join('..', '..', '..', 'languages', 'data', 'ZhConversion.php'), 'wb', encoding='utf8')
     else:
-        f = open(os.path.join('..', '..', '..', 'includes', 'ZhConversion.php'), 'w', buffering=4096, encoding='utf8')
+        f = open(os.path.join('..', '..', '..', 'languages', 'data', 'ZhConversion.php'), 'w', buffering=4096, encoding='utf8')
     print ('Writing ZhConversion.php ... ')
     f.write(php)
     f.close()
index c6569a0..ca2f7c5 100644 (file)
@@ -30,7 +30,7 @@ require_once __DIR__ . '/Maintenance.php';
 class MakeTestEdits extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Make test edits for a user";
+               $this->addDescription( 'Make test edits for a user' );
                $this->addOption( 'user', 'User name', true, true );
                $this->addOption( 'count', 'Number of edits', true, true );
                $this->addOption( 'namespace', 'Namespace number', false, true );
index a97d2e1..619ada6 100644 (file)
@@ -33,8 +33,8 @@ require_once __DIR__ . '/Maintenance.php';
 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->addDescription( "Makes several 'set', 'incr' and 'get' requests on every"
+                       . " memcached server and shows a report" );
                $this->addOption( 'i', 'Number of iterations', false, true );
                $this->addOption( 'cache', 'Use servers from this $wgObjectCaches store', false, true );
                $this->addArg( 'server[:port]', 'Memcached server to test, with optional port', false );
index b491497..20b333e 100644 (file)
@@ -51,8 +51,9 @@ class MergeMessageFileList extends Maintenance {
                );
                $this->addOption( 'extensions-dir', 'Path where extensions can be found.', false, true );
                $this->addOption( 'output', 'Send output to this file (omit for stdout)', false, true );
-               $this->mDescription = 'Merge $wgExtensionMessagesFiles and $wgMessagesDirs from ' .
-                       ' various extensions to produce a single file listing all message files and dirs.';
+               $this->addDescription( 'Merge $wgExtensionMessagesFiles and $wgMessagesDirs from ' .
+                       ' various extensions to produce a single file listing all message files and dirs.'
+               );
        }
 
        public function execute() {
index 68b97e3..77d88f5 100644 (file)
@@ -33,7 +33,7 @@ require_once __DIR__ . '/Maintenance.php';
 class MigrateFileRepoLayout extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Copy files in repo to a different layout.";
+               $this->addDescription( 'Copy files in repo to a different layout.' );
                $this->addOption( 'oldlayout', "Old layout; one of 'name' or 'sha1'", true, true );
                $this->addOption( 'newlayout', "New layout; one of 'name' or 'sha1'", true, true );
                $this->addOption( 'since', "Copy only files from after this timestamp", false, true );
index dc20eee..df6665a 100644 (file)
@@ -31,7 +31,7 @@ require_once __DIR__ . '/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->addDescription( '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 );
index c357eeb..16e4d1c 100644 (file)
@@ -40,9 +40,10 @@ class MinifyScript extends Maintenance {
                        "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" .
+               $this->addDescription( "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.";
+                       "added, e.g. jquery.js -> jquery.min.js."
+               );
        }
 
        public function execute() {
index 43d4d25..8645ab1 100644 (file)
@@ -45,7 +45,7 @@ require_once __DIR__ . '/Maintenance.php';
 class MoveBatch extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Moves a batch of pages";
+               $this->addDescription( '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" );
index 00a15e5..35fca8e 100644 (file)
@@ -46,7 +46,7 @@ class MWDocGen extends Maintenance {
         */
        public function __construct() {
                parent::__construct();
-               $this->mDescription = 'Build doxygen documentation';
+               $this->addDescription( 'Build doxygen documentation' );
 
                $this->addOption( 'doxygen',
                        'Path to doxygen',
index 6e5cd38..b59f4a9 100644 (file)
@@ -47,7 +47,7 @@ class NamespaceConflictChecker extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "";
+               $this->addDescription( 'Find and fix pages affected by namespace addition/removal' );
                $this->addOption( 'fix', 'Attempt to automatically fix errors' );
                $this->addOption( 'merge', "Instead of renaming conflicts, do a history merge with " .
                        "the correct title" );
index 0f2dbf6..8b45e57 100644 (file)
@@ -44,7 +44,7 @@ require_once __DIR__ . '/Maintenance.php';
 class NukeNS extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Remove pages with only 1 revision from any namespace";
+               $this->addDescription( '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 );
                $this->addOption( 'all', 'Delete everything regardless of revision count' );
index dc45520..44235d5 100644 (file)
@@ -33,7 +33,7 @@ require_once __DIR__ . '/Maintenance.php';
 class NukePage extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Remove a page record from the database";
+               $this->addDescription( 'Remove a page record from the database' );
                $this->addOption( 'delete', "Actually delete the page" );
                $this->addArg( 'title', 'Title to delete' );
        }
index 67e5ded..ba1e879 100644 (file)
@@ -32,7 +32,7 @@ require_once __DIR__ . '/../Maintenance.php';
 class AlterSharedConstraints extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Alter foreign key to reference master tables in shared database setup.";
+               $this->addDescription( 'Alter foreign key to reference master tables in shared database setup.' );
        }
 
        public function getDbType() {
index 3c5566f..24ead60 100644 (file)
@@ -39,10 +39,11 @@ require_once __DIR__ . '/Maintenance.php';
 class Orphans extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Look for 'orphan' revisions hooked to pages which don't exist\n" .
+               $this->addDescription( "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";
+                       "Man this is depressing"
+               );
                $this->addOption( 'fix', 'Actually fix broken entries' );
        }
 
index f414383..b631005 100644 (file)
@@ -27,7 +27,7 @@ require_once __DIR__ . '/Maintenance.php';
 class PageExists extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Report whether a specific page exists";
+               $this->addDescription( 'Report whether a specific page exists' );
                $this->addArg( 'title', 'Page title to check whether it exists' );
        }
 
index d655965..effed56 100644 (file)
@@ -61,7 +61,7 @@ class CLIParser extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Parse a given wikitext";
+               $this->addDescription( 'Parse a given wikitext' );
                $this->addOption(
                        'title',
                        'Title name for the given wikitext (Default: \'CLIParser\')',
index 1f77bdb..f94046a 100644 (file)
@@ -32,7 +32,7 @@ require_once __DIR__ . '/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->addDescription( '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'
index 054f792..901cdaa 100644 (file)
@@ -31,7 +31,7 @@ require_once __DIR__ . '/Maintenance.php';
 class PopulateBacklinkNamespace extends LoggedUpdateMaintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Populate the *_from_namespace fields";
+               $this->addDescription( 'Populate the *_from_namespace fields' );
                $this->addOption( 'lastUpdatedId', "Highest page_id with updated links", false, true );
        }
 
index 481e073..5a8ef90 100644 (file)
@@ -35,7 +35,8 @@ class PopulateCategory extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = <<<TEXT
+               $this->addDescription(
+                       <<<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
@@ -49,8 +50,9 @@ 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.
-TEXT;
-# '
+TEXT
+               );
+
                $this->addOption(
                        'begin',
                        'Only do categories whose names are alphabetically after the provided name',
index 4f9c7ae..c158cb4 100644 (file)
@@ -30,7 +30,7 @@ require_once __DIR__ . '/Maintenance.php';
 class PopulateContentModel extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = 'Populate the various content_* fields';
+               $this->addDescription( 'Populate the various content_* fields' );
                $this->addOption( 'ns', 'Namespace to run in, or "all" for all namespaces', true, true );
                $this->addOption( 'table', 'Table to run in', true, true );
                $this->setBatchSize( 100 );
index 5a67262..24c25b1 100644 (file)
@@ -32,7 +32,7 @@ require_once __DIR__ . '/Maintenance.php';
 class PopulateFilearchiveSha1 extends LoggedUpdateMaintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Populate the fa_sha1 field from fa_storage_key";
+               $this->addDescription( 'Populate the fa_sha1 field from fa_storage_key' );
        }
 
        protected function getUpdateKey() {
index cc52239..51cc72a 100644 (file)
@@ -31,7 +31,7 @@ require_once __DIR__ . '/Maintenance.php';
 class PopulateImageSha1 extends LoggedUpdateMaintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Populate the img_sha1 field";
+               $this->addDescription( 'Populate the img_sha1 field' );
                $this->addOption( 'force', "Recalculate sha1 for rows that already have a value" );
                $this->addOption( 'multiversiononly', "Calculate only for files with several versions" );
                $this->addOption( 'method', "Use 'pipe' to pipe to mysql command line,\n" .
index 4c1a72e..41c3bc9 100644 (file)
@@ -40,7 +40,7 @@ class PopulateLogSearch extends LoggedUpdateMaintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Migrate log params to new table and index for searching";
+               $this->addDescription( 'Migrate log params to new table and index for searching' );
                $this->setBatchSize( 100 );
        }
 
index 60329c0..ec3c472 100644 (file)
@@ -35,7 +35,7 @@ require_once __DIR__ . '/Maintenance.php';
 class PopulateLogUsertext extends LoggedUpdateMaintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Populates the log_user_text field";
+               $this->addDescription( 'Populates the log_user_text field' );
                $this->setBatchSize( 100 );
        }
 
index 9baf28e..beb8cc8 100644 (file)
@@ -34,7 +34,7 @@ require_once __DIR__ . '/Maintenance.php';
 class PopulateParentId extends LoggedUpdateMaintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Populates rev_parent_id";
+               $this->addDescription( 'Populates rev_parent_id' );
        }
 
        protected function getUpdateKey() {
index 25a51d7..452d213 100644 (file)
@@ -32,8 +32,8 @@ require_once __DIR__ . '/Maintenance.php';
 class PopulateRecentChangesSource extends LoggedUpdateMaintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription =
-                       "Populates rc_source field of the recentchanges table with the data in rc_type.";
+               $this->addDescription(
+                       'Populates rc_source field of the recentchanges table with the data in rc_type.' );
                $this->setBatchSize( 100 );
        }
 
index a9fb394..297bed2 100644 (file)
@@ -33,7 +33,7 @@ require_once __DIR__ . '/Maintenance.php';
 class PopulateRevisionLength extends LoggedUpdateMaintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Populates the rev_len and ar_len fields";
+               $this->addDescription( 'Populates the rev_len and ar_len fields' );
                $this->setBatchSize( 200 );
        }
 
index 43504b1..3aff77e 100644 (file)
@@ -33,7 +33,7 @@ require_once __DIR__ . '/Maintenance.php';
 class PopulateRevisionSha1 extends LoggedUpdateMaintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Populates the rev_sha1 and ar_sha1 fields";
+               $this->addDescription( 'Populates the rev_sha1 and ar_sha1 fields' );
                $this->setBatchSize( 200 );
        }
 
diff --git a/maintenance/postgres/archives/patch-bot_passwords.sql b/maintenance/postgres/archives/patch-bot_passwords.sql
deleted file mode 100644 (file)
index 8e8a794..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-CREATE TABLE bot_passwords (
-  bp_user INTEGER NOT NULL,
-  bp_app_id TEXT NOT NULL,
-  bp_password TEXT NOT NULL,
-  bp_token TEXT NOT NULL,
-  bp_restrictions TEXT NOT NULL,
-  bp_grants TEXT NOT NULL,
-  PRIMARY KEY ( bp_user, bp_app_id )
-);
index c9f049b..ad7bd9d 100644 (file)
@@ -74,15 +74,6 @@ CREATE TABLE user_newtalk (
 CREATE INDEX user_newtalk_id_idx ON user_newtalk (user_id);
 CREATE INDEX user_newtalk_ip_idx ON user_newtalk (user_ip);
 
-CREATE TABLE bot_passwords (
-  bp_user INTEGER NOT NULL,
-  bp_app_id TEXT NOT NULL,
-  bp_password TEXT NOT NULL,
-  bp_token TEXT NOT NULL,
-  bp_restrictions TEXT NOT NULL,
-  bp_grants TEXT NOT NULL,
-  PRIMARY KEY ( bp_user, bp_app_id )
-);
 
 CREATE SEQUENCE page_page_id_seq;
 CREATE TABLE page (
index 449a7ad..4a3148a 100644 (file)
@@ -31,7 +31,7 @@ require_once __DIR__ . '/Maintenance.php';
 class Protect extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Protect or unprotect a page from the command line.";
+               $this->addDescription( 'Protect or unprotect a page from the command line.' );
                $this->addOption( 'unprotect', 'Removes protection' );
                $this->addOption( 'semiprotect', 'Adds semi-protection' );
                $this->addOption( 'cascade', 'Add cascading protection' );
index 455e9c0..8e6978d 100644 (file)
@@ -34,7 +34,7 @@ class PruneFileCache extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Build file cache for content pages";
+               $this->addDescription( 'Build file cache for content pages' );
                $this->addOption( 'agedays', 'How many days old files must be in order to delete', true, true );
                $this->addOption( 'subdir', 'Prune one $wgFileCacheDirectory subdirectory name', false, true );
        }
index b98e95f..4f10b6e 100644 (file)
@@ -61,7 +61,7 @@ class PurgeChangedFiles extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Scan the logging table and purge files and thumbnails.";
+               $this->addDescription( 'Scan the logging table and purge files and thumbnails.' );
                $this->addOption( 'starttime', 'Starting timestamp', true, true );
                $this->addOption( 'endtime', 'Ending timestamp', true, true );
                $this->addOption( 'type', 'Comma-separated list of types of changes to send purges for (' .
index 31500c9..cb4f85d 100644 (file)
@@ -36,7 +36,7 @@ class PurgeChangedPages extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = 'Send purge requests for edits in date range to squid/varnish';
+               $this->addDescription( 'Send purge requests for edits in date range to squid/varnish' );
                $this->addOption( 'starttime', 'Starting timestamp', true, true );
                $this->addOption( 'endtime', 'Ending timestamp', true, true );
                $this->addOption( 'htcp-dest', 'HTCP announcement destination (IP:port)', false, true );
index 9963cbf..a733d67 100644 (file)
@@ -31,7 +31,7 @@ require_once __DIR__ . '/Maintenance.php';
 class PurgeList extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Send purge requests for listed pages to squid";
+               $this->addDescription( 'Send purge requests for listed pages to squid' );
                $this->addOption( 'purge', 'Whether to update page_touched.', false, false );
                $this->addOption( 'namespace', 'Namespace number', false, true );
                $this->addOption( 'all', 'Purge all pages', false, false );
index 3d81e2d..1b78c7d 100644 (file)
@@ -32,7 +32,7 @@ require_once __DIR__ . '/Maintenance.php';
 class PurgeOldText extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Purge old text records from the database";
+               $this->addDescription( 'Purge old text records from the database' );
                $this->addOption( 'purge', 'Performs the deletion' );
        }
 
index e68937a..4d3baaf 100644 (file)
@@ -34,7 +34,7 @@ require_once __DIR__ . '/Maintenance.php';
 class ReassignEdits extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Reassign edits from one user to another";
+               $this->addDescription( '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" );
index e07bf03..21cd3a1 100644 (file)
@@ -31,7 +31,7 @@ require_once __DIR__ . '/Maintenance.php';
 class RebuildFileCache extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Build file cache for content pages";
+               $this->addDescription( 'Build file cache for content pages' );
                $this->addOption( 'start', 'Page_id to start from', false, true );
                $this->addOption( 'end', 'Page_id to end on', false, true );
                $this->addOption( 'overwrite', 'Refresh page cache' );
index 1b0a27d..521ab54 100644 (file)
@@ -51,7 +51,7 @@ class ImageBuilder extends Maintenance {
                // make sure to update old, but compatible img_metadata fields.
                $wgUpdateCompatibleMetadata = true;
 
-               $this->mDescription = 'Script to update image metadata records';
+               $this->addDescription( 'Script to update image metadata records' );
 
                $this->addOption( 'missing', 'Check for files without associated database record' );
                $this->addOption( 'dry-run', 'Only report, don\'t update the database' );
index f89877e..36caa3a 100644 (file)
@@ -39,7 +39,7 @@ require_once __DIR__ . '/Maintenance.php';
 class RebuildLocalisationCache extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Rebuild the localisation cache";
+               $this->addDescription( '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 );
                $this->addOption( 'outdir', 'Override the output directory (normally $wgCacheDirectory)',
index 2bc7510..044bafd 100644 (file)
@@ -32,7 +32,7 @@ class RebuildSitesCache extends Maintenance {
        public function __construct() {
                parent::__construct();
 
-               $this->mDescription = "Cache sites as json for file-based lookup.";
+               $this->addDescription( 'Cache sites as json for file-based lookup.' );
                $this->addOption( 'file', 'File to output the json to', false, true );
        }
 
index 4ff873e..d2ee6fc 100644 (file)
@@ -32,7 +32,7 @@ require_once __DIR__ . '/Maintenance.php';
 class RebuildAll extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Rebuild links, text index and recent changes";
+               $this->addDescription( 'Rebuild links, text index and recent changes' );
        }
 
        public function getDbType() {
index f223f1a..3b40556 100644 (file)
@@ -31,7 +31,7 @@ require_once __DIR__ . '/Maintenance.php';
 class RebuildMessages extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Purge all language messages from the cache";
+               $this->addDescription( 'Purge all language messages from the cache' );
        }
 
        public function execute() {
index b6421f3..d61906c 100644 (file)
@@ -33,7 +33,7 @@ require_once __DIR__ . '/Maintenance.php';
 class RebuildRecentchanges extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Rebuild recent changes";
+               $this->addDescription( 'Rebuild recent changes' );
        }
 
        public function execute() {
@@ -41,6 +41,7 @@ class RebuildRecentchanges extends Maintenance {
                $this->rebuildRecentChangesTablePass2();
                $this->rebuildRecentChangesTablePass3();
                $this->rebuildRecentChangesTablePass4();
+               $this->rebuildRecentChangesTablePass5();
                $this->purgeFeeds();
                $this->output( "Done.\n" );
        }
@@ -281,6 +282,46 @@ class RebuildRecentchanges extends Maintenance {
                }
        }
 
+       /**
+        * Rebuild pass 5: Delete duplicate entries where we generate both a page revision and a log entry
+        * for a single action (upload only, at the moment, but potentially also move, protect, ...).
+        */
+       private function rebuildRecentChangesTablePass5() {
+               $dbw = wfGetDB( DB_MASTER );
+
+               $this->output( "Removing duplicate revision and logging entries...\n" );
+
+               $res = $dbw->select(
+                       array( 'logging', 'log_search' ),
+                       array( 'ls_value', 'ls_log_id' ),
+                       array(
+                               'ls_log_id = log_id',
+                               'ls_field' => 'associated_rev_id',
+                               'log_type' => 'upload',
+                       ),
+                       __METHOD__
+               );
+               foreach ( $res as $obj ) {
+                       $rev_id = $obj->ls_value;
+                       $log_id = $obj->ls_log_id;
+
+                       // Mark the logging row as having an associated rev id
+                       $dbw->update(
+                               'recentchanges',
+                               /*SET*/ array( 'rc_this_oldid' => $rev_id ),
+                               /*WHERE*/ array( 'rc_logid' => $log_id ),
+                               __METHOD__
+                       );
+
+                       // Delete the revision row
+                       $dbw->delete(
+                               'recentchanges',
+                               /*WHERE*/ array( 'rc_this_oldid' => $rev_id, 'rc_logid' => 0 ),
+                               __METHOD__
+                       );
+               }
+       }
+
        /**
         * Purge cached feeds in $messageMemc
         */
index e8d59bc..dff734b 100644 (file)
@@ -42,7 +42,7 @@ class RebuildTextIndex extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Rebuild search index table from scratch";
+               $this->addDescription( 'Rebuild search index table from scratch' );
        }
 
        public function getDbType() {
index 6bc72ec..3f1b167 100644 (file)
@@ -34,7 +34,7 @@ require_once __DIR__ . '/Maintenance.php';
 class RefreshFileHeaders extends Maintenance {
        function __construct() {
                parent::__construct();
-               $this->mDescription = 'Script to update file HTTP headers';
+               $this->addDescription( 'Script to update file HTTP headers' );
                $this->addOption( 'verbose', 'Output information about each file.', false, false, 'v' );
                $this->addOption( 'start', 'Name of file to start with', false, true );
                $this->addOption( 'end', 'Name of file to end with', false, true );
index 4f2341c..01fb15e 100644 (file)
@@ -44,7 +44,7 @@ class RefreshImageMetadata extends Maintenance {
        function __construct() {
                parent::__construct();
 
-               $this->mDescription = 'Script to update image metadata records';
+               $this->addDescription( 'Script to update image metadata records' );
                $this->setBatchSize( 200 );
 
                $this->addOption(
index a0cd6a9..651255b 100644 (file)
@@ -31,7 +31,7 @@ require_once __DIR__ . '/Maintenance.php';
 class RefreshLinks extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Refresh link tables";
+               $this->addDescription( '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' );
@@ -73,8 +73,6 @@ class RefreshLinks extends Maintenance {
        private function doRefreshLinks( $start, $newOnly = false,
                $end = null, $redirectsOnly = false, $oldRedirectsOnly = false
        ) {
-               global $wgParser;
-
                $reportingInterval = 100;
                $dbr = $this->getDB( DB_SLAVE );
 
@@ -85,9 +83,6 @@ class RefreshLinks extends Maintenance {
                // Give extensions a chance to optimize settings
                Hooks::run( 'MaintenanceRefreshLinksInit', array( $this ) );
 
-               # Don't generate extension images (e.g. Timeline)
-               $wgParser->clearTagHooks();
-
                $what = $redirectsOnly ? "redirects" : "links";
 
                if ( $oldRedirectsOnly ) {
index 2218a5e..09b1b1c 100644 (file)
@@ -43,7 +43,8 @@ class DumpRenderer extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Take page text out of an XML dump file and render basic HTML out to files";
+               $this->addDescription(
+                       '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 );
                $this->addOption( 'prefix', 'Prefix for the rendered files (defaults to wiki)', false, true );
                $this->addOption( 'parser', 'Use an alternative parser class', false, true );
diff --git a/maintenance/resetUserEmail.php b/maintenance/resetUserEmail.php
new file mode 100644 (file)
index 0000000..816e8a4
--- /dev/null
@@ -0,0 +1,66 @@
+<?php
+/**
+ * Reset user email.
+ *
+ * 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 __DIR__ . '/Maintenance.php';
+
+/**
+ * Maintenance script that resets user email.
+ *
+ * @since 1.27
+ * @ingroup Maintenance
+ */
+class ResetUserEmail extends Maintenance {
+       public function __construct() {
+               $this->addDescription( "Resets a user's email" );
+               $this->addArg( 'user', 'Username or user ID, if starts with #', true );
+               $this->addArg( 'email', 'Email to assign' );
+               parent::__construct();
+       }
+
+       public function execute() {
+               $userName = $this->getArg( 0 );
+               if ( preg_match( '/^#\d+$/', $userName ) ) {
+                       $user = User::newFromId( substr( $userName, 1 ) );
+               } else {
+                       $user = User::newFromName( $userName );
+               }
+               if ( !$user || !$user->getId() || !$user->loadFromId() ) {
+                       $this->error( "Error: user '$userName' does not exist\n", 1 );
+               }
+
+               $email = $this->getArg( 1 );
+               if ( !Sanitizer::validateEmail( $email ) ) {
+                       $this->error( "Error: email '$email' is not valid\n", 1 );
+               }
+
+               // Code from https://wikitech.wikimedia.org/wiki/Password_reset
+               $user->setEmail( $email );
+               $user->setEmailAuthenticationTimestamp( wfTimestampNow() );
+               $user->saveSettings();
+               // Kick whomever is currently controlling the account off
+               $user->setPassword( PasswordFactory::generateRandomPasswordString( 128 ) );
+       }
+}
+
+$maintClass = 'ResetUserEmail';
+require_once RUN_MAINTENANCE_IF_MAIN;
index 9c7aef2..7acf975 100644 (file)
@@ -34,8 +34,9 @@ require_once __DIR__ . '/Maintenance.php';
 class ResetUserTokens extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription =
-                       "Reset the user_token of all users on the wiki. Note that this may log some of them out.";
+               $this->addDescription(
+                       'Reset the user_token of all users on the wiki. Note that this may log some of them out.'
+               );
                $this->addOption( 'nowarn', "Hides the 5 seconds warning", false, false );
                $this->addOption(
                        'nulls',
index 7134453..a2ddb93 100644 (file)
@@ -33,8 +33,8 @@ require_once __DIR__ . '/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->addDescription(
+                       "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',
index 3fd9e02..2feae02 100644 (file)
@@ -33,9 +33,9 @@ require_once __DIR__ . '/Maintenance.php';
 class BatchedQueryRunner extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription =
+               $this->addDescription(
                        "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.";
+                               "NOTE: You need to set a LIMIT clause yourself." );
        }
 
        public function execute() {
index 3c5d28b..86cade2 100644 (file)
@@ -33,7 +33,7 @@ use MediaWiki\Logger\LoggerFactory;
 class RunJobs extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Run pending jobs";
+               $this->addDescription( 'Run pending jobs' );
                $this->addOption( 'maxjobs', 'Maximum number of jobs to run', false, true );
                $this->addOption( 'maxtime', 'Maximum amount of wall-clock time', false, true );
                $this->addOption( 'type', 'Type of job to run', false, true );
index 25a096c..992c238 100644 (file)
@@ -43,7 +43,7 @@ class ShowJobs extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Show number of jobs waiting in master database";
+               $this->addDescription( 'Show number of jobs waiting in master database' );
                $this->addOption( 'group', 'Show number of jobs per job type' );
                $this->addOption( 'list', 'Show a list of all jobs instead of counts' );
                $this->addOption( 'type', 'Only show/count jobs of a given type', false, true );
index 56cc573..098aba5 100644 (file)
@@ -39,7 +39,7 @@ require_once __DIR__ . '/Maintenance.php';
 class ShowSiteStats extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Show the cached statistics";
+               $this->addDescription( 'Show the cached statistics' );
        }
 
        public function execute() {
index a93e51f..f089972 100644 (file)
@@ -32,8 +32,8 @@ require_once __DIR__ . '/Maintenance.php';
 class MwSql extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Send SQL queries to a MediaWiki database. " .
-                               "Takes a file name containing SQL as argument or runs interactively.";
+               $this->addDescription( 'Send SQL queries to a MediaWiki database. ' .
+                       'Takes a file name containing SQL as argument or runs interactively.' );
                $this->addOption( 'query', 'Run a single query instead of running interactively', false, true );
                $this->addOption( 'cluster', 'Use an external cluster by name', false, true );
                $this->addOption( 'wikidb', 'The database wiki ID to use if not the current one', false, true );
index 96a8a38..5cc35ed 100644 (file)
@@ -31,7 +31,7 @@ require_once __DIR__ . '/Maintenance.php';
 class SqliteMaintenance extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Performs some operations specific to SQLite database backend";
+               $this->addDescription( 'Performs some operations specific to SQLite database backend' );
                $this->addOption(
                        'vacuum',
                        'Clean up database by removing deleted pages. Decreases database file size'
index b27b111..dd3ba04 100644 (file)
@@ -63,7 +63,7 @@ class CompressOld extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = 'Compress the text of a wiki';
+               $this->addDescription( 'Compress the text of a wiki' );
                $this->addOption( 'type', 'Set compression type to either: gzip|concat', false, true, 't' );
                $this->addOption(
                        'chunksize',
index e926f56..d353b88 100644 (file)
@@ -36,7 +36,7 @@ class FixBug20757 extends Maintenance {
 
        function __construct() {
                parent::__construct();
-               $this->mDescription = 'Script to fix bug 20757 assuming that blob_tracking is intact';
+               $this->addDescription( '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 );
        }
index b1bf95b..21f50f5 100644 (file)
@@ -32,8 +32,8 @@ require_once __DIR__ . '/../Maintenance.php';
 class OrphanStats extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription =
-                       "Show some statistics on the blob_orphans table, created with trackBlobs.php";
+               $this->addDescription(
+                       "Show some statistics on the blob_orphans table, created with trackBlobs.php" );
        }
 
        protected function &getDB( $cluster, $groups = array(), $wiki = false ) {
index 63d5e9f..c0663a7 100644 (file)
@@ -32,7 +32,7 @@ require_once __DIR__ . '/Maintenance.php';
 class SyncFileBackend extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Sync one file backend with another using the journal";
+               $this->addDescription( 'Sync one file backend with another using the journal' );
                $this->addOption( 'src', 'Name of backend to sync from', true, true );
                $this->addOption( 'dst', 'Name of destination backend to sync', false, true );
                $this->addOption( 'start', 'Starting journal ID', false, true );
index 743b9be..756f6c0 100644 (file)
@@ -220,32 +220,6 @@ CREATE TABLE /*_*/user_properties (
 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);
 
---
--- This table contains a user's bot passwords: passwords that allow access to
--- the account via the API with limited rights.
---
-CREATE TABLE /*_*/bot_passwords (
-  -- User ID obtained from CentralIdLookup.
-  bp_user int NOT NULL,
-
-  -- Application identifier
-  bp_app_id varbinary(32) NOT NULL,
-
-  -- Password hashes, like user.user_password
-  bp_password tinyblob NOT NULL,
-
-  -- Like user.user_token
-  bp_token binary(32) NOT NULL default '',
-
-  -- JSON blob for MWRestrictions
-  bp_restrictions blob NOT NULL,
-
-  -- Grants allowed to the account when authenticated with this bot-password
-  bp_grants blob NOT NULL,
-
-  PRIMARY KEY ( bp_user, bp_app_id )
-) /*$wgDBTableOptions*/;
-
 --
 -- Core of the wiki: each page has an entry here which identifies
 -- it by title and contains some essential metadata.
index 71b4de1..861f5ed 100644 (file)
@@ -26,7 +26,7 @@ require_once __DIR__ . '/Maintenance.php';
 class Undelete extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Undelete a page";
+               $this->addDescription( 'Undelete a page' );
                $this->addOption( 'user', 'The user to perform the undeletion', false, true, 'u' );
                $this->addOption( 'reason', 'The reason to undelete', false, true, 'r' );
                $this->addArg( 'pagename', 'Page to undelete' );
index eeaf9c8..06e947c 100755 (executable)
@@ -36,7 +36,7 @@ require_once __DIR__ . '/Maintenance.php';
 class UpdateMediaWiki extends Maintenance {
        function __construct() {
                parent::__construct();
-               $this->mDescription = "MediaWiki database updater";
+               $this->addDescription( 'MediaWiki database updater' );
                $this->addOption( 'skip-compat-checks', 'Skips compatibility checks, mostly for developers' );
                $this->addOption( 'quick', 'Skip 5 second countdown before starting' );
                $this->addOption( 'doshared', 'Also update shared tables' );
index 9537a79..baba6c8 100644 (file)
@@ -35,7 +35,7 @@ class UpdateArticleCount extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Count of the number of articles and update the site statistics table";
+               $this->addDescription( 'Count of the number of articles and update the site statistics table' );
                $this->addOption( 'update', 'Update the site_stats table with the new count' );
                $this->addOption( 'use-master', 'Count using the master database' );
        }
index bb75314..37c9948 100644 (file)
@@ -42,12 +42,13 @@ class UpdateCollation extends Maintenance {
                parent::__construct();
 
                global $wgCategoryCollation;
-               $this->mDescription = <<<TEXT
+               $this->addDescription( <<<TEXT
 This script will find all rows in the categorylinks table whose collation is
 out-of-date (cl_collation != '$wgCategoryCollation') and repopulate cl_sortkey
 using the page title and cl_sortkey_prefix.  If all collations are
 up-to-date, it will do nothing.
-TEXT;
+TEXT
+               );
 
                $this->addOption( 'force', 'Run on all rows, even if the collation is ' .
                        'supposed to be up-to-date.' );
@@ -86,7 +87,7 @@ TEXT;
 
                $options = array(
                        'LIMIT' => self::BATCH_SIZE,
-                       'ORDER BY' => 'cl_to, cl_type, cl_from',
+                       'ORDER BY' => 'cl_from, cl_to',
                        'STRAIGHT_JOIN',
                );
 
@@ -132,7 +133,7 @@ TEXT;
                        $res = $dbw->select(
                                array( 'categorylinks', 'page' ),
                                array( 'cl_from', 'cl_to', 'cl_sortkey_prefix', 'cl_collation',
-                                       'cl_sortkey', 'cl_type', 'page_namespace', 'page_title'
+                                       'cl_sortkey', 'page_namespace', 'page_title'
                                ),
                                array_merge( $collationConds, $batchConds, array( 'cl_from = page_id' ) ),
                                __METHOD__,
@@ -216,13 +217,13 @@ TEXT;
 
        /**
         * Return an SQL expression selecting rows which sort above the given row,
-        * assuming an ordering of cl_to, cl_type, cl_from
+        * assuming an ordering of cl_from, cl_to
         * @param stdClass $row
         * @param DatabaseBase $dbw
         * @return string
         */
        function getBatchCondition( $row, $dbw ) {
-               $fields = array( 'cl_to', 'cl_type', 'cl_from' );
+               $fields = array( 'cl_from', 'cl_to' );
                $first = true;
                $cond = false;
                $prefix = false;
index 5c21b40..f5bb881 100644 (file)
@@ -34,7 +34,7 @@ class UpdateDoubleWidthSearch extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Script to normalize double-byte latin UTF-8 characters";
+               $this->addDescription( 'Script to normalize double-byte latin UTF-8 characters' );
                $this->addOption( 'q', 'quiet', false, true );
                $this->addOption(
                        'l',
index ebfffe4..98d9389 100644 (file)
@@ -35,7 +35,7 @@ require_once __DIR__ . '/Maintenance.php';
 class UpdateRestrictions extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Updates page_restrictions table from old page_restriction column";
+               $this->addDescription( 'Updates page_restrictions table from old page_restriction column' );
                $this->setBatchSize( 100 );
        }
 
index 18edecc..b2f2577 100644 (file)
@@ -39,7 +39,7 @@ class UpdateSearchIndex extends Maintenance {
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Script for periodic off-peak updating of the search index";
+               $this->setDescription( '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(
index e0c10f8..2534ca6 100644 (file)
@@ -32,7 +32,7 @@ require_once __DIR__ . '/Maintenance.php';
 class WrapOldPasswords extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Wrap all passwords of a certain type in a new layered type";
+               $this->addDescription( 'Wrap all passwords of a certain type in a new layered type' );
                $this->addOption( 'type',
                        'Password type to wrap passwords in (must inherit LayeredParameterizedPassword)', true, true );
                $this->addOption( 'verbose', 'Enables verbose output', false, false, 'v' );
index cd9810c..458d5f1 100644 (file)
@@ -338,7 +338,7 @@ return array(
        ),
        'jquery.tablesorter' => array(
                'scripts' => 'resources/src/jquery/jquery.tablesorter.js',
-               'styles' => 'resources/src/jquery/jquery.tablesorter.css',
+               'styles' => 'resources/src/jquery/jquery.tablesorter.less',
                'messages' => array( 'sort-descending', 'sort-ascending' ),
                'dependencies' => array(
                        'dom-level2-shim',
@@ -1152,6 +1152,10 @@ return array(
                        'mediawiki.Upload',
                        'oojs',
                ),
+               'messages' => array(
+                       'uploaddisabledtext',
+                       'upload-foreign-cant-upload',
+               )
        ),
        'mediawiki.ForeignStructuredUpload' => array(
                'scripts' => 'resources/src/mediawiki/mediawiki.ForeignStructuredUpload.js',
@@ -1757,6 +1761,9 @@ return array(
        ),
        'mediawiki.special.pageLanguage' => array(
                'scripts' => 'resources/src/mediawiki.special/mediawiki.special.pageLanguage.js',
+               'dependencies' => array(
+                       'oojs-ui',
+               ),
        ),
        'mediawiki.special.pagesWithProp' => array(
                'position' => 'top',
@@ -2160,6 +2167,7 @@ return array(
                'dependencies' => array(
                        'oojs-ui',
                ),
+               'targets' => array( 'desktop', 'mobile' ),
        ),
 
        /* es5-shim */
index 562dc3d..3f8dfb1 100644 (file)
@@ -13,5 +13,7 @@
        "ooui-toolgroup-collapse": "КӀезиг",
        "ooui-dialog-message-accept": "ХӀаъ",
        "ooui-dialog-message-reject": "Цаоьшу",
-       "ooui-dialog-process-continue": "Кхин дӀа"
+       "ooui-dialog-process-continue": "Кхин дӀа",
+       "ooui-selectfile-button-select": "Харжа файл",
+       "ooui-selectfile-placeholder": "Файл хаьржина яц"
 }
index 9b15046..e602062 100644 (file)
@@ -1,7 +1,8 @@
 {
        "@metadata": {
                "authors": [
-                       "V6rg"
+                       "V6rg",
+                       "شیخ"
                ]
        },
        "ooui-outline-control-move-down": "مأسمکه جابجا بۊکۊن جير",
        "ooui-dialog-message-reject": "لغو",
        "ooui-dialog-process-error": "ىک مؤشکلي هنأ",
        "ooui-dialog-process-dismiss": "وأبدي",
-       "ooui-dialog-process-retry": "هنده حقسأى بۊکۊنين",
-       "ooui-dialog-process-continue": "سره",
+       "ooui-dialog-process-retry": "هندئه حقسأى بۊکۊنين",
+       "ooui-dialog-process-continue": "اÙ\8aداÙ\85ه",
        "ooui-selectfile-button-select": "ىکته فاىله دؤجين بۊکۊنين",
-       "ooui-selectfile-not-supported": "نشأنهىکته فاىله دؤجين گۊدن",
+       "ooui-selectfile-not-supported": "نشأنه فاىله دؤجين گۊدن",
        "ooui-selectfile-placeholder": "هيچ فاىلي دؤجين نۊبؤ",
-       "ooui-selectfile-dragdrop-placeholder": "فاىله ائره فدي"
+       "ooui-selectfile-dragdrop-placeholder": "فاىله ائره رها بکۊنين"
 }
index 76e2614..ddfcac2 100644 (file)
@@ -25,5 +25,6 @@
        "ooui-dialog-process-continue": "გაგრძელება",
        "ooui-selectfile-button-select": "აირჩიეთ ფაილი",
        "ooui-selectfile-not-supported": "ფაილის არჩევა არ არის მხარდაჭერილი",
-       "ooui-selectfile-placeholder": "ფაილი არ არის არჩეული"
+       "ooui-selectfile-placeholder": "ფაილი არ არის არჩეული",
+       "ooui-selectfile-dragdrop-placeholder": "ჩააგდეთ ფაილი აქ"
 }
index 7b4d492..3e54e85 100644 (file)
@@ -9,7 +9,8 @@
                        "Talha Samil Cakir",
                        "TurkishStyles",
                        "Sayginer",
-                       "Meelo"
+                       "Meelo",
+                       "McAang"
                ]
        },
        "ooui-outline-control-move-down": "Ögeyi aşağı taşı",
@@ -23,5 +24,6 @@
        "ooui-dialog-process-error": "Bir şeyler yanlış gitti",
        "ooui-dialog-process-dismiss": "Kapat",
        "ooui-dialog-process-retry": "Tekrar dene",
-       "ooui-dialog-process-continue": "Devam et"
+       "ooui-dialog-process-continue": "Devam et",
+       "ooui-selectfile-placeholder": "Herhangi bir dosya seçilmedi"
 }
index 408a1b4..efe50bd 100644 (file)
@@ -1,9 +1,13 @@
 {
        "@metadata": {
                "authors": [
-                       "Ajdar"
+                       "Ajdar",
+                       "Ильнар"
                ]
        },
        "ooui-outline-control-move-down": "Элементны аска күчерү",
-       "ooui-outline-control-move-up": "Элементны өскә күчерү"
+       "ooui-outline-control-move-up": "Элементны өскә күчерү",
+       "ooui-dialog-process-continue": "Дәвам итү",
+       "ooui-selectfile-button-select": "Файлны сайлагыз",
+       "ooui-selectfile-placeholder": "Файл сайланмаган"
 }
index ef5a0da..a616f4d 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.15.0
+ * OOjs UI v0.15.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-01-12T23:06:40Z
+ * Date: 2016-01-26T21:14:25Z
  */
 @-webkit-keyframes oo-ui-progressBarWidget-slide {
        from {
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field {
        width: 60%;
 }
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label {
-       padding: 0.5em;
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline {
+       margin-bottom: 1.25em;
 }
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field {
-       padding: 0.5em 0;
+.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label {
+       padding: 0.25em 0.25em 0.25em 0.5em;
 }
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-top.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label {
        padding: 0.5em 0;
 .oo-ui-optionWidget {
        position: relative;
        display: block;
-       cursor: pointer;
        padding: 0.25em 0.5em;
        border: none;
 }
-.oo-ui-optionWidget.oo-ui-widget-disabled {
-       cursor: default;
+.oo-ui-optionWidget.oo-ui-widget-enabled {
+       cursor: pointer;
 }
 .oo-ui-optionWidget.oo-ui-labelElement .oo-ui-labelElement-label {
        display: block;
        display: inline-block;
        vertical-align: middle;
        overflow: hidden;
-       cursor: pointer;
        -webkit-box-sizing: border-box;
           -moz-box-sizing: border-box;
                box-sizing: border-box;
-       -webkit-transform: translateZ(0px);
-          -moz-transform: translateZ(0px);
-           -ms-transform: translateZ(0px);
-               transform: translateZ(0px);
+       -webkit-transform: translateZ(0);
+          -moz-transform: translateZ(0);
+           -ms-transform: translateZ(0);
+               transform: translateZ(0);
        height: 2em;
        width: 4em;
        border-radius: 1em;
        background-image:      -o-linear-gradient(top, #dddddd 0%, #ffffff 100%);
        background-image:         linear-gradient(to bottom, #dddddd 0%, #ffffff 100%);
 }
-.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled {
-       cursor: default;
+.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled {
+       cursor: pointer;
 }
 .oo-ui-toggleSwitchWidget-grip {
        position: absolute;
 .oo-ui-dropdownWidget-handle {
        width: 100%;
        display: inline-block;
-       cursor: pointer;
        -webkit-touch-callout: none;
        -webkit-user-select: none;
           -moz-user-select: none;
        z-index: 1;
        width: 100%;
 }
-.oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle {
-       cursor: default;
+.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle {
+       cursor: pointer;
 }
 .oo-ui-dropdownWidget:last-child {
        margin-right: 0;
        right: 0;
        text-overflow: ellipsis;
 }
+.oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-label > .oo-ui-selectFileWidget-fileName {
+       float: left;
+}
 .oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-label > .oo-ui-selectFileWidget-fileType {
        float: right;
 }
        white-space: nowrap;
 }
 .oo-ui-numberInputWidget-field > .oo-ui-buttonWidget > .oo-ui-buttonElement-button {
-       box-sizing: border-box;
+       -webkit-box-sizing: border-box;
+          -moz-box-sizing: border-box;
+               box-sizing: border-box;
 }
 .oo-ui-numberInputWidget-field > .oo-ui-buttonWidget {
-       width: 2.5em;
+       width: 2.25em;
 }
 .oo-ui-numberInputWidget-minusButton.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button {
        border-top-right-radius: 0;
        position: absolute;
        left: 0;
        right: 0;
-       overflow: hidden;
        -webkit-box-sizing: border-box;
           -moz-box-sizing: border-box;
                box-sizing: border-box;
 }
 .oo-ui-dialog-content > .oo-ui-window-head {
+       overflow: hidden;
        z-index: 1;
        top: 0;
 }
 .oo-ui-dialog-content > .oo-ui-window-body {
+       overflow: auto;
        z-index: 2;
        top: 0;
        bottom: 0;
 }
 .oo-ui-dialog-content > .oo-ui-window-foot {
+       overflow: hidden;
        z-index: 1;
        bottom: 0;
 }
                transition: opacity 250ms ease;
 }
 .oo-ui-windowManager-modal > .oo-ui-dialog > .oo-ui-window-frame {
-       top: 1em;
-       bottom: 1em;
        background-color: #ffffff;
        opacity: 0;
        -webkit-transform: scale(0.5);
                transform: scale(1);
 }
 .oo-ui-windowManager-modal.oo-ui-windowManager-floating > .oo-ui-dialog > .oo-ui-window-frame {
+       top: 1em;
+       bottom: 1em;
        border: 1px solid #cccccc;
        border-radius: 0.5em;
        box-shadow: 0 0.2em 1em rgba(0, 0, 0, 0.3);
index c287b0d..5f9c93c 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.15.0
+ * OOjs UI v0.15.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-01-12T23:06:31Z
+ * Date: 2016-01-26T21:14:23Z
  */
 /**
  * @class
index f97dcc9..cd5ef36 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.15.0
+ * OOjs UI v0.15.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-01-12T23:06:40Z
+ * Date: 2016-01-26T21:14:25Z
  */
 @-webkit-keyframes oo-ui-progressBarWidget-slide {
        from {
                margin-left: 100%;
        }
 }
-@-o-keyframes oo-ui-progressBarWidget-slide {
-       from {
-               margin-left: -40%;
-       }
-       to {
-               margin-left: 100%;
-       }
-}
 @keyframes oo-ui-progressBarWidget-slide {
        from {
                margin-left: -40%;
 .oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button {
        color: #555555;
        background-color: #ffffff;
-       border: 1px solid #cdcdcd;
+       border: 1px solid #cccccc;
 }
 .oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover {
        background-color: #ebebeb;
 .oo-ui-optionWidget {
        position: relative;
        display: block;
-       cursor: pointer;
        padding: 0.25em 0.5em;
        border: 0;
 }
-.oo-ui-optionWidget.oo-ui-widget-disabled {
-       cursor: default;
+.oo-ui-optionWidget.oo-ui-widget-enabled {
+       cursor: pointer;
 }
 .oo-ui-optionWidget.oo-ui-labelElement .oo-ui-labelElement-label {
        display: block;
        display: inline-block;
        vertical-align: middle;
        line-height: 2.5em;
-       height: 1.875em;
        width: 1.875em;
+       height: 1.875em;
 }
 .oo-ui-iconWidget.oo-ui-widget-disabled {
        opacity: 0.2;
        display: inline-block;
        vertical-align: middle;
        line-height: 2.5em;
-       height: 0.9375em;
        width: 0.9375em;
+       height: 0.9375em;
        margin: 0.46875em;
 }
 .oo-ui-indicatorWidget.oo-ui-widget-disabled {
        display: inline-block;
        vertical-align: middle;
        overflow: hidden;
-       cursor: pointer;
        -webkit-box-sizing: border-box;
           -moz-box-sizing: border-box;
                box-sizing: border-box;
-       -webkit-transform: translateZ(0px);
-          -moz-transform: translateZ(0px);
-           -ms-transform: translateZ(0px);
-               transform: translateZ(0px);
+       -webkit-transform: translateZ(0);
+          -moz-transform: translateZ(0);
+           -ms-transform: translateZ(0);
+               transform: translateZ(0);
        height: 2em;
        width: 3.5em;
        border: 1px solid #777777;
           -moz-transition: background-color 100ms ease, border-color 100ms ease;
                transition: background-color 100ms ease, border-color 100ms ease;
 }
-.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled {
-       cursor: default;
+.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled {
+       cursor: pointer;
 }
 .oo-ui-toggleSwitchWidget-grip {
        position: absolute;
        background-size: 100% 100%;
 }
 .oo-ui-checkboxInputWidget input[type="checkbox"]:active + span {
-       background-color: #dddddd;
-       border-color: #dddddd;
+       background-color: #cccccc;
+       border-color: #cccccc;
 }
 .oo-ui-checkboxInputWidget input[type="checkbox"]:focus + span {
        border-width: 2px;
        cursor: default;
 }
 .oo-ui-checkboxInputWidget input[type="checkbox"]:disabled + span {
-       background-color: #eeeeee;
-       border-color: #eeeeee;
+       background-color: #dddddd;
+       border-color: #dddddd;
 }
 .oo-ui-checkboxInputWidget input[type="checkbox"]:disabled:checked + span {
        background-image: url("themes/mediawiki/images/icons/check-invert.png");
        background-size: 100% 100%;
 }
 .oo-ui-radioInputWidget input[type="radio"]:active + span {
-       background-color: #dddddd;
-       border-color: #dddddd;
+       background-color: #cccccc;
+       border-color: #cccccc;
 }
 .oo-ui-radioInputWidget input[type="radio"]:focus + span {
        border-width: 2px;
        cursor: default;
 }
 .oo-ui-radioInputWidget input[type="radio"]:disabled + span {
-       background-color: #eeeeee;
-       border-color: #eeeeee;
+       background-color: #dddddd;
+       border-color: #dddddd;
 }
 .oo-ui-radioInputWidget input[type="radio"]:disabled:checked + span {
        background-image: url("themes/mediawiki/images/icons/circle-invert.png");
        font-size: inherit;
        font-family: inherit;
        background-color: #ffffff;
-       color: black;
+       color: #000000;
        border: 1px solid #cccccc;
-       box-shadow: inset 0 0 0 0 #347bff;
        border-radius: 2px;
-       -webkit-transition: box-shadow 100ms ease;
-          -moz-transition: box-shadow 100ms ease;
-               transition: box-shadow 100ms ease;
        -webkit-box-sizing: border-box;
           -moz-box-sizing: border-box;
                box-sizing: border-box;
 }
 .oo-ui-textInputWidget.oo-ui-widget-enabled input,
 .oo-ui-textInputWidget.oo-ui-widget-enabled textarea {
+       box-shadow: inset 0 0 0 0.1em #ffffff;
        -webkit-transition: border 200ms cubic-bezier(0.39, 0.575, 0.565, 1), box-shadow 200ms cubic-bezier(0.39, 0.575, 0.565, 1);
           -moz-transition: border 200ms cubic-bezier(0.39, 0.575, 0.565, 1), box-shadow 200ms cubic-bezier(0.39, 0.575, 0.565, 1);
                transition: border 200ms cubic-bezier(0.39, 0.575, 0.565, 1), box-shadow 200ms cubic-bezier(0.39, 0.575, 0.565, 1);
 .oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid input,
 .oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid textarea {
        border-color: #ff0000;
-       box-shadow: inset 0 0 0 0 #ff0000;
 }
 .oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid input:focus,
 .oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid textarea:focus {
 }
 .oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted {
        background-color: #eeeeee;
-       color: black;
+       color: #000000;
 }
 .oo-ui-menuOptionWidget.oo-ui-optionWidget-selected.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted {
        background-color: #d8e6fe;
 .oo-ui-dropdownWidget-handle {
        width: 100%;
        display: inline-block;
-       cursor: pointer;
        -webkit-touch-callout: none;
        -webkit-user-select: none;
           -moz-user-select: none;
        z-index: 1;
        width: 100%;
 }
-.oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle {
-       cursor: default;
+.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle {
+       cursor: pointer;
 }
 .oo-ui-dropdownWidget:last-child {
        margin-right: 0;
        right: 0;
        text-overflow: ellipsis;
 }
+.oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-label > .oo-ui-selectFileWidget-fileName {
+       float: left;
+}
 .oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-label > .oo-ui-selectFileWidget-fileType {
        float: right;
 }
        font-size: inherit;
        font-family: inherit;
        background-color: transparent;
-       color: black;
+       color: #000000;
        vertical-align: middle;
 }
 .oo-ui-capsuleMultiSelectWidget-handle > .oo-ui-capsuleMultiSelectWidget-content > input:focus {
        white-space: nowrap;
 }
 .oo-ui-numberInputWidget-field > .oo-ui-buttonWidget > .oo-ui-buttonElement-button {
-       box-sizing: border-box;
+       -webkit-box-sizing: border-box;
+          -moz-box-sizing: border-box;
+               box-sizing: border-box;
 }
 .oo-ui-numberInputWidget-field > .oo-ui-buttonWidget {
        width: 2.5em;
        position: absolute;
        left: 0;
        right: 0;
-       overflow: hidden;
        -webkit-box-sizing: border-box;
           -moz-box-sizing: border-box;
                box-sizing: border-box;
 }
 .oo-ui-dialog-content > .oo-ui-window-head {
+       overflow: hidden;
        z-index: 1;
        top: 0;
 }
 .oo-ui-dialog-content > .oo-ui-window-body {
+       overflow: auto;
        z-index: 2;
        top: 0;
        bottom: 0;
 }
 .oo-ui-dialog-content > .oo-ui-window-foot {
+       overflow: hidden;
        z-index: 1;
        bottom: 0;
 }
                transition: opacity 250ms ease;
 }
 .oo-ui-windowManager-modal > .oo-ui-dialog > .oo-ui-window-frame {
-       top: 1em;
-       bottom: 1em;
        background-color: #ffffff;
        opacity: 0;
        -webkit-transform: scale(0.5);
                transform: scale(1);
 }
 .oo-ui-windowManager-modal.oo-ui-windowManager-floating > .oo-ui-dialog > .oo-ui-window-frame {
+       top: 1em;
+       bottom: 1em;
        border: 1px solid #aaaaaa;
        border-radius: 2px;
        box-shadow: 0 0.15em 0 0 rgba(0, 0, 0, 0.15);
index 210fec9..ea70fbb 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.15.0
+ * OOjs UI v0.15.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-01-12T23:06:31Z
+ * Date: 2016-01-26T21:14:23Z
  */
 /**
  * @class
index f280853..98d4709 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.15.0
+ * OOjs UI v0.15.1
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-01-12T23:06:31Z
+ * Date: 2016-01-26T21:14:23Z
  */
 ( function ( OO ) {
 
@@ -410,27 +410,38 @@ OO.ui.resolveMsg = function ( msg ) {
  * @return {boolean}
  */
 OO.ui.isSafeUrl = function ( url ) {
-       var protocol,
-               // Keep in sync with php/Tag.php
-               whitelist = [
-                       'bitcoin:', 'ftp:', 'ftps:', 'geo:', 'git:', 'gopher:', 'http:', 'https:', 'irc:', 'ircs:',
-                       'magnet:', 'mailto:', 'mms:', 'news:', 'nntp:', 'redis:', 'sftp:', 'sip:', 'sips:', 'sms:', 'ssh:',
-                       'svn:', 'tel:', 'telnet:', 'urn:', 'worldwind:', 'xmpp:'
-               ];
-
-       if ( url.indexOf( ':' ) === -1 ) {
-               // No protocol, safe
+       // Keep this function in sync with php/Tag.php
+       var i, protocolWhitelist;
+
+       function stringStartsWith( haystack, needle ) {
+               return haystack.substr( 0, needle.length ) === needle;
+       }
+
+       protocolWhitelist = [
+               'bitcoin', 'ftp', 'ftps', 'geo', 'git', 'gopher', 'http', 'https', 'irc', 'ircs',
+               'magnet', 'mailto', 'mms', 'news', 'nntp', 'redis', 'sftp', 'sip', 'sips', 'sms', 'ssh',
+               'svn', 'tel', 'telnet', 'urn', 'worldwind', 'xmpp'
+       ];
+
+       if ( url === '' ) {
                return true;
        }
 
-       protocol = url.split( ':', 1 )[ 0 ] + ':';
-       if ( !protocol.match( /^([A-za-z0-9\+\.\-])+:/ ) ) {
-               // Not a valid protocol, safe
+       for ( i = 0; i < protocolWhitelist.length; i++ ) {
+               if ( stringStartsWith( url, protocolWhitelist[ i ] + ':' ) ) {
+                       return true;
+               }
+       }
+
+       // This matches '//' too
+       if ( stringStartsWith( url, '/' ) || stringStartsWith( url, './' ) ) {
+               return true;
+       }
+       if ( stringStartsWith( url, '?' ) || stringStartsWith( url, '#' ) ) {
                return true;
        }
 
-       // Safe if in the whitelist
-       return whitelist.indexOf( protocol ) !== -1;
+       return false;
 };
 
 /**
@@ -7008,8 +7019,8 @@ OO.ui.mixin.ClippableElement.prototype.clip = function () {
                ccWidth + ccOffset.left :
                ( scOffset.left + scrollLeft + scWidth ) - ccOffset.left;
        desiredHeight = ( scOffset.top + scrollTop + scHeight ) - ccOffset.top;
-       allotedWidth = desiredWidth - extraWidth;
-       allotedHeight = desiredHeight - extraHeight;
+       allotedWidth = Math.ceil( desiredWidth - extraWidth );
+       allotedHeight = Math.ceil( desiredHeight - extraHeight );
        naturalWidth = this.$clippable.prop( 'scrollWidth' );
        naturalHeight = this.$clippable.prop( 'scrollHeight' );
        clipWidth = allotedWidth < naturalWidth;
@@ -9682,6 +9693,8 @@ OO.mixinClass( OO.ui.FieldsetLayout, OO.ui.mixin.GroupElement );
  * @cfg {OO.ui.FieldsetLayout[]} [items] Fieldset layouts to add to the form layout.
  */
 OO.ui.FormLayout = function OoUiFormLayout( config ) {
+       var action;
+
        // Configuration initialization
        config = config || {};
 
@@ -9695,8 +9708,9 @@ OO.ui.FormLayout = function OoUiFormLayout( config ) {
        this.$element.on( 'submit', this.onFormSubmit.bind( this ) );
 
        // Make sure the action is safe
-       if ( config.action !== undefined && !OO.ui.isSafeUrl( config.action ) ) {
-               throw new Error( 'Potentially unsafe action provided: ' + config.action );
+       action = config.action;
+       if ( action !== undefined && !OO.ui.isSafeUrl( action ) ) {
+               action = './' + action;
        }
 
        // Initialization
@@ -9704,7 +9718,7 @@ OO.ui.FormLayout = function OoUiFormLayout( config ) {
                .addClass( 'oo-ui-formLayout' )
                .attr( {
                        method: config.method,
-                       action: config.action,
+                       action: action,
                        enctype: config.enctype
                } );
        if ( Array.isArray( config.items ) ) {
@@ -12984,11 +12998,8 @@ OO.ui.ButtonWidget.prototype.getNoFollow = function () {
  */
 OO.ui.ButtonWidget.prototype.setHref = function ( href ) {
        href = typeof href === 'string' ? href : null;
-       if ( href !== null ) {
-               if ( !OO.ui.isSafeUrl( href ) ) {
-                       throw new Error( 'Potentially unsafe href provided: ' + href );
-               }
-
+       if ( href !== null && !OO.ui.isSafeUrl( href ) ) {
+               href = './' + href;
        }
 
        if ( href !== this.href ) {
@@ -14511,10 +14522,18 @@ OO.ui.SelectFileWidget.prototype.updateUI = function () {
                if ( this.currentFile ) {
                        this.$element.removeClass( 'oo-ui-selectFileWidget-empty' );
                        $label = $( [] );
+                       $label = $label.add(
+                               $( '<span>' )
+                                       .addClass( 'oo-ui-selectFileWidget-fileName' )
+                                       .text( this.currentFile.name )
+                       );
                        if ( this.currentFile.type !== '' ) {
-                               $label = $label.add( $( '<span>' ).addClass( 'oo-ui-selectFileWidget-fileType' ).text( this.currentFile.type ) );
+                               $label = $label.add(
+                                       $( '<span>' )
+                                               .addClass( 'oo-ui-selectFileWidget-fileType' )
+                                               .text( this.currentFile.type )
+                               );
                        }
-                       $label = $label.add( $( '<span>' ).text( this.currentFile.name ) );
                        this.setLabel( $label );
                } else {
                        this.$element.addClass( 'oo-ui-selectFileWidget-empty' );
@@ -16513,7 +16532,7 @@ OO.ui.TextInputWidget.prototype.isValid = function () {
 
        if ( this.validate instanceof Function ) {
                result = this.validate( this.getValue() );
-               if ( $.isFunction( result.promise ) ) {
+               if ( result && $.isFunction( result.promise ) ) {
                        return result.promise();
                } else {
                        return $.Deferred().resolve( !!result ).promise();
@@ -16532,7 +16551,7 @@ OO.ui.TextInputWidget.prototype.isValid = function () {
  * @return {jQuery.Promise} A promise that resolves if the value is valid, rejects if not.
  */
 OO.ui.TextInputWidget.prototype.getValidity = function () {
-       var result, promise;
+       var result;
 
        function rejectOrResolve( valid ) {
                if ( valid ) {
@@ -16544,21 +16563,10 @@ OO.ui.TextInputWidget.prototype.getValidity = function () {
 
        if ( this.validate instanceof Function ) {
                result = this.validate( this.getValue() );
-
-               if ( $.isFunction( result.promise ) ) {
-                       promise = $.Deferred();
-
-                       result.then( function ( valid ) {
-                               if ( valid ) {
-                                       promise.resolve();
-                               } else {
-                                       promise.reject();
-                               }
-                       }, function () {
-                               promise.reject();
+               if ( result && $.isFunction( result.promise ) ) {
+                       return result.promise().then( function ( valid ) {
+                               return rejectOrResolve( valid );
                        } );
-
-                       return promise.promise();
                } else {
                        return rejectOrResolve( result );
                }
index 3709f21..a82600c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/advanced.png and b/resources/lib/oojs-ui/themes/apex/images/icons/advanced.png differ
index 8d96876..b5e0e60 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="settings">
-        <path id="gear" d="M20.87 13.476c.078-.482.13-.972.13-1.476s-.052-.994-.13-1.476l-2.464-.26c-.15-.555-.367-1.08-.648-1.57l1.558-1.923c-.576-.802-1.28-1.51-2.087-2.083L15.3 6.245c-.488-.28-1.015-.5-1.57-.648l-.26-2.463C12.996 3.054 12.506 3 12 3s-.994.052-1.476.13l-.26 2.464c-.554.15-1.08.367-1.57.648L6.772 4.685c-.804.576-1.51 1.28-2.085 2.086L6.245 8.7c-.28.488-.5 1.015-.648 1.57l-2.463.26c-.08.48-.132.97-.132 1.475s.052.995.13 1.477l2.464.26c.15.554.367 1.08.648 1.57l-1.558 1.92c.576.805 1.28 1.51 2.087 2.086l1.925-1.558c.488.28 1.015.5 1.57.648l.26 2.463c.48.075.97.13 1.475.13s.994-.055 1.476-.13l.26-2.467c.552-.15 1.08-.367 1.57-.648l1.92 1.558c.805-.576 1.51-1.28 2.086-2.087L17.758 15.3c.28-.487.5-1.014.647-1.57l2.463-.26zM12 15.998c-2.21 0-3.998-1.79-3.998-3.998S9.792 8.002 12 8.002s3.998 1.79 3.998 3.998-1.79 3.998-3.998 3.998z"/>
+        <path id="gear" d="M20.87 13.476c.078-.482.13-.972.13-1.476s-.052-.994-.13-1.476l-2.464-.26a6.618 6.618 0 0 0-.648-1.57l1.558-1.923a8.97 8.97 0 0 0-2.086-2.08L15.3 6.246a6.543 6.543 0 0 0-1.57-.648l-.26-2.463C12.996 3.054 12.506 3 12 3s-.994.052-1.476.13l-.26 2.464c-.554.15-1.08.367-1.57.648L6.772 4.685A8.995 8.995 0 0 0 4.687 6.77L6.245 8.7c-.28.488-.5 1.015-.648 1.57l-2.463.26c-.08.48-.132.97-.132 1.475s.052.995.13 1.477l2.464.26c.15.554.367 1.08.648 1.57l-1.558 1.92a8.984 8.984 0 0 0 2.087 2.086l1.925-1.558c.488.28 1.015.5 1.57.648l.26 2.463c.48.078.97.13 1.475.13s.994-.052 1.476-.13l.26-2.464a6.67 6.67 0 0 0 1.57-.648l1.92 1.558a8.984 8.984 0 0 0 2.083-2.087l-1.555-1.93c.28-.487.5-1.014.647-1.57l2.463-.26zM12 15.998a3.998 3.998 0 1 1 0-7.996 3.998 3.998 0 0 1 0 7.996z"/>
     </g>
 </svg>
index 4697eb9..6f47977 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="align-center">
-        <path d="M9 9h6c.554 0 1 .446 1 1v5c0 .554-.446 1-1 1H9c-.554 0-1-.446-1-1v-5c0-.554.446-1 1-1zm-5.5 9h17c.277 0 .5.223.5.5s-.223.5-.5.5h-17c-.277 0-.5-.223-.5-.5s.223-.5.5-.5zm0-12h17c.277 0 .5.223.5.5s-.223.5-.5.5h-17c-.277 0-.5-.223-.5-.5s.223-.5.5-.5z"/>
-    </g>
+    <path d="M9 9h6c.554 0 1 .446 1 1v5c0 .554-.446 1-1 1H9c-.554 0-1-.446-1-1v-5c0-.554.446-1 1-1zm-5.5 9h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1zm0-12h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1z" id="align-center"/>
 </svg>
index 1c95377..a577600 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="align-float-left">
-        <path d="M4 9h6c.554 0 1 .446 1 1v5c0 .554-.446 1-1 1H4c-.554 0-1-.446-1-1v-5c0-.554.446-1 1-1zm9.5 0h7c.277 0 .5.223.5.5s-.223.5-.5.5h-7c-.277 0-.5-.223-.5-.5s.223-.5.5-.5zm0 3h7c.277 0 .5.223.5.5s-.223.5-.5.5h-7c-.277 0-.5-.223-.5-.5s.223-.5.5-.5zm0 3h7c.277 0 .5.223.5.5s-.223.5-.5.5h-7c-.277 0-.5-.223-.5-.5s.223-.5.5-.5zm-10-9h17c.277 0 .5.223.5.5s-.223.5-.5.5h-17c-.277 0-.5-.223-.5-.5s.223-.5.5-.5zm0 12h17c.277 0 .5.223.5.5s-.223.5-.5.5h-17c-.277 0-.5-.223-.5-.5s.223-.5.5-.5z"/>
-    </g>
+    <path d="M4 9h6c.554 0 1 .446 1 1v5c0 .554-.446 1-1 1H4c-.554 0-1-.446-1-1v-5c0-.554.446-1 1-1zm9.5 0h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1zm0 3h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1zm0 3h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1zm-10-9h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1zm0 12h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1z" id="align-float-left"/>
 </svg>
index 2467f7f..0f46bc1 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="align-float-right">
-        <path d="M20 9h-6c-.554 0-1 .446-1 1v5c0 .554.446 1 1 1h6c.554 0 1-.446 1-1v-5c0-.554-.446-1-1-1zm-9.5 0h-7c-.277 0-.5.223-.5.5s.223.5.5.5h7c.277 0 .5-.223.5-.5s-.223-.5-.5-.5zm0 3h-7c-.277 0-.5.223-.5.5s.223.5.5.5h7c.277 0 .5-.223.5-.5s-.223-.5-.5-.5zm0 3h-7c-.277 0-.5.223-.5.5s.223.5.5.5h7c.277 0 .5-.223.5-.5s-.223-.5-.5-.5zm10-9h-17c-.277 0-.5.223-.5.5s.223.5.5.5h17c.277 0 .5-.223.5-.5s-.223-.5-.5-.5zm0 12h-17c-.277 0-.5.223-.5.5s.223.5.5.5h17c.277 0 .5-.223.5-.5s-.223-.5-.5-.5z"/>
-    </g>
+    <path d="M20 9h-6c-.554 0-1 .446-1 1v5c0 .554.446 1 1 1h6c.554 0 1-.446 1-1v-5c0-.554-.446-1-1-1zm-9.5 0h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm0 3h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm0 3h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm10-9h-17a.5.5 0 0 0 0 1h17a.5.5 0 0 0 0-1zm0 12h-17a.5.5 0 0 0 0 1h17a.5.5 0 0 0 0-1z" id="align-float-right"/>
 </svg>
index 114ce31..88d1439 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/arched-arrow-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/arched-arrow-ltr.png differ
index 1c2abb7..f36b697 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="arched-arrow-ltr">
-        <path id="arrow" d="M19.925 14.937l-2.39-6.9-1.48 2.328c-.965-.845-2.7-1.85-5.514-1.823-4.883.046-6.52 4.244-6.52 4.244s2.753-2.64 6.925-1.95c1.73.287 3.007 1.207 3.675 1.792l-1.475 2.32 6.782-.01z"/>
+        <path id="arrow" d="M19.925 14.937l-2.39-6.9-1.48 2.328c-.965-.845-2.7-1.85-5.514-1.823-4.88.046-6.52 4.244-6.52 4.244s2.756-2.64 6.928-1.95c1.73.287 3.007 1.207 3.675 1.792l-1.474 2.32 6.78-.01z"/>
     </g>
 </svg>
index a0097cb..b4c0e0d 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g4">
-        <path d="M16 12H6c-1.7 0-3 1.3-3 3h13v3l5-4.5L16 9v3z" id="path6"/>
-    </g>
+    <path d="M16 12H6c-1.7 0-3 1.3-3 3h13v3l5-4.5L16 9v3z"/>
 </svg>
index 54d6d25..1087ff9 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M8 12h10c1.7 0 3 1.3 3 3H8v3l-5-4.5L8 9v3z"/>
-    </g>
+    <path d="M8 12h10c1.7 0 3 1.3 3 3H8v3l-5-4.5L8 9v3z"/>
 </svg>
index 709673f..09631d7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/articleRedirect-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/articleRedirect-rtl.png differ
index 6a9c683..316d36c 100644 (file)
@@ -2,6 +2,6 @@
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="article-redirect">
         <path id="arrow" d="M5.9 14.2L1 18l4.9 4.8v-2.2c1.7 0 2.9-.2 4.3-1.2 1.2-.8 2.5-2.6 2.3-4.1-1.4 1-2.9 1.5-4.4 1.5-.7 0-1.4-.1-2.1-.3l-.1-2.3"/>
-        <path id="page" d="M19 3v13c0 1.7-1.3 3-3 3h-3.375c.157-.205.3-.43.438-.656.42-.688.77-1.483.843-2.344H17v-1h-3.125l-.125-1H17v-1h-3.375l-.03-.188-.283.188H8v1h3.906l-.22.156c-.523.375-1.065.64-1.592.844H8v.406c-.208-.013-.418-.07-.625-.094-.068-1.294-.125-3.874-.125-3.874L6 12.405V3zm-2 2h-4v1h4zm-5 0H8v5h4zm5 2h-4v1h4zm0 2h-4v1h4zm0 2H8v1h9z"/>
+        <path id="page" d="M19 3v13c0 1.7-1.3 3-3 3h-3.375c.157-.205.3-.43.438-.656.42-.688.77-1.483.843-2.344H17v-1h-3.125l-.125-1H17v-1h-3.375l-.03-.188-.283.188H8v1h3.906l-.22.156a7.097 7.097 0 0 1-1.592.844H8v.406c-.208-.013-.418-.07-.625-.094a178.903 178.903 0 0 1-.125-3.874L6 12.405V3zm-2 2h-4v1h4zm-5 0H8v5h4zm5 2h-4v1h4zm0 2h-4v1h4zm0 2H8v1h9z"/>
     </g>
 </svg>
index 6299c30..b50bb61 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M12 4c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm5 9H7v-2h10v2z" id="path4"/>
+    <path d="M12 4c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm5 9H7v-2h10v2z"/>
 </svg>
index f6d5486..160219c 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g66">
-        <path d="M17 11v2h-2l3.6 3.6c.9-1.3 1.4-2.9 1.4-4.6 0-4.4-3.6-8-8-8-1.7 0-3.3.5-4.6 1.4L13 11h4zM4 4L3 5l2.4 2.4C4.5 8.7 4 10.3 4 12c0 4.4 3.6 8 8 8 1.7 0 3.3-.5 4.6-1.4L19 21l1-1L4 4zm3 9v-2h2l2 2H7z" id="path68"/>
-    </g>
+    <path d="M17 11v2h-2l3.6 3.6c.9-1.3 1.4-2.9 1.4-4.6 0-4.4-3.6-8-8-8-1.7 0-3.3.5-4.6 1.4L13 11h4zM4 4L3 5l2.4 2.4C4.5 8.7 4 10.3 4 12c0 4.4 3.6 8 8 8 1.7 0 3.3-.5 4.6-1.4L19 21l1-1L4 4zm3 9v-2h2l2 2H7z"/>
 </svg>
index d0ddde0..90fe46a 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g66">
-        <path d="M7 11v2h2l-3.6 3.6C4.5 15.3 4 13.7 4 12c0-4.4 3.6-8 8-8 1.7 0 3.3.5 4.6 1.4L11 11H7zm13-7l1 1-2.4 2.4c.9 1.3 1.4 2.9 1.4 4.6 0 4.4-3.6 8-8 8-1.7 0-3.3-.5-4.6-1.4L5 21l-1-1L20 4zm-3 9v-2h-2l-2 2h4z" id="path68"/>
-    </g>
+    <path d="M7 11v2h2l-3.6 3.6C4.5 15.3 4 13.7 4 12c0-4.4 3.6-8 8-8 1.7 0 3.3.5 4.6 1.4L11 11H7zm13-7l1 1-2.4 2.4c.9 1.3 1.4 2.9 1.4 4.6 0 4.4-3.6 8-8 8-1.7 0-3.3-.5-4.6-1.4L5 21l-1-1L20 4zm-3 9v-2h-2l-2 2h4z"/>
 </svg>
index d5cee05..ce9f4f8 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="bold-a">
-        <path d="M16 18h3L14 6h-3L6 18h3l1.25-3h4.5L16 18zm-4.917-5L12.5 9.6l1.417 3.4h-2.834z"/>
-    </g>
+    <path d="M16 18h3L14 6h-3L6 18h3l1.25-3h4.5L16 18zm-4.917-5L12.5 9.6l1.417 3.4h-2.834z" id="bold-a"/>
 </svg>
index e9dce68..2ac8bfc 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/bold-arab-ain.png and b/resources/lib/oojs-ui/themes/apex/images/icons/bold-arab-ain.png differ
index 23ed091..452c3d0 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="bold-arab-ain">
-        <path id="arab-ain" d="M9.337 13.616c0 1.35 1.386 2.1 4.16 2.258l2.186-.03.318.045c-.03.123-.25.34-.66.65l-.09.064c-1.236.93-2.423 1.393-3.56 1.393-1.143 0-2.046-.33-2.71-.99-.65-.66-.976-1.56-.976-2.7.006-1.353.567-2.572 1.685-3.657v-.043l-.607-.55c-.15-.18-.222-.39-.222-.63 0-.49.24-1.11.718-1.863.65-1.046 1.303-1.566 1.958-1.56.886.004 1.618.42 2.194 1.245.324.48-.03.55-1.065.22-.842-.33-1.527-.05-2.054.826l.016.074 1.123.866.05.005c1.404-.496 2.418-.74 3.043-.724-.058.116-.14.36-.243.732-.105.357-.206.684-.305.982l-.126.373-.386.05c-1.743.24-2.992.716-3.745 1.43-.464.463-.698.972-.703 1.524"/>
+        <path id="arab-ain" d="M9.337 13.616c0 1.35 1.386 2.1 4.16 2.258l2.186-.03.318.045c-.03.12-.25.34-.66.65l-.09.06c-1.233.93-2.42 1.394-3.56 1.394-1.14 0-2.043-.33-2.71-.99-.65-.66-.973-1.56-.973-2.7.006-1.353.567-2.572 1.685-3.657v-.044l-.606-.55a.952.952 0 0 1-.222-.63c0-.49.24-1.11.72-1.863.65-1.045 1.302-1.565 1.957-1.56.886.005 1.618.42 2.194 1.246.325.48-.03.55-1.064.22-.843-.33-1.528-.05-2.055.826l.016.074 1.125.866.05.005c1.405-.497 2.42-.74 3.044-.725-.06.116-.14.36-.244.732a27.75 27.75 0 0 1-.304.982l-.125.372-.386.05c-1.743.24-2.992.716-3.745 1.43-.465.463-.7.972-.704 1.524"/>
     </g>
 </svg>
index 46d579b..4d45ea0 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/bold-arab-dad.png and b/resources/lib/oojs-ui/themes/apex/images/icons/bold-arab-dad.png differ
index 7e6769d..b90bb77 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="bold-arab-dad">
-        <path id="arab-dad" d="M16.41 8.232l-1.675-.665L15.43 6l1.687.64-.707 1.592m.775 3.078c-.51-.286-1-.427-1.476-.423-.475 0-.986.205-1.536.616l-.506.38.006.024c1.084.066 1.934.1 2.55.1h.314c.57-.022.994-.065 1.278-.132-.067-.17-.275-.36-.625-.566h-.005M10.382 14.6c-.017-.904-.33-1.87-.938-2.898l1.294-1.73.118.15c.267.336.504.924.713 1.766l.065.05c.496-.007.942-.17 1.338-.484v-.006l1.732-1.53c.68-.6 1.282-.9 1.807-.9.384.003.85.194 1.395.57.55.378.884.697 1 .96.063.15.094.385.094.71 0 .694-.11 1.227-.33 1.596-.192.31-.473.555-.844.734-.438.208-1.55.312-3.333.312-.8 0-1.794-.02-2.982-.062l-.143.43c-.254.67-.463 1.112-.625 1.323-.725.937-1.786 1.405-3.183 1.405C5.85 16.99 5 16.076 5 14.256c.003-.94.278-1.814.824-2.618.15-.216.298-.367.444-.454.225-.133.288-.09.188.124-.396.862-.596 1.548-.6 2.058.008 1.177.752 1.768 2.232 1.772 1.038-.004 1.803-.182 2.295-.535"/>
+        <path id="arab-dad" d="M16.41 8.232l-1.675-.665L15.43 6l1.687.64-.707 1.592m.775 3.078c-.51-.286-1-.427-1.476-.423-.478 0-.99.205-1.54.616l-.505.38.006.024c1.085.066 1.935.1 2.55.1h.315c.57-.022.994-.065 1.278-.132-.067-.17-.275-.36-.625-.566h-.006M10.38 14.6c-.016-.905-.33-1.87-.937-2.9l1.294-1.73.118.15c.267.337.504.925.713 1.767l.064.05c.496-.007.942-.17 1.338-.484v-.006l1.732-1.53c.68-.6 1.282-.9 1.807-.9.383.003.85.194 1.394.57.55.378.884.697 1 .96.063.15.094.385.094.71 0 .694-.11 1.227-.33 1.596-.193.31-.474.555-.845.734-.438.208-1.55.312-3.333.312-.8 0-1.794-.02-2.982-.064l-.142.43c-.254.67-.463 1.112-.625 1.323-.724.937-1.785 1.405-3.182 1.405-1.71-.006-2.56-.92-2.56-2.74.003-.94.278-1.814.824-2.618.15-.216.298-.367.444-.454.225-.133.288-.09.188.124-.396.862-.596 1.548-.6 2.058.008 1.177.752 1.768 2.232 1.772 1.038-.004 1.803-.182 2.295-.535"/>
     </g>
 </svg>
index 5e16e38..034e2d6 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/bold-armn-to.png and b/resources/lib/oojs-ui/themes/apex/images/icons/bold-armn-to.png differ
index 7471d1a..c35979a 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="bold-armn-to">
-        <path id="armn-to" d="M13.86 16.257c.124 0 .254-.026.39-.078.135-.06.257-.15.367-.278.114-.13.205-.302.273-.516.073-.214.11-.48.11-.798V13h-1.14c-.14 0-.284.026-.43.078-.14.047-.27.133-.383.258-.11.125-.2.294-.274.508-.067.213-.1.487-.1.82 0 .34.035.47.108.695.08.214.18.39.29.53.12.132.25.23.387.29.14.05.276.073.406.073m-2.97-7.84c-.37.082-.694.247-.975.45-.28.198-.505.47-.672.813-.16.342-.242.78-.242 1.31V18H6v-7.188c0-.776.15-1.455.453-2.04.302-.587.714-1.077 1.234-1.467.52-.39 1.13-.685 1.83-.883.697-.198 1.44-.297 2.225-.297.526 0 1.04.044 1.54.133.504.088.98.22 1.43.398.447.172.858.388 1.233.65.375.26.698.564.97.913.275.344.49.734.64 1.17.15.43.226 1.09.226 1.61h1.357v2.04H17.78v1.6c0 .58-.103 1.09-.31 1.54-.21.44-.49.81-.845 1.113-.35.302-.834.53-1.297.687-.464.15-.953.227-1.47.227-.51 0-.996-.08-1.46-.235-.464-.156-.87-.39-1.22-.703-.348-.315-.626-.705-.835-1.174-.203-.473-.304-1.028-.304-1.663s.1-1.182.32-1.64c.21-.46.493-.685.85-.977.35-.297.76-.513 1.22-.648.454-.14.93-.21 1.43-.21h1.13c-.01-.49-.04-1.044-.24-1.36-.2-.324-.457-.58-.77-.767-.31-.192-.598-.33-.984-.425-.375-.09-.578-.094-1.1-.094-.52 0-.64.02-1.01.103z"/>
+        <path id="armn-to" d="M13.86 16.257c.124 0 .254-.026.39-.078.135-.06.257-.15.367-.28a1.43 1.43 0 0 0 .273-.517c.073-.214.11-.48.11-.798V13h-1.14c-.14 0-.284.026-.43.078a.905.905 0 0 0-.383.258c-.11.125-.2.294-.274.508-.067.213-.1.487-.1.82 0 .34.035.47.108.695.08.21.18.39.29.53.12.13.25.23.39.29.14.05.276.07.406.07m-2.97-7.84a2.67 2.67 0 0 0-.975.45 2.1 2.1 0 0 0-.672.813c-.16.342-.242.78-.242 1.31V18H6v-7.188c0-.776.15-1.455.453-2.04a4.227 4.227 0 0 1 1.234-1.467c.52-.39 1.13-.685 1.83-.883a8.114 8.114 0 0 1 2.225-.297c.526 0 1.04.044 1.54.133.504.088.98.22 1.43.398.447.172.858.388 1.233.65.375.26.698.564.97.913.275.34.49.73.64 1.17.15.43.226 1.09.226 1.61h1.36v2.04h-1.36v1.6c0 .58-.102 1.09-.31 1.54-.21.44-.49.81-.844 1.11-.35.302-.834.53-1.297.687-.465.15-.954.226-1.47.226-.51 0-.997-.08-1.46-.235a3.46 3.46 0 0 1-1.22-.703 3.452 3.452 0 0 1-.836-1.174c-.203-.472-.304-1.027-.304-1.662s.1-1.18.32-1.64c.21-.46.49-.684.85-.976.35-.297.76-.513 1.22-.648.452-.14.93-.21 1.43-.21h1.13c-.01-.49-.04-1.044-.24-1.36a2.26 2.26 0 0 0-.77-.767 3.234 3.234 0 0 0-.986-.427c-.375-.09-.578-.094-1.1-.094-.52 0-.64.02-1.01.102z"/>
     </g>
 </svg>
index 383ef32..9d84cb0 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="bold-cyrl-be">
-        <path id="cyrl-be" d="M7 6h9v2h-6v3h2.65c.892 0 1.632.11 2.22.327.587.218 1.087.622 1.5 1.21.42.59.63 1.188.63 1.98 0 .812-.21 1.397-.63 1.976-.418.578-.897.974-1.436 1.187-.533.213-1.295.32-2.286.32h-5.65m4.768-2c.75 0 1.28-.05 1.584-.12.305-.077.57-.247.792-.51.23-.26.343-.472.343-.854 0-.557-.2-.868-.596-1.12-.396-.255-1.068-.397-2.02-.397H10v3"/>
+        <path id="cyrl-be" d="M7 6h9v2h-6v3h2.65c.892 0 1.632.11 2.22.327.587.218 1.087.622 1.5 1.21.42.59.63 1.188.63 1.98 0 .812-.21 1.397-.63 1.976-.418.578-.897.974-1.436 1.187-.533.213-1.295.32-2.286.32h-5.65m4.768-2c.75 0 1.28-.05 1.584-.12.305-.077.57-.247.792-.51.23-.26.343-.472.343-.854 0-.557-.2-.868-.596-1.12-.4-.255-1.07-.397-2.02-.397H10v3"/>
     </g>
 </svg>
index 41e562b..205800b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/bold-cyrl-zhe.png and b/resources/lib/oojs-ui/themes/apex/images/icons/bold-cyrl-zhe.png differ
index e349905..aab3f4c 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="bold-cyrl-zhe">
-        <path id="cyrl-zhe" d="M13 6v5.154c.328-.033.537-.18.705-.447.168-.266.4-.873.698-1.82.39-1.242.79-2.034 1.197-2.375.403-.336 1.075-.504 2.014-.504L18 6v1.78l-.386-.008c-.4 0-.69.062-.878.187-.186.115-.337.3-.452.55-.115.25-.286.76-.512 1.536-.12.41-.25.755-.392 1.032-.137.275-.383.536-.738.78.44.156.8.465 1.084.926.288.454.603 1.102.944 1.942L18 18h-2.314l-1.17-3.08-.113-.253-.24-.56c-.247-.57-.45-.933-.61-1.09-.16-.157-.318-.236-.553-.236V18h-2v-5.22c-.226 0-.382.077-.546.23-.164.15-.368.517-.612 1.097l-.246.56-.113.253L8.313 18H6l1.33-3.267c.327-.808.635-1.447.923-1.92.293-.476.663-.793 1.11-.95-.355-.244-.603-.5-.745-.772-.137-.272-.268-.62-.392-1.04-.222-.76-.39-1.263-.505-1.52-.11-.252-.26-.44-.45-.57-.184-.12-.49-.183-.915-.183L6 7.782v-1.78l.386.008c.953 0 1.63.17 2.034.512.4.347.79 1.136 1.177 2.366.3.954.534 1.564.698 1.83.168.26.377.405.705.438V6.002"/>
+        <path id="cyrl-zhe" d="M13 6v5.154c.328-.033.537-.18.705-.447.168-.266.4-.873.698-1.82.39-1.242.79-2.034 1.197-2.375.403-.336 1.075-.504 2.014-.504L18 6v1.78l-.386-.008c-.4 0-.69.062-.878.187-.186.112-.337.3-.452.55-.115.25-.286.76-.512 1.533-.12.41-.25.755-.392 1.032-.137.275-.383.536-.738.78.44.156.8.465 1.084.926.288.455.603 1.103.944 1.943L18 18h-2.314l-1.17-3.08-.113-.253-.24-.56c-.247-.57-.45-.933-.61-1.09A.726.726 0 0 0 13 12.78V18h-2v-5.22c-.226 0-.382.077-.546.23-.164.15-.368.517-.612 1.097l-.246.56-.113.253L8.313 18H6l1.33-3.267c.327-.808.635-1.447.923-1.92.293-.476.663-.793 1.11-.95-.355-.244-.603-.5-.745-.772a6.357 6.357 0 0 1-.392-1.04c-.222-.76-.39-1.26-.505-1.52-.11-.25-.26-.44-.45-.57-.18-.12-.49-.18-.912-.18H6V6l.386.008c.953 0 1.63.17 2.034.512.4.347.79 1.136 1.177 2.366.3.954.534 1.564.698 1.83.168.26.377.405.705.438V6.002"/>
     </g>
 </svg>
index cc4be63..13fd1ad 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/bold-g.png and b/resources/lib/oojs-ui/themes/apex/images/icons/bold-g.png differ
index 05b46e2..3150d95 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="bold-g">
-        <path id="g" d="M12 14v-2h5v4.203c-.497.475-1.22.894-2.166 1.26-.94.358-1.896.537-2.864.537-1.23 0-2.303-.253-3.217-.76-.915-.512-1.602-1.24-2.062-2.185-.46-.95-.69-1.982-.69-3.095 0-1.208.26-2.282.77-3.222.517-.94 1.27-1.66 2.26-2.16.753-.386 1.692-.58 2.815-.58 1.46 0 2.6.304 3.418.91.825.603 1.354 1.436 1.59 2.502l-2.36.435c-.165-.57-.48-1.018-.94-1.346-.453-.336-1.022-.5-1.707-.5-1.038 0-1.864.322-2.48.97-.61.65-.914 1.613-.914 2.89 0 1.377.31 2.41.93 3.103.62.686 1.434 1.03 2.44 1.03.497 0 .995-.096 1.49-.286.505-.196 1.334-.57 1.69-.846v-.866"/>
+        <path id="g" d="M12 14v-2h5v4.203c-.497.475-1.22.894-2.166 1.26A7.994 7.994 0 0 1 11.97 18c-1.23 0-2.303-.253-3.217-.76a4.908 4.908 0 0 1-2.062-2.185A7.008 7.008 0 0 1 6 11.96c0-1.208.26-2.282.77-3.222.518-.94 1.27-1.66 2.26-2.16.754-.386 1.693-.58 2.816-.58 1.46 0 2.6.304 3.418.91.825.603 1.354 1.436 1.59 2.502l-2.36.435a2.433 2.433 0 0 0-.94-1.346c-.454-.34-1.022-.5-1.707-.5-1.038 0-1.864.32-2.48.97-.61.65-.914 1.61-.914 2.89 0 1.375.31 2.41.93 3.1.62.687 1.434 1.03 2.44 1.03.497 0 .995-.095 1.49-.285.505-.196 1.334-.57 1.69-.846v-.868"/>
     </g>
 </svg>
index f665223..729b8c2 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M8 5h7c1.1 0 2 .9 2 2v3h-3v11l-4-3-4 3V7c0-1.1.9-2 2-2zm6 4h2V7c0-.6-.4-1-1-1h-1v3z" id="path88"/>
+    <path d="M8 5h7c1.1 0 2 .9 2 2v3h-3v11l-4-3-4 3V7c0-1.1.9-2 2-2zm6 4h2V7c0-.6-.4-1-1-1h-1v3z"/>
 </svg>
index ba0be74..fcbd135 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M8 5h7c1.1 0 2 .9 2 2v3h-3v11l-4-3-4 3V7c0-1.1.9-2 2-2zm6 4h2V7c0-.6-.4-1-1-1h-1v3z" id="path88"/>
+    <path d="M8 5h7c1.1 0 2 .9 2 2v3h-3v11l-4-3-4 3V7c0-1.1.9-2 2-2zm6 4h2V7c0-.6-.4-1-1-1h-1v3z"/>
 </svg>
index b6d0f5c..d6378bf 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M21 6v11c0 1.7-1.3 3-3 3H3V6h18zm-2.5 1c-.8 0-1.5.7-1.5 1.5s.7 1.5 1.5 1.5S20 9.3 20 8.5 19.3 7 18.5 7zM4 19h14c1.1 0 2-.9 2-2v-6H4v8z" id="path98"/>
+    <path d="M21 6v11c0 1.7-1.3 3-3 3H3V6h18zm-2.5 1c-.8 0-1.5.7-1.5 1.5s.7 1.5 1.5 1.5S20 9.3 20 8.5 19.3 7 18.5 7zM4 19h14c1.1 0 2-.9 2-2v-6H4v8z"/>
 </svg>
index 080e237..38807b5 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M21 6v11c0 1.7-1.3 3-3 3H3V6h18zm-2.5 1c-.8 0-1.5.7-1.5 1.5s.7 1.5 1.5 1.5S20 9.3 20 8.5 19.3 7 18.5 7zM4 19h14c1.1 0 2-.9 2-2v-6H4v8z" id="path98"/>
+    <path d="M21 6v11c0 1.7-1.3 3-3 3H3V6h18zm-2.5 1c-.8 0-1.5.7-1.5 1.5s.7 1.5 1.5 1.5S20 9.3 20 8.5 19.3 7 18.5 7zM4 19h14c1.1 0 2-.9 2-2v-6H4v8z"/>
 </svg>
index 121180e..b0bc0e5 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M4 5v10c0 1.7 1.3 3 3 3h14V8c0-1.7-1.3-3-3-3H4zm2 1c.552 0 1 .448 1 1s-.448 1-1 1-1-.448-1-1 .448-1 1-1zm4 0c.552 0 1 .448 1 1s-.448 1-1 1-1-.448-1-1 .448-1 1-1zm4 0c.552 0 1 .448 1 1s-.448 1-1 1-1-.448-1-1 .448-1 1-1zm4 0c.552 0 1 .448 1 1s-.448 1-1 1-1-.448-1-1 .448-1 1-1zM5 9h3v2H5V9zm4 0h3v2H9V9zm4 0h3v2h-3V9zm4 0h3v2h-3V9zM5 12h3v2H5v-2zm4 0h3v2H9v-2zm4 0h3v2h-3v-2zm4 0h3v2h-3v-2zM5 15h3v2H7c-1.195 0-2-.805-2-2zm4 0h3v2H9v-2zm4 0h3v2h-3v-2zm4 0h3v2h-3v-2z"/>
+    <path d="M4 5v10c0 1.7 1.3 3 3 3h14V8c0-1.7-1.3-3-3-3H4zm2 1a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zM5 9h3v2H5V9zm4 0h3v2H9V9zm4 0h3v2h-3V9zm4 0h3v2h-3V9zM5 12h3v2H5v-2zm4 0h3v2H9v-2zm4 0h3v2h-3v-2zm4 0h3v2h-3v-2zM5 15h3v2H7c-1.195 0-2-.805-2-2zm4 0h3v2H9v-2zm4 0h3v2h-3v-2zm4 0h3v2h-3v-2z"/>
 </svg>
index 9b736bf..d8ff5a9 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M21 5v10c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3h14zm-2 1c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1zm-4 0c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1zm-4 0c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1zM7 6c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1zm13 3h-3v2h3V9zm-4 0h-3v2h3V9zm-4 0H9v2h3V9zM8 9H5v2h3V9zm12 3h-3v2h3v-2zm-4 0h-3v2h3v-2zm-4 0H9v2h3v-2zm-4 0H5v2h3v-2zm12 3h-3v2h1c1.195 0 2-.805 2-2zm-4 0h-3v2h3v-2zm-4 0H9v2h3v-2zm-4 0H5v2h3v-2z"/>
+    <path d="M21 5v10c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3h14zm-2 1a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm-4 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm-4 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2zM7 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm13 3h-3v2h3V9zm-4 0h-3v2h3V9zm-4 0H9v2h3V9zM8 9H5v2h3V9zm12 3h-3v2h3v-2zm-4 0h-3v2h3v-2zm-4 0H9v2h3v-2zm-4 0H5v2h3v-2zm12 3h-3v2h1c1.195 0 2-.805 2-2zm-4 0h-3v2h3v-2zm-4 0H9v2h3v-2zm-4 0H5v2h3v-2z"/>
 </svg>
index 76b87e4..180e3ab 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/cancel.png and b/resources/lib/oojs-ui/themes/apex/images/icons/cancel.png differ
index 5d0bbd9..04ff5c3 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="cancel">
-        <path id="circle-with-strike" d="M12 5.022c-3.855 0-6.98 3.124-6.98 6.978 0 3.853 3.124 6.978 6.977 6.978s6.978-3.125 6.978-6.978c0-3.854-3.125-6.978-6.98-6.978zM6.885 12c0-1.092.572-3.25.93-2.93l7.113 7.114c.487.525-1.838.93-2.93.93-2.826 0-5.114-2.29-5.114-5.114zm9.298 2.93L9.07 7.815c-.445-.483 1.837-.93 2.93-.93 2.826 0 5.114 2.288 5.114 5.113 0 1.092-.364 3.542-.93 2.93z"/>
+        <path id="circle-with-strike" d="M12 5.022a6.98 6.98 0 0 0-.003 13.956 6.98 6.98 0 0 0-.002-13.956zM6.885 12c0-1.092.572-3.25.93-2.93l7.113 7.114c.487.525-1.838.93-2.93.93A5.113 5.113 0 0 1 6.884 12zm9.298 2.93L9.07 7.815c-.445-.483 1.837-.93 2.93-.93a5.112 5.112 0 0 1 5.114 5.113c0 1.092-.364 3.542-.93 2.93z"/>
     </g>
 </svg>
index 88c7c73..1f90f5c 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M16.5 13.1L7.6 22c-.8-.8-.8-2 0-2.8l6.1-6.1-6-6.1c-.8-.8-.8-2 0-2.8l8.8 8.9z" id="path108"/>
+    <path d="M16.5 13.1L7.6 22c-.8-.8-.8-2 0-2.8l6.1-6.1-6-6.1c-.8-.8-.8-2 0-2.8l8.8 8.9z"/>
 </svg>
index 27cb080..89e0612 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M12 16l8.9-8.9c-.8-.8-2-.8-2.8 0L12 13.2l-6.1-6c-.8-.8-2-.8-2.8 0L12 16z" id="path4"/>
+    <path d="M12 16l8.9-8.9c-.8-.8-2-.8-2.8 0L12 13.2l-6.1-6c-.8-.8-2-.8-2.8 0L12 16z"/>
 </svg>
index 1d63093..fcf4e13 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M12 6.5l8.9 8.9c-.8.8-2 .8-2.8 0L12 9.3l-6.1 6c-.8.8-2 .8-2.8 0L12 6.5z" id="path4"/>
+    <path d="M12 6.5l8.9 8.9c-.8.8-2 .8-2.8 0L12 9.3l-6.1 6c-.8.8-2 .8-2.8 0L12 6.5z"/>
 </svg>
index f36e52c..202cbf7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/case-sensitive.png and b/resources/lib/oojs-ui/themes/apex/images/icons/case-sensitive.png differ
index 2f0e406..46cd9b0 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="regular-expression">
-        <path id="upper-case" d="M7.53 7L4 17h2.063l.72-2.406h3.624l.72 2.406h2.062L9.654 7H7.533zm1.064 1.53L9.938 13H7.25l1.344-4.47z"/>
-        <path id="lower-case" d="M18.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.443.25-.564 0-.955-.208-1.377-.625-.42-.418-.628-1.012-.628-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.322-.04v-.335c0-.772-.395-1.158-1.186-1.158-.61 0-1.325.18-2.147.55l-.688-1.4c.877-.46 1.85-.69 2.916-.69 1.024 0 1.59.22 2.134.665.545.445.818 1.12.818 2.03V17h-1.45m-.394-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .582.336.874 1.008.874.48 0 .865-.138 1.152-.415.29-.277.436-.645.436-1.103v-.627"/>
+        <path id="upper-case" d="M7.53 7L4 17h2.063l.72-2.406h3.624l.72 2.406h2.062L9.65 7h-2.12zm1.064 1.53L9.938 13H7.25l1.344-4.47z"/>
+        <path id="lower-case" d="M18.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.44.25-.564 0-.955-.208-1.377-.625-.42-.418-.627-1.012-.627-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.322-.04v-.335c0-.772-.396-1.158-1.187-1.158-.61 0-1.325.18-2.147.55l-.688-1.4c.877-.46 1.85-.69 2.916-.69 1.024 0 1.59.22 2.134.662.545.445.818 1.12.818 2.03V17h-1.45m-.394-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .58.336.87 1.008.87.48 0 .865-.137 1.152-.414.29-.277.436-.645.436-1.103v-.627"/>
     </g>
 </svg>
index d455904..0c5332b 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="check">
-        <path d="M7.105 13.473l1.422-1.423 1.9 1.902L15.237 7l1.66 1.148L10.634 17z"/>
-    </g>
+    <path d="M7.105 13.473l1.422-1.423 1.9 1.902L15.237 7l1.66 1.148L10.634 17z" id="check"/>
 </svg>
index 2580eaf..a05c7d9 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/clock-invert.png and b/resources/lib/oojs-ui/themes/apex/images/icons/clock-invert.png differ
index 3f1a467..322fc31 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="clock">
-        <path id="circle" d="m 12,5 c -3.865993,0 -7,3.1340068 -7,7 0,3.865993 3.134007,7 7,7 3.865993,0 7,-3.134007 7,-7 0,-3.8659932 -3.134007,-7 -7,-7 z m 0,1.25 c 3.174708,0 5.75,2.5752917 5.75,5.75 0,3.174708 -2.575292,5.75 -5.75,5.75 C 8.825292,17.75 6.25,15.174708 6.25,12 6.25,8.8252917 8.825292,6.25 12,6.25 z" />
-        <path id="hands" d="m 15.605461,14.078994 c 0,0 -1.674293,-1.358389 -2.811549,-2.149554 0.505447,-1.682718 1.194821,-4.6044835 1.194821,-4.6044835 0,0 -3.053744,3.7648795 -3.423703,4.7027645 -0.32503,0.819947 1.024233,1.55074 1.646915,1.177972 1.333819,0.386808 3.393516,0.873301 3.393516,0.873301 z" />
+        <path id="circle" d="M12 5a7 7 0 1 0 0 14 7 7 0 0 0 0-14zm0 1.25a5.75 5.75 0 0 1 0 11.5 5.75 5.75 0 0 1 0-11.5z"/>
+        <path id="hands" d="M15.605 14.08s-1.674-1.36-2.81-2.15c.504-1.683 1.194-4.605 1.194-4.605s-3.057 3.765-3.427 4.703c-.325.82 1.024 1.55 1.647 1.178 1.335.387 3.394.873 3.394.873z"/>
     </g>
 </svg>
index bc875bd..3e94b3a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/clock.png and b/resources/lib/oojs-ui/themes/apex/images/icons/clock.png differ
index 04d9492..2a94493 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="clock">
-        <path id="circle" d="m 12,5 c -3.865993,0 -7,3.1340068 -7,7 0,3.865993 3.134007,7 7,7 3.865993,0 7,-3.134007 7,-7 0,-3.8659932 -3.134007,-7 -7,-7 z m 0,1.25 c 3.174708,0 5.75,2.5752917 5.75,5.75 0,3.174708 -2.575292,5.75 -5.75,5.75 C 8.825292,17.75 6.25,15.174708 6.25,12 6.25,8.8252917 8.825292,6.25 12,6.25 z" />
-        <path id="hands" d="m 15.605461,14.078994 c 0,0 -1.674293,-1.358389 -2.811549,-2.149554 0.505447,-1.682718 1.194821,-4.6044835 1.194821,-4.6044835 0,0 -3.053744,3.7648795 -3.423703,4.7027645 -0.32503,0.819947 1.024233,1.55074 1.646915,1.177972 1.333819,0.386808 3.393516,0.873301 3.393516,0.873301 z" />
+        <path id="circle" d="M12 5a7 7 0 1 0 0 14 7 7 0 0 0 0-14zm0 1.25a5.75 5.75 0 0 1 0 11.5 5.75 5.75 0 0 1 0-11.5z"/>
+        <path id="hands" d="M15.605 14.08s-1.674-1.36-2.81-2.15c.504-1.683 1.194-4.605 1.194-4.605s-3.057 3.765-3.427 4.703c-.325.82 1.024 1.55 1.647 1.178 1.335.387 3.394.873 3.394.873z"/>
     </g>
 </svg>
index 6e678e2..98584c0 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/code.png and b/resources/lib/oojs-ui/themes/apex/images/icons/code.png differ
index d3893b0..a00d158 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24">
     <g id="code">
-        <path id="left-bracket" d="M4 12v-1h1c1 0 1 0 1-1V7.614c0-.514.024-.896.073-1.142.054-.252.14-.463.257-.633.204-.28.473-.48.808-.588C7.473 5.14 8.01 5 8.973 5H10v1h-.752c-.457 0-.77.19-.936.408C8.145 6.623 8 6.853 8 7.476v1.857c0 .73-.04 1.18-.244 1.493-.2.307-.562.53-1.09.667.535.155.9.385 1.096.688.2.307.238.76.238 1.488v1.862c0 .62.145.847.312 1.06.166.22.48.407.936.407L10 17v1H8.973c-.963 0-1.5-.133-1.835-.248-.335-.11-.604-.307-.808-.59-.118-.166-.203-.375-.257-.626-.05-.253-.073-.636-.073-1.15V13c0-1 0-1-1-1H4z"/>
+        <path id="left-bracket" d="M4 12v-1h1c1 0 1 0 1-1V7.614c0-.514.024-.896.073-1.142.054-.252.14-.463.257-.633.204-.28.473-.48.808-.59.335-.11.872-.25 1.835-.25H10v1h-.752c-.457 0-.77.19-.936.406-.167.216-.312.446-.312 1.07v1.856c0 .73-.04 1.18-.244 1.493-.2.307-.562.53-1.09.667.535.155.9.385 1.096.688.2.31.238.76.238 1.49v1.86c0 .62.145.85.312 1.06.166.22.48.41.936.41H10v1H8.973c-.963 0-1.5-.133-1.835-.248a1.578 1.578 0 0 1-.808-.59 1.68 1.68 0 0 1-.257-.626C6.023 16.283 6 15.9 6 15.386V13c0-1 0-1-1-1H4z"/>
         <use transform="matrix(-1 0 0 1 24 0)" id="right-bracket" width="24" height="24" xlink:href="#left-bracket"/>
     </g>
 </svg>
index 265a3e4..959637a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/comment.png and b/resources/lib/oojs-ui/themes/apex/images/icons/comment.png differ
index c52ce1c..861611a 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="comment">
-        <path id="speech-bubble" d="M15 6H9C7.343 6 6 7.344 6 9v4c0 1.656 1.343 3 3 3v3l3-3h3c1.657 0 3-1.344 3-3V9c0-1.656-1.343-3-3-3z"/>
+        <path id="speech-bubble" d="M15 6H9a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3v3l3-3h3a3 3 0 0 0 3-3V9a3 3 0 0 0-3-3z"/>
     </g>
 </svg>
index 4cd6cda..02ab6e4 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="Layer_3">
-        <path d="M17 2L5 14l-1 5 5-1L21 6c0-2-2-4-4-4zM7.2 15.5c-.3-.3-.7-.6-1-.8C8.5 12.4 17.5 3.3 17.5 3.3c.4.1.7.3 1 .7L7.2 15.5z"/>
-    </g>
+    <path d="M17 2L5 14l-1 5 5-1L21 6c0-2-2-4-4-4zM7.2 15.5c-.3-.3-.7-.6-1-.8C8.5 12.4 17.5 3.3 17.5 3.3c.4.1.7.3 1 .7L7.2 15.5z"/>
 </svg>
index 932997b..83033c5 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="Layer_3">
-        <path d="M8 2l12 12 1 5-5-1L4 6c0-2 2-4 4-4zm9.8 13.5c.3-.3.7-.6 1-.8C16.5 12.4 7.5 3.3 7.5 3.3c-.4.1-.7.3-1 .7l11.3 11.5z" id="path173"/>
-    </g>
+    <path d="M8 2l12 12 1 5-5-1L4 6c0-2 2-4 4-4zm9.8 13.5c.3-.3.7-.6 1-.8C16.5 12.4 7.5 3.3 7.5 3.3c-.4.1-.7.3-1 .7l11.3 11.5z"/>
 </svg>
index 1b1cb76..e06e5a0 100644 (file)
@@ -1,8 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="Layer_2">
-        <g id="g184">
-            <path d="M21 4V3s0-3-3-3-3 3-3 3v1h-1v6h8V4zm-1.5 0h-3V3s0-1.5 1.5-1.5c1.48.06 1.5 1.5 1.5 1.5zM13 9.6l-6.8 6.9c-.3-.3-.7-.6-1-.8 1.4-1.4 5-5 7.8-7.9V6l-9 9-1 5 5-1 8-8h-3z" id="path186"/>
-        </g>
-    </g>
+    <path d="M21 4V3s0-3-3-3-3 3-3 3v1h-1v6h8V4zm-1.5 0h-3V3s0-1.5 1.5-1.5c1.48.06 1.5 1.5 1.5 1.5zM13 9.6l-6.8 6.9c-.3-.3-.7-.6-1-.8 1.4-1.4 5-5 7.8-7.9V6l-9 9-1 5 5-1 8-8h-3z"/>
 </svg>
index 84a6816..fb1001f 100644 (file)
@@ -1,8 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="Layer_2">
-        <g id="g184">
-            <path d="M4 4V3s0-3 3-3 3 3 3 3v1h1v6H3V4zm1.5 0h3V3s0-1.5-1.5-1.5C5.52 1.56 5.5 3 5.5 3zM12 9.6l6.8 6.9c.3-.3.7-.6 1-.8-1.4-1.4-5-5-7.8-7.9V6l9 9 1 5-5-1-8-8h3z" id="path186"/>
-        </g>
-    </g>
+    <path d="M4 4V3s0-3 3-3 3 3 3 3v1h1v6H3V4zm1.5 0h3V3s0-1.5-1.5-1.5C5.52 1.56 5.5 3 5.5 3zM12 9.6l6.8 6.9c.3-.3.7-.6 1-.8-1.4-1.4-5-5-7.8-7.9V6l9 9 1 5-5-1-8-8h3z"/>
 </svg>
index 05778cd..50f4214 100644 (file)
@@ -1,11 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g196">
-        <g id="g198">
-            <path d="M14.9 2.8c.9 0 1.8.2 2.7.6.9.4 1.6.9 1.9 1.6-2.8.1-5 1.1-6.6 3.1l1.3 2-6.7-.3L8 3l1.7 2c1.8-1.5 3.5-2.2 5.2-2.2z" id="path200"/>
-        </g>
-    </g>
-    <g id="g204">
-        <path d="M15.2 11.1l-2.6-.1-5.4 5.5c-.3-.3-.7-.6-1-.8.9-.9 2.8-2.8 4.7-4.8H9.1L5 15l-1 5 5-1 7.8-7.8-1.6-.1zM20.6 6c-1.7 0-3.2.5-4.4 1.4l-.9.9.8 1.3.9 1.4 4-4c0-.3-.1-.7-.2-1h-.2z" id="path206"/>
-    </g>
+    <path d="M14.9 2.8c.9 0 1.8.2 2.7.6.9.4 1.6.9 1.9 1.6-2.8.1-5 1.1-6.6 3.1l1.3 2-6.7-.3L8 3l1.7 2c1.8-1.5 3.5-2.2 5.2-2.2z"/>
+    <path d="M15.2 11.1l-2.6-.1-5.4 5.5c-.3-.3-.7-.6-1-.8.9-.9 2.8-2.8 4.7-4.8H9.1L5 15l-1 5 5-1 7.8-7.8-1.6-.1zM20.6 6c-1.7 0-3.2.5-4.4 1.4l-.9.9.8 1.3.9 1.4 4-4c0-.3-.1-.7-.2-1h-.2z"/>
 </svg>
index ac03c05..b7cfed7 100644 (file)
@@ -1,11 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g196">
-        <g id="g198">
-            <path d="M10.1 2.8c-.9 0-1.8.2-2.7.6-.9.4-1.6.9-1.9 1.6 2.8.1 5 1.1 6.6 3.1l-1.3 2 6.7-.3L17 3l-1.7 2c-1.8-1.5-3.5-2.2-5.2-2.2z" id="path200"/>
-        </g>
-    </g>
-    <g id="g204">
-        <path d="M9.8 11.1l2.6-.1 5.4 5.5c.3-.3.7-.6 1-.8-.9-.9-2.8-2.8-4.7-4.8h1.8L20 15l1 5-5-1-7.8-7.8 1.6-.1zM4.4 6c1.7 0 3.2.5 4.4 1.4l.9.9-.8 1.3L8 11 4 7c0-.3.1-.7.2-1h.2z" id="path206"/>
-    </g>
+    <path d="M10.1 2.8c-.9 0-1.8.2-2.7.6-.9.4-1.6.9-1.9 1.6 2.8.1 5 1.1 6.6 3.1l-1.3 2 6.7-.3L17 3l-1.7 2c-1.8-1.5-3.5-2.2-5.2-2.2z"/>
+    <path d="M9.8 11.1l2.6-.1 5.4 5.5c.3-.3.7-.6 1-.8-.9-.9-2.8-2.8-4.7-4.8h1.8L20 15l1 5-5-1-7.8-7.8 1.6-.1zM4.4 6c1.7 0 3.2.5 4.4 1.4l.9.9-.8 1.3L8 11 4 7c0-.3.1-.7.2-1h.2z"/>
 </svg>
index dd36a30..ef7d485 100644 (file)
@@ -1,14 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <g>
-            <path d="M8 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4z"/>
-        </g>
-        <g>
-            <path d="M14 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4z"/>
-        </g>
-        <g>
-            <path d="M20 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4z"/>
-        </g>
-    </g>
+    <path d="M8 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4zM14 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4zM20 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4z"/>
 </svg>
index 9f418b8..0335ea1 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/find-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/find-ltr.png differ
index 67e6943..ef44f57 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="find">
-        <path id="magnifying-glass" d="M13.656 11c-1.92 0-3.5 1.548-3.5 3.47 0 1.92 1.58 3.5 3.5 3.5.75 0 1.432-.253 2-.657l.094.156 2.375 2.37c.19.19.534.154.78-.093s.315-.59.126-.78l-2.37-2.377-.188-.093c.402-.567.655-1.283.655-2.03 0-1.92-1.55-3.47-3.47-3.47zm0 1.656c1.01 0 1.813.8 1.813 1.813 0 1.01-.805 1.84-1.817 1.84-1.01 0-1.844-.83-1.844-1.844s.832-1.814 1.844-1.814z"/>
-        <path id="text" d="M6 5v2h10V5H6zm0 3v2h11V8H6zm0 3v2h3.53c.284-.797.787-1.486 1.44-2H6zm0 3v2h3.53c-.177-.48-.28-.99-.28-1.53 0-.16.046-.315.063-.47H6z"/>
+        <path id="magnifying-glass" d="M13.656 11c-1.92 0-3.5 1.548-3.5 3.47 0 1.92 1.58 3.5 3.5 3.5.75 0 1.432-.253 2-.657l.094.156 2.375 2.37c.19.19.534.15.78-.096s.315-.59.126-.78l-2.37-2.377-.185-.094a3.545 3.545 0 0 0 .655-2.03c0-1.92-1.55-3.47-3.47-3.47zm0 1.656a1.8 1.8 0 0 1 1.813 1.813 1.83 1.83 0 0 1-1.82 1.84c-1.01 0-1.844-.83-1.844-1.847s.832-1.814 1.844-1.814z"/>
+        <path id="text" d="M6 5v2h10V5H6zm0 3v2h11V8H6zm0 3v2h3.53a4.443 4.443 0 0 1 1.44-2H6zm0 3v2h3.53c-.177-.48-.28-.99-.28-1.53 0-.16.046-.315.063-.47H6z"/>
     </g>
 </svg>
index b63eb84..2a56ff6 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/find-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/find-rtl.png differ
index 962165d..51fd39b 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="find">
-        <path id="magnifying-glass" d="M11.344 11c1.92 0 3.5 1.548 3.5 3.47 0 1.92-1.58 3.5-3.5 3.5-.75 0-1.432-.253-2-.657l-.094.156-2.375 2.37c-.19.19-.534.154-.78-.093s-.315-.59-.126-.78l2.37-2.377.188-.093c-.402-.567-.655-1.283-.655-2.03 0-1.92 1.55-3.47 3.47-3.47zm0 1.656c-1.01 0-1.813.8-1.813 1.813 0 1.01.805 1.84 1.817 1.84 1.01 0 1.844-.83 1.844-1.844s-.832-1.814-1.844-1.814z"/>
-        <path id="text" d="M19 5v2H9V5zm0 3v2H8V8zm0 3v2h-3.53c-.284-.797-.787-1.486-1.44-2zm0 3v2h-3.53c.177-.48.28-.99.28-1.53 0-.16-.046-.315-.063-.47z"/>
+        <path id="magnifying-glass" d="M11.344 11c1.92 0 3.5 1.548 3.5 3.47 0 1.92-1.58 3.5-3.5 3.5-.75 0-1.432-.253-2-.657l-.094.156-2.375 2.37c-.19.19-.534.15-.78-.096s-.315-.59-.126-.78l2.37-2.377.185-.094a3.545 3.545 0 0 1-.655-2.03c0-1.92 1.55-3.47 3.47-3.47zm0 1.656A1.8 1.8 0 0 0 9.53 14.47c0 1.01.806 1.84 1.818 1.84 1.01 0 1.844-.83 1.844-1.845s-.832-1.814-1.844-1.814z"/>
+        <path id="text" d="M19 5v2H9V5zm0 3v2H8V8zm0 3v2h-3.53a4.443 4.443 0 0 0-1.44-2zm0 3v2h-3.53c.177-.48.28-.99.28-1.53 0-.16-.046-.315-.063-.47z"/>
     </g>
 </svg>
index bcd728e..1097561 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M14 6.5V5c-1.4-1.5-5.2-1.2-6 0V4H7v15h1v-7c.8-.8 3.4-.9 5-.5V13c1.2 1.5 4.3 1.2 5 0V6c-.7.7-2.7.9-4 .5z" id="path216"/>
+    <path d="M14 6.5V5c-1.4-1.5-5.2-1.2-6 0V4H7v15h1v-7c.8-.8 3.4-.9 5-.5V13c1.2 1.5 4.3 1.2 5 0V6c-.7.7-2.7.9-4 .5z"/>
 </svg>
index 3a93b6f..0f7e7ce 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M11 6.5V5c1.4-1.5 5.2-1.2 6 0V4h1v15h-1v-7c-.8-.8-3.4-.9-5-.5V13c-1.2 1.5-4.3 1.2-5 0V6c.7.7 2.7.9 4 .5z" id="path216"/>
+    <path d="M11 6.5V5c1.4-1.5 5.2-1.2 6 0V4h1v15h-1v-7c-.8-.8-3.4-.9-5-.5V13c-1.2 1.5-4.3 1.2-5 0V6c.7.7 2.7.9 4 .5z"/>
 </svg>
index 87245de..fae0da1 100644 (file)
@@ -1,16 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g2990">
-        <g id="Layer_1">
-            <path id="path227" d="M14 6.5V5c-1.4-1.5-5.2-1.2-6 0V4H7v15h1v-7c.8-.8 3.4-.9 5-.5V13c1.2 1.5 4.3 1.2 5 0V6c-.7.7-2.7.9-4 .5z"/>
-        </g>
-        <g id="Layer_2">
-            <g id="g230">
-                <path id="path232" d="M17.997 1.99l.99.99-15.98 15.98-.99-.99z"/>
-            </g>
-            <g id="g234">
-                <path id="path236" d="M17 1.016l.99.99-15.98 15.98-.99-.99z" fill="#fff"/>
-            </g>
-        </g>
-    </g>
+    <path d="M14 6.5V5c-1.4-1.5-5.2-1.2-6 0V4H7v15h1v-7c.8-.8 3.4-.9 5-.5V13c1.2 1.5 4.3 1.2 5 0V6c-.7.7-2.7.9-4 .5z"/>
+    <path d="M17.997 1.99l.99.99-15.98 15.98-.99-.99z"/>
+    <path d="M17 1.016l.99.99-15.98 15.98-.99-.99z" fill="#fff"/>
 </svg>
index 06da23a..0b14c25 100644 (file)
@@ -1,16 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g2990">
-        <g id="Layer_1">
-            <path id="path227" d="M11 6.5V5c1.4-1.5 5.2-1.2 6 0V4h1v15h-1v-7c-.8-.8-3.4-.9-5-.5V13c-1.2 1.5-4.3 1.2-5 0V6c.7.7 2.7.9 4 .5z"/>
-        </g>
-        <g id="Layer_2">
-            <g id="g230">
-                <path id="path232" d="M7.003 1.99l-.99.99 15.98 15.98.99-.99z"/>
-            </g>
-            <g id="g234">
-                <path id="path236" d="M8 1.016l-.99.99 15.98 15.98.99-.99z" fill="#fff"/>
-            </g>
-        </g>
-    </g>
+    <path d="M11 6.5V5c1.4-1.5 5.2-1.2 6 0V4h1v15h-1v-7c-.8-.8-3.4-.9-5-.5V13c-1.2 1.5-4.3 1.2-5 0V6c.7.7 2.7.9 4 .5z"/>
+    <path d="M7.003 1.99l-.99.99 15.98 15.98.99-.99z"/>
+    <path d="M8 1.016l-.99.99 15.98 15.98.99-.99z" fill="#fff"/>
 </svg>
index 3ea25f4..40d01b4 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M11 13L5 6h15l-6 7v7c-1.7 0-3-1.3-3-3v-4z"/>
-    </g>
+    <path d="M11 13L5 6h15l-6 7v7c-1.7 0-3-1.3-3-3v-4z"/>
 </svg>
index 8d5bf44..df863b9 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M11 13L5 6h15l-6 7v7c-1.7 0-3-1.3-3-3v-4z"/>
-    </g>
+    <path d="M11 13L5 6h15l-6 7v7c-1.7 0-3-1.3-3-3v-4z"/>
 </svg>
index 1fa603f..d960a65 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g256">
-        <path d="M14 13l6-7H5l6 7v7c1.7 0 3-1.3 3-3v-4z" id="path258"/>
-    </g>
+    <path d="M14 13l6-7H5l6 7v7c1.7 0 3-1.3 3-3v-4z"/>
 </svg>
index ec54b1b..4eade2d 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g256">
-        <path d="M14 13l6-7H5l6 7v7c1.7 0 3-1.3 3-3v-4z" id="path258"/>
-    </g>
+    <path d="M14 13l6-7H5l6 7v7c1.7 0 3-1.3 3-3v-4z"/>
 </svg>
index 825435d..a77dca2 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="help">
-        <path id="circle" d="M12 2.085c-5.477 0-9.915 4.438-9.915 9.916 0 5.48 4.438 9.918 9.916 9.918 5.48 0 9.918-4.438 9.918-9.914 0-5.477-4.438-9.915-9.914-9.915zm.002 18c-4.465 0-8.084-3.62-8.084-8.083 0-4.465 3.62-8.084 8.084-8.084 4.464 0 8.083 3.62 8.083 8.084 0 4.464-3.62 8.083-8.083 8.083z"/>
+        <path id="circle" d="M12 2.085c-5.477 0-9.915 4.438-9.915 9.916 0 5.48 4.438 9.92 9.916 9.92 5.48 0 9.92-4.44 9.92-9.913 0-5.477-4.44-9.915-9.913-9.915zm.002 18a8.084 8.084 0 1 1 0-16.168 8.084 8.084 0 0 1 0 16.168z"/>
         <g id="question-mark">
             <path id="top" d="M11.766 6.688c-2.5 0-3.22 2.188-3.22 2.188l1.412.854s.298-.79.9-1.23c.517-.374 1.626-.624 2.22.126.7.885-.17 1.587-1.078 2.72C11.047 12.53 11 15 11 15h1.97s.134-2.318 1.04-3.38c.603-.708 1.443-1.34 1.443-2.495s-1.187-2.437-3.687-2.437z"/>
             <path id="bottom" d="M11 16h2v2h-2z"/>
index 0d8052f..278b906 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="help">
-        <path id="circle" d="M12 2.085c5.477 0 9.915 4.438 9.915 9.916 0 5.48-4.438 9.918-9.916 9.918-5.48 0-9.918-4.438-9.918-9.914 0-5.477 4.438-9.915 9.914-9.915zm-.002 18c4.465 0 8.084-3.62 8.084-8.083 0-4.465-3.62-8.084-8.084-8.084-4.464 0-8.083 3.62-8.083 8.084 0 4.464 3.62 8.083 8.083 8.083z"/>
+        <path id="circle" d="M12 2.085c5.477 0 9.915 4.438 9.915 9.916 0 5.48-4.438 9.92-9.916 9.92-5.48 0-9.92-4.44-9.92-9.913 0-5.477 4.44-9.915 9.913-9.915zm-.002 18a8.084 8.084 0 1 0 0-16.168 8.084 8.084 0 0 0 0 16.168z"/>
         <g id="question-mark">
             <path id="top" d="M12.234 6.688c2.5 0 3.22 2.188 3.22 2.188l-1.412.854s-.298-.79-.9-1.23c-.517-.374-1.626-.624-2.22.126-.7.885.17 1.587 1.078 2.72C12.953 12.53 13 15 13 15h-1.97s-.134-2.318-1.04-3.38c-.603-.708-1.443-1.34-1.443-2.495 0-1.156 1.187-2.437 3.687-2.437z"/>
             <path id="bottom" d="M13 16h-2v2h2z"/>
index 0e177ab..95686fb 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/history.png and b/resources/lib/oojs-ui/themes/apex/images/icons/history.png differ
index 10d1b81..68beaa1 100644 (file)
@@ -2,6 +2,6 @@
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="history">
         <path id="clock-hands" d="M17.26 15.076s-2.385-1.935-4.005-3.062c.72-2.397 1.702-6.56 1.702-6.56s-4.35 5.364-4.877 6.7c-.463 1.168 1.46 2.21 2.346 1.678 1.9.55 4.834 1.244 4.834 1.244z"/>
-        <path id="arrow" d="M12.086 2.085C6.608 2.085 2.17 6.523 2.17 12c0 1.784.476 3.455 1.3 4.9l-2.22 2.04h5.688v-5.22L4.87 15.616c-.55-1.088-.866-2.312-.866-3.615 0-4.46 3.62-8.08 8.084-8.08 4.464 0 8.083 3.62 8.083 8.084 0 4.465-3.615 8.084-8.08 8.084-1.144 0-2.23-.247-3.212-.678l-.833 1.633c1.235.557 2.602.874 4.045.874C17.562 21.914 22 17.477 22 12c0-5.477-4.438-9.915-9.914-9.915z"/>
+        <path id="arrow" d="M12.086 2.085C6.608 2.085 2.17 6.523 2.17 12a9.86 9.86 0 0 0 1.3 4.9l-2.22 2.04h5.688v-5.22L4.87 15.616A7.982 7.982 0 0 1 4.004 12a8.084 8.084 0 0 1 16.167.004 8.08 8.08 0 0 1-8.08 8.085 7.975 7.975 0 0 1-3.21-.68L8.05 21.04a9.81 9.81 0 0 0 4.045.874C17.563 21.914 22 17.476 22 12c0-5.477-4.438-9.915-9.914-9.915z"/>
     </g>
 </svg>
index 281ede8..00bcd21 100644 (file)
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="image">
-        <path id="frame" d="M4 5v13h16v-13zm15 12h-14v-11h14z"/>
-        <path id="mountains" d="M9.5 10l2.328 2.312-1.312 1.094.875 1.032 4.109-3.438 2.5 2v3h-12v-2.5z"/>
-        <path id="sky" d="M9.516 7.844l3.046 3.172 2.938-2.016 2.5 2v-4h-12v5z"/>
+        <path id="frame" d="M4 5v13h16V5zm15 12H5V6h14z"/>
+        <path id="mountains" d="M9.5 10l2.328 2.312-1.312 1.094.875 1.032L15.5 11l2.5 2v3H6v-2.5z"/>
+        <path id="sky" d="M9.516 7.844l3.046 3.172L15.5 9l2.5 2V7H6v5z"/>
     </g>
 </svg>
index c0ccea6..c1970e4 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="imageGallery">
-       <path d="M7 8v11h14V8zm13 10H8V9h12zM9 14.945l2.917-2.723 1.94 1.8-1.094.85.73 1.024L16.917 13 19 14.556V17H9zm0-1.167l2.93-3.232 2.538 2.467 2.45-1.568L19 13v-3H9zM19 6v1H6v10H5V6zM3 4h14v1H4v10H3z"/>
-    </g>
+    <path d="M7 8v11h14V8zm13 10H8V9h12zM9 14.945l2.917-2.723 1.94 1.8-1.094.85.73 1.024L16.917 13 19 14.556V17H9zm0-1.167l2.93-3.232 2.538 2.467 2.45-1.568L19 13v-3H9zM19 6v1H6v10H5V6zM3 4h14v1H4v10H3z" id="imageGallery"/>
 </svg>
index a664aaf..90298d2 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="imageGallery">
-       <path d="M17 8v11H3V8zM4 18h12V9H4zm11-3.055l-2.917-2.723-1.94 1.8 1.094.85-.73 1.024L7.083 13 5 14.556V17h10zm0-1.167l-2.93-3.232-2.538 2.467-2.45-1.568L5 13v-3h10zM5 6v1h13v10h1V6zm16-2H7v1h13v10h1z"/>
-    </g>
+    <path d="M17 8v11H3V8zM4 18h12V9H4zm11-3.055l-2.917-2.723-1.94 1.8 1.094.85-.73 1.024L7.083 13 5 14.556V17h10zm0-1.167l-2.93-3.232-2.538 2.467-2.45-1.568L5 13v-3h10zM5 6v1h13v10h1V6zm16-2H7v1h13v10h1z" id="imageGallery"/>
 </svg>
index a7bb6ec..9de6d98 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/indent-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/indent-ltr.png differ
index 87da9ef..cb23877 100644 (file)
@@ -2,8 +2,8 @@
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="indent-list-ltr">
         <path id="arrow" d="M5 15.08l4.794-3.528-4.704-3.6L5.08 10H3v3h2z"/>
-        <path id="bottom_line" d="M20 17H4c-.553 0-1 .447-1 1v1c0 .553.447 1 1 1h16c.553 0 1-.447 1-1v-1c0-.553-.447-1-1-1z"/>
-        <path id="middle_line" d="M20 10h-7c-.553 0-1 .447-1 1v1c0 .553.447 1 1 1h7c.553 0 1-.447 1-1v-1c0-.553-.447-1-1-1z"/>
-        <path id="top_line" d="M20 3H4c-.553 0-1 .447-1 1v1c0 .553.447 1 1 1h16c.553 0 1-.447 1-1V4c0-.553-.447-1-1-1z"/>
+        <path id="bottom_line" d="M20 17H4a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1z"/>
+        <path id="middle_line" d="M20 10h-7a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1h7a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1z"/>
+        <path id="top_line" d="M20 3H4a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1z"/>
     </g>
 </svg>
index 77cc212..c6527ee 100644 (file)
@@ -2,8 +2,8 @@
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="indent-list-rtl">
         <path id="arrow" d="M19 15.08l-4.794-3.528 4.704-3.6.01 2.048H21v3h-2z"/>
-        <path id="bottom_line" d="M4 17h16c.553 0 1 .447 1 1v1c0 .553-.447 1-1 1H4c-.553 0-1-.447-1-1v-1c0-.553.447-1 1-1z"/>
-        <path id="middle_line" d="M4 10h7c.553 0 1 .447 1 1v1c0 .553-.447 1-1 1H4c-.553 0-1-.447-1-1v-1c0-.553.447-1 1-1z"/>
-        <path id="top_line_5_" d="M4 3h16c.553 0 1 .447 1 1v1c0 .553-.447 1-1 1H4c-.553 0-1-.447-1-1V4c0-.553.447-1 1-1z"/>
+        <path id="bottom_line" d="M4 17h16a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1z"/>
+        <path id="middle_line" d="M4 10h7a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1z"/>
+        <path id="top_line_5_" d="M4 3h16a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1z"/>
     </g>
 </svg>
index 6cff2ff..72a9b4c 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="info">
-        <path id="circled-i" d="M11.5 17C8.462 17 6 14.536 6 11.5 6 8.463 8.462 6 11.5 6c3.036 0 5.5 2.462 5.5 5.5 0 3.036-2.464 5.5-5.5 5.5zm0-12C7.91 5 5 7.91 5 11.5S7.91 18 11.5 18s6.5-2.91 6.5-6.5S15.09 5 11.5 5zm.5 5v4h1v1h-3v-1h1v-3h-1v-1zm-1-2h1v1h-1z"/>
+        <path id="circled-i" d="M11.5 17a5.5 5.5 0 1 1 0-11 5.5 5.5 0 0 1 0 11zm0-12a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13zm.5 5v4h1v1h-3v-1h1v-3h-1v-1zm-1-2h1v1h-1z"/>
     </g>
 </svg>
index 9f603ea..ce99ac7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/italic-arab-keheh-jeem.png and b/resources/lib/oojs-ui/themes/apex/images/icons/italic-arab-keheh-jeem.png differ
index 99980c0..11b1458 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="italic-arab-keheh-jeem">
-        <path id="arab-keheh-jeem" d="M18.125 5.844c-1.695.555-3.297 1.162-4.594 1.938-.49.3-.77.712-.87 1.125-.065.263-.036.572.062.78.19.406.54.575.844.814l.094-.12.53.624c.14.165.344.514.47.94.137.462.08.724 0 1.124h-3.44c-.34 0-.593.007-.767-.02-.34-.053-.256-.208-.234-.34.33-.127.56-.173.934-.14.29-.495.593-.886.906-1.314-.98.037-1.877.015-2.687-.094-.346-.048-.698-.187-1.094-.157-.358.026-.77.24-1.03.72-.248.447-.436.838-.658 1.28l.75-.47c.23-.14.484-.226.72-.218.156.005.274.054.405.094-.233.203-.51.4-.72.56-.3.26-.703.69-.907 1-.402.616-.693 1.085-.874 1.78-.18.69.003 1.34.468 1.75.426.378.846.52 1.28.565.65.065 1.206.093 2-.188.658-.23 1.022-.553 1.5-.97-.882.11-1.816.09-2.53.032-.87-.07-1.268-.385-1.47-.595-.27-.283-.306-.64-.155-1.22.035-.14.096-.322.25-.53.17-.228.363-.435.593-.656.45-.437 1.01-.738 1.46-.94-.044.206-.106.443-.054.688.05.23.25.38.44.47.26.12.505.153.69.154 1.42.01 2.86 0 4.28 0 .245 0 .45-.163.592-.375.14-.21.25-.48.344-.845.13-.5.094-1.062-.094-1.625-.182-.543-.418-1.01-.72-1.406-.334-.442-.673-.83-1-1.22 1.258-.813 2.717-1.237 3.97-1.686.12-.452.224-.926.313-1.313zm-9.47 8.438c-.26.394-.583.69-.874 1 .38.286.75.556 1.098.813.335-.303.626-.674.875-.97-.39-.267-.77-.587-1.093-.843z"/>
+        <path id="arab-keheh-jeem" d="M18.125 5.844c-1.695.555-3.297 1.162-4.594 1.938-.49.3-.77.712-.87 1.125a1.26 1.26 0 0 0 .065.78c.19.406.54.575.844.814l.093-.12.53.627c.14.165.345.514.47.94.138.462.08.724 0 1.124h-3.44c-.34 0-.592.007-.766-.02-.34-.053-.256-.21-.234-.34.33-.127.56-.173.934-.14.29-.495.593-.886.906-1.314-.98.037-1.877.015-2.687-.094-.346-.046-.698-.185-1.094-.155-.36.026-.77.24-1.03.72-.25.447-.436.838-.66 1.28l.75-.47c.23-.14.486-.226.72-.218.158.004.276.053.407.093-.234.204-.51.4-.72.56-.3.26-.704.69-.908 1-.403.617-.694 1.086-.875 1.78-.18.69.003 1.34.468 1.75.426.38.846.52 1.28.566.65.064 1.206.092 2-.19.658-.23 1.022-.552 1.5-.97-.882.11-1.816.09-2.53.033-.87-.07-1.268-.386-1.47-.596-.27-.283-.306-.64-.155-1.22a1.44 1.44 0 0 1 .25-.53c.17-.228.363-.435.593-.656.45-.436 1.01-.737 1.46-.94-.042.207-.104.444-.052.69.05.23.25.38.44.47.26.12.506.152.69.153 1.42.01 2.86 0 4.28 0 .246 0 .45-.163.593-.375.14-.21.25-.48.343-.845.13-.5.094-1.062-.094-1.625a4.812 4.812 0 0 0-.72-1.406c-.336-.444-.675-.83-1-1.22 1.256-.815 2.715-1.24 3.97-1.688.12-.452.222-.926.31-1.313zm-9.47 8.438c-.26.394-.583.69-.874 1 .38.286.75.556 1.1.813.336-.303.627-.674.876-.97-.39-.267-.77-.587-1.093-.843z"/>
     </g>
 </svg>
index 03493be..258699c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/italic-arab-meem.png and b/resources/lib/oojs-ui/themes/apex/images/icons/italic-arab-meem.png differ
index a9c7def..f15586e 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="italic-arab-meem">
-        <path id="arab-meem" d="M16 9.73l-.93 2.19h-4.663c-.48 0-.857.12-1.135.366l-.06.11c-.185 2.016-.503 3.558-.956 4.627-.272.64-.633 1.252-1.082 1.833-.177.226-.22.186-.126-.12l.142-.503.17-.67.234-.87.002-.008.202-1.045.258-1.41.353-1.907c.19-.312.42-.638.695-.98.276-.342.59-.706.94-1.09.13-.092.697-.18 1.705-.266 1.05-.086 1.64-.183 1.766-.293l.065-.128c.01-.11-.01-.24-.052-.394-.044-.153-.12-.327-.232-.522-.22-.428-.438-.64-.654-.64-.293 0-.914.268-1.863.805-.36.208-.377.125-.05-.247 1.556-1.71 2.706-2.566 3.45-2.566.38 0 .67.13.86.394.135.195.25.6.344 1.21l.203 1.2c.105.586.24.895.408.925"/>
+        <path id="arab-meem" d="M16 9.73l-.93 2.19h-4.663c-.48 0-.857.12-1.135.366l-.06.11c-.185 2.016-.503 3.558-.956 4.627a8.31 8.31 0 0 1-1.082 1.833c-.177.226-.22.186-.126-.12l.142-.503.17-.67.234-.87.002-.008.202-1.045.258-1.41.353-1.907c.19-.312.42-.638.692-.98a24.1 24.1 0 0 1 .94-1.09c.13-.092.697-.18 1.705-.266 1.05-.086 1.64-.183 1.765-.293l.065-.128c.01-.11-.01-.24-.052-.394a2.403 2.403 0 0 0-.232-.522c-.22-.428-.438-.64-.654-.64-.294 0-.915.268-1.864.805-.36.208-.378.125-.05-.247 1.555-1.71 2.705-2.566 3.45-2.566.38 0 .67.13.86.394.134.195.25.6.343 1.21l.202 1.2c.105.586.24.895.408.925"/>
     </g>
 </svg>
index b5e55cc..c9546eb 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/italic-armn-sha.png and b/resources/lib/oojs-ui/themes/apex/images/icons/italic-armn-sha.png differ
index a653a27..c32ff49 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="italic-armn-sha">
-        <path id="armn-sha" d="M11.564 7.678c-.268-.13-.578-.22-.93-.268-.35-.047-.75-.07-1.197-.07h-1.11L8.587 6h1.723c.558 0 1.042.032 1.45.095.416.063.794.173 1.136.33l4.483 2.033-.328 1.67-2.624-1.165c-.126-.058-.27-.103-.433-.134-.164-.04-.356-.06-.576-.06-.583 0-1.137.094-1.663.283-.526.19-1 .46-1.427.812-.42.35-.776.78-1.07 1.283-.294.504-.504 1.074-.63 1.71-.24 1.255-.15 2.21.27 2.87.424.65 1.19.976 2.292.976.55 0 1.045-.08 1.48-.237.437-.157.815-.378 1.136-.66.325-.29.59-.634.795-1.034.21-.4.362-.84.457-1.323l.11-.56h1.6l-.12.59c-.13.674-.356 1.288-.676 1.845-.32.55-.725 1.024-1.214 1.423-.488.395-1.053.7-1.694.923-.643.216-1.344.324-2.106.324-.767 0-1.434-.114-2-.34-.568-.226-1.025-.554-1.372-.985-.347-.436-.573-.97-.678-1.607-.105-.637-.078-1.364.08-2.184.125-.66.346-1.274.66-1.836.316-.568.697-1.067 1.144-1.497.445-.436.944-.794 1.496-1.072.55-.283 1.13-.474 1.733-.574l-.466-.23"/>
+        <path id="armn-sha" d="M11.564 7.678a3.073 3.073 0 0 0-.93-.268c-.35-.047-.75-.07-1.197-.07h-1.11L8.587 6h1.723c.558 0 1.042.032 1.45.095.416.063.794.173 1.136.33l4.483 2.033-.33 1.67-2.625-1.165a1.867 1.867 0 0 0-.433-.134 2.45 2.45 0 0 0-.576-.06 4.88 4.88 0 0 0-1.663.28c-.526.19-1 .46-1.427.812-.42.35-.776.78-1.07 1.283a5.48 5.48 0 0 0-.63 1.71c-.24 1.255-.15 2.21.27 2.87.424.65 1.19.976 2.292.976.55 0 1.044-.08 1.48-.236a3.488 3.488 0 0 0 1.135-.66c.325-.29.59-.634.795-1.034.21-.4.363-.84.458-1.322l.11-.56h1.6l-.12.59a5.925 5.925 0 0 1-.676 1.844 5.19 5.19 0 0 1-1.214 1.423c-.488.395-1.053.7-1.694.923a6.573 6.573 0 0 1-2.106.324c-.767 0-1.434-.114-2-.34-.568-.226-1.025-.554-1.372-.985-.347-.437-.573-.97-.678-1.608-.105-.64-.078-1.366.08-2.186.125-.66.346-1.274.66-1.836A6.332 6.332 0 0 1 8.792 9.54a5.955 5.955 0 0 1 1.496-1.072 5.87 5.87 0 0 1 1.732-.57l-.465-.23"/>
     </g>
 </svg>
index f46dea5..1bb9cdb 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/italic-c.png and b/resources/lib/oojs-ui/themes/apex/images/icons/italic-c.png differ
index 0a0d110..b85eb02 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="italic-c">
-        <path id="c" d="M15.008 13.718l1.48.214c-.467 1.34-1.15 2.354-2.045 3.04-.896.686-1.9 1.03-3.015 1.03-1.36 0-2.438-.43-3.237-1.29C7.4 15.85 7 14.618 7 13.012c0-2.09.606-3.817 1.817-5.184C9.897 6.61 11.237 6 12.84 6c1.186 0 2.145.33 2.878.99.738.66 1.165 1.546 1.282 2.66l-1.397.135c-.148-.84-.453-1.464-.916-1.876-.458-.42-1.05-.63-1.78-.63-1.368 0-2.475.63-3.32 1.893-.733 1.087-1.1 2.377-1.1 3.87 0 1.194.283 2.104.848 2.732.565.628 1.3.942 2.206.942.778 0 1.477-.26 2.1-.785.63-.522 1.08-1.26 1.37-2.216"/>
+        <path id="c" d="M15.008 13.718l1.48.214c-.467 1.34-1.15 2.354-2.045 3.04a4.835 4.835 0 0 1-3.015 1.03c-1.36 0-2.438-.43-3.237-1.29C7.4 15.85 7 14.618 7 13.012c0-2.09.606-3.817 1.817-5.184C9.897 6.61 11.237 6 12.84 6c1.186 0 2.145.33 2.878.99.738.66 1.165 1.546 1.282 2.66l-1.397.135c-.148-.84-.453-1.464-.916-1.876-.458-.42-1.05-.63-1.78-.63-1.368 0-2.475.63-3.32 1.89-.733 1.087-1.1 2.377-1.1 3.87 0 1.194.283 2.104.848 2.732.565.628 1.3.942 2.206.942.78 0 1.48-.26 2.1-.785.63-.52 1.08-1.26 1.37-2.216"/>
     </g>
 </svg>
index 4ace3f3..0f102b2 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/italic-d.png and b/resources/lib/oojs-ui/themes/apex/images/icons/italic-d.png differ
index feadca0..dbc1d40 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="italic-d">
-        <path id="d" d="M7 18L9.462 6h3.557c.85 0 1.5.063 1.95.188.645.17 1.195.472 1.65.91.457.43.8.97 1.03 1.62.23.65.347 1.378.347 2.186 0 .966-.146 1.847-.436 2.644-.283.79-.66 1.49-1.126 2.095-.46.6-.947 1.072-1.456 1.416-.504.334-1.1.585-1.794.75-.526.125-1.172.19-1.94.19H7m1.86-1.36h1.866c.842 0 1.59-.08 2.245-.24.41-.097.76-.242 1.05-.433.38-.247.727-.57 1.038-.975.408-.535.732-1.143.974-1.825.247-.687.37-1.467.37-2.34 0-.97-.166-1.716-.5-2.235-.332-.524-.755-.87-1.27-1.04-.38-.126-.974-.188-1.78-.188H11L9.095 16.64"/>
+        <path id="d" d="M7 18L9.462 6h3.557c.85 0 1.5.063 1.95.188.642.17 1.192.472 1.65.91.454.43.8.97 1.03 1.62.23.65.344 1.378.344 2.186 0 .966-.146 1.847-.436 2.644-.284.79-.66 1.49-1.127 2.095-.46.6-.946 1.072-1.455 1.416-.504.33-1.1.582-1.794.75-.525.122-1.17.19-1.94.19H7m1.86-1.36h1.866c.842 0 1.59-.08 2.245-.24a3.26 3.26 0 0 0 1.05-.436 4.19 4.19 0 0 0 1.04-.975 6.652 6.652 0 0 0 .975-1.825c.247-.687.37-1.467.37-2.34 0-.97-.166-1.716-.5-2.235-.332-.522-.755-.87-1.27-1.04-.38-.124-.974-.186-1.78-.186H11L9.095 16.64"/>
     </g>
 </svg>
index 7f9da2a..41be11f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/italic-geor-kan.png and b/resources/lib/oojs-ui/themes/apex/images/icons/italic-geor-kan.png differ
index 65670ef..9a54880 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="italic-geor-kan">
-        <path id="geor-kan" d="M15.057 14.663C14.617 16.888 13.223 18 10.88 18 8.96 18 8 17.213 8 15.64c0-.298.036-.624.108-.977.083-.43.245-.836.488-1.217l1.24.605-.206.617c-.055.26-.083.497-.083.712 0 .97.52 1.457 1.564 1.457 1.31 0 2.105-.723 2.387-2.17l.058-.33c.044-.222.066-.426.066-.614 0-.927-.546-1.39-1.64-1.39h-1.115l.248-1.26h1.118c1.203-.004 1.91-.55 2.12-1.64.04-.18.057-.355.057-.52 0-1.144-.9-1.715-2.697-1.715L11.94 6C14.646 6 16 6.877 16 8.627c0 .248-.027.516-.082.803-.204 1.092-1.05 1.824-2.54 2.194l-.033.166c1.23.2 1.845.823 1.845 1.872 0 .21-.025.433-.074.67l-.058.332"/>
+        <path id="geor-kan" d="M15.057 14.663C14.617 16.888 13.223 18 10.88 18 8.96 18 8 17.213 8 15.64c0-.298.036-.624.108-.977.083-.43.245-.836.488-1.217l1.24.605-.206.62c-.055.26-.083.497-.083.71 0 .97.52 1.46 1.564 1.46 1.31 0 2.108-.724 2.39-2.17l.058-.33a3.17 3.17 0 0 0 .066-.615c0-.927-.546-1.39-1.64-1.39H10.87l.247-1.26h1.118c1.203-.004 1.91-.55 2.12-1.64.04-.18.057-.355.057-.52 0-1.144-.9-1.715-2.696-1.715L11.94 6C14.646 6 16 6.877 16 8.627c0 .248-.027.516-.082.803-.204 1.092-1.05 1.824-2.54 2.194l-.033.166c1.23.2 1.845.823 1.845 1.872 0 .21-.025.433-.074.67l-.058.332"/>
     </g>
 </svg>
index 4a7b1fc..030a98e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/italic-s.png and b/resources/lib/oojs-ui/themes/apex/images/icons/italic-s.png differ
index 615e5f2..b3fb340 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="italic-s">
-        <path id="s" d="M16.474 6.59l-.302 1.525c-.522-.28-1.04-.488-1.557-.628-.51-.145-1.007-.217-1.487-.217-.935 0-1.68.204-2.23.612-.554.408-.83.95-.83 1.627 0 .37.1.654.302.86.207.192.733.404 1.58.63l.937.233c1.06.274 1.795.622 2.208 1.046.413.42.62 1.007.62 1.766 0 1.167-.46 2.117-1.38 2.85-.913.734-2.12 1.1-3.617 1.1-.615 0-1.232-.06-1.852-.185-.62-.12-1.242-.3-1.867-.55l.314-1.61c.573.356 1.147.625 1.72.806.578.18 1.154.27 1.728.27.976 0 1.76-.216 2.347-.65.59-.434.883-1 .883-1.697 0-.465-.12-.816-.356-1.054-.233-.243-.737-.462-1.512-.658l-.937-.24c-1.07-.28-1.8-.6-2.19-.964-.39-.367-.584-.878-.584-1.534 0-1.152.442-2.094 1.325-2.828.89-.74 2.043-1.108 3.463-1.108.553 0 1.1.05 1.642.147.542.1 1.085.246 1.627.443"/>
+        <path id="s" d="M16.474 6.59l-.302 1.525a7.36 7.36 0 0 0-1.557-.628 5.432 5.432 0 0 0-1.487-.217c-.935 0-1.68.204-2.23.612-.554.408-.83.95-.83 1.627 0 .37.1.65.302.86.207.19.733.4 1.58.63l.937.23c1.06.274 1.795.622 2.208 1.046.413.42.62 1.007.62 1.766 0 1.167-.46 2.117-1.38 2.85-.913.734-2.12 1.1-3.617 1.1-.615 0-1.232-.06-1.852-.185-.62-.12-1.242-.3-1.867-.55l.31-1.61a7.613 7.613 0 0 0 1.72.805c.58.18 1.155.27 1.73.27.976 0 1.76-.216 2.347-.65.59-.434.883-1 .883-1.697 0-.465-.12-.816-.354-1.054-.233-.242-.737-.46-1.512-.657l-.937-.24c-1.07-.28-1.8-.6-2.19-.964-.39-.368-.584-.88-.584-1.535 0-1.152.442-2.094 1.325-2.828.89-.74 2.043-1.108 3.463-1.108.555 0 1.1.05 1.644.146.542.1 1.085.245 1.627.442"/>
     </g>
 </svg>
index fbd3329..906ee6e 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M9.5 4c3 0 5.5 2.5 5.5 5.5 0 1-.3 1.9-.7 2.8L20 18v2h-4v-2h-2v-2h-2l-1.2-1.2c-.4.1-.9.2-1.3.2-3 0-5.5-2.5-5.5-5.5S6.5 4 9.5 4zM8 9c.8 0 1.5-.7 1.5-1.5S8.8 6 8 6s-1.5.7-1.5 1.5S7.2 9 8 9z" id="path336"/>
+    <path d="M9.5 4c3 0 5.5 2.5 5.5 5.5 0 1-.3 1.9-.7 2.8L20 18v2h-4v-2h-2v-2h-2l-1.2-1.2c-.4.1-.9.2-1.3.2-3 0-5.5-2.5-5.5-5.5S6.5 4 9.5 4zM8 9c.8 0 1.5-.7 1.5-1.5S8.8 6 8 6s-1.5.7-1.5 1.5S7.2 9 8 9z"/>
 </svg>
index 8975b66..6dedfe8 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M9.5 4c3 0 5.5 2.5 5.5 5.5 0 1-.3 1.9-.7 2.8L20 18v2h-4v-2h-2v-2h-2l-1.2-1.2c-.4.1-.9.2-1.3.2-3 0-5.5-2.5-5.5-5.5S6.5 4 9.5 4zM8 9c.8 0 1.5-.7 1.5-1.5S8.8 6 8 6s-1.5.7-1.5 1.5S7.2 9 8 9z" id="path336"/>
+    <path d="M9.5 4c3 0 5.5 2.5 5.5 5.5 0 1-.3 1.9-.7 2.8L20 18v2h-4v-2h-2v-2h-2l-1.2-1.2c-.4.1-.9.2-1.3.2-3 0-5.5-2.5-5.5-5.5S6.5 4 9.5 4zM8 9c.8 0 1.5-.7 1.5-1.5S8.8 6 8 6s-1.5.7-1.5 1.5S7.2 9 8 9z"/>
 </svg>
index 84479e8..238ca48 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M3 7v9c0 1.7 1.3 3 3 3h15V7H3zm8 2h2v2h-2V9zm0 3h2v2h-2v-2zM8 9h2v2H8V9zm0 3h2v2H8v-2zm-1 5H6c-.6 0-1-.4-1-1v-1h2v2zm0-3H5v-2h2v2zm0-3H5V9h2v2zm9 6H8v-2h8v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2zm3 6h-2v-2h2v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2z"/>
-    </g>
+    <path d="M3 7v9c0 1.7 1.3 3 3 3h15V7H3zm8 2h2v2h-2V9zm0 3h2v2h-2v-2zM8 9h2v2H8V9zm0 3h2v2H8v-2zm-1 5H6c-.6 0-1-.4-1-1v-1h2v2zm0-3H5v-2h2v2zm0-3H5V9h2v2zm9 6H8v-2h8v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2zm3 6h-2v-2h2v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2z"/>
 </svg>
index 2bb795e..c4c442e 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M3 7v9c0 1.7 1.3 3 3 3h15V7H3zm8 2h2v2h-2V9zm0 3h2v2h-2v-2zM8 9h2v2H8V9zm0 3h2v2H8v-2zm-1 5H6c-.6 0-1-.4-1-1v-1h2v2zm0-3H5v-2h2v2zm0-3H5V9h2v2zm9 6H8v-2h8v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2zm3 6h-2v-2h2v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2z"/>
-    </g>
+    <path d="M3 7v9c0 1.7 1.3 3 3 3h15V7H3zm8 2h2v2h-2V9zm0 3h2v2h-2v-2zM8 9h2v2H8V9zm0 3h2v2H8v-2zm-1 5H6c-.6 0-1-.4-1-1v-1h2v2zm0-3H5v-2h2v2zm0-3H5V9h2v2zm9 6H8v-2h8v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2zm3 6h-2v-2h2v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2z"/>
 </svg>
index 2700729..8248804 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g346">
-        <path d="M21 7v9c0 1.7-1.3 3-3 3H3V7h18zm-8 2h-2v2h2V9zm0 3h-2v2h2v-2zm3-3h-2v2h2V9zm0 3h-2v2h2v-2zm1 5h1c.6 0 1-.4 1-1v-1h-2v2zm0-3h2v-2h-2v2zm0-3h2V9h-2v2zm-9 6h8v-2H8v2zm0-3h2v-2H8v2zm0-3h2V9H8v2zm-3 6h2v-2H5v2zm0-3h2v-2H5v2zm0-3h2V9H5v2z" id="path348"/>
-    </g>
+    <path d="M21 7v9c0 1.7-1.3 3-3 3H3V7h18zm-8 2h-2v2h2V9zm0 3h-2v2h2v-2zm3-3h-2v2h2V9zm0 3h-2v2h2v-2zm1 5h1c.6 0 1-.4 1-1v-1h-2v2zm0-3h2v-2h-2v2zm0-3h2V9h-2v2zm-9 6h8v-2H8v2zm0-3h2v-2H8v2zm0-3h2V9H8v2zm-3 6h2v-2H5v2zm0-3h2v-2H5v2zm0-3h2V9H5v2z"/>
 </svg>
index b7b47cc..b37d7f4 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g346">
-        <path d="M21 7v9c0 1.7-1.3 3-3 3H3V7h18zm-8 2h-2v2h2V9zm0 3h-2v2h2v-2zm3-3h-2v2h2V9zm0 3h-2v2h2v-2zm1 5h1c.6 0 1-.4 1-1v-1h-2v2zm0-3h2v-2h-2v2zm0-3h2V9h-2v2zm-9 6h8v-2H8v2zm0-3h2v-2H8v2zm0-3h2V9H8v2zm-3 6h2v-2H5v2zm0-3h2v-2H5v2zm0-3h2V9H5v2z" id="path348"/>
-    </g>
+    <path d="M21 7v9c0 1.7-1.3 3-3 3H3V7h18zm-8 2h-2v2h2V9zm0 3h-2v2h2v-2zm3-3h-2v2h2V9zm0 3h-2v2h2v-2zm1 5h1c.6 0 1-.4 1-1v-1h-2v2zm0-3h2v-2h-2v2zm0-3h2V9h-2v2zm-9 6h8v-2H8v2zm0-3h2v-2H8v2zm0-3h2V9H8v2zm-3 6h2v-2H5v2zm0-3h2v-2H5v2zm0-3h2V9H5v2z"/>
 </svg>
index ef61b8b..bdd9abe 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/language-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/language-ltr.png differ
index 4bf074d..4f1fc10 100644 (file)
@@ -2,6 +2,6 @@
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="translation">
         <path id="english" d="M14.34 9l-3.53 10h2.064l.72-2.406h3.624l.72 2.406H20L16.465 9h-2.12zm1.065 1.53L16.75 15h-2.69z"/>
-        <path id="chinese" d="M8.97 4.22c-.43.29-.88.616-1.25.874l.186.312c.14.194.275.393.407.594H4.47v1.47h1.593c.43 1.41 1.11 2.624 2.03 3.624-1.008.664-2.192 1.248-3.624 1.75L4 13c.317.487.714.976 1.03 1.375l.25-.094c1.593-.59 2.91-1.266 4.032-2.06.818.628 1.71 1.158 2.657 1.592l.56-1.624c-.725-.334-1.36-.692-1.905-1.063.284-.28.59-.634.906-1.156.46-.717.777-1.572 1-2.5h1.658V6h-4.063c-.283-.552-.596-1.083-.97-1.53l-.186-.25zM7.72 7.47h3.186c-.32 1.075-.83 1.937-1.53 2.624-.713-.705-1.26-1.568-1.657-2.625zm6.31 5.31l-.467 1.658c.292-.514.577-1.075.812-1.532l-.344-.125z"/>
+        <path id="chinese" d="M8.97 4.22c-.43.29-.88.616-1.25.874l.186.312c.14.194.275.393.407.594H4.47v1.47h1.593c.43 1.41 1.11 2.624 2.03 3.624-1.008.664-2.192 1.248-3.624 1.75L4 13c.317.487.714.976 1.03 1.375l.25-.094c1.593-.59 2.91-1.263 4.032-2.06.818.63 1.71 1.16 2.657 1.595l.56-1.624a13.21 13.21 0 0 1-1.908-1.063c.284-.28.59-.634.906-1.156.46-.716.776-1.57 1-2.5h1.657V6h-4.063c-.283-.552-.596-1.083-.97-1.53l-.186-.25zM7.72 7.47h3.186c-.32 1.075-.83 1.937-1.53 2.624-.713-.705-1.26-1.568-1.657-2.625zm6.31 5.31l-.467 1.658c.292-.514.577-1.075.812-1.532l-.344-.125z"/>
     </g>
 </svg>
index 8cd9282..ed64644 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/language-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/language-rtl.png differ
index 9b1ac39..081252e 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="translation">
-        <path id="english" d="M7.53 9L4 19h2.063l.72-2.406h3.624l.72 2.406h2.062L9.653 9h-2.12zm1.064 1.53L9.938 15H7.25z"/>
-        <path id="chinese" d="M14.594 4.22c-.43.29-.88.616-1.25.874l.187.312c.14.194.276.393.408.594h-3.844v1.47h1.594c.43 1.41 1.11 2.624 2.03 3.624-.662.437-1.413.82-2.25 1.187l.563 1.564c1.11-.48 2.056-1.022 2.908-1.625 1.187.91 2.514 1.63 3.968 2.124l.282.094c.292-.514.577-1.075.812-1.532l-.375-.125c-1.38-.49-2.49-1.052-3.375-1.655.284-.28.59-.634.906-1.156.46-.717.776-1.572 1-2.5h1.657V6H15.75c-.283-.552-.596-1.083-.97-1.53l-.186-.25zm-1.25 3.25h3.187c-.318 1.075-.828 1.937-1.53 2.624-.712-.705-1.26-1.568-1.656-2.625zM9.97 12.874L9.624 13c.196.3.406.594.625.875l-.28-1z"/>
+        <path id="english" d="M7.53 9L4 19h2.063l.72-2.406h3.624l.72 2.406h2.062L9.65 9H7.53zm1.064 1.53L9.938 15H7.25z"/>
+        <path id="chinese" d="M14.594 4.22c-.43.29-.88.616-1.25.874l.187.312c.14.194.28.393.41.594h-3.843v1.47h1.594c.43 1.41 1.11 2.624 2.03 3.624-.662.437-1.413.82-2.25 1.187l.563 1.567a15.882 15.882 0 0 0 2.908-1.625 13.82 13.82 0 0 0 3.97 2.125l.28.094c.293-.514.578-1.075.813-1.532l-.375-.125c-1.38-.49-2.49-1.05-3.375-1.654.284-.28.59-.635.906-1.157.46-.717.775-1.572 1-2.5h1.656V6H15.75c-.283-.552-.596-1.083-.97-1.53l-.186-.25zm-1.25 3.25h3.187c-.315 1.075-.825 1.937-1.53 2.624-.71-.705-1.26-1.568-1.653-2.625zM9.97 12.874L9.624 13c.196.3.406.594.625.875l-.28-1z"/>
     </g>
 </svg>
index 23c9539..e37b390 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="link">
-        <path id="right" d="M19.188 12c0 1.1-.89 2.016-1.988 2.016L13.005 14c.538 1.09.963 2 1.997 2h3C19.658 16 21 13.657 21 12s-1.342-4-2.998-4h-3c-1.034 0-1.46.91-1.998 2l4.195-.016c1.094 0 1.985.917 1.985 2.017z"/>
+        <path id="right" d="M19.188 12c0 1.1-.89 2.016-1.988 2.016L13.005 14c.538 1.09.963 2 1.997 2h3C19.658 16 21 13.657 21 12s-1.342-4-2.998-4h-3c-1.034 0-1.46.91-1.998 2l4.195-.016c1.09 0 1.982.917 1.982 2.017z"/>
         <path id="center" d="M8 12c0 .535.42 1 .938 1h6.11c.517 0 .937-.465.937-1 0-.534-.42-1-.938-1h-6.11C8.42 11 8 11.466 8 12z"/>
         <path id="left" d="M4.816 12c0-1.1.89-2.016 1.988-2.016L11 10c-.54-1.09-.964-2-1.998-2h-3c-1.656 0-2.998 2.343-2.998 4s1.342 4 2.998 4h3c1.034 0 1.46-.91 1.998-2l-4.195.016c-1.098 0-1.99-.917-1.99-2.017z"/>
     </g>
index c449a42..a7655e6 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/listBullet-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/listBullet-ltr.png differ
index d60fc88..94ae5b4 100644 (file)
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="bullet-list-ltr">
-        <path id="bottom_dot" d="M5 10H4c-.552 0-1 .447-1 1v1c0 .553.448 1 1 1h1c.552 0 1-.447 1-1v-1c0-.553-.448-1-1-1z"/>
-        <path id="middle_dot" d="M5 17H4c-.552 0-1 .447-1 1v1c0 .553.448 1 1 1h1c.552 0 1-.447 1-1v-1c0-.553-.448-1-1-1z"/>
-        <path id="top_dot" d="M5 3H4c-.552 0-1 .447-1 1v1c0 .553.448 1 1 1h1c.552 0 1-.447 1-1V4c0-.553-.448-1-1-1z"/>
-        <path id="bottom_line" d="M20 17H9c-.552 0-1 .447-1 1v1c0 .553.448 1 1 1h11c.552 0 1-.447 1-1v-1c0-.553-.448-1-1-1z"/>
-        <path id="middle_line" d="M20 10H9c-.552 0-1 .447-1 1v1c0 .553.448 1 1 1h11c.552 0 1-.447 1-1v-1c0-.553-.448-1-1-1z"/>
-        <path id="top_line" d="M20 3H9c-.552 0-1 .447-1 1v1c0 .553.448 1 1 1h11c.552 0 1-.447 1-1V4c0-.553-.448-1-1-1z"/>
+        <path id="bottom_dot" d="M5 10H4a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1z"/>
+        <path id="middle_dot" d="M5 17H4a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1z"/>
+        <path id="top_dot" d="M5 3H4a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1z"/>
+        <path id="bottom_line" d="M20 17H9a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1h11a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1z"/>
+        <path id="middle_line" d="M20 10H9a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1h11a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1z"/>
+        <path id="top_line" d="M20 3H9a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1h11a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1z"/>
     </g>
 </svg>
index 4818cbb..c37a729 100644 (file)
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="bullet-list-rtl">
-        <path id="bottom_dot_1_" d="M19 10h1c.552 0 1 .447 1 1v1c0 .553-.448 1-1 1h-1c-.552 0-1-.447-1-1v-1c0-.553.448-1 1-1z"/>
-        <path id="middle_dot_1_" d="M19 17h1c.552 0 1 .447 1 1v1c0 .553-.448 1-1 1h-1c-.552 0-1-.447-1-1v-1c0-.553.448-1 1-1z"/>
-        <path id="top_dot_1_" d="M19 3h1c.552 0 1 .447 1 1v1c0 .553-.448 1-1 1h-1c-.552 0-1-.447-1-1V4c0-.553.448-1 1-1z"/>
-        <path id="bottom_line_7_" d="M4 17h11c.552 0 1 .447 1 1v1c0 .553-.448 1-1 1H4c-.552 0-1-.447-1-1v-1c0-.553.448-1 1-1z"/>
-        <path id="middle_line_7_" d="M4 10h11c.552 0 1 .447 1 1v1c0 .553-.448 1-1 1H4c-.552 0-1-.447-1-1v-1c0-.553.448-1 1-1z"/>
-        <path id="top_line_7_" d="M4 3h11c.552 0 1 .447 1 1v1c0 .553-.448 1-1 1H4c-.552 0-1-.447-1-1V4c0-.553.448-1 1-1z"/>
+        <path id="bottom_dot_1_" d="M19 10h1a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1z"/>
+        <path id="middle_dot_1_" d="M19 17h1a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1z"/>
+        <path id="top_dot_1_" d="M19 3h1a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1z"/>
+        <path id="bottom_line_7_" d="M4 17h11a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1z"/>
+        <path id="middle_line_7_" d="M4 10h11a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1z"/>
+        <path id="top_line_7_" d="M4 3h11a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1z"/>
     </g>
 </svg>
index bec80ef..a76559d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/listNumbered-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/listNumbered-ltr.png differ
index 173e5db..8c4fcf2 100644 (file)
@@ -4,8 +4,8 @@
         <path id="bottom_dot" d="M3 16v1h1.993l.03 1H4v1h1v1H3v1h2.023L6 19.998v-1l-.955-.53.955-.5v-.97L4.993 16z"/>
         <path id="middle_dot" d="M3 9v1h2.117L3 12.187v1.81l3-.06V13H3.882L6 10.812V9.78L5.332 9z"/>
         <path id="top_dot" d="M4.993 2h-.648L3.018 3.39l.03.61h1.026l-.068 2H3v1h3V6H4.963z"/>
-        <path id="bottom_line" d="M20.002 17H9c-.553 0-1 .447-1 1v1c0 .553.447 1 1 1h11.002c.55 0 .998-.447.998-1v-1c0-.553-.447-1-.998-1z"/>
-        <path id="middle_line" d="M20.002 10H9c-.553 0-1 .447-1 1v1c0 .553.447 1 1 1h11.002c.55 0 .998-.447.998-1v-1c0-.553-.447-1-.998-1z"/>
-        <path id="top_line" d="M20.002 3H9c-.553 0-1 .447-1 1v1c0 .553.447 1 1 1h11.002c.55 0 .998-.447.998-1V4c0-.553-.447-1-.998-1z"/>
+        <path id="bottom_line" d="M20.002 17H9a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1h11.002A1 1 0 0 0 21 19v-1a1 1 0 0 0-.998-1z"/>
+        <path id="middle_line" d="M20.002 10H9a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1h11.002A1 1 0 0 0 21 12v-1a1 1 0 0 0-.998-1z"/>
+        <path id="top_line" d="M20.002 3H9a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1h11.002A1 1 0 0 0 21 5V4a1 1 0 0 0-.998-1z"/>
     </g>
 </svg>
index 9e7894e..f26313b 100644 (file)
@@ -4,8 +4,8 @@
         <path id="bottom_dot" d="M18 16v1h1.993l.03 1H19v1h1v1h-2v1h2.023L21 19.998v-1l-.956-.53.956-.5v-.97L19.993 16z"/>
         <path id="middle_dot" d="M18 9v1h2.116L18 12.187v1.81l3-.06V13h-2.118L21 10.812V9.78L20.33 9z"/>
         <path id="top_dot" d="M19.993 2h-.648l-1.328 1.39.03.61h1.027l-.07 2H18v1h3V6h-1.038z"/>
-        <path id="bottom_line" d="M4 17h11c.553 0 1 .447 1 1v1c0 .553-.447 1-1 1H4c-.553 0-1-.447-1-1v-1c0-.553.447-1 1-1z"/>
-        <path id="middle_line" d="M4 10h11c.553 0 1 .447 1 1v1c0 .553-.447 1-1 1H4c-.553 0-1-.447-1-1v-1c0-.553.447-1 1-1z"/>
-        <path id="top_line" d="M4 3h11c.553 0 1 .447 1 1v1c0 .553-.447 1-1 1H4c-.553 0-1-.447-1-1V4c0-.553.447-1 1-1z"/>
+        <path id="bottom_line" d="M4 17h11a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1z"/>
+        <path id="middle_line" d="M4 10h11a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1z"/>
+        <path id="top_line" d="M4 3h11a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1z"/>
     </g>
 </svg>
index 2a00404..b22626f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/lock.png and b/resources/lib/oojs-ui/themes/apex/images/icons/lock.png differ
index 85baad2..d935646 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="lock">
-        <path d="M12 6c-2.21 0-4 1.79-4 4v1H7v7h10v-7h-1v-1c0-2.21-1.79-4-4-4zm0 2c1.105 0 2 .895 2 2v1h-4v-1c0-1.105.895-2 2-2z"/>
-    </g>
+    <path d="M12 6a4 4 0 0 0-4 4v1H7v7h10v-7h-1v-1a4 4 0 0 0-4-4zm0 2a2 2 0 0 1 2 2v1h-4v-1a2 2 0 0 1 2-2z" id="lock"/>
 </svg>
index dcbf49e..8b10f25 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M15 14v3l5-4.5L15 8v3H8c0 1.7 1.3 3 3 3h4zm-1-9H4v15h10v-2H6V7h8V5z"/>
-    </g>
+    <path d="M15 14v3l5-4.5L15 8v3H8c0 1.7 1.3 3 3 3h4zm-1-9H4v15h10v-2H6V7h8V5z"/>
 </svg>
index 61c369f..f2be068 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M15 14v3l5-4.5L15 8v3H8c0 1.7 1.3 3 3 3h4zm-1-9H4v15h10v-2H6V7h8V5z"/>
-    </g>
+    <path d="M15 14v3l5-4.5L15 8v3H8c0 1.7 1.3 3 3 3h4zm-1-9H4v15h10v-2H6V7h8V5z"/>
 </svg>
index e953bab..412cd92 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g402">
-        <path d="M9 14v3l-5-4.5L9 8v3h7c0 1.7-1.3 3-3 3H9zm1-9h10v15H10v-2h8V7h-8V5z" id="path404"/>
-    </g>
+    <path d="M9 14v3l-5-4.5L9 8v3h7c0 1.7-1.3 3-3 3H9zm1-9h10v15H10v-2h8V7h-8V5z"/>
 </svg>
index 5cb4687..5f5ebb9 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g402">
-        <path d="M9 14v3l-5-4.5L9 8v3h7c0 1.7-1.3 3-3 3H9zm1-9h10v15H10v-2h8V7h-8V5z" id="path404"/>
-    </g>
+    <path d="M9 14v3l-5-4.5L9 8v3h7c0 1.7-1.3 3-3 3H9zm1-9h10v15H10v-2h8V7h-8V5z"/>
 </svg>
index ce25178..a33c21c 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="menu">
-        <path id="lines" d="M6 15h12c.553 0 1 .447 1 1v1c0 .553-.447 1-1 1H6c-.553 0-1-.447-1-1v-1c0-.553.447-1 1-1zm-1-4v1c0 .553.447 1 1 1h12c.553 0 1-.447 1-1v-1c0-.553-.447-1-1-1H6c-.553 0-1 .447-1 1zm0-5v1c0 .553.447 1 1 1h12c.553 0 1-.447 1-1V6c0-.553-.447-1-1-1H6c-.553 0-1 .447-1 1z"/>
+        <path id="lines" d="M6 15h12a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1zm-1-4v1a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1H6a1 1 0 0 0-1 1zm0-5v1a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1H6a1 1 0 0 0-1 1z"/>
     </g>
 </svg>
index 35b6375..ce5b444 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="move-rtl">
-        <path id="arrow" d="M15.065 17.786l-5.302-5.303 5.302-5.302-1.415-1.41-6.714 6.717L13.65 19.2z"/>
+        <path id="arrow" d="M15.065 17.786l-5.302-5.303 5.302-5.302-1.415-1.41-6.714 6.72 6.714 6.71z"/>
     </g>
 </svg>
index 9febfff..18e4118 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g4">
-        <path d="M12 5l2.5 2.5L11 11c-1.2 1.2-1.2 2.8 0 4l5.5-5.5L19 12V5h-7zm5 12H8c-.6 0-1-.4-1-1V7h3L8 5H5v11c0 1.7 1.3 3 3 3h11v-3l-2-2v3z" id="path6"/>
-    </g>
+    <path d="M12 5l2.5 2.5L11 11c-1.2 1.2-1.2 2.8 0 4l5.5-5.5L19 12V5h-7zm5 12H8c-.6 0-1-.4-1-1V7h3L8 5H5v11c0 1.7 1.3 3 3 3h11v-3l-2-2v3z"/>
 </svg>
index 02e24f6..2d19a78 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g4">
-        <path d="M12 5l2.5 2.5L11 11c-1.2 1.2-1.2 2.8 0 4l5.5-5.5L19 12V5h-7zm5 12H8c-.6 0-1-.4-1-1V7h3L8 5H5v11c0 1.7 1.3 3 3 3h11v-3l-2-2v3z" id="path6"/>
-    </g>
+    <path d="M12 5l2.5 2.5L11 11c-1.2 1.2-1.2 2.8 0 4l5.5-5.5L19 12V5h-7zm5 12H8c-.6 0-1-.4-1-1V7h3L8 5H5v11c0 1.7 1.3 3 3 3h11v-3l-2-2v3z"/>
 </svg>
index e72ecf5..e357be6 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g462">
-        <path d="M12 5L9.5 7.5 13 11c1.2 1.2 1.2 2.8 0 4L7.5 9.5 5 12V5h7zM7 17h9c.6 0 1-.4 1-1V7h-3l2-2h3v11c0 1.7-1.3 3-3 3H5v-3l2-2v3z" id="path464"/>
-    </g>
+    <path d="M12 5L9.5 7.5 13 11c1.2 1.2 1.2 2.8 0 4L7.5 9.5 5 12V5h7zM7 17h9c.6 0 1-.4 1-1V7h-3l2-2h3v11c0 1.7-1.3 3-3 3H5v-3l2-2v3z"/>
 </svg>
index 16ad8b4..133442e 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g462">
-        <path d="M12 5L9.5 7.5 13 11c1.2 1.2 1.2 2.8 0 4L7.5 9.5 5 12V5h7zM7 17h9c.6 0 1-.4 1-1V7h-3l2-2h3v11c0 1.7-1.3 3-3 3H5v-3l2-2v3z" id="path464"/>
-    </g>
+    <path d="M12 5L9.5 7.5 13 11c1.2 1.2 1.2 2.8 0 4L7.5 9.5 5 12V5h7zM7 17h9c.6 0 1-.4 1-1V7h-3l2-2h3v11c0 1.7-1.3 3-3 3H5v-3l2-2v3z"/>
 </svg>
index 1d654eb..a7e5b12 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="line_return">
-        <path d="M17.8 5.7c-.5 0-.9.2-1.2.5s-.5.7-.5 1.2v4.3H11v-4l-6 5.5 6 5.5v-4h8v-9h-1.2z"/>
-    </g>
+    <path d="M17.8 5.7c-.5 0-.9.2-1.2.5s-.5.7-.5 1.2v4.3H11v-4l-6 5.5 6 5.5v-4h8v-9h-1.2z" id="line_return"/>
 </svg>
index 63e5aa1..40752fa 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="line_return">
-        <path d="M6.2 5.7c.5 0 .9.2 1.2.5.3.3.5.7.5 1.2v4.3H13v-4l6 5.5-6 5.5v-4H5v-9h1.2z"/>
-    </g>
+    <path d="M6.2 5.7c.5 0 .9.2 1.2.5.3.3.5.7.5 1.2v4.3H13v-4l6 5.5-6 5.5v-4H5v-9h1.2z" id="line_return"/>
 </svg>
index 22c04ca..2dfa2c7 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="noWikiText-rtl">
-        <path d="M15 13l2 2V5h-3v2h1zM3 3L2 4l1 1v14h3v-2H5V7l2 2v10h3v-2H9v-6l6 6h-1v2h3l3 3 1-1-3-3zm7 4V5H7l2 2zm8-2v2h1v10l2 2V5z"/>
-    </g>
+    <path d="M15 13l2 2V5h-3v2h1zM3 3L2 4l1 1v14h3v-2H5V7l2 2v10h3v-2H9v-6l6 6h-1v2h3l3 3 1-1-3-3zm7 4V5H7l2 2zm8-2v2h1v10l2 2V5z" id="noWikiText-rtl"/>
 </svg>
index d717265..4f275fd 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="noWikiText-rtl">
-        <path d="M9 13l-2 2V5h3v2H9zM21 3l1 1-1 1v14h-3v-2h1V7l-2 2v10h-3v-2h1v-6l-6 6h1v2H7l-3 3-1-1 3-3zm-7 4V5h3l-2 2zM6 5v2H5v10l-2 2V5z"/>
-    </g>
+    <path d="M9 13l-2 2V5h3v2H9zM21 3l1 1-1 1v14h-3v-2h1V7l-2 2v10h-3v-2h1v-6l-6 6h1v2H7l-3 3-1-1 3-3zm-7 4V5h3l-2 2zM6 5v2H5v10l-2 2V5z" id="noWikiText-rtl"/>
 </svg>
index 7d27f8e..a57e2bf 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/notice.png and b/resources/lib/oojs-ui/themes/apex/images/icons/notice.png differ
index 9334b50..8dc4fec 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" id="svg3116">
-    <g id="alert">
-        <path d="M12 18c-3.314 0-6-2.686-6-6s2.686-6 6-6 6 2.686 6 6-2.686 6-6 6zm-1-5h2V8h-2zm0 3h2v-2h-2z" id="path3119"/>
-    </g>
+    <path d="M12 18a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm-1-5h2V8h-2zm0 3h2v-2h-2z" id="alert"/>
 </svg>
index 03038c1..7596c4a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/outdent-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/outdent-ltr.png differ
index 30b1db6..ad55ed4 100644 (file)
@@ -2,8 +2,8 @@
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="outdent-list-ltr">
         <path id="arrow" d="M8 13h2v-3H7.948l-.03-2.06-4.713 3.585L8 15.08z"/>
-        <path id="bottom_line" d="M20 17H4c-.553 0-1 .447-1 1v1c0 .553.447 1 1 1h16c.553 0 1-.447 1-1v-1c0-.553-.447-1-1-1z"/>
-        <path id="middle_line" d="M20 10h-7c-.553 0-1 .447-1 1v1c0 .553.447 1 1 1h7c.553 0 1-.447 1-1v-1c0-.553-.447-1-1-1z"/>
-        <path id="top_line" d="M20 3H4c-.553 0-1 .447-1 1v1c0 .553.447 1 1 1h16c.553 0 1-.447 1-1V4c0-.553-.447-1-1-1z"/>
+        <path id="bottom_line" d="M20 17H4a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1z"/>
+        <path id="middle_line" d="M20 10h-7a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1h7a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1z"/>
+        <path id="top_line" d="M20 3H4a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1z"/>
     </g>
 </svg>
index 471fe23..64ad8b0 100644 (file)
@@ -2,8 +2,8 @@
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="outdent-list-rtl">
         <path id="arrow" d="M16 13h-2v-3h2.052l.03-2.06 4.713 3.585L16 15.08z"/>
-        <path id="bottom_line" d="M4 17h16c.553 0 1 .447 1 1v1c0 .553-.447 1-1 1H4c-.553 0-1-.447-1-1v-1c0-.553.447-1 1-1z"/>
-        <path id="middle_line" d="M4 10h7c.553 0 1 .447 1 1v1c0 .553-.447 1-1 1H4c-.553 0-1-.447-1-1v-1c0-.553.447-1 1-1z"/>
-        <path id="top_line" d="M4 3h16c.553 0 1 .447 1 1v1c0 .553-.447 1-1 1H4c-.553 0-1-.447-1-1V4c0-.553.447-1 1-1z"/>
+        <path id="bottom_line" d="M4 17h16a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1z"/>
+        <path id="middle_line" d="M4 10h7a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1z"/>
+        <path id="top_line" d="M4 3h16a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1z"/>
     </g>
 </svg>
index 19d6b2e..d431703 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M6 8h1V4h10v4h4v6c0 1.7-1.3 3-3 3h-1v3H7v-3H3v-6c0-1.7 1.3-3 3-3zm10-3H8v3h8V5zM8 19h8v-6H8v6z" id="path532"/>
+    <path d="M6 8h1V4h10v4h4v6c0 1.7-1.3 3-3 3h-1v3H7v-3H3v-6c0-1.7 1.3-3 3-3zm10-3H8v3h8V5zM8 19h8v-6H8v6z"/>
 </svg>
index 79fd4e1..d6188eb 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M6 8h1V4h10v4h4v6c0 1.7-1.3 3-3 3h-1v3H7v-3H3v-6c0-1.7 1.3-3 3-3zm10-3H8v3h8V5zM8 19h8v-6H8v6z" id="path532"/>
+    <path d="M6 8h1V4h10v4h4v6c0 1.7-1.3 3-3 3h-1v3H7v-3H3v-6c0-1.7 1.3-3 3-3zm10-3H8v3h8V5zM8 19h8v-6H8v6z"/>
 </svg>
index 0ea25d7..fb9d338 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M18 9.9c-.7 0-1.4.3-1.8.9V6h-4c.2-.4.4-.8.4-1.2 0-1.2-1-2.2-2.2-2.2-1.3-.1-2.3.9-2.3 2.2 0 .4.2.8.4 1.2H4.1v3.6l.6-.1c1.4 0 2.5 1.1 2.5 2.5s-1.1 2.5-2.5 2.5c-.2 0-.4 0-.6-.1V18H9c-.5.4-.9 1-.9 1.8 0 1.2 1 2.2 2.3 2.2 1.2 0 2.2-1 2.2-2.2 0-.7-.3-1.4-.9-1.8h4.5v-4.5c.4.5 1 .9 1.8.9 1.2 0 2.2-1 2.2-2.2 0-1.3-1-2.3-2.2-2.3z" id="path542"/>
+    <path d="M18 9.9c-.7 0-1.4.3-1.8.9V6h-4c.2-.4.4-.8.4-1.2 0-1.2-1-2.2-2.2-2.2-1.3-.1-2.3.9-2.3 2.2 0 .4.2.8.4 1.2H4.1v3.6l.6-.1c1.4 0 2.5 1.1 2.5 2.5s-1.1 2.5-2.5 2.5c-.2 0-.4 0-.6-.1V18H9c-.5.4-.9 1-.9 1.8 0 1.2 1 2.2 2.3 2.2 1.2 0 2.2-1 2.2-2.2 0-.7-.3-1.4-.9-1.8h4.5v-4.5c.4.5 1 .9 1.8.9 1.2 0 2.2-1 2.2-2.2 0-1.3-1-2.3-2.2-2.3z"/>
 </svg>
index e606425..1d48308 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M6.3 9.9c.7 0 1.4.3 1.8.9V6h4c-.2-.4-.4-.8-.4-1.2 0-1.2 1-2.2 2.2-2.2 1.3-.1 2.3.9 2.3 2.2 0 .4-.2.8-.4 1.2h4.4v3.6l-.6-.1c-1.4 0-2.5 1.1-2.5 2.5s1.1 2.5 2.5 2.5c.2 0 .4 0 .6-.1V18h-4.9c.5.4.9 1 .9 1.8 0 1.2-1 2.2-2.3 2.2-1.2 0-2.2-1-2.2-2.2 0-.7.3-1.4.9-1.8H8.1v-4.5c-.4.5-1 .9-1.8.9-1.2 0-2.2-1-2.2-2.2 0-1.3 1-2.3 2.2-2.3z" id="path542"/>
+    <path d="M6.3 9.9c.7 0 1.4.3 1.8.9V6h4c-.2-.4-.4-.8-.4-1.2 0-1.2 1-2.2 2.2-2.2 1.3-.1 2.3.9 2.3 2.2 0 .4-.2.8-.4 1.2h4.4v3.6l-.6-.1c-1.4 0-2.5 1.1-2.5 2.5s1.1 2.5 2.5 2.5c.2 0 .4 0 .6-.1V18h-4.9c.5.4.9 1 .9 1.8 0 1.2-1 2.2-2.3 2.2-1.2 0-2.2-1-2.2-2.2 0-.7.3-1.4.9-1.8H8.1v-4.5c-.4.5-1 .9-1.8.9-1.2 0-2.2-1-2.2-2.2 0-1.3 1-2.3 2.2-2.3z"/>
 </svg>
index 6c571ce..b458c39 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/quotes-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/quotes-ltr.png differ
index 062d2d9..dc366b7 100644 (file)
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M19.9 8.7c.3-.1.6-.3.8-.6s.3-.7.3-1.1V6c-1.3.2-1.9.2-3.3.8-.9.5-1.6 1.1-2.2 1.8S13 12 13 16v4h6c1.1 0 2-.9 2-2v-6h-4s.1-.9.8-1.8c.6-.7 1.3-1.2 2.1-1.5zM5.5 8.6C4.9 9.3 3 12 3 16v4h6c1.1 0 2-.9 2-2v-6H7s.1-.9.8-1.8c.6-.7 1.3-1.2 2.1-1.5.3-.1.6-.3.8-.6s.3-.7.3-1.1V6c-1.3.2-1.9.2-3.3.8-.8.5-1.6 1.1-2.2 1.8z"/>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24">
+    <g id="quotes">
+        <path id="quote" d="M6.9 8.4c-.446.55-1.974 2.6-1.9 5.7V17h4.7c.9 0 1.6-.7 1.6-1.6V11H8.2s.05-.74.6-1.4c.453-.543 1-.9 1.6-1.2.2-.1.47-.212.6-.5.127-.282.2-.5.2-.9v-.6c-1 .2-1.744.197-2.6.6-.856.403-1.272.873-1.7 1.4z"/>
     </g>
+    <use transform="translate(8)" id="quote2" width="24" height="24" xlink:href="#quote"/>
 </svg>
index fc46c93..6e8917f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/quotes-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/quotes-rtl.png differ
index 1057ffc..e652b31 100644 (file)
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g552">
-        <path d="M4.1 8.7c-.3-.1-.6-.3-.8-.6C3.1 7.8 3 7.4 3 7V6c1.3.2 1.9.2 3.3.8.9.5 1.6 1.1 2.2 1.8.6.7 2.5 3.4 2.5 7.4v4H5c-1.1 0-2-.9-2-2v-6h4s-.1-.9-.8-1.8C5.6 9.5 4.9 9 4.1 8.7zm14.4-.1c.6.7 2.5 3.4 2.5 7.4v4h-6c-1.1 0-2-.9-2-2v-6h4s-.1-.9-.8-1.8c-.6-.7-1.3-1.2-2.1-1.5-.3-.1-.6-.3-.8-.6-.2-.3-.3-.7-.3-1.1V6c1.3.2 1.9.2 3.3.8.8.5 1.6 1.1 2.2 1.8z" id="path554"/>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24">
+    <g id="quotes">
+        <path id="quote" d="M17.1 8.4c.446.55 1.9 2.6 1.9 5.7V17h-4.7c-.9 0-1.6-.7-1.6-1.6V11h3.1s-.05-.74-.6-1.4c-.453-.543-1-.9-1.6-1.2-.2-.1-.47-.212-.6-.5-.127-.282-.2-.5-.2-.9v-.6c1 .2 1.744.197 2.6.6.856.403 1.272.873 1.7 1.4z"/>
     </g>
+    <use transform="translate(-8)" id="quote2" width="24" height="24" xlink:href="#quote"/>
 </svg>
index 7fd4754..39d68bd 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/quotesAdd-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/quotesAdd-ltr.png differ
index bacec22..6704c51 100644 (file)
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g4">
-        <path d="M3.5 8.6C2.9 9.3 1 12 1 16v4h6c1.1 0 2-.9 2-2v-6H5s.1-.9.8-1.8c.6-.7 1.3-1.2 2.1-1.5.3-.1.6-.3.8-.6.2-.3.3-.7.3-1.1V6c-1.3.2-1.9.2-3.3.8-.8.5-1.6 1.1-2.2 1.8zM19 5V1h-2v4h-4v2h4v4h2V7h4V5zm-4 7s.1-.9.8-1.8l.2-.2V8h-1.9l-.6.6C12.9 9.3 11 12 11 16v4h6c1.1 0 2-.9 2-2v-6h-4z" id="path6"/>
+    <g id="quotes-add">
+        <path id="quote" d="M5.9 10.4c-.446.55-1.974 2.6-1.9 5.7V19h4.7c.9 0 1.593-.7 1.6-1.6V13H7.2s.05-.74.6-1.4c.453-.543 1-.9 1.6-1.2.2-.1.47-.212.6-.5.127-.282.2-.5.2-.9v-.6c-1 .2-1.744.197-2.6.6-.856.403-1.272.873-1.7 1.4z"/>
+        <path id="quote2" d="M15 9.344c-.476.32-.78.677-1.094 1.062A8.76 8.76 0 0 0 12 16.094V19h4.688a1.6 1.6 0 0 0 1.625-1.594V13H15V9.344z"/>
+        <path id="add" d="M18 6V2h-2v4h-4v2h4v4h2V8h4V6z"/>
     </g>
 </svg>
index e305696..4290e87 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/quotesAdd-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/quotesAdd-rtl.png differ
index 9aed41d..d972ad3 100644 (file)
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g4">
-        <path d="M20.5 8.6c.6.7 2.5 3.4 2.5 7.4v4h-6c-1.1 0-2-.9-2-2v-6h4s-.1-.9-.8-1.8c-.6-.7-1.3-1.2-2.1-1.5-.3-.1-.6-.3-.8-.6-.2-.3-.3-.7-.3-1.1V6c1.3.2 1.9.2 3.3.8.8.5 1.6 1.1 2.2 1.8zM5 5V1h2v4h4v2H7v4H5V7H1V5zm4 7s-.1-.9-.8-1.8L8 10V8h1.9l.6.6c.6.7 2.5 3.4 2.5 7.4v4H7c-1.1 0-2-.9-2-2v-6h4z" id="path6"/>
+    <g id="quotes-add">
+        <path id="quote" d="M18.097 10.4c.446.55 1.974 2.6 1.9 5.7V19h-4.7c-.9 0-1.593-.7-1.6-1.6V13h3.1s-.05-.74-.6-1.4c-.453-.543-1-.9-1.6-1.2-.2-.1-.47-.212-.6-.5-.127-.282-.2-.5-.2-.9v-.6c1 .2 1.744.197 2.6.6.856.403 1.272.873 1.7 1.4z"/>
+        <path id="quote2" d="M8.997 9.344c.476.32.782.677 1.094 1.062A8.758 8.758 0 0 1 12 16.094V19H7.31c-.9 0-1.618-.694-1.625-1.594V13h3.312V9.344z"/>
+        <path id="add" d="M5.997 6V2h2v4h4v2h-4v4h-2V8h-4V6z"/>
     </g>
 </svg>
index 00ace19..ef8cfc3 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/regular-expression.png and b/resources/lib/oojs-ui/themes/apex/images/icons/regular-expression.png differ
index 844013d..d5fcfcf 100644 (file)
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="regular-expression">
-        <path id="left-bracket" d="M3 12.045c0-.99.15-1.915.45-2.777.306-.862.743-1.618 1.314-2.268H6.23c-.552.72-.968 1.512-1.25 2.374-.28.862-.42 1.75-.42 2.66 0 .915.142 1.8.427 2.654.29.85.7 1.622 1.23 2.312h-1.45c-.575-.635-1.013-1.376-1.314-2.223-.3-.847-.45-1.758-.45-2.732"/>
-        <path id="dot" d="M10 16c0 .552-.448 1-1 1s-1-.448-1-1 .448-1 1-1 1 .448 1 1z"/>
-        <path id="star" d="M14.25 7.013l-.24 2.156 2.187-.61.193 1.474-1.992.14 1.307 1.74-1.33.71-.914-1.834-.8 1.823-1.382-.697 1.295-1.74-1.98-.152.23-1.465 2.14.61-.24-2.158h1.534"/>
-        <path id="right-bracket" d="M21 12.045c0 .982-.152 1.896-.457 2.744-.3.843-.737 1.58-1.307 2.21h-1.453c.527-.69.936-1.458 1.225-2.31.29-.854.434-1.74.434-2.66 0-.91-.14-1.796-.422-2.66-.28-.86-.697-1.653-1.248-2.373h1.465c.574.652 1.012 1.412 1.313 2.28.3.86.45 1.782.45 2.764"/>
+        <path id="left-bracket" d="M3 12.045c0-.99.15-1.915.45-2.777A6.886 6.886 0 0 1 4.764 7H6.23a7.923 7.923 0 0 0-1.25 2.374 8.563 8.563 0 0 0 .007 5.314c.29.85.7 1.622 1.23 2.312h-1.45a6.53 6.53 0 0 1-1.314-2.223 8.126 8.126 0 0 1-.45-2.732"/>
+        <path id="dot" d="M10 16a1 1 0 1 1-2 0 1 1 0 0 1 2 0z"/>
+        <path id="star" d="M14.25 7.013l-.24 2.156 2.187-.61.193 1.47-1.992.14 1.307 1.74-1.33.71-.914-1.833-.8 1.822-1.38-.698 1.296-1.74-1.98-.152.23-1.464 2.14.61-.24-2.158h1.534"/>
+        <path id="right-bracket" d="M21 12.045c0 .982-.152 1.896-.457 2.744A6.51 6.51 0 0 1 19.236 17h-1.453a8.017 8.017 0 0 0 1.225-2.31c.29-.855.434-1.74.434-2.66 0-.91-.14-1.797-.422-2.66a7.913 7.913 0 0 0-1.248-2.374h1.465a6.764 6.764 0 0 1 1.313 2.28c.3.86.45 1.782.45 2.764"/>
     </g>
 </svg>
index d1d5e10..3a09864 100644 (file)
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="Layer_1">
-        <g>
-            <circle cx="11.5" cy="8.5" r="2.5"/>
-            <path d="M16.3 8.7L17 8l-.8-.8.4-.8-1.1-.5.1-.9-1.2-.2-.1-.9-1.2.2-.4-.8-1.1.5L11 3l-.8.8-.9-.4-.5 1.1-.9-.2-.2 1.2-.9.2.2 1.2-.9.4.5 1.1L6 9l.8.8-.4.8 1.1.5-.1.9 1.2.2.1.9 1.2-.2.4.8 1.1-.5.6.8.8-.8.8.4.5-1.1.9.1.2-1.2.9-.1-.2-1.2.8-.4-.4-1zM11.5 12C9.6 12 8 10.4 8 8.5S9.6 5 11.5 5 15 6.6 15 8.5 13.4 12 11.5 12zm.5 3l-.7-.7-1.1.6-.4-.7-.8.3V23l2.5-3 2.5 3v-8.5l-1-.5z"/>
-        </g>
-    </g>
+    <circle cx="11.5" cy="8.5" r="2.5"/>
+    <path d="M16.3 8.7L17 8l-.8-.8.4-.8-1.1-.5.1-.9-1.2-.2-.1-.9-1.2.2-.4-.8-1.1.5L11 3l-.8.8-.9-.4-.5 1.1-.9-.2-.2 1.2-.9.2.2 1.2-.9.4.5 1.1L6 9l.8.8-.4.8 1.1.5-.1.9 1.2.2.1.9 1.2-.2.4.8 1.1-.5.6.8.8-.8.8.4.5-1.1.9.1.2-1.2.9-.1-.2-1.2.8-.4-.4-1zM11.5 12C9.6 12 8 10.4 8 8.5S9.6 5 11.5 5 15 6.6 15 8.5 13.4 12 11.5 12zm.5 3l-.7-.7-1.1.6-.4-.7-.8.3V23l2.5-3 2.5 3v-8.5l-1-.5z"/>
 </svg>
index d15f387..45df8b7 100644 (file)
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="Layer_1">
-        <g>
-            <circle cx="11.5" cy="8.5" r="2.5"/>
-            <path d="M16.3 8.7L17 8l-.8-.8.4-.8-1.1-.5.1-.9-1.2-.2-.1-.9-1.2.2-.4-.8-1.1.5L11 3l-.8.8-.9-.4-.5 1.1-.9-.2-.2 1.2-.9.2.2 1.2-.9.4.5 1.1L6 9l.8.8-.4.8 1.1.5-.1.9 1.2.2.1.9 1.2-.2.4.8 1.1-.5.6.8.8-.8.8.4.5-1.1.9.1.2-1.2.9-.1-.2-1.2.8-.4-.4-1zM11.5 12C9.6 12 8 10.4 8 8.5S9.6 5 11.5 5 15 6.6 15 8.5 13.4 12 11.5 12zm.5 3l-.7-.7-1.1.6-.4-.7-.8.3V23l2.5-3 2.5 3v-8.5l-1-.5z"/>
-        </g>
-    </g>
+    <circle cx="11.5" cy="8.5" r="2.5"/>
+    <path d="M16.3 8.7L17 8l-.8-.8.4-.8-1.1-.5.1-.9-1.2-.2-.1-.9-1.2.2-.4-.8-1.1.5L11 3l-.8.8-.9-.4-.5 1.1-.9-.2-.2 1.2-.9.2.2 1.2-.9.4.5 1.1L6 9l.8.8-.4.8 1.1.5-.1.9 1.2.2.1.9 1.2-.2.4.8 1.1-.5.6.8.8-.8.8.4.5-1.1.9.1.2-1.2.9-.1-.2-1.2.8-.4-.4-1zM11.5 12C9.6 12 8 10.4 8 8.5S9.6 5 11.5 5 15 6.6 15 8.5 13.4 12 11.5 12zm.5 3l-.7-.7-1.1.6-.4-.7-.8.3V23l2.5-3 2.5 3v-8.5l-1-.5z"/>
 </svg>
index de70cd6..c461272 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/search.png and b/resources/lib/oojs-ui/themes/apex/images/icons/search.png differ
index c2a4b27..823ebf2 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="search">
-        <path id="magnifying-glass" d="M18.87 18.375l-3.987-3.99-.286-.17c.68-.948 1.082-2.116 1.082-3.372C15.67 7.616 13.06 5 9.84 5 6.616 5 4 7.616 4 10.844c0 3.226 2.614 5.842 5.842 5.842 1.26 0 2.423-.403 3.377-1.08l.16.286 3.99 3.987c.32.31.91.24 1.33-.18.41-.42.49-1.01.17-1.33zM9.837 14.56c-2.05 0-3.718-1.663-3.718-3.717 0-2.05 1.67-3.72 3.72-3.72s3.72 1.668 3.72 3.72c0 2.053-1.67 3.718-3.72 3.718z"/>
+        <path id="magnifying-glass" d="M18.87 18.375l-3.987-3.99-.286-.17a5.774 5.774 0 0 0 1.082-3.372C15.67 7.616 13.06 5 9.84 5A5.843 5.843 0 0 0 4 10.844a5.84 5.84 0 0 0 5.842 5.842c1.26 0 2.423-.403 3.377-1.08l.16.286 3.99 3.987c.32.31.91.24 1.33-.18.41-.42.49-1.01.17-1.33zM9.837 14.56a3.72 3.72 0 0 1-3.718-3.717c0-2.05 1.67-3.72 3.72-3.72s3.72 1.668 3.72 3.72a3.722 3.722 0 0 1-3.72 3.718z"/>
     </g>
 </svg>
index a2eba48..2b89d37 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/secure-link.png and b/resources/lib/oojs-ui/themes/apex/images/icons/secure-link.png differ
index e064672..453d166 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
     <g id="secure">
-        <path id="lock" d="M8 5h.02v-.997c0-.057.003-1.41-.833-2.255-.434-.438-.998-.66-1.68-.66s-1.244.222-1.677.66c-.837.846-.833 2.198-.832 2.25V5H3c-.553 0-1 .447-1 1v3c0 .553.447 1 1 1h5c.553 0 1-.447 1-1V6c0-.553-.447-1-1-1zM3.998 5V3.993c0-.01.005-1 .543-1.543.486-.485 1.45-.487 1.936-.002.544.546.546 1.536.546 1.55V5H3.998z"/>
+        <path id="lock" d="M8 5h.02v-.997c0-.057.003-1.41-.833-2.255-.434-.438-.998-.66-1.68-.66s-1.244.222-1.677.66c-.837.846-.833 2.198-.832 2.25V5H3a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1zM3.998 5V3.993c0-.01.005-1 .543-1.543.49-.485 1.45-.487 1.94-.002.543.546.545 1.536.545 1.55V5H3.998z"/>
     </g>
 </svg>
index 3799767..3245dbe 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="settings">
-        <path id="gear" d="M3 4h3v2H3zm9 0h9v2h-9zM8 3h2c.552 0 1 .448 1 1v2c0 .552-.448 1-1 1H8c-.552 0-1-.448-1-1V4c0-.552.448-1 1-1zm-5 8h9v2H3zm15 0h3v2h-3zm-4-1h2c.552 0 1 .448 1 1v2c0 .552-.448 1-1 1h-2c-.552 0-1-.448-1-1v-2c0-.552.448-1 1-1zM3 18h6v2H3zm12 0h6v2h-6zm-4-1h2c.552 0 1 .448 1 1v2c0 .552-.448 1-1 1h-2c-.552 0-1-.448-1-1v-2c0-.552.448-1 1-1z"/>
+        <path id="gear" d="M3 4h3v2H3zm9 0h9v2h-9zM8 3h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zm-5 8h9v2H3zm15 0h3v2h-3zm-4-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1zM3 18h6v2H3zm12 0h6v2h-6zm-4-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1z"/>
     </g>
 </svg>
index 7f65881..92f887d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/specialCharacter.png and b/resources/lib/oojs-ui/themes/apex/images/icons/specialCharacter.png differ
index dbf6ed5..5cba080 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="special-character">
-        <path id="omega" d="M12 6.708c-.794 0-1.368.103-1.894.31-.525.207-.944.496-1.255.867-.31.366-.53.808-.66 1.327-.124.513-.19 1.08-.19 1.7 0 .512.06 1 .176 1.46.122.46.31.87.568 1.23.63.862 1.156 1.138 2.012 1.362L11 18H6v-3h.604l.53 1.353.395.053.6.044.75.035.458.01H10l-.09-.895c-.63-.094-.812-.268-1.337-.522-.525-.26-.98-.59-1.365-.99-.38-.402-.675-.868-.89-1.4-.213-.536-.32-1.13-.32-1.778 0-.82.13-1.537.394-2.15.27-.62.656-1.133 1.163-1.54.507-.407 1.133-.71 1.878-.912.745-.206 1.6-.31 2.565-.31.96 0 1.81.103 2.556.31.75.2 1.38.504 1.887.912.51.407.896.92 1.158 1.54.27.614.403 1.33.403 2.15 0 .65-.107 1.242-.32 1.78-.215.53-.514.996-.9 1.397-.38.4-.83.732-1.355.99-.525.255-.707.43-1.336.523l-.093.894h.66l.447-.01.75-.034.606-.044.4-.053.533-1.354H18v3h-5l.246-3.04c1.066-.11 1.337-.695 2.002-1.362.263-.36.452-.77.568-1.23.122-.46.183-.947.183-1.46 0-.62-.067-1.186-.195-1.7-.128-.52-.348-.96-.66-1.326-.31-.372-.73-.66-1.255-.867-.524-.206-1.1-.31-1.893-.31"/>
+        <path id="omega" d="M12 6.708c-.794 0-1.368.103-1.894.31-.525.207-.944.496-1.255.867-.31.366-.53.808-.66 1.327a7.232 7.232 0 0 0-.19 1.7c0 .512.06 1 .18 1.46.12.46.31.87.567 1.23.63.862 1.156 1.138 2.012 1.362L11 18H6v-3h.604l.53 1.353.395.053.6.044.75.035.455.01H10l-.09-.895c-.63-.094-.812-.268-1.337-.522-.525-.26-.98-.59-1.365-.99a4.428 4.428 0 0 1-.89-1.4 4.78 4.78 0 0 1-.32-1.778c0-.82.13-1.537.394-2.15a3.97 3.97 0 0 1 1.163-1.54c.507-.407 1.133-.71 1.878-.912.745-.206 1.6-.31 2.565-.31.96 0 1.81.103 2.556.31.75.2 1.38.504 1.887.912.51.407.9.92 1.16 1.54.27.614.404 1.33.404 2.15a4.79 4.79 0 0 1-.32 1.78 4.35 4.35 0 0 1-.9 1.397c-.38.4-.83.732-1.355.99-.526.255-.708.43-1.337.523l-.092.894h.66l.448-.01.75-.034.606-.044.4-.053.534-1.354H18v3h-5l.246-3.04c1.066-.11 1.337-.698 2.002-1.365.263-.36.452-.77.568-1.23.122-.46.183-.947.183-1.46 0-.62-.07-1.186-.198-1.7a3.175 3.175 0 0 0-.66-1.326c-.31-.37-.73-.66-1.255-.867-.525-.206-1.1-.31-1.894-.31"/>
     </g>
 </svg>
index 1bcb55b..45f096f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/strikethrough-s.png and b/resources/lib/oojs-ui/themes/apex/images/icons/strikethrough-s.png differ
index 46092a6..171f8f3 100644 (file)
@@ -2,6 +2,6 @@
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="strikethrough-s">
         <path id="strikethrough" d="M6 12h12v1H6v-1z"/>
-        <path id="s" d="M12.094 6c-1.133 0-2.076.287-2.75.9-.67.613-1 1.49-1 2.52 0 .89.22 1.602.72 2.13.497.528 1.278.91 2.31 1.14l.813.182v-.03c.656.147 1.128.375 1.375.63.252.256.375.607.375 1.11 0 .573-.172.97-.53 1.26-.36.29-.895.45-1.626.45-.473 0-.965-.074-1.465-.24-.502-.166-1.03-.417-1.562-.75l-.374-.238v2.158l.155.062c.58.237 1.144.417 1.69.54.548.12 1.07.18 1.56.18 1.287 0 2.298-.293 3-.9.71-.605 1.063-1.486 1.063-2.608 0-.943-.256-1.726-.78-2.312-.522-.592-1.306-1-2.345-1.23l-.812-.18c-.715-.148-1.203-.352-1.405-.54-.205-.202-.312-.484-.312-.934 0-.533.162-.9.5-1.17.342-.27.836-.42 1.53-.42.396 0 .82.052 1.25.18.434.128.91.334 1.407.6l.374.18V6.63s-1.188-.383-1.688-.48c-.5-.097-.984-.15-1.468-.15z"/>
+        <path id="s" d="M12.094 6c-1.133 0-2.076.287-2.75.9-.67.613-1 1.49-1 2.52 0 .89.22 1.602.72 2.13.497.528 1.278.91 2.31 1.14l.813.182v-.03c.656.147 1.128.375 1.375.63.252.256.375.607.375 1.11 0 .573-.172.97-.53 1.26-.36.29-.895.45-1.626.45-.47 0-.962-.074-1.462-.24a7.288 7.288 0 0 1-1.562-.75l-.374-.238v2.158l.156.062c.58.237 1.144.417 1.69.54.548.12 1.07.18 1.56.18 1.287 0 2.298-.293 3-.9.71-.605 1.063-1.486 1.063-2.608 0-.943-.256-1.726-.78-2.312-.522-.592-1.306-1-2.345-1.23l-.812-.18c-.714-.148-1.202-.352-1.404-.54-.206-.202-.313-.484-.313-.934 0-.533.162-.9.5-1.17.342-.27.836-.42 1.53-.42.396 0 .82.052 1.25.18.434.128.91.334 1.407.6l.375.18V6.63s-1.19-.383-1.69-.48c-.5-.097-.983-.15-1.467-.15z"/>
     </g>
 </svg>
index f90bc0c..7559366 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M5.9 5.1c0 .3.1.6.3.9l1.4 1.4.9-.8-2.2-2.2c-.3.1-.4.4-.4.7zm.5 5.3H3.2c0 .3.1.6.4.9.3.3.5.4.8.4h2v-1.3zm6.2-5V2.2c-.3 0-.6.1-.9.4-.3.3-.4.5-.4.8v2h1.3zM6.2 17.1c.3 0 .6-.1.8-.3l1.4-1.4-.8-.8-2.2 2.2c.2.2.5.3.8.3zM17.8 4.9c-.3 0-.6.1-.8.3l-1.4 1.4.8.9 2.2-2.3c-.2-.2-.5-.3-.8-.3zm-5.2 11.7h-1.2v3.2c.3 0 .6-.1.9-.4.3-.3.4-.5.4-.8l-.1-2zm7-6.2h-2v1.2h3.2c0-.3-.1-.6-.4-.9-.3-.3-.5-.3-.8-.3zM17.8 16l-1.4-1.4-.8.8 2.2 2.2c.2-.2.3-.5.3-.8 0-.3-.1-.6-.3-.8z" id="path678"/>
-    <circle cx="12" cy="11" r="4" id="circle680" transform="matrix(-1 0 0 1 24 0)"/>
+    <path d="M5.9 5.1c0 .3.1.6.3.9l1.4 1.4.9-.8-2.2-2.2c-.3.1-.4.4-.4.7zm.5 5.3H3.2c0 .3.1.6.4.9.3.3.5.4.8.4h2v-1.3zm6.2-5V2.2c-.3 0-.6.1-.9.4-.3.3-.4.5-.4.8v2h1.3zM6.2 17.1c.3 0 .6-.1.8-.3l1.4-1.4-.8-.8-2.2 2.2c.2.2.5.3.8.3zM17.8 4.9c-.3 0-.6.1-.8.3l-1.4 1.4.8.9 2.2-2.3c-.2-.2-.5-.3-.8-.3zm-5.2 11.7h-1.2v3.2c.3 0 .6-.1.9-.4.3-.3.4-.5.4-.8l-.1-2zm7-6.2h-2v1.2h3.2c0-.3-.1-.6-.4-.9-.3-.3-.5-.3-.8-.3zM17.8 16l-1.4-1.4-.8.8 2.2 2.2c.2-.2.3-.5.3-.8 0-.3-.1-.6-.3-.8z"/>
+    <circle cx="12" cy="11" r="4" transform="matrix(-1 0 0 1 24 0)"/>
 </svg>
index 2570610..868334e 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M5.9 5.1c0 .3.1.6.3.9l1.4 1.4.9-.8-2.2-2.2c-.3.1-.4.4-.4.7zm.5 5.3H3.2c0 .3.1.6.4.9.3.3.5.4.8.4h2v-1.3zm6.2-5V2.2c-.3 0-.6.1-.9.4-.3.3-.4.5-.4.8v2h1.3zM6.2 17.1c.3 0 .6-.1.8-.3l1.4-1.4-.8-.8-2.2 2.2c.2.2.5.3.8.3zM17.8 4.9c-.3 0-.6.1-.8.3l-1.4 1.4.8.9 2.2-2.3c-.2-.2-.5-.3-.8-.3zm-5.2 11.7h-1.2v3.2c.3 0 .6-.1.9-.4.3-.3.4-.5.4-.8l-.1-2zm7-6.2h-2v1.2h3.2c0-.3-.1-.6-.4-.9-.3-.3-.5-.3-.8-.3zM17.8 16l-1.4-1.4-.8.8 2.2 2.2c.2-.2.3-.5.3-.8 0-.3-.1-.6-.3-.8z" id="path678"/>
-    <circle cx="12" cy="11" r="4" id="circle680" transform="matrix(-1 0 0 1 24 0)"/>
+    <path d="M5.9 5.1c0 .3.1.6.3.9l1.4 1.4.9-.8-2.2-2.2c-.3.1-.4.4-.4.7zm.5 5.3H3.2c0 .3.1.6.4.9.3.3.5.4.8.4h2v-1.3zm6.2-5V2.2c-.3 0-.6.1-.9.4-.3.3-.4.5-.4.8v2h1.3zM6.2 17.1c.3 0 .6-.1.8-.3l1.4-1.4-.8-.8-2.2 2.2c.2.2.5.3.8.3zM17.8 4.9c-.3 0-.6.1-.8.3l-1.4 1.4.8.9 2.2-2.3c-.2-.2-.5-.3-.8-.3zm-5.2 11.7h-1.2v3.2c.3 0 .6-.1.9-.4.3-.3.4-.5.4-.8l-.1-2zm7-6.2h-2v1.2h3.2c0-.3-.1-.6-.4-.9-.3-.3-.5-.3-.8-.3zM17.8 16l-1.4-1.4-.8.8 2.2 2.2c.2-.2.3-.5.3-.8 0-.3-.1-.6-.3-.8z"/>
+    <circle cx="12" cy="11" r="4" transform="matrix(-1 0 0 1 24 0)"/>
 </svg>
index 3bfbd0b..46c07c9 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/tag.png and b/resources/lib/oojs-ui/themes/apex/images/icons/tag.png differ
index 5265e04..7a211a3 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="tag">
-        <path d="M18.748 11.717c.39.39.39 1.025 0 1.414l-4.95 4.95c-.388.39-1.024.39-1.413 0l-6.01-6.01c-.39-.385-.707-1.153-.707-1.703V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457c-.58.575-.578 1.513 0 2.092.577.573 1.515.573 2.094 0 .576-.58.576-1.52 0-2.098-.58-.576-1.518-.577-2.094 0z"/>
-    </g>
+    <path d="M18.748 11.717a1 1 0 0 1 0 1.414l-4.95 4.95a1 1 0 0 1-1.413 0l-6.01-6.01c-.39-.382-.707-1.15-.707-1.7V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457a1.477 1.477 0 0 0 0 2.092 1.49 1.49 0 0 0 2.094 0 1.49 1.49 0 0 0 0-2.1 1.484 1.484 0 0 0-2.094 0z" id="tag"/>
 </svg>
index dd52d12..f7a51c9 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/templateAdd-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/templateAdd-ltr.png differ
index 13b1fc7..8cd95e0 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M24 6h-4V2h-2v4h-4v2h4v4h2V8h4z"/>
+    <g id="template-add">
+        <path id="add" d="M23 7h-4V3h-2v4h-4v2h4v4h2V9h4z"/>
+        <path id="template" d="M18 14v4H6c-1.1 0-2-.9-2-2V8h8V7H3v9c0 1.7 1.3 3 3 3h13v-5z"/>
     </g>
-    <path d="M19 13v7H3c-1.1 0-2-.9-2-2V7h12V6H0v12c0 1.7 1.3 3 3 3h17v-8h-1z"/>
 </svg>
index 08b1613..3bb8174 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/templateAdd-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/templateAdd-rtl.png differ
index d44c3a4..62b30f5 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g690">
-        <path d="M0 6h4V2h2v4h4v2H6v4H4V8H0z" id="path692"/>
+    <g id="template-add">
+        <path id="add" d="M1 7h4V3h2v4h4v2H7v4H5V9H1z"/>
+        <path id="template" d="M6 14v4h12c1.1 0 2-.9 2-2V8h-8V7h9v9c0 1.7-1.3 3-3 3H5v-5z"/>
     </g>
-    <path d="M5 13v7h16c1.1 0 2-.9 2-2V7H11V6h13v12c0 1.7-1.3 3-3 3H4v-8h1z" id="path694"/>
 </svg>
index 7dbff91..83dd769 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="text-dir-ltr">
-        <path d="M7 7H5V6h2l.47.5L8 6h2v1H8v10h2v1H8l-.5-.53L7 18H5v-1h2zm6.976 9v-2H11v-4h2.976V8.044L20 12.022z"/>
-    </g>
+    <path d="M7 7H5V6h2l.47.5L8 6h2v1H8v10h2v1H8l-.5-.53L7 18H5v-1h2zm6.976 9v-2H11v-4h2.976V8.044L20 12.022z" id="text-dir-ltr"/>
 </svg>
index 76933a6..78cb85b 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="text-dir-rtl">
-        <path d="M17 17h2v1h-2l-.47-.5-.53.5h-2v-1h2V7h-2V6h2l.5.53L17 6h2v1h-2zm-6.976-9v2H13v4h-2.976v1.956L4 11.978z"/>
-    </g>
+    <path d="M17 17h2v1h-2l-.47-.5-.53.5h-2v-1h2V7h-2V6h2l.5.53L17 6h2v1h-2zm-6.976-9v2H13v4h-2.976v1.956L4 11.978z" id="text-dir-rtl"/>
 </svg>
index bb8167a..ef7032d 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="trash-can">
-        <path d="M12 10h-1v6h1v-6zm-2 0H9v6h1v-6zm4 0h-1v6h1v-6zm0-4V5H9v1H6v3h1v7.966l1 1.03v-.073V18h6.984l.016-.018v.015l1-1.03V9h1V6h-3zm1 11H8V9h7v8zm1-9H7V7h9v1z"/>
-    </g>
+    <path d="M12 10h-1v6h1v-6zm-2 0H9v6h1v-6zm4 0h-1v6h1v-6zm0-4V5H9v1H6v3h1v7.966l1 1.03v-.073V18h6.984l.016-.018v.015l1-1.03V9h1V6h-3zm1 11H8V9h7v8zm1-9H7V7h9v1z" id="trash-can"/>
 </svg>
index 47fa0c1..9a625b8 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="trash-can-undo">
-        <path d="M4.5 3.5l-1 1L6 7v2h1v7.97L8 18h6.97l.03-.03 1-.97 2.5 2.5 1-1L16 15l-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1zM9 5v1l1 1h6v1h-5l1 1h3v3l1 1V9h1V6h-3V5zM8 9l1 1v6h1v-5l1 1v4h1v-3l1 1v2h1v-1l1 1v1H8zm5 1l1 1v-1z"/>
-    </g>
+    <path d="M4.5 3.5l-1 1L6 7v2h1v7.97L8 18h6.97l.03-.03 1-.97 2.5 2.5 1-1L16 15l-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1zM9 5v1l1 1h6v1h-5l1 1h3v3l1 1V9h1V6h-3V5zM8 9l1 1v6h1v-5l1 1v4h1v-3l1 1v2h1v-1l1 1v1H8zm5 1l1 1v-1z" id="trash-can-undo"/>
 </svg>
index b247bfb..17ca8dc 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="trash-can-undo">
-        <path d="M18.5 3.5l1 1L17 7v2h-1v7.97L15 18H8.03L8 17.97 7 17l-2.5 2.5-1-1L7 15l1-1 1-1 1-1 1-1 1-1 1-1 1-1 1-1 1-1zM14 5v1l-1 1H7v1h5l-1 1H8v3l-1 1V9H6V6h3V5zm1 4l-1 1v6h-1v-5l-1 1v4h-1v-3l-1 1v2H9v-1l-1 1v1h7zm-5 1l-1 1v-1z"/>
-    </g>
+    <path d="M18.5 3.5l1 1L17 7v2h-1v7.97L15 18H8.03L8 17.97 7 17l-2.5 2.5-1-1L7 15l1-1 1-1 1-1 1-1 1-1 1-1 1-1 1-1 1-1zM14 5v1l-1 1H7v1h5l-1 1H8v3l-1 1V9H6V6h3V5zm1 4l-1 1v6h-1v-5l-1 1v4h-1v-3l-1 1v2H9v-1l-1 1v1h7zm-5 1l-1 1v-1z" id="trash-can-undo"/>
 </svg>
index c7fce47..2906614 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/unLock-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/unLock-ltr.png differ
index f443f84..cc386c0 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="unLock">
-        <path d="M8 6c-2.21 0-4 1.79-4 4v1h2v-1c0-1.105.895-2 2-2s2 .895 2 2v1H9v7h10v-7h-7v-1c0-2.21-1.79-4-4-4z"/>
-    </g>
+    <path d="M8 6a4 4 0 0 0-4 4v1h2v-1a2 2 0 0 1 4 0v1H9v7h10v-7h-7v-1a4 4 0 0 0-4-4z" id="unLock"/>
 </svg>
index 1aabf8b..b223490 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="unLock">
-        <path d="M15 6c2.21 0 4 1.79 4 4v1h-2v-1c0-1.105-.895-2-2-2s-2 .895-2 2v1h1v7H4v-7h7v-1c0-2.21 1.79-4 4-4z"/>
-    </g>
+    <path d="M15 6a4 4 0 0 1 4 4v1h-2v-1a2 2 0 0 0-4 0v1h1v7H4v-7h7v-1a4 4 0 0 1 4-4z" id="unLock"/>
 </svg>
index f5aaf5d..ff47e2c 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="underline-u">
-        <path id="u" d="M8 6h2v5.96c-.104 1.706.695 2 2 2.04 1.777.062 2.002-.88 2-2.04V6h2v6.123c0 1.28-.338 2.245-1.016 2.898-.672.655-1.666.98-2.98.98-1.32 0-2.32-.323-2.996-.98C8.336 14.37 8 13.406 8 12.127V6"/>
+        <path id="u" d="M8 6h2v5.96c-.104 1.706.695 2 2 2.04 1.777.062 2.002-.88 2-2.04V6h2v6.123c0 1.28-.338 2.245-1.016 2.898-.672.658-1.666.98-2.98.98-1.32 0-2.32-.32-2.996-.98C8.336 14.37 8 13.41 8 12.13V6"/>
         <path id="underline" d="M7 17h10v1H7v-1z"/>
     </g>
 </svg>
index 5e4a2f3..7545aeb 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M13 14h5v1h-5v-1zm0 3h5v-1h-5v1zm0 1h5v1h-5v-1zm-1-5v3l-5 3 1-6-4-3 6-1 2-5s1.9 5 2 5l6 1-4 3h-4z"/>
-    </g>
+    <path d="M13 14h5v1h-5v-1zm0 3h5v-1h-5v1zm0 1h5v1h-5v-1zm-1-5v3l-5 3 1-6-4-3 6-1 2-5s1.9 5 2 5l6 1-4 3h-4z"/>
 </svg>
index 79c7d5c..b13df22 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M13 14h5v1h-5v-1zm0 3h5v-1h-5v1zm0 1h5v1h-5v-1zm-1-5v3l-5 3 1-6-4-3 6-1 2-5s1.9 5 2 5l6 1-4 3h-4z"/>
-    </g>
+    <path d="M13 14h5v1h-5v-1zm0 3h5v-1h-5v1zm0 1h5v1h-5v-1zm-1-5v3l-5 3 1-6-4-3 6-1 2-5s1.9 5 2 5l6 1-4 3h-4z"/>
 </svg>
index 073ef3d..812ee38 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g780">
-        <path d="M11 14H6v1h5v-1zm0 3H6v-1h5v1zm0 1H6v1h5v-1zm1-5v3l5 3-1-6 4-3-6-1-2-5s-1.9 5-2 5l-6 1 4 3h4z" id="path782"/>
-    </g>
+    <path d="M11 14H6v1h5v-1zm0 3H6v-1h5v1zm0 1H6v1h5v-1zm1-5v3l5 3-1-6 4-3-6-1-2-5s-1.9 5-2 5l-6 1 4 3h4z"/>
 </svg>
index 8bfe43e..a4ec49a 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g780">
-        <path d="M11 14H6v1h5v-1zm0 3H6v-1h5v1zm0 1H6v1h5v-1zm1-5v3l5 3-1-6 4-3-6-1-2-5s-1.9 5-2 5l-6 1 4 3h4z" id="path782"/>
-    </g>
+    <path d="M11 14H6v1h5v-1zm0 3H6v-1h5v1zm0 1H6v1h5v-1zm1-5v3l5 3-1-6 4-3-6-1-2-5s-1.9 5-2 5l-6 1 4 3h4z"/>
 </svg>
index 5bf0827..ca60c43 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/indicators/alert.png and b/resources/lib/oojs-ui/themes/apex/images/indicators/alert.png differ
index 868bcc9..f94346a 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
-    <g id="alert">
-        <path d="M6 12c-3.314 0-6-2.686-6-6s2.686-6 6-6 6 2.686 6 6-2.686 6-6 6zM5 7h2V2H5zm0 3h2V8H5z"/>
-    </g>
+    <path d="M6 12A6 6 0 1 1 6 0a6 6 0 0 1 0 12zM5 7h2V2H5zm0 3h2V8H5z" id="alert"/>
 </svg>
index d1e0cba..94b0066 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
-    <g id="required">
-        <path d="M5 1h2v10H5zm4.83 1.634l1 1.732-8.66 5-1-1.732zM1.17 4.366l1-1.732 8.66 5-1 1.732z"/>
-    </g>
+    <path d="M5 1h2v10H5zm4.83 1.634l1 1.732-8.66 5-1-1.732zM1.17 4.366l1-1.732 8.66 5-1 1.732z" id="required"/>
 </svg>
index 2718a9b..1146082 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/indicators/search-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/indicators/search-ltr.png differ
index 11b232c..80c72bb 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
     <g id="search">
-        <path id="magnifying-glass" d="M10.37 9.474L7.994 7.1l-.17-.1c.404-.566.644-1.26.644-2.01-.002-1.92-1.56-3.476-3.478-3.476-1.92 0-3.478 1.557-3.478 3.478 0 1.92 1.557 3.477 3.478 3.477.75 0 1.442-.24 2.01-.647l.098.17 2.375 2.373c.19.188.543.142.79-.105s.293-.6.104-.79zm-5.38-2.27c-1.22 0-2.213-.99-2.213-2.213 0-1.22.99-2.21 2.212-2.21 1.22 0 2.21.99 2.21 2.214s-.99 2.213-2.21 2.213z"/>
+        <path id="magnifying-glass" d="M10.37 9.474L7.994 7.1l-.17-.1a3.45 3.45 0 0 0 .644-2.01A3.478 3.478 0 1 0 4.99 8.47c.75 0 1.442-.24 2.01-.648l.098.17 2.375 2.373c.19.188.543.142.79-.105s.293-.6.104-.79zm-5.38-2.27a2.21 2.21 0 1 1 2.21-2.21A2.21 2.21 0 0 1 4.99 7.21z"/>
     </g>
 </svg>
index b7a8d22..c21cc61 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/indicators/search-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/indicators/search-rtl.png differ
index 0679fa2..4b3cff4 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
     <g id="search">
-        <path id="magnifying-glass" d="M1.63 9.474L4.006 7.1l.17-.1c-.404-.566-.644-1.26-.644-2.01.002-1.92 1.56-3.476 3.478-3.476 1.92 0 3.478 1.557 3.478 3.478 0 1.92-1.557 3.477-3.478 3.477-.75 0-1.442-.24-2.01-.647l-.098.17-2.375 2.373c-.19.188-.543.142-.79-.105s-.293-.6-.104-.79zm5.378-2.27c1.22 0 2.213-.99 2.213-2.213 0-1.22-.99-2.21-2.21-2.21S4.8 3.77 4.8 4.995 5.79 7.207 7.01 7.207z"/>
+        <path id="magnifying-glass" d="M1.63 9.474L4.006 7.1l.17-.1a3.45 3.45 0 0 1-.644-2.01A3.478 3.478 0 1 1 7.01 8.47 3.43 3.43 0 0 1 5 7.822l-.098.17-2.375 2.373c-.19.188-.543.142-.79-.105s-.293-.6-.104-.79zm5.378-2.27A2.21 2.21 0 1 0 4.8 4.994 2.21 2.21 0 0 0 7.01 7.21z"/>
     </g>
 </svg>
index ee1d0a5..c855f16 100644 (file)
@@ -1,6 +1,13 @@
 {
-       "prefix": "oo-ui-icon",
+       "selectorWithoutVariant": ".oo-ui-icon-{name}",
+       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
        "intro": "@import '../../../../src/styles/common';",
+       "variants": {
+               "invert": {
+                       "color": "#FFFFFF",
+                       "global": true
+               }
+       },
        "images": {
                "bright": { "file": "images/icons/bright.svg" },
                "halfBright": { "file": "images/icons/halfBright.svg" },
index 701166a..04c5299 100644 (file)
@@ -1,5 +1,6 @@
 {
-       "prefix": "oo-ui-icon",
+       "selectorWithoutVariant": ".oo-ui-icon-{name}",
+       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
        "intro": "@import '../../../../src/styles/common';",
        "variants": {
                "invert": {
index 73af2f1..f5b6693 100644 (file)
@@ -1,5 +1,6 @@
 {
-       "prefix": "oo-ui-icon",
+       "selectorWithoutVariant": ".oo-ui-icon-{name}",
+       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
        "intro": "@import '../../../../src/styles/common';",
        "variants": {
                "invert": {
index 27e3b0e..dbb3411 100644 (file)
@@ -1,5 +1,6 @@
 {
-       "prefix": "oo-ui-icon",
+       "selectorWithoutVariant": ".oo-ui-icon-{name}",
+       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
        "intro": "@import '../../../../src/styles/common';",
        "variants": {
                "invert": {
index 3bacb60..2a383df 100644 (file)
@@ -1,5 +1,6 @@
 {
-       "prefix": "oo-ui-icon",
+       "selectorWithoutVariant": ".oo-ui-icon-{name}",
+       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
        "intro": "@import '../../../../src/styles/common';",
        "variants": {
                "invert": {
index cfd4abc..a8ace26 100644 (file)
@@ -1,5 +1,6 @@
 {
-       "prefix": "oo-ui-icon",
+       "selectorWithoutVariant": ".oo-ui-icon-{name}",
+       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
        "intro": "@import '../../../../src/styles/common';",
        "variants": {
                "invert": {
index e070154..f7d63a1 100644 (file)
@@ -1,5 +1,6 @@
 {
-       "prefix": "oo-ui-icon",
+       "selectorWithoutVariant": ".oo-ui-icon-{name}",
+       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
        "intro": "@import '../../../../src/styles/common';",
        "variants": {
                "invert": {
index 02dfffa..d5c0662 100644 (file)
@@ -1,5 +1,6 @@
 {
-       "prefix": "oo-ui-icon",
+       "selectorWithoutVariant": ".oo-ui-icon-{name}",
+       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
        "intro": "@import '../../../../src/styles/common';",
        "variants": {
                "invert": {
index c507284..47282d9 100644 (file)
@@ -1,5 +1,6 @@
 {
-       "prefix": "oo-ui-icon",
+       "selectorWithoutVariant": ".oo-ui-icon-{name}",
+       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
        "intro": "@import '../../../../src/styles/common';",
        "variants": {
                "invert": {
index 0ecc2e1..197989b 100644 (file)
@@ -1,5 +1,6 @@
 {
-       "prefix": "oo-ui-icon",
+       "selectorWithoutVariant": ".oo-ui-icon-{name}",
+       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
        "intro": "@import '../../../../src/styles/common';",
        "variants": {
                "invert": {
index c7684ec..ddd95ad 100644 (file)
@@ -1,5 +1,6 @@
 {
-       "prefix": "oo-ui-icon",
+       "selectorWithoutVariant": ".oo-ui-icon-{name}",
+       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
        "intro": "@import '../../../../src/styles/common';",
        "variants": {
                "invert": {
index fb1deb1..cec844c 100644 (file)
@@ -1,5 +1,6 @@
 {
-       "prefix": "oo-ui-icon",
+       "selectorWithoutVariant": ".oo-ui-icon-{name}",
+       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
        "intro": "@import '../../../../src/styles/common';",
        "variants": {
                "invert": {
index 8305580..2a3a3c5 100644 (file)
@@ -1,5 +1,6 @@
 {
-       "prefix": "oo-ui-icon",
+       "selectorWithoutVariant": ".oo-ui-icon-{name}",
+       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
        "intro": "@import '../../../../src/styles/common';",
        "variants": {
                "invert": {
index e2b2c82..1b9359a 100644 (file)
@@ -1,5 +1,6 @@
 {
-       "prefix": "oo-ui-icon",
+       "selectorWithoutVariant": ".oo-ui-icon-{name}",
+       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
        "intro": "@import '../../../../src/styles/common';",
        "variants": {
                "invert": {
index 911eb6f..3e74ac6 100644 (file)
@@ -1,5 +1,6 @@
 {
-       "prefix": "oo-ui-icon",
+       "selectorWithoutVariant": ".oo-ui-icon-{name}",
+       "selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}",
        "intro": "@import '../../../../src/styles/common';",
        "variants": {
                "invert": {
index ba0b477..92da111 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced-invert.png differ
index 7813622..fad6a26 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M20 13.44v-2.88l-1.8-.3c-.1-.397-.3-.794-.6-1.39l1.1-1.49-2.1-2.088-1.5 1.093c-.5-.298-1-.497-1.4-.596L13.5 4h-2.9l-.3 1.79c-.5.098-.9.297-1.4.595L7.4 5.292 5.3 7.38l1 1.49c-.3.496-.4.894-.6 1.39l-1.7.2v2.882l1.8.298c.1.497.3.894.6 1.39l-1 1.492 2.1 2.087L9 17.61c.4.2.9.397 1.4.596l.3 1.79h3l.3-1.79c.5-.1.9-.298 1.4-.596l1.5 1.093L19 16.62l-1.1-1.49c.3-.496.5-.993.6-1.39l1.5-.3zm-8 1.492c-1.7 0-3-1.292-3-2.982 0-1.69 1.3-2.98 3-2.98s3 1.29 3 2.98-1.3 2.982-3 2.982z"/>
+    <path d="M20 13.44v-2.88l-1.8-.3c-.1-.397-.3-.794-.6-1.39l1.1-1.49-2.1-2.088-1.5 1.093c-.5-.298-1-.497-1.4-.596L13.5 4h-2.9l-.3 1.79c-.5.098-.9.297-1.4.595L7.4 5.292 5.3 7.38l1 1.49c-.3.496-.4.894-.6 1.39l-1.7.2v2.882l1.8.298c.1.497.3.894.6 1.39l-1 1.492 2.1 2.087 1.5-1c.4.2.9.395 1.4.594l.3 1.79h3l.3-1.79c.5-.1.9-.298 1.4-.596l1.5 1.092 2.1-2.08-1.1-1.49c.3-.496.5-.993.6-1.39l1.5-.3zm-8 1.492c-1.7 0-3-1.292-3-2.982 0-1.69 1.3-2.98 3-2.98s3 1.29 3 2.98-1.3 2.982-3 2.982z"/>
 </svg>
index c2a2e5e..1d4dce7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced.png differ
index a68158d..95d72f9 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M20 13.44v-2.88l-1.8-.3c-.1-.397-.3-.794-.6-1.39l1.1-1.49-2.1-2.088-1.5 1.093c-.5-.298-1-.497-1.4-.596L13.5 4h-2.9l-.3 1.79c-.5.098-.9.297-1.4.595L7.4 5.292 5.3 7.38l1 1.49c-.3.496-.4.894-.6 1.39l-1.7.2v2.882l1.8.298c.1.497.3.894.6 1.39l-1 1.492 2.1 2.087L9 17.61c.4.2.9.397 1.4.596l.3 1.79h3l.3-1.79c.5-.1.9-.298 1.4-.596l1.5 1.093L19 16.62l-1.1-1.49c.3-.496.5-.993.6-1.39l1.5-.3zm-8 1.492c-1.7 0-3-1.292-3-2.982 0-1.69 1.3-2.98 3-2.98s3 1.29 3 2.98-1.3 2.982-3 2.982z"/>
+    <path d="M20 13.44v-2.88l-1.8-.3c-.1-.397-.3-.794-.6-1.39l1.1-1.49-2.1-2.088-1.5 1.093c-.5-.298-1-.497-1.4-.596L13.5 4h-2.9l-.3 1.79c-.5.098-.9.297-1.4.595L7.4 5.292 5.3 7.38l1 1.49c-.3.496-.4.894-.6 1.39l-1.7.2v2.882l1.8.298c.1.497.3.894.6 1.39l-1 1.492 2.1 2.087 1.5-1c.4.2.9.395 1.4.594l.3 1.79h3l.3-1.79c.5-.1.9-.298 1.4-.596l1.5 1.092 2.1-2.08-1.1-1.49c.3-.496.5-.993.6-1.39l1.5-.3zm-8 1.492c-1.7 0-3-1.292-3-2.982 0-1.69 1.3-2.98 3-2.98s3 1.29 3 2.98-1.3 2.982-3 2.982z"/>
 </svg>
index 939962c..fef1152 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="align-center">
-        <path d="M9 9h6c.554 0 1 .446 1 1v5c0 .554-.446 1-1 1H9c-.554 0-1-.446-1-1v-5c0-.554.446-1 1-1zm-5.5 9h17c.277 0 .5.223.5.5s-.223.5-.5.5h-17c-.277 0-.5-.223-.5-.5s.223-.5.5-.5zm0-12h17c.277 0 .5.223.5.5s-.223.5-.5.5h-17c-.277 0-.5-.223-.5-.5s.223-.5.5-.5z"/>
-    </g>
+    <path d="M9 9h6c.554 0 1 .446 1 1v5c0 .554-.446 1-1 1H9c-.554 0-1-.446-1-1v-5c0-.554.446-1 1-1zm-5.5 9h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1zm0-12h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1z" id="align-center"/>
 </svg>
index 4697eb9..6f47977 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="align-center">
-        <path d="M9 9h6c.554 0 1 .446 1 1v5c0 .554-.446 1-1 1H9c-.554 0-1-.446-1-1v-5c0-.554.446-1 1-1zm-5.5 9h17c.277 0 .5.223.5.5s-.223.5-.5.5h-17c-.277 0-.5-.223-.5-.5s.223-.5.5-.5zm0-12h17c.277 0 .5.223.5.5s-.223.5-.5.5h-17c-.277 0-.5-.223-.5-.5s.223-.5.5-.5z"/>
-    </g>
+    <path d="M9 9h6c.554 0 1 .446 1 1v5c0 .554-.446 1-1 1H9c-.554 0-1-.446-1-1v-5c0-.554.446-1 1-1zm-5.5 9h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1zm0-12h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1z" id="align-center"/>
 </svg>
index aba4fbf..2b0bc65 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="align-float-left">
-        <path d="M4 9h6c.554 0 1 .446 1 1v5c0 .554-.446 1-1 1H4c-.554 0-1-.446-1-1v-5c0-.554.446-1 1-1zm9.5 0h7c.277 0 .5.223.5.5s-.223.5-.5.5h-7c-.277 0-.5-.223-.5-.5s.223-.5.5-.5zm0 3h7c.277 0 .5.223.5.5s-.223.5-.5.5h-7c-.277 0-.5-.223-.5-.5s.223-.5.5-.5zm0 3h7c.277 0 .5.223.5.5s-.223.5-.5.5h-7c-.277 0-.5-.223-.5-.5s.223-.5.5-.5zm-10-9h17c.277 0 .5.223.5.5s-.223.5-.5.5h-17c-.277 0-.5-.223-.5-.5s.223-.5.5-.5zm0 12h17c.277 0 .5.223.5.5s-.223.5-.5.5h-17c-.277 0-.5-.223-.5-.5s.223-.5.5-.5z"/>
-    </g>
+    <path d="M4 9h6c.554 0 1 .446 1 1v5c0 .554-.446 1-1 1H4c-.554 0-1-.446-1-1v-5c0-.554.446-1 1-1zm9.5 0h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1zm0 3h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1zm0 3h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1zm-10-9h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1zm0 12h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1z" id="align-float-left"/>
 </svg>
index 1c95377..a577600 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="align-float-left">
-        <path d="M4 9h6c.554 0 1 .446 1 1v5c0 .554-.446 1-1 1H4c-.554 0-1-.446-1-1v-5c0-.554.446-1 1-1zm9.5 0h7c.277 0 .5.223.5.5s-.223.5-.5.5h-7c-.277 0-.5-.223-.5-.5s.223-.5.5-.5zm0 3h7c.277 0 .5.223.5.5s-.223.5-.5.5h-7c-.277 0-.5-.223-.5-.5s.223-.5.5-.5zm0 3h7c.277 0 .5.223.5.5s-.223.5-.5.5h-7c-.277 0-.5-.223-.5-.5s.223-.5.5-.5zm-10-9h17c.277 0 .5.223.5.5s-.223.5-.5.5h-17c-.277 0-.5-.223-.5-.5s.223-.5.5-.5zm0 12h17c.277 0 .5.223.5.5s-.223.5-.5.5h-17c-.277 0-.5-.223-.5-.5s.223-.5.5-.5z"/>
-    </g>
+    <path d="M4 9h6c.554 0 1 .446 1 1v5c0 .554-.446 1-1 1H4c-.554 0-1-.446-1-1v-5c0-.554.446-1 1-1zm9.5 0h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1zm0 3h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1zm0 3h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1zm-10-9h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1zm0 12h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1z" id="align-float-left"/>
 </svg>
index 9f6eca8..d126163 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="align-float-right">
-        <path d="M20 9h-6c-.554 0-1 .446-1 1v5c0 .554.446 1 1 1h6c.554 0 1-.446 1-1v-5c0-.554-.446-1-1-1zm-9.5 0h-7c-.277 0-.5.223-.5.5s.223.5.5.5h7c.277 0 .5-.223.5-.5s-.223-.5-.5-.5zm0 3h-7c-.277 0-.5.223-.5.5s.223.5.5.5h7c.277 0 .5-.223.5-.5s-.223-.5-.5-.5zm0 3h-7c-.277 0-.5.223-.5.5s.223.5.5.5h7c.277 0 .5-.223.5-.5s-.223-.5-.5-.5zm10-9h-17c-.277 0-.5.223-.5.5s.223.5.5.5h17c.277 0 .5-.223.5-.5s-.223-.5-.5-.5zm0 12h-17c-.277 0-.5.223-.5.5s.223.5.5.5h17c.277 0 .5-.223.5-.5s-.223-.5-.5-.5z"/>
-    </g>
+    <path d="M20 9h-6c-.554 0-1 .446-1 1v5c0 .554.446 1 1 1h6c.554 0 1-.446 1-1v-5c0-.554-.446-1-1-1zm-9.5 0h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm0 3h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm0 3h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm10-9h-17a.5.5 0 0 0 0 1h17a.5.5 0 0 0 0-1zm0 12h-17a.5.5 0 0 0 0 1h17a.5.5 0 0 0 0-1z" id="align-float-right"/>
 </svg>
index 2467f7f..0f46bc1 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="align-float-right">
-        <path d="M20 9h-6c-.554 0-1 .446-1 1v5c0 .554.446 1 1 1h6c.554 0 1-.446 1-1v-5c0-.554-.446-1-1-1zm-9.5 0h-7c-.277 0-.5.223-.5.5s.223.5.5.5h7c.277 0 .5-.223.5-.5s-.223-.5-.5-.5zm0 3h-7c-.277 0-.5.223-.5.5s.223.5.5.5h7c.277 0 .5-.223.5-.5s-.223-.5-.5-.5zm0 3h-7c-.277 0-.5.223-.5.5s.223.5.5.5h7c.277 0 .5-.223.5-.5s-.223-.5-.5-.5zm10-9h-17c-.277 0-.5.223-.5.5s.223.5.5.5h17c.277 0 .5-.223.5-.5s-.223-.5-.5-.5zm0 12h-17c-.277 0-.5.223-.5.5s.223.5.5.5h17c.277 0 .5-.223.5-.5s-.223-.5-.5-.5z"/>
-    </g>
+    <path d="M20 9h-6c-.554 0-1 .446-1 1v5c0 .554.446 1 1 1h6c.554 0 1-.446 1-1v-5c0-.554-.446-1-1-1zm-9.5 0h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm0 3h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm0 3h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm10-9h-17a.5.5 0 0 0 0 1h17a.5.5 0 0 0 0-1zm0 12h-17a.5.5 0 0 0 0 1h17a.5.5 0 0 0 0-1z" id="align-float-right"/>
 </svg>
index df95976..0351e89 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M13.3 6.3l6.3 5.7-6.3 5.7v-3.8H12c-3.2 0-6.3 1.3-7.6 3.8 0-4.7 2.8-7.6 7.9-7.6h.9V6.3z" id="path3034"/>
+    <path d="M13.3 6.3l6.3 5.7-6.3 5.7v-3.8H12c-3.2 0-6.3 1.3-7.6 3.8 0-4.7 2.8-7.6 7.9-7.6h.9V6.3z"/>
 </svg>
index 9abef4f..c229120 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M13.3 6.3l6.3 5.7-6.3 5.7v-3.8H12c-3.2 0-6.3 1.3-7.6 3.8 0-4.7 2.8-7.6 7.9-7.6h.9V6.3z" id="path3034"/>
+    <path d="M13.3 6.3l6.3 5.7-6.3 5.7v-3.8H12c-3.2 0-6.3 1.3-7.6 3.8 0-4.7 2.8-7.6 7.9-7.6h.9V6.3z"/>
 </svg>
index d957f70..3bb7096 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M10.7 6.3L4.4 12l6.3 5.7v-3.8H12c3.2 0 6.3 1.3 7.6 3.8 0-4.7-2.8-7.6-7.9-7.6h-.9V6.3z" id="path3034"/>
+    <path d="M10.7 6.3L4.4 12l6.3 5.7v-3.8H12c3.2 0 6.3 1.3 7.6 3.8 0-4.7-2.8-7.6-7.9-7.6h-.9V6.3z"/>
 </svg>
index 6ec2fcc..9f4bd13 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M10.7 6.3L4.4 12l6.3 5.7v-3.8H12c3.2 0 6.3 1.3 7.6 3.8 0-4.7-2.8-7.6-7.9-7.6h-.9V6.3z" id="path3034"/>
+    <path d="M10.7 6.3L4.4 12l6.3 5.7v-3.8H12c3.2 0 6.3 1.3 7.6 3.8 0-4.7-2.8-7.6-7.9-7.6h-.9V6.3z"/>
 </svg>
index e3e4b98..6dacb76 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g4">
-        <path d="M16 12H6c-1.7 0-3 1.3-3 3h13v3l5-4.5L16 9v3z" id="path6"/>
-    </g>
+    <path d="M16 12H6c-1.7 0-3 1.3-3 3h13v3l5-4.5L16 9v3z"/>
 </svg>
index a0097cb..b4c0e0d 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g4">
-        <path d="M16 12H6c-1.7 0-3 1.3-3 3h13v3l5-4.5L16 9v3z" id="path6"/>
-    </g>
+    <path d="M16 12H6c-1.7 0-3 1.3-3 3h13v3l5-4.5L16 9v3z"/>
 </svg>
index 1e9cdab..269de66 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M8 12h10c1.7 0 3 1.3 3 3H8v3l-5-4.5L8 9v3z"/>
-    </g>
+    <path d="M8 12h10c1.7 0 3 1.3 3 3H8v3l-5-4.5L8 9v3z"/>
 </svg>
index 54d6d25..1087ff9 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M8 12h10c1.7 0 3 1.3 3 3H8v3l-5-4.5L8 9v3z"/>
-    </g>
+    <path d="M8 12h10c1.7 0 3 1.3 3 3H8v3l-5-4.5L8 9v3z"/>
 </svg>
index aec5f50..19df2c0 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M12 10h4V5h-4v5zm-5 2h9v-1H7v1zm0 2h9v-1H7v1zm0 2h9v-1H7v1zm4-9H7v1h4V7zm0 2H7v1h4V9zm0-4H7v1h4V5zM5 3h13v16H8c-1.7 0-3-1.3-3-3V3z"/>
-    </g>
+    <path d="M12 10h4V5h-4v5zm-5 2h9v-1H7v1zm0 2h9v-1H7v1zm0 2h9v-1H7v1zm4-9H7v1h4V7zm0 2H7v1h4V9zm0-4H7v1h4V5zM5 3h13v16H8c-1.7 0-3-1.3-3-3V3z"/>
 </svg>
index e8a1ad3..862bc2b 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M12 10h4V5h-4v5zm-5 2h9v-1H7v1zm0 2h9v-1H7v1zm0 2h9v-1H7v1zm4-9H7v1h4V7zm0 2H7v1h4V9zm0-4H7v1h4V5zM5 3h13v16H8c-1.7 0-3-1.3-3-3V3z"/>
-    </g>
+    <path d="M12 10h4V5h-4v5zm-5 2h9v-1H7v1zm0 2h9v-1H7v1zm0 2h9v-1H7v1zm4-9H7v1h4V7zm0 2H7v1h4V9zm0-4H7v1h4V5zM5 3h13v16H8c-1.7 0-3-1.3-3-3V3z"/>
 </svg>
index 87cb725..0fba841 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g16">
-        <path d="M11 10H7V5h4v5zm5 2H7v-1h9v1zm0 2H7v-1h9v1zm0 2H7v-1h9v1zm-4-9h4v1h-4V7zm0 2h4v1h-4V9zm0-4h4v1h-4V5zm6-2H5v16h10c1.7 0 3-1.3 3-3V3z" id="path18"/>
-    </g>
+    <path d="M11 10H7V5h4v5zm5 2H7v-1h9v1zm0 2H7v-1h9v1zm0 2H7v-1h9v1zm-4-9h4v1h-4V7zm0 2h4v1h-4V9zm0-4h4v1h-4V5zm6-2H5v16h10c1.7 0 3-1.3 3-3V3z"/>
 </svg>
index ab4398e..3b16dcb 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g16">
-        <path d="M11 10H7V5h4v5zm5 2H7v-1h9v1zm0 2H7v-1h9v1zm0 2H7v-1h9v1zm-4-9h4v1h-4V7zm0 2h4v1h-4V9zm0-4h4v1h-4V5zm6-2H5v16h10c1.7 0 3-1.3 3-3V3z" id="path18"/>
-    </g>
+    <path d="M11 10H7V5h4v5zm5 2H7v-1h9v1zm0 2H7v-1h9v1zm0 2H7v-1h9v1zm-4-9h4v1h-4V7zm0 2h4v1h-4V9zm0-4h4v1h-4V5zm6-2H5v16h10c1.7 0 3-1.3 3-3V3z"/>
 </svg>
index 81e2add..b1636c1 100644 (file)
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <g>
-            <path d="M21 11l-6 7-4-4-1 1 5 5 7-8z"/>
-        </g>
-        <path d="M17 14V3H4v13c0 1.7 1.3 3 3 3h5l-3-3H6v-1h2.6l1-1H6v-1h9v1h-2l1 1h2l1-1zM6 5h4v1H6V5zm0 2h4v1H6V7zm0 2h4v1H6V9zm9 3H6v-1h9v1zm-4-2V5h4v5h-4z"/>
-    </g>
+    <path d="M21 11l-6 7-4-4-1 1 5 5 7-8z"/>
+    <path d="M17 14V3H4v13c0 1.7 1.3 3 3 3h5l-3-3H6v-1h2.6l1-1H6v-1h9v1h-2l1 1h2l1-1zM6 5h4v1H6V5zm0 2h4v1H6V7zm0 2h4v1H6V9zm9 3H6v-1h9v1zm-4-2V5h4v5h-4z"/>
 </svg>
index 08afca2..396e6a1 100644 (file)
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <g>
-            <path d="M21 11l-6 7-4-4-1 1 5 5 7-8z"/>
-        </g>
-        <path d="M17 14V3H4v13c0 1.7 1.3 3 3 3h5l-3-3H6v-1h2.6l1-1H6v-1h9v1h-2l1 1h2l1-1zM6 5h4v1H6V5zm0 2h4v1H6V7zm0 2h4v1H6V9zm9 3H6v-1h9v1zm-4-2V5h4v5h-4z"/>
-    </g>
+    <path d="M21 11l-6 7-4-4-1 1 5 5 7-8z"/>
+    <path d="M17 14V3H4v13c0 1.7 1.3 3 3 3h5l-3-3H6v-1h2.6l1-1H6v-1h9v1h-2l1 1h2l1-1zM6 5h4v1H6V5zm0 2h4v1H6V7zm0 2h4v1H6V9zm9 3H6v-1h9v1zm-4-2V5h4v5h-4z"/>
 </svg>
index f9ec5b6..d331123 100644 (file)
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g28">
-        <g id="g30">
-            <path d="M5 11l6 7 4-4 1 1-5 5-7-8z" id="path32"/>
-        </g>
-        <path d="M9 14V3h13v13c0 1.7-1.3 3-3 3h-5l3-3h3v-1h-2.6l-1-1H20v-1h-9v1h2l-1 1h-2l-1-1zm11-9h-4v1h4V5zm0 2h-4v1h4V7zm0 2h-4v1h4V9zm-9 3h9v-1h-9v1zm4-2V5h-4v5h4z" id="path34"/>
-    </g>
+    <path d="M5 11l6 7 4-4 1 1-5 5-7-8z"/>
+    <path d="M9 14V3h13v13c0 1.7-1.3 3-3 3h-5l3-3h3v-1h-2.6l-1-1H20v-1h-9v1h2l-1 1h-2l-1-1zm11-9h-4v1h4V5zm0 2h-4v1h4V7zm0 2h-4v1h4V9zm-9 3h9v-1h-9v1zm4-2V5h-4v5h4z"/>
 </svg>
index e405ff5..604143b 100644 (file)
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g28">
-        <g id="g30">
-            <path d="M5 11l6 7 4-4 1 1-5 5-7-8z" id="path32"/>
-        </g>
-        <path d="M9 14V3h13v13c0 1.7-1.3 3-3 3h-5l3-3h3v-1h-2.6l-1-1H20v-1h-9v1h2l-1 1h-2l-1-1zm11-9h-4v1h4V5zm0 2h-4v1h4V7zm0 2h-4v1h4V9zm-9 3h9v-1h-9v1zm4-2V5h-4v5h4z" id="path34"/>
-    </g>
+    <path d="M5 11l6 7 4-4 1 1-5 5-7-8z"/>
+    <path d="M9 14V3h13v13c0 1.7-1.3 3-3 3h-5l3-3h3v-1h-2.6l-1-1H20v-1h-9v1h2l-1 1h-2l-1-1zm11-9h-4v1h4V5zm0 2h-4v1h4V7zm0 2h-4v1h4V9zm-9 3h9v-1h-9v1zm4-2V5h-4v5h4z"/>
 </svg>
index 8dd4d77..7c4c294 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl-invert.png differ
index a0f43ab..97bae5a 100644 (file)
@@ -2,6 +2,6 @@
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="article-redirect">
         <path id="arrow" d="M5.9 14.2L1 18l4.9 4.8v-2.2c1.7 0 2.9-.2 4.3-1.2 1.2-.8 2.5-2.6 2.3-4.1-1.4 1-2.9 1.5-4.4 1.5-.7 0-1.4-.1-2.1-.3l-.1-2.3"/>
-        <path id="page" d="M19 3v13c0 1.7-1.3 3-3 3h-3.375c.157-.205.3-.43.438-.656.42-.688.77-1.483.843-2.344H17v-1h-3.125l-.125-1H17v-1h-3.375l-.03-.188-.283.188H8v1h3.906l-.22.156c-.523.375-1.065.64-1.592.844H8v.406c-.208-.013-.418-.07-.625-.094-.068-1.294-.125-3.874-.125-3.874L6 12.405V3zm-2 2h-4v1h4zm-5 0H8v5h4zm5 2h-4v1h4zm0 2h-4v1h4zm0 2H8v1h9z"/>
+        <path id="page" d="M19 3v13c0 1.7-1.3 3-3 3h-3.375c.157-.205.3-.43.438-.656.42-.688.77-1.483.843-2.344H17v-1h-3.125l-.125-1H17v-1h-3.375l-.03-.188-.283.188H8v1h3.906l-.22.156a7.097 7.097 0 0 1-1.592.844H8v.406c-.208-.013-.418-.07-.625-.094a178.903 178.903 0 0 1-.125-3.874L6 12.405V3zm-2 2h-4v1h4zm-5 0H8v5h4zm5 2h-4v1h4zm0 2h-4v1h4zm0 2H8v1h9z"/>
     </g>
 </svg>
index 709673f..09631d7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl.png differ
index 6a9c683..316d36c 100644 (file)
@@ -2,6 +2,6 @@
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="article-redirect">
         <path id="arrow" d="M5.9 14.2L1 18l4.9 4.8v-2.2c1.7 0 2.9-.2 4.3-1.2 1.2-.8 2.5-2.6 2.3-4.1-1.4 1-2.9 1.5-4.4 1.5-.7 0-1.4-.1-2.1-.3l-.1-2.3"/>
-        <path id="page" d="M19 3v13c0 1.7-1.3 3-3 3h-3.375c.157-.205.3-.43.438-.656.42-.688.77-1.483.843-2.344H17v-1h-3.125l-.125-1H17v-1h-3.375l-.03-.188-.283.188H8v1h3.906l-.22.156c-.523.375-1.065.64-1.592.844H8v.406c-.208-.013-.418-.07-.625-.094-.068-1.294-.125-3.874-.125-3.874L6 12.405V3zm-2 2h-4v1h4zm-5 0H8v5h4zm5 2h-4v1h4zm0 2h-4v1h4zm0 2H8v1h9z"/>
+        <path id="page" d="M19 3v13c0 1.7-1.3 3-3 3h-3.375c.157-.205.3-.43.438-.656.42-.688.77-1.483.843-2.344H17v-1h-3.125l-.125-1H17v-1h-3.375l-.03-.188-.283.188H8v1h3.906l-.22.156a7.097 7.097 0 0 1-1.592.844H8v.406c-.208-.013-.418-.07-.625-.094a178.903 178.903 0 0 1-.125-3.874L6 12.405V3zm-2 2h-4v1h4zm-5 0H8v5h4zm5 2h-4v1h4zm0 2h-4v1h4zm0 2H8v1h9z"/>
     </g>
 </svg>
index 5398dc8..545ea93 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M19.1 18.5c.6-.7.9-1.5.9-2.5 0-2.2-1.8-4-4-4s-4 1.8-4 4 1.8 4 4 4c.7 0 1.3-.1 1.8-.4l2.7 2.7 1.1-1.1-2.5-2.7zm-3.1-.3c-1.2 0-2.2-1-2.2-2.3 0-1.2 1-2.2 2.2-2.2 1.2 0 2.3 1 2.3 2.2-.1 1.3-1.1 2.3-2.3 2.3zM11.8 13c.3-.4.6-.7 1-1H7v-1h9s1.2 0 2 .6V3H5v13c0 1.7 1.3 3 3 3h3.8c-.6-.8-1-1.9-1-3H7v-1h3.9l.3-1H7v-1h4.8zm.2-8h4v5h-4V5zM7 5h4v1H7V5zm0 2h4v1H7V7zm0 2h4v1H7V9z"/>
-    </g>
+    <path d="M19.1 18.5c.6-.7.9-1.5.9-2.5 0-2.2-1.8-4-4-4s-4 1.8-4 4 1.8 4 4 4c.7 0 1.3-.1 1.8-.4l2.7 2.7 1.1-1.1-2.5-2.7zm-3.1-.3c-1.2 0-2.2-1-2.2-2.3 0-1.2 1-2.2 2.2-2.2 1.2 0 2.3 1 2.3 2.2-.1 1.3-1.1 2.3-2.3 2.3zM11.8 13c.3-.4.6-.7 1-1H7v-1h9s1.2 0 2 .6V3H5v13c0 1.7 1.3 3 3 3h3.8c-.6-.8-1-1.9-1-3H7v-1h3.9l.3-1H7v-1h4.8zm.2-8h4v5h-4V5zM7 5h4v1H7V5zm0 2h4v1H7V7zm0 2h4v1H7V9z"/>
 </svg>
index fcbe4ee..ac41c2b 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M19.1 18.5c.6-.7.9-1.5.9-2.5 0-2.2-1.8-4-4-4s-4 1.8-4 4 1.8 4 4 4c.7 0 1.3-.1 1.8-.4l2.7 2.7 1.1-1.1-2.5-2.7zm-3.1-.3c-1.2 0-2.2-1-2.2-2.3 0-1.2 1-2.2 2.2-2.2 1.2 0 2.3 1 2.3 2.2-.1 1.3-1.1 2.3-2.3 2.3zM11.8 13c.3-.4.6-.7 1-1H7v-1h9s1.2 0 2 .6V3H5v13c0 1.7 1.3 3 3 3h3.8c-.6-.8-1-1.9-1-3H7v-1h3.9l.3-1H7v-1h4.8zm.2-8h4v5h-4V5zM7 5h4v1H7V5zm0 2h4v1H7V7zm0 2h4v1H7V9z"/>
-    </g>
+    <path d="M19.1 18.5c.6-.7.9-1.5.9-2.5 0-2.2-1.8-4-4-4s-4 1.8-4 4 1.8 4 4 4c.7 0 1.3-.1 1.8-.4l2.7 2.7 1.1-1.1-2.5-2.7zm-3.1-.3c-1.2 0-2.2-1-2.2-2.3 0-1.2 1-2.2 2.2-2.2 1.2 0 2.3 1 2.3 2.2-.1 1.3-1.1 2.3-2.3 2.3zM11.8 13c.3-.4.6-.7 1-1H7v-1h9s1.2 0 2 .6V3H5v13c0 1.7 1.3 3 3 3h3.8c-.6-.8-1-1.9-1-3H7v-1h3.9l.3-1H7v-1h4.8zm.2-8h4v5h-4V5zM7 5h4v1H7V5zm0 2h4v1H7V7zm0 2h4v1H7V9z"/>
 </svg>
index 33bcf2a..b93fd7c 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g44">
-        <path d="M7.5 18.5c-.6-.7-.9-1.5-.9-2.5 0-2.2 1.8-4 4-4s4 1.8 4 4-1.8 4-4 4c-.7 0-1.3-.1-1.8-.4l-2.7 2.7L5 21.2l2.5-2.7zm3.1-.3c1.2 0 2.2-1 2.2-2.3 0-1.2-1-2.2-2.2-2.2-1.2 0-2.3 1-2.3 2.2.1 1.3 1.1 2.3 2.3 2.3zm4.2-5.2c-.3-.4-.6-.7-1-1h5.8v-1h-9s-1.2 0-2 .6V3h13v13c0 1.7-1.3 3-3 3h-3.8c.6-.8 1-1.9 1-3h3.8v-1h-3.9l-.3-1h4.2v-1h-4.8zm-.2-8h-4v5h4V5zm5 0h-4v1h4V5zm0 2h-4v1h4V7zm0 2h-4v1h4V9z" id="path46"/>
-    </g>
+    <path d="M7.5 18.5c-.6-.7-.9-1.5-.9-2.5 0-2.2 1.8-4 4-4s4 1.8 4 4-1.8 4-4 4c-.7 0-1.3-.1-1.8-.4l-2.7 2.7L5 21.2l2.5-2.7zm3.1-.3c1.2 0 2.2-1 2.2-2.3 0-1.2-1-2.2-2.2-2.2-1.2 0-2.3 1-2.3 2.2.1 1.3 1.1 2.3 2.3 2.3zm4.2-5.2c-.3-.4-.6-.7-1-1h5.8v-1h-9s-1.2 0-2 .6V3h13v13c0 1.7-1.3 3-3 3h-3.8c.6-.8 1-1.9 1-3h3.8v-1h-3.9l-.3-1h4.2v-1h-4.8zm-.2-8h-4v5h4V5zm5 0h-4v1h4V5zm0 2h-4v1h4V7zm0 2h-4v1h4V9z"/>
 </svg>
index 7ded232..ed43acf 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g44">
-        <path d="M7.5 18.5c-.6-.7-.9-1.5-.9-2.5 0-2.2 1.8-4 4-4s4 1.8 4 4-1.8 4-4 4c-.7 0-1.3-.1-1.8-.4l-2.7 2.7L5 21.2l2.5-2.7zm3.1-.3c1.2 0 2.2-1 2.2-2.3 0-1.2-1-2.2-2.2-2.2-1.2 0-2.3 1-2.3 2.2.1 1.3 1.1 2.3 2.3 2.3zm4.2-5.2c-.3-.4-.6-.7-1-1h5.8v-1h-9s-1.2 0-2 .6V3h13v13c0 1.7-1.3 3-3 3h-3.8c.6-.8 1-1.9 1-3h3.8v-1h-3.9l-.3-1h4.2v-1h-4.8zm-.2-8h-4v5h4V5zm5 0h-4v1h4V5zm0 2h-4v1h4V7zm0 2h-4v1h4V9z" id="path46"/>
-    </g>
+    <path d="M7.5 18.5c-.6-.7-.9-1.5-.9-2.5 0-2.2 1.8-4 4-4s4 1.8 4 4-1.8 4-4 4c-.7 0-1.3-.1-1.8-.4l-2.7 2.7L5 21.2l2.5-2.7zm3.1-.3c1.2 0 2.2-1 2.2-2.3 0-1.2-1-2.2-2.2-2.2-1.2 0-2.3 1-2.3 2.2.1 1.3 1.1 2.3 2.3 2.3zm4.2-5.2c-.3-.4-.6-.7-1-1h5.8v-1h-9s-1.2 0-2 .6V3h13v13c0 1.7-1.3 3-3 3h-3.8c.6-.8 1-1.9 1-3h3.8v-1h-3.9l-.3-1h4.2v-1h-4.8zm-.2-8h-4v5h4V5zm5 0h-4v1h4V5zm0 2h-4v1h4V7zm0 2h-4v1h4V9z"/>
 </svg>
index 03874c8..83ed027 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M6.21 14.7L4.51 10c-1-2.8.5-5.5 3.5-6.6 3-1.1 5.9 0 6.9 2.8l1.7 4.7c.7 1.9 1 2.8 2.9 2.1l.3 1-14.1 5.1-.3-.9c1.9-.7 1.5-1.6.8-3.5zm5.8 5.1l2.8-1c.3.9-.8 2.4-2.1 2.9s-3.2.1-3.5-.9l2.8-1z" id="path56"/>
+    <path d="M6.21 14.7L4.51 10c-1-2.8.5-5.5 3.5-6.6 3-1.1 5.9 0 6.9 2.8l1.7 4.7c.7 1.9 1 2.8 2.9 2.1l.3 1-14.1 5.1-.3-.9c1.9-.7 1.5-1.6.8-3.5zm5.8 5.1l2.8-1c.3.9-.8 2.4-2.1 2.9s-3.2.1-3.5-.9l2.8-1z"/>
 </svg>
index ae03529..92bcef5 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M6.21 14.7L4.51 10c-1-2.8.5-5.5 3.5-6.6 3-1.1 5.9 0 6.9 2.8l1.7 4.7c.7 1.9 1 2.8 2.9 2.1l.3 1-14.1 5.1-.3-.9c1.9-.7 1.5-1.6.8-3.5zm5.8 5.1l2.8-1c.3.9-.8 2.4-2.1 2.9s-3.2.1-3.5-.9l2.8-1z" id="path56"/>
+    <path d="M6.21 14.7L4.51 10c-1-2.8.5-5.5 3.5-6.6 3-1.1 5.9 0 6.9 2.8l1.7 4.7c.7 1.9 1 2.8 2.9 2.1l.3 1-14.1 5.1-.3-.9c1.9-.7 1.5-1.6.8-3.5zm5.8 5.1l2.8-1c.3.9-.8 2.4-2.1 2.9s-3.2.1-3.5-.9l2.8-1z"/>
 </svg>
index 1447b77..973a140 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #D11D13 }</style>
-    <path d="M12 4c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm5 9H7v-2h10v2z" id="path4"/>
+    <path d="M12 4c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm5 9H7v-2h10v2z"/>
 </svg>
index db7d0f7..551069e 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M12 4c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm5 9H7v-2h10v2z" id="path4"/>
+    <path d="M12 4c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm5 9H7v-2h10v2z"/>
 </svg>
index 6299c30..b50bb61 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M12 4c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm5 9H7v-2h10v2z" id="path4"/>
+    <path d="M12 4c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm5 9H7v-2h10v2z"/>
 </svg>
index 6a542dc..2848a10 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g66">
-        <path d="M17 11v2h-2l3.6 3.6c.9-1.3 1.4-2.9 1.4-4.6 0-4.4-3.6-8-8-8-1.7 0-3.3.5-4.6 1.4L13 11h4zM4 4L3 5l2.4 2.4C4.5 8.7 4 10.3 4 12c0 4.4 3.6 8 8 8 1.7 0 3.3-.5 4.6-1.4L19 21l1-1L4 4zm3 9v-2h2l2 2H7z" id="path68"/>
-    </g>
+    <path d="M17 11v2h-2l3.6 3.6c.9-1.3 1.4-2.9 1.4-4.6 0-4.4-3.6-8-8-8-1.7 0-3.3.5-4.6 1.4L13 11h4zM4 4L3 5l2.4 2.4C4.5 8.7 4 10.3 4 12c0 4.4 3.6 8 8 8 1.7 0 3.3-.5 4.6-1.4L19 21l1-1L4 4zm3 9v-2h2l2 2H7z"/>
 </svg>
index f6d5486..160219c 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g66">
-        <path d="M17 11v2h-2l3.6 3.6c.9-1.3 1.4-2.9 1.4-4.6 0-4.4-3.6-8-8-8-1.7 0-3.3.5-4.6 1.4L13 11h4zM4 4L3 5l2.4 2.4C4.5 8.7 4 10.3 4 12c0 4.4 3.6 8 8 8 1.7 0 3.3-.5 4.6-1.4L19 21l1-1L4 4zm3 9v-2h2l2 2H7z" id="path68"/>
-    </g>
+    <path d="M17 11v2h-2l3.6 3.6c.9-1.3 1.4-2.9 1.4-4.6 0-4.4-3.6-8-8-8-1.7 0-3.3.5-4.6 1.4L13 11h4zM4 4L3 5l2.4 2.4C4.5 8.7 4 10.3 4 12c0 4.4 3.6 8 8 8 1.7 0 3.3-.5 4.6-1.4L19 21l1-1L4 4zm3 9v-2h2l2 2H7z"/>
 </svg>
index 4080e8d..92994a6 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g66">
-        <path d="M7 11v2h2l-3.6 3.6C4.5 15.3 4 13.7 4 12c0-4.4 3.6-8 8-8 1.7 0 3.3.5 4.6 1.4L11 11H7zm13-7l1 1-2.4 2.4c.9 1.3 1.4 2.9 1.4 4.6 0 4.4-3.6 8-8 8-1.7 0-3.3-.5-4.6-1.4L5 21l-1-1L20 4zm-3 9v-2h-2l-2 2h4z" id="path68"/>
-    </g>
+    <path d="M7 11v2h2l-3.6 3.6C4.5 15.3 4 13.7 4 12c0-4.4 3.6-8 8-8 1.7 0 3.3.5 4.6 1.4L11 11H7zm13-7l1 1-2.4 2.4c.9 1.3 1.4 2.9 1.4 4.6 0 4.4-3.6 8-8 8-1.7 0-3.3-.5-4.6-1.4L5 21l-1-1L20 4zm-3 9v-2h-2l-2 2h4z"/>
 </svg>
index d0ddde0..90fe46a 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g66">
-        <path d="M7 11v2h2l-3.6 3.6C4.5 15.3 4 13.7 4 12c0-4.4 3.6-8 8-8 1.7 0 3.3.5 4.6 1.4L11 11H7zm13-7l1 1-2.4 2.4c.9 1.3 1.4 2.9 1.4 4.6 0 4.4-3.6 8-8 8-1.7 0-3.3-.5-4.6-1.4L5 21l-1-1L20 4zm-3 9v-2h-2l-2 2h4z" id="path68"/>
-    </g>
+    <path d="M7 11v2h2l-3.6 3.6C4.5 15.3 4 13.7 4 12c0-4.4 3.6-8 8-8 1.7 0 3.3.5 4.6 1.4L11 11H7zm13-7l1 1-2.4 2.4c.9 1.3 1.4 2.9 1.4 4.6 0 4.4-3.6 8-8 8-1.7 0-3.3-.5-4.6-1.4L5 21l-1-1L20 4zm-3 9v-2h-2l-2 2h4z"/>
 </svg>
index 77d0c23..97f3d2e 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="bold-a">
-        <path d="M16 18h3L14 6h-3L6 18h3l1.25-3h4.5L16 18zm-4.917-5L12.5 9.6l1.417 3.4h-2.834z"/>
-    </g>
+    <path d="M16 18h3L14 6h-3L6 18h3l1.25-3h4.5L16 18zm-4.917-5L12.5 9.6l1.417 3.4h-2.834z" id="bold-a"/>
 </svg>
index d5cee05..ce9f4f8 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="bold-a">
-        <path d="M16 18h3L14 6h-3L6 18h3l1.25-3h4.5L16 18zm-4.917-5L12.5 9.6l1.417 3.4h-2.834z"/>
-    </g>
+    <path d="M16 18h3L14 6h-3L6 18h3l1.25-3h4.5L16 18zm-4.917-5L12.5 9.6l1.417 3.4h-2.834z" id="bold-a"/>
 </svg>
index 30d7d20..838af39 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain-invert.png differ
index e1a7c67..2e11204 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="bold-arab-ain">
-        <path id="arab-ain" d="M9.337 13.616c0 1.35 1.386 2.1 4.16 2.258l2.186-.03.318.045c-.03.123-.25.34-.66.65l-.09.064c-1.236.93-2.423 1.393-3.56 1.393-1.143 0-2.046-.33-2.71-.99-.65-.66-.976-1.56-.976-2.7.006-1.353.567-2.572 1.685-3.657v-.043l-.607-.55c-.15-.18-.222-.39-.222-.63 0-.49.24-1.11.718-1.863.65-1.046 1.303-1.566 1.958-1.56.886.004 1.618.42 2.194 1.245.324.48-.03.55-1.065.22-.842-.33-1.527-.05-2.054.826l.016.074 1.123.866.05.005c1.404-.496 2.418-.74 3.043-.724-.058.116-.14.36-.243.732-.105.357-.206.684-.305.982l-.126.373-.386.05c-1.743.24-2.992.716-3.745 1.43-.464.463-.698.972-.703 1.524"/>
+        <path id="arab-ain" d="M9.337 13.616c0 1.35 1.386 2.1 4.16 2.258l2.186-.03.318.045c-.03.12-.25.34-.66.65l-.09.06c-1.233.93-2.42 1.394-3.56 1.394-1.14 0-2.043-.33-2.71-.99-.65-.66-.973-1.56-.973-2.7.006-1.353.567-2.572 1.685-3.657v-.044l-.606-.55a.952.952 0 0 1-.222-.63c0-.49.24-1.11.72-1.863.65-1.045 1.302-1.565 1.957-1.56.886.005 1.618.42 2.194 1.246.325.48-.03.55-1.064.22-.843-.33-1.528-.05-2.055.826l.016.074 1.125.866.05.005c1.405-.497 2.42-.74 3.044-.725-.06.116-.14.36-.244.732a27.75 27.75 0 0 1-.304.982l-.125.372-.386.05c-1.743.24-2.992.716-3.745 1.43-.465.463-.7.972-.704 1.524"/>
     </g>
 </svg>
index e9dce68..2ac8bfc 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain.png differ
index 23ed091..452c3d0 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="bold-arab-ain">
-        <path id="arab-ain" d="M9.337 13.616c0 1.35 1.386 2.1 4.16 2.258l2.186-.03.318.045c-.03.123-.25.34-.66.65l-.09.064c-1.236.93-2.423 1.393-3.56 1.393-1.143 0-2.046-.33-2.71-.99-.65-.66-.976-1.56-.976-2.7.006-1.353.567-2.572 1.685-3.657v-.043l-.607-.55c-.15-.18-.222-.39-.222-.63 0-.49.24-1.11.718-1.863.65-1.046 1.303-1.566 1.958-1.56.886.004 1.618.42 2.194 1.245.324.48-.03.55-1.065.22-.842-.33-1.527-.05-2.054.826l.016.074 1.123.866.05.005c1.404-.496 2.418-.74 3.043-.724-.058.116-.14.36-.243.732-.105.357-.206.684-.305.982l-.126.373-.386.05c-1.743.24-2.992.716-3.745 1.43-.464.463-.698.972-.703 1.524"/>
+        <path id="arab-ain" d="M9.337 13.616c0 1.35 1.386 2.1 4.16 2.258l2.186-.03.318.045c-.03.12-.25.34-.66.65l-.09.06c-1.233.93-2.42 1.394-3.56 1.394-1.14 0-2.043-.33-2.71-.99-.65-.66-.973-1.56-.973-2.7.006-1.353.567-2.572 1.685-3.657v-.044l-.606-.55a.952.952 0 0 1-.222-.63c0-.49.24-1.11.72-1.863.65-1.045 1.302-1.565 1.957-1.56.886.005 1.618.42 2.194 1.246.325.48-.03.55-1.064.22-.843-.33-1.528-.05-2.055.826l.016.074 1.125.866.05.005c1.405-.497 2.42-.74 3.044-.725-.06.116-.14.36-.244.732a27.75 27.75 0 0 1-.304.982l-.125.372-.386.05c-1.743.24-2.992.716-3.745 1.43-.465.463-.7.972-.704 1.524"/>
     </g>
 </svg>
index 9eb593b..6c2130d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad-invert.png differ
index 8b75d71..e55b63f 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="bold-arab-dad">
-        <path id="arab-dad" d="M16.41 8.232l-1.675-.665L15.43 6l1.687.64-.707 1.592m.775 3.078c-.51-.286-1-.427-1.476-.423-.475 0-.986.205-1.536.616l-.506.38.006.024c1.084.066 1.934.1 2.55.1h.314c.57-.022.994-.065 1.278-.132-.067-.17-.275-.36-.625-.566h-.005M10.382 14.6c-.017-.904-.33-1.87-.938-2.898l1.294-1.73.118.15c.267.336.504.924.713 1.766l.065.05c.496-.007.942-.17 1.338-.484v-.006l1.732-1.53c.68-.6 1.282-.9 1.807-.9.384.003.85.194 1.395.57.55.378.884.697 1 .96.063.15.094.385.094.71 0 .694-.11 1.227-.33 1.596-.192.31-.473.555-.844.734-.438.208-1.55.312-3.333.312-.8 0-1.794-.02-2.982-.062l-.143.43c-.254.67-.463 1.112-.625 1.323-.725.937-1.786 1.405-3.183 1.405C5.85 16.99 5 16.076 5 14.256c.003-.94.278-1.814.824-2.618.15-.216.298-.367.444-.454.225-.133.288-.09.188.124-.396.862-.596 1.548-.6 2.058.008 1.177.752 1.768 2.232 1.772 1.038-.004 1.803-.182 2.295-.535"/>
+        <path id="arab-dad" d="M16.41 8.232l-1.675-.665L15.43 6l1.687.64-.707 1.592m.775 3.078c-.51-.286-1-.427-1.476-.423-.478 0-.99.205-1.54.616l-.505.38.006.024c1.085.066 1.935.1 2.55.1h.315c.57-.022.994-.065 1.278-.132-.067-.17-.275-.36-.625-.566h-.006M10.38 14.6c-.016-.905-.33-1.87-.937-2.9l1.294-1.73.118.15c.267.337.504.925.713 1.767l.064.05c.496-.007.942-.17 1.338-.484v-.006l1.732-1.53c.68-.6 1.282-.9 1.807-.9.383.003.85.194 1.394.57.55.378.884.697 1 .96.063.15.094.385.094.71 0 .694-.11 1.227-.33 1.596-.193.31-.474.555-.845.734-.438.208-1.55.312-3.333.312-.8 0-1.794-.02-2.982-.064l-.142.43c-.254.67-.463 1.112-.625 1.323-.724.937-1.785 1.405-3.182 1.405-1.71-.006-2.56-.92-2.56-2.74.003-.94.278-1.814.824-2.618.15-.216.298-.367.444-.454.225-.133.288-.09.188.124-.396.862-.596 1.548-.6 2.058.008 1.177.752 1.768 2.232 1.772 1.038-.004 1.803-.182 2.295-.535"/>
     </g>
 </svg>
index 46d579b..4d45ea0 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad.png differ
index 7e6769d..b90bb77 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="bold-arab-dad">
-        <path id="arab-dad" d="M16.41 8.232l-1.675-.665L15.43 6l1.687.64-.707 1.592m.775 3.078c-.51-.286-1-.427-1.476-.423-.475 0-.986.205-1.536.616l-.506.38.006.024c1.084.066 1.934.1 2.55.1h.314c.57-.022.994-.065 1.278-.132-.067-.17-.275-.36-.625-.566h-.005M10.382 14.6c-.017-.904-.33-1.87-.938-2.898l1.294-1.73.118.15c.267.336.504.924.713 1.766l.065.05c.496-.007.942-.17 1.338-.484v-.006l1.732-1.53c.68-.6 1.282-.9 1.807-.9.384.003.85.194 1.395.57.55.378.884.697 1 .96.063.15.094.385.094.71 0 .694-.11 1.227-.33 1.596-.192.31-.473.555-.844.734-.438.208-1.55.312-3.333.312-.8 0-1.794-.02-2.982-.062l-.143.43c-.254.67-.463 1.112-.625 1.323-.725.937-1.786 1.405-3.183 1.405C5.85 16.99 5 16.076 5 14.256c.003-.94.278-1.814.824-2.618.15-.216.298-.367.444-.454.225-.133.288-.09.188.124-.396.862-.596 1.548-.6 2.058.008 1.177.752 1.768 2.232 1.772 1.038-.004 1.803-.182 2.295-.535"/>
+        <path id="arab-dad" d="M16.41 8.232l-1.675-.665L15.43 6l1.687.64-.707 1.592m.775 3.078c-.51-.286-1-.427-1.476-.423-.478 0-.99.205-1.54.616l-.505.38.006.024c1.085.066 1.935.1 2.55.1h.315c.57-.022.994-.065 1.278-.132-.067-.17-.275-.36-.625-.566h-.006M10.38 14.6c-.016-.905-.33-1.87-.937-2.9l1.294-1.73.118.15c.267.337.504.925.713 1.767l.064.05c.496-.007.942-.17 1.338-.484v-.006l1.732-1.53c.68-.6 1.282-.9 1.807-.9.383.003.85.194 1.394.57.55.378.884.697 1 .96.063.15.094.385.094.71 0 .694-.11 1.227-.33 1.596-.193.31-.474.555-.845.734-.438.208-1.55.312-3.333.312-.8 0-1.794-.02-2.982-.064l-.142.43c-.254.67-.463 1.112-.625 1.323-.724.937-1.785 1.405-3.182 1.405-1.71-.006-2.56-.92-2.56-2.74.003-.94.278-1.814.824-2.618.15-.216.298-.367.444-.454.225-.133.288-.09.188.124-.396.862-.596 1.548-.6 2.058.008 1.177.752 1.768 2.232 1.772 1.038-.004 1.803-.182 2.295-.535"/>
     </g>
 </svg>
index 03a7931..7be426d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to-invert.png differ
index 0176bb2..416e0f5 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="bold-armn-to">
-        <path id="armn-to" d="M13.86 16.257c.124 0 .254-.026.39-.078.135-.06.257-.15.367-.278.114-.13.205-.302.273-.516.073-.214.11-.48.11-.798V13h-1.14c-.14 0-.284.026-.43.078-.14.047-.27.133-.383.258-.11.125-.2.294-.274.508-.067.213-.1.487-.1.82 0 .34.035.47.108.695.08.214.18.39.29.53.12.132.25.23.387.29.14.05.276.073.406.073m-2.97-7.84c-.37.082-.694.247-.975.45-.28.198-.505.47-.672.813-.16.342-.242.78-.242 1.31V18H6v-7.188c0-.776.15-1.455.453-2.04.302-.587.714-1.077 1.234-1.467.52-.39 1.13-.685 1.83-.883.697-.198 1.44-.297 2.225-.297.526 0 1.04.044 1.54.133.504.088.98.22 1.43.398.447.172.858.388 1.233.65.375.26.698.564.97.913.275.344.49.734.64 1.17.15.43.226 1.09.226 1.61h1.357v2.04H17.78v1.6c0 .58-.103 1.09-.31 1.54-.21.44-.49.81-.845 1.113-.35.302-.834.53-1.297.687-.464.15-.953.227-1.47.227-.51 0-.996-.08-1.46-.235-.464-.156-.87-.39-1.22-.703-.348-.315-.626-.705-.835-1.174-.203-.473-.304-1.028-.304-1.663s.1-1.182.32-1.64c.21-.46.493-.685.85-.977.35-.297.76-.513 1.22-.648.454-.14.93-.21 1.43-.21h1.13c-.01-.49-.04-1.044-.24-1.36-.2-.324-.457-.58-.77-.767-.31-.192-.598-.33-.984-.425-.375-.09-.578-.094-1.1-.094-.52 0-.64.02-1.01.103z"/>
+        <path id="armn-to" d="M13.86 16.257c.124 0 .254-.026.39-.078.135-.06.257-.15.367-.28a1.43 1.43 0 0 0 .273-.517c.073-.214.11-.48.11-.798V13h-1.14c-.14 0-.284.026-.43.078a.905.905 0 0 0-.383.258c-.11.125-.2.294-.274.508-.067.213-.1.487-.1.82 0 .34.035.47.108.695.08.21.18.39.29.53.12.13.25.23.39.29.14.05.276.07.406.07m-2.97-7.84a2.67 2.67 0 0 0-.975.45 2.1 2.1 0 0 0-.672.813c-.16.342-.242.78-.242 1.31V18H6v-7.188c0-.776.15-1.455.453-2.04a4.227 4.227 0 0 1 1.234-1.467c.52-.39 1.13-.685 1.83-.883a8.114 8.114 0 0 1 2.225-.297c.526 0 1.04.044 1.54.133.504.088.98.22 1.43.398.447.172.858.388 1.233.65.375.26.698.564.97.913.275.34.49.73.64 1.17.15.43.226 1.09.226 1.61h1.36v2.04h-1.36v1.6c0 .58-.102 1.09-.31 1.54-.21.44-.49.81-.844 1.11-.35.302-.834.53-1.297.687-.465.15-.954.226-1.47.226-.51 0-.997-.08-1.46-.235a3.46 3.46 0 0 1-1.22-.703 3.452 3.452 0 0 1-.836-1.174c-.203-.472-.304-1.027-.304-1.662s.1-1.18.32-1.64c.21-.46.49-.684.85-.976.35-.297.76-.513 1.22-.648.452-.14.93-.21 1.43-.21h1.13c-.01-.49-.04-1.044-.24-1.36a2.26 2.26 0 0 0-.77-.767 3.234 3.234 0 0 0-.986-.427c-.375-.09-.578-.094-1.1-.094-.52 0-.64.02-1.01.102z"/>
     </g>
 </svg>
index 5e16e38..034e2d6 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to.png differ
index 7471d1a..c35979a 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="bold-armn-to">
-        <path id="armn-to" d="M13.86 16.257c.124 0 .254-.026.39-.078.135-.06.257-.15.367-.278.114-.13.205-.302.273-.516.073-.214.11-.48.11-.798V13h-1.14c-.14 0-.284.026-.43.078-.14.047-.27.133-.383.258-.11.125-.2.294-.274.508-.067.213-.1.487-.1.82 0 .34.035.47.108.695.08.214.18.39.29.53.12.132.25.23.387.29.14.05.276.073.406.073m-2.97-7.84c-.37.082-.694.247-.975.45-.28.198-.505.47-.672.813-.16.342-.242.78-.242 1.31V18H6v-7.188c0-.776.15-1.455.453-2.04.302-.587.714-1.077 1.234-1.467.52-.39 1.13-.685 1.83-.883.697-.198 1.44-.297 2.225-.297.526 0 1.04.044 1.54.133.504.088.98.22 1.43.398.447.172.858.388 1.233.65.375.26.698.564.97.913.275.344.49.734.64 1.17.15.43.226 1.09.226 1.61h1.357v2.04H17.78v1.6c0 .58-.103 1.09-.31 1.54-.21.44-.49.81-.845 1.113-.35.302-.834.53-1.297.687-.464.15-.953.227-1.47.227-.51 0-.996-.08-1.46-.235-.464-.156-.87-.39-1.22-.703-.348-.315-.626-.705-.835-1.174-.203-.473-.304-1.028-.304-1.663s.1-1.182.32-1.64c.21-.46.493-.685.85-.977.35-.297.76-.513 1.22-.648.454-.14.93-.21 1.43-.21h1.13c-.01-.49-.04-1.044-.24-1.36-.2-.324-.457-.58-.77-.767-.31-.192-.598-.33-.984-.425-.375-.09-.578-.094-1.1-.094-.52 0-.64.02-1.01.103z"/>
+        <path id="armn-to" d="M13.86 16.257c.124 0 .254-.026.39-.078.135-.06.257-.15.367-.28a1.43 1.43 0 0 0 .273-.517c.073-.214.11-.48.11-.798V13h-1.14c-.14 0-.284.026-.43.078a.905.905 0 0 0-.383.258c-.11.125-.2.294-.274.508-.067.213-.1.487-.1.82 0 .34.035.47.108.695.08.21.18.39.29.53.12.13.25.23.39.29.14.05.276.07.406.07m-2.97-7.84a2.67 2.67 0 0 0-.975.45 2.1 2.1 0 0 0-.672.813c-.16.342-.242.78-.242 1.31V18H6v-7.188c0-.776.15-1.455.453-2.04a4.227 4.227 0 0 1 1.234-1.467c.52-.39 1.13-.685 1.83-.883a8.114 8.114 0 0 1 2.225-.297c.526 0 1.04.044 1.54.133.504.088.98.22 1.43.398.447.172.858.388 1.233.65.375.26.698.564.97.913.275.34.49.73.64 1.17.15.43.226 1.09.226 1.61h1.36v2.04h-1.36v1.6c0 .58-.102 1.09-.31 1.54-.21.44-.49.81-.844 1.11-.35.302-.834.53-1.297.687-.465.15-.954.226-1.47.226-.51 0-.997-.08-1.46-.235a3.46 3.46 0 0 1-1.22-.703 3.452 3.452 0 0 1-.836-1.174c-.203-.472-.304-1.027-.304-1.662s.1-1.18.32-1.64c.21-.46.49-.684.85-.976.35-.297.76-.513 1.22-.648.452-.14.93-.21 1.43-.21h1.13c-.01-.49-.04-1.044-.24-1.36a2.26 2.26 0 0 0-.77-.767 3.234 3.234 0 0 0-.986-.427c-.375-.09-.578-.094-1.1-.094-.52 0-.64.02-1.01.102z"/>
     </g>
 </svg>
index 396215d..60b6416 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="bold-cyrl-be">
-        <path id="cyrl-be" d="M7 6h9v2h-6v3h2.65c.892 0 1.632.11 2.22.327.587.218 1.087.622 1.5 1.21.42.59.63 1.188.63 1.98 0 .812-.21 1.397-.63 1.976-.418.578-.897.974-1.436 1.187-.533.213-1.295.32-2.286.32h-5.65m4.768-2c.75 0 1.28-.05 1.584-.12.305-.077.57-.247.792-.51.23-.26.343-.472.343-.854 0-.557-.2-.868-.596-1.12-.396-.255-1.068-.397-2.02-.397H10v3"/>
+        <path id="cyrl-be" d="M7 6h9v2h-6v3h2.65c.892 0 1.632.11 2.22.327.587.218 1.087.622 1.5 1.21.42.59.63 1.188.63 1.98 0 .812-.21 1.397-.63 1.976-.418.578-.897.974-1.436 1.187-.533.213-1.295.32-2.286.32h-5.65m4.768-2c.75 0 1.28-.05 1.584-.12.305-.077.57-.247.792-.51.23-.26.343-.472.343-.854 0-.557-.2-.868-.596-1.12-.4-.255-1.07-.397-2.02-.397H10v3"/>
     </g>
 </svg>
index 383ef32..9d84cb0 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="bold-cyrl-be">
-        <path id="cyrl-be" d="M7 6h9v2h-6v3h2.65c.892 0 1.632.11 2.22.327.587.218 1.087.622 1.5 1.21.42.59.63 1.188.63 1.98 0 .812-.21 1.397-.63 1.976-.418.578-.897.974-1.436 1.187-.533.213-1.295.32-2.286.32h-5.65m4.768-2c.75 0 1.28-.05 1.584-.12.305-.077.57-.247.792-.51.23-.26.343-.472.343-.854 0-.557-.2-.868-.596-1.12-.396-.255-1.068-.397-2.02-.397H10v3"/>
+        <path id="cyrl-be" d="M7 6h9v2h-6v3h2.65c.892 0 1.632.11 2.22.327.587.218 1.087.622 1.5 1.21.42.59.63 1.188.63 1.98 0 .812-.21 1.397-.63 1.976-.418.578-.897.974-1.436 1.187-.533.213-1.295.32-2.286.32h-5.65m4.768-2c.75 0 1.28-.05 1.584-.12.305-.077.57-.247.792-.51.23-.26.343-.472.343-.854 0-.557-.2-.868-.596-1.12-.4-.255-1.07-.397-2.02-.397H10v3"/>
     </g>
 </svg>
index e9cc60f..764795f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe-invert.png differ
index 3d7523a..f0edc48 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="bold-cyrl-zhe">
-        <path id="cyrl-zhe" d="M13 6v5.154c.328-.033.537-.18.705-.447.168-.266.4-.873.698-1.82.39-1.242.79-2.034 1.197-2.375.403-.336 1.075-.504 2.014-.504L18 6v1.78l-.386-.008c-.4 0-.69.062-.878.187-.186.115-.337.3-.452.55-.115.25-.286.76-.512 1.536-.12.41-.25.755-.392 1.032-.137.275-.383.536-.738.78.44.156.8.465 1.084.926.288.454.603 1.102.944 1.942L18 18h-2.314l-1.17-3.08-.113-.253-.24-.56c-.247-.57-.45-.933-.61-1.09-.16-.157-.318-.236-.553-.236V18h-2v-5.22c-.226 0-.382.077-.546.23-.164.15-.368.517-.612 1.097l-.246.56-.113.253L8.313 18H6l1.33-3.267c.327-.808.635-1.447.923-1.92.293-.476.663-.793 1.11-.95-.355-.244-.603-.5-.745-.772-.137-.272-.268-.62-.392-1.04-.222-.76-.39-1.263-.505-1.52-.11-.252-.26-.44-.45-.57-.184-.12-.49-.183-.915-.183L6 7.782v-1.78l.386.008c.953 0 1.63.17 2.034.512.4.347.79 1.136 1.177 2.366.3.954.534 1.564.698 1.83.168.26.377.405.705.438V6.002"/>
+        <path id="cyrl-zhe" d="M13 6v5.154c.328-.033.537-.18.705-.447.168-.266.4-.873.698-1.82.39-1.242.79-2.034 1.197-2.375.403-.336 1.075-.504 2.014-.504L18 6v1.78l-.386-.008c-.4 0-.69.062-.878.187-.186.112-.337.3-.452.55-.115.25-.286.76-.512 1.533-.12.41-.25.755-.392 1.032-.137.275-.383.536-.738.78.44.156.8.465 1.084.926.288.455.603 1.103.944 1.943L18 18h-2.314l-1.17-3.08-.113-.253-.24-.56c-.247-.57-.45-.933-.61-1.09A.726.726 0 0 0 13 12.78V18h-2v-5.22c-.226 0-.382.077-.546.23-.164.15-.368.517-.612 1.097l-.246.56-.113.253L8.313 18H6l1.33-3.267c.327-.808.635-1.447.923-1.92.293-.476.663-.793 1.11-.95-.355-.244-.603-.5-.745-.772a6.357 6.357 0 0 1-.392-1.04c-.222-.76-.39-1.26-.505-1.52-.11-.25-.26-.44-.45-.57-.18-.12-.49-.18-.912-.18H6V6l.386.008c.953 0 1.63.17 2.034.512.4.347.79 1.136 1.177 2.366.3.954.534 1.564.698 1.83.168.26.377.405.705.438V6.002"/>
     </g>
 </svg>
index 41e562b..205800b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe.png differ
index e349905..aab3f4c 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="bold-cyrl-zhe">
-        <path id="cyrl-zhe" d="M13 6v5.154c.328-.033.537-.18.705-.447.168-.266.4-.873.698-1.82.39-1.242.79-2.034 1.197-2.375.403-.336 1.075-.504 2.014-.504L18 6v1.78l-.386-.008c-.4 0-.69.062-.878.187-.186.115-.337.3-.452.55-.115.25-.286.76-.512 1.536-.12.41-.25.755-.392 1.032-.137.275-.383.536-.738.78.44.156.8.465 1.084.926.288.454.603 1.102.944 1.942L18 18h-2.314l-1.17-3.08-.113-.253-.24-.56c-.247-.57-.45-.933-.61-1.09-.16-.157-.318-.236-.553-.236V18h-2v-5.22c-.226 0-.382.077-.546.23-.164.15-.368.517-.612 1.097l-.246.56-.113.253L8.313 18H6l1.33-3.267c.327-.808.635-1.447.923-1.92.293-.476.663-.793 1.11-.95-.355-.244-.603-.5-.745-.772-.137-.272-.268-.62-.392-1.04-.222-.76-.39-1.263-.505-1.52-.11-.252-.26-.44-.45-.57-.184-.12-.49-.183-.915-.183L6 7.782v-1.78l.386.008c.953 0 1.63.17 2.034.512.4.347.79 1.136 1.177 2.366.3.954.534 1.564.698 1.83.168.26.377.405.705.438V6.002"/>
+        <path id="cyrl-zhe" d="M13 6v5.154c.328-.033.537-.18.705-.447.168-.266.4-.873.698-1.82.39-1.242.79-2.034 1.197-2.375.403-.336 1.075-.504 2.014-.504L18 6v1.78l-.386-.008c-.4 0-.69.062-.878.187-.186.112-.337.3-.452.55-.115.25-.286.76-.512 1.533-.12.41-.25.755-.392 1.032-.137.275-.383.536-.738.78.44.156.8.465 1.084.926.288.455.603 1.103.944 1.943L18 18h-2.314l-1.17-3.08-.113-.253-.24-.56c-.247-.57-.45-.933-.61-1.09A.726.726 0 0 0 13 12.78V18h-2v-5.22c-.226 0-.382.077-.546.23-.164.15-.368.517-.612 1.097l-.246.56-.113.253L8.313 18H6l1.33-3.267c.327-.808.635-1.447.923-1.92.293-.476.663-.793 1.11-.95-.355-.244-.603-.5-.745-.772a6.357 6.357 0 0 1-.392-1.04c-.222-.76-.39-1.26-.505-1.52-.11-.25-.26-.44-.45-.57-.18-.12-.49-.18-.912-.18H6V6l.386.008c.953 0 1.63.17 2.034.512.4.347.79 1.136 1.177 2.366.3.954.534 1.564.698 1.83.168.26.377.405.705.438V6.002"/>
     </g>
 </svg>
index 5dc39ee..ed60059 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g-invert.png differ
index 88733e0..2f359c7 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="bold-g">
-        <path id="g" d="M12 14v-2h5v4.203c-.497.475-1.22.894-2.166 1.26-.94.358-1.896.537-2.864.537-1.23 0-2.303-.253-3.217-.76-.915-.512-1.602-1.24-2.062-2.185-.46-.95-.69-1.982-.69-3.095 0-1.208.26-2.282.77-3.222.517-.94 1.27-1.66 2.26-2.16.753-.386 1.692-.58 2.815-.58 1.46 0 2.6.304 3.418.91.825.603 1.354 1.436 1.59 2.502l-2.36.435c-.165-.57-.48-1.018-.94-1.346-.453-.336-1.022-.5-1.707-.5-1.038 0-1.864.322-2.48.97-.61.65-.914 1.613-.914 2.89 0 1.377.31 2.41.93 3.103.62.686 1.434 1.03 2.44 1.03.497 0 .995-.096 1.49-.286.505-.196 1.334-.57 1.69-.846v-.866"/>
+        <path id="g" d="M12 14v-2h5v4.203c-.497.475-1.22.894-2.166 1.26A7.994 7.994 0 0 1 11.97 18c-1.23 0-2.303-.253-3.217-.76a4.908 4.908 0 0 1-2.062-2.185A7.008 7.008 0 0 1 6 11.96c0-1.208.26-2.282.77-3.222.518-.94 1.27-1.66 2.26-2.16.754-.386 1.693-.58 2.816-.58 1.46 0 2.6.304 3.418.91.825.603 1.354 1.436 1.59 2.502l-2.36.435a2.433 2.433 0 0 0-.94-1.346c-.454-.34-1.022-.5-1.707-.5-1.038 0-1.864.32-2.48.97-.61.65-.914 1.61-.914 2.89 0 1.375.31 2.41.93 3.1.62.687 1.434 1.03 2.44 1.03.497 0 .995-.095 1.49-.285.505-.196 1.334-.57 1.69-.846v-.868"/>
     </g>
 </svg>
index cc4be63..13fd1ad 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g.png differ
index 05b46e2..3150d95 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="bold-g">
-        <path id="g" d="M12 14v-2h5v4.203c-.497.475-1.22.894-2.166 1.26-.94.358-1.896.537-2.864.537-1.23 0-2.303-.253-3.217-.76-.915-.512-1.602-1.24-2.062-2.185-.46-.95-.69-1.982-.69-3.095 0-1.208.26-2.282.77-3.222.517-.94 1.27-1.66 2.26-2.16.753-.386 1.692-.58 2.815-.58 1.46 0 2.6.304 3.418.91.825.603 1.354 1.436 1.59 2.502l-2.36.435c-.165-.57-.48-1.018-.94-1.346-.453-.336-1.022-.5-1.707-.5-1.038 0-1.864.322-2.48.97-.61.65-.914 1.613-.914 2.89 0 1.377.31 2.41.93 3.103.62.686 1.434 1.03 2.44 1.03.497 0 .995-.096 1.49-.286.505-.196 1.334-.57 1.69-.846v-.866"/>
+        <path id="g" d="M12 14v-2h5v4.203c-.497.475-1.22.894-2.166 1.26A7.994 7.994 0 0 1 11.97 18c-1.23 0-2.303-.253-3.217-.76a4.908 4.908 0 0 1-2.062-2.185A7.008 7.008 0 0 1 6 11.96c0-1.208.26-2.282.77-3.222.518-.94 1.27-1.66 2.26-2.16.754-.386 1.693-.58 2.816-.58 1.46 0 2.6.304 3.418.91.825.603 1.354 1.436 1.59 2.502l-2.36.435a2.433 2.433 0 0 0-.94-1.346c-.454-.34-1.022-.5-1.707-.5-1.038 0-1.864.32-2.48.97-.61.65-.914 1.61-.914 2.89 0 1.375.31 2.41.93 3.1.62.687 1.434 1.03 2.44 1.03.497 0 .995-.095 1.49-.285.505-.196 1.334-.57 1.69-.846v-.868"/>
     </g>
 </svg>
index 9390146..6b07962 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M9 7c1.7 0 3 1.3 3 3 0-1.7 1.3-3 3-3h6v13h-6c-1.7 0-3 1-3 2 0-1-1.3-2-3-2H3V7h6zM4 19h5c1.7 0 2 .4 2 .4v-8.9C11 9.1 9.9 8 8.5 8H4v11z" id="path78"/>
+    <path d="M9 7c1.7 0 3 1.3 3 3 0-1.7 1.3-3 3-3h6v13h-6c-1.7 0-3 1-3 2 0-1-1.3-2-3-2H3V7h6zM4 19h5c1.7 0 2 .4 2 .4v-8.9C11 9.1 9.9 8 8.5 8H4v11z"/>
 </svg>
index b192ea6..3797328 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M9 7c1.7 0 3 1.3 3 3 0-1.7 1.3-3 3-3h6v13h-6c-1.7 0-3 1-3 2 0-1-1.3-2-3-2H3V7h6zM4 19h5c1.7 0 2 .4 2 .4v-8.9C11 9.1 9.9 8 8.5 8H4v11z" id="path78"/>
+    <path d="M9 7c1.7 0 3 1.3 3 3 0-1.7 1.3-3 3-3h6v13h-6c-1.7 0-3 1-3 2 0-1-1.3-2-3-2H3V7h6zM4 19h5c1.7 0 2 .4 2 .4v-8.9C11 9.1 9.9 8 8.5 8H4v11z"/>
 </svg>
index f665223..729b8c2 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M8 5h7c1.1 0 2 .9 2 2v3h-3v11l-4-3-4 3V7c0-1.1.9-2 2-2zm6 4h2V7c0-.6-.4-1-1-1h-1v3z" id="path88"/>
+    <path d="M8 5h7c1.1 0 2 .9 2 2v3h-3v11l-4-3-4 3V7c0-1.1.9-2 2-2zm6 4h2V7c0-.6-.4-1-1-1h-1v3z"/>
 </svg>
index ba0be74..fcbd135 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M8 5h7c1.1 0 2 .9 2 2v3h-3v11l-4-3-4 3V7c0-1.1.9-2 2-2zm6 4h2V7c0-.6-.4-1-1-1h-1v3z" id="path88"/>
+    <path d="M8 5h7c1.1 0 2 .9 2 2v3h-3v11l-4-3-4 3V7c0-1.1.9-2 2-2zm6 4h2V7c0-.6-.4-1-1-1h-1v3z"/>
 </svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bright-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bright-invert.png
new file mode 100644 (file)
index 0000000..2e93e35
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bright-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bright-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bright-invert.svg
new file mode 100644 (file)
index 0000000..ae38327
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
+    <path d="M18.1 5.1c0 .3-.1.6-.3.9l-1.4 1.4-.9-.8 2.2-2.2c.3.1.4.4.4.7zm-.5 5.3h3.2c0 .3-.1.6-.4.9-.3.3-.5.4-.8.4h-2v-1.3zm-6.2-5V2.2c.3 0 .6.1.9.4.3.3.4.5.4.8v2h-1.3zm6.4 11.7c-.3 0-.6-.1-.8-.3l-1.4-1.4.8-.8 2.2 2.2c-.2.2-.5.3-.8.3zM6.2 4.9c.3 0 .6.1.8.3l1.4 1.4-.8.9-2.2-2.3c.2-.2.5-.3.8-.3zm5.2 11.7h1.2v3.2c-.3 0-.6-.1-.9-.4-.3-.3-.4-.5-.4-.8l.1-2zm-7-6.2h2v1.2H3.2c0-.3.1-.6.4-.9.3-.3.5-.3.8-.3zM6.2 16l1.4-1.4.8.8-2.2 2.2c-.2-.2-.3-.5-.3-.8 0-.3.1-.6.3-.8zM12 8c1.7 0 3 1.3 3 3s-1.3 3-3 3-3-1.3-3-3 1.3-3 3-3m0-1c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4z"/>
+    <path d="M12 8c1.7 0 3 1.3 3 3s-1.3 3-3 3-3-1.3-3-3 1.3-3 3-3m0-1c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4z"/>
+</svg>
index 2717b5a..5a399fe 100644 (file)
@@ -1,8 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M18.1 5.1c0 .3-.1.6-.3.9l-1.4 1.4-.9-.8 2.2-2.2c.3.1.4.4.4.7zm-.5 5.3h3.2c0 .3-.1.6-.4.9-.3.3-.5.4-.8.4h-2v-1.3zm-6.2-5V2.2c.3 0 .6.1.9.4.3.3.4.5.4.8v2h-1.3zm6.4 11.7c-.3 0-.6-.1-.8-.3l-1.4-1.4.8-.8 2.2 2.2c-.2.2-.5.3-.8.3zM6.2 4.9c.3 0 .6.1.8.3l1.4 1.4-.8.9-2.2-2.3c.2-.2.5-.3.8-.3zm5.2 11.7h1.2v3.2c-.3 0-.6-.1-.9-.4-.3-.3-.4-.5-.4-.8l.1-2zm-7-6.2h2v1.2H3.2c0-.3.1-.6.4-.9.3-.3.5-.3.8-.3zM6.2 16l1.4-1.4.8.8-2.2 2.2c-.2-.2-.3-.5-.3-.8 0-.3.1-.6.3-.8z"/>
-    <g>
-        <path d="M12 8c1.7 0 3 1.3 3 3s-1.3 3-3 3-3-1.3-3-3 1.3-3 3-3m0-1c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4z"/>
-    </g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M18.1 5.1c0 .3-.1.6-.3.9l-1.4 1.4-.9-.8 2.2-2.2c.3.1.4.4.4.7zm-.5 5.3h3.2c0 .3-.1.6-.4.9-.3.3-.5.4-.8.4h-2v-1.3zm-6.2-5V2.2c.3 0 .6.1.9.4.3.3.4.5.4.8v2h-1.3zm6.4 11.7c-.3 0-.6-.1-.8-.3l-1.4-1.4.8-.8 2.2 2.2c-.2.2-.5.3-.8.3zM6.2 4.9c.3 0 .6.1.8.3l1.4 1.4-.8.9-2.2-2.3c.2-.2.5-.3.8-.3zm5.2 11.7h1.2v3.2c-.3 0-.6-.1-.9-.4-.3-.3-.4-.5-.4-.8l.1-2zm-7-6.2h2v1.2H3.2c0-.3.1-.6.4-.9.3-.3.5-.3.8-.3zM6.2 16l1.4-1.4.8.8-2.2 2.2c-.2-.2-.3-.5-.3-.8 0-.3.1-.6.3-.8zM12 8c1.7 0 3 1.3 3 3s-1.3 3-3 3-3-1.3-3-3 1.3-3 3-3m0-1c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4z"/>
     <path d="M12 8c1.7 0 3 1.3 3 3s-1.3 3-3 3-3-1.3-3-3 1.3-3 3-3m0-1c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4z"/>
 </svg>
index b6d0f5c..d6378bf 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M21 6v11c0 1.7-1.3 3-3 3H3V6h18zm-2.5 1c-.8 0-1.5.7-1.5 1.5s.7 1.5 1.5 1.5S20 9.3 20 8.5 19.3 7 18.5 7zM4 19h14c1.1 0 2-.9 2-2v-6H4v8z" id="path98"/>
+    <path d="M21 6v11c0 1.7-1.3 3-3 3H3V6h18zm-2.5 1c-.8 0-1.5.7-1.5 1.5s.7 1.5 1.5 1.5S20 9.3 20 8.5 19.3 7 18.5 7zM4 19h14c1.1 0 2-.9 2-2v-6H4v8z"/>
 </svg>
index 080e237..38807b5 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M21 6v11c0 1.7-1.3 3-3 3H3V6h18zm-2.5 1c-.8 0-1.5.7-1.5 1.5s.7 1.5 1.5 1.5S20 9.3 20 8.5 19.3 7 18.5 7zM4 19h14c1.1 0 2-.9 2-2v-6H4v8z" id="path98"/>
+    <path d="M21 6v11c0 1.7-1.3 3-3 3H3V6h18zm-2.5 1c-.8 0-1.5.7-1.5 1.5s.7 1.5 1.5 1.5S20 9.3 20 8.5 19.3 7 18.5 7zM4 19h14c1.1 0 2-.9 2-2v-6H4v8z"/>
 </svg>
index 5eef30c..5fb8675 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M4 5v10c0 1.7 1.3 3 3 3h14V8c0-1.7-1.3-3-3-3H4zm2 1c.552 0 1 .448 1 1s-.448 1-1 1-1-.448-1-1 .448-1 1-1zm4 0c.552 0 1 .448 1 1s-.448 1-1 1-1-.448-1-1 .448-1 1-1zm4 0c.552 0 1 .448 1 1s-.448 1-1 1-1-.448-1-1 .448-1 1-1zm4 0c.552 0 1 .448 1 1s-.448 1-1 1-1-.448-1-1 .448-1 1-1zM5 9h3v2H5V9zm4 0h3v2H9V9zm4 0h3v2h-3V9zm4 0h3v2h-3V9zM5 12h3v2H5v-2zm4 0h3v2H9v-2zm4 0h3v2h-3v-2zm4 0h3v2h-3v-2zM5 15h3v2H7c-1.195 0-2-.805-2-2zm4 0h3v2H9v-2zm4 0h3v2h-3v-2zm4 0h3v2h-3v-2z"/>
+    <path d="M4 5v10c0 1.7 1.3 3 3 3h14V8c0-1.7-1.3-3-3-3H4zm2 1a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zM5 9h3v2H5V9zm4 0h3v2H9V9zm4 0h3v2h-3V9zm4 0h3v2h-3V9zM5 12h3v2H5v-2zm4 0h3v2H9v-2zm4 0h3v2h-3v-2zm4 0h3v2h-3v-2zM5 15h3v2H7c-1.195 0-2-.805-2-2zm4 0h3v2H9v-2zm4 0h3v2h-3v-2zm4 0h3v2h-3v-2z"/>
 </svg>
index 121180e..b0bc0e5 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M4 5v10c0 1.7 1.3 3 3 3h14V8c0-1.7-1.3-3-3-3H4zm2 1c.552 0 1 .448 1 1s-.448 1-1 1-1-.448-1-1 .448-1 1-1zm4 0c.552 0 1 .448 1 1s-.448 1-1 1-1-.448-1-1 .448-1 1-1zm4 0c.552 0 1 .448 1 1s-.448 1-1 1-1-.448-1-1 .448-1 1-1zm4 0c.552 0 1 .448 1 1s-.448 1-1 1-1-.448-1-1 .448-1 1-1zM5 9h3v2H5V9zm4 0h3v2H9V9zm4 0h3v2h-3V9zm4 0h3v2h-3V9zM5 12h3v2H5v-2zm4 0h3v2H9v-2zm4 0h3v2h-3v-2zm4 0h3v2h-3v-2zM5 15h3v2H7c-1.195 0-2-.805-2-2zm4 0h3v2H9v-2zm4 0h3v2h-3v-2zm4 0h3v2h-3v-2z"/>
+    <path d="M4 5v10c0 1.7 1.3 3 3 3h14V8c0-1.7-1.3-3-3-3H4zm2 1a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zM5 9h3v2H5V9zm4 0h3v2H9V9zm4 0h3v2h-3V9zm4 0h3v2h-3V9zM5 12h3v2H5v-2zm4 0h3v2H9v-2zm4 0h3v2h-3v-2zm4 0h3v2h-3v-2zM5 15h3v2H7c-1.195 0-2-.805-2-2zm4 0h3v2H9v-2zm4 0h3v2h-3v-2zm4 0h3v2h-3v-2z"/>
 </svg>
index f7202a9..8f06883 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M21 5v10c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3h14zm-2 1c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1zm-4 0c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1zm-4 0c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1zM7 6c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1zm13 3h-3v2h3V9zm-4 0h-3v2h3V9zm-4 0H9v2h3V9zM8 9H5v2h3V9zm12 3h-3v2h3v-2zm-4 0h-3v2h3v-2zm-4 0H9v2h3v-2zm-4 0H5v2h3v-2zm12 3h-3v2h1c1.195 0 2-.805 2-2zm-4 0h-3v2h3v-2zm-4 0H9v2h3v-2zm-4 0H5v2h3v-2z"/>
+    <path d="M21 5v10c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3h14zm-2 1a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm-4 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm-4 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2zM7 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm13 3h-3v2h3V9zm-4 0h-3v2h3V9zm-4 0H9v2h3V9zM8 9H5v2h3V9zm12 3h-3v2h3v-2zm-4 0h-3v2h3v-2zm-4 0H9v2h3v-2zm-4 0H5v2h3v-2zm12 3h-3v2h1c1.195 0 2-.805 2-2zm-4 0h-3v2h3v-2zm-4 0H9v2h3v-2zm-4 0H5v2h3v-2z"/>
 </svg>
index 9b736bf..d8ff5a9 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M21 5v10c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3h14zm-2 1c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1zm-4 0c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1zm-4 0c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1zM7 6c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1zm13 3h-3v2h3V9zm-4 0h-3v2h3V9zm-4 0H9v2h3V9zM8 9H5v2h3V9zm12 3h-3v2h3v-2zm-4 0h-3v2h3v-2zm-4 0H9v2h3v-2zm-4 0H5v2h3v-2zm12 3h-3v2h1c1.195 0 2-.805 2-2zm-4 0h-3v2h3v-2zm-4 0H9v2h3v-2zm-4 0H5v2h3v-2z"/>
+    <path d="M21 5v10c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3h14zm-2 1a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm-4 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm-4 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2zM7 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm13 3h-3v2h3V9zm-4 0h-3v2h3V9zm-4 0H9v2h3V9zM8 9H5v2h3V9zm12 3h-3v2h3v-2zm-4 0h-3v2h3v-2zm-4 0H9v2h3v-2zm-4 0H5v2h3v-2zm12 3h-3v2h1c1.195 0 2-.805 2-2zm-4 0h-3v2h3v-2zm-4 0H9v2h3v-2zm-4 0H5v2h3v-2z"/>
 </svg>
index 08385b5..acb8b01 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-destructive.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-destructive.png differ
index 3496acf..919dba4 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #D11D13 }</style>
     <g id="cancel">
-        <path id="circle-with-strike" d="M12 5.022c-3.855 0-6.98 3.124-6.98 6.978 0 3.853 3.124 6.978 6.977 6.978s6.978-3.125 6.978-6.978c0-3.854-3.125-6.978-6.98-6.978zM6.885 12c0-1.092.572-3.25.93-2.93l7.113 7.114c.487.525-1.838.93-2.93.93-2.826 0-5.114-2.29-5.114-5.114zm9.298 2.93L9.07 7.815c-.445-.483 1.837-.93 2.93-.93 2.826 0 5.114 2.288 5.114 5.113 0 1.092-.364 3.542-.93 2.93z"/>
+        <path id="circle-with-strike" d="M12 5.022a6.98 6.98 0 0 0-.003 13.956 6.98 6.98 0 0 0-.002-13.956zM6.885 12c0-1.092.572-3.25.93-2.93l7.113 7.114c.487.525-1.838.93-2.93.93A5.113 5.113 0 0 1 6.884 12zm9.298 2.93L9.07 7.815c-.445-.483 1.837-.93 2.93-.93a5.112 5.112 0 0 1 5.114 5.113c0 1.092-.364 3.542-.93 2.93z"/>
     </g>
 </svg>
index 70dcb87..02538ef 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-invert.png differ
index 44cb3ff..2bf3370 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="cancel">
-        <path id="circle-with-strike" d="M12 5.022c-3.855 0-6.98 3.124-6.98 6.978 0 3.853 3.124 6.978 6.977 6.978s6.978-3.125 6.978-6.978c0-3.854-3.125-6.978-6.98-6.978zM6.885 12c0-1.092.572-3.25.93-2.93l7.113 7.114c.487.525-1.838.93-2.93.93-2.826 0-5.114-2.29-5.114-5.114zm9.298 2.93L9.07 7.815c-.445-.483 1.837-.93 2.93-.93 2.826 0 5.114 2.288 5.114 5.113 0 1.092-.364 3.542-.93 2.93z"/>
+        <path id="circle-with-strike" d="M12 5.022a6.98 6.98 0 0 0-.003 13.956 6.98 6.98 0 0 0-.002-13.956zM6.885 12c0-1.092.572-3.25.93-2.93l7.113 7.114c.487.525-1.838.93-2.93.93A5.113 5.113 0 0 1 6.884 12zm9.298 2.93L9.07 7.815c-.445-.483 1.837-.93 2.93-.93a5.112 5.112 0 0 1 5.114 5.113c0 1.092-.364 3.542-.93 2.93z"/>
     </g>
 </svg>
index 76b87e4..180e3ab 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel.png differ
index 5d0bbd9..04ff5c3 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="cancel">
-        <path id="circle-with-strike" d="M12 5.022c-3.855 0-6.98 3.124-6.98 6.978 0 3.853 3.124 6.978 6.977 6.978s6.978-3.125 6.978-6.978c0-3.854-3.125-6.978-6.98-6.978zM6.885 12c0-1.092.572-3.25.93-2.93l7.113 7.114c.487.525-1.838.93-2.93.93-2.826 0-5.114-2.29-5.114-5.114zm9.298 2.93L9.07 7.815c-.445-.483 1.837-.93 2.93-.93 2.826 0 5.114 2.288 5.114 5.113 0 1.092-.364 3.542-.93 2.93z"/>
+        <path id="circle-with-strike" d="M12 5.022a6.98 6.98 0 0 0-.003 13.956 6.98 6.98 0 0 0-.002-13.956zM6.885 12c0-1.092.572-3.25.93-2.93l7.113 7.114c.487.525-1.838.93-2.93.93A5.113 5.113 0 0 1 6.884 12zm9.298 2.93L9.07 7.815c-.445-.483 1.837-.93 2.93-.93a5.112 5.112 0 0 1 5.114 5.113c0 1.092-.364 3.542-.93 2.93z"/>
     </g>
 </svg>
index bf6087c..21c2a33 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M16.5 13.1L7.6 22c-.8-.8-.8-2 0-2.8l6.1-6.1-6-6.1c-.8-.8-.8-2 0-2.8l8.8 8.9z" id="path108"/>
+    <path d="M16.5 13.1L7.6 22c-.8-.8-.8-2 0-2.8l6.1-6.1-6-6.1c-.8-.8-.8-2 0-2.8l8.8 8.9z"/>
 </svg>
index 88c7c73..1f90f5c 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M16.5 13.1L7.6 22c-.8-.8-.8-2 0-2.8l6.1-6.1-6-6.1c-.8-.8-.8-2 0-2.8l8.8 8.9z" id="path108"/>
+    <path d="M16.5 13.1L7.6 22c-.8-.8-.8-2 0-2.8l6.1-6.1-6-6.1c-.8-.8-.8-2 0-2.8l8.8 8.9z"/>
 </svg>
index dc5d7a1..5e3cfcf 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M12 16l8.9-8.9c-.8-.8-2-.8-2.8 0L12 13.2l-6.1-6c-.8-.8-2-.8-2.8 0L12 16z" id="path4"/>
+    <path d="M12 16l8.9-8.9c-.8-.8-2-.8-2.8 0L12 13.2l-6.1-6c-.8-.8-2-.8-2.8 0L12 16z"/>
 </svg>
index 27cb080..89e0612 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M12 16l8.9-8.9c-.8-.8-2-.8-2.8 0L12 13.2l-6.1-6c-.8-.8-2-.8-2.8 0L12 16z" id="path4"/>
+    <path d="M12 16l8.9-8.9c-.8-.8-2-.8-2.8 0L12 13.2l-6.1-6c-.8-.8-2-.8-2.8 0L12 16z"/>
 </svg>
index 4ca2d5e..3cc20fd 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M12 6.5l8.9 8.9c-.8.8-2 .8-2.8 0L12 9.3l-6.1 6c-.8.8-2 .8-2.8 0L12 6.5z" id="path4"/>
+    <path d="M12 6.5l8.9 8.9c-.8.8-2 .8-2.8 0L12 9.3l-6.1 6c-.8.8-2 .8-2.8 0L12 6.5z"/>
 </svg>
index 1d63093..fcf4e13 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M12 6.5l8.9 8.9c-.8.8-2 .8-2.8 0L12 9.3l-6.1 6c-.8.8-2 .8-2.8 0L12 6.5z" id="path4"/>
+    <path d="M12 6.5l8.9 8.9c-.8.8-2 .8-2.8 0L12 9.3l-6.1 6c-.8.8-2 .8-2.8 0L12 6.5z"/>
 </svg>
index 212e16d..3a267f7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-invert.png differ
index a90feeb..4bc0ba2 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="regular-expression">
-        <path id="upper-case" d="M7.53 7L4 17h2.063l.72-2.406h3.624l.72 2.406h2.062L9.654 7H7.533zm1.064 1.53L9.938 13H7.25l1.344-4.47z"/>
-        <path id="lower-case" d="M18.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.443.25-.564 0-.955-.208-1.377-.625-.42-.418-.628-1.012-.628-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.322-.04v-.335c0-.772-.395-1.158-1.186-1.158-.61 0-1.325.18-2.147.55l-.688-1.4c.877-.46 1.85-.69 2.916-.69 1.024 0 1.59.22 2.134.665.545.445.818 1.12.818 2.03V17h-1.45m-.394-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .582.336.874 1.008.874.48 0 .865-.138 1.152-.415.29-.277.436-.645.436-1.103v-.627"/>
+        <path id="upper-case" d="M7.53 7L4 17h2.063l.72-2.406h3.624l.72 2.406h2.062L9.65 7h-2.12zm1.064 1.53L9.938 13H7.25l1.344-4.47z"/>
+        <path id="lower-case" d="M18.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.44.25-.564 0-.955-.208-1.377-.625-.42-.418-.627-1.012-.627-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.322-.04v-.335c0-.772-.396-1.158-1.187-1.158-.61 0-1.325.18-2.147.55l-.688-1.4c.877-.46 1.85-.69 2.916-.69 1.024 0 1.59.22 2.134.662.545.445.818 1.12.818 2.03V17h-1.45m-.394-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .58.336.87 1.008.87.48 0 .865-.137 1.152-.414.29-.277.436-.645.436-1.103v-.627"/>
     </g>
 </svg>
index f36e52c..202cbf7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive.png differ
index 2f0e406..46cd9b0 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="regular-expression">
-        <path id="upper-case" d="M7.53 7L4 17h2.063l.72-2.406h3.624l.72 2.406h2.062L9.654 7H7.533zm1.064 1.53L9.938 13H7.25l1.344-4.47z"/>
-        <path id="lower-case" d="M18.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.443.25-.564 0-.955-.208-1.377-.625-.42-.418-.628-1.012-.628-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.322-.04v-.335c0-.772-.395-1.158-1.186-1.158-.61 0-1.325.18-2.147.55l-.688-1.4c.877-.46 1.85-.69 2.916-.69 1.024 0 1.59.22 2.134.665.545.445.818 1.12.818 2.03V17h-1.45m-.394-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .582.336.874 1.008.874.48 0 .865-.138 1.152-.415.29-.277.436-.645.436-1.103v-.627"/>
+        <path id="upper-case" d="M7.53 7L4 17h2.063l.72-2.406h3.624l.72 2.406h2.062L9.65 7h-2.12zm1.064 1.53L9.938 13H7.25l1.344-4.47z"/>
+        <path id="lower-case" d="M18.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.44.25-.564 0-.955-.208-1.377-.625-.42-.418-.627-1.012-.627-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.322-.04v-.335c0-.772-.396-1.158-1.187-1.158-.61 0-1.325.18-2.147.55l-.688-1.4c.877-.46 1.85-.69 2.916-.69 1.024 0 1.59.22 2.134.662.545.445.818 1.12.818 2.03V17h-1.45m-.394-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .58.336.87 1.008.87.48 0 .865-.137 1.152-.414.29-.277.436-.645.436-1.103v-.627"/>
     </g>
 </svg>
index e55233f..7dbd0ac 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #00AF89 }</style>
-    <g id="check">
-        <path d="M17 7.5L9.5 15 6 11.5 4.5 13l5 5L20 7.5c-.706-.706-2.294-.706-3 0z"/>
-    </g>
+    <path d="M17 7.5L9.5 15 6 11.5 4.5 13l5 5L20 7.5c-.706-.706-2.294-.706-3 0z" id="check"/>
 </svg>
index 7e09e65..41e7160 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #D11D13 }</style>
-    <g id="check">
-        <path d="M17 7.5L9.5 15 6 11.5 4.5 13l5 5L20 7.5c-.706-.706-2.294-.706-3 0z"/>
-    </g>
+    <path d="M17 7.5L9.5 15 6 11.5 4.5 13l5 5L20 7.5c-.706-.706-2.294-.706-3 0z" id="check"/>
 </svg>
index 77d90dc..0f4ef78 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="check">
-        <path d="M17 7.5L9.5 15 6 11.5 4.5 13l5 5L20 7.5c-.706-.706-2.294-.706-3 0z"/>
-    </g>
+    <path d="M17 7.5L9.5 15 6 11.5 4.5 13l5 5L20 7.5c-.706-.706-2.294-.706-3 0z" id="check"/>
 </svg>
index cd9e501..fd08148 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #347BFF }</style>
-    <g id="check">
-        <path d="M17 7.5L9.5 15 6 11.5 4.5 13l5 5L20 7.5c-.706-.706-2.294-.706-3 0z"/>
-    </g>
+    <path d="M17 7.5L9.5 15 6 11.5 4.5 13l5 5L20 7.5c-.706-.706-2.294-.706-3 0z" id="check"/>
 </svg>
index cf7858b..2fa9dfb 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="check">
-        <path d="M17 7.5L9.5 15 6 11.5 4.5 13l5 5L20 7.5c-.706-.706-2.294-.706-3 0z"/>
-    </g>
+    <path d="M17 7.5L9.5 15 6 11.5 4.5 13l5 5L20 7.5c-.706-.706-2.294-.706-3 0z" id="check"/>
 </svg>
index bdb3823..40d3aab 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M7 12h9v-1H7v1zm0 2h9v-1H7v1zm0 2h9v-1H7v1zm4-9H7v1h4V7zm0 2H7v1h4V9zm0-4H7v1h4V5zm5-2h2v16H8c-1.7 0-3-1.3-3-3V3h8v7l1.5-2 1.5 2V3z"/>
-    </g>
+    <path d="M7 12h9v-1H7v1zm0 2h9v-1H7v1zm0 2h9v-1H7v1zm4-9H7v1h4V7zm0 2H7v1h4V9zm0-4H7v1h4V5zm5-2h2v16H8c-1.7 0-3-1.3-3-3V3h8v7l1.5-2 1.5 2V3z"/>
 </svg>
index d997cf2..6a55c05 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M7 12h9v-1H7v1zm0 2h9v-1H7v1zm0 2h9v-1H7v1zm4-9H7v1h4V7zm0 2H7v1h4V9zm0-4H7v1h4V5zm5-2h2v16H8c-1.7 0-3-1.3-3-3V3h8v7l1.5-2 1.5 2V3z"/>
-    </g>
+    <path d="M7 12h9v-1H7v1zm0 2h9v-1H7v1zm0 2h9v-1H7v1zm4-9H7v1h4V7zm0 2H7v1h4V9zm0-4H7v1h4V5zm5-2h2v16H8c-1.7 0-3-1.3-3-3V3h8v7l1.5-2 1.5 2V3z"/>
 </svg>
index 1957477..c0cd449 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g128">
-        <path d="M16 12H7v-1h9v1zm0 2H7v-1h9v1zm0 2H7v-1h9v1zm-4-9h4v1h-4V7zm0 2h4v1h-4V9zm0-4h4v1h-4V5zM7 3H5v16h10c1.7 0 3-1.3 3-3V3h-8v7L8.5 8 7 10V3z" id="path130"/>
-    </g>
+    <path d="M16 12H7v-1h9v1zm0 2H7v-1h9v1zm0 2H7v-1h9v1zm-4-9h4v1h-4V7zm0 2h4v1h-4V9zm0-4h4v1h-4V5zM7 3H5v16h10c1.7 0 3-1.3 3-3V3h-8v7L8.5 8 7 10V3z"/>
 </svg>
index 688bd1b..0c0c411 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g128">
-        <path d="M16 12H7v-1h9v1zm0 2H7v-1h9v1zm0 2H7v-1h9v1zm-4-9h4v1h-4V7zm0 2h4v1h-4V9zm0-4h4v1h-4V5zM7 3H5v16h10c1.7 0 3-1.3 3-3V3h-8v7L8.5 8 7 10V3z" id="path130"/>
-    </g>
+    <path d="M16 12H7v-1h9v1zm0 2H7v-1h9v1zm0 2H7v-1h9v1zm-4-9h4v1h-4V7zm0 2h4v1h-4V9zm0-4h4v1h-4V5zM7 3H5v16h10c1.7 0 3-1.3 3-3V3h-8v7L8.5 8 7 10V3z"/>
 </svg>
index 9682626..a134c65 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm3 12l-4-3V8h2v5l1.7 1.2c1.3.9 1 1.9.3 2.8z"/>
-    </g>
+    <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm3 12l-4-3V8h2v5l1.7 1.2c1.3.9 1 1.9.3 2.8z"/>
 </svg>
index 6d8f75e..85b0628 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm3 12l-4-3V8h2v5l1.7 1.2c1.3.9 1 1.9.3 2.8z"/>
-    </g>
+    <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm3 12l-4-3V8h2v5l1.7 1.2c1.3.9 1 1.9.3 2.8z"/>
 </svg>
index 97e0c2c..e1b2199 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/code-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/code-invert.png differ
index d62d230..8d3d37d 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="code">
-        <path id="left-bracket" d="M4 12v-1h1c1 0 1 0 1-1V7.614c0-.514.024-.896.073-1.142.054-.252.14-.463.257-.633.204-.28.473-.48.808-.588C7.473 5.14 8.01 5 8.973 5H10v1h-.752c-.457 0-.77.19-.936.408C8.145 6.623 8 6.853 8 7.476v1.857c0 .73-.04 1.18-.244 1.493-.2.307-.562.53-1.09.667.535.155.9.385 1.096.688.2.307.238.76.238 1.488v1.862c0 .62.145.847.312 1.06.166.22.48.407.936.407L10 17v1H8.973c-.963 0-1.5-.133-1.835-.248-.335-.11-.604-.307-.808-.59-.118-.166-.203-.375-.257-.626-.05-.253-.073-.636-.073-1.15V13c0-1 0-1-1-1H4z"/>
+        <path id="left-bracket" d="M4 12v-1h1c1 0 1 0 1-1V7.614c0-.514.024-.896.073-1.142.054-.252.14-.463.257-.633.204-.28.473-.48.808-.59.335-.11.872-.25 1.835-.25H10v1h-.752c-.457 0-.77.19-.936.406-.167.216-.312.446-.312 1.07v1.856c0 .73-.04 1.18-.244 1.493-.2.307-.562.53-1.09.667.535.155.9.385 1.096.688.2.31.238.76.238 1.49v1.86c0 .62.145.85.312 1.06.166.22.48.41.936.41H10v1H8.973c-.963 0-1.5-.133-1.835-.248a1.578 1.578 0 0 1-.808-.59 1.68 1.68 0 0 1-.257-.626C6.023 16.283 6 15.9 6 15.386V13c0-1 0-1-1-1H4z"/>
         <use transform="matrix(-1 0 0 1 24 0)" id="right-bracket" width="24" height="24" xlink:href="#left-bracket"/>
     </g>
 </svg>
index 6e678e2..98584c0 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/code.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/code.png differ
index d3893b0..a00d158 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24">
     <g id="code">
-        <path id="left-bracket" d="M4 12v-1h1c1 0 1 0 1-1V7.614c0-.514.024-.896.073-1.142.054-.252.14-.463.257-.633.204-.28.473-.48.808-.588C7.473 5.14 8.01 5 8.973 5H10v1h-.752c-.457 0-.77.19-.936.408C8.145 6.623 8 6.853 8 7.476v1.857c0 .73-.04 1.18-.244 1.493-.2.307-.562.53-1.09.667.535.155.9.385 1.096.688.2.307.238.76.238 1.488v1.862c0 .62.145.847.312 1.06.166.22.48.407.936.407L10 17v1H8.973c-.963 0-1.5-.133-1.835-.248-.335-.11-.604-.307-.808-.59-.118-.166-.203-.375-.257-.626-.05-.253-.073-.636-.073-1.15V13c0-1 0-1-1-1H4z"/>
+        <path id="left-bracket" d="M4 12v-1h1c1 0 1 0 1-1V7.614c0-.514.024-.896.073-1.142.054-.252.14-.463.257-.633.204-.28.473-.48.808-.59.335-.11.872-.25 1.835-.25H10v1h-.752c-.457 0-.77.19-.936.406-.167.216-.312.446-.312 1.07v1.856c0 .73-.04 1.18-.244 1.493-.2.307-.562.53-1.09.667.535.155.9.385 1.096.688.2.31.238.76.238 1.49v1.86c0 .62.145.85.312 1.06.166.22.48.41.936.41H10v1H8.973c-.963 0-1.5-.133-1.835-.248a1.578 1.578 0 0 1-.808-.59 1.68 1.68 0 0 1-.257-.626C6.023 16.283 6 15.9 6 15.386V13c0-1 0-1-1-1H4z"/>
         <use transform="matrix(-1 0 0 1 24 0)" id="right-bracket" width="24" height="24" xlink:href="#left-bracket"/>
     </g>
 </svg>
index 0ed3528..80171e3 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/comment-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/comment-invert.png differ
index 3b58d71..8d0c369 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="comment">
-        <path id="speech-bubble" d="M15 6H9C7.343 6 6 7.344 6 9v4c0 1.656 1.343 3 3 3v3l3-3h3c1.657 0 3-1.344 3-3V9c0-1.656-1.343-3-3-3z"/>
+        <path id="speech-bubble" d="M15 6H9a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3v3l3-3h3a3 3 0 0 0 3-3V9a3 3 0 0 0-3-3z"/>
     </g>
 </svg>
index 265a3e4..959637a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/comment.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/comment.png differ
index c52ce1c..861611a 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="comment">
-        <path id="speech-bubble" d="M15 6H9C7.343 6 6 7.344 6 9v4c0 1.656 1.343 3 3 3v3l3-3h3c1.657 0 3-1.344 3-3V9c0-1.656-1.343-3-3-3z"/>
+        <path id="speech-bubble" d="M15 6H9a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3v3l3-3h3a3 3 0 0 0 3-3V9a3 3 0 0 0-3-3z"/>
     </g>
 </svg>
index d6a74cf..796c176 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M7 5h12v12c0 1.6-1.3 3-3 3H4V8c0-1.7 1.4-3 3-3zm8.5 12c.8 0 1.5-.7 1.5-1.5s-.7-1.5-1.5-1.5-1.5.7-1.5 1.5.7 1.5 1.5 1.5zm0-6c.8 0 1.5-.7 1.5-1.5S16.3 8 15.5 8 14 8.7 14 9.5s.7 1.5 1.5 1.5zm-4 3c.8 0 1.5-.7 1.5-1.5s-.7-1.5-1.5-1.5-1.5.7-1.5 1.5.7 1.5 1.5 1.5zm-4 3c.8 0 1.5-.7 1.5-1.5S8.3 14 7.5 14 6 14.7 6 15.5 6.7 17 7.5 17zm0-6c.8 0 1.5-.7 1.5-1.5S8.3 8 7.5 8 6 8.7 6 9.5 6.7 11 7.5 11z" id="path150"/>
+    <path d="M7 5h12v12c0 1.6-1.3 3-3 3H4V8c0-1.7 1.4-3 3-3zm8.5 12c.8 0 1.5-.7 1.5-1.5s-.7-1.5-1.5-1.5-1.5.7-1.5 1.5.7 1.5 1.5 1.5zm0-6c.8 0 1.5-.7 1.5-1.5S16.3 8 15.5 8 14 8.7 14 9.5s.7 1.5 1.5 1.5zm-4 3c.8 0 1.5-.7 1.5-1.5s-.7-1.5-1.5-1.5-1.5.7-1.5 1.5.7 1.5 1.5 1.5zm-4 3c.8 0 1.5-.7 1.5-1.5S8.3 14 7.5 14 6 14.7 6 15.5 6.7 17 7.5 17zm0-6c.8 0 1.5-.7 1.5-1.5S8.3 8 7.5 8 6 8.7 6 9.5 6.7 11 7.5 11z"/>
 </svg>
index 1b4a6ca..9be97f6 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M7 5h12v12c0 1.6-1.3 3-3 3H4V8c0-1.7 1.4-3 3-3zm8.5 12c.8 0 1.5-.7 1.5-1.5s-.7-1.5-1.5-1.5-1.5.7-1.5 1.5.7 1.5 1.5 1.5zm0-6c.8 0 1.5-.7 1.5-1.5S16.3 8 15.5 8 14 8.7 14 9.5s.7 1.5 1.5 1.5zm-4 3c.8 0 1.5-.7 1.5-1.5s-.7-1.5-1.5-1.5-1.5.7-1.5 1.5.7 1.5 1.5 1.5zm-4 3c.8 0 1.5-.7 1.5-1.5S8.3 14 7.5 14 6 14.7 6 15.5 6.7 17 7.5 17zm0-6c.8 0 1.5-.7 1.5-1.5S8.3 8 7.5 8 6 8.7 6 9.5 6.7 11 7.5 11z" id="path150"/>
+    <path d="M7 5h12v12c0 1.6-1.3 3-3 3H4V8c0-1.7 1.4-3 3-3zm8.5 12c.8 0 1.5-.7 1.5-1.5s-.7-1.5-1.5-1.5-1.5.7-1.5 1.5.7 1.5 1.5 1.5zm0-6c.8 0 1.5-.7 1.5-1.5S16.3 8 15.5 8 14 8.7 14 9.5s.7 1.5 1.5 1.5zm-4 3c.8 0 1.5-.7 1.5-1.5s-.7-1.5-1.5-1.5-1.5.7-1.5 1.5.7 1.5 1.5 1.5zm-4 3c.8 0 1.5-.7 1.5-1.5S8.3 14 7.5 14 6 14.7 6 15.5 6.7 17 7.5 17zm0-6c.8 0 1.5-.7 1.5-1.5S8.3 8 7.5 8 6 8.7 6 9.5 6.7 11 7.5 11z"/>
 </svg>
index e23e773..eef75e1 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M16 11h-3V4c-1.7 0-3 1.3-3 3v4H7l4.5 5 4.5-5zm1 2v5H7c-.6 0-1-.4-1-1v-4H4v4c0 1.9 1.3 3 3 3h12v-7h-2z"/>
-    </g>
+    <path d="M16 11h-3V4c-1.7 0-3 1.3-3 3v4H7l4.5 5 4.5-5zm1 2v5H7c-.6 0-1-.4-1-1v-4H4v4c0 1.9 1.3 3 3 3h12v-7h-2z"/>
 </svg>
index ba37848..dfb2bb6 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M16 11h-3V4c-1.7 0-3 1.3-3 3v4H7l4.5 5 4.5-5zm1 2v5H7c-.6 0-1-.4-1-1v-4H4v4c0 1.9 1.3 3 3 3h12v-7h-2z"/>
-    </g>
+    <path d="M16 11h-3V4c-1.7 0-3 1.3-3 3v4H7l4.5 5 4.5-5zm1 2v5H7c-.6 0-1-.4-1-1v-4H4v4c0 1.9 1.3 3 3 3h12v-7h-2z"/>
 </svg>
index 6409631..003faa3 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g160">
-        <path d="M7 11h3V4c1.7 0 3 1.3 3 3v4h3l-4.5 5L7 11zm-1 2v5h10c.6 0 1-.4 1-1v-4h2v4c0 1.9-1.3 3-3 3H4v-7h2z" id="path162"/>
-    </g>
+    <path d="M7 11h3V4c1.7 0 3 1.3 3 3v4h3l-4.5 5L7 11zm-1 2v5h10c.6 0 1-.4 1-1v-4h2v4c0 1.9-1.3 3-3 3H4v-7h2z"/>
 </svg>
index 544c3c8..276b153 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g160">
-        <path d="M7 11h3V4c1.7 0 3 1.3 3 3v4h3l-4.5 5L7 11zm-1 2v5h10c.6 0 1-.4 1-1v-4h2v4c0 1.9-1.3 3-3 3H4v-7h2z" id="path162"/>
-    </g>
+    <path d="M7 11h3V4c1.7 0 3 1.3 3 3v4h3l-4.5 5L7 11zm-1 2v5h10c.6 0 1-.4 1-1v-4h2v4c0 1.9-1.3 3-3 3H4v-7h2z"/>
 </svg>
index fbae9d2..ac4418e 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="Layer_3">
-        <path d="M17 2L5 14l-1 5 5-1L21 6c0-2-2-4-4-4zM7.2 15.5c-.3-.3-.7-.6-1-.8C8.5 12.4 17.5 3.3 17.5 3.3c.4.1.7.3 1 .7L7.2 15.5z"/>
-    </g>
+    <path d="M17 2L5 14l-1 5 5-1L21 6c0-2-2-4-4-4zM7.2 15.5c-.3-.3-.7-.6-1-.8C8.5 12.4 17.5 3.3 17.5 3.3c.4.1.7.3 1 .7L7.2 15.5z"/>
 </svg>
index d27c3a5..72e5856 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #347BFF }</style>
-    <g id="Layer_3">
-        <path d="M17 2L5 14l-1 5 5-1L21 6c0-2-2-4-4-4zM7.2 15.5c-.3-.3-.7-.6-1-.8C8.5 12.4 17.5 3.3 17.5 3.3c.4.1.7.3 1 .7L7.2 15.5z"/>
-    </g>
+    <path d="M17 2L5 14l-1 5 5-1L21 6c0-2-2-4-4-4zM7.2 15.5c-.3-.3-.7-.6-1-.8C8.5 12.4 17.5 3.3 17.5 3.3c.4.1.7.3 1 .7L7.2 15.5z"/>
 </svg>
index 4cd6cda..02ab6e4 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="Layer_3">
-        <path d="M17 2L5 14l-1 5 5-1L21 6c0-2-2-4-4-4zM7.2 15.5c-.3-.3-.7-.6-1-.8C8.5 12.4 17.5 3.3 17.5 3.3c.4.1.7.3 1 .7L7.2 15.5z"/>
-    </g>
+    <path d="M17 2L5 14l-1 5 5-1L21 6c0-2-2-4-4-4zM7.2 15.5c-.3-.3-.7-.6-1-.8C8.5 12.4 17.5 3.3 17.5 3.3c.4.1.7.3 1 .7L7.2 15.5z"/>
 </svg>
index 42c9f2c..801568f 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="Layer_3">
-        <path d="M8 2l12 12 1 5-5-1L4 6c0-2 2-4 4-4zm9.8 13.5c.3-.3.7-.6 1-.8C16.5 12.4 7.5 3.3 7.5 3.3c-.4.1-.7.3-1 .7l11.3 11.5z" id="path173"/>
-    </g>
+    <path d="M8 2l12 12 1 5-5-1L4 6c0-2 2-4 4-4zm9.8 13.5c.3-.3.7-.6 1-.8C16.5 12.4 7.5 3.3 7.5 3.3c-.4.1-.7.3-1 .7l11.3 11.5z"/>
 </svg>
index b4db76b..b241c50 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #347BFF }</style>
-    <g id="Layer_3">
-        <path d="M8 2l12 12 1 5-5-1L4 6c0-2 2-4 4-4zm9.8 13.5c.3-.3.7-.6 1-.8C16.5 12.4 7.5 3.3 7.5 3.3c-.4.1-.7.3-1 .7l11.3 11.5z" id="path173"/>
-    </g>
+    <path d="M8 2l12 12 1 5-5-1L4 6c0-2 2-4 4-4zm9.8 13.5c.3-.3.7-.6 1-.8C16.5 12.4 7.5 3.3 7.5 3.3c-.4.1-.7.3-1 .7l11.3 11.5z"/>
 </svg>
index 932997b..83033c5 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="Layer_3">
-        <path d="M8 2l12 12 1 5-5-1L4 6c0-2 2-4 4-4zm9.8 13.5c.3-.3.7-.6 1-.8C16.5 12.4 7.5 3.3 7.5 3.3c-.4.1-.7.3-1 .7l11.3 11.5z" id="path173"/>
-    </g>
+    <path d="M8 2l12 12 1 5-5-1L4 6c0-2 2-4 4-4zm9.8 13.5c.3-.3.7-.6 1-.8C16.5 12.4 7.5 3.3 7.5 3.3c-.4.1-.7.3-1 .7l11.3 11.5z"/>
 </svg>
index 774d15a..59c2a5d 100644 (file)
@@ -1,8 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="Layer_2">
-        <g id="g184">
-            <path d="M21 4V3s0-3-3-3-3 3-3 3v1h-1v6h8V4zm-1.5 0h-3V3s0-1.5 1.5-1.5c1.48.06 1.5 1.5 1.5 1.5zM13 9.6l-6.8 6.9c-.3-.3-.7-.6-1-.8 1.4-1.4 5-5 7.8-7.9V6l-9 9-1 5 5-1 8-8h-3z" id="path186"/>
-        </g>
-    </g>
+    <path d="M21 4V3s0-3-3-3-3 3-3 3v1h-1v6h8V4zm-1.5 0h-3V3s0-1.5 1.5-1.5c1.48.06 1.5 1.5 1.5 1.5zM13 9.6l-6.8 6.9c-.3-.3-.7-.6-1-.8 1.4-1.4 5-5 7.8-7.9V6l-9 9-1 5 5-1 8-8h-3z"/>
 </svg>
index 1b1cb76..e06e5a0 100644 (file)
@@ -1,8 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="Layer_2">
-        <g id="g184">
-            <path d="M21 4V3s0-3-3-3-3 3-3 3v1h-1v6h8V4zm-1.5 0h-3V3s0-1.5 1.5-1.5c1.48.06 1.5 1.5 1.5 1.5zM13 9.6l-6.8 6.9c-.3-.3-.7-.6-1-.8 1.4-1.4 5-5 7.8-7.9V6l-9 9-1 5 5-1 8-8h-3z" id="path186"/>
-        </g>
-    </g>
+    <path d="M21 4V3s0-3-3-3-3 3-3 3v1h-1v6h8V4zm-1.5 0h-3V3s0-1.5 1.5-1.5c1.48.06 1.5 1.5 1.5 1.5zM13 9.6l-6.8 6.9c-.3-.3-.7-.6-1-.8 1.4-1.4 5-5 7.8-7.9V6l-9 9-1 5 5-1 8-8h-3z"/>
 </svg>
index 2908444..4f924f8 100644 (file)
@@ -1,8 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="Layer_2">
-        <g id="g184">
-            <path d="M4 4V3s0-3 3-3 3 3 3 3v1h1v6H3V4zm1.5 0h3V3s0-1.5-1.5-1.5C5.52 1.56 5.5 3 5.5 3zM12 9.6l6.8 6.9c.3-.3.7-.6 1-.8-1.4-1.4-5-5-7.8-7.9V6l9 9 1 5-5-1-8-8h3z" id="path186"/>
-        </g>
-    </g>
+    <path d="M4 4V3s0-3 3-3 3 3 3 3v1h1v6H3V4zm1.5 0h3V3s0-1.5-1.5-1.5C5.52 1.56 5.5 3 5.5 3zM12 9.6l6.8 6.9c.3-.3.7-.6 1-.8-1.4-1.4-5-5-7.8-7.9V6l9 9 1 5-5-1-8-8h3z"/>
 </svg>
index 84a6816..fb1001f 100644 (file)
@@ -1,8 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="Layer_2">
-        <g id="g184">
-            <path d="M4 4V3s0-3 3-3 3 3 3 3v1h1v6H3V4zm1.5 0h3V3s0-1.5-1.5-1.5C5.52 1.56 5.5 3 5.5 3zM12 9.6l6.8 6.9c.3-.3.7-.6 1-.8-1.4-1.4-5-5-7.8-7.9V6l9 9 1 5-5-1-8-8h3z" id="path186"/>
-        </g>
-    </g>
+    <path d="M4 4V3s0-3 3-3 3 3 3 3v1h1v6H3V4zm1.5 0h3V3s0-1.5-1.5-1.5C5.52 1.56 5.5 3 5.5 3zM12 9.6l6.8 6.9c.3-.3.7-.6 1-.8-1.4-1.4-5-5-7.8-7.9V6l9 9 1 5-5-1-8-8h3z"/>
 </svg>
index 5d720f4..d5ec132 100644 (file)
@@ -1,11 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g196">
-        <g id="g198">
-            <path d="M14.9 2.8c.9 0 1.8.2 2.7.6.9.4 1.6.9 1.9 1.6-2.8.1-5 1.1-6.6 3.1l1.3 2-6.7-.3L8 3l1.7 2c1.8-1.5 3.5-2.2 5.2-2.2z" id="path200"/>
-        </g>
-    </g>
-    <g id="g204">
-        <path d="M15.2 11.1l-2.6-.1-5.4 5.5c-.3-.3-.7-.6-1-.8.9-.9 2.8-2.8 4.7-4.8H9.1L5 15l-1 5 5-1 7.8-7.8-1.6-.1zM20.6 6c-1.7 0-3.2.5-4.4 1.4l-.9.9.8 1.3.9 1.4 4-4c0-.3-.1-.7-.2-1h-.2z" id="path206"/>
-    </g>
+    <path d="M14.9 2.8c.9 0 1.8.2 2.7.6.9.4 1.6.9 1.9 1.6-2.8.1-5 1.1-6.6 3.1l1.3 2-6.7-.3L8 3l1.7 2c1.8-1.5 3.5-2.2 5.2-2.2z"/>
+    <path d="M15.2 11.1l-2.6-.1-5.4 5.5c-.3-.3-.7-.6-1-.8.9-.9 2.8-2.8 4.7-4.8H9.1L5 15l-1 5 5-1 7.8-7.8-1.6-.1zM20.6 6c-1.7 0-3.2.5-4.4 1.4l-.9.9.8 1.3.9 1.4 4-4c0-.3-.1-.7-.2-1h-.2z"/>
 </svg>
index 05778cd..50f4214 100644 (file)
@@ -1,11 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g196">
-        <g id="g198">
-            <path d="M14.9 2.8c.9 0 1.8.2 2.7.6.9.4 1.6.9 1.9 1.6-2.8.1-5 1.1-6.6 3.1l1.3 2-6.7-.3L8 3l1.7 2c1.8-1.5 3.5-2.2 5.2-2.2z" id="path200"/>
-        </g>
-    </g>
-    <g id="g204">
-        <path d="M15.2 11.1l-2.6-.1-5.4 5.5c-.3-.3-.7-.6-1-.8.9-.9 2.8-2.8 4.7-4.8H9.1L5 15l-1 5 5-1 7.8-7.8-1.6-.1zM20.6 6c-1.7 0-3.2.5-4.4 1.4l-.9.9.8 1.3.9 1.4 4-4c0-.3-.1-.7-.2-1h-.2z" id="path206"/>
-    </g>
+    <path d="M14.9 2.8c.9 0 1.8.2 2.7.6.9.4 1.6.9 1.9 1.6-2.8.1-5 1.1-6.6 3.1l1.3 2-6.7-.3L8 3l1.7 2c1.8-1.5 3.5-2.2 5.2-2.2z"/>
+    <path d="M15.2 11.1l-2.6-.1-5.4 5.5c-.3-.3-.7-.6-1-.8.9-.9 2.8-2.8 4.7-4.8H9.1L5 15l-1 5 5-1 7.8-7.8-1.6-.1zM20.6 6c-1.7 0-3.2.5-4.4 1.4l-.9.9.8 1.3.9 1.4 4-4c0-.3-.1-.7-.2-1h-.2z"/>
 </svg>
index 8323c2f..7722bd8 100644 (file)
@@ -1,11 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g196">
-        <g id="g198">
-            <path d="M10.1 2.8c-.9 0-1.8.2-2.7.6-.9.4-1.6.9-1.9 1.6 2.8.1 5 1.1 6.6 3.1l-1.3 2 6.7-.3L17 3l-1.7 2c-1.8-1.5-3.5-2.2-5.2-2.2z" id="path200"/>
-        </g>
-    </g>
-    <g id="g204">
-        <path d="M9.8 11.1l2.6-.1 5.4 5.5c.3-.3.7-.6 1-.8-.9-.9-2.8-2.8-4.7-4.8h1.8L20 15l1 5-5-1-7.8-7.8 1.6-.1zM4.4 6c1.7 0 3.2.5 4.4 1.4l.9.9-.8 1.3L8 11 4 7c0-.3.1-.7.2-1h.2z" id="path206"/>
-    </g>
+    <path d="M10.1 2.8c-.9 0-1.8.2-2.7.6-.9.4-1.6.9-1.9 1.6 2.8.1 5 1.1 6.6 3.1l-1.3 2 6.7-.3L17 3l-1.7 2c-1.8-1.5-3.5-2.2-5.2-2.2z"/>
+    <path d="M9.8 11.1l2.6-.1 5.4 5.5c.3-.3.7-.6 1-.8-.9-.9-2.8-2.8-4.7-4.8h1.8L20 15l1 5-5-1-7.8-7.8 1.6-.1zM4.4 6c1.7 0 3.2.5 4.4 1.4l.9.9-.8 1.3L8 11 4 7c0-.3.1-.7.2-1h.2z"/>
 </svg>
index ac03c05..b7cfed7 100644 (file)
@@ -1,11 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g196">
-        <g id="g198">
-            <path d="M10.1 2.8c-.9 0-1.8.2-2.7.6-.9.4-1.6.9-1.9 1.6 2.8.1 5 1.1 6.6 3.1l-1.3 2 6.7-.3L17 3l-1.7 2c-1.8-1.5-3.5-2.2-5.2-2.2z" id="path200"/>
-        </g>
-    </g>
-    <g id="g204">
-        <path d="M9.8 11.1l2.6-.1 5.4 5.5c.3-.3.7-.6 1-.8-.9-.9-2.8-2.8-4.7-4.8h1.8L20 15l1 5-5-1-7.8-7.8 1.6-.1zM4.4 6c1.7 0 3.2.5 4.4 1.4l.9.9-.8 1.3L8 11 4 7c0-.3.1-.7.2-1h.2z" id="path206"/>
-    </g>
+    <path d="M10.1 2.8c-.9 0-1.8.2-2.7.6-.9.4-1.6.9-1.9 1.6 2.8.1 5 1.1 6.6 3.1l-1.3 2 6.7-.3L17 3l-1.7 2c-1.8-1.5-3.5-2.2-5.2-2.2z"/>
+    <path d="M9.8 11.1l2.6-.1 5.4 5.5c.3-.3.7-.6 1-.8-.9-.9-2.8-2.8-4.7-4.8h1.8L20 15l1 5-5-1-7.8-7.8 1.6-.1zM4.4 6c1.7 0 3.2.5 4.4 1.4l.9.9-.8 1.3L8 11 4 7c0-.3.1-.7.2-1h.2z"/>
 </svg>
index 510cf3d..19733aa 100644 (file)
@@ -1,14 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <g>
-            <path d="M8 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4z"/>
-        </g>
-        <g>
-            <path d="M14 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4z"/>
-        </g>
-        <g>
-            <path d="M20 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4z"/>
-        </g>
-    </g>
+    <path d="M8 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4zM14 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4zM20 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4z"/>
 </svg>
index dd36a30..ef7d485 100644 (file)
@@ -1,14 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <g>
-            <path d="M8 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4z"/>
-        </g>
-        <g>
-            <path d="M14 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4z"/>
-        </g>
-        <g>
-            <path d="M20 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4z"/>
-        </g>
-    </g>
+    <path d="M8 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4zM14 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4zM20 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4z"/>
 </svg>
index 352e7b9..31c10e5 100644 (file)
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g4">
-        <path d="M12 8C7 8 1 14 1 14s6 6 11 6l11-6s-6-6-11-6zm0 10c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4z" id="path6"/>
-        <circle cx="12" cy="14" r="2" id="circle8"/>
-    </g>
+    <path d="M12 8C7 8 1 14 1 14s6 6 11 6l11-6s-6-6-11-6zm0 10c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4z"/>
+    <circle cx="12" cy="14" r="2"/>
 </svg>
index 09d783b..36c043f 100644 (file)
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g4">
-        <path d="M12 8C7 8 1 14 1 14s6 6 11 6l11-6s-6-6-11-6zm0 10c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4z" id="path6"/>
-        <circle cx="12" cy="14" r="2" id="circle8"/>
-    </g>
+    <path d="M12 8C7 8 1 14 1 14s6 6 11 6l11-6s-6-6-11-6zm0 10c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4z"/>
+    <circle cx="12" cy="14" r="2"/>
 </svg>
index 010b224..1210980 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr-invert.png differ
index 5764ee6..405c240 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="find">
-        <path id="magnifying-glass" d="M13.656 11c-1.92 0-3.5 1.548-3.5 3.47 0 1.92 1.58 3.5 3.5 3.5.75 0 1.432-.253 2-.657l.094.156 2.375 2.37c.19.19.534.154.78-.093s.315-.59.126-.78l-2.37-2.377-.188-.093c.402-.567.655-1.283.655-2.03 0-1.92-1.55-3.47-3.47-3.47zm0 1.656c1.01 0 1.813.8 1.813 1.813 0 1.01-.805 1.84-1.817 1.84-1.01 0-1.844-.83-1.844-1.844s.832-1.814 1.844-1.814z"/>
-        <path id="text" d="M6 5v2h10V5H6zm0 3v2h11V8H6zm0 3v2h3.53c.284-.797.787-1.486 1.44-2H6zm0 3v2h3.53c-.177-.48-.28-.99-.28-1.53 0-.16.046-.315.063-.47H6z"/>
+        <path id="magnifying-glass" d="M13.656 11c-1.92 0-3.5 1.548-3.5 3.47 0 1.92 1.58 3.5 3.5 3.5.75 0 1.432-.253 2-.657l.094.156 2.375 2.37c.19.19.534.15.78-.096s.315-.59.126-.78l-2.37-2.377-.185-.094a3.545 3.545 0 0 0 .655-2.03c0-1.92-1.55-3.47-3.47-3.47zm0 1.656a1.8 1.8 0 0 1 1.813 1.813 1.83 1.83 0 0 1-1.82 1.84c-1.01 0-1.844-.83-1.844-1.847s.832-1.814 1.844-1.814z"/>
+        <path id="text" d="M6 5v2h10V5H6zm0 3v2h11V8H6zm0 3v2h3.53a4.443 4.443 0 0 1 1.44-2H6zm0 3v2h3.53c-.177-.48-.28-.99-.28-1.53 0-.16.046-.315.063-.47H6z"/>
     </g>
 </svg>
index 9f418b8..0335ea1 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr.png differ
index 67e6943..ef44f57 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="find">
-        <path id="magnifying-glass" d="M13.656 11c-1.92 0-3.5 1.548-3.5 3.47 0 1.92 1.58 3.5 3.5 3.5.75 0 1.432-.253 2-.657l.094.156 2.375 2.37c.19.19.534.154.78-.093s.315-.59.126-.78l-2.37-2.377-.188-.093c.402-.567.655-1.283.655-2.03 0-1.92-1.55-3.47-3.47-3.47zm0 1.656c1.01 0 1.813.8 1.813 1.813 0 1.01-.805 1.84-1.817 1.84-1.01 0-1.844-.83-1.844-1.844s.832-1.814 1.844-1.814z"/>
-        <path id="text" d="M6 5v2h10V5H6zm0 3v2h11V8H6zm0 3v2h3.53c.284-.797.787-1.486 1.44-2H6zm0 3v2h3.53c-.177-.48-.28-.99-.28-1.53 0-.16.046-.315.063-.47H6z"/>
+        <path id="magnifying-glass" d="M13.656 11c-1.92 0-3.5 1.548-3.5 3.47 0 1.92 1.58 3.5 3.5 3.5.75 0 1.432-.253 2-.657l.094.156 2.375 2.37c.19.19.534.15.78-.096s.315-.59.126-.78l-2.37-2.377-.185-.094a3.545 3.545 0 0 0 .655-2.03c0-1.92-1.55-3.47-3.47-3.47zm0 1.656a1.8 1.8 0 0 1 1.813 1.813 1.83 1.83 0 0 1-1.82 1.84c-1.01 0-1.844-.83-1.844-1.847s.832-1.814 1.844-1.814z"/>
+        <path id="text" d="M6 5v2h10V5H6zm0 3v2h11V8H6zm0 3v2h3.53a4.443 4.443 0 0 1 1.44-2H6zm0 3v2h3.53c-.177-.48-.28-.99-.28-1.53 0-.16.046-.315.063-.47H6z"/>
     </g>
 </svg>
index 4a70b13..fbba51e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl-invert.png differ
index 6854553..b46f53f 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="find">
-        <path id="magnifying-glass" d="M11.344 11c1.92 0 3.5 1.548 3.5 3.47 0 1.92-1.58 3.5-3.5 3.5-.75 0-1.432-.253-2-.657l-.094.156-2.375 2.37c-.19.19-.534.154-.78-.093s-.315-.59-.126-.78l2.37-2.377.188-.093c-.402-.567-.655-1.283-.655-2.03 0-1.92 1.55-3.47 3.47-3.47zm0 1.656c-1.01 0-1.813.8-1.813 1.813 0 1.01.805 1.84 1.817 1.84 1.01 0 1.844-.83 1.844-1.844s-.832-1.814-1.844-1.814z"/>
-        <path id="text" d="M19 5v2H9V5zm0 3v2H8V8zm0 3v2h-3.53c-.284-.797-.787-1.486-1.44-2zm0 3v2h-3.53c.177-.48.28-.99.28-1.53 0-.16-.046-.315-.063-.47z"/>
+        <path id="magnifying-glass" d="M11.344 11c1.92 0 3.5 1.548 3.5 3.47 0 1.92-1.58 3.5-3.5 3.5-.75 0-1.432-.253-2-.657l-.094.156-2.375 2.37c-.19.19-.534.15-.78-.096s-.315-.59-.126-.78l2.37-2.377.185-.094a3.545 3.545 0 0 1-.655-2.03c0-1.92 1.55-3.47 3.47-3.47zm0 1.656A1.8 1.8 0 0 0 9.53 14.47c0 1.01.806 1.84 1.818 1.84 1.01 0 1.844-.83 1.844-1.845s-.832-1.814-1.844-1.814z"/>
+        <path id="text" d="M19 5v2H9V5zm0 3v2H8V8zm0 3v2h-3.53a4.443 4.443 0 0 0-1.44-2zm0 3v2h-3.53c.177-.48.28-.99.28-1.53 0-.16-.046-.315-.063-.47z"/>
     </g>
 </svg>
index b63eb84..2a56ff6 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl.png differ
index 962165d..51fd39b 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="find">
-        <path id="magnifying-glass" d="M11.344 11c1.92 0 3.5 1.548 3.5 3.47 0 1.92-1.58 3.5-3.5 3.5-.75 0-1.432-.253-2-.657l-.094.156-2.375 2.37c-.19.19-.534.154-.78-.093s-.315-.59-.126-.78l2.37-2.377.188-.093c-.402-.567-.655-1.283-.655-2.03 0-1.92 1.55-3.47 3.47-3.47zm0 1.656c-1.01 0-1.813.8-1.813 1.813 0 1.01.805 1.84 1.817 1.84 1.01 0 1.844-.83 1.844-1.844s-.832-1.814-1.844-1.814z"/>
-        <path id="text" d="M19 5v2H9V5zm0 3v2H8V8zm0 3v2h-3.53c-.284-.797-.787-1.486-1.44-2zm0 3v2h-3.53c.177-.48.28-.99.28-1.53 0-.16-.046-.315-.063-.47z"/>
+        <path id="magnifying-glass" d="M11.344 11c1.92 0 3.5 1.548 3.5 3.47 0 1.92-1.58 3.5-3.5 3.5-.75 0-1.432-.253-2-.657l-.094.156-2.375 2.37c-.19.19-.534.15-.78-.096s-.315-.59-.126-.78l2.37-2.377.185-.094a3.545 3.545 0 0 1-.655-2.03c0-1.92 1.55-3.47 3.47-3.47zm0 1.656A1.8 1.8 0 0 0 9.53 14.47c0 1.01.806 1.84 1.818 1.84 1.01 0 1.844-.83 1.844-1.845s-.832-1.814-1.844-1.814z"/>
+        <path id="text" d="M19 5v2H9V5zm0 3v2H8V8zm0 3v2h-3.53a4.443 4.443 0 0 0-1.44-2zm0 3v2h-3.53c.177-.48.28-.99.28-1.53 0-.16-.046-.315-.063-.47z"/>
     </g>
 </svg>
index 964d551..ab66000 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M14 6.5V5c-1.4-1.5-5.2-1.2-6 0V4H7v15h1v-7c.8-.8 3.4-.9 5-.5V13c1.2 1.5 4.3 1.2 5 0V6c-.7.7-2.7.9-4 .5z" id="path216"/>
+    <path d="M14 6.5V5c-1.4-1.5-5.2-1.2-6 0V4H7v15h1v-7c.8-.8 3.4-.9 5-.5V13c1.2 1.5 4.3 1.2 5 0V6c-.7.7-2.7.9-4 .5z"/>
 </svg>
index bcd728e..1097561 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M14 6.5V5c-1.4-1.5-5.2-1.2-6 0V4H7v15h1v-7c.8-.8 3.4-.9 5-.5V13c1.2 1.5 4.3 1.2 5 0V6c-.7.7-2.7.9-4 .5z" id="path216"/>
+    <path d="M14 6.5V5c-1.4-1.5-5.2-1.2-6 0V4H7v15h1v-7c.8-.8 3.4-.9 5-.5V13c1.2 1.5 4.3 1.2 5 0V6c-.7.7-2.7.9-4 .5z"/>
 </svg>
index 4996fe0..025da1f 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M11 6.5V5c1.4-1.5 5.2-1.2 6 0V4h1v15h-1v-7c-.8-.8-3.4-.9-5-.5V13c-1.2 1.5-4.3 1.2-5 0V6c.7.7 2.7.9 4 .5z" id="path216"/>
+    <path d="M11 6.5V5c1.4-1.5 5.2-1.2 6 0V4h1v15h-1v-7c-.8-.8-3.4-.9-5-.5V13c-1.2 1.5-4.3 1.2-5 0V6c.7.7 2.7.9 4 .5z"/>
 </svg>
index 3a93b6f..0f7e7ce 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M11 6.5V5c1.4-1.5 5.2-1.2 6 0V4h1v15h-1v-7c-.8-.8-3.4-.9-5-.5V13c-1.2 1.5-4.3 1.2-5 0V6c.7.7 2.7.9 4 .5z" id="path216"/>
+    <path d="M11 6.5V5c1.4-1.5 5.2-1.2 6 0V4h1v15h-1v-7c-.8-.8-3.4-.9-5-.5V13c-1.2 1.5-4.3 1.2-5 0V6c.7.7 2.7.9 4 .5z"/>
 </svg>
index 5b1c8cd..ea95d5f 100644 (file)
@@ -1,16 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g2990">
-        <g id="Layer_1">
-            <path id="path227" d="M14 6.5V5c-1.4-1.5-5.2-1.2-6 0V4H7v15h1v-7c.8-.8 3.4-.9 5-.5V13c1.2 1.5 4.3 1.2 5 0V6c-.7.7-2.7.9-4 .5z"/>
-        </g>
-        <g id="Layer_2">
-            <g id="g230">
-                <path id="path232" d="M17.997 1.99l.99.99-15.98 15.98-.99-.99z"/>
-            </g>
-            <g id="g234">
-                <path id="path236" d="M17 1.016l.99.99-15.98 15.98-.99-.99z" fill="#fff"/>
-            </g>
-        </g>
-    </g>
+    <path d="M14 6.5V5c-1.4-1.5-5.2-1.2-6 0V4H7v15h1v-7c.8-.8 3.4-.9 5-.5V13c1.2 1.5 4.3 1.2 5 0V6c-.7.7-2.7.9-4 .5z"/>
+    <path d="M17.997 1.99l.99.99-15.98 15.98-.99-.99z"/>
+    <path d="M17 1.016l.99.99-15.98 15.98-.99-.99z" fill="#fff"/>
 </svg>
index 87245de..fae0da1 100644 (file)
@@ -1,16 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g2990">
-        <g id="Layer_1">
-            <path id="path227" d="M14 6.5V5c-1.4-1.5-5.2-1.2-6 0V4H7v15h1v-7c.8-.8 3.4-.9 5-.5V13c1.2 1.5 4.3 1.2 5 0V6c-.7.7-2.7.9-4 .5z"/>
-        </g>
-        <g id="Layer_2">
-            <g id="g230">
-                <path id="path232" d="M17.997 1.99l.99.99-15.98 15.98-.99-.99z"/>
-            </g>
-            <g id="g234">
-                <path id="path236" d="M17 1.016l.99.99-15.98 15.98-.99-.99z" fill="#fff"/>
-            </g>
-        </g>
-    </g>
+    <path d="M14 6.5V5c-1.4-1.5-5.2-1.2-6 0V4H7v15h1v-7c.8-.8 3.4-.9 5-.5V13c1.2 1.5 4.3 1.2 5 0V6c-.7.7-2.7.9-4 .5z"/>
+    <path d="M17.997 1.99l.99.99-15.98 15.98-.99-.99z"/>
+    <path d="M17 1.016l.99.99-15.98 15.98-.99-.99z" fill="#fff"/>
 </svg>
index 5216469..dc328a8 100644 (file)
@@ -1,16 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g2990">
-        <g id="Layer_1">
-            <path id="path227" d="M11 6.5V5c1.4-1.5 5.2-1.2 6 0V4h1v15h-1v-7c-.8-.8-3.4-.9-5-.5V13c-1.2 1.5-4.3 1.2-5 0V6c.7.7 2.7.9 4 .5z"/>
-        </g>
-        <g id="Layer_2">
-            <g id="g230">
-                <path id="path232" d="M7.003 1.99l-.99.99 15.98 15.98.99-.99z"/>
-            </g>
-            <g id="g234">
-                <path id="path236" d="M8 1.016l-.99.99 15.98 15.98.99-.99z" fill="#fff"/>
-            </g>
-        </g>
-    </g>
+    <path d="M11 6.5V5c1.4-1.5 5.2-1.2 6 0V4h1v15h-1v-7c-.8-.8-3.4-.9-5-.5V13c-1.2 1.5-4.3 1.2-5 0V6c.7.7 2.7.9 4 .5z"/>
+    <path d="M7.003 1.99l-.99.99 15.98 15.98.99-.99z"/>
+    <path d="M8 1.016l-.99.99 15.98 15.98.99-.99z" fill="#fff"/>
 </svg>
index 06da23a..0b14c25 100644 (file)
@@ -1,16 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g2990">
-        <g id="Layer_1">
-            <path id="path227" d="M11 6.5V5c1.4-1.5 5.2-1.2 6 0V4h1v15h-1v-7c-.8-.8-3.4-.9-5-.5V13c-1.2 1.5-4.3 1.2-5 0V6c.7.7 2.7.9 4 .5z"/>
-        </g>
-        <g id="Layer_2">
-            <g id="g230">
-                <path id="path232" d="M7.003 1.99l-.99.99 15.98 15.98.99-.99z"/>
-            </g>
-            <g id="g234">
-                <path id="path236" d="M8 1.016l-.99.99 15.98 15.98.99-.99z" fill="#fff"/>
-            </g>
-        </g>
-    </g>
+    <path d="M11 6.5V5c1.4-1.5 5.2-1.2 6 0V4h1v15h-1v-7c-.8-.8-3.4-.9-5-.5V13c-1.2 1.5-4.3 1.2-5 0V6c.7.7 2.7.9 4 .5z"/>
+    <path d="M7.003 1.99l-.99.99 15.98 15.98.99-.99z"/>
+    <path d="M8 1.016l-.99.99 15.98 15.98.99-.99z" fill="#fff"/>
 </svg>
index a384bd1..6151238 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M22 5v15H2V5h20zM7 16h9c.6 0 1-.4 1-1V9h-3l-2 1H7v6z" id="path246"/>
+    <path d="M22 5v15H2V5h20zM7 16h9c.6 0 1-.4 1-1V9h-3l-2 1H7v6z"/>
 </svg>
index 29f5c6b..e0a6f61 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M22 5v15H2V5h20zM7 16h9c.6 0 1-.4 1-1V9h-3l-2 1H7v6z" id="path246"/>
+    <path d="M22 5v15H2V5h20zM7 16h9c.6 0 1-.4 1-1V9h-3l-2 1H7v6z"/>
 </svg>
index 3ea25f4..40d01b4 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M11 13L5 6h15l-6 7v7c-1.7 0-3-1.3-3-3v-4z"/>
-    </g>
+    <path d="M11 13L5 6h15l-6 7v7c-1.7 0-3-1.3-3-3v-4z"/>
 </svg>
index 8d5bf44..df863b9 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M11 13L5 6h15l-6 7v7c-1.7 0-3-1.3-3-3v-4z"/>
-    </g>
+    <path d="M11 13L5 6h15l-6 7v7c-1.7 0-3-1.3-3-3v-4z"/>
 </svg>
index 1fa603f..d960a65 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g256">
-        <path d="M14 13l6-7H5l6 7v7c1.7 0 3-1.3 3-3v-4z" id="path258"/>
-    </g>
+    <path d="M14 13l6-7H5l6 7v7c1.7 0 3-1.3 3-3v-4z"/>
 </svg>
index ec54b1b..4eade2d 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g256">
-        <path d="M14 13l6-7H5l6 7v7c1.7 0 3-1.3 3-3v-4z" id="path258"/>
-    </g>
+    <path d="M14 13l6-7H5l6 7v7c1.7 0 3-1.3 3-3v-4z"/>
 </svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfBright-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfBright-invert.png
new file mode 100644 (file)
index 0000000..7d3d996
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfBright-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfBright-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfBright-invert.svg
new file mode 100644 (file)
index 0000000..5e5b88e
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
+    <path d="M11.4 5.4V2.2c.3 0 .6.1.9.4.3.3.4.5.4.8v2h-1.3zm-5.2-.5c.3 0 .6.1.8.3l1.4 1.4-.8.9-2.2-2.3c.2-.2.5-.3.8-.3zm5.2 11.7h1.2v3.2c-.3 0-.6-.1-.9-.4-.3-.3-.4-.5-.4-.8l.1-2zm-7-6.2h2v1.2H3.2c0-.3.1-.6.4-.9.3-.3.5-.3.8-.3zM6.2 16l1.4-1.4.8.8-2.2 2.2c-.2-.2-.3-.5-.3-.8 0-.3.1-.6.3-.8zM12 7c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4zm-3 4c0-1.7 1.3-3 3-3v6c-1.7 0-3-1.3-3-3z"/>
+</svg>
index fff92e7..2745ec7 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <path d="M11.4 5.4V2.2c.3 0 .6.1.9.4.3.3.4.5.4.8v2h-1.3zm-5.2-.5c.3 0 .6.1.8.3l1.4 1.4-.8.9-2.2-2.3c.2-.2.5-.3.8-.3zm5.2 11.7h1.2v3.2c-.3 0-.6-.1-.9-.4-.3-.3-.4-.5-.4-.8l.1-2zm-7-6.2h2v1.2H3.2c0-.3.1-.6.4-.9.3-.3.5-.3.8-.3zM6.2 16l1.4-1.4.8.8-2.2 2.2c-.2-.2-.3-.5-.3-.8 0-.3.1-.6.3-.8zM12 7c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4zm-3 4c0-1.7 1.3-3 3-3v6c-1.7 0-3-1.3-3-3z"/>
 </svg>
index fdefd97..29df251 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="help">
-        <path id="circle" d="M12 2.085c-5.477 0-9.915 4.438-9.915 9.916 0 5.48 4.438 9.918 9.916 9.918 5.48 0 9.918-4.438 9.918-9.914 0-5.477-4.438-9.915-9.914-9.915zm.002 18c-4.465 0-8.084-3.62-8.084-8.083 0-4.465 3.62-8.084 8.084-8.084 4.464 0 8.083 3.62 8.083 8.084 0 4.464-3.62 8.083-8.083 8.083z"/>
+        <path id="circle" d="M12 2.085c-5.477 0-9.915 4.438-9.915 9.916 0 5.48 4.438 9.92 9.916 9.92 5.48 0 9.92-4.44 9.92-9.913 0-5.477-4.44-9.915-9.913-9.915zm.002 18a8.084 8.084 0 1 1 0-16.168 8.084 8.084 0 0 1 0 16.168z"/>
         <g id="question-mark">
             <path id="top" d="M11.766 6.688c-2.5 0-3.22 2.188-3.22 2.188l1.412.854s.298-.79.9-1.23c.517-.374 1.626-.624 2.22.126.7.885-.17 1.587-1.078 2.72C11.047 12.53 11 15 11 15h1.97s.134-2.318 1.04-3.38c.603-.708 1.443-1.34 1.443-2.495s-1.187-2.437-3.687-2.437z"/>
             <path id="bottom" d="M11 16h2v2h-2z"/>
index 825435d..a77dca2 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="help">
-        <path id="circle" d="M12 2.085c-5.477 0-9.915 4.438-9.915 9.916 0 5.48 4.438 9.918 9.916 9.918 5.48 0 9.918-4.438 9.918-9.914 0-5.477-4.438-9.915-9.914-9.915zm.002 18c-4.465 0-8.084-3.62-8.084-8.083 0-4.465 3.62-8.084 8.084-8.084 4.464 0 8.083 3.62 8.083 8.084 0 4.464-3.62 8.083-8.083 8.083z"/>
+        <path id="circle" d="M12 2.085c-5.477 0-9.915 4.438-9.915 9.916 0 5.48 4.438 9.92 9.916 9.92 5.48 0 9.92-4.44 9.92-9.913 0-5.477-4.44-9.915-9.913-9.915zm.002 18a8.084 8.084 0 1 1 0-16.168 8.084 8.084 0 0 1 0 16.168z"/>
         <g id="question-mark">
             <path id="top" d="M11.766 6.688c-2.5 0-3.22 2.188-3.22 2.188l1.412.854s.298-.79.9-1.23c.517-.374 1.626-.624 2.22.126.7.885-.17 1.587-1.078 2.72C11.047 12.53 11 15 11 15h1.97s.134-2.318 1.04-3.38c.603-.708 1.443-1.34 1.443-2.495s-1.187-2.437-3.687-2.437z"/>
             <path id="bottom" d="M11 16h2v2h-2z"/>
index b369813..552fe9f 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="help">
-        <path id="circle" d="M12 2.085c5.477 0 9.915 4.438 9.915 9.916 0 5.48-4.438 9.918-9.916 9.918-5.48 0-9.918-4.438-9.918-9.914 0-5.477 4.438-9.915 9.914-9.915zm-.002 18c4.465 0 8.084-3.62 8.084-8.083 0-4.465-3.62-8.084-8.084-8.084-4.464 0-8.083 3.62-8.083 8.084 0 4.464 3.62 8.083 8.083 8.083z"/>
+        <path id="circle" d="M12 2.085c5.477 0 9.915 4.438 9.915 9.916 0 5.48-4.438 9.92-9.916 9.92-5.48 0-9.92-4.44-9.92-9.913 0-5.477 4.44-9.915 9.913-9.915zm-.002 18a8.084 8.084 0 1 0 0-16.168 8.084 8.084 0 0 0 0 16.168z"/>
         <g id="question-mark">
             <path id="top" d="M12.234 6.688c2.5 0 3.22 2.188 3.22 2.188l-1.412.854s-.298-.79-.9-1.23c-.517-.374-1.626-.624-2.22.126-.7.885.17 1.587 1.078 2.72C12.953 12.53 13 15 13 15h-1.97s-.134-2.318-1.04-3.38c-.603-.708-1.443-1.34-1.443-2.495 0-1.156 1.187-2.437 3.687-2.437z"/>
             <path id="bottom" d="M13 16h-2v2h2z"/>
index 0d8052f..278b906 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="help">
-        <path id="circle" d="M12 2.085c5.477 0 9.915 4.438 9.915 9.916 0 5.48-4.438 9.918-9.916 9.918-5.48 0-9.918-4.438-9.918-9.914 0-5.477 4.438-9.915 9.914-9.915zm-.002 18c4.465 0 8.084-3.62 8.084-8.083 0-4.465-3.62-8.084-8.084-8.084-4.464 0-8.083 3.62-8.083 8.084 0 4.464 3.62 8.083 8.083 8.083z"/>
+        <path id="circle" d="M12 2.085c5.477 0 9.915 4.438 9.915 9.916 0 5.48-4.438 9.92-9.916 9.92-5.48 0-9.92-4.44-9.92-9.913 0-5.477 4.44-9.915 9.913-9.915zm-.002 18a8.084 8.084 0 1 0 0-16.168 8.084 8.084 0 0 0 0 16.168z"/>
         <g id="question-mark">
             <path id="top" d="M12.234 6.688c2.5 0 3.22 2.188 3.22 2.188l-1.412.854s-.298-.79-.9-1.23c-.517-.374-1.626-.624-2.22.126-.7.885.17 1.587 1.078 2.72C12.953 12.53 13 15 13 15h-1.97s-.134-2.318-1.04-3.38c-.603-.708-1.443-1.34-1.443-2.495 0-1.156 1.187-2.437 3.687-2.437z"/>
             <path id="bottom" d="M13 16h-2v2h2z"/>
index ea5a18e..8c1cc2b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/history-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/history-invert.png differ
index 31287cd..4b1fd50 100644 (file)
@@ -2,6 +2,6 @@
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="history">
         <path id="clock-hands" d="M17.26 15.076s-2.385-1.935-4.005-3.062c.72-2.397 1.702-6.56 1.702-6.56s-4.35 5.364-4.877 6.7c-.463 1.168 1.46 2.21 2.346 1.678 1.9.55 4.834 1.244 4.834 1.244z"/>
-        <path id="arrow" d="M12.086 2.085C6.608 2.085 2.17 6.523 2.17 12c0 1.784.476 3.455 1.3 4.9l-2.22 2.04h5.688v-5.22L4.87 15.616c-.55-1.088-.866-2.312-.866-3.615 0-4.46 3.62-8.08 8.084-8.08 4.464 0 8.083 3.62 8.083 8.084 0 4.465-3.615 8.084-8.08 8.084-1.144 0-2.23-.247-3.212-.678l-.833 1.633c1.235.557 2.602.874 4.045.874C17.562 21.914 22 17.477 22 12c0-5.477-4.438-9.915-9.914-9.915z"/>
+        <path id="arrow" d="M12.086 2.085C6.608 2.085 2.17 6.523 2.17 12a9.86 9.86 0 0 0 1.3 4.9l-2.22 2.04h5.688v-5.22L4.87 15.616A7.982 7.982 0 0 1 4.004 12a8.084 8.084 0 0 1 16.167.004 8.08 8.08 0 0 1-8.08 8.085 7.975 7.975 0 0 1-3.21-.68L8.05 21.04a9.81 9.81 0 0 0 4.045.874C17.563 21.914 22 17.476 22 12c0-5.477-4.438-9.915-9.914-9.915z"/>
     </g>
 </svg>
index 0e177ab..95686fb 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/history.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/history.png differ
index 10d1b81..68beaa1 100644 (file)
@@ -2,6 +2,6 @@
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="history">
         <path id="clock-hands" d="M17.26 15.076s-2.385-1.935-4.005-3.062c.72-2.397 1.702-6.56 1.702-6.56s-4.35 5.364-4.877 6.7c-.463 1.168 1.46 2.21 2.346 1.678 1.9.55 4.834 1.244 4.834 1.244z"/>
-        <path id="arrow" d="M12.086 2.085C6.608 2.085 2.17 6.523 2.17 12c0 1.784.476 3.455 1.3 4.9l-2.22 2.04h5.688v-5.22L4.87 15.616c-.55-1.088-.866-2.312-.866-3.615 0-4.46 3.62-8.08 8.084-8.08 4.464 0 8.083 3.62 8.083 8.084 0 4.465-3.615 8.084-8.08 8.084-1.144 0-2.23-.247-3.212-.678l-.833 1.633c1.235.557 2.602.874 4.045.874C17.562 21.914 22 17.477 22 12c0-5.477-4.438-9.915-9.914-9.915z"/>
+        <path id="arrow" d="M12.086 2.085C6.608 2.085 2.17 6.523 2.17 12a9.86 9.86 0 0 0 1.3 4.9l-2.22 2.04h5.688v-5.22L4.87 15.616A7.982 7.982 0 0 1 4.004 12a8.084 8.084 0 0 1 16.167.004 8.08 8.08 0 0 1-8.08 8.085 7.975 7.975 0 0 1-3.21-.68L8.05 21.04a9.81 9.81 0 0 0 4.045.874C17.563 21.914 22 17.476 22 12c0-5.477-4.438-9.915-9.914-9.915z"/>
     </g>
 </svg>
index c507c20..6758bc7 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="imageGallery">
-       <path d="M2 4v14h2V6h15V4H2zm3 3v13h16V7H5zm6 6l3 3 2-1 3 3H7l4-5z"/>
-    </g>
+    <path d="M2 4v14h2V6h15V4H2zm3 3v13h16V7H5zm6 6l3 3 2-1 3 3H7l4-5z" id="imageGallery"/>
 </svg>
index 95e28d4..2fa2e52 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="imageGallery">
-       <path d="M2 4v14h2V6h15V4H2zm3 3v13h16V7H5zm6 6l3 3 2-1 3 3H7l4-5z"/>
-    </g>
+    <path d="M2 4v14h2V6h15V4H2zm3 3v13h16V7H5zm6 6l3 3 2-1 3 3H7l4-5z" id="imageGallery"/>
 </svg>
index caa4098..ff3123f 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="imageGallery">
-       <path d="M21 4v14h-2V6H4V4h17zm-3 3v13H2V7h16zm-6 6l-3 3-2-1-3 3h12l-4-5z"/>
-    </g>
+    <path d="M21 4v14h-2V6H4V4h17zm-3 3v13H2V7h16zm-6 6l-3 3-2-1-3 3h12l-4-5z" id="imageGallery"/>
 </svg>
index be12662..c705cec 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="imageGallery">
-       <path d="M21 4v14h-2V6H4V4h17zm-3 3v13H2V7h16zm-6 6l-3 3-2-1-3 3h12l-4-5z"/>
-    </g>
+    <path d="M21 4v14h-2V6H4V4h17zm-3 3v13H2V7h16zm-6 6l-3 3-2-1-3 3h12l-4-5z" id="imageGallery"/>
 </svg>
index 93a43dc..0837550 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M10 8h9v2h-9V8zm0 3h9v2h-9v-2zm0 3h6v2h-6v-2zm11-8H3V4h18v2zm0 14H3v-2h18v2zM3 8v8l5-4-5-4z"/>
-    </g>
+    <path d="M10 8h9v2h-9V8zm0 3h9v2h-9v-2zm0 3h6v2h-6v-2zm11-8H3V4h18v2zm0 14H3v-2h18v2zM3 8v8l5-4-5-4z"/>
 </svg>
index 238558a..3760696 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M10 8h9v2h-9V8zm0 3h9v2h-9v-2zm0 3h6v2h-6v-2zm11-8H3V4h18v2zm0 14H3v-2h18v2zM3 8v8l5-4-5-4z"/>
-    </g>
+    <path d="M10 8h9v2h-9V8zm0 3h9v2h-9v-2zm0 3h6v2h-6v-2zm11-8H3V4h18v2zm0 14H3v-2h18v2zM3 8v8l5-4-5-4z"/>
 </svg>
index c7c7dad..26e49c7 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g314">
-        <path d="M14 8H5v2h9V8zm0 3H5v2h9v-2zm0 3H8v2h6v-2zM3 6h18V4H3v2zm0 14h18v-2H3v2zM21 8v8l-5-4 5-4z" id="path316"/>
-    </g>
+    <path d="M14 8H5v2h9V8zm0 3H5v2h9v-2zm0 3H8v2h6v-2zM3 6h18V4H3v2zm0 14h18v-2H3v2zM21 8v8l-5-4 5-4z"/>
 </svg>
index 0334b06..9648f34 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g314">
-        <path d="M14 8H5v2h9V8zm0 3H5v2h9v-2zm0 3H8v2h6v-2zM3 6h18V4H3v2zm0 14h18v-2H3v2zM21 8v8l-5-4 5-4z" id="path316"/>
-    </g>
+    <path d="M14 8H5v2h9V8zm0 3H5v2h9v-2zm0 3H8v2h6v-2zM3 6h18V4H3v2zm0 14h18v-2H3v2zM21 8v8l-5-4 5-4z"/>
 </svg>
index a5894a1..ce4a75d 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="info">
-        <path id="circled-i" d="M11.5 17C8.462 17 6 14.536 6 11.5 6 8.463 8.462 6 11.5 6c3.036 0 5.5 2.462 5.5 5.5 0 3.036-2.464 5.5-5.5 5.5zm0-12C7.91 5 5 7.91 5 11.5S7.91 18 11.5 18s6.5-2.91 6.5-6.5S15.09 5 11.5 5zm.5 5v4h1v1h-3v-1h1v-3h-1v-1zm-1-2h1v1h-1z"/>
+        <path id="circled-i" d="M11.5 17a5.5 5.5 0 1 1 0-11 5.5 5.5 0 0 1 0 11zm0-12a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13zm.5 5v4h1v1h-3v-1h1v-3h-1v-1zm-1-2h1v1h-1z"/>
     </g>
 </svg>
index 6cff2ff..72a9b4c 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="info">
-        <path id="circled-i" d="M11.5 17C8.462 17 6 14.536 6 11.5 6 8.463 8.462 6 11.5 6c3.036 0 5.5 2.462 5.5 5.5 0 3.036-2.464 5.5-5.5 5.5zm0-12C7.91 5 5 7.91 5 11.5S7.91 18 11.5 18s6.5-2.91 6.5-6.5S15.09 5 11.5 5zm.5 5v4h1v1h-3v-1h1v-3h-1v-1zm-1-2h1v1h-1z"/>
+        <path id="circled-i" d="M11.5 17a5.5 5.5 0 1 1 0-11 5.5 5.5 0 0 1 0 11zm0-12a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13zm.5 5v4h1v1h-3v-1h1v-3h-1v-1zm-1-2h1v1h-1z"/>
     </g>
 </svg>
index d899142..5e36975 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem-invert.png differ
index b359c47..63dc4e2 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="italic-arab-keheh-jeem">
-        <path id="arab-keheh-jeem" d="M18.125 5.844c-1.695.555-3.297 1.162-4.594 1.938-.49.3-.77.712-.87 1.125-.065.263-.036.572.062.78.19.406.54.575.844.814l.094-.12.53.624c.14.165.344.514.47.94.137.462.08.724 0 1.124h-3.44c-.34 0-.593.007-.767-.02-.34-.053-.256-.208-.234-.34.33-.127.56-.173.934-.14.29-.495.593-.886.906-1.314-.98.037-1.877.015-2.687-.094-.346-.048-.698-.187-1.094-.157-.358.026-.77.24-1.03.72-.248.447-.436.838-.658 1.28l.75-.47c.23-.14.484-.226.72-.218.156.005.274.054.405.094-.233.203-.51.4-.72.56-.3.26-.703.69-.907 1-.402.616-.693 1.085-.874 1.78-.18.69.003 1.34.468 1.75.426.378.846.52 1.28.565.65.065 1.206.093 2-.188.658-.23 1.022-.553 1.5-.97-.882.11-1.816.09-2.53.032-.87-.07-1.268-.385-1.47-.595-.27-.283-.306-.64-.155-1.22.035-.14.096-.322.25-.53.17-.228.363-.435.593-.656.45-.437 1.01-.738 1.46-.94-.044.206-.106.443-.054.688.05.23.25.38.44.47.26.12.505.153.69.154 1.42.01 2.86 0 4.28 0 .245 0 .45-.163.592-.375.14-.21.25-.48.344-.845.13-.5.094-1.062-.094-1.625-.182-.543-.418-1.01-.72-1.406-.334-.442-.673-.83-1-1.22 1.258-.813 2.717-1.237 3.97-1.686.12-.452.224-.926.313-1.313zm-9.47 8.438c-.26.394-.583.69-.874 1 .38.286.75.556 1.098.813.335-.303.626-.674.875-.97-.39-.267-.77-.587-1.093-.843z"/>
+        <path id="arab-keheh-jeem" d="M18.125 5.844c-1.695.555-3.297 1.162-4.594 1.938-.49.3-.77.712-.87 1.125a1.26 1.26 0 0 0 .065.78c.19.406.54.575.844.814l.093-.12.53.627c.14.165.345.514.47.94.138.462.08.724 0 1.124h-3.44c-.34 0-.592.007-.766-.02-.34-.053-.256-.21-.234-.34.33-.127.56-.173.934-.14.29-.495.593-.886.906-1.314-.98.037-1.877.015-2.687-.094-.346-.046-.698-.185-1.094-.155-.36.026-.77.24-1.03.72-.25.447-.436.838-.66 1.28l.75-.47c.23-.14.486-.226.72-.218.158.004.276.053.407.093-.234.204-.51.4-.72.56-.3.26-.704.69-.908 1-.403.617-.694 1.086-.875 1.78-.18.69.003 1.34.468 1.75.426.38.846.52 1.28.566.65.064 1.206.092 2-.19.658-.23 1.022-.552 1.5-.97-.882.11-1.816.09-2.53.033-.87-.07-1.268-.386-1.47-.596-.27-.283-.306-.64-.155-1.22a1.44 1.44 0 0 1 .25-.53c.17-.228.363-.435.593-.656.45-.436 1.01-.737 1.46-.94-.042.207-.104.444-.052.69.05.23.25.38.44.47.26.12.506.152.69.153 1.42.01 2.86 0 4.28 0 .246 0 .45-.163.593-.375.14-.21.25-.48.343-.845.13-.5.094-1.062-.094-1.625a4.812 4.812 0 0 0-.72-1.406c-.336-.444-.675-.83-1-1.22 1.256-.815 2.715-1.24 3.97-1.688.12-.452.222-.926.31-1.313zm-9.47 8.438c-.26.394-.583.69-.874 1 .38.286.75.556 1.1.813.336-.303.627-.674.876-.97-.39-.267-.77-.587-1.093-.843z"/>
     </g>
 </svg>
index 9f603ea..ce99ac7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem.png differ
index 99980c0..11b1458 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="italic-arab-keheh-jeem">
-        <path id="arab-keheh-jeem" d="M18.125 5.844c-1.695.555-3.297 1.162-4.594 1.938-.49.3-.77.712-.87 1.125-.065.263-.036.572.062.78.19.406.54.575.844.814l.094-.12.53.624c.14.165.344.514.47.94.137.462.08.724 0 1.124h-3.44c-.34 0-.593.007-.767-.02-.34-.053-.256-.208-.234-.34.33-.127.56-.173.934-.14.29-.495.593-.886.906-1.314-.98.037-1.877.015-2.687-.094-.346-.048-.698-.187-1.094-.157-.358.026-.77.24-1.03.72-.248.447-.436.838-.658 1.28l.75-.47c.23-.14.484-.226.72-.218.156.005.274.054.405.094-.233.203-.51.4-.72.56-.3.26-.703.69-.907 1-.402.616-.693 1.085-.874 1.78-.18.69.003 1.34.468 1.75.426.378.846.52 1.28.565.65.065 1.206.093 2-.188.658-.23 1.022-.553 1.5-.97-.882.11-1.816.09-2.53.032-.87-.07-1.268-.385-1.47-.595-.27-.283-.306-.64-.155-1.22.035-.14.096-.322.25-.53.17-.228.363-.435.593-.656.45-.437 1.01-.738 1.46-.94-.044.206-.106.443-.054.688.05.23.25.38.44.47.26.12.505.153.69.154 1.42.01 2.86 0 4.28 0 .245 0 .45-.163.592-.375.14-.21.25-.48.344-.845.13-.5.094-1.062-.094-1.625-.182-.543-.418-1.01-.72-1.406-.334-.442-.673-.83-1-1.22 1.258-.813 2.717-1.237 3.97-1.686.12-.452.224-.926.313-1.313zm-9.47 8.438c-.26.394-.583.69-.874 1 .38.286.75.556 1.098.813.335-.303.626-.674.875-.97-.39-.267-.77-.587-1.093-.843z"/>
+        <path id="arab-keheh-jeem" d="M18.125 5.844c-1.695.555-3.297 1.162-4.594 1.938-.49.3-.77.712-.87 1.125a1.26 1.26 0 0 0 .065.78c.19.406.54.575.844.814l.093-.12.53.627c.14.165.345.514.47.94.138.462.08.724 0 1.124h-3.44c-.34 0-.592.007-.766-.02-.34-.053-.256-.21-.234-.34.33-.127.56-.173.934-.14.29-.495.593-.886.906-1.314-.98.037-1.877.015-2.687-.094-.346-.046-.698-.185-1.094-.155-.36.026-.77.24-1.03.72-.25.447-.436.838-.66 1.28l.75-.47c.23-.14.486-.226.72-.218.158.004.276.053.407.093-.234.204-.51.4-.72.56-.3.26-.704.69-.908 1-.403.617-.694 1.086-.875 1.78-.18.69.003 1.34.468 1.75.426.38.846.52 1.28.566.65.064 1.206.092 2-.19.658-.23 1.022-.552 1.5-.97-.882.11-1.816.09-2.53.033-.87-.07-1.268-.386-1.47-.596-.27-.283-.306-.64-.155-1.22a1.44 1.44 0 0 1 .25-.53c.17-.228.363-.435.593-.656.45-.436 1.01-.737 1.46-.94-.042.207-.104.444-.052.69.05.23.25.38.44.47.26.12.506.152.69.153 1.42.01 2.86 0 4.28 0 .246 0 .45-.163.593-.375.14-.21.25-.48.343-.845.13-.5.094-1.062-.094-1.625a4.812 4.812 0 0 0-.72-1.406c-.336-.444-.675-.83-1-1.22 1.256-.815 2.715-1.24 3.97-1.688.12-.452.222-.926.31-1.313zm-9.47 8.438c-.26.394-.583.69-.874 1 .38.286.75.556 1.1.813.336-.303.627-.674.876-.97-.39-.267-.77-.587-1.093-.843z"/>
     </g>
 </svg>
index 960653e..475d014 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem-invert.png differ
index a0f9c0c..5191e7f 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="italic-arab-meem">
-        <path id="arab-meem" d="M16 9.73l-.93 2.19h-4.663c-.48 0-.857.12-1.135.366l-.06.11c-.185 2.016-.503 3.558-.956 4.627-.272.64-.633 1.252-1.082 1.833-.177.226-.22.186-.126-.12l.142-.503.17-.67.234-.87.002-.008.202-1.045.258-1.41.353-1.907c.19-.312.42-.638.695-.98.276-.342.59-.706.94-1.09.13-.092.697-.18 1.705-.266 1.05-.086 1.64-.183 1.766-.293l.065-.128c.01-.11-.01-.24-.052-.394-.044-.153-.12-.327-.232-.522-.22-.428-.438-.64-.654-.64-.293 0-.914.268-1.863.805-.36.208-.377.125-.05-.247 1.556-1.71 2.706-2.566 3.45-2.566.38 0 .67.13.86.394.135.195.25.6.344 1.21l.203 1.2c.105.586.24.895.408.925"/>
+        <path id="arab-meem" d="M16 9.73l-.93 2.19h-4.663c-.48 0-.857.12-1.135.366l-.06.11c-.185 2.016-.503 3.558-.956 4.627a8.31 8.31 0 0 1-1.082 1.833c-.177.226-.22.186-.126-.12l.142-.503.17-.67.234-.87.002-.008.202-1.045.258-1.41.353-1.907c.19-.312.42-.638.692-.98a24.1 24.1 0 0 1 .94-1.09c.13-.092.697-.18 1.705-.266 1.05-.086 1.64-.183 1.765-.293l.065-.128c.01-.11-.01-.24-.052-.394a2.403 2.403 0 0 0-.232-.522c-.22-.428-.438-.64-.654-.64-.294 0-.915.268-1.864.805-.36.208-.378.125-.05-.247 1.555-1.71 2.705-2.566 3.45-2.566.38 0 .67.13.86.394.134.195.25.6.343 1.21l.202 1.2c.105.586.24.895.408.925"/>
     </g>
 </svg>
index 03493be..258699c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem.png differ
index a9c7def..f15586e 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="italic-arab-meem">
-        <path id="arab-meem" d="M16 9.73l-.93 2.19h-4.663c-.48 0-.857.12-1.135.366l-.06.11c-.185 2.016-.503 3.558-.956 4.627-.272.64-.633 1.252-1.082 1.833-.177.226-.22.186-.126-.12l.142-.503.17-.67.234-.87.002-.008.202-1.045.258-1.41.353-1.907c.19-.312.42-.638.695-.98.276-.342.59-.706.94-1.09.13-.092.697-.18 1.705-.266 1.05-.086 1.64-.183 1.766-.293l.065-.128c.01-.11-.01-.24-.052-.394-.044-.153-.12-.327-.232-.522-.22-.428-.438-.64-.654-.64-.293 0-.914.268-1.863.805-.36.208-.377.125-.05-.247 1.556-1.71 2.706-2.566 3.45-2.566.38 0 .67.13.86.394.135.195.25.6.344 1.21l.203 1.2c.105.586.24.895.408.925"/>
+        <path id="arab-meem" d="M16 9.73l-.93 2.19h-4.663c-.48 0-.857.12-1.135.366l-.06.11c-.185 2.016-.503 3.558-.956 4.627a8.31 8.31 0 0 1-1.082 1.833c-.177.226-.22.186-.126-.12l.142-.503.17-.67.234-.87.002-.008.202-1.045.258-1.41.353-1.907c.19-.312.42-.638.692-.98a24.1 24.1 0 0 1 .94-1.09c.13-.092.697-.18 1.705-.266 1.05-.086 1.64-.183 1.765-.293l.065-.128c.01-.11-.01-.24-.052-.394a2.403 2.403 0 0 0-.232-.522c-.22-.428-.438-.64-.654-.64-.294 0-.915.268-1.864.805-.36.208-.378.125-.05-.247 1.555-1.71 2.705-2.566 3.45-2.566.38 0 .67.13.86.394.134.195.25.6.343 1.21l.202 1.2c.105.586.24.895.408.925"/>
     </g>
 </svg>
index 7f6d412..ed79915 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha-invert.png differ
index fd60619..c7ba181 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="italic-armn-sha">
-        <path id="armn-sha" d="M11.564 7.678c-.268-.13-.578-.22-.93-.268-.35-.047-.75-.07-1.197-.07h-1.11L8.587 6h1.723c.558 0 1.042.032 1.45.095.416.063.794.173 1.136.33l4.483 2.033-.328 1.67-2.624-1.165c-.126-.058-.27-.103-.433-.134-.164-.04-.356-.06-.576-.06-.583 0-1.137.094-1.663.283-.526.19-1 .46-1.427.812-.42.35-.776.78-1.07 1.283-.294.504-.504 1.074-.63 1.71-.24 1.255-.15 2.21.27 2.87.424.65 1.19.976 2.292.976.55 0 1.045-.08 1.48-.237.437-.157.815-.378 1.136-.66.325-.29.59-.634.795-1.034.21-.4.362-.84.457-1.323l.11-.56h1.6l-.12.59c-.13.674-.356 1.288-.676 1.845-.32.55-.725 1.024-1.214 1.423-.488.395-1.053.7-1.694.923-.643.216-1.344.324-2.106.324-.767 0-1.434-.114-2-.34-.568-.226-1.025-.554-1.372-.985-.347-.436-.573-.97-.678-1.607-.105-.637-.078-1.364.08-2.184.125-.66.346-1.274.66-1.836.316-.568.697-1.067 1.144-1.497.445-.436.944-.794 1.496-1.072.55-.283 1.13-.474 1.733-.574l-.466-.23"/>
+        <path id="armn-sha" d="M11.564 7.678a3.073 3.073 0 0 0-.93-.268c-.35-.047-.75-.07-1.197-.07h-1.11L8.587 6h1.723c.558 0 1.042.032 1.45.095.416.063.794.173 1.136.33l4.483 2.033-.33 1.67-2.625-1.165a1.867 1.867 0 0 0-.433-.134 2.45 2.45 0 0 0-.576-.06 4.88 4.88 0 0 0-1.663.28c-.526.19-1 .46-1.427.812-.42.35-.776.78-1.07 1.283a5.48 5.48 0 0 0-.63 1.71c-.24 1.255-.15 2.21.27 2.87.424.65 1.19.976 2.292.976.55 0 1.044-.08 1.48-.236a3.488 3.488 0 0 0 1.135-.66c.325-.29.59-.634.795-1.034.21-.4.363-.84.458-1.322l.11-.56h1.6l-.12.59a5.925 5.925 0 0 1-.676 1.844 5.19 5.19 0 0 1-1.214 1.423c-.488.395-1.053.7-1.694.923a6.573 6.573 0 0 1-2.106.324c-.767 0-1.434-.114-2-.34-.568-.226-1.025-.554-1.372-.985-.347-.437-.573-.97-.678-1.608-.105-.64-.078-1.366.08-2.186.125-.66.346-1.274.66-1.836A6.332 6.332 0 0 1 8.792 9.54a5.955 5.955 0 0 1 1.496-1.072 5.87 5.87 0 0 1 1.732-.57l-.465-.23"/>
     </g>
 </svg>
index b5e55cc..c9546eb 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha.png differ
index a653a27..c32ff49 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="italic-armn-sha">
-        <path id="armn-sha" d="M11.564 7.678c-.268-.13-.578-.22-.93-.268-.35-.047-.75-.07-1.197-.07h-1.11L8.587 6h1.723c.558 0 1.042.032 1.45.095.416.063.794.173 1.136.33l4.483 2.033-.328 1.67-2.624-1.165c-.126-.058-.27-.103-.433-.134-.164-.04-.356-.06-.576-.06-.583 0-1.137.094-1.663.283-.526.19-1 .46-1.427.812-.42.35-.776.78-1.07 1.283-.294.504-.504 1.074-.63 1.71-.24 1.255-.15 2.21.27 2.87.424.65 1.19.976 2.292.976.55 0 1.045-.08 1.48-.237.437-.157.815-.378 1.136-.66.325-.29.59-.634.795-1.034.21-.4.362-.84.457-1.323l.11-.56h1.6l-.12.59c-.13.674-.356 1.288-.676 1.845-.32.55-.725 1.024-1.214 1.423-.488.395-1.053.7-1.694.923-.643.216-1.344.324-2.106.324-.767 0-1.434-.114-2-.34-.568-.226-1.025-.554-1.372-.985-.347-.436-.573-.97-.678-1.607-.105-.637-.078-1.364.08-2.184.125-.66.346-1.274.66-1.836.316-.568.697-1.067 1.144-1.497.445-.436.944-.794 1.496-1.072.55-.283 1.13-.474 1.733-.574l-.466-.23"/>
+        <path id="armn-sha" d="M11.564 7.678a3.073 3.073 0 0 0-.93-.268c-.35-.047-.75-.07-1.197-.07h-1.11L8.587 6h1.723c.558 0 1.042.032 1.45.095.416.063.794.173 1.136.33l4.483 2.033-.33 1.67-2.625-1.165a1.867 1.867 0 0 0-.433-.134 2.45 2.45 0 0 0-.576-.06 4.88 4.88 0 0 0-1.663.28c-.526.19-1 .46-1.427.812-.42.35-.776.78-1.07 1.283a5.48 5.48 0 0 0-.63 1.71c-.24 1.255-.15 2.21.27 2.87.424.65 1.19.976 2.292.976.55 0 1.044-.08 1.48-.236a3.488 3.488 0 0 0 1.135-.66c.325-.29.59-.634.795-1.034.21-.4.363-.84.458-1.322l.11-.56h1.6l-.12.59a5.925 5.925 0 0 1-.676 1.844 5.19 5.19 0 0 1-1.214 1.423c-.488.395-1.053.7-1.694.923a6.573 6.573 0 0 1-2.106.324c-.767 0-1.434-.114-2-.34-.568-.226-1.025-.554-1.372-.985-.347-.437-.573-.97-.678-1.608-.105-.64-.078-1.366.08-2.186.125-.66.346-1.274.66-1.836A6.332 6.332 0 0 1 8.792 9.54a5.955 5.955 0 0 1 1.496-1.072 5.87 5.87 0 0 1 1.732-.57l-.465-.23"/>
     </g>
 </svg>
index a2a2c82..68fe590 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c-invert.png differ
index f2850c4..abc0301 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="italic-c">
-        <path id="c" d="M15.008 13.718l1.48.214c-.467 1.34-1.15 2.354-2.045 3.04-.896.686-1.9 1.03-3.015 1.03-1.36 0-2.438-.43-3.237-1.29C7.4 15.85 7 14.618 7 13.012c0-2.09.606-3.817 1.817-5.184C9.897 6.61 11.237 6 12.84 6c1.186 0 2.145.33 2.878.99.738.66 1.165 1.546 1.282 2.66l-1.397.135c-.148-.84-.453-1.464-.916-1.876-.458-.42-1.05-.63-1.78-.63-1.368 0-2.475.63-3.32 1.893-.733 1.087-1.1 2.377-1.1 3.87 0 1.194.283 2.104.848 2.732.565.628 1.3.942 2.206.942.778 0 1.477-.26 2.1-.785.63-.522 1.08-1.26 1.37-2.216"/>
+        <path id="c" d="M15.008 13.718l1.48.214c-.467 1.34-1.15 2.354-2.045 3.04a4.835 4.835 0 0 1-3.015 1.03c-1.36 0-2.438-.43-3.237-1.29C7.4 15.85 7 14.618 7 13.012c0-2.09.606-3.817 1.817-5.184C9.897 6.61 11.237 6 12.84 6c1.186 0 2.145.33 2.878.99.738.66 1.165 1.546 1.282 2.66l-1.397.135c-.148-.84-.453-1.464-.916-1.876-.458-.42-1.05-.63-1.78-.63-1.368 0-2.475.63-3.32 1.89-.733 1.087-1.1 2.377-1.1 3.87 0 1.194.283 2.104.848 2.732.565.628 1.3.942 2.206.942.78 0 1.48-.26 2.1-.785.63-.52 1.08-1.26 1.37-2.216"/>
     </g>
 </svg>
index f46dea5..1bb9cdb 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c.png differ
index 0a0d110..b85eb02 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="italic-c">
-        <path id="c" d="M15.008 13.718l1.48.214c-.467 1.34-1.15 2.354-2.045 3.04-.896.686-1.9 1.03-3.015 1.03-1.36 0-2.438-.43-3.237-1.29C7.4 15.85 7 14.618 7 13.012c0-2.09.606-3.817 1.817-5.184C9.897 6.61 11.237 6 12.84 6c1.186 0 2.145.33 2.878.99.738.66 1.165 1.546 1.282 2.66l-1.397.135c-.148-.84-.453-1.464-.916-1.876-.458-.42-1.05-.63-1.78-.63-1.368 0-2.475.63-3.32 1.893-.733 1.087-1.1 2.377-1.1 3.87 0 1.194.283 2.104.848 2.732.565.628 1.3.942 2.206.942.778 0 1.477-.26 2.1-.785.63-.522 1.08-1.26 1.37-2.216"/>
+        <path id="c" d="M15.008 13.718l1.48.214c-.467 1.34-1.15 2.354-2.045 3.04a4.835 4.835 0 0 1-3.015 1.03c-1.36 0-2.438-.43-3.237-1.29C7.4 15.85 7 14.618 7 13.012c0-2.09.606-3.817 1.817-5.184C9.897 6.61 11.237 6 12.84 6c1.186 0 2.145.33 2.878.99.738.66 1.165 1.546 1.282 2.66l-1.397.135c-.148-.84-.453-1.464-.916-1.876-.458-.42-1.05-.63-1.78-.63-1.368 0-2.475.63-3.32 1.89-.733 1.087-1.1 2.377-1.1 3.87 0 1.194.283 2.104.848 2.732.565.628 1.3.942 2.206.942.78 0 1.48-.26 2.1-.785.63-.52 1.08-1.26 1.37-2.216"/>
     </g>
 </svg>
index 33a41cb..a2d6800 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d-invert.png differ
index 8ca4218..b51d25c 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="italic-d">
-        <path id="d" d="M7 18L9.462 6h3.557c.85 0 1.5.063 1.95.188.645.17 1.195.472 1.65.91.457.43.8.97 1.03 1.62.23.65.347 1.378.347 2.186 0 .966-.146 1.847-.436 2.644-.283.79-.66 1.49-1.126 2.095-.46.6-.947 1.072-1.456 1.416-.504.334-1.1.585-1.794.75-.526.125-1.172.19-1.94.19H7m1.86-1.36h1.866c.842 0 1.59-.08 2.245-.24.41-.097.76-.242 1.05-.433.38-.247.727-.57 1.038-.975.408-.535.732-1.143.974-1.825.247-.687.37-1.467.37-2.34 0-.97-.166-1.716-.5-2.235-.332-.524-.755-.87-1.27-1.04-.38-.126-.974-.188-1.78-.188H11L9.095 16.64"/>
+        <path id="d" d="M7 18L9.462 6h3.557c.85 0 1.5.063 1.95.188.642.17 1.192.472 1.65.91.454.43.8.97 1.03 1.62.23.65.344 1.378.344 2.186 0 .966-.146 1.847-.436 2.644-.284.79-.66 1.49-1.127 2.095-.46.6-.946 1.072-1.455 1.416-.504.33-1.1.582-1.794.75-.525.122-1.17.19-1.94.19H7m1.86-1.36h1.866c.842 0 1.59-.08 2.245-.24a3.26 3.26 0 0 0 1.05-.436 4.19 4.19 0 0 0 1.04-.975 6.652 6.652 0 0 0 .975-1.825c.247-.687.37-1.467.37-2.34 0-.97-.166-1.716-.5-2.235-.332-.522-.755-.87-1.27-1.04-.38-.124-.974-.186-1.78-.186H11L9.095 16.64"/>
     </g>
 </svg>
index 4ace3f3..0f102b2 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d.png differ
index feadca0..dbc1d40 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="italic-d">
-        <path id="d" d="M7 18L9.462 6h3.557c.85 0 1.5.063 1.95.188.645.17 1.195.472 1.65.91.457.43.8.97 1.03 1.62.23.65.347 1.378.347 2.186 0 .966-.146 1.847-.436 2.644-.283.79-.66 1.49-1.126 2.095-.46.6-.947 1.072-1.456 1.416-.504.334-1.1.585-1.794.75-.526.125-1.172.19-1.94.19H7m1.86-1.36h1.866c.842 0 1.59-.08 2.245-.24.41-.097.76-.242 1.05-.433.38-.247.727-.57 1.038-.975.408-.535.732-1.143.974-1.825.247-.687.37-1.467.37-2.34 0-.97-.166-1.716-.5-2.235-.332-.524-.755-.87-1.27-1.04-.38-.126-.974-.188-1.78-.188H11L9.095 16.64"/>
+        <path id="d" d="M7 18L9.462 6h3.557c.85 0 1.5.063 1.95.188.642.17 1.192.472 1.65.91.454.43.8.97 1.03 1.62.23.65.344 1.378.344 2.186 0 .966-.146 1.847-.436 2.644-.284.79-.66 1.49-1.127 2.095-.46.6-.946 1.072-1.455 1.416-.504.33-1.1.582-1.794.75-.525.122-1.17.19-1.94.19H7m1.86-1.36h1.866c.842 0 1.59-.08 2.245-.24a3.26 3.26 0 0 0 1.05-.436 4.19 4.19 0 0 0 1.04-.975 6.652 6.652 0 0 0 .975-1.825c.247-.687.37-1.467.37-2.34 0-.97-.166-1.716-.5-2.235-.332-.522-.755-.87-1.27-1.04-.38-.124-.974-.186-1.78-.186H11L9.095 16.64"/>
     </g>
 </svg>
index 68e90a9..1601810 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan-invert.png differ
index 8669961..3338bef 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="italic-geor-kan">
-        <path id="geor-kan" d="M15.057 14.663C14.617 16.888 13.223 18 10.88 18 8.96 18 8 17.213 8 15.64c0-.298.036-.624.108-.977.083-.43.245-.836.488-1.217l1.24.605-.206.617c-.055.26-.083.497-.083.712 0 .97.52 1.457 1.564 1.457 1.31 0 2.105-.723 2.387-2.17l.058-.33c.044-.222.066-.426.066-.614 0-.927-.546-1.39-1.64-1.39h-1.115l.248-1.26h1.118c1.203-.004 1.91-.55 2.12-1.64.04-.18.057-.355.057-.52 0-1.144-.9-1.715-2.697-1.715L11.94 6C14.646 6 16 6.877 16 8.627c0 .248-.027.516-.082.803-.204 1.092-1.05 1.824-2.54 2.194l-.033.166c1.23.2 1.845.823 1.845 1.872 0 .21-.025.433-.074.67l-.058.332"/>
+        <path id="geor-kan" d="M15.057 14.663C14.617 16.888 13.223 18 10.88 18 8.96 18 8 17.213 8 15.64c0-.298.036-.624.108-.977.083-.43.245-.836.488-1.217l1.24.605-.206.62c-.055.26-.083.497-.083.71 0 .97.52 1.46 1.564 1.46 1.31 0 2.108-.724 2.39-2.17l.058-.33a3.17 3.17 0 0 0 .066-.615c0-.927-.546-1.39-1.64-1.39H10.87l.247-1.26h1.118c1.203-.004 1.91-.55 2.12-1.64.04-.18.057-.355.057-.52 0-1.144-.9-1.715-2.696-1.715L11.94 6C14.646 6 16 6.877 16 8.627c0 .248-.027.516-.082.803-.204 1.092-1.05 1.824-2.54 2.194l-.033.166c1.23.2 1.845.823 1.845 1.872 0 .21-.025.433-.074.67l-.058.332"/>
     </g>
 </svg>
index 7f9da2a..41be11f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan.png differ
index 65670ef..9a54880 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="italic-geor-kan">
-        <path id="geor-kan" d="M15.057 14.663C14.617 16.888 13.223 18 10.88 18 8.96 18 8 17.213 8 15.64c0-.298.036-.624.108-.977.083-.43.245-.836.488-1.217l1.24.605-.206.617c-.055.26-.083.497-.083.712 0 .97.52 1.457 1.564 1.457 1.31 0 2.105-.723 2.387-2.17l.058-.33c.044-.222.066-.426.066-.614 0-.927-.546-1.39-1.64-1.39h-1.115l.248-1.26h1.118c1.203-.004 1.91-.55 2.12-1.64.04-.18.057-.355.057-.52 0-1.144-.9-1.715-2.697-1.715L11.94 6C14.646 6 16 6.877 16 8.627c0 .248-.027.516-.082.803-.204 1.092-1.05 1.824-2.54 2.194l-.033.166c1.23.2 1.845.823 1.845 1.872 0 .21-.025.433-.074.67l-.058.332"/>
+        <path id="geor-kan" d="M15.057 14.663C14.617 16.888 13.223 18 10.88 18 8.96 18 8 17.213 8 15.64c0-.298.036-.624.108-.977.083-.43.245-.836.488-1.217l1.24.605-.206.62c-.055.26-.083.497-.083.71 0 .97.52 1.46 1.564 1.46 1.31 0 2.108-.724 2.39-2.17l.058-.33a3.17 3.17 0 0 0 .066-.615c0-.927-.546-1.39-1.64-1.39H10.87l.247-1.26h1.118c1.203-.004 1.91-.55 2.12-1.64.04-.18.057-.355.057-.52 0-1.144-.9-1.715-2.696-1.715L11.94 6C14.646 6 16 6.877 16 8.627c0 .248-.027.516-.082.803-.204 1.092-1.05 1.824-2.54 2.194l-.033.166c1.23.2 1.845.823 1.845 1.872 0 .21-.025.433-.074.67l-.058.332"/>
     </g>
 </svg>
index 954bfbf..09e3cfb 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s-invert.png differ
index 9515299..0ed100f 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="italic-s">
-        <path id="s" d="M16.474 6.59l-.302 1.525c-.522-.28-1.04-.488-1.557-.628-.51-.145-1.007-.217-1.487-.217-.935 0-1.68.204-2.23.612-.554.408-.83.95-.83 1.627 0 .37.1.654.302.86.207.192.733.404 1.58.63l.937.233c1.06.274 1.795.622 2.208 1.046.413.42.62 1.007.62 1.766 0 1.167-.46 2.117-1.38 2.85-.913.734-2.12 1.1-3.617 1.1-.615 0-1.232-.06-1.852-.185-.62-.12-1.242-.3-1.867-.55l.314-1.61c.573.356 1.147.625 1.72.806.578.18 1.154.27 1.728.27.976 0 1.76-.216 2.347-.65.59-.434.883-1 .883-1.697 0-.465-.12-.816-.356-1.054-.233-.243-.737-.462-1.512-.658l-.937-.24c-1.07-.28-1.8-.6-2.19-.964-.39-.367-.584-.878-.584-1.534 0-1.152.442-2.094 1.325-2.828.89-.74 2.043-1.108 3.463-1.108.553 0 1.1.05 1.642.147.542.1 1.085.246 1.627.443"/>
+        <path id="s" d="M16.474 6.59l-.302 1.525a7.36 7.36 0 0 0-1.557-.628 5.432 5.432 0 0 0-1.487-.217c-.935 0-1.68.204-2.23.612-.554.408-.83.95-.83 1.627 0 .37.1.65.302.86.207.19.733.4 1.58.63l.937.23c1.06.274 1.795.622 2.208 1.046.413.42.62 1.007.62 1.766 0 1.167-.46 2.117-1.38 2.85-.913.734-2.12 1.1-3.617 1.1-.615 0-1.232-.06-1.852-.185-.62-.12-1.242-.3-1.867-.55l.31-1.61a7.613 7.613 0 0 0 1.72.805c.58.18 1.155.27 1.73.27.976 0 1.76-.216 2.347-.65.59-.434.883-1 .883-1.697 0-.465-.12-.816-.354-1.054-.233-.242-.737-.46-1.512-.657l-.937-.24c-1.07-.28-1.8-.6-2.19-.964-.39-.368-.584-.88-.584-1.535 0-1.152.442-2.094 1.325-2.828.89-.74 2.043-1.108 3.463-1.108.555 0 1.1.05 1.644.146.542.1 1.085.245 1.627.442"/>
     </g>
 </svg>
index 4a7b1fc..030a98e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s.png differ
index 615e5f2..b3fb340 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="italic-s">
-        <path id="s" d="M16.474 6.59l-.302 1.525c-.522-.28-1.04-.488-1.557-.628-.51-.145-1.007-.217-1.487-.217-.935 0-1.68.204-2.23.612-.554.408-.83.95-.83 1.627 0 .37.1.654.302.86.207.192.733.404 1.58.63l.937.233c1.06.274 1.795.622 2.208 1.046.413.42.62 1.007.62 1.766 0 1.167-.46 2.117-1.38 2.85-.913.734-2.12 1.1-3.617 1.1-.615 0-1.232-.06-1.852-.185-.62-.12-1.242-.3-1.867-.55l.314-1.61c.573.356 1.147.625 1.72.806.578.18 1.154.27 1.728.27.976 0 1.76-.216 2.347-.65.59-.434.883-1 .883-1.697 0-.465-.12-.816-.356-1.054-.233-.243-.737-.462-1.512-.658l-.937-.24c-1.07-.28-1.8-.6-2.19-.964-.39-.367-.584-.878-.584-1.534 0-1.152.442-2.094 1.325-2.828.89-.74 2.043-1.108 3.463-1.108.553 0 1.1.05 1.642.147.542.1 1.085.246 1.627.443"/>
+        <path id="s" d="M16.474 6.59l-.302 1.525a7.36 7.36 0 0 0-1.557-.628 5.432 5.432 0 0 0-1.487-.217c-.935 0-1.68.204-2.23.612-.554.408-.83.95-.83 1.627 0 .37.1.65.302.86.207.19.733.4 1.58.63l.937.23c1.06.274 1.795.622 2.208 1.046.413.42.62 1.007.62 1.766 0 1.167-.46 2.117-1.38 2.85-.913.734-2.12 1.1-3.617 1.1-.615 0-1.232-.06-1.852-.185-.62-.12-1.242-.3-1.867-.55l.31-1.61a7.613 7.613 0 0 0 1.72.805c.58.18 1.155.27 1.73.27.976 0 1.76-.216 2.347-.65.59-.434.883-1 .883-1.697 0-.465-.12-.816-.354-1.054-.233-.242-.737-.46-1.512-.657l-.937-.24c-1.07-.28-1.8-.6-2.19-.964-.39-.368-.584-.88-.584-1.535 0-1.152.442-2.094 1.325-2.828.89-.74 2.043-1.108 3.463-1.108.555 0 1.1.05 1.644.146.542.1 1.085.245 1.627.442"/>
     </g>
 </svg>
index 6b0afc0..6ecb10d 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M8 9V8h6v1H8zm2 2v-1h4v1h-4zm8-6h-1v16h1V5zm-2 0H6v13c0 1.7 1.3 3 3 3h7V5z" id="path326"/>
+    <path d="M8 9V8h6v1H8zm2 2v-1h4v1h-4zm8-6h-1v16h1V5zm-2 0H6v13c0 1.7 1.3 3 3 3h7V5z"/>
 </svg>
index 393f19d..84da9fa 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M8 9V8h6v1H8zm2 2v-1h4v1h-4zm8-6h-1v16h1V5zm-2 0H6v13c0 1.7 1.3 3 3 3h7V5z" id="path326"/>
+    <path d="M8 9V8h6v1H8zm2 2v-1h4v1h-4zm8-6h-1v16h1V5zm-2 0H6v13c0 1.7 1.3 3 3 3h7V5z"/>
 </svg>
index fbd3329..906ee6e 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M9.5 4c3 0 5.5 2.5 5.5 5.5 0 1-.3 1.9-.7 2.8L20 18v2h-4v-2h-2v-2h-2l-1.2-1.2c-.4.1-.9.2-1.3.2-3 0-5.5-2.5-5.5-5.5S6.5 4 9.5 4zM8 9c.8 0 1.5-.7 1.5-1.5S8.8 6 8 6s-1.5.7-1.5 1.5S7.2 9 8 9z" id="path336"/>
+    <path d="M9.5 4c3 0 5.5 2.5 5.5 5.5 0 1-.3 1.9-.7 2.8L20 18v2h-4v-2h-2v-2h-2l-1.2-1.2c-.4.1-.9.2-1.3.2-3 0-5.5-2.5-5.5-5.5S6.5 4 9.5 4zM8 9c.8 0 1.5-.7 1.5-1.5S8.8 6 8 6s-1.5.7-1.5 1.5S7.2 9 8 9z"/>
 </svg>
index 8975b66..6dedfe8 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M9.5 4c3 0 5.5 2.5 5.5 5.5 0 1-.3 1.9-.7 2.8L20 18v2h-4v-2h-2v-2h-2l-1.2-1.2c-.4.1-.9.2-1.3.2-3 0-5.5-2.5-5.5-5.5S6.5 4 9.5 4zM8 9c.8 0 1.5-.7 1.5-1.5S8.8 6 8 6s-1.5.7-1.5 1.5S7.2 9 8 9z" id="path336"/>
+    <path d="M9.5 4c3 0 5.5 2.5 5.5 5.5 0 1-.3 1.9-.7 2.8L20 18v2h-4v-2h-2v-2h-2l-1.2-1.2c-.4.1-.9.2-1.3.2-3 0-5.5-2.5-5.5-5.5S6.5 4 9.5 4zM8 9c.8 0 1.5-.7 1.5-1.5S8.8 6 8 6s-1.5.7-1.5 1.5S7.2 9 8 9z"/>
 </svg>
index 84479e8..238ca48 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M3 7v9c0 1.7 1.3 3 3 3h15V7H3zm8 2h2v2h-2V9zm0 3h2v2h-2v-2zM8 9h2v2H8V9zm0 3h2v2H8v-2zm-1 5H6c-.6 0-1-.4-1-1v-1h2v2zm0-3H5v-2h2v2zm0-3H5V9h2v2zm9 6H8v-2h8v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2zm3 6h-2v-2h2v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2z"/>
-    </g>
+    <path d="M3 7v9c0 1.7 1.3 3 3 3h15V7H3zm8 2h2v2h-2V9zm0 3h2v2h-2v-2zM8 9h2v2H8V9zm0 3h2v2H8v-2zm-1 5H6c-.6 0-1-.4-1-1v-1h2v2zm0-3H5v-2h2v2zm0-3H5V9h2v2zm9 6H8v-2h8v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2zm3 6h-2v-2h2v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2z"/>
 </svg>
index 2bb795e..c4c442e 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M3 7v9c0 1.7 1.3 3 3 3h15V7H3zm8 2h2v2h-2V9zm0 3h2v2h-2v-2zM8 9h2v2H8V9zm0 3h2v2H8v-2zm-1 5H6c-.6 0-1-.4-1-1v-1h2v2zm0-3H5v-2h2v2zm0-3H5V9h2v2zm9 6H8v-2h8v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2zm3 6h-2v-2h2v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2z"/>
-    </g>
+    <path d="M3 7v9c0 1.7 1.3 3 3 3h15V7H3zm8 2h2v2h-2V9zm0 3h2v2h-2v-2zM8 9h2v2H8V9zm0 3h2v2H8v-2zm-1 5H6c-.6 0-1-.4-1-1v-1h2v2zm0-3H5v-2h2v2zm0-3H5V9h2v2zm9 6H8v-2h8v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2zm3 6h-2v-2h2v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2z"/>
 </svg>
index 2700729..8248804 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g346">
-        <path d="M21 7v9c0 1.7-1.3 3-3 3H3V7h18zm-8 2h-2v2h2V9zm0 3h-2v2h2v-2zm3-3h-2v2h2V9zm0 3h-2v2h2v-2zm1 5h1c.6 0 1-.4 1-1v-1h-2v2zm0-3h2v-2h-2v2zm0-3h2V9h-2v2zm-9 6h8v-2H8v2zm0-3h2v-2H8v2zm0-3h2V9H8v2zm-3 6h2v-2H5v2zm0-3h2v-2H5v2zm0-3h2V9H5v2z" id="path348"/>
-    </g>
+    <path d="M21 7v9c0 1.7-1.3 3-3 3H3V7h18zm-8 2h-2v2h2V9zm0 3h-2v2h2v-2zm3-3h-2v2h2V9zm0 3h-2v2h2v-2zm1 5h1c.6 0 1-.4 1-1v-1h-2v2zm0-3h2v-2h-2v2zm0-3h2V9h-2v2zm-9 6h8v-2H8v2zm0-3h2v-2H8v2zm0-3h2V9H8v2zm-3 6h2v-2H5v2zm0-3h2v-2H5v2zm0-3h2V9H5v2z"/>
 </svg>
index b7b47cc..b37d7f4 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g346">
-        <path d="M21 7v9c0 1.7-1.3 3-3 3H3V7h18zm-8 2h-2v2h2V9zm0 3h-2v2h2v-2zm3-3h-2v2h2V9zm0 3h-2v2h2v-2zm1 5h1c.6 0 1-.4 1-1v-1h-2v2zm0-3h2v-2h-2v2zm0-3h2V9h-2v2zm-9 6h8v-2H8v2zm0-3h2v-2H8v2zm0-3h2V9H8v2zm-3 6h2v-2H5v2zm0-3h2v-2H5v2zm0-3h2V9H5v2z" id="path348"/>
-    </g>
+    <path d="M21 7v9c0 1.7-1.3 3-3 3H3V7h18zm-8 2h-2v2h2V9zm0 3h-2v2h2v-2zm3-3h-2v2h2V9zm0 3h-2v2h2v-2zm1 5h1c.6 0 1-.4 1-1v-1h-2v2zm0-3h2v-2h-2v2zm0-3h2V9h-2v2zm-9 6h8v-2H8v2zm0-3h2v-2H8v2zm0-3h2V9H8v2zm-3 6h2v-2H5v2zm0-3h2v-2H5v2zm0-3h2V9H5v2z"/>
 </svg>
index 36aaf52..c75d14b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr-invert.png differ
index c67db52..3365bb9 100644 (file)
@@ -2,6 +2,6 @@
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="translation">
         <path id="english" d="M14.34 9l-3.53 10h2.064l.72-2.406h3.624l.72 2.406H20L16.465 9h-2.12zm1.065 1.53L16.75 15h-2.69z"/>
-        <path id="chinese" d="M8.97 4.22c-.43.29-.88.616-1.25.874l.186.312c.14.194.275.393.407.594H4.47v1.47h1.593c.43 1.41 1.11 2.624 2.03 3.624-1.008.664-2.192 1.248-3.624 1.75L4 13c.317.487.714.976 1.03 1.375l.25-.094c1.593-.59 2.91-1.266 4.032-2.06.818.628 1.71 1.158 2.657 1.592l.56-1.624c-.725-.334-1.36-.692-1.905-1.063.284-.28.59-.634.906-1.156.46-.717.777-1.572 1-2.5h1.658V6h-4.063c-.283-.552-.596-1.083-.97-1.53l-.186-.25zM7.72 7.47h3.186c-.32 1.075-.83 1.937-1.53 2.624-.713-.705-1.26-1.568-1.657-2.625zm6.31 5.31l-.467 1.658c.292-.514.577-1.075.812-1.532l-.344-.125z"/>
+        <path id="chinese" d="M8.97 4.22c-.43.29-.88.616-1.25.874l.186.312c.14.194.275.393.407.594H4.47v1.47h1.593c.43 1.41 1.11 2.624 2.03 3.624-1.008.664-2.192 1.248-3.624 1.75L4 13c.317.487.714.976 1.03 1.375l.25-.094c1.593-.59 2.91-1.263 4.032-2.06.818.63 1.71 1.16 2.657 1.595l.56-1.624a13.21 13.21 0 0 1-1.908-1.063c.284-.28.59-.634.906-1.156.46-.716.776-1.57 1-2.5h1.657V6h-4.063c-.283-.552-.596-1.083-.97-1.53l-.186-.25zM7.72 7.47h3.186c-.32 1.075-.83 1.937-1.53 2.624-.713-.705-1.26-1.568-1.657-2.625zm6.31 5.31l-.467 1.658c.292-.514.577-1.075.812-1.532l-.344-.125z"/>
     </g>
 </svg>
index ef61b8b..bdd9abe 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr.png differ
index 4bf074d..4f1fc10 100644 (file)
@@ -2,6 +2,6 @@
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="translation">
         <path id="english" d="M14.34 9l-3.53 10h2.064l.72-2.406h3.624l.72 2.406H20L16.465 9h-2.12zm1.065 1.53L16.75 15h-2.69z"/>
-        <path id="chinese" d="M8.97 4.22c-.43.29-.88.616-1.25.874l.186.312c.14.194.275.393.407.594H4.47v1.47h1.593c.43 1.41 1.11 2.624 2.03 3.624-1.008.664-2.192 1.248-3.624 1.75L4 13c.317.487.714.976 1.03 1.375l.25-.094c1.593-.59 2.91-1.266 4.032-2.06.818.628 1.71 1.158 2.657 1.592l.56-1.624c-.725-.334-1.36-.692-1.905-1.063.284-.28.59-.634.906-1.156.46-.717.777-1.572 1-2.5h1.658V6h-4.063c-.283-.552-.596-1.083-.97-1.53l-.186-.25zM7.72 7.47h3.186c-.32 1.075-.83 1.937-1.53 2.624-.713-.705-1.26-1.568-1.657-2.625zm6.31 5.31l-.467 1.658c.292-.514.577-1.075.812-1.532l-.344-.125z"/>
+        <path id="chinese" d="M8.97 4.22c-.43.29-.88.616-1.25.874l.186.312c.14.194.275.393.407.594H4.47v1.47h1.593c.43 1.41 1.11 2.624 2.03 3.624-1.008.664-2.192 1.248-3.624 1.75L4 13c.317.487.714.976 1.03 1.375l.25-.094c1.593-.59 2.91-1.263 4.032-2.06.818.63 1.71 1.16 2.657 1.595l.56-1.624a13.21 13.21 0 0 1-1.908-1.063c.284-.28.59-.634.906-1.156.46-.716.776-1.57 1-2.5h1.657V6h-4.063c-.283-.552-.596-1.083-.97-1.53l-.186-.25zM7.72 7.47h3.186c-.32 1.075-.83 1.937-1.53 2.624-.713-.705-1.26-1.568-1.657-2.625zm6.31 5.31l-.467 1.658c.292-.514.577-1.075.812-1.532l-.344-.125z"/>
     </g>
 </svg>
index aad12ac..680d726 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl-invert.png differ
index 204f565..ba3770b 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="translation">
-        <path id="english" d="M7.53 9L4 19h2.063l.72-2.406h3.624l.72 2.406h2.062L9.653 9h-2.12zm1.064 1.53L9.938 15H7.25z"/>
-        <path id="chinese" d="M14.594 4.22c-.43.29-.88.616-1.25.874l.187.312c.14.194.276.393.408.594h-3.844v1.47h1.594c.43 1.41 1.11 2.624 2.03 3.624-.662.437-1.413.82-2.25 1.187l.563 1.564c1.11-.48 2.056-1.022 2.908-1.625 1.187.91 2.514 1.63 3.968 2.124l.282.094c.292-.514.577-1.075.812-1.532l-.375-.125c-1.38-.49-2.49-1.052-3.375-1.655.284-.28.59-.634.906-1.156.46-.717.776-1.572 1-2.5h1.657V6H15.75c-.283-.552-.596-1.083-.97-1.53l-.186-.25zm-1.25 3.25h3.187c-.318 1.075-.828 1.937-1.53 2.624-.712-.705-1.26-1.568-1.656-2.625zM9.97 12.874L9.624 13c.196.3.406.594.625.875l-.28-1z"/>
+        <path id="english" d="M7.53 9L4 19h2.063l.72-2.406h3.624l.72 2.406h2.062L9.65 9H7.53zm1.064 1.53L9.938 15H7.25z"/>
+        <path id="chinese" d="M14.594 4.22c-.43.29-.88.616-1.25.874l.187.312c.14.194.28.393.41.594h-3.843v1.47h1.594c.43 1.41 1.11 2.624 2.03 3.624-.662.437-1.413.82-2.25 1.187l.563 1.567a15.882 15.882 0 0 0 2.908-1.625 13.82 13.82 0 0 0 3.97 2.125l.28.094c.293-.514.578-1.075.813-1.532l-.375-.125c-1.38-.49-2.49-1.05-3.375-1.654.284-.28.59-.635.906-1.157.46-.717.775-1.572 1-2.5h1.656V6H15.75c-.283-.552-.596-1.083-.97-1.53l-.186-.25zm-1.25 3.25h3.187c-.315 1.075-.825 1.937-1.53 2.624-.71-.705-1.26-1.568-1.653-2.625zM9.97 12.874L9.624 13c.196.3.406.594.625.875l-.28-1z"/>
     </g>
 </svg>
index 8cd9282..ed64644 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl.png differ
index 9b1ac39..081252e 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="translation">
-        <path id="english" d="M7.53 9L4 19h2.063l.72-2.406h3.624l.72 2.406h2.062L9.653 9h-2.12zm1.064 1.53L9.938 15H7.25z"/>
-        <path id="chinese" d="M14.594 4.22c-.43.29-.88.616-1.25.874l.187.312c.14.194.276.393.408.594h-3.844v1.47h1.594c.43 1.41 1.11 2.624 2.03 3.624-.662.437-1.413.82-2.25 1.187l.563 1.564c1.11-.48 2.056-1.022 2.908-1.625 1.187.91 2.514 1.63 3.968 2.124l.282.094c.292-.514.577-1.075.812-1.532l-.375-.125c-1.38-.49-2.49-1.052-3.375-1.655.284-.28.59-.634.906-1.156.46-.717.776-1.572 1-2.5h1.657V6H15.75c-.283-.552-.596-1.083-.97-1.53l-.186-.25zm-1.25 3.25h3.187c-.318 1.075-.828 1.937-1.53 2.624-.712-.705-1.26-1.568-1.656-2.625zM9.97 12.874L9.624 13c.196.3.406.594.625.875l-.28-1z"/>
+        <path id="english" d="M7.53 9L4 19h2.063l.72-2.406h3.624l.72 2.406h2.062L9.65 9H7.53zm1.064 1.53L9.938 15H7.25z"/>
+        <path id="chinese" d="M14.594 4.22c-.43.29-.88.616-1.25.874l.187.312c.14.194.28.393.41.594h-3.843v1.47h1.594c.43 1.41 1.11 2.624 2.03 3.624-.662.437-1.413.82-2.25 1.187l.563 1.567a15.882 15.882 0 0 0 2.908-1.625 13.82 13.82 0 0 0 3.97 2.125l.28.094c.293-.514.578-1.075.813-1.532l-.375-.125c-1.38-.49-2.49-1.05-3.375-1.654.284-.28.59-.635.906-1.157.46-.717.775-1.572 1-2.5h1.656V6H15.75c-.283-.552-.596-1.083-.97-1.53l-.186-.25zm-1.25 3.25h3.187c-.315 1.075-.825 1.937-1.53 2.624-.71-.705-1.26-1.568-1.653-2.625zM9.97 12.874L9.624 13c.196.3.406.594.625.875l-.28-1z"/>
     </g>
 </svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-ltr-invert.png
new file mode 100644 (file)
index 0000000..e9b226c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-ltr-invert.svg
new file mode 100644 (file)
index 0000000..0ab6bdb
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
+    <path d="M20.8 20h-8.1v-.8c.4 0 .8-.1 1.3-.2s.8-.2.8-.4v-.2c0-.1 0-.2-.1-.3L13.4 15H8.3c-.1.3-.2.6-.4 1-.1.4-.3.7-.4 1-.1.4-.2.7-.2.8v.4c0 .2.2.4.5.6.3.2.9.3 1.7.3v.9H3.4v-.8c.2 0 .5-.1.8-.1.3-.1.5-.1.7-.2.3-.2.5-.4.7-.6.2-.3.4-.6.5-.9.8-2 1.6-3.9 2.4-5.9.8-2 1.7-4.1 2.7-6.5h2.1c1.4 3.3 2.4 6 3.2 7.9.8 1.9 1.4 3.6 2 4.8l.3.6c.1.2.3.3.6.5.2.1.4.2.7.3.3.1.5.1.7.1v.8zM13 14l-2.1-5.3L8.8 14H13z"/>
+</svg>
index 166ce47..4b01d74 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M20.8 20h-8.1v-.8c.4 0 .8-.1 1.3-.2s.8-.2.8-.4v-.2c0-.1 0-.2-.1-.3L13.4 15H8.3c-.1.3-.2.6-.4 1-.1.4-.3.7-.4 1-.1.4-.2.7-.2.8v.4c0 .2.2.4.5.6.3.2.9.3 1.7.3v.9H3.4v-.8c.2 0 .5-.1.8-.1.3-.1.5-.1.7-.2.3-.2.5-.4.7-.6.2-.3.4-.6.5-.9.8-2 1.6-3.9 2.4-5.9.8-2 1.7-4.1 2.7-6.5h2.1c1.4 3.3 2.4 6 3.2 7.9.8 1.9 1.4 3.6 2 4.8l.3.6c.1.2.3.3.6.5.2.1.4.2.7.3.3.1.5.1.7.1v.8zM13 14l-2.1-5.3L8.8 14H13z"/>
-    </g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M20.8 20h-8.1v-.8c.4 0 .8-.1 1.3-.2s.8-.2.8-.4v-.2c0-.1 0-.2-.1-.3L13.4 15H8.3c-.1.3-.2.6-.4 1-.1.4-.3.7-.4 1-.1.4-.2.7-.2.8v.4c0 .2.2.4.5.6.3.2.9.3 1.7.3v.9H3.4v-.8c.2 0 .5-.1.8-.1.3-.1.5-.1.7-.2.3-.2.5-.4.7-.6.2-.3.4-.6.5-.9.8-2 1.6-3.9 2.4-5.9.8-2 1.7-4.1 2.7-6.5h2.1c1.4 3.3 2.4 6 3.2 7.9.8 1.9 1.4 3.6 2 4.8l.3.6c.1.2.3.3.6.5.2.1.4.2.7.3.3.1.5.1.7.1v.8zM13 14l-2.1-5.3L8.8 14H13z"/>
 </svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl-invert.png
new file mode 100644 (file)
index 0000000..e9b226c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl-invert.svg
new file mode 100644 (file)
index 0000000..0ab6bdb
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
+    <path d="M20.8 20h-8.1v-.8c.4 0 .8-.1 1.3-.2s.8-.2.8-.4v-.2c0-.1 0-.2-.1-.3L13.4 15H8.3c-.1.3-.2.6-.4 1-.1.4-.3.7-.4 1-.1.4-.2.7-.2.8v.4c0 .2.2.4.5.6.3.2.9.3 1.7.3v.9H3.4v-.8c.2 0 .5-.1.8-.1.3-.1.5-.1.7-.2.3-.2.5-.4.7-.6.2-.3.4-.6.5-.9.8-2 1.6-3.9 2.4-5.9.8-2 1.7-4.1 2.7-6.5h2.1c1.4 3.3 2.4 6 3.2 7.9.8 1.9 1.4 3.6 2 4.8l.3.6c.1.2.3.3.6.5.2.1.4.2.7.3.3.1.5.1.7.1v.8zM13 14l-2.1-5.3L8.8 14H13z"/>
+</svg>
index 166ce47..4b01d74 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M20.8 20h-8.1v-.8c.4 0 .8-.1 1.3-.2s.8-.2.8-.4v-.2c0-.1 0-.2-.1-.3L13.4 15H8.3c-.1.3-.2.6-.4 1-.1.4-.3.7-.4 1-.1.4-.2.7-.2.8v.4c0 .2.2.4.5.6.3.2.9.3 1.7.3v.9H3.4v-.8c.2 0 .5-.1.8-.1.3-.1.5-.1.7-.2.3-.2.5-.4.7-.6.2-.3.4-.6.5-.9.8-2 1.6-3.9 2.4-5.9.8-2 1.7-4.1 2.7-6.5h2.1c1.4 3.3 2.4 6 3.2 7.9.8 1.9 1.4 3.6 2 4.8l.3.6c.1.2.3.3.6.5.2.1.4.2.7.3.3.1.5.1.7.1v.8zM13 14l-2.1-5.3L8.8 14H13z"/>
-    </g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M20.8 20h-8.1v-.8c.4 0 .8-.1 1.3-.2s.8-.2.8-.4v-.2c0-.1 0-.2-.1-.3L13.4 15H8.3c-.1.3-.2.6-.4 1-.1.4-.3.7-.4 1-.1.4-.2.7-.2.8v.4c0 .2.2.4.5.6.3.2.9.3 1.7.3v.9H3.4v-.8c.2 0 .5-.1.8-.1.3-.1.5-.1.7-.2.3-.2.5-.4.7-.6.2-.3.4-.6.5-.9.8-2 1.6-3.9 2.4-5.9.8-2 1.7-4.1 2.7-6.5h2.1c1.4 3.3 2.4 6 3.2 7.9.8 1.9 1.4 3.6 2 4.8l.3.6c.1.2.3.3.6.5.2.1.4.2.7.3.3.1.5.1.7.1v.8zM13 14l-2.1-5.3L8.8 14H13z"/>
 </svg>
index 9cf9d28..4024b6d 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g3097">
-        <path d="M15.387 4.33c-2.1 0-3.6 1.9-5.1 3.3.2 0 .5-.1.8-.1.5 0 1 .1 1.5.3.8-.8 1.6-1.7 2.8-1.7.6 0 1.3.3 1.8.7 1 1 1 2.6 0 3.6l-2.6 2.6c-.4.4-1.2.7-1.8.7-1.4 0-2.1-.9-2.6-2l-1.3 1.3c.8 1.5 2 2.6 3.8 2.6 1.2 0 2.3-.5 3-1.3l2.6-2.6c.9-.9 1.5-2 1.5-3.3-.2-2.2-2.2-4.1-4.4-4.1zm-4.3 12.1l-.9.9c-.4.4-1.2.7-1.8.7-.6 0-1.3-.3-1.8-.7-1-1-1-2.7 0-3.6l2.6-2.6c.4-.4 1.2-.7 1.8-.7 1.4 0 2.1 1 2.6 2l1.3-1.3c-.8-1.5-2-2.6-3.8-2.6-1.2 0-2.3.5-3 1.3l-2.6 2.6c-1.7 1.7-1.7 4.4 0 6 1.6 1.6 4.4 1.7 5.9 0l1.9-1.9c-.3.1-.6.1-.9.1-.5 0-.9 0-1.3-.2z" id="path3099"/>
-    </g>
+    <path d="M15.387 4.33c-2.1 0-3.6 1.9-5.1 3.3.2 0 .5-.1.8-.1.5 0 1 .1 1.5.3.8-.8 1.6-1.7 2.8-1.7.6 0 1.3.3 1.8.7 1 1 1 2.6 0 3.6l-2.6 2.6c-.4.4-1.2.7-1.8.7-1.4 0-2.1-.9-2.6-2l-1.3 1.3c.8 1.5 2 2.6 3.8 2.6 1.2 0 2.3-.5 3-1.3l2.6-2.6c.9-.9 1.5-2 1.5-3.3-.2-2.2-2.2-4.1-4.4-4.1zm-4.3 12.1l-.9.9c-.4.4-1.2.7-1.8.7-.6 0-1.3-.3-1.8-.7-1-1-1-2.7 0-3.6l2.6-2.6c.4-.4 1.2-.7 1.8-.7 1.4 0 2.1 1 2.6 2l1.3-1.3c-.8-1.5-2-2.6-3.8-2.6-1.2 0-2.3.5-3 1.3l-2.6 2.6c-1.7 1.7-1.7 4.4 0 6 1.6 1.6 4.4 1.7 5.9 0l1.9-1.9c-.3.1-.6.1-.9.1-.5 0-.9 0-1.3-.2z"/>
 </svg>
index dd3df73..aaaee54 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g3097">
-        <path d="M15.387 4.33c-2.1 0-3.6 1.9-5.1 3.3.2 0 .5-.1.8-.1.5 0 1 .1 1.5.3.8-.8 1.6-1.7 2.8-1.7.6 0 1.3.3 1.8.7 1 1 1 2.6 0 3.6l-2.6 2.6c-.4.4-1.2.7-1.8.7-1.4 0-2.1-.9-2.6-2l-1.3 1.3c.8 1.5 2 2.6 3.8 2.6 1.2 0 2.3-.5 3-1.3l2.6-2.6c.9-.9 1.5-2 1.5-3.3-.2-2.2-2.2-4.1-4.4-4.1zm-4.3 12.1l-.9.9c-.4.4-1.2.7-1.8.7-.6 0-1.3-.3-1.8-.7-1-1-1-2.7 0-3.6l2.6-2.6c.4-.4 1.2-.7 1.8-.7 1.4 0 2.1 1 2.6 2l1.3-1.3c-.8-1.5-2-2.6-3.8-2.6-1.2 0-2.3.5-3 1.3l-2.6 2.6c-1.7 1.7-1.7 4.4 0 6 1.6 1.6 4.4 1.7 5.9 0l1.9-1.9c-.3.1-.6.1-.9.1-.5 0-.9 0-1.3-.2z" id="path3099"/>
-    </g>
+    <path d="M15.387 4.33c-2.1 0-3.6 1.9-5.1 3.3.2 0 .5-.1.8-.1.5 0 1 .1 1.5.3.8-.8 1.6-1.7 2.8-1.7.6 0 1.3.3 1.8.7 1 1 1 2.6 0 3.6l-2.6 2.6c-.4.4-1.2.7-1.8.7-1.4 0-2.1-.9-2.6-2l-1.3 1.3c.8 1.5 2 2.6 3.8 2.6 1.2 0 2.3-.5 3-1.3l2.6-2.6c.9-.9 1.5-2 1.5-3.3-.2-2.2-2.2-4.1-4.4-4.1zm-4.3 12.1l-.9.9c-.4.4-1.2.7-1.8.7-.6 0-1.3-.3-1.8-.7-1-1-1-2.7 0-3.6l2.6-2.6c.4-.4 1.2-.7 1.8-.7 1.4 0 2.1 1 2.6 2l1.3-1.3c-.8-1.5-2-2.6-3.8-2.6-1.2 0-2.3.5-3 1.3l-2.6 2.6c-1.7 1.7-1.7 4.4 0 6 1.6 1.6 4.4 1.7 5.9 0l1.9-1.9c-.3.1-.6.1-.9.1-.5 0-.9 0-1.3-.2z"/>
 </svg>
index 9168784..0235bde 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g358">
-        <path d="M9.025 3.6c2.1 0 3.6 1.9 5.1 3.3-.2 0-.5-.1-.8-.1-.5 0-1 .1-1.5.3-.8-.8-1.6-1.7-2.8-1.7-.6 0-1.3.3-1.8.7-1 1-1 2.6 0 3.6l2.6 2.6c.4.4 1.2.7 1.8.7 1.4 0 2.1-.9 2.6-2l1.3 1.3c-.8 1.5-2 2.6-3.8 2.6-1.2 0-2.3-.5-3-1.3l-2.6-2.6c-.9-.9-1.5-2-1.5-3.3.2-2.2 2.2-4.1 4.4-4.1zm4.3 12.1l.9.9c.4.4 1.2.7 1.8.7.6 0 1.3-.3 1.8-.7 1-1 1-2.7 0-3.6l-2.6-2.6c-.4-.4-1.2-.7-1.8-.7-1.4 0-2.1 1-2.6 2l-1.3-1.3c.8-1.5 2-2.6 3.8-2.6 1.2 0 2.3.5 3 1.3l2.6 2.6c1.7 1.7 1.7 4.4 0 6-1.6 1.6-4.4 1.7-5.9 0l-1.9-1.9c.3.1.6.1.9.1.5 0 .9 0 1.3-.2z" id="path360"/>
-    </g>
+    <path d="M9.025 3.6c2.1 0 3.6 1.9 5.1 3.3-.2 0-.5-.1-.8-.1-.5 0-1 .1-1.5.3-.8-.8-1.6-1.7-2.8-1.7-.6 0-1.3.3-1.8.7-1 1-1 2.6 0 3.6l2.6 2.6c.4.4 1.2.7 1.8.7 1.4 0 2.1-.9 2.6-2l1.3 1.3c-.8 1.5-2 2.6-3.8 2.6-1.2 0-2.3-.5-3-1.3l-2.6-2.6c-.9-.9-1.5-2-1.5-3.3.2-2.2 2.2-4.1 4.4-4.1zm4.3 12.1l.9.9c.4.4 1.2.7 1.8.7.6 0 1.3-.3 1.8-.7 1-1 1-2.7 0-3.6l-2.6-2.6c-.4-.4-1.2-.7-1.8-.7-1.4 0-2.1 1-2.6 2l-1.3-1.3c.8-1.5 2-2.6 3.8-2.6 1.2 0 2.3.5 3 1.3l2.6 2.6c1.7 1.7 1.7 4.4 0 6-1.6 1.6-4.4 1.7-5.9 0l-1.9-1.9c.3.1.6.1.9.1.5 0 .9 0 1.3-.2z"/>
 </svg>
index d4c2fd6..82a8e63 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g358">
-        <path d="M9.025 3.6c2.1 0 3.6 1.9 5.1 3.3-.2 0-.5-.1-.8-.1-.5 0-1 .1-1.5.3-.8-.8-1.6-1.7-2.8-1.7-.6 0-1.3.3-1.8.7-1 1-1 2.6 0 3.6l2.6 2.6c.4.4 1.2.7 1.8.7 1.4 0 2.1-.9 2.6-2l1.3 1.3c-.8 1.5-2 2.6-3.8 2.6-1.2 0-2.3-.5-3-1.3l-2.6-2.6c-.9-.9-1.5-2-1.5-3.3.2-2.2 2.2-4.1 4.4-4.1zm4.3 12.1l.9.9c.4.4 1.2.7 1.8.7.6 0 1.3-.3 1.8-.7 1-1 1-2.7 0-3.6l-2.6-2.6c-.4-.4-1.2-.7-1.8-.7-1.4 0-2.1 1-2.6 2l-1.3-1.3c.8-1.5 2-2.6 3.8-2.6 1.2 0 2.3.5 3 1.3l2.6 2.6c1.7 1.7 1.7 4.4 0 6-1.6 1.6-4.4 1.7-5.9 0l-1.9-1.9c.3.1.6.1.9.1.5 0 .9 0 1.3-.2z" id="path360"/>
-    </g>
+    <path d="M9.025 3.6c2.1 0 3.6 1.9 5.1 3.3-.2 0-.5-.1-.8-.1-.5 0-1 .1-1.5.3-.8-.8-1.6-1.7-2.8-1.7-.6 0-1.3.3-1.8.7-1 1-1 2.6 0 3.6l2.6 2.6c.4.4 1.2.7 1.8.7 1.4 0 2.1-.9 2.6-2l1.3 1.3c-.8 1.5-2 2.6-3.8 2.6-1.2 0-2.3-.5-3-1.3l-2.6-2.6c-.9-.9-1.5-2-1.5-3.3.2-2.2 2.2-4.1 4.4-4.1zm4.3 12.1l.9.9c.4.4 1.2.7 1.8.7.6 0 1.3-.3 1.8-.7 1-1 1-2.7 0-3.6l-2.6-2.6c-.4-.4-1.2-.7-1.8-.7-1.4 0-2.1 1-2.6 2l-1.3-1.3c.8-1.5 2-2.6 3.8-2.6 1.2 0 2.3.5 3 1.3l2.6 2.6c1.7 1.7 1.7 4.4 0 6-1.6 1.6-4.4 1.7-5.9 0l-1.9-1.9c.3.1.6.1.9.1.5 0 .9 0 1.3-.2z"/>
 </svg>
index be5bd9f..aebe6f2 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M3 7h12V5H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2zM3 13h12v-2H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2zM3 19h12v-2H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2z" id="path370"/>
+    <path d="M3 7h12V5H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2zM3 13h12v-2H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2zM3 19h12v-2H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2z"/>
 </svg>
index f29a05e..c9c94eb 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M3 7h12V5H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2zM3 13h12v-2H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2zM3 19h12v-2H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2z" id="path370"/>
+    <path d="M3 7h12V5H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2zM3 13h12v-2H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2zM3 19h12v-2H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2z"/>
 </svg>
index d319205..8bec0d5 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M3 7h13V5H3zm0 6h13v-2H3zm0 6h13v-2H3zM18 4h2v4h-1V5h-1zm0 6V9h3v3h-2v1h2v1h-3v-3h2v-1zm3 10h-3v-1h2v-1h-1v-1h1v-1h-2v-1h3z" id="path380"/>
+    <path d="M3 7h13V5H3zm0 6h13v-2H3zm0 6h13v-2H3zM18 4h2v4h-1V5h-1zm0 6V9h3v3h-2v1h2v1h-3v-3h2v-1zm3 10h-3v-1h2v-1h-1v-1h1v-1h-2v-1h3z"/>
 </svg>
index 331dc8d..9ec4801 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M3 7h13V5H3zm0 6h13v-2H3zm0 6h13v-2H3zM18 4h2v4h-1V5h-1zm0 6V9h3v3h-2v1h2v1h-3v-3h2v-1zm3 10h-3v-1h2v-1h-1v-1h1v-1h-2v-1h3z" id="path380"/>
+    <path d="M3 7h13V5H3zm0 6h13v-2H3zm0 6h13v-2H3zM18 4h2v4h-1V5h-1zm0 6V9h3v3h-2v1h2v1h-3v-3h2v-1zm3 10h-3v-1h2v-1h-1v-1h1v-1h-2v-1h3z"/>
 </svg>
index 6e17f59..31fe8ff 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #D11D13 }</style>
-    <g id="g390">
-        <path d="M15 8s0-3-2.5-3S10 8 10 8v1h5zm2 0v1h2v10H9c-1.7 0-3-1.3-3-3V9h2V8s0-5 4.5-5S17 8 17 8z" id="path392"/>
-    </g>
+    <path d="M15 8s0-3-2.5-3S10 8 10 8v1h5zm2 0v1h2v10H9c-1.7 0-3-1.3-3-3V9h2V8s0-5 4.5-5S17 8 17 8z"/>
 </svg>
index fd9359a..03788f1 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g390">
-        <path d="M15 8s0-3-2.5-3S10 8 10 8v1h5zm2 0v1h2v10H9c-1.7 0-3-1.3-3-3V9h2V8s0-5 4.5-5S17 8 17 8z" id="path392"/>
-    </g>
+    <path d="M15 8s0-3-2.5-3S10 8 10 8v1h5zm2 0v1h2v10H9c-1.7 0-3-1.3-3-3V9h2V8s0-5 4.5-5S17 8 17 8z"/>
 </svg>
index 80d3ace..a18b2c4 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g390">
-        <path d="M15 8s0-3-2.5-3S10 8 10 8v1h5zm2 0v1h2v10H9c-1.7 0-3-1.3-3-3V9h2V8s0-5 4.5-5S17 8 17 8z" id="path392"/>
-    </g>
+    <path d="M15 8s0-3-2.5-3S10 8 10 8v1h5zm2 0v1h2v10H9c-1.7 0-3-1.3-3-3V9h2V8s0-5 4.5-5S17 8 17 8z"/>
 </svg>
index 9e88270..79972de 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #D11D13 }</style>
-    <g id="g390">
-        <path d="M10 8s0-3 2.5-3S15 8 15 8v1h-5zM8 8v1H6v10h10c1.7 0 3-1.3 3-3V9h-2V8s0-5-4.5-5S8 8 8 8z" id="path392"/>
-    </g>
+    <path d="M10 8s0-3 2.5-3S15 8 15 8v1h-5zM8 8v1H6v10h10c1.7 0 3-1.3 3-3V9h-2V8s0-5-4.5-5S8 8 8 8z"/>
 </svg>
index bcb3f4f..e3fda47 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g390">
-        <path d="M10 8s0-3 2.5-3S15 8 15 8v1h-5zM8 8v1H6v10h10c1.7 0 3-1.3 3-3V9h-2V8s0-5-4.5-5S8 8 8 8z" id="path392"/>
-    </g>
+    <path d="M10 8s0-3 2.5-3S15 8 15 8v1h-5zM8 8v1H6v10h10c1.7 0 3-1.3 3-3V9h-2V8s0-5-4.5-5S8 8 8 8z"/>
 </svg>
index 21881e9..6c4a3c5 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g390">
-        <path d="M10 8s0-3 2.5-3S15 8 15 8v1h-5zM8 8v1H6v10h10c1.7 0 3-1.3 3-3V9h-2V8s0-5-4.5-5S8 8 8 8z" id="path392"/>
-    </g>
+    <path d="M10 8s0-3 2.5-3S15 8 15 8v1h-5zM8 8v1H6v10h10c1.7 0 3-1.3 3-3V9h-2V8s0-5-4.5-5S8 8 8 8z"/>
 </svg>
index dcbf49e..8b10f25 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M15 14v3l5-4.5L15 8v3H8c0 1.7 1.3 3 3 3h4zm-1-9H4v15h10v-2H6V7h8V5z"/>
-    </g>
+    <path d="M15 14v3l5-4.5L15 8v3H8c0 1.7 1.3 3 3 3h4zm-1-9H4v15h10v-2H6V7h8V5z"/>
 </svg>
index 61c369f..f2be068 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M15 14v3l5-4.5L15 8v3H8c0 1.7 1.3 3 3 3h4zm-1-9H4v15h10v-2H6V7h8V5z"/>
-    </g>
+    <path d="M15 14v3l5-4.5L15 8v3H8c0 1.7 1.3 3 3 3h4zm-1-9H4v15h10v-2H6V7h8V5z"/>
 </svg>
index e953bab..412cd92 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g402">
-        <path d="M9 14v3l-5-4.5L9 8v3h7c0 1.7-1.3 3-3 3H9zm1-9h10v15H10v-2h8V7h-8V5z" id="path404"/>
-    </g>
+    <path d="M9 14v3l-5-4.5L9 8v3h7c0 1.7-1.3 3-3 3H9zm1-9h10v15H10v-2h8V7h-8V5z"/>
 </svg>
index 5cb4687..5f5ebb9 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g402">
-        <path d="M9 14v3l-5-4.5L9 8v3h7c0 1.7-1.3 3-3 3H9zm1-9h10v15H10v-2h8V7h-8V5z" id="path404"/>
-    </g>
+    <path d="M9 14v3l-5-4.5L9 8v3h7c0 1.7-1.3 3-3 3H9zm1-9h10v15H10v-2h8V7h-8V5z"/>
 </svg>
index a59d442..a2dcf4e 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M12 6c-3.9 0-7 3.1-7 7s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7zm0 13c-3.3 0-6-2.7-6-6s2.7-6 6-6 6 2.7 6 6-2.7 6-6 6zm-1.7-4.6c-.7 0-1-.4-1-1.2s.3-1.2 1-1.2c.4 0 .6.2.8.6l.9-.5c-.4-.7-1-1-1.9-1-.6 0-1.1.2-1.5.6s-.6.8-.6 1.5.2 1.2.6 1.6c.4.4.9.6 1.5.6.8 0 1.4-.4 1.9-1.1l-.9-.4c-.2.3-.5.5-.8.5zm4 0c-.7 0-1-.4-1-1.2s.3-1.2 1-1.2c.4 0 .6.2.8.6l.9-.5c-.4-.7-1-1-1.9-1-.6 0-1.1.2-1.5.6s-.6.8-.6 1.5.2 1.2.6 1.6c.4.4.9.6 1.5.6.8 0 1.4-.4 1.9-1.1l-.9-.4c-.2.3-.5.5-.8.5z"/>
-    </g>
+    <path d="M12 6c-3.9 0-7 3.1-7 7s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7zm0 13c-3.3 0-6-2.7-6-6s2.7-6 6-6 6 2.7 6 6-2.7 6-6 6zm-1.7-4.6c-.7 0-1-.4-1-1.2s.3-1.2 1-1.2c.4 0 .6.2.8.6l.9-.5c-.4-.7-1-1-1.9-1-.6 0-1.1.2-1.5.6s-.6.8-.6 1.5.2 1.2.6 1.6c.4.4.9.6 1.5.6.8 0 1.4-.4 1.9-1.1l-.9-.4c-.2.3-.5.5-.8.5zm4 0c-.7 0-1-.4-1-1.2s.3-1.2 1-1.2c.4 0 .6.2.8.6l.9-.5c-.4-.7-1-1-1.9-1-.6 0-1.1.2-1.5.6s-.6.8-.6 1.5.2 1.2.6 1.6c.4.4.9.6 1.5.6.8 0 1.4-.4 1.9-1.1l-.9-.4c-.2.3-.5.5-.8.5z"/>
 </svg>
index 124b210..00af35d 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M12 6c-3.9 0-7 3.1-7 7s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7zm0 13c-3.3 0-6-2.7-6-6s2.7-6 6-6 6 2.7 6 6-2.7 6-6 6zm-1.7-4.6c-.7 0-1-.4-1-1.2s.3-1.2 1-1.2c.4 0 .6.2.8.6l.9-.5c-.4-.7-1-1-1.9-1-.6 0-1.1.2-1.5.6s-.6.8-.6 1.5.2 1.2.6 1.6c.4.4.9.6 1.5.6.8 0 1.4-.4 1.9-1.1l-.9-.4c-.2.3-.5.5-.8.5zm4 0c-.7 0-1-.4-1-1.2s.3-1.2 1-1.2c.4 0 .6.2.8.6l.9-.5c-.4-.7-1-1-1.9-1-.6 0-1.1.2-1.5.6s-.6.8-.6 1.5.2 1.2.6 1.6c.4.4.9.6 1.5.6.8 0 1.4-.4 1.9-1.1l-.9-.4c-.2.3-.5.5-.8.5z"/>
-    </g>
+    <path d="M12 6c-3.9 0-7 3.1-7 7s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7zm0 13c-3.3 0-6-2.7-6-6s2.7-6 6-6 6 2.7 6 6-2.7 6-6 6zm-1.7-4.6c-.7 0-1-.4-1-1.2s.3-1.2 1-1.2c.4 0 .6.2.8.6l.9-.5c-.4-.7-1-1-1.9-1-.6 0-1.1.2-1.5.6s-.6.8-.6 1.5.2 1.2.6 1.6c.4.4.9.6 1.5.6.8 0 1.4-.4 1.9-1.1l-.9-.4c-.2.3-.5.5-.8.5zm4 0c-.7 0-1-.4-1-1.2s.3-1.2 1-1.2c.4 0 .6.2.8.6l.9-.5c-.4-.7-1-1-1.9-1-.6 0-1.1.2-1.5.6s-.6.8-.6 1.5.2 1.2.6 1.6c.4.4.9.6 1.5.6.8 0 1.4-.4 1.9-1.1l-.9-.4c-.2.3-.5.5-.8.5z"/>
 </svg>
index 7be1390..2ae214f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons-invert.png differ
index 40a9ab6..ca6d1d2 100644 (file)
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M15.4 7.8c-2-.9-2.3-2.5-2.4-2.8.1.1 2 1 2 1l-3-5-3 5 2-1s0 .8.6 2.1c.8 1.5 2.2 2.2 2.2 2.2s1.6.7 2.2 1.3l-.7.7-.5-.5-.4 1.8 1.8-.4-.5-.5.7-.7c.9 1 1.5 2.3 1.6 3.8h-1V14l-1.5 1 1.5 1v-.8h1c-.1 1.5-.6 2.8-1.6 3.8l-.7-.7.5-.5-1.8-.4.4 1.8.5-.5.7.7c-1 .9-2.3 1.5-3.8 1.6v-1h.8l-1-1.5-1 1.5h.8v1c-1.5-.1-2.8-.6-3.8-1.6l.7-.7.5.5.4-1.8-1.8.4.5.5-.7.7c-.9-1-1.5-2.3-1.6-3.8h1v.8l1.5-1L7 14v.8H6c.1-1.5.6-2.8 1.6-3.8l.7.7-.5.5 1.8.4-.4-1.8-.5.5-.7-.7-1.5-1.4C5 10.6 4 12.7 4 15c0 4.4 3.6 8 8 8s8-3.6 8-8c0-3.2-1.9-5.9-4.6-7.2z"/>
-        <circle cx="12" cy="15" r="3"/>
-    </g>
+    <path d="M15.4 7.8c-2-.9-2.3-2.5-2.4-2.8.1.1 2 1 2 1l-3-5-3 5 2-1s0 .8.6 2.1c.8 1.5 2.2 2.2 2.2 2.2s1.6.7 2.2 1.3l-.7.7-.5-.5-.4 1.8 1.8-.4-.5-.5.7-.7c.9 1 1.5 2.3 1.6 3.8h-1V14l-1.5 1 1.5 1v-.8h1c-.1 1.5-.6 2.8-1.6 3.8l-.7-.7.5-.5-1.8-.4.4 1.8.5-.5.7.7c-1 .9-2.3 1.5-3.8 1.6v-1h.8l-1-1.5-1 1.5h.8v1c-1.5-.1-2.8-.6-3.8-1.6l.7-.7.5.5.4-1.8-1.8.4.5.5-.7.7c-.9-1-1.5-2.3-1.6-3.8h1v.8l1.5-1L7 14v.8H6c.1-1.5.6-2.8 1.6-3.8l.7.7-.5.5 1.8.4-.4-1.8-.5.5-.7-.7-1.5-1.4A7.99 7.99 0 0 0 4 15c0 4.4 3.6 8 8 8s8-3.6 8-8c0-3.2-1.9-5.9-4.6-7.2z"/>
+    <circle cx="12" cy="15" r="3"/>
 </svg>
index df8600b..cde6003 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons.png differ
index c195d4c..f2492ce 100644 (file)
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M15.4 7.8c-2-.9-2.3-2.5-2.4-2.8.1.1 2 1 2 1l-3-5-3 5 2-1s0 .8.6 2.1c.8 1.5 2.2 2.2 2.2 2.2s1.6.7 2.2 1.3l-.7.7-.5-.5-.4 1.8 1.8-.4-.5-.5.7-.7c.9 1 1.5 2.3 1.6 3.8h-1V14l-1.5 1 1.5 1v-.8h1c-.1 1.5-.6 2.8-1.6 3.8l-.7-.7.5-.5-1.8-.4.4 1.8.5-.5.7.7c-1 .9-2.3 1.5-3.8 1.6v-1h.8l-1-1.5-1 1.5h.8v1c-1.5-.1-2.8-.6-3.8-1.6l.7-.7.5.5.4-1.8-1.8.4.5.5-.7.7c-.9-1-1.5-2.3-1.6-3.8h1v.8l1.5-1L7 14v.8H6c.1-1.5.6-2.8 1.6-3.8l.7.7-.5.5 1.8.4-.4-1.8-.5.5-.7-.7-1.5-1.4C5 10.6 4 12.7 4 15c0 4.4 3.6 8 8 8s8-3.6 8-8c0-3.2-1.9-5.9-4.6-7.2z"/>
-        <circle cx="12" cy="15" r="3"/>
-    </g>
+    <path d="M15.4 7.8c-2-.9-2.3-2.5-2.4-2.8.1.1 2 1 2 1l-3-5-3 5 2-1s0 .8.6 2.1c.8 1.5 2.2 2.2 2.2 2.2s1.6.7 2.2 1.3l-.7.7-.5-.5-.4 1.8 1.8-.4-.5-.5.7-.7c.9 1 1.5 2.3 1.6 3.8h-1V14l-1.5 1 1.5 1v-.8h1c-.1 1.5-.6 2.8-1.6 3.8l-.7-.7.5-.5-1.8-.4.4 1.8.5-.5.7.7c-1 .9-2.3 1.5-3.8 1.6v-1h.8l-1-1.5-1 1.5h.8v1c-1.5-.1-2.8-.6-3.8-1.6l.7-.7.5.5.4-1.8-1.8.4.5.5-.7.7c-.9-1-1.5-2.3-1.6-3.8h1v.8l1.5-1L7 14v.8H6c.1-1.5.6-2.8 1.6-3.8l.7.7-.5.5 1.8.4-.4-1.8-.5.5-.7-.7-1.5-1.4A7.99 7.99 0 0 0 4 15c0 4.4 3.6 8 8 8s8-3.6 8-8c0-3.2-1.9-5.9-4.6-7.2z"/>
+    <circle cx="12" cy="15" r="3"/>
 </svg>
index a21fb46..f6c8e74 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M22.3 6.3c0 .2 0 .3-.1.3-.7.1-1.2.5-1.6 1.1-.1.2-.2.4-.3.7l-4.6 10.1c-.1.2-.2.3-.2.3s-.1.1-.2.1c-.2 0-.4-.1-.5-.4L12.2 13l-2.8 5.5c-.1.3-.3.4-.5.4s-.4-.1-.5-.4L4.1 8.4c-.3-.8-.6-1.2-.8-1.4-.2-.2-.5-.3-1-.4-.1-.1-.1-.2-.1-.3 0-.2 0-.3.1-.3h4.3c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.6.1-1 .2-1.1.4-.1.2 0 .6.3 1.2l3.6 8.2h.1l2.2-4.4L10 8.4c-.3-.7-.6-1.2-.8-1.4s-.5-.3-.9-.4c-.1-.1-.1-.2-.1-.3 0-.2 0-.3.1-.3h3.6c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.4.1-.6.2-.6.4s.1.6.4 1.2l1 1.9 1-1.9c.3-.6.5-.9.5-1.1 0-.2 0-.3-.1-.4-.1-.1-.3-.1-.5-.1l-.1-.3c0-.2 0-.3.1-.3h3c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.5.1-.8.2-1.1.5-.3.3-.6.7-.8 1.3l-1.3 2.8 2.5 5.2h.1l3.7-8.1c.3-.5.3-.9.2-1.2-.1-.3-.5-.4-1.1-.5-.1-.1-.1-.2-.1-.3s0-.3.1-.3h3.7c-.2.1-.2.2-.2.3z"/>
-    </g>
+    <path d="M22.3 6.3c0 .2 0 .3-.1.3-.7.1-1.2.5-1.6 1.1-.1.2-.2.4-.3.7l-4.6 10.1c-.1.2-.2.3-.2.3s-.1.1-.2.1c-.2 0-.4-.1-.5-.4L12.2 13l-2.8 5.5c-.1.3-.3.4-.5.4s-.4-.1-.5-.4L4.1 8.4c-.3-.8-.6-1.2-.8-1.4-.2-.2-.5-.3-1-.4-.1-.1-.1-.2-.1-.3 0-.2 0-.3.1-.3h4.3c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.6.1-1 .2-1.1.4-.1.2 0 .6.3 1.2l3.6 8.2h.1l2.2-4.4L10 8.4c-.3-.7-.6-1.2-.8-1.4s-.5-.3-.9-.4c-.1-.1-.1-.2-.1-.3 0-.2 0-.3.1-.3h3.6c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.4.1-.6.2-.6.4s.1.6.4 1.2l1 1.9 1-1.9c.3-.6.5-.9.5-1.1 0-.2 0-.3-.1-.4-.1-.1-.3-.1-.5-.1l-.1-.3c0-.2 0-.3.1-.3h3c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.5.1-.8.2-1.1.5-.3.3-.6.7-.8 1.3l-1.3 2.8 2.5 5.2h.1l3.7-8.1c.3-.5.3-.9.2-1.2-.1-.3-.5-.4-1.1-.5-.1-.1-.1-.2-.1-.3s0-.3.1-.3h3.7c-.2.1-.2.2-.2.3z"/>
 </svg>
index 587780c..9208f3b 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M22.3 6.3c0 .2 0 .3-.1.3-.7.1-1.2.5-1.6 1.1-.1.2-.2.4-.3.7l-4.6 10.1c-.1.2-.2.3-.2.3s-.1.1-.2.1c-.2 0-.4-.1-.5-.4L12.2 13l-2.8 5.5c-.1.3-.3.4-.5.4s-.4-.1-.5-.4L4.1 8.4c-.3-.8-.6-1.2-.8-1.4-.2-.2-.5-.3-1-.4-.1-.1-.1-.2-.1-.3 0-.2 0-.3.1-.3h4.3c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.6.1-1 .2-1.1.4-.1.2 0 .6.3 1.2l3.6 8.2h.1l2.2-4.4L10 8.4c-.3-.7-.6-1.2-.8-1.4s-.5-.3-.9-.4c-.1-.1-.1-.2-.1-.3 0-.2 0-.3.1-.3h3.6c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.4.1-.6.2-.6.4s.1.6.4 1.2l1 1.9 1-1.9c.3-.6.5-.9.5-1.1 0-.2 0-.3-.1-.4-.1-.1-.3-.1-.5-.1l-.1-.3c0-.2 0-.3.1-.3h3c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.5.1-.8.2-1.1.5-.3.3-.6.7-.8 1.3l-1.3 2.8 2.5 5.2h.1l3.7-8.1c.3-.5.3-.9.2-1.2-.1-.3-.5-.4-1.1-.5-.1-.1-.1-.2-.1-.3s0-.3.1-.3h3.7c-.2.1-.2.2-.2.3z"/>
-    </g>
+    <path d="M22.3 6.3c0 .2 0 .3-.1.3-.7.1-1.2.5-1.6 1.1-.1.2-.2.4-.3.7l-4.6 10.1c-.1.2-.2.3-.2.3s-.1.1-.2.1c-.2 0-.4-.1-.5-.4L12.2 13l-2.8 5.5c-.1.3-.3.4-.5.4s-.4-.1-.5-.4L4.1 8.4c-.3-.8-.6-1.2-.8-1.4-.2-.2-.5-.3-1-.4-.1-.1-.1-.2-.1-.3 0-.2 0-.3.1-.3h4.3c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.6.1-1 .2-1.1.4-.1.2 0 .6.3 1.2l3.6 8.2h.1l2.2-4.4L10 8.4c-.3-.7-.6-1.2-.8-1.4s-.5-.3-.9-.4c-.1-.1-.1-.2-.1-.3 0-.2 0-.3.1-.3h3.6c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.4.1-.6.2-.6.4s.1.6.4 1.2l1 1.9 1-1.9c.3-.6.5-.9.5-1.1 0-.2 0-.3-.1-.4-.1-.1-.3-.1-.5-.1l-.1-.3c0-.2 0-.3.1-.3h3c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.5.1-.8.2-1.1.5-.3.3-.6.7-.8 1.3l-1.3 2.8 2.5 5.2h.1l3.7-8.1c.3-.5.3-.9.2-1.2-.1-.3-.5-.4-1.1-.5-.1-.1-.1-.2-.1-.3s0-.3.1-.3h3.7c-.2.1-.2.2-.2.3z"/>
 </svg>
index 442891a..3e09163 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M9 6l6-2 6 2v15l-6-2-6 2-6-2V4l6 2zm6.3 12.1l4.7 1.5V6.7L15 5v12.9l.3.2zM4 18.3L9 20V7.1L8.7 7 4 5.4v12.9z" id="path424"/>
+    <path d="M9 6l6-2 6 2v15l-6-2-6 2-6-2V4l6 2zm6.3 12.1l4.7 1.5V6.7L15 5v12.9l.3.2zM4 18.3L9 20V7.1L8.7 7 4 5.4v12.9z"/>
 </svg>
index 36a5b24..835781d 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M9 6l6-2 6 2v15l-6-2-6 2-6-2V4l6 2zm6.3 12.1l4.7 1.5V6.7L15 5v12.9l.3.2zM4 18.3L9 20V7.1L8.7 7 4 5.4v12.9z" id="path424"/>
+    <path d="M9 6l6-2 6 2v15l-6-2-6 2-6-2V4l6 2zm6.3 12.1l4.7 1.5V6.7L15 5v12.9l.3.2zM4 18.3L9 20V7.1L8.7 7 4 5.4v12.9z"/>
 </svg>
index 42d8e7c..2315072 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M19 12c0-3.9-3.1-7-7-7s-7 3.1-7 7c0 1.4.4 2.6 1.1 3.7L12 23l5.9-7.3c.7-1.1 1.1-2.3 1.1-3.7zm-7 4c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4z" id="path4"/>
+    <path d="M19 12c0-3.9-3.1-7-7-7s-7 3.1-7 7c0 1.4.4 2.6 1.1 3.7L12 23l5.9-7.3c.7-1.1 1.1-2.3 1.1-3.7zm-7 4c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4z"/>
 </svg>
index 5310f82..f1fa246 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M19 12c0-3.9-3.1-7-7-7s-7 3.1-7 7c0 1.4.4 2.6 1.1 3.7L12 23l5.9-7.3c.7-1.1 1.1-2.3 1.1-3.7zm-7 4c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4z" id="path4"/>
+    <path d="M19 12c0-3.9-3.1-7-7-7s-7 3.1-7 7c0 1.4.4 2.6 1.1 3.7L12 23l5.9-7.3c.7-1.1 1.1-2.3 1.1-3.7zm-7 4c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4z"/>
 </svg>
index ded3fd1..59814e7 100644 (file)
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g434">
-        <g id="g436">
-            <path d="M24 4h-4V0h-2v4h-4v2h4v4h2V6h4z" id="path438"/>
-        </g>
-    </g>
-    <path d="M18 11h-1V7.1l-.1-.1H13V5.1c-.3-.1-.7-.1-1-.1-3.9 0-7 3.1-7 7 0 1.4.4 2.6 1.1 3.7L12 23l5.9-7.3c.7-1.1 1.1-2.3 1.1-3.7 0-.3 0-.7-.1-1H18zm-6 5c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4z" id="path440"/>
+    <path d="M24 4h-4V0h-2v4h-4v2h4v4h2V6h4z"/>
+    <path d="M18 11h-1V7.1l-.1-.1H13V5.1c-.3-.1-.7-.1-1-.1-3.9 0-7 3.1-7 7 0 1.4.4 2.6 1.1 3.7L12 23l5.9-7.3c.7-1.1 1.1-2.3 1.1-3.7 0-.3 0-.7-.1-1H18zm-6 5c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4z"/>
 </svg>
index a1b024e..d84970f 100644 (file)
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g434">
-        <g id="g436">
-            <path d="M24 4h-4V0h-2v4h-4v2h4v4h2V6h4z" id="path438"/>
-        </g>
-    </g>
-    <path d="M18 11h-1V7.1l-.1-.1H13V5.1c-.3-.1-.7-.1-1-.1-3.9 0-7 3.1-7 7 0 1.4.4 2.6 1.1 3.7L12 23l5.9-7.3c.7-1.1 1.1-2.3 1.1-3.7 0-.3 0-.7-.1-1H18zm-6 5c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4z" id="path440"/>
+    <path d="M24 4h-4V0h-2v4h-4v2h4v4h2V6h4z"/>
+    <path d="M18 11h-1V7.1l-.1-.1H13V5.1c-.3-.1-.7-.1-1-.1-3.9 0-7 3.1-7 7 0 1.4.4 2.6 1.1 3.7L12 23l5.9-7.3c.7-1.1 1.1-2.3 1.1-3.7 0-.3 0-.7-.1-1H18zm-6 5c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4z"/>
 </svg>
index 537d914..973bfc2 100644 (file)
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g434">
-        <g id="g436">
-            <path d="M0 4h4V0h2v4h4v2H6v4H4V6H0z" id="path438"/>
-        </g>
-    </g>
-    <path d="M6 11h1V7.1l.1-.1H11V5.1c.3-.1.7-.1 1-.1 3.9 0 7 3.1 7 7 0 1.4-.4 2.6-1.1 3.7L12 23l-5.9-7.3C5.4 14.6 5 13.4 5 12c0-.3 0-.7.1-1H6zm6 5c2.2 0 4-1.8 4-4s-1.8-4-4-4-4 1.8-4 4 1.8 4 4 4z" id="path440"/>
+    <path d="M0 4h4V0h2v4h4v2H6v4H4V6H0z"/>
+    <path d="M6 11h1V7.1l.1-.1H11V5.1c.3-.1.7-.1 1-.1 3.9 0 7 3.1 7 7 0 1.4-.4 2.6-1.1 3.7L12 23l-5.9-7.3C5.4 14.6 5 13.4 5 12c0-.3 0-.7.1-1H6zm6 5c2.2 0 4-1.8 4-4s-1.8-4-4-4-4 1.8-4 4 1.8 4 4 4z"/>
 </svg>
index eb92036..8f35458 100644 (file)
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g434">
-        <g id="g436">
-            <path d="M0 4h4V0h2v4h4v2H6v4H4V6H0z" id="path438"/>
-        </g>
-    </g>
-    <path d="M6 11h1V7.1l.1-.1H11V5.1c.3-.1.7-.1 1-.1 3.9 0 7 3.1 7 7 0 1.4-.4 2.6-1.1 3.7L12 23l-5.9-7.3C5.4 14.6 5 13.4 5 12c0-.3 0-.7.1-1H6zm6 5c2.2 0 4-1.8 4-4s-1.8-4-4-4-4 1.8-4 4 1.8 4 4 4z" id="path440"/>
+    <path d="M0 4h4V0h2v4h4v2H6v4H4V6H0z"/>
+    <path d="M6 11h1V7.1l.1-.1H11V5.1c.3-.1.7-.1 1-.1 3.9 0 7 3.1 7 7 0 1.4-.4 2.6-1.1 3.7L12 23l-5.9-7.3C5.4 14.6 5 13.4 5 12c0-.3 0-.7.1-1H6zm6 5c2.2 0 4-1.8 4-4s-1.8-4-4-4-4 1.8-4 4 1.8 4 4 4z"/>
 </svg>
index 1081b4c..cd287e4 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="menu">
-        <path id="lines" d="M6 15h12c.553 0 1 .447 1 1v1c0 .553-.447 1-1 1H6c-.553 0-1-.447-1-1v-1c0-.553.447-1 1-1zm-1-4v1c0 .553.447 1 1 1h12c.553 0 1-.447 1-1v-1c0-.553-.447-1-1-1H6c-.553 0-1 .447-1 1zm0-5v1c0 .553.447 1 1 1h12c.553 0 1-.447 1-1V6c0-.553-.447-1-1-1H6c-.553 0-1 .447-1 1z"/>
+        <path id="lines" d="M6 15h12a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1zm-1-4v1a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1H6a1 1 0 0 0-1 1zm0-5v1a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1H6a1 1 0 0 0-1 1z"/>
     </g>
 </svg>
index ce25178..a33c21c 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="menu">
-        <path id="lines" d="M6 15h12c.553 0 1 .447 1 1v1c0 .553-.447 1-1 1H6c-.553 0-1-.447-1-1v-1c0-.553.447-1 1-1zm-1-4v1c0 .553.447 1 1 1h12c.553 0 1-.447 1-1v-1c0-.553-.447-1-1-1H6c-.553 0-1 .447-1 1zm0-5v1c0 .553.447 1 1 1h12c.553 0 1-.447 1-1V6c0-.553-.447-1-1-1H6c-.553 0-1 .447-1 1z"/>
+        <path id="lines" d="M6 15h12a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1zm-1-4v1a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1H6a1 1 0 0 0-1 1zm0-5v1a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1H6a1 1 0 0 0-1 1z"/>
     </g>
 </svg>
index c212285..300e4df 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M21 9c0-1.7-1.3-3-3-3H3v3l9 4 9-4zM3 11v6c0 1.7 1.3 3 3 3h15v-9l-9 4-9-4z"/>
-    </g>
+    <path d="M21 9c0-1.7-1.3-3-3-3H3v3l9 4 9-4zM3 11v6c0 1.7 1.3 3 3 3h15v-9l-9 4-9-4z"/>
 </svg>
index 18387e1..842d312 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M21 9c0-1.7-1.3-3-3-3H3v3l9 4 9-4zM3 11v6c0 1.7 1.3 3 3 3h15v-9l-9 4-9-4z"/>
-    </g>
+    <path d="M21 9c0-1.7-1.3-3-3-3H3v3l9 4 9-4zM3 11v6c0 1.7 1.3 3 3 3h15v-9l-9 4-9-4z"/>
 </svg>
index 684b304..629ddac 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g450">
-        <path d="M3 9c0-1.7 1.3-3 3-3h15v3l-9 4-9-4zm18 2v6c0 1.7-1.3 3-3 3H3v-9l9 4 9-4z" id="path452"/>
-    </g>
+    <path d="M3 9c0-1.7 1.3-3 3-3h15v3l-9 4-9-4zm18 2v6c0 1.7-1.3 3-3 3H3v-9l9 4 9-4z"/>
 </svg>
index ff61048..0a22c75 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g450">
-        <path d="M3 9c0-1.7 1.3-3 3-3h15v3l-9 4-9-4zm18 2v6c0 1.7-1.3 3-3 3H3v-9l9 4 9-4z" id="path452"/>
-    </g>
+    <path d="M3 9c0-1.7 1.3-3 3-3h15v3l-9 4-9-4zm18 2v6c0 1.7-1.3 3-3 3H3v-9l9 4 9-4z"/>
 </svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/moon-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/moon-invert.png
new file mode 100644 (file)
index 0000000..576c531
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/moon-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/moon-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/moon-invert.svg
new file mode 100644 (file)
index 0000000..0c27ce7
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
+    <path d="M19.1 17.5c-3.3 1.4-7.1-.2-8.5-3.5-1.4-3.3.2-7.1 3.5-8.5.2-.1.5-.2.7-.3-1.6-.4-3.2-.3-4.8.4C6 7.3 4 12 5.7 16c1.7 4.1 6.4 6 10.5 4.3 1.7-.7 3-1.9 3.8-3.4-.3.3-.6.4-.9.6z"/>
+</svg>
index 45b0050..bdbf234 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <path d="M19.1 17.5c-3.3 1.4-7.1-.2-8.5-3.5-1.4-3.3.2-7.1 3.5-8.5.2-.1.5-.2.7-.3-1.6-.4-3.2-.3-4.8.4C6 7.3 4 12 5.7 16c1.7 4.1 6.4 6 10.5 4.3 1.7-.7 3-1.9 3.8-3.4-.3.3-.6.4-.9.6z"/>
 </svg>
index 9c859e4..1067738 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="move-rtl">
-        <path id="arrow" d="M15.065 17.786l-5.302-5.303 5.302-5.302-1.415-1.41-6.714 6.717L13.65 19.2z"/>
+        <path id="arrow" d="M15.065 17.786l-5.302-5.303 5.302-5.302-1.415-1.41-6.714 6.72 6.714 6.71z"/>
     </g>
 </svg>
index 35b6375..ce5b444 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="move-rtl">
-        <path id="arrow" d="M15.065 17.786l-5.302-5.303 5.302-5.302-1.415-1.41-6.714 6.717L13.65 19.2z"/>
+        <path id="arrow" d="M15.065 17.786l-5.302-5.303 5.302-5.302-1.415-1.41-6.714 6.72 6.714 6.71z"/>
     </g>
 </svg>
index 9febfff..18e4118 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g4">
-        <path d="M12 5l2.5 2.5L11 11c-1.2 1.2-1.2 2.8 0 4l5.5-5.5L19 12V5h-7zm5 12H8c-.6 0-1-.4-1-1V7h3L8 5H5v11c0 1.7 1.3 3 3 3h11v-3l-2-2v3z" id="path6"/>
-    </g>
+    <path d="M12 5l2.5 2.5L11 11c-1.2 1.2-1.2 2.8 0 4l5.5-5.5L19 12V5h-7zm5 12H8c-.6 0-1-.4-1-1V7h3L8 5H5v11c0 1.7 1.3 3 3 3h11v-3l-2-2v3z"/>
 </svg>
index 02e24f6..2d19a78 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g4">
-        <path d="M12 5l2.5 2.5L11 11c-1.2 1.2-1.2 2.8 0 4l5.5-5.5L19 12V5h-7zm5 12H8c-.6 0-1-.4-1-1V7h3L8 5H5v11c0 1.7 1.3 3 3 3h11v-3l-2-2v3z" id="path6"/>
-    </g>
+    <path d="M12 5l2.5 2.5L11 11c-1.2 1.2-1.2 2.8 0 4l5.5-5.5L19 12V5h-7zm5 12H8c-.6 0-1-.4-1-1V7h3L8 5H5v11c0 1.7 1.3 3 3 3h11v-3l-2-2v3z"/>
 </svg>
index e72ecf5..e357be6 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g462">
-        <path d="M12 5L9.5 7.5 13 11c1.2 1.2 1.2 2.8 0 4L7.5 9.5 5 12V5h7zM7 17h9c.6 0 1-.4 1-1V7h-3l2-2h3v11c0 1.7-1.3 3-3 3H5v-3l2-2v3z" id="path464"/>
-    </g>
+    <path d="M12 5L9.5 7.5 13 11c1.2 1.2 1.2 2.8 0 4L7.5 9.5 5 12V5h7zM7 17h9c.6 0 1-.4 1-1V7h-3l2-2h3v11c0 1.7-1.3 3-3 3H5v-3l2-2v3z"/>
 </svg>
index 16ad8b4..133442e 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g462">
-        <path d="M12 5L9.5 7.5 13 11c1.2 1.2 1.2 2.8 0 4L7.5 9.5 5 12V5h7zM7 17h9c.6 0 1-.4 1-1V7h-3l2-2h3v11c0 1.7-1.3 3-3 3H5v-3l2-2v3z" id="path464"/>
-    </g>
+    <path d="M12 5L9.5 7.5 13 11c1.2 1.2 1.2 2.8 0 4L7.5 9.5 5 12V5h7zM7 17h9c.6 0 1-.4 1-1V7h-3l2-2h3v11c0 1.7-1.3 3-3 3H5v-3l2-2v3z"/>
 </svg>
index e0c1784..8b4ab65 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="line_return">
-        <path d="M17.8 5.7c-.5 0-.9.2-1.2.5s-.5.7-.5 1.2v4.3H11v-4l-6 5.5 6 5.5v-4h8v-9h-1.2z"/>
-    </g>
+    <path d="M17.8 5.7c-.5 0-.9.2-1.2.5s-.5.7-.5 1.2v4.3H11v-4l-6 5.5 6 5.5v-4h8v-9h-1.2z" id="line_return"/>
 </svg>
index 1d654eb..a7e5b12 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="line_return">
-        <path d="M17.8 5.7c-.5 0-.9.2-1.2.5s-.5.7-.5 1.2v4.3H11v-4l-6 5.5 6 5.5v-4h8v-9h-1.2z"/>
-    </g>
+    <path d="M17.8 5.7c-.5 0-.9.2-1.2.5s-.5.7-.5 1.2v4.3H11v-4l-6 5.5 6 5.5v-4h8v-9h-1.2z" id="line_return"/>
 </svg>
index da6982b..2642261 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="line_return">
-        <path d="M6.2 5.7c.5 0 .9.2 1.2.5.3.3.5.7.5 1.2v4.3H13v-4l6 5.5-6 5.5v-4H5v-9h1.2z"/>
-    </g>
+    <path d="M6.2 5.7c.5 0 .9.2 1.2.5.3.3.5.7.5 1.2v4.3H13v-4l6 5.5-6 5.5v-4H5v-9h1.2z" id="line_return"/>
 </svg>
index 63e5aa1..40752fa 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="line_return">
-        <path d="M6.2 5.7c.5 0 .9.2 1.2.5.3.3.5.7.5 1.2v4.3H13v-4l6 5.5-6 5.5v-4H5v-9h1.2z"/>
-    </g>
+    <path d="M6.2 5.7c.5 0 .9.2 1.2.5.3.3.5.7.5 1.2v4.3H13v-4l6 5.5-6 5.5v-4H5v-9h1.2z" id="line_return"/>
 </svg>
index 71c59ef..778810c 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M19 7v12c.6 0 1-.4 1-1V9h1v9c0 1.1-.9 2-2 2H4V7h15zm-9 11h7v-1h-7v1zm0-2h7v-1h-7v1zm0-2h7v-1h-7v1zm-4 4h3v-5H6v5zm0-7h11V9H6v2z" id="path474"/>
+    <path d="M19 7v12c.6 0 1-.4 1-1V9h1v9c0 1.1-.9 2-2 2H4V7h15zm-9 11h7v-1h-7v1zm0-2h7v-1h-7v1zm0-2h7v-1h-7v1zm-4 4h3v-5H6v5zm0-7h11V9H6v2z"/>
 </svg>
index 2c4a321..f9d4e55 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M19 7v12c.6 0 1-.4 1-1V9h1v9c0 1.1-.9 2-2 2H4V7h15zm-9 11h7v-1h-7v1zm0-2h7v-1h-7v1zm0-2h7v-1h-7v1zm-4 4h3v-5H6v5zm0-7h11V9H6v2z" id="path474"/>
+    <path d="M19 7v12c.6 0 1-.4 1-1V9h1v9c0 1.1-.9 2-2 2H4V7h15zm-9 11h7v-1h-7v1zm0-2h7v-1h-7v1zm0-2h7v-1h-7v1zm-4 4h3v-5H6v5zm0-7h11V9H6v2z"/>
 </svg>
index e82e168..b541ca5 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="noWikiText-rtl">
-        <path d="M15 13l2 2V5h-3v2h1zM3 3L2 4l1 1v14h3v-2H5V7l2 2v10h3v-2H9v-6l6 6h-1v2h3l3 3 1-1-3-3zm7 4V5H7l2 2zm8-2v2h1v10l2 2V5z"/>
-    </g>
+    <path d="M15 13l2 2V5h-3v2h1zM3 3L2 4l1 1v14h3v-2H5V7l2 2v10h3v-2H9v-6l6 6h-1v2h3l3 3 1-1-3-3zm7 4V5H7l2 2zm8-2v2h1v10l2 2V5z" id="noWikiText-rtl"/>
 </svg>
index 22c04ca..2dfa2c7 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="noWikiText-rtl">
-        <path d="M15 13l2 2V5h-3v2h1zM3 3L2 4l1 1v14h3v-2H5V7l2 2v10h3v-2H9v-6l6 6h-1v2h3l3 3 1-1-3-3zm7 4V5H7l2 2zm8-2v2h1v10l2 2V5z"/>
-    </g>
+    <path d="M15 13l2 2V5h-3v2h1zM3 3L2 4l1 1v14h3v-2H5V7l2 2v10h3v-2H9v-6l6 6h-1v2h3l3 3 1-1-3-3zm7 4V5H7l2 2zm8-2v2h1v10l2 2V5z" id="noWikiText-rtl"/>
 </svg>
index 5011541..9ebd6a9 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="noWikiText-rtl">
-        <path d="M9 13l-2 2V5h3v2H9zM21 3l1 1-1 1v14h-3v-2h1V7l-2 2v10h-3v-2h1v-6l-6 6h1v2H7l-3 3-1-1 3-3zm-7 4V5h3l-2 2zM6 5v2H5v10l-2 2V5z"/>
-    </g>
+    <path d="M9 13l-2 2V5h3v2H9zM21 3l1 1-1 1v14h-3v-2h1V7l-2 2v10h-3v-2h1v-6l-6 6h1v2H7l-3 3-1-1 3-3zm-7 4V5h3l-2 2zM6 5v2H5v10l-2 2V5z" id="noWikiText-rtl"/>
 </svg>
index d717265..4f275fd 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="noWikiText-rtl">
-        <path d="M9 13l-2 2V5h3v2H9zM21 3l1 1-1 1v14h-3v-2h1V7l-2 2v10h-3v-2h1v-6l-6 6h1v2H7l-3 3-1-1 3-3zm-7 4V5h3l-2 2zM6 5v2H5v10l-2 2V5z"/>
-    </g>
+    <path d="M9 13l-2 2V5h3v2H9zM21 3l1 1-1 1v14h-3v-2h1V7l-2 2v10h-3v-2h1v-6l-6 6h1v2H7l-3 3-1-1 3-3zm-7 4V5h3l-2 2zM6 5v2H5v10l-2 2V5z" id="noWikiText-rtl"/>
 </svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/notBright-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/notBright-invert.png
new file mode 100644 (file)
index 0000000..2be7397
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/notBright-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/notBright-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/notBright-invert.svg
new file mode 100644 (file)
index 0000000..871c204
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
+    <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8z"/>
+</svg>
index dedbc2d..af87ff9 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8z"/>
 </svg>
index ce1a278..8d1d3af 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/notice-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/notice-invert.png differ
index 386ccc2..6ea2ad6 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" id="svg3116"><style>* { fill: #FFFFFF }</style>
-    <g id="alert">
-        <path d="M12 18c-3.314 0-6-2.686-6-6s2.686-6 6-6 6 2.686 6 6-2.686 6-6 6zm-1-5h2V8h-2zm0 3h2v-2h-2z" id="path3119"/>
-    </g>
+    <path d="M12 18a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm-1-5h2V8h-2zm0 3h2v-2h-2z" id="alert"/>
 </svg>
index 7d27f8e..a57e2bf 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/notice.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/notice.png differ
index 9334b50..8dc4fec 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" id="svg3116">
-    <g id="alert">
-        <path d="M12 18c-3.314 0-6-2.686-6-6s2.686-6 6-6 6 2.686 6 6-2.686 6-6 6zm-1-5h2V8h-2zm0 3h2v-2h-2z" id="path3119"/>
-    </g>
+    <path d="M12 18a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm-1-5h2V8h-2zm0 3h2v-2h-2z" id="alert"/>
 </svg>
index 5385f32..f95bb00 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><style>* { fill: #FFFFFF }</style>
-    <g id="ongoing-conversation" fill-rule="evenodd">
-        <path d="M17.8 18.6H2.5l2.7-2.7V6h15.3v9.9c0 1.53-1.17 2.7-2.7 2.7zm-7.542-4.95c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405-.27-.27-.405-.607-.405-.945 0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945zm4.05 0c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405-.27-.27-.405-.607-.405-.945 0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945zm4.05 0c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405-.27-.27-.405-.607-.405-.945 0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945z"/>
-    </g>
+    <path d="M17.8 18.6H2.5l2.7-2.7V6h15.3v9.9c0 1.53-1.17 2.7-2.7 2.7zm-7.542-4.95c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405a1.332 1.332 0 0 1-.405-.945c0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945zm4.05 0c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405a1.332 1.332 0 0 1-.405-.945c0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945zm4.05 0c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405a1.332 1.332 0 0 1-.405-.945c0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945z" id="ongoing-conversation" fill-rule="evenodd"/>
 </svg>
index 10390cd..7b02ae0 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><style>* { fill: #347BFF }</style>
-    <g id="ongoing-conversation" fill-rule="evenodd">
-        <path d="M17.8 18.6H2.5l2.7-2.7V6h15.3v9.9c0 1.53-1.17 2.7-2.7 2.7zm-7.542-4.95c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405-.27-.27-.405-.607-.405-.945 0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945zm4.05 0c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405-.27-.27-.405-.607-.405-.945 0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945zm4.05 0c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405-.27-.27-.405-.607-.405-.945 0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945z"/>
-    </g>
+    <path d="M17.8 18.6H2.5l2.7-2.7V6h15.3v9.9c0 1.53-1.17 2.7-2.7 2.7zm-7.542-4.95c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405a1.332 1.332 0 0 1-.405-.945c0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945zm4.05 0c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405a1.332 1.332 0 0 1-.405-.945c0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945zm4.05 0c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405a1.332 1.332 0 0 1-.405-.945c0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945z" id="ongoing-conversation" fill-rule="evenodd"/>
 </svg>
index 5d4b3ac..658809d 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
-    <g id="ongoing-conversation" fill-rule="evenodd">
-        <path d="M17.8 18.6H2.5l2.7-2.7V6h15.3v9.9c0 1.53-1.17 2.7-2.7 2.7zm-7.542-4.95c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405-.27-.27-.405-.607-.405-.945 0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945zm4.05 0c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405-.27-.27-.405-.607-.405-.945 0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945zm4.05 0c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405-.27-.27-.405-.607-.405-.945 0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945z"/>
-    </g>
+    <path d="M17.8 18.6H2.5l2.7-2.7V6h15.3v9.9c0 1.53-1.17 2.7-2.7 2.7zm-7.542-4.95c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405a1.332 1.332 0 0 1-.405-.945c0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945zm4.05 0c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405a1.332 1.332 0 0 1-.405-.945c0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945zm4.05 0c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405a1.332 1.332 0 0 1-.405-.945c0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945z" id="ongoing-conversation" fill-rule="evenodd"/>
 </svg>
index dd93100..f471ce7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl-invert.png differ
index 451f247..5b1b067 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><style>* { fill: #FFFFFF }</style>
-    <g id="ongoing-conversation" fill-rule="evenodd">
-        <path d="M5.2 18.6h15.3l-2.7-2.7V6H2.5v9.9c0 1.53 1.17 2.7 2.7 2.7zm7.542-4.95c0 .405.135.675.405.945.27.27.607.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945-.27-.27-.608-.405-.945-.405-.338 0-.675.135-.945.405-.27.27-.405.607-.405.945zm-4.05 0c0 .405.135.675.405.945.27.27.608.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945-.27-.27-.608-.405-.945-.405-.338 0-.675.135-.945.405-.27.27-.405.608-.405.945zm-4.05 0c0 .405.135.675.405.945.27.27.608.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945-.27-.27-.607-.405-.945-.405-.337 0-.675.135-.945.405-.27.27-.405.608-.405.945z"/>
-    </g>
+    <path d="M5.2 18.6h15.3l-2.7-2.7V6H2.5v9.9c0 1.53 1.17 2.7 2.7 2.7zm7.542-4.95c0 .405.135.675.405.945.27.27.607.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945a1.334 1.334 0 0 0-.945-.405c-.338 0-.675.135-.945.405-.27.27-.405.607-.405.945zm-4.05 0c0 .405.135.675.405.945.27.27.608.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945a1.334 1.334 0 0 0-.945-.405c-.338 0-.675.135-.945.405-.27.27-.405.608-.405.945zm-4.05 0c0 .405.135.675.405.945.27.27.608.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945a1.332 1.332 0 0 0-.945-.405c-.337 0-.675.135-.945.405-.27.27-.405.608-.405.945z" id="ongoing-conversation" fill-rule="evenodd"/>
 </svg>
index 1afd904..eea07b4 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl-progressive.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl-progressive.png differ
index b9494a0..0d0c46e 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><style>* { fill: #347BFF }</style>
-    <g id="ongoing-conversation" fill-rule="evenodd">
-        <path d="M5.2 18.6h15.3l-2.7-2.7V6H2.5v9.9c0 1.53 1.17 2.7 2.7 2.7zm7.542-4.95c0 .405.135.675.405.945.27.27.607.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945-.27-.27-.608-.405-.945-.405-.338 0-.675.135-.945.405-.27.27-.405.607-.405.945zm-4.05 0c0 .405.135.675.405.945.27.27.608.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945-.27-.27-.608-.405-.945-.405-.338 0-.675.135-.945.405-.27.27-.405.608-.405.945zm-4.05 0c0 .405.135.675.405.945.27.27.608.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945-.27-.27-.607-.405-.945-.405-.337 0-.675.135-.945.405-.27.27-.405.608-.405.945z"/>
-    </g>
+    <path d="M5.2 18.6h15.3l-2.7-2.7V6H2.5v9.9c0 1.53 1.17 2.7 2.7 2.7zm7.542-4.95c0 .405.135.675.405.945.27.27.607.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945a1.334 1.334 0 0 0-.945-.405c-.338 0-.675.135-.945.405-.27.27-.405.607-.405.945zm-4.05 0c0 .405.135.675.405.945.27.27.608.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945a1.334 1.334 0 0 0-.945-.405c-.338 0-.675.135-.945.405-.27.27-.405.608-.405.945zm-4.05 0c0 .405.135.675.405.945.27.27.608.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945a1.332 1.332 0 0 0-.945-.405c-.337 0-.675.135-.945.405-.27.27-.405.608-.405.945z" id="ongoing-conversation" fill-rule="evenodd"/>
 </svg>
index 9a22767..7b01a27 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl.png differ
index 9e5b7f6..648ce55 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
-    <g id="ongoing-conversation" fill-rule="evenodd">
-        <path d="M5.2 18.6h15.3l-2.7-2.7V6H2.5v9.9c0 1.53 1.17 2.7 2.7 2.7zm7.542-4.95c0 .405.135.675.405.945.27.27.607.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945-.27-.27-.608-.405-.945-.405-.338 0-.675.135-.945.405-.27.27-.405.607-.405.945zm-4.05 0c0 .405.135.675.405.945.27.27.608.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945-.27-.27-.608-.405-.945-.405-.338 0-.675.135-.945.405-.27.27-.405.608-.405.945zm-4.05 0c0 .405.135.675.405.945.27.27.608.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945-.27-.27-.607-.405-.945-.405-.337 0-.675.135-.945.405-.27.27-.405.608-.405.945z"/>
-    </g>
+    <path d="M5.2 18.6h15.3l-2.7-2.7V6H2.5v9.9c0 1.53 1.17 2.7 2.7 2.7zm7.542-4.95c0 .405.135.675.405.945.27.27.607.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945a1.334 1.334 0 0 0-.945-.405c-.338 0-.675.135-.945.405-.27.27-.405.607-.405.945zm-4.05 0c0 .405.135.675.405.945.27.27.608.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945a1.334 1.334 0 0 0-.945-.405c-.338 0-.675.135-.945.405-.27.27-.405.608-.405.945zm-4.05 0c0 .405.135.675.405.945.27.27.608.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945a1.332 1.332 0 0 0-.945-.405c-.337 0-.675.135-.945.405-.27.27-.405.608-.405.945z" id="ongoing-conversation" fill-rule="evenodd"/>
 </svg>
index 499f8ac..1695dae 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M10 8h9v2h-9V8zm0 3h9v2h-9v-2zm0 3h6v2h-6v-2zm11-8H3V4h18v2zm0 14H3v-2h18v2zM3 12l5 4V8l-5 4z"/>
-    </g>
+    <path d="M10 8h9v2h-9V8zm0 3h9v2h-9v-2zm0 3h6v2h-6v-2zm11-8H3V4h18v2zm0 14H3v-2h18v2zM3 12l5 4V8l-5 4z"/>
 </svg>
index d718154..c004db0 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M10 8h9v2h-9V8zm0 3h9v2h-9v-2zm0 3h6v2h-6v-2zm11-8H3V4h18v2zm0 14H3v-2h18v2zM3 12l5 4V8l-5 4z"/>
-    </g>
+    <path d="M10 8h9v2h-9V8zm0 3h9v2h-9v-2zm0 3h6v2h-6v-2zm11-8H3V4h18v2zm0 14H3v-2h18v2zM3 12l5 4V8l-5 4z"/>
 </svg>
index 597d1b7..d3e794f 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g496">
-        <path d="M14 8H5v2h9V8zm0 3H5v2h9v-2zm0 3H8v2h6v-2zM3 6h18V4H3v2zm0 14h18v-2H3v2zm18-8l-5 4V8l5 4z" id="path498"/>
-    </g>
+    <path d="M14 8H5v2h9V8zm0 3H5v2h9v-2zm0 3H8v2h6v-2zM3 6h18V4H3v2zm0 14h18v-2H3v2zm18-8l-5 4V8l5 4z"/>
 </svg>
index b1a437f..a71bfdc 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g496">
-        <path d="M14 8H5v2h9V8zm0 3H5v2h9v-2zm0 3H8v2h6v-2zM3 6h18V4H3v2zm0 14h18v-2H3v2zm18-8l-5 4V8l5 4z" id="path498"/>
-    </g>
+    <path d="M14 8H5v2h9V8zm0 3H5v2h9v-2zm0 3H8v2h6v-2zM3 6h18V4H3v2zm0 14h18v-2H3v2zm18-8l-5 4V8l5 4z"/>
 </svg>
index 374312e..965697b 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm-2 12V9l6 4-6 4z"/>
-    </g>
+    <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm-2 12V9l6 4-6 4z"/>
 </svg>
index 669e49d..82a16a4 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm-2 12V9l6 4-6 4z"/>
-    </g>
+    <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm-2 12V9l6 4-6 4z"/>
 </svg>
index 6fc4664..67143de 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g520">
-        <path d="M12 5c4.4 0 8 3.6 8 8s-3.6 8-8 8-8-3.6-8-8 3.6-8 8-8zm2 12V9l-6 4 6 4z" id="path522"/>
-    </g>
+    <path d="M12 5c4.4 0 8 3.6 8 8s-3.6 8-8 8-8-3.6-8-8 3.6-8 8-8zm2 12V9l-6 4 6 4z"/>
 </svg>
index 456fb4c..dae95c4 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g520">
-        <path d="M12 5c4.4 0 8 3.6 8 8s-3.6 8-8 8-8-3.6-8-8 3.6-8 8-8zm2 12V9l-6 4 6 4z" id="path522"/>
-    </g>
+    <path d="M12 5c4.4 0 8 3.6 8 8s-3.6 8-8 8-8-3.6-8-8 3.6-8 8-8zm2 12V9l-6 4 6 4z"/>
 </svg>
index 19d6b2e..d431703 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M6 8h1V4h10v4h4v6c0 1.7-1.3 3-3 3h-1v3H7v-3H3v-6c0-1.7 1.3-3 3-3zm10-3H8v3h8V5zM8 19h8v-6H8v6z" id="path532"/>
+    <path d="M6 8h1V4h10v4h4v6c0 1.7-1.3 3-3 3h-1v3H7v-3H3v-6c0-1.7 1.3-3 3-3zm10-3H8v3h8V5zM8 19h8v-6H8v6z"/>
 </svg>
index 79fd4e1..d6188eb 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M6 8h1V4h10v4h4v6c0 1.7-1.3 3-3 3h-1v3H7v-3H3v-6c0-1.7 1.3-3 3-3zm10-3H8v3h8V5zM8 19h8v-6H8v6z" id="path532"/>
+    <path d="M6 8h1V4h10v4h4v6c0 1.7-1.3 3-3 3h-1v3H7v-3H3v-6c0-1.7 1.3-3 3-3zm10-3H8v3h8V5zM8 19h8v-6H8v6z"/>
 </svg>
index 4e53969..601d880 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M18 9.9c-.7 0-1.4.3-1.8.9V6h-4c.2-.4.4-.8.4-1.2 0-1.2-1-2.2-2.2-2.2-1.3-.1-2.3.9-2.3 2.2 0 .4.2.8.4 1.2H4.1v3.6l.6-.1c1.4 0 2.5 1.1 2.5 2.5s-1.1 2.5-2.5 2.5c-.2 0-.4 0-.6-.1V18H9c-.5.4-.9 1-.9 1.8 0 1.2 1 2.2 2.3 2.2 1.2 0 2.2-1 2.2-2.2 0-.7-.3-1.4-.9-1.8h4.5v-4.5c.4.5 1 .9 1.8.9 1.2 0 2.2-1 2.2-2.2 0-1.3-1-2.3-2.2-2.3z" id="path542"/>
+    <path d="M18 9.9c-.7 0-1.4.3-1.8.9V6h-4c.2-.4.4-.8.4-1.2 0-1.2-1-2.2-2.2-2.2-1.3-.1-2.3.9-2.3 2.2 0 .4.2.8.4 1.2H4.1v3.6l.6-.1c1.4 0 2.5 1.1 2.5 2.5s-1.1 2.5-2.5 2.5c-.2 0-.4 0-.6-.1V18H9c-.5.4-.9 1-.9 1.8 0 1.2 1 2.2 2.3 2.2 1.2 0 2.2-1 2.2-2.2 0-.7-.3-1.4-.9-1.8h4.5v-4.5c.4.5 1 .9 1.8.9 1.2 0 2.2-1 2.2-2.2 0-1.3-1-2.3-2.2-2.3z"/>
 </svg>
index 0ea25d7..fb9d338 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M18 9.9c-.7 0-1.4.3-1.8.9V6h-4c.2-.4.4-.8.4-1.2 0-1.2-1-2.2-2.2-2.2-1.3-.1-2.3.9-2.3 2.2 0 .4.2.8.4 1.2H4.1v3.6l.6-.1c1.4 0 2.5 1.1 2.5 2.5s-1.1 2.5-2.5 2.5c-.2 0-.4 0-.6-.1V18H9c-.5.4-.9 1-.9 1.8 0 1.2 1 2.2 2.3 2.2 1.2 0 2.2-1 2.2-2.2 0-.7-.3-1.4-.9-1.8h4.5v-4.5c.4.5 1 .9 1.8.9 1.2 0 2.2-1 2.2-2.2 0-1.3-1-2.3-2.2-2.3z" id="path542"/>
+    <path d="M18 9.9c-.7 0-1.4.3-1.8.9V6h-4c.2-.4.4-.8.4-1.2 0-1.2-1-2.2-2.2-2.2-1.3-.1-2.3.9-2.3 2.2 0 .4.2.8.4 1.2H4.1v3.6l.6-.1c1.4 0 2.5 1.1 2.5 2.5s-1.1 2.5-2.5 2.5c-.2 0-.4 0-.6-.1V18H9c-.5.4-.9 1-.9 1.8 0 1.2 1 2.2 2.3 2.2 1.2 0 2.2-1 2.2-2.2 0-.7-.3-1.4-.9-1.8h4.5v-4.5c.4.5 1 .9 1.8.9 1.2 0 2.2-1 2.2-2.2 0-1.3-1-2.3-2.2-2.3z"/>
 </svg>
index 715a526..909fb8e 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M6.3 9.9c.7 0 1.4.3 1.8.9V6h4c-.2-.4-.4-.8-.4-1.2 0-1.2 1-2.2 2.2-2.2 1.3-.1 2.3.9 2.3 2.2 0 .4-.2.8-.4 1.2h4.4v3.6l-.6-.1c-1.4 0-2.5 1.1-2.5 2.5s1.1 2.5 2.5 2.5c.2 0 .4 0 .6-.1V18h-4.9c.5.4.9 1 .9 1.8 0 1.2-1 2.2-2.3 2.2-1.2 0-2.2-1-2.2-2.2 0-.7.3-1.4.9-1.8H8.1v-4.5c-.4.5-1 .9-1.8.9-1.2 0-2.2-1-2.2-2.2 0-1.3 1-2.3 2.2-2.3z" id="path542"/>
+    <path d="M6.3 9.9c.7 0 1.4.3 1.8.9V6h4c-.2-.4-.4-.8-.4-1.2 0-1.2 1-2.2 2.2-2.2 1.3-.1 2.3.9 2.3 2.2 0 .4-.2.8-.4 1.2h4.4v3.6l-.6-.1c-1.4 0-2.5 1.1-2.5 2.5s1.1 2.5 2.5 2.5c.2 0 .4 0 .6-.1V18h-4.9c.5.4.9 1 .9 1.8 0 1.2-1 2.2-2.3 2.2-1.2 0-2.2-1-2.2-2.2 0-.7.3-1.4.9-1.8H8.1v-4.5c-.4.5-1 .9-1.8.9-1.2 0-2.2-1-2.2-2.2 0-1.3 1-2.3 2.2-2.3z"/>
 </svg>
index e606425..1d48308 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M6.3 9.9c.7 0 1.4.3 1.8.9V6h4c-.2-.4-.4-.8-.4-1.2 0-1.2 1-2.2 2.2-2.2 1.3-.1 2.3.9 2.3 2.2 0 .4-.2.8-.4 1.2h4.4v3.6l-.6-.1c-1.4 0-2.5 1.1-2.5 2.5s1.1 2.5 2.5 2.5c.2 0 .4 0 .6-.1V18h-4.9c.5.4.9 1 .9 1.8 0 1.2-1 2.2-2.3 2.2-1.2 0-2.2-1-2.2-2.2 0-.7.3-1.4.9-1.8H8.1v-4.5c-.4.5-1 .9-1.8.9-1.2 0-2.2-1-2.2-2.2 0-1.3 1-2.3 2.2-2.3z" id="path542"/>
+    <path d="M6.3 9.9c.7 0 1.4.3 1.8.9V6h4c-.2-.4-.4-.8-.4-1.2 0-1.2 1-2.2 2.2-2.2 1.3-.1 2.3.9 2.3 2.2 0 .4-.2.8-.4 1.2h4.4v3.6l-.6-.1c-1.4 0-2.5 1.1-2.5 2.5s1.1 2.5 2.5 2.5c.2 0 .4 0 .6-.1V18h-4.9c.5.4.9 1 .9 1.8 0 1.2-1 2.2-2.3 2.2-1.2 0-2.2-1-2.2-2.2 0-.7.3-1.4.9-1.8H8.1v-4.5c-.4.5-1 .9-1.8.9-1.2 0-2.2-1-2.2-2.2 0-1.3 1-2.3 2.2-2.3z"/>
 </svg>
index 472bb4f..4ddc796 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr-invert.png differ
index 9304bdb..36a8442 100644 (file)
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g3226">
-        <path d="M18.1 8.65c.2-.1.5-.2.6-.5.1-.3.2-.5.2-.9v-.7c-1 .2-1.5.2-2.6.6-.7.4-1.2.9-1.7 1.4-.5.5-1.9 2.6-1.9 5.8v3.1h4.7c.9 0 1.6-.7 1.6-1.6v-4.7h-3.1s.1-.7.6-1.4c.5-.5 1-.9 1.6-1.1zm-11.2-.1c-.5.5-1.9 2.9-1.9 6v2.9h4.7c.9 0 1.6-.7 1.6-1.6v-4.7H8.2s.1-.7.6-1.4c.5-.5 1-.9 1.6-1.2.2-.1.5-.2.6-.5.1-.3.2-.5.2-.9v-.6c-1 .2-1.5.2-2.6.6-.6.4-1.2.9-1.7 1.4z" id="path3228"/>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
+    <g id="quotes">
+        <path id="quote" d="M6.9 8.4c-.446.55-1.974 2.6-1.9 5.7V17h4.7c.9 0 1.6-.7 1.6-1.6V11H8.2s.05-.74.6-1.4c.453-.543 1-.9 1.6-1.2.2-.1.47-.212.6-.5.127-.282.2-.5.2-.9v-.6c-1 .2-1.744.197-2.6.6-.856.403-1.272.873-1.7 1.4z"/>
     </g>
+    <use transform="translate(8)" id="quote2" width="24" height="24" xlink:href="#quote"/>
 </svg>
index 72c7e3d..b458c39 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr.png differ
index 4885f43..dc366b7 100644 (file)
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g3226">
-        <path d="M18.1 8.65c.2-.1.5-.2.6-.5.1-.3.2-.5.2-.9v-.7c-1 .2-1.5.2-2.6.6-.7.4-1.2.9-1.7 1.4-.5.5-1.9 2.6-1.9 5.8v3.1h4.7c.9 0 1.6-.7 1.6-1.6v-4.7h-3.1s.1-.7.6-1.4c.5-.5 1-.9 1.6-1.1zm-11.2-.1c-.5.5-1.9 2.9-1.9 6v2.9h4.7c.9 0 1.6-.7 1.6-1.6v-4.7H8.2s.1-.7.6-1.4c.5-.5 1-.9 1.6-1.2.2-.1.5-.2.6-.5.1-.3.2-.5.2-.9v-.6c-1 .2-1.5.2-2.6.6-.6.4-1.2.9-1.7 1.4z" id="path3228"/>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24">
+    <g id="quotes">
+        <path id="quote" d="M6.9 8.4c-.446.55-1.974 2.6-1.9 5.7V17h4.7c.9 0 1.6-.7 1.6-1.6V11H8.2s.05-.74.6-1.4c.453-.543 1-.9 1.6-1.2.2-.1.47-.212.6-.5.127-.282.2-.5.2-.9v-.6c-1 .2-1.744.197-2.6.6-.856.403-1.272.873-1.7 1.4z"/>
     </g>
+    <use transform="translate(8)" id="quote2" width="24" height="24" xlink:href="#quote"/>
 </svg>
index 47fd687..c4e9c67 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl-invert.png differ
index f5dcce5..5b48b87 100644 (file)
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M5.9 8.65c-.2-.1-.5-.2-.6-.5-.1-.3-.2-.5-.2-.9v-.7c1 .2 1.5.2 2.6.6.7.4 1.2.9 1.7 1.4.5.5 1.9 2.6 1.9 5.8v3.1H6.6c-.9 0-1.6-.7-1.6-1.6v-4.7h3.1s-.1-.7-.6-1.4c-.5-.5-1-.9-1.6-1.1zm11.2-.1c.5.5 1.9 2.9 1.9 6v2.9h-4.7c-.9 0-1.6-.7-1.6-1.6v-4.7h3.1s-.1-.7-.6-1.4c-.5-.5-1-.9-1.6-1.2-.2-.1-.5-.2-.6-.5-.1-.3-.2-.5-.2-.9v-.6c1 .2 1.5.2 2.6.6.6.4 1.2.9 1.7 1.4z"/>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
+    <g id="quotes">
+        <path id="quote" d="M17.1 8.4c.446.55 1.9 2.6 1.9 5.7V17h-4.7c-.9 0-1.6-.7-1.6-1.6V11h3.1s-.05-.74-.6-1.4c-.453-.543-1-.9-1.6-1.2-.2-.1-.47-.212-.6-.5-.127-.282-.2-.5-.2-.9v-.6c1 .2 1.744.197 2.6.6.856.403 1.272.873 1.7 1.4z"/>
     </g>
+    <use transform="translate(-8)" id="quote2" width="24" height="24" xlink:href="#quote"/>
 </svg>
index 2b4c8d7..6e8917f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl.png differ
index 91fe300..e652b31 100644 (file)
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M5.9 8.65c-.2-.1-.5-.2-.6-.5-.1-.3-.2-.5-.2-.9v-.7c1 .2 1.5.2 2.6.6.7.4 1.2.9 1.7 1.4.5.5 1.9 2.6 1.9 5.8v3.1H6.6c-.9 0-1.6-.7-1.6-1.6v-4.7h3.1s-.1-.7-.6-1.4c-.5-.5-1-.9-1.6-1.1zm11.2-.1c.5.5 1.9 2.9 1.9 6v2.9h-4.7c-.9 0-1.6-.7-1.6-1.6v-4.7h3.1s-.1-.7-.6-1.4c-.5-.5-1-.9-1.6-1.2-.2-.1-.5-.2-.6-.5-.1-.3-.2-.5-.2-.9v-.6c1 .2 1.5.2 2.6.6.6.4 1.2.9 1.7 1.4z"/>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24">
+    <g id="quotes">
+        <path id="quote" d="M17.1 8.4c.446.55 1.9 2.6 1.9 5.7V17h-4.7c-.9 0-1.6-.7-1.6-1.6V11h3.1s-.05-.74-.6-1.4c-.453-.543-1-.9-1.6-1.2-.2-.1-.47-.212-.6-.5-.127-.282-.2-.5-.2-.9v-.6c1 .2 1.744.197 2.6.6.856.403 1.272.873 1.7 1.4z"/>
     </g>
+    <use transform="translate(-8)" id="quote2" width="24" height="24" xlink:href="#quote"/>
 </svg>
index 1f7862e..b33bc95 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr-invert.png differ
index b08305e..d9e2e06 100644 (file)
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g4">
-        <path d="M3.5 8.6C2.9 9.3 1 12 1 16v4h6c1.1 0 2-.9 2-2v-6H5s.1-.9.8-1.8c.6-.7 1.3-1.2 2.1-1.5.3-.1.6-.3.8-.6.2-.3.3-.7.3-1.1V6c-1.3.2-1.9.2-3.3.8-.8.5-1.6 1.1-2.2 1.8zM19 5V1h-2v4h-4v2h4v4h2V7h4V5zm-4 7s.1-.9.8-1.8l.2-.2V8h-1.9l-.6.6C12.9 9.3 11 12 11 16v4h6c1.1 0 2-.9 2-2v-6h-4z" id="path6"/>
+    <g id="quotes-add">
+        <path id="quote" d="M5.9 10.4c-.446.55-1.974 2.6-1.9 5.7V19h4.7c.9 0 1.593-.7 1.6-1.6V13H7.2s.05-.74.6-1.4c.453-.543 1-.9 1.6-1.2.2-.1.47-.212.6-.5.127-.282.2-.5.2-.9v-.6c-1 .2-1.744.197-2.6.6-.856.403-1.272.873-1.7 1.4z"/>
+        <path id="quote2" d="M15 9.344c-.476.32-.78.677-1.094 1.062A8.76 8.76 0 0 0 12 16.094V19h4.688a1.6 1.6 0 0 0 1.625-1.594V13H15V9.344z"/>
+        <path id="add" d="M18 6V2h-2v4h-4v2h4v4h2V8h4V6z"/>
     </g>
 </svg>
index 7fd4754..39d68bd 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr.png differ
index bacec22..6704c51 100644 (file)
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g4">
-        <path d="M3.5 8.6C2.9 9.3 1 12 1 16v4h6c1.1 0 2-.9 2-2v-6H5s.1-.9.8-1.8c.6-.7 1.3-1.2 2.1-1.5.3-.1.6-.3.8-.6.2-.3.3-.7.3-1.1V6c-1.3.2-1.9.2-3.3.8-.8.5-1.6 1.1-2.2 1.8zM19 5V1h-2v4h-4v2h4v4h2V7h4V5zm-4 7s.1-.9.8-1.8l.2-.2V8h-1.9l-.6.6C12.9 9.3 11 12 11 16v4h6c1.1 0 2-.9 2-2v-6h-4z" id="path6"/>
+    <g id="quotes-add">
+        <path id="quote" d="M5.9 10.4c-.446.55-1.974 2.6-1.9 5.7V19h4.7c.9 0 1.593-.7 1.6-1.6V13H7.2s.05-.74.6-1.4c.453-.543 1-.9 1.6-1.2.2-.1.47-.212.6-.5.127-.282.2-.5.2-.9v-.6c-1 .2-1.744.197-2.6.6-.856.403-1.272.873-1.7 1.4z"/>
+        <path id="quote2" d="M15 9.344c-.476.32-.78.677-1.094 1.062A8.76 8.76 0 0 0 12 16.094V19h4.688a1.6 1.6 0 0 0 1.625-1.594V13H15V9.344z"/>
+        <path id="add" d="M18 6V2h-2v4h-4v2h4v4h2V8h4V6z"/>
     </g>
 </svg>
index 481db46..88f3c9f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl-invert.png differ
index a66bf47..63e715a 100644 (file)
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g4">
-        <path d="M20.5 8.6c.6.7 2.5 3.4 2.5 7.4v4h-6c-1.1 0-2-.9-2-2v-6h4s-.1-.9-.8-1.8c-.6-.7-1.3-1.2-2.1-1.5-.3-.1-.6-.3-.8-.6-.2-.3-.3-.7-.3-1.1V6c1.3.2 1.9.2 3.3.8.8.5 1.6 1.1 2.2 1.8zM5 5V1h2v4h4v2H7v4H5V7H1V5zm4 7s-.1-.9-.8-1.8L8 10V8h1.9l.6.6c.6.7 2.5 3.4 2.5 7.4v4H7c-1.1 0-2-.9-2-2v-6h4z" id="path6"/>
+    <g id="quotes-add">
+        <path id="quote" d="M18.097 10.4c.446.55 1.974 2.6 1.9 5.7V19h-4.7c-.9 0-1.593-.7-1.6-1.6V13h3.1s-.05-.74-.6-1.4c-.453-.543-1-.9-1.6-1.2-.2-.1-.47-.212-.6-.5-.127-.282-.2-.5-.2-.9v-.6c1 .2 1.744.197 2.6.6.856.403 1.272.873 1.7 1.4z"/>
+        <path id="quote2" d="M8.997 9.344c.476.32.782.677 1.094 1.062A8.758 8.758 0 0 1 12 16.094V19H7.31c-.9 0-1.618-.694-1.625-1.594V13h3.312V9.344z"/>
+        <path id="add" d="M5.997 6V2h2v4h4v2h-4v4h-2V8h-4V6z"/>
     </g>
 </svg>
index e305696..4290e87 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl.png differ
index 9aed41d..d972ad3 100644 (file)
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g4">
-        <path d="M20.5 8.6c.6.7 2.5 3.4 2.5 7.4v4h-6c-1.1 0-2-.9-2-2v-6h4s-.1-.9-.8-1.8c-.6-.7-1.3-1.2-2.1-1.5-.3-.1-.6-.3-.8-.6-.2-.3-.3-.7-.3-1.1V6c1.3.2 1.9.2 3.3.8.8.5 1.6 1.1 2.2 1.8zM5 5V1h2v4h4v2H7v4H5V7H1V5zm4 7s-.1-.9-.8-1.8L8 10V8h1.9l.6.6c.6.7 2.5 3.4 2.5 7.4v4H7c-1.1 0-2-.9-2-2v-6h4z" id="path6"/>
+    <g id="quotes-add">
+        <path id="quote" d="M18.097 10.4c.446.55 1.974 2.6 1.9 5.7V19h-4.7c-.9 0-1.593-.7-1.6-1.6V13h3.1s-.05-.74-.6-1.4c-.453-.543-1-.9-1.6-1.2-.2-.1-.47-.212-.6-.5-.127-.282-.2-.5-.2-.9v-.6c1 .2 1.744.197 2.6.6.856.403 1.272.873 1.7 1.4z"/>
+        <path id="quote2" d="M8.997 9.344c.476.32.782.677 1.094 1.062A8.758 8.758 0 0 1 12 16.094V19H7.31c-.9 0-1.618-.694-1.625-1.594V13h3.312V9.344z"/>
+        <path id="add" d="M5.997 6V2h2v4h4v2h-4v4h-2V8h-4V6z"/>
     </g>
 </svg>
index 21b4d79..2a78c4f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression-invert.png differ
index 5d2ff77..ae5581c 100644 (file)
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="regular-expression">
-        <path id="left-bracket" d="M3 12.045c0-.99.15-1.915.45-2.777.306-.862.743-1.618 1.314-2.268H6.23c-.552.72-.968 1.512-1.25 2.374-.28.862-.42 1.75-.42 2.66 0 .915.142 1.8.427 2.654.29.85.7 1.622 1.23 2.312h-1.45c-.575-.635-1.013-1.376-1.314-2.223-.3-.847-.45-1.758-.45-2.732"/>
-        <path id="dot" d="M10 16c0 .552-.448 1-1 1s-1-.448-1-1 .448-1 1-1 1 .448 1 1z"/>
-        <path id="star" d="M14.25 7.013l-.24 2.156 2.187-.61.193 1.474-1.992.14 1.307 1.74-1.33.71-.914-1.834-.8 1.823-1.382-.697 1.295-1.74-1.98-.152.23-1.465 2.14.61-.24-2.158h1.534"/>
-        <path id="right-bracket" d="M21 12.045c0 .982-.152 1.896-.457 2.744-.3.843-.737 1.58-1.307 2.21h-1.453c.527-.69.936-1.458 1.225-2.31.29-.854.434-1.74.434-2.66 0-.91-.14-1.796-.422-2.66-.28-.86-.697-1.653-1.248-2.373h1.465c.574.652 1.012 1.412 1.313 2.28.3.86.45 1.782.45 2.764"/>
+        <path id="left-bracket" d="M3 12.045c0-.99.15-1.915.45-2.777A6.886 6.886 0 0 1 4.764 7H6.23a7.923 7.923 0 0 0-1.25 2.374 8.563 8.563 0 0 0 .007 5.314c.29.85.7 1.622 1.23 2.312h-1.45a6.53 6.53 0 0 1-1.314-2.223 8.126 8.126 0 0 1-.45-2.732"/>
+        <path id="dot" d="M10 16a1 1 0 1 1-2 0 1 1 0 0 1 2 0z"/>
+        <path id="star" d="M14.25 7.013l-.24 2.156 2.187-.61.193 1.47-1.992.14 1.307 1.74-1.33.71-.914-1.833-.8 1.822-1.38-.698 1.296-1.74-1.98-.152.23-1.464 2.14.61-.24-2.158h1.534"/>
+        <path id="right-bracket" d="M21 12.045c0 .982-.152 1.896-.457 2.744A6.51 6.51 0 0 1 19.236 17h-1.453a8.017 8.017 0 0 0 1.225-2.31c.29-.855.434-1.74.434-2.66 0-.91-.14-1.797-.422-2.66a7.913 7.913 0 0 0-1.248-2.374h1.465a6.764 6.764 0 0 1 1.313 2.28c.3.86.45 1.782.45 2.764"/>
     </g>
 </svg>
index 00ace19..ef8cfc3 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression.png differ
index 844013d..d5fcfcf 100644 (file)
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="regular-expression">
-        <path id="left-bracket" d="M3 12.045c0-.99.15-1.915.45-2.777.306-.862.743-1.618 1.314-2.268H6.23c-.552.72-.968 1.512-1.25 2.374-.28.862-.42 1.75-.42 2.66 0 .915.142 1.8.427 2.654.29.85.7 1.622 1.23 2.312h-1.45c-.575-.635-1.013-1.376-1.314-2.223-.3-.847-.45-1.758-.45-2.732"/>
-        <path id="dot" d="M10 16c0 .552-.448 1-1 1s-1-.448-1-1 .448-1 1-1 1 .448 1 1z"/>
-        <path id="star" d="M14.25 7.013l-.24 2.156 2.187-.61.193 1.474-1.992.14 1.307 1.74-1.33.71-.914-1.834-.8 1.823-1.382-.697 1.295-1.74-1.98-.152.23-1.465 2.14.61-.24-2.158h1.534"/>
-        <path id="right-bracket" d="M21 12.045c0 .982-.152 1.896-.457 2.744-.3.843-.737 1.58-1.307 2.21h-1.453c.527-.69.936-1.458 1.225-2.31.29-.854.434-1.74.434-2.66 0-.91-.14-1.796-.422-2.66-.28-.86-.697-1.653-1.248-2.373h1.465c.574.652 1.012 1.412 1.313 2.28.3.86.45 1.782.45 2.764"/>
+        <path id="left-bracket" d="M3 12.045c0-.99.15-1.915.45-2.777A6.886 6.886 0 0 1 4.764 7H6.23a7.923 7.923 0 0 0-1.25 2.374 8.563 8.563 0 0 0 .007 5.314c.29.85.7 1.622 1.23 2.312h-1.45a6.53 6.53 0 0 1-1.314-2.223 8.126 8.126 0 0 1-.45-2.732"/>
+        <path id="dot" d="M10 16a1 1 0 1 1-2 0 1 1 0 0 1 2 0z"/>
+        <path id="star" d="M14.25 7.013l-.24 2.156 2.187-.61.193 1.47-1.992.14 1.307 1.74-1.33.71-.914-1.833-.8 1.822-1.38-.698 1.296-1.74-1.98-.152.23-1.464 2.14.61-.24-2.158h1.534"/>
+        <path id="right-bracket" d="M21 12.045c0 .982-.152 1.896-.457 2.744A6.51 6.51 0 0 1 19.236 17h-1.453a8.017 8.017 0 0 0 1.225-2.31c.29-.855.434-1.74.434-2.66 0-.91-.14-1.797-.422-2.66a7.913 7.913 0 0 0-1.248-2.374h1.465a6.764 6.764 0 0 1 1.313 2.28c.3.86.45 1.782.45 2.764"/>
     </g>
 </svg>
index d1d5e10..3a09864 100644 (file)
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="Layer_1">
-        <g>
-            <circle cx="11.5" cy="8.5" r="2.5"/>
-            <path d="M16.3 8.7L17 8l-.8-.8.4-.8-1.1-.5.1-.9-1.2-.2-.1-.9-1.2.2-.4-.8-1.1.5L11 3l-.8.8-.9-.4-.5 1.1-.9-.2-.2 1.2-.9.2.2 1.2-.9.4.5 1.1L6 9l.8.8-.4.8 1.1.5-.1.9 1.2.2.1.9 1.2-.2.4.8 1.1-.5.6.8.8-.8.8.4.5-1.1.9.1.2-1.2.9-.1-.2-1.2.8-.4-.4-1zM11.5 12C9.6 12 8 10.4 8 8.5S9.6 5 11.5 5 15 6.6 15 8.5 13.4 12 11.5 12zm.5 3l-.7-.7-1.1.6-.4-.7-.8.3V23l2.5-3 2.5 3v-8.5l-1-.5z"/>
-        </g>
-    </g>
+    <circle cx="11.5" cy="8.5" r="2.5"/>
+    <path d="M16.3 8.7L17 8l-.8-.8.4-.8-1.1-.5.1-.9-1.2-.2-.1-.9-1.2.2-.4-.8-1.1.5L11 3l-.8.8-.9-.4-.5 1.1-.9-.2-.2 1.2-.9.2.2 1.2-.9.4.5 1.1L6 9l.8.8-.4.8 1.1.5-.1.9 1.2.2.1.9 1.2-.2.4.8 1.1-.5.6.8.8-.8.8.4.5-1.1.9.1.2-1.2.9-.1-.2-1.2.8-.4-.4-1zM11.5 12C9.6 12 8 10.4 8 8.5S9.6 5 11.5 5 15 6.6 15 8.5 13.4 12 11.5 12zm.5 3l-.7-.7-1.1.6-.4-.7-.8.3V23l2.5-3 2.5 3v-8.5l-1-.5z"/>
 </svg>
index d15f387..45df8b7 100644 (file)
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="Layer_1">
-        <g>
-            <circle cx="11.5" cy="8.5" r="2.5"/>
-            <path d="M16.3 8.7L17 8l-.8-.8.4-.8-1.1-.5.1-.9-1.2-.2-.1-.9-1.2.2-.4-.8-1.1.5L11 3l-.8.8-.9-.4-.5 1.1-.9-.2-.2 1.2-.9.2.2 1.2-.9.4.5 1.1L6 9l.8.8-.4.8 1.1.5-.1.9 1.2.2.1.9 1.2-.2.4.8 1.1-.5.6.8.8-.8.8.4.5-1.1.9.1.2-1.2.9-.1-.2-1.2.8-.4-.4-1zM11.5 12C9.6 12 8 10.4 8 8.5S9.6 5 11.5 5 15 6.6 15 8.5 13.4 12 11.5 12zm.5 3l-.7-.7-1.1.6-.4-.7-.8.3V23l2.5-3 2.5 3v-8.5l-1-.5z"/>
-        </g>
-    </g>
+    <circle cx="11.5" cy="8.5" r="2.5"/>
+    <path d="M16.3 8.7L17 8l-.8-.8.4-.8-1.1-.5.1-.9-1.2-.2-.1-.9-1.2.2-.4-.8-1.1.5L11 3l-.8.8-.9-.4-.5 1.1-.9-.2-.2 1.2-.9.2.2 1.2-.9.4.5 1.1L6 9l.8.8-.4.8 1.1.5-.1.9 1.2.2.1.9 1.2-.2.4.8 1.1-.5.6.8.8-.8.8.4.5-1.1.9.1.2-1.2.9-.1-.2-1.2.8-.4-.4-1zM11.5 12C9.6 12 8 10.4 8 8.5S9.6 5 11.5 5 15 6.6 15 8.5 13.4 12 11.5 12zm.5 3l-.7-.7-1.1.6-.4-.7-.8.3V23l2.5-3 2.5 3v-8.5l-1-.5z"/>
 </svg>
index 555b641..6cb23d8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr-invert.png differ
index 41b0227..992aee9 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="search">
-        <path id="magnifying-glass" d="M10.5 4C6.91 4 4 6.91 4 10.5S6.91 17 10.5 17c1.022 0 1.983-.236 2.844-.656L16 19c1.4 1.4 2.5 1.5 4 0l-4.438-4.438C16.462 13.447 17 12.044 17 10.5 17 6.91 14.09 4 10.5 4zm0 2c2.485 0 4.5 2.015 4.5 4.5S12.985 15 10.5 15 6 12.985 6 10.5 8.015 6 10.5 6z"/>
+        <path id="magnifying-glass" d="M10.5 4a6.5 6.5 0 1 0 2.844 12.344L16 19c1.4 1.4 2.5 1.5 4 0l-4.438-4.438A6.426 6.426 0 0 0 17 10.5 6.5 6.5 0 0 0 10.5 4zm0 2a4.5 4.5 0 1 1 0 9 4.5 4.5 0 0 1 0-9z"/>
     </g>
 </svg>
index 9f2033b..c897837 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr.png differ
index eadb088..ebc654a 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="search">
-        <path id="magnifying-glass" d="M10.5 4C6.91 4 4 6.91 4 10.5S6.91 17 10.5 17c1.022 0 1.983-.236 2.844-.656L16 19c1.4 1.4 2.5 1.5 4 0l-4.438-4.438C16.462 13.447 17 12.044 17 10.5 17 6.91 14.09 4 10.5 4zm0 2c2.485 0 4.5 2.015 4.5 4.5S12.985 15 10.5 15 6 12.985 6 10.5 8.015 6 10.5 6z"/>
+        <path id="magnifying-glass" d="M10.5 4a6.5 6.5 0 1 0 2.844 12.344L16 19c1.4 1.4 2.5 1.5 4 0l-4.438-4.438A6.426 6.426 0 0 0 17 10.5 6.5 6.5 0 0 0 10.5 4zm0 2a4.5 4.5 0 1 1 0 9 4.5 4.5 0 0 1 0-9z"/>
     </g>
 </svg>
index 8419713..6f45003 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl-invert.png differ
index 8b143fc..5da62dc 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="search">
-        <path id="magnifying-glass" d="M13.5 4c3.59 0 6.5 2.91 6.5 6.5S17.09 17 13.5 17c-1.022 0-1.983-.236-2.844-.656L8 19c-1.4 1.4-2.5 1.5-4 0l4.438-4.438C7.538 13.447 7 12.044 7 10.5 7 6.91 9.91 4 13.5 4zm0 2C11.015 6 9 8.015 9 10.5s2.015 4.5 4.5 4.5 4.5-2.015 4.5-4.5S15.985 6 13.5 6z"/>
+        <path id="magnifying-glass" d="M13.5 4a6.5 6.5 0 1 1-2.844 12.344L8 19c-1.4 1.4-2.5 1.5-4 0l4.438-4.438A6.426 6.426 0 0 1 7 10.5 6.5 6.5 0 0 1 13.5 4zm0 2a4.5 4.5 0 1 0 0 9 4.5 4.5 0 0 0 0-9z"/>
     </g>
 </svg>
index c7bc7a8..1275716 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl.png differ
index d2e4585..c51d4cb 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="search">
-        <path id="magnifying-glass" d="M13.5 4c3.59 0 6.5 2.91 6.5 6.5S17.09 17 13.5 17c-1.022 0-1.983-.236-2.844-.656L8 19c-1.4 1.4-2.5 1.5-4 0l4.438-4.438C7.538 13.447 7 12.044 7 10.5 7 6.91 9.91 4 13.5 4zm0 2C11.015 6 9 8.015 9 10.5s2.015 4.5 4.5 4.5 4.5-2.015 4.5-4.5S15.985 6 13.5 6z"/>
+        <path id="magnifying-glass" d="M13.5 4a6.5 6.5 0 1 1-2.844 12.344L8 19c-1.4 1.4-2.5 1.5-4 0l4.438-4.438A6.426 6.426 0 0 1 7 10.5 6.5 6.5 0 0 1 13.5 4zm0 2a4.5 4.5 0 1 0 0 9 4.5 4.5 0 0 0 0-9z"/>
     </g>
 </svg>
index 2bb6e9d..61ce959 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link-invert.png differ
index 8660556..ed31a41 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><style>* { fill: #FFFFFF }</style>
     <g id="secure">
-        <path id="lock" d="M8 5h.02v-.997c0-.057.003-1.41-.833-2.255-.434-.438-.998-.66-1.68-.66s-1.244.222-1.677.66c-.837.846-.833 2.198-.832 2.25V5H3c-.553 0-1 .447-1 1v3c0 .553.447 1 1 1h5c.553 0 1-.447 1-1V6c0-.553-.447-1-1-1zM3.998 5V3.993c0-.01.005-1 .543-1.543.486-.485 1.45-.487 1.936-.002.544.546.546 1.536.546 1.55V5H3.998z"/>
+        <path id="lock" d="M8 5h.02v-.997c0-.057.003-1.41-.833-2.255-.434-.438-.998-.66-1.68-.66s-1.244.222-1.677.66c-.837.846-.833 2.198-.832 2.25V5H3a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1zM3.998 5V3.993c0-.01.005-1 .543-1.543.49-.485 1.45-.487 1.94-.002.543.546.545 1.536.545 1.55V5H3.998z"/>
     </g>
 </svg>
index a2eba48..2b89d37 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link.png differ
index e064672..453d166 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
     <g id="secure">
-        <path id="lock" d="M8 5h.02v-.997c0-.057.003-1.41-.833-2.255-.434-.438-.998-.66-1.68-.66s-1.244.222-1.677.66c-.837.846-.833 2.198-.832 2.25V5H3c-.553 0-1 .447-1 1v3c0 .553.447 1 1 1h5c.553 0 1-.447 1-1V6c0-.553-.447-1-1-1zM3.998 5V3.993c0-.01.005-1 .543-1.543.486-.485 1.45-.487 1.936-.002.544.546.546 1.536.546 1.55V5H3.998z"/>
+        <path id="lock" d="M8 5h.02v-.997c0-.057.003-1.41-.833-2.255-.434-.438-.998-.66-1.68-.66s-1.244.222-1.677.66c-.837.846-.833 2.198-.832 2.25V5H3a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1zM3.998 5V3.993c0-.01.005-1 .543-1.543.49-.485 1.45-.487 1.94-.002.543.546.545 1.536.545 1.55V5H3.998z"/>
     </g>
 </svg>
index 34cc190..e67b8f4 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="settings">
-        <path id="gear" d="M3 4h3v2H3zm9 0h9v2h-9zM8 3h2c.552 0 1 .448 1 1v2c0 .552-.448 1-1 1H8c-.552 0-1-.448-1-1V4c0-.552.448-1 1-1zm-5 8h9v2H3zm15 0h3v2h-3zm-4-1h2c.552 0 1 .448 1 1v2c0 .552-.448 1-1 1h-2c-.552 0-1-.448-1-1v-2c0-.552.448-1 1-1zM3 18h6v2H3zm12 0h6v2h-6zm-4-1h2c.552 0 1 .448 1 1v2c0 .552-.448 1-1 1h-2c-.552 0-1-.448-1-1v-2c0-.552.448-1 1-1z"/>
+        <path id="gear" d="M3 4h3v2H3zm9 0h9v2h-9zM8 3h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zm-5 8h9v2H3zm15 0h3v2h-3zm-4-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1zM3 18h6v2H3zm12 0h6v2h-6zm-4-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1z"/>
     </g>
 </svg>
index 3799767..3245dbe 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="settings">
-        <path id="gear" d="M3 4h3v2H3zm9 0h9v2h-9zM8 3h2c.552 0 1 .448 1 1v2c0 .552-.448 1-1 1H8c-.552 0-1-.448-1-1V4c0-.552.448-1 1-1zm-5 8h9v2H3zm15 0h3v2h-3zm-4-1h2c.552 0 1 .448 1 1v2c0 .552-.448 1-1 1h-2c-.552 0-1-.448-1-1v-2c0-.552.448-1 1-1zM3 18h6v2H3zm12 0h6v2h-6zm-4-1h2c.552 0 1 .448 1 1v2c0 .552-.448 1-1 1h-2c-.552 0-1-.448-1-1v-2c0-.552.448-1 1-1z"/>
+        <path id="gear" d="M3 4h3v2H3zm9 0h9v2h-9zM8 3h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zm-5 8h9v2H3zm15 0h3v2h-3zm-4-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1zM3 18h6v2H3zm12 0h6v2h-6zm-4-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1z"/>
     </g>
 </svg>
index 2962041..6b30010 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M24 20H0v1h24v-1zm-6-8l1-1 2 2 2-2 1 1-2 2 2 2-1 1-2-2-2 2-1-1 2-2zM2.4 15.7c.9-.5 1.9-.5 2.7 0 1.5.9 3.1.4 3.1.4.4-.2.8-.4 1.1-.6-2.2-.6-4.4-1.8-6-3.9-1.1-1.2-2.5-3.9-.4-6 .7-.7 1.6-1.1 2.7-1 1.4.1 2.8.9 3.9 2.1.9 1.1 3.1 4.5 2.3 7.5 0 .1 0 .2-.1.3 2.3.3 4.2.2 4.4.1v1.5c-.7.1-2.7.2-5.1-.2-.5.7-1.3 1.2-2.3 1.6-.1 0-2.4.8-4.5-.6-.5-.3-.9-.1-1.1 0-.4.2-.7.6-.7 1H1c0-.8.6-1.7 1.4-2.2zm8-1.7c.5-2.2-1.1-5.1-2-6.2-.8-.9-1.8-1.5-2.8-1.6h-.1c-.6 0-1.1.2-1.5.6-1.6 1.6.4 3.9.5 4 1.5 2 3.7 3 5.8 3.5l.1-.3z" id="path576"/>
+    <path d="M24 20H0v1h24v-1zm-6-8l1-1 2 2 2-2 1 1-2 2 2 2-1 1-2-2-2 2-1-1 2-2zM2.4 15.7c.9-.5 1.9-.5 2.7 0 1.5.9 3.1.4 3.1.4.4-.2.8-.4 1.1-.6-2.2-.6-4.4-1.8-6-3.9-1.1-1.2-2.5-3.9-.4-6 .7-.7 1.6-1.1 2.7-1 1.4.1 2.8.9 3.9 2.1.9 1.1 3.1 4.5 2.3 7.5 0 .1 0 .2-.1.3 2.3.3 4.2.2 4.4.1v1.5c-.7.1-2.7.2-5.1-.2-.5.7-1.3 1.2-2.3 1.6-.1 0-2.4.8-4.5-.6-.5-.3-.9-.1-1.1 0-.4.2-.7.6-.7 1H1c0-.8.6-1.7 1.4-2.2zm8-1.7c.5-2.2-1.1-5.1-2-6.2-.8-.9-1.8-1.5-2.8-1.6h-.1c-.6 0-1.1.2-1.5.6-1.6 1.6.4 3.9.5 4 1.5 2 3.7 3 5.8 3.5l.1-.3z"/>
 </svg>
index 97b2465..326281a 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M24 20H0v1h24v-1zm-6-8l1-1 2 2 2-2 1 1-2 2 2 2-1 1-2-2-2 2-1-1 2-2zM2.4 15.7c.9-.5 1.9-.5 2.7 0 1.5.9 3.1.4 3.1.4.4-.2.8-.4 1.1-.6-2.2-.6-4.4-1.8-6-3.9-1.1-1.2-2.5-3.9-.4-6 .7-.7 1.6-1.1 2.7-1 1.4.1 2.8.9 3.9 2.1.9 1.1 3.1 4.5 2.3 7.5 0 .1 0 .2-.1.3 2.3.3 4.2.2 4.4.1v1.5c-.7.1-2.7.2-5.1-.2-.5.7-1.3 1.2-2.3 1.6-.1 0-2.4.8-4.5-.6-.5-.3-.9-.1-1.1 0-.4.2-.7.6-.7 1H1c0-.8.6-1.7 1.4-2.2zm8-1.7c.5-2.2-1.1-5.1-2-6.2-.8-.9-1.8-1.5-2.8-1.6h-.1c-.6 0-1.1.2-1.5.6-1.6 1.6.4 3.9.5 4 1.5 2 3.7 3 5.8 3.5l.1-.3z" id="path576"/>
+    <path d="M24 20H0v1h24v-1zm-6-8l1-1 2 2 2-2 1 1-2 2 2 2-1 1-2-2-2 2-1-1 2-2zM2.4 15.7c.9-.5 1.9-.5 2.7 0 1.5.9 3.1.4 3.1.4.4-.2.8-.4 1.1-.6-2.2-.6-4.4-1.8-6-3.9-1.1-1.2-2.5-3.9-.4-6 .7-.7 1.6-1.1 2.7-1 1.4.1 2.8.9 3.9 2.1.9 1.1 3.1 4.5 2.3 7.5 0 .1 0 .2-.1.3 2.3.3 4.2.2 4.4.1v1.5c-.7.1-2.7.2-5.1-.2-.5.7-1.3 1.2-2.3 1.6-.1 0-2.4.8-4.5-.6-.5-.3-.9-.1-1.1 0-.4.2-.7.6-.7 1H1c0-.8.6-1.7 1.4-2.2zm8-1.7c.5-2.2-1.1-5.1-2-6.2-.8-.9-1.8-1.5-2.8-1.6h-.1c-.6 0-1.1.2-1.5.6-1.6 1.6.4 3.9.5 4 1.5 2 3.7 3 5.8 3.5l.1-.3z"/>
 </svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-ltr-invert.png
new file mode 100644 (file)
index 0000000..bd09b83
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-ltr-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-ltr-invert.svg
new file mode 100644 (file)
index 0000000..9f5a2e3
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
+    <path d="M17.6 20h-5.4v-.5c.2 0 .5-.1.9-.1.3-.1.5-.2.5-.3V19s0-.1-.1-.2l-.8-2H9.3c-.1.2-.2.4-.3.7-.1.3-.2.5-.2.7-.1.3-.1.4-.2.6v.2c0 .1.1.3.3.4.2.1.6.2 1.1.2v.4H6v-.5c.2 0 .3 0 .5-.1.2 0 .3-.1.5-.2s.4-.2.5-.4l.3-.6c.5-1.3 1.1-2.6 1.6-3.9.5-1.3 1.1-2.7 1.8-4.3h1.4c.9 2.2 1.6 4 2.1 5.3.5 1.3 1 2.4 1.3 3.2.1.1.1.3.2.4.1.1.2.2.4.3.1.1.3.1.5.2s.3.1.5.1v.5zm-5.2-4L11 12.4 9.6 16h2.8z"/>
+</svg>
index b3d2e94..446d10a 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M17.6 20h-5.4v-.5c.2 0 .5-.1.9-.1.3-.1.5-.2.5-.3V19s0-.1-.1-.2l-.8-2H9.3c-.1.2-.2.4-.3.7-.1.3-.2.5-.2.7-.1.3-.1.4-.2.6v.2c0 .1.1.3.3.4.2.1.6.2 1.1.2v.4H6v-.5c.2 0 .3 0 .5-.1.2 0 .3-.1.5-.2s.4-.2.5-.4l.3-.6c.5-1.3 1.1-2.6 1.6-3.9.5-1.3 1.1-2.7 1.8-4.3h1.4c.9 2.2 1.6 4 2.1 5.3.5 1.3 1 2.4 1.3 3.2.1.1.1.3.2.4.1.1.2.2.4.3.1.1.3.1.5.2s.3.1.5.1v.5zm-5.2-4L11 12.4 9.6 16h2.8z"/>
-    </g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M17.6 20h-5.4v-.5c.2 0 .5-.1.9-.1.3-.1.5-.2.5-.3V19s0-.1-.1-.2l-.8-2H9.3c-.1.2-.2.4-.3.7-.1.3-.2.5-.2.7-.1.3-.1.4-.2.6v.2c0 .1.1.3.3.4.2.1.6.2 1.1.2v.4H6v-.5c.2 0 .3 0 .5-.1.2 0 .3-.1.5-.2s.4-.2.5-.4l.3-.6c.5-1.3 1.1-2.6 1.6-3.9.5-1.3 1.1-2.7 1.8-4.3h1.4c.9 2.2 1.6 4 2.1 5.3.5 1.3 1 2.4 1.3 3.2.1.1.1.3.2.4.1.1.2.2.4.3.1.1.3.1.5.2s.3.1.5.1v.5zm-5.2-4L11 12.4 9.6 16h2.8z"/>
 </svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-rtl-invert.png
new file mode 100644 (file)
index 0000000..950622a
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-rtl-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-rtl-invert.svg
new file mode 100644 (file)
index 0000000..09b8413
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
+    <path d="M6 19.5c.1 0 .3 0 .5-.1s.3-.1.5-.2.3-.2.4-.3c.1-.1.2-.2.2-.4.4-.9.8-1.9 1.3-3.2.5-1.3 1.2-3.1 2.1-5.3h1.4c.7 1.6 1.2 3 1.8 4.3.5 1.3 1.1 2.6 1.6 3.9l.3.6c.1.2.3.3.5.4.1.1.3.1.5.2.2 0 .4.1.5.1v.5h-4v-.5c.5 0 .9-.1 1.1-.2.2-.1.3-.2.3-.4v-.2c0-.1-.1-.3-.2-.6-.1-.2-.2-.4-.2-.7-.1-.3-.2-.5-.3-.7h-3.4l-.8 2c0 .1-.1.1-.1.2v.1c0 .1.2.2.5.3.3.1.6.1.9.1v.6H6v-.5zm8-3.5l-1.4-3.6-1.4 3.6H14z"/>
+</svg>
index 34d46bc..ebcea4d 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M6 19.5c.1 0 .3 0 .5-.1s.3-.1.5-.2.3-.2.4-.3c.1-.1.2-.2.2-.4.4-.9.8-1.9 1.3-3.2.5-1.3 1.2-3.1 2.1-5.3h1.4c.7 1.6 1.2 3 1.8 4.3.5 1.3 1.1 2.6 1.6 3.9l.3.6c.1.2.3.3.5.4.1.1.3.1.5.2.2 0 .4.1.5.1v.5h-4v-.5c.5 0 .9-.1 1.1-.2.2-.1.3-.2.3-.4v-.2c0-.1-.1-.3-.2-.6-.1-.2-.2-.4-.2-.7-.1-.3-.2-.5-.3-.7h-3.4l-.8 2c0 .1-.1.1-.1.2v.1c0 .1.2.2.5.3.3.1.6.1.9.1v.6H6v-.5zm8-3.5l-1.4-3.6-1.4 3.6H14z"/>
-    </g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path d="M6 19.5c.1 0 .3 0 .5-.1s.3-.1.5-.2.3-.2.4-.3c.1-.1.2-.2.2-.4.4-.9.8-1.9 1.3-3.2.5-1.3 1.2-3.1 2.1-5.3h1.4c.7 1.6 1.2 3 1.8 4.3.5 1.3 1.1 2.6 1.6 3.9l.3.6c.1.2.3.3.5.4.1.1.3.1.5.2.2 0 .4.1.5.1v.5h-4v-.5c.5 0 .9-.1 1.1-.2.2-.1.3-.2.3-.4v-.2c0-.1-.1-.3-.2-.6-.1-.2-.2-.4-.2-.7-.1-.3-.2-.5-.3-.7h-3.4l-.8 2c0 .1-.1.1-.1.2v.1c0 .1.2.2.5.3.3.1.6.1.9.1v.6H6v-.5zm8-3.5l-1.4-3.6-1.4 3.6H14z"/>
 </svg>
index 008efd0..6fb42f2 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter-invert.png differ
index 5f3d914..30cb63f 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="special-character">
-        <path id="omega" d="M12 6.708c-.794 0-1.368.103-1.894.31-.525.207-.944.496-1.255.867-.31.366-.53.808-.66 1.327-.124.513-.19 1.08-.19 1.7 0 .512.06 1 .176 1.46.122.46.31.87.568 1.23.63.862 1.156 1.138 2.012 1.362L11 18H6v-3h.604l.53 1.353.395.053.6.044.75.035.458.01H10l-.09-.895c-.63-.094-.812-.268-1.337-.522-.525-.26-.98-.59-1.365-.99-.38-.402-.675-.868-.89-1.4-.213-.536-.32-1.13-.32-1.778 0-.82.13-1.537.394-2.15.27-.62.656-1.133 1.163-1.54.507-.407 1.133-.71 1.878-.912.745-.206 1.6-.31 2.565-.31.96 0 1.81.103 2.556.31.75.2 1.38.504 1.887.912.51.407.896.92 1.158 1.54.27.614.403 1.33.403 2.15 0 .65-.107 1.242-.32 1.78-.215.53-.514.996-.9 1.397-.38.4-.83.732-1.355.99-.525.255-.707.43-1.336.523l-.093.894h.66l.447-.01.75-.034.606-.044.4-.053.533-1.354H18v3h-5l.246-3.04c1.066-.11 1.337-.695 2.002-1.362.263-.36.452-.77.568-1.23.122-.46.183-.947.183-1.46 0-.62-.067-1.186-.195-1.7-.128-.52-.348-.96-.66-1.326-.31-.372-.73-.66-1.255-.867-.524-.206-1.1-.31-1.893-.31"/>
+        <path id="omega" d="M12 6.708c-.794 0-1.368.103-1.894.31-.525.207-.944.496-1.255.867-.31.366-.53.808-.66 1.327a7.232 7.232 0 0 0-.19 1.7c0 .512.06 1 .18 1.46.12.46.31.87.567 1.23.63.862 1.156 1.138 2.012 1.362L11 18H6v-3h.604l.53 1.353.395.053.6.044.75.035.455.01H10l-.09-.895c-.63-.094-.812-.268-1.337-.522-.525-.26-.98-.59-1.365-.99a4.428 4.428 0 0 1-.89-1.4 4.78 4.78 0 0 1-.32-1.778c0-.82.13-1.537.394-2.15a3.97 3.97 0 0 1 1.163-1.54c.507-.407 1.133-.71 1.878-.912.745-.206 1.6-.31 2.565-.31.96 0 1.81.103 2.556.31.75.2 1.38.504 1.887.912.51.407.9.92 1.16 1.54.27.614.404 1.33.404 2.15a4.79 4.79 0 0 1-.32 1.78 4.35 4.35 0 0 1-.9 1.397c-.38.4-.83.732-1.355.99-.526.255-.708.43-1.337.523l-.092.894h.66l.448-.01.75-.034.606-.044.4-.053.534-1.354H18v3h-5l.246-3.04c1.066-.11 1.337-.698 2.002-1.365.263-.36.452-.77.568-1.23.122-.46.183-.947.183-1.46 0-.62-.07-1.186-.198-1.7a3.175 3.175 0 0 0-.66-1.326c-.31-.37-.73-.66-1.255-.867-.525-.206-1.1-.31-1.894-.31"/>
     </g>
 </svg>
index 7f65881..92f887d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter.png differ
index dbf6ed5..5cba080 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="special-character">
-        <path id="omega" d="M12 6.708c-.794 0-1.368.103-1.894.31-.525.207-.944.496-1.255.867-.31.366-.53.808-.66 1.327-.124.513-.19 1.08-.19 1.7 0 .512.06 1 .176 1.46.122.46.31.87.568 1.23.63.862 1.156 1.138 2.012 1.362L11 18H6v-3h.604l.53 1.353.395.053.6.044.75.035.458.01H10l-.09-.895c-.63-.094-.812-.268-1.337-.522-.525-.26-.98-.59-1.365-.99-.38-.402-.675-.868-.89-1.4-.213-.536-.32-1.13-.32-1.778 0-.82.13-1.537.394-2.15.27-.62.656-1.133 1.163-1.54.507-.407 1.133-.71 1.878-.912.745-.206 1.6-.31 2.565-.31.96 0 1.81.103 2.556.31.75.2 1.38.504 1.887.912.51.407.896.92 1.158 1.54.27.614.403 1.33.403 2.15 0 .65-.107 1.242-.32 1.78-.215.53-.514.996-.9 1.397-.38.4-.83.732-1.355.99-.525.255-.707.43-1.336.523l-.093.894h.66l.447-.01.75-.034.606-.044.4-.053.533-1.354H18v3h-5l.246-3.04c1.066-.11 1.337-.695 2.002-1.362.263-.36.452-.77.568-1.23.122-.46.183-.947.183-1.46 0-.62-.067-1.186-.195-1.7-.128-.52-.348-.96-.66-1.326-.31-.372-.73-.66-1.255-.867-.524-.206-1.1-.31-1.893-.31"/>
+        <path id="omega" d="M12 6.708c-.794 0-1.368.103-1.894.31-.525.207-.944.496-1.255.867-.31.366-.53.808-.66 1.327a7.232 7.232 0 0 0-.19 1.7c0 .512.06 1 .18 1.46.12.46.31.87.567 1.23.63.862 1.156 1.138 2.012 1.362L11 18H6v-3h.604l.53 1.353.395.053.6.044.75.035.455.01H10l-.09-.895c-.63-.094-.812-.268-1.337-.522-.525-.26-.98-.59-1.365-.99a4.428 4.428 0 0 1-.89-1.4 4.78 4.78 0 0 1-.32-1.778c0-.82.13-1.537.394-2.15a3.97 3.97 0 0 1 1.163-1.54c.507-.407 1.133-.71 1.878-.912.745-.206 1.6-.31 2.565-.31.96 0 1.81.103 2.556.31.75.2 1.38.504 1.887.912.51.407.9.92 1.16 1.54.27.614.404 1.33.404 2.15a4.79 4.79 0 0 1-.32 1.78 4.35 4.35 0 0 1-.9 1.397c-.38.4-.83.732-1.355.99-.526.255-.708.43-1.337.523l-.092.894h.66l.448-.01.75-.034.606-.044.4-.053.534-1.354H18v3h-5l.246-3.04c1.066-.11 1.337-.698 2.002-1.365.263-.36.452-.77.568-1.23.122-.46.183-.947.183-1.46 0-.62-.07-1.186-.198-1.7a3.175 3.175 0 0 0-.66-1.326c-.31-.37-.73-.66-1.255-.867-.525-.206-1.1-.31-1.894-.31"/>
     </g>
 </svg>
index 8f0d6e1..c4ac930 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M19 20H2l3-3V6h17v11c0 1.7-1.3 3-3 3z"/>
-    </g>
+    <path d="M19 20H2l3-3V6h17v11c0 1.7-1.3 3-3 3z"/>
 </svg>
index 6e5eacd..83d47c1 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M19 20H2l3-3V6h17v11c0 1.7-1.3 3-3 3z"/>
-    </g>
+    <path d="M19 20H2l3-3V6h17v11c0 1.7-1.3 3-3 3z"/>
 </svg>
index 4eaf331..84fd324 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g586">
-        <path d="M5 20h17l-3-3V6H2v11c0 1.7 1.3 3 3 3z" id="path588"/>
-    </g>
+    <path d="M5 20h17l-3-3V6H2v11c0 1.7 1.3 3 3 3z"/>
 </svg>
index 139c34e..e7dd668 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g586">
-        <path d="M5 20h17l-3-3V6H2v11c0 1.7 1.3 3 3 3z" id="path588"/>
-    </g>
+    <path d="M5 20h17l-3-3V6H2v11c0 1.7 1.3 3 3 3z"/>
 </svg>
index 652bb0b..44f3048 100644 (file)
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M19 20H2l3-3V6h17v11c0 1.7-1.3 3-3 3z"/>
-    </g>
+    <path d="M19 20H2l3-3V6h17v11c0 1.7-1.3 3-3 3z"/>
     <path fill="#fff" d="M13 9h1v7h-1zm-3 3h7v1h-7z"/>
 </svg>
index 054c0be..1b0db88 100644 (file)
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M19 20H2l3-3V6h17v11c0 1.7-1.3 3-3 3z"/>
-    </g>
+    <path d="M19 20H2l3-3V6h17v11c0 1.7-1.3 3-3 3z"/>
     <path fill="#fff" d="M13 9h1v7h-1zm-3 3h7v1h-7z"/>
 </svg>
index b5718ef..61ce8fb 100644 (file)
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g598">
-        <path d="M5 20h17l-3-3V6H2v11c0 1.7 1.3 3 3 3z" id="path600"/>
-    </g>
-    <path d="M11 9h-1v7h1zm3 3H7v1h7z" id="path602" fill="#fff"/>
+    <path d="M5 20h17l-3-3V6H2v11c0 1.7 1.3 3 3 3z"/>
+    <path d="M11 9h-1v7h1zm3 3H7v1h7z" fill="#fff"/>
 </svg>
index c822ec5..ea9b849 100644 (file)
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g598">
-        <path d="M5 20h17l-3-3V6H2v11c0 1.7 1.3 3 3 3z" id="path600"/>
-    </g>
-    <path d="M11 9h-1v7h1zm3 3H7v1h7z" id="path602" fill="#fff"/>
+    <path d="M5 20h17l-3-3V6H2v11c0 1.7 1.3 3 3 3z"/>
+    <path d="M11 9h-1v7h1zm3 3H7v1h7z" fill="#fff"/>
 </svg>
index f07ce02..d224d88 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M20 9v9l2 2H8V9h12zM3 4h12v4H7v7H1l2-2V4z"/>
-    </g>
+    <path d="M20 9v9l2 2H8V9h12zM3 4h12v4H7v7H1l2-2V4z"/>
 </svg>
index 9c1c3f8..d683218 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M20 9v9l2 2H8V9h12zM3 4h12v4H7v7H1l2-2V4z"/>
-    </g>
+    <path d="M20 9v9l2 2H8V9h12zM3 4h12v4H7v7H1l2-2V4z"/>
 </svg>
index b98ed2b..d442be9 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g612">
-        <path d="M3 9v9l-2 2h14V9H3zm17-5H8v4h8v7h6l-2-2V4z" id="path614"/>
-    </g>
+    <path d="M3 9v9l-2 2h14V9H3zm17-5H8v4h8v7h6l-2-2V4z"/>
 </svg>
index 49fc3d3..db548a4 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g612">
-        <path d="M3 9v9l-2 2h14V9H3zm17-5H8v4h8v7h6l-2-2V4z" id="path614"/>
-    </g>
+    <path d="M3 9v9l-2 2h14V9H3zm17-5H8v4h8v7h6l-2-2V4z"/>
 </svg>
index a80ee25..7760693 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s-invert.png differ
index fd1c16d..27a1740 100644 (file)
@@ -2,6 +2,6 @@
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="strikethrough-s">
         <path id="strikethrough" d="M6 12h12v1H6v-1z"/>
-        <path id="s" d="M12.094 6c-1.133 0-2.076.287-2.75.9-.67.613-1 1.49-1 2.52 0 .89.22 1.602.72 2.13.497.528 1.278.91 2.31 1.14l.813.182v-.03c.656.147 1.128.375 1.375.63.252.256.375.607.375 1.11 0 .573-.172.97-.53 1.26-.36.29-.895.45-1.626.45-.473 0-.965-.074-1.465-.24-.502-.166-1.03-.417-1.562-.75l-.374-.238v2.158l.155.062c.58.237 1.144.417 1.69.54.548.12 1.07.18 1.56.18 1.287 0 2.298-.293 3-.9.71-.605 1.063-1.486 1.063-2.608 0-.943-.256-1.726-.78-2.312-.522-.592-1.306-1-2.345-1.23l-.812-.18c-.715-.148-1.203-.352-1.405-.54-.205-.202-.312-.484-.312-.934 0-.533.162-.9.5-1.17.342-.27.836-.42 1.53-.42.396 0 .82.052 1.25.18.434.128.91.334 1.407.6l.374.18V6.63s-1.188-.383-1.688-.48c-.5-.097-.984-.15-1.468-.15z"/>
+        <path id="s" d="M12.094 6c-1.133 0-2.076.287-2.75.9-.67.613-1 1.49-1 2.52 0 .89.22 1.602.72 2.13.497.528 1.278.91 2.31 1.14l.813.182v-.03c.656.147 1.128.375 1.375.63.252.256.375.607.375 1.11 0 .573-.172.97-.53 1.26-.36.29-.895.45-1.626.45-.47 0-.962-.074-1.462-.24a7.288 7.288 0 0 1-1.562-.75l-.374-.238v2.158l.156.062c.58.237 1.144.417 1.69.54.548.12 1.07.18 1.56.18 1.287 0 2.298-.293 3-.9.71-.605 1.063-1.486 1.063-2.608 0-.943-.256-1.726-.78-2.312-.522-.592-1.306-1-2.345-1.23l-.812-.18c-.714-.148-1.202-.352-1.404-.54-.206-.202-.313-.484-.313-.934 0-.533.162-.9.5-1.17.342-.27.836-.42 1.53-.42.396 0 .82.052 1.25.18.434.128.91.334 1.407.6l.375.18V6.63s-1.19-.383-1.69-.48c-.5-.097-.983-.15-1.467-.15z"/>
     </g>
 </svg>
index 1bcb55b..45f096f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s.png differ
index 46092a6..171f8f3 100644 (file)
@@ -2,6 +2,6 @@
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="strikethrough-s">
         <path id="strikethrough" d="M6 12h12v1H6v-1z"/>
-        <path id="s" d="M12.094 6c-1.133 0-2.076.287-2.75.9-.67.613-1 1.49-1 2.52 0 .89.22 1.602.72 2.13.497.528 1.278.91 2.31 1.14l.813.182v-.03c.656.147 1.128.375 1.375.63.252.256.375.607.375 1.11 0 .573-.172.97-.53 1.26-.36.29-.895.45-1.626.45-.473 0-.965-.074-1.465-.24-.502-.166-1.03-.417-1.562-.75l-.374-.238v2.158l.155.062c.58.237 1.144.417 1.69.54.548.12 1.07.18 1.56.18 1.287 0 2.298-.293 3-.9.71-.605 1.063-1.486 1.063-2.608 0-.943-.256-1.726-.78-2.312-.522-.592-1.306-1-2.345-1.23l-.812-.18c-.715-.148-1.203-.352-1.405-.54-.205-.202-.312-.484-.312-.934 0-.533.162-.9.5-1.17.342-.27.836-.42 1.53-.42.396 0 .82.052 1.25.18.434.128.91.334 1.407.6l.374.18V6.63s-1.188-.383-1.688-.48c-.5-.097-.984-.15-1.468-.15z"/>
+        <path id="s" d="M12.094 6c-1.133 0-2.076.287-2.75.9-.67.613-1 1.49-1 2.52 0 .89.22 1.602.72 2.13.497.528 1.278.91 2.31 1.14l.813.182v-.03c.656.147 1.128.375 1.375.63.252.256.375.607.375 1.11 0 .573-.172.97-.53 1.26-.36.29-.895.45-1.626.45-.47 0-.962-.074-1.462-.24a7.288 7.288 0 0 1-1.562-.75l-.374-.238v2.158l.156.062c.58.237 1.144.417 1.69.54.548.12 1.07.18 1.56.18 1.287 0 2.298-.293 3-.9.71-.605 1.063-1.486 1.063-2.608 0-.943-.256-1.726-.78-2.312-.522-.592-1.306-1-2.345-1.23l-.812-.18c-.714-.148-1.202-.352-1.404-.54-.206-.202-.313-.484-.313-.934 0-.533.162-.9.5-1.17.342-.27.836-.42 1.53-.42.396 0 .82.052 1.25.18.434.128.91.334 1.407.6l.375.18V6.63s-1.19-.383-1.69-.48c-.5-.097-.983-.15-1.467-.15z"/>
     </g>
 </svg>
index 8187dba..9df2e14 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M20 9H8v2h12V9zm0 3h-8v2h8v-2zm0-7H4v3h16V5zM4 19h16v-3H4v3z" id="path624"/>
+    <path d="M20 9H8v2h12V9zm0 3h-8v2h8v-2zm0-7H4v3h16V5zM4 19h16v-3H4v3z"/>
 </svg>
index f34bec2..39790a9 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M20 9H8v2h12V9zm0 3h-8v2h8v-2zm0-7H4v3h16V5zM4 19h16v-3H4v3z" id="path624"/>
+    <path d="M20 9H8v2h12V9zm0 3h-8v2h8v-2zm0-7H4v3h16V5zM4 19h16v-3H4v3z"/>
 </svg>
index 9b7bba9..dd27787 100644 (file)
@@ -1,12 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M20 19H4v-2h16v2z"/>
-    </g>
-    <g>
-        <path d="M20 15H4v-2h16v2z"/>
-    </g>
-    <g>
-        <path d="M20 11H4V9h16v2z"/>
-    </g>
+    <path d="M20 19H4v-2h16v2zM20 15H4v-2h16v2zM20 11H4V9h16v2z"/>
 </svg>
index ea40dde..e63a7d5 100644 (file)
@@ -1,12 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M20 19H4v-2h16v2z"/>
-    </g>
-    <g>
-        <path d="M20 15H4v-2h16v2z"/>
-    </g>
-    <g>
-        <path d="M20 11H4V9h16v2z"/>
-    </g>
+    <path d="M20 19H4v-2h16v2zM20 15H4v-2h16v2zM20 11H4V9h16v2z"/>
 </svg>
index a59f0d9..41505fb 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M20 11H4V9h16v2zM4 12h8v2H4v-2z"/>
-    </g>
+    <path d="M20 11H4V9h16v2zM4 12h8v2H4v-2z"/>
 </svg>
index a924c9c..767d6cd 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M20 11H4V9h16v2zM4 12h8v2H4v-2z"/>
-    </g>
+    <path d="M20 11H4V9h16v2zM4 12h8v2H4v-2z"/>
 </svg>
index 391597c..1b7c161 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g654">
-        <path d="M4 11h16V9H4v2zm16 1h-8v2h8v-2z" id="path656"/>
-    </g>
+    <path d="M4 11h16V9H4v2zm16 1h-8v2h8v-2z"/>
 </svg>
index 1da4bd9..4d16337 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g654">
-        <path d="M4 11h16V9H4v2zm16 1h-8v2h8v-2z" id="path656"/>
-    </g>
+    <path d="M4 11h16V9H4v2zm16 1h-8v2h8v-2z"/>
 </svg>
index 8710bd3..8adc078 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M17 13H4v-3h13v3zm-5 6H4v-3h8v3zM4 7V4h16v3H4z"/>
-    </g>
+    <path d="M17 13H4v-3h13v3zm-5 6H4v-3h8v3zM4 7V4h16v3H4z"/>
 </svg>
index b16a94b..9e87ded 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #347BFF }</style>
-    <g>
-        <path d="M17 13H4v-3h13v3zm-5 6H4v-3h8v3zM4 7V4h16v3H4z"/>
-    </g>
+    <path d="M17 13H4v-3h13v3zm-5 6H4v-3h8v3zM4 7V4h16v3H4z"/>
 </svg>
index 21ed0ea..d7c202e 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M17 13H4v-3h13v3zm-5 6H4v-3h8v3zM4 7V4h16v3H4z"/>
-    </g>
+    <path d="M17 13H4v-3h13v3zm-5 6H4v-3h8v3zM4 7V4h16v3H4z"/>
 </svg>
index 9dc9a54..9c5adaa 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g666">
-        <path d="M7 13h13v-3H7v3zm5 6h8v-3h-8v3zm8-12V4H4v3h16z" id="path668"/>
-    </g>
+    <path d="M7 13h13v-3H7v3zm5 6h8v-3h-8v3zm8-12V4H4v3h16z"/>
 </svg>
index 7485ba0..efc27ab 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #347BFF }</style>
-    <g id="g666">
-        <path d="M7 13h13v-3H7v3zm5 6h8v-3h-8v3zm8-12V4H4v3h16z" id="path668"/>
-    </g>
+    <path d="M7 13h13v-3H7v3zm5 6h8v-3h-8v3zm8-12V4H4v3h16z"/>
 </svg>
index 14b2f8c..0859be6 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g666">
-        <path d="M7 13h13v-3H7v3zm5 6h8v-3h-8v3zm8-12V4H4v3h16z" id="path668"/>
-    </g>
+    <path d="M7 13h13v-3H7v3zm5 6h8v-3h-8v3zm8-12V4H4v3h16z"/>
 </svg>
index f90bc0c..7559366 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M5.9 5.1c0 .3.1.6.3.9l1.4 1.4.9-.8-2.2-2.2c-.3.1-.4.4-.4.7zm.5 5.3H3.2c0 .3.1.6.4.9.3.3.5.4.8.4h2v-1.3zm6.2-5V2.2c-.3 0-.6.1-.9.4-.3.3-.4.5-.4.8v2h1.3zM6.2 17.1c.3 0 .6-.1.8-.3l1.4-1.4-.8-.8-2.2 2.2c.2.2.5.3.8.3zM17.8 4.9c-.3 0-.6.1-.8.3l-1.4 1.4.8.9 2.2-2.3c-.2-.2-.5-.3-.8-.3zm-5.2 11.7h-1.2v3.2c.3 0 .6-.1.9-.4.3-.3.4-.5.4-.8l-.1-2zm7-6.2h-2v1.2h3.2c0-.3-.1-.6-.4-.9-.3-.3-.5-.3-.8-.3zM17.8 16l-1.4-1.4-.8.8 2.2 2.2c.2-.2.3-.5.3-.8 0-.3-.1-.6-.3-.8z" id="path678"/>
-    <circle cx="12" cy="11" r="4" id="circle680" transform="matrix(-1 0 0 1 24 0)"/>
+    <path d="M5.9 5.1c0 .3.1.6.3.9l1.4 1.4.9-.8-2.2-2.2c-.3.1-.4.4-.4.7zm.5 5.3H3.2c0 .3.1.6.4.9.3.3.5.4.8.4h2v-1.3zm6.2-5V2.2c-.3 0-.6.1-.9.4-.3.3-.4.5-.4.8v2h1.3zM6.2 17.1c.3 0 .6-.1.8-.3l1.4-1.4-.8-.8-2.2 2.2c.2.2.5.3.8.3zM17.8 4.9c-.3 0-.6.1-.8.3l-1.4 1.4.8.9 2.2-2.3c-.2-.2-.5-.3-.8-.3zm-5.2 11.7h-1.2v3.2c.3 0 .6-.1.9-.4.3-.3.4-.5.4-.8l-.1-2zm7-6.2h-2v1.2h3.2c0-.3-.1-.6-.4-.9-.3-.3-.5-.3-.8-.3zM17.8 16l-1.4-1.4-.8.8 2.2 2.2c.2-.2.3-.5.3-.8 0-.3-.1-.6-.3-.8z"/>
+    <circle cx="12" cy="11" r="4" transform="matrix(-1 0 0 1 24 0)"/>
 </svg>
index 2570610..868334e 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M5.9 5.1c0 .3.1.6.3.9l1.4 1.4.9-.8-2.2-2.2c-.3.1-.4.4-.4.7zm.5 5.3H3.2c0 .3.1.6.4.9.3.3.5.4.8.4h2v-1.3zm6.2-5V2.2c-.3 0-.6.1-.9.4-.3.3-.4.5-.4.8v2h1.3zM6.2 17.1c.3 0 .6-.1.8-.3l1.4-1.4-.8-.8-2.2 2.2c.2.2.5.3.8.3zM17.8 4.9c-.3 0-.6.1-.8.3l-1.4 1.4.8.9 2.2-2.3c-.2-.2-.5-.3-.8-.3zm-5.2 11.7h-1.2v3.2c.3 0 .6-.1.9-.4.3-.3.4-.5.4-.8l-.1-2zm7-6.2h-2v1.2h3.2c0-.3-.1-.6-.4-.9-.3-.3-.5-.3-.8-.3zM17.8 16l-1.4-1.4-.8.8 2.2 2.2c.2-.2.3-.5.3-.8 0-.3-.1-.6-.3-.8z" id="path678"/>
-    <circle cx="12" cy="11" r="4" id="circle680" transform="matrix(-1 0 0 1 24 0)"/>
+    <path d="M5.9 5.1c0 .3.1.6.3.9l1.4 1.4.9-.8-2.2-2.2c-.3.1-.4.4-.4.7zm.5 5.3H3.2c0 .3.1.6.4.9.3.3.5.4.8.4h2v-1.3zm6.2-5V2.2c-.3 0-.6.1-.9.4-.3.3-.4.5-.4.8v2h1.3zM6.2 17.1c.3 0 .6-.1.8-.3l1.4-1.4-.8-.8-2.2 2.2c.2.2.5.3.8.3zM17.8 4.9c-.3 0-.6.1-.8.3l-1.4 1.4.8.9 2.2-2.3c-.2-.2-.5-.3-.8-.3zm-5.2 11.7h-1.2v3.2c.3 0 .6-.1.9-.4.3-.3.4-.5.4-.8l-.1-2zm7-6.2h-2v1.2h3.2c0-.3-.1-.6-.4-.9-.3-.3-.5-.3-.8-.3zM17.8 16l-1.4-1.4-.8.8 2.2 2.2c.2-.2.3-.5.3-.8 0-.3-.1-.6-.3-.8z"/>
+    <circle cx="12" cy="11" r="4" transform="matrix(-1 0 0 1 24 0)"/>
 </svg>
index 24e7133..415863e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-constructive.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-constructive.png differ
index aab025e..5df96fd 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #00AF89 }</style>
-    <g id="tag">
-        <path d="M18.748 11.717c.39.39.39 1.025 0 1.414l-4.95 4.95c-.388.39-1.024.39-1.413 0l-6.01-6.01c-.39-.385-.707-1.153-.707-1.703V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457c-.58.575-.578 1.513 0 2.092.577.573 1.515.573 2.094 0 .576-.58.576-1.52 0-2.098-.58-.576-1.518-.577-2.094 0z"/>
-    </g>
+    <path d="M18.748 11.717a1 1 0 0 1 0 1.414l-4.95 4.95a1 1 0 0 1-1.413 0l-6.01-6.01c-.39-.382-.707-1.15-.707-1.7V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457a1.477 1.477 0 0 0 0 2.092 1.49 1.49 0 0 0 2.094 0 1.49 1.49 0 0 0 0-2.1 1.484 1.484 0 0 0-2.094 0z" id="tag"/>
 </svg>
index d8571fe..d4697b3 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-destructive.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-destructive.png differ
index 1fe8f5a..631c9bc 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #D11D13 }</style>
-    <g id="tag">
-        <path d="M18.748 11.717c.39.39.39 1.025 0 1.414l-4.95 4.95c-.388.39-1.024.39-1.413 0l-6.01-6.01c-.39-.385-.707-1.153-.707-1.703V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457c-.58.575-.578 1.513 0 2.092.577.573 1.515.573 2.094 0 .576-.58.576-1.52 0-2.098-.58-.576-1.518-.577-2.094 0z"/>
-    </g>
+    <path d="M18.748 11.717a1 1 0 0 1 0 1.414l-4.95 4.95a1 1 0 0 1-1.413 0l-6.01-6.01c-.39-.382-.707-1.15-.707-1.7V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457a1.477 1.477 0 0 0 0 2.092 1.49 1.49 0 0 0 2.094 0 1.49 1.49 0 0 0 0-2.1 1.484 1.484 0 0 0-2.094 0z" id="tag"/>
 </svg>
index 1d59c50..de3190c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-invert.png differ
index 394e431..9fc98f7 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="tag">
-        <path d="M18.748 11.717c.39.39.39 1.025 0 1.414l-4.95 4.95c-.388.39-1.024.39-1.413 0l-6.01-6.01c-.39-.385-.707-1.153-.707-1.703V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457c-.58.575-.578 1.513 0 2.092.577.573 1.515.573 2.094 0 .576-.58.576-1.52 0-2.098-.58-.576-1.518-.577-2.094 0z"/>
-    </g>
+    <path d="M18.748 11.717a1 1 0 0 1 0 1.414l-4.95 4.95a1 1 0 0 1-1.413 0l-6.01-6.01c-.39-.382-.707-1.15-.707-1.7V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457a1.477 1.477 0 0 0 0 2.092 1.49 1.49 0 0 0 2.094 0 1.49 1.49 0 0 0 0-2.1 1.484 1.484 0 0 0-2.094 0z" id="tag"/>
 </svg>
index b2c39f7..b37a917 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-progressive.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-progressive.png differ
index 0f140c3..24c64c2 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #347BFF }</style>
-    <g id="tag">
-        <path d="M18.748 11.717c.39.39.39 1.025 0 1.414l-4.95 4.95c-.388.39-1.024.39-1.413 0l-6.01-6.01c-.39-.385-.707-1.153-.707-1.703V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457c-.58.575-.578 1.513 0 2.092.577.573 1.515.573 2.094 0 .576-.58.576-1.52 0-2.098-.58-.576-1.518-.577-2.094 0z"/>
-    </g>
+    <path d="M18.748 11.717a1 1 0 0 1 0 1.414l-4.95 4.95a1 1 0 0 1-1.413 0l-6.01-6.01c-.39-.382-.707-1.15-.707-1.7V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457a1.477 1.477 0 0 0 0 2.092 1.49 1.49 0 0 0 2.094 0 1.49 1.49 0 0 0 0-2.1 1.484 1.484 0 0 0-2.094 0z" id="tag"/>
 </svg>
index 1049e15..93ebb5d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-warning.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-warning.png differ
index ed26598..3cbd445 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FF5D00 }</style>
-    <g id="tag">
-        <path d="M18.748 11.717c.39.39.39 1.025 0 1.414l-4.95 4.95c-.388.39-1.024.39-1.413 0l-6.01-6.01c-.39-.385-.707-1.153-.707-1.703V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457c-.58.575-.578 1.513 0 2.092.577.573 1.515.573 2.094 0 .576-.58.576-1.52 0-2.098-.58-.576-1.518-.577-2.094 0z"/>
-    </g>
+    <path d="M18.748 11.717a1 1 0 0 1 0 1.414l-4.95 4.95a1 1 0 0 1-1.413 0l-6.01-6.01c-.39-.382-.707-1.15-.707-1.7V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457a1.477 1.477 0 0 0 0 2.092 1.49 1.49 0 0 0 2.094 0 1.49 1.49 0 0 0 0-2.1 1.484 1.484 0 0 0-2.094 0z" id="tag"/>
 </svg>
index 3bfbd0b..46c07c9 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag.png differ
index 5265e04..7a211a3 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="tag">
-        <path d="M18.748 11.717c.39.39.39 1.025 0 1.414l-4.95 4.95c-.388.39-1.024.39-1.413 0l-6.01-6.01c-.39-.385-.707-1.153-.707-1.703V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457c-.58.575-.578 1.513 0 2.092.577.573 1.515.573 2.094 0 .576-.58.576-1.52 0-2.098-.58-.576-1.518-.577-2.094 0z"/>
-    </g>
+    <path d="M18.748 11.717a1 1 0 0 1 0 1.414l-4.95 4.95a1 1 0 0 1-1.413 0l-6.01-6.01c-.39-.382-.707-1.15-.707-1.7V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457a1.477 1.477 0 0 0 0 2.092 1.49 1.49 0 0 0 2.094 0 1.49 1.49 0 0 0 0-2.1 1.484 1.484 0 0 0-2.094 0z" id="tag"/>
 </svg>
index f5dfa9d..10cb834 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr-invert.png differ
index c97070d..0ed2901 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M24 6h-4V2h-2v4h-4v2h4v4h2V8h4z"/>
+    <g id="template-add">
+        <path id="add" d="M23 7h-4V3h-2v4h-4v2h4v4h2V9h4z"/>
+        <path id="template" d="M18 14v4H6c-1.1 0-2-.9-2-2V8h8V7H3v9c0 1.7 1.3 3 3 3h13v-5z"/>
     </g>
-    <path d="M19 13v7H3c-1.1 0-2-.9-2-2V7h12V6H0v12c0 1.7 1.3 3 3 3h17v-8h-1z"/>
 </svg>
index dd52d12..f7a51c9 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr.png differ
index 13b1fc7..8cd95e0 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M24 6h-4V2h-2v4h-4v2h4v4h2V8h4z"/>
+    <g id="template-add">
+        <path id="add" d="M23 7h-4V3h-2v4h-4v2h4v4h2V9h4z"/>
+        <path id="template" d="M18 14v4H6c-1.1 0-2-.9-2-2V8h8V7H3v9c0 1.7 1.3 3 3 3h13v-5z"/>
     </g>
-    <path d="M19 13v7H3c-1.1 0-2-.9-2-2V7h12V6H0v12c0 1.7 1.3 3 3 3h17v-8h-1z"/>
 </svg>
index 23c7292..d47a083 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl-invert.png differ
index 6593fc7..3927113 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g690">
-        <path d="M0 6h4V2h2v4h4v2H6v4H4V8H0z" id="path692"/>
+    <g id="template-add">
+        <path id="add" d="M1 7h4V3h2v4h4v2H7v4H5V9H1z"/>
+        <path id="template" d="M6 14v4h12c1.1 0 2-.9 2-2V8h-8V7h9v9c0 1.7-1.3 3-3 3H5v-5z"/>
     </g>
-    <path d="M5 13v7h16c1.1 0 2-.9 2-2V7H11V6h13v12c0 1.7-1.3 3-3 3H4v-8h1z" id="path694"/>
 </svg>
index 08b1613..3bb8174 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl.png differ
index d44c3a4..62b30f5 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g690">
-        <path d="M0 6h4V2h2v4h4v2H6v4H4V8H0z" id="path692"/>
+    <g id="template-add">
+        <path id="add" d="M1 7h4V3h2v4h4v2H7v4H5V9H1z"/>
+        <path id="template" d="M6 14v4h12c1.1 0 2-.9 2-2V8h-8V7h9v9c0 1.7-1.3 3-3 3H5v-5z"/>
     </g>
-    <path d="M5 13v7h16c1.1 0 2-.9 2-2V7H11V6h13v12c0 1.7-1.3 3-3 3H4v-8h1z" id="path694"/>
 </svg>
index ae694bc..8328910 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="text-dir-ltr">
-        <path d="M7 7H5V6h2l.47.5L8 6h2v1H8v10h2v1H8l-.5-.53L7 18H5v-1h2zm6.976 9v-2H11v-4h2.976V8.044L20 12.022z"/>
-    </g>
+    <path d="M7 7H5V6h2l.47.5L8 6h2v1H8v10h2v1H8l-.5-.53L7 18H5v-1h2zm6.976 9v-2H11v-4h2.976V8.044L20 12.022z" id="text-dir-ltr"/>
 </svg>
index 7dbff91..83dd769 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="text-dir-ltr">
-        <path d="M7 7H5V6h2l.47.5L8 6h2v1H8v10h2v1H8l-.5-.53L7 18H5v-1h2zm6.976 9v-2H11v-4h2.976V8.044L20 12.022z"/>
-    </g>
+    <path d="M7 7H5V6h2l.47.5L8 6h2v1H8v10h2v1H8l-.5-.53L7 18H5v-1h2zm6.976 9v-2H11v-4h2.976V8.044L20 12.022z" id="text-dir-ltr"/>
 </svg>
index 5536285..2218b3a 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="text-dir-rtl">
-        <path d="M17 17h2v1h-2l-.47-.5-.53.5h-2v-1h2V7h-2V6h2l.5.53L17 6h2v1h-2zm-6.976-9v2H13v4h-2.976v1.956L4 11.978z"/>
-    </g>
+    <path d="M17 17h2v1h-2l-.47-.5-.53.5h-2v-1h2V7h-2V6h2l.5.53L17 6h2v1h-2zm-6.976-9v2H13v4h-2.976v1.956L4 11.978z" id="text-dir-rtl"/>
 </svg>
index 76933a6..78cb85b 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="text-dir-rtl">
-        <path d="M17 17h2v1h-2l-.47-.5-.53.5h-2v-1h2V7h-2V6h2l.5.53L17 6h2v1h-2zm-6.976-9v2H13v4h-2.976v1.956L4 11.978z"/>
-    </g>
+    <path d="M17 17h2v1h-2l-.47-.5-.53.5h-2v-1h2V7h-2V6h2l.5.53L17 6h2v1h-2zm-6.976-9v2H13v4h-2.976v1.956L4 11.978z" id="text-dir-rtl"/>
 </svg>
index 8717c94..0c4c20a 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M20.5 20.5L5 5 4 6l3 3 1 11h8l.2-1.8 3.3 3.3zM17 9h-6l5.5 5.5zm1-1c0-1.1-.9-2-2-2h-2l-1-1h-2l-1 1H8l2 2h8z"/>
-    </g>
+    <path d="M20.5 20.5L5 5 4 6l3 3 1 11h8l.2-1.8 3.3 3.3zM17 9h-6l5.5 5.5zm1-1c0-1.1-.9-2-2-2h-2l-1-1h-2l-1 1H8l2 2h8z"/>
 </svg>
index 071bd32..64b3b71 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M20.5 20.5L5 5 4 6l3 3 1 11h8l.2-1.8 3.3 3.3zM17 9h-6l5.5 5.5zm1-1c0-1.1-.9-2-2-2h-2l-1-1h-2l-1 1H8l2 2h8z"/>
-    </g>
+    <path d="M20.5 20.5L5 5 4 6l3 3 1 11h8l.2-1.8 3.3 3.3zM17 9h-6l5.5 5.5zm1-1c0-1.1-.9-2-2-2h-2l-1-1h-2l-1 1H8l2 2h8z"/>
 </svg>
index af43db7..e27acd9 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g714">
-        <path d="M4 20.5L19.5 5l1 1-3 3-1 11h-8l-.2-1.8L5 21.5zM7.5 9h6L8 14.5zm-1-1c0-1.1.9-2 2-2h2l1-1h2l1 1h2l-2 2h-8z" id="path716"/>
-    </g>
+    <path d="M4 20.5L19.5 5l1 1-3 3-1 11h-8l-.2-1.8L5 21.5zM7.5 9h6L8 14.5zm-1-1c0-1.1.9-2 2-2h2l1-1h2l1 1h2l-2 2h-8z"/>
 </svg>
index 69c17b4..e5e4032 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g714">
-        <path d="M4 20.5L19.5 5l1 1-3 3-1 11h-8l-.2-1.8L5 21.5zM7.5 9h6L8 14.5zm-1-1c0-1.1.9-2 2-2h2l1-1h2l1 1h2l-2 2h-8z" id="path716"/>
-    </g>
+    <path d="M4 20.5L19.5 5l1 1-3 3-1 11h-8l-.2-1.8L5 21.5zM7.5 9h6L8 14.5zm-1-1c0-1.1.9-2 2-2h2l1-1h2l1 1h2l-2 2h-8z"/>
 </svg>
index 9629e8f..7a6c291 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #D11D13 }</style>
-    <path d="M12 9V7s0-5-4.5-5S3 7 3 7h2s0-3 2.5-3S10 7 10 7v2H7v7c0 1.7 1.3 3 3 3h10V9z" id="path726"/>
+    <path d="M12 9V7s0-5-4.5-5S3 7 3 7h2s0-3 2.5-3S10 7 10 7v2H7v7c0 1.7 1.3 3 3 3h10V9z"/>
 </svg>
index ef4247a..53c2153 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M12 9V7s0-5-4.5-5S3 7 3 7h2s0-3 2.5-3S10 7 10 7v2H7v7c0 1.7 1.3 3 3 3h10V9z" id="path726"/>
+    <path d="M12 9V7s0-5-4.5-5S3 7 3 7h2s0-3 2.5-3S10 7 10 7v2H7v7c0 1.7 1.3 3 3 3h10V9z"/>
 </svg>
index cf12ece..25e0860 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M12 9V7s0-5-4.5-5S3 7 3 7h2s0-3 2.5-3S10 7 10 7v2H7v7c0 1.7 1.3 3 3 3h10V9z" id="path726"/>
+    <path d="M12 9V7s0-5-4.5-5S3 7 3 7h2s0-3 2.5-3S10 7 10 7v2H7v7c0 1.7 1.3 3 3 3h10V9z"/>
 </svg>
index 73e0db1..f2e301c 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #D11D13 }</style>
-    <path d="M11 9V7s0-5 4.5-5S20 7 20 7h-2s0-3-2.5-3S13 7 13 7v2h3v7c0 1.7-1.3 3-3 3H3V9z" id="path726"/>
+    <path d="M11 9V7s0-5 4.5-5S20 7 20 7h-2s0-3-2.5-3S13 7 13 7v2h3v7c0 1.7-1.3 3-3 3H3V9z"/>
 </svg>
index ce5f164..0de2e76 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M11 9V7s0-5 4.5-5S20 7 20 7h-2s0-3-2.5-3S13 7 13 7v2h3v7c0 1.7-1.3 3-3 3H3V9z" id="path726"/>
+    <path d="M11 9V7s0-5 4.5-5S20 7 20 7h-2s0-3-2.5-3S13 7 13 7v2h3v7c0 1.7-1.3 3-3 3H3V9z"/>
 </svg>
index 0004535..577b570 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M11 9V7s0-5 4.5-5S20 7 20 7h-2s0-3-2.5-3S13 7 13 7v2h3v7c0 1.7-1.3 3-3 3H3V9z" id="path726"/>
+    <path d="M11 9V7s0-5 4.5-5S20 7 20 7h-2s0-3-2.5-3S13 7 13 7v2h3v7c0 1.7-1.3 3-3 3H3V9z"/>
 </svg>
index c998822..f1c82d2 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="underline-u">
-        <path id="u" d="M8 6h2v5.96c-.104 1.706.695 2 2 2.04 1.777.062 2.002-.88 2-2.04V6h2v6.123c0 1.28-.338 2.245-1.016 2.898-.672.655-1.666.98-2.98.98-1.32 0-2.32-.323-2.996-.98C8.336 14.37 8 13.406 8 12.127V6"/>
+        <path id="u" d="M8 6h2v5.96c-.104 1.706.695 2 2 2.04 1.777.062 2.002-.88 2-2.04V6h2v6.123c0 1.28-.338 2.245-1.016 2.898-.672.658-1.666.98-2.98.98-1.32 0-2.32-.32-2.996-.98C8.336 14.37 8 13.41 8 12.13V6"/>
         <path id="underline" d="M7 17h10v1H7v-1z"/>
     </g>
 </svg>
index f5aaf5d..ff47e2c 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="underline-u">
-        <path id="u" d="M8 6h2v5.96c-.104 1.706.695 2 2 2.04 1.777.062 2.002-.88 2-2.04V6h2v6.123c0 1.28-.338 2.245-1.016 2.898-.672.655-1.666.98-2.98.98-1.32 0-2.32-.323-2.996-.98C8.336 14.37 8 13.406 8 12.127V6"/>
+        <path id="u" d="M8 6h2v5.96c-.104 1.706.695 2 2 2.04 1.777.062 2.002-.88 2-2.04V6h2v6.123c0 1.28-.338 2.245-1.016 2.898-.672.658-1.666.98-2.98.98-1.32 0-2.32-.32-2.996-.98C8.336 14.37 8 13.41 8 12.13V6"/>
         <path id="underline" d="M7 17h10v1H7v-1z"/>
     </g>
 </svg>
index 2ba1d09..29eca3d 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M10 13c0 1.7 1.3 3 3 3V9h3l-4.5-5L7 9h3v4zm7 0v5H7c-.6 0-1-.4-1-1v-4H4v4c0 1.9 1.3 3 3 3h12v-7h-2z"/>
-    </g>
+    <path d="M10 13c0 1.7 1.3 3 3 3V9h3l-4.5-5L7 9h3v4zm7 0v5H7c-.6 0-1-.4-1-1v-4H4v4c0 1.9 1.3 3 3 3h12v-7h-2z"/>
 </svg>
index e07541d..dc4676f 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M10 13c0 1.7 1.3 3 3 3V9h3l-4.5-5L7 9h3v4zm7 0v5H7c-.6 0-1-.4-1-1v-4H4v4c0 1.9 1.3 3 3 3h12v-7h-2z"/>
-    </g>
+    <path d="M10 13c0 1.7 1.3 3 3 3V9h3l-4.5-5L7 9h3v4zm7 0v5H7c-.6 0-1-.4-1-1v-4H4v4c0 1.9 1.3 3 3 3h12v-7h-2z"/>
 </svg>
index b181c6c..1f81996 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g736">
-        <path d="M13 13c0 1.7-1.3 3-3 3V9H7l4.5-5L16 9h-3v4zm-7 0v5h10c.6 0 1-.4 1-1v-4h2v4c0 1.9-1.3 3-3 3H4v-7h2z" id="path738"/>
-    </g>
+    <path d="M13 13c0 1.7-1.3 3-3 3V9H7l4.5-5L16 9h-3v4zm-7 0v5h10c.6 0 1-.4 1-1v-4h2v4c0 1.9-1.3 3-3 3H4v-7h2z"/>
 </svg>
index 0f3d629..ed3fe77 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g736">
-        <path d="M13 13c0 1.7-1.3 3-3 3V9H7l4.5-5L16 9h-3v4zm-7 0v5h10c.6 0 1-.4 1-1v-4h2v4c0 1.9-1.3 3-3 3H4v-7h2z" id="path738"/>
-    </g>
+    <path d="M13 13c0 1.7-1.3 3-3 3V9H7l4.5-5L16 9h-3v4zm-7 0v5h10c.6 0 1-.4 1-1v-4h2v4c0 1.9-1.3 3-3 3H4v-7h2z"/>
 </svg>
index 8a8e6ec..80c3aa8 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M7 5h12v12c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3zm2 4c-.7 0-1.2.6-1.2 1.2s.6 1.2 1.2 1.2 1.2-.6 1.2-1.2S9.7 9 9 9zm5 0c-.7 0-1.2.6-1.2 1.2s.5 1.3 1.2 1.3 1.2-.6 1.2-1.2S14.7 9 14 9zm-7 5.4c0 .2.1.3.3.5.7.6 1.6 1 2.6 1.3 1 .3 2.1.2 3.1 0s2-.9 2.7-1.5c.1-.1.2-.3.2-.4 0-.1-.1-.3-.2-.4-.1-.1-.3-.2-.4-.2-.2 0-.3.1-.4.2-.5.5-1.2.9-2.1 1.1-.9.2-1.7.2-2.6 0-.9-.2-1.6-.5-2.1-1-.1-.1-.3-.2-.4-.2-.1 0-.3.1-.5.2s-.2.2-.2.4z" id="path748"/>
+    <path d="M7 5h12v12c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3zm2 4c-.7 0-1.2.6-1.2 1.2s.6 1.2 1.2 1.2 1.2-.6 1.2-1.2S9.7 9 9 9zm5 0c-.7 0-1.2.6-1.2 1.2s.5 1.3 1.2 1.3 1.2-.6 1.2-1.2S14.7 9 14 9zm-7 5.4c0 .2.1.3.3.5.7.6 1.6 1 2.6 1.3 1 .3 2.1.2 3.1 0s2-.9 2.7-1.5c.1-.1.2-.3.2-.4 0-.1-.1-.3-.2-.4-.1-.1-.3-.2-.4-.2-.2 0-.3.1-.4.2-.5.5-1.2.9-2.1 1.1-.9.2-1.7.2-2.6 0-.9-.2-1.6-.5-2.1-1-.1-.1-.3-.2-.4-.2-.1 0-.3.1-.5.2s-.2.2-.2.4z"/>
 </svg>
index a451f00..838ae31 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M7 5h12v12c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3zm2 4c-.7 0-1.2.6-1.2 1.2s.6 1.2 1.2 1.2 1.2-.6 1.2-1.2S9.7 9 9 9zm5 0c-.7 0-1.2.6-1.2 1.2s.5 1.3 1.2 1.3 1.2-.6 1.2-1.2S14.7 9 14 9zm-7 5.4c0 .2.1.3.3.5.7.6 1.6 1 2.6 1.3 1 .3 2.1.2 3.1 0s2-.9 2.7-1.5c.1-.1.2-.3.2-.4 0-.1-.1-.3-.2-.4-.1-.1-.3-.2-.4-.2-.2 0-.3.1-.4.2-.5.5-1.2.9-2.1 1.1-.9.2-1.7.2-2.6 0-.9-.2-1.6-.5-2.1-1-.1-.1-.3-.2-.4-.2-.1 0-.3.1-.5.2s-.2.2-.2.4z" id="path748"/>
+    <path d="M7 5h12v12c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3zm2 4c-.7 0-1.2.6-1.2 1.2s.6 1.2 1.2 1.2 1.2-.6 1.2-1.2S9.7 9 9 9zm5 0c-.7 0-1.2.6-1.2 1.2s.5 1.3 1.2 1.3 1.2-.6 1.2-1.2S14.7 9 14 9zm-7 5.4c0 .2.1.3.3.5.7.6 1.6 1 2.6 1.3 1 .3 2.1.2 3.1 0s2-.9 2.7-1.5c.1-.1.2-.3.2-.4 0-.1-.1-.3-.2-.4-.1-.1-.3-.2-.4-.2-.2 0-.3.1-.4.2-.5.5-1.2.9-2.1 1.1-.9.2-1.7.2-2.6 0-.9-.2-1.6-.5-2.1-1-.1-.1-.3-.2-.4-.2-.1 0-.3.1-.5.2s-.2.2-.2.4z"/>
 </svg>
index 1adbac0..f1e7c79 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar-invert.png differ
index 22b83ed..60a35c7 100644 (file)
@@ -1,8 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g4">
-        <g id="g6">
-            <path d="M11.5 13c1.7 0 3.5-2 3.5-5 0-.1 0-4-3.5-4S8 7.9 8 8c0 3 1.8 5 3.5 5zm3.5-1c-.4.7-1.7 2-3.5 2S8.3 12.7 8 12H6c-1.1 0-2 .9-2 2v6h15v-6c0-1.1-.9-2-2-2h-2z" id="path8"/>
-        </g>
-    </g>
+    <path d="M18.75 17.4c-1.08-.36-3.6-1.35-3.6-1.35-.81-.27-.81-.99-.9-1.8v-.09c1.26-1.08 2.25-2.88 2.25-4.86 0-4.23-1.8-5.85-4.5-5.85-1.89 0-4.5 1.08-4.5 5.85 0 1.89.99 3.69 2.25 4.86v.09c0 .81-.09 1.53-.9 1.8 0 0-2.61.99-3.6 1.35-1.17.36-2.25.9-2.25 2.25v.9h18v-.9c0-1.08-.72-1.8-2.25-2.25z"/>
 </svg>
index 3c3fb47..33e5fe9 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar.png differ
index 1bf7d80..ce714e6 100644 (file)
@@ -1,8 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g4">
-        <g id="g6">
-            <path d="M11.5 13c1.7 0 3.5-2 3.5-5 0-.1 0-4-3.5-4S8 7.9 8 8c0 3 1.8 5 3.5 5zm3.5-1c-.4.7-1.7 2-3.5 2S8.3 12.7 8 12H6c-1.1 0-2 .9-2 2v6h15v-6c0-1.1-.9-2-2-2h-2z" id="path8"/>
-        </g>
-    </g>
+    <path d="M18.75 17.4c-1.08-.36-3.6-1.35-3.6-1.35-.81-.27-.81-.99-.9-1.8v-.09c1.26-1.08 2.25-2.88 2.25-4.86 0-4.23-1.8-5.85-4.5-5.85-1.89 0-4.5 1.08-4.5 5.85 0 1.89.99 3.69 2.25 4.86v.09c0 .81-.09 1.53-.9 1.8 0 0-2.61.99-3.6 1.35-1.17.36-2.25.9-2.25 2.25v.9h18v-.9c0-1.08-.72-1.8-2.25-2.25z"/>
 </svg>
index cc568bb..309c972 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M7 5h12v12c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3zm9.3 5.4c.5-.4.7-.8.7-1.4-.6.6-1.5.9-2.5.9S12.6 9.6 12 9c0 .6.2 1 .7 1.4.5.4 1.1.6 1.8.6s1.3-.2 1.8-.6zm-8.4 4.3c0 .2.1.3.3.4 1 .6 2.2.9 3.5.9 1.2 0 2.3-.3 3.3-1 .2-.1.2-.2.3-.4.1-.2 0-.3-.1-.5s-.2-.2-.4-.3c-.2-.1-.3 0-.5.1-.8.5-1.7.8-2.8.8-1.1 0-2-.2-2.8-.7-.1-.1-.3-.1-.5-.1s-.3.1-.4.3l.1.5zm-1.2-4.3c.5.4 1.1.6 1.8.6s1.3-.2 1.8-.6c.5-.4.7-.8.7-1.4-.6.6-1.5.9-2.5.9S6.6 9.6 6 9c0 .6.2 1 .7 1.4z" id="path758"/>
+    <path d="M7 5h12v12c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3zm9.3 5.4c.5-.4.7-.8.7-1.4-.6.6-1.5.9-2.5.9S12.6 9.6 12 9c0 .6.2 1 .7 1.4.5.4 1.1.6 1.8.6s1.3-.2 1.8-.6zm-8.4 4.3c0 .2.1.3.3.4 1 .6 2.2.9 3.5.9 1.2 0 2.3-.3 3.3-1 .2-.1.2-.2.3-.4.1-.2 0-.3-.1-.5s-.2-.2-.4-.3c-.2-.1-.3 0-.5.1-.8.5-1.7.8-2.8.8-1.1 0-2-.2-2.8-.7-.1-.1-.3-.1-.5-.1s-.3.1-.4.3l.1.5zm-1.2-4.3c.5.4 1.1.6 1.8.6s1.3-.2 1.8-.6c.5-.4.7-.8.7-1.4-.6.6-1.5.9-2.5.9S6.6 9.6 6 9c0 .6.2 1 .7 1.4z"/>
 </svg>
index d4476bd..039e662 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M7 5h12v12c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3zm9.3 5.4c.5-.4.7-.8.7-1.4-.6.6-1.5.9-2.5.9S12.6 9.6 12 9c0 .6.2 1 .7 1.4.5.4 1.1.6 1.8.6s1.3-.2 1.8-.6zm-8.4 4.3c0 .2.1.3.3.4 1 .6 2.2.9 3.5.9 1.2 0 2.3-.3 3.3-1 .2-.1.2-.2.3-.4.1-.2 0-.3-.1-.5s-.2-.2-.4-.3c-.2-.1-.3 0-.5.1-.8.5-1.7.8-2.8.8-1.1 0-2-.2-2.8-.7-.1-.1-.3-.1-.5-.1s-.3.1-.4.3l.1.5zm-1.2-4.3c.5.4 1.1.6 1.8.6s1.3-.2 1.8-.6c.5-.4.7-.8.7-1.4-.6.6-1.5.9-2.5.9S6.6 9.6 6 9c0 .6.2 1 .7 1.4z" id="path758"/>
+    <path d="M7 5h12v12c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3zm9.3 5.4c.5-.4.7-.8.7-1.4-.6.6-1.5.9-2.5.9S12.6 9.6 12 9c0 .6.2 1 .7 1.4.5.4 1.1.6 1.8.6s1.3-.2 1.8-.6zm-8.4 4.3c0 .2.1.3.3.4 1 .6 2.2.9 3.5.9 1.2 0 2.3-.3 3.3-1 .2-.1.2-.2.3-.4.1-.2 0-.3-.1-.5s-.2-.2-.4-.3c-.2-.1-.3 0-.5.1-.8.5-1.7.8-2.8.8-1.1 0-2-.2-2.8-.7-.1-.1-.3-.1-.5-.1s-.3.1-.4.3l.1.5zm-1.2-4.3c.5.4 1.1.6 1.8.6s1.3-.2 1.8-.6c.5-.4.7-.8.7-1.4-.6.6-1.5.9-2.5.9S6.6 9.6 6 9c0 .6.2 1 .7 1.4z"/>
 </svg>
index 0a165c4..9d1146e 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M5 6v11l-3 3h17c1.7 0 3-1.3 3-3V6H5zm11.2 2.5c.7 0 1.2.6 1.2 1.2s-.5 1.3-1.2 1.3-1.2-.6-1.2-1.2.6-1.3 1.2-1.3zm-5.4 0c.7 0 1.2.6 1.2 1.2s-.6 1.3-1.2 1.3-1.2-.6-1.2-1.2.5-1.3 1.2-1.3zm2.7 8.5c-5.1 0-6-5-6-5s2 1 6 1l6-1s-1 5-6 5z" id="path6"/>
+    <path d="M5 6v11l-3 3h17c1.7 0 3-1.3 3-3V6H5zm11.2 2.5c.7 0 1.2.6 1.2 1.2s-.5 1.3-1.2 1.3-1.2-.6-1.2-1.2.6-1.3 1.2-1.3zm-5.4 0c.7 0 1.2.6 1.2 1.2s-.6 1.3-1.2 1.3-1.2-.6-1.2-1.2.5-1.3 1.2-1.3zm2.7 8.5c-5.1 0-6-5-6-5s2 1 6 1l6-1s-1 5-6 5z"/>
 </svg>
index b58974c..f277ce4 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M5 6v11l-3 3h17c1.7 0 3-1.3 3-3V6H5zm11.2 2.5c.7 0 1.2.6 1.2 1.2s-.5 1.3-1.2 1.3-1.2-.6-1.2-1.2.6-1.3 1.2-1.3zm-5.4 0c.7 0 1.2.6 1.2 1.2s-.6 1.3-1.2 1.3-1.2-.6-1.2-1.2.5-1.3 1.2-1.3zm2.7 8.5c-5.1 0-6-5-6-5s2 1 6 1l6-1s-1 5-6 5z" id="path6"/>
+    <path d="M5 6v11l-3 3h17c1.7 0 3-1.3 3-3V6H5zm11.2 2.5c.7 0 1.2.6 1.2 1.2s-.5 1.3-1.2 1.3-1.2-.6-1.2-1.2.6-1.3 1.2-1.3zm-5.4 0c.7 0 1.2.6 1.2 1.2s-.6 1.3-1.2 1.3-1.2-.6-1.2-1.2.5-1.3 1.2-1.3zm2.7 8.5c-5.1 0-6-5-6-5s2 1 6 1l6-1s-1 5-6 5z"/>
 </svg>
index 3b91712..4735526 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M19 6v11l3 3H5c-1.7 0-3-1.3-3-3V6h17zM7.8 8.5c-.7 0-1.2.6-1.2 1.2S7.1 11 7.8 11 9 10.4 9 9.8s-.6-1.3-1.2-1.3zm5.4 0c-.7 0-1.2.6-1.2 1.2s.6 1.3 1.2 1.3 1.2-.6 1.2-1.2-.5-1.3-1.2-1.3zM10.5 17c5.1 0 6-5 6-5s-2 1-6 1l-6-1s1 5 6 5z" id="path770"/>
+    <path d="M19 6v11l3 3H5c-1.7 0-3-1.3-3-3V6h17zM7.8 8.5c-.7 0-1.2.6-1.2 1.2S7.1 11 7.8 11 9 10.4 9 9.8s-.6-1.3-1.2-1.3zm5.4 0c-.7 0-1.2.6-1.2 1.2s.6 1.3 1.2 1.3 1.2-.6 1.2-1.2-.5-1.3-1.2-1.3zM10.5 17c5.1 0 6-5 6-5s-2 1-6 1l-6-1s1 5 6 5z"/>
 </svg>
index 7ef9ec2..0f9a6fb 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M19 6v11l3 3H5c-1.7 0-3-1.3-3-3V6h17zM7.8 8.5c-.7 0-1.2.6-1.2 1.2S7.1 11 7.8 11 9 10.4 9 9.8s-.6-1.3-1.2-1.3zm5.4 0c-.7 0-1.2.6-1.2 1.2s.6 1.3 1.2 1.3 1.2-.6 1.2-1.2-.5-1.3-1.2-1.3zM10.5 17c5.1 0 6-5 6-5s-2 1-6 1l-6-1s1 5 6 5z" id="path770"/>
+    <path d="M19 6v11l3 3H5c-1.7 0-3-1.3-3-3V6h17zM7.8 8.5c-.7 0-1.2.6-1.2 1.2S7.1 11 7.8 11 9 10.4 9 9.8s-.6-1.3-1.2-1.3zm5.4 0c-.7 0-1.2.6-1.2 1.2s.6 1.3 1.2 1.3 1.2-.6 1.2-1.2-.5-1.3-1.2-1.3zM10.5 17c5.1 0 6-5 6-5s-2 1-6 1l-6-1s1 5 6 5z"/>
 </svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator-invert.png
new file mode 100644 (file)
index 0000000..118e468
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator-invert.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator-invert.svg
new file mode 100644 (file)
index 0000000..ae0d94e
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
+    <path d="M0 10v8h2.3c.3.6 1 1 1.7 1h4c1.5 0 2.7-.8 3-2h2c.3 1.2 1.5 2 3 2h4c.7 0 1.4 0 1.7-1H24v-8zm10 6c0 1-.4 2-2 2H4c-.6 0-1-.4-1-1v-3c0-.6.4-1 1-1h5c.6 0 1 .4 1 1zm11 1c0 .6-.4 1-1 1h-4c-1.6 0-2-1-2-2v-2c0-.6.4-1 1-1h5c.6 0 1 .4 1 1z"/>
+</svg>
index 5e4a2f3..7545aeb 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M13 14h5v1h-5v-1zm0 3h5v-1h-5v1zm0 1h5v1h-5v-1zm-1-5v3l-5 3 1-6-4-3 6-1 2-5s1.9 5 2 5l6 1-4 3h-4z"/>
-    </g>
+    <path d="M13 14h5v1h-5v-1zm0 3h5v-1h-5v1zm0 1h5v1h-5v-1zm-1-5v3l-5 3 1-6-4-3 6-1 2-5s1.9 5 2 5l6 1-4 3h-4z"/>
 </svg>
index 79c7d5c..b13df22 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M13 14h5v1h-5v-1zm0 3h5v-1h-5v1zm0 1h5v1h-5v-1zm-1-5v3l-5 3 1-6-4-3 6-1 2-5s1.9 5 2 5l6 1-4 3h-4z"/>
-    </g>
+    <path d="M13 14h5v1h-5v-1zm0 3h5v-1h-5v1zm0 1h5v1h-5v-1zm-1-5v3l-5 3 1-6-4-3 6-1 2-5s1.9 5 2 5l6 1-4 3h-4z"/>
 </svg>
index 073ef3d..812ee38 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g780">
-        <path d="M11 14H6v1h5v-1zm0 3H6v-1h5v1zm0 1H6v1h5v-1zm1-5v3l5 3-1-6 4-3-6-1-2-5s-1.9 5-2 5l-6 1 4 3h4z" id="path782"/>
-    </g>
+    <path d="M11 14H6v1h5v-1zm0 3H6v-1h5v1zm0 1H6v1h5v-1zm1-5v3l5 3-1-6 4-3-6-1-2-5s-1.9 5-2 5l-6 1 4 3h4z"/>
 </svg>
index 8bfe43e..a4ec49a 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g780">
-        <path d="M11 14H6v1h5v-1zm0 3H6v-1h5v1zm0 1H6v1h5v-1zm1-5v3l5 3-1-6 4-3-6-1-2-5s-1.9 5-2 5l-6 1 4 3h4z" id="path782"/>
-    </g>
+    <path d="M11 14H6v1h5v-1zm0 3H6v-1h5v1zm0 1H6v1h5v-1zm1-5v3l5 3-1-6 4-3-6-1-2-5s-1.9 5-2 5l-6 1 4 3h4z"/>
 </svg>
index 652b9c4..dc90fba 100644 (file)
@@ -1,8 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M15 9l.7-1.8c.9.4 1.8.7 2.4.9l-.6 1.7v.2L15 9zm-4.3-1.9l.8-1.8c1.2.5 2.6 1.1 3 1.4l-.8 1.8-3-1.4zm-5.9-1c-.8 0-1.4.2-2 .6L1.7 5c.9-.6 1.9-.9 3.1-.9v2zm-4.3.7l1.8.8c-.3.7-.3 1.3-.1 1.8l-1.9.7C0 8.9 0 7.8.5 6.8zm4.2 5.4l-1.3 1.5c-1-1-1.7-1.6-2-2l1.5-1.3c.7.8 1.3 1.4 1.8 1.8zm7.3 4.3c0 1.9-1.6 3.5-3.5 3.5S5 18.4 5 16.5 6.6 13 8.5 13s3.5 1.6 3.5 3.5z"/>
-    </g>
-    <path d="M24 8l-1-1-1.5 1.5L20 7l-1 1 1.5 1.5L19 11l1 1 1.5-1.5L23 12l1-1-1.5-1.5z"/>
+    <path d="M15 9l.7-1.8c.9.4 1.8.7 2.4.9l-.6 1.7v.2L15 9zm-4.3-1.9l.8-1.8c1.2.5 2.6 1.1 3 1.4l-.8 1.8-3-1.4zm-5.9-1c-.8 0-1.4.2-2 .6L1.7 5c.9-.6 1.9-.9 3.1-.9v2zm-4.3.7l1.8.8c-.3.7-.3 1.3-.1 1.8l-1.9.7C0 8.9 0 7.8.5 6.8zm4.2 5.4l-1.3 1.5c-1-1-1.7-1.6-2-2l1.5-1.3c.7.8 1.3 1.4 1.8 1.8zm7.3 4.3c0 1.9-1.6 3.5-3.5 3.5S5 18.4 5 16.5 6.6 13 8.5 13s3.5 1.6 3.5 3.5zM24 8l-1-1-1.5 1.5L20 7l-1 1 1.5 1.5L19 11l1 1 1.5-1.5L23 12l1-1-1.5-1.5z"/>
     <circle cx="8" cy="5" r="2"/>
 </svg>
index 6dbe1b4..cb073b9 100644 (file)
@@ -1,8 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g>
-        <path d="M15 9l.7-1.8c.9.4 1.8.7 2.4.9l-.6 1.7v.2L15 9zm-4.3-1.9l.8-1.8c1.2.5 2.6 1.1 3 1.4l-.8 1.8-3-1.4zm-5.9-1c-.8 0-1.4.2-2 .6L1.7 5c.9-.6 1.9-.9 3.1-.9v2zm-4.3.7l1.8.8c-.3.7-.3 1.3-.1 1.8l-1.9.7C0 8.9 0 7.8.5 6.8zm4.2 5.4l-1.3 1.5c-1-1-1.7-1.6-2-2l1.5-1.3c.7.8 1.3 1.4 1.8 1.8zm7.3 4.3c0 1.9-1.6 3.5-3.5 3.5S5 18.4 5 16.5 6.6 13 8.5 13s3.5 1.6 3.5 3.5z"/>
-    </g>
-    <path d="M24 8l-1-1-1.5 1.5L20 7l-1 1 1.5 1.5L19 11l1 1 1.5-1.5L23 12l1-1-1.5-1.5z"/>
+    <path d="M15 9l.7-1.8c.9.4 1.8.7 2.4.9l-.6 1.7v.2L15 9zm-4.3-1.9l.8-1.8c1.2.5 2.6 1.1 3 1.4l-.8 1.8-3-1.4zm-5.9-1c-.8 0-1.4.2-2 .6L1.7 5c.9-.6 1.9-.9 3.1-.9v2zm-4.3.7l1.8.8c-.3.7-.3 1.3-.1 1.8l-1.9.7C0 8.9 0 7.8.5 6.8zm4.2 5.4l-1.3 1.5c-1-1-1.7-1.6-2-2l1.5-1.3c.7.8 1.3 1.4 1.8 1.8zm7.3 4.3c0 1.9-1.6 3.5-3.5 3.5S5 18.4 5 16.5 6.6 13 8.5 13s3.5 1.6 3.5 3.5zM24 8l-1-1-1.5 1.5L20 7l-1 1 1.5 1.5L19 11l1 1 1.5-1.5L23 12l1-1-1.5-1.5z"/>
     <circle cx="8" cy="5" r="2"/>
 </svg>
index 92afc20..7b02236 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-rtl-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-rtl-invert.png differ
index 285c8cc..09ac9db 100644 (file)
@@ -1,8 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <g id="g792">
-        <path d="M9.095 9l-.7-1.8c-.9.4-1.8.7-2.4.9l.6 1.7v.2l2.5-1zm4.3-1.9l-.8-1.8c-1.2.5-2.6 1.1-3 1.4l.8 1.8 3-1.4zm5.9-1c.8 0 1.4.2 2 .6l1.1-1.7c-.9-.6-1.9-.9-3.1-.9v2zm4.3.7l-1.8.8c.3.7.3 1.3.1 1.8l1.9.7c.3-1.2.3-2.3-.2-3.3zm-4.2 5.4l1.3 1.5c1-1 1.7-1.6 2-2l-1.5-1.3c-.7.8-1.3 1.4-1.8 1.8zm-7.3 4.3c0 1.9 1.6 3.5 3.5 3.5s3.5-1.6 3.5-3.5-1.6-3.5-3.5-3.5-3.5 1.6-3.5 3.5z" id="path794"/>
-    </g>
-    <path d="M.095 8l1-1 1.5 1.5 1.5-1.5 1 1-1.5 1.5 1.5 1.5-1 1-1.5-1.5-1.5 1.5-1-1 1.5-1.5z" id="path796"/>
-    <circle cx="8" cy="5" r="2" id="circle798" transform="matrix(-1 0 0 1 24.095 0)"/>
+    <path d="M9.095 9l-.7-1.8c-.9.4-1.8.7-2.4.9l.6 1.7v.2l2.5-1zm4.3-1.9l-.8-1.8c-1.2.5-2.6 1.1-3 1.4l.8 1.8 3-1.4zm5.9-1c.8 0 1.4.2 2 .6l1.1-1.7c-.9-.6-1.9-.9-3.1-.9v2zm4.3.7l-1.8.8c.3.7.3 1.3.1 1.8l1.9.7c.3-1.2.3-2.3-.2-3.3zm-4.2 5.4l1.3 1.5c1-1 1.7-1.6 2-2l-1.5-1.3c-.7.8-1.3 1.4-1.8 1.8zm-7.3 4.3c0 1.9 1.6 3.5 3.5 3.5s3.5-1.6 3.5-3.5-1.6-3.5-3.5-3.5-3.5 1.6-3.5 3.5zM.095 8l1-1 1.5 1.5 1.5-1.5 1 1-1.5 1.5 1.5 1.5-1 1-1.5-1.5-1.5 1.5-1-1 1.5-1.5z"/>
+    <circle cx="8" cy="5" r="2" transform="matrix(-1 0 0 1 24.095 0)"/>
 </svg>
index 29dc26b..f2ce844 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-rtl.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-rtl.png differ
index f304f6e..e8b1a08 100644 (file)
@@ -1,8 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <g id="g792">
-        <path d="M9.095 9l-.7-1.8c-.9.4-1.8.7-2.4.9l.6 1.7v.2l2.5-1zm4.3-1.9l-.8-1.8c-1.2.5-2.6 1.1-3 1.4l.8 1.8 3-1.4zm5.9-1c.8 0 1.4.2 2 .6l1.1-1.7c-.9-.6-1.9-.9-3.1-.9v2zm4.3.7l-1.8.8c.3.7.3 1.3.1 1.8l1.9.7c.3-1.2.3-2.3-.2-3.3zm-4.2 5.4l1.3 1.5c1-1 1.7-1.6 2-2l-1.5-1.3c-.7.8-1.3 1.4-1.8 1.8zm-7.3 4.3c0 1.9 1.6 3.5 3.5 3.5s3.5-1.6 3.5-3.5-1.6-3.5-3.5-3.5-3.5 1.6-3.5 3.5z" id="path794"/>
-    </g>
-    <path d="M.095 8l1-1 1.5 1.5 1.5-1.5 1 1-1.5 1.5 1.5 1.5-1 1-1.5-1.5-1.5 1.5-1-1 1.5-1.5z" id="path796"/>
-    <circle cx="8" cy="5" r="2" id="circle798" transform="matrix(-1 0 0 1 24.095 0)"/>
+    <path d="M9.095 9l-.7-1.8c-.9.4-1.8.7-2.4.9l.6 1.7v.2l2.5-1zm4.3-1.9l-.8-1.8c-1.2.5-2.6 1.1-3 1.4l.8 1.8 3-1.4zm5.9-1c.8 0 1.4.2 2 .6l1.1-1.7c-.9-.6-1.9-.9-3.1-.9v2zm4.3.7l-1.8.8c.3.7.3 1.3.1 1.8l1.9.7c.3-1.2.3-2.3-.2-3.3zm-4.2 5.4l1.3 1.5c1-1 1.7-1.6 2-2l-1.5-1.3c-.7.8-1.3 1.4-1.8 1.8zm-7.3 4.3c0 1.9 1.6 3.5 3.5 3.5s3.5-1.6 3.5-3.5-1.6-3.5-3.5-3.5-3.5 1.6-3.5 3.5zM.095 8l1-1 1.5 1.5 1.5-1.5 1 1-1.5 1.5 1.5 1.5-1 1-1.5-1.5-1.5 1.5-1-1 1.5-1.5z"/>
+    <circle cx="8" cy="5" r="2" transform="matrix(-1 0 0 1 24.095 0)"/>
 </svg>
index 28c8704..1f964b9 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert-invert.png differ
index 0d17c02..d59e992 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><style>* { fill: #FFFFFF }</style>
-    <g id="alert">
-        <path d="M6 12c-3.314 0-6-2.686-6-6s2.686-6 6-6 6 2.686 6 6-2.686 6-6 6zM5 7h2V2H5zm0 3h2V8H5z"/>
-    </g>
+    <path d="M6 12A6 6 0 1 1 6 0a6 6 0 0 1 0 12zM5 7h2V2H5zm0 3h2V8H5z" id="alert"/>
 </svg>
index 5bf0827..ca60c43 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert.png differ
index 868bcc9..f94346a 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
-    <g id="alert">
-        <path d="M6 12c-3.314 0-6-2.686-6-6s2.686-6 6-6 6 2.686 6 6-2.686 6-6 6zM5 7h2V2H5zm0 3h2V8H5z"/>
-    </g>
+    <path d="M6 12A6 6 0 1 1 6 0a6 6 0 0 1 0 12zM5 7h2V2H5zm0 3h2V8H5z" id="alert"/>
 </svg>
index 4068699..dd6ef78 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><style>* { fill: #FFFFFF }</style>
-    <g id="required">
-        <path d="M5 1h2v10H5zm4.83 1.634l1 1.732-8.66 5-1-1.732zM1.17 4.366l1-1.732 8.66 5-1 1.732z"/>
-    </g>
+    <path d="M5 1h2v10H5zm4.83 1.634l1 1.732-8.66 5-1-1.732zM1.17 4.366l1-1.732 8.66 5-1 1.732z" id="required"/>
 </svg>
index d1e0cba..94b0066 100644 (file)
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
-    <g id="required">
-        <path d="M5 1h2v10H5zm4.83 1.634l1 1.732-8.66 5-1-1.732zM1.17 4.366l1-1.732 8.66 5-1 1.732z"/>
-    </g>
+    <path d="M5 1h2v10H5zm4.83 1.634l1 1.732-8.66 5-1-1.732zM1.17 4.366l1-1.732 8.66 5-1 1.732z" id="required"/>
 </svg>
index 68fcab8..8504977 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr-invert.png differ
index 0b7af8e..2ac9647 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><style>* { fill: #FFFFFF }</style>
     <g id="search">
-        <path id="magnifying-glass" d="M10.37 9.474L7.994 7.1l-.17-.1c.404-.566.644-1.26.644-2.01-.002-1.92-1.56-3.476-3.478-3.476-1.92 0-3.478 1.557-3.478 3.478 0 1.92 1.557 3.477 3.478 3.477.75 0 1.442-.24 2.01-.647l.098.17 2.375 2.373c.19.188.543.142.79-.105s.293-.6.104-.79zm-5.38-2.27c-1.22 0-2.213-.99-2.213-2.213 0-1.22.99-2.21 2.212-2.21 1.22 0 2.21.99 2.21 2.214s-.99 2.213-2.21 2.213z"/>
+        <path id="magnifying-glass" d="M10.37 9.474L7.994 7.1l-.17-.1a3.45 3.45 0 0 0 .644-2.01A3.478 3.478 0 1 0 4.99 8.47c.75 0 1.442-.24 2.01-.648l.098.17 2.375 2.373c.19.188.543.142.79-.105s.293-.6.104-.79zm-5.38-2.27a2.21 2.21 0 1 1 2.21-2.21A2.21 2.21 0 0 1 4.99 7.21z"/>
     </g>
 </svg>
index 2718a9b..1146082 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr.png and b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr.png differ
index 11b232c..80c72bb 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
     <g id="search">
-        <path id="magnifying-glass" d="M10.37 9.474L7.994 7.1l-.17-.1c.404-.566.644-1.26.644-2.01-.002-1.92-1.56-3.476-3.478-3.476-1.92 0-3.478 1.557-3.478 3.478 0 1.92 1.557 3.477 3.478 3.477.75 0 1.442-.24 2.01-.647l.098.17 2.375 2.373c.19.188.543.142.79-.105s.293-.6.104-.79zm-5.38-2.27c-1.22 0-2.213-.99-2.213-2.213 0-1.22.99-2.21 2.212-2.21 1.22 0 2.21.99 2.21 2.214s-.99 2.213-2.21 2.213z"/>
+        <path id="magnifying-glass" d="M10.37 9.474L7.994 7.1l-.17-.1a3.45 3.45 0 0 0 .644-2.01A3.478 3.478 0 1 0 4.99 8.47c.75 0 1.442-.24 2.01-.648l.098.17 2.375 2.373c.19.188.543.142.79-.105s.293-.6.104-.79zm-5.38-2.27a2.21 2.21 0 1 1 2.21-2.21A2.21 2.21 0 0 1 4.99 7.21z"/>
     </g>
 </svg>
index c8ebef4..ace4775 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl-invert.png differ
index 9b6ac9a..0d0ded4 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><style>* { fill: #FFFFFF }</style>
     <g id="search">
-        <path id="magnifying-glass" d="M1.63 9.474L4.006 7.1l.17-.1c-.404-.566-.644-1.26-.644-2.01.002-1.92 1.56-3.476 3.478-3.476 1.92 0 3.478 1.557 3.478 3.478 0 1.92-1.557 3.477-3.478 3.477-.75 0-1.442-.24-2.01-.647l-.098.17-2.375 2.373c-.19.188-.543.142-.79-.105s-.293-.6-.104-.79zm5.378-2.27c1.22 0 2.213-.99 2.213-2.213 0-1.22-.99-2.21-2.21-2.21S4.8 3.77 4.8 4.995 5.79 7.207 7.01 7.207z"/>
+        <path id="magnifying-glass" d="M1.63 9.474L4.006 7.1l.17-.1a3.45 3.45 0 0 1-.644-2.01A3.478 3.478 0 1 1 7.01 8.47 3.43 3.43 0 0 1 5 7.822l-.098.17-2.375 2.373c-.19.188-.543.142-.79-.105s-.293-.6-.104-.79zm5.378-2.27A2.21 2.21 0 1 0 4.8 4.994 2.21 2.21 0 0 0 7.01 7.21z"/>
     </g>
 </svg>
index b7a8d22..c21cc61 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl.png and b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl.png differ
index 0679fa2..4b3cff4 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
     <g id="search">
-        <path id="magnifying-glass" d="M1.63 9.474L4.006 7.1l.17-.1c-.404-.566-.644-1.26-.644-2.01.002-1.92 1.56-3.476 3.478-3.476 1.92 0 3.478 1.557 3.478 3.478 0 1.92-1.557 3.477-3.478 3.477-.75 0-1.442-.24-2.01-.647l-.098.17-2.375 2.373c-.19.188-.543.142-.79-.105s-.293-.6-.104-.79zm5.378-2.27c1.22 0 2.213-.99 2.213-2.213 0-1.22-.99-2.21-2.21-2.21S4.8 3.77 4.8 4.995 5.79 7.207 7.01 7.207z"/>
+        <path id="magnifying-glass" d="M1.63 9.474L4.006 7.1l.17-.1a3.45 3.45 0 0 1-.644-2.01A3.478 3.478 0 1 1 7.01 8.47 3.43 3.43 0 0 1 5 7.822l-.098.17-2.375 2.373c-.19.188-.543.142-.79-.105s-.293-.6-.104-.79zm5.378-2.27A2.21 2.21 0 1 0 4.8 4.994 2.21 2.21 0 0 0 7.01 7.21z"/>
     </g>
 </svg>
diff --git a/resources/src/jquery/images/sort_both.gif b/resources/src/jquery/images/sort_both.gif
deleted file mode 100644 (file)
index 50ad15a..0000000
Binary files a/resources/src/jquery/images/sort_both.gif and /dev/null differ
diff --git a/resources/src/jquery/images/sort_both.png b/resources/src/jquery/images/sort_both.png
new file mode 100644 (file)
index 0000000..e340425
Binary files /dev/null and b/resources/src/jquery/images/sort_both.png differ
diff --git a/resources/src/jquery/images/sort_both.svg b/resources/src/jquery/images/sort_both.svg
new file mode 100644 (file)
index 0000000..f906b93
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 21 9" height="9" width="21">
+    <path d="M14.5 5l-4 4-4-4zM14.5 4l-4-4-4 4z"/>
+</svg>
diff --git a/resources/src/jquery/images/sort_down.gif b/resources/src/jquery/images/sort_down.gif
deleted file mode 100644 (file)
index ec4f41b..0000000
Binary files a/resources/src/jquery/images/sort_down.gif and /dev/null differ
diff --git a/resources/src/jquery/images/sort_down.png b/resources/src/jquery/images/sort_down.png
new file mode 100644 (file)
index 0000000..d58d54d
Binary files /dev/null and b/resources/src/jquery/images/sort_down.png differ
diff --git a/resources/src/jquery/images/sort_down.svg b/resources/src/jquery/images/sort_down.svg
new file mode 100644 (file)
index 0000000..105574b
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 21 4" height="4" width="21">
+    <path d="M14.5 0l-4 4-4-4z"/>
+</svg>
diff --git a/resources/src/jquery/images/sort_none.gif b/resources/src/jquery/images/sort_none.gif
deleted file mode 100644 (file)
index edd07e5..0000000
Binary files a/resources/src/jquery/images/sort_none.gif and /dev/null differ
diff --git a/resources/src/jquery/images/sort_up.gif b/resources/src/jquery/images/sort_up.gif
deleted file mode 100644 (file)
index 8018918..0000000
Binary files a/resources/src/jquery/images/sort_up.gif and /dev/null differ
diff --git a/resources/src/jquery/images/sort_up.png b/resources/src/jquery/images/sort_up.png
new file mode 100644 (file)
index 0000000..1a5f27e
Binary files /dev/null and b/resources/src/jquery/images/sort_up.png differ
diff --git a/resources/src/jquery/images/sort_up.svg b/resources/src/jquery/images/sort_up.svg
new file mode 100644 (file)
index 0000000..2fa4c73
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 21 4" height="4" width="21">
+    <path d="M6.5 4l4-4 4 4z"/>
+</svg>
index 629ce32..b0c36c6 100644 (file)
@@ -51,7 +51,7 @@
                $stepDiv = $steps.filter( ':not(:last-child)' ).addClass( 'arrow' ).find( 'div' );
 
                // Execute when complete page is fully loaded, including all frames, objects and images
-               $( window ).load( function () {
+               $( window ).on( 'load', function () {
                        arrowWidth = parseInt( $el.outerHeight(), 10 );
                        $stepDiv.css( paddingSide, arrowWidth.toString() + 'px' );
                } );
diff --git a/resources/src/jquery/jquery.tablesorter.css b/resources/src/jquery/jquery.tablesorter.css
deleted file mode 100644 (file)
index a88acc0..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Table Sorting */
-table.jquery-tablesorter th.headerSort {
-       /* @embed */
-       background-image: url(images/sort_both.gif);
-       cursor: pointer;
-       background-repeat: no-repeat;
-       background-position: center right;
-       padding-right: 21px;
-}
-table.jquery-tablesorter th.headerSortUp {
-       /* @embed */
-       background-image: url(images/sort_up.gif);
-}
-table.jquery-tablesorter th.headerSortDown {
-       /* @embed */
-       background-image: url(images/sort_down.gif);
-}
diff --git a/resources/src/jquery/jquery.tablesorter.less b/resources/src/jquery/jquery.tablesorter.less
new file mode 100644 (file)
index 0000000..85c58d7
--- /dev/null
@@ -0,0 +1,20 @@
+@import "mediawiki.mixins";
+
+// Table Sorting
+
+.client-js table.jquery-tablesorter th.headerSort {
+       .background-image-svg( 'images/sort_both.svg', 'images/sort_both.png' );
+       cursor: pointer;
+       // Keep synchronized with mediawiki.skinning.content styles
+       background-repeat: no-repeat;
+       background-position: center right;
+       padding-right: 21px;
+}
+
+.client-js table.jquery-tablesorter th.headerSortUp {
+       .background-image-svg( 'images/sort_up.svg', 'images/sort_up.png' );
+}
+
+.client-js table.jquery-tablesorter th.headerSortDown {
+       .background-image-svg( 'images/sort_down.svg', 'images/sort_down.png' );
+}
index c88d00d..a873cdf 100644 (file)
@@ -241,3 +241,16 @@ div.tright {
 div.tleft {
        margin: .5em 1.4em 1.3em 0;
 }
+
+/* Make space for the jquery.tablesorter icon and display a placeholder if JavaScript is loaded, while
+   tablesorter is still loading and setting up the tables for sorting. This avoids a flash of
+   unstyled content during page load (FOUC). The styles can also be used by WYSIWYG editors. */
+.client-js table.sortable th:not(.unsortable) {
+       background-image: url(images/sort_both_readonly.png);
+       /* @embed */
+       background-image: linear-gradient(transparent, transparent), url(images/sort_both_readonly.svg);
+       /* Keep synchronised with jquery.tablesorter styles */
+       background-repeat: no-repeat;
+       background-position: center right;
+       padding-right: 21px;
+}
diff --git a/resources/src/mediawiki.skinning/images/sort_both_readonly.png b/resources/src/mediawiki.skinning/images/sort_both_readonly.png
new file mode 100644 (file)
index 0000000..bdb09e3
Binary files /dev/null and b/resources/src/mediawiki.skinning/images/sort_both_readonly.png differ
diff --git a/resources/src/mediawiki.skinning/images/sort_both_readonly.svg b/resources/src/mediawiki.skinning/images/sort_both_readonly.svg
new file mode 100644 (file)
index 0000000..3b97000
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 21 9" height="9" width="21">
+    <path d="M14.5 5l-4 4-4-4zM14.5 4l-4-4-4 4z" style="fill-opacity: 0.5;"/>
+</svg>
index 7c2269f..edfbe1e 100644 (file)
@@ -1,9 +1,11 @@
-( function ( $ ) {
-       $( document ).ready( function () {
-
+/*!
+ * JavaScript module used on Special:PageLanguage
+ */
+( function ( $, OO ) {
+       $( function () {
                // Select the 'Language select' option if user is trying to select language
-               $( '#mw-pl-languageselector' ).on( 'click', function () {
-                       $( '#mw-pl-options-2' ).prop( 'checked', true );
+               OO.ui.infuse( 'mw-pl-languageselector' ).on( 'change', function () {
+                       OO.ui.infuse( 'mw-pl-options' ).setValue( '2' );
                } );
        } );
-}( jQuery ) );
+}( jQuery, OO ) );
index 510068a..c242b6c 100644 (file)
@@ -21,7 +21,7 @@
         *
         *     $( '#content' ).append( selector.$element );
         *
-        *     selector.setSearchType( [ mw.widgets.CategorySelector.SearchType.SubCategories ] );
+        *     selector.setSearchTypes( [ mw.widgets.CategorySelector.SearchType.SubCategories ] );
         *
         * @class mw.widgets.CategorySelector
         * @uses mw.Api
                this.pushPending();
 
                $.when.apply( $, promises ).done( function () {
-                       var categories, categoryNames,
+                       var categoryNames,
                                allData = [],
                                dataSets = Array.prototype.slice.apply( arguments );
 
                        // Collect values from all results
                        allData = allData.concat.apply( allData, dataSets );
 
-                       // Remove duplicates
-                       categories = allData.filter( function ( value, index, self ) {
-                               return self.indexOf( value ) === index;
-                       } );
-
-                       // Get titles
-                       categoryNames = categories.map( function ( name ) {
-                               return mw.Title.newFromText( name, NS_CATEGORY ).getMainText();
-                       } );
+                       categoryNames = allData
+                               // Remove duplicates
+                               .filter( function ( value, index, self ) {
+                                       return self.indexOf( value ) === index;
+                               } )
+                               // Get Title objects
+                               .map( function ( name ) {
+                                       return mw.Title.newFromText( name );
+                               } )
+                               // Keep only titles from 'Category' namespace
+                               .filter( function ( title ) {
+                                       return title && title.getNamespaceId() === NS_CATEGORY;
+                               } )
+                               // Convert back to strings, strip 'Category:' prefix
+                               .map( function ( title ) {
+                                       return title.getMainText();
+                               } );
 
                        deferred.resolve( categoryNames );
 
        CSP.createItemWidget = function ( data ) {
                return new mw.widgets.CategoryCapsuleItemWidget( {
                        apiUrl: this.api.apiUrl || undefined,
-                       title: mw.Title.newFromText( data, NS_CATEGORY )
+                       title: mw.Title.makeTitle( NS_CATEGORY, data )
                } );
        };
 
        CSP.getItemFromData = function ( data ) {
                // This is a bit of a hack... We have to canonicalize the data in the same way that
                // #createItemWidget and CategoryCapsuleItemWidget will do, otherwise we won't find duplicates.
-               data = mw.Title.newFromText( data, NS_CATEGORY ).getMainText();
+               data = mw.Title.makeTitle( NS_CATEGORY, data ).getMainText();
                return OO.ui.mixin.GroupElement.prototype.getItemFromData.call( this, data );
        };
 
index 1ffcc66..3e03502 100644 (file)
@@ -72,7 +72,9 @@
         *     while the widget is inactive. Should be as unambiguous as possible (for example, prefer to
         *     spell out the month, rather than rely on the order), even if that makes it longer. When not
         *     given, the default is language-specific.
-        * @cfg {string} [placeholder] User-visible date format string displayed in the textual input
+        * @cfg {string} [placeholderLabel=No date selected] Placeholder text shown when the widget is not
+        *     selected. Default text taken from message `mw-widgets-dateinput-no-date`.
+        * @cfg {string} [placeholderDateFormat] User-visible date format string displayed in the textual input
         *     field when it's empty. Should be the same as `inputFormat`, but translated to the user's
         *     language. When not given, defaults to a translated version of 'YYYY-MM-DD' or 'YYYY-MM',
         *     depending on `precision`.
         */
        mw.widgets.DateInputWidget = function MWWDateInputWidget( config ) {
                // Config initialization
-               config = $.extend( { precision: 'day', required: false }, config );
+               config = $.extend( {
+                       precision: 'day',
+                       required: false,
+                       placeholderLabel: mw.msg( 'mw-widgets-dateinput-no-date' )
+               }, config );
                if ( config.required ) {
                        if ( config.indicator === undefined ) {
                                config.indicator = 'required';
                        }
                }
 
-               var placeholder, mustBeAfter, mustBeBefore;
-               if ( config.placeholder ) {
-                       placeholder = config.placeholder;
+               var placeholderDateFormat, mustBeAfter, mustBeBefore;
+               if ( config.placeholderDateFormat ) {
+                       placeholderDateFormat = config.placeholderDateFormat;
                } else if ( config.inputFormat ) {
                        // We have no way to display a translated placeholder for custom formats
-                       placeholder = '';
+                       placeholderDateFormat = '';
                } else {
                        // Messages: mw-widgets-dateinput-placeholder-day, mw-widgets-dateinput-placeholder-month
-                       placeholder = mw.msg( 'mw-widgets-dateinput-placeholder-' + config.precision );
+                       placeholderDateFormat = mw.msg( 'mw-widgets-dateinput-placeholder-' + config.precision );
                }
 
                // Properties (must be set before parent constructor, which calls #setValue)
                this.label = new OO.ui.LabelWidget();
                this.textInput = new OO.ui.TextInputWidget( {
                        required: config.required,
-                       placeholder: placeholder,
+                       placeholder: placeholderDateFormat,
                        validate: this.validateDate.bind( this )
                } );
                this.calendar = new mw.widgets.CalendarWidget( {
                this.inputFormat = config.inputFormat;
                this.displayFormat = config.displayFormat;
                this.required = config.required;
+               this.placeholderLabel = config.placeholderLabel;
 
                // Validate and set min and max dates as properties
                mustBeAfter = moment( config.mustBeAfter, 'YYYY-MM-DD' );
                if ( this.getValue() === '' ) {
                        this.textInput.setValue( '' );
                        this.calendar.setDate( null );
-                       this.label.setLabel( mw.msg( 'mw-widgets-dateinput-no-date' ) );
+                       this.label.setLabel( this.placeholderLabel );
                        this.$element.addClass( 'mw-widget-dateInputWidget-empty' );
                } else {
                        if ( !this.inTextInput ) {
index fc1007e..101a606 100644 (file)
         *
         * @constructor
         * @cfg {boolean} [suggestions=true] Display search suggestions
+        * @cfg {RegExp|Function|string} [validate] Perform title validation
         */
        mw.widgets.TitleInputWidget = function MwWidgetsTitleInputWidget( config ) {
                config = config || {};
 
                // Parent constructor
                mw.widgets.TitleInputWidget.parent.call( this, $.extend( {}, config, {
-                       validate: this.isQueryValid.bind( this ),
+                       validate: config.validate !== undefined ? config.validate : this.isQueryValid.bind( this ),
                        autocomplete: false
                } ) );
 
index 614c001..3036237 100644 (file)
                                } );
                        } );
 
-                       $iframe.error( function ( error ) {
+                       $iframe.on( 'error', function ( error ) {
                                deferred.reject( 'http', error );
                        } );
 
index 6813ea6..97d81fb 100644 (file)
         * @inheritdoc
         */
        mw.ForeignStructuredUpload.BookletLayout.prototype.initialize = function () {
-               var deferred = $.Deferred();
-               mw.ForeignStructuredUpload.BookletLayout.parent.prototype.initialize.call( this )
-                       .done( function () {
+               var booklet = this;
+               return mw.ForeignStructuredUpload.BookletLayout.parent.prototype.initialize.call( this ).then(
+                       function () {
                                // Point the CategorySelector to the right wiki
-                               this.upload.getApi().done( function ( api ) {
-                                       // If this is a ForeignApi, it will have a apiUrl, otherwise we don't need to do anything
-                                       if ( api.apiUrl ) {
-                                               // Can't reuse the same object, CategorySelector calls #abort on its mw.Api instance
-                                               this.categoriesWidget.api = new mw.ForeignApi( api.apiUrl );
+                               return booklet.upload.getApi().then(
+                                       function ( api ) {
+                                               // If this is a ForeignApi, it will have a apiUrl, otherwise we don't need to do anything
+                                               if ( api.apiUrl ) {
+                                                       // Can't reuse the same object, CategorySelector calls #abort on its mw.Api instance
+                                                       booklet.categoriesWidget.api = new mw.ForeignApi( api.apiUrl );
+                                               }
+                                               return $.Deferred().resolve();
+                                       },
+                                       function () {
+                                               return $.Deferred().resolve();
                                        }
-                                       deferred.resolve();
-                               }.bind( this ) );
-                       }.bind( this ) );
-               return deferred.promise();
+                               );
+                       },
+                       function () {
+                               return $.Deferred().resolve();
+                       }
+               );
        };
 
        /**
index aa08b6c..1a0b59a 100644 (file)
                if ( this.target === 'local' ) {
                        // If local uploads were requested, but they are disabled, fail.
                        if ( !mw.config.get( 'wgEnableUploads' ) ) {
-                               throw new Error( 'Local uploads are disabled' );
+                               this.apiPromise = $.Deferred().reject( 'uploaddisabledtext' );
+                       } else {
+                               // We'll ignore the CORS and centralauth stuff if the target is
+                               // the local wiki.
+                               this.apiPromise = $.Deferred().resolve( new mw.Api( apiconfig ) );
                        }
-                       // We'll ignore the CORS and centralauth stuff if the target is
-                       // the local wiki.
-                       this.apiPromise = $.Deferred().resolve( new mw.Api( apiconfig ) );
                } else {
                        api = new mw.Api();
                        this.apiPromise = api.get( {
@@ -76,7 +77,7 @@
                                        }
                                }
 
-                               throw new Error( 'Can not upload to requested foreign repo' );
+                               return $.Deferred().reject( 'upload-foreign-cant-upload' );
                        } );
                }
 
index 033636c..ec2a4b1 100644 (file)
@@ -6,6 +6,7 @@
 ( function ( mw, $ ) {
        /*jshint latedef:false */
 
+       // jscs:disable jsDoc
        /**
         * @class mw.Title
         *
         * logic directly and get null for invalid titles which is easier to work with.
         *
         * @constructor
+        *
+        * Note that in the constructor amd #newFromText method, `namespace` is the **default** namespace
+        * only, and can be overridden by a namespace prefix in `title`. If you do not want this behavior,
+        * use #makeTitle. Compare:
+        *
+        *     new mw.Title( 'Foo', NS_TEMPLATE ).getPrefixedText();                  // => 'Template:Foo'
+        *     mw.Title.newFromText( 'Foo', NS_TEMPLATE ).getPrefixedText();          // => 'Template:Foo'
+        *     mw.Title.makeTitle( NS_TEMPLATE, 'Foo' ).getPrefixedText();            // => 'Template:Foo'
+        *
+        *     new mw.Title( 'Category:Foo', NS_TEMPLATE ).getPrefixedText();         // => 'Category:Foo'
+        *     mw.Title.newFromText( 'Category:Foo', NS_TEMPLATE ).getPrefixedText(); // => 'Category:Foo'
+        *     mw.Title.makeTitle( NS_TEMPLATE, 'Category:Foo' ).getPrefixedText();   // => 'Template:Category:Foo'
+        *
+        *     new mw.Title( 'Template:Foo', NS_TEMPLATE ).getPrefixedText();         // => 'Template:Foo'
+        *     mw.Title.newFromText( 'Template:Foo', NS_TEMPLATE ).getPrefixedText(); // => 'Template:Foo'
+        *     mw.Title.makeTitle( NS_TEMPLATE, 'Template:Foo' ).getPrefixedText();   // => 'Template:Template:Foo'
+        *
         * @param {string} title Title of the page. If no second argument given,
         *  this will be searched for a namespace
         * @param {number} [namespace=NS_MAIN] If given, will used as default namespace for the given title
@@ -32,6 +50,7 @@
 
                return this;
        }
+       // jscs:enable jsDoc
 
        /* Private members */
 
                return id;
        },
 
+       /**
+        * @private
+        * @method getNamespacePrefix_
+        * @param {number} namespace
+        * @return {string}
+        */
+       getNamespacePrefix = function ( namespace ) {
+               return namespace === NS_MAIN ?
+                       '' :
+                       ( mw.config.get( 'wgFormattedNamespaces' )[ namespace ].replace( / /g, '_' ) + ':' );
+       },
+
        rUnderscoreTrim = /^_+|_+$/g,
 
        rSplit = /^(.+?)_*:_*(.*)$/,
        ],
 
        /**
-        * Internal helper for #constructor and #newFromtext.
+        * Internal helper for #constructor and #newFromText.
         *
         * Based on Title.php#secureAndSplit
         *
        /**
         * Constructor for Title objects with a null return instead of an exception for invalid titles.
         *
+        * Note that `namespace` is the **default** namespace only, and can be overridden by a namespace
+        * prefix in `title`. If you do not want this behavior, use #makeTitle. See #constructor for
+        * details.
+        *
         * @static
         * @param {string} title
         * @param {number} [namespace=NS_MAIN] Default namespace
                return t;
        };
 
+       /**
+        * Constructor for Title objects with predefined namespace.
+        *
+        * Unlike #newFromText or #constructor, this function doesn't allow the given `namespace` to be
+        * overridden by a namespace prefix in `title`. See #constructor for details about this behavior.
+        *
+        * The single exception to this is when `namespace` is 0, indicating the main namespace. The
+        * function behaves like #newFromText in that case.
+        *
+        * @static
+        * @param {number} namespace Namespace to use for the title
+        * @param {string} title
+        * @return {mw.Title|null} A valid Title object or null if the title is invalid
+        */
+       Title.makeTitle = function ( namespace, title ) {
+               return mw.Title.newFromText( getNamespacePrefix( namespace ) + title );
+       };
+
        /**
         * Constructor for Title objects from user input altering that input to
         * produce a title that MediaWiki will accept as legal
                 * @return {string}
                 */
                getNamespacePrefix: function () {
-                       return this.namespace === NS_MAIN ?
-                               '' :
-                               ( mw.config.get( 'wgFormattedNamespaces' )[ this.namespace ].replace( / /g, '_' ) + ':' );
+                       return getNamespacePrefix( this.namespace );
                },
 
                /**
index 84b33fd..c8d64b9 100644 (file)
         * @return {jQuery.Promise} Promise resolved when everything is initialized
         */
        mw.Upload.BookletLayout.prototype.initialize = function () {
-               var
-                       booklet = this,
-                       deferred = $.Deferred();
+               var booklet = this;
 
                this.clear();
                this.upload = this.createUpload();
                this.setPage( 'upload' );
 
-               this.upload.getApi().done( function ( api ) {
-                       // If the user can't upload anything, don't give them the option to.
-                       api.getUserInfo().done( function ( userInfo ) {
-                               if ( userInfo.rights.indexOf( 'upload' ) === -1 ) {
-                                       // TODO Use a better error message when not all logged-in users can upload
-                                       booklet.getPage( 'upload' ).$element.msg( 'api-error-mustbeloggedin' );
-                               }
-                       } ).always( function () {
-                               deferred.resolve();
-                       } );
-               } );
-
-               return deferred.promise();
+               return this.upload.getApi().then(
+                       function ( api ) {
+                               // If the user can't upload anything, don't give them the option to.
+                               return api.getUserInfo().then(
+                                       function ( userInfo ) {
+                                               if ( userInfo.rights.indexOf( 'upload' ) === -1 ) {
+                                                       // TODO Use a better error message when not all logged-in users can upload
+                                                       booklet.getPage( 'upload' ).$element.msg( 'api-error-mustbeloggedin' );
+                                               }
+                                               return $.Deferred().resolve();
+                                       },
+                                       function () {
+                                               return $.Deferred().resolve();
+                                       }
+                               );
+                       },
+                       function ( errorMsg ) {
+                               booklet.getPage( 'upload' ).$element.msg( errorMsg );
+                               return $.Deferred().resolve();
+                       }
+               );
        };
 
        /**
                        warnings = stateDetails.upload && stateDetails.upload.warnings;
 
                if ( state === mw.Upload.State.ERROR ) {
+                       if ( !error ) {
+                               // If there's an 'exception' key, this might be a timeout, or other connection problem
+                               return new OO.ui.Error(
+                                       $( '<p>' ).msg( 'api-error-unknownerror', JSON.stringify( stateDetails ) ),
+                                       { recoverable: false }
+                               );
+                       }
+
                        // HACK We should either have a hook here to allow TitleBlacklist to handle this, or just have
                        // TitleBlacklist produce sane error messages that can be displayed without arcane knowledge
                        if ( error.info === 'TitleBlacklist prevents this title from being created' ) {
index d6e0157..260fd37 100644 (file)
@@ -1,7 +1,6 @@
 /* OOUIHTMLForm styles */
 
 .mw-htmlform-ooui-wrapper {
-       width: 50em;
        margin: 1em 0;
 }
 
index b04e01c..b8349d0 100644 (file)
                /**
                 * Get a message object.
                 *
-                * Shorcut for `new mw.Message( mw.messages, key, parameters )`.
+                * Shortcut for `new mw.Message( mw.messages, key, parameters )`.
                 *
                 * @see mw.Message
                 * @param {string} key Key of message to get
                         */
 
                        /**
-                        * Write a message the console's warning channel.
+                        * Write a message to the console's warning channel.
                         * Actions not supported by the browser console are silently ignored.
                         *
                         * @param {...string} msg Messages to output to console
                                $.noop;
 
                        /**
-                        * Write a message the console's error channel.
+                        * Write a message to the console's error channel.
                         *
                         * Most browsers provide a stacktrace by default if the argument
                         * is a caught Error object.
                        /**
                         * A module has entered state 'ready', 'error', or 'missing'. Automatically update
                         * pending jobs and modules that depend upon this module. If the given module failed,
-                        * propagate the 'error' state up the dependency tree. Otherwise, go ahead an execute
+                        * propagate the 'error' state up the dependency tree. Otherwise, go ahead and execute
                         * all jobs/modules now having their dependencies satisfied.
                         *
                         * Jobs that depend on a failed module, will have their error callback ran (if any).
                                                                script( $, $ );
                                                                markModuleReady();
                                                        } else if ( typeof script === 'string' ) {
-                                                               // Site and user modules are legacy scripts that run in the global scope.
+                                                               // Site and user modules are legacy scripts that run in the global scope.
                                                                // This is transported as a string instead of a function to avoid needing
                                                                // to use string manipulation to undo the function wrapper.
                                                                if ( module === 'user' ) {
                        }
 
                        /**
-                        * Adds a dependencies to the queue with optional callbacks to be run
+                        * Adds all dependencies to the queue with optional callbacks to be run
                         * when the dependencies are ready or fail
                         *
                         * @private
                                 * When #load or #using requests one or more modules, the server
                                 * response contain calls to this function.
                                 *
-                                * All arguments are required.
-                                *
                                 * @param {string} module Name of module
-                                * @param {Function|Array} script Function with module code or Array of URLs to
+                                * @param {Function|Array} [script] Function with module code or Array of URLs to
                                 *  be used as the src attribute of a new `<script>` tag.
                                 * @param {Object} [style] Should follow one of the following patterns:
                                 *
        /**
         * Log a message to window.console, if possible.
         *
-        * Useful to force logging of some  errors that are otherwise hard to detect (i.e., this logs
+        * Useful to force logging of some errors that are otherwise hard to detect (i.e., this logs
         * also in production mode). Gets console references in each invocation instead of caching the
         * reference, so that debugging tools loaded later are supported (e.g. Firebug Lite in IE).
         *
                        msg += ( e ? ':' : '.' );
                        console.log( msg );
 
-                       // If we have an exception object, log it to the error channel to trigger a
-                       // proper stacktraces in browsers that support it. No fallback as we have no browsers
-                       // that don't support error(), but do support log().
+                       // If we have an exception object, log it to the error channel to trigger
+                       // proper stacktraces in browsers that support it. No fallback as we have
+                       // no browsers that don't support error(), but do support log().
                        if ( e && console.error ) {
                                console.error( String( e ), e );
                        }
index ada4924..0fcd22c 100644 (file)
@@ -6,6 +6,7 @@
                // queries the wiki and calls response with the result
                request: function ( api, query, response, maxRows ) {
                        return api.get( {
+                               formatversion: 2,
                                action: 'opensearch',
                                search: query,
                                namespace: 0,
index f9810f9..cc983e4 100644 (file)
                 * (e.g. `'#foobar'`) for that item.
                 *
                 *     mw.util.addPortletLink(
-                *         'p-tb', 'http://mediawiki.org/',
-                *         'MediaWiki.org', 't-mworg', 'Go to MediaWiki.org ', 'm', '#t-print'
+                *         'p-tb', 'https://www.mediawiki.org/',
+                *         'mediawiki.org', 't-mworg', 'Go to mediawiki.org', 'm', '#t-print'
                 *     );
                 *
+                *     var node = mw.util.addPortletLink(
+                *         'p-tb',
+                *         new mw.Title( 'Special:Example' ).getUrl(),
+                *         'Example'
+                *     );
+                *     $( node ).on( 'click', function ( e ) {
+                *         console.log( 'Example' );
+                *         e.preventDefault();
+                *     } );
+                *
                 * @param {string} portlet ID of the target portlet ( 'p-cactions' or 'p-personal' etc.)
                 * @param {string} href Link URL
                 * @param {string} text Link text
index f9b0d35..a63202f 100644 (file)
@@ -31,6 +31,7 @@
                        apiRequest = new mw.Api();
 
                        apiRequest.postWithToken( 'patrol', {
+                               formatversion: 2,
                                action: 'patrol',
                                rcid: rcid
                        } )
index 0f51a35..0c2d6d6 100644 (file)
@@ -87,7 +87,7 @@ function isCompatible( ua ) {
 
                // Must be after mw.config.set because these callbacks may use mw.loader which
                // needs to have values 'skin', 'debug' etc. from mw.config.
-               window.RLQ = window.RLQ || [];
+               var RLQ = window.RLQ || [];
                while ( RLQ.length ) {
                        RLQ.shift()();
                }
index f4ddfb2..028ef81 100644 (file)
@@ -48,8 +48,8 @@ $wgAutoloadClasses += array(
        'LessFileCompilationTest' => "$testDir/phpunit/LessFileCompilationTest.php",
 
        # tests/phpunit/includes
+       'RevisionStorageTest' => "$testDir/phpunit/includes/RevisionStorageTest.php",
        'TestingAccessWrapper' => "$testDir/phpunit/includes/TestingAccessWrapper.php",
-       'TestLogger' => "$testDir/phpunit/includes/TestLogger.php",
 
        # tests/phpunit/includes/api
        'ApiFormatTestBase' => "$testDir/phpunit/includes/api/format/ApiFormatTestBase.php",
@@ -86,6 +86,9 @@ $wgAutoloadClasses += array(
        # tests/phpunit/includes/logging
        'LogFormatterTestCase' => "$testDir/phpunit/includes/logging/LogFormatterTestCase.php",
 
+       # tests/phpunit/includes/page
+       'WikiPageTest' => "$testDir/phpunit/includes/page/WikiPageTest.php",
+
        # tests/phpunit/includes/password
        'PasswordTestCase' => "$testDir/phpunit/includes/password/PasswordTestCase.php",
 
@@ -95,10 +98,6 @@ $wgAutoloadClasses += array(
        'ResourceLoaderImageModuleTestable' =>
                "$testDir/phpunit/includes/resourceloader/ResourceLoaderImageModuleTest.php",
 
-       # tests/phpunit/includes/session
-       'MediaWiki\\Session\\TestBagOStuff' => "$testDir/phpunit/includes/session/TestBagOStuff.php",
-       'MediaWiki\\Session\\TestUtils' => "$testDir/phpunit/includes/session/TestUtils.php",
-
        # tests/phpunit/includes/specials
        'SpecialPageTestBase' => "$testDir/phpunit/includes/specials/SpecialPageTestBase.php",
 
@@ -123,9 +122,6 @@ $wgAutoloadClasses += array(
        'MockSvgHandler' => "$testDir/phpunit/mocks/media/MockSvgHandler.php",
        'MockDjVuHandler' => "$testDir/phpunit/mocks/media/MockDjVuHandler.php",
        'MockWebRequest' => "$testDir/phpunit/mocks/MockWebRequest.php",
-       'MediaWiki\\Session\\DummySessionBackend'
-               => "$testDir/phpunit/mocks/session/DummySessionBackend.php",
-       'DummySessionProvider' => "$testDir/phpunit/mocks/session/DummySessionProvider.php",
 
        # tests/parser
        'NewParserTest' => "$testDir/phpunit/includes/parser/NewParserTest.php",
index cd2b769..d866ed8 100644 (file)
@@ -2520,7 +2520,6 @@ Barack Obama <President> of the United States
 </p>
 !! end
 
-## PHP parser discards the "<pre " string
 !! test
 Handle broken pre-like tags (bug 64025)
 !! options
@@ -2531,8 +2530,13 @@ parsoid=wt2html
 <table><pre </table>
 !! html/php
 <pre>x</pre>
-<table><pre></pre></table>
+<table>&lt;pre </table>
 
+!! html/php+tidy
+<pre>
+x
+</pre>
+<p>&lt;pre</p>
 !! html/parsoid
 <pre about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"a":{"&lt;pre":null},"sa":{"&lt;pre":""},"stx":"html","pi":[[{"k":"1","spc":["","","",""]}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&lt;pre &lt;pre>x&lt;/pre>"}},"i":0}}]}'>x</pre>
 
@@ -6330,6 +6334,24 @@ parsoid=wt2html,html2html
 <td data-parsoid='{"startTagSrc":"| ","attrSepSrc":"|","autoInsertedEnd":true}'><a rel="mw:ExtLink" href="ftp://|x||"></a>" onmouseover="alert(document.cookie)">test</td></tr></tbody></table>
 !! end
 
+!! test
+! and || in element attributes should not be parsed as <th>/<td>
+!! wikitext
+{|
+| <div style="color: red !important;" data-contrived="put this here ||">hi</div>
+|}
+!! html/php
+<table>
+<tr>
+<td> <div style="color: red !important;" data-contrived="put this here &#124;&#124;">hi</div>
+</td></tr></table>
+
+!! html/parsoid
+<table>
+<tbody><tr><td> <div style="color: red !important;" data-contrived="put this here ||" data-parsoid='{"stx":"html"}'>hi</div></td></tr>
+</tbody></table>
+!! end
+
 # FIXME: The output seems broken. Filed as T110268.
 !! test
 ! and || in td attributes should not be parsed as <th>/<td>
@@ -8783,6 +8805,40 @@ Mixed list
 
 !! end
 
+!! test
+1. Nested mixed wikitext and html list
+!! wikitext
+* hi
+* <ul><li>ho</li></ul>
+* hi
+** ho
+!! html/php
+<ul><li> hi</li>
+<li> <ul><li>ho</li></ul></li>
+<li> hi
+<ul><li> ho</li></ul></li></ul>
+
+!! html/parsoid
+<ul><li> hi</li>
+<li> <ul data-parsoid='{"stx":"html"}'><li data-parsoid='{"stx":"html"}'>ho</li></ul></li>
+<li> hi
+<ul><li> ho</li></ul></li></ul>
+!! end
+
+!! test
+2. Nested mixed wikitext and html list (incompatible)
+!! wikitext
+; hi
+: {{echo|<li>ho</li>}}
+!! html/php
+<dl><dt> hi</dt>
+<dd> <li>ho</li></dd></dl>
+
+!! html/parsoid
+<dl><dt> hi</dt>
+<dd> <li about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"stx":"html","pi":[[{"k":"1","spc":["","","",""]}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&lt;li>ho&lt;/li>"}},"i":0}}]}'>ho</li></dd></dl>
+!! end
+
 !! test
 Nested lists 1
 !! wikitext
@@ -10653,6 +10709,43 @@ foo {{''}} baz
 </p>
 !! end
 
+## This test is about making sure Parsoid's data-mw is well formed in the
+## face of multiple templates with intersecting and overlapping ranges.  The
+## wikitext itself is wretched.
+!! test
+Templates with intersecting and overlapping ranges
+!! wikitext
+{|{{echo|
+<p>ha</p>}}
+{|{{echo|
+<p>ho</p>}}
+{{echo|{{!}}hi}}
+|}
+!! html/php+tidy
+<p>ha</p>
+<p>ho</p>
+<table>
+<tr>
+<td></td>
+</tr>
+<tr>
+<td>hi</td>
+</tr>
+</table>
+<table>
+<tr>
+<td></td>
+</tr>
+</table>
+!! html/parsoid
+<p about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"stx":"html","autoInsertedEnd":true,"pi":[[{"k":"1","spc":["","","",""]}],[{"k":"1","spc":["","","",""]}],[{"k":"1","spc":["","","",""]}]],"firstWikitextNode":"table"}' data-mw='{"parts":["{|",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"\n&lt;p>ha&lt;/p>"}},"i":0}},"\n","{|",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"\n&lt;p>ho&lt;/p>"}},"i":1}},"\n",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"{{!}}hi"}},"i":2}},"\n|}"]}'>ha</p><table about="#mwt1" typeof="mw:ExpandedAttrs" data-mw='{"attribs":[[{"txt":"","html":""},{"html":""}]]}'>
+
+</table><p about="#mwt1">ho</p><table about="#mwt1" typeof="mw:ExpandedAttrs" data-mw='{"attribs":[[{"txt":"","html":""},{"html":""}]]}'>
+
+<tbody><tr><td>hi</td></tr>
+</tbody></table>
+!! end
+
 !! article
 Template:MSGNW test
 !! text
@@ -10876,6 +10969,8 @@ Un-closed <includeonly>
 !! wikitext
 <includeonly>
 !! html
+<p>&lt;includeonly&gt;
+</p>
 !! end
 
 ## We used to, but no longer wt2wt this test since the default serializer
@@ -18294,8 +18389,6 @@ image4    |300px| centre
                <li class="gallerybox" style="width: 155px"><div style="width: 155px">
                        <div class="thumb" style="height: 150px;">Image2.gif</div>
                        <div class="gallerytext">
-<p>||||
-</p>
                        </div>
                </div></li>
                <li class="gallerybox" style="width: 155px"><div style="width: 155px">
@@ -18306,8 +18399,8 @@ image4    |300px| centre
                <li class="gallerybox" style="width: 155px"><div style="width: 155px">
                        <div class="thumb" style="height: 150px;">Image4</div>
                        <div class="gallerytext">
-<p>300px| centre
-</p>
+<pre>centre
+</pre>
                        </div>
                </div></li>
                <li class="gallerybox" style="width: 155px"><div style="width: 155px">
@@ -18366,7 +18459,7 @@ image:foobar.jpg|Blabla|alt=This is a foo-bar.|blabla.
                <li class="gallerybox" style="width: 105px"><div style="width: 105px">
                        <div class="thumb" style="width: 100px;"><div style="margin:31px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="This is a foo-bar." src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></div></div>
                        <div class="gallerytext">
-<p>Blabla|blabla.
+<p>blabla.
 </p>
                        </div>
                </div></li>
@@ -20685,9 +20778,11 @@ HTML5 data attributes
 Strip reserved data attributes
 !! wikitext
 <div data-mw="foo" data-parsoid="bar" data-mw-someext="baz" data-ok="fred" data-ooui="xyzzy" data-bad:ns="ns">d</div>
-!! html
+!! html/php
 <div data-ok="fred">d</div>
 
+!! html/parsoid
+<div data-x-data-mw="foo" data-x-data-parsoid="bar" data-x-data-mw-someext="baz" data-ok="fred" data-parsoid='{"stx":"html","a":{"data-ooui":null,"data-bad:ns":null},"sa":{"data-ooui":"xyzzy","data-bad:ns":"ns"}}'>d</div>
 !! end
 
 !! test
index 861e3bd..523cf68 100644 (file)
@@ -221,8 +221,6 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
        }
 
        protected function tearDown() {
-               global $wgRequest;
-
                $status = ob_get_status();
                if ( isset( $status['name'] ) &&
                        $status['name'] === 'MediaWikiTestCase::wfResetOutputBuffersBarrier'
@@ -254,12 +252,6 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
                $this->mwGlobals = array();
                RequestContext::resetMain();
                MediaHandler::resetCache();
-               if ( session_id() !== '' ) {
-                       session_write_close();
-                       session_id( '' );
-               }
-               $wgRequest = new FauxRequest();
-               MediaWiki\Session\SessionManager::resetCache();
 
                $phpErrorLevel = intval( ini_get( 'error_reporting' ) );
 
@@ -517,13 +509,6 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
                                false,
                                $user
                        );
-
-                       // doEditContent() probably started the session via
-                       // User::loadFromSession(). Close it now.
-                       if ( session_id() !== '' ) {
-                               session_write_close();
-                               session_id( '' );
-                       }
                }
        }
 
@@ -1026,7 +1011,7 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
         *
         * @since 1.21
         */
-       protected function checkHasDiff3() {
+       protected function markTestSkippedIfNoDiff3() {
                global $wgDiff3;
 
                # This check may also protect against code injection in
index a45cfbb..f2b5a14 100644 (file)
@@ -17,9 +17,20 @@ class WellProtectedParentClass {
 }
 
 class WellProtectedClass extends WellProtectedParentClass {
+       protected static $staticProperty = 'sp';
+       private static $staticPrivateProperty = 'spp';
+
        protected $property;
        private $privateProperty;
 
+       protected static function staticMethod() {
+               return 'sm';
+       }
+
+       private static function staticPrivateMethod() {
+               return 'spm';
+       }
+
        public function __construct() {
                parent::__construct();
                $this->property = 1;
index 51f0083..90ee1bb 100644 (file)
@@ -86,7 +86,7 @@ class EditPageTest extends MediaWikiLangTestCase {
         * @param string $msg
         */
        protected function assertEditedTextEquals( $expected, $actual, $msg = '' ) {
-               return $this->assertEquals( rtrim( $expected ), rtrim( $actual ), $msg );
+               $this->assertEquals( rtrim( $expected ), rtrim( $actual ), $msg );
        }
 
        /**
@@ -272,6 +272,25 @@ class EditPageTest extends MediaWikiLangTestCase {
        public function testCreatePage(
                $desc, $pageTitle, $user, $editText, $expectedCode, $expectedText, $ignoreBlank = false
        ) {
+               $checkId = null;
+
+               $this->setMwGlobals( 'wgHooks', array(
+                       'PageContentInsertComplete' => array( function (
+                               WikiPage &$page, User &$user, Content $content,
+                               $summary, $minor, $u1, $u2, &$flags, Revision $revision
+                       ) {
+                               // types/refs checked
+                       } ),
+                       'PageContentSaveComplete' => array( function (
+                               WikiPage &$page, User &$user, Content $content,
+                               $summary, $minor, $u1, $u2, &$flags, Revision $revision,
+                               Status &$status, $baseRevId
+                       ) use ( &$checkId ) {
+                               $checkId = $status->value['revision']->getId();
+                               // types/refs checked
+                       } ),
+               ) );
+
                $edit = array( 'wpTextbox1' => $editText );
                if ( $ignoreBlank ) {
                        $edit['wpIgnoreBlankArticle'] = 1;
@@ -280,7 +299,67 @@ class EditPageTest extends MediaWikiLangTestCase {
                $page = $this->assertEdit( $pageTitle, null, $user, $edit, $expectedCode, $expectedText, $desc );
 
                if ( $expectedCode != EditPage::AS_BLANK_ARTICLE ) {
+                       $latest = $page->getLatest();
+                       $page->doDeleteArticleReal( $pageTitle );
+
+                       $this->assertGreaterThan( 0, $latest, "Page revision ID updated in object" );
+                       $this->assertEquals( $latest, $checkId, "Revision in Status for hook" );
+               }
+       }
+
+       /**
+        * @dataProvider provideCreatePages
+        * @covers EditPage
+        */
+       public function testCreatePageTrx(
+               $desc, $pageTitle, $user, $editText, $expectedCode, $expectedText, $ignoreBlank = false
+       ) {
+               $checkIds = array();
+               $this->setMwGlobals( 'wgHooks', array(
+                       'PageContentInsertComplete' => array( function (
+                               WikiPage &$page, User &$user, Content $content,
+                               $summary, $minor, $u1, $u2, &$flags, Revision $revision
+                       ) {
+                               // types/refs checked
+                       } ),
+                       'PageContentSaveComplete' => array( function (
+                               WikiPage &$page, User &$user, Content $content,
+                               $summary, $minor, $u1, $u2, &$flags, Revision $revision,
+                               Status &$status, $baseRevId
+                       ) use ( &$checkIds ) {
+                               $checkIds[] = $status->value['revision']->getId();
+                               // types/refs checked
+                       } ),
+               ) );
+
+               wfGetDB( DB_MASTER )->begin( __METHOD__ );
+
+               $edit = array( 'wpTextbox1' => $editText );
+               if ( $ignoreBlank ) {
+                       $edit['wpIgnoreBlankArticle'] = 1;
+               }
+
+               $page = $this->assertEdit(
+                       $pageTitle, null, $user, $edit, $expectedCode, $expectedText, $desc );
+
+               $pageTitle2 = (string)$pageTitle . '/x';
+               $page2 = $this->assertEdit(
+                       $pageTitle2, null, $user, $edit, $expectedCode, $expectedText, $desc );
+
+               wfGetDB( DB_MASTER )->commit( __METHOD__ );
+
+               if ( $expectedCode != EditPage::AS_BLANK_ARTICLE ) {
+                       $latest = $page->getLatest();
                        $page->doDeleteArticleReal( $pageTitle );
+
+                       $this->assertGreaterThan( 0, $latest, "Page #1 revision ID updated in object" );
+                       $this->assertEquals( $latest, $checkIds[0], "Revision #1 in Status for hook" );
+
+                       $latest2 = $page2->getLatest();
+                       $page2->doDeleteArticleReal( $pageTitle2 );
+
+                       $this->assertGreaterThan( 0, $latest2, "Page #2 revision ID updated in object" );
+                       $this->assertEquals( $latest2, $checkIds[1], "Revision #2 in Status for hook" );
                }
        }
 
@@ -463,7 +542,7 @@ hello
        public function testAutoMerge( $baseUser, $text, $adamsEdit, $bertasEdit,
                $expectedCode, $expectedText, $message = null
        ) {
-               $this->checkHasDiff3();
+               $this->markTestSkippedIfNoDiff3();
 
                // create page
                $ns = $this->getDefaultWikitextNS();
index 56f9746..d174947 100644 (file)
@@ -469,7 +469,7 @@ class GlobalTest extends MediaWikiTestCase {
         * @covers ::wfMerge
         */
        public function testMerge( $old, $mine, $yours, $expectedMergeResult, $expectedText ) {
-               $this->checkHasDiff3();
+               $this->markTestSkippedIfNoDiff3();
 
                $mergedText = null;
                $isMerged = wfMerge( $old, $mine, $yours, $mergedText );
index 3c45f30..fabc5c6 100644 (file)
@@ -28,6 +28,8 @@ class MimeMagicTest extends PHPUnit_Framework_TestCase {
                        array( 'txt', 'text/plain', 'text/plain' ),
                        array( 'csv', 'text/plain', 'text/csv' ),
                        array( 'tsv', 'text/plain', 'text/tab-separated-values' ),
+                       array( 'js', 'text/javascript', 'application/javascript' ),
+                       array( 'js', 'application/x-javascript', 'application/javascript' ),
                        array( 'json', 'text/plain', 'application/json' ),
                        array( 'foo', 'application/x-opc+zip', 'application/zip' ),
                        array( 'docx', 'application/x-opc+zip',
index f5ef016..cfc416b 100644 (file)
@@ -142,7 +142,7 @@ class OutputPageTest extends MediaWikiTestCase {
                        // Load module script only
                        array(
                                array( 'test.foo', ResourceLoaderModule::TYPE_SCRIPTS ),
-                               "<script>window.RLQ = window.RLQ || []; window.RLQ.push( function () {\n"
+                               "<script>(window.RLQ = window.RLQ || []).push(function () {\n"
                                        . 'mw.loader.load("http://127.0.0.1:8080/w/load.php?debug=false\u0026lang=en\u0026modules=test.foo\u0026only=scripts\u0026skin=fallback");'
                                        . "\n} );</script>"
                        ),
@@ -161,14 +161,14 @@ class OutputPageTest extends MediaWikiTestCase {
                        // Load private module (only=scripts)
                        array(
                                array( 'test.quux', ResourceLoaderModule::TYPE_SCRIPTS ),
-                               "<script>window.RLQ = window.RLQ || []; window.RLQ.push( function () {\n"
+                               "<script>(window.RLQ = window.RLQ || []).push(function () {\n"
                                        . "mw.test.baz({token:123});mw.loader.state({\"test.quux\":\"ready\"});\n"
                                        . "} );</script>"
                        ),
                        // Load private module (combined)
                        array(
                                array( 'test.quux', ResourceLoaderModule::TYPE_COMBINED ),
-                               "<script>window.RLQ = window.RLQ || []; window.RLQ.push( function () {\n"
+                               "<script>(window.RLQ = window.RLQ || []).push(function () {\n"
                                        . "mw.loader.implement(\"test.quux\",function($,jQuery){"
                                        . "mw.test.baz({token:123});},{\"css\":[\".mw-icon{transition:none}"
                                        . "\"]});\n} );</script>"
@@ -186,10 +186,10 @@ class OutputPageTest extends MediaWikiTestCase {
                        // Load two modules in separate groups
                        array(
                                array( array( 'test.group.foo', 'test.group.bar' ), ResourceLoaderModule::TYPE_COMBINED ),
-                               "<script>window.RLQ = window.RLQ || []; window.RLQ.push( function () {\n"
+                               "<script>(window.RLQ = window.RLQ || []).push(function () {\n"
                                        . 'mw.loader.load("http://127.0.0.1:8080/w/load.php?debug=false\u0026lang=en\u0026modules=test.group.bar\u0026skin=fallback");'
                                        . "\n} );</script>\n"
-                                       . "<script>window.RLQ = window.RLQ || []; window.RLQ.push( function () {\n"
+                                       . "<script>(window.RLQ = window.RLQ || []).push(function () {\n"
                                        . 'mw.loader.load("http://127.0.0.1:8080/w/load.php?debug=false\u0026lang=en\u0026modules=test.group.foo\u0026skin=fallback");'
                                        . "\n} );</script>"
                        ),
index d3dc512..ca1ec50 100644 (file)
@@ -317,33 +317,6 @@ class SanitizerTest extends MediaWikiTestCase {
                );
        }
 
-       /**
-        * Test for support or lack of support for specific attributes in the attribute whitelist.
-        */
-       public static function provideAttributeSupport() {
-               /** array( <attributes>, <expected>, <message> ) */
-               return array(
-                       array(
-                               'div',
-                               ' role="presentation"',
-                               ' role="presentation"',
-                               'Support for WAI-ARIA\'s role="presentation".'
-                       ),
-                       array( 'div', ' role="main"', '', "Other WAI-ARIA roles are currently not supported." ),
-               );
-       }
-
-       /**
-        * @dataProvider provideAttributeSupport
-        * @covers Sanitizer::fixTagAttributes
-        */
-       public function testAttributeSupport( $tag, $attributes, $expected, $message ) {
-               $this->assertEquals( $expected,
-                       Sanitizer::fixTagAttributes( $attributes, $tag ),
-                       $message
-               );
-       }
-
        /**
         * @dataProvider provideEscapeHtmlAllowEntities
         * @covers Sanitizer::escapeHtmlAllowEntities
@@ -363,4 +336,28 @@ class SanitizerTest extends MediaWikiTestCase {
                        array( '&lt;script&gt;foo&lt;/script&gt;', '<script>foo</script>' ),
                );
        }
+
+       /**
+        * Test escapeIdReferenceList for consistency with escapeId
+        *
+        * @dataProvider provideEscapeIdReferenceList
+        * @covers Sanitizer::escapeIdReferenceList
+        */
+       public function testEscapeIdReferenceList( $referenceList, $id1, $id2 ) {
+               $this->assertEquals(
+                       Sanitizer::escapeIdReferenceList( $referenceList, 'noninitial' ),
+                       Sanitizer::escapeId( $id1, 'noninitial' )
+                               . ' '
+                               . Sanitizer::escapeId( $id2, 'noninitial' )
+               );
+       }
+
+       public static function provideEscapeIdReferenceList() {
+               /** array( <reference list>, <individual id 1>, <individual id 2> ) */
+               return array(
+                       array( 'foo bar', 'foo', 'bar' ),
+                       array( '#1 #2', '#1', '#2' ),
+                       array( '+1 +2', '+1', '+2' ),
+               );
+       }
 }
index c95e69b..f5d0480 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /**
- * @author Adam Shorland
+ * @author Addshore
  */
 class StatusTest extends MediaWikiLangTestCase {
 
diff --git a/tests/phpunit/includes/TestLogger.php b/tests/phpunit/includes/TestLogger.php
deleted file mode 100644 (file)
index 7099c3a..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-<?php
-/**
- * Testing logger
- *
- * Copyright (C) 2015 Brad Jorsch <bjorsch@wikimedia.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
- * @author Brad Jorsch <bjorsch@wikimedia.org>
- */
-
-use Psr\Log\LogLevel;
-
-/**
- * A logger that may be configured to either buffer logs or to print them to
- * the output where PHPUnit will complain about them.
- *
- * @since 1.27
- */
-class TestLogger extends \Psr\Log\AbstractLogger {
-       private $collect = false;
-       private $buffer = array();
-       private $filter = null;
-
-       /**
-        * @param bool $collect Whether to collect logs
-        * @param callable $filter Filter logs before collecting/printing. Signature is
-        *  string|null function ( string $message, string $level );
-        */
-       public function __construct( $collect = false, $filter = null ) {
-               $this->collect = $collect;
-               $this->filter = $filter;
-       }
-
-       /**
-        * Set the "collect" flag
-        * @param bool $collect
-        */
-       public function setCollect( $collect ) {
-               $this->collect = $collect;
-       }
-
-       /**
-        * Return the collected logs
-        * @return array Array of array( string $level, string $message )
-        */
-       public function getBuffer() {
-               return $this->buffer;
-       }
-
-       /**
-        * Clear the collected log buffer
-        */
-       public function clearBuffer() {
-               $this->buffer = array();
-       }
-
-       public function log( $level, $message, array $context = array() ) {
-               $message = trim( $message );
-
-               if ( $this->filter ) {
-                       $message = call_user_func( $this->filter, $message, $level );
-                       if ( $message === null ) {
-                               return;
-                       }
-               }
-
-               if ( $this->collect ) {
-                       $this->buffer[] = array( $level, $message );
-               } else {
-                       switch ( $level ) {
-                               case LogLevel::DEBUG:
-                               case LogLevel::INFO:
-                               case LogLevel::NOTICE:
-                                       trigger_error( "LOG[$level]: $message", E_USER_NOTICE );
-                                       break;
-
-                               case LogLevel::WARNING:
-                                       trigger_error( "LOG[$level]: $message", E_USER_WARNING );
-                                       break;
-
-                               case LogLevel::ERROR:
-                               case LogLevel::CRITICAL:
-                               case LogLevel::ALERT:
-                               case LogLevel::EMERGENCY:
-                                       trigger_error( "LOG[$level]: $message", E_USER_ERROR );
-                                       break;
-                       }
-               }
-       }
-}
index 63d8971..7332e15 100644 (file)
  *    $formatter = $title->getTitleFormatter();
  *
  * TODO:
- * - Provide access to static methods and properties.
  * - Organize other helper classes in tests/testHelpers.inc into a directory.
  */
 class TestingAccessWrapper {
+       /** @var mixed The object, or the class name for static-only access */
        public $object;
 
        /**
         * Return the same object, without access restrictions.
         */
        public static function newFromObject( $object ) {
+               if ( !is_object( $object ) ) {
+                       throw new InvalidArgumentException( __METHOD__ . ' must be called with an object' );
+               }
                $wrapper = new TestingAccessWrapper();
                $wrapper->object = $object;
                return $wrapper;
        }
 
+       /**
+        * Allow access to non-public static methods and properties of the class.
+        * Use non-static access,
+        */
+       public static function newFromClass( $className ) {
+               if ( !is_string( $className ) ) {
+                       throw new InvalidArgumentException( __METHOD__ . ' must be called with a class name' );
+               }
+               $wrapper = new TestingAccessWrapper();
+               $wrapper->object = $className;
+               return $wrapper;
+       }
+
        public function __call( $method, $args ) {
+               $methodReflection = $this->getMethod( $method );
+
+               if ( $this->isStatic() && !$methodReflection->isStatic() ) {
+                       throw new DomainException( __METHOD__ . ': Cannot call non-static when wrapping static class' );
+               }
+
+               return $methodReflection->invokeArgs( $methodReflection->isStatic() ? null : $this->object,
+                       $args );
+       }
+
+       public function __set( $name, $value ) {
+               $propertyReflection = $this->getProperty( $name );
+
+               if ( $this->isStatic() && !$propertyReflection->isStatic() ) {
+                       throw new DomainException( __METHOD__ . ': Cannot set property when wrapping static class' );
+               }
+
+               $propertyReflection->setValue( $this->object, $value );
+       }
+
+       public function __get( $name ) {
+               $propertyReflection = $this->getProperty( $name );
+
+               if ( $this->isStatic() && !$propertyReflection->isStatic() ) {
+                       throw new DomainException( __METHOD__ . ': Cannot get property when wrapping static class' );
+               }
+
+               return $propertyReflection->getValue( $this->object );
+       }
+
+       private function isStatic() {
+               return is_string( $this->object );
+       }
+
+       /**
+        * Return a property and make it accessible.
+        * @param string $name
+        * @return ReflectionMethod
+        */
+       private function getMethod( $name ) {
                $classReflection = new ReflectionClass( $this->object );
-               $methodReflection = $classReflection->getMethod( $method );
+               $methodReflection = $classReflection->getMethod( $name );
                $methodReflection->setAccessible( true );
-               return $methodReflection->invokeArgs( $this->object, $args );
+               return $methodReflection;
        }
 
        /**
+        * Return a property and make it accessible.
+        *
         * ReflectionClass::getProperty() fails if the private property is defined
         * in a parent class. This works more like ReflectionClass::getMethod().
+        *
+        * @param string $name
+        * @return ReflectionProperty
+        * @throws ReflectionException
         */
        private function getProperty( $name ) {
                $classReflection = new ReflectionClass( $this->object );
                try {
-                       return $classReflection->getProperty( $name );
+                       $propertyReflection = $classReflection->getProperty( $name );
                } catch ( ReflectionException $ex ) {
                        while ( true ) {
                                $classReflection = $classReflection->getParentClass();
@@ -54,23 +116,13 @@ class TestingAccessWrapper {
                                        continue;
                                }
                                if ( $propertyReflection->isPrivate() ) {
-                                       return $propertyReflection;
+                                       break;
                                } else {
                                        throw $ex;
                                }
                        }
                }
-       }
-
-       public function __set( $name, $value ) {
-               $propertyReflection = $this->getProperty( $name );
                $propertyReflection->setAccessible( true );
-               $propertyReflection->setValue( $this->object, $value );
-       }
-
-       public function __get( $name ) {
-               $propertyReflection = $this->getProperty( $name );
-               $propertyReflection->setAccessible( true );
-               return $propertyReflection->getValue( $this->object );
+               return $propertyReflection;
        }
 }
index fc54afa..23eb023 100644 (file)
@@ -3,6 +3,7 @@
 class TestingAccessWrapperTest extends MediaWikiTestCase {
        protected $raw;
        protected $wrapped;
+       protected $wrappedStatic;
 
        function setUp() {
                parent::setUp();
@@ -10,12 +11,38 @@ class TestingAccessWrapperTest extends MediaWikiTestCase {
                require_once __DIR__ . '/../data/helpers/WellProtectedClass.php';
                $this->raw = new WellProtectedClass();
                $this->wrapped = TestingAccessWrapper::newFromObject( $this->raw );
+               $this->wrappedStatic = TestingAccessWrapper::newFromClass( 'WellProtectedClass' );
+       }
+
+       /**
+        * @expectedException InvalidArgumentException
+        */
+       function testConstructorException() {
+               TestingAccessWrapper::newFromObject( 'WellProtectedClass' );
+       }
+
+       /**
+        * @expectedException InvalidArgumentException
+        */
+       function testStaticConstructorException() {
+               TestingAccessWrapper::newFromClass( new WellProtectedClass() );
        }
 
        function testGetProperty() {
                $this->assertSame( 1, $this->wrapped->property );
                $this->assertSame( 42, $this->wrapped->privateProperty );
                $this->assertSame( 9000, $this->wrapped->privateParentProperty );
+               $this->assertSame( 'sp', $this->wrapped->staticProperty );
+               $this->assertSame( 'spp', $this->wrapped->staticPrivateProperty );
+               $this->assertSame( 'sp', $this->wrappedStatic->staticProperty );
+               $this->assertSame( 'spp', $this->wrappedStatic->staticPrivateProperty );
+       }
+
+       /**
+        * @expectedException DomainException
+        */
+       function testGetException() {
+               $this->wrappedStatic->property;
        }
 
        function testSetProperty() {
@@ -30,6 +57,33 @@ class TestingAccessWrapperTest extends MediaWikiTestCase {
                $this->wrapped->privateParentProperty = 12;
                $this->assertSame( 12, $this->wrapped->privateParentProperty );
                $this->assertSame( 12, $this->raw->getPrivateParentProperty() );
+
+               $this->wrapped->staticProperty = 'x';
+               $this->assertSame( 'x', $this->wrapped->staticProperty );
+               $this->assertSame( 'x', $this->wrappedStatic->staticProperty );
+
+               $this->wrapped->staticPrivateProperty = 'y';
+               $this->assertSame( 'y', $this->wrapped->staticPrivateProperty );
+               $this->assertSame( 'y', $this->wrappedStatic->staticPrivateProperty );
+
+               $this->wrappedStatic->staticProperty = 'X';
+               $this->assertSame( 'X', $this->wrapped->staticProperty );
+               $this->assertSame( 'X', $this->wrappedStatic->staticProperty );
+
+               $this->wrappedStatic->staticPrivateProperty = 'Y';
+               $this->assertSame( 'Y', $this->wrapped->staticPrivateProperty );
+               $this->assertSame( 'Y', $this->wrappedStatic->staticPrivateProperty );
+
+               // don't rely on PHPUnit to restore static properties
+               $this->wrapped->staticProperty = 'sp';
+               $this->wrapped->staticPrivateProperty = 'spp';
+       }
+
+       /**
+        * @expectedException DomainException
+        */
+       function testSetException() {
+               $this->wrappedStatic->property = 1;
        }
 
        function testCallMethod() {
@@ -44,9 +98,22 @@ class TestingAccessWrapperTest extends MediaWikiTestCase {
                $this->wrapped->incrementPrivateParentPropertyValue();
                $this->assertSame( 9001, $this->wrapped->privateParentProperty );
                $this->assertSame( 9001, $this->raw->getPrivateParentProperty() );
+
+               $this->assertSame( 'sm', $this->wrapped->staticMethod() );
+               $this->assertSame( 'spm', $this->wrapped->staticPrivateMethod() );
+               $this->assertSame( 'sm', $this->wrappedStatic->staticMethod() );
+               $this->assertSame( 'spm', $this->wrappedStatic->staticPrivateMethod() );
        }
 
        function testCallMethodTwoArgs() {
                $this->assertSame( 'two', $this->wrapped->whatSecondArg( 'one', 'two' ) );
        }
+
+       /**
+        * @expectedException DomainException
+        */
+       function testCallMethodException() {
+               $this->wrappedStatic->incrementPropertyValue();
+       }
+
 }
index aad435e..f06208b 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /**
- * @author Adam Shorland
+ * @author Addshore
  * @covers TitleArrayFromResult
  */
 class TitleArrayFromResultTest extends PHPUnit_Framework_TestCase {
index 4085925..7dfd14f 100644 (file)
@@ -13,13 +13,9 @@ class ApiLoginTest extends ApiTestCase {
         * Test result of attempted login with an empty username
         */
        public function testApiLoginNoName() {
-               $session = array(
-                       'wsLoginToken' => 'foobar'
-               );
                $data = $this->doApiRequest( array( 'action' => 'login',
                        'lgname' => '', 'lgpassword' => self::$users['sysop']->password,
-                       'lgtoken' => 'foobar',
-               ), $session );
+               ) );
                $this->assertEquals( 'NoName', $data[0]['login']['result'] );
        }
 
@@ -183,94 +179,4 @@ class ApiLoginTest extends ApiTestCase {
                $this->assertArrayHasKey( 'lgtoken', $data[0]['login'] );
        }
 
-       public function testBotPassword() {
-               global $wgServer, $wgSessionProviders;
-
-               if ( !isset( $wgServer ) ) {
-                       $this->markTestIncomplete( 'This test needs $wgServer to be set in LocalSettings.php' );
-               }
-
-               $this->setMwGlobals( array(
-                       'wgSessionProviders' => array_merge( $wgSessionProviders, array(
-                               array(
-                                       'class' => 'MediaWiki\\Session\\BotPasswordSessionProvider',
-                                       'args' => array( array( 'priority' => 40 ) ),
-                               )
-                       ) ),
-                       'wgEnableBotPasswords' => true,
-                       'wgBotPasswordsDatabase' => false,
-                       'wgCentralIdLookupProvider' => 'local',
-                       'wgGrantPermissions' => array(
-                               'test' => array( 'read' => true ),
-                       ),
-               ) );
-
-               // Make sure our session provider is present
-               $manager = TestingAccessWrapper::newFromObject( MediaWiki\Session\SessionManager::singleton() );
-               if ( !isset( $manager->sessionProviders['MediaWiki\\Session\\BotPasswordSessionProvider'] ) ) {
-                       $tmp = $manager->sessionProviders;
-                       $manager->sessionProviders = null;
-                       $manager->sessionProviders = $tmp + $manager->getProviders();
-               }
-               $this->assertNotNull(
-                       MediaWiki\Session\SessionManager::singleton()->getProvider(
-                               'MediaWiki\\Session\\BotPasswordSessionProvider'
-                       ),
-                       'sanity check'
-               );
-
-               $user = self::$users['sysop'];
-               $centralId = CentralIdLookup::factory()->centralIdFromLocalUser( $user->getUser() );
-               $this->assertNotEquals( 0, $centralId, 'sanity check' );
-
-               $passwordFactory = new PasswordFactory();
-               $passwordFactory->init( RequestContext::getMain()->getConfig() );
-               // A is unsalted MD5 (thus fast) ... we don't care about security here, this is test only
-               $passwordFactory->setDefaultType( 'A' );
-               $pwhash = $passwordFactory->newFromPlaintext( 'foobaz' );
-
-               $dbw = wfGetDB( DB_MASTER );
-               $dbw->insert(
-                       'bot_passwords',
-                       array(
-                               'bp_user' => $centralId,
-                               'bp_app_id' => 'foo',
-                               'bp_password' => $pwhash->toString(),
-                               'bp_token' => '',
-                               'bp_restrictions' => MWRestrictions::newDefault()->toJson(),
-                               'bp_grants' => '["test"]',
-                       ),
-                       __METHOD__
-               );
-
-               $lgName = $user->username . BotPassword::getSeparator() . 'foo';
-
-               $ret = $this->doApiRequest( array(
-                       'action' => 'login',
-                       'lgname' => $lgName,
-                       'lgpassword' => 'foobaz',
-               ) );
-
-               $result = $ret[0];
-               $this->assertNotInternalType( 'bool', $result );
-               $this->assertNotInternalType( 'null', $result['login'] );
-
-               $a = $result['login']['result'];
-               $this->assertEquals( 'NeedToken', $a );
-               $token = $result['login']['token'];
-
-               $ret = $this->doApiRequest( array(
-                       'action' => 'login',
-                       'lgtoken' => $token,
-                       'lgname' => $lgName,
-                       'lgpassword' => 'foobaz',
-               ), $ret[2] );
-
-               $result = $ret[0];
-               $this->assertNotInternalType( 'bool', $result );
-               $a = $result['login']['result'];
-
-               $this->assertEquals( 'Success', $a );
-       }
-
 }
index 25ffcb7..01113a6 100644 (file)
@@ -47,7 +47,11 @@ abstract class ApiTestCase extends MediaWikiLangTestCase {
 
        protected function tearDown() {
                // Avoid leaking session over tests
-               MediaWiki\Session\SessionManager::getGlobalSession()->clear();
+               if ( session_id() != '' ) {
+                       global $wgUser;
+                       $wgUser->logout();
+                       session_destroy();
+               }
 
                parent::tearDown();
        }
index b6ae641..87f794c 100644 (file)
@@ -15,6 +15,8 @@ abstract class ApiTestCaseUpload extends ApiTestCase {
                        'wgEnableAPI' => true,
                ) );
 
+               wfSetupSession();
+
                $this->clearFakeUploads();
        }
 
index 40de254..18f0f79 100644 (file)
@@ -83,7 +83,7 @@ class ApiUploadTest extends ApiTestCaseUpload {
                        ), $session, self::$users['uploader']->getUser() );
                } catch ( UsageException $e ) {
                        $exception = true;
-                       $this->assertEquals( "One of the parameters filekey, file, url, statuskey is required",
+                       $this->assertEquals( "One of the parameters filekey, file, url is required",
                                $e->getMessage() );
                }
                $this->assertTrue( $exception, "Got exception" );
index 2622ad4..70da12e 100644 (file)
@@ -5,7 +5,7 @@
  *
  * @group Database
  *
- * @author Adam Shorland
+ * @author Addshore
  */
 class CategoryMembershipChangeTest extends MediaWikiLangTestCase {
 
index 8a9d2ab..6a6cecc 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /**
- * @author Adam Shorland
+ * @author Addshore
  * @covers JsonContent
  */
 class JsonContentTest extends MediaWikiLangTestCase {
index 361238b..6b7a210 100644 (file)
@@ -157,7 +157,7 @@ class WikitextContentHandlerTest extends MediaWikiLangTestCase {
         * @covers WikitextContentHandler::merge3
         */
        public function testMerge3( $old, $mine, $yours, $expected ) {
-               $this->checkHasDiff3();
+               $this->markTestSkippedIfNoDiff3();
 
                // test merge
                $oldContent = new WikitextContent( $old );
index 25969e6..a9e5be2 100644 (file)
@@ -37,14 +37,6 @@ class RequestContextTest extends MediaWikiTestCase {
         * @covers RequestContext::importScopedSession
         */
        public function testImportScopedSession() {
-               // Make sure session handling is started
-               if ( !MediaWiki\Session\PHPSessionHandler::isInstalled() ) {
-                       MediaWiki\Session\PHPSessionHandler::install(
-                               MediaWiki\Session\SessionManager::singleton()
-                       );
-               }
-               $oldSessionId = session_id();
-
                $context = RequestContext::getMain();
 
                $oInfo = $context->exportSession();
@@ -84,16 +76,7 @@ class RequestContextTest extends MediaWikiTestCase {
                        $context->getRequest()->getAllHeaders(),
                        "Correct context headers."
                );
-               $this->assertEquals(
-                       $sinfo['sessionId'],
-                       MediaWiki\Session\SessionManager::getGlobalSession()->getId(),
-                       "Correct context session ID."
-               );
-               if ( \MediaWiki\Session\PhpSessionHandler::isEnabled() ) {
-                       $this->assertEquals( $sinfo['sessionId'], session_id(), "Correct context session ID." );
-               } else {
-                       $this->assertEquals( $oldSessionId, session_id(), "Unchanged PHP session ID." );
-               }
+               $this->assertEquals( $sinfo['sessionId'], session_id(), "Correct context session ID." );
                $this->assertEquals( true, $context->getUser()->isLoggedIn(), "Correct context user." );
                $this->assertEquals( $sinfo['userId'], $context->getUser()->getId(), "Correct context user ID." );
                $this->assertEquals(
index a546bec..f4757a4 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /**
- * @author Adam Shorland
+ * @author Addshore
  *
  * @group Diff
  */
index cbe0573..d15e6cd 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @author Adam Shorland
+ * @author Addshore
  *
  * @group Diff
  */
index e0d7915..31e0f87 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /**
- * @author Adam Shorland
+ * @author Addshore
  *
  * @group Diff
  */
index 500b7e4..e6a1812 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /**
  * @covers BadTitleError
- * @author Adam Shorland
+ * @author Addshore
  */
 class BadTitleErrorTest extends MediaWikiTestCase {
 
index 9c4e4a0..d045268 100644 (file)
@@ -2,7 +2,7 @@
 
 /**
  * @covers ErrorPageError
- * @author Adam Shorland
+ * @author Addshore
  */
 class ErrorPageErrorTest extends MediaWikiTestCase {
 
index 6f6aba4..bb874e1 100644 (file)
@@ -2,7 +2,7 @@
 
 /**
  * @covers ReadOnlyError
- * @author Adam Shorland
+ * @author Addshore
  */
 class ReadOnlyErrorTest extends MediaWikiTestCase {
 
index a1cf84b..23bb1e8 100644 (file)
@@ -2,7 +2,7 @@
 
 /**
  * @covers ThrottledError
- * @author Adam Shorland
+ * @author Addshore
  */
 class ThrottledErrorTest extends MediaWikiTestCase {
 
index 591a0fa..644de0b 100644 (file)
@@ -2,7 +2,7 @@
 
 /**
  * @covers UserNotLoggedIn
- * @author Adam Shorland
+ * @author Addshore
  */
 class UserNotLoggedInTest extends MediaWikiTestCase {
 
index 93069d2..0550a93 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /**
- * @author Adam Shorland
+ * @author Addshore
  */
 class JobTest extends MediaWikiTestCase {
 
index 226e492..4224443 100644 (file)
@@ -34,7 +34,7 @@ class PageLangLogFormatterTest extends LogFormatterTestCase {
                                        ),
                                ),
                                array(
-                                       'text' => 'User changed page language for Page from English (en) to Deutsch (de) [default].',
+                                       'text' => 'User changed the language of Page from English (en) to Deutsch (de) [default]',
                                        'api' => array(
                                                'oldlanguage' => 'en',
                                                'newlanguage' => 'de[def]'
index e4415ec..d355e17 100644 (file)
@@ -34,7 +34,7 @@ class BitmapScalingTest extends MediaWikiTestCase {
                                array(
                                        'width' => 512, 'height' => 384,
                                        'physicalWidth' => 512, 'physicalHeight' => 384,
-                                       'page' => 1,
+                                       'page' => 1, 'interlace' => false,
                                ),
                                array( 'width' => 512 ),
                                'Resizing with width set',
@@ -44,7 +44,7 @@ class BitmapScalingTest extends MediaWikiTestCase {
                                array(
                                        'width' => 512, 'height' => 384,
                                        'physicalWidth' => 512, 'physicalHeight' => 384,
-                                       'page' => 1,
+                                       'page' => 1, 'interlace' => false,
                                ),
                                array( 'width' => 512, 'height' => 768 ),
                                'Resizing with height set too high',
@@ -54,7 +54,7 @@ class BitmapScalingTest extends MediaWikiTestCase {
                                array(
                                        'width' => 512, 'height' => 384,
                                        'physicalWidth' => 512, 'physicalHeight' => 384,
-                                       'page' => 1,
+                                       'page' => 1, 'interlace' => false,
                                ),
                                array( 'width' => 1024, 'height' => 384 ),
                                'Resizing with height set',
@@ -66,7 +66,7 @@ class BitmapScalingTest extends MediaWikiTestCase {
                                array(
                                        'width' => 5, 'height' => 1,
                                        'physicalWidth' => 5, 'physicalHeight' => 1,
-                                       'page' => 1,
+                                       'page' => 1, 'interlace' => false,
                                ),
                                array( 'width' => 5 ),
                                'Very wide image',
@@ -77,7 +77,7 @@ class BitmapScalingTest extends MediaWikiTestCase {
                                array(
                                        'width' => 1, 'height' => 10,
                                        'physicalWidth' => 1, 'physicalHeight' => 10,
-                                       'page' => 1,
+                                       'page' => 1, 'interlace' => false,
                                ),
                                array( 'width' => 1 ),
                                'Very high image',
@@ -87,7 +87,7 @@ class BitmapScalingTest extends MediaWikiTestCase {
                                array(
                                        'width' => 1, 'height' => 5,
                                        'physicalWidth' => 1, 'physicalHeight' => 10,
-                                       'page' => 1,
+                                       'page' => 1, 'interlace' => false,
                                ),
                                array( 'width' => 10, 'height' => 5 ),
                                'Very high image with height set',
@@ -98,11 +98,22 @@ class BitmapScalingTest extends MediaWikiTestCase {
                                array(
                                        'width' => 5000, 'height' => 5000,
                                        'physicalWidth' => 4000, 'physicalHeight' => 4000,
-                                       'page' => 1,
+                                       'page' => 1, 'interlace' => false,
                                ),
                                array( 'width' => 5000 ),
                                'Bigger than max image size but doesn\'t need scaling',
                        ),
+                       /* Max interlace image area */
+                       array(
+                               array( 4000, 4000 ),
+                               array(
+                                       'width' => 5000, 'height' => 5000,
+                                       'physicalWidth' => 4000, 'physicalHeight' => 4000,
+                                       'page' => 1, 'interlace' => false,
+                               ),
+                               array( 'width' => 5000, 'interlace' => true ),
+                               'Interlace bigger than max interlace area',
+                       ),
                );
        }
 
index 06542cf..6556186 100644 (file)
@@ -44,6 +44,9 @@ class IPTCTest extends MediaWikiTestCase {
         * @covers IPTC::Parse
         */
        public function testIPTCParseForcedUTFButInvalid() {
+               if ( version_compare( PHP_VERSION, '5.5.26', '<' ) ) {
+                       $this->markTestSkipped( 'Test fails on pre-PHP 5.5.25. See T124574/T39665 for details.' );
+               }
                $iptcData = "Photoshop 3.0\08BIM\4\4\0\0\0\0\0\x11\x1c\x02\x19\x00\x04\xC3\xC3\xC3\xB8"
                        . "\x1c\x01\x5A\x00\x03\x1B\x25\x47";
                $res = IPTC::Parse( $iptcData );
index 7c0dd2e..6d2b398 100644 (file)
@@ -816,7 +816,7 @@ more stuff
 
        /* @todo FIXME: fix this!
        public function testGetUndoText() {
-       $this->checkHasDiff3();
+       $this->markTestSkippedIfNoDiff3();
 
        $text = "one";
        $page = $this->createPage( "WikiPageTest_testGetUndoText", $text );
index 1ebba1a..b940230 100644 (file)
@@ -48,7 +48,7 @@ class PreprocessorTest extends MediaWikiTestCase {
                        array( "<noinclude> Foo bar </noinclude>", "<root><ignore>&lt;noinclude&gt;</ignore> Foo bar <ignore>&lt;/noinclude&gt;</ignore></root>" ),
                        array( "<noinclude>\n{{Foo}}\n</noinclude>", "<root><ignore>&lt;noinclude&gt;</ignore>\n<template lineStart=\"1\"><title>Foo</title></template>\n<ignore>&lt;/noinclude&gt;</ignore></root>" ),
                        array( "<noinclude>\n{{Foo}}\n</noinclude>\n", "<root><ignore>&lt;noinclude&gt;</ignore>\n<template lineStart=\"1\"><title>Foo</title></template>\n<ignore>&lt;/noinclude&gt;</ignore>\n</root>" ),
-                       array( "<gallery>foo bar", "<root><ext><name>gallery</name><attr></attr><inner>foo bar</inner></ext></root>" ),
+                       array( "<gallery>foo bar", "<root>&lt;gallery&gt;foo bar</root>" ),
                        array( "<{{foo}}>", "<root>&lt;<template><title>foo</title></template>&gt;</root>" ),
                        array( "<{{{foo}}}>", "<root>&lt;<tplarg><title>foo</title></tplarg>&gt;</root>" ),
                        array( "<gallery></gallery</gallery>", "<root><ext><name>gallery</name><attr></attr><inner>&lt;/gallery</inner><close>&lt;/gallery&gt;</close></ext></root>" ),
diff --git a/tests/phpunit/includes/session/BotPasswordSessionProviderTest.php b/tests/phpunit/includes/session/BotPasswordSessionProviderTest.php
deleted file mode 100644 (file)
index 52872a4..0000000
+++ /dev/null
@@ -1,288 +0,0 @@
-<?php
-
-namespace MediaWiki\Session;
-
-use Psr\Log\LogLevel;
-use MediaWikiTestCase;
-use User;
-
-/**
- * @group Session
- * @group Database
- * @covers MediaWiki\Session\BotPasswordSessionProvider
- */
-class BotPasswordSessionProviderTest extends MediaWikiTestCase {
-
-       private $config;
-
-       private function getProvider( $name = null, $prefix = null ) {
-               global $wgSessionProviders;
-
-               $params = array(
-                       'priority' => 40,
-                       'sessionCookieName' => $name,
-                       'sessionCookieOptions' => array(),
-               );
-               if ( $prefix !== null ) {
-                       $params['sessionCookieOptions']['prefix'] = $prefix;
-               }
-
-               if ( !$this->config ) {
-                       $this->config = new \HashConfig( array(
-                               'CookiePrefix' => 'wgCookiePrefix',
-                               'EnableBotPasswords' => true,
-                               'BotPasswordsDatabase' => false,
-                               'SessionProviders' => $wgSessionProviders + array(
-                                       'MediaWiki\\Session\\BotPasswordSessionProvider' => array(
-                                               'class' => 'MediaWiki\\Session\\BotPasswordSessionProvider',
-                                               'args' => array( $params ),
-                                       )
-                               ),
-                       ) );
-               }
-               $manager = new SessionManager( array(
-                       'config' => new \MultiConfig( array( $this->config, \RequestContext::getMain()->getConfig() ) ),
-                       'logger' => new \Psr\Log\NullLogger,
-                       'store' => new TestBagOStuff,
-               ) );
-
-               return $manager->getProvider( 'MediaWiki\\Session\\BotPasswordSessionProvider' );
-       }
-
-       protected function setUp() {
-               parent::setUp();
-
-               $this->setMwGlobals( array(
-                       'wgEnableBotPasswords' => true,
-                       'wgBotPasswordsDatabase' => false,
-                       'wgCentralIdLookupProvider' => 'local',
-                       'wgGrantPermissions' => array(
-                               'test' => array( 'read' => true ),
-                       ),
-               ) );
-       }
-
-       public function addDBData() {
-               $passwordFactory = new \PasswordFactory();
-               $passwordFactory->init( \RequestContext::getMain()->getConfig() );
-               // A is unsalted MD5 (thus fast) ... we don't care about security here, this is test only
-               $passwordFactory->setDefaultType( 'A' );
-               $pwhash = $passwordFactory->newFromPlaintext( 'foobaz' );
-
-               $userId = \CentralIdLookup::factory( 'local' )->centralIdFromName( 'UTSysop' );
-
-               $dbw = wfGetDB( DB_MASTER );
-               $dbw->delete(
-                       'bot_passwords',
-                       array( 'bp_user' => $userId, 'bp_app_id' => 'BotPasswordSessionProvider' ),
-                       __METHOD__
-               );
-               $dbw->insert(
-                       'bot_passwords',
-                       array(
-                               'bp_user' => $userId,
-                               'bp_app_id' => 'BotPasswordSessionProvider',
-                               'bp_password' => $pwhash->toString(),
-                               'bp_token' => 'token!',
-                               'bp_restrictions' => '{"IPAddresses":["127.0.0.0/8"]}',
-                               'bp_grants' => '["test"]',
-                       ),
-                       __METHOD__
-               );
-       }
-
-       public function testConstructor() {
-               try {
-                       $provider = new BotPasswordSessionProvider();
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \InvalidArgumentException $ex ) {
-                       $this->assertSame(
-                               'MediaWiki\\Session\\BotPasswordSessionProvider::__construct: priority must be specified',
-                               $ex->getMessage()
-                       );
-               }
-
-               try {
-                       $provider = new BotPasswordSessionProvider( array(
-                               'priority' => SessionInfo::MIN_PRIORITY - 1
-                       ) );
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \InvalidArgumentException $ex ) {
-                       $this->assertSame(
-                               'MediaWiki\\Session\\BotPasswordSessionProvider::__construct: Invalid priority',
-                               $ex->getMessage()
-                       );
-               }
-
-               try {
-                       $provider = new BotPasswordSessionProvider( array(
-                               'priority' => SessionInfo::MAX_PRIORITY + 1
-                       ) );
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \InvalidArgumentException $ex ) {
-                       $this->assertSame(
-                               'MediaWiki\\Session\\BotPasswordSessionProvider::__construct: Invalid priority',
-                               $ex->getMessage()
-                       );
-               }
-
-               $provider = new BotPasswordSessionProvider( array(
-                       'priority' => 40
-               ) );
-               $priv = \TestingAccessWrapper::newFromObject( $provider );
-               $this->assertSame( 40, $priv->priority );
-               $this->assertSame( '_BPsession', $priv->sessionCookieName );
-               $this->assertSame( array(), $priv->sessionCookieOptions );
-
-               $provider = new BotPasswordSessionProvider( array(
-                       'priority' => 40,
-                       'sessionCookieName' => null,
-               ) );
-               $priv = \TestingAccessWrapper::newFromObject( $provider );
-               $this->assertSame( '_BPsession', $priv->sessionCookieName );
-
-               $provider = new BotPasswordSessionProvider( array(
-                       'priority' => 40,
-                       'sessionCookieName' => 'Foo',
-                       'sessionCookieOptions' => array( 'Bar' ),
-               ) );
-               $priv = \TestingAccessWrapper::newFromObject( $provider );
-               $this->assertSame( 'Foo', $priv->sessionCookieName );
-               $this->assertSame( array( 'Bar' ), $priv->sessionCookieOptions );
-       }
-
-       public function testBasics() {
-               $provider = $this->getProvider();
-
-               $this->assertTrue( $provider->persistsSessionID() );
-               $this->assertFalse( $provider->canChangeUser() );
-
-               $this->assertNull( $provider->newSessionInfo() );
-               $this->assertNull( $provider->newSessionInfo( 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ) );
-       }
-
-       public function testProvideSessionInfo() {
-               $provider = $this->getProvider();
-               $request = new \FauxRequest;
-               $request->setCookie( '_BPsession', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'wgCookiePrefix' );
-
-               if ( !defined( 'MW_API' ) ) {
-                       $this->assertNull( $provider->provideSessionInfo( $request ) );
-                       define( 'MW_API', 1 );
-               }
-
-               $info = $provider->provideSessionInfo( $request );
-               $this->assertInstanceOf( 'MediaWiki\\Session\\SessionInfo', $info );
-               $this->assertSame( 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', $info->getId() );
-
-               $this->config->set( 'EnableBotPasswords', false );
-               $this->assertNull( $provider->provideSessionInfo( $request ) );
-               $this->config->set( 'EnableBotPasswords', true );
-
-               $this->assertNull( $provider->provideSessionInfo( new \FauxRequest ) );
-       }
-
-       public function testNewSessionInfoForRequest() {
-               $provider = $this->getProvider();
-               $user = \User::newFromName( 'UTSysop' );
-               $request = $this->getMock( 'FauxRequest', array( 'getIP' ) );
-               $request->expects( $this->any() )->method( 'getIP' )
-                       ->will( $this->returnValue( '127.0.0.1' ) );
-               $bp = \BotPassword::newFromUser( $user, 'BotPasswordSessionProvider' );
-
-               $session = $provider->newSessionForRequest( $user, $bp, $request );
-               $this->assertInstanceOf( 'MediaWiki\\Session\\Session', $session );
-
-               $this->assertEquals( $session->getId(), $request->getSession()->getId() );
-               $this->assertEquals( $user->getName(), $session->getUser()->getName() );
-
-               $this->assertEquals( array(
-                       'centralId' => $bp->getUserCentralId(),
-                       'appId' => $bp->getAppId(),
-                       'token' => $bp->getToken(),
-                       'rights' => array( 'read' ),
-               ), $session->getProviderMetadata() );
-
-               $this->assertEquals( array( 'read' ), $session->getAllowedUserRights() );
-       }
-
-       public function testCheckSessionInfo() {
-               $logger = new \TestLogger( true, function ( $m ) {
-                       return preg_replace(
-                               '/^Session \[\d+\][a-zA-Z0-9_\\\\]+<(?:null|anon|[+-]:\d+:\w+)>\w+: /', 'Session X: ', $m
-                       );
-               } );
-               $provider = $this->getProvider();
-               $provider->setLogger( $logger );
-
-               $user = \User::newFromName( 'UTSysop' );
-               $request = $this->getMock( 'FauxRequest', array( 'getIP' ) );
-               $request->expects( $this->any() )->method( 'getIP' )
-                       ->will( $this->returnValue( '127.0.0.1' ) );
-               $bp = \BotPassword::newFromUser( $user, 'BotPasswordSessionProvider' );
-
-               $data = array(
-                       'provider' => $provider,
-                       'id' => 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
-                       'userInfo' => UserInfo::newFromUser( $user, true ),
-                       'persisted' => false,
-                       'metadata' => array(
-                               'centralId' => $bp->getUserCentralId(),
-                               'appId' => $bp->getAppId(),
-                               'token' => $bp->getToken(),
-                       ),
-               );
-               $dataMD = $data['metadata'];
-
-               foreach ( array_keys( $data['metadata'] ) as $key ) {
-                       $data['metadata'] = $dataMD;
-                       unset( $data['metadata'][$key] );
-                       $info = new SessionInfo( SessionInfo::MIN_PRIORITY, $data );
-                       $metadata = $info->getProviderMetadata();
-
-                       $this->assertFalse( $provider->refreshSessionInfo( $info, $request, $metadata ) );
-                       $this->assertSame( array(
-                               array( LogLevel::INFO, "Session X: Missing metadata: $key" )
-                       ), $logger->getBuffer() );
-                       $logger->clearBuffer();
-               }
-
-               $data['metadata'] = $dataMD;
-               $data['metadata']['appId'] = 'Foobar';
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, $data );
-               $metadata = $info->getProviderMetadata();
-               $this->assertFalse( $provider->refreshSessionInfo( $info, $request, $metadata ) );
-               $this->assertSame( array(
-                       array( LogLevel::INFO, "Session X: No BotPassword for {$bp->getUserCentralId()} Foobar" ),
-               ), $logger->getBuffer() );
-               $logger->clearBuffer();
-
-               $data['metadata'] = $dataMD;
-               $data['metadata']['token'] = 'Foobar';
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, $data );
-               $metadata = $info->getProviderMetadata();
-               $this->assertFalse( $provider->refreshSessionInfo( $info, $request, $metadata ) );
-               $this->assertSame( array(
-                       array( LogLevel::INFO, 'Session X: BotPassword token check failed' ),
-               ), $logger->getBuffer() );
-               $logger->clearBuffer();
-
-               $request2 = $this->getMock( 'FauxRequest', array( 'getIP' ) );
-               $request2->expects( $this->any() )->method( 'getIP' )
-                       ->will( $this->returnValue( '10.0.0.1' ) );
-               $data['metadata'] = $dataMD;
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, $data );
-               $metadata = $info->getProviderMetadata();
-               $this->assertFalse( $provider->refreshSessionInfo( $info, $request2, $metadata ) );
-               $this->assertSame( array(
-                       array( LogLevel::INFO, 'Session X: Restrictions check failed' ),
-               ), $logger->getBuffer() );
-               $logger->clearBuffer();
-
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, $data );
-               $metadata = $info->getProviderMetadata();
-               $this->assertTrue( $provider->refreshSessionInfo( $info, $request, $metadata ) );
-               $this->assertSame( array(), $logger->getBuffer() );
-               $this->assertEquals( $dataMD + array( 'rights' => array( 'read' ) ), $metadata );
-       }
-}
diff --git a/tests/phpunit/includes/session/CookieSessionProviderTest.php b/tests/phpunit/includes/session/CookieSessionProviderTest.php
deleted file mode 100644 (file)
index a73bf7c..0000000
+++ /dev/null
@@ -1,726 +0,0 @@
-<?php
-
-namespace MediaWiki\Session;
-
-use MediaWikiTestCase;
-use User;
-
-/**
- * @group Session
- * @group Database
- * @covers MediaWiki\Session\CookieSessionProvider
- */
-class CookieSessionProviderTest extends MediaWikiTestCase {
-
-       private function getConfig() {
-               global $wgCookieExpiration;
-               return new \HashConfig( array(
-                       'CookiePrefix' => 'CookiePrefix',
-                       'CookiePath' => 'CookiePath',
-                       'CookieDomain' => 'CookieDomain',
-                       'CookieSecure' => true,
-                       'CookieHttpOnly' => true,
-                       'SessionName' => false,
-                       'ExtendedLoginCookies' => array( 'UserID', 'Token' ),
-                       'ExtendedLoginCookieExpiration' => $wgCookieExpiration * 2,
-               ) );
-       }
-
-       public function testConstructor() {
-               try {
-                       new CookieSessionProvider();
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \InvalidArgumentException $ex ) {
-                       $this->assertSame(
-                               'MediaWiki\\Session\\CookieSessionProvider::__construct: priority must be specified',
-                               $ex->getMessage()
-                       );
-               }
-
-               try {
-                       new CookieSessionProvider( array( 'priority' => 'foo' ) );
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \InvalidArgumentException $ex ) {
-                       $this->assertSame(
-                               'MediaWiki\\Session\\CookieSessionProvider::__construct: Invalid priority',
-                               $ex->getMessage()
-                       );
-               }
-               try {
-                       new CookieSessionProvider( array( 'priority' => SessionInfo::MIN_PRIORITY - 1 ) );
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \InvalidArgumentException $ex ) {
-                       $this->assertSame(
-                               'MediaWiki\\Session\\CookieSessionProvider::__construct: Invalid priority',
-                               $ex->getMessage()
-                       );
-               }
-               try {
-                       new CookieSessionProvider( array( 'priority' => SessionInfo::MAX_PRIORITY + 1 ) );
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \InvalidArgumentException $ex ) {
-                       $this->assertSame(
-                               'MediaWiki\\Session\\CookieSessionProvider::__construct: Invalid priority',
-                               $ex->getMessage()
-                       );
-               }
-
-               try {
-                       new CookieSessionProvider( array( 'priority' => 1, 'cookieOptions' => null ) );
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \InvalidArgumentException $ex ) {
-                       $this->assertSame(
-                               'MediaWiki\\Session\\CookieSessionProvider::__construct: cookieOptions must be an array',
-                               $ex->getMessage()
-                       );
-               }
-
-               $config = $this->getConfig();
-               $p = \TestingAccessWrapper::newFromObject(
-                       new CookieSessionProvider( array( 'priority' => 1 ) )
-               );
-               $p->setLogger( new \TestLogger() );
-               $p->setConfig( $config );
-               $this->assertEquals( 1, $p->priority );
-               $this->assertEquals( array(
-                       'callUserSetCookiesHook' => false,
-                       'sessionName' => 'CookiePrefix_session',
-               ), $p->params );
-               $this->assertEquals( array(
-                       'prefix' => 'CookiePrefix',
-                       'path' => 'CookiePath',
-                       'domain' => 'CookieDomain',
-                       'secure' => true,
-                       'httpOnly' => true,
-               ), $p->cookieOptions );
-
-               $config->set( 'SessionName', 'SessionName' );
-               $p = \TestingAccessWrapper::newFromObject(
-                       new CookieSessionProvider( array( 'priority' => 3 ) )
-               );
-               $p->setLogger( new \TestLogger() );
-               $p->setConfig( $config );
-               $this->assertEquals( 3, $p->priority );
-               $this->assertEquals( array(
-                       'callUserSetCookiesHook' => false,
-                       'sessionName' => 'SessionName',
-               ), $p->params );
-               $this->assertEquals( array(
-                       'prefix' => 'CookiePrefix',
-                       'path' => 'CookiePath',
-                       'domain' => 'CookieDomain',
-                       'secure' => true,
-                       'httpOnly' => true,
-               ), $p->cookieOptions );
-
-               $p = \TestingAccessWrapper::newFromObject( new CookieSessionProvider( array(
-                       'priority' => 10,
-                       'callUserSetCookiesHook' => true,
-                       'cookieOptions' => array(
-                               'prefix' => 'XPrefix',
-                               'path' => 'XPath',
-                               'domain' => 'XDomain',
-                               'secure' => 'XSecure',
-                               'httpOnly' => 'XHttpOnly',
-                       ),
-                       'sessionName' => 'XSession',
-               ) ) );
-               $p->setLogger( new \TestLogger() );
-               $p->setConfig( $config );
-               $this->assertEquals( 10, $p->priority );
-               $this->assertEquals( array(
-                       'callUserSetCookiesHook' => true,
-                       'sessionName' => 'XSession',
-               ), $p->params );
-               $this->assertEquals( array(
-                       'prefix' => 'XPrefix',
-                       'path' => 'XPath',
-                       'domain' => 'XDomain',
-                       'secure' => 'XSecure',
-                       'httpOnly' => 'XHttpOnly',
-               ), $p->cookieOptions );
-       }
-
-       public function testBasics() {
-               $provider = new CookieSessionProvider( array( 'priority' => 10 ) );
-
-               $this->assertTrue( $provider->persistsSessionID() );
-               $this->assertTrue( $provider->canChangeUser() );
-
-               $msg = $provider->whyNoSession();
-               $this->assertInstanceOf( 'Message', $msg );
-               $this->assertSame( 'sessionprovider-nocookies', $msg->getKey() );
-       }
-
-       public function testProvideSessionInfo() {
-               $params = array(
-                       'priority' => 20,
-                       'sessionName' => 'session',
-                       'cookieOptions' => array( 'prefix' => 'x' ),
-               );
-               $provider = new CookieSessionProvider( $params );
-               $provider->setLogger( new \TestLogger() );
-               $provider->setConfig( $this->getConfig() );
-               $provider->setManager( new SessionManager() );
-
-               $user = User::newFromName( 'UTSysop' );
-               $id = $user->getId();
-               $name = $user->getName();
-               $token = $user->getToken( true );
-
-               $sessionId = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
-
-               // No data
-               $request = new \FauxRequest();
-               $info = $provider->provideSessionInfo( $request );
-               $this->assertNull( $info );
-
-               // Session key only
-               $request = new \FauxRequest();
-               $request->setCookies( array(
-                       'session' => $sessionId,
-               ), '' );
-               $info = $provider->provideSessionInfo( $request );
-               $this->assertNotNull( $info );
-               $this->assertSame( $params['priority'], $info->getPriority() );
-               $this->assertSame( $sessionId, $info->getId() );
-               $this->assertNull( $info->getUserInfo() );
-               $this->assertFalse( $info->forceHTTPS() );
-
-               // User, no session key
-               $request = new \FauxRequest();
-               $request->setCookies( array(
-                       'xUserID' => $id,
-                       'xToken' => $token,
-               ), '' );
-               $info = $provider->provideSessionInfo( $request );
-               $this->assertNotNull( $info );
-               $this->assertSame( $params['priority'], $info->getPriority() );
-               $this->assertNotSame( $sessionId, $info->getId() );
-               $this->assertNotNull( $info->getUserInfo() );
-               $this->assertSame( $id, $info->getUserInfo()->getId() );
-               $this->assertSame( $name, $info->getUserInfo()->getName() );
-               $this->assertFalse( $info->forceHTTPS() );
-
-               // User and session key
-               $request = new \FauxRequest();
-               $request->setCookies( array(
-                       'session' => $sessionId,
-                       'xUserID' => $id,
-                       'xToken' => $token,
-               ), '' );
-               $info = $provider->provideSessionInfo( $request );
-               $this->assertNotNull( $info );
-               $this->assertSame( $params['priority'], $info->getPriority() );
-               $this->assertSame( $sessionId, $info->getId() );
-               $this->assertNotNull( $info->getUserInfo() );
-               $this->assertSame( $id, $info->getUserInfo()->getId() );
-               $this->assertSame( $name, $info->getUserInfo()->getName() );
-               $this->assertFalse( $info->forceHTTPS() );
-
-               // User with bad token
-               $request = new \FauxRequest();
-               $request->setCookies( array(
-                       'session' => $sessionId,
-                       'xUserID' => $id,
-                       'xToken' => 'BADTOKEN',
-               ), '' );
-               $info = $provider->provideSessionInfo( $request );
-               $this->assertNull( $info );
-
-               // User id with no token
-               $request = new \FauxRequest();
-               $request->setCookies( array(
-                       'session' => $sessionId,
-                       'xUserID' => $id,
-               ), '' );
-               $info = $provider->provideSessionInfo( $request );
-               $this->assertNotNull( $info );
-               $this->assertSame( $params['priority'], $info->getPriority() );
-               $this->assertSame( $sessionId, $info->getId() );
-               $this->assertNotNull( $info->getUserInfo() );
-               $this->assertFalse( $info->getUserInfo()->isVerified() );
-               $this->assertSame( $id, $info->getUserInfo()->getId() );
-               $this->assertSame( $name, $info->getUserInfo()->getName() );
-               $this->assertFalse( $info->forceHTTPS() );
-
-               $request = new \FauxRequest();
-               $request->setCookies( array(
-                       'xUserID' => $id,
-               ), '' );
-               $info = $provider->provideSessionInfo( $request );
-               $this->assertNull( $info );
-
-               // User and session key, with forceHTTPS flag
-               $request = new \FauxRequest();
-               $request->setCookies( array(
-                       'session' => $sessionId,
-                       'xUserID' => $id,
-                       'xToken' => $token,
-                       'forceHTTPS' => true,
-               ), '' );
-               $info = $provider->provideSessionInfo( $request );
-               $this->assertNotNull( $info );
-               $this->assertSame( $params['priority'], $info->getPriority() );
-               $this->assertSame( $sessionId, $info->getId() );
-               $this->assertNotNull( $info->getUserInfo() );
-               $this->assertSame( $id, $info->getUserInfo()->getId() );
-               $this->assertSame( $name, $info->getUserInfo()->getName() );
-               $this->assertTrue( $info->forceHTTPS() );
-
-               // Invalid user id
-               $request = new \FauxRequest();
-               $request->setCookies( array(
-                       'session' => $sessionId,
-                       'xUserID' => '-1',
-               ), '' );
-               $info = $provider->provideSessionInfo( $request );
-               $this->assertNull( $info );
-
-               // User id with matching name
-               $request = new \FauxRequest();
-               $request->setCookies( array(
-                       'session' => $sessionId,
-                       'xUserID' => $id,
-                       'xUserName' => $name,
-               ), '' );
-               $info = $provider->provideSessionInfo( $request );
-               $this->assertNotNull( $info );
-               $this->assertSame( $params['priority'], $info->getPriority() );
-               $this->assertSame( $sessionId, $info->getId() );
-               $this->assertNotNull( $info->getUserInfo() );
-               $this->assertFalse( $info->getUserInfo()->isVerified() );
-               $this->assertSame( $id, $info->getUserInfo()->getId() );
-               $this->assertSame( $name, $info->getUserInfo()->getName() );
-               $this->assertFalse( $info->forceHTTPS() );
-
-               // User id with wrong name
-               $request = new \FauxRequest();
-               $request->setCookies( array(
-                       'session' => $sessionId,
-                       'xUserID' => $id,
-                       'xUserName' => 'Wrong',
-               ), '' );
-               $info = $provider->provideSessionInfo( $request );
-               $this->assertNull( $info );
-       }
-
-       public function testGetVaryCookies() {
-               $provider = new CookieSessionProvider( array(
-                       'priority' => 1,
-                       'sessionName' => 'MySessionName',
-                       'cookieOptions' => array( 'prefix' => 'MyCookiePrefix' ),
-               ) );
-               $this->assertArrayEquals( array(
-                       'MyCookiePrefixToken',
-                       'MyCookiePrefixLoggedOut',
-                       'MySessionName',
-                       'forceHTTPS',
-               ), $provider->getVaryCookies() );
-       }
-
-       public function testSuggestLoginUsername() {
-               $provider = new CookieSessionProvider( array(
-                       'priority' => 1,
-                       'sessionName' => 'MySessionName',
-                       'cookieOptions' => array( 'prefix' => 'x' ),
-               ) );
-
-               $request = new \FauxRequest();
-               $this->assertEquals( null, $provider->suggestLoginUsername( $request ) );
-
-               $request->setCookies( array(
-                       'xUserName' => 'Example',
-               ), '' );
-               $this->assertEquals( 'Example', $provider->suggestLoginUsername( $request ) );
-       }
-
-       public function testPersistSession() {
-               $this->setMwGlobals( array( 'wgCookieExpiration' => 100 ) );
-
-               $provider = new CookieSessionProvider( array(
-                       'priority' => 1,
-                       'sessionName' => 'MySessionName',
-                       'callUserSetCookiesHook' => false,
-                       'cookieOptions' => array( 'prefix' => 'x' ),
-               ) );
-               $config = $this->getConfig();
-               $provider->setLogger( new \TestLogger() );
-               $provider->setConfig( $config );
-               $provider->setManager( SessionManager::singleton() );
-
-               $sessionId = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
-               $store = new \HashBagOStuff();
-               $user = User::newFromName( 'UTSysop' );
-               $anon = new User;
-
-               $backend = new SessionBackend(
-                       new SessionId( $sessionId ),
-                       new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                               'provider' => $provider,
-                               'id' => $sessionId,
-                               'persisted' => true,
-                               'idIsSafe' => true,
-                       ) ),
-                       $store,
-                       new \Psr\Log\NullLogger(),
-                       10
-               );
-               \TestingAccessWrapper::newFromObject( $backend )->usePhpSessionHandling = false;
-
-               $mock = $this->getMock( 'stdClass', array( 'onUserSetCookies' ) );
-               $mock->expects( $this->never() )->method( 'onUserSetCookies' );
-               $this->mergeMwGlobalArrayValue( 'wgHooks', array( 'UserSetCookies' => array( $mock ) ) );
-
-               // Anonymous user
-               $backend->setUser( $anon );
-               $backend->setRememberUser( true );
-               $backend->setForceHTTPS( false );
-               $request = new \FauxRequest();
-               $provider->persistSession( $backend, $request );
-               $this->assertSame( $sessionId, $request->response()->getCookie( 'MySessionName' ) );
-               $this->assertSame( '', $request->response()->getCookie( 'xUserID' ) );
-               $this->assertSame( null, $request->response()->getCookie( 'xUserName' ) );
-               $this->assertSame( '', $request->response()->getCookie( 'xToken' ) );
-               $this->assertSame( null, $request->response()->getCookie( 'forceHTTPS' ) );
-               $this->assertSame( array(), $backend->getData() );
-
-               // Logged-in user, no remember
-               $backend->setUser( $user );
-               $backend->setRememberUser( false );
-               $backend->setForceHTTPS( false );
-               $request = new \FauxRequest();
-               $provider->persistSession( $backend, $request );
-               $this->assertSame( $sessionId, $request->response()->getCookie( 'MySessionName' ) );
-               $this->assertSame( (string)$user->getId(), $request->response()->getCookie( 'xUserID' ) );
-               $this->assertSame( $user->getName(), $request->response()->getCookie( 'xUserName' ) );
-               $this->assertSame( '', $request->response()->getCookie( 'xToken' ) );
-               $this->assertSame( null, $request->response()->getCookie( 'forceHTTPS' ) );
-               $this->assertSame( array(), $backend->getData() );
-
-               // Logged-in user, remember
-               $backend->setUser( $user );
-               $backend->setRememberUser( true );
-               $backend->setForceHTTPS( true );
-               $request = new \FauxRequest();
-               $time = time();
-               $provider->persistSession( $backend, $request );
-               $this->assertSame( $sessionId, $request->response()->getCookie( 'MySessionName' ) );
-               $this->assertSame( (string)$user->getId(), $request->response()->getCookie( 'xUserID' ) );
-               $this->assertSame( $user->getName(), $request->response()->getCookie( 'xUserName' ) );
-               $this->assertSame( $user->getToken(), $request->response()->getCookie( 'xToken' ) );
-               $this->assertSame( 'true', $request->response()->getCookie( 'forceHTTPS' ) );
-               $this->assertSame( array(), $backend->getData() );
-       }
-
-       /**
-        * @dataProvider provideCookieData
-        * @param bool $secure
-        * @param bool $remember
-        */
-       public function testCookieData( $secure, $remember ) {
-               $this->setMwGlobals( array(
-                       'wgCookieExpiration' => 100,
-                       'wgSecureLogin' => false,
-               ) );
-
-               $provider = new CookieSessionProvider( array(
-                       'priority' => 1,
-                       'sessionName' => 'MySessionName',
-                       'callUserSetCookiesHook' => false,
-                       'cookieOptions' => array( 'prefix' => 'x' ),
-               ) );
-               $config = $this->getConfig();
-               $config->set( 'CookieSecure', false );
-               $provider->setLogger( new \TestLogger() );
-               $provider->setConfig( $config );
-               $provider->setManager( SessionManager::singleton() );
-
-               $sessionId = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
-               $user = User::newFromName( 'UTSysop' );
-               $this->assertFalse( $user->requiresHTTPS(), 'sanity check' );
-
-               $backend = new SessionBackend(
-                       new SessionId( $sessionId ),
-                       new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                               'provider' => $provider,
-                               'id' => $sessionId,
-                               'persisted' => true,
-                               'idIsSafe' => true,
-                       ) ),
-                       new \EmptyBagOStuff(),
-                       new \Psr\Log\NullLogger(),
-                       10
-               );
-               \TestingAccessWrapper::newFromObject( $backend )->usePhpSessionHandling = false;
-               $backend->setUser( $user );
-               $backend->setRememberUser( $remember );
-               $backend->setForceHTTPS( $secure );
-               $request = new \FauxRequest();
-               $time = time();
-               $provider->persistSession( $backend, $request );
-
-               $defaults = array(
-                       'expire' => (int)100,
-                       'path' => $config->get( 'CookiePath' ),
-                       'domain' => $config->get( 'CookieDomain' ),
-                       'secure' => $secure,
-                       'httpOnly' => $config->get( 'CookieHttpOnly' ),
-                       'raw' => false,
-               );
-               $extendedExpiry = $config->get( 'ExtendedLoginCookieExpiration' );
-               $extendedExpiry = (int)( $extendedExpiry === null ? 0 : $extendedExpiry );
-               $this->assertEquals( array( 'UserID', 'Token' ), $config->get( 'ExtendedLoginCookies' ),
-                       'sanity check' );
-               $expect = array(
-                       'MySessionName' => array(
-                               'value' => (string)$sessionId,
-                               'expire' => 0,
-                       ) + $defaults,
-                       'xUserID' => array(
-                               'value' => (string)$user->getId(),
-                               'expire' => $extendedExpiry,
-                       ) + $defaults,
-                       'xUserName' => array(
-                               'value' => $user->getName(),
-                       ) + $defaults,
-                       'xToken' => array(
-                               'value' => $remember ? $user->getToken() : '',
-                               'expire' => $remember ? $extendedExpiry : -31536000,
-                       ) + $defaults,
-                       'forceHTTPS' => !$secure ? null : array(
-                               'value' => 'true',
-                               'secure' => false,
-                               'expire' => $remember ? $defaults['expire'] : null,
-                       ) + $defaults,
-               );
-               foreach ( $expect as $key => $value ) {
-                       $actual = $request->response()->getCookieData( $key );
-                       if ( $actual && $actual['expire'] > 0 ) {
-                               // Round expiry so we don't randomly fail if the seconds ticked during the test.
-                               $actual['expire'] = round( $actual['expire'] - $time, -2 );
-                       }
-                       $this->assertEquals( $value, $actual, "Cookie $key" );
-               }
-       }
-
-       public static function provideCookieData() {
-               return array(
-                       array( false, false ),
-                       array( false, true ),
-                       array( true, false ),
-                       array( true, true ),
-               );
-       }
-
-       protected function getSentRequest() {
-               $sentResponse = $this->getMock( 'FauxResponse', array( 'headersSent', 'setCookie', 'header' ) );
-               $sentResponse->expects( $this->any() )->method( 'headersSent' )
-                       ->will( $this->returnValue( true ) );
-               $sentResponse->expects( $this->never() )->method( 'setCookie' );
-               $sentResponse->expects( $this->never() )->method( 'header' );
-
-               $sentRequest = $this->getMock( 'FauxRequest', array( 'response' ) );
-               $sentRequest->expects( $this->any() )->method( 'response' )
-                       ->will( $this->returnValue( $sentResponse ) );
-               return $sentRequest;
-       }
-
-       public function testPersistSessionWithHook() {
-               $that = $this;
-
-               $provider = new CookieSessionProvider( array(
-                       'priority' => 1,
-                       'sessionName' => 'MySessionName',
-                       'callUserSetCookiesHook' => true,
-                       'cookieOptions' => array( 'prefix' => 'x' ),
-               ) );
-               $provider->setLogger( new \Psr\Log\NullLogger() );
-               $provider->setConfig( $this->getConfig() );
-               $provider->setManager( SessionManager::singleton() );
-
-               $sessionId = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
-               $store = new \HashBagOStuff();
-               $user = User::newFromName( 'UTSysop' );
-               $anon = new User;
-
-               $backend = new SessionBackend(
-                       new SessionId( $sessionId ),
-                       new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                               'provider' => $provider,
-                               'id' => $sessionId,
-                               'persisted' => true,
-                               'idIsSafe' => true,
-                       ) ),
-                       $store,
-                       new \Psr\Log\NullLogger(),
-                       10
-               );
-               \TestingAccessWrapper::newFromObject( $backend )->usePhpSessionHandling = false;
-
-               // Anonymous user
-               $mock = $this->getMock( 'stdClass', array( 'onUserSetCookies' ) );
-               $mock->expects( $this->never() )->method( 'onUserSetCookies' );
-               $this->mergeMwGlobalArrayValue( 'wgHooks', array( 'UserSetCookies' => array( $mock ) ) );
-               $backend->setUser( $anon );
-               $backend->setRememberUser( true );
-               $backend->setForceHTTPS( false );
-               $request = new \FauxRequest();
-               $provider->persistSession( $backend, $request );
-               $this->assertSame( $sessionId, $request->response()->getCookie( 'MySessionName' ) );
-               $this->assertSame( '', $request->response()->getCookie( 'xUserID' ) );
-               $this->assertSame( null, $request->response()->getCookie( 'xUserName' ) );
-               $this->assertSame( '', $request->response()->getCookie( 'xToken' ) );
-               $this->assertSame( null, $request->response()->getCookie( 'forceHTTPS' ) );
-               $this->assertSame( array(), $backend->getData() );
-
-               $provider->persistSession( $backend, $this->getSentRequest() );
-
-               // Logged-in user, no remember
-               $mock = $this->getMock( __CLASS__, array( 'onUserSetCookies' ) );
-               $mock->expects( $this->once() )->method( 'onUserSetCookies' )
-                       ->will( $this->returnCallback( function ( $u, &$sessionData, &$cookies ) use ( $that, $user ) {
-                               $that->assertSame( $user, $u );
-                               $that->assertEquals( array(
-                                       'wsUserID' => $user->getId(),
-                                       'wsUserName' => $user->getName(),
-                                       'wsToken' => $user->getToken(),
-                               ), $sessionData );
-                               $that->assertEquals( array(
-                                       'UserID' => $user->getId(),
-                                       'UserName' => $user->getName(),
-                                       'Token' => false,
-                               ), $cookies );
-
-                               $sessionData['foo'] = 'foo!';
-                               $cookies['bar'] = 'bar!';
-                               return true;
-                       } ) );
-               $this->mergeMwGlobalArrayValue( 'wgHooks', array( 'UserSetCookies' => array( $mock ) ) );
-               $backend->setUser( $user );
-               $backend->setRememberUser( false );
-               $backend->setForceHTTPS( false );
-               $backend->setLoggedOutTimestamp( $loggedOut = time() );
-               $request = new \FauxRequest();
-               $provider->persistSession( $backend, $request );
-               $this->assertSame( $sessionId, $request->response()->getCookie( 'MySessionName' ) );
-               $this->assertSame( (string)$user->getId(), $request->response()->getCookie( 'xUserID' ) );
-               $this->assertSame( $user->getName(), $request->response()->getCookie( 'xUserName' ) );
-               $this->assertSame( '', $request->response()->getCookie( 'xToken' ) );
-               $this->assertSame( null, $request->response()->getCookie( 'forceHTTPS' ) );
-               $this->assertSame( 'bar!', $request->response()->getCookie( 'xbar' ) );
-               $this->assertSame( (string)$loggedOut, $request->response()->getCookie( 'xLoggedOut' ) );
-               $this->assertEquals( array(
-                       'wsUserID' => $user->getId(),
-                       'wsUserName' => $user->getName(),
-                       'wsToken' => $user->getToken(),
-                       'foo' => 'foo!',
-               ), $backend->getData() );
-
-               $provider->persistSession( $backend, $this->getSentRequest() );
-
-               // Logged-in user, remember
-               $mock = $this->getMock( __CLASS__, array( 'onUserSetCookies' ) );
-               $mock->expects( $this->once() )->method( 'onUserSetCookies' )
-                       ->will( $this->returnCallback( function ( $u, &$sessionData, &$cookies ) use ( $that, $user ) {
-                               $that->assertSame( $user, $u );
-                               $that->assertEquals( array(
-                                       'wsUserID' => $user->getId(),
-                                       'wsUserName' => $user->getName(),
-                                       'wsToken' => $user->getToken(),
-                               ), $sessionData );
-                               $that->assertEquals( array(
-                                       'UserID' => $user->getId(),
-                                       'UserName' => $user->getName(),
-                                       'Token' => $user->getToken(),
-                               ), $cookies );
-
-                               $sessionData['foo'] = 'foo 2!';
-                               $cookies['bar'] = 'bar 2!';
-                               return true;
-                       } ) );
-               $this->mergeMwGlobalArrayValue( 'wgHooks', array( 'UserSetCookies' => array( $mock ) ) );
-               $backend->setUser( $user );
-               $backend->setRememberUser( true );
-               $backend->setForceHTTPS( true );
-               $backend->setLoggedOutTimestamp( 0 );
-               $request = new \FauxRequest();
-               $provider->persistSession( $backend, $request );
-               $this->assertSame( $sessionId, $request->response()->getCookie( 'MySessionName' ) );
-               $this->assertSame( (string)$user->getId(), $request->response()->getCookie( 'xUserID' ) );
-               $this->assertSame( $user->getName(), $request->response()->getCookie( 'xUserName' ) );
-               $this->assertSame( $user->getToken(), $request->response()->getCookie( 'xToken' ) );
-               $this->assertSame( 'true', $request->response()->getCookie( 'forceHTTPS' ) );
-               $this->assertSame( 'bar 2!', $request->response()->getCookie( 'xbar' ) );
-               $this->assertSame( null, $request->response()->getCookie( 'xLoggedOut' ) );
-               $this->assertEquals( array(
-                       'wsUserID' => $user->getId(),
-                       'wsUserName' => $user->getName(),
-                       'wsToken' => $user->getToken(),
-                       'foo' => 'foo 2!',
-               ), $backend->getData() );
-
-               $provider->persistSession( $backend, $this->getSentRequest() );
-       }
-
-       public function testUnpersistSession() {
-               $provider = new CookieSessionProvider( array(
-                       'priority' => 1,
-                       'sessionName' => 'MySessionName',
-                       'cookieOptions' => array( 'prefix' => 'x' ),
-               ) );
-               $provider->setLogger( new \Psr\Log\NullLogger() );
-               $provider->setConfig( $this->getConfig() );
-               $provider->setManager( SessionManager::singleton() );
-
-               $request = new \FauxRequest();
-               $provider->unpersistSession( $request );
-               $this->assertSame( '', $request->response()->getCookie( 'MySessionName' ) );
-               $this->assertSame( '', $request->response()->getCookie( 'xUserID' ) );
-               $this->assertSame( null, $request->response()->getCookie( 'xUserName' ) );
-               $this->assertSame( '', $request->response()->getCookie( 'xToken' ) );
-               $this->assertSame( '', $request->response()->getCookie( 'forceHTTPS' ) );
-
-               $provider->unpersistSession( $this->getSentRequest() );
-       }
-
-       public function testSetLoggedOutCookie() {
-               $provider = \TestingAccessWrapper::newFromObject( new CookieSessionProvider( array(
-                       'priority' => 1,
-                       'sessionName' => 'MySessionName',
-                       'cookieOptions' => array( 'prefix' => 'x' ),
-               ) ) );
-               $provider->setLogger( new \Psr\Log\NullLogger() );
-               $provider->setConfig( $this->getConfig() );
-               $provider->setManager( SessionManager::singleton() );
-
-               $t1 = time();
-               $t2 = time() - 86400 * 2;
-
-               // Set it
-               $request = new \FauxRequest();
-               $provider->setLoggedOutCookie( $t1, $request );
-               $this->assertSame( (string)$t1, $request->response()->getCookie( 'xLoggedOut' ) );
-
-               // Too old
-               $request = new \FauxRequest();
-               $provider->setLoggedOutCookie( $t2, $request );
-               $this->assertSame( null, $request->response()->getCookie( 'xLoggedOut' ) );
-
-               // Don't reset if it's already set
-               $request = new \FauxRequest();
-               $request->setCookies( array(
-                       'xLoggedOut' => $t1,
-               ), '' );
-               $provider->setLoggedOutCookie( $t1, $request );
-               $this->assertSame( null, $request->response()->getCookie( 'xLoggedOut' ) );
-       }
-
-       /**
-        * To be mocked for hooks, since PHPUnit can't otherwise mock methods that
-        * take references.
-        */
-       public function onUserSetCookies( $user, &$sessionData, &$cookies ) {
-       }
-
-}
diff --git a/tests/phpunit/includes/session/ImmutableSessionProviderWithCookieTest.php b/tests/phpunit/includes/session/ImmutableSessionProviderWithCookieTest.php
deleted file mode 100644 (file)
index e06dfd5..0000000
+++ /dev/null
@@ -1,301 +0,0 @@
-<?php
-
-namespace MediaWiki\Session;
-
-use MediaWikiTestCase;
-use User;
-
-/**
- * @group Session
- * @group Database
- * @covers MediaWiki\Session\ImmutableSessionProviderWithCookie
- */
-class ImmutableSessionProviderWithCookieTest extends MediaWikiTestCase {
-
-       private function getProvider( $name, $prefix = null ) {
-               $config = new \HashConfig();
-               $config->set( 'CookiePrefix', 'wgCookiePrefix' );
-
-               $params = array(
-                       'sessionCookieName' => $name,
-                       'sessionCookieOptions' => array(),
-               );
-               if ( $prefix !== null ) {
-                       $params['sessionCookieOptions']['prefix'] = $prefix;
-               }
-
-               $provider = $this->getMockBuilder( 'MediaWiki\\Session\\ImmutableSessionProviderWithCookie' )
-                       ->setConstructorArgs( array( $params ) )
-                       ->getMockForAbstractClass();
-               $provider->setLogger( new \TestLogger() );
-               $provider->setConfig( $config );
-               $provider->setManager( new SessionManager() );
-
-               return $provider;
-       }
-
-       public function testConstructor() {
-               $provider = $this->getMockBuilder( 'MediaWiki\\Session\\ImmutableSessionProviderWithCookie' )
-                       ->getMockForAbstractClass();
-               $priv = \TestingAccessWrapper::newFromObject( $provider );
-               $this->assertNull( $priv->sessionCookieName );
-               $this->assertSame( array(), $priv->sessionCookieOptions );
-
-               $provider = $this->getMockBuilder( 'MediaWiki\\Session\\ImmutableSessionProviderWithCookie' )
-                       ->setConstructorArgs( array( array(
-                               'sessionCookieName' => 'Foo',
-                               'sessionCookieOptions' => array( 'Bar' ),
-                       ) ) )
-                       ->getMockForAbstractClass();
-               $priv = \TestingAccessWrapper::newFromObject( $provider );
-               $this->assertSame( 'Foo', $priv->sessionCookieName );
-               $this->assertSame( array( 'Bar' ), $priv->sessionCookieOptions );
-
-               try {
-                       $provider = $this->getMockBuilder( 'MediaWiki\\Session\\ImmutableSessionProviderWithCookie' )
-                               ->setConstructorArgs( array( array(
-                                       'sessionCookieName' => false,
-                               ) ) )
-                               ->getMockForAbstractClass();
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \InvalidArgumentException $ex ) {
-                       $this->assertSame(
-                               'sessionCookieName must be a string',
-                               $ex->getMessage()
-                       );
-               }
-
-               try {
-                       $provider = $this->getMockBuilder( 'MediaWiki\\Session\\ImmutableSessionProviderWithCookie' )
-                               ->setConstructorArgs( array( array(
-                                       'sessionCookieOptions' => 'x',
-                               ) ) )
-                               ->getMockForAbstractClass();
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \InvalidArgumentException $ex ) {
-                       $this->assertSame(
-                               'sessionCookieOptions must be an array',
-                               $ex->getMessage()
-                       );
-               }
-       }
-
-       public function testBasics() {
-               $provider = $this->getProvider( null );
-               $this->assertFalse( $provider->persistsSessionID() );
-               $this->assertFalse( $provider->canChangeUser() );
-
-               $provider = $this->getProvider( 'Foo' );
-               $this->assertTrue( $provider->persistsSessionID() );
-               $this->assertFalse( $provider->canChangeUser() );
-
-               $msg = $provider->whyNoSession();
-               $this->assertInstanceOf( 'Message', $msg );
-               $this->assertSame( 'sessionprovider-nocookies', $msg->getKey() );
-       }
-
-       public function testGetVaryCookies() {
-               $provider = $this->getProvider( null );
-               $this->assertSame( array(), $provider->getVaryCookies() );
-
-               $provider = $this->getProvider( 'Foo' );
-               $this->assertSame( array( 'wgCookiePrefixFoo' ), $provider->getVaryCookies() );
-
-               $provider = $this->getProvider( 'Foo', 'Bar' );
-               $this->assertSame( array( 'BarFoo' ), $provider->getVaryCookies() );
-
-               $provider = $this->getProvider( 'Foo', '' );
-               $this->assertSame( array( 'Foo' ), $provider->getVaryCookies() );
-       }
-
-       public function testGetSessionIdFromCookie() {
-               $this->setMwGlobals( 'wgCookiePrefix', 'wgCookiePrefix' );
-               $request = new \FauxRequest();
-               $request->setCookies( array(
-                       '' => 'empty---------------------------',
-                       'Foo' => 'foo-----------------------------',
-                       'wgCookiePrefixFoo' => 'wgfoo---------------------------',
-                       'BarFoo' => 'foobar--------------------------',
-                       'bad' => 'bad',
-               ), '' );
-
-               $provider = \TestingAccessWrapper::newFromObject( $this->getProvider( null ) );
-               try {
-                       $provider->getSessionIdFromCookie( $request );
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \BadMethodCallException $ex ) {
-                       $this->assertSame(
-                               'MediaWiki\\Session\\ImmutableSessionProviderWithCookie::getSessionIdFromCookie ' .
-                                       'may not be called when $this->sessionCookieName === null',
-                               $ex->getMessage()
-                       );
-               }
-
-               $provider = \TestingAccessWrapper::newFromObject( $this->getProvider( 'Foo' ) );
-               $this->assertSame(
-                       'wgfoo---------------------------',
-                       $provider->getSessionIdFromCookie( $request )
-               );
-
-               $provider = \TestingAccessWrapper::newFromObject( $this->getProvider( 'Foo', 'Bar' ) );
-               $this->assertSame(
-                       'foobar--------------------------',
-                       $provider->getSessionIdFromCookie( $request )
-               );
-
-               $provider = \TestingAccessWrapper::newFromObject( $this->getProvider( 'Foo', '' ) );
-               $this->assertSame(
-                       'foo-----------------------------',
-                       $provider->getSessionIdFromCookie( $request )
-               );
-
-               $provider = \TestingAccessWrapper::newFromObject( $this->getProvider( 'bad', '' ) );
-               $this->assertSame( null, $provider->getSessionIdFromCookie( $request ) );
-
-               $provider = \TestingAccessWrapper::newFromObject( $this->getProvider( 'none', '' ) );
-               $this->assertSame( null, $provider->getSessionIdFromCookie( $request ) );
-       }
-
-       protected function getSentRequest() {
-               $sentResponse = $this->getMock( 'FauxResponse', array( 'headersSent', 'setCookie', 'header' ) );
-               $sentResponse->expects( $this->any() )->method( 'headersSent' )
-                       ->will( $this->returnValue( true ) );
-               $sentResponse->expects( $this->never() )->method( 'setCookie' );
-               $sentResponse->expects( $this->never() )->method( 'header' );
-
-               $sentRequest = $this->getMock( 'FauxRequest', array( 'response' ) );
-               $sentRequest->expects( $this->any() )->method( 'response' )
-                       ->will( $this->returnValue( $sentResponse ) );
-               return $sentRequest;
-       }
-
-       /**
-        * @dataProvider providePersistSession
-        * @param bool $secure
-        * @param bool $remember
-        */
-       public function testPersistSession( $secure, $remember ) {
-               $this->setMwGlobals( array(
-                       'wgCookieExpiration' => 100,
-                       'wgSecureLogin' => false,
-               ) );
-
-               $provider = $this->getProvider( 'session' );
-               $provider->setLogger( new \Psr\Log\NullLogger() );
-               $priv = \TestingAccessWrapper::newFromObject( $provider );
-               $priv->sessionCookieOptions = array(
-                       'prefix' => 'x',
-                       'path' => 'CookiePath',
-                       'domain' => 'CookieDomain',
-                       'secure' => false,
-                       'httpOnly' => true,
-               );
-
-               $sessionId = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
-               $user = User::newFromName( 'UTSysop' );
-               $this->assertFalse( $user->requiresHTTPS(), 'sanity check' );
-
-               $backend = new SessionBackend(
-                       new SessionId( $sessionId ),
-                       new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                               'provider' => $provider,
-                               'id' => $sessionId,
-                               'persisted' => true,
-                               'userInfo' => UserInfo::newFromUser( $user, true ),
-                               'idIsSafe' => true,
-                       ) ),
-                       new \EmptyBagOStuff(),
-                       new \Psr\Log\NullLogger(),
-                       10
-               );
-               \TestingAccessWrapper::newFromObject( $backend )->usePhpSessionHandling = false;
-               $backend->setRememberUser( $remember );
-               $backend->setForceHTTPS( $secure );
-
-               // No cookie
-               $priv->sessionCookieName = null;
-               $request = new \FauxRequest();
-               $provider->persistSession( $backend, $request );
-               $this->assertSame( array(), $request->response()->getCookies() );
-
-               // Cookie
-               $priv->sessionCookieName = 'session';
-               $request = new \FauxRequest();
-               $time = time();
-               $provider->persistSession( $backend, $request );
-
-               $cookie = $request->response()->getCookieData( 'xsession' );
-               $this->assertInternalType( 'array', $cookie );
-               if ( isset( $cookie['expire'] ) && $cookie['expire'] > 0 ) {
-                       // Round expiry so we don't randomly fail if the seconds ticked during the test.
-                       $cookie['expire'] = round( $cookie['expire'] - $time, -2 );
-               }
-               $this->assertEquals( array(
-                       'value' => $sessionId,
-                       'expire' => null,
-                       'path' => 'CookiePath',
-                       'domain' => 'CookieDomain',
-                       'secure' => $secure,
-                       'httpOnly' => true,
-                       'raw' => false,
-               ), $cookie );
-
-               $cookie = $request->response()->getCookieData( 'forceHTTPS' );
-               if ( $secure ) {
-                       $this->assertInternalType( 'array', $cookie );
-                       if ( isset( $cookie['expire'] ) && $cookie['expire'] > 0 ) {
-                               // Round expiry so we don't randomly fail if the seconds ticked during the test.
-                               $cookie['expire'] = round( $cookie['expire'] - $time, -2 );
-                       }
-                       $this->assertEquals( array(
-                               'value' => 'true',
-                               'expire' => $remember ? 100 : null,
-                               'path' => 'CookiePath',
-                               'domain' => 'CookieDomain',
-                               'secure' => false,
-                               'httpOnly' => true,
-                               'raw' => false,
-                       ), $cookie );
-               } else {
-                       $this->assertNull( $cookie );
-               }
-
-               // Headers sent
-               $request = $this->getSentRequest();
-               $provider->persistSession( $backend, $request );
-               $this->assertSame( array(), $request->response()->getCookies() );
-       }
-
-       public static function providePersistSession() {
-               return array(
-                       array( false, false ),
-                       array( false, true ),
-                       array( true, false ),
-                       array( true, true ),
-               );
-       }
-
-       public function testUnpersistSession() {
-               $provider = $this->getProvider( 'session', '' );
-               $provider->setLogger( new \Psr\Log\NullLogger() );
-               $priv = \TestingAccessWrapper::newFromObject( $provider );
-
-               // No cookie
-               $priv->sessionCookieName = null;
-               $request = new \FauxRequest();
-               $provider->unpersistSession( $request );
-               $this->assertSame( null, $request->response()->getCookie( 'session', '' ) );
-
-               // Cookie
-               $priv->sessionCookieName = 'session';
-               $request = new \FauxRequest();
-               $provider->unpersistSession( $request );
-               $this->assertSame( '', $request->response()->getCookie( 'session', '' ) );
-
-               // Headers sent
-               $request = $this->getSentRequest();
-               $provider->unpersistSession( $request );
-               $this->assertSame( null, $request->response()->getCookie( 'session', '' ) );
-       }
-
-}
diff --git a/tests/phpunit/includes/session/PHPSessionHandlerTest.php b/tests/phpunit/includes/session/PHPSessionHandlerTest.php
deleted file mode 100644 (file)
index c18b821..0000000
+++ /dev/null
@@ -1,353 +0,0 @@
-<?php
-
-namespace MediaWiki\Session;
-
-use Psr\Log\LogLevel;
-use MediaWikiTestCase;
-
-/**
- * @group Session
- * @covers MediaWiki\Session\PHPSessionHandler
- */
-class PHPSessionHandlerTest extends MediaWikiTestCase {
-
-       private function getResetter( &$rProp = null ) {
-               $reset = array();
-
-               // Ignore "headers already sent" warnings during this test
-               set_error_handler( function ( $errno, $errstr ) use ( &$warnings ) {
-                       if ( preg_match( '/headers already sent/', $errstr ) ) {
-                               return true;
-                       }
-                       return false;
-               } );
-               $reset[] = new \ScopedCallback( 'restore_error_handler' );
-
-               $rProp = new \ReflectionProperty( 'MediaWiki\\Session\\PHPSessionHandler', 'instance' );
-               $rProp->setAccessible( true );
-               if ( $rProp->getValue() ) {
-                       $old = \TestingAccessWrapper::newFromObject( $rProp->getValue() );
-                       $oldManager = $old->manager;
-                       $oldStore = $old->store;
-                       $oldLogger = $old->logger;
-                       $reset[] = new \ScopedCallback(
-                               array( 'MediaWiki\\Session\\PHPSessionHandler', 'install' ),
-                               array( $oldManager, $oldStore, $oldLogger )
-                       );
-               }
-
-               return $reset;
-       }
-
-       public function testEnableFlags() {
-               $handler = \TestingAccessWrapper::newFromObject(
-                       $this->getMockBuilder( 'MediaWiki\\Session\\PHPSessionHandler' )
-                               ->setMethods( null )
-                               ->disableOriginalConstructor()
-                               ->getMock()
-               );
-
-               $rProp = new \ReflectionProperty( 'MediaWiki\\Session\\PHPSessionHandler', 'instance' );
-               $rProp->setAccessible( true );
-               $reset = new \ScopedCallback( array( $rProp, 'setValue' ), array( $rProp->getValue() ) );
-               $rProp->setValue( $handler );
-
-               $handler->setEnableFlags( 'enable' );
-               $this->assertTrue( $handler->enable );
-               $this->assertFalse( $handler->warn );
-               $this->assertTrue( PHPSessionHandler::isEnabled() );
-
-               $handler->setEnableFlags( 'warn' );
-               $this->assertTrue( $handler->enable );
-               $this->assertTrue( $handler->warn );
-               $this->assertTrue( PHPSessionHandler::isEnabled() );
-
-               $handler->setEnableFlags( 'disable' );
-               $this->assertFalse( $handler->enable );
-               $this->assertFalse( PHPSessionHandler::isEnabled() );
-
-               $rProp->setValue( null );
-               $this->assertFalse( PHPSessionHandler::isEnabled() );
-       }
-
-       public function testInstall() {
-               $reset = $this->getResetter( $rProp );
-               $rProp->setValue( null );
-
-               session_write_close();
-               ini_set( 'session.use_cookies', 1 );
-               ini_set( 'session.use_trans_sid', 1 );
-
-               $store = new \HashBagOStuff();
-               $logger = new \TestLogger();
-               $manager = new SessionManager( array(
-                       'store' => $store,
-                       'logger' => $logger,
-               ) );
-
-               $this->assertFalse( PHPSessionHandler::isInstalled() );
-               PHPSessionHandler::install( $manager );
-               $this->assertTrue( PHPSessionHandler::isInstalled() );
-
-               $this->assertFalse( wfIniGetBool( 'session.use_cookies' ) );
-               $this->assertFalse( wfIniGetBool( 'session.use_trans_sid' ) );
-
-               $this->assertNotNull( $rProp->getValue() );
-               $priv = \TestingAccessWrapper::newFromObject( $rProp->getValue() );
-               $this->assertSame( $manager, $priv->manager );
-               $this->assertSame( $store, $priv->store );
-               $this->assertSame( $logger, $priv->logger );
-       }
-
-       /**
-        * @dataProvider provideHandlers
-        * @param string $handler php serialize_handler to use
-        */
-       public function testSessionHandling( $handler ) {
-               $this->hideDeprecated( '$_SESSION' );
-               $reset[] = $this->getResetter( $rProp );
-
-               $this->setMwGlobals( array(
-                       'wgSessionProviders' => array( array( 'class' => 'DummySessionProvider' ) ),
-                       'wgObjectCacheSessionExpiry' => 2,
-               ) );
-
-               $store = new \HashBagOStuff();
-               $logger = new \TestLogger( true, function ( $m ) {
-                       return preg_match( '/^SessionBackend a{32} /', $m ) ? null : $m;
-               } );
-               $manager = new SessionManager( array(
-                       'store' => $store,
-                       'logger' => $logger,
-               ) );
-               PHPSessionHandler::install( $manager );
-               $wrap = \TestingAccessWrapper::newFromObject( $rProp->getValue() );
-               $reset[] = new \ScopedCallback(
-                       array( $wrap, 'setEnableFlags' ),
-                       array( $wrap->enable ? $wrap->warn ? 'warn' : 'enable' : 'disable' )
-               );
-               $wrap->setEnableFlags( 'warn' );
-
-               \MediaWiki\suppressWarnings();
-               ini_set( 'session.serialize_handler', $handler );
-               \MediaWiki\restoreWarnings();
-               if ( ini_get( 'session.serialize_handler' ) !== $handler ) {
-                       $this->markTestSkipped( "Cannot set session.serialize_handler to \"$handler\"" );
-               }
-
-               // Session IDs for testing
-               $sessionA = str_repeat( 'a', 32 );
-               $sessionB = str_repeat( 'b', 32 );
-               $sessionC = str_repeat( 'c', 32 );
-
-               // Set up garbage data in the session
-               $_SESSION['AuthenticationSessionTest'] = 'bogus';
-
-               session_id( $sessionA );
-               session_start();
-               $this->assertSame( array(), $_SESSION );
-               $this->assertSame( $sessionA, session_id() );
-
-               // Set some data in the session so we can see if it works.
-               $rand = mt_rand();
-               $_SESSION['AuthenticationSessionTest'] = $rand;
-               $expect = array( 'AuthenticationSessionTest' => $rand );
-               session_write_close();
-               $this->assertSame( array(
-                       array( LogLevel::WARNING, 'Something wrote to $_SESSION!' ),
-               ), $logger->getBuffer() );
-
-               // Screw up $_SESSION so we can tell the difference between "this
-               // worked" and "this did nothing"
-               $_SESSION['AuthenticationSessionTest'] = 'bogus';
-
-               // Re-open the session and see that data was actually reloaded
-               session_start();
-               $this->assertSame( $expect, $_SESSION );
-
-               // Make sure session_reset() works too.
-               if ( function_exists( 'session_reset' ) ) {
-                       $_SESSION['AuthenticationSessionTest'] = 'bogus';
-                       session_reset();
-                       $this->assertSame( $expect, $_SESSION );
-               }
-
-               // Test expiry
-               session_write_close();
-               ini_set( 'session.gc_divisor', 1 );
-               ini_set( 'session.gc_probability', 1 );
-               sleep( 3 );
-               session_start();
-               $this->assertSame( array(), $_SESSION );
-
-               // Re-fill the session, then test that session_destroy() works.
-               $_SESSION['AuthenticationSessionTest'] = $rand;
-               session_write_close();
-               session_start();
-               $this->assertSame( $expect, $_SESSION );
-               session_destroy();
-               session_id( $sessionA );
-               session_start();
-               $this->assertSame( array(), $_SESSION );
-               session_write_close();
-
-               // Test that our session handler won't clone someone else's session
-               session_id( $sessionB );
-               session_start();
-               $this->assertSame( $sessionB, session_id() );
-               $_SESSION['id'] = 'B';
-               session_write_close();
-
-               session_id( $sessionC );
-               session_start();
-               $this->assertSame( array(), $_SESSION );
-               $_SESSION['id'] = 'C';
-               session_write_close();
-
-               session_id( $sessionB );
-               session_start();
-               $this->assertSame( array( 'id' => 'B' ), $_SESSION );
-               session_write_close();
-
-               session_id( $sessionC );
-               session_start();
-               $this->assertSame( array( 'id' => 'C' ), $_SESSION );
-               session_destroy();
-
-               session_id( $sessionB );
-               session_start();
-               $this->assertSame( array( 'id' => 'B' ), $_SESSION );
-
-               // Test merging between Session and $_SESSION
-               session_write_close();
-
-               $session = $manager->getEmptySession();
-               $session->set( 'Unchanged', 'setup' );
-               $session->set( 'Changed in $_SESSION', 'setup' );
-               $session->set( 'Changed in Session', 'setup' );
-               $session->set( 'Changed in both', 'setup' );
-               $session->set( 'Deleted in Session', 'setup' );
-               $session->set( 'Deleted in $_SESSION', 'setup' );
-               $session->set( 'Deleted in both', 'setup' );
-               $session->set( 'Deleted in Session, changed in $_SESSION', 'setup' );
-               $session->set( 'Deleted in $_SESSION, changed in Session', 'setup' );
-               $session->persist();
-               $session->save();
-
-               session_id( $session->getId() );
-               session_start();
-               $session->set( 'Added in Session', 'Session' );
-               $session->set( 'Added in both', 'Session' );
-               $session->set( 'Changed in Session', 'Session' );
-               $session->set( 'Changed in both', 'Session' );
-               $session->set( 'Deleted in $_SESSION, changed in Session', 'Session' );
-               $session->remove( 'Deleted in Session' );
-               $session->remove( 'Deleted in both' );
-               $session->remove( 'Deleted in Session, changed in $_SESSION' );
-               $session->save();
-               $_SESSION['Added in $_SESSION'] = '$_SESSION';
-               $_SESSION['Added in both'] = '$_SESSION';
-               $_SESSION['Changed in $_SESSION'] = '$_SESSION';
-               $_SESSION['Changed in both'] = '$_SESSION';
-               $_SESSION['Deleted in Session, changed in $_SESSION'] = '$_SESSION';
-               unset( $_SESSION['Deleted in $_SESSION'] );
-               unset( $_SESSION['Deleted in both'] );
-               unset( $_SESSION['Deleted in $_SESSION, changed in Session'] );
-               session_write_close();
-
-               $this->assertEquals( array(
-                       'Added in Session' => 'Session',
-                       'Added in $_SESSION' => '$_SESSION',
-                       'Added in both' => 'Session',
-                       'Unchanged' => 'setup',
-                       'Changed in Session' => 'Session',
-                       'Changed in $_SESSION' => '$_SESSION',
-                       'Changed in both' => 'Session',
-                       'Deleted in Session, changed in $_SESSION' => '$_SESSION',
-                       'Deleted in $_SESSION, changed in Session' => 'Session',
-               ), iterator_to_array( $session ) );
-
-               $session->clear();
-               $session->set( 42, 'forty-two' );
-               $session->set( 'forty-two', 42 );
-               $session->set( 'wrong', 43 );
-               $session->persist();
-               $session->save();
-
-               session_start();
-               $this->assertArrayHasKey( 'forty-two', $_SESSION );
-               $this->assertSame( 42, $_SESSION['forty-two'] );
-               $this->assertArrayHasKey( 'wrong', $_SESSION );
-               unset( $_SESSION['wrong'] );
-               session_write_close();
-
-               $this->assertEquals( array(
-                       42 => 'forty-two',
-                       'forty-two' => 42,
-               ), iterator_to_array( $session ) );
-       }
-
-       public static function provideHandlers() {
-               return array(
-                       array( 'php' ),
-                       array( 'php_binary' ),
-                       array( 'php_serialize' ),
-               );
-       }
-
-       /**
-        * @dataProvider provideDisabled
-        * @expectedException BadMethodCallException
-        * @expectedExceptionMessage Attempt to use PHP session management
-        */
-       public function testDisabled( $method, $args ) {
-               $rProp = new \ReflectionProperty( 'MediaWiki\\Session\\PHPSessionHandler', 'instance' );
-               $rProp->setAccessible( true );
-               $handler = $this->getMockBuilder( 'MediaWiki\\Session\\PHPSessionHandler' )
-                       ->setMethods( null )
-                       ->disableOriginalConstructor()
-                       ->getMock();
-               \TestingAccessWrapper::newFromObject( $handler )->setEnableFlags( 'disable' );
-               $oldValue = $rProp->getValue();
-               $rProp->setValue( $handler );
-               $reset = new \ScopedCallback( array( $rProp, 'setValue' ), array( $oldValue ) );
-
-               call_user_func_array( array( $handler, $method ), $args );
-       }
-
-       public static function provideDisabled() {
-               return array(
-                       array( 'open', array( '', '' ) ),
-                       array( 'read', array( '' ) ),
-                       array( 'write', array( '', '' ) ),
-                       array( 'destroy', array( '' ) ),
-               );
-       }
-
-       /**
-        * @dataProvider provideWrongInstance
-        * @expectedException UnexpectedValueException
-        * @expectedExceptionMessageRegExp /: Wrong instance called!$/
-        */
-       public function testWrongInstance( $method, $args ) {
-               $handler = $this->getMockBuilder( 'MediaWiki\\Session\\PHPSessionHandler' )
-                       ->setMethods( null )
-                       ->disableOriginalConstructor()
-                       ->getMock();
-               \TestingAccessWrapper::newFromObject( $handler )->setEnableFlags( 'enable' );
-
-               call_user_func_array( array( $handler, $method ), $args );
-       }
-
-       public static function provideWrongInstance() {
-               return array(
-                       array( 'open', array( '', '' ) ),
-                       array( 'close', array() ),
-                       array( 'read', array( '' ) ),
-                       array( 'write', array( '', '' ) ),
-                       array( 'destroy', array( '' ) ),
-                       array( 'gc', array( 0 ) ),
-               );
-       }
-
-}
diff --git a/tests/phpunit/includes/session/SessionBackendTest.php b/tests/phpunit/includes/session/SessionBackendTest.php
deleted file mode 100644 (file)
index d06706b..0000000
+++ /dev/null
@@ -1,757 +0,0 @@
-<?php
-
-namespace MediaWiki\Session;
-
-use MediaWikiTestCase;
-use User;
-
-/**
- * @group Session
- * @group Database
- * @covers MediaWiki\Session\SessionBackend
- */
-class SessionBackendTest extends MediaWikiTestCase {
-       const SESSIONID = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
-
-       protected $manager;
-       protected $config;
-       protected $provider;
-       protected $store;
-
-       protected $onSessionMetadataCalled = false;
-
-       /**
-        * Returns a non-persistent backend that thinks it has at least one session active
-        * @param User|null $user
-        */
-       protected function getBackend( User $user = null ) {
-               if ( !$this->config ) {
-                       $this->config = new \HashConfig();
-                       $this->manager = null;
-               }
-               if ( !$this->store ) {
-                       $this->store = new TestBagOStuff();
-                       $this->manager = null;
-               }
-
-               $logger = new \Psr\Log\NullLogger();
-               if ( !$this->manager ) {
-                       $this->manager = new SessionManager( array(
-                               'store' => $this->store,
-                               'logger' => $logger,
-                               'config' => $this->config,
-                       ) );
-               }
-
-               if ( !$this->provider ) {
-                       $this->provider = new \DummySessionProvider();
-               }
-               $this->provider->setLogger( $logger );
-               $this->provider->setConfig( $this->config );
-               $this->provider->setManager( $this->manager );
-
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $this->provider,
-                       'id' => self::SESSIONID,
-                       'persisted' => true,
-                       'userInfo' => UserInfo::newFromUser( $user ?: new User, true ),
-                       'idIsSafe' => true,
-               ) );
-               $id = new SessionId( $info->getId() );
-
-               $backend = new SessionBackend( $id, $info, $this->store, $logger, 10 );
-               $priv = \TestingAccessWrapper::newFromObject( $backend );
-               $priv->persist = false;
-               $priv->requests = array( 100 => new \FauxRequest() );
-               $priv->usePhpSessionHandling = false;
-
-               $manager = \TestingAccessWrapper::newFromObject( $this->manager );
-               $manager->allSessionBackends = array( $backend->getId() => $backend );
-               $manager->allSessionIds = array( $backend->getId() => $id );
-               $manager->sessionProviders = array( (string)$this->provider => $this->provider );
-
-               return $backend;
-       }
-
-       public function testConstructor() {
-               // Set variables
-               $this->getBackend();
-
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $this->provider,
-                       'id' => self::SESSIONID,
-                       'persisted' => true,
-                       'userInfo' => UserInfo::newFromName( 'UTSysop', false ),
-                       'idIsSafe' => true,
-               ) );
-               $id = new SessionId( $info->getId() );
-               $logger = new \Psr\Log\NullLogger();
-               try {
-                       new SessionBackend( $id, $info, $this->store, $logger, 10 );
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \InvalidArgumentException $ex ) {
-                       $this->assertSame(
-                               "Refusing to create session for unverified user {$info->getUserInfo()}",
-                               $ex->getMessage()
-                       );
-               }
-
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'id' => self::SESSIONID,
-                       'userInfo' => UserInfo::newFromName( 'UTSysop', true ),
-                       'idIsSafe' => true,
-               ) );
-               $id = new SessionId( $info->getId() );
-               try {
-                       new SessionBackend( $id, $info, $this->store, $logger, 10 );
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \InvalidArgumentException $ex ) {
-                       $this->assertSame( 'Cannot create session without a provider', $ex->getMessage() );
-               }
-
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $this->provider,
-                       'id' => self::SESSIONID,
-                       'persisted' => true,
-                       'userInfo' => UserInfo::newFromName( 'UTSysop', true ),
-                       'idIsSafe' => true,
-               ) );
-               $id = new SessionId( '!' . $info->getId() );
-               try {
-                       new SessionBackend( $id, $info, $this->store, $logger, 10 );
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \InvalidArgumentException $ex ) {
-                       $this->assertSame(
-                               'SessionId and SessionInfo don\'t match',
-                               $ex->getMessage()
-                       );
-               }
-
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $this->provider,
-                       'id' => self::SESSIONID,
-                       'persisted' => true,
-                       'userInfo' => UserInfo::newFromName( 'UTSysop', true ),
-                       'idIsSafe' => true,
-               ) );
-               $id = new SessionId( $info->getId() );
-               $backend = new SessionBackend( $id, $info, $this->store, $logger, 10 );
-               $this->assertSame( self::SESSIONID, $backend->getId() );
-               $this->assertSame( $id, $backend->getSessionId() );
-               $this->assertSame( $this->provider, $backend->getProvider() );
-               $this->assertInstanceOf( 'User', $backend->getUser() );
-               $this->assertSame( 'UTSysop', $backend->getUser()->getName() );
-               $this->assertSame( $info->wasPersisted(), $backend->isPersistent() );
-               $this->assertSame( $info->wasRemembered(), $backend->shouldRememberUser() );
-               $this->assertSame( $info->forceHTTPS(), $backend->shouldForceHTTPS() );
-
-               $expire = time() + 100;
-               $this->store->setSessionMeta( self::SESSIONID, array( 'expires' => $expire ), 2 );
-
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $this->provider,
-                       'id' => self::SESSIONID,
-                       'persisted' => true,
-                       'forceHTTPS' => true,
-                       'metadata' => array( 'foo' ),
-                       'idIsSafe' => true,
-               ) );
-               $id = new SessionId( $info->getId() );
-               $backend = new SessionBackend( $id, $info, $this->store, $logger, 10 );
-               $this->assertSame( self::SESSIONID, $backend->getId() );
-               $this->assertSame( $id, $backend->getSessionId() );
-               $this->assertSame( $this->provider, $backend->getProvider() );
-               $this->assertInstanceOf( 'User', $backend->getUser() );
-               $this->assertTrue( $backend->getUser()->isAnon() );
-               $this->assertSame( $info->wasPersisted(), $backend->isPersistent() );
-               $this->assertSame( $info->wasRemembered(), $backend->shouldRememberUser() );
-               $this->assertSame( $info->forceHTTPS(), $backend->shouldForceHTTPS() );
-               $this->assertSame( $expire, \TestingAccessWrapper::newFromObject( $backend )->expires );
-               $this->assertSame( array( 'foo' ), $backend->getProviderMetadata() );
-       }
-
-       public function testSessionStuff() {
-               $backend = $this->getBackend();
-               $priv = \TestingAccessWrapper::newFromObject( $backend );
-               $priv->requests = array(); // Remove dummy session
-
-               $manager = \TestingAccessWrapper::newFromObject( $this->manager );
-
-               $request1 = new \FauxRequest();
-               $session1 = $backend->getSession( $request1 );
-               $request2 = new \FauxRequest();
-               $session2 = $backend->getSession( $request2 );
-
-               $this->assertInstanceOf( 'MediaWiki\\Session\\Session', $session1 );
-               $this->assertInstanceOf( 'MediaWiki\\Session\\Session', $session2 );
-               $this->assertSame( 2, count( $priv->requests ) );
-
-               $index = \TestingAccessWrapper::newFromObject( $session1 )->index;
-
-               $this->assertSame( $request1, $backend->getRequest( $index ) );
-               $this->assertSame( null, $backend->suggestLoginUsername( $index ) );
-               $request1->setCookie( 'UserName', 'Example' );
-               $this->assertSame( 'Example', $backend->suggestLoginUsername( $index ) );
-
-               $session1 = null;
-               $this->assertSame( 1, count( $priv->requests ) );
-               $this->assertArrayHasKey( $backend->getId(), $manager->allSessionBackends );
-               $this->assertSame( $backend, $manager->allSessionBackends[$backend->getId()] );
-               try {
-                       $backend->getRequest( $index );
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \InvalidArgumentException $ex ) {
-                       $this->assertSame( 'Invalid session index', $ex->getMessage() );
-               }
-               try {
-                       $backend->suggestLoginUsername( $index );
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \InvalidArgumentException $ex ) {
-                       $this->assertSame( 'Invalid session index', $ex->getMessage() );
-               }
-
-               $session2 = null;
-               $this->assertSame( 0, count( $priv->requests ) );
-               $this->assertArrayNotHasKey( $backend->getId(), $manager->allSessionBackends );
-               $this->assertArrayHasKey( $backend->getId(), $manager->allSessionIds );
-       }
-
-       public function testResetId() {
-               $id = session_id();
-
-               $builder = $this->getMockBuilder( 'DummySessionProvider' )
-                       ->setMethods( array( 'persistsSessionId', 'sessionIdWasReset' ) );
-
-               $this->provider = $builder->getMock();
-               $this->provider->expects( $this->any() )->method( 'persistsSessionId' )
-                       ->will( $this->returnValue( false ) );
-               $this->provider->expects( $this->never() )->method( 'sessionIdWasReset' );
-               $backend = $this->getBackend( User::newFromName( 'UTSysop' ) );
-               $manager = \TestingAccessWrapper::newFromObject( $this->manager );
-               $sessionId = $backend->getSessionId();
-               $backend->resetId();
-               $this->assertSame( self::SESSIONID, $backend->getId() );
-               $this->assertSame( $backend->getId(), $sessionId->getId() );
-               $this->assertSame( $id, session_id() );
-               $this->assertSame( $backend, $manager->allSessionBackends[self::SESSIONID] );
-
-               $this->provider = $builder->getMock();
-               $this->provider->expects( $this->any() )->method( 'persistsSessionId' )
-                       ->will( $this->returnValue( true ) );
-               $backend = $this->getBackend();
-               $this->provider->expects( $this->once() )->method( 'sessionIdWasReset' )
-                       ->with( $this->identicalTo( $backend ), $this->identicalTo( self::SESSIONID ) );
-               $manager = \TestingAccessWrapper::newFromObject( $this->manager );
-               $sessionId = $backend->getSessionId();
-               $backend->resetId();
-               $this->assertNotEquals( self::SESSIONID, $backend->getId() );
-               $this->assertSame( $backend->getId(), $sessionId->getId() );
-               $this->assertInternalType( 'array', $this->store->getSession( $backend->getId() ) );
-               $this->assertFalse( $this->store->getSession( self::SESSIONID ) );
-               $this->assertSame( $id, session_id() );
-               $this->assertArrayNotHasKey( self::SESSIONID, $manager->allSessionBackends );
-               $this->assertArrayHasKey( $backend->getId(), $manager->allSessionBackends );
-               $this->assertSame( $backend, $manager->allSessionBackends[$backend->getId()] );
-       }
-
-       public function testPersist() {
-               $this->provider = $this->getMock( 'DummySessionProvider', array( 'persistSession' ) );
-               $this->provider->expects( $this->once() )->method( 'persistSession' );
-               $backend = $this->getBackend();
-               $this->assertFalse( $backend->isPersistent(), 'sanity check' );
-               $backend->save(); // This one shouldn't call $provider->persistSession()
-
-               $backend->persist();
-               $this->assertTrue( $backend->isPersistent(), 'sanity check' );
-
-               $this->provider = null;
-               $backend = $this->getBackend();
-               $wrap = \TestingAccessWrapper::newFromObject( $backend );
-               $wrap->persist = true;
-               $wrap->expires = 0;
-               $backend->persist();
-               $this->assertNotEquals( 0, $wrap->expires );
-       }
-
-       public function testRememberUser() {
-               $backend = $this->getBackend();
-
-               $remembered = $backend->shouldRememberUser();
-               $backend->setRememberUser( !$remembered );
-               $this->assertNotEquals( $remembered, $backend->shouldRememberUser() );
-               $backend->setRememberUser( $remembered );
-               $this->assertEquals( $remembered, $backend->shouldRememberUser() );
-       }
-
-       public function testForceHTTPS() {
-               $backend = $this->getBackend();
-
-               $force = $backend->shouldForceHTTPS();
-               $backend->setForceHTTPS( !$force );
-               $this->assertNotEquals( $force, $backend->shouldForceHTTPS() );
-               $backend->setForceHTTPS( $force );
-               $this->assertEquals( $force, $backend->shouldForceHTTPS() );
-       }
-
-       public function testLoggedOutTimestamp() {
-               $backend = $this->getBackend();
-
-               $backend->setLoggedOutTimestamp( 42 );
-               $this->assertSame( 42, $backend->getLoggedOutTimestamp() );
-               $backend->setLoggedOutTimestamp( '123' );
-               $this->assertSame( 123, $backend->getLoggedOutTimestamp() );
-       }
-
-       public function testSetUser() {
-               $user = User::newFromName( 'UTSysop' );
-
-               $this->provider = $this->getMock( 'DummySessionProvider', array( 'canChangeUser' ) );
-               $this->provider->expects( $this->any() )->method( 'canChangeUser' )
-                       ->will( $this->returnValue( false ) );
-               $backend = $this->getBackend();
-               $this->assertFalse( $backend->canSetUser() );
-               try {
-                       $backend->setUser( $user );
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \BadMethodCallException $ex ) {
-                       $this->assertSame(
-                               'Cannot set user on this session; check $session->canSetUser() first',
-                               $ex->getMessage()
-                       );
-               }
-               $this->assertNotSame( $user, $backend->getUser() );
-
-               $this->provider = null;
-               $backend = $this->getBackend();
-               $this->assertTrue( $backend->canSetUser() );
-               $this->assertNotSame( $user, $backend->getUser(), 'sanity check' );
-               $backend->setUser( $user );
-               $this->assertSame( $user, $backend->getUser() );
-       }
-
-       public function testDirty() {
-               $backend = $this->getBackend();
-               $priv = \TestingAccessWrapper::newFromObject( $backend );
-               $priv->dataDirty = false;
-               $backend->dirty();
-               $this->assertTrue( $priv->dataDirty );
-       }
-
-       public function testGetData() {
-               $backend = $this->getBackend();
-               $data = $backend->getData();
-               $this->assertSame( array(), $data );
-               $this->assertTrue( \TestingAccessWrapper::newFromObject( $backend )->dataDirty );
-               $data['???'] = '!!!';
-               $this->assertSame( array( '???' => '!!!' ), $data );
-
-               $testData = array( 'foo' => 'foo!', 'bar', array( 'baz', null ) );
-               $this->store->setSessionData( self::SESSIONID, $testData );
-               $backend = $this->getBackend();
-               $this->assertSame( $testData, $backend->getData() );
-               $this->assertFalse( \TestingAccessWrapper::newFromObject( $backend )->dataDirty );
-       }
-
-       public function testAddData() {
-               $backend = $this->getBackend();
-               $priv = \TestingAccessWrapper::newFromObject( $backend );
-
-               $priv->data = array( 'foo' => 1 );
-               $priv->dataDirty = false;
-               $backend->addData( array( 'foo' => 1 ) );
-               $this->assertSame( array( 'foo' => 1 ), $priv->data );
-               $this->assertFalse( $priv->dataDirty );
-
-               $priv->data = array( 'foo' => 1 );
-               $priv->dataDirty = false;
-               $backend->addData( array( 'foo' => '1' ) );
-               $this->assertSame( array( 'foo' => '1' ), $priv->data );
-               $this->assertTrue( $priv->dataDirty );
-
-               $priv->data = array( 'foo' => 1 );
-               $priv->dataDirty = false;
-               $backend->addData( array( 'bar' => 2 ) );
-               $this->assertSame( array( 'foo' => 1, 'bar' => 2 ), $priv->data );
-               $this->assertTrue( $priv->dataDirty );
-       }
-
-       public function testDelaySave() {
-               $this->mergeMwGlobalArrayValue( 'wgHooks', array( 'SessionMetadata' => array( $this ) ) );
-               $backend = $this->getBackend();
-               $priv = \TestingAccessWrapper::newFromObject( $backend );
-               $priv->persist = true;
-
-               // Saves happen normally when no delay is in effect
-               $this->onSessionMetadataCalled = false;
-               $priv->metaDirty = true;
-               $backend->save();
-               $this->assertTrue( $this->onSessionMetadataCalled, 'sanity check' );
-
-               $this->onSessionMetadataCalled = false;
-               $priv->metaDirty = true;
-               $priv->autosave();
-               $this->assertTrue( $this->onSessionMetadataCalled, 'sanity check' );
-
-               $delay = $backend->delaySave();
-
-               // Autosave doesn't happen when no delay is in effect
-               $this->onSessionMetadataCalled = false;
-               $priv->metaDirty = true;
-               $priv->autosave();
-               $this->assertFalse( $this->onSessionMetadataCalled );
-
-               // Save still does happen when no delay is in effect
-               $priv->save();
-               $this->assertTrue( $this->onSessionMetadataCalled );
-
-               // Save happens when delay is consumed
-               $this->onSessionMetadataCalled = false;
-               $priv->metaDirty = true;
-               \ScopedCallback::consume( $delay );
-               $this->assertTrue( $this->onSessionMetadataCalled );
-
-               // Test multiple delays
-               $delay1 = $backend->delaySave();
-               $delay2 = $backend->delaySave();
-               $delay3 = $backend->delaySave();
-               $this->onSessionMetadataCalled = false;
-               $priv->metaDirty = true;
-               $priv->autosave();
-               $this->assertFalse( $this->onSessionMetadataCalled );
-               \ScopedCallback::consume( $delay3 );
-               $this->assertFalse( $this->onSessionMetadataCalled );
-               \ScopedCallback::consume( $delay1 );
-               $this->assertFalse( $this->onSessionMetadataCalled );
-               \ScopedCallback::consume( $delay2 );
-               $this->assertTrue( $this->onSessionMetadataCalled );
-       }
-
-       public function testSave() {
-               $user = User::newFromName( 'UTSysop' );
-               $this->store = new TestBagOStuff();
-               $testData = array( 'foo' => 'foo!', 'bar', array( 'baz', null ) );
-
-               $neverHook = $this->getMock( __CLASS__, array( 'onSessionMetadata' ) );
-               $neverHook->expects( $this->never() )->method( 'onSessionMetadata' );
-
-               $neverProvider = $this->getMock( 'DummySessionProvider', array( 'persistSession' ) );
-               $neverProvider->expects( $this->never() )->method( 'persistSession' );
-
-               // Not persistent or dirty
-               $this->provider = $neverProvider;
-               $this->mergeMwGlobalArrayValue( 'wgHooks', array( 'SessionMetadata' => array( $neverHook ) ) );
-               $this->store->setSessionData( self::SESSIONID, $testData );
-               $backend = $this->getBackend( $user );
-               $this->store->deleteSession( self::SESSIONID );
-               $this->assertFalse( $backend->isPersistent(), 'sanity check' );
-               \TestingAccessWrapper::newFromObject( $backend )->metaDirty = false;
-               \TestingAccessWrapper::newFromObject( $backend )->dataDirty = false;
-               $backend->save();
-               $this->assertFalse( $this->store->getSession( self::SESSIONID ), 'making sure it didn\'t save' );
-
-               // Not persistent, but dirty
-               $this->provider = $neverProvider;
-               $this->onSessionMetadataCalled = false;
-               $this->mergeMwGlobalArrayValue( 'wgHooks', array( 'SessionMetadata' => array( $this ) ) );
-               $this->store->setSessionData( self::SESSIONID, $testData );
-               $backend = $this->getBackend( $user );
-               $this->store->deleteSession( self::SESSIONID );
-               $this->assertFalse( $backend->isPersistent(), 'sanity check' );
-               \TestingAccessWrapper::newFromObject( $backend )->metaDirty = false;
-               \TestingAccessWrapper::newFromObject( $backend )->dataDirty = true;
-               $backend->save();
-               $this->assertTrue( $this->onSessionMetadataCalled );
-               $blob = $this->store->getSession( self::SESSIONID );
-               $this->assertInternalType( 'array', $blob );
-               $this->assertArrayHasKey( 'metadata', $blob );
-               $metadata = $blob['metadata'];
-               $this->assertInternalType( 'array', $metadata );
-               $this->assertArrayHasKey( '???', $metadata );
-               $this->assertSame( '!!!', $metadata['???'] );
-
-               // Persistent, not dirty
-               $this->provider = $neverProvider;
-               $this->mergeMwGlobalArrayValue( 'wgHooks', array( 'SessionMetadata' => array( $neverHook ) ) );
-               $this->store->setSessionData( self::SESSIONID, $testData );
-               $backend = $this->getBackend( $user );
-               $this->store->deleteSession( self::SESSIONID );
-               \TestingAccessWrapper::newFromObject( $backend )->persist = true;
-               $this->assertTrue( $backend->isPersistent(), 'sanity check' );
-               \TestingAccessWrapper::newFromObject( $backend )->metaDirty = false;
-               \TestingAccessWrapper::newFromObject( $backend )->dataDirty = false;
-               $backend->save();
-               $this->assertFalse( $this->store->getSession( self::SESSIONID ), 'making sure it didn\'t save' );
-
-               $this->provider = $this->getMock( 'DummySessionProvider', array( 'persistSession' ) );
-               $this->provider->expects( $this->atLeastOnce() )->method( 'persistSession' );
-               $this->mergeMwGlobalArrayValue( 'wgHooks', array( 'SessionMetadata' => array( $neverHook ) ) );
-               $this->store->setSessionData( self::SESSIONID, $testData );
-               $backend = $this->getBackend( $user );
-               $this->store->deleteSession( self::SESSIONID );
-               \TestingAccessWrapper::newFromObject( $backend )->persist = true;
-               \TestingAccessWrapper::newFromObject( $backend )->forcePersist = true;
-               $this->assertTrue( $backend->isPersistent(), 'sanity check' );
-               \TestingAccessWrapper::newFromObject( $backend )->metaDirty = false;
-               \TestingAccessWrapper::newFromObject( $backend )->dataDirty = false;
-               $backend->save();
-               $this->assertFalse( $this->store->getSession( self::SESSIONID ), 'making sure it didn\'t save' );
-
-               // Persistent and dirty
-               $this->provider = $neverProvider;
-               $this->onSessionMetadataCalled = false;
-               $this->mergeMwGlobalArrayValue( 'wgHooks', array( 'SessionMetadata' => array( $this ) ) );
-               $this->store->setSessionData( self::SESSIONID, $testData );
-               $backend = $this->getBackend( $user );
-               $this->store->deleteSession( self::SESSIONID );
-               \TestingAccessWrapper::newFromObject( $backend )->persist = true;
-               $this->assertTrue( $backend->isPersistent(), 'sanity check' );
-               \TestingAccessWrapper::newFromObject( $backend )->metaDirty = false;
-               \TestingAccessWrapper::newFromObject( $backend )->dataDirty = true;
-               $backend->save();
-               $this->assertTrue( $this->onSessionMetadataCalled );
-               $blob = $this->store->getSession( self::SESSIONID );
-               $this->assertInternalType( 'array', $blob );
-               $this->assertArrayHasKey( 'metadata', $blob );
-               $metadata = $blob['metadata'];
-               $this->assertInternalType( 'array', $metadata );
-               $this->assertArrayHasKey( '???', $metadata );
-               $this->assertSame( '!!!', $metadata['???'] );
-
-               $this->provider = $this->getMock( 'DummySessionProvider', array( 'persistSession' ) );
-               $this->provider->expects( $this->atLeastOnce() )->method( 'persistSession' );
-               $this->onSessionMetadataCalled = false;
-               $this->mergeMwGlobalArrayValue( 'wgHooks', array( 'SessionMetadata' => array( $this ) ) );
-               $this->store->setSessionData( self::SESSIONID, $testData );
-               $backend = $this->getBackend( $user );
-               $this->store->deleteSession( self::SESSIONID );
-               \TestingAccessWrapper::newFromObject( $backend )->persist = true;
-               \TestingAccessWrapper::newFromObject( $backend )->forcePersist = true;
-               $this->assertTrue( $backend->isPersistent(), 'sanity check' );
-               \TestingAccessWrapper::newFromObject( $backend )->metaDirty = false;
-               \TestingAccessWrapper::newFromObject( $backend )->dataDirty = true;
-               $backend->save();
-               $this->assertTrue( $this->onSessionMetadataCalled );
-               $blob = $this->store->getSession( self::SESSIONID );
-               $this->assertInternalType( 'array', $blob );
-               $this->assertArrayHasKey( 'metadata', $blob );
-               $metadata = $blob['metadata'];
-               $this->assertInternalType( 'array', $metadata );
-               $this->assertArrayHasKey( '???', $metadata );
-               $this->assertSame( '!!!', $metadata['???'] );
-
-               $this->provider = $this->getMock( 'DummySessionProvider', array( 'persistSession' ) );
-               $this->provider->expects( $this->atLeastOnce() )->method( 'persistSession' );
-               $this->onSessionMetadataCalled = false;
-               $this->mergeMwGlobalArrayValue( 'wgHooks', array( 'SessionMetadata' => array( $this ) ) );
-               $this->store->setSessionData( self::SESSIONID, $testData );
-               $backend = $this->getBackend( $user );
-               $this->store->deleteSession( self::SESSIONID );
-               \TestingAccessWrapper::newFromObject( $backend )->persist = true;
-               $this->assertTrue( $backend->isPersistent(), 'sanity check' );
-               \TestingAccessWrapper::newFromObject( $backend )->metaDirty = true;
-               \TestingAccessWrapper::newFromObject( $backend )->dataDirty = false;
-               $backend->save();
-               $this->assertTrue( $this->onSessionMetadataCalled );
-               $blob = $this->store->getSession( self::SESSIONID );
-               $this->assertInternalType( 'array', $blob );
-               $this->assertArrayHasKey( 'metadata', $blob );
-               $metadata = $blob['metadata'];
-               $this->assertInternalType( 'array', $metadata );
-               $this->assertArrayHasKey( '???', $metadata );
-               $this->assertSame( '!!!', $metadata['???'] );
-
-               // Not marked dirty, but dirty data
-               $this->provider = $neverProvider;
-               $this->onSessionMetadataCalled = false;
-               $this->mergeMwGlobalArrayValue( 'wgHooks', array( 'SessionMetadata' => array( $this ) ) );
-               $this->store->setSessionData( self::SESSIONID, $testData );
-               $backend = $this->getBackend( $user );
-               $this->store->deleteSession( self::SESSIONID );
-               \TestingAccessWrapper::newFromObject( $backend )->persist = true;
-               $this->assertTrue( $backend->isPersistent(), 'sanity check' );
-               \TestingAccessWrapper::newFromObject( $backend )->metaDirty = false;
-               \TestingAccessWrapper::newFromObject( $backend )->dataDirty = false;
-               \TestingAccessWrapper::newFromObject( $backend )->dataHash = 'Doesn\'t match';
-               $backend->save();
-               $this->assertTrue( $this->onSessionMetadataCalled );
-               $blob = $this->store->getSession( self::SESSIONID );
-               $this->assertInternalType( 'array', $blob );
-               $this->assertArrayHasKey( 'metadata', $blob );
-               $metadata = $blob['metadata'];
-               $this->assertInternalType( 'array', $metadata );
-               $this->assertArrayHasKey( '???', $metadata );
-               $this->assertSame( '!!!', $metadata['???'] );
-
-               // Bad hook
-               $this->provider = null;
-               $mockHook = $this->getMock( __CLASS__, array( 'onSessionMetadata' ) );
-               $mockHook->expects( $this->any() )->method( 'onSessionMetadata' )
-                       ->will( $this->returnCallback(
-                               function ( SessionBackend $backend, array &$metadata, array $requests ) {
-                                       $metadata['userId']++;
-                               }
-                       ) );
-               $this->mergeMwGlobalArrayValue( 'wgHooks', array( 'SessionMetadata' => array( $mockHook ) ) );
-               $this->store->setSessionData( self::SESSIONID, $testData );
-               $backend = $this->getBackend( $user );
-               $backend->dirty();
-               try {
-                       $backend->save();
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \UnexpectedValueException $ex ) {
-                       $this->assertSame(
-                               'SessionMetadata hook changed metadata key "userId"',
-                               $ex->getMessage()
-                       );
-               }
-
-               // SessionManager::preventSessionsForUser
-               \TestingAccessWrapper::newFromObject( $this->manager )->preventUsers = array(
-                       $user->getName() => true,
-               );
-               $this->provider = $neverProvider;
-               $this->mergeMwGlobalArrayValue( 'wgHooks', array( 'SessionMetadata' => array( $neverHook ) ) );
-               $this->store->setSessionData( self::SESSIONID, $testData );
-               $backend = $this->getBackend( $user );
-               $this->store->deleteSession( self::SESSIONID );
-               \TestingAccessWrapper::newFromObject( $backend )->persist = true;
-               $this->assertTrue( $backend->isPersistent(), 'sanity check' );
-               \TestingAccessWrapper::newFromObject( $backend )->metaDirty = true;
-               \TestingAccessWrapper::newFromObject( $backend )->dataDirty = true;
-               $backend->save();
-               $this->assertFalse( $this->store->getSession( self::SESSIONID ), 'making sure it didn\'t save' );
-       }
-
-       public function testRenew() {
-               $user = User::newFromName( 'UTSysop' );
-               $this->store = new TestBagOStuff();
-               $testData = array( 'foo' => 'foo!', 'bar', array( 'baz', null ) );
-
-               // Not persistent
-               $this->provider = $this->getMock( 'DummySessionProvider', array( 'persistSession' ) );
-               $this->provider->expects( $this->never() )->method( 'persistSession' );
-               $this->onSessionMetadataCalled = false;
-               $this->mergeMwGlobalArrayValue( 'wgHooks', array( 'SessionMetadata' => array( $this ) ) );
-               $this->store->setSessionData( self::SESSIONID, $testData );
-               $backend = $this->getBackend( $user );
-               $this->store->deleteSession( self::SESSIONID );
-               $wrap = \TestingAccessWrapper::newFromObject( $backend );
-               $this->assertFalse( $backend->isPersistent(), 'sanity check' );
-               $wrap->metaDirty = false;
-               $wrap->dataDirty = false;
-               $wrap->forcePersist = false;
-               $wrap->expires = 0;
-               $backend->renew();
-               $this->assertTrue( $this->onSessionMetadataCalled );
-               $blob = $this->store->getSession( self::SESSIONID );
-               $this->assertInternalType( 'array', $blob );
-               $this->assertArrayHasKey( 'metadata', $blob );
-               $metadata = $blob['metadata'];
-               $this->assertInternalType( 'array', $metadata );
-               $this->assertArrayHasKey( '???', $metadata );
-               $this->assertSame( '!!!', $metadata['???'] );
-               $this->assertNotEquals( 0, $wrap->expires );
-
-               // Persistent
-               $this->provider = $this->getMock( 'DummySessionProvider', array( 'persistSession' ) );
-               $this->provider->expects( $this->atLeastOnce() )->method( 'persistSession' );
-               $this->onSessionMetadataCalled = false;
-               $this->mergeMwGlobalArrayValue( 'wgHooks', array( 'SessionMetadata' => array( $this ) ) );
-               $this->store->setSessionData( self::SESSIONID, $testData );
-               $backend = $this->getBackend( $user );
-               $this->store->deleteSession( self::SESSIONID );
-               $wrap = \TestingAccessWrapper::newFromObject( $backend );
-               $wrap->persist = true;
-               $this->assertTrue( $backend->isPersistent(), 'sanity check' );
-               $wrap->metaDirty = false;
-               $wrap->dataDirty = false;
-               $wrap->forcePersist = false;
-               $wrap->expires = 0;
-               $backend->renew();
-               $this->assertTrue( $this->onSessionMetadataCalled );
-               $blob = $this->store->getSession( self::SESSIONID );
-               $this->assertInternalType( 'array', $blob );
-               $this->assertArrayHasKey( 'metadata', $blob );
-               $metadata = $blob['metadata'];
-               $this->assertInternalType( 'array', $metadata );
-               $this->assertArrayHasKey( '???', $metadata );
-               $this->assertSame( '!!!', $metadata['???'] );
-               $this->assertNotEquals( 0, $wrap->expires );
-
-               // Not persistent, not expiring
-               $this->provider = $this->getMock( 'DummySessionProvider', array( 'persistSession' ) );
-               $this->provider->expects( $this->never() )->method( 'persistSession' );
-               $this->onSessionMetadataCalled = false;
-               $this->mergeMwGlobalArrayValue( 'wgHooks', array( 'SessionMetadata' => array( $this ) ) );
-               $this->store->setSessionData( self::SESSIONID, $testData );
-               $backend = $this->getBackend( $user );
-               $this->store->deleteSession( self::SESSIONID );
-               $wrap = \TestingAccessWrapper::newFromObject( $backend );
-               $this->assertFalse( $backend->isPersistent(), 'sanity check' );
-               $wrap->metaDirty = false;
-               $wrap->dataDirty = false;
-               $wrap->forcePersist = false;
-               $expires = time() + $wrap->lifetime + 100;
-               $wrap->expires = $expires;
-               $backend->renew();
-               $this->assertFalse( $this->onSessionMetadataCalled );
-               $this->assertFalse( $this->store->getSession( self::SESSIONID ), 'making sure it didn\'t save' );
-               $this->assertEquals( $expires, $wrap->expires );
-       }
-
-       public function onSessionMetadata( SessionBackend $backend, array &$metadata, array $requests ) {
-               $this->onSessionMetadataCalled = true;
-               $metadata['???'] = '!!!';
-       }
-
-       public function testResetIdOfGlobalSession() {
-               if ( !PHPSessionHandler::isInstalled() ) {
-                       PHPSessionHandler::install( SessionManager::singleton() );
-               }
-               if ( !PHPSessionHandler::isEnabled() ) {
-                       $rProp = new \ReflectionProperty( 'MediaWiki\\Session\\PHPSessionHandler', 'instance' );
-                       $rProp->setAccessible( true );
-                       $handler = \TestingAccessWrapper::newFromObject( $rProp->getValue() );
-                       $resetHandler = new \ScopedCallback( function () use ( $handler ) {
-                               session_write_close();
-                               $handler->enable = false;
-                       } );
-                       $handler->enable = true;
-               }
-
-               $backend = $this->getBackend( User::newFromName( 'UTSysop' ) );
-               \TestingAccessWrapper::newFromObject( $backend )->usePhpSessionHandling = true;
-
-               TestUtils::setSessionManagerSingleton( $this->manager );
-
-               $manager = \TestingAccessWrapper::newFromObject( $this->manager );
-               $request = \RequestContext::getMain()->getRequest();
-               $manager->globalSession = $backend->getSession( $request );
-               $manager->globalSessionRequest = $request;
-
-               session_id( self::SESSIONID );
-               \MediaWiki\quietCall( 'session_start' );
-               $backend->resetId();
-               $this->assertNotEquals( self::SESSIONID, $backend->getId() );
-               $this->assertSame( $backend->getId(), session_id() );
-               session_write_close();
-
-               session_id( '' );
-               $this->assertNotSame( $backend->getId(), session_id(), 'sanity check' );
-               $backend->persist();
-               $this->assertSame( $backend->getId(), session_id() );
-               session_write_close();
-       }
-
-       public function testGetAllowedUserRights() {
-               $this->provider = $this->getMockBuilder( 'DummySessionProvider' )
-                       ->setMethods( array( 'getAllowedUserRights' ) )
-                       ->getMock();
-               $this->provider->expects( $this->any() )->method( 'getAllowedUserRights' )
-                       ->will( $this->returnValue( array( 'foo', 'bar' ) ) );
-
-               $backend = $this->getBackend();
-               $this->assertSame( array( 'foo', 'bar' ), $backend->getAllowedUserRights() );
-       }
-
-}
diff --git a/tests/phpunit/includes/session/SessionIdTest.php b/tests/phpunit/includes/session/SessionIdTest.php
deleted file mode 100644 (file)
index 2b06d97..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-namespace MediaWiki\Session;
-
-use MediaWikiTestCase;
-
-/**
- * @group Session
- * @covers MediaWiki\Session\SessionId
- */
-class SessionIdTest extends MediaWikiTestCase {
-
-       public function testEverything() {
-               $id = new SessionId( 'foo' );
-               $this->assertSame( 'foo', $id->getId() );
-               $this->assertSame( 'foo', (string)$id );
-               $id->setId( 'bar' );
-               $this->assertSame( 'bar', $id->getId() );
-               $this->assertSame( 'bar', (string)$id );
-       }
-
-}
diff --git a/tests/phpunit/includes/session/SessionInfoTest.php b/tests/phpunit/includes/session/SessionInfoTest.php
deleted file mode 100644 (file)
index b411f3c..0000000
+++ /dev/null
@@ -1,328 +0,0 @@
-<?php
-
-namespace MediaWiki\Session;
-
-use Psr\Log\LogLevel;
-use MediaWikiTestCase;
-
-/**
- * @group Session
- * @group Database
- * @covers MediaWiki\Session\SessionInfo
- */
-class SessionInfoTest extends MediaWikiTestCase {
-
-       public function testBasics() {
-               $anonInfo = UserInfo::newAnonymous();
-               $userInfo = UserInfo::newFromName( 'UTSysop', true );
-               $unverifiedUserInfo = UserInfo::newFromName( 'UTSysop', false );
-
-               try {
-                       new SessionInfo( SessionInfo::MIN_PRIORITY - 1, array() );
-                       $this->fail( 'Expected exception not thrown', 'priority < min' );
-               } catch ( \InvalidArgumentException $ex ) {
-                       $this->assertSame( 'Invalid priority', $ex->getMessage(), 'priority < min' );
-               }
-
-               try {
-                       new SessionInfo( SessionInfo::MAX_PRIORITY + 1, array() );
-                       $this->fail( 'Expected exception not thrown', 'priority > max' );
-               } catch ( \InvalidArgumentException $ex ) {
-                       $this->assertSame( 'Invalid priority', $ex->getMessage(), 'priority > max' );
-               }
-
-               try {
-                       new SessionInfo( SessionInfo::MIN_PRIORITY, array( 'id' => 'ABC?' ) );
-                       $this->fail( 'Expected exception not thrown', 'bad session ID' );
-               } catch ( \InvalidArgumentException $ex ) {
-                       $this->assertSame( 'Invalid session ID', $ex->getMessage(), 'bad session ID' );
-               }
-
-               try {
-                       new SessionInfo( SessionInfo::MIN_PRIORITY, array( 'userInfo' => new \stdClass ) );
-                       $this->fail( 'Expected exception not thrown', 'bad userInfo' );
-               } catch ( \InvalidArgumentException $ex ) {
-                       $this->assertSame( 'Invalid userInfo', $ex->getMessage(), 'bad userInfo' );
-               }
-
-               try {
-                       new SessionInfo( SessionInfo::MIN_PRIORITY, array() );
-                       $this->fail( 'Expected exception not thrown', 'no provider, no id' );
-               } catch ( \InvalidArgumentException $ex ) {
-                       $this->assertSame( 'Must supply an ID when no provider is given', $ex->getMessage(),
-                               'no provider, no id' );
-               }
-
-               try {
-                       new SessionInfo( SessionInfo::MIN_PRIORITY, array( 'copyFrom' => new \stdClass ) );
-                       $this->fail( 'Expected exception not thrown', 'bad copyFrom' );
-               } catch ( \InvalidArgumentException $ex ) {
-                       $this->assertSame( 'Invalid copyFrom', $ex->getMessage(),
-                               'bad copyFrom' );
-               }
-
-               $manager = new SessionManager();
-               $provider = $this->getMockBuilder( 'MediaWiki\\Session\\SessionProvider' )
-                       ->setMethods( array( 'persistsSessionId', 'canChangeUser', '__toString' ) )
-                       ->getMockForAbstractClass();
-               $provider->setManager( $manager );
-               $provider->expects( $this->any() )->method( 'persistsSessionId' )
-                       ->will( $this->returnValue( true ) );
-               $provider->expects( $this->any() )->method( 'canChangeUser' )
-                       ->will( $this->returnValue( true ) );
-               $provider->expects( $this->any() )->method( '__toString' )
-                       ->will( $this->returnValue( 'Mock' ) );
-
-               $provider2 = $this->getMockBuilder( 'MediaWiki\\Session\\SessionProvider' )
-                       ->setMethods( array( 'persistsSessionId', 'canChangeUser', '__toString' ) )
-                       ->getMockForAbstractClass();
-               $provider2->setManager( $manager );
-               $provider2->expects( $this->any() )->method( 'persistsSessionId' )
-                       ->will( $this->returnValue( true ) );
-               $provider2->expects( $this->any() )->method( 'canChangeUser' )
-                       ->will( $this->returnValue( true ) );
-               $provider2->expects( $this->any() )->method( '__toString' )
-                       ->will( $this->returnValue( 'Mock2' ) );
-
-               try {
-                       new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                               'provider' => $provider,
-                               'userInfo' => $anonInfo,
-                               'metadata' => 'foo',
-                       ) );
-                       $this->fail( 'Expected exception not thrown', 'bad metadata' );
-               } catch ( \InvalidArgumentException $ex ) {
-                       $this->assertSame( 'Invalid metadata', $ex->getMessage(), 'bad metadata' );
-               }
-
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY + 5, array(
-                       'provider' => $provider,
-                       'userInfo' => $anonInfo
-               ) );
-               $this->assertSame( $provider, $info->getProvider() );
-               $this->assertNotNull( $info->getId() );
-               $this->assertSame( SessionInfo::MIN_PRIORITY + 5, $info->getPriority() );
-               $this->assertSame( $anonInfo, $info->getUserInfo() );
-               $this->assertTrue( $info->isIdSafe() );
-               $this->assertFalse( $info->wasPersisted() );
-               $this->assertFalse( $info->wasRemembered() );
-               $this->assertFalse( $info->forceHTTPS() );
-               $this->assertNull( $info->getProviderMetadata() );
-
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY + 5, array(
-                       'provider' => $provider,
-                       'userInfo' => $unverifiedUserInfo,
-                       'metadata' => array( 'Foo' ),
-               ) );
-               $this->assertSame( $provider, $info->getProvider() );
-               $this->assertNotNull( $info->getId() );
-               $this->assertSame( SessionInfo::MIN_PRIORITY + 5, $info->getPriority() );
-               $this->assertSame( $unverifiedUserInfo, $info->getUserInfo() );
-               $this->assertTrue( $info->isIdSafe() );
-               $this->assertFalse( $info->wasPersisted() );
-               $this->assertFalse( $info->wasRemembered() );
-               $this->assertFalse( $info->forceHTTPS() );
-               $this->assertSame( array( 'Foo' ), $info->getProviderMetadata() );
-
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY + 5, array(
-                       'provider' => $provider,
-                       'userInfo' => $userInfo
-               ) );
-               $this->assertSame( $provider, $info->getProvider() );
-               $this->assertNotNull( $info->getId() );
-               $this->assertSame( SessionInfo::MIN_PRIORITY + 5, $info->getPriority() );
-               $this->assertSame( $userInfo, $info->getUserInfo() );
-               $this->assertTrue( $info->isIdSafe() );
-               $this->assertFalse( $info->wasPersisted() );
-               $this->assertTrue( $info->wasRemembered() );
-               $this->assertFalse( $info->forceHTTPS() );
-               $this->assertNull( $info->getProviderMetadata() );
-
-               $id = $manager->generateSessionId();
-
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY + 5, array(
-                       'provider' => $provider,
-                       'id' => $id,
-                       'persisted' => true,
-                       'userInfo' => $anonInfo
-               ) );
-               $this->assertSame( $provider, $info->getProvider() );
-               $this->assertSame( $id, $info->getId() );
-               $this->assertSame( SessionInfo::MIN_PRIORITY + 5, $info->getPriority() );
-               $this->assertSame( $anonInfo, $info->getUserInfo() );
-               $this->assertFalse( $info->isIdSafe() );
-               $this->assertTrue( $info->wasPersisted() );
-               $this->assertFalse( $info->wasRemembered() );
-               $this->assertFalse( $info->forceHTTPS() );
-               $this->assertNull( $info->getProviderMetadata() );
-
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY + 5, array(
-                       'provider' => $provider,
-                       'id' => $id,
-                       'userInfo' => $userInfo
-               ) );
-               $this->assertSame( $provider, $info->getProvider() );
-               $this->assertSame( $id, $info->getId() );
-               $this->assertSame( SessionInfo::MIN_PRIORITY + 5, $info->getPriority() );
-               $this->assertSame( $userInfo, $info->getUserInfo() );
-               $this->assertFalse( $info->isIdSafe() );
-               $this->assertFalse( $info->wasPersisted() );
-               $this->assertTrue( $info->wasRemembered() );
-               $this->assertFalse( $info->forceHTTPS() );
-               $this->assertNull( $info->getProviderMetadata() );
-
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY + 5, array(
-                       'id' => $id,
-                       'persisted' => true,
-                       'userInfo' => $userInfo,
-                       'metadata' => array( 'Foo' ),
-               ) );
-               $this->assertSame( $id, $info->getId() );
-               $this->assertSame( SessionInfo::MIN_PRIORITY + 5, $info->getPriority() );
-               $this->assertSame( $userInfo, $info->getUserInfo() );
-               $this->assertFalse( $info->isIdSafe() );
-               $this->assertTrue( $info->wasPersisted() );
-               $this->assertFalse( $info->wasRemembered() );
-               $this->assertFalse( $info->forceHTTPS() );
-               $this->assertNull( $info->getProviderMetadata() );
-
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY + 5, array(
-                       'id' => $id,
-                       'remembered' => true,
-                       'userInfo' => $userInfo,
-               ) );
-               $this->assertFalse( $info->wasRemembered(), 'no provider' );
-
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY + 5, array(
-                       'provider' => $provider,
-                       'id' => $id,
-                       'remembered' => true,
-               ) );
-               $this->assertFalse( $info->wasRemembered(), 'no user' );
-
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY + 5, array(
-                       'provider' => $provider,
-                       'id' => $id,
-                       'remembered' => true,
-                       'userInfo' => $anonInfo,
-               ) );
-               $this->assertFalse( $info->wasRemembered(), 'anonymous user' );
-
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY + 5, array(
-                       'provider' => $provider,
-                       'id' => $id,
-                       'remembered' => true,
-                       'userInfo' => $unverifiedUserInfo,
-               ) );
-               $this->assertFalse( $info->wasRemembered(), 'unverified user' );
-
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY + 5, array(
-                       'provider' => $provider,
-                       'id' => $id,
-                       'remembered' => false,
-                       'userInfo' => $userInfo,
-               ) );
-               $this->assertFalse( $info->wasRemembered(), 'specific override' );
-
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY + 5, array(
-                       'id' => $id,
-                       'idIsSafe' => true,
-               ) );
-               $this->assertSame( $id, $info->getId() );
-               $this->assertSame( SessionInfo::MIN_PRIORITY + 5, $info->getPriority() );
-               $this->assertTrue( $info->isIdSafe() );
-
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'id' => $id,
-                       'forceHTTPS' => 1,
-               ) );
-               $this->assertTrue( $info->forceHTTPS() );
-
-               $fromInfo = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'id' => $id . 'A',
-                       'provider' => $provider,
-                       'userInfo' => $userInfo,
-                       'idIsSafe' => true,
-                       'persisted' => true,
-                       'remembered' => true,
-                       'forceHTTPS' => true,
-                       'metadata' => array( 'foo!' ),
-               ) );
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY + 4, array(
-                       'copyFrom' => $fromInfo,
-               ) );
-               $this->assertSame( $id . 'A', $info->getId() );
-               $this->assertSame( SessionInfo::MIN_PRIORITY + 4, $info->getPriority() );
-               $this->assertSame( $provider, $info->getProvider() );
-               $this->assertSame( $userInfo, $info->getUserInfo() );
-               $this->assertTrue( $info->isIdSafe() );
-               $this->assertTrue( $info->wasPersisted() );
-               $this->assertTrue( $info->wasRemembered() );
-               $this->assertTrue( $info->forceHTTPS() );
-               $this->assertSame( array( 'foo!' ), $info->getProviderMetadata() );
-
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY + 4, array(
-                       'id' => $id . 'X',
-                       'provider' => $provider2,
-                       'userInfo' => $unverifiedUserInfo,
-                       'idIsSafe' => false,
-                       'persisted' => false,
-                       'remembered' => false,
-                       'forceHTTPS' => false,
-                       'metadata' => null,
-                       'copyFrom' => $fromInfo,
-               ) );
-               $this->assertSame( $id . 'X', $info->getId() );
-               $this->assertSame( SessionInfo::MIN_PRIORITY + 4, $info->getPriority() );
-               $this->assertSame( $provider2, $info->getProvider() );
-               $this->assertSame( $unverifiedUserInfo, $info->getUserInfo() );
-               $this->assertFalse( $info->isIdSafe() );
-               $this->assertFalse( $info->wasPersisted() );
-               $this->assertFalse( $info->wasRemembered() );
-               $this->assertFalse( $info->forceHTTPS() );
-               $this->assertNull( $info->getProviderMetadata() );
-
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'id' => $id,
-               ) );
-               $this->assertSame(
-                       '[' . SessionInfo::MIN_PRIORITY . "]null<null>$id",
-                       (string)$info,
-                       'toString'
-               );
-
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider,
-                       'id' => $id,
-                       'persisted' => true,
-                       'userInfo' => $userInfo
-               ) );
-               $this->assertSame(
-                       '[' . SessionInfo::MIN_PRIORITY . "]Mock<+:{$userInfo->getId()}:UTSysop>$id",
-                       (string)$info,
-                       'toString'
-               );
-
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider,
-                       'id' => $id,
-                       'persisted' => true,
-                       'userInfo' => $unverifiedUserInfo
-               ) );
-               $this->assertSame(
-                       '[' . SessionInfo::MIN_PRIORITY . "]Mock<-:{$userInfo->getId()}:UTSysop>$id",
-                       (string)$info,
-                       'toString'
-               );
-       }
-
-       public function testCompare() {
-               $id = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
-               $info1 = new SessionInfo( SessionInfo::MIN_PRIORITY + 1, array( 'id' => $id ) );
-               $info2 = new SessionInfo( SessionInfo::MIN_PRIORITY + 2, array( 'id' => $id ) );
-
-               $this->assertTrue( SessionInfo::compare( $info1, $info2 ) < 0, '<' );
-               $this->assertTrue( SessionInfo::compare( $info2, $info1 ) > 0, '>' );
-               $this->assertTrue( SessionInfo::compare( $info1, $info1 ) === 0, '==' );
-       }
-}
diff --git a/tests/phpunit/includes/session/SessionManagerTest.php b/tests/phpunit/includes/session/SessionManagerTest.php
deleted file mode 100644 (file)
index dc217cd..0000000
+++ /dev/null
@@ -1,1683 +0,0 @@
-<?php
-
-namespace MediaWiki\Session;
-
-use Psr\Log\LogLevel;
-use MediaWikiTestCase;
-use User;
-
-/**
- * @group Session
- * @group Database
- * @covers MediaWiki\Session\SessionManager
- */
-class SessionManagerTest extends MediaWikiTestCase {
-
-       protected $config, $logger, $store;
-
-       protected function getManager() {
-               \ObjectCache::$instances['testSessionStore'] = new TestBagOStuff();
-               $this->config = new \HashConfig( array(
-                       'LanguageCode' => 'en',
-                       'SessionCacheType' => 'testSessionStore',
-                       'ObjectCacheSessionExpiry' => 100,
-                       'SessionProviders' => array(
-                               array( 'class' => 'DummySessionProvider' ),
-                       )
-               ) );
-               $this->logger = new \TestLogger( false, function ( $m ) {
-                       return substr( $m, 0, 15 ) === 'SessionBackend ' ? null : $m;
-               } );
-               $this->store = new TestBagOStuff();
-
-               return new SessionManager( array(
-                       'config' => $this->config,
-                       'logger' => $this->logger,
-                       'store' => $this->store,
-               ) );
-       }
-
-       protected function objectCacheDef( $object ) {
-               return array( 'factory' => function () use ( $object ) {
-                       return $object;
-               } );
-       }
-
-       public function testSingleton() {
-               $reset = TestUtils::setSessionManagerSingleton( null );
-
-               $singleton = SessionManager::singleton();
-               $this->assertInstanceOf( 'MediaWiki\\Session\\SessionManager', $singleton );
-               $this->assertSame( $singleton, SessionManager::singleton() );
-       }
-
-       public function testGetGlobalSession() {
-               $context = \RequestContext::getMain();
-
-               if ( !PHPSessionHandler::isInstalled() ) {
-                       PHPSessionHandler::install( SessionManager::singleton() );
-               }
-               $rProp = new \ReflectionProperty( 'MediaWiki\\Session\\PHPSessionHandler', 'instance' );
-               $rProp->setAccessible( true );
-               $handler = \TestingAccessWrapper::newFromObject( $rProp->getValue() );
-               $oldEnable = $handler->enable;
-               $reset[] = new \ScopedCallback( function () use ( $handler, $oldEnable ) {
-                       if ( $handler->enable ) {
-                               session_write_close();
-                       }
-                       $handler->enable = $oldEnable;
-               } );
-               $reset[] = TestUtils::setSessionManagerSingleton( $this->getManager() );
-
-               $handler->enable = true;
-               $request = new \FauxRequest();
-               $context->setRequest( $request );
-               $id = $request->getSession()->getId();
-
-               session_id( '' );
-               $session = SessionManager::getGlobalSession();
-               $this->assertSame( $id, $session->getId() );
-
-               session_id( 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' );
-               $session = SessionManager::getGlobalSession();
-               $this->assertSame( 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', $session->getId() );
-               $this->assertSame( 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', $request->getSession()->getId() );
-
-               session_write_close();
-               $handler->enable = false;
-               $request = new \FauxRequest();
-               $context->setRequest( $request );
-               $id = $request->getSession()->getId();
-
-               session_id( '' );
-               $session = SessionManager::getGlobalSession();
-               $this->assertSame( $id, $session->getId() );
-
-               session_id( 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' );
-               $session = SessionManager::getGlobalSession();
-               $this->assertSame( $id, $session->getId() );
-               $this->assertSame( $id, $request->getSession()->getId() );
-       }
-
-       public function testConstructor() {
-               $manager = \TestingAccessWrapper::newFromObject( $this->getManager() );
-               $this->assertSame( $this->config, $manager->config );
-               $this->assertSame( $this->logger, $manager->logger );
-               $this->assertSame( $this->store, $manager->store );
-
-               $manager = \TestingAccessWrapper::newFromObject( new SessionManager() );
-               $this->assertSame( \RequestContext::getMain()->getConfig(), $manager->config );
-
-               $manager = \TestingAccessWrapper::newFromObject( new SessionManager( array(
-                       'config' => $this->config,
-               ) ) );
-               $this->assertSame( \ObjectCache::$instances['testSessionStore'], $manager->store );
-
-               foreach ( array(
-                       'config' => '$options[\'config\'] must be an instance of Config',
-                       'logger' => '$options[\'logger\'] must be an instance of LoggerInterface',
-                       'store' => '$options[\'store\'] must be an instance of BagOStuff',
-               ) as $key => $error ) {
-                       try {
-                               new SessionManager( array( $key => new \stdClass ) );
-                               $this->fail( 'Expected exception not thrown' );
-                       } catch ( \InvalidArgumentException $ex ) {
-                               $this->assertSame( $error, $ex->getMessage() );
-                       }
-               }
-       }
-
-       public function testGetSessionForRequest() {
-               $manager = $this->getManager();
-               $request = new \FauxRequest();
-
-               $id1 = '';
-               $id2 = '';
-               $idEmpty = 'empty-session-------------------';
-
-               $providerBuilder = $this->getMockBuilder( 'DummySessionProvider' )
-                       ->setMethods(
-                               array( 'provideSessionInfo', 'newSessionInfo', '__toString', 'describe' )
-                       );
-
-               $provider1 = $providerBuilder->getMock();
-               $provider1->expects( $this->any() )->method( 'provideSessionInfo' )
-                       ->with( $this->identicalTo( $request ) )
-                       ->will( $this->returnCallback( function ( $request ) {
-                               return $request->info1;
-                       } ) );
-               $provider1->expects( $this->any() )->method( 'newSessionInfo' )
-                       ->will( $this->returnCallback( function () use ( $idEmpty, $provider1 ) {
-                               return new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                                       'provider' => $provider1,
-                                       'id' => $idEmpty,
-                                       'persisted' => true,
-                                       'idIsSafe' => true,
-                               ) );
-                       } ) );
-               $provider1->expects( $this->any() )->method( '__toString' )
-                       ->will( $this->returnValue( 'Provider1' ) );
-               $provider1->expects( $this->any() )->method( 'describe' )
-                       ->will( $this->returnValue( '#1 sessions' ) );
-
-               $provider2 = $providerBuilder->getMock();
-               $provider2->expects( $this->any() )->method( 'provideSessionInfo' )
-                       ->with( $this->identicalTo( $request ) )
-                       ->will( $this->returnCallback( function ( $request ) {
-                               return $request->info2;
-                       } ) );
-               $provider2->expects( $this->any() )->method( '__toString' )
-                       ->will( $this->returnValue( 'Provider2' ) );
-               $provider2->expects( $this->any() )->method( 'describe' )
-                       ->will( $this->returnValue( '#2 sessions' ) );
-
-               $this->config->set( 'SessionProviders', array(
-                       $this->objectCacheDef( $provider1 ),
-                       $this->objectCacheDef( $provider2 ),
-               ) );
-
-               // No provider returns info
-               $request->info1 = null;
-               $request->info2 = null;
-               $session = $manager->getSessionForRequest( $request );
-               $this->assertInstanceOf( 'MediaWiki\\Session\\Session', $session );
-               $this->assertSame( $idEmpty, $session->getId() );
-               $this->assertNull( $manager->getPersistedSessionId( $request ) );
-
-               // Both providers return info, picks best one
-               $request->info1 = new SessionInfo( SessionInfo::MIN_PRIORITY + 1, array(
-                       'provider' => $provider1,
-                       'id' => ( $id1 = $manager->generateSessionId() ),
-                       'persisted' => true,
-                       'idIsSafe' => true,
-               ) );
-               $request->info2 = new SessionInfo( SessionInfo::MIN_PRIORITY + 2, array(
-                       'provider' => $provider2,
-                       'id' => ( $id2 = $manager->generateSessionId() ),
-                       'persisted' => true,
-                       'idIsSafe' => true,
-               ) );
-               $session = $manager->getSessionForRequest( $request );
-               $this->assertInstanceOf( 'MediaWiki\\Session\\Session', $session );
-               $this->assertSame( $id2, $session->getId() );
-               $this->assertSame( $id2, $manager->getPersistedSessionId( $request ) );
-
-               $request->info1 = new SessionInfo( SessionInfo::MIN_PRIORITY + 2, array(
-                       'provider' => $provider1,
-                       'id' => ( $id1 = $manager->generateSessionId() ),
-                       'persisted' => true,
-                       'idIsSafe' => true,
-               ) );
-               $request->info2 = new SessionInfo( SessionInfo::MIN_PRIORITY + 1, array(
-                       'provider' => $provider2,
-                       'id' => ( $id2 = $manager->generateSessionId() ),
-                       'persisted' => true,
-                       'idIsSafe' => true,
-               ) );
-               $session = $manager->getSessionForRequest( $request );
-               $this->assertInstanceOf( 'MediaWiki\\Session\\Session', $session );
-               $this->assertSame( $id1, $session->getId() );
-               $this->assertSame( $id1, $manager->getPersistedSessionId( $request ) );
-
-               // Tied priorities
-               $request->info1 = new SessionInfo( SessionInfo::MAX_PRIORITY, array(
-                       'provider' => $provider1,
-                       'id' => ( $id1 = $manager->generateSessionId() ),
-                       'persisted' => true,
-                       'userInfo' => UserInfo::newAnonymous(),
-                       'idIsSafe' => true,
-               ) );
-               $request->info2 = new SessionInfo( SessionInfo::MAX_PRIORITY, array(
-                       'provider' => $provider2,
-                       'id' => ( $id2 = $manager->generateSessionId() ),
-                       'persisted' => true,
-                       'userInfo' => UserInfo::newAnonymous(),
-                       'idIsSafe' => true,
-               ) );
-               try {
-                       $manager->getSessionForRequest( $request );
-                       $this->fail( 'Expcected exception not thrown' );
-               } catch ( \OverFlowException $ex ) {
-                       $this->assertStringStartsWith(
-                               'Multiple sessions for this request tied for top priority: ',
-                               $ex->getMessage()
-                       );
-                       $this->assertCount( 2, $ex->sessionInfos );
-                       $this->assertContains( $request->info1, $ex->sessionInfos );
-                       $this->assertContains( $request->info2, $ex->sessionInfos );
-               }
-               try {
-                       $manager->getPersistedSessionId( $request );
-                       $this->fail( 'Expcected exception not thrown' );
-               } catch ( \OverFlowException $ex ) {
-                       $this->assertStringStartsWith(
-                               'Multiple sessions for this request tied for top priority: ',
-                               $ex->getMessage()
-                       );
-                       $this->assertCount( 2, $ex->sessionInfos );
-                       $this->assertContains( $request->info1, $ex->sessionInfos );
-                       $this->assertContains( $request->info2, $ex->sessionInfos );
-               }
-
-               // Bad provider
-               $request->info1 = new SessionInfo( SessionInfo::MAX_PRIORITY, array(
-                       'provider' => $provider2,
-                       'id' => ( $id1 = $manager->generateSessionId() ),
-                       'persisted' => true,
-                       'idIsSafe' => true,
-               ) );
-               $request->info2 = null;
-               try {
-                       $manager->getSessionForRequest( $request );
-                       $this->fail( 'Expcected exception not thrown' );
-               } catch ( \UnexpectedValueException $ex ) {
-                       $this->assertSame(
-                               'Provider1 returned session info for a different provider: ' . $request->info1,
-                               $ex->getMessage()
-                       );
-               }
-               try {
-                       $manager->getPersistedSessionId( $request );
-                       $this->fail( 'Expcected exception not thrown' );
-               } catch ( \UnexpectedValueException $ex ) {
-                       $this->assertSame(
-                               'Provider1 returned session info for a different provider: ' . $request->info1,
-                               $ex->getMessage()
-                       );
-               }
-
-               // Unusable session info
-               $this->logger->setCollect( true );
-               $request->info1 = new SessionInfo( SessionInfo::MAX_PRIORITY, array(
-                       'provider' => $provider1,
-                       'id' => ( $id1 = $manager->generateSessionId() ),
-                       'persisted' => true,
-                       'userInfo' => UserInfo::newFromName( 'UTSysop', false ),
-                       'idIsSafe' => true,
-               ) );
-               $request->info2 = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider2,
-                       'id' => ( $id2 = $manager->generateSessionId() ),
-                       'persisted' => true,
-                       'idIsSafe' => true,
-               ) );
-               $session = $manager->getSessionForRequest( $request );
-               $this->assertInstanceOf( 'MediaWiki\\Session\\Session', $session );
-               $this->assertSame( $id2, $session->getId() );
-               $this->assertSame( $id2, $manager->getPersistedSessionId( $request ) );
-               $this->logger->setCollect( false );
-
-               // Unpersisted session ID
-               $request->info1 = new SessionInfo( SessionInfo::MAX_PRIORITY, array(
-                       'provider' => $provider1,
-                       'id' => ( $id1 = $manager->generateSessionId() ),
-                       'persisted' => false,
-                       'userInfo' => UserInfo::newFromName( 'UTSysop', true ),
-                       'idIsSafe' => true,
-               ) );
-               $request->info2 = null;
-               $session = $manager->getSessionForRequest( $request );
-               $this->assertInstanceOf( 'MediaWiki\\Session\\Session', $session );
-               $this->assertSame( $id1, $session->getId() );
-               $session->persist();
-               $this->assertTrue( $session->isPersistent(), 'sanity check' );
-               $this->assertNull( $manager->getPersistedSessionId( $request ) );
-       }
-
-       public function testGetSessionById() {
-               $manager = $this->getManager();
-
-               try {
-                       $manager->getSessionById( 'bad' );
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \InvalidArgumentException $ex ) {
-                       $this->assertSame( 'Invalid session ID', $ex->getMessage() );
-               }
-
-               // Unknown session ID
-               $id = $manager->generateSessionId();
-               $session = $manager->getSessionById( $id );
-               $this->assertInstanceOf( 'MediaWiki\\Session\\Session', $session );
-               $this->assertSame( $id, $session->getId() );
-
-               $id = $manager->generateSessionId();
-               $this->assertNull( $manager->getSessionById( $id, true ) );
-
-               // Known but unloadable session ID
-               $this->logger->setCollect( true );
-               $id = $manager->generateSessionId();
-               $this->store->setRawSession( $id, array( 'metadata' => array(
-                       'provider' => 'DummySessionProvider',
-                       'userId' => 0,
-                       'userName' => null,
-                       'userToken' => null,
-               ) ) );
-
-               try {
-                       $manager->getSessionById( $id );
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \UnexpectedValueException $ex ) {
-                       $this->assertSame(
-                               'Can neither load the session nor create an empty session',
-                               $ex->getMessage()
-                       );
-               }
-
-               $this->assertNull( $manager->getSessionById( $id, true ) );
-               $this->logger->setCollect( false );
-
-               // Known session ID
-               $this->store->setSession( $id, array() );
-               $session = $manager->getSessionById( $id );
-               $this->assertInstanceOf( 'MediaWiki\\Session\\Session', $session );
-               $this->assertSame( $id, $session->getId() );
-       }
-
-       public function testGetEmptySession() {
-               $manager = $this->getManager();
-               $pmanager = \TestingAccessWrapper::newFromObject( $manager );
-               $request = new \FauxRequest();
-
-               $providerBuilder = $this->getMockBuilder( 'DummySessionProvider' )
-                       ->setMethods( array( 'provideSessionInfo', 'newSessionInfo', '__toString' ) );
-
-               $expectId = null;
-               $info1 = null;
-               $info2 = null;
-
-               $provider1 = $providerBuilder->getMock();
-               $provider1->expects( $this->any() )->method( 'provideSessionInfo' )
-                       ->will( $this->returnValue( null ) );
-               $provider1->expects( $this->any() )->method( 'newSessionInfo' )
-                       ->with( $this->callback( function ( $id ) use ( &$expectId ) {
-                               return $id === $expectId;
-                       } ) )
-                       ->will( $this->returnCallback( function () use ( &$info1 ) {
-                               return $info1;
-                       } ) );
-               $provider1->expects( $this->any() )->method( '__toString' )
-                       ->will( $this->returnValue( 'MockProvider1' ) );
-
-               $provider2 = $providerBuilder->getMock();
-               $provider2->expects( $this->any() )->method( 'provideSessionInfo' )
-                       ->will( $this->returnValue( null ) );
-               $provider2->expects( $this->any() )->method( 'newSessionInfo' )
-                       ->with( $this->callback( function ( $id ) use ( &$expectId ) {
-                               return $id === $expectId;
-                       } ) )
-                       ->will( $this->returnCallback( function () use ( &$info2 ) {
-                               return $info2;
-                       } ) );
-               $provider1->expects( $this->any() )->method( '__toString' )
-                       ->will( $this->returnValue( 'MockProvider2' ) );
-
-               $this->config->set( 'SessionProviders', array(
-                       $this->objectCacheDef( $provider1 ),
-                       $this->objectCacheDef( $provider2 ),
-               ) );
-
-               // No info
-               $expectId = null;
-               $info1 = null;
-               $info2 = null;
-               try {
-                       $manager->getEmptySession();
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \UnexpectedValueException $ex ) {
-                       $this->assertSame(
-                               'No provider could provide an empty session!',
-                               $ex->getMessage()
-                       );
-               }
-
-               // Info
-               $expectId = null;
-               $info1 = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider1,
-                       'id' => 'empty---------------------------',
-                       'persisted' => true,
-                       'idIsSafe' => true,
-               ) );
-               $info2 = null;
-               $session = $manager->getEmptySession();
-               $this->assertInstanceOf( 'MediaWiki\\Session\\Session', $session );
-               $this->assertSame( 'empty---------------------------', $session->getId() );
-
-               // Info, explicitly
-               $expectId = 'expected------------------------';
-               $info1 = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider1,
-                       'id' => $expectId,
-                       'persisted' => true,
-                       'idIsSafe' => true,
-               ) );
-               $info2 = null;
-               $session = $pmanager->getEmptySessionInternal( null, $expectId );
-               $this->assertInstanceOf( 'MediaWiki\\Session\\Session', $session );
-               $this->assertSame( $expectId, $session->getId() );
-
-               // Wrong ID
-               $expectId = 'expected-----------------------2';
-               $info1 = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider1,
-                       'id' => "un$expectId",
-                       'persisted' => true,
-                       'idIsSafe' => true,
-               ) );
-               $info2 = null;
-               try {
-                       $pmanager->getEmptySessionInternal( null, $expectId );
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \UnexpectedValueException $ex ) {
-                       $this->assertSame(
-                               'MockProvider1 returned empty session info with a wrong id: ' .
-                                       "un$expectId != $expectId",
-                               $ex->getMessage()
-                       );
-               }
-
-               // Unsafe ID
-               $expectId = 'expected-----------------------2';
-               $info1 = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider1,
-                       'id' => $expectId,
-                       'persisted' => true,
-               ) );
-               $info2 = null;
-               try {
-                       $pmanager->getEmptySessionInternal( null, $expectId );
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \UnexpectedValueException $ex ) {
-                       $this->assertSame(
-                               'MockProvider1 returned empty session info with id flagged unsafe',
-                               $ex->getMessage()
-                       );
-               }
-
-               // Wrong provider
-               $expectId = null;
-               $info1 = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider2,
-                       'id' => 'empty---------------------------',
-                       'persisted' => true,
-                       'idIsSafe' => true,
-               ) );
-               $info2 = null;
-               try {
-                       $manager->getEmptySession();
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \UnexpectedValueException $ex ) {
-                       $this->assertSame(
-                               'MockProvider1 returned an empty session info for a different provider: ' . $info1,
-                               $ex->getMessage()
-                       );
-               }
-
-               // Highest priority wins
-               $expectId = null;
-               $info1 = new SessionInfo( SessionInfo::MIN_PRIORITY + 1, array(
-                       'provider' => $provider1,
-                       'id' => 'empty1--------------------------',
-                       'persisted' => true,
-                       'idIsSafe' => true,
-               ) );
-               $info2 = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider2,
-                       'id' => 'empty2--------------------------',
-                       'persisted' => true,
-                       'idIsSafe' => true,
-               ) );
-               $session = $manager->getEmptySession();
-               $this->assertInstanceOf( 'MediaWiki\\Session\\Session', $session );
-               $this->assertSame( 'empty1--------------------------', $session->getId() );
-
-               $expectId = null;
-               $info1 = new SessionInfo( SessionInfo::MIN_PRIORITY + 1, array(
-                       'provider' => $provider1,
-                       'id' => 'empty1--------------------------',
-                       'persisted' => true,
-                       'idIsSafe' => true,
-               ) );
-               $info2 = new SessionInfo( SessionInfo::MIN_PRIORITY + 2, array(
-                       'provider' => $provider2,
-                       'id' => 'empty2--------------------------',
-                       'persisted' => true,
-                       'idIsSafe' => true,
-               ) );
-               $session = $manager->getEmptySession();
-               $this->assertInstanceOf( 'MediaWiki\\Session\\Session', $session );
-               $this->assertSame( 'empty2--------------------------', $session->getId() );
-
-               // Tied priorities throw an exception
-               $expectId = null;
-               $info1 = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider1,
-                       'id' => 'empty1--------------------------',
-                       'persisted' => true,
-                       'userInfo' => UserInfo::newAnonymous(),
-                       'idIsSafe' => true,
-               ) );
-               $info2 = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider2,
-                       'id' => 'empty2--------------------------',
-                       'persisted' => true,
-                       'userInfo' => UserInfo::newAnonymous(),
-                       'idIsSafe' => true,
-               ) );
-               try {
-                       $manager->getEmptySession();
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \UnexpectedValueException $ex ) {
-                       $this->assertStringStartsWith(
-                               'Multiple empty sessions tied for top priority: ',
-                               $ex->getMessage()
-                       );
-               }
-
-               // Bad id
-               try {
-                       $pmanager->getEmptySessionInternal( null, 'bad' );
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \InvalidArgumentException $ex ) {
-                       $this->assertSame( 'Invalid session ID', $ex->getMessage() );
-               }
-
-               // Session already exists
-               $expectId = 'expected-----------------------3';
-               $this->store->setSessionMeta( $expectId, array(
-                       'provider' => 'MockProvider2',
-                       'userId' => 0,
-                       'userName' => null,
-                       'userToken' => null,
-               ) );
-               try {
-                       $pmanager->getEmptySessionInternal( null, $expectId );
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \InvalidArgumentException $ex ) {
-                       $this->assertSame( 'Session ID already exists', $ex->getMessage() );
-               }
-       }
-
-       public function testGetVaryHeaders() {
-               $manager = $this->getManager();
-
-               $providerBuilder = $this->getMockBuilder( 'DummySessionProvider' )
-                       ->setMethods( array( 'getVaryHeaders', '__toString' ) );
-
-               $provider1 = $providerBuilder->getMock();
-               $provider1->expects( $this->once() )->method( 'getVaryHeaders' )
-                       ->will( $this->returnValue( array(
-                               'Foo' => null,
-                               'Bar' => array( 'X', 'Bar1' ),
-                               'Quux' => null,
-                       ) ) );
-               $provider1->expects( $this->any() )->method( '__toString' )
-                       ->will( $this->returnValue( 'MockProvider1' ) );
-
-               $provider2 = $providerBuilder->getMock();
-               $provider2->expects( $this->once() )->method( 'getVaryHeaders' )
-                       ->will( $this->returnValue( array(
-                               'Baz' => null,
-                               'Bar' => array( 'X', 'Bar2' ),
-                               'Quux' => array( 'Quux' ),
-                       ) ) );
-               $provider2->expects( $this->any() )->method( '__toString' )
-                       ->will( $this->returnValue( 'MockProvider2' ) );
-
-               $this->config->set( 'SessionProviders', array(
-                       $this->objectCacheDef( $provider1 ),
-                       $this->objectCacheDef( $provider2 ),
-               ) );
-
-               $expect = array(
-                       'Foo' => array(),
-                       'Bar' => array( 'X', 'Bar1', 3 => 'Bar2' ),
-                       'Quux' => array( 'Quux' ),
-                       'Baz' => array(),
-                       'Quux' => array( 'Quux' ),
-               );
-
-               $this->assertEquals( $expect, $manager->getVaryHeaders() );
-
-               // Again, to ensure it's cached
-               $this->assertEquals( $expect, $manager->getVaryHeaders() );
-       }
-
-       public function testGetVaryCookies() {
-               $manager = $this->getManager();
-
-               $providerBuilder = $this->getMockBuilder( 'DummySessionProvider' )
-                       ->setMethods( array( 'getVaryCookies', '__toString' ) );
-
-               $provider1 = $providerBuilder->getMock();
-               $provider1->expects( $this->once() )->method( 'getVaryCookies' )
-                       ->will( $this->returnValue( array( 'Foo', 'Bar' ) ) );
-               $provider1->expects( $this->any() )->method( '__toString' )
-                       ->will( $this->returnValue( 'MockProvider1' ) );
-
-               $provider2 = $providerBuilder->getMock();
-               $provider2->expects( $this->once() )->method( 'getVaryCookies' )
-                       ->will( $this->returnValue( array( 'Foo', 'Baz' ) ) );
-               $provider2->expects( $this->any() )->method( '__toString' )
-                       ->will( $this->returnValue( 'MockProvider2' ) );
-
-               $this->config->set( 'SessionProviders', array(
-                       $this->objectCacheDef( $provider1 ),
-                       $this->objectCacheDef( $provider2 ),
-               ) );
-
-               $expect = array( 'Foo', 'Bar', 'Baz' );
-
-               $this->assertEquals( $expect, $manager->getVaryCookies() );
-
-               // Again, to ensure it's cached
-               $this->assertEquals( $expect, $manager->getVaryCookies() );
-       }
-
-       public function testGetProviders() {
-               $realManager = $this->getManager();
-               $manager = \TestingAccessWrapper::newFromObject( $realManager );
-
-               $this->config->set( 'SessionProviders', array(
-                       array( 'class' => 'DummySessionProvider' ),
-               ) );
-               $providers = $manager->getProviders();
-               $this->assertArrayHasKey( 'DummySessionProvider', $providers );
-               $provider = \TestingAccessWrapper::newFromObject( $providers['DummySessionProvider'] );
-               $this->assertSame( $manager->logger, $provider->logger );
-               $this->assertSame( $manager->config, $provider->config );
-               $this->assertSame( $realManager, $provider->getManager() );
-
-               $this->config->set( 'SessionProviders', array(
-                       array( 'class' => 'DummySessionProvider' ),
-                       array( 'class' => 'DummySessionProvider' ),
-               ) );
-               $manager->sessionProviders = null;
-               try {
-                       $manager->getProviders();
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \UnexpectedValueException $ex ) {
-                       $this->assertSame(
-                               'Duplicate provider name "DummySessionProvider"',
-                               $ex->getMessage()
-                       );
-               }
-       }
-
-       public function testShutdown() {
-               $manager = \TestingAccessWrapper::newFromObject( $this->getManager() );
-               $manager->setLogger( new \Psr\Log\NullLogger() );
-
-               $mock = $this->getMock( 'stdClass', array( 'save' ) );
-               $mock->expects( $this->once() )->method( 'save' );
-
-               $manager->allSessionBackends = array( $mock );
-               $manager->shutdown();
-       }
-
-       public function testGetSessionFromInfo() {
-               $manager = \TestingAccessWrapper::newFromObject( $this->getManager() );
-               $request = new \FauxRequest();
-
-               $id = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
-
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $manager->getProvider( 'DummySessionProvider' ),
-                       'id' => $id,
-                       'persisted' => true,
-                       'userInfo' => UserInfo::newFromName( 'UTSysop', true ),
-                       'idIsSafe' => true,
-               ) );
-               \TestingAccessWrapper::newFromObject( $info )->idIsSafe = true;
-               $session1 = \TestingAccessWrapper::newFromObject(
-                       $manager->getSessionFromInfo( $info, $request )
-               );
-               $session2 = \TestingAccessWrapper::newFromObject(
-                       $manager->getSessionFromInfo( $info, $request )
-               );
-
-               $this->assertSame( $session1->backend, $session2->backend );
-               $this->assertNotEquals( $session1->index, $session2->index );
-               $this->assertSame( $session1->getSessionId(), $session2->getSessionId() );
-               $this->assertSame( $id, $session1->getId() );
-
-               \TestingAccessWrapper::newFromObject( $info )->idIsSafe = false;
-               $session3 = $manager->getSessionFromInfo( $info, $request );
-               $this->assertNotSame( $id, $session3->getId() );
-       }
-
-       public function testBackendRegistration() {
-               $manager = $this->getManager();
-
-               $session = $manager->getSessionForRequest( new \FauxRequest );
-               $backend = \TestingAccessWrapper::newFromObject( $session )->backend;
-               $sessionId = $session->getSessionId();
-               $id = (string)$sessionId;
-
-               $this->assertSame( $sessionId, $manager->getSessionById( $id )->getSessionId() );
-
-               $manager->changeBackendId( $backend );
-               $this->assertSame( $sessionId, $session->getSessionId() );
-               $this->assertNotEquals( $id, (string)$sessionId );
-               $id = (string)$sessionId;
-
-               $this->assertSame( $sessionId, $manager->getSessionById( $id )->getSessionId() );
-
-               // Destruction of the session here causes the backend to be deregistered
-               $session = null;
-
-               try {
-                       $manager->changeBackendId( $backend );
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \InvalidArgumentException $ex ) {
-                       $this->assertSame(
-                               'Backend was not registered with this SessionManager', $ex->getMessage()
-                       );
-               }
-
-               try {
-                       $manager->deregisterSessionBackend( $backend );
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \InvalidArgumentException $ex ) {
-                       $this->assertSame(
-                               'Backend was not registered with this SessionManager', $ex->getMessage()
-                       );
-               }
-
-               $session = $manager->getSessionById( $id );
-               $this->assertSame( $sessionId, $session->getSessionId() );
-       }
-
-       public function testGenerateSessionId() {
-               $manager = $this->getManager();
-
-               $id = $manager->generateSessionId();
-               $this->assertTrue( SessionManager::validateSessionId( $id ), "Generated ID: $id" );
-       }
-
-       public function testAutoCreateUser() {
-               global $wgGroupPermissions;
-
-               $that = $this;
-
-               \ObjectCache::$instances[__METHOD__] = new \HashBagOStuff();
-               $this->setMwGlobals( array( 'wgMainCacheType' => __METHOD__ ) );
-
-               $this->stashMwGlobals( array( 'wgGroupPermissions' ) );
-               $wgGroupPermissions['*']['createaccount'] = true;
-               $wgGroupPermissions['*']['autocreateaccount'] = false;
-
-               // Replace the global singleton with one configured for testing
-               $manager = $this->getManager();
-               $reset = TestUtils::setSessionManagerSingleton( $manager );
-
-               $logger = new \TestLogger( true, function ( $m ) {
-                       if ( substr( $m, 0, 15 ) === 'SessionBackend ' ) {
-                               // Don't care.
-                               return null;
-                       }
-                       $m = str_replace( 'MediaWiki\Session\SessionManager::autoCreateUser: ', '', $m );
-                       $m = preg_replace( '/ - from: .*$/', ' - from: XXX', $m );
-                       return $m;
-               } );
-               $manager->setLogger( $logger );
-
-               $session = SessionManager::getGlobalSession();
-
-               // Can't create an already-existing user
-               $user = User::newFromName( 'UTSysop' );
-               $id = $user->getId();
-               $this->assertFalse( $manager->autoCreateUser( $user ) );
-               $this->assertSame( $id, $user->getId() );
-               $this->assertSame( 'UTSysop', $user->getName() );
-               $this->assertSame( array(), $logger->getBuffer() );
-               $logger->clearBuffer();
-
-               // Sanity check that creation works at all
-               $user = User::newFromName( 'UTSessionAutoCreate1' );
-               $this->assertSame( 0, $user->getId(), 'sanity check' );
-               $this->assertTrue( $manager->autoCreateUser( $user ) );
-               $this->assertNotEquals( 0, $user->getId() );
-               $this->assertSame( 'UTSessionAutoCreate1', $user->getName() );
-               $this->assertEquals(
-                       $user->getId(), User::idFromName( 'UTSessionAutoCreate1', User::READ_LATEST )
-               );
-               $this->assertSame( array(
-                       array( LogLevel::INFO, 'creating new user (UTSessionAutoCreate1) - from: XXX' ),
-               ), $logger->getBuffer() );
-               $logger->clearBuffer();
-
-               // Check lack of permissions
-               $wgGroupPermissions['*']['createaccount'] = false;
-               $wgGroupPermissions['*']['autocreateaccount'] = false;
-               $user = User::newFromName( 'UTDoesNotExist' );
-               $this->assertFalse( $manager->autoCreateUser( $user ) );
-               $this->assertSame( 0, $user->getId() );
-               $this->assertNotSame( 'UTDoesNotExist', $user->getName() );
-               $this->assertEquals( 0, User::idFromName( 'UTDoesNotExist', User::READ_LATEST ) );
-               $session->clear();
-               $this->assertSame( array(
-                       array( LogLevel::DEBUG, 'user is blocked from this wiki, blacklisting' ),
-               ), $logger->getBuffer() );
-               $logger->clearBuffer();
-
-               // Check other permission
-               $wgGroupPermissions['*']['createaccount'] = false;
-               $wgGroupPermissions['*']['autocreateaccount'] = true;
-               $user = User::newFromName( 'UTSessionAutoCreate2' );
-               $this->assertSame( 0, $user->getId(), 'sanity check' );
-               $this->assertTrue( $manager->autoCreateUser( $user ) );
-               $this->assertNotEquals( 0, $user->getId() );
-               $this->assertSame( 'UTSessionAutoCreate2', $user->getName() );
-               $this->assertEquals(
-                       $user->getId(), User::idFromName( 'UTSessionAutoCreate2', User::READ_LATEST )
-               );
-               $this->assertSame( array(
-                       array( LogLevel::INFO, 'creating new user (UTSessionAutoCreate2) - from: XXX' ),
-               ), $logger->getBuffer() );
-               $logger->clearBuffer();
-
-               // Test account-creation block
-               $anon = new User;
-               $block = new \Block( array(
-                       'address' => $anon->getName(),
-                       'user' => $id,
-                       'reason' => __METHOD__,
-                       'expiry' => time() + 100500,
-                       'createAccount' => true,
-               ) );
-               $block->insert();
-               $this->assertInstanceOf( 'Block', $anon->isBlockedFromCreateAccount(), 'sanity check' );
-               $reset2 = new \ScopedCallback( array( $block, 'delete' ) );
-               $user = User::newFromName( 'UTDoesNotExist' );
-               $this->assertFalse( $manager->autoCreateUser( $user ) );
-               $this->assertSame( 0, $user->getId() );
-               $this->assertNotSame( 'UTDoesNotExist', $user->getName() );
-               $this->assertEquals( 0, User::idFromName( 'UTDoesNotExist', User::READ_LATEST ) );
-               \ScopedCallback::consume( $reset2 );
-               $session->clear();
-               $this->assertSame( array(
-                       array( LogLevel::DEBUG, 'user is blocked from this wiki, blacklisting' ),
-               ), $logger->getBuffer() );
-               $logger->clearBuffer();
-
-               // Sanity check that creation still works
-               $user = User::newFromName( 'UTSessionAutoCreate3' );
-               $this->assertSame( 0, $user->getId(), 'sanity check' );
-               $this->assertTrue( $manager->autoCreateUser( $user ) );
-               $this->assertNotEquals( 0, $user->getId() );
-               $this->assertSame( 'UTSessionAutoCreate3', $user->getName() );
-               $this->assertEquals(
-                       $user->getId(), User::idFromName( 'UTSessionAutoCreate3', User::READ_LATEST )
-               );
-               $this->assertSame( array(
-                       array( LogLevel::INFO, 'creating new user (UTSessionAutoCreate3) - from: XXX' ),
-               ), $logger->getBuffer() );
-               $logger->clearBuffer();
-
-               // Test prevention by AuthPlugin
-               global $wgAuth;
-               $oldWgAuth = $wgAuth;
-               $mockWgAuth = $this->getMock( 'AuthPlugin', array( 'autoCreate' ) );
-               $mockWgAuth->expects( $this->once() )->method( 'autoCreate' )
-                       ->will( $this->returnValue( false ) );
-               $this->setMwGlobals( array(
-                       'wgAuth' => $mockWgAuth,
-               ) );
-               $user = User::newFromName( 'UTDoesNotExist' );
-               $this->assertFalse( $manager->autoCreateUser( $user ) );
-               $this->assertSame( 0, $user->getId() );
-               $this->assertNotSame( 'UTDoesNotExist', $user->getName() );
-               $this->assertEquals( 0, User::idFromName( 'UTDoesNotExist', User::READ_LATEST ) );
-               $this->setMwGlobals( array(
-                       'wgAuth' => $oldWgAuth,
-               ) );
-               $session->clear();
-               $this->assertSame( array(
-                       array( LogLevel::DEBUG, 'denied by AuthPlugin' ),
-               ), $logger->getBuffer() );
-               $logger->clearBuffer();
-
-               // Test prevention by wfReadOnly()
-               $this->setMwGlobals( array(
-                       'wgReadOnly' => 'Because',
-               ) );
-               $user = User::newFromName( 'UTDoesNotExist' );
-               $this->assertFalse( $manager->autoCreateUser( $user ) );
-               $this->assertSame( 0, $user->getId() );
-               $this->assertNotSame( 'UTDoesNotExist', $user->getName() );
-               $this->assertEquals( 0, User::idFromName( 'UTDoesNotExist', User::READ_LATEST ) );
-               $this->setMwGlobals( array(
-                       'wgReadOnly' => false,
-               ) );
-               $session->clear();
-               $this->assertSame( array(
-                       array( LogLevel::DEBUG, 'denied by wfReadOnly()' ),
-               ), $logger->getBuffer() );
-               $logger->clearBuffer();
-
-               // Test prevention by a previous session
-               $session->set( 'MWSession::AutoCreateBlacklist', 'test' );
-               $user = User::newFromName( 'UTDoesNotExist' );
-               $this->assertFalse( $manager->autoCreateUser( $user ) );
-               $this->assertSame( 0, $user->getId() );
-               $this->assertNotSame( 'UTDoesNotExist', $user->getName() );
-               $this->assertEquals( 0, User::idFromName( 'UTDoesNotExist', User::READ_LATEST ) );
-               $session->clear();
-               $this->assertSame( array(
-                       array( LogLevel::DEBUG, 'blacklisted in session (test)' ),
-               ), $logger->getBuffer() );
-               $logger->clearBuffer();
-
-               // Test uncreatable name
-               $user = User::newFromName( 'UTDoesNotExist@' );
-               $this->assertFalse( $manager->autoCreateUser( $user ) );
-               $this->assertSame( 0, $user->getId() );
-               $this->assertNotSame( 'UTDoesNotExist@', $user->getName() );
-               $this->assertEquals( 0, User::idFromName( 'UTDoesNotExist', User::READ_LATEST ) );
-               $session->clear();
-               $this->assertSame( array(
-                       array( LogLevel::DEBUG, 'Invalid username, blacklisting' ),
-               ), $logger->getBuffer() );
-               $logger->clearBuffer();
-
-               // Test AbortAutoAccount hook
-               $mock = $this->getMock( __CLASS__, array( 'onAbortAutoAccount' ) );
-               $mock->expects( $this->once() )->method( 'onAbortAutoAccount' )
-                       ->will( $this->returnCallback( function ( User $user, &$msg ) {
-                               $msg = 'No way!';
-                               return false;
-                       } ) );
-               $this->mergeMwGlobalArrayValue( 'wgHooks', array( 'AbortAutoAccount' => array( $mock ) ) );
-               $user = User::newFromName( 'UTDoesNotExist' );
-               $this->assertFalse( $manager->autoCreateUser( $user ) );
-               $this->assertSame( 0, $user->getId() );
-               $this->assertNotSame( 'UTDoesNotExist', $user->getName() );
-               $this->assertEquals( 0, User::idFromName( 'UTDoesNotExist', User::READ_LATEST ) );
-               $this->mergeMwGlobalArrayValue( 'wgHooks', array( 'AbortAutoAccount' => array() ) );
-               $session->clear();
-               $this->assertSame( array(
-                       array( LogLevel::DEBUG, 'denied by hook: No way!' ),
-               ), $logger->getBuffer() );
-               $logger->clearBuffer();
-
-               // Test AbortAutoAccount hook screwing up the name
-               $mock = $this->getMock( 'stdClass', array( 'onAbortAutoAccount' ) );
-               $mock->expects( $this->once() )->method( 'onAbortAutoAccount' )
-                       ->will( $this->returnCallback( function ( User $user ) {
-                               $user->setName( 'UTDoesNotExistEither' );
-                       } ) );
-               $this->mergeMwGlobalArrayValue( 'wgHooks', array( 'AbortAutoAccount' => array( $mock ) ) );
-               try {
-                       $user = User::newFromName( 'UTDoesNotExist' );
-                       $manager->autoCreateUser( $user );
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \UnexpectedValueException $ex ) {
-                       $this->assertSame(
-                               'AbortAutoAccount hook tried to change the user name',
-                               $ex->getMessage()
-                       );
-               }
-               $this->assertSame( 0, $user->getId() );
-               $this->assertNotSame( 'UTDoesNotExist', $user->getName() );
-               $this->assertNotSame( 'UTDoesNotExistEither', $user->getName() );
-               $this->assertEquals( 0, User::idFromName( 'UTDoesNotExist', User::READ_LATEST ) );
-               $this->assertEquals( 0, User::idFromName( 'UTDoesNotExistEither', User::READ_LATEST ) );
-               $this->mergeMwGlobalArrayValue( 'wgHooks', array( 'AbortAutoAccount' => array() ) );
-               $session->clear();
-               $this->assertSame( array(), $logger->getBuffer() );
-               $logger->clearBuffer();
-
-               // Test for "exception backoff"
-               $user = User::newFromName( 'UTDoesNotExist' );
-               $cache = \ObjectCache::getLocalClusterInstance();
-               $backoffKey = wfMemcKey( 'MWSession', 'autocreate-failed', md5( $user->getName() ) );
-               $cache->set( $backoffKey, 1, 60 * 10 );
-               $this->assertFalse( $manager->autoCreateUser( $user ) );
-               $this->assertSame( 0, $user->getId() );
-               $this->assertNotSame( 'UTDoesNotExist', $user->getName() );
-               $this->assertEquals( 0, User::idFromName( 'UTDoesNotExist', User::READ_LATEST ) );
-               $cache->delete( $backoffKey );
-               $session->clear();
-               $this->assertSame( array(
-                       array( LogLevel::DEBUG, 'denied by prior creation attempt failures' ),
-               ), $logger->getBuffer() );
-               $logger->clearBuffer();
-
-               // Sanity check that creation still works, and test completion hook
-               $cb = $this->callback( function ( User $user ) use ( $that ) {
-                       $that->assertNotEquals( 0, $user->getId() );
-                       $that->assertSame( 'UTSessionAutoCreate4', $user->getName() );
-                       $that->assertEquals(
-                               $user->getId(), User::idFromName( 'UTSessionAutoCreate4', User::READ_LATEST )
-                       );
-                       return true;
-               } );
-               $mock = $this->getMock( 'stdClass',
-                       array( 'onAuthPluginAutoCreate', 'onLocalUserCreated' ) );
-               $mock->expects( $this->once() )->method( 'onAuthPluginAutoCreate' )
-                       ->with( $cb );
-               $mock->expects( $this->once() )->method( 'onLocalUserCreated' )
-                       ->with( $cb, $this->identicalTo( true ) );
-               $this->mergeMwGlobalArrayValue( 'wgHooks', array(
-                       'AuthPluginAutoCreate' => array( $mock ),
-                       'LocalUserCreated' => array( $mock ),
-               ) );
-               $user = User::newFromName( 'UTSessionAutoCreate4' );
-               $this->assertSame( 0, $user->getId(), 'sanity check' );
-               $this->assertTrue( $manager->autoCreateUser( $user ) );
-               $this->assertNotEquals( 0, $user->getId() );
-               $this->assertSame( 'UTSessionAutoCreate4', $user->getName() );
-               $this->assertEquals(
-                       $user->getId(),
-                       User::idFromName( 'UTSessionAutoCreate4', User::READ_LATEST )
-               );
-               $this->mergeMwGlobalArrayValue( 'wgHooks', array(
-                       'AuthPluginAutoCreate' => array(),
-                       'LocalUserCreated' => array(),
-               ) );
-               $this->assertSame( array(
-                       array( LogLevel::INFO, 'creating new user (UTSessionAutoCreate4) - from: XXX' ),
-               ), $logger->getBuffer() );
-               $logger->clearBuffer();
-       }
-
-       public function onAbortAutoAccount( User $user, &$msg ) {
-       }
-
-       public function testPreventSessionsForUser() {
-               $manager = $this->getManager();
-
-               $providerBuilder = $this->getMockBuilder( 'DummySessionProvider' )
-                       ->setMethods( array( 'preventSessionsForUser', '__toString' ) );
-
-               $provider1 = $providerBuilder->getMock();
-               $provider1->expects( $this->once() )->method( 'preventSessionsForUser' )
-                       ->with( $this->equalTo( 'UTSysop' ) );
-               $provider1->expects( $this->any() )->method( '__toString' )
-                       ->will( $this->returnValue( 'MockProvider1' ) );
-
-               $this->config->set( 'SessionProviders', array(
-                       $this->objectCacheDef( $provider1 ),
-               ) );
-
-               $user = User::newFromName( 'UTSysop' );
-               $token = $user->getToken( true );
-
-               $this->assertFalse( $manager->isUserSessionPrevented( 'UTSysop' ) );
-               $manager->preventSessionsForUser( 'UTSysop' );
-               $this->assertNotEquals( $token, User::newFromName( 'UTSysop' )->getToken() );
-               $this->assertTrue( $manager->isUserSessionPrevented( 'UTSysop' ) );
-       }
-
-       public function testLoadSessionInfoFromStore() {
-               $manager = $this->getManager();
-               $logger = new \TestLogger( true, function ( $m ) {
-                       return preg_replace(
-                               '/^Session \[\d+\]\w+<(?:null|anon|[+-]:\d+:\w+)>\w+: /', 'Session X: ', $m
-                       );
-               } );
-               $manager->setLogger( $logger );
-               $request = new \FauxRequest();
-
-               // TestingAccessWrapper can't handle methods with reference arguments, sigh.
-               $rClass = new \ReflectionClass( $manager );
-               $rMethod = $rClass->getMethod( 'loadSessionInfoFromStore' );
-               $rMethod->setAccessible( true );
-               $loadSessionInfoFromStore = function ( &$info ) use ( $rMethod, $manager, $request ) {
-                       return $rMethod->invokeArgs( $manager, array( &$info, $request ) );
-               };
-
-               $userInfo = UserInfo::newFromName( 'UTSysop', true );
-               $unverifiedUserInfo = UserInfo::newFromName( 'UTSysop', false );
-
-               $id = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
-               $metadata = array(
-                       'userId' => $userInfo->getId(),
-                       'userName' => $userInfo->getName(),
-                       'userToken' => $userInfo->getToken( true ),
-                       'provider' => 'Mock',
-               );
-
-               $builder = $this->getMockBuilder( 'MediaWiki\\Session\\SessionProvider' )
-                       ->setMethods( array( '__toString', 'mergeMetadata', 'refreshSessionInfo' ) );
-
-               $provider = $builder->getMockForAbstractClass();
-               $provider->setManager( $manager );
-               $provider->expects( $this->any() )->method( 'persistsSessionId' )
-                       ->will( $this->returnValue( true ) );
-               $provider->expects( $this->any() )->method( 'canChangeUser' )
-                       ->will( $this->returnValue( true ) );
-               $provider->expects( $this->any() )->method( 'refreshSessionInfo' )
-                       ->will( $this->returnValue( true ) );
-               $provider->expects( $this->any() )->method( '__toString' )
-                       ->will( $this->returnValue( 'Mock' ) );
-               $provider->expects( $this->any() )->method( 'mergeMetadata' )
-                       ->will( $this->returnCallback( function ( $a, $b ) {
-                               if ( $b === array( 'Throw' ) ) {
-                                       throw new \UnexpectedValueException( 'no merge!' );
-                               }
-                               return array( 'Merged' );
-                       } ) );
-
-               $provider2 = $builder->getMockForAbstractClass();
-               $provider2->setManager( $manager );
-               $provider2->expects( $this->any() )->method( 'persistsSessionId' )
-                       ->will( $this->returnValue( false ) );
-               $provider2->expects( $this->any() )->method( 'canChangeUser' )
-                       ->will( $this->returnValue( false ) );
-               $provider2->expects( $this->any() )->method( '__toString' )
-                       ->will( $this->returnValue( 'Mock2' ) );
-               $provider2->expects( $this->any() )->method( 'refreshSessionInfo' )
-                       ->will( $this->returnCallback( function ( $info, $request, &$metadata ) {
-                               $metadata['changed'] = true;
-                               return true;
-                       } ) );
-
-               $provider3 = $builder->getMockForAbstractClass();
-               $provider3->setManager( $manager );
-               $provider3->expects( $this->any() )->method( 'persistsSessionId' )
-                       ->will( $this->returnValue( true ) );
-               $provider3->expects( $this->any() )->method( 'canChangeUser' )
-                       ->will( $this->returnValue( true ) );
-               $provider3->expects( $this->once() )->method( 'refreshSessionInfo' )
-                       ->will( $this->returnValue( false ) );
-               $provider3->expects( $this->any() )->method( '__toString' )
-                       ->will( $this->returnValue( 'Mock3' ) );
-
-               \TestingAccessWrapper::newFromObject( $manager )->sessionProviders = array(
-                       (string)$provider => $provider,
-                       (string)$provider2 => $provider2,
-                       (string)$provider3 => $provider3,
-               );
-
-               // No metadata, basic usage
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider,
-                       'id' => $id,
-                       'userInfo' => $userInfo
-               ) );
-               $this->assertFalse( $info->isIdSafe(), 'sanity check' );
-               $this->assertTrue( $loadSessionInfoFromStore( $info ) );
-               $this->assertFalse( $info->isIdSafe() );
-               $this->assertSame( array(), $logger->getBuffer() );
-
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider,
-                       'userInfo' => $userInfo
-               ) );
-               $this->assertTrue( $info->isIdSafe(), 'sanity check' );
-               $this->assertTrue( $loadSessionInfoFromStore( $info ) );
-               $this->assertTrue( $info->isIdSafe() );
-               $this->assertSame( array(), $logger->getBuffer() );
-
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider2,
-                       'id' => $id,
-                       'userInfo' => $userInfo
-               ) );
-               $this->assertFalse( $info->isIdSafe(), 'sanity check' );
-               $this->assertTrue( $loadSessionInfoFromStore( $info ) );
-               $this->assertTrue( $info->isIdSafe() );
-               $this->assertSame( array(), $logger->getBuffer() );
-
-               // Unverified user, no metadata
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider,
-                       'id' => $id,
-                       'userInfo' => $unverifiedUserInfo
-               ) );
-               $this->assertSame( $unverifiedUserInfo, $info->getUserInfo() );
-               $this->assertFalse( $loadSessionInfoFromStore( $info ) );
-               $this->assertSame( array(
-                       array( LogLevel::WARNING, 'Session X: Unverified user provided and no metadata to auth it' )
-               ), $logger->getBuffer() );
-               $logger->clearBuffer();
-
-               // No metadata, missing data
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'id' => $id,
-                       'userInfo' => $userInfo
-               ) );
-               $this->assertFalse( $loadSessionInfoFromStore( $info ) );
-               $this->assertSame( array(
-                       array( LogLevel::WARNING, 'Session X: Null provider and no metadata' ),
-               ), $logger->getBuffer() );
-               $logger->clearBuffer();
-
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider,
-                       'id' => $id,
-               ) );
-               $this->assertFalse( $info->isIdSafe(), 'sanity check' );
-               $this->assertTrue( $loadSessionInfoFromStore( $info ) );
-               $this->assertInstanceOf( 'MediaWiki\\Session\\UserInfo', $info->getUserInfo() );
-               $this->assertTrue( $info->getUserInfo()->isVerified() );
-               $this->assertTrue( $info->getUserInfo()->isAnon() );
-               $this->assertFalse( $info->isIdSafe() );
-               $this->assertSame( array(), $logger->getBuffer() );
-
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider2,
-                       'id' => $id,
-               ) );
-               $this->assertFalse( $info->isIdSafe(), 'sanity check' );
-               $this->assertFalse( $loadSessionInfoFromStore( $info ) );
-               $this->assertSame( array(
-                       array( LogLevel::INFO, 'Session X: No user provided and provider cannot set user' )
-               ), $logger->getBuffer() );
-               $logger->clearBuffer();
-
-               // Incomplete/bad metadata
-               $this->store->setRawSession( $id, true );
-               $this->assertFalse( $loadSessionInfoFromStore( $info ) );
-               $this->assertSame( array(
-                       array( LogLevel::WARNING, 'Session X: Bad data' ),
-               ), $logger->getBuffer() );
-               $logger->clearBuffer();
-
-               $this->store->setRawSession( $id, array( 'data' => array() ) );
-               $this->assertFalse( $loadSessionInfoFromStore( $info ) );
-               $this->assertSame( array(
-                       array( LogLevel::WARNING, 'Session X: Bad data structure' ),
-               ), $logger->getBuffer() );
-               $logger->clearBuffer();
-
-               $this->store->deleteSession( $id );
-               $this->store->setRawSession( $id, array( 'metadata' => $metadata ) );
-               $this->assertFalse( $loadSessionInfoFromStore( $info ) );
-               $this->assertSame( array(
-                       array( LogLevel::WARNING, 'Session X: Bad data structure' ),
-               ), $logger->getBuffer() );
-               $logger->clearBuffer();
-
-               $this->store->setRawSession( $id, array( 'metadata' => $metadata, 'data' => true ) );
-               $this->assertFalse( $loadSessionInfoFromStore( $info ) );
-               $this->assertSame( array(
-                       array( LogLevel::WARNING, 'Session X: Bad data structure' ),
-               ), $logger->getBuffer() );
-               $logger->clearBuffer();
-
-               $this->store->setRawSession( $id, array( 'metadata' => true, 'data' => array() ) );
-               $this->assertFalse( $loadSessionInfoFromStore( $info ) );
-               $this->assertSame( array(
-                       array( LogLevel::WARNING, 'Session X: Bad data structure' ),
-               ), $logger->getBuffer() );
-               $logger->clearBuffer();
-
-               foreach ( $metadata as $key => $dummy ) {
-                       $tmp = $metadata;
-                       unset( $tmp[$key] );
-                       $this->store->setRawSession( $id, array( 'metadata' => $tmp, 'data' => array() ) );
-                       $this->assertFalse( $loadSessionInfoFromStore( $info ) );
-                       $this->assertSame( array(
-                               array( LogLevel::WARNING, 'Session X: Bad metadata' ),
-                       ), $logger->getBuffer() );
-                       $logger->clearBuffer();
-               }
-
-               // Basic usage with metadata
-               $this->store->setRawSession( $id, array( 'metadata' => $metadata, 'data' => array() ) );
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider,
-                       'id' => $id,
-                       'userInfo' => $userInfo
-               ) );
-               $this->assertFalse( $info->isIdSafe(), 'sanity check' );
-               $this->assertTrue( $loadSessionInfoFromStore( $info ) );
-               $this->assertTrue( $info->isIdSafe() );
-               $this->assertSame( array(), $logger->getBuffer() );
-
-               // Mismatched provider
-               $this->store->setSessionMeta( $id, array( 'provider' => 'Bad' ) + $metadata );
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider,
-                       'id' => $id,
-                       'userInfo' => $userInfo
-               ) );
-               $this->assertFalse( $loadSessionInfoFromStore( $info ) );
-               $this->assertSame( array(
-                       array( LogLevel::WARNING, 'Session X: Wrong provider, Bad !== Mock' ),
-               ), $logger->getBuffer() );
-               $logger->clearBuffer();
-
-               // Unknown provider
-               $this->store->setSessionMeta( $id, array( 'provider' => 'Bad' ) + $metadata );
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'id' => $id,
-                       'userInfo' => $userInfo
-               ) );
-               $this->assertFalse( $loadSessionInfoFromStore( $info ) );
-               $this->assertSame( array(
-                       array( LogLevel::WARNING, 'Session X: Unknown provider, Bad' ),
-               ), $logger->getBuffer() );
-               $logger->clearBuffer();
-
-               // Fill in provider
-               $this->store->setSessionMeta( $id, $metadata );
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'id' => $id,
-                       'userInfo' => $userInfo
-               ) );
-               $this->assertFalse( $info->isIdSafe(), 'sanity check' );
-               $this->assertTrue( $loadSessionInfoFromStore( $info ) );
-               $this->assertTrue( $info->isIdSafe() );
-               $this->assertSame( array(), $logger->getBuffer() );
-
-               // Bad user metadata
-               $this->store->setSessionMeta( $id, array( 'userId' => -1, 'userToken' => null ) + $metadata );
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider,
-                       'id' => $id,
-               ) );
-               $this->assertFalse( $loadSessionInfoFromStore( $info ) );
-               $this->assertSame( array(
-                       array( LogLevel::ERROR, 'Session X: Invalid ID' ),
-               ), $logger->getBuffer() );
-               $logger->clearBuffer();
-
-               $this->store->setSessionMeta(
-                       $id, array( 'userId' => 0, 'userName' => '<X>', 'userToken' => null ) + $metadata
-               );
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider,
-                       'id' => $id,
-               ) );
-               $this->assertFalse( $loadSessionInfoFromStore( $info ) );
-               $this->assertSame( array(
-                       array( LogLevel::ERROR, 'Session X: Invalid user name' ),
-               ), $logger->getBuffer() );
-               $logger->clearBuffer();
-
-               // Mismatched user by ID
-               $this->store->setSessionMeta(
-                       $id, array( 'userId' => $userInfo->getId() + 1, 'userToken' => null ) + $metadata
-               );
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider,
-                       'id' => $id,
-                       'userInfo' => $userInfo
-               ) );
-               $this->assertFalse( $loadSessionInfoFromStore( $info ) );
-               $this->assertSame( array(
-                       array( LogLevel::WARNING, 'Session X: User ID mismatch, 2 !== 1' ),
-               ), $logger->getBuffer() );
-               $logger->clearBuffer();
-
-               // Mismatched user by name
-               $this->store->setSessionMeta(
-                       $id, array( 'userId' => 0, 'userName' => 'X', 'userToken' => null ) + $metadata
-               );
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider,
-                       'id' => $id,
-                       'userInfo' => $userInfo
-               ) );
-               $this->assertFalse( $loadSessionInfoFromStore( $info ) );
-               $this->assertSame( array(
-                       array( LogLevel::WARNING, 'Session X: User name mismatch, X !== UTSysop' ),
-               ), $logger->getBuffer() );
-               $logger->clearBuffer();
-
-               // ID matches, name doesn't
-               $this->store->setSessionMeta(
-                       $id, array( 'userId' => $userInfo->getId(), 'userName' => 'X', 'userToken' => null ) + $metadata
-               );
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider,
-                       'id' => $id,
-                       'userInfo' => $userInfo
-               ) );
-               $this->assertFalse( $loadSessionInfoFromStore( $info ) );
-               $this->assertSame( array(
-                       array(
-                               LogLevel::WARNING, 'Session X: User ID matched but name didn\'t (rename?), X !== UTSysop'
-                       ),
-               ), $logger->getBuffer() );
-               $logger->clearBuffer();
-
-               // Mismatched anon user
-               $this->store->setSessionMeta(
-                       $id, array( 'userId' => 0, 'userName' => null, 'userToken' => null ) + $metadata
-               );
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider,
-                       'id' => $id,
-                       'userInfo' => $userInfo
-               ) );
-               $this->assertFalse( $loadSessionInfoFromStore( $info ) );
-               $this->assertSame( array(
-                       array(
-                               LogLevel::WARNING, 'Session X: Metadata has an anonymous user, but a non-anon user was provided'
-                       ),
-               ), $logger->getBuffer() );
-               $logger->clearBuffer();
-
-               // Lookup user by ID
-               $this->store->setSessionMeta( $id, array( 'userToken' => null ) + $metadata );
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider,
-                       'id' => $id,
-               ) );
-               $this->assertFalse( $info->isIdSafe(), 'sanity check' );
-               $this->assertTrue( $loadSessionInfoFromStore( $info ) );
-               $this->assertSame( $userInfo->getId(), $info->getUserInfo()->getId() );
-               $this->assertTrue( $info->isIdSafe() );
-               $this->assertSame( array(), $logger->getBuffer() );
-
-               // Lookup user by name
-               $this->store->setSessionMeta(
-                       $id, array( 'userId' => 0, 'userName' => 'UTSysop', 'userToken' => null ) + $metadata
-               );
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider,
-                       'id' => $id,
-               ) );
-               $this->assertFalse( $info->isIdSafe(), 'sanity check' );
-               $this->assertTrue( $loadSessionInfoFromStore( $info ) );
-               $this->assertSame( $userInfo->getId(), $info->getUserInfo()->getId() );
-               $this->assertTrue( $info->isIdSafe() );
-               $this->assertSame( array(), $logger->getBuffer() );
-
-               // Lookup anonymous user
-               $this->store->setSessionMeta(
-                       $id, array( 'userId' => 0, 'userName' => null, 'userToken' => null ) + $metadata
-               );
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider,
-                       'id' => $id,
-               ) );
-               $this->assertFalse( $info->isIdSafe(), 'sanity check' );
-               $this->assertTrue( $loadSessionInfoFromStore( $info ) );
-               $this->assertTrue( $info->getUserInfo()->isAnon() );
-               $this->assertTrue( $info->isIdSafe() );
-               $this->assertSame( array(), $logger->getBuffer() );
-
-               // Unverified user with metadata
-               $this->store->setSessionMeta( $id, $metadata );
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider,
-                       'id' => $id,
-                       'userInfo' => $unverifiedUserInfo
-               ) );
-               $this->assertFalse( $info->isIdSafe(), 'sanity check' );
-               $this->assertTrue( $loadSessionInfoFromStore( $info ) );
-               $this->assertTrue( $info->getUserInfo()->isVerified() );
-               $this->assertSame( $unverifiedUserInfo->getId(), $info->getUserInfo()->getId() );
-               $this->assertSame( $unverifiedUserInfo->getName(), $info->getUserInfo()->getName() );
-               $this->assertTrue( $info->isIdSafe() );
-               $this->assertSame( array(), $logger->getBuffer() );
-
-               // Unverified user with metadata
-               $this->store->setSessionMeta( $id, $metadata );
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider,
-                       'id' => $id,
-                       'userInfo' => $unverifiedUserInfo
-               ) );
-               $this->assertFalse( $info->isIdSafe(), 'sanity check' );
-               $this->assertTrue( $loadSessionInfoFromStore( $info ) );
-               $this->assertTrue( $info->getUserInfo()->isVerified() );
-               $this->assertSame( $unverifiedUserInfo->getId(), $info->getUserInfo()->getId() );
-               $this->assertSame( $unverifiedUserInfo->getName(), $info->getUserInfo()->getName() );
-               $this->assertTrue( $info->isIdSafe() );
-               $this->assertSame( array(), $logger->getBuffer() );
-
-               // Wrong token
-               $this->store->setSessionMeta( $id, array( 'userToken' => 'Bad' ) + $metadata );
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider,
-                       'id' => $id,
-                       'userInfo' => $userInfo
-               ) );
-               $this->assertFalse( $loadSessionInfoFromStore( $info ) );
-               $this->assertSame( array(
-                       array( LogLevel::WARNING, 'Session X: User token mismatch' ),
-               ), $logger->getBuffer() );
-               $logger->clearBuffer();
-
-               // Provider metadata
-               $this->store->setSessionMeta( $id, array( 'provider' => 'Mock2' ) + $metadata );
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider2,
-                       'id' => $id,
-                       'userInfo' => $userInfo,
-                       'metadata' => array( 'Info' ),
-               ) );
-               $this->assertTrue( $loadSessionInfoFromStore( $info ) );
-               $this->assertSame( array( 'Info', 'changed' => true ), $info->getProviderMetadata() );
-               $this->assertSame( array(), $logger->getBuffer() );
-
-               $this->store->setSessionMeta( $id, array( 'providerMetadata' => array( 'Saved' ) ) + $metadata );
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider,
-                       'id' => $id,
-                       'userInfo' => $userInfo,
-               ) );
-               $this->assertTrue( $loadSessionInfoFromStore( $info ) );
-               $this->assertSame( array( 'Saved' ), $info->getProviderMetadata() );
-               $this->assertSame( array(), $logger->getBuffer() );
-
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider,
-                       'id' => $id,
-                       'userInfo' => $userInfo,
-                       'metadata' => array( 'Info' ),
-               ) );
-               $this->assertTrue( $loadSessionInfoFromStore( $info ) );
-               $this->assertSame( array( 'Merged' ), $info->getProviderMetadata() );
-               $this->assertSame( array(), $logger->getBuffer() );
-
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider,
-                       'id' => $id,
-                       'userInfo' => $userInfo,
-                       'metadata' => array( 'Throw' ),
-               ) );
-               $this->assertFalse( $loadSessionInfoFromStore( $info ) );
-               $this->assertSame( array(
-                       array( LogLevel::WARNING, 'Session X: Metadata merge failed: no merge!' ),
-               ), $logger->getBuffer() );
-               $logger->clearBuffer();
-
-               // Remember from session
-               $this->store->setSessionMeta( $id, $metadata );
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider,
-                       'id' => $id,
-               ) );
-               $this->assertTrue( $loadSessionInfoFromStore( $info ) );
-               $this->assertFalse( $info->wasRemembered() );
-               $this->assertSame( array(), $logger->getBuffer() );
-
-               $this->store->setSessionMeta( $id, array( 'remember' => true ) + $metadata );
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider,
-                       'id' => $id,
-               ) );
-               $this->assertTrue( $loadSessionInfoFromStore( $info ) );
-               $this->assertTrue( $info->wasRemembered() );
-               $this->assertSame( array(), $logger->getBuffer() );
-
-               $this->store->setSessionMeta( $id, array( 'remember' => false ) + $metadata );
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider,
-                       'id' => $id,
-                       'userInfo' => $userInfo
-               ) );
-               $this->assertTrue( $loadSessionInfoFromStore( $info ) );
-               $this->assertTrue( $info->wasRemembered() );
-               $this->assertSame( array(), $logger->getBuffer() );
-
-               // forceHTTPS from session
-               $this->store->setSessionMeta( $id, $metadata );
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider,
-                       'id' => $id,
-                       'userInfo' => $userInfo
-               ) );
-               $this->assertTrue( $loadSessionInfoFromStore( $info ) );
-               $this->assertFalse( $info->forceHTTPS() );
-               $this->assertSame( array(), $logger->getBuffer() );
-
-               $this->store->setSessionMeta( $id, array( 'forceHTTPS' => true ) + $metadata );
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider,
-                       'id' => $id,
-                       'userInfo' => $userInfo
-               ) );
-               $this->assertTrue( $loadSessionInfoFromStore( $info ) );
-               $this->assertTrue( $info->forceHTTPS() );
-               $this->assertSame( array(), $logger->getBuffer() );
-
-               $this->store->setSessionMeta( $id, array( 'forceHTTPS' => false ) + $metadata );
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider,
-                       'id' => $id,
-                       'userInfo' => $userInfo,
-                       'forceHTTPS' => true
-               ) );
-               $this->assertTrue( $loadSessionInfoFromStore( $info ) );
-               $this->assertTrue( $info->forceHTTPS() );
-               $this->assertSame( array(), $logger->getBuffer() );
-
-               // Provider refreshSessionInfo() returning false
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider3,
-               ) );
-               $this->assertFalse( $loadSessionInfoFromStore( $info ) );
-               $this->assertSame( array(), $logger->getBuffer() );
-
-               // Hook
-               $that = $this;
-               $called = false;
-               $data = array( 'foo' => 1 );
-               $this->store->setSession( $id, array( 'metadata' => $metadata, 'data' => $data ) );
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $provider,
-                       'id' => $id,
-                       'userInfo' => $userInfo
-               ) );
-               $this->mergeMwGlobalArrayValue( 'wgHooks', array(
-                       'SessionCheckInfo' => array( function ( &$reason, $i, $r, $m, $d ) use (
-                               $that, $info, $metadata, $data, $request, &$called
-                       ) {
-                               $that->assertSame( $info->getId(), $i->getId() );
-                               $that->assertSame( $info->getProvider(), $i->getProvider() );
-                               $that->assertSame( $info->getUserInfo(), $i->getUserInfo() );
-                               $that->assertSame( $request, $r );
-                               $that->assertEquals( $metadata, $m );
-                               $that->assertEquals( $data, $d );
-                               $called = true;
-                               return false;
-                       } )
-               ) );
-               $this->assertFalse( $loadSessionInfoFromStore( $info ) );
-               $this->assertTrue( $called );
-               $this->assertSame( array(
-                       array( LogLevel::WARNING, 'Session X: Hook aborted' ),
-               ), $logger->getBuffer() );
-               $logger->clearBuffer();
-       }
-
-}
diff --git a/tests/phpunit/includes/session/SessionProviderTest.php b/tests/phpunit/includes/session/SessionProviderTest.php
deleted file mode 100644 (file)
index d7aebcd..0000000
+++ /dev/null
@@ -1,195 +0,0 @@
-<?php
-
-namespace MediaWiki\Session;
-
-use MediaWikiTestCase;
-
-/**
- * @group Session
- * @group Database
- * @covers MediaWiki\Session\SessionProvider
- */
-class SessionProviderTest extends MediaWikiTestCase {
-
-       public function testBasics() {
-               $manager = new SessionManager();
-               $logger = new \TestLogger();
-               $config = new \HashConfig();
-
-               $provider = $this->getMockForAbstractClass( 'MediaWiki\\Session\\SessionProvider' );
-               $priv = \TestingAccessWrapper::newFromObject( $provider );
-
-               $provider->setConfig( $config );
-               $this->assertSame( $config, $priv->config );
-               $provider->setLogger( $logger );
-               $this->assertSame( $logger, $priv->logger );
-               $provider->setManager( $manager );
-               $this->assertSame( $manager, $priv->manager );
-               $this->assertSame( $manager, $provider->getManager() );
-
-               $this->assertSame( array(), $provider->getVaryHeaders() );
-               $this->assertSame( array(), $provider->getVaryCookies() );
-               $this->assertSame( null, $provider->suggestLoginUsername( new \FauxRequest ) );
-
-               $this->assertSame( get_class( $provider ), (string)$provider );
-
-               $this->assertNull( $provider->whyNoSession() );
-
-               $info = new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'id' => 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
-                       'provider' => $provider,
-               ) );
-               $metadata = array( 'foo' );
-               $this->assertTrue( $provider->refreshSessionInfo( $info, new \FauxRequest, $metadata ) );
-               $this->assertSame( array( 'foo' ), $metadata );
-       }
-
-       /**
-        * @dataProvider provideNewSessionInfo
-        * @param bool $persistId Return value for ->persistsSessionId()
-        * @param bool $persistUser Return value for ->persistsSessionUser()
-        * @param bool $ok Whether a SessionInfo is provided
-        */
-       public function testNewSessionInfo( $persistId, $persistUser, $ok ) {
-               $manager = new SessionManager();
-
-               $provider = $this->getMockBuilder( 'MediaWiki\\Session\\SessionProvider' )
-                       ->setMethods( array( 'canChangeUser', 'persistsSessionId' ) )
-                       ->getMockForAbstractClass();
-               $provider->expects( $this->any() )->method( 'persistsSessionId' )
-                       ->will( $this->returnValue( $persistId ) );
-               $provider->expects( $this->any() )->method( 'canChangeUser' )
-                       ->will( $this->returnValue( $persistUser ) );
-               $provider->setManager( $manager );
-
-               if ( $ok ) {
-                       $info = $provider->newSessionInfo();
-                       $this->assertNotNull( $info );
-                       $this->assertFalse( $info->wasPersisted() );
-                       $this->assertTrue( $info->isIdSafe() );
-
-                       $id = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
-                       $info = $provider->newSessionInfo( $id );
-                       $this->assertNotNull( $info );
-                       $this->assertSame( $id, $info->getId() );
-                       $this->assertFalse( $info->wasPersisted() );
-                       $this->assertTrue( $info->isIdSafe() );
-               } else {
-                       $this->assertNull( $provider->newSessionInfo() );
-               }
-       }
-
-       public function testMergeMetadata() {
-               $provider = $this->getMockBuilder( 'MediaWiki\\Session\\SessionProvider' )
-                       ->getMockForAbstractClass();
-
-               try {
-                       $provider->mergeMetadata(
-                               array( 'foo' => 1, 'baz' => 3 ),
-                               array( 'bar' => 2, 'baz' => '3' )
-                       );
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \UnexpectedValueException $ex ) {
-                       $this->assertSame( 'Key "baz" changed', $ex->getMessage() );
-               }
-
-               $res = $provider->mergeMetadata(
-                       array( 'foo' => 1, 'baz' => 3 ),
-                       array( 'bar' => 2, 'baz' => 3 )
-               );
-               $this->assertSame( array( 'bar' => 2, 'baz' => 3 ), $res );
-       }
-
-       public static function provideNewSessionInfo() {
-               return array(
-                       array( false, false, false ),
-                       array( true, false, false ),
-                       array( false, true, false ),
-                       array( true, true, true ),
-               );
-       }
-
-       public function testImmutableSessions() {
-               $provider = $this->getMockBuilder( 'MediaWiki\\Session\\SessionProvider' )
-                       ->setMethods( array( 'canChangeUser', 'persistsSessionId' ) )
-                       ->getMockForAbstractClass();
-               $provider->expects( $this->any() )->method( 'canChangeUser' )
-                       ->will( $this->returnValue( true ) );
-               $provider->preventSessionsForUser( 'Foo' );
-
-               $provider = $this->getMockBuilder( 'MediaWiki\\Session\\SessionProvider' )
-                       ->setMethods( array( 'canChangeUser', 'persistsSessionId' ) )
-                       ->getMockForAbstractClass();
-               $provider->expects( $this->any() )->method( 'canChangeUser' )
-                       ->will( $this->returnValue( false ) );
-               try {
-                       $provider->preventSessionsForUser( 'Foo' );
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \BadMethodCallException $ex ) {
-               }
-
-       }
-
-       public function testHashToSessionId() {
-               $config = new \HashConfig( array(
-                       'SecretKey' => 'Shhh!',
-               ) );
-
-               $provider = $this->getMockForAbstractClass( 'MediaWiki\\Session\\SessionProvider',
-                       array(), 'MockSessionProvider' );
-               $provider->setConfig( $config );
-               $priv = \TestingAccessWrapper::newFromObject( $provider );
-
-               $this->assertSame( 'eoq8cb1mg7j30ui5qolafps4hg29k5bb', $priv->hashToSessionId( 'foobar' ) );
-               $this->assertSame( '4do8j7tfld1g8tte9jqp3csfgmulaun9',
-                       $priv->hashToSessionId( 'foobar', 'secret' ) );
-
-               try {
-                       $priv->hashToSessionId( array() );
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \InvalidArgumentException $ex ) {
-                       $this->assertSame(
-                               '$data must be a string, array was passed',
-                               $ex->getMessage()
-                       );
-               }
-               try {
-                       $priv->hashToSessionId( '', false );
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \InvalidArgumentException $ex ) {
-                       $this->assertSame(
-                               '$key must be a string or null, boolean was passed',
-                               $ex->getMessage()
-                       );
-               }
-       }
-
-       public function testDescribe() {
-               $provider = $this->getMockForAbstractClass( 'MediaWiki\\Session\\SessionProvider',
-                       array(), 'MockSessionProvider' );
-
-               $this->assertSame(
-                       'MockSessionProvider sessions',
-                       $provider->describe( \Language::factory( 'en' ) )
-               );
-       }
-
-       public function testGetAllowedUserRights() {
-               $provider = $this->getMockForAbstractClass( 'MediaWiki\\Session\\SessionProvider' );
-               $backend = TestUtils::getDummySessionBackend();
-
-               try {
-                       $provider->getAllowedUserRights( $backend );
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \InvalidArgumentException $ex ) {
-                       $this->assertSame(
-                               'Backend\'s provider isn\'t $this',
-                               $ex->getMessage()
-                       );
-               }
-
-               \TestingAccessWrapper::newFromObject( $backend )->provider = $provider;
-               $this->assertNull( $provider->getAllowedUserRights( $backend ) );
-       }
-
-}
diff --git a/tests/phpunit/includes/session/SessionTest.php b/tests/phpunit/includes/session/SessionTest.php
deleted file mode 100644 (file)
index efc92f7..0000000
+++ /dev/null
@@ -1,202 +0,0 @@
-<?php
-
-namespace MediaWiki\Session;
-
-use MediaWikiTestCase;
-use User;
-
-/**
- * @group Session
- * @covers MediaWiki\Session\Session
- */
-class SessionTest extends MediaWikiTestCase {
-
-       public function testConstructor() {
-               $backend = TestUtils::getDummySessionBackend();
-               \TestingAccessWrapper::newFromObject( $backend )->requests = array( -1 => 'dummy' );
-               \TestingAccessWrapper::newFromObject( $backend )->id = new SessionId( 'abc' );
-
-               $session = new Session( $backend, 42 );
-               $priv = \TestingAccessWrapper::newFromObject( $session );
-               $this->assertSame( $backend, $priv->backend );
-               $this->assertSame( 42, $priv->index );
-
-               $request = new \FauxRequest();
-               $priv2 = \TestingAccessWrapper::newFromObject( $session->sessionWithRequest( $request ) );
-               $this->assertSame( $backend, $priv2->backend );
-               $this->assertNotSame( $priv->index, $priv2->index );
-               $this->assertSame( $request, $priv2->getRequest() );
-       }
-
-       /**
-        * @dataProvider provideMethods
-        * @param string $m Method to test
-        * @param array $args Arguments to pass to the method
-        * @param bool $index Whether the backend method gets passed the index
-        * @param bool $ret Whether the method returns a value
-        */
-       public function testMethods( $m, $args, $index, $ret ) {
-               $mock = $this->getMock( 'MediaWiki\\Session\\DummySessionBackend',
-                       array( $m, 'deregisterSession' ) );
-               $mock->expects( $this->once() )->method( 'deregisterSession' )
-                       ->with( $this->identicalTo( 42 ) );
-
-               $tmp = $mock->expects( $this->once() )->method( $m );
-               $expectArgs = array();
-               if ( $index ) {
-                       $expectArgs[] = $this->identicalTo( 42 );
-               }
-               foreach ( $args as $arg ) {
-                       $expectArgs[] = $this->identicalTo( $arg );
-               }
-               $tmp = call_user_func_array( array( $tmp, 'with' ), $expectArgs );
-
-               $retval = new \stdClass;
-               $tmp->will( $this->returnValue( $retval ) );
-
-               $session = TestUtils::getDummySession( $mock, 42 );
-
-               if ( $ret ) {
-                       $this->assertSame( $retval, call_user_func_array( array( $session, $m ), $args ) );
-               } else {
-                       $this->assertNull( call_user_func_array( array( $session, $m ), $args ) );
-               }
-
-               // Trigger Session destructor
-               $session = null;
-       }
-
-       public static function provideMethods() {
-               return array(
-                       array( 'getId', array(), false, true ),
-                       array( 'getSessionId', array(), false, true ),
-                       array( 'resetId', array(), false, true ),
-                       array( 'getProvider', array(), false, true ),
-                       array( 'isPersistent', array(), false, true ),
-                       array( 'persist', array(), false, false ),
-                       array( 'shouldRememberUser', array(), false, true ),
-                       array( 'setRememberUser', array( true ), false, false ),
-                       array( 'getRequest', array(), true, true ),
-                       array( 'getUser', array(), false, true ),
-                       array( 'getAllowedUserRights', array(), false, true ),
-                       array( 'canSetUser', array(), false, true ),
-                       array( 'setUser', array( new \stdClass ), false, false ),
-                       array( 'suggestLoginUsername', array(), true, true ),
-                       array( 'shouldForceHTTPS', array(), false, true ),
-                       array( 'setForceHTTPS', array( true ), false, false ),
-                       array( 'getLoggedOutTimestamp', array(), false, true ),
-                       array( 'setLoggedOutTimestamp', array( 123 ), false, false ),
-                       array( 'getProviderMetadata', array(), false, true ),
-                       array( 'save', array(), false, false ),
-                       array( 'delaySave', array(), false, true ),
-                       array( 'renew', array(), false, false ),
-               );
-       }
-
-       public function testDataAccess() {
-               $session = TestUtils::getDummySession();
-               $backend = \TestingAccessWrapper::newFromObject( $session )->backend;
-
-               $this->assertEquals( 1, $session->get( 'foo' ) );
-               $this->assertEquals( 'zero', $session->get( 0 ) );
-               $this->assertFalse( $backend->dirty );
-
-               $this->assertEquals( null, $session->get( 'null' ) );
-               $this->assertEquals( 'default', $session->get( 'null', 'default' ) );
-               $this->assertFalse( $backend->dirty );
-
-               $session->set( 'foo', 55 );
-               $this->assertEquals( 55, $backend->data['foo'] );
-               $this->assertTrue( $backend->dirty );
-               $backend->dirty = false;
-
-               $session->set( 1, 'one' );
-               $this->assertEquals( 'one', $backend->data[1] );
-               $this->assertTrue( $backend->dirty );
-               $backend->dirty = false;
-
-               $session->set( 1, 'one' );
-               $this->assertFalse( $backend->dirty );
-
-               $this->assertTrue( $session->exists( 'foo' ) );
-               $this->assertTrue( $session->exists( 1 ) );
-               $this->assertFalse( $session->exists( 'null' ) );
-               $this->assertFalse( $session->exists( 100 ) );
-               $this->assertFalse( $backend->dirty );
-
-               $session->remove( 'foo' );
-               $this->assertArrayNotHasKey( 'foo', $backend->data );
-               $this->assertTrue( $backend->dirty );
-               $backend->dirty = false;
-               $session->remove( 1 );
-               $this->assertArrayNotHasKey( 1, $backend->data );
-               $this->assertTrue( $backend->dirty );
-               $backend->dirty = false;
-
-               $session->remove( 101 );
-               $this->assertFalse( $backend->dirty );
-
-               $backend->data = array( 'a', 'b', '?' => 'c' );
-               $this->assertSame( 3, $session->count() );
-               $this->assertSame( 3, count( $session ) );
-               $this->assertFalse( $backend->dirty );
-
-               $data = array();
-               foreach ( $session as $key => $value ) {
-                       $data[$key] = $value;
-               }
-               $this->assertEquals( $backend->data, $data );
-               $this->assertFalse( $backend->dirty );
-
-               $this->assertEquals( $backend->data, iterator_to_array( $session ) );
-               $this->assertFalse( $backend->dirty );
-       }
-
-       public function testClear() {
-               $session = TestUtils::getDummySession();
-               $priv = \TestingAccessWrapper::newFromObject( $session );
-
-               $backend = $this->getMock(
-                       'MediaWiki\\Session\\DummySessionBackend', array( 'canSetUser', 'setUser', 'save' )
-               );
-               $backend->expects( $this->once() )->method( 'canSetUser' )
-                       ->will( $this->returnValue( true ) );
-               $backend->expects( $this->once() )->method( 'setUser' )
-                       ->with( $this->callback( function ( $user ) {
-                               return $user instanceof User && $user->isAnon();
-                       } ) );
-               $backend->expects( $this->once() )->method( 'save' );
-               $priv->backend = $backend;
-               $session->clear();
-               $this->assertSame( array(), $backend->data );
-               $this->assertTrue( $backend->dirty );
-
-               $backend = $this->getMock(
-                       'MediaWiki\\Session\\DummySessionBackend', array( 'canSetUser', 'setUser', 'save' )
-               );
-               $backend->data = array();
-               $backend->expects( $this->once() )->method( 'canSetUser' )
-                       ->will( $this->returnValue( true ) );
-               $backend->expects( $this->once() )->method( 'setUser' )
-                       ->with( $this->callback( function ( $user ) {
-                               return $user instanceof User && $user->isAnon();
-                       } ) );
-               $backend->expects( $this->once() )->method( 'save' );
-               $priv->backend = $backend;
-               $session->clear();
-               $this->assertFalse( $backend->dirty );
-
-               $backend = $this->getMock(
-                       'MediaWiki\\Session\\DummySessionBackend', array( 'canSetUser', 'setUser', 'save' )
-               );
-               $backend->expects( $this->once() )->method( 'canSetUser' )
-                       ->will( $this->returnValue( false ) );
-               $backend->expects( $this->never() )->method( 'setUser' );
-               $backend->expects( $this->once() )->method( 'save' );
-               $priv->backend = $backend;
-               $session->clear();
-               $this->assertSame( array(), $backend->data );
-               $this->assertTrue( $backend->dirty );
-       }
-
-}
diff --git a/tests/phpunit/includes/session/TestBagOStuff.php b/tests/phpunit/includes/session/TestBagOStuff.php
deleted file mode 100644 (file)
index e674e7b..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-<?php
-
-namespace MediaWiki\Session;
-
-/**
- * BagOStuff with utility functions for MediaWiki\\Session\\* testing
- */
-class TestBagOStuff extends \HashBagOStuff {
-
-       /**
-        * @param string $id Session ID
-        * @param array $data Session data
-        * @param int $expiry Expiry
-        * @param User $user User for metadata
-        */
-       public function setSessionData( $id, array $data, $expiry = 0, User $user = null ) {
-               $this->setSession( $id, array( 'data' => $data ), $expiry, $user );
-       }
-
-       /**
-        * @param string $id Session ID
-        * @param array $metadata Session metadata
-        * @param int $expiry Expiry
-        */
-       public function setSessionMeta( $id, array $metadata, $expiry = 0 ) {
-               $this->setSession( $id, array( 'metadata' => $metadata ), $expiry );
-       }
-
-       /**
-        * @param string $id Session ID
-        * @param array $blob Session metadata and data
-        * @param int $expiry Expiry
-        * @param User $user User for metadata
-        */
-       public function setSession( $id, array $blob, $expiry = 0, User $user = null ) {
-               $blob += array(
-                       'data' => array(),
-                       'metadata' => array(),
-               );
-               $blob['metadata'] += array(
-                       'userId' => $user ? $user->getId() : 0,
-                       'userName' => $user ? $user->getName() : null,
-                       'userToken' => $user ? $user->getToken( true ) : null,
-                       'provider' => 'DummySessionProvider',
-               );
-
-               $this->setRawSession( $id, $blob, $expiry, $user );
-       }
-
-       /**
-        * @param string $id Session ID
-        * @param array|mixed $blob Session metadata and data
-        * @param int $expiry Expiry
-        */
-       public function setRawSession( $id, $blob, $expiry = 0 ) {
-               if ( $expiry <= 0 ) {
-                       $expiry = \RequestContext::getMain()->getConfig()->get( 'ObjectCacheSessionExpiry' );
-               }
-
-               $this->set( wfMemcKey( 'MWSession', $id ), $blob, $expiry );
-       }
-
-       /**
-        * @param string $id Session ID
-        * @return mixed
-        */
-       public function getSession( $id ) {
-               return $this->get( wfMemcKey( 'MWSession', $id ) );
-       }
-
-       /**
-        * @param string $id Session ID
-        */
-       public function deleteSession( $id ) {
-               $this->delete( wfMemcKey( 'MWSession', $id ) );
-       }
-
-}
diff --git a/tests/phpunit/includes/session/TestUtils.php b/tests/phpunit/includes/session/TestUtils.php
deleted file mode 100644 (file)
index 1619983..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-<?php
-
-namespace MediaWiki\Session;
-
-/**
- * Utility functions for Session unit tests
- */
-class TestUtils {
-
-       /**
-        * Override the singleton for unit testing
-        * @param SessionManager|null $manager
-        * @return \\ScopedCallback|null
-        */
-       public static function setSessionManagerSingleton( SessionManager $manager = null ) {
-               session_write_close();
-
-               $rInstance = new \ReflectionProperty(
-                       'MediaWiki\\Session\\SessionManager', 'instance'
-               );
-               $rInstance->setAccessible( true );
-               $rGlobalSession = new \ReflectionProperty(
-                       'MediaWiki\\Session\\SessionManager', 'globalSession'
-               );
-               $rGlobalSession->setAccessible( true );
-               $rGlobalSessionRequest = new \ReflectionProperty(
-                       'MediaWiki\\Session\\SessionManager', 'globalSessionRequest'
-               );
-               $rGlobalSessionRequest->setAccessible( true );
-
-               $oldInstance = $rInstance->getValue();
-
-               $reset = array(
-                       array( $rInstance, $oldInstance ),
-                       array( $rGlobalSession, $rGlobalSession->getValue() ),
-                       array( $rGlobalSessionRequest, $rGlobalSessionRequest->getValue() ),
-               );
-
-               $rInstance->setValue( $manager );
-               $rGlobalSession->setValue( null );
-               $rGlobalSessionRequest->setValue( null );
-               if ( $manager && PHPSessionHandler::isInstalled() ) {
-                       PHPSessionHandler::install( $manager );
-               }
-
-               return new \ScopedCallback( function () use ( &$reset, $oldInstance ) {
-                       foreach ( $reset as &$arr ) {
-                               $arr[0]->setValue( $arr[1] );
-                       }
-                       if ( $oldInstance && PHPSessionHandler::isInstalled() ) {
-                               PHPSessionHandler::install( $oldInstance );
-                       }
-               } );
-       }
-
-       /**
-        * If you need a SessionBackend for testing but don't want to create a real
-        * one, use this.
-        * @return SessionBackend Unconfigured! Use reflection to set any private
-        *  fields necessary.
-        */
-       public static function getDummySessionBackend() {
-               $rc = new \ReflectionClass( 'MediaWiki\\Session\\SessionBackend' );
-               if ( !method_exists( $rc, 'newInstanceWithoutConstructor' ) ) {
-                       \PHPUnit_Framework_Assert::markTestSkipped(
-                               'ReflectionClass::newInstanceWithoutConstructor isn\'t available'
-                       );
-               }
-
-               return $rc->newInstanceWithoutConstructor();
-       }
-
-       /**
-        * If you need a Session for testing but don't want to create a backend to
-        * construct one, use this.
-        * @param object $backend Object to serve as the SessionBackend
-        * @param int $index Index
-        * @return Session
-        */
-       public static function getDummySession( $backend = null, $index = -1 ) {
-               $rc = new \ReflectionClass( 'MediaWiki\\Session\\Session' );
-               if ( !method_exists( $rc, 'newInstanceWithoutConstructor' ) ) {
-                       \PHPUnit_Framework_Assert::markTestSkipped(
-                               'ReflectionClass::newInstanceWithoutConstructor isn\'t available'
-                       );
-               }
-
-               if ( $backend === null ) {
-                       $backend = new DummySessionBackend;
-               }
-
-               $session = $rc->newInstanceWithoutConstructor();
-               $priv = \TestingAccessWrapper::newFromObject( $session );
-               $priv->backend = $backend;
-               $priv->index = $index;
-               return $session;
-       }
-
-}
diff --git a/tests/phpunit/includes/session/UserInfoTest.php b/tests/phpunit/includes/session/UserInfoTest.php
deleted file mode 100644 (file)
index 121bb72..0000000
+++ /dev/null
@@ -1,186 +0,0 @@
-<?php
-
-namespace MediaWiki\Session;
-
-use MediaWikiTestCase;
-use User;
-
-/**
- * @group Session
- * @group Database
- * @covers MediaWiki\Session\UserInfo
- */
-class UserInfoTest extends MediaWikiTestCase {
-
-       public function testNewAnonymous() {
-               $userinfo = UserInfo::newAnonymous();
-
-               $this->assertTrue( $userinfo->isAnon() );
-               $this->assertTrue( $userinfo->isVerified() );
-               $this->assertSame( 0, $userinfo->getId() );
-               $this->assertSame( null, $userinfo->getName() );
-               $this->assertSame( null, $userinfo->getToken() );
-               $this->assertNotNull( $userinfo->getUser() );
-               $this->assertSame( $userinfo, $userinfo->verified() );
-               $this->assertSame( '<anon>', (string)$userinfo );
-       }
-
-       public function testNewFromId() {
-               $id = wfGetDB( DB_MASTER )->selectField( 'user', 'MAX(user_id)' ) + 1;
-               try {
-                       UserInfo::newFromId( $id );
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \InvalidArgumentException $ex ) {
-                       $this->assertSame( 'Invalid ID', $ex->getMessage() );
-               }
-
-               $user = User::newFromName( 'UTSysop' );
-               $userinfo = UserInfo::newFromId( $user->getId() );
-               $this->assertFalse( $userinfo->isAnon() );
-               $this->assertFalse( $userinfo->isVerified() );
-               $this->assertSame( $user->getId(), $userinfo->getId() );
-               $this->assertSame( $user->getName(), $userinfo->getName() );
-               $this->assertSame( $user->getToken( true ), $userinfo->getToken() );
-               $this->assertInstanceOf( 'User', $userinfo->getUser() );
-               $userinfo2 = $userinfo->verified();
-               $this->assertNotSame( $userinfo2, $userinfo );
-               $this->assertSame( "<-:{$user->getId()}:{$user->getName()}>", (string)$userinfo );
-
-               $this->assertFalse( $userinfo2->isAnon() );
-               $this->assertTrue( $userinfo2->isVerified() );
-               $this->assertSame( $user->getId(), $userinfo2->getId() );
-               $this->assertSame( $user->getName(), $userinfo2->getName() );
-               $this->assertSame( $user->getToken( true ), $userinfo2->getToken() );
-               $this->assertInstanceOf( 'User', $userinfo2->getUser() );
-               $this->assertSame( $userinfo2, $userinfo2->verified() );
-               $this->assertSame( "<+:{$user->getId()}:{$user->getName()}>", (string)$userinfo2 );
-
-               $userinfo = UserInfo::newFromId( $user->getId(), true );
-               $this->assertTrue( $userinfo->isVerified() );
-               $this->assertSame( $userinfo, $userinfo->verified() );
-       }
-
-       public function testNewFromName() {
-               try {
-                       UserInfo::newFromName( '<bad name>' );
-                       $this->fail( 'Expected exception not thrown' );
-               } catch ( \InvalidArgumentException $ex ) {
-                       $this->assertSame( 'Invalid user name', $ex->getMessage() );
-               }
-
-               // User name that exists
-               $user = User::newFromName( 'UTSysop' );
-               $userinfo = UserInfo::newFromName( $user->getName() );
-               $this->assertFalse( $userinfo->isAnon() );
-               $this->assertFalse( $userinfo->isVerified() );
-               $this->assertSame( $user->getId(), $userinfo->getId() );
-               $this->assertSame( $user->getName(), $userinfo->getName() );
-               $this->assertSame( $user->getToken( true ), $userinfo->getToken() );
-               $this->assertInstanceOf( 'User', $userinfo->getUser() );
-               $userinfo2 = $userinfo->verified();
-               $this->assertNotSame( $userinfo2, $userinfo );
-               $this->assertSame( "<-:{$user->getId()}:{$user->getName()}>", (string)$userinfo );
-
-               $this->assertFalse( $userinfo2->isAnon() );
-               $this->assertTrue( $userinfo2->isVerified() );
-               $this->assertSame( $user->getId(), $userinfo2->getId() );
-               $this->assertSame( $user->getName(), $userinfo2->getName() );
-               $this->assertSame( $user->getToken( true ), $userinfo2->getToken() );
-               $this->assertInstanceOf( 'User', $userinfo2->getUser() );
-               $this->assertSame( $userinfo2, $userinfo2->verified() );
-               $this->assertSame( "<+:{$user->getId()}:{$user->getName()}>", (string)$userinfo2 );
-
-               $userinfo = UserInfo::newFromName( $user->getName(), true );
-               $this->assertTrue( $userinfo->isVerified() );
-               $this->assertSame( $userinfo, $userinfo->verified() );
-
-               // User name that does not exist should still be non-anon
-               $user = User::newFromName( 'DoesNotExist' );
-               $this->assertSame( 0, $user->getId(), 'sanity check' );
-               $userinfo = UserInfo::newFromName( $user->getName() );
-               $this->assertFalse( $userinfo->isAnon() );
-               $this->assertFalse( $userinfo->isVerified() );
-               $this->assertSame( $user->getId(), $userinfo->getId() );
-               $this->assertSame( $user->getName(), $userinfo->getName() );
-               $this->assertSame( null, $userinfo->getToken() );
-               $this->assertInstanceOf( 'User', $userinfo->getUser() );
-               $userinfo2 = $userinfo->verified();
-               $this->assertNotSame( $userinfo2, $userinfo );
-               $this->assertSame( "<-:{$user->getId()}:{$user->getName()}>", (string)$userinfo );
-
-               $this->assertFalse( $userinfo2->isAnon() );
-               $this->assertTrue( $userinfo2->isVerified() );
-               $this->assertSame( $user->getId(), $userinfo2->getId() );
-               $this->assertSame( $user->getName(), $userinfo2->getName() );
-               $this->assertSame( null, $userinfo2->getToken() );
-               $this->assertInstanceOf( 'User', $userinfo2->getUser() );
-               $this->assertSame( $userinfo2, $userinfo2->verified() );
-               $this->assertSame( "<+:{$user->getId()}:{$user->getName()}>", (string)$userinfo2 );
-
-               $userinfo = UserInfo::newFromName( $user->getName(), true );
-               $this->assertTrue( $userinfo->isVerified() );
-               $this->assertSame( $userinfo, $userinfo->verified() );
-       }
-
-       public function testNewFromUser() {
-               // User that exists
-               $user = User::newFromName( 'UTSysop' );
-               $userinfo = UserInfo::newFromUser( $user );
-               $this->assertFalse( $userinfo->isAnon() );
-               $this->assertFalse( $userinfo->isVerified() );
-               $this->assertSame( $user->getId(), $userinfo->getId() );
-               $this->assertSame( $user->getName(), $userinfo->getName() );
-               $this->assertSame( $user->getToken( true ), $userinfo->getToken() );
-               $this->assertSame( $user, $userinfo->getUser() );
-               $userinfo2 = $userinfo->verified();
-               $this->assertNotSame( $userinfo2, $userinfo );
-               $this->assertSame( "<-:{$user->getId()}:{$user->getName()}>", (string)$userinfo );
-
-               $this->assertFalse( $userinfo2->isAnon() );
-               $this->assertTrue( $userinfo2->isVerified() );
-               $this->assertSame( $user->getId(), $userinfo2->getId() );
-               $this->assertSame( $user->getName(), $userinfo2->getName() );
-               $this->assertSame( $user->getToken( true ), $userinfo2->getToken() );
-               $this->assertSame( $user, $userinfo2->getUser() );
-               $this->assertSame( $userinfo2, $userinfo2->verified() );
-               $this->assertSame( "<+:{$user->getId()}:{$user->getName()}>", (string)$userinfo2 );
-
-               $userinfo = UserInfo::newFromUser( $user, true );
-               $this->assertTrue( $userinfo->isVerified() );
-               $this->assertSame( $userinfo, $userinfo->verified() );
-
-               // User name that does not exist should still be non-anon
-               $user = User::newFromName( 'DoesNotExist' );
-               $this->assertSame( 0, $user->getId(), 'sanity check' );
-               $userinfo = UserInfo::newFromUser( $user );
-               $this->assertFalse( $userinfo->isAnon() );
-               $this->assertFalse( $userinfo->isVerified() );
-               $this->assertSame( $user->getId(), $userinfo->getId() );
-               $this->assertSame( $user->getName(), $userinfo->getName() );
-               $this->assertSame( null, $userinfo->getToken() );
-               $this->assertSame( $user, $userinfo->getUser() );
-               $userinfo2 = $userinfo->verified();
-               $this->assertNotSame( $userinfo2, $userinfo );
-               $this->assertSame( "<-:{$user->getId()}:{$user->getName()}>", (string)$userinfo );
-
-               $this->assertFalse( $userinfo2->isAnon() );
-               $this->assertTrue( $userinfo2->isVerified() );
-               $this->assertSame( $user->getId(), $userinfo2->getId() );
-               $this->assertSame( $user->getName(), $userinfo2->getName() );
-               $this->assertSame( null, $userinfo2->getToken() );
-               $this->assertSame( $user, $userinfo2->getUser() );
-               $this->assertSame( $userinfo2, $userinfo2->verified() );
-               $this->assertSame( "<+:{$user->getId()}:{$user->getName()}>", (string)$userinfo2 );
-
-               $userinfo = UserInfo::newFromUser( $user, true );
-               $this->assertTrue( $userinfo->isVerified() );
-               $this->assertSame( $userinfo, $userinfo->verified() );
-
-               // Anonymous user gives anon
-               $userinfo = UserInfo::newFromUser( new User, false );
-               $this->assertTrue( $userinfo->isVerified() );
-               $this->assertSame( 0, $userinfo->getId() );
-               $this->assertSame( null, $userinfo->getName() );
-       }
-
-}
index 1d4f5e5..7bfb861 100644 (file)
@@ -2,7 +2,7 @@
 
 /**
  * @licence GNU GPL v2+
- * @author Adam Shorland
+ * @author Addshore
  *
  * @covers SpecialBlankpage
  */
index 9c7b0f0..db8ae0f 100644 (file)
@@ -8,7 +8,7 @@
  * @licence GNU GPL v2+
  * @author Jeroen De Dauw < jeroendedauw@gmail.com >
  * @author Daniel Kinzler
- * @author Adam Shorland
+ * @author Addshore
  * @author Thiemo Mättig
  */
 abstract class SpecialPageTestBase extends MediaWikiTestCase {
index 428fd27..7834d9b 100644 (file)
@@ -14,8 +14,8 @@ class UploadFromUrlTest extends ApiTestCase {
                $this->setMwGlobals( array(
                        'wgEnableUploads' => true,
                        'wgAllowCopyUploads' => true,
-                       'wgAllowAsyncCopyUploads' => true,
                ) );
+               wfSetupSession();
 
                if ( wfLocalFile( 'UploadFromUrlTest.png' )->exists() ) {
                        $this->deleteFile( 'UploadFromUrlTest.png' );
@@ -25,12 +25,15 @@ class UploadFromUrlTest extends ApiTestCase {
        protected function doApiRequest( array $params, array $unused = null,
                $appendModule = false, User $user = null
        ) {
-               global $wgRequest;
+               $sessionId = session_id();
+               session_write_close();
 
-               $req = new FauxRequest( $params, true, $wgRequest->getSession() );
+               $req = new FauxRequest( $params, true, $_SESSION );
                $module = new ApiMain( $req, true );
                $module->execute();
 
+               wfSetupSession( $sessionId );
+
                return array(
                        $module->getResult()->getResultData( null, array( 'Strip' => 'all' ) ),
                        $req
@@ -73,7 +76,7 @@ class UploadFromUrlTest extends ApiTestCase {
                        ), $data );
                } catch ( UsageException $e ) {
                        $exception = true;
-                       $this->assertEquals( "One of the parameters sessionkey, file, url, statuskey is required",
+                       $this->assertEquals( "One of the parameters sessionkey, file, url is required",
                                $e->getMessage() );
                }
                $this->assertTrue( $exception, "Got exception" );
@@ -105,67 +108,6 @@ class UploadFromUrlTest extends ApiTestCase {
                        $this->assertEquals( "Permission denied", $e->getMessage() );
                }
                $this->assertTrue( $exception, "Got exception" );
-
-               $this->user->addGroup( 'sysop' );
-               $data = $this->doApiRequest( array(
-                       'action' => 'upload',
-                       'url' => 'http://upload.wikimedia.org/wikipedia/mediawiki/b/bc/Wiki.png',
-                       'asyncdownload' => 1,
-                       'filename' => 'UploadFromUrlTest.png',
-                       'token' => $token,
-               ), $data );
-
-               $this->assertEquals( $data[0]['upload']['result'], 'Queued', 'Queued upload' );
-
-               $job = JobQueueGroup::singleton()->pop();
-               $this->assertThat( $job, $this->isInstanceOf( 'UploadFromUrlJob' ), 'Queued upload inserted' );
-       }
-
-       /**
-        * @depends testClearQueue
-        */
-       public function testAsyncUpload( $data ) {
-               $token = $this->user->getEditToken();
-
-               $this->user->addGroup( 'users' );
-
-               $data = $this->doAsyncUpload( $token, true );
-               $this->assertEquals( $data[0]['upload']['result'], 'Success' );
-               $this->assertEquals( $data[0]['upload']['filename'], 'UploadFromUrlTest.png' );
-               $this->assertTrue( wfLocalFile( $data[0]['upload']['filename'] )->exists() );
-
-               $this->deleteFile( 'UploadFromUrlTest.png' );
-
-               return $data;
-       }
-
-       /**
-        * @depends testClearQueue
-        */
-       public function testAsyncUploadWarning( $data ) {
-               $token = $this->user->getEditToken();
-
-               $this->user->addGroup( 'users' );
-
-               $data = $this->doAsyncUpload( $token );
-
-               $this->assertEquals( $data[0]['upload']['result'], 'Warning' );
-               $this->assertTrue( isset( $data[0]['upload']['sessionkey'] ) );
-
-               $data = $this->doApiRequest( array(
-                       'action' => 'upload',
-                       'sessionkey' => $data[0]['upload']['sessionkey'],
-                       'filename' => 'UploadFromUrlTest.png',
-                       'ignorewarnings' => 1,
-                       'token' => $token,
-               ) );
-               $this->assertEquals( $data[0]['upload']['result'], 'Success' );
-               $this->assertEquals( $data[0]['upload']['filename'], 'UploadFromUrlTest.png' );
-               $this->assertTrue( wfLocalFile( $data[0]['upload']['filename'] )->exists() );
-
-               $this->deleteFile( 'UploadFromUrlTest.png' );
-
-               return $data;
        }
 
        /**
@@ -195,120 +137,6 @@ class UploadFromUrlTest extends ApiTestCase {
                return $data;
        }
 
-       public function testLeaveMessage() {
-               $token = $this->user->user->getEditToken();
-
-               $talk = $this->user->user->getTalkPage();
-               if ( $talk->exists() ) {
-                       $page = WikiPage::factory( $talk );
-                       $page->doDeleteArticle( '' );
-               }
-
-               $this->assertFalse(
-                       (bool)$talk->getArticleID( Title::GAID_FOR_UPDATE ),
-                       'User talk does not exist'
-               );
-
-               $this->doApiRequest( array(
-                       'action' => 'upload',
-                       'filename' => 'UploadFromUrlTest.png',
-                       'url' => 'http://upload.wikimedia.org/wikipedia/mediawiki/b/bc/Wiki.png',
-                       'asyncdownload' => 1,
-                       'token' => $token,
-                       'leavemessage' => 1,
-                       'ignorewarnings' => 1,
-               ) );
-
-               $job = JobQueueGroup::singleton()->pop();
-               $this->assertEquals( 'UploadFromUrlJob', get_class( $job ) );
-               $job->run();
-
-               $this->assertTrue( wfLocalFile( 'UploadFromUrlTest.png' )->exists() );
-               $this->assertTrue( (bool)$talk->getArticleID( Title::GAID_FOR_UPDATE ), 'User talk exists' );
-
-               $this->deleteFile( 'UploadFromUrlTest.png' );
-
-               $exception = false;
-               try {
-                       $this->doApiRequest( array(
-                               'action' => 'upload',
-                               'filename' => 'UploadFromUrlTest.png',
-                               'url' => 'http://upload.wikimedia.org/wikipedia/mediawiki/b/bc/Wiki.png',
-                               'asyncdownload' => 1,
-                               'token' => $token,
-                               'leavemessage' => 1,
-                       ) );
-               } catch ( UsageException $e ) {
-                       $exception = true;
-                       $this->assertEquals(
-                               'Using leavemessage without ignorewarnings is not supported',
-                               $e->getMessage()
-                       );
-               }
-               $this->assertTrue( $exception );
-
-               $job = JobQueueGroup::singleton()->pop();
-               $this->assertFalse( $job );
-
-               return;
-               /*
-               // Broken until using leavemessage with ignorewarnings is supported
-               $talkRev = Revision::newFromTitle( $talk );
-               $talkSize = $talkRev->getSize();
-
-               $job->run();
-
-               $this->assertFalse( wfLocalFile( 'UploadFromUrlTest.png' )->exists() );
-
-               $talkRev = Revision::newFromTitle( $talk );
-               $this->assertTrue( $talkRev->getSize() > $talkSize, 'New message left' );
-               */
-       }
-
-       /**
-        * Helper function to perform an async upload, execute the job and fetch
-        * the status
-        *
-        * @param string $token
-        * @param bool $ignoreWarnings
-        * @param bool $leaveMessage
-        * @return array The result of action=upload&statuskey=key
-        */
-       private function doAsyncUpload( $token, $ignoreWarnings = false, $leaveMessage = false ) {
-               $params = array(
-                       'action' => 'upload',
-                       'filename' => 'UploadFromUrlTest.png',
-                       'url' => 'http://upload.wikimedia.org/wikipedia/mediawiki/b/bc/Wiki.png',
-                       'asyncdownload' => 1,
-                       'token' => $token,
-               );
-               if ( $ignoreWarnings ) {
-                       $params['ignorewarnings'] = 1;
-               }
-               if ( $leaveMessage ) {
-                       $params['leavemessage'] = 1;
-               }
-
-               $data = $this->doApiRequest( $params );
-               $this->assertEquals( $data[0]['upload']['result'], 'Queued' );
-               $this->assertTrue( isset( $data[0]['upload']['statuskey'] ) );
-               $statusKey = $data[0]['upload']['statuskey'];
-
-               $job = JobQueueGroup::singleton()->pop();
-               $this->assertEquals( 'UploadFromUrlJob', get_class( $job ) );
-
-               $status = $job->run();
-               $this->assertTrue( $status );
-
-               $data = $this->doApiRequest( array(
-                       'action' => 'upload',
-                       'statuskey' => $statusKey,
-                       'token' => $token,
-               ) );
-
-               return $data;
-       }
-
        protected function deleteFile( $name ) {
                $t = Title::newFromText( $name, NS_FILE );
                $this->assertTrue( $t->exists(), "File '$name' exists" );
diff --git a/tests/phpunit/includes/user/BotPasswordTest.php b/tests/phpunit/includes/user/BotPasswordTest.php
deleted file mode 100644 (file)
index c118803..0000000
+++ /dev/null
@@ -1,379 +0,0 @@
-<?php
-
-use MediaWiki\Session\SessionManager;
-
-/**
- * @covers BotPassword
- * @group Database
- */
-class BotPasswordTest extends MediaWikiTestCase {
-       protected function setUp() {
-               parent::setUp();
-
-               $this->setMwGlobals( array(
-                       'wgEnableBotPasswords' => true,
-                       'wgBotPasswordsDatabase' => false,
-                       'wgCentralIdLookupProvider' => 'BotPasswordTest OkMock',
-                       'wgGrantPermissions' => array(
-                               'test' => array( 'read' => true ),
-                       ),
-                       'wgUserrightsInterwikiDelimiter' => '@',
-               ) );
-
-               $mock1 = $this->getMockForAbstractClass( 'CentralIdLookup' );
-               $mock1->expects( $this->any() )->method( 'isAttached' )
-                       ->will( $this->returnValue( true ) );
-               $mock1->expects( $this->any() )->method( 'lookupUserNames' )
-                       ->will( $this->returnValue( array( 'UTSysop' => 42, 'UTDummy' => 43, 'UTInvalid' => 0 ) ) );
-               $mock1->expects( $this->never() )->method( 'lookupCentralIds' );
-
-               $mock2 = $this->getMockForAbstractClass( 'CentralIdLookup' );
-               $mock2->expects( $this->any() )->method( 'isAttached' )
-                       ->will( $this->returnValue( false ) );
-               $mock2->expects( $this->any() )->method( 'lookupUserNames' )
-                       ->will( $this->returnArgument( 0 ) );
-               $mock2->expects( $this->never() )->method( 'lookupCentralIds' );
-
-               $this->mergeMwGlobalArrayValue( 'wgCentralIdLookupProviders', array(
-                       'BotPasswordTest OkMock' => array( 'factory' => function () use ( $mock1 ) {
-                               return $mock1;
-                       } ),
-                       'BotPasswordTest FailMock' => array( 'factory' => function () use ( $mock2 ) {
-                               return $mock2;
-                       } ),
-               ) );
-
-               CentralIdLookup::resetCache();
-       }
-
-       public function addDBData() {
-               $passwordFactory = new \PasswordFactory();
-               $passwordFactory->init( \RequestContext::getMain()->getConfig() );
-               // A is unsalted MD5 (thus fast) ... we don't care about security here, this is test only
-               $passwordFactory->setDefaultType( 'A' );
-               $pwhash = $passwordFactory->newFromPlaintext( 'foobaz' );
-
-               $dbw = wfGetDB( DB_MASTER );
-               $dbw->delete(
-                       'bot_passwords',
-                       array( 'bp_user' => array( 42, 43 ), 'bp_app_id' => 'BotPassword' ),
-                       __METHOD__
-               );
-               $dbw->insert(
-                       'bot_passwords',
-                       array(
-                               array(
-                                       'bp_user' => 42,
-                                       'bp_app_id' => 'BotPassword',
-                                       'bp_password' => $pwhash->toString(),
-                                       'bp_token' => 'token!',
-                                       'bp_restrictions' => '{"IPAddresses":["127.0.0.0/8"]}',
-                                       'bp_grants' => '["test"]',
-                               ),
-                               array(
-                                       'bp_user' => 43,
-                                       'bp_app_id' => 'BotPassword',
-                                       'bp_password' => $pwhash->toString(),
-                                       'bp_token' => 'token!',
-                                       'bp_restrictions' => '{"IPAddresses":["127.0.0.0/8"]}',
-                                       'bp_grants' => '["test"]',
-                               ),
-                       ),
-                       __METHOD__
-               );
-       }
-
-       public function testBasics() {
-               $user = User::newFromName( 'UTSysop' );
-               $bp = BotPassword::newFromUser( $user, 'BotPassword' );
-               $this->assertInstanceOf( 'BotPassword', $bp );
-               $this->assertTrue( $bp->isSaved() );
-               $this->assertSame( 42, $bp->getUserCentralId() );
-               $this->assertSame( 'BotPassword', $bp->getAppId() );
-               $this->assertSame( 'token!', trim( $bp->getToken(), " \0" ) );
-               $this->assertEquals( '{"IPAddresses":["127.0.0.0/8"]}', $bp->getRestrictions()->toJson() );
-               $this->assertSame( array( 'test' ), $bp->getGrants() );
-
-               $this->assertNull( BotPassword::newFromUser( $user, 'DoesNotExist' ) );
-
-               $this->setMwGlobals( array(
-                       'wgCentralIdLookupProvider' => 'BotPasswordTest FailMock'
-               ) );
-               $this->assertNull( BotPassword::newFromUser( $user, 'BotPassword' ) );
-
-               $this->assertSame( '@', BotPassword::getSeparator() );
-               $this->setMwGlobals( array(
-                       'wgUserrightsInterwikiDelimiter' => '#',
-               ) );
-               $this->assertSame( '#', BotPassword::getSeparator() );
-       }
-
-       public function testUnsaved() {
-               $user = User::newFromName( 'UTSysop' );
-               $bp = BotPassword::newUnsaved( array(
-                       'user' => $user,
-                       'appId' => 'DoesNotExist'
-               ) );
-               $this->assertInstanceOf( 'BotPassword', $bp );
-               $this->assertFalse( $bp->isSaved() );
-               $this->assertSame( 42, $bp->getUserCentralId() );
-               $this->assertSame( 'DoesNotExist', $bp->getAppId() );
-               $this->assertEquals( MWRestrictions::newDefault(), $bp->getRestrictions() );
-               $this->assertSame( array(), $bp->getGrants() );
-
-               $bp = BotPassword::newUnsaved( array(
-                       'username' => 'UTDummy',
-                       'appId' => 'DoesNotExist2',
-                       'restrictions' => MWRestrictions::newFromJson( '{"IPAddresses":["127.0.0.0/8"]}' ),
-                       'grants' => array( 'test' ),
-               ) );
-               $this->assertInstanceOf( 'BotPassword', $bp );
-               $this->assertFalse( $bp->isSaved() );
-               $this->assertSame( 43, $bp->getUserCentralId() );
-               $this->assertSame( 'DoesNotExist2', $bp->getAppId() );
-               $this->assertEquals( '{"IPAddresses":["127.0.0.0/8"]}', $bp->getRestrictions()->toJson() );
-               $this->assertSame( array( 'test' ), $bp->getGrants() );
-
-               $user = User::newFromName( 'UTSysop' );
-               $bp = BotPassword::newUnsaved( array(
-                       'centralId' => 45,
-                       'appId' => 'DoesNotExist'
-               ) );
-               $this->assertInstanceOf( 'BotPassword', $bp );
-               $this->assertFalse( $bp->isSaved() );
-               $this->assertSame( 45, $bp->getUserCentralId() );
-               $this->assertSame( 'DoesNotExist', $bp->getAppId() );
-
-               $user = User::newFromName( 'UTSysop' );
-               $bp = BotPassword::newUnsaved( array(
-                       'user' => $user,
-                       'appId' => 'BotPassword'
-               ) );
-               $this->assertInstanceOf( 'BotPassword', $bp );
-               $this->assertFalse( $bp->isSaved() );
-
-               $this->assertNull( BotPassword::newUnsaved( array(
-                       'user' => $user,
-                       'appId' => '',
-               ) ) );
-               $this->assertNull( BotPassword::newUnsaved( array(
-                       'user' => $user,
-                       'appId' => str_repeat( 'X', BotPassword::APPID_MAXLENGTH + 1 ),
-               ) ) );
-               $this->assertNull( BotPassword::newUnsaved( array(
-                       'user' => 'UTSysop',
-                       'appId' => 'Ok',
-               ) ) );
-               $this->assertNull( BotPassword::newUnsaved( array(
-                       'username' => 'UTInvalid',
-                       'appId' => 'Ok',
-               ) ) );
-               $this->assertNull( BotPassword::newUnsaved( array(
-                       'appId' => 'Ok',
-               ) ) );
-       }
-
-       public function testGetPassword() {
-               $bp = TestingAccessWrapper::newFromObject( BotPassword::newFromCentralId( 42, 'BotPassword' ) );
-
-               $password = $bp->getPassword();
-               $this->assertInstanceOf( 'Password', $password );
-               $this->assertTrue( $password->equals( 'foobaz' ) );
-
-               $bp->centralId = 44;
-               $password = $bp->getPassword();
-               $this->assertInstanceOf( 'InvalidPassword', $password );
-
-               $bp = TestingAccessWrapper::newFromObject( BotPassword::newFromCentralId( 42, 'BotPassword' ) );
-               $dbw = wfGetDB( DB_MASTER );
-               $dbw->update(
-                       'bot_passwords',
-                       array( 'bp_password' => 'garbage' ),
-                       array( 'bp_user' => 42, 'bp_app_id' => 'BotPassword' ),
-                       __METHOD__
-               );
-               $password = $bp->getPassword();
-               $this->assertInstanceOf( 'InvalidPassword', $password );
-       }
-
-       public function testInvalidateAllPasswordsForUser() {
-               $bp1 = TestingAccessWrapper::newFromObject( BotPassword::newFromCentralId( 42, 'BotPassword' ) );
-               $bp2 = TestingAccessWrapper::newFromObject( BotPassword::newFromCentralId( 43, 'BotPassword' ) );
-
-               $this->assertNotInstanceOf( 'InvalidPassword', $bp1->getPassword(), 'sanity check' );
-               $this->assertNotInstanceOf( 'InvalidPassword', $bp2->getPassword(), 'sanity check' );
-               BotPassword::invalidateAllPasswordsForUser( 'UTSysop' );
-               $this->assertInstanceOf( 'InvalidPassword', $bp1->getPassword() );
-               $this->assertNotInstanceOf( 'InvalidPassword', $bp2->getPassword() );
-
-               $bp = TestingAccessWrapper::newFromObject( BotPassword::newFromCentralId( 42, 'BotPassword' ) );
-               $this->assertInstanceOf( 'InvalidPassword', $bp->getPassword() );
-       }
-
-       public function testRemoveAllPasswordsForUser() {
-               $this->assertNotNull( BotPassword::newFromCentralId( 42, 'BotPassword' ), 'sanity check' );
-               $this->assertNotNull( BotPassword::newFromCentralId( 43, 'BotPassword' ), 'sanity check' );
-
-               BotPassword::removeAllPasswordsForUser( 'UTSysop' );
-
-               $this->assertNull( BotPassword::newFromCentralId( 42, 'BotPassword' ) );
-               $this->assertNotNull( BotPassword::newFromCentralId( 43, 'BotPassword' ) );
-       }
-
-       public function testLogin() {
-               // Test failure when bot passwords aren't enabled
-               $this->setMwGlobals( 'wgEnableBotPasswords', false );
-               $status = BotPassword::login( 'UTSysop@BotPassword', 'foobaz', new FauxRequest );
-               $this->assertEquals( Status::newFatal( 'botpasswords-disabled' ), $status );
-               $this->setMwGlobals( 'wgEnableBotPasswords', true );
-
-               // Test failure when BotPasswordSessionProvider isn't configured
-               $manager = new SessionManager( array(
-                       'logger' => new Psr\Log\NullLogger,
-                       'store' => new EmptyBagOStuff,
-               ) );
-               $reset = MediaWiki\Session\TestUtils::setSessionManagerSingleton( $manager );
-               $this->assertNull(
-                       $manager->getProvider( 'MediaWiki\\Session\\BotPasswordSessionProvider' ),
-                       'sanity check'
-               );
-               $status = BotPassword::login( 'UTSysop@BotPassword', 'foobaz', new FauxRequest );
-               $this->assertEquals( Status::newFatal( 'botpasswords-no-provider' ), $status );
-               ScopedCallback::consume( $reset );
-
-               // Now configure BotPasswordSessionProvider for further tests...
-               $mainConfig = RequestContext::getMain()->getConfig();
-               $config = new HashConfig( array(
-                       'SessionProviders' => $mainConfig->get( 'SessionProviders' ) + array(
-                               'MediaWiki\\Session\\BotPasswordSessionProvider' => array(
-                                       'class' => 'MediaWiki\\Session\\BotPasswordSessionProvider',
-                                       'args' => array( array( 'priority' => 40 ) ),
-                               )
-                       ),
-               ) );
-               $manager = new SessionManager( array(
-                       'config' => new MultiConfig( array( $config, RequestContext::getMain()->getConfig() ) ),
-                       'logger' => new Psr\Log\NullLogger,
-                       'store' => new EmptyBagOStuff,
-               ) );
-               $reset = MediaWiki\Session\TestUtils::setSessionManagerSingleton( $manager );
-
-               // No "@"-thing in the username
-               $status = BotPassword::login( 'UTSysop', 'foobaz', new FauxRequest );
-               $this->assertEquals( Status::newFatal( 'botpasswords-invalid-name', '@' ), $status );
-
-               // No base user
-               $status = BotPassword::login( 'UTDummy@BotPassword', 'foobaz', new FauxRequest );
-               $this->assertEquals( Status::newFatal( 'nosuchuser', 'UTDummy' ), $status );
-
-               // No bot password
-               $status = BotPassword::login( 'UTSysop@DoesNotExist', 'foobaz', new FauxRequest );
-               $this->assertEquals(
-                       Status::newFatal( 'botpasswords-not-exist', 'UTSysop', 'DoesNotExist' ),
-                       $status
-               );
-
-               // Failed restriction
-               $request = $this->getMock( 'FauxRequest', array( 'getIP' ) );
-               $request->expects( $this->any() )->method( 'getIP' )
-                       ->will( $this->returnValue( '10.0.0.1' ) );
-               $status = BotPassword::login( 'UTSysop@BotPassword', 'foobaz', $request );
-               $this->assertEquals( Status::newFatal( 'botpasswords-restriction-failed' ), $status );
-
-               // Wrong password
-               $status = BotPassword::login( 'UTSysop@BotPassword', 'UTSysopPassword', new FauxRequest );
-               $this->assertEquals( Status::newFatal( 'wrongpassword' ), $status );
-
-               // Success!
-               $request = new FauxRequest;
-               $this->assertNotInstanceOf(
-                       'MediaWiki\\Session\\BotPasswordSessionProvider',
-                       $request->getSession()->getProvider(),
-                       'sanity check'
-               );
-               $status = BotPassword::login( 'UTSysop@BotPassword', 'foobaz', $request );
-               $this->assertInstanceOf( 'Status', $status );
-               $this->assertTrue( $status->isGood() );
-               $session = $status->getValue();
-               $this->assertInstanceOf( 'MediaWiki\\Session\\Session', $session );
-               $this->assertInstanceOf(
-                       'MediaWiki\\Session\\BotPasswordSessionProvider', $session->getProvider()
-               );
-               $this->assertSame( $session->getId(), $request->getSession()->getId() );
-
-               ScopedCallback::consume( $reset );
-       }
-
-       /**
-        * @dataProvider provideSave
-        * @param string|null $password
-        */
-       public function testSave( $password ) {
-               $passwordFactory = new \PasswordFactory();
-               $passwordFactory->init( \RequestContext::getMain()->getConfig() );
-               // A is unsalted MD5 (thus fast) ... we don't care about security here, this is test only
-               $passwordFactory->setDefaultType( 'A' );
-
-               $bp = BotPassword::newUnsaved( array(
-                       'centralId' => 42,
-                       'appId' => 'TestSave',
-                       'restrictions' => MWRestrictions::newFromJson( '{"IPAddresses":["127.0.0.0/8"]}' ),
-                       'grants' => array( 'test' ),
-               ) );
-               $this->assertFalse( $bp->isSaved(), 'sanity check' );
-               $this->assertNull(
-                       BotPassword::newFromCentralId( 42, 'TestSave', BotPassword::READ_LATEST ), 'sanity check'
-               );
-
-               $pwhash = $password ? $passwordFactory->newFromPlaintext( $password ) : null;
-               $this->assertFalse( $bp->save( 'update', $pwhash ) );
-               $this->assertTrue( $bp->save( 'insert', $pwhash ) );
-               $bp2 = BotPassword::newFromCentralId( 42, 'TestSave', BotPassword::READ_LATEST );
-               $this->assertInstanceOf( 'BotPassword', $bp2 );
-               $this->assertEquals( $bp->getUserCentralId(), $bp2->getUserCentralId() );
-               $this->assertEquals( $bp->getAppId(), $bp2->getAppId() );
-               $this->assertEquals( $bp->getToken(), $bp2->getToken() );
-               $this->assertEquals( $bp->getRestrictions(), $bp2->getRestrictions() );
-               $this->assertEquals( $bp->getGrants(), $bp2->getGrants() );
-               $pw = TestingAccessWrapper::newFromObject( $bp )->getPassword();
-               if ( $password === null ) {
-                       $this->assertInstanceOf( 'InvalidPassword', $pw );
-               } else {
-                       $this->assertTrue( $pw->equals( $password ) );
-               }
-
-               $token = $bp->getToken();
-               $this->assertFalse( $bp->save( 'insert' ) );
-               $this->assertTrue( $bp->save( 'update' ) );
-               $this->assertNotEquals( $token, $bp->getToken() );
-               $bp2 = BotPassword::newFromCentralId( 42, 'TestSave', BotPassword::READ_LATEST );
-               $this->assertInstanceOf( 'BotPassword', $bp2 );
-               $this->assertEquals( $bp->getToken(), $bp2->getToken() );
-               $pw = TestingAccessWrapper::newFromObject( $bp )->getPassword();
-               if ( $password === null ) {
-                       $this->assertInstanceOf( 'InvalidPassword', $pw );
-               } else {
-                       $this->assertTrue( $pw->equals( $password ) );
-               }
-
-               $pwhash = $passwordFactory->newFromPlaintext( 'XXX' );
-               $token = $bp->getToken();
-               $this->assertTrue( $bp->save( 'update', $pwhash ) );
-               $this->assertNotEquals( $token, $bp->getToken() );
-               $pw = TestingAccessWrapper::newFromObject( $bp )->getPassword();
-               $this->assertTrue( $pw->equals( 'XXX' ) );
-
-               $this->assertTrue( $bp->delete() );
-               $this->assertFalse( $bp->isSaved() );
-               $this->assertNull( BotPassword::newFromCentralId( 42, 'TestSave', BotPassword::READ_LATEST ) );
-
-               $this->assertFalse( $bp->save( 'foobar' ) );
-       }
-
-       public static function provideSave() {
-               return array(
-                       array( null ),
-                       array( 'foobar' ),
-               );
-       }
-}
index 469ad29..4bc7765 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 /**
- * @author Adam Shorland
+ * @author Addshore
  * @covers UserArrayFromResult
  */
 class UserArrayFromResultTest extends MediaWikiTestCase {
index aadc5c9..45c4b8c 100644 (file)
@@ -446,4 +446,89 @@ class UserTest extends MediaWikiTestCase {
                $this->assertGreaterThan(
                        $touched, $user->getDBTouched(), "user_touched increased with casOnTouched() #2" );
        }
+
+       public static function setExtendedLoginCookieDataProvider() {
+               $data = array();
+               $now = time();
+
+               $secondsInDay = 86400;
+
+               // Arbitrary durations, in units of days, to ensure it chooses the
+               // right one.  There is a 5-minute grace period (see testSetExtendedLoginCookie)
+               // to work around slow tests, since we're not currently mocking time() for PHP.
+
+               $durationOne = $secondsInDay * 5;
+               $durationTwo = $secondsInDay * 29;
+               $durationThree = $secondsInDay * 17;
+
+               // If $wgExtendedLoginCookieExpiration is null, then the expiry passed to
+               // set cookie is time() + $wgCookieExpiration
+               $data[] = array(
+                       null,
+                       $durationOne,
+                       $now + $durationOne,
+               );
+
+               // If $wgExtendedLoginCookieExpiration isn't null, then the expiry passed to
+               // set cookie is $now + $wgExtendedLoginCookieExpiration
+               $data[] = array(
+                       $durationTwo,
+                       $durationThree,
+                       $now + $durationTwo,
+               );
+
+               return $data;
+       }
+
+       /**
+        * @dataProvider setExtendedLoginCookieDataProvider
+        * @covers User::getRequest
+        * @covers User::setCookie
+        * @backupGlobals enabled
+        */
+       public function testSetExtendedLoginCookie(
+               $extendedLoginCookieExpiration,
+               $cookieExpiration,
+               $expectedExpiry
+       ) {
+               $this->setMwGlobals( array(
+                       'wgExtendedLoginCookieExpiration' => $extendedLoginCookieExpiration,
+                       'wgCookieExpiration' => $cookieExpiration,
+               ) );
+
+               $response = $this->getMock( 'WebResponse' );
+               $setcookieSpy = $this->any();
+               $response->expects( $setcookieSpy )
+                       ->method( 'setcookie' );
+
+               $request = new MockWebRequest( $response );
+               $user = new UserProxy( User::newFromSession( $request ) );
+               $user->setExtendedLoginCookie( 'name', 'value', true );
+
+               $setcookieInvocations = $setcookieSpy->getInvocations();
+               $setcookieInvocation = end( $setcookieInvocations );
+               $actualExpiry = $setcookieInvocation->parameters[2];
+
+               // TODO: ± 600 seconds compensates for
+               // slow-running tests. However, the dependency on the time
+               // function should be removed.  This requires some way
+               // to mock/isolate User->setExtendedLoginCookie's call to time()
+               $this->assertEquals( $expectedExpiry, $actualExpiry, '', 600 );
+       }
+}
+
+class UserProxy extends User {
+
+       /**
+        * @var User
+        */
+       protected $user;
+
+       public function __construct( User $user ) {
+               $this->user = $user;
+       }
+
+       public function setExtendedLoginCookie( $name, $value, $secure ) {
+               $this->user->setExtendedLoginCookie( $name, $value, $secure );
+       }
 }
diff --git a/tests/phpunit/mocks/session/DummySessionBackend.php b/tests/phpunit/mocks/session/DummySessionBackend.php
deleted file mode 100644 (file)
index f96e61c..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-
-namespace MediaWiki\Session;
-
-/**
- * Dummy session backend
- *
- * This isn't a real backend, but implements some methods that SessionBackend
- * does so tests can run.
- */
-class DummySessionBackend {
-       public $data = array(
-               'foo' => 1,
-               'bar' => 2,
-               0 => 'zero',
-       );
-       public $dirty = false;
-
-       public function &getData() {
-               return $this->data;
-       }
-
-       public function dirty() {
-               $this->dirty = true;
-       }
-
-       public function deregisterSession( $index ) {
-       }
-}
diff --git a/tests/phpunit/mocks/session/DummySessionProvider.php b/tests/phpunit/mocks/session/DummySessionProvider.php
deleted file mode 100644 (file)
index 4468191..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-<?php
-use MediaWiki\Session\SessionProvider;
-use MediaWiki\Session\SessionInfo;
-use MediaWiki\Session\SessionBackend;
-use MediaWiki\Session\UserInfo;
-
-/**
- * Dummy session provider
- *
- * An implementation of a session provider that doesn't actually do anything.
- */
-class DummySessionProvider extends SessionProvider {
-
-       const ID = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
-
-       public function provideSessionInfo( WebRequest $request ) {
-               return new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'provider' => $this,
-                       'id' => self::ID,
-                       'persisted' => true,
-                       'userInfo' => UserInfo::newAnonymous(),
-               ) );
-       }
-
-       public function newSessionInfo( $id = null ) {
-               return new SessionInfo( SessionInfo::MIN_PRIORITY, array(
-                       'id' => $id,
-                       'idIsSafe' => true,
-                       'provider' => $this,
-                       'persisted' => false,
-                       'userInfo' => UserInfo::newAnonymous(),
-               ) );
-       }
-
-       public function persistsSessionId() {
-               return true;
-       }
-
-       public function canChangeUser() {
-               return $this->persistsSessionId();
-       }
-
-       public function persistSession( SessionBackend $session, WebRequest $request ) {
-       }
-
-       public function unpersistSession( WebRequest $request ) {
-       }
-
-       public function immutableSessionCouldExistForUser( $user ) {
-               return false;
-       }
-
-       public function preventImmutableSessionsForUser( $user ) {
-       }
-
-       public function suggestLoginUsername( WebRequest $request ) {
-               return $request->getCookie( 'UserName' );
-       }
-
-}
index 0ae0b21..f080593 100755 (executable)
@@ -74,7 +74,6 @@ class PHPUnitMaintClass extends Maintenance {
                global $wgLanguageConverterCacheType, $wgUseDatabaseMessages;
                global $wgLocaltimezone, $wgLocalisationCacheConf;
                global $wgDevelopmentWarnings;
-               global $wgSessionProviders;
                global $wgJobTypeConf;
 
                // Inject test autoloader
@@ -110,19 +109,6 @@ class PHPUnitMaintClass extends Maintenance {
 
                $wgLocalisationCacheConf['storeClass'] = 'LCStoreNull';
 
-               // Generic MediaWiki\Session\SessionManager configuration for tests
-               // We use CookieSessionProvider because things might be expecting
-               // cookies to show up in a FauxRequest somewhere.
-               $wgSessionProviders = array(
-                       array(
-                               'class' => 'MediaWiki\\Session\\CookieSessionProvider',
-                               'args' => array( array(
-                                       'priority' => 30,
-                                       'callUserSetCookiesHook' => true,
-                               ) ),
-                       ),
-               );
-
                // Bug 44192 Do not attempt to send a real e-mail
                Hooks::clear( 'AlternateUserMailer' );
                Hooks::register(
diff --git a/tests/phpunit/structure/ApiDocumentationTest.php b/tests/phpunit/structure/ApiDocumentationTest.php
new file mode 100644 (file)
index 0000000..d2f96dc
--- /dev/null
@@ -0,0 +1,177 @@
+<?php
+
+/**
+ * Checks that all API modules, core and extensions, have documentation i18n messages
+ *
+ * It won't catch everything since i18n messages can vary based on the wiki
+ * configuration, but it should catch many cases for forgotten i18n.
+ *
+ * @group API
+ */
+class ApiDocumentationTest extends MediaWikiTestCase {
+
+       /** @var ApiMain */
+       private static $main;
+
+       /** @var array Sets of globals to test. Each array element is input to HashConfig */
+       private static $testGlobals = array(
+               array(
+                       'MiserMode' => false,
+                       'AllowCategorizedRecentChanges' => false,
+               ),
+               array(
+                       'MiserMode' => true,
+                       'AllowCategorizedRecentChanges' => true,
+               ),
+       );
+
+       /**
+        * Initialize/fetch the ApiMain instance for testing
+        * @return ApiMain
+        */
+       private static function getMain() {
+               if ( !self::$main ) {
+                       self::$main = new ApiMain( RequestContext::getMain() );
+                       self::$main->getContext()->setLanguage( 'en' );
+               }
+               return self::$main;
+       }
+
+       /**
+        * Test a message
+        * @param Message $msg
+        * @param string $what Which message is being checked
+        */
+       private function checkMessage( $msg, $what ) {
+               $msg = ApiBase::makeMessage( $msg, self::getMain()->getContext() );
+               $this->assertInstanceOf( 'Message', $msg, "$what message" );
+               $this->assertTrue( $msg->exists(), "$what message {$msg->getKey()} exists" );
+       }
+
+       /**
+        * @dataProvider provideDocumentationExists
+        * @param string $path Module path
+        * @param array $globals Globals to set
+        */
+       public function testDocumentationExists( $path, array $globals ) {
+               $main = self::getMain();
+
+               // Set configuration variables
+               $main->getContext()->setConfig( new MultiConfig( array(
+                       new HashConfig( $globals ),
+                       RequestContext::getMain()->getConfig(),
+               ) ) );
+               foreach ( $globals as $k => $v ) {
+                       $this->setMWGlobals( "wg$k", $v );
+               }
+
+               // Fetch module.
+               $module = TestingAccessWrapper::newFromObject( $main->getModuleFromPath( $path ) );
+
+               // Test messages for flags.
+               foreach ( $module->getHelpFlags() as $flag ) {
+                       $this->checkMessage( "api-help-flag-$flag", "Flag $flag" );
+               }
+
+               // Module description messages.
+               $this->checkMessage( $module->getDescriptionMessage(), 'Module description' );
+
+               // Parameters. Lots of messages in here.
+               $params = $module->getFinalParams( ApiBase::GET_VALUES_FOR_HELP );
+               $tags = array();
+               foreach ( $params as $name => $settings ) {
+                       if ( !is_array( $settings ) ) {
+                               $settings = array();
+                       }
+
+                       // Basic description message
+                       if ( isset( $settings[ApiBase::PARAM_HELP_MSG] ) ) {
+                               $msg = $settings[ApiBase::PARAM_HELP_MSG];
+                       } else {
+                               $msg = "apihelp-{$path}-param-{$name}";
+                       }
+                       $this->checkMessage( $msg, "Parameter $name description" );
+
+                       // If param-per-value is in use, each value's message
+                       if ( isset( $settings[ApiBase::PARAM_HELP_MSG_PER_VALUE] ) ) {
+                               $this->assertInternalType( 'array', $settings[ApiBase::PARAM_HELP_MSG_PER_VALUE],
+                                       "Parameter $name PARAM_HELP_MSG_PER_VALUE is array" );
+                               $this->assertInternalType( 'array', $settings[ApiBase::PARAM_TYPE],
+                                       "Parameter $name PARAM_TYPE is array for msg-per-value mode" );
+                               $valueMsgs = $settings[ApiBase::PARAM_HELP_MSG_PER_VALUE];
+                               foreach ( $settings[ApiBase::PARAM_TYPE] as $value ) {
+                                       if ( isset( $valueMsgs[$value] ) ) {
+                                               $msg = $valueMsgs[$value];
+                                       } else {
+                                               $msg = "apihelp-{$path}-paramvalue-{$name}-{$value}";
+                                       }
+                                       $this->checkMessage( $msg, "Parameter $name value $value" );
+                               }
+                       }
+
+                       // Appended messages (e.g. "disabled in miser mode")
+                       if ( isset( $settings[ApiBase::PARAM_HELP_MSG_APPEND] ) ) {
+                               $this->assertInternalType( 'array', $settings[ApiBase::PARAM_HELP_MSG_APPEND],
+                                       "Parameter $name PARAM_HELP_MSG_APPEND is array" );
+                               foreach ( $settings[ApiBase::PARAM_HELP_MSG_APPEND] as $i => $msg ) {
+                                       $this->checkMessage( $msg, "Parameter $name HELP_MSG_APPEND #$i" );
+                               }
+                       }
+
+                       // Info tags (e.g. "only usable in mode 1") are typically shared by
+                       // several parameters, so accumulate them and test them later.
+                       if ( !empty( $settings[ApiBase::PARAM_HELP_MSG_INFO] ) ) {
+                               foreach ( $settings[ApiBase::PARAM_HELP_MSG_INFO] as $i ) {
+                                       $tags[array_shift( $i )] = 1;
+                               }
+                       }
+               }
+
+               // Info tags (e.g. "only usable in mode 1") accumulated above
+               foreach ( $tags as $tag => $dummy ) {
+                       $this->checkMessage( "apihelp-{$path}-paraminfo-{$tag}", "HELP_MSG_INFO tag $tag" );
+               }
+
+               // Messages for examples.
+               foreach ( $module->getExamplesMessages() as $qs => $msg ) {
+                       $this->checkMessage( $msg, "Example $qs" );
+               }
+       }
+
+       public static function provideDocumentationExists() {
+               $main = self::getMain();
+               $paths = self::getSubModulePaths( $main->getModuleManager() );
+               array_unshift( $paths, $main->getModulePath() );
+
+               $ret = array();
+               foreach ( $paths as $path ) {
+                       foreach ( self::$testGlobals as $globals ) {
+                               $g = array();
+                               foreach ( $globals as $k => $v ) {
+                                       $g[] = "$k=" . var_export( $v, 1 );
+                               }
+                               $k = "Module $path with " . join( ', ', $g );
+                               $ret[$k] = array( $path, $globals );
+                       }
+               }
+               return $ret;
+       }
+
+       /**
+        * Return paths of all submodules in an ApiModuleManager, recursively
+        * @param ApiModuleManager $manager
+        * @return string[]
+        */
+       protected static function getSubModulePaths( ApiModuleManager $manager ) {
+               $paths = array();
+               foreach ( $manager->getNames() as $name ) {
+                       $module = $manager->getModule( $name );
+                       $paths[] = $module->getModulePath();
+                       $subManager = $module->getModuleManager();
+                       if ( $subManager ) {
+                               $paths = array_merge( $paths, self::getSubModulePaths( $subManager ) );
+                       }
+               }
+               return $paths;
+       }
+}
index 64def91..8887499 100644 (file)
@@ -2,7 +2,7 @@
 
 /**
  * @covers MediaWikiTestCase
- * @author Adam Shorland
+ * @author Addshore
  */
 class MediaWikiTestCaseTest extends MediaWikiTestCase {
 
index 2e63b7a..932ba7d 100644 (file)
                }
        } );
 
+       QUnit.test( 'makeTitle', 6, function ( assert ) {
+               var cases, i, title, expected,
+                       NS_MAIN = 0,
+                       NS_TALK = 1,
+                       NS_TEMPLATE = 10;
+
+               cases = [
+                       [ NS_TEMPLATE, 'Foo', 'Template:Foo' ],
+                       [ NS_TEMPLATE, 'Category:Foo', 'Template:Category:Foo' ],
+                       [ NS_TEMPLATE, 'Template:Foo', 'Template:Template:Foo' ],
+                       [ NS_TALK, 'Help:Foo', null ],
+                       [ NS_TEMPLATE, '<', null ],
+                       [ NS_MAIN, 'Help:Foo', 'Help:Foo' ]
+               ];
+
+               for ( i = 0; i < cases.length; i++ ) {
+                       title = mw.Title.makeTitle( cases[ i ][ 0 ], cases[ i ][ 1 ] );
+                       expected = cases[ i ][ 2 ];
+                       if ( expected === null ) {
+                               assert.strictEqual( title, expected );
+                       } else {
+                               assert.strictEqual( title.getPrefixedText(), expected );
+                       }
+               }
+       } );
+
        QUnit.test( 'Basic parsing', 21, function ( assert ) {
                var title;
                title = new mw.Title( 'File:Foo_bar.JPG' );
index ed3f2cd..fe5530b 100644 (file)
                } );
        } );
 
+       QUnit.test( 'mw.loader.implement( empty )', 1, function ( assert ) {
+               mw.loader.implement( 'test.empty' );
+               assert.strictEqual( mw.loader.getState( 'test.empty' ), 'ready' );
+       } );
+
        QUnit.test( 'mw.loader with broken indirect dependency', 4, function ( assert ) {
                // don't emit an error event
                this.sandbox.stub( mw, 'track' );