Merge "jquery.makeCollapsible: No tabindex="0" for default buttons"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Thu, 10 Jul 2014 12:28:31 +0000 (12:28 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 10 Jul 2014 12:28:31 +0000 (12:28 +0000)
1078 files changed:
.travis.yml
RELEASE-NOTES-1.24
StartProfiler.sample
docs/hooks.txt
docs/scripts.txt
includes/AutoLoader.php
includes/Block.php
includes/Category.php
includes/CategoryViewer.php
includes/ChangeTags.php
includes/DefaultSettings.php
includes/Defines.php
includes/EditPage.php
includes/GitInfo.php
includes/GlobalFunctions.php
includes/Hooks.php
includes/HtmlFormatter.php
includes/ImageQueryPage.php [deleted file]
includes/MWTimestamp.php
includes/MagicWord.php
includes/Message.php
includes/MimeMagic.php
includes/Namespace.php
includes/OutputPage.php
includes/PHPVersionError.php
includes/PageQueryPage.php [deleted file]
includes/Preferences.php
includes/QueryPage.php [deleted file]
includes/Revision.php
includes/Sanitizer.php
includes/Setup.php
includes/SiteConfiguration.php
includes/SiteStats.php
includes/Skin.php
includes/SkinTemplate.php
includes/StubObject.php
includes/Title.php
includes/User.php
includes/UserMailer.php
includes/WebStart.php
includes/actions/EditAction.php
includes/actions/HistoryAction.php
includes/actions/InfoAction.php
includes/actions/RevertAction.php
includes/api/ApiBase.php
includes/api/ApiImageRotate.php
includes/api/ApiParse.php
includes/api/ApiPurge.php
includes/api/ApiQuery.php
includes/api/ApiQueryAllUsers.php
includes/api/ApiQueryBase.php
includes/api/ApiQueryRecentChanges.php
includes/api/ApiQueryUserContributions.php
includes/api/ApiResult.php
includes/api/ApiSetNotificationTimestamp.php
includes/api/ApiWatch.php
includes/cache/CacheDependency.php
includes/cache/LocalisationCache.php
includes/clientpool/RedisConnectionPool.php
includes/content/ContentHandler.php
includes/context/RequestContext.php
includes/dao/IDBAccessObject.php
includes/db/CloneDatabase.php
includes/db/Database.php
includes/db/DatabaseMssql.php
includes/db/DatabaseMysqlBase.php
includes/db/DatabasePostgres.php
includes/db/LBFactorySingle.php
includes/db/LoadBalancer.php
includes/debug/Debug.php
includes/diff/TableDiffFormatter.php
includes/filebackend/FSFileBackend.php
includes/filerepo/FileRepo.php
includes/filerepo/ForeignAPIRepo.php
includes/filerepo/RepoGroup.php
includes/filerepo/file/File.php
includes/gallery/ImageGalleryBase.php
includes/htmlform/HTMLCheckField.php [changed mode: 0755->0644]
includes/htmlform/HTMLForm.php
includes/htmlform/HTMLFormField.php
includes/htmlform/HTMLSelectAndOtherField.php
includes/htmlform/HTMLSelectField.php
includes/htmlform/HTMLSelectOrOtherField.php
includes/installer/DatabaseUpdater.php
includes/installer/Installer.php
includes/installer/MssqlInstaller.php
includes/installer/MssqlUpdater.php
includes/installer/MysqlUpdater.php
includes/installer/OracleUpdater.php
includes/installer/PostgresInstaller.php
includes/installer/PostgresUpdater.php
includes/installer/SqliteUpdater.php
includes/installer/WebInstallerPage.php
includes/installer/i18n/bar.json
includes/installer/i18n/br.json
includes/installer/i18n/ce.json
includes/installer/i18n/cs.json
includes/installer/i18n/de.json
includes/installer/i18n/en.json
includes/installer/i18n/es.json
includes/installer/i18n/fr.json
includes/installer/i18n/haw.json
includes/installer/i18n/he.json
includes/installer/i18n/it.json
includes/installer/i18n/mk.json
includes/installer/i18n/nb.json
includes/installer/i18n/pt-br.json
includes/installer/i18n/qqq.json
includes/installer/i18n/ru.json
includes/installer/i18n/sv.json
includes/installer/i18n/tyv.json [new file with mode: 0644]
includes/installer/i18n/yi.json
includes/installer/i18n/zh-hans.json
includes/jobqueue/JobQueueRedis.php
includes/libs/CSSMin.php
includes/libs/HashRing.php
includes/libs/HttpStatus.php
includes/logging/LogEventsList.php
includes/logging/PageLangLogFormatter.php [new file with mode: 0644]
includes/logging/PatrolLog.php
includes/media/Bitmap.php
includes/media/FormatMetadata.php
includes/media/ImageHandler.php
includes/media/Jpeg.php
includes/media/MediaHandler.php
includes/media/PNG.php
includes/media/XCF.php
includes/media/XMP.php
includes/mime.info
includes/mime.types
includes/objectcache/BagOStuff.php
includes/objectcache/RedisBagOStuff.php
includes/page/Article.php
includes/page/ImagePage.php
includes/page/WikiPage.php
includes/parser/CoreParserFunctions.php
includes/parser/LinkHolderArray.php
includes/parser/Parser.php
includes/parser/ParserOptions.php
includes/poolcounter/PoolCounterRedis.php
includes/profiler/Profiler.php
includes/revisiondelete/RevisionDeleteUser.php
includes/search/SearchMySQL.php
includes/search/SearchResultSet.php
includes/search/SearchSqlite.php
includes/specialpage/FormSpecialPage.php
includes/specialpage/ImageQueryPage.php [new file with mode: 0644]
includes/specialpage/PageQueryPage.php [new file with mode: 0644]
includes/specialpage/QueryPage.php [new file with mode: 0644]
includes/specialpage/RedirectSpecialPage.php
includes/specialpage/SpecialPage.php
includes/specialpage/SpecialPageFactory.php
includes/specialpage/WantedQueryPage.php [new file with mode: 0644]
includes/specials/SpecialActiveusers.php
includes/specials/SpecialAllMessages.php
includes/specials/SpecialAllPages.php
includes/specials/SpecialContributions.php
includes/specials/SpecialCreateAccount.php
includes/specials/SpecialDeletedContributions.php
includes/specials/SpecialEditWatchlist.php
includes/specials/SpecialJavaScriptTest.php
includes/specials/SpecialLinkSearch.php
includes/specials/SpecialListfiles.php
includes/specials/SpecialLog.php
includes/specials/SpecialMovepage.php
includes/specials/SpecialPageLanguage.php [new file with mode: 0644]
includes/specials/SpecialPagesWithProp.php
includes/specials/SpecialPrefixindex.php
includes/specials/SpecialRevisiondelete.php
includes/specials/SpecialSearch.php
includes/specials/SpecialUpload.php
includes/specials/SpecialVersion.php
includes/specials/SpecialWantedfiles.php
includes/specials/SpecialWatchlist.php
includes/templates/Usercreate.php
includes/templates/Userlogin.php
includes/title/MediaWikiTitleCodec.php
includes/upload/UploadBase.php
includes/utils/UIDGenerator.php
languages/Language.php
languages/Names.php
languages/classes/LanguageRu.php
languages/i18n/ace.json
languages/i18n/aeb.json
languages/i18n/af.json
languages/i18n/aln.json
languages/i18n/am.json
languages/i18n/an.json
languages/i18n/ang.json
languages/i18n/ar.json
languages/i18n/arc.json
languages/i18n/arn.json
languages/i18n/ary.json
languages/i18n/arz.json
languages/i18n/as.json
languages/i18n/ast.json
languages/i18n/avk.json
languages/i18n/az.json
languages/i18n/azb.json
languages/i18n/ba.json
languages/i18n/bar.json
languages/i18n/bcc.json
languages/i18n/bcl.json
languages/i18n/be-tarask.json
languages/i18n/be.json
languages/i18n/bg.json
languages/i18n/bho.json
languages/i18n/bjn.json
languages/i18n/bn.json
languages/i18n/bo.json
languages/i18n/bpy.json
languages/i18n/br.json
languages/i18n/bs.json
languages/i18n/ca.json
languages/i18n/cdo.json
languages/i18n/ce.json
languages/i18n/ceb.json
languages/i18n/ch.json
languages/i18n/chy.json [new file with mode: 0644]
languages/i18n/ckb.json
languages/i18n/co.json
languages/i18n/cps.json
languages/i18n/cr.json [new file with mode: 0644]
languages/i18n/crh-cyrl.json
languages/i18n/crh-latn.json
languages/i18n/cs.json
languages/i18n/csb.json
languages/i18n/cu.json
languages/i18n/cv.json
languages/i18n/cy.json
languages/i18n/da.json
languages/i18n/de.json
languages/i18n/diq.json
languages/i18n/dsb.json
languages/i18n/dtp.json
languages/i18n/dv.json
languages/i18n/egl.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/ext.json
languages/i18n/fa.json
languages/i18n/fi.json
languages/i18n/fo.json
languages/i18n/fr.json
languages/i18n/frp.json
languages/i18n/frr.json
languages/i18n/fur.json
languages/i18n/fy.json
languages/i18n/ga.json
languages/i18n/gag.json
languages/i18n/gan-hans.json
languages/i18n/gan-hant.json
languages/i18n/gd.json
languages/i18n/gl.json
languages/i18n/grc.json
languages/i18n/gsw.json
languages/i18n/gu.json
languages/i18n/gv.json
languages/i18n/hak.json
languages/i18n/haw.json
languages/i18n/he.json
languages/i18n/hi.json
languages/i18n/hif-latn.json
languages/i18n/hil.json
languages/i18n/hr.json
languages/i18n/hrx.json
languages/i18n/hsb.json
languages/i18n/ht.json
languages/i18n/hu.json
languages/i18n/hy.json
languages/i18n/ia.json
languages/i18n/id.json
languages/i18n/ie.json
languages/i18n/ig.json
languages/i18n/ilo.json
languages/i18n/inh.json
languages/i18n/io.json
languages/i18n/is.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/jam.json
languages/i18n/jv.json
languages/i18n/ka.json
languages/i18n/kaa.json
languages/i18n/kab.json
languages/i18n/kbd-cyrl.json
languages/i18n/khw.json
languages/i18n/ki.json [new file with mode: 0644]
languages/i18n/kiu.json
languages/i18n/kk-arab.json
languages/i18n/kk-cyrl.json
languages/i18n/kk-latn.json
languages/i18n/km.json
languages/i18n/kn.json
languages/i18n/ko.json
languages/i18n/krc.json
languages/i18n/ksh.json
languages/i18n/ku-latn.json
languages/i18n/kw.json
languages/i18n/ky.json
languages/i18n/la.json
languages/i18n/lad.json
languages/i18n/lb.json
languages/i18n/lez.json
languages/i18n/lfn.json
languages/i18n/lg.json
languages/i18n/li.json
languages/i18n/lij.json
languages/i18n/lo.json
languages/i18n/loz.json
languages/i18n/lt.json
languages/i18n/ltg.json
languages/i18n/lus.json
languages/i18n/lv.json
languages/i18n/lzh.json
languages/i18n/mai.json
languages/i18n/map-bms.json
languages/i18n/mdf.json
languages/i18n/mg.json
languages/i18n/mhr.json
languages/i18n/min.json
languages/i18n/mk.json
languages/i18n/ml.json
languages/i18n/mn.json
languages/i18n/mr.json
languages/i18n/ms.json
languages/i18n/mt.json
languages/i18n/mwl.json
languages/i18n/my.json
languages/i18n/mzn.json
languages/i18n/nah.json
languages/i18n/nan.json
languages/i18n/nap.json
languages/i18n/nb.json
languages/i18n/nds-nl.json
languages/i18n/nds.json
languages/i18n/ne.json
languages/i18n/nl.json
languages/i18n/nn.json
languages/i18n/nrm.json [new file with mode: 0644]
languages/i18n/nso.json
languages/i18n/oc.json
languages/i18n/or.json
languages/i18n/os.json
languages/i18n/pa.json
languages/i18n/pam.json
languages/i18n/pcd.json
languages/i18n/pdc.json
languages/i18n/pfl.json
languages/i18n/pl.json
languages/i18n/pms.json
languages/i18n/pnb.json
languages/i18n/pnt.json
languages/i18n/prg.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/qu.json
languages/i18n/qug.json
languages/i18n/rm.json
languages/i18n/ro.json
languages/i18n/roa-tara.json
languages/i18n/ru.json
languages/i18n/rue.json
languages/i18n/rw.json
languages/i18n/sa.json
languages/i18n/sah.json
languages/i18n/sat.json
languages/i18n/sc.json
languages/i18n/scn.json
languages/i18n/sco.json
languages/i18n/sdc.json
languages/i18n/se.json
languages/i18n/sei.json
languages/i18n/sgs.json
languages/i18n/sh.json
languages/i18n/shi.json
languages/i18n/si.json
languages/i18n/sk.json
languages/i18n/sl.json
languages/i18n/sli.json
languages/i18n/so.json
languages/i18n/sq.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/srn.json
languages/i18n/stq.json
languages/i18n/su.json
languages/i18n/sv.json
languages/i18n/sw.json
languages/i18n/szl.json
languages/i18n/ta.json
languages/i18n/tcy.json
languages/i18n/te.json
languages/i18n/tet.json
languages/i18n/tg-cyrl.json
languages/i18n/tg-latn.json
languages/i18n/th.json
languages/i18n/tk.json
languages/i18n/tl.json
languages/i18n/tly.json
languages/i18n/to.json
languages/i18n/tpi.json
languages/i18n/tr.json
languages/i18n/tru.json
languages/i18n/ts.json
languages/i18n/tt-cyrl.json
languages/i18n/tt-latn.json
languages/i18n/tw.json [new file with mode: 0644]
languages/i18n/tyv.json
languages/i18n/tzm.json [new file with mode: 0644]
languages/i18n/ug-arab.json
languages/i18n/uk.json
languages/i18n/ur.json
languages/i18n/uz.json
languages/i18n/vec.json
languages/i18n/vep.json
languages/i18n/vi.json
languages/i18n/vmf.json
languages/i18n/vo.json
languages/i18n/vot.json
languages/i18n/vro.json
languages/i18n/wa.json
languages/i18n/war.json
languages/i18n/wo.json
languages/i18n/wuu.json
languages/i18n/xal.json
languages/i18n/xmf.json
languages/i18n/yi.json
languages/i18n/yo.json
languages/i18n/yue.json
languages/i18n/zea.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
languages/messages/MessagesEn.php
languages/messages/MessagesKo.php
maintenance/Maintenance.php
maintenance/archives/patch-page_lang.sql [new file with mode: 0644]
maintenance/deleteArchivedFiles.inc
maintenance/initSiteStats.php
maintenance/install.php
maintenance/mssql/archives/named_constraints.sql [new file with mode: 0644]
maintenance/mssql/archives/patch-page_page_lang.sql [new file with mode: 0644]
maintenance/mssql/tables.sql
maintenance/oracle/archives/patch-page-page_lang.sql [new file with mode: 0644]
maintenance/oracle/tables.sql
maintenance/pageExists.php
maintenance/postgres/tables.sql
maintenance/resources/update-oojs-ui.sh
maintenance/sqlite/archives/patch-page-page_lang.sql [new file with mode: 0644]
maintenance/tables.sql
maintenance/updateSpecialPages.php
mw-config/index.php
resources/Resources.php
resources/lib/es5-shim/es5-shim.js [new file with mode: 0644]
resources/lib/jquery.ui/themes/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png [changed mode: 0755->0644]
resources/lib/jquery.ui/themes/smoothness/images/ui-bg_flat_75_ffffff_40x100.png [changed mode: 0755->0644]
resources/lib/jquery.ui/themes/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png [changed mode: 0755->0644]
resources/lib/jquery.ui/themes/smoothness/images/ui-bg_glass_65_ffffff_1x400.png [changed mode: 0755->0644]
resources/lib/jquery.ui/themes/smoothness/images/ui-bg_glass_75_dadada_1x400.png [changed mode: 0755->0644]
resources/lib/jquery.ui/themes/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png [changed mode: 0755->0644]
resources/lib/jquery.ui/themes/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png [changed mode: 0755->0644]
resources/lib/jquery.ui/themes/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png [changed mode: 0755->0644]
resources/lib/jquery.ui/themes/smoothness/images/ui-icons_222222_256x240.png [changed mode: 0755->0644]
resources/lib/jquery.ui/themes/smoothness/images/ui-icons_2e83ff_256x240.png [changed mode: 0755->0644]
resources/lib/jquery.ui/themes/smoothness/images/ui-icons_454545_256x240.png [changed mode: 0755->0644]
resources/lib/jquery.ui/themes/smoothness/images/ui-icons_888888_256x240.png [changed mode: 0755->0644]
resources/lib/jquery.ui/themes/smoothness/images/ui-icons_cd0a0a_256x240.png [changed mode: 0755->0644]
resources/lib/jquery/jquery.jStorage.js
resources/lib/json2/json2.js [new file with mode: 0644]
resources/lib/moment/lang/ar-sa.js [new file with mode: 0644]
resources/lib/moment/lang/ar.js
resources/lib/moment/lang/az.js [new file with mode: 0644]
resources/lib/moment/lang/bn.js [new file with mode: 0644]
resources/lib/moment/lang/cy.js
resources/lib/moment/lang/da.js
resources/lib/moment/lang/de-at.js [new file with mode: 0644]
resources/lib/moment/lang/el.js
resources/lib/moment/lang/it.js
resources/lib/moment/lang/lt.js
resources/lib/moment/lang/pt.js
resources/lib/moment/lang/ru.js
resources/lib/moment/lang/sr-cyr.js [deleted file]
resources/lib/moment/lang/sr-cyrl.js [new file with mode: 0644]
resources/lib/moment/lang/tzm-la.js [deleted file]
resources/lib/moment/lang/tzm-latn.js [new file with mode: 0644]
resources/lib/moment/moment.js
resources/lib/oojs-ui/i18n/lv.json
resources/lib/oojs-ui/images/icons/accept.svg
resources/lib/oojs-ui/images/icons/add-item.svg
resources/lib/oojs-ui/images/icons/advanced.svg
resources/lib/oojs-ui/images/icons/alert.svg
resources/lib/oojs-ui/images/icons/arched-arrow-ltr.svg
resources/lib/oojs-ui/images/icons/arched-arrow-rtl.svg
resources/lib/oojs-ui/images/icons/check.svg
resources/lib/oojs-ui/images/icons/clear.svg
resources/lib/oojs-ui/images/icons/close.svg
resources/lib/oojs-ui/images/icons/code.svg
resources/lib/oojs-ui/images/icons/collapse.svg
resources/lib/oojs-ui/images/icons/comment.svg
resources/lib/oojs-ui/images/icons/expand.svg
resources/lib/oojs-ui/images/icons/help.svg
resources/lib/oojs-ui/images/icons/history.svg
resources/lib/oojs-ui/images/icons/info.svg
resources/lib/oojs-ui/images/icons/link.svg
resources/lib/oojs-ui/images/icons/menu.svg
resources/lib/oojs-ui/images/icons/move-ltr.svg
resources/lib/oojs-ui/images/icons/move-rtl.svg
resources/lib/oojs-ui/images/icons/picture.svg
resources/lib/oojs-ui/images/icons/remove-item.svg
resources/lib/oojs-ui/images/icons/remove.svg
resources/lib/oojs-ui/images/icons/search.svg
resources/lib/oojs-ui/images/icons/settings.svg
resources/lib/oojs-ui/images/icons/tag.svg
resources/lib/oojs-ui/images/icons/window.svg
resources/lib/oojs-ui/images/indicators/alert.svg
resources/lib/oojs-ui/images/indicators/arrow-down.svg
resources/lib/oojs-ui/images/indicators/arrow-ltr.svg
resources/lib/oojs-ui/images/indicators/arrow-rtl.svg
resources/lib/oojs-ui/images/indicators/arrow-up.svg
resources/lib/oojs-ui/images/indicators/required.svg
resources/lib/oojs-ui/oojs-ui-agora.css
resources/lib/oojs-ui/oojs-ui-apex.css
resources/lib/oojs-ui/oojs-ui.js
resources/lib/oojs-ui/oojs-ui.svg.css
resources/lib/oojs/oojs.js
resources/src/es5-skip.js [new file with mode: 0644]
resources/src/jquery.json-deprecate.js [new file with mode: 0644]
resources/src/jquery.ui-themes/vector/jquery.ui.core.css
resources/src/jquery/jquery.qunit.completenessTest.js
resources/src/json-skip.js [new file with mode: 0644]
resources/src/mediawiki.language/languages/ru.js
resources/src/mediawiki.less/mediawiki.mixins.less
resources/src/mediawiki.page/mediawiki.page.gallery.js
resources/src/mediawiki.skinning/content.parsoid.less
resources/src/mediawiki.special/mediawiki.special.block.css
resources/src/mediawiki.special/mediawiki.special.css
resources/src/mediawiki.special/mediawiki.special.pageLanguage.js [new file with mode: 0644]
resources/src/mediawiki.special/mediawiki.special.search.css
resources/src/mediawiki.ui/components/default/buttons.less
resources/src/mediawiki.ui/components/default/forms.less
resources/src/mediawiki.ui/mixins/effects.less
resources/src/mediawiki/mediawiki.feedback.js
resources/src/mediawiki/mediawiki.inspect.js
resources/src/mediawiki/mediawiki.js
resources/src/mediawiki/mediawiki.searchSuggest.js
skins/.gitignore
skins/MonoBook/i18n/aln.json [new file with mode: 0644]
skins/MonoBook/i18n/an.json [new file with mode: 0644]
skins/MonoBook/i18n/ar.json [new file with mode: 0644]
skins/MonoBook/i18n/arz.json [new file with mode: 0644]
skins/MonoBook/i18n/ast.json [new file with mode: 0644]
skins/MonoBook/i18n/az.json [new file with mode: 0644]
skins/MonoBook/i18n/bcc.json [new file with mode: 0644]
skins/MonoBook/i18n/bcl.json [new file with mode: 0644]
skins/MonoBook/i18n/be-tarask.json [new file with mode: 0644]
skins/MonoBook/i18n/be.json [new file with mode: 0644]
skins/MonoBook/i18n/bg.json [new file with mode: 0644]
skins/MonoBook/i18n/bn.json [new file with mode: 0644]
skins/MonoBook/i18n/br.json [new file with mode: 0644]
skins/MonoBook/i18n/bs.json [new file with mode: 0644]
skins/MonoBook/i18n/ca.json [new file with mode: 0644]
skins/MonoBook/i18n/ce.json [new file with mode: 0644]
skins/MonoBook/i18n/ckb.json [new file with mode: 0644]
skins/MonoBook/i18n/crh-cyrl.json [new file with mode: 0644]
skins/MonoBook/i18n/crh-latn.json [new file with mode: 0644]
skins/MonoBook/i18n/cs.json [new file with mode: 0644]
skins/MonoBook/i18n/da.json [new file with mode: 0644]
skins/MonoBook/i18n/de.json [new file with mode: 0644]
skins/MonoBook/i18n/diq.json [new file with mode: 0644]
skins/MonoBook/i18n/dsb.json [new file with mode: 0644]
skins/MonoBook/i18n/el.json [new file with mode: 0644]
skins/MonoBook/i18n/eo.json [new file with mode: 0644]
skins/MonoBook/i18n/es.json [new file with mode: 0644]
skins/MonoBook/i18n/et.json [new file with mode: 0644]
skins/MonoBook/i18n/eu.json [new file with mode: 0644]
skins/MonoBook/i18n/ext.json [new file with mode: 0644]
skins/MonoBook/i18n/fa.json [new file with mode: 0644]
skins/MonoBook/i18n/fi.json [new file with mode: 0644]
skins/MonoBook/i18n/fr.json [new file with mode: 0644]
skins/MonoBook/i18n/frp.json [new file with mode: 0644]
skins/MonoBook/i18n/fur.json [new file with mode: 0644]
skins/MonoBook/i18n/ga.json [new file with mode: 0644]
skins/MonoBook/i18n/gan-hans.json [new file with mode: 0644]
skins/MonoBook/i18n/gan-hant.json [new file with mode: 0644]
skins/MonoBook/i18n/gd.json [new file with mode: 0644]
skins/MonoBook/i18n/gl.json [new file with mode: 0644]
skins/MonoBook/i18n/hak.json [new file with mode: 0644]
skins/MonoBook/i18n/he.json [new file with mode: 0644]
skins/MonoBook/i18n/hi.json [new file with mode: 0644]
skins/MonoBook/i18n/hr.json [new file with mode: 0644]
skins/MonoBook/i18n/hsb.json [new file with mode: 0644]
skins/MonoBook/i18n/hu.json [new file with mode: 0644]
skins/MonoBook/i18n/hy.json [new file with mode: 0644]
skins/MonoBook/i18n/ia.json [new file with mode: 0644]
skins/MonoBook/i18n/id.json [new file with mode: 0644]
skins/MonoBook/i18n/is.json [new file with mode: 0644]
skins/MonoBook/i18n/it.json [new file with mode: 0644]
skins/MonoBook/i18n/ja.json [new file with mode: 0644]
skins/MonoBook/i18n/ka.json [new file with mode: 0644]
skins/MonoBook/i18n/kk-arab.json [new file with mode: 0644]
skins/MonoBook/i18n/kk-cyrl.json [new file with mode: 0644]
skins/MonoBook/i18n/kk-latn.json [new file with mode: 0644]
skins/MonoBook/i18n/km.json [new file with mode: 0644]
skins/MonoBook/i18n/ko.json [new file with mode: 0644]
skins/MonoBook/i18n/krc.json [new file with mode: 0644]
skins/MonoBook/i18n/ksh.json [new file with mode: 0644]
skins/MonoBook/i18n/ku-latn.json [new file with mode: 0644]
skins/MonoBook/i18n/lb.json [new file with mode: 0644]
skins/MonoBook/i18n/lt.json [new file with mode: 0644]
skins/MonoBook/i18n/lzh.json [new file with mode: 0644]
skins/MonoBook/i18n/mg.json [new file with mode: 0644]
skins/MonoBook/i18n/min.json [new file with mode: 0644]
skins/MonoBook/i18n/mk.json [new file with mode: 0644]
skins/MonoBook/i18n/ml.json [new file with mode: 0644]
skins/MonoBook/i18n/mr.json [new file with mode: 0644]
skins/MonoBook/i18n/ms.json [new file with mode: 0644]
skins/MonoBook/i18n/mt.json [new file with mode: 0644]
skins/MonoBook/i18n/mwl.json [new file with mode: 0644]
skins/MonoBook/i18n/nb.json [new file with mode: 0644]
skins/MonoBook/i18n/nds-nl.json [new file with mode: 0644]
skins/MonoBook/i18n/nds.json [new file with mode: 0644]
skins/MonoBook/i18n/ne.json [new file with mode: 0644]
skins/MonoBook/i18n/new.json [new file with mode: 0644]
skins/MonoBook/i18n/nl.json [new file with mode: 0644]
skins/MonoBook/i18n/nn.json [new file with mode: 0644]
skins/MonoBook/i18n/nv.json [new file with mode: 0644]
skins/MonoBook/i18n/oc.json [new file with mode: 0644]
skins/MonoBook/i18n/os.json [new file with mode: 0644]
skins/MonoBook/i18n/pa.json [new file with mode: 0644]
skins/MonoBook/i18n/pam.json [new file with mode: 0644]
skins/MonoBook/i18n/pdt.json [new file with mode: 0644]
skins/MonoBook/i18n/pl.json [new file with mode: 0644]
skins/MonoBook/i18n/pms.json [new file with mode: 0644]
skins/MonoBook/i18n/ps.json [new file with mode: 0644]
skins/MonoBook/i18n/pt-br.json [new file with mode: 0644]
skins/MonoBook/i18n/pt.json [new file with mode: 0644]
skins/MonoBook/i18n/qqq.json
skins/MonoBook/i18n/qu.json [new file with mode: 0644]
skins/MonoBook/i18n/rm.json [new file with mode: 0644]
skins/MonoBook/i18n/ro.json [new file with mode: 0644]
skins/MonoBook/i18n/roa-tara.json [new file with mode: 0644]
skins/MonoBook/i18n/ru.json [new file with mode: 0644]
skins/MonoBook/i18n/sa.json [new file with mode: 0644]
skins/MonoBook/i18n/sah.json [new file with mode: 0644]
skins/MonoBook/i18n/scn.json [new file with mode: 0644]
skins/MonoBook/i18n/si.json [new file with mode: 0644]
skins/MonoBook/i18n/sk.json [new file with mode: 0644]
skins/MonoBook/i18n/sq.json [new file with mode: 0644]
skins/MonoBook/i18n/sr-ec.json [new file with mode: 0644]
skins/MonoBook/i18n/sr-el.json [new file with mode: 0644]
skins/MonoBook/i18n/stq.json [new file with mode: 0644]
skins/MonoBook/i18n/su.json [new file with mode: 0644]
skins/MonoBook/i18n/sv.json [new file with mode: 0644]
skins/MonoBook/i18n/te.json [new file with mode: 0644]
skins/MonoBook/i18n/th.json [new file with mode: 0644]
skins/MonoBook/i18n/tl.json [new file with mode: 0644]
skins/MonoBook/i18n/tr.json [new file with mode: 0644]
skins/MonoBook/i18n/tt-cyrl.json [new file with mode: 0644]
skins/MonoBook/i18n/tt-latn.json [new file with mode: 0644]
skins/MonoBook/i18n/tyv.json [new file with mode: 0644]
skins/MonoBook/i18n/ug-arab.json [new file with mode: 0644]
skins/MonoBook/i18n/uk.json [new file with mode: 0644]
skins/MonoBook/i18n/vep.json [new file with mode: 0644]
skins/MonoBook/i18n/vi.json [new file with mode: 0644]
skins/MonoBook/i18n/vmf.json [new file with mode: 0644]
skins/MonoBook/i18n/vo.json [new file with mode: 0644]
skins/MonoBook/i18n/vro.json [new file with mode: 0644]
skins/MonoBook/i18n/wa.json [new file with mode: 0644]
skins/MonoBook/i18n/wo.json [new file with mode: 0644]
skins/MonoBook/i18n/yi.json [new file with mode: 0644]
skins/MonoBook/i18n/yue.json [new file with mode: 0644]
skins/MonoBook/i18n/zh-hans.json [new file with mode: 0644]
skins/MonoBook/i18n/zh-hant.json [new file with mode: 0644]
skins/Vector/Vector.php
skins/Vector/components/common.less
skins/Vector/i18n/ab.json [new file with mode: 0644]
skins/Vector/i18n/ace.json [new file with mode: 0644]
skins/Vector/i18n/ady-cyrl.json [new file with mode: 0644]
skins/Vector/i18n/aeb.json [new file with mode: 0644]
skins/Vector/i18n/af.json [new file with mode: 0644]
skins/Vector/i18n/aln.json [new file with mode: 0644]
skins/Vector/i18n/am.json [new file with mode: 0644]
skins/Vector/i18n/an.json [new file with mode: 0644]
skins/Vector/i18n/ang.json [new file with mode: 0644]
skins/Vector/i18n/ar.json [new file with mode: 0644]
skins/Vector/i18n/arc.json [new file with mode: 0644]
skins/Vector/i18n/arn.json [new file with mode: 0644]
skins/Vector/i18n/aro.json [new file with mode: 0644]
skins/Vector/i18n/arq.json [new file with mode: 0644]
skins/Vector/i18n/ary.json [new file with mode: 0644]
skins/Vector/i18n/arz.json [new file with mode: 0644]
skins/Vector/i18n/as.json [new file with mode: 0644]
skins/Vector/i18n/ase.json [new file with mode: 0644]
skins/Vector/i18n/ast.json [new file with mode: 0644]
skins/Vector/i18n/av.json [new file with mode: 0644]
skins/Vector/i18n/avk.json [new file with mode: 0644]
skins/Vector/i18n/az.json [new file with mode: 0644]
skins/Vector/i18n/azb.json [new file with mode: 0644]
skins/Vector/i18n/ba.json [new file with mode: 0644]
skins/Vector/i18n/ban.json [new file with mode: 0644]
skins/Vector/i18n/bar.json [new file with mode: 0644]
skins/Vector/i18n/bbc-latn.json [new file with mode: 0644]
skins/Vector/i18n/bcc.json [new file with mode: 0644]
skins/Vector/i18n/bcl.json [new file with mode: 0644]
skins/Vector/i18n/be-tarask.json [new file with mode: 0644]
skins/Vector/i18n/be.json [new file with mode: 0644]
skins/Vector/i18n/bew.json [new file with mode: 0644]
skins/Vector/i18n/bg.json [new file with mode: 0644]
skins/Vector/i18n/bho.json [new file with mode: 0644]
skins/Vector/i18n/bi.json [new file with mode: 0644]
skins/Vector/i18n/bjn.json [new file with mode: 0644]
skins/Vector/i18n/bm.json [new file with mode: 0644]
skins/Vector/i18n/bn.json [new file with mode: 0644]
skins/Vector/i18n/bo.json [new file with mode: 0644]
skins/Vector/i18n/bpy.json [new file with mode: 0644]
skins/Vector/i18n/br.json [new file with mode: 0644]
skins/Vector/i18n/brh.json [new file with mode: 0644]
skins/Vector/i18n/bs.json [new file with mode: 0644]
skins/Vector/i18n/bug.json [new file with mode: 0644]
skins/Vector/i18n/bxr.json [new file with mode: 0644]
skins/Vector/i18n/ca.json [new file with mode: 0644]
skins/Vector/i18n/cdo.json [new file with mode: 0644]
skins/Vector/i18n/ce.json [new file with mode: 0644]
skins/Vector/i18n/ceb.json [new file with mode: 0644]
skins/Vector/i18n/ckb.json [new file with mode: 0644]
skins/Vector/i18n/co.json [new file with mode: 0644]
skins/Vector/i18n/cps.json [new file with mode: 0644]
skins/Vector/i18n/crh-cyrl.json [new file with mode: 0644]
skins/Vector/i18n/crh-latn.json [new file with mode: 0644]
skins/Vector/i18n/cs.json [new file with mode: 0644]
skins/Vector/i18n/csb.json [new file with mode: 0644]
skins/Vector/i18n/cu.json [new file with mode: 0644]
skins/Vector/i18n/cv.json [new file with mode: 0644]
skins/Vector/i18n/cy.json [new file with mode: 0644]
skins/Vector/i18n/da.json [new file with mode: 0644]
skins/Vector/i18n/de.json [new file with mode: 0644]
skins/Vector/i18n/diq.json [new file with mode: 0644]
skins/Vector/i18n/dsb.json [new file with mode: 0644]
skins/Vector/i18n/dtp.json [new file with mode: 0644]
skins/Vector/i18n/dv.json [new file with mode: 0644]
skins/Vector/i18n/ee.json [new file with mode: 0644]
skins/Vector/i18n/egl.json [new file with mode: 0644]
skins/Vector/i18n/el.json [new file with mode: 0644]
skins/Vector/i18n/en.json
skins/Vector/i18n/eo.json [new file with mode: 0644]
skins/Vector/i18n/es-formal.json [new file with mode: 0644]
skins/Vector/i18n/es.json [new file with mode: 0644]
skins/Vector/i18n/esu.json [new file with mode: 0644]
skins/Vector/i18n/et.json [new file with mode: 0644]
skins/Vector/i18n/eu.json [new file with mode: 0644]
skins/Vector/i18n/ext.json [new file with mode: 0644]
skins/Vector/i18n/fa.json [new file with mode: 0644]
skins/Vector/i18n/ff.json [new file with mode: 0644]
skins/Vector/i18n/fi.json [new file with mode: 0644]
skins/Vector/i18n/fit.json [new file with mode: 0644]
skins/Vector/i18n/fo.json [new file with mode: 0644]
skins/Vector/i18n/fr.json [new file with mode: 0644]
skins/Vector/i18n/frc.json [new file with mode: 0644]
skins/Vector/i18n/frp.json [new file with mode: 0644]
skins/Vector/i18n/frr.json [new file with mode: 0644]
skins/Vector/i18n/fur.json [new file with mode: 0644]
skins/Vector/i18n/fy.json [new file with mode: 0644]
skins/Vector/i18n/ga.json [new file with mode: 0644]
skins/Vector/i18n/gag.json [new file with mode: 0644]
skins/Vector/i18n/gan-hans.json [new file with mode: 0644]
skins/Vector/i18n/gan-hant.json [new file with mode: 0644]
skins/Vector/i18n/gd.json [new file with mode: 0644]
skins/Vector/i18n/gl.json [new file with mode: 0644]
skins/Vector/i18n/gom-deva.json [new file with mode: 0644]
skins/Vector/i18n/gom-latn.json [new file with mode: 0644]
skins/Vector/i18n/grc.json [new file with mode: 0644]
skins/Vector/i18n/gsw.json [new file with mode: 0644]
skins/Vector/i18n/gu.json [new file with mode: 0644]
skins/Vector/i18n/guc.json [new file with mode: 0644]
skins/Vector/i18n/gv.json [new file with mode: 0644]
skins/Vector/i18n/ha.json [new file with mode: 0644]
skins/Vector/i18n/hak.json [new file with mode: 0644]
skins/Vector/i18n/haw.json [new file with mode: 0644]
skins/Vector/i18n/he.json [new file with mode: 0644]
skins/Vector/i18n/hi.json [new file with mode: 0644]
skins/Vector/i18n/hif-latn.json [new file with mode: 0644]
skins/Vector/i18n/hil.json [new file with mode: 0644]
skins/Vector/i18n/hr.json [new file with mode: 0644]
skins/Vector/i18n/hrx.json [new file with mode: 0644]
skins/Vector/i18n/hsb.json [new file with mode: 0644]
skins/Vector/i18n/hsn.json [new file with mode: 0644]
skins/Vector/i18n/ht.json [new file with mode: 0644]
skins/Vector/i18n/hu-formal.json [new file with mode: 0644]
skins/Vector/i18n/hu.json [new file with mode: 0644]
skins/Vector/i18n/hy.json [new file with mode: 0644]
skins/Vector/i18n/ia.json [new file with mode: 0644]
skins/Vector/i18n/id.json [new file with mode: 0644]
skins/Vector/i18n/ie.json [new file with mode: 0644]
skins/Vector/i18n/ig.json [new file with mode: 0644]
skins/Vector/i18n/ike-latn.json [new file with mode: 0644]
skins/Vector/i18n/ilo.json [new file with mode: 0644]
skins/Vector/i18n/inh.json [new file with mode: 0644]
skins/Vector/i18n/io.json [new file with mode: 0644]
skins/Vector/i18n/is.json [new file with mode: 0644]
skins/Vector/i18n/it.json [new file with mode: 0644]
skins/Vector/i18n/izh.json [new file with mode: 0644]
skins/Vector/i18n/ja.json [new file with mode: 0644]
skins/Vector/i18n/jam.json [new file with mode: 0644]
skins/Vector/i18n/jbo.json [new file with mode: 0644]
skins/Vector/i18n/jv.json [new file with mode: 0644]
skins/Vector/i18n/ka.json [new file with mode: 0644]
skins/Vector/i18n/kaa.json [new file with mode: 0644]
skins/Vector/i18n/kab.json [new file with mode: 0644]
skins/Vector/i18n/kbd-cyrl.json [new file with mode: 0644]
skins/Vector/i18n/kg.json [new file with mode: 0644]
skins/Vector/i18n/khw.json [new file with mode: 0644]
skins/Vector/i18n/ki.json [new file with mode: 0644]
skins/Vector/i18n/kiu.json [new file with mode: 0644]
skins/Vector/i18n/kk-cyrl.json [new file with mode: 0644]
skins/Vector/i18n/kl.json [new file with mode: 0644]
skins/Vector/i18n/km.json [new file with mode: 0644]
skins/Vector/i18n/kn.json [new file with mode: 0644]
skins/Vector/i18n/ko.json [new file with mode: 0644]
skins/Vector/i18n/koi.json [new file with mode: 0644]
skins/Vector/i18n/krc.json [new file with mode: 0644]
skins/Vector/i18n/kri.json [new file with mode: 0644]
skins/Vector/i18n/ks-arab.json [new file with mode: 0644]
skins/Vector/i18n/ksh.json [new file with mode: 0644]
skins/Vector/i18n/ku-latn.json [new file with mode: 0644]
skins/Vector/i18n/kv.json [new file with mode: 0644]
skins/Vector/i18n/kw.json [new file with mode: 0644]
skins/Vector/i18n/ky.json [new file with mode: 0644]
skins/Vector/i18n/la.json [new file with mode: 0644]
skins/Vector/i18n/lad.json [new file with mode: 0644]
skins/Vector/i18n/lb.json [new file with mode: 0644]
skins/Vector/i18n/lez.json [new file with mode: 0644]
skins/Vector/i18n/lg.json [new file with mode: 0644]
skins/Vector/i18n/li.json [new file with mode: 0644]
skins/Vector/i18n/lij.json [new file with mode: 0644]
skins/Vector/i18n/liv.json [new file with mode: 0644]
skins/Vector/i18n/lmo.json [new file with mode: 0644]
skins/Vector/i18n/ln.json [new file with mode: 0644]
skins/Vector/i18n/lrc.json [new file with mode: 0644]
skins/Vector/i18n/lt.json [new file with mode: 0644]
skins/Vector/i18n/ltg.json [new file with mode: 0644]
skins/Vector/i18n/lus.json [new file with mode: 0644]
skins/Vector/i18n/luz.json [new file with mode: 0644]
skins/Vector/i18n/lv.json [new file with mode: 0644]
skins/Vector/i18n/lzh.json [new file with mode: 0644]
skins/Vector/i18n/lzz.json [new file with mode: 0644]
skins/Vector/i18n/mai.json [new file with mode: 0644]
skins/Vector/i18n/map-bms.json [new file with mode: 0644]
skins/Vector/i18n/mdf.json [new file with mode: 0644]
skins/Vector/i18n/mg.json [new file with mode: 0644]
skins/Vector/i18n/mhr.json [new file with mode: 0644]
skins/Vector/i18n/mi.json [new file with mode: 0644]
skins/Vector/i18n/mic.json [new file with mode: 0644]
skins/Vector/i18n/min.json [new file with mode: 0644]
skins/Vector/i18n/mk.json [new file with mode: 0644]
skins/Vector/i18n/ml.json [new file with mode: 0644]
skins/Vector/i18n/mn.json [new file with mode: 0644]
skins/Vector/i18n/mnc.json [new file with mode: 0644]
skins/Vector/i18n/mr.json [new file with mode: 0644]
skins/Vector/i18n/mrj.json [new file with mode: 0644]
skins/Vector/i18n/ms.json [new file with mode: 0644]
skins/Vector/i18n/mt.json [new file with mode: 0644]
skins/Vector/i18n/mui.json [new file with mode: 0644]
skins/Vector/i18n/my.json [new file with mode: 0644]
skins/Vector/i18n/myv.json [new file with mode: 0644]
skins/Vector/i18n/mzn.json [new file with mode: 0644]
skins/Vector/i18n/nah.json [new file with mode: 0644]
skins/Vector/i18n/nan.json [new file with mode: 0644]
skins/Vector/i18n/nap.json [new file with mode: 0644]
skins/Vector/i18n/nb.json [new file with mode: 0644]
skins/Vector/i18n/nds-nl.json [new file with mode: 0644]
skins/Vector/i18n/nds.json [new file with mode: 0644]
skins/Vector/i18n/ne.json [new file with mode: 0644]
skins/Vector/i18n/new.json [new file with mode: 0644]
skins/Vector/i18n/nl.json [new file with mode: 0644]
skins/Vector/i18n/nn.json [new file with mode: 0644]
skins/Vector/i18n/nov.json [new file with mode: 0644]
skins/Vector/i18n/nrm.json [new file with mode: 0644]
skins/Vector/i18n/nso.json [new file with mode: 0644]
skins/Vector/i18n/oc.json [new file with mode: 0644]
skins/Vector/i18n/or.json [new file with mode: 0644]
skins/Vector/i18n/os.json [new file with mode: 0644]
skins/Vector/i18n/pa.json [new file with mode: 0644]
skins/Vector/i18n/pam.json [new file with mode: 0644]
skins/Vector/i18n/pbb.json [new file with mode: 0644]
skins/Vector/i18n/pcd.json [new file with mode: 0644]
skins/Vector/i18n/pdc.json [new file with mode: 0644]
skins/Vector/i18n/pfl.json [new file with mode: 0644]
skins/Vector/i18n/pi.json [new file with mode: 0644]
skins/Vector/i18n/pih.json [new file with mode: 0644]
skins/Vector/i18n/pl.json [new file with mode: 0644]
skins/Vector/i18n/pms.json [new file with mode: 0644]
skins/Vector/i18n/pnb.json [new file with mode: 0644]
skins/Vector/i18n/pnt.json [new file with mode: 0644]
skins/Vector/i18n/ppl.json [new file with mode: 0644]
skins/Vector/i18n/prg.json [new file with mode: 0644]
skins/Vector/i18n/ps.json [new file with mode: 0644]
skins/Vector/i18n/pt-br.json [new file with mode: 0644]
skins/Vector/i18n/pt.json [new file with mode: 0644]
skins/Vector/i18n/qqq.json
skins/Vector/i18n/qu.json [new file with mode: 0644]
skins/Vector/i18n/qug.json [new file with mode: 0644]
skins/Vector/i18n/rap.json [new file with mode: 0644]
skins/Vector/i18n/rgn.json [new file with mode: 0644]
skins/Vector/i18n/rif.json [new file with mode: 0644]
skins/Vector/i18n/rm.json [new file with mode: 0644]
skins/Vector/i18n/rmf.json [new file with mode: 0644]
skins/Vector/i18n/ro.json [new file with mode: 0644]
skins/Vector/i18n/roa-tara.json [new file with mode: 0644]
skins/Vector/i18n/ru.json [new file with mode: 0644]
skins/Vector/i18n/rue.json [new file with mode: 0644]
skins/Vector/i18n/rup.json [new file with mode: 0644]
skins/Vector/i18n/rw.json [new file with mode: 0644]
skins/Vector/i18n/ryu.json [new file with mode: 0644]
skins/Vector/i18n/sa.json [new file with mode: 0644]
skins/Vector/i18n/sah.json [new file with mode: 0644]
skins/Vector/i18n/sat.json [new file with mode: 0644]
skins/Vector/i18n/saz.json [new file with mode: 0644]
skins/Vector/i18n/sc.json [new file with mode: 0644]
skins/Vector/i18n/scn.json [new file with mode: 0644]
skins/Vector/i18n/sco.json [new file with mode: 0644]
skins/Vector/i18n/sd.json [new file with mode: 0644]
skins/Vector/i18n/sdc.json [new file with mode: 0644]
skins/Vector/i18n/sdh.json [new file with mode: 0644]
skins/Vector/i18n/se.json [new file with mode: 0644]
skins/Vector/i18n/sg.json [new file with mode: 0644]
skins/Vector/i18n/sgs.json [new file with mode: 0644]
skins/Vector/i18n/sh.json [new file with mode: 0644]
skins/Vector/i18n/shi.json [new file with mode: 0644]
skins/Vector/i18n/shn.json [new file with mode: 0644]
skins/Vector/i18n/si.json [new file with mode: 0644]
skins/Vector/i18n/sk.json [new file with mode: 0644]
skins/Vector/i18n/sl.json [new file with mode: 0644]
skins/Vector/i18n/sli.json [new file with mode: 0644]
skins/Vector/i18n/sly.json [new file with mode: 0644]
skins/Vector/i18n/so.json [new file with mode: 0644]
skins/Vector/i18n/sq.json [new file with mode: 0644]
skins/Vector/i18n/sr-ec.json [new file with mode: 0644]
skins/Vector/i18n/sr-el.json [new file with mode: 0644]
skins/Vector/i18n/ss.json [new file with mode: 0644]
skins/Vector/i18n/stq.json [new file with mode: 0644]
skins/Vector/i18n/su.json [new file with mode: 0644]
skins/Vector/i18n/sv.json [new file with mode: 0644]
skins/Vector/i18n/sw.json [new file with mode: 0644]
skins/Vector/i18n/szl.json [new file with mode: 0644]
skins/Vector/i18n/ta.json [new file with mode: 0644]
skins/Vector/i18n/tcy.json [new file with mode: 0644]
skins/Vector/i18n/te.json [new file with mode: 0644]
skins/Vector/i18n/tet.json [new file with mode: 0644]
skins/Vector/i18n/tg-cyrl.json [new file with mode: 0644]
skins/Vector/i18n/tg-latn.json [new file with mode: 0644]
skins/Vector/i18n/th.json [new file with mode: 0644]
skins/Vector/i18n/tk.json [new file with mode: 0644]
skins/Vector/i18n/tl.json [new file with mode: 0644]
skins/Vector/i18n/tly.json [new file with mode: 0644]
skins/Vector/i18n/tpi.json [new file with mode: 0644]
skins/Vector/i18n/tr.json [new file with mode: 0644]
skins/Vector/i18n/tru.json [new file with mode: 0644]
skins/Vector/i18n/ts.json [new file with mode: 0644]
skins/Vector/i18n/tt-cyrl.json [new file with mode: 0644]
skins/Vector/i18n/tt-latn.json [new file with mode: 0644]
skins/Vector/i18n/tyv.json [new file with mode: 0644]
skins/Vector/i18n/tzm.json [new file with mode: 0644]
skins/Vector/i18n/udm.json [new file with mode: 0644]
skins/Vector/i18n/ug-arab.json [new file with mode: 0644]
skins/Vector/i18n/uk.json [new file with mode: 0644]
skins/Vector/i18n/ur.json [new file with mode: 0644]
skins/Vector/i18n/uz.json [new file with mode: 0644]
skins/Vector/i18n/vec.json [new file with mode: 0644]
skins/Vector/i18n/vep.json [new file with mode: 0644]
skins/Vector/i18n/vi.json [new file with mode: 0644]
skins/Vector/i18n/vls.json [new file with mode: 0644]
skins/Vector/i18n/vmf.json [new file with mode: 0644]
skins/Vector/i18n/vo.json [new file with mode: 0644]
skins/Vector/i18n/vot.json [new file with mode: 0644]
skins/Vector/i18n/vro.json [new file with mode: 0644]
skins/Vector/i18n/wa.json [new file with mode: 0644]
skins/Vector/i18n/war.json [new file with mode: 0644]
skins/Vector/i18n/wo.json [new file with mode: 0644]
skins/Vector/i18n/wuu.json [new file with mode: 0644]
skins/Vector/i18n/xal.json [new file with mode: 0644]
skins/Vector/i18n/xh.json [new file with mode: 0644]
skins/Vector/i18n/xmf.json [new file with mode: 0644]
skins/Vector/i18n/yi.json [new file with mode: 0644]
skins/Vector/i18n/yo.json [new file with mode: 0644]
skins/Vector/i18n/yue.json [new file with mode: 0644]
skins/Vector/i18n/za.json [new file with mode: 0644]
skins/Vector/i18n/zea.json [new file with mode: 0644]
skins/Vector/i18n/zh-hans.json [new file with mode: 0644]
skins/Vector/i18n/zh-hant.json [new file with mode: 0644]
skins/common/images/icons/fileicon-xcf.png [new file with mode: 0644]
tests/.gitignore [new file with mode: 0644]
tests/browser/Gemfile [new file with mode: 0755]
tests/browser/Gemfile.lock [new file with mode: 0644]
tests/browser/README.mediawiki [new file with mode: 0644]
tests/browser/environment_variables [new file with mode: 0644]
tests/browser/features/create_account.feature [new file with mode: 0644]
tests/browser/features/create_and_follow_wiki_link.feature [new file with mode: 0644]
tests/browser/features/edit_page.feature [new file with mode: 0644]
tests/browser/features/file.feature [new file with mode: 0644]
tests/browser/features/login.feature [new file with mode: 0644]
tests/browser/features/main_page_links.feature [new file with mode: 0644]
tests/browser/features/preferences.feature [new file with mode: 0644]
tests/browser/features/step_definitions/create_account_steps.rb [new file with mode: 0644]
tests/browser/features/step_definitions/create_and_follow_wiki_link_steps.rb [new file with mode: 0644]
tests/browser/features/step_definitions/edit_page_steps.rb [new file with mode: 0644]
tests/browser/features/step_definitions/file_steps.rb [new file with mode: 0644]
tests/browser/features/step_definitions/login_steps.rb [new file with mode: 0644]
tests/browser/features/step_definitions/main_page_links_steps.rb [new file with mode: 0644]
tests/browser/features/step_definitions/preferences_appearance_steps.rb [new file with mode: 0644]
tests/browser/features/step_definitions/preferences_editing_steps.rb [new file with mode: 0644]
tests/browser/features/step_definitions/preferences_user_profile_steps.rb [new file with mode: 0644]
tests/browser/features/step_definitions/view_history_steps.rb [new file with mode: 0644]
tests/browser/features/support/env.rb [new file with mode: 0644]
tests/browser/features/support/hooks.rb [new file with mode: 0644]
tests/browser/features/support/modules/url_module.rb [new file with mode: 0644]
tests/browser/features/support/pages/create_account_page.rb [new file with mode: 0644]
tests/browser/features/support/pages/edit_page.rb [new file with mode: 0644]
tests/browser/features/support/pages/file_does_not_exist_page.rb [new file with mode: 0644]
tests/browser/features/support/pages/login_error_page.rb [new file with mode: 0644]
tests/browser/features/support/pages/main_page.rb [new file with mode: 0644]
tests/browser/features/support/pages/preferences_appearance_page.rb [new file with mode: 0644]
tests/browser/features/support/pages/preferences_editing_page.rb [new file with mode: 0644]
tests/browser/features/support/pages/preferences_page.rb [new file with mode: 0644]
tests/browser/features/support/pages/preferences_user_profile_page.rb [new file with mode: 0644]
tests/browser/features/support/pages/view_history_page.rb [new file with mode: 0644]
tests/browser/features/support/pages/ztargetpage.rb [new file with mode: 0644]
tests/browser/features/view_history.feature [new file with mode: 0644]
tests/frontend/Gruntfile.js
tests/parser/parserTest.inc
tests/parser/parserTests.txt
tests/phpunit/MediaWikiTestCase.php
tests/phpunit/ResourceLoaderTestCase.php
tests/phpunit/data/media/README
tests/phpunit/data/media/say-test.ogg [new file with mode: 0644]
tests/phpunit/includes/ArticleTest.php
tests/phpunit/includes/GitInfoTest.php
tests/phpunit/includes/GlobalFunctions/GlobalTest.php
tests/phpunit/includes/GlobalFunctions/wfParseUrlTest.php
tests/phpunit/includes/ImagePage404Test.php [new file with mode: 0644]
tests/phpunit/includes/ImagePageTest.php [new file with mode: 0644]
tests/phpunit/includes/LinkerTest.php
tests/phpunit/includes/LinksUpdateTest.php
tests/phpunit/includes/MimeMagicTest.php [new file with mode: 0644]
tests/phpunit/includes/OutputPageTest.php
tests/phpunit/includes/RequestContextTest.php
tests/phpunit/includes/SampleTest.php
tests/phpunit/includes/TitlePermissionTest.php
tests/phpunit/includes/TitleTest.php
tests/phpunit/includes/UserTest.php
tests/phpunit/includes/WikiPageTest.php
tests/phpunit/includes/api/ApiOptionsTest.php
tests/phpunit/includes/api/query/ApiQueryTest.php
tests/phpunit/includes/content/TextContentTest.php
tests/phpunit/includes/debug/MWDebugTest.php
tests/phpunit/includes/filerepo/RepoGroupTest.php [new file with mode: 0644]
tests/phpunit/includes/filerepo/file/FileTest.php [new file with mode: 0644]
tests/phpunit/includes/libs/CSSMinTest.php
tests/phpunit/includes/libs/MWMessagePackTest.php
tests/phpunit/includes/media/MediaWikiMediaTestCase.php
tests/phpunit/includes/media/XCFTest.php [new file with mode: 0644]
tests/phpunit/includes/normal/CleanUpTest.php
tests/phpunit/includes/parser/MagicVariableTest.php
tests/phpunit/includes/parser/NewParserTest.php
tests/phpunit/includes/site/MediaWikiSiteTest.php
tests/phpunit/includes/specials/SpecialPreferencesTest.php
tests/phpunit/includes/title/MediaWikiPageLinkRendererTest.php
tests/phpunit/includes/title/MediaWikiTitleCodecTest.php
tests/phpunit/languages/LanguageRuTest.php
tests/phpunit/languages/LanguageTest.php
tests/qunit/data/testrunner.js
tests/qunit/suites/resources/jquery/jquery.client.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.language.test.js
thumb.php

index 64075f1..dedb4e1 100644 (file)
@@ -38,6 +38,7 @@ script:
   - php tests/phpunit/phpunit.php
 
 notifications:
+  email: false
   irc:
     channels:
       - "chat.freenode.net#mediawiki-core"
index 8793fc9..70f6084 100644 (file)
@@ -1,5 +1,5 @@
-Security reminder: MediaWiki does not require PHP's register_globals. If you
-have it on, turn it '''off''' if you can.
+Security reminder: If you have PHP's register_globals option set, you must
+turn it off. MediaWiki will no longer work with it enabled.
 
 == MediaWiki 1.24 ==
 
@@ -9,6 +9,9 @@ MediaWiki 1.24 is an alpha-quality branch and is not recommended for use in
 production.
 
 === Configuration changes in 1.24 ===
+* MediaWiki will no longer run if register_globals is enabled. It has been
+  deprecated for 5 years now, and was removed in PHP 5.4. For more information
+  about why, see <https://www.mediawiki.org/wiki/register_globals>.
 * The server's canonical hostname is available as $wgServerName, which is
   exposed in both mw.config and ApiQuerySiteInfo.
 * Introduced $wgPagePropsHaveSortkey as a backwards-compatibility switch,
@@ -25,6 +28,11 @@ production.
   contains an array of interwiki prefixes that should be treated as language
   prefixes (i.e. turned into interlanguage links when $wgInterwikiMagic is set
   to true).
+* $wgParserTestRemote has been removed.
+* $wgCountTotalSearchHits has been removed. If you're concerned about efficiency
+  of search, you should use something like CirrusSearch instead of built in
+  search.
+* Users in the 'sysop' group have access to Special:MergeHistory by default.
 
 === New features in 1.24 ===
 * Added a new hook, "WhatLinksHereProps", to allow extensions to annotate
@@ -82,10 +90,25 @@ production.
 * Skins can now use 'remoteSkinPath' when defining ResourceLoader modules.
   This works the same as 'remoteExtPath' but is relative to the skins/ folder
   instead of the extensions/ folder.
+* Added the json2.js polyfill for the ES5 JSON.stringify and JSON.parse methods.
+  Exposed as module "json" with a skip function to optimise loading.
 * Extensions and skins may now use 'namemsg' in $wgExtensionCredits in addition
   to 'name', to allow for the name to be localizable. 'name' should still be
   specified for backwards-compatibility and to define the path Special:Version
   uses to find extension license information.
+* Browser tests are now included to verify basic wiki functionality in developer
+  environments. For details on running tests, see tests/browser/README.mediawiki.
+* Upgrade jStorage to v0.4.10.
+* {{!}} is now a magic word that produces the | character. This removes the need
+  for Template:! for purposes such as passing pipes inside of parameters.
+* (bug 20790) The block log snippet on Special:Contributions and while
+  editing user and user talk pages now works for IP range blocks.
+* (bug 9360) Added ability to change the page language for MediaWiki pages using
+  Special:PageLanguage. All pages are set to wiki language by default.
+  The feature needs to be enabled with $wgPageLanguageUseDB=true and
+  permission needs to be set for 'pagelang'.
+* Upgrade Moment.js to v2.7.0.
+* (bug 67042) Added support for the HTML5 <rtc> tag for East Asian typography.
 
 === Bug fixes in 1.24 ===
 * (bug 49116) Footer copyright notice is now always displayed in user language
@@ -109,6 +132,9 @@ production.
   however delete the redirect page.
 * (bug 22683) {{msgnw:}} and other uses of PPFrame::RECOVER_ORIG will correctly
   recover the original code of extension tags.
+* (bug 65757) MSSQL: Update script drops unnamed constraints to be prepared
+  for future updates. Because it's doing so heuristically, it may fail or drop
+  wrong constraints.
 
 === Web API changes in 1.24 ===
 * action=parse API now supports prop=modules, which provides the list of
@@ -129,6 +155,12 @@ production.
   The old format is still used if prop isn't provided, but this is deprecated.
 * meta=userinfo can now return the count of unread pages on the watchlist.
 * list=watchlist can now filter by unread status.
+* The deprecated action=parse&prop=languageshtml has been removed.
+* (bug 48071) action=setnotificationtimestamp no longer throws PHP or database
+  errors when no pages are given.
+* (bug 60734) Actions that use ApiPageSet (e.g. purge, watch,
+  setnotificationtimestamp) will now include continuation information when
+  using a generator.
 
 === Languages updated in 1.24 ===
 
@@ -175,7 +207,27 @@ changes to languages because of Bugzilla reports.
 * Removed info(), purge(), revert() and rollback() from the Article class; they
   have since become subclasses of the Action class. (deprecated since 1.19)
 * SearchEngineReplacePrefixesComplete hook was removed.
+* The "jquery.json" module has been deprecated. Use the "json" module instead.
 * Removed HTMLForm::addJS(). (deprecated since 1.18)
+* Removed LogEventsList::showHeader(). (deprecated since 1.19)
+* Removed ImageGalleryBase::useSkin(). (deprecated since 1.18)
+* Removed DatabaseMysqlBase::getLagFromProcesslist(). (deprecated since 1.19)
+* Removed LoadBalancer::closeConnecton(). (deprecated since 1.18)
+* Removed ApiBase::createContext(). (deprecated since 1.19)
+* BREAKING CHANGE: The undocumented Special{$this->getName()}BeforeFormDisplay
+  set of hooks has been removed and replaced by a single new hook
+  SpecialPageBeforeFormDisplay.
+* (bug 65781) Removed block warning on included {{Special:Contributions}}
+* Removed Skin::makeGlobalVariablesScript. (deprecated since 1.19)
+* Removed MWNamespace::isMain(). (deprecated since 1.19)
+* Removed Preferences::loadOldSearchNs(). (deprecated since 1.19)
+* Removed OutputPage::getStatusMessage(). (deprecated since 1.18)
+* Removed OutputPage::isUserJsAllowed(). (deprecated since 1.18)
+* Removed Title::updateTitleProtection(). (deprecated since 1.19)
+* Removed ParserOptions::setSkin(). (deprecated since 1.19)
+* Removed Title::escapeCanonicalURL(). (deprecated since 1.19)
+* Removed Title::escapeLocalURL(). (deprecated since 1.19)
+* Removed Title::escapeFullURL(). (deprecated since 1.19)
 
 ==== Renamed classes ====
 * CLDRPluralRuleConverter_Expression to CLDRPluralRuleConverterExpression
@@ -218,6 +270,7 @@ changes to languages because of Bugzilla reports.
 ==== Removed classes ====
 * IPBlockForm - Use SpecialBlock directly
 * WatchlistEditor - Use SpecialEditWatchlist directly
+* FormatExif - Use FormatMetadata directly
 
 == Compatibility ==
 
index db5e0ff..d9b5288 100644 (file)
@@ -2,13 +2,22 @@
 
 /**
  * To use a profiler, copy this file to StartProfiler.php,
- * and add something like this:
+ * and add either:
  *
- *   $wgProfiler['class'] = 'Profiler';
+ *   // Does not support the debugging toolbar
+ *   // Stores profiling information in the database
+ *   // Requires running maintenance/archives/patch-profiling.sql
+ *   $wgProfiler['class'] = 'ProfilerSimpleDB'
+ *
+ * or:
+ *
+ *   // Supports the debugging toolbar
+ *   // Does not store profiling information in the database
+ *   $wgProfiler['class'] = 'ProfilerStandard';
  *
  * Or for a sampling profiler:
  *   if ( !mt_rand( 0, 100 ) ) {
- *       $wgProfiler['class'] = 'Profiler';
+ *       $wgProfiler['class'] = 'ProfilerSimpleDB';
  *   } else {
  *       $wgProfiler['class'] = 'ProfilerStub';
  *   }
index 8d7e654..ab23bc0 100644 (file)
@@ -326,6 +326,13 @@ $revCount: Number of revisions in the XML file
 $sRevCount: Number of successfully imported revisions
 $pageInfo: associative array of page information
 
+'AfterParserFetchFileAndTitle': After an image gallery is formed by Parser,
+just before adding its HTML to parser output.
+$parser: Parser object that called the hook
+$ig: Gallery, an object of one of the gallery classes (inheriting from
+ImageGalleryBase)
+$html: HTML generated by the gallery
+
 'AjaxAddScript': Called in output page just before the initialisation
 of the javascript ajax engine. The hook is only called when ajax
 is enabled ( $wgUseAjax = true; ).
@@ -1496,7 +1503,7 @@ $result: Change this value to override the result of wfIsTrustedProxy()
 $url: URL used to upload from
 &$allowed: Boolean indicating if uploading is allowed for given URL
 
-'isValidEmailAddr': Override the result of User::isValidEmailAddr(), for
+'isValidEmailAddr': Override the result of Sanitizer::validateEmail(), for
 instance to return false if the domain name doesn't match your organization.
 $addr: The e-mail address entered by the user
 &$result: Set this and return false to override the internal checks
@@ -1705,8 +1712,8 @@ $refreshLinks: RefreshLinks object
 'MagicWordwgVariableIDs': When defining new magic words IDs.
 $variableIDs: array of strings
 
-'MakeGlobalVariablesScript': Called right before Skin::makeVariablesScript is
-executed. Ideally, this hook should only be used to add variables that depend on
+'MakeGlobalVariablesScript': Called at end of OutputPage::getJSVars.
+Ideally, this hook should only be used to add variables that depend on
 the current page/request; static configuration should be added through
 ResourceLoaderGetConfigVars instead.
 &$vars: variable (or multiple variables) to be added into the output of
@@ -1750,6 +1757,30 @@ caches.
 $title: name of the page changed.
 $text: new contents of the page.
 
+'MimeMagicInit': Before processing the list mapping MIME types to media types
+and the list mapping MIME types to file extensions.
+As an extension author, you are encouraged to submit patches to MediaWiki's
+core to add new MIME types to mime.types.
+$mimeMagic: Instance of MimeMagic.
+  Use $mimeMagic->addExtraInfo( $stringOfInfo );
+  for adding new MIME info to the list.
+  Use $mimeMagic->addExtraTypes( $stringOfTypes );
+  for adding new MIME types to the list.
+
+'MimeMagicImproveFromExtension': Allows MW extensions to further improve the
+MIME type detected by considering the file extension.
+$mimeMagic: Instance of MimeMagic.
+$ext: File extension.
+&$mime: MIME type (in/out).
+
+'MimeMagicGuessFromContent': Allows MW extensions guess the MIME by content.
+$mimeMagic: Instance of MimeMagic.
+&$head: First 1024 bytes of the file in a string (in - Do not alter!).
+&$tail: More or equal than last 65558 bytes of the file in a string
+  (in - Do not alter!).
+$file: File path.
+&$mime: MIME type (out).
+
 'ModifyExportQuery': Modify the query used by the exporter.
 $db: The database object to be queried.
 &$tables: Tables in the query.
@@ -2354,6 +2385,10 @@ software.
 $software: The array of software in format 'name' => 'version'. See
   SpecialVersion::softwareInformation().
 
+'SpecialPageBeforeFormDisplay': Before executing the HTMLForm object.
+$name: name of the special page
+&$form: HTMLForm object
+
 'SpecialBlockModifyFormFields': Add more fields to Special:Block
 $sp: SpecialPage object, for context
 &$fields: Current HTMLForm fields
index 4f16709..c6fa674 100644 (file)
@@ -40,7 +40,7 @@ Primary scripts:
 
     To enable the profileinfo.php itself, you'll need to set $wgDBadminuser
     and $wgDBadminpassword in your LocalSettings.php, as well as $wgEnableProfileInfo 
-    See also https://www.mediawiki.org/wiki/How_to_debug#Profiling.
+    See also https://www.mediawiki.org/wiki/Manual:Profiling .
 
   thumb.php
     Script used to resize images if it is configured to be done when the web
index 3ac4722..67f9a1c 100644 (file)
@@ -110,7 +110,6 @@ $wgAutoloadLocalClasses = array(
        'ICacheHelper' => 'includes/CacheHelper.php',
        'IcuCollation' => 'includes/Collation.php',
        'IdentityCollation' => 'includes/Collation.php',
-       'ImageQueryPage' => 'includes/ImageQueryPage.php',
        'ImportStreamSource' => 'includes/Import.php',
        'ImportStringSource' => 'includes/Import.php',
        'IndexPager' => 'includes/Pager.php',
@@ -140,7 +139,6 @@ $wgAutoloadLocalClasses = array(
        'MWInit' => 'includes/Init.php',
        'MWNamespace' => 'includes/Namespace.php',
        'OutputPage' => 'includes/OutputPage.php',
-       'PageQueryPage' => 'includes/PageQueryPage.php',
        'Pager' => 'includes/Pager.php',
        'PasswordError' => 'includes/User.php',
        'PathRouter' => 'includes/PathRouter.php',
@@ -156,7 +154,6 @@ $wgAutoloadLocalClasses = array(
        'PreferencesForm' => 'includes/Preferences.php',
        'PrefixSearch' => 'includes/PrefixSearch.php',
        'ProtectionForm' => 'includes/ProtectionForm.php',
-       'QueryPage' => 'includes/QueryPage.php',
        'QuickTemplate' => 'includes/SkinTemplate.php',
        'RawMessage' => 'includes/Message.php',
        'ReverseChronologicalPager' => 'includes/Pager.php',
@@ -196,7 +193,6 @@ $wgAutoloadLocalClasses = array(
        'UserCache' => 'includes/cache/UserCache.php',
        'UserMailer' => 'includes/UserMailer.php',
        'UserRightsProxy' => 'includes/UserRightsProxy.php',
-       'WantedQueryPage' => 'includes/QueryPage.php',
        'WatchedItem' => 'includes/WatchedItem.php',
        'WebRequest' => 'includes/WebRequest.php',
        'WebRequestUpload' => 'includes/WebRequest.php',
@@ -717,6 +713,7 @@ $wgAutoloadLocalClasses = array(
        'ManualLogEntry' => 'includes/logging/LogEntry.php',
        'MoveLogFormatter' => 'includes/logging/MoveLogFormatter.php',
        'NewUsersLogFormatter' => 'includes/logging/NewUsersLogFormatter.php',
+       'PageLangLogFormatter' => 'includes/logging/PageLangLogFormatter.php',
        'PatrolLog' => 'includes/logging/PatrolLog.php',
        'PatrolLogFormatter' => 'includes/logging/PatrolLogFormatter.php',
        'RCDatabaseLogEntry' => 'includes/logging/LogEntry.php',
@@ -741,7 +738,6 @@ $wgAutoloadLocalClasses = array(
        'DjVuImage' => 'includes/media/DjVuImage.php',
        'Exif' => 'includes/media/Exif.php',
        'ExifBitmapHandler' => 'includes/media/ExifBitmap.php',
-       'FormatExif' => 'includes/media/FormatMetadata.php',
        'FormatMetadata' => 'includes/media/FormatMetadata.php',
        'GIFHandler' => 'includes/media/GIF.php',
        'GIFMetadataExtractor' => 'includes/media/GIFMetadataExtractor.php',
@@ -927,13 +923,17 @@ $wgAutoloadLocalClasses = array(
        # includes/specialpage
        'ChangesListSpecialPage' => 'includes/specialpage/ChangesListSpecialPage.php',
        'FormSpecialPage' => 'includes/specialpage/FormSpecialPage.php',
+       'ImageQueryPage' => 'includes/specialpage/ImageQueryPage.php',
        'IncludableSpecialPage' => 'includes/specialpage/IncludableSpecialPage.php',
+       'PageQueryPage' => 'includes/specialpage/PageQueryPage.php',
+       'QueryPage' => 'includes/specialpage/QueryPage.php',
        'RedirectSpecialArticle' => 'includes/specialpage/RedirectSpecialPage.php',
        'RedirectSpecialPage' => 'includes/specialpage/RedirectSpecialPage.php',
        'SpecialPage' => 'includes/specialpage/SpecialPage.php',
        'SpecialPageFactory' => 'includes/specialpage/SpecialPageFactory.php',
        'SpecialRedirectToSpecial' => 'includes/specialpage/RedirectSpecialPage.php',
        'UnlistedSpecialPage' => 'includes/specialpage/UnlistedSpecialPage.php',
+       'WantedQueryPage' => 'includes/specialpage/WantedQueryPage.php',
 
        # includes/specials
        'ActiveUsersPager' => 'includes/specials/SpecialActiveusers.php',
@@ -1017,6 +1017,7 @@ $wgAutoloadLocalClasses = array(
        'SpecialMyuploads' => 'includes/specials/SpecialMyRedirectPages.php',
        'SpecialNewFiles' => 'includes/specials/SpecialNewimages.php',
        'SpecialNewpages' => 'includes/specials/SpecialNewpages.php',
+       'SpecialPageLanguage' => 'includes/specials/SpecialPageLanguage.php',
        'SpecialPasswordReset' => 'includes/specials/SpecialPasswordReset.php',
        'SpecialPagesWithProp' => 'includes/specials/SpecialPagesWithProp.php',
        'SpecialPermanentLink' => 'includes/specials/SpecialPermanentLink.php',
index 3896369..c393a79 100644 (file)
@@ -1368,7 +1368,7 @@ class Block {
                        $this->getId(),
                        $lang->formatExpiry( $this->mExpiry ),
                        (string)$intended,
-                       $lang->timeanddate( wfTimestamp( TS_MW, $this->mTimestamp ), true ),
+                       $lang->userTimeAndDate( $this->mTimestamp, $context->getUser() ),
                );
        }
 }
index e235e4e..7bab464 100644 (file)
@@ -320,7 +320,7 @@ class Category {
                wfProfileIn( __METHOD__ );
 
                $dbw = wfGetDB( DB_MASTER );
-               $dbw->begin( __METHOD__ );
+               $dbw->startAtomic( __METHOD__ );
 
                # Insert the row if it doesn't exist yet (e.g., this is being run via
                # update.php from a pre-1.16 schema).  TODO: This will cause lots and
@@ -360,7 +360,7 @@ class Category {
                        array( 'cat_title' => $this->mName ),
                        __METHOD__
                );
-               $dbw->commit( __METHOD__ );
+               $dbw->endAtomic( __METHOD__ );
 
                wfProfileOut( __METHOD__ );
 
index 49818e6..cd9eaa9 100644 (file)
@@ -707,7 +707,10 @@ class CategoryViewer extends ContextSource {
                        // to refresh the incorrect category table entry -- which should be
                        // quick due to the small number of entries.
                        $totalcnt = $rescnt;
-                       $this->cat->refreshCounts();
+                       $category = $this->cat;
+                       wfGetDB( DB_MASTER )->onTransactionIdle( function() use ( $category ) {
+                               $category->refreshCounts();
+                       } );
                } else {
                        // Case 3: hopeless.  Don't give a total count at all.
                        // Messages: category-subcat-count-limited, category-article-count-limited,
index 28db8a1..f51a5a8 100644 (file)
@@ -77,9 +77,9 @@ class ChangeTags {
         * Add tags to a change given its rc_id, rev_id and/or log_id
         *
         * @param string|array $tags Tags to add to the change
-        * @param int $rc_id rc_id of the change to add the tags to
-        * @param int $rev_id rev_id of the change to add the tags to
-        * @param int $log_id Log_id of the change to add the tags to
+        * @param int|null $rc_id rc_id of the change to add the tags to
+        * @param int|null $rev_id rev_id of the change to add the tags to
+        * @param int|null $log_id Log_id of the change to add the tags to
         * @param string $params params to put in the ct_params field of table 'change_tag'
         *
         * @throws MWException
@@ -143,7 +143,7 @@ class ChangeTags {
                        'ts_log_id' => $log_id )
                );
 
-               ## Update the summary row.
+               // Update the summary row.
                // $prevTags can be out of date on slaves, especially when addTags is called consecutively,
                // causing loss of tags added recently in tag_summary table.
                $prevTags = $dbw->selectField( 'tag_summary', 'ts_tags', $tsConds, __METHOD__ );
index 5d09869..51ebd57 100644 (file)
@@ -1217,6 +1217,33 @@ $wgThumbLimits = array(
        300
 );
 
+/**
+ * When defined, is an array of image widths used as buckets for thumbnail generation.
+ * The goal is to save resources by generating thumbnails based on reference buckets instead of
+ * always using the original. This will incur a speed gain but cause a quality loss.
+ *
+ * The buckets generation is chained, with each bucket generated based on the above bucket
+ * when possible. File handlers have to opt into using that feature. For now only BitmapHandler
+ * supports it.
+ */
+$wgThumbnailBuckets = null;
+
+/**
+ * When using thumbnail buckets as defined above, this sets the minimum distance with the bucket
+ * above the requested size. The distance represents how pany extra pixels of width the bucket needs
+ * in order to be used as the reference for a given thumbnail. For example, with the following buckets:
+ *
+ * $wgThumbnailBuckets = array ( 128, 256, 512 );
+ *
+ * and a distance of 50:
+ *
+ * $wgThumbnailMinimumBucketDistance = 50;
+ *
+ * If we want to render a thumbnail of width 220px, the 512px bucket will be used,
+ * because 220 + 50 = 270 and the closest bucket bigger than 270px is 512.
+ */
+$wgThumbnailMinimumBucketDistance = 0;
+
 /**
  * Default parameters for the "<gallery>" tag
  */
@@ -1514,7 +1541,7 @@ $wgUsersNotifiedOnAllChanges = array();
 $wgDBserver = 'localhost';
 
 /**
- * Database port number (for PostgreSQL)
+ * Database port number (for PostgreSQL and Microsoft SQL Server).
  */
 $wgDBport = 5432;
 
@@ -1540,11 +1567,21 @@ $wgDBtype = 'mysql';
 
 /**
  * Whether to use SSL in DB connection.
+ *
+ * This setting is only used $wgLBFactoryConf['class'] is set to
+ * 'LBFactorySimple' and $wgDBservers is an empty array; otherwise
+ * the DBO_SSL flag must be set in the 'flags' option of the database
+ * connection to achieve the same functionality.
  */
 $wgDBssl = false;
 
 /**
  * Whether to use compression in DB connection.
+ *
+ * This setting is only used $wgLBFactoryConf['class'] is set to
+ * 'LBFactorySimple' and $wgDBservers is an empty array; otherwise
+ * the DBO_COMPRESS flag must be set in the 'flags' option of the database
+ * connection to achieve the same functionality.
  */
 $wgDBcompress = false;
 
@@ -1652,7 +1689,7 @@ $wgSharedTables = array( 'user', 'user_properties' );
  *   - dbname:      Default database name
  *   - user:        DB user
  *   - password:    DB password
- *   - type:        "mysql" or "postgres"
+ *   - type:        DB type
  *
  *   - load:        Ratio of DB_SLAVE load, must be >=0, the sum of all loads must be >0.
  *                  If this is zero for any given server, no normal query traffic will be
@@ -2153,6 +2190,12 @@ $wgCachePages = true;
  */
 $wgCacheEpoch = '20030516000000';
 
+/**
+ * Directory where GitInfo will look for pre-computed cache files. If false,
+ * $wgCacheDirectory/gitinfo will be used.
+ */
+$wgGitInfoCacheDirectory = false;
+
 /**
  * Bump this number when changing the global style sheets and JavaScript.
  *
@@ -4352,8 +4395,9 @@ $wgGroupPermissions['sysop']['noratelimit'] = true;
 $wgGroupPermissions['sysop']['movefile'] = true;
 $wgGroupPermissions['sysop']['unblockself'] = true;
 $wgGroupPermissions['sysop']['suppressredirect'] = true;
+#$wgGroupPermissions['sysop']['pagelang'] = true;
 #$wgGroupPermissions['sysop']['upload_by_url'] = true;
-#$wgGroupPermissions['sysop']['mergehistory'] = true;
+$wgGroupPermissions['sysop']['mergehistory'] = true;
 
 // Permission to change users' group assignments
 $wgGroupPermissions['bureaucrat']['userrights'] = true;
@@ -4970,7 +5014,12 @@ $wgDebugComments = false;
 $wgDebugDBTransactions = false;
 
 /**
- * Write SQL queries to the debug log
+ * Write SQL queries to the debug log.
+ *
+ * This setting is only used $wgLBFactoryConf['class'] is set to
+ * 'LBFactorySimple' and $wgDBservers is an empty array; otherwise
+ * the DBO_DEBUG flag must be set in the 'flags' option of the database
+ * connection to achieve the same functionality.
  */
 $wgDebugDumpSql = false;
 
@@ -5199,21 +5248,6 @@ $wgParserTestFiles = array(
        "$IP/tests/parser/extraParserTests.txt"
 );
 
-/**
- * If configured, specifies target CodeReview installation to send test
- * result data from 'parserTests.php --upload'
- *
- * Something like this:
- * $wgParserTestRemote = array(
- *     'api-url' => 'https://www.mediawiki.org/w/api.php',
- *     'repo'    => 'MediaWiki',
- *     'suite'   => 'ParserTests',
- *     'path'    => '/trunk/phase3', // not used client-side; for reference
- *     'secret'  => 'qmoicj3mc4mcklmqw', // Shared secret used in HMAC validation
- * );
- */
-$wgParserTestRemote = false;
-
 /**
  * Allow running of javascript test suites via [[Special:JavaScriptTest]] (such as QUnit).
  */
@@ -5277,18 +5311,6 @@ $wgAdvancedSearchHighlighting = false;
  */
 $wgSearchHighlightBoundaries = '[\p{Z}\p{P}\p{C}]';
 
-/**
- * Set to true to have the search engine count total
- * search matches to present in the Special:Search UI.
- * Not supported by every search engine shipped with MW.
- *
- * This could however be slow on larger wikis, and is pretty flaky
- * with the current title vs content split. Recommend avoiding until
- * that's been worked out cleanly; but this may aid in testing the
- * search UI and API to confirm that the result count works.
- */
-$wgCountTotalSearchHits = false;
-
 /**
  * Template for OpenSearch suggestions, defaults to API action=opensearch
  *
@@ -5600,9 +5622,11 @@ $wgRC2UDPOmitBots = false;
  * Destinations to which notifications about recent changes
  * should be sent.
  *
- * As of MediaWiki 1.22, the only supported 'engine' parameter option in core
- * is 'UDPRCFeedEngine', which is used to send recent changes over UDP to the
- * specified server.
+ * As of MediaWiki 1.22, there are 2 supported 'engine' parameter option in core:
+ *   * 'UDPRCFeedEngine', which is used to send recent changes over UDP to the
+ *      specified server.
+ *   * 'RedisPubSubFeedEngine', which is used to send recent changes to Redis.
+ *
  * The common options are:
  *   * 'uri' -- the address to which the notices are to be sent.
  *   * 'formatter' -- the class name (implementing RCFeedFormatter) which will
@@ -5612,10 +5636,12 @@ $wgRC2UDPOmitBots = false;
  *   * 'omit_user' -- whether edits by registered users should be in the feed
  *   * 'omit_minor' -- whether minor edits should be in the feed
  *   * 'omit_patrolled' -- whether patrolled edits should be in the feed
+ *
  *  The IRC-specific options are:
  *   * 'add_interwiki_prefix' -- whether the titles should be prefixed with
  *     the first entry in the $wgLocalInterwikis array (or the value of
  *     $wgLocalInterwiki, if set)
+ *
  *  The JSON-specific options are:
  *   * 'channel' -- if set, the 'channel' parameter is also set in JSON values.
  *
@@ -7113,6 +7139,14 @@ $wgHttpsPort = 443;
 $wgHKDFSecret = false;
 $wgHKDFAlgorithm = 'sha256';
 
+/**
+ * Enable page language feature
+ * Allows setting page language in database
+ * @var bool
+ * @since 1.24
+ */
+$wgPageLanguageUseDB = false;
+
 /**
  * For really cool vim folding this needs to be at the end:
  * vim: foldmarker=@{,@} foldmethod=marker
index ce4ede3..e0579cb 100644 (file)
@@ -59,7 +59,6 @@ define( 'DB_MASTER', -2 );    # Write to master (or only server)
 # Obsolete aliases
 define( 'DB_READ', -1 );
 define( 'DB_WRITE', -2 );
-define( 'DB_LAST', -3 ); # deprecated since 2008, usage throws exception
 
 /**@{
  * Virtual namespaces; don't appear in the page database
index 480671a..3d57e95 100644 (file)
@@ -2236,14 +2236,15 @@ class EditPage {
                        $username = $parts[0];
                        $user = User::newFromName( $username, false /* allow IP users*/ );
                        $ip = User::isIP( $username );
+                       $block = Block::newFromTarget( $user, $user );
                        if ( !( $user && $user->isLoggedIn() ) && !$ip ) { # User does not exist
                                $wgOut->wrapWikiMsg( "<div class=\"mw-userpage-userdoesnotexist error\">\n$1\n</div>",
                                        array( 'userpage-userdoesnotexist', wfEscapeWikiText( $username ) ) );
-                       } elseif ( $user->isBlocked() ) { # Show log extract if the user is currently blocked
+                       } elseif ( !is_null( $block ) && $block->getType() != Block::TYPE_AUTO ) { # Show log extract if the user is currently blocked
                                LogEventsList::showLogExtract(
                                        $wgOut,
                                        'block',
-                                       $user->getUserPage(),
+                                       MWNamespace::getCanonicalName( NS_USER ) . ':' . $block->getTarget(),
                                        '',
                                        array(
                                                'lim' => 1,
@@ -2621,6 +2622,7 @@ class EditPage {
         */
        protected function showHeader() {
                global $wgOut, $wgUser, $wgMaxArticleSize, $wgLang;
+               global $wgAllowUserCss, $wgAllowUserJs;
 
                if ( $this->mTitle->isTalkPage() ) {
                        $wgOut->addWikiMsg( 'talkpagetext' );
@@ -2721,14 +2723,14 @@ class EditPage {
                                        );
                                }
                                if ( $this->formtype !== 'preview' ) {
-                                       if ( $this->isCssSubpage ) {
+                                       if ( $this->isCssSubpage && $wgAllowUserCss ) {
                                                $wgOut->wrapWikiMsg(
                                                        "<div id='mw-usercssyoucanpreview'>\n$1\n</div>",
                                                        array( 'usercssyoucanpreview' )
                                                );
                                        }
 
-                                       if ( $this->isJsSubpage ) {
+                                       if ( $this->isJsSubpage && $wgAllowUserJs ) {
                                                $wgOut->wrapWikiMsg(
                                                        "<div id='mw-userjsyoucanpreview'>\n$1\n</div>",
                                                        array( 'userjsyoucanpreview' )
@@ -3451,6 +3453,7 @@ HTML
         */
        function getPreviewText() {
                global $wgOut, $wgUser, $wgRawHtml, $wgLang;
+               global $wgAllowUserCss, $wgAllowUserJs;
 
                wfProfileIn( __METHOD__ );
 
@@ -3516,8 +3519,14 @@ HTML
 
                                if ( $content->getModel() == CONTENT_MODEL_CSS ) {
                                        $format = 'css';
+                                       if ( $level === 'user' && !$wgAllowUserCss ) {
+                                               $format = false;
+                                       }
                                } elseif ( $content->getModel() == CONTENT_MODEL_JAVASCRIPT ) {
                                        $format = 'js';
+                                       if ( $level === 'user' && !$wgAllowUserJs ) {
+                                               $format = false;
+                                       }
                                } else {
                                        $format = false;
                                }
@@ -3830,46 +3839,34 @@ HTML
        public function getEditButtons( &$tabindex ) {
                $buttons = array();
 
-               // @todo FIXME: Hardcoded square brackets.
-               $temp = array(
+               $attribs = array(
                        'id' => 'wpSave',
                        'name' => 'wpSave',
                        'type' => 'submit',
                        'tabindex' => ++$tabindex,
                        'value' => wfMessage( 'savearticle' )->text(),
-                       'accesskey' => wfMessage( 'accesskey-save' )->text(),
-                       'title' => wfMessage( 'tooltip-save' )->text()
-                               . ' [' . wfMessage( 'accesskey-save' )->text() . ']',
-               );
-               $buttons['save'] = Xml::element( 'input', $temp, '' );
+               ) + Linker::tooltipAndAccesskeyAttribs( 'save' );
+               $buttons['save'] = Xml::element( 'input', $attribs, '' );
 
                ++$tabindex; // use the same for preview and live preview
-               // @todo FIXME: Hardcoded square brackets.
-               $temp = array(
+               $attribs = array(
                        'id' => 'wpPreview',
                        'name' => 'wpPreview',
                        'type' => 'submit',
                        'tabindex' => $tabindex,
                        'value' => wfMessage( 'showpreview' )->text(),
-                       'accesskey' => wfMessage( 'accesskey-preview' )->text(),
-                       'title' => wfMessage( 'tooltip-preview' )->text()
-                               . ' [' . wfMessage( 'accesskey-preview' )->text() . ']',
-               );
-               $buttons['preview'] = Xml::element( 'input', $temp, '' );
+               ) + Linker::tooltipAndAccesskeyAttribs( 'preview' );
+               $buttons['preview'] = Xml::element( 'input', $attribs, '' );
                $buttons['live'] = '';
 
-               // @todo FIXME: Hardcoded square brackets.
-               $temp = array(
+               $attribs = array(
                        'id' => 'wpDiff',
                        'name' => 'wpDiff',
                        'type' => 'submit',
                        'tabindex' => ++$tabindex,
                        'value' => wfMessage( 'showdiff' )->text(),
-                       'accesskey' => wfMessage( 'accesskey-diff' )->text(),
-                       'title' => wfMessage( 'tooltip-diff' )->text()
-                               . ' [' . wfMessage( 'accesskey-diff' )->text() . ']',
-               );
-               $buttons['diff'] = Xml::element( 'input', $temp, '' );
+               ) + Linker::tooltipAndAccesskeyAttribs( 'diff' );
+               $buttons['diff'] = Xml::element( 'input', $attribs, '' );
 
                wfRunHooks( 'EditPageBeforeEditButtons', array( &$this, &$buttons, &$tabindex ) );
                return $buttons;
index 304c1bc..acf1bf6 100644 (file)
@@ -57,6 +57,9 @@ class GitInfo {
         */
        public function __construct( $repoDir, $usePrecomputed = true ) {
                $this->cacheFile = self::getCacheFilePath( $repoDir );
+               wfDebugLog( 'gitinfo',
+                       "Computed cacheFile={$this->cacheFile} for {$repoDir}"
+               );
                if ( $usePrecomputed &&
                        $this->cacheFile !== null &&
                        is_readable( $this->cacheFile )
@@ -65,9 +68,11 @@ class GitInfo {
                                file_get_contents( $this->cacheFile ),
                                true
                        );
+                       wfDebugLog( 'gitinfo', "Loaded git data from cache for {$repoDir}" );
                }
 
                if ( !$this->cacheIsComplete() ) {
+                       wfDebugLog( 'gitinfo', "Cache incomplete for {$repoDir}" );
                        $this->basedir = $repoDir . DIRECTORY_SEPARATOR . '.git';
                        if ( is_readable( $this->basedir ) && !is_dir( $this->basedir ) ) {
                                $GITfile = file_get_contents( $this->basedir );
@@ -90,24 +95,31 @@ class GitInfo {
         * Compute the path to the cache file for a given directory.
         *
         * @param string $repoDir The root directory of the repo where .git can be found
-        * @return string Path to GitInfo cache file in $wgCacheDirectory or null if
-        * $wgCacheDirectory is false (cache disabled).
+        * @return string Path to GitInfo cache file in $wgGitInfoCacheDirectory or
+        * null if $wgGitInfoCacheDirectory is false (cache disabled).
+        * @since 1.24
         */
        protected static function getCacheFilePath( $repoDir ) {
-               global $IP, $wgCacheDirectory;
-               if ( $wgCacheDirectory ) {
-                       // Transform path to git repo to something we can safely embed in a filename
-                       $repoName = $repoDir;
-                       if ( strpos( $repoName, $IP ) === 0 ) {
+               global $IP, $wgGitInfoCacheDirectory;
+
+               if ( $wgGitInfoCacheDirectory ) {
+                       // Convert both $IP and $repoDir to canonical paths to protect against
+                       // $IP having changed between the settings files and runtime.
+                       $realIP = realpath( $IP );
+                       $repoName = realpath( $repoDir );
+                       if ( $repoName === false ) {
+                               // Unit tests use fake path names
+                               $repoName = $repoDir;
+                       }
+                       if ( strpos( $repoName, $realIP ) === 0 ) {
                                // Strip $IP from path
-                               $repoName = substr( $repoName, strlen( $IP ) );
+                               $repoName = substr( $repoName, strlen( $realIP ) );
                        }
+                       // Transform path to git repo to something we can safely embed in
+                       // a filename
                        $repoName = strtr( $repoName, DIRECTORY_SEPARATOR, '-' );
                        $fileName = 'info' . $repoName . '.json';
-                       return implode(
-                               DIRECTORY_SEPARATOR,
-                               array( $wgCacheDirectory, 'gitinfo', $fileName )
-                       );
+                       return "{$wgGitInfoCacheDirectory}/{$fileName}";
                }
                return null;
        }
@@ -330,7 +342,9 @@ class GitInfo {
                        $this->getRemoteUrl();
 
                        if ( !$this->cacheIsComplete() ) {
-                               wfDebugLog( "Failed to compute GitInfo for \"{$this->basedir}\"" );
+                               wfDebugLog( 'gitinfo',
+                                       "Failed to compute GitInfo for \"{$this->basedir}\""
+                               );
                                return;
                        }
 
index ce5f8a3..cb5b7fd 100644 (file)
@@ -1891,13 +1891,8 @@ function wfReportTime() {
 /**
  * Safety wrapper for debug_backtrace().
  *
- * With Zend Optimizer 3.2.0 loaded, this causes segfaults under somewhat
- * murky circumstances, which may be triggered in part by stub objects
- * or other fancy talking'.
- *
- * Will return an empty array if Zend Optimizer is detected or if
- * debug_backtrace is disabled, otherwise the output from
- * debug_backtrace() (trimmed).
+ * Will return an empty array if debug_backtrace is disabled, otherwise
+ * the output from debug_backtrace() (trimmed).
  *
  * @param int $limit This parameter can be used to limit the number of stack frames returned
  *
@@ -1906,19 +1901,10 @@ function wfReportTime() {
 function wfDebugBacktrace( $limit = 0 ) {
        static $disabled = null;
 
-       if ( extension_loaded( 'Zend Optimizer' ) ) {
-               wfDebug( "Zend Optimizer detected; skipping debug_backtrace for safety.\n" );
-               return array();
-       }
-
        if ( is_null( $disabled ) ) {
-               $disabled = false;
-               $functions = explode( ',', ini_get( 'disable_functions' ) );
-               $functions = array_map( 'trim', $functions );
-               $functions = array_map( 'strtolower', $functions );
-               if ( in_array( 'debug_backtrace', $functions ) ) {
-                       wfDebug( "debug_backtrace is in disabled_functions\n" );
-                       $disabled = true;
+               $disabled = !function_exists( 'debug_backtrace' );
+               if ( $disabled ) {
+                       wfDebug( "debug_backtrace() is disabled\n" );
                }
        }
        if ( $disabled ) {
@@ -2111,9 +2097,11 @@ function wfClientAcceptsGzip( $force = false ) {
  * @param int $deflimit Default limit if none supplied
  * @param string $optionname Name of a user preference to check against
  * @return array
+ * @deprecated since 1.24, just call WebRequest::getLimitOffset() directly
  */
 function wfCheckLimits( $deflimit = 50, $optionname = 'rclimit' ) {
        global $wgRequest;
+       wfDeprecated( __METHOD__, '1.24' );
        return $wgRequest->getLimitOffset( $deflimit, $optionname );
 }
 
@@ -2592,10 +2580,12 @@ function wfIsHHVM() {
 /**
  * Swap two variables
  *
+ * @deprecated since 1.24
  * @param mixed $x
  * @param mixed $y
  */
 function swap( &$x, &$y ) {
+       wfDeprecated( __FUNCTION__, '1.24' );
        $z = $x;
        $x = $y;
        $y = $z;
@@ -2818,18 +2808,14 @@ function wfEscapeShellArg( /*...*/ ) {
 function wfShellExecDisabled() {
        static $disabled = null;
        if ( is_null( $disabled ) ) {
-               $disabled = false;
                if ( wfIniGetBool( 'safe_mode' ) ) {
                        wfDebug( "wfShellExec can't run in safe_mode, PHP's exec functions are too broken.\n" );
                        $disabled = 'safemode';
+               } elseif ( !function_exists( 'proc_open' ) ) {
+                       wfDebug( "proc_open() is disabled\n" );
+                       $disabled = 'disabled';
                } else {
-                       $functions = explode( ',', ini_get( 'disable_functions' ) );
-                       $functions = array_map( 'trim', $functions );
-                       $functions = array_map( 'strtolower', $functions );
-                       if ( in_array( 'proc_open', $functions ) ) {
-                               wfDebug( "proc_open is in disabled_functions\n" );
-                               $disabled = 'disabled';
-                       }
+                       $disabled = false;
                }
        }
        return $disabled;
@@ -2891,7 +2877,7 @@ function wfShellExec( $cmd, &$retval = null, $environ = array(),
        $cmd = $envcmd . $cmd;
 
        $useLogPipe = false;
-       if ( php_uname( 's' ) == 'Linux' ) {
+       if ( is_executable( '/bin/bash' ) ) {
                $time = intval ( isset( $limits['time'] ) ? $limits['time'] : $wgMaxShellTime );
                if ( isset( $limits['walltime'] ) ) {
                        $wallTime = intval( $limits['walltime'] );
index 89457e8..77486b2 100644 (file)
@@ -48,7 +48,7 @@ class Hooks {
         * Attach an event handler to a given hook.
         *
         * @param string $name Name of hook
-        * @param mixed $callback Callback function to attach
+        * @param callable $callback Callback function to attach
         *
         * @since 1.18
         */
index b2209c3..38aa392 100644 (file)
@@ -314,9 +314,13 @@ class HtmlFormatter {
        }
 
        /**
+        * Helper function for parseItemsToRemove(). This function extracts the selector type
+        * and the raw name of a selector from a CSS-style selector string and assigns those
+        * values to parameters passed by reference. For example, if given '#toc' as the
+        * $selector parameter, it will assign 'ID' as the $type and 'toc' as the $rawName.
         * @param string $selector CSS selector to parse
-        * @param string $type
-        * @param string $rawName
+        * @param string $type The type of selector (ID, CLASS, TAG_CLASS, or TAG)
+        * @param string $rawName The raw name of the selector
         * @return bool Whether the selector was successfully recognised
         */
        protected function parseSelector( $selector, &$type, &$rawName ) {
@@ -340,7 +344,8 @@ class HtmlFormatter {
        }
 
        /**
-        * Transforms CSS selectors into an internal representation suitable for processing
+        * Transforms CSS-style selectors into an internal representation suitable for
+        * processing by filterContent()
         * @return array
         */
        protected function parseItemsToRemove() {
diff --git a/includes/ImageQueryPage.php b/includes/ImageQueryPage.php
deleted file mode 100644 (file)
index b0266cb..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-/**
- * Variant of QueryPage which uses a gallery to output results.
- *
- * 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
- */
-
-/**
- * Variant of QueryPage which uses a gallery to output results, thus
- * suited for reports generating images
- *
- * @ingroup SpecialPage
- * @author Rob Church <robchur@gmail.com>
- */
-abstract class ImageQueryPage extends QueryPage {
-       /**
-        * Format and output report results using the given information plus
-        * OutputPage
-        *
-        * @param OutputPage $out OutputPage to print to
-        * @param Skin $skin User skin to use [unused]
-        * @param DatabaseBase $dbr (read) connection to use
-        * @param int $res Result pointer
-        * @param int $num Number of available result rows
-        * @param int $offset Paging offset
-        */
-       protected function outputResults( $out, $skin, $dbr, $res, $num, $offset ) {
-               if ( $num > 0 ) {
-                       $gallery = ImageGalleryBase::factory();
-                       $gallery->setContext( $this->getContext() );
-
-                       # $res might contain the whole 1,000 rows, so we read up to
-                       # $num [should update this to use a Pager]
-                       $i = 0;
-                       foreach ( $res as $row ) {
-                               $i++;
-                               $namespace = isset( $row->namespace ) ? $row->namespace : NS_FILE;
-                               $title = Title::makeTitleSafe( $namespace, $row->title );
-                               if ( $title instanceof Title && $title->getNamespace() == NS_FILE ) {
-                                       $gallery->add( $title, $this->getCellHtml( $row ) );
-                               }
-                               if ( $i === $num ) {
-                                       break;
-                               }
-                       }
-
-                       $out->addHTML( $gallery->toHtml() );
-               }
-       }
-
-       // Gotta override this since it's abstract
-       function formatResult( $skin, $result ) {
-       }
-
-       /**
-        * Get additional HTML to be shown in a results' cell
-        *
-        * @param object $row Result row
-        * @return string
-        */
-       protected function getCellHtml( $row ) {
-               return '';
-       }
-}
index 447dde3..ad3228d 100644 (file)
@@ -268,7 +268,7 @@ class MWTimestamp {
                // first value.
                if ( $data[0] == 'System' ) {
                        // First value is System, so use the system offset.
-                       if ( isset( $wgLocalTZoffset ) ) {
+                       if ( $wgLocalTZoffset !== null ) {
                                $diff = $wgLocalTZoffset;
                        }
                } elseif ( $data[0] == 'Offset' ) {
index 3e327c3..7decbee 100644 (file)
@@ -96,6 +96,7 @@ class MagicWord {
 
        static public $mVariableIDsInitialised = false;
        static public $mVariableIDs = array(
+               '!',
                'currentmonth',
                'currentmonth1',
                'currentmonthname',
index 826d55b..950bcd5 100644 (file)
@@ -995,7 +995,7 @@ class Message {
         * @throws MWException If message key array is empty.
         */
        protected function fetchMessage() {
-               if ( !isset( $this->message ) ) {
+               if ( $this->message === null ) {
                        $cache = MessageCache::singleton();
                        if ( is_array( $this->key ) ) {
                                if ( !count( $this->key ) ) {
@@ -1054,7 +1054,7 @@ class RawMessage extends Message {
         */
        public function fetchMessage() {
                // Just in case the message is unset somewhere.
-               if ( !isset( $this->message ) ) {
+               if ( $this->message === null ) {
                        $this->message = $this->key;
                }
                return $this->message;
index f4d4697..b4d3ab1 100644 (file)
@@ -164,6 +164,14 @@ class MimeMagic {
         */
        protected $mIEAnalyzer;
 
+       /** @var string Extra MIME types, set for example by media handling extensions
+        */
+       private $mExtraTypes = '';
+
+       /** @var string Extra MIME info, set for example by media handling extensions
+        */
+       private $mExtraInfo = '';
+
        /** @var MimeMagic The singleton instance
         */
        private static $instance = null;
@@ -179,6 +187,9 @@ class MimeMagic {
 
                global $wgMimeTypeFile, $IP;
 
+               # Allow media handling extensions adding MIME-types and MIME-info
+               wfRunHooks( 'MimeMagicInit', array( $this ) );
+
                $types = MM_WELL_KNOWN_MIME_TYPES;
 
                if ( $wgMimeTypeFile == 'includes/mime.types' ) {
@@ -197,11 +208,13 @@ class MimeMagic {
                        wfDebug( __METHOD__ . ": no mime types file defined, using build-ins only.\n" );
                }
 
+               $types .= "\n" . $this->mExtraTypes;
+
                $types = str_replace( array( "\r\n", "\n\r", "\n\n", "\r\r", "\r" ), "\n", $types );
                $types = str_replace( "\t", " ", $types );
 
                $this->mMimeToExt = array();
-               $this->mToMime = array();
+               $this->mExtToMime = array();
 
                $lines = explode( "\n", $types );
                foreach ( $lines as $s ) {
@@ -272,6 +285,8 @@ class MimeMagic {
                        wfDebug( __METHOD__ . ": no mime info file defined, using build-ins only.\n" );
                }
 
+               $info .= "\n" . $this->mExtraInfo;
+
                $info = str_replace( array( "\r\n", "\n\r", "\n\n", "\r\r", "\r" ), "\n", $info );
                $info = str_replace( "\t", " ", $info );
 
@@ -342,6 +357,26 @@ class MimeMagic {
                return self::$instance;
        }
 
+       /**
+        * Adds to the list mapping MIME to file extensions.
+        * As an extension author, you are encouraged to submit patches to
+        * MediaWiki's core to add new MIME types to mime.types.
+        * @param string $types
+        */
+       public function addExtraTypes( $types ) {
+               $this->mExtraTypes .= "\n" . $types;
+       }
+
+       /**
+        * Adds to the list mapping MIME to media type.
+        * As an extension author, you are encouraged to submit patches to
+        * MediaWiki's core to add new MIME info to mime.info.
+        * @param string $info
+        */
+       public function addExtraInfo( $info ) {
+               $this->mExtraInfo .= "\n" . $info;
+       }
+
        /**
         * Returns a list of file extensions for a given mime type as a space
         * separated string or null if the mime type was unrecognized. Resolves
@@ -485,14 +520,6 @@ class MimeMagic {
         * by looking at the file extension. Typically, this method would be called on the
         * result of guessMimeType().
         *
-        * Currently, this method does the following:
-        *
-        * If $mime is "unknown/unknown" and isRecognizableExtension( $ext ) returns false,
-        * return the result of guessTypesForExtension($ext).
-        *
-        * If $mime is "application/x-opc+zip" and isMatchingExtension( $ext, $mime )
-        * gives true, return the result of guessTypesForExtension($ext).
-        *
         * @param string $mime The mime type, typically guessed from a file's content.
         * @param string $ext The file extension, as taken from the file name
         *
@@ -518,8 +545,17 @@ class MimeMagic {
                                        ".$ext is not a known OPC extension.\n" );
                                $mime = 'application/zip';
                        }
+               } elseif ( $mime === 'text/plain' && $this->findMediaType( ".$ext" ) === MEDIATYPE_TEXT ) {
+                       // Textual types are sometimes not recognized properly.
+                       // If detected as text/plain, and has an extension which is textual
+                       // improve to the extension's type. For example, csv and json are often
+                       // misdetected as text/plain.
+                       $mime = $this->guessTypesForExtension( $ext );
                }
 
+               # Media handling extensions can improve the MIME detected
+               wfRunHooks( 'MimeMagicImproveFromExtension', array( $this, $ext, &$mime ) );
+
                if ( isset( $this->mMimeTypeAliases[$mime] ) ) {
                        $mime = $this->mMimeTypeAliases[$mime];
                }
@@ -746,7 +782,17 @@ class MimeMagic {
                        return 'image/vnd.djvu';
                }
 
-               return false;
+               # Media handling extensions can guess the MIME by content
+               # It's intentionally here so that if core is wrong about a type (false positive),
+               # people will hopefully nag and submit patches :)
+               $mime = false;
+               # Some strings by reference for performance - assuming well-behaved hooks
+               wfRunHooks(
+                       'MimeMagicGuessFromContent',
+                       array( $this, &$head, &$tail, $file, &$mime )
+               );
+
+               return $mime;
        }
 
        /**
@@ -994,7 +1040,7 @@ class MimeMagic {
                        $head = fread( $f, 256 );
                        fclose( $f );
 
-                       $head = strtolower( $head );
+                       $head = str_replace( 'ffmpeg2theora', '', strtolower( $head ) );
 
                        // This is an UGLY HACK, file should be parsed correctly
                        if ( strpos( $head, 'theora' ) !== false ) {
index 4edddbc..392f558 100644 (file)
@@ -88,16 +88,6 @@ class MWNamespace {
                return !self::isTalk( $index );
        }
 
-       /**
-        * @see self::isSubject
-        * @deprecated since 1.19 Please use the more consistently named isSubject
-        * @return bool
-        */
-       public static function isMain( $index ) {
-               wfDeprecated( __METHOD__, '1.19' );
-               return self::isSubject( $index );
-       }
-
        /**
         * Is the given namespace a talk namespace?
         *
index a2b8920..8967938 100644 (file)
@@ -885,10 +885,7 @@ class OutputPage extends ContextSource {
         * @return string
         */
        public function getPageTitleActionText() {
-               if ( isset( $this->mPageTitleActionText ) ) {
-                       return $this->mPageTitleActionText;
-               }
-               return '';
+               return $this->mPageTitleActionText;
        }
 
        /**
@@ -1345,18 +1342,6 @@ class OutputPage extends ContextSource {
                );
        }
 
-       /**
-        * Return whether user JavaScript is allowed for this page
-        * @deprecated since 1.18 Load modules with ResourceLoader, and origin and
-        *     trustworthiness is identified and enforced automagically.
-        * @return bool
-        */
-       public function isUserJsAllowed() {
-               wfDeprecated( __METHOD__, '1.18' );
-               return $this->getAllowedModules( ResourceLoaderModule::TYPE_SCRIPTS ) >=
-                       ResourceLoaderModule::ORIGIN_USER_INDIVIDUAL;
-       }
-
        /**
         * Show what level of JavaScript / CSS untrustworthiness is allowed on this page
         * @see ResourceLoaderModule::$origin
@@ -1608,7 +1593,7 @@ class OutputPage extends ContextSource {
                $oldTidy = $popts->setTidy( $tidy );
                $popts->setInterfaceMessage( (bool)$interface );
 
-               $parserOutput = $wgParser->parse(
+               $parserOutput = $wgParser->getFreshParser()->parse(
                        $text, $title, $popts,
                        $linestart, true, $this->mRevisionId
                );
@@ -1768,7 +1753,7 @@ class OutputPage extends ContextSource {
                        $oldLang = $popts->setTargetLanguage( $language );
                }
 
-               $parserOutput = $wgParser->parse(
+               $parserOutput = $wgParser->getFreshParser()->parse(
                        $text, $this->getTitle(), $popts,
                        $linestart, true, $this->mRevisionId
                );
@@ -2069,19 +2054,6 @@ class OutputPage extends ContextSource {
                }
        }
 
-       /**
-        * Get the message associated with the HTTP response code $code
-        *
-        * @param int $code Status code
-        * @return string|null Message or null if $code is not in the list of messages
-        *
-        * @deprecated since 1.18 Use HttpStatus::getMessage() instead.
-        */
-       public static function getStatusMessage( $code ) {
-               wfDeprecated( __METHOD__, '1.18' );
-               return HttpStatus::getMessage( $code );
-       }
-
        /**
         * Finally, all the text has been munged and accumulated into
         * the object, let's actually output it:
@@ -3112,16 +3084,13 @@ $templates
        /**
         * Get an array containing the variables to be set in mw.config in JavaScript.
         *
-        * DO NOT CALL THIS FROM OUTSIDE OF THIS CLASS OR Skin::makeGlobalVariablesScript().
-        * This is only public until that function is removed. You have been warned.
-        *
         * Do not add things here which can be evaluated in ResourceLoaderStartUpModule
         * - in other words, page-independent/site-wide variables (without state).
         * You will only be adding bloat to the html page and causing page caches to
         * have to be purged on configuration changes.
         * @return array
         */
-       public function getJSVars() {
+       private function getJSVars() {
                global $wgContLang;
 
                $curRevisionId = 0;
index 0fb3952..e475f0b 100644 (file)
@@ -32,6 +32,7 @@
  *   - index.php
  *   - load.php
  *   - api.php
+ *   - mw-config/index.php
  *   - cli
  *
  * @note Since we can't rely on anything, the minimum PHP versions and MW current
@@ -50,10 +51,15 @@ function wfPHPVersionError( $type ) {
                $finalOutput = "You are using PHP version $phpVersion "
                        . "but MediaWiki $mwVersion needs PHP $minimumVersionPHP or higher. ABORTING.\n"
                        . "Check if you have a newer php executable with a different name, such as php5.\n";
-       } elseif ( $type == 'index.php' ) {
+       } elseif ( $type == 'index.php' || $type == 'mw-config/index.php' ) {
                $pathinfo = pathinfo( $_SERVER['SCRIPT_NAME'] );
+               if ( $type == 'mw-config/index.php' ) {
+                       $dirname = dirname( $pathinfo['dirname'] );
+               } else {
+                       $dirname = $pathinfo['dirname'];
+               }
                $encLogo = htmlspecialchars(
-                       str_replace( '//', '/', $pathinfo['dirname'] . '/' ) .
+                       str_replace( '//', '/', $dirname . '/' ) .
                        'skins/common/images/mediawiki.png'
                );
 
diff --git a/includes/PageQueryPage.php b/includes/PageQueryPage.php
deleted file mode 100644 (file)
index afc0227..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-/**
- * Variant of QueryPage which formats the result as a simple link to the page.
- *
- * 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
- */
-
-/**
- * Variant of QueryPage which formats the result as a simple link to the page
- *
- * @ingroup SpecialPage
- */
-abstract class PageQueryPage extends QueryPage {
-       /**
-        * Run a LinkBatch to pre-cache LinkCache information,
-        * like page existence and information for stub color and redirect hints.
-        * This should be done for live data and cached data.
-        *
-        * @param DatabaseBase $db
-        * @param ResultWrapper $res
-        */
-       public function preprocessResults( $db, $res ) {
-               if ( !$res->numRows() ) {
-                       return;
-               }
-
-               $batch = new LinkBatch();
-               foreach ( $res as $row ) {
-                       $batch->add( $row->namespace, $row->title );
-               }
-               $batch->execute();
-
-               $res->seek( 0 );
-       }
-
-       /**
-        * Format the result as a simple link to the page
-        *
-        * @param Skin $skin
-        * @param object $row Result row
-        * @return string
-        */
-       public function formatResult( $skin, $row ) {
-               global $wgContLang;
-
-               $title = Title::makeTitleSafe( $row->namespace, $row->title );
-
-               if ( $title instanceof Title ) {
-                       $text = $wgContLang->convert( $title->getPrefixedText() );
-                       return Linker::link( $title, htmlspecialchars( $text ) );
-               } else {
-                       return Html::element( 'span', array( 'class' => 'mw-invalidtitle' ),
-                               Linker::getInvalidTitleDescription( $this->getContext(), $row->namespace, $row->title ) );
-               }
-       }
-}
index 081315e..fdb1a9d 100644 (file)
@@ -98,6 +98,20 @@ class Preferences {
 
                wfRunHooks( 'GetPreferences', array( $user, &$defaultPreferences ) );
 
+               self::loadPreferenceValues( $user, $context, $defaultPreferences );
+               self::$defaultPreferences = $defaultPreferences;
+               return $defaultPreferences;
+       }
+
+       /**
+        * Loads existing values for a given array of preferences
+        * @throws MWException
+        * @param User $user
+        * @param IContextSource $context
+        * @param array defaultPreferences to load values for
+        * @return array|null
+        */
+       static function loadPreferenceValues( $user, $context, &$defaultPreferences ) {
                ## Remove preferences that wikis don't want to use
                global $wgHiddenPrefs;
                foreach ( $wgHiddenPrefs as $pref ) {
@@ -138,8 +152,6 @@ class Preferences {
                        }
                }
 
-               self::$defaultPreferences = $defaultPreferences;
-
                return $defaultPreferences;
        }
 
@@ -1463,27 +1475,6 @@ class Preferences {
                        return array( $result, 'mailerror' );
                }
        }
-
-       /**
-        * @deprecated since 1.19
-        * @param User $user
-        * @return array
-        */
-       public static function loadOldSearchNs( $user ) {
-               wfDeprecated( __METHOD__, '1.19' );
-
-               $searchableNamespaces = SearchEngine::searchableNamespaces();
-               // Back compat with old format
-               $arr = array();
-
-               foreach ( $searchableNamespaces as $ns => $name ) {
-                       if ( $user->getOption( 'searchNs' . $ns ) ) {
-                               $arr[] = $ns;
-                       }
-               }
-
-               return $arr;
-       }
 }
 
 /** Some tweaks to allow js prefs to work */
diff --git a/includes/QueryPage.php b/includes/QueryPage.php
deleted file mode 100644 (file)
index 82dea0d..0000000
+++ /dev/null
@@ -1,855 +0,0 @@
-<?php
-/**
- * Base code for "query" special pages.
- *
- * 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
- */
-
-/**
- * This is a class for doing query pages; since they're almost all the same,
- * we factor out some of the functionality into a superclass, and let
- * subclasses derive from it.
- * @ingroup SpecialPage
- */
-abstract class QueryPage extends SpecialPage {
-       /** @var bool Whether or not we want plain listoutput rather than an ordered list */
-       protected $listoutput = false;
-
-       /** @var int The offset and limit in use, as passed to the query() function */
-       protected $offset = 0;
-
-       /** @var int */
-       protected $limit = 0;
-
-       /**
-        * The number of rows returned by the query. Reading this variable
-        * only makes sense in functions that are run after the query has been
-        * done, such as preprocessResults() and formatRow().
-        */
-       protected $numRows;
-
-       protected $cachedTimestamp = null;
-
-       /**
-        * Whether to show prev/next links
-        */
-       protected $shownavigation = true;
-
-       /**
-        * Get a list of query page classes and their associated special pages,
-        * for periodic updates.
-        *
-        * DO NOT CHANGE THIS LIST without testing that
-        * maintenance/updateSpecialPages.php still works.
-        * @return array
-        */
-       public static function getPages() {
-               global $wgDisableCounters;
-               static $qp = null;
-
-               if ( $qp === null ) {
-                       // QueryPage subclass, Special page name
-                       $qp = array(
-                               array( 'AncientPagesPage', 'Ancientpages' ),
-                               array( 'BrokenRedirectsPage', 'BrokenRedirects' ),
-                               array( 'DeadendPagesPage', 'Deadendpages' ),
-                               array( 'DoubleRedirectsPage', 'DoubleRedirects' ),
-                               array( 'FileDuplicateSearchPage', 'FileDuplicateSearch' ),
-                               array( 'ListDuplicatedFilesPage', 'ListDuplicatedFiles'),
-                               array( 'LinkSearchPage', 'LinkSearch' ),
-                               array( 'ListredirectsPage', 'Listredirects' ),
-                               array( 'LonelyPagesPage', 'Lonelypages' ),
-                               array( 'LongPagesPage', 'Longpages' ),
-                               array( 'MIMEsearchPage', 'MIMEsearch' ),
-                               array( 'MostcategoriesPage', 'Mostcategories' ),
-                               array( 'MostimagesPage', 'Mostimages' ),
-                               array( 'MostinterwikisPage', 'Mostinterwikis' ),
-                               array( 'MostlinkedCategoriesPage', 'Mostlinkedcategories' ),
-                               array( 'MostlinkedtemplatesPage', 'Mostlinkedtemplates' ),
-                               array( 'MostlinkedPage', 'Mostlinked' ),
-                               array( 'MostrevisionsPage', 'Mostrevisions' ),
-                               array( 'FewestrevisionsPage', 'Fewestrevisions' ),
-                               array( 'ShortPagesPage', 'Shortpages' ),
-                               array( 'UncategorizedCategoriesPage', 'Uncategorizedcategories' ),
-                               array( 'UncategorizedPagesPage', 'Uncategorizedpages' ),
-                               array( 'UncategorizedImagesPage', 'Uncategorizedimages' ),
-                               array( 'UncategorizedTemplatesPage', 'Uncategorizedtemplates' ),
-                               array( 'UnusedCategoriesPage', 'Unusedcategories' ),
-                               array( 'UnusedimagesPage', 'Unusedimages' ),
-                               array( 'WantedCategoriesPage', 'Wantedcategories' ),
-                               array( 'WantedFilesPage', 'Wantedfiles' ),
-                               array( 'WantedPagesPage', 'Wantedpages' ),
-                               array( 'WantedTemplatesPage', 'Wantedtemplates' ),
-                               array( 'UnwatchedPagesPage', 'Unwatchedpages' ),
-                               array( 'UnusedtemplatesPage', 'Unusedtemplates' ),
-                               array( 'WithoutInterwikiPage', 'Withoutinterwiki' ),
-                       );
-                       wfRunHooks( 'wgQueryPages', array( &$qp ) );
-
-                       if ( !$wgDisableCounters ) {
-                               $qp[] = array( 'PopularPagesPage', 'Popularpages' );
-                       }
-               }
-
-               return $qp;
-       }
-
-       /**
-        * A mutator for $this->listoutput;
-        *
-        * @param bool $bool
-        */
-       function setListoutput( $bool ) {
-               $this->listoutput = $bool;
-       }
-
-       /**
-        * Subclasses return an SQL query here, formatted as an array with the
-        * following keys:
-        *    tables => Table(s) for passing to Database::select()
-        *    fields => Field(s) for passing to Database::select(), may be *
-        *    conds => WHERE conditions
-        *    options => options
-        *    join_conds => JOIN conditions
-        *
-        * Note that the query itself should return the following three columns:
-        * 'namespace', 'title', and 'value'. 'value' is used for sorting.
-        *
-        * These may be stored in the querycache table for expensive queries,
-        * and that cached data will be returned sometimes, so the presence of
-        * extra fields can't be relied upon. The cached 'value' column will be
-        * an integer; non-numeric values are useful only for sorting the
-        * initial query (except if they're timestamps, see usesTimestamps()).
-        *
-        * Don't include an ORDER or LIMIT clause, they will be added.
-        *
-        * If this function is not overridden or returns something other than
-        * an array, getSQL() will be used instead. This is for backwards
-        * compatibility only and is strongly deprecated.
-        * @return array
-        * @since 1.18
-        */
-       function getQueryInfo() {
-               return null;
-       }
-
-       /**
-        * For back-compat, subclasses may return a raw SQL query here, as a string.
-        * This is strongly deprecated; getQueryInfo() should be overridden instead.
-        * @throws MWException
-        * @return string
-        */
-       function getSQL() {
-               /* Implement getQueryInfo() instead */
-               throw new MWException( "Bug in a QueryPage: doesn't implement getQueryInfo() nor "
-                       . "getQuery() properly" );
-       }
-
-       /**
-        * Subclasses return an array of fields to order by here. Don't append
-        * DESC to the field names, that'll be done automatically if
-        * sortDescending() returns true.
-        * @return array
-        * @since 1.18
-        */
-       function getOrderFields() {
-               return array( 'value' );
-       }
-
-       /**
-        * Does this query return timestamps rather than integers in its
-        * 'value' field? If true, this class will convert 'value' to a
-        * UNIX timestamp for caching.
-        * NOTE: formatRow() may get timestamps in TS_MW (mysql), TS_DB (pgsql)
-        *       or TS_UNIX (querycache) format, so be sure to always run them
-        *       through wfTimestamp()
-        * @return bool
-        * @since 1.18
-        */
-       function usesTimestamps() {
-               return false;
-       }
-
-       /**
-        * Override to sort by increasing values
-        *
-        * @return bool
-        */
-       function sortDescending() {
-               return true;
-       }
-
-       /**
-        * Is this query expensive (for some definition of expensive)? Then we
-        * don't let it run in miser mode. $wgDisableQueryPages causes all query
-        * pages to be declared expensive. Some query pages are always expensive.
-        *
-        * @return bool
-        */
-       function isExpensive() {
-               global $wgDisableQueryPages;
-               return $wgDisableQueryPages;
-       }
-
-       /**
-        * Is the output of this query cacheable? Non-cacheable expensive pages
-        * will be disabled in miser mode and will not have their results written
-        * to the querycache table.
-        * @return bool
-        * @since 1.18
-        */
-       public function isCacheable() {
-               return true;
-       }
-
-       /**
-        * Whether or not the output of the page in question is retrieved from
-        * the database cache.
-        *
-        * @return bool
-        */
-       function isCached() {
-               global $wgMiserMode;
-
-               return $this->isExpensive() && $wgMiserMode;
-       }
-
-       /**
-        * Sometime we don't want to build rss / atom feeds.
-        *
-        * @return bool
-        */
-       function isSyndicated() {
-               return true;
-       }
-
-       /**
-        * Formats the results of the query for display. The skin is the current
-        * skin; you can use it for making links. The result is a single row of
-        * result data. You should be able to grab SQL results off of it.
-        * If the function returns false, the line output will be skipped.
-        * @param Skin $skin
-        * @param object $result Result row
-        * @return string|bool String or false to skip
-        */
-       abstract function formatResult( $skin, $result );
-
-       /**
-        * The content returned by this function will be output before any result
-        *
-        * @return string
-        */
-       function getPageHeader() {
-               return '';
-       }
-
-       /**
-        * If using extra form wheely-dealies, return a set of parameters here
-        * as an associative array. They will be encoded and added to the paging
-        * links (prev/next/lengths).
-        *
-        * @return array
-        */
-       function linkParameters() {
-               return array();
-       }
-
-       /**
-        * Some special pages (for example SpecialListusers) might not return the
-        * current object formatted, but return the previous one instead.
-        * Setting this to return true will ensure formatResult() is called
-        * one more time to make sure that the very last result is formatted
-        * as well.
-        * @return bool
-        */
-       function tryLastResult() {
-               return false;
-       }
-
-       /**
-        * Clear the cache and save new results
-        *
-        * @param int|bool $limit Limit for SQL statement
-        * @param bool $ignoreErrors Whether to ignore database errors
-        * @throws DBError|Exception
-        * @return bool|int
-        */
-       function recache( $limit, $ignoreErrors = true ) {
-               if ( !$this->isCacheable() ) {
-                       return 0;
-               }
-
-               $fname = get_class( $this ) . '::recache';
-               $dbw = wfGetDB( DB_MASTER );
-               if ( !$dbw ) {
-                       return false;
-               }
-
-               try {
-                       # Do query
-                       $res = $this->reallyDoQuery( $limit, false );
-                       $num = false;
-                       if ( $res ) {
-                               $num = $res->numRows();
-                               # Fetch results
-                               $vals = array();
-                               foreach ( $res as $row ) {
-                                       if ( isset( $row->value ) ) {
-                                               if ( $this->usesTimestamps() ) {
-                                                       $value = wfTimestamp( TS_UNIX,
-                                                               $row->value );
-                                               } else {
-                                                       $value = intval( $row->value ); // @bug 14414
-                                               }
-                                       } else {
-                                               $value = 0;
-                                       }
-
-                                       $vals[] = array( 'qc_type' => $this->getName(),
-                                                       'qc_namespace' => $row->namespace,
-                                                       'qc_title' => $row->title,
-                                                       'qc_value' => $value );
-                               }
-
-                               $dbw->begin( __METHOD__ );
-                               # Clear out any old cached data
-                               $dbw->delete( 'querycache', array( 'qc_type' => $this->getName() ), $fname );
-                               # Save results into the querycache table on the master
-                               if ( count( $vals ) ) {
-                                       $dbw->insert( 'querycache', $vals, __METHOD__ );
-                               }
-                               # Update the querycache_info record for the page
-                               $dbw->delete( 'querycache_info', array( 'qci_type' => $this->getName() ), $fname );
-                               $dbw->insert( 'querycache_info',
-                                       array( 'qci_type' => $this->getName(), 'qci_timestamp' => $dbw->timestamp() ),
-                                       $fname );
-                               $dbw->commit( __METHOD__ );
-                       }
-               } catch ( DBError $e ) {
-                       if ( !$ignoreErrors ) {
-                               throw $e; // report query error
-                       }
-                       $num = false; // set result to false to indicate error
-               }
-
-               return $num;
-       }
-
-       /**
-        * Get a DB connection to be used for slow recache queries
-        * @return DatabaseBase
-        */
-       function getRecacheDB() {
-               return wfGetDB( DB_SLAVE, array( $this->getName(), 'QueryPage::recache', 'vslow' ) );
-       }
-
-       /**
-        * Run the query and return the result
-        * @param int|bool $limit Numerical limit or false for no limit
-        * @param int|bool $offset Numerical offset or false for no offset
-        * @return ResultWrapper
-        * @since 1.18
-        */
-       function reallyDoQuery( $limit, $offset = false ) {
-               $fname = get_class( $this ) . "::reallyDoQuery";
-               $dbr = $this->getRecacheDB();
-               $query = $this->getQueryInfo();
-               $order = $this->getOrderFields();
-
-               if ( $this->sortDescending() ) {
-                       foreach ( $order as &$field ) {
-                               $field .= ' DESC';
-                       }
-               }
-
-               if ( is_array( $query ) ) {
-                       $tables = isset( $query['tables'] ) ? (array)$query['tables'] : array();
-                       $fields = isset( $query['fields'] ) ? (array)$query['fields'] : array();
-                       $conds = isset( $query['conds'] ) ? (array)$query['conds'] : array();
-                       $options = isset( $query['options'] ) ? (array)$query['options'] : array();
-                       $join_conds = isset( $query['join_conds'] ) ? (array)$query['join_conds'] : array();
-
-                       if ( count( $order ) ) {
-                               $options['ORDER BY'] = $order;
-                       }
-
-                       if ( $limit !== false ) {
-                               $options['LIMIT'] = intval( $limit );
-                       }
-
-                       if ( $offset !== false ) {
-                               $options['OFFSET'] = intval( $offset );
-                       }
-
-                       $res = $dbr->select( $tables, $fields, $conds, $fname,
-                                       $options, $join_conds
-                       );
-               } else {
-                       // Old-fashioned raw SQL style, deprecated
-                       $sql = $this->getSQL();
-                       $sql .= ' ORDER BY ' . implode( ', ', $order );
-                       $sql = $dbr->limitResult( $sql, $limit, $offset );
-                       $res = $dbr->query( $sql, $fname );
-               }
-
-               return $dbr->resultObject( $res );
-       }
-
-       /**
-        * Somewhat deprecated, you probably want to be using execute()
-        * @param int|bool $offset
-        * @param int|bool $limit
-        * @return ResultWrapper
-        */
-       function doQuery( $offset = false, $limit = false ) {
-               if ( $this->isCached() && $this->isCacheable() ) {
-                       return $this->fetchFromCache( $limit, $offset );
-               } else {
-                       return $this->reallyDoQuery( $limit, $offset );
-               }
-       }
-
-       /**
-        * Fetch the query results from the query cache
-        * @param int|bool $limit Numerical limit or false for no limit
-        * @param int|bool $offset Numerical offset or false for no offset
-        * @return ResultWrapper
-        * @since 1.18
-        */
-       function fetchFromCache( $limit, $offset = false ) {
-               $dbr = wfGetDB( DB_SLAVE );
-               $options = array();
-               if ( $limit !== false ) {
-                       $options['LIMIT'] = intval( $limit );
-               }
-               if ( $offset !== false ) {
-                       $options['OFFSET'] = intval( $offset );
-               }
-               if ( $this->sortDescending() ) {
-                       $options['ORDER BY'] = 'qc_value DESC';
-               } else {
-                       $options['ORDER BY'] = 'qc_value ASC';
-               }
-               $res = $dbr->select( 'querycache', array( 'qc_type',
-                               'namespace' => 'qc_namespace',
-                               'title' => 'qc_title',
-                               'value' => 'qc_value' ),
-                               array( 'qc_type' => $this->getName() ),
-                               __METHOD__, $options
-               );
-               return $dbr->resultObject( $res );
-       }
-
-       public function getCachedTimestamp() {
-               if ( is_null( $this->cachedTimestamp ) ) {
-                       $dbr = wfGetDB( DB_SLAVE );
-                       $fname = get_class( $this ) . '::getCachedTimestamp';
-                       $this->cachedTimestamp = $dbr->selectField( 'querycache_info', 'qci_timestamp',
-                               array( 'qci_type' => $this->getName() ), $fname );
-               }
-               return $this->cachedTimestamp;
-       }
-
-       /**
-        * This is the actual workhorse. It does everything needed to make a
-        * real, honest-to-gosh query page.
-        * @param string $par
-        * @return int
-        */
-       function execute( $par ) {
-               global $wgQueryCacheLimit, $wgDisableQueryPageUpdate;
-
-               $user = $this->getUser();
-               if ( !$this->userCanExecute( $user ) ) {
-                       $this->displayRestrictionError();
-                       return;
-               }
-
-               $this->setHeaders();
-               $this->outputHeader();
-
-               $out = $this->getOutput();
-
-               if ( $this->isCached() && !$this->isCacheable() ) {
-                       $out->addWikiMsg( 'querypage-disabled' );
-                       return 0;
-               }
-
-               $out->setSyndicated( $this->isSyndicated() );
-
-               if ( $this->limit == 0 && $this->offset == 0 ) {
-                       list( $this->limit, $this->offset ) = $this->getRequest()->getLimitOffset();
-               }
-
-               // @todo Use doQuery()
-               if ( !$this->isCached() ) {
-                       # select one extra row for navigation
-                       $res = $this->reallyDoQuery( $this->limit + 1, $this->offset );
-               } else {
-                       # Get the cached result, select one extra row for navigation
-                       $res = $this->fetchFromCache( $this->limit + 1, $this->offset );
-                       if ( !$this->listoutput ) {
-
-                               # Fetch the timestamp of this update
-                               $ts = $this->getCachedTimestamp();
-                               $lang = $this->getLanguage();
-                               $maxResults = $lang->formatNum( $wgQueryCacheLimit );
-
-                               if ( $ts ) {
-                                       $updated = $lang->userTimeAndDate( $ts, $user );
-                                       $updateddate = $lang->userDate( $ts, $user );
-                                       $updatedtime = $lang->userTime( $ts, $user );
-                                       $out->addMeta( 'Data-Cache-Time', $ts );
-                                       $out->addJsConfigVars( 'dataCacheTime', $ts );
-                                       $out->addWikiMsg( 'perfcachedts', $updated, $updateddate, $updatedtime, $maxResults );
-                               } else {
-                                       $out->addWikiMsg( 'perfcached', $maxResults );
-                               }
-
-                               # If updates on this page have been disabled, let the user know
-                               # that the data set won't be refreshed for now
-                               if ( is_array( $wgDisableQueryPageUpdate )
-                                       && in_array( $this->getName(), $wgDisableQueryPageUpdate )
-                               ) {
-                                       $out->wrapWikiMsg(
-                                               "<div class=\"mw-querypage-no-updates\">\n$1\n</div>",
-                                               'querypage-no-updates'
-                                       );
-                               }
-                       }
-               }
-
-               $this->numRows = $res->numRows();
-
-               $dbr = wfGetDB( DB_SLAVE );
-               $this->preprocessResults( $dbr, $res );
-
-               $out->addHTML( Xml::openElement( 'div', array( 'class' => 'mw-spcontent' ) ) );
-
-               # Top header and navigation
-               if ( $this->shownavigation ) {
-                       $out->addHTML( $this->getPageHeader() );
-                       if ( $this->numRows > 0 ) {
-                               $out->addHTML( $this->msg( 'showingresultsinrange' )->numParams(
-                                       min( $this->numRows, $this->limit ), # do not show the one extra row, if exist
-                                       $this->offset + 1, ( min( $this->numRows, $this->limit ) + $this->offset ) )->parseAsBlock() );
-                               # Disable the "next" link when we reach the end
-                               $paging = $this->getLanguage()->viewPrevNext( $this->getPageTitle( $par ), $this->offset,
-                                       $this->limit, $this->linkParameters(), ( $this->numRows <= $this->limit ) );
-                               $out->addHTML( '<p>' . $paging . '</p>' );
-                       } else {
-                               # No results to show, so don't bother with "showing X of Y" etc.
-                               # -- just let the user know and give up now
-                               $out->addWikiMsg( 'specialpage-empty' );
-                               $out->addHTML( Xml::closeElement( 'div' ) );
-                               return;
-                       }
-               }
-
-               # The actual results; specialist subclasses will want to handle this
-               # with more than a straight list, so we hand them the info, plus
-               # an OutputPage, and let them get on with it
-               $this->outputResults( $out,
-                       $this->getSkin(),
-                       $dbr, # Should use a ResultWrapper for this
-                       $res,
-                       min( $this->numRows, $this->limit ), # do not format the one extra row, if exist
-                       $this->offset );
-
-               # Repeat the paging links at the bottom
-               if ( $this->shownavigation ) {
-                       $out->addHTML( '<p>' . $paging . '</p>' );
-               }
-
-               $out->addHTML( Xml::closeElement( 'div' ) );
-
-               return min( $this->numRows, $this->limit ); # do not return the one extra row, if exist
-       }
-
-       /**
-        * Format and output report results using the given information plus
-        * OutputPage
-        *
-        * @param OutputPage $out OutputPage to print to
-        * @param Skin $skin User skin to use
-        * @param DatabaseBase $dbr Database (read) connection to use
-        * @param ResultWrapper $res Result pointer
-        * @param int $num Number of available result rows
-        * @param int $offset Paging offset
-        */
-       protected function outputResults( $out, $skin, $dbr, $res, $num, $offset ) {
-               global $wgContLang;
-
-               if ( $num > 0 ) {
-                       $html = array();
-                       if ( !$this->listoutput ) {
-                               $html[] = $this->openList( $offset );
-                       }
-
-                       # $res might contain the whole 1,000 rows, so we read up to
-                       # $num [should update this to use a Pager]
-                       // @codingStandardsIgnoreStart Generic.CodeAnalysis.ForLoopWithTestFunctionCall.NotAllowed
-                       for ( $i = 0; $i < $num && $row = $res->fetchObject(); $i++ ) {
-                               // @codingStandardsIgnoreEnd
-                               $line = $this->formatResult( $skin, $row );
-                               if ( $line ) {
-                                       $attr = ( isset( $row->usepatrol ) && $row->usepatrol && $row->patrolled == 0 )
-                                               ? ' class="not-patrolled"'
-                                               : '';
-                                       $html[] = $this->listoutput
-                                               ? $line
-                                               : "<li{$attr}>{$line}</li>\n";
-                               }
-                       }
-
-                       # Flush the final result
-                       if ( $this->tryLastResult() ) {
-                               $row = null;
-                               $line = $this->formatResult( $skin, $row );
-                               if ( $line ) {
-                                       $attr = ( isset( $row->usepatrol ) && $row->usepatrol && $row->patrolled == 0 )
-                                               ? ' class="not-patrolled"'
-                                               : '';
-                                       $html[] = $this->listoutput
-                                               ? $line
-                                               : "<li{$attr}>{$line}</li>\n";
-                               }
-                       }
-
-                       if ( !$this->listoutput ) {
-                               $html[] = $this->closeList();
-                       }
-
-                       $html = $this->listoutput
-                               ? $wgContLang->listToText( $html )
-                               : implode( '', $html );
-
-                       $out->addHTML( $html );
-               }
-       }
-
-       /**
-        * @param int $offset
-        * @return string
-        */
-       function openList( $offset ) {
-               return "\n<ol start='" . ( $offset + 1 ) . "' class='special'>\n";
-       }
-
-       /**
-        * @return string
-        */
-       function closeList() {
-               return "</ol>\n";
-       }
-
-       /**
-        * Do any necessary preprocessing of the result object.
-        * @param DatabaseBase $db
-        * @param ResultWrapper $res
-        */
-       function preprocessResults( $db, $res ) {
-       }
-
-       /**
-        * Similar to above, but packaging in a syndicated feed instead of a web page
-        * @param string $class
-        * @param int $limit
-        * @return bool
-        */
-       function doFeed( $class = '', $limit = 50 ) {
-               global $wgFeed, $wgFeedClasses, $wgFeedLimit;
-
-               if ( !$wgFeed ) {
-                       $this->getOutput()->addWikiMsg( 'feed-unavailable' );
-                       return false;
-               }
-
-               $limit = min( $limit, $wgFeedLimit );
-
-               if ( isset( $wgFeedClasses[$class] ) ) {
-                       /** @var RSSFeed|AtomFeed $feed */
-                       $feed = new $wgFeedClasses[$class](
-                               $this->feedTitle(),
-                               $this->feedDesc(),
-                               $this->feedUrl() );
-                       $feed->outHeader();
-
-                       $res = $this->reallyDoQuery( $limit, 0 );
-                       foreach ( $res as $obj ) {
-                               $item = $this->feedResult( $obj );
-                               if ( $item ) {
-                                       $feed->outItem( $item );
-                               }
-                       }
-
-                       $feed->outFooter();
-                       return true;
-               } else {
-                       return false;
-               }
-       }
-
-       /**
-        * Override for custom handling. If the titles/links are ok, just do
-        * feedItemDesc()
-        * @param object $row
-        * @return FeedItem|null
-        */
-       function feedResult( $row ) {
-               if ( !isset( $row->title ) ) {
-                       return null;
-               }
-               $title = Title::makeTitle( intval( $row->namespace ), $row->title );
-               if ( $title ) {
-                       $date = isset( $row->timestamp ) ? $row->timestamp : '';
-                       $comments = '';
-                       if ( $title ) {
-                               $talkpage = $title->getTalkPage();
-                               $comments = $talkpage->getFullURL();
-                       }
-
-                       return new FeedItem(
-                               $title->getPrefixedText(),
-                               $this->feedItemDesc( $row ),
-                               $title->getFullURL(),
-                               $date,
-                               $this->feedItemAuthor( $row ),
-                               $comments );
-               } else {
-                       return null;
-               }
-       }
-
-       function feedItemDesc( $row ) {
-               return isset( $row->comment ) ? htmlspecialchars( $row->comment ) : '';
-       }
-
-       function feedItemAuthor( $row ) {
-               return isset( $row->user_text ) ? $row->user_text : '';
-       }
-
-       function feedTitle() {
-               global $wgLanguageCode, $wgSitename;
-               $desc = $this->getDescription();
-               return "$wgSitename - $desc [$wgLanguageCode]";
-       }
-
-       function feedDesc() {
-               return $this->msg( 'tagline' )->text();
-       }
-
-       function feedUrl() {
-               return $this->getPageTitle()->getFullURL();
-       }
-}
-
-/**
- * Class definition for a wanted query page like
- * WantedPages, WantedTemplates, etc
- */
-abstract class WantedQueryPage extends QueryPage {
-       function isExpensive() {
-               return true;
-       }
-
-       function isSyndicated() {
-               return false;
-       }
-
-       /**
-        * Cache page existence for performance
-        * @param DatabaseBase $db
-        * @param ResultWrapper $res
-        */
-       function preprocessResults( $db, $res ) {
-               if ( !$res->numRows() ) {
-                       return;
-               }
-
-               $batch = new LinkBatch;
-               foreach ( $res as $row ) {
-                       $batch->add( $row->namespace, $row->title );
-               }
-               $batch->execute();
-
-               // Back to start for display
-               $res->seek( 0 );
-       }
-
-       /**
-        * Should formatResult() always check page existence, even if
-        * the results are fresh?  This is a (hopefully temporary)
-        * kluge for Special:WantedFiles, which may contain false
-        * positives for files that exist e.g. in a shared repo (bug
-        * 6220).
-        * @return bool
-        */
-       function forceExistenceCheck() {
-               return false;
-       }
-
-       /**
-        * Format an individual result
-        *
-        * @param Skin $skin Skin to use for UI elements
-        * @param object $result Result row
-        * @return string
-        */
-       public function formatResult( $skin, $result ) {
-               $title = Title::makeTitleSafe( $result->namespace, $result->title );
-               if ( $title instanceof Title ) {
-                       if ( $this->isCached() || $this->forceExistenceCheck() ) {
-                               $pageLink = $title->isKnown()
-                                       ? '<del>' . Linker::link( $title ) . '</del>'
-                                       : Linker::link(
-                                               $title,
-                                               null,
-                                               array(),
-                                               array(),
-                                               array( 'broken' )
-                                       );
-                       } else {
-                               $pageLink = Linker::link(
-                                       $title,
-                                       null,
-                                       array(),
-                                       array(),
-                                       array( 'broken' )
-                               );
-                       }
-                       return $this->getLanguage()->specialList( $pageLink, $this->makeWlhLink( $title, $result ) );
-               } else {
-                       return $this->msg( 'wantedpages-badtitle', $result->title )->escaped();
-               }
-       }
-
-       /**
-        * Make a "what links here" link for a given title
-        *
-        * @param Title $title Title to make the link for
-        * @param object $result Result row
-        * @return string
-        */
-       private function makeWlhLink( $title, $result ) {
-               $wlh = SpecialPage::getTitleFor( 'Whatlinkshere', $title->getPrefixedText() );
-               $label = $this->msg( 'nlinks' )->numParams( $result->value )->escaped();
-               return Linker::link( $wlh, $label );
-       }
-}
index 06f5bd0..de69827 100644 (file)
@@ -41,6 +41,11 @@ class Revision implements IDBAccessObject {
        protected $mParentId;
        protected $mComment;
        protected $mText;
+       protected $mTextId;
+
+       /**
+        * @var stdClass|null
+        */
        protected $mTextRow;
 
        /**
@@ -299,7 +304,7 @@ class Revision implements IDBAccessObject {
        private static function newFromConds( $conditions, $flags = 0 ) {
                $db = wfGetDB( ( $flags & self::READ_LATEST ) ? DB_MASTER : DB_SLAVE );
                $rev = self::loadFromConds( $db, $conditions, $flags );
-               if ( is_null( $rev ) && wfGetLB()->getServerCount() > 1 ) {
+               if ( $rev === null && wfGetLB()->getServerCount() > 1 ) {
                        if ( !( $flags & self::READ_LATEST ) ) {
                                $dbw = wfGetDB( DB_MASTER );
                                $rev = self::loadFromConds( $dbw, $conditions, $flags );
@@ -566,13 +571,13 @@ class Revision implements IDBAccessObject {
                                $this->mTitle = null;
                        }
 
-                       if ( !isset( $row->rev_content_model ) || is_null( $row->rev_content_model ) ) {
+                       if ( !isset( $row->rev_content_model ) ) {
                                $this->mContentModel = null; # determine on demand if needed
                        } else {
                                $this->mContentModel = strval( $row->rev_content_model );
                        }
 
-                       if ( !isset( $row->rev_content_format ) || is_null( $row->rev_content_format ) ) {
+                       if ( !isset( $row->rev_content_format ) ) {
                                $this->mContentFormat = null; # determine on demand if needed
                        } else {
                                $this->mContentFormat = strval( $row->rev_content_format );
@@ -652,7 +657,7 @@ class Revision implements IDBAccessObject {
                                $this->mContentHandler = null;
 
                                $this->mText = $handler->serializeContent( $row['content'], $this->getContentFormat() );
-                       } elseif ( !is_null( $this->mText ) ) {
+                       } elseif ( $this->mText !== null ) {
                                $handler = $this->getContentHandler();
                                $this->mContent = $handler->unserializeContent( $this->mText );
                        }
@@ -674,7 +679,7 @@ class Revision implements IDBAccessObject {
 
                        // If we still have no length, see it we have the text to figure it out
                        if ( !$this->mSize ) {
-                               if ( !is_null( $this->mContent ) ) {
+                               if ( $this->mContent !== null ) {
                                        $this->mSize = $this->mContent->getSize();
                                } else {
                                        #NOTE: this should never happen if we have either text or content object!
@@ -684,7 +689,7 @@ class Revision implements IDBAccessObject {
 
                        // Same for sha1
                        if ( $this->mSha1 === null ) {
-                               $this->mSha1 = is_null( $this->mText ) ? null : self::base36Sha1( $this->mText );
+                               $this->mSha1 = $this->mText === null ? null : self::base36Sha1( $this->mText );
                        }
 
                        // force lazy init
@@ -759,11 +764,11 @@ class Revision implements IDBAccessObject {
         * @return Title|null
         */
        public function getTitle() {
-               if ( isset( $this->mTitle ) ) {
+               if ( $this->mTitle !== null ) {
                        return $this->mTitle;
                }
                //rev_id is defined as NOT NULL, but this revision may not yet have been inserted.
-               if ( !is_null( $this->mId ) ) {
+               if ( $this->mId !== null ) {
                        $dbr = wfGetDB( DB_SLAVE );
                        $row = $dbr->selectRow(
                                array( 'page', 'revision' ),
@@ -776,7 +781,7 @@ class Revision implements IDBAccessObject {
                        }
                }
 
-               if ( !$this->mTitle && !is_null( $this->mPage ) && $this->mPage > 0 ) {
+               if ( !$this->mTitle && $this->mPage !== null && $this->mPage > 0 ) {
                        $this->mTitle = Title::newFromID( $this->mPage );
                }
 
@@ -1031,7 +1036,7 @@ class Revision implements IDBAccessObject {
         * @return string
         */
        public function getSerializedData() {
-               if ( is_null( $this->mText ) ) {
+               if ( $this->mText === null ) {
                        $this->mText = $this->loadText();
                }
 
@@ -1048,9 +1053,9 @@ class Revision implements IDBAccessObject {
         * @return Content|null The Revision's content, or null on failure.
         */
        protected function getContentInternal() {
-               if ( is_null( $this->mContent ) ) {
+               if ( $this->mContent === null ) {
                        // Revision is immutable. Load on demand:
-                       if ( is_null( $this->mText ) ) {
+                       if ( $this->mText === null ) {
                                $this->mText = $this->loadText();
                        }
 
@@ -1184,7 +1189,7 @@ class Revision implements IDBAccessObject {
         * @return int
         */
        private function getPreviousRevisionId( $db ) {
-               if ( is_null( $this->mPage ) ) {
+               if ( $this->mPage === null ) {
                        return 0;
                }
                # Use page_latest if ID is not given
@@ -1355,7 +1360,7 @@ class Revision implements IDBAccessObject {
                }
 
                # Record the text (or external storage URL) to the text table
-               if ( !isset( $this->mTextId ) ) {
+               if ( $this->mTextId === null ) {
                        $old_id = $dbw->nextSequenceValue( 'text_old_id_seq' );
                        $dbw->insert( 'text',
                                array(
@@ -1372,7 +1377,7 @@ class Revision implements IDBAccessObject {
                }
 
                # Record the edit in revisions
-               $rev_id = isset( $this->mId )
+               $rev_id = $this->mId !== null
                        ? $this->mId
                        : $dbw->nextSequenceValue( 'revision_rev_id_seq' );
                $row = array(
@@ -1386,10 +1391,10 @@ class Revision implements IDBAccessObject {
                        'rev_timestamp'  => $dbw->timestamp( $this->mTimestamp ),
                        'rev_deleted'    => $this->mDeleted,
                        'rev_len'        => $this->mSize,
-                       'rev_parent_id'  => is_null( $this->mParentId )
+                       'rev_parent_id'  => $this->mParentId === null
                                ? $this->getPreviousRevisionId( $dbw )
                                : $this->mParentId,
-                       'rev_sha1'       => is_null( $this->mSha1 )
+                       'rev_sha1'       => $this->mSha1 === null
                                ? Revision::base36Sha1( $this->mText )
                                : $this->mSha1,
                );
@@ -1419,7 +1424,7 @@ class Revision implements IDBAccessObject {
 
                $dbw->insert( 'revision', $row, __METHOD__ );
 
-               $this->mId = !is_null( $rev_id ) ? $rev_id : $dbw->insertId();
+               $this->mId = $rev_id !== null ? $rev_id : $dbw->insertId();
 
                wfRunHooks( 'RevisionInsertComplete', array( &$this, $data, $flags ) );
 
@@ -1508,7 +1513,7 @@ class Revision implements IDBAccessObject {
                }
 
                // If we kept data for lazy extraction, use it now...
-               if ( isset( $this->mTextRow ) ) {
+               if ( $this->mTextRow !== null ) {
                        $row = $this->mTextRow;
                        $this->mTextRow = null;
                } else {
index 6a568c2..ec17a08 100644 (file)
@@ -383,7 +383,7 @@ class Sanitizer {
                                'h2', 'h3', 'h4', 'h5', 'h6', 'cite', 'code', 'em', 's',
                                'strike', 'strong', 'tt', 'var', 'div', 'center',
                                'blockquote', 'ol', 'ul', 'dl', 'table', 'caption', 'pre',
-                               'ruby', 'rt', 'rb', 'rp', 'p', 'span', 'abbr', 'dfn',
+                               'ruby', 'rb', 'rp', 'rt', 'rtc', 'p', 'span', 'abbr', 'dfn',
                                'kbd', 'samp', 'data', 'time', 'mark'
                        );
                        $htmlsingle = array(
@@ -1685,10 +1685,10 @@ class Sanitizer {
                        # http://www.whatwg.org/html/text-level-semantics.html#the-ruby-element
                        'ruby'       => $common,
                        # rbc
-                       # rtc
                        'rb'         => $common,
-                       'rt'         => $common, #array_merge( $common, array( 'rbspan' ) ),
                        'rp'         => $common,
+                       'rt'         => $common, #array_merge( $common, array( 'rbspan' ) ),
+                       'rtc'         => $common,
 
                        # MathML root element, where used for extensions
                        # 'title' may not be 100% valid here; it's XHTML
index ccb3a15..145f55a 100644 (file)
@@ -78,6 +78,14 @@ if ( $wgExtensionAssetsPath === false ) {
        $wgExtensionAssetsPath = "$wgScriptPath/extensions";
 }
 
+// Enable default skins. Temporary, to be removed before 1.24 release.
+// This is hacky and bad, the require_once calls should eventually be generated by the installer
+// and placed in LocalSettings.php.
+// While this is in Setup.php, it needs to be done as soon as possible, as some of the setup code
+// depends on all extensions and skins being already required (bug 67318).
+require_once "$wgStyleDirectory/MonoBook/MonoBook.php";
+require_once "$wgStyleDirectory/Vector/Vector.php";
+
 if ( $wgLogo === false ) {
        $wgLogo = "$wgStylePath/common/images/wiki.png";
 }
@@ -98,6 +106,10 @@ if ( $wgDeletedDirectory === false ) {
        $wgDeletedDirectory = "{$wgUploadDirectory}/deleted";
 }
 
+if ( $wgGitInfoCacheDirectory === false && $wgCacheDirectory !== false ) {
+       $wgGitInfoCacheDirectory = "{$wgCacheDirectory}/gitinfo";
+}
+
 if ( isset( $wgFileStore['deleted']['directory'] ) ) {
        $wgDeletedDirectory = $wgFileStore['deleted']['directory'];
 }
@@ -106,7 +118,7 @@ if ( isset( $wgFooterIcons['copyright'] )
        && isset( $wgFooterIcons['copyright']['copyright'] )
        && $wgFooterIcons['copyright']['copyright'] === array()
 ) {
-       if ( isset( $wgCopyrightIcon ) && $wgCopyrightIcon ) {
+       if ( $wgCopyrightIcon ) {
                $wgFooterIcons['copyright']['copyright'] = $wgCopyrightIcon;
        } elseif ( $wgRightsIcon || $wgRightsText ) {
                $wgFooterIcons['copyright']['copyright'] = array(
@@ -388,6 +400,11 @@ if ( $wgNewUserLog ) {
        $wgLogActionsHandlers['newusers/autocreate'] = 'NewUsersLogFormatter';
 }
 
+if ( $wgPageLanguageUseDB ) {
+       $wgLogTypes[] = 'pagelang';
+       $wgLogActionsHandlers['pagelang/pagelang'] = 'PageLangLogFormatter';
+}
+
 if ( $wgCookieSecure === 'detect' ) {
        $wgCookieSecure = ( WebRequest::detectProtocol() === 'https' );
 }
@@ -568,26 +585,33 @@ if ( !defined( 'MW_NO_SESSION' ) && !$wgCommandLineMode &&
 wfProfileOut( $fname . '-session' );
 wfProfileIn( $fname . '-globals' );
 
+/**
+ * @var Language $wgContLang
+ */
 $wgContLang = Language::factory( $wgLanguageCode );
 $wgContLang->initEncoding();
 $wgContLang->initContLang();
 
 // Now that variant lists may be available...
 $wgRequest->interpolateTitle();
+
+/**
+ * @var User $wgUser
+ */
 $wgUser = RequestContext::getMain()->getUser(); // BackCompat
 
 /**
- * @var $wgLang Language
+ * @var Language $wgLang
  */
 $wgLang = new StubUserLang;
 
 /**
- * @var OutputPage
+ * @var OutputPage $wgOut
  */
 $wgOut = RequestContext::getMain()->getOutput(); // BackCompat
 
 /**
- * @var $wgParser Parser
+ * @var Parser $wgParser
  */
 $wgParser = new StubObject( 'wgParser', $wgParserConf['class'], array( $wgParserConf ) );
 
@@ -596,17 +620,32 @@ if ( !is_object( $wgAuth ) ) {
        wfRunHooks( 'AuthPluginSetup', array( &$wgAuth ) );
 }
 
-# Placeholders in case of DB error
+/**
+ * @var Title $wgTitle
+ */
 $wgTitle = null;
 
 $wgDeferredUpdateList = array();
 
-// Enable default skins.
-// This is hacky and bad, but it will go away before 1.24 release (or so I hope).
-// These lines should eventually be placed in skins' meta definition files, and loaded by a
-// require_once for each skin file generated by the installer and placed in LocalSettings.php.
-require_once "$wgStyleDirectory/MonoBook/MonoBook.php";
-require_once "$wgStyleDirectory/Vector/Vector.php";
+// Disable all other email settings automatically if $wgEnableEmail
+// is set to false. - bug 63678
+if ( !$wgEnableEmail ) {
+       $wgAllowHTMLEmail = false;
+       $wgEmailAuthentication = false; // do not require auth if you're not sending email anyway
+       $wgEnableUserEmail = false;
+       $wgEnotifFromEditor = false;
+       $wgEnotifImpersonal = false;
+       $wgEnotifMaxRecips = 0;
+       $wgEnotifMinorEdits = false;
+       $wgEnotifRevealEditorAddress = false;
+       $wgEnotifUseJobQ = false;
+       $wgEnotifUseRealName = false;
+       $wgEnotifUserTalk = false;
+       $wgEnotifWatchlist = false;
+       unset( $wgGroupPermissions['user']['sendemail'] );
+       $wgUserEmailUseReplyTo = false;
+       $wgUsersNotifiedOnAllChanges = array();
+}
 
 wfProfileOut( $fname . '-globals' );
 wfProfileIn( $fname . '-extensions' );
index b99840f..b877544 100644 (file)
@@ -191,7 +191,7 @@ class SiteConfiguration {
         * @param array $params Array of parameters.
         * @return mixed The value of the setting requested.
         */
-       protected function getSetting( $settingName, $wiki, /*array*/ $params ) {
+       protected function getSetting( $settingName, $wiki, array $params ) {
                $retval = null;
                if ( array_key_exists( $settingName, $this->settings ) ) {
                        $thisSetting =& $this->settings[$settingName];
@@ -207,14 +207,14 @@ class SiteConfiguration {
                                // Do tag settings
                                foreach ( $params['tags'] as $tag ) {
                                        if ( array_key_exists( $tag, $thisSetting ) ) {
-                                               if ( isset( $retval ) && is_array( $retval ) && is_array( $thisSetting[$tag] ) ) {
+                                               if ( is_array( $retval ) && is_array( $thisSetting[$tag] ) ) {
                                                        $retval = self::arrayMerge( $retval, $thisSetting[$tag] );
                                                } else {
                                                        $retval = $thisSetting[$tag];
                                                }
                                                break 2;
                                        } elseif ( array_key_exists( "+$tag", $thisSetting ) && is_array( $thisSetting["+$tag"] ) ) {
-                                               if ( !isset( $retval ) ) {
+                                               if ( $retval === null ) {
                                                        $retval = array();
                                                }
                                                $retval = self::arrayMerge( $retval, $thisSetting["+$tag"] );
@@ -224,7 +224,7 @@ class SiteConfiguration {
                                $suffix = $params['suffix'];
                                if ( !is_null( $suffix ) ) {
                                        if ( array_key_exists( $suffix, $thisSetting ) ) {
-                                               if ( isset( $retval ) && is_array( $retval ) && is_array( $thisSetting[$suffix] ) ) {
+                                               if ( is_array( $retval ) && is_array( $thisSetting[$suffix] ) ) {
                                                        $retval = self::arrayMerge( $retval, $thisSetting[$suffix] );
                                                } else {
                                                        $retval = $thisSetting[$suffix];
@@ -233,7 +233,7 @@ class SiteConfiguration {
                                        } elseif ( array_key_exists( "+$suffix", $thisSetting )
                                                && is_array( $thisSetting["+$suffix"] )
                                        ) {
-                                               if ( !isset( $retval ) ) {
+                                               if ( $retval === null ) {
                                                        $retval = array();
                                                }
                                                $retval = self::arrayMerge( $retval, $thisSetting["+$suffix"] );
@@ -450,7 +450,7 @@ class SiteConfiguration {
         * @param array $wikiTags The tags assigned to the wiki.
         * @return array
         */
-       protected function mergeParams( $wiki, $suffix, /*array*/ $params, /*array*/ $wikiTags ) {
+       protected function mergeParams( $wiki, $suffix, array $params, array $wikiTags ) {
                $ret = $this->getWikiParams( $wiki );
 
                if ( is_null( $ret['suffix'] ) ) {
index 4e737d1..e5c1e17 100644 (file)
@@ -273,7 +273,8 @@ class SiteStatsInit {
        private $db;
 
        // Various stats
-       private $mEdits, $mArticles, $mPages, $mUsers, $mViews, $mFiles = 0;
+       private $mEdits = null, $mArticles = null, $mPages = null;
+       private $mUsers = null, $mViews = null, $mFiles = null;
 
        /**
         * Constructor
@@ -402,16 +403,17 @@ class SiteStatsInit {
        }
 
        /**
-        * Refresh site_stats.
+        * Refresh site_stats. If you want ss_total_views to be updated, be sure to
+        * call views() first.
         */
-       protected function refresh() {
+       public function refresh() {
                $values = array(
                        'ss_row_id' => 1,
-                       'ss_total_edits' => $this->mEdits,
-                       'ss_good_articles' => $this->mArticles,
-                       'ss_total_pages' => $this->mPages,
-                       'ss_users' => $this->mUsers,
-                       'ss_images' => $this->mFiles,
+                       'ss_total_edits' => ( $this->mEdits === null ? $this->edits() : $this->mEdits ),
+                       'ss_good_articles' => ( $this->mArticles === null ? $this->articles() : $this->mArticles ),
+                       'ss_total_pages' => ( $this->mPages === null ? $this->pages() : $this->mPages ),
+                       'ss_users' => ( $this->mUsers === null ? $this->users() : $this->mUsers ),
+                       'ss_images' => ( $this->mFiles === null ? $this->files() : $this->mFiles ),
                ) + (
                        $this->mViews ? array( 'ss_total_views' => $this->mViews ) : array()
                );
index 177e2b1..bc30eff 100644 (file)
@@ -421,21 +421,6 @@ abstract class Skin extends ContextSource {
                }
        }
 
-       /**
-        * Make a "<script>" tag containing global variables
-        *
-        * @deprecated since 1.19
-        * @param mixed $unused
-        * @return string HTML fragment
-        */
-       public static function makeGlobalVariablesScript( $unused ) {
-               global $wgOut;
-
-               wfDeprecated( __METHOD__, '1.19' );
-
-               return self::makeVariablesScript( $wgOut->getJSVars() );
-       }
-
        /**
         * Get the query to generate a dynamic stylesheet
         *
@@ -875,7 +860,7 @@ abstract class Skin extends ContextSource {
 
                $out = '';
 
-               if ( isset( $wgCopyrightIcon ) && $wgCopyrightIcon ) {
+               if ( $wgCopyrightIcon ) {
                        $out = $wgCopyrightIcon;
                } elseif ( $wgRightsIcon ) {
                        $icon = htmlspecialchars( $wgRightsIcon );
index f9799a5..97c0ec4 100644 (file)
@@ -112,7 +112,6 @@ class SkinTemplate extends Skin {
         * Generates array of language links for the current page
         *
         * @return array
-        * @public
         */
        public function getLanguages() {
                global $wgHideInterlanguageLinks;
@@ -1098,7 +1097,7 @@ class SkinTemplate extends Skin {
                                        /**
                                         * The following actions use messages which, if made particular to
                                         * the any specific skins, would break the Ajax code which makes this
-                                        * action happen entirely inline. Skin::makeGlobalVariablesScript
+                                        * action happen entirely inline. OutputPage::getJSVars
                                         * defines a set of messages in a javascript object - and these
                                         * messages are assumed to be global for all skins. Without making
                                         * a change to that procedure these messages will have to remain as
index 6508bce..fb9b3e4 100644 (file)
@@ -83,9 +83,9 @@ class StubObject {
         * @param object $obj Object to check.
         * @return void
         */
-       static function unstub( $obj ) {
+       static function unstub( &$obj ) {
                if ( $obj instanceof StubObject ) {
-                       $obj->_unstub( 'unstub', 3 );
+                       $obj = $obj->_unstub( 'unstub', 3 );
                }
        }
 
@@ -134,6 +134,7 @@ class StubObject {
         * @param string $name Name of the method called in this object.
         * @param int $level Level to go in the stack trace to get the function
         *   who called this function.
+        * @return The unstubbed version of itself
         * @throws MWException
         */
        function _unstub( $name = '_unstub', $level = 2 ) {
@@ -157,6 +158,7 @@ class StubObject {
                        $GLOBALS[$this->global] = $this->_newObject();
                        --$recursionLevel;
                        wfProfileOut( $fname );
+                       return $GLOBALS[$this->global];
                }
        }
 }
index 9d8614d..a49d52f 100644 (file)
@@ -150,6 +150,9 @@ class Title {
        /** @var bool The (string) language code of the page's language and content code. */
        private $mPageLanguage = false;
 
+       /** @var string The page language code from the database */
+       private $mDbPageLanguage = null;
+
        /** @var TitleValue A corresponding TitleValue object */
        private $mTitleValue = null;
        // @}
@@ -439,6 +442,9 @@ class Title {
                        } else {
                                $this->mContentModel = false; # initialized lazily in getContentModel()
                        }
+                       if ( isset( $row->page_lang ) ) {
+                               $this->mDbPageLanguage = (string)$row->page_lang;
+                       }
                } else { // page not found
                        $this->mArticleID = 0;
                        $this->mLength = 0;
@@ -1365,7 +1371,6 @@ class Title {
         *
         * @param string $name The text
         * @return string The prefixed text
-        * @private
         */
        private function prefix( $name ) {
                $p = '';
@@ -1770,34 +1775,6 @@ class Title {
                return $ret;
        }
 
-       /**
-        * Get an HTML-escaped version of the URL form, suitable for
-        * using in a link, without a server name or fragment
-        *
-        * @see self::getLocalURL for the arguments.
-        * @param string $query
-        * @param bool|string $query2
-        * @return string The URL
-        * @deprecated since 1.19
-        */
-       public function escapeLocalURL( $query = '', $query2 = false ) {
-               wfDeprecated( __METHOD__, '1.19' );
-               return htmlspecialchars( $this->getLocalURL( $query, $query2 ) );
-       }
-
-       /**
-        * Get an HTML-escaped version of the URL form, suitable for
-        * using in a link, including the server name and fragment
-        *
-        * @see self::getLocalURL for the arguments.
-        * @return string The URL
-        * @deprecated since 1.19
-        */
-       public function escapeFullURL( $query = '', $query2 = false ) {
-               wfDeprecated( __METHOD__, '1.19' );
-               return htmlspecialchars( $this->getFullURL( $query, $query2 ) );
-       }
-
        /**
         * Get the URL form for an internal link.
         * - Used in various Squid-related code, in case we have a different
@@ -1837,19 +1814,6 @@ class Title {
                return $url;
        }
 
-       /**
-        * HTML-escaped version of getCanonicalURL()
-        *
-        * @see self::getLocalURL for the arguments.
-        * @since 1.18
-        * @return string
-        * @deprecated since 1.19
-        */
-       public function escapeCanonicalURL( $query = '', $query2 = false ) {
-               wfDeprecated( __METHOD__, '1.19' );
-               return htmlspecialchars( $this->getCanonicalURL( $query, $query2 ) );
-       }
-
        /**
         * Get the edit URL for this Title
         *
@@ -2563,7 +2527,7 @@ class Title {
                        return false;
                }
 
-               if ( !isset( $this->mTitleProtection ) ) {
+               if ( $this->mTitleProtection === null ) {
                        $dbr = wfGetDB( DB_SLAVE );
                        $res = $dbr->select(
                                'protected_titles',
@@ -2578,30 +2542,6 @@ class Title {
                return $this->mTitleProtection;
        }
 
-       /**
-        * Update the title protection status
-        *
-        * @deprecated since 1.19; use WikiPage::doUpdateRestrictions() instead.
-        * @param string $create_perm Permission required for creation
-        * @param string $reason Reason for protection
-        * @param string $expiry Expiry timestamp
-        * @return bool
-        */
-       public function updateTitleProtection( $create_perm, $reason, $expiry ) {
-               wfDeprecated( __METHOD__, '1.19' );
-
-               global $wgUser;
-
-               $limit = array( 'create' => $create_perm );
-               $expiry = array( 'create' => $expiry );
-
-               $page = WikiPage::factory( $this );
-               $cascade = false;
-               $status = $page->doUpdateRestrictions( $limit, $expiry, $cascade, $reason, $wgUser );
-
-               return $status->isOK();
-       }
-
        /**
         * Remove any title protection due to page existing
         */
@@ -2716,7 +2656,7 @@ class Title {
         * @since 1.23
         */
        public function areCascadeProtectionSourcesLoaded( $getPages = true ) {
-               return $getPages ? isset( $this->mCascadeSources ) : isset( $this->mHasCascadingRestrictions );
+               return $getPages ? $this->mCascadeSources !== null : $this->mHasCascadingRestrictions !== null;
        }
 
        /**
@@ -2736,9 +2676,9 @@ class Title {
                global $wgContLang;
                $pagerestrictions = array();
 
-               if ( isset( $this->mCascadeSources ) && $getPages ) {
+               if ( $this->mCascadeSources !== null && $getPages ) {
                        return array( $this->mCascadeSources, $this->mCascadingRestrictions );
-               } elseif ( isset( $this->mHasCascadingRestrictions ) && !$getPages ) {
+               } elseif ( $this->mHasCascadingRestrictions !== null && !$getPages ) {
                        return array( $this->mHasCascadingRestrictions, $pagerestrictions );
                }
 
@@ -3084,7 +3024,7 @@ class Title {
                # alone to cache the result.  There's no point in having it hanging
                # around uninitialized in every Title object; therefore we only add it
                # if needed and don't declare it statically.
-               if ( !isset( $this->mHasSubpages ) ) {
+               if ( $this->mHasSubpages === null ) {
                        $this->mHasSubpages = false;
                        $subpages = $this->getSubpages( 1 );
                        if ( $subpages instanceof TitleArray ) {
@@ -3320,6 +3260,7 @@ class Title {
                $this->mContentModel = false;
                $this->mEstimateRevisions = null;
                $this->mPageLanguage = false;
+               $this->mDbPageLanguage = null;
        }
 
        /**
@@ -4772,7 +4713,9 @@ class Title {
         * @return string Last-touched timestamp
         */
        public function getTouched( $db = null ) {
-               $db = isset( $db ) ? $db : wfGetDB( DB_SLAVE );
+               if ( $db === null ) {
+                       $db = wfGetDB( DB_SLAVE );
+               }
                $touched = $db->selectField( 'page', 'page_touched', $this->pageCond(), __METHOD__ );
                return $touched;
        }
@@ -4977,6 +4920,12 @@ class Title {
                        return $wgLang;
                }
 
+               // Checking if DB language is set
+               if ( $this->mDbPageLanguage ) {
+                       wfProfileOut( __METHOD__ );
+                       return wfGetLangObj( $this->mDbPageLanguage );
+               }
+
                if ( !$this->mPageLanguage || $this->mPageLanguage[1] !== $wgLanguageCode ) {
                        // Note that this may depend on user settings, so the cache should
                        // be only per-request.
@@ -4990,6 +4939,7 @@ class Title {
                } else {
                        $langObj = wfGetLangObj( $this->mPageLanguage[0] );
                }
+
                wfProfileOut( __METHOD__ );
                return $langObj;
        }
index f2d3d9b..5a117bd 100644 (file)
@@ -56,7 +56,7 @@ class PasswordError extends MWException {
  * for rendering normal pages are set in the cookie to minimize use
  * of the database.
  */
-class User {
+class User implements IDBAccessObject {
        /**
         * Global constants made accessible as class constants so that autoloader
         * magic can be used.
@@ -149,6 +149,7 @@ class User {
                'nominornewtalk',
                'noratelimit',
                'override-export-depth',
+               'pagelang',
                'passwordreset',
                'patrol',
                'patrolmarks',
@@ -1169,9 +1170,10 @@ class User {
         * Load user and user_group data from the database.
         * $this->mId must be set, this is how the user is identified.
         *
+        * @param integer $flags Supports User::READ_LOCKING
         * @return bool True if the user exists, false if the user is anonymous
         */
-       public function loadFromDatabase() {
+       public function loadFromDatabase( $flags = 0 ) {
                // Paranoia
                $this->mId = intval( $this->mId );
 
@@ -1186,7 +1188,10 @@ class User {
                        'user',
                        self::selectFields(),
                        array( 'user_id' => $this->mId ),
-                       __METHOD__
+                       __METHOD__,
+                       ( $flags & self::READ_LOCKING == self::READ_LOCKING )
+                               ? array( 'LOCK IN SHARE MODE' )
+                               : array()
                );
 
                wfRunHooks( 'UserLoadFromDatabase', array( $this, &$s ) );
@@ -2941,7 +2946,7 @@ class User {
                        return null;
                }
 
-               if ( !isset( $this->mEditCount ) ) {
+               if ( $this->mEditCount === null ) {
                        /* Populate the count, if it has not been populated yet */
                        wfProfileIn( __METHOD__ );
                        $dbr = wfGetDB( DB_SLAVE );
@@ -3605,17 +3610,25 @@ class User {
                        array( 'IGNORE' )
                );
                if ( !$dbw->affectedRows() ) {
-                       if ( !$inWrite ) {
-                               // XXX: Get out of REPEATABLE-READ so the SELECT below works.
-                               // Often this case happens early in views before any writes.
-                               // This shows up at least with CentralAuth.
+                       // The queries below cannot happen in the same REPEATABLE-READ snapshot.
+                       // Handle this by COMMIT, if possible, or by LOCK IN SHARE MODE otherwise.
+                       if ( $inWrite ) {
+                               // Can't commit due to pending writes that may need atomicity.
+                               // This may cause some lock contention unlike the case below.
+                               $options = array( 'LOCK IN SHARE MODE' );
+                               $flags = self::READ_LOCKING;
+                       } else {
+                               // Often, this case happens early in views before any writes when
+                               // using CentralAuth. It's should be OK to commit and break the snapshot.
                                $dbw->commit( __METHOD__, 'flush' );
+                               $options = array();
+                               $flags = 0;
                        }
                        $this->mId = $dbw->selectField( 'user', 'user_id',
-                               array( 'user_name' => $this->mName ), __METHOD__ );
+                               array( 'user_name' => $this->mName ), __METHOD__, $options );
                        $loaded = false;
                        if ( $this->mId ) {
-                               if ( $this->loadFromDatabase() ) {
+                               if ( $this->loadFromDatabase( $flags ) ) {
                                        $loaded = true;
                                }
                        }
index d3e8cb8..d73f6b4 100644 (file)
@@ -544,7 +544,6 @@ class EmailNotification {
                                $fname = __METHOD__;
                                $dbw->onTransactionIdle(
                                        function() use ( $dbw, $timestamp, $watchers, $title, $fname ) {
-                                               $dbw->begin( $fname );
                                                $dbw->update( 'watchlist',
                                                        array( /* SET */
                                                                'wl_notificationtimestamp' => $dbw->timestamp( $timestamp )
@@ -554,7 +553,6 @@ class EmailNotification {
                                                                'wl_title' => $title->getDBkey(),
                                                        ), $fname
                                                );
-                                               $dbw->commit( $fname );
                                        }
                                );
                        }
index 09f01c0..71454f0 100644 (file)
  * @file
  */
 
-# Protect against register_globals
+# Die if register_globals is enabled (PHP <=5.3)
 # This must be done before any globals are set by the code
 if ( ini_get( 'register_globals' ) ) {
-       if ( isset( $_REQUEST['GLOBALS'] ) || isset( $_FILES['GLOBALS'] ) ) {
-               die( '<a href="http://www.hardened-php.net/globals-problem">'
-                       . '$GLOBALS overwrite vulnerability</a>' );
-       }
-
-       $verboten = array(
-               'GLOBALS',
-               '_SERVER',
-               'HTTP_SERVER_VARS',
-               '_GET',
-               'HTTP_GET_VARS',
-               '_POST',
-               'HTTP_POST_VARS',
-               '_COOKIE',
-               'HTTP_COOKIE_VARS',
-               '_FILES',
-               'HTTP_POST_FILES',
-               '_ENV',
-               'HTTP_ENV_VARS',
-               '_REQUEST',
-               '_SESSION',
-               'HTTP_SESSION_VARS'
-       );
-
-       foreach ( $_REQUEST as $name => $value ) {
-               if ( in_array( $name, $verboten ) ) {
-                       header( "HTTP/1.1 500 Internal Server Error" );
-                       echo "register_globals security paranoia: trying to overwrite superglobals, aborting.";
-                       die( -1 );
-               }
-               unset( $GLOBALS[$name] );
-       }
+       die( 'MediaWiki does not support installations where register_globals is enabled. '
+               . 'Please see <a href="https://www.mediawiki.org/wiki/register_globals">mediawiki.org</a> '
+               . 'for help on how to disable it.' );
 }
 
 # bug 15461: Make IE8 turn off content sniffing. Everybody else should ignore this
index 72210a9..31f58b8 100644 (file)
@@ -26,8 +26,7 @@
 /**
  * Page edition handler
  *
- * This is a wrapper that will call the EditPage class, or ExternalEdit
- * if $wgUseExternalEditor is set to true and requested by the user.
+ * This is a wrapper that will call the EditPage class or a custom editor from an extension.
  *
  * @ingroup Actions
  */
index f1e3c26..c946184 100644 (file)
@@ -782,7 +782,7 @@ class HistoryPager extends ReverseChronologicalPager {
         */
        function lastLink( $prevRev, $next ) {
                $last = $this->historyPage->message['last'];
-               # $next may either be a Row, null, or "unkown"
+               # $next may either be a Row, null, or "unknown"
                $nextRev = is_object( $next ) ? new Revision( $next ) : $next;
                if ( is_null( $next ) ) {
                        # Probably no next row
index 6b25460..c2c1ff5 100644 (file)
@@ -194,7 +194,7 @@ class InfoAction extends FormlessAction {
         */
        protected function pageInfo() {
                global $wgContLang, $wgRCMaxAge, $wgMemc, $wgMiserMode,
-                       $wgUnwatchedPageThreshold, $wgPageInfoTransclusionLimit;
+                       $wgUnwatchedPageThreshold, $wgPageInfoTransclusionLimit, $wgPageLanguageUseDB;
 
                $user = $this->getUser();
                $lang = $this->getLanguage();
@@ -275,7 +275,20 @@ class InfoAction extends FormlessAction {
 
                // Language in which the page content is (supposed to be) written
                $pageLang = $title->getPageLanguage()->getCode();
-               $pageInfo['header-basic'][] = array( $this->msg( 'pageinfo-language' ),
+
+               if ( $wgPageLanguageUseDB && $this->getTitle()->userCan( 'pagelang' ) ) {
+                       // Link to Special:PageLanguage with pre-filled page title if user has permissions
+                       $titleObj = SpecialPage::getTitleFor( 'PageLanguage', $title->getPrefixedText() );
+                       $langDisp = Linker::link(
+                               $titleObj,
+                               $this->msg( 'pageinfo-language' )->escaped()
+                       );
+               } else {
+                       // Display just the message
+                       $langDisp = $this->msg( 'pageinfo-language' )->escaped();
+               }
+
+               $pageInfo['header-basic'][] = array( $langDisp,
                        Language::fetchLanguageName( $pageLang, $lang->getCode() )
                        . ' ' . $this->msg( 'parentheses', $pageLang ) );
 
index cdd139e..92428cf 100644 (file)
@@ -86,6 +86,7 @@ class RevertFileAction extends FormAction {
                $form->setWrapperLegendMsg( 'filerevert-legend' );
                $form->setSubmitTextMsg( 'filerevert-submit' );
                $form->addHiddenField( 'oldimage', $this->getRequest()->getText( 'oldimage' ) );
+               $form->setTokenSalt( array( 'revert', $this->getTitle()->getPrefixedDBkey() ) );
        }
 
        protected function getFormFields() {
index 25a1714..4f4d051 100644 (file)
@@ -223,21 +223,6 @@ abstract class ApiBase extends ContextSource {
                return $this->getResult()->getData();
        }
 
-       /**
-        * Create a new RequestContext object to use e.g. for calls to other parts
-        * the software.
-        * The object will have the WebRequest and the User object set to the ones
-        * used in this instance.
-        *
-        * @deprecated since 1.19 use getContext to get the current context
-        * @return DerivativeContext
-        */
-       public function createContext() {
-               wfDeprecated( __METHOD__, '1.19' );
-
-               return new DerivativeContext( $this->getContext() );
-       }
-
        /**
         * Set warning section for this module. Users should monitor this
         * section to notice any changes in API. Multiple calls to this
@@ -1204,9 +1189,9 @@ abstract class ApiBase extends ContextSource {
         * @param mixed $value The value being parsed
         * @param bool $allowMultiple Can $value contain more than one value
         *  separated by '|'?
-        * @param mixed $allowedValues An array of values to check against. If
+        * @param string[]|null $allowedValues An array of values to check against. If
         *  null, all values are accepted.
-        * @return mixed (allowMultiple ? an_array_of_values : a_single_value)
+        * @return string|string[] (allowMultiple ? an_array_of_values : a_single_value)
         */
        protected function parseMultiValue( $valueName, $value, $allowMultiple, $allowedValues ) {
                if ( trim( $value ) === '' && $allowMultiple ) {
index b8e16ab..c932a74 100644 (file)
@@ -52,6 +52,8 @@ class ApiImageRotate extends ApiBase {
                $params = $this->extractRequestParams();
                $rotation = $params['rotation'];
 
+               $this->getResult()->beginContinuation( $params['continue'], array(), array() );
+
                $pageSet = $this->getPageSet();
                $pageSet->execute();
 
@@ -131,6 +133,7 @@ class ApiImageRotate extends ApiBase {
                $apiResult = $this->getResult();
                $apiResult->setIndexedTagName( $result, 'page' );
                $apiResult->addValue( null, $this->getModuleName(), $result );
+               $apiResult->endContinuation();
        }
 
        /**
@@ -185,6 +188,7 @@ class ApiImageRotate extends ApiBase {
                                ApiBase::PARAM_TYPE => 'string',
                                ApiBase::PARAM_REQUIRED => true
                        ),
+                       'continue' => '',
                );
                if ( $flags ) {
                        $result += $this->getPageSet()->getFinalParams( $flags );
@@ -199,6 +203,7 @@ class ApiImageRotate extends ApiBase {
                return $pageSet->getFinalParamDescription() + array(
                        'rotation' => 'Degrees to rotate image clockwise',
                        'token' => 'Edit token. You can get one of these through action=tokens',
+                       'continue' => 'When more results are available, use this to continue',
                );
        }
 
index 9dc4d03..b906b59 100644 (file)
@@ -270,7 +270,7 @@ class ApiParse extends ApiBase {
                        );
                }
 
-               if ( isset( $prop['langlinks'] ) || isset( $prop['languageshtml'] ) ) {
+               if ( isset( $prop['langlinks'] ) ) {
                        $langlinks = $p_result->getLanguageLinks();
 
                        if ( $params['effectivelanglinks'] ) {
@@ -286,12 +286,6 @@ class ApiParse extends ApiBase {
                if ( isset( $prop['langlinks'] ) ) {
                        $result_array['langlinks'] = $this->formatLangLinks( $langlinks );
                }
-               if ( isset( $prop['languageshtml'] ) ) {
-                       $languagesHtml = $this->languagesHtml( $langlinks );
-
-                       $result_array['languageshtml'] = array();
-                       ApiResult::setContent( $result_array['languageshtml'], $languagesHtml );
-               }
                if ( isset( $prop['categories'] ) ) {
                        $result_array['categories'] = $this->formatCategoryLinks( $p_result->getCategories() );
                }
@@ -563,46 +557,6 @@ class ApiParse extends ApiBase {
                return $context->getSkin()->getCategories();
        }
 
-       /**
-        * @deprecated since 1.18 No modern skin generates language links this way,
-        * please use language links data to generate your own HTML.
-        * @param array $languages
-        * @return string
-        */
-       private function languagesHtml( $languages ) {
-               wfDeprecated( __METHOD__, '1.18' );
-               $this->setWarning( '"action=parse&prop=languageshtml" is deprecated ' .
-                       'and will be removed in MediaWiki 1.24. Use "prop=langlinks" ' .
-                       'to generate your own HTML.' );
-
-               global $wgContLang;
-
-               if ( $this->getConfig()->get( 'HideInterlanguageLinks' ) || count( $languages ) == 0 ) {
-                       return '';
-               }
-
-               $s = htmlspecialchars( wfMessage( 'otherlanguages' )->text() .
-                       wfMessage( 'colon-separator' )->text() );
-
-               $langs = array();
-               foreach ( $languages as $l ) {
-                       $nt = Title::newFromText( $l );
-                       $text = Language::fetchLanguageName( $nt->getInterwiki() );
-
-                       $langs[] = Html::element( 'a',
-                               array( 'href' => $nt->getFullURL(), 'title' => $nt->getText(), 'class' => 'external' ),
-                               $text == '' ? $l : $text );
-               }
-
-               $s .= implode( wfMessage( 'pipe-separator' )->escaped(), $langs );
-
-               if ( $wgContLang->isRTL() ) {
-                       $s = Html::rawElement( 'span', array( 'dir' => 'LTR' ), $s );
-               }
-
-               return $s;
-       }
-
        private function formatLinks( $links ) {
                $result = array();
                foreach ( $links as $ns => $nslinks ) {
@@ -723,7 +677,6 @@ class ApiParse extends ApiBase {
                                ApiBase::PARAM_TYPE => array(
                                        'text',
                                        'langlinks',
-                                       'languageshtml',
                                        'categories',
                                        'categorieshtml',
                                        'links',
@@ -782,8 +735,6 @@ class ApiParse extends ApiBase {
                                ' langlinks      - Gives the language links in the parsed wikitext',
                                ' categories     - Gives the categories in the parsed wikitext',
                                ' categorieshtml - Gives the HTML version of the categories',
-                               ' languageshtml  - DEPRECATED. Will be removed in MediaWiki 1.24.',
-                               '                  Gives the HTML version of the language links',
                                ' links          - Gives the internal links in the parsed wikitext',
                                ' templates      - Gives the templates in the parsed wikitext',
                                ' images         - Gives the images in the parsed wikitext',
@@ -804,7 +755,7 @@ class ApiParse extends ApiBase {
                        ),
                        'effectivelanglinks' => array(
                                'Includes language links supplied by extensions',
-                               '(for use with prop=langlinks|languageshtml)',
+                               '(for use with prop=langlinks)',
                        ),
                        'pst' => array(
                                'Do a pre-save transform on the input before parsing it',
index 981dc18..3399843 100644 (file)
@@ -38,6 +38,8 @@ class ApiPurge extends ApiBase {
        public function execute() {
                $params = $this->extractRequestParams();
 
+               $this->getResult()->beginContinuation( $params['continue'], array(), array() );
+
                $forceLinkUpdate = $params['forcelinkupdate'];
                $forceRecursiveLinkUpdate = $params['forcerecursivelinkupdate'];
                $pageSet = $this->getPageSet();
@@ -102,6 +104,8 @@ class ApiPurge extends ApiBase {
                if ( $values ) {
                        $apiResult->addValue( null, 'redirects', $values );
                }
+
+               $apiResult->endContinuation();
        }
 
        /**
@@ -128,7 +132,8 @@ class ApiPurge extends ApiBase {
        public function getAllowedParams( $flags = 0 ) {
                $result = array(
                        'forcelinkupdate' => false,
-                       'forcerecursivelinkupdate' => false
+                       'forcerecursivelinkupdate' => false,
+                       'continue' => '',
                );
                if ( $flags ) {
                        $result += $this->getPageSet()->getFinalParams( $flags );
@@ -143,6 +148,7 @@ class ApiPurge extends ApiBase {
                                'forcelinkupdate' => 'Update the links tables',
                                'forcerecursivelinkupdate' => 'Update the links table, and update ' .
                                        'the links tables for any page that uses this page as a template',
+                               'continue' => 'When more results are available, use this to continue',
                        );
        }
 
index a2f4121..cd6a840 100644 (file)
@@ -118,8 +118,6 @@ class ApiQuery extends ApiBase {
        private $mParams;
        private $mNamedDB = array();
        private $mModuleMgr;
-       private $mGeneratorContinue;
-       private $mUseLegacyContinue;
 
        /**
         * @param ApiMain $main
@@ -245,23 +243,24 @@ class ApiQuery extends ApiBase {
        public function execute() {
                $this->mParams = $this->extractRequestParams();
 
-               // $pagesetParams is a array of parameter names used by the pageset generator
-               //   or null if pageset has already finished and is no longer needed
-               // $completeModules is a set of complete modules with the name as key
-               $this->initContinue( $pagesetParams, $completeModules );
-
                // Instantiate requested modules
                $allModules = array();
                $this->instantiateModules( $allModules, 'prop' );
-               $propModules = $allModules; // Keep a copy
+               $propModules = array_keys( $allModules );
                $this->instantiateModules( $allModules, 'list' );
                $this->instantiateModules( $allModules, 'meta' );
 
                // Filter modules based on continue parameter
-               $modules = $this->initModules( $allModules, $completeModules, $pagesetParams !== null );
+               list( $generatorDone, $modules ) = $this->getResult()->beginContinuation(
+                       $this->mParams['continue'], $allModules, $propModules
+               );
 
-               // Execute pageset if in legacy mode or if pageset is not done
-               if ( $completeModules === null || $pagesetParams !== null ) {
+               if ( !$generatorDone ) {
+                       // Query modules may optimize data requests through the $this->getPageSet()
+                       // object by adding extra fields from the page table.
+                       foreach ( $modules as $module ) {
+                               $module->requestExtraData( $this->mPageSet );
+                       }
                        // Populate page/revision information
                        $this->mPageSet->execute();
                        // Record page information (title, namespace, if exists, etc)
@@ -287,135 +286,10 @@ class ApiQuery extends ApiBase {
                // Set the cache mode
                $this->getMain()->setCacheMode( $cacheMode );
 
-               if ( $completeModules === null ) {
-                       return; // Legacy continue, we are done
-               }
-
-               // Reformat query-continue result section
-               $result = $this->getResult();
-               $qc = $result->getData();
-               if ( isset( $qc['query-continue'] ) ) {
-                       $qc = $qc['query-continue'];
-                       $result->unsetValue( null, 'query-continue' );
-               } elseif ( $this->mGeneratorContinue !== null ) {
-                       $qc = array();
-               } else {
-                       // no more "continue"s, we are done!
-                       return;
-               }
-
-               // we are done with all the modules that do not have result in query-continue
-               $completeModules = array_merge( $completeModules, array_diff_key( $modules, $qc ) );
-               if ( $pagesetParams !== null ) {
-                       // The pageset is still in use, check if all props have finished
-                       $incompleteProps = array_intersect_key( $propModules, $qc );
-                       if ( count( $incompleteProps ) > 0 ) {
-                               // Properties are not done, continue with the same pageset state - copy current parameters
-                               $main = $this->getMain();
-                               $contValues = array();
-                               foreach ( $pagesetParams as $param ) {
-                                       // The param name is already prefix-encoded
-                                       $contValues[$param] = $main->getVal( $param );
-                               }
-                       } elseif ( $this->mGeneratorContinue !== null ) {
-                               // Move to the next set of pages produced by pageset, properties need to be restarted
-                               $contValues = $this->mGeneratorContinue;
-                               $pagesetParams = array_keys( $contValues );
-                               $completeModules = array_diff_key( $completeModules, $propModules );
-                       } else {
-                               // Done with the pageset, finish up with the the lists and meta modules
-                               $pagesetParams = null;
-                       }
-               }
-
-               $continue = '||' . implode( '|', array_keys( $completeModules ) );
-               if ( $pagesetParams !== null ) {
-                       // list of all pageset parameters to use in the next request
-                       $continue = implode( '|', $pagesetParams ) . $continue;
-               } else {
-                       // we are done with the pageset
-                       $contValues = array();
-                       $continue = '-' . $continue;
-               }
-               $contValues['continue'] = $continue;
-               foreach ( $qc as $qcModule ) {
-                       foreach ( $qcModule as $qcKey => $qcValue ) {
-                               $contValues[$qcKey] = $qcValue;
-                       }
-               }
-               $this->getResult()->addValue( null, 'continue', $contValues );
-       }
-
-       /**
-        * Parse 'continue' parameter into the list of complete modules and a list of generator parameters
-        * @param array|null $pagesetParams Returns list of generator params or null if pageset is done
-        * @param array|null $completeModules Returns list of finished modules (as keys), or null if legacy
-        */
-       private function initContinue( &$pagesetParams, &$completeModules ) {
-               $pagesetParams = array();
-               $continue = $this->mParams['continue'];
-               if ( $continue !== null ) {
-                       $this->mUseLegacyContinue = false;
-                       if ( $continue !== '' ) {
-                               // Format: ' pagesetParam1 | pagesetParam2 || module1 | module2 | module3 | ...
-                               // If pageset is done, use '-'
-                               $continue = explode( '||', $continue );
-                               $this->dieContinueUsageIf( count( $continue ) !== 2 );
-                               if ( $continue[0] === '-' ) {
-                                       $pagesetParams = null; // No need to execute pageset
-                               } elseif ( $continue[0] !== '' ) {
-                                       // list of pageset params that might need to be repeated
-                                       $pagesetParams = explode( '|', $continue[0] );
-                               }
-                               $continue = $continue[1];
-                       }
-                       if ( $continue !== '' ) {
-                               $completeModules = array_flip( explode( '|', $continue ) );
-                       } else {
-                               $completeModules = array();
-                       }
-               } else {
-                       $this->mUseLegacyContinue = true;
-                       $completeModules = null;
-               }
-       }
-
-       /**
-        * Validate sub-modules, filter out completed ones, and do requestExtraData()
-        * @param array $allModules An dict of name=>instance of all modules requested by the client
-        * @param array|null $completeModules List of finished modules, or null if legacy continue
-        * @param bool $usePageset True if pageset will be executed
-        * @return array Array of modules to be processed during this execution
-        */
-       private function initModules( $allModules, $completeModules, $usePageset ) {
-               $modules = $allModules;
-               $tmp = $completeModules;
-               $wasPosted = $this->getRequest()->wasPosted();
-
-               /** @var $module ApiQueryBase */
-               foreach ( $allModules as $moduleName => $module ) {
-                       if ( !$wasPosted && $module->mustBePosted() ) {
-                               $this->dieUsageMsgOrDebug( array( 'mustbeposted', $moduleName ) );
-                       }
-                       if ( $completeModules !== null && array_key_exists( $moduleName, $completeModules ) ) {
-                               // If this module is done, mark all its params as used
-                               $module->extractRequestParams();
-                               // Make sure this module is not used during execution
-                               unset( $modules[$moduleName] );
-                               unset( $tmp[$moduleName] );
-                       } elseif ( $completeModules === null || $usePageset ) {
-                               // Query modules may optimize data requests through the $this->getPageSet()
-                               // object by adding extra fields from the page table.
-                               // This function will gather all the extra request fields from the modules.
-                               $module->requestExtraData( $this->mPageSet );
-                       } else {
-                               // Error - this prop module must have finished before generator is done
-                               $this->dieContinueUsageIf( $this->mModuleMgr->getModuleGroup( $moduleName ) === 'prop' );
-                       }
-               }
-               $this->dieContinueUsageIf( $completeModules !== null && count( $tmp ) !== 0 );
-
-               return $modules;
+               // Write the continuation data into the result
+               $this->getResult()->endContinuation(
+                       $this->mParams['continue'] === null ? 'raw' : 'standard'
+               );
        }
 
        /**
@@ -447,12 +321,16 @@ class ApiQuery extends ApiBase {
         * @param string $param Parameter name to read modules from
         */
        private function instantiateModules( &$modules, $param ) {
+               $wasPosted = $this->getRequest()->wasPosted();
                if ( isset( $this->mParams[$param] ) ) {
                        foreach ( $this->mParams[$param] as $moduleName ) {
                                $instance = $this->mModuleMgr->getModule( $moduleName, $param );
                                if ( $instance === null ) {
                                        ApiBase::dieDebug( __METHOD__, 'Error instantiating module' );
                                }
+                               if ( !$wasPosted && $instance->mustBePosted() ) {
+                                       $this->dieUsageMsgOrDebug( array( 'mustbeposted', $moduleName ) );
+                               }
                                // Ignore duplicates. TODO 2.0: die()?
                                if ( !array_key_exists( $moduleName, $modules ) ) {
                                        $modules[$moduleName] = $instance;
@@ -563,22 +441,16 @@ class ApiQuery extends ApiBase {
         * This method is called by the generator base when generator in the smart-continue
         * mode tries to set 'query-continue' value. ApiQuery stores those values separately
         * until the post-processing when it is known if the generation should continue or repeat.
+        * @deprecated @since 1.24
         * @param ApiQueryGeneratorBase $module Generator module
         * @param string $paramName
         * @param mixed $paramValue
         * @return bool True if processed, false if this is a legacy continue
         */
        public function setGeneratorContinue( $module, $paramName, $paramValue ) {
-               if ( $this->mUseLegacyContinue ) {
-                       return false;
-               }
-               $paramName = $module->encodeParamName( $paramName );
-               if ( $this->mGeneratorContinue === null ) {
-                       $this->mGeneratorContinue = array();
-               }
-               $this->mGeneratorContinue[$paramName] = $paramValue;
-
-               return true;
+               wfDeprecated( __METHOD__, '1.24' );
+               $this->getResult()->setGeneratorContinueParam( $module, $paramName, $paramValue );
+               return $this->getParameter( 'continue' ) !== null;
        }
 
        /**
index e32104f..d0980e6 100644 (file)
@@ -45,9 +45,15 @@ class ApiQueryAllUsers extends ApiQueryBase {
        }
 
        public function execute() {
-               $db = $this->getDB();
                $params = $this->extractRequestParams();
 
+               if ( $params['activeusers'] ) {
+                       // Update active user cache
+                       SpecialActiveUsers::mergeActiveUsers( 600 );
+               }
+
+               $db = $this->getDB();
+
                $prop = $params['prop'];
                if ( !is_null( $prop ) ) {
                        $prop = array_flip( $prop );
@@ -71,9 +77,9 @@ class ApiQueryAllUsers extends ApiQueryBase {
                $from = is_null( $params['from'] ) ? null : $this->getCanonicalUserName( $params['from'] );
                $to = is_null( $params['to'] ) ? null : $this->getCanonicalUserName( $params['to'] );
 
-               # MySQL doesn't seem to use 'equality propagation' here, so like the
-               # ActiveUsers special page, we have to use rc_user_text for some cases.
-               $userFieldToSort = $params['activeusers'] ? 'rc_user_text' : 'user_name';
+               # MySQL can't figure out that 'user_name' and 'qcc_title' are the same
+               # despite the JOIN condition, so manually sort on the correct one.
+               $userFieldToSort = $params['activeusers'] ? 'qcc_title' : 'user_name';
 
                $this->addWhereRange( $userFieldToSort, $dir, $from, $to );
 
@@ -155,19 +161,32 @@ class ApiQueryAllUsers extends ApiQueryBase {
                }
 
                if ( $params['activeusers'] ) {
-                       $this->addTables( 'recentchanges' );
-
-                       $this->addJoinConds( array( 'recentchanges' => array(
-                               'INNER JOIN', 'rc_user_text=user_name'
+                       $activeUserSeconds = $this->getConfig()->get( 'ActiveUserDays' ) * 86400;
+
+                       // Filter query to only include users in the active users cache
+                       $this->addTables( 'querycachetwo' );
+                       $this->addJoinConds( array( 'querycachetwo' => array(
+                               'INNER JOIN', array(
+                                       'qcc_type' => 'activeusers',
+                                       'qcc_namespace' => NS_USER,
+                                       'qcc_title=user_name',
+                               ),
                        ) ) );
 
-                       $this->addFields( array( 'recentedits' => 'COUNT(*)' ) );
-
-                       $this->addWhere( 'rc_log_type IS NULL OR rc_log_type != ' . $db->addQuotes( 'newusers' ) );
-                       $timestamp = $db->timestamp( wfTimestamp( TS_UNIX ) - $this->getConfig()->get( 'ActiveUserDays' ) * 24 * 3600 );
-                       $this->addWhere( 'rc_timestamp >= ' . $db->addQuotes( $timestamp ) );
-
-                       $this->addOption( 'GROUP BY', $userFieldToSort );
+                       // Actually count the actions using a subquery (bug 64505 and bug 64507)
+                       $timestamp = $db->timestamp( wfTimestamp( TS_UNIX ) - $activeUserSeconds );
+                       $this->addFields( array(
+                               'recentactions' => '(' . $db->selectSQLText(
+                                       'recentchanges',
+                                       'COUNT(*)',
+                                       array(
+                                               'rc_user_text = user_name',
+                                               'rc_type != ' . $db->addQuotes( RC_EXTERNAL ), // no wikidata
+                                               'rc_log_type IS NULL OR rc_log_type != ' . $db->addQuotes( 'newusers' ),
+                                               'rc_timestamp >= ' . $db->addQuotes( $timestamp ),
+                                       )
+                               ) . ')'
+                       ) );
                }
 
                $this->addOption( 'LIMIT', $sqlLimit );
@@ -203,8 +222,13 @@ class ApiQueryAllUsers extends ApiQueryBase {
                        if ( $lastUser !== $row->user_name ) {
                                // Save the last pass's user data
                                if ( is_array( $lastUserData ) ) {
-                                       $fit = $result->addValue( array( 'query', $this->getModuleName() ),
-                                               null, $lastUserData );
+                                       if ( $params['activeusers'] && $lastUserData['recentactions'] === 0 ) {
+                                               // activeusers cache was out of date
+                                               $fit = true;
+                                       } else {
+                                               $fit = $result->addValue( array( 'query', $this->getModuleName() ),
+                                                       null, $lastUserData );
+                                       }
 
                                        $lastUserData = null;
 
@@ -241,7 +265,9 @@ class ApiQueryAllUsers extends ApiQueryBase {
                                        $lastUserData['editcount'] = intval( $row->user_editcount );
                                }
                                if ( $params['activeusers'] ) {
-                                       $lastUserData['recenteditcount'] = intval( $row->recentedits );
+                                       $lastUserData['recentactions'] = intval( $row->recentactions );
+                                       // @todo 'recenteditcount' is set for BC, remove in 1.25
+                                       $lastUserData['recenteditcount'] = $lastUserData['recentactions'];
                                }
                                if ( $fld_registration ) {
                                        $lastUserData['registration'] = $row->user_registration ?
@@ -302,7 +328,9 @@ class ApiQueryAllUsers extends ApiQueryBase {
                        }
                }
 
-               if ( is_array( $lastUserData ) ) {
+               if ( is_array( $lastUserData ) &&
+                       !( $params['activeusers'] && $lastUserData['recentactions'] === 0 )
+               ) {
                        $fit = $result->addValue( array( 'query', $this->getModuleName() ),
                                null, $lastUserData );
                        if ( !$fit ) {
@@ -397,7 +425,7 @@ class ApiQueryAllUsers extends ApiQueryBase {
                        '' => array(
                                'userid' => 'integer',
                                'name' => 'string',
-                               'recenteditcount' => array(
+                               'recentactions' => array(
                                        ApiBase::PROP_TYPE => 'integer',
                                        ApiBase::PROP_NULLABLE => true
                                )
index 8e014df..fb88201 100644 (file)
@@ -75,8 +75,8 @@ abstract class ApiQueryBase extends ApiBase {
 
        /**
         * Add a set of tables to the internal array
-        * @param mixed $tables Table name or array of table names
-        * @param mixed $alias Table alias, or null for no alias. Cannot be
+        * @param string|string[] $tables Table name or array of table names
+        * @param string|null $alias Table alias, or null for no alias. Cannot be
         *  used with multiple tables
         */
        protected function addTables( $tables, $alias = null ) {
@@ -398,15 +398,10 @@ abstract class ApiQueryBase extends ApiBase {
        /**
         * Set a query-continue value
         * @param string $paramName Parameter name
-        * @param string $paramValue Parameter value
+        * @param string|array $paramValue Parameter value
         */
        protected function setContinueEnumParameter( $paramName, $paramValue ) {
-               $paramName = $this->encodeParamName( $paramName );
-               $msg = array( $paramName => $paramValue );
-               $result = $this->getResult();
-               $result->disableSizeCheck();
-               $result->addValue( 'query-continue', $this->getModuleName(), $msg, ApiResult::ADD_ON_TOP );
-               $result->enableSizeCheck();
+               $this->getResult()->setContinueParam( $this, $paramName, $paramValue );
        }
 
        /**
@@ -667,16 +662,14 @@ abstract class ApiQueryGeneratorBase extends ApiQueryBase {
        }
 
        /**
-        * Overrides base in case of generator & smart continue to
-        * notify ApiQueryMain instead of adding them to the result right away.
+        * Overridden to set the generator param if in generator mode
         * @param string $paramName Parameter name
-        * @param string $paramValue Parameter value
+        * @param string|array $paramValue Parameter value
         */
        protected function setContinueEnumParameter( $paramName, $paramValue ) {
-               // If this is a generator and query->setGeneratorContinue() returns false, treat as before
-               if ( $this->mGeneratorPageSet === null
-                       || !$this->getQuery()->setGeneratorContinue( $this, $paramName, $paramValue )
-               ) {
+               if ( $this->mGeneratorPageSet !== null ) {
+                       $this->getResult()->setGeneratorContinueParam( $this, $paramName, $paramValue );
+               } else {
                        parent::setContinueEnumParameter( $paramName, $paramValue );
                }
        }
index e4078d5..c35d39b 100644 (file)
@@ -405,7 +405,7 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
        /**
         * Extracts from a single sql row the data needed to describe one recent change.
         *
-        * @param mixed $row The row from which to extract the data.
+        * @param stdClass $row The row from which to extract the data.
         * @return array An array mapping strings (descriptors) to their respective string values.
         * @access public
         */
index 24c4c20..5f93071 100644 (file)
@@ -326,7 +326,7 @@ class ApiQueryContributions extends ApiQueryBase {
        /**
         * Extract fields from the database row and append them to a result array
         *
-        * @param mixed $row
+        * @param stdClass $row
         * @return array
         */
        private function extractRowInfo( $row ) {
index 7d0a15a..b30d9dd 100644 (file)
@@ -60,6 +60,13 @@ class ApiResult extends ApiBase {
 
        private $mData, $mIsRawMode, $mSize, $mCheckingSize;
 
+       private $continueAllModules = array();
+       private $continueGeneratedModules = array();
+       private $continuationData = array();
+       private $generatorContinuationData = array();
+       private $generatorParams = array();
+       private $generatorDone = false;
+
        /**
         * @param ApiMain $main
         */
@@ -437,4 +444,181 @@ class ApiResult extends ApiBase {
        public function execute() {
                ApiBase::dieDebug( __METHOD__, 'execute() is not supported on Result object' );
        }
+
+       /**
+        * Parse a 'continue' parameter and return status information.
+        *
+        * This must be balanced by a call to endContinuation().
+        *
+        * @since 1.24
+        * @param string|null $continue The "continue" parameter, if any
+        * @param array $allModules Contains ApiBase instances that will be executed
+        * @param array $generatedModules Names of modules that depend on the generator
+        * @return array Two elements: a boolean indicating if the generator is done,
+        *   and an array of modules to actually execute.
+        */
+       public function beginContinuation(
+               $continue, array $allModules = array(), array $generatedModules = array()
+       ) {
+               $this->continueGeneratedModules = $generatedModules
+                       ? array_combine( $generatedModules, $generatedModules )
+                       : array();
+               $this->continuationData = array();
+               $this->generatorContinuationData = array();
+               $this->generatorParams = array();
+
+               $skip = array();
+               if ( is_string( $continue ) && $continue !== '' ) {
+                       $continue = explode( '||', $continue );
+                       $this->dieContinueUsageIf( count( $continue ) !== 2 );
+                       $this->generatorDone = ( $continue[0] === '-' );
+                       if ( !$this->generatorDone ) {
+                               $this->generatorParams = explode( '|', $continue[0] );
+                       }
+                       $skip = explode( '|', $continue[1] );
+               }
+
+               $this->continueAllModules = array();
+               $runModules = array();
+               foreach ( $allModules as $module ) {
+                       $name = $module->getModuleName();
+                       if ( in_array( $name, $skip ) ) {
+                               $this->continueAllModules[$name] = false;
+                               // Prevent spurious "unused parameter" warnings
+                               $module->extractRequestParams();
+                       } else {
+                               $this->continueAllModules[$name] = true;
+                               $runModules[] = $module;
+                       }
+               }
+
+               return array(
+                       $this->generatorDone,
+                       $runModules,
+               );
+       }
+
+       /**
+        * Set the continuation parameter for a module
+        *
+        * @since 1.24
+        * @param ApiBase $module
+        * @param string $paramName
+        * @param string|array $paramValue
+        */
+       public function setContinueParam( ApiBase $module, $paramName, $paramValue ) {
+               $name = $module->getModuleName();
+               if ( !isset( $this->continueAllModules[$name] ) ) {
+                       throw new MWException(
+                               "Module '$name' called ApiResult::setContinueParam but was not " .
+                               'passed to ApiResult::beginContinuation'
+                       );
+               }
+               if ( !$this->continueAllModules[$name] ) {
+                       throw new MWException(
+                               "Module '$name' was not supposed to have been executed, but " .
+                               'it was executed anyway'
+                       );
+               }
+               $paramName = $module->encodeParamName( $paramName );
+               if ( is_array( $paramValue ) ) {
+                       $paramValue = join( '|', $paramValue );
+               }
+               $this->continuationData[$name][$paramName] = $paramValue;
+       }
+
+       /**
+        * Set the continuation parameter for the generator module
+        *
+        * @since 1.24
+        * @param ApiBase $module
+        * @param string $paramName
+        * @param string|array $paramValue
+        */
+       public function setGeneratorContinueParam( ApiBase $module, $paramName, $paramValue ) {
+               $name = $module->getModuleName();
+               $paramName = $module->encodeParamName( $paramName );
+               if ( is_array( $paramValue ) ) {
+                       $paramValue = join( '|', $paramValue );
+               }
+               $this->generatorContinuationData[$name][$paramName] = $paramValue;
+       }
+
+       /**
+        * Close continuation, writing the data into the result
+        *
+        * @since 1.24
+        * @param string $style 'standard' for the new style since 1.21, 'raw' for
+        *   the style used in 1.20 and earlier.
+        */
+       public function endContinuation( $style = 'standard' ) {
+               if ( $style === 'raw' ) {
+                       $key = 'query-continue';
+                       $data = array_merge_recursive(
+                               $this->continuationData, $this->generatorContinuationData
+                       );
+               } else {
+                       $key = 'continue';
+                       $data = array();
+
+                       $finishedModules = array_diff(
+                               array_keys( $this->continueAllModules ),
+                               array_keys( $this->continuationData )
+                       );
+
+                       // First, grab the non-generator-using continuation data
+                       $continuationData = array_diff_key(
+                               $this->continuationData, $this->continueGeneratedModules
+                       );
+                       foreach ( $continuationData as $module => $kvp ) {
+                               $data += $kvp;
+                       }
+
+                       // Next, handle the generator-using continuation data
+                       $continuationData = array_intersect_key(
+                               $this->continuationData, $this->continueGeneratedModules
+                       );
+                       if ( $continuationData ) {
+                               // Some modules are unfinished: include those params, and copy
+                               // the generator params.
+                               foreach ( $continuationData as $module => $kvp ) {
+                                       $data += $kvp;
+                               }
+                               $data += array_intersect_key(
+                                       $this->getMain()->getRequest()->getValues(),
+                                       array_flip( $this->generatorParams )
+                               );
+                       } else if ( $this->generatorContinuationData ) {
+                               // All the generator-using modules are complete, but the
+                               // generator isn't. Continue the generator and restart the
+                               // generator-using modules
+                               $this->generatorParams = array();
+                               foreach ( $this->generatorContinuationData as $kvp ) {
+                                       $this->generatorParams = array_merge(
+                                               $this->generatorParams, array_keys( $kvp )
+                                       );
+                                       $data += $kvp;
+                               }
+                               $finishedModules = array_diff(
+                                       $finishedModules, $this->continueGeneratedModules
+                               );
+                       } else {
+                               // Generator and prop modules are all done. Mark it so.
+                               $this->generatorDone = true;
+                       }
+
+                       // Set 'continue' if any continuation data is set or if the generator
+                       // still needs to run
+                       if ( $data || !$this->generatorDone ) {
+                               $data['continue'] =
+                                       ( $this->generatorDone ? '-' : join( '|', $this->generatorParams ) ) .
+                                       '||' . join( '|', $finishedModules );
+                       }
+               }
+               if ( $data ) {
+                       $this->disableSizeCheck();
+                       $this->addValue( null, $key, $data, ApiResult::ADD_ON_TOP );
+                       $this->enableSizeCheck();
+               }
+       }
 }
index dc593e5..04be450 100644 (file)
@@ -46,6 +46,8 @@ class ApiSetNotificationTimestamp extends ApiBase {
                $params = $this->extractRequestParams();
                $this->requireMaxOneParameter( $params, 'timestamp', 'torevid', 'newerthanrevid' );
 
+               $this->getResult()->beginContinuation( $params['continue'], array(), array() );
+
                $pageSet = $this->getPageSet();
                if ( $params['entirewatchlist'] && $pageSet->getDataSource() !== null ) {
                        $this->dieUsage(
@@ -70,22 +72,26 @@ class ApiSetNotificationTimestamp extends ApiBase {
                                $this->dieUsage( 'torevid may only be used with a single page', 'multpages' );
                        }
                        $title = reset( $pageSet->getGoodTitles() );
-                       $timestamp = Revision::getTimestampFromId( $title, $params['torevid'] );
-                       if ( $timestamp ) {
-                               $timestamp = $dbw->timestamp( $timestamp );
-                       } else {
-                               $timestamp = null;
+                       if ( $title ) {
+                               $timestamp = Revision::getTimestampFromId( $title, $params['torevid'] );
+                               if ( $timestamp ) {
+                                       $timestamp = $dbw->timestamp( $timestamp );
+                               } else {
+                                       $timestamp = null;
+                               }
                        }
                } elseif ( isset( $params['newerthanrevid'] ) ) {
                        if ( $params['entirewatchlist'] || $pageSet->getGoodTitleCount() > 1 ) {
                                $this->dieUsage( 'newerthanrevid may only be used with a single page', 'multpages' );
                        }
                        $title = reset( $pageSet->getGoodTitles() );
-                       $revid = $title->getNextRevisionID( $params['newerthanrevid'] );
-                       if ( $revid ) {
-                               $timestamp = $dbw->timestamp( Revision::getTimestampFromId( $title, $revid ) );
-                       } else {
-                               $timestamp = null;
+                       if ( $title ) {
+                               $revid = $title->getNextRevisionID( $params['newerthanrevid'] );
+                               if ( $revid ) {
+                                       $timestamp = $dbw->timestamp( Revision::getTimestampFromId( $title, $revid ) );
+                               } else {
+                                       $timestamp = null;
+                               }
                        }
                }
 
@@ -124,51 +130,55 @@ class ApiSetNotificationTimestamp extends ApiBase {
                                $result[] = $rev;
                        }
 
-                       // Now process the valid titles
-                       $lb = new LinkBatch( $pageSet->getTitles() );
-                       $dbw->update( 'watchlist', array( 'wl_notificationtimestamp' => $timestamp ),
-                               array( 'wl_user' => $user->getID(), $lb->constructSet( 'wl', $dbw ) ),
-                               __METHOD__
-                       );
-
-                       // Query the results of our update
-                       $timestamps = array();
-                       $res = $dbw->select(
-                               'watchlist',
-                               array( 'wl_namespace', 'wl_title', 'wl_notificationtimestamp' ),
-                               array( 'wl_user' => $user->getID(), $lb->constructSet( 'wl', $dbw ) ),
-                               __METHOD__
-                       );
-                       foreach ( $res as $row ) {
-                               $timestamps[$row->wl_namespace][$row->wl_title] = $row->wl_notificationtimestamp;
-                       }
+                       if ( $pageSet->getTitles() ) {
+                               // Now process the valid titles
+                               $lb = new LinkBatch( $pageSet->getTitles() );
+                               $dbw->update( 'watchlist', array( 'wl_notificationtimestamp' => $timestamp ),
+                                       array( 'wl_user' => $user->getID(), $lb->constructSet( 'wl', $dbw ) ),
+                                       __METHOD__
+                               );
 
-                       // Now, put the valid titles into the result
-                       /** @var $title Title */
-                       foreach ( $pageSet->getTitles() as $title ) {
-                               $ns = $title->getNamespace();
-                               $dbkey = $title->getDBkey();
-                               $r = array(
-                                       'ns' => intval( $ns ),
-                                       'title' => $title->getPrefixedText(),
+                               // Query the results of our update
+                               $timestamps = array();
+                               $res = $dbw->select(
+                                       'watchlist',
+                                       array( 'wl_namespace', 'wl_title', 'wl_notificationtimestamp' ),
+                                       array( 'wl_user' => $user->getID(), $lb->constructSet( 'wl', $dbw ) ),
+                                       __METHOD__
                                );
-                               if ( !$title->exists() ) {
-                                       $r['missing'] = '';
+                               foreach ( $res as $row ) {
+                                       $timestamps[$row->wl_namespace][$row->wl_title] = $row->wl_notificationtimestamp;
                                }
-                               if ( isset( $timestamps[$ns] ) && array_key_exists( $dbkey, $timestamps[$ns] ) ) {
-                                       $r['notificationtimestamp'] = '';
-                                       if ( $timestamps[$ns][$dbkey] !== null ) {
-                                               $r['notificationtimestamp'] = wfTimestamp( TS_ISO_8601, $timestamps[$ns][$dbkey] );
+
+                               // Now, put the valid titles into the result
+                               /** @var $title Title */
+                               foreach ( $pageSet->getTitles() as $title ) {
+                                       $ns = $title->getNamespace();
+                                       $dbkey = $title->getDBkey();
+                                       $r = array(
+                                               'ns' => intval( $ns ),
+                                               'title' => $title->getPrefixedText(),
+                                       );
+                                       if ( !$title->exists() ) {
+                                               $r['missing'] = '';
                                        }
-                               } else {
-                                       $r['notwatched'] = '';
+                                       if ( isset( $timestamps[$ns] ) && array_key_exists( $dbkey, $timestamps[$ns] ) ) {
+                                               $r['notificationtimestamp'] = '';
+                                               if ( $timestamps[$ns][$dbkey] !== null ) {
+                                                       $r['notificationtimestamp'] = wfTimestamp( TS_ISO_8601, $timestamps[$ns][$dbkey] );
+                                               }
+                                       } else {
+                                               $r['notwatched'] = '';
+                                       }
+                                       $result[] = $r;
                                }
-                               $result[] = $r;
                        }
 
                        $apiResult->setIndexedTagName( $result, 'page' );
                }
                $apiResult->addValue( null, $this->getModuleName(), $result );
+
+               $apiResult->endContinuation();
        }
 
        /**
@@ -214,6 +224,7 @@ class ApiSetNotificationTimestamp extends ApiBase {
                        'newerthanrevid' => array(
                                ApiBase::PARAM_TYPE => 'integer'
                        ),
+                       'continue' => '',
                );
                if ( $flags ) {
                        $result += $this->getPageSet()->getFinalParams( $flags );
@@ -229,6 +240,7 @@ class ApiSetNotificationTimestamp extends ApiBase {
                        'torevid' => 'Revision to set the notification timestamp to (one page only)',
                        'newerthanrevid' => 'Revision to set the notification timestamp newer than (one page only)',
                        'token' => 'A token previously acquired via prop=info',
+                       'continue' => 'When more results are available, use this to continue',
                );
        }
 
index 6dfb1b4..c5aa90e 100644 (file)
@@ -43,6 +43,9 @@ class ApiWatch extends ApiBase {
                }
 
                $params = $this->extractRequestParams();
+
+               $this->getResult()->beginContinuation( $params['continue'], array(), array() );
+
                $pageSet = $this->getPageSet();
                // by default we use pageset to extract the page to work on.
                // title is still supported for backward compatibility
@@ -88,6 +91,7 @@ class ApiWatch extends ApiBase {
                        $res = $this->watchTitle( $title, $user, $params, true );
                }
                $this->getResult()->addValue( null, $this->getModuleName(), $res );
+               $this->getResult()->endContinuation();
        }
 
        private function watchTitle( Title $title, User $user, array $params,
@@ -180,6 +184,7 @@ class ApiWatch extends ApiBase {
                                ApiBase::PARAM_TYPE => 'string',
                                ApiBase::PARAM_REQUIRED => true
                        ),
+                       'continue' => '',
                );
                if ( $flags ) {
                        $result += $this->getPageSet()->getFinalParams( $flags );
@@ -196,6 +201,7 @@ class ApiWatch extends ApiBase {
                        'unwatch' => 'If set the page will be unwatched rather than watched',
                        'uselang' => 'Language to show the message in',
                        'token' => 'A token previously acquired via prop=info',
+                       'continue' => 'When more results are available, use this to continue',
                );
        }
 
index 7b83990..15d7c89 100644 (file)
@@ -101,7 +101,7 @@ class DependencyWrapper {
         * @param BagOStuff $cache A cache object such as $wgMemc
         * @param string $key The cache key
         * @param int $expiry The expiry timestamp or interval in seconds
-        * @param bool|array $callback The callback for generating the value, or false
+        * @param bool|callable $callback The callback for generating the value, or false
         * @param array $callbackParams The function parameters for the callback
         * @param array $deps The dependencies to store on a cache miss. Note: these
         *    are not the dependencies used on a cache hit! Cache hits use the stored
index 1153fd2..ec36cfb 100644 (file)
@@ -1155,11 +1155,11 @@ class LCStoreDB implements LCStore {
        private $currentLang;
        private $writesDone = false;
 
-       /**
-        * @var DatabaseBase
-        */
+       /** @var DatabaseBase */
        private $dbw;
-       private $batch;
+       /** @var Array */
+       private $batch = array();
+
        private $readOnly = false;
 
        public function get( $code, $key ) {
@@ -1180,26 +1180,11 @@ class LCStoreDB implements LCStore {
        public function startWrite( $code ) {
                if ( $this->readOnly ) {
                        return;
-               }
-
-               if ( !$code ) {
+               } elseif ( !$code ) {
                        throw new MWException( __METHOD__ . ": Invalid language \"$code\"" );
                }
 
                $this->dbw = wfGetDB( DB_MASTER );
-               try {
-                       $this->dbw->begin( __METHOD__ );
-                       $this->dbw->delete( 'l10n_cache', array( 'lc_lang' => $code ), __METHOD__ );
-               } catch ( DBQueryError $e ) {
-                       if ( $this->dbw->wasReadOnlyError() ) {
-                               $this->readOnly = true;
-                               $this->dbw->rollback( __METHOD__ );
-
-                               return;
-                       } else {
-                               throw $e;
-                       }
-               }
 
                $this->currentLang = $code;
                $this->batch = array();
@@ -1208,37 +1193,42 @@ class LCStoreDB implements LCStore {
        public function finishWrite() {
                if ( $this->readOnly ) {
                        return;
+               } elseif ( is_null( $this->currentLang ) ) {
+                       throw new MWException( __CLASS__ . ': must call startWrite() before finishWrite()' );
                }
 
-               if ( $this->batch ) {
-                       $this->dbw->insert( 'l10n_cache', $this->batch, __METHOD__ );
+               $this->dbw->begin( __METHOD__ );
+               try {
+                       $this->dbw->delete( 'l10n_cache',
+                               array( 'lc_lang' => $this->currentLang ), __METHOD__ );
+                       foreach ( array_chunk( $this->batch, 500 ) as $rows ) {
+                               $this->dbw->insert( 'l10n_cache', $rows, __METHOD__ );
+                       }
+                       $this->writesDone = true;
+               } catch ( DBQueryError $e ) {
+                       if ( $this->dbw->wasReadOnlyError() ) {
+                               $this->readOnly = true; // just avoid site down time
+                       } else {
+                               throw $e;
+                       }
                }
-
                $this->dbw->commit( __METHOD__ );
+
                $this->currentLang = null;
-               $this->dbw = null;
                $this->batch = array();
-               $this->writesDone = true;
        }
 
        public function set( $key, $value ) {
                if ( $this->readOnly ) {
                        return;
-               }
-
-               if ( is_null( $this->currentLang ) ) {
-                       throw new MWException( __CLASS__ . ': must call startWrite() before calling set()' );
+               } elseif ( is_null( $this->currentLang ) ) {
+                       throw new MWException( __CLASS__ . ': must call startWrite() before set()' );
                }
 
                $this->batch[] = array(
                        'lc_lang' => $this->currentLang,
                        'lc_key' => $key,
                        'lc_value' => $this->dbw->encodeBlob( serialize( $value ) ) );
-
-               if ( count( $this->batch ) >= 100 ) {
-                       $this->dbw->insert( 'l10n_cache', $this->batch, __METHOD__ );
-                       $this->batch = array();
-               }
        }
 }
 
index 36d2731..d2c504a 100644 (file)
@@ -101,7 +101,7 @@ class RedisConnectionPool {
                        $options['connectTimeout'] = 1;
                }
                if ( !isset( $options['readTimeout'] ) ) {
-                       $options['readTimeout'] = 31; // handles up to 30 second blocking commands
+                       $options['readTimeout'] = 1;
                }
                if ( !isset( $options['persistent'] ) ) {
                        $options['persistent'] = false;
@@ -120,7 +120,7 @@ class RedisConnectionPool {
         *                      Optional, default is 1 second.
         *   - readTimeout    : The timeout for operation reads, in seconds.
         *                      Commands like BLPOP can fail if told to wait longer than this.
-        *                      Optional, default is 60 seconds.
+        *                      Optional, default is 1 second.
         *   - persistent     : Set this to true to allow connections to persist across
         *                      multiple web requests. False by default.
         *   - password       : The authentication password, will be sent to Redis in clear text.
@@ -342,6 +342,16 @@ class RedisConnectionPool {
                return true;
        }
 
+       /**
+        * Adjust or reset the connection handle read timeout value
+        *
+        * @param Redis $conn
+        * @param integer $timeout Optional
+        */
+       public function resetTimeout( Redis $conn, $timeout = null ) {
+               $conn->setOption( Redis::OPT_READ_TIMEOUT, $timeout ?: $this->readTimeout );
+       }
+
        /**
         * Make sure connections are closed for sanity
         */
@@ -401,17 +411,34 @@ class RedisConnRef {
        public function __call( $name, $arguments ) {
                $conn = $this->conn; // convenience
 
+               // Work around https://github.com/nicolasff/phpredis/issues/70
+               $lname = strtolower( $name );
+               if ( ( $lname === 'blpop' || $lname == 'brpop' )
+                       && is_array( $arguments[0] ) && isset( $arguments[1] )
+               ) {
+                       $this->pool->resetTimeout( $conn, $arguments[1] + 1 );
+               } elseif ( $lname === 'brpoplpush' && isset( $arguments[2] ) ) {
+                       $this->pool->resetTimeout( $conn, $arguments[2] + 1 );
+               }
+
                $conn->clearLastError();
-               $res = call_user_func_array( array( $conn, $name ), $arguments );
-               if ( preg_match( '/^ERR operation not permitted\b/', $conn->getLastError() ) ) {
-                       $this->pool->reauthenticateConnection( $this->server, $conn );
-                       $conn->clearLastError();
+               try {
                        $res = call_user_func_array( array( $conn, $name ), $arguments );
-                       wfDebugLog( 'redis', "Used automatic re-authentication for method '$name'." );
+                       if ( preg_match( '/^ERR operation not permitted\b/', $conn->getLastError() ) ) {
+                               $this->pool->reauthenticateConnection( $this->server, $conn );
+                               $conn->clearLastError();
+                               $res = call_user_func_array( array( $conn, $name ), $arguments );
+                               wfDebugLog( 'redis', "Used automatic re-authentication for method '$name'." );
+                       }
+               } catch ( RedisException $e ) {
+                       $this->pool->resetTimeout( $conn ); // restore
+                       throw $e;
                }
 
                $this->lastError = $conn->getLastError() ?: $this->lastError;
 
+               $this->pool->resetTimeout( $conn ); // restore
+
                return $res;
        }
 
index b5b4d13..e077c77 100644 (file)
@@ -460,7 +460,7 @@ abstract class ContentHandler {
         * Apply import transformation (per default, returns $blob unchanged).
         * This gives subclasses an opportunity to transform data blobs on import.
         *
-        * @singe 1.24
+        * @since 1.24
         *
         * @param string $blob
         * @param string|null $format
index 93602a0..d4bf0b4 100644 (file)
@@ -68,6 +68,11 @@ class RequestContext implements IContextSource {
         */
        private $config;
 
+       /**
+        * @var RequestContext
+        */
+       private static $instance = null;
+
        /**
         * Set the Config object
         *
@@ -411,12 +416,21 @@ class RequestContext implements IContextSource {
         * @return RequestContext
         */
        public static function getMain() {
-               static $instance = null;
-               if ( $instance === null ) {
-                       $instance = new self;
+               if ( self::$instance === null ) {
+                       self::$instance = new self;
                }
 
-               return $instance;
+               return self::$instance;
+       }
+
+       /**
+        * Resets singleton returned by getMain(). Should be called only from unit tests.
+        */
+       public static function resetMain() {
+               if ( !defined( 'MW_PHPUNIT_TEST' ) ) {
+                       throw new MWException( __METHOD__ . '() should be called only from unit tests!' );
+               }
+               self::$instance = null;
        }
 
        /**
index 4eb6ff3..3690735 100644 (file)
  * functions. In general, objects should assume READ_NORMAL if no flags are explicitly given,
  * though certain objects may assume READ_LATEST for common use case or legacy reasons.
  *
- * There are three types of reads:
- *   - READ_NORMAL  : Potentially cached read of data (e.g. from a slave or stale replica)
- *   - READ_LATEST  : Up-to-date read as of transaction start (e.g. from master or a quorum read)
- *   - READ_LOCKING : Up-to-date read as of now, that locks the records for the transaction
+ * There are four types of reads:
+ *   - READ_NORMAL    : Potentially cached read of data (e.g. from a slave or stale replica)
+ *   - READ_LATEST    : Up-to-date read as of transaction start (e.g. from master or a quorum read)
+ *   - READ_LOCKING   : Up-to-date read as of now, that locks (shared) the records
+ *   - READ_EXCLUSIVE : Up-to-date read as of now, that locks (exclusive) the records
+ * All record locks persist for the duration of the transaction.
  *
  * Callers should use READ_NORMAL (or pass in no flags) unless the read determines a write.
  * In theory, such cases may require READ_LOCKING, though to avoid contention, READ_LATEST is
@@ -47,7 +49,8 @@
 interface IDBAccessObject {
        // Constants for object loading bitfield flags (higher => higher QoS)
        const READ_LATEST = 1; // read from the master
-       const READ_LOCKING = 3; // READ_LATEST and "FOR UPDATE"
+       const READ_LOCKING = 3; // READ_LATEST (1) and "LOCK IN SHARE MODE" (2)
+       const READ_EXCLUSIVE = 7; // READ_LOCKING (3) and "FOR UPDATE" (4)
 
        // Convenience constant for callers to explicitly request slave data
        const READ_NORMAL = 0; // read from the slave
index 3017ea8..9eb3e2f 100644 (file)
@@ -91,6 +91,11 @@ class CloneDatabase {
                        if ( $this->dropCurrentTables
                                && !in_array( $this->db->getType(), array( 'postgres', 'oracle' ) )
                        ) {
+                               if ( $oldTableName === $newTableName ) {
+                                       // Last ditch check to avoid data loss
+                                       throw new MWException( "Not dropping new table, as '$newTableName'"
+                                               . " is name of both the old and the new table." );
+                               }
                                $this->db->dropTable( $tbl, __METHOD__ );
                                wfDebug( __METHOD__ . " dropping {$newTableName}\n" );
                                //Dropping the oldTable because the prefix was changed
index 7bbcc2f..7d8fbe9 100644 (file)
@@ -268,6 +268,13 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         */
        protected $mTrxLevel = 0;
 
+       /**
+        * Either a short hexidecimal string if a transaction is active or ""
+        *
+        * @var string
+        */
+       protected $mTrxShortId = '';
+
        /**
         * Remembers the function name given for starting the most recent transaction via begin().
         * Used to provide additional context for error reporting.
@@ -1015,7 +1022,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                $this->mLastQuery = $sql;
                if ( !$this->mDoneWrites && $this->isWriteQuery( $sql ) ) {
                        # Set a flag indicating that writes have been done
-                       wfDebug( __METHOD__ . ": Writes done: $sql\n" );
+                       wfDebug( __METHOD__ . ': Writes done: ' . DatabaseBase::generalizeSQL( $sql ) . "\n" );
                        $this->mDoneWrites = true;
                }
 
@@ -1054,8 +1061,8 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                # Keep track of whether the transaction has write queries pending
                if ( $this->mTrxLevel && !$this->mTrxDoneWrites && $this->isWriteQuery( $sql ) ) {
                        $this->mTrxDoneWrites = true;
-                       $id = spl_object_hash( $this );
-                       Profiler::instance()->transactionWritingIn( $this->mServer, $this->mDBname, $id );
+                       Profiler::instance()->transactionWritingIn(
+                               $this->mServer, $this->mDBname, $this->mTrxShortId );
                }
 
                $queryProf = '';
@@ -1072,6 +1079,10 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                                $queryProf = 'query: ' . substr( DatabaseBase::generalizeSQL( $sql ), 0, 255 );
                                $totalProf = 'DatabaseBase::query';
                        }
+                       # Include query transaction state
+                       $queryProf .= $this->mTrxShortId ? " [TRX#{$this->mTrxShortId}]" : "";
+
+                       $trx = $this->mTrxLevel ? 'TRX=yes' : 'TRX=no';
                        wfProfileIn( $totalProf );
                        wfProfileIn( $queryProf );
                }
@@ -3412,8 +3423,8 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                        $this->runOnTransactionPreCommitCallbacks();
                        $this->doCommit( $fname );
                        if ( $this->mTrxDoneWrites ) {
-                               $id = spl_object_hash( $this );
-                               Profiler::instance()->transactionWritingOut( $this->mServer, $this->mDBname, $id );
+                               Profiler::instance()->transactionWritingOut(
+                                       $this->mServer, $this->mDBname, $this->mTrxShortId );
                        }
                        $this->runOnTransactionIdleCallbacks();
                }
@@ -3431,6 +3442,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                $this->mTrxAtomicLevels = new SplStack;
                $this->mTrxIdleCallbacks = array();
                $this->mTrxPreCommitCallbacks = array();
+               $this->mTrxShortId = wfRandomString( 12 );
        }
 
        /**
@@ -3467,17 +3479,18 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                        );
                }
 
-               if ( $flush !== 'flush' ) {
+               if ( $flush === 'flush' ) {
                        if ( !$this->mTrxLevel ) {
-                               wfWarn( "$fname: No transaction to commit, something got out of sync!" );
-                       } elseif ( $this->mTrxAutomatic ) {
-                               wfWarn( "$fname: Explicit commit of implicit transaction. Something may be out of sync!" );
+                               return; // nothing to do
+                       } elseif ( !$this->mTrxAutomatic ) {
+                               wfWarn( "$fname: Flushing an explicit transaction, getting out of sync!" );
                        }
                } else {
                        if ( !$this->mTrxLevel ) {
+                               wfWarn( "$fname: No transaction to commit, something got out of sync!" );
                                return; // nothing to do
-                       } elseif ( !$this->mTrxAutomatic ) {
-                               wfWarn( "$fname: Flushing an explicit transaction, getting out of sync!" );
+                       } elseif ( $this->mTrxAutomatic ) {
+                               wfWarn( "$fname: Explicit commit of implicit transaction. Something may be out of sync!" );
                        }
                }
 
@@ -3489,8 +3502,8 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                $this->runOnTransactionPreCommitCallbacks();
                $this->doCommit( $fname );
                if ( $this->mTrxDoneWrites ) {
-                       $id = spl_object_hash( $this );
-                       Profiler::instance()->transactionWritingOut( $this->mServer, $this->mDBname, $id );
+                       Profiler::instance()->transactionWritingOut(
+                               $this->mServer, $this->mDBname, $this->mTrxShortId );
                }
                $this->runOnTransactionIdleCallbacks();
        }
@@ -3525,6 +3538,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                if ( $flush !== 'flush' ) {
                        if ( !$this->mTrxLevel ) {
                                wfWarn( "$fname: No transaction to rollback, something got out of sync!" );
+                               return; // nothing to do
                        } elseif ( $this->mTrxAutomatic ) {
                                wfWarn( "$fname: Explicit rollback of implicit transaction. Something may be out of sync!" );
                        }
@@ -3546,8 +3560,8 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                $this->mTrxPreCommitCallbacks = array(); // cancel
                $this->mTrxAtomicLevels = new SplStack;
                if ( $this->mTrxDoneWrites ) {
-                       $id = spl_object_hash( $this );
-                       Profiler::instance()->transactionWritingOut( $this->mServer, $this->mDBname, $id );
+                       Profiler::instance()->transactionWritingOut(
+                               $this->mServer, $this->mDBname, $this->mTrxShortId );
                }
        }
 
index 1d05bf6..be01f1a 100644 (file)
@@ -1004,6 +1004,11 @@ class DatabaseMssql extends DatabaseBase {
                        return false;
                }
 
+               if ( $schema === false ) {
+                       global $wgDBmwschema;
+                       $schema = $wgDBmwschema;
+               }
+
                $res = $this->query( "SELECT 1 FROM INFORMATION_SCHEMA.TABLES
                        WHERE TABLE_TYPE = 'BASE TABLE'
                        AND TABLE_SCHEMA = '$schema' AND TABLE_NAME = '$table'" );
@@ -1295,9 +1300,6 @@ class DatabaseMssql extends DatabaseBase {
                        : array();
        }
 
-       /**
-        * @void
-        */
        private function populateColumnCaches() {
                $res = $this->select( 'INFORMATION_SCHEMA.COLUMNS', '*',
                        array(
@@ -1344,7 +1346,7 @@ class DatabaseMssql extends DatabaseBase {
                        // Used internally, we want the schema split off from the table name and returned
                        // as a list with 3 elements (database, schema, table)
                        $table = explode( '.', $table );
-                       if ( count( $table ) == 2 ) {
+                       while ( count( $table ) < 3 ) {
                                array_unshift( $table, false );
                        }
                }
index 837d094..cf37736 100644 (file)
@@ -637,47 +637,6 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                }
        }
 
-       /**
-        * @deprecated since 1.19, use getLagFromSlaveStatus
-        *
-        * @return bool|int
-        */
-       function getLagFromProcesslist() {
-               wfDeprecated( __METHOD__, '1.19' );
-               $res = $this->query( 'SHOW PROCESSLIST', __METHOD__ );
-               if ( !$res ) {
-                       return false;
-               }
-               # Find slave SQL thread
-               foreach ( $res as $row ) {
-                       /* This should work for most situations - when default db
-                        * for thread is not specified, it had no events executed,
-                        * and therefore it doesn't know yet how lagged it is.
-                        *
-                        * Relay log I/O thread does not select databases.
-                        */
-                       if ( $row->User == 'system user' &&
-                               $row->State != 'Waiting for master to send event' &&
-                               $row->State != 'Connecting to master' &&
-                               $row->State != 'Queueing master event to the relay log' &&
-                               $row->State != 'Waiting for master update' &&
-                               $row->State != 'Requesting binlog dump' &&
-                               $row->State != 'Waiting to reconnect after a failed master event read' &&
-                               $row->State != 'Reconnecting after a failed master event read' &&
-                               $row->State != 'Registering slave on master'
-                       ) {
-                               # This is it, return the time (except -ve)
-                               if ( $row->Time > 0x7fffffff ) {
-                                       return false;
-                               } else {
-                                       return $row->Time;
-                               }
-                       }
-               }
-
-               return false;
-       }
-
        /**
         * Wait for the slave to catch up to a given master position.
         * @todo Return values for this and base class are rubbish
index 3d7267a..fe5fa1f 100644 (file)
@@ -827,6 +827,8 @@ __INDEXATTR__;
         * In Postgres when using FOR UPDATE, only the main table and tables that are inner joined
         * can be locked. That means tables in an outer join cannot be FOR UPDATE locked. Trying to do
         * so causes a DB error. This wrapper checks which tables can be locked and adjusts it accordingly.
+        * 
+        * MySQL uses "ORDER BY NULL" as an optimization hint, but that syntax is illegal in PostgreSQL.
         */
        function selectSQLText( $table, $vars, $conds = '', $fname = __METHOD__,
                $options = array(), $join_conds = array()
@@ -842,6 +844,10 @@ __INDEXATTR__;
                                        }
                                }
                        }
+
+                       if ( isset( $options['ORDER BY'] ) && $options['ORDER BY'] == 'NULL' ) {
+                               unset( $options['ORDER BY'] );
+                       }
                }
 
                return parent::selectSQLText( $table, $vars, $conds, $fname, $options, $join_conds );
index 6219573..3a4d829 100644 (file)
@@ -71,7 +71,7 @@ class LBFactorySingle extends LBFactory {
        }
 
        /**
-        * @param string|array $callback
+        * @param string|callable $callback
         * @param array $params
         */
        function forEachLB( $callback, $params = array() ) {
index ee35c13..b3f9210 100644 (file)
@@ -414,11 +414,7 @@ class LoadBalancer {
        public function &getConnection( $i, $groups = array(), $wiki = false ) {
                wfProfileIn( __METHOD__ );
 
-               if ( $i == DB_LAST ) {
-                       wfProfileOut( __METHOD__ );
-                       throw new MWException( 'Attempt to call ' . __METHOD__ .
-                               ' with deprecated server index DB_LAST' );
-               } elseif ( $i === null || $i === false ) {
+               if ( $i === null || $i === false ) {
                        wfProfileOut( __METHOD__ );
                        throw new MWException( 'Attempt to call ' . __METHOD__ .
                                ' with invalid server index' );
@@ -872,17 +868,6 @@ class LoadBalancer {
                );
        }
 
-       /**
-        * Deprecated function, typo in function name
-        *
-        * @deprecated since 1.18
-        * @param DatabaseBase $conn
-        */
-       function closeConnecton( $conn ) {
-               wfDeprecated( __METHOD__, '1.18' );
-               $this->closeConnection( $conn );
-       }
-
        /**
         * Close a connection
         * Using this function makes sure the LoadBalancer knows the connection is closed.
index 2117010..0cea658 100644 (file)
@@ -513,6 +513,7 @@ class MWDebug {
                $result->setIndexedTagName( $debugInfo['debugLog'], 'msg' );
                $result->setIndexedTagName( $debugInfo['queries'], 'query' );
                $result->setIndexedTagName( $debugInfo['includes'], 'queries' );
+               $result->setIndexedTagName( $debugInfo['profile'], 'function' );
                $result->addValue( null, 'debuginfo', $debugInfo );
        }
 
index ac8f758..db7318f 100644 (file)
@@ -60,6 +60,8 @@ class TableDiffFormatter extends DiffFormatter {
         * @return string
         */
        protected function blockHeader( $xbeg, $xlen, $ybeg, $ylen ) {
+               // '<!--LINE \d+ -->' get replaced by a localised line number
+               // in DifferenceEngine::localiseLineNumbers
                $r = '<tr><td colspan="2" class="diff-lineno"><!--LINE ' . $xbeg . "--></td>\n" .
                        '<td colspan="2" class="diff-lineno"><!--LINE ' . $ybeg . "--></td></tr>\n";
 
index 3f81a94..e7c1f6f 100644 (file)
@@ -792,7 +792,7 @@ class FSFileOpHandle extends FileBackendStoreOpHandle {
        /**
         * @param FSFileBackend $backend
         * @param array $params
-        * @param callback $call
+        * @param callable $call
         * @param string $cmd
         * @param int|null $chmodPath
         */
index 4c250ba..8598005 100644 (file)
@@ -1583,7 +1583,7 @@ class FileRepo {
         * This only acts on the current version of files, not any old versions.
         * May use either the database or the filesystem.
         *
-        * @param array|string $callback
+        * @param callable $callback
         * @return void
         */
        public function enumFiles( $callback ) {
@@ -1594,7 +1594,7 @@ class FileRepo {
         * Call a callback function for every public file in the repository.
         * May use either the database or the filesystem.
         *
-        * @param array|string $callback
+        * @param callable $callback
         * @return void
         */
        protected function enumFilesInStorage( $callback ) {
index 7f25a00..6924f0a 100644 (file)
@@ -575,7 +575,7 @@ class ForeignAPIRepo extends FileRepo {
        }
 
        /**
-        * @param array|string $callback
+        * @param callable $callback
         * @throws MWException
         */
        function enumFiles( $callback ) {
index 103e78e..65637df 100644 (file)
@@ -367,6 +367,9 @@ class RepoGroup {
         * @return bool
         */
        function forEachForeignRepo( $callback, $params = array() ) {
+               if ( !$this->reposInitialised ) {
+                       $this->initialiseRepos();
+               }
                foreach ( $this->foreignRepos as $repo ) {
                        $args = array_merge( array( $repo ), $params );
                        if ( call_user_func_array( $callback, $args ) ) {
@@ -382,6 +385,9 @@ class RepoGroup {
         * @return bool
         */
        function hasForeignRepos() {
+               if ( !$this->reposInitialised ) {
+                       $this->initialiseRepos();
+               }
                return (bool)$this->foreignRepos;
        }
 
index 1103e38..e970e38 100644 (file)
@@ -149,6 +149,9 @@ abstract class File {
        /** @var string Required Repository class type */
        protected $repoClass = 'FileRepo';
 
+       /** @var array Cache of tmp filepaths pointing to generated bucket thumbnails, keyed by width */
+       protected $tmpBucketedThumbCache = array();
+
        /**
         * Call this constructor from child classes.
         *
@@ -456,6 +459,50 @@ abstract class File {
                return false;
        }
 
+       /**
+        * Return the smallest bucket from $wgThumbnailBuckets which is at least
+        * $wgThumbnailMinimumBucketDistance larger than $desiredWidth. The returned bucket, if any,
+        * will always be bigger than $desiredWidth.
+        *
+        * @param int $desiredWidth
+        * @param int $page
+        * @return bool|int
+        */
+       public function getThumbnailBucket( $desiredWidth, $page = 1 ) {
+               global $wgThumbnailBuckets, $wgThumbnailMinimumBucketDistance;
+
+               $imageWidth = $this->getWidth( $page );
+
+               if ( $imageWidth === false ) {
+                       return false;
+               }
+
+               if ( $desiredWidth > $imageWidth ) {
+                       return false;
+               }
+
+               if ( !$wgThumbnailBuckets ) {
+                       return false;
+               }
+
+               $sortedBuckets = $wgThumbnailBuckets;
+
+               sort( $sortedBuckets );
+
+               foreach ( $sortedBuckets as $bucket ) {
+                       if ( $bucket > $imageWidth ) {
+                               return false;
+                       }
+
+                       if ( $bucket - $wgThumbnailMinimumBucketDistance > $desiredWidth ) {
+                               return $bucket;
+                       }
+               }
+
+               // Image is bigger than any available bucket
+               return false;
+       }
+
        /**
         * Returns ID or name of user who uploaded the file
         * STUB
@@ -877,9 +924,9 @@ abstract class File {
                        return null;
                }
                $extension = $this->getExtension();
-               list( $thumbExt, ) = $this->handler->getThumbType(
+               list( $thumbExt, ) = $this->getHandler()->getThumbType(
                        $extension, $this->getMimeType(), $params );
-               $thumbName = $this->handler->makeParamString( $params ) . '-' . $name;
+               $thumbName = $this->getHandler()->makeParamString( $params ) . '-' . $name;
                if ( $thumbExt != $extension ) {
                        $thumbName .= ".$thumbExt";
                }
@@ -947,7 +994,7 @@ abstract class File {
         * @return MediaTransformOutput|bool False on failure
         */
        function transform( $params, $flags = 0 ) {
-               global $wgUseSquid, $wgIgnoreImageErrors, $wgThumbnailEpoch;
+               global $wgThumbnailEpoch;
 
                wfProfileIn( __METHOD__ );
                do {
@@ -1004,64 +1051,221 @@ abstract class File {
                                } elseif ( $flags & self::RENDER_FORCE ) {
                                        wfDebug( __METHOD__ . " forcing rendering per flag File::RENDER_FORCE\n" );
                                }
-                       }
 
-                       // If the backend is ready-only, don't keep generating thumbnails
-                       // only to return transformation errors, just return the error now.
-                       if ( $this->repo->getReadOnlyReason() !== false ) {
-                               $thumb = $this->transformErrorOutput( $thumbPath, $thumbUrl, $params, $flags );
-                               break;
+                               // If the backend is ready-only, don't keep generating thumbnails
+                               // only to return transformation errors, just return the error now.
+                               if ( $this->repo->getReadOnlyReason() !== false ) {
+                                       $thumb = $this->transformErrorOutput( $thumbPath, $thumbUrl, $params, $flags );
+                                       break;
+                               }
                        }
 
-                       // Create a temp FS file with the same extension and the thumbnail
-                       $thumbExt = FileBackend::extensionFromPath( $thumbPath );
-                       $tmpFile = TempFSFile::factory( 'transform_', $thumbExt );
+                       $tmpFile = $this->makeTransformTmpFile( $thumbPath );
+
                        if ( !$tmpFile ) {
                                $thumb = $this->transformErrorOutput( $thumbPath, $thumbUrl, $params, $flags );
-                               break;
+                       } else {
+                               $thumb = $this->generateAndSaveThumb( $tmpFile, $params, $flags );
                        }
-                       $tmpThumbPath = $tmpFile->getPath(); // path of 0-byte temp file
-
-                       // Actually render the thumbnail...
-                       wfProfileIn( __METHOD__ . '-doTransform' );
-                       $thumb = $handler->doTransform( $this, $tmpThumbPath, $thumbUrl, $params );
-                       wfProfileOut( __METHOD__ . '-doTransform' );
-                       $tmpFile->bind( $thumb ); // keep alive with $thumb
-
-                       if ( !$thumb ) { // bad params?
-                               $thumb = false;
-                       } elseif ( $thumb->isError() ) { // transform error
-                               $this->lastError = $thumb->toText();
-                               // Ignore errors if requested
-                               if ( $wgIgnoreImageErrors && !( $flags & self::RENDER_NOW ) ) {
-                                       $thumb = $handler->getTransform( $this, $tmpThumbPath, $thumbUrl, $params );
-                               }
-                       } elseif ( $this->repo && $thumb->hasFile() && !$thumb->fileIsSource() ) {
-                               // Copy the thumbnail from the file system into storage...
-                               $disposition = $this->getThumbDisposition( $thumbName );
-                               $status = $this->repo->quickImport( $tmpThumbPath, $thumbPath, $disposition );
-                               if ( $status->isOK() ) {
-                                       $thumb->setStoragePath( $thumbPath );
-                               } else {
-                                       $thumb = $this->transformErrorOutput( $thumbPath, $thumbUrl, $params, $flags );
+               } while ( false );
+
+               wfProfileOut( __METHOD__ );
+
+               return is_object( $thumb ) ? $thumb : false;
+       }
+
+       /**
+        * Generates a thumbnail according to the given parameters and saves it to storage
+        * @param TempFSFile $tmpFile Temporary file where the rendered thumbnail will be saved
+        * @param array $transformParams
+        * @param int $flags
+        * @return bool|MediaTransformOutput
+        */
+       public function generateAndSaveThumb( $tmpFile, $transformParams, $flags ) {
+               global $wgUseSquid, $wgIgnoreImageErrors;
+
+               $handler = $this->getHandler();
+
+               $normalisedParams = $transformParams;
+               $handler->normaliseParams( $this, $normalisedParams );
+
+               $thumbName = $this->thumbName( $normalisedParams );
+               $thumbUrl = $this->getThumbUrl( $thumbName );
+               $thumbPath = $this->getThumbPath( $thumbName ); // final thumb path
+
+               $tmpThumbPath = $tmpFile->getPath();
+
+               if ( $handler->supportsBucketing() ) {
+                       $this->generateBucketsIfNeeded( $normalisedParams, $flags );
+               }
+
+               // Actually render the thumbnail...
+               wfProfileIn( __METHOD__ . '-doTransform' );
+               $thumb = $handler->doTransform( $this, $tmpThumbPath, $thumbUrl, $transformParams );
+               wfProfileOut( __METHOD__ . '-doTransform' );
+               $tmpFile->bind( $thumb ); // keep alive with $thumb
+
+               if ( !$thumb ) { // bad params?
+                       $thumb = false;
+               } elseif ( $thumb->isError() ) { // transform error
+                       $this->lastError = $thumb->toText();
+                       // Ignore errors if requested
+                       if ( $wgIgnoreImageErrors && !( $flags & self::RENDER_NOW ) ) {
+                               $thumb = $handler->getTransform( $this, $tmpThumbPath, $thumbUrl, $transformParams );
+                       }
+               } elseif ( $this->repo && $thumb->hasFile() && !$thumb->fileIsSource() ) {
+                       // Copy the thumbnail from the file system into storage...
+                       $disposition = $this->getThumbDisposition( $thumbName );
+                       $status = $this->repo->quickImport( $tmpThumbPath, $thumbPath, $disposition );
+                       if ( $status->isOK() ) {
+                               $thumb->setStoragePath( $thumbPath );
+                       } else {
+                               $thumb = $this->transformErrorOutput( $thumbPath, $thumbUrl, $transformParams, $flags );
+                       }
+                       // Give extensions a chance to do something with this thumbnail...
+                       wfRunHooks( 'FileTransformed', array( $this, $thumb, $tmpThumbPath, $thumbPath ) );
+               }
+
+               // Purge. Useful in the event of Core -> Squid connection failure or squid
+               // purge collisions from elsewhere during failure. Don't keep triggering for
+               // "thumbs" which have the main image URL though (bug 13776)
+               if ( $wgUseSquid ) {
+                       if ( !$thumb || $thumb->isError() || $thumb->getUrl() != $this->getURL() ) {
+                               SquidUpdate::purge( array( $thumbUrl ) );
+                       }
+               }
+
+               return $thumb;
+       }
+
+       /**
+        * Generates chained bucketed thumbnails if needed
+        * @param array $params
+        * @param int $flags
+        * @return bool Whether at least one bucket was generated
+        */
+       protected function generateBucketsIfNeeded( $params, $flags = 0 ) {
+               if ( !$this->repo
+                       || !isset( $params['physicalWidth'] )
+                       || !isset( $params['physicalHeight'] )
+                       || !( $bucket = $this->getThumbnailBucket( $params['physicalWidth'] ) )
+                       || $bucket == $params['physicalWidth'] ) {
+                       return false;
+               }
+
+               $bucketPath = $this->getBucketThumbPath( $bucket );
+
+               if ( $this->repo->fileExists( $bucketPath ) ) {
+                       return false;
+               }
+
+               $params['physicalWidth'] = $bucket;
+               $params['width'] = $bucket;
+
+               $params = $this->getHandler()->sanitizeParamsForBucketing( $params );
+
+               $bucketName = $this->getBucketThumbName( $bucket );
+
+               $tmpFile = $this->makeTransformTmpFile( $bucketPath );
+
+               if ( !$tmpFile ) {
+                       return false;
+               }
+
+               $thumb = $this->generateAndSaveThumb( $tmpFile, $params, $flags );
+
+               if ( !$thumb || $thumb->isError() ) {
+                       return false;
+               }
+
+               $this->tmpBucketedThumbCache[ $bucket ] = $tmpFile->getPath();
+               // For the caching to work, we need to make the tmp file survive as long as
+               // this object exists
+               $tmpFile->bind( $this );
+
+               return true;
+       }
+
+       /**
+        * Returns the most appropriate source image for the thumbnail, given a target thumbnail size
+        * @param array $params
+        * @return array source path and width/height of the source
+        */
+       public function getThumbnailSource( $params ) {
+               if ( $this->repo
+                       && $this->getHandler()->supportsBucketing()
+                       && isset( $params['physicalWidth'] )
+                       && $bucket = $this->getThumbnailBucket( $params['physicalWidth'] )
+               ) {
+                       if ( $this->getWidth() != 0 ) {
+                               $bucketHeight = round( $this->getHeight() * ( $bucket / $this->getWidth() ) );
+                       } else {
+                               $bucketHeight = 0;
+                       }
+
+                       // Try to avoid reading from storage if the file was generated by this script
+                       if ( isset( $this->tmpBucketedThumbCache[ $bucket ] ) ) {
+                               $tmpPath = $this->tmpBucketedThumbCache[ $bucket ];
+
+                               if ( file_exists( $tmpPath ) ) {
+                                       return array(
+                                               'path' => $tmpPath,
+                                               'width' => $bucket,
+                                               'height' => $bucketHeight
+                                       );
                                }
-                               // Give extensions a chance to do something with this thumbnail...
-                               wfRunHooks( 'FileTransformed', array( $this, $thumb, $tmpThumbPath, $thumbPath ) );
                        }
 
-                       // Purge. Useful in the event of Core -> Squid connection failure or squid
-                       // purge collisions from elsewhere during failure. Don't keep triggering for
-                       // "thumbs" which have the main image URL though (bug 13776)
-                       if ( $wgUseSquid ) {
-                               if ( !$thumb || $thumb->isError() || $thumb->getUrl() != $this->getURL() ) {
-                                       SquidUpdate::purge( array( $thumbUrl ) );
+                       $bucketPath = $this->getBucketThumbPath( $bucket );
+
+                       if ( $this->repo->fileExists( $bucketPath ) ) {
+                               $fsFile = $this->repo->getLocalReference( $bucketPath );
+
+                               if ( $fsFile ) {
+                                       return array(
+                                               'path' => $fsFile->getPath(),
+                                               'width' => $bucket,
+                                               'height' => $bucketHeight
+                                       );
                                }
                        }
-               } while ( false );
+               }
 
-               wfProfileOut( __METHOD__ );
+               // Original file
+               return array(
+                       'path' => $this->getLocalRefPath(),
+                       'width' => $this->getWidth(),
+                       'height' => $this->getHeight()
+               );
+       }
 
-               return is_object( $thumb ) ? $thumb : false;
+       /**
+        * Returns the repo path of the thumb for a given bucket
+        * @param int $bucket
+        * @return string
+        */
+       protected function getBucketThumbPath( $bucket ) {
+               $thumbName = $this->getBucketThumbName( $bucket );
+               return $this->getThumbPath( $thumbName );
+       }
+
+       /**
+        * Returns the name of the thumb for a given bucket
+        * @param int $bucket
+        * @return string
+        */
+       protected function getBucketThumbName( $bucket ) {
+               return $this->thumbName( array( 'physicalWidth' => $bucket ) );
+       }
+
+       /**
+        * Creates a temp FS file with the same extension and the thumbnail
+        * @param string $thumbPath Thumbnail path
+        * @returns TempFSFile
+        */
+       protected function makeTransformTmpFile( $thumbPath ) {
+               $thumbExt = FileBackend::extensionFromPath( $thumbPath );
+               return TempFSFile::factory( 'transform_', $thumbExt );
        }
 
        /**
@@ -1741,7 +1945,7 @@ abstract class File {
                        return false;
                }
 
-               return $this->handler->getImageSize( $this, $filePath );
+               return $this->getHandler()->getImageSize( $this, $filePath );
        }
 
        /**
index 39da597..837a731 100644 (file)
@@ -221,17 +221,6 @@ abstract class ImageGalleryBase extends ContextSource {
        public function setAdditionalOptions( $options ) {
        }
 
-       /**
-        * Instruct the class to use a specific skin for rendering
-        *
-        * @param Skin $skin
-        * @deprecated since 1.18 Not used anymore
-        */
-       function useSkin( $skin ) {
-               wfDeprecated( __METHOD__, '1.18' );
-               /* no op */
-       }
-
        /**
         * Add an image to the gallery.
         *
@@ -269,6 +258,14 @@ abstract class ImageGalleryBase extends ContextSource {
                array_unshift( $this->mImages, array( &$title, $html, $alt, $link, $handlerOpts ) );
        }
 
+       /**
+        * Returns the list of images this gallery contains
+        * @return array
+        */
+       public function getImages() {
+               return $this->mImages;
+       }
+
        /**
         * isEmpty() returns true if the gallery contains no images
         * @return bool
old mode 100755 (executable)
new mode 100644 (file)
index 296de96..3334694 100644 (file)
@@ -171,6 +171,12 @@ class HTMLForm extends ContextSource {
 
        protected $mWrapperLegend = false;
 
+       /**
+        * Salt for the edit token.
+        * @var string|array
+        */
+       protected $mTokenSalt = '';
+
        /**
         * If true, sections that contain both fields and subsections will
         * render their subsections before their fields.
@@ -397,7 +403,7 @@ class HTMLForm extends ContextSource {
                                // Session tokens for logged-out users have no security value.
                                // However, if the user gave one, check it in order to give a nice
                                // "session expired" error instead of "permission denied" or such.
-                               $submit = $this->getUser()->matchEditToken( $editToken );
+                               $submit = $this->getUser()->matchEditToken( $editToken, $this->mTokenSalt );
                        } else {
                                $submit = true;
                        }
@@ -434,9 +440,12 @@ class HTMLForm extends ContextSource {
         * Validate all the fields, and call the submission callback
         * function if everything is kosher.
         * @throws MWException
-        * @return mixed Bool true == Successful submission, Bool false
-        *     == No submission attempted, anything else == Error to
-        *     display.
+        * @return bool|string|array|Status
+        *     - Bool true or a good Status object indicates success,
+        *     - Bool false indicates no submission was attempted,
+        *     - Anything else indicates failure. The value may be a fatal Status
+        *       object, an HTML string, or an array of arrays (message keys and
+        *       params) or strings (message keys)
         */
        function trySubmit() {
                $this->mWasSubmitted = true;
@@ -503,10 +512,9 @@ class HTMLForm extends ContextSource {
         * Set a callback to a function to do something with the form
         * once it's been successfully validated.
         *
-        * @param string $cb Function name.  The function will be passed
-        *     the output from HTMLForm::filterDataForSubmit, and must
-        *     return Bool true on success, Bool false if no submission
-        *     was attempted, or String HTML output to display on error.
+        * @param callable $cb The function will be passed the output from
+        *   HTMLForm::filterDataForSubmit and this HTMLForm object, and must
+        *   return as documented for HTMLForm::trySubmit
         *
         * @return HTMLForm $this for chaining calls (since 1.20)
         */
@@ -726,6 +734,21 @@ class HTMLForm extends ContextSource {
                return $this;
        }
 
+       /**
+        * Set the salt for the edit token.
+        *
+        * Only useful when the method is "post".
+        *
+        * @since 1.24
+        * @param string|array Salt to use
+        * @return HTMLForm $this for chaining calls
+        */
+       public function setTokenSalt( $salt ) {
+               $this->mTokenSalt = $salt;
+
+               return $this;
+       }
+
        /**
         * Display the form (sending to the context's OutputPage object), with an
         * appropriate error message or stack of messages, and any validation errors, etc.
@@ -734,7 +757,7 @@ class HTMLForm extends ContextSource {
         * Moreover, when doing method chaining this should be the very last method
         * call just after prepareForm().
         *
-        * @param mixed $submitResult Mixed output from HTMLForm::trySubmit()
+        * @param bool|string|array|Status $submitResult Output from HTMLForm::trySubmit()
         *
         * @return Nothing, should be last call
         */
@@ -745,7 +768,7 @@ class HTMLForm extends ContextSource {
        /**
         * Returns the raw HTML generated by the form
         *
-        * @param mixed $submitResult Mixed output from HTMLForm::trySubmit()
+        * @param bool|string|array|Status $submitResult Output from HTMLForm::trySubmit()
         *
         * @return string
         */
@@ -821,7 +844,7 @@ class HTMLForm extends ContextSource {
                if ( $this->getMethod() == 'post' ) {
                        $html .= Html::hidden(
                                'wpEditToken',
-                               $this->getUser()->getEditToken(),
+                               $this->getUser()->getEditToken( $this->mTokenSalt ),
                                array( 'id' => 'wpEditToken' )
                        ) . "\n";
                        $html .= Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) . "\n";
index 0e1860b..8076e8a 100644 (file)
@@ -504,7 +504,7 @@ abstract class HTMLFormField {
                );
                $divCssClasses = array( "mw-htmlform-field-$fieldType", $this->mClass, $errorClass );
                if ( $this->mParent->isVForm() ) {
-                       $divCssClasses[] = 'mw-ui-vform-div';
+                       $divCssClasses[] = 'mw-ui-vform-field';
                }
 
                $wrapperAttributes = array(
index 19b2f7c..65176dd 100644 (file)
@@ -26,7 +26,8 @@ class HTMLSelectAndOtherField extends HTMLSelectField {
                        throw new MWException( 'HTMLSelectAndOtherField called without any options' );
                }
                if ( !in_array( 'other', $this->mOptions, true ) ) {
-                       $this->mOptions[$params['other']] = 'other';
+                       // Have 'other' always as first element
+                       $this->mOptions = array( $params['other'] => 'other' ) + $this->mOptions;
                }
                $this->mFlatOptions = self::flattenOptions( $this->getOptions() );
 
index c32b445..2bf9f8b 100644 (file)
@@ -27,8 +27,10 @@ class HTMLSelectField extends HTMLFormField {
                        $select->setAttribute( 'disabled', 'disabled' );
                }
 
-               if ( isset( $this->mParams['tabindex'] ) ) {
-                       $select->setAttribute( 'tabindex', $this->mParams['tabindex'] );
+               $allowedParams = array( 'tabindex', 'size' );
+               $customParams = $this->getAttributes( $allowedParams );
+               foreach( $customParams as $name => $value ) {
+                       $select->setAttribute( $name, $value );
                }
 
                if ( $this->mClass !== '' ) {
index a001c43..cbf7d12 100644 (file)
@@ -12,7 +12,8 @@ class HTMLSelectOrOtherField extends HTMLTextField {
                                isset( $params['other'] )
                                        ? $params['other']
                                        : wfMessage( 'htmlform-selectorother-other' )->text();
-                       $this->mOptions[$msg] = 'other';
+                       // Have 'other' always as first element
+                       $this->mOptions = array( $msg => 'other' ) + $this->mOptions;
                }
 
        }
index 82a358e..28dac46 100644 (file)
@@ -476,7 +476,8 @@ abstract class DatabaseUpdater {
        public function updateRowExists( $key ) {
                $row = $this->db->selectRow(
                        'updatelog',
-                       '1',
+                       # Bug 65813
+                       '1 AS X',
                        array( 'ul_key' => $key ),
                        __METHOD__
                );
index 88478f4..86b975e 100644 (file)
@@ -38,9 +38,6 @@
  */
 abstract class Installer {
 
-       // This is the absolute minimum PHP version we can support
-       const MINIMUM_PHP_VERSION = '5.3.2';
-
        /**
         * The oldest version of PCRE we can support.
         *
@@ -380,26 +377,15 @@ abstract class Installer {
                        $this->settings[$var] = $GLOBALS[$var];
                }
 
-               $compiledDBs = array();
+               $this->compiledDBs = array();
                foreach ( self::getDBTypes() as $type ) {
                        $installer = $this->getDBInstaller( $type );
 
                        if ( !$installer->isCompiled() ) {
                                continue;
                        }
-                       $compiledDBs[] = $type;
-
-                       $defaults = $installer->getGlobalDefaults();
-
-                       foreach ( $installer->getGlobalNames() as $var ) {
-                               if ( isset( $defaults[$var] ) ) {
-                                       $this->settings[$var] = $defaults[$var];
-                               } else {
-                                       $this->settings[$var] = $GLOBALS[$var];
-                               }
-                       }
+                       $this->compiledDBs[] = $type;
                }
-               $this->compiledDBs = $compiledDBs;
 
                $this->parserTitle = Title::newFromText( 'Installer' );
                $this->parserOptions = new ParserOptions; // language will be wrong :(
@@ -429,25 +415,17 @@ abstract class Installer {
         * @return Status
         */
        public function doEnvironmentChecks() {
-               $phpVersion = phpversion();
-               if ( version_compare( $phpVersion, self::MINIMUM_PHP_VERSION, '>=' ) ) {
-                       $this->showMessage( 'config-env-php', $phpVersion );
-                       $good = true;
-               } else {
-                       $this->showMessage( 'config-env-php-toolow', $phpVersion, self::MINIMUM_PHP_VERSION );
-                       $good = false;
-               }
+               // Php version has already been checked by entry scripts
+               // Show message here for information purposes
+               $this->showMessage( 'config-env-php', phpversion() );
 
+               $good = true;
                // Must go here because an old version of PCRE can prevent other checks from completing
-               if ( $good ) {
-                       list( $pcreVersion ) = explode( ' ', PCRE_VERSION, 2 );
-                       if ( version_compare( $pcreVersion, self::MINIMUM_PCRE_VERSION, '<' ) ) {
-                               $this->showError( 'config-pcre-old', self::MINIMUM_PCRE_VERSION, $pcreVersion );
-                               $good = false;
-                       }
-               }
-
-               if ( $good ) {
+               list( $pcreVersion ) = explode( ' ', PCRE_VERSION, 2 );
+               if ( version_compare( $pcreVersion, self::MINIMUM_PCRE_VERSION, '<' ) ) {
+                       $this->showError( 'config-pcre-old', self::MINIMUM_PCRE_VERSION, $pcreVersion );
+                       $good = false;
+               } else {
                        foreach ( $this->envChecks as $check ) {
                                $status = $this->$check();
                                if ( $status === false ) {
@@ -726,11 +704,15 @@ abstract class Installer {
 
        /**
         * Environment check for register_globals.
+        * Prevent installation if enabled
         */
        protected function envCheckRegisterGlobals() {
                if ( wfIniGetBool( 'register_globals' ) ) {
-                       $this->showMessage( 'config-register-globals' );
+                       $this->showMessage( 'config-register-globals-error' );
+                       return false;
                }
+
+               return true;
        }
 
        /**
@@ -1531,8 +1513,8 @@ abstract class Installer {
        /**
         * Actually perform the installation.
         *
-        * @param array $startCB A callback array for the beginning of each step
-        * @param array $endCB A callback array for the end of each step
+        * @param callable $startCB A callback array for the beginning of each step
+        * @param callable $endCB A callback array for the end of each step
         *
         * @return array Array of Status objects
         */
@@ -1747,7 +1729,7 @@ abstract class Installer {
        /**
         * Add an installation step following the given step.
         *
-        * @param array $callback A valid installation callback array, in this form:
+        * @param callable $callback A valid installation callback array, in this form:
         *    array( 'name' => 'some-unique-name', 'callback' => array( $obj, 'function' ) );
         * @param string $findStep The step to find. Omit to put the step at the beginning
         */
index 51db148..83681b6 100644 (file)
@@ -218,6 +218,7 @@ class MssqlInstaller extends DatabaseInstaller {
                                'password' => $password,
                                'dbname' => false,
                                'flags' => 0,
+                               'schema' => $this->getVar( 'wgDBmwschema' ),
                                'tablePrefix' => $this->getVar( 'wgDBprefix' ) ) );
                        $db->prepareStatements( false );
                        $db->scrollableCursor( false );
@@ -648,6 +649,14 @@ class MssqlInstaller extends DatabaseInstaller {
                return $status;
        }
 
+       public function getGlobalDefaults() {
+               // The default $wgDBmwschema is null, which breaks Postgres and other DBMSes that require
+               // the use of a schema, so we need to set it here
+               return array(
+                       'wgDBmwschema' => 'mediawiki',
+               );
+       }
+
        /**
         * Try to see if the login exists
         * @param string $user Username to check
index f9c4287..d590a70 100644 (file)
@@ -41,6 +41,89 @@ class MssqlUpdater extends DatabaseUpdater {
                        array( 'addField', 'mwuser', 'user_password_expires', 'patch-user_password_expires.sql' ),
 
                        // 1.24
+                       array( 'addField', 'page', 'page_lang', 'patch-page-page_lang.sql'),
+                       // Constraint updates
+                       array( 'updateConstraints', 'category_types', 'categorylinks', 'cl_type' ),
+                       array( 'updateConstraints', 'major_mime', 'filearchive', 'fa_major_mime' ),
+                       array( 'updateConstraints', 'media_type', 'filearchive', 'fa_media_type' ),
+                       array( 'updateConstraints', 'major_mime', 'oldimage', 'oi_major_mime' ),
+                       array( 'updateConstraints', 'media_type', 'oldimage', 'oi_media_type' ),
+                       array( 'updateConstraints', 'major_mime', 'image', 'img_major_mime' ),
+                       array( 'updateConstraints', 'media_type', 'image', 'img_media_type' ),
+                       array( 'updateConstraints', 'media_type', 'uploadstash', 'us_media_type' ),
+                       // END: Constraint updates
                );
        }
+
+       /**
+        * Drops unnamed and creates named constraints following the pattern
+        * <column>_ckc
+        *
+        * @param string $constraintType
+        * @param string $table Name of the table to which the field belongs
+        * @param string $field Name of the field to modify
+        * @return bool False if patch is skipped.
+        */
+       protected function updateConstraints( $constraintType, $table, $field ) {
+               if ( !$this->doTable( $table ) ) {
+                       return true;
+               }
+
+               $this->output( "...updating constraints on [$table].[$field] ..." );
+               $updateKey = "$field-$constraintType-ck";
+               if ( !$this->db->tableExists( $table, __METHOD__ ) ) {
+                       $this->output( "...$table table does not exist, skipping modify field patch.\n" );
+                       return true;
+               } elseif ( !$this->db->fieldExists( $table, $field, __METHOD__ ) ) {
+                       $this->output( "...$field field does not exist in $table table, " .
+                               "skipping modify field patch.\n" );
+                       return true;
+               } elseif ( $this->updateRowExists( $updateKey ) ) {
+                       $this->output( "...$field in table $table already patched.\n" );
+                       return true;
+               }
+
+               # After all checks passed, start the update
+               $this->insertUpdateRow( $updateKey );
+               $path = 'named_constraints.sql';
+               $constraintMap = array(
+                       'category_types' =>
+                               "($field in('page', 'subcat', 'file'))",
+                       'major_mime'     =>
+                               "($field in('unknown', 'application', 'audio', 'image', 'text', 'video'," .
+                               " 'message', 'model', 'multipart'))",
+                       'media_type'     =>
+                               "($field in('UNKNOWN', 'BITMAP', 'DRAWING', 'AUDIO', 'VIDEO', 'MULTIMEDIA'," .
+                               "'OFFICE', 'TEXT', 'EXECUTABLE', 'ARCHIVE'))"
+               );
+               $constraint = $constraintMap[$constraintType];
+
+               # and hack-in those variables that should be replaced
+               # in our template file right now
+               $this->db->setSchemaVars( array(
+                       'tableName'       => $table,
+                       'fieldName'       => $field,
+                       'checkConstraint' => $constraint,
+                       'wgDBname'        => $wgDBname,
+                       'wgDBmwschema'    => $wgDBmwschema,
+               ) );
+
+               # Full path from file name
+               $path = $this->db->patchPath( $path );
+
+               # No need for a cursor allowing result-iteration; just apply a patch
+               # store old value for re-setting later
+               $wasScrollable = $this->db->scrollableCursor( false );
+
+               # Apply patch
+               $this->db->sourceFile( $path );
+
+               # Reset DB instance to have original state
+               $this->db->setSchemaVars( false );
+               $this->db->scrollableCursor( $wasScrollable );
+
+               $this->output( "done.\n" );
+
+               return true;
+       }
 }
index 2f77021..853ee0b 100644 (file)
@@ -255,6 +255,7 @@ class MysqlUpdater extends DatabaseUpdater {
                        array( 'addField', 'page_props', 'pp_sortkey', 'patch-pp_sortkey.sql' ),
                        array( 'dropField', 'recentchanges', 'rc_cur_time', 'patch-drop-rc_cur_time.sql' ),
                        array( 'addIndex', 'watchlist', 'wl_user_notificationtimestamp', 'patch-watchlist-user-notificationtimestamp-index.sql' ),
+                       array( 'addField', 'page', 'page_lang', 'patch-page_lang.sql' ),
                );
        }
 
index 0ef41fa..1846854 100644 (file)
@@ -49,13 +49,13 @@ class OracleUpdater extends DatabaseUpdater {
                        array( 'doRemoveNotNullEmptyDefaults' ),
                        array( 'addTable', 'user_former_groups', 'patch-user_former_groups.sql' ),
 
-                       //1.18
+                       // 1.18
                        array( 'addIndex', 'user', 'i02', 'patch-user_email_index.sql' ),
                        array( 'modifyField', 'user_properties', 'up_property', 'patch-up_property.sql' ),
                        array( 'addTable', 'uploadstash', 'patch-uploadstash.sql' ),
                        array( 'doRecentchangesFK2Cascade' ),
 
-                       //1.19
+                       // 1.19
                        array( 'addIndex', 'logging', 'i05', 'patch-logging_type_action_index.sql' ),
                        array( 'addField', 'revision', 'rev_sha1', 'patch-rev_sha1_field.sql' ),
                        array( 'addField', 'archive', 'ar_sha1', 'patch-ar_sha1_field.sql' ),
@@ -66,12 +66,12 @@ class OracleUpdater extends DatabaseUpdater {
                        array( 'addIndex', 'job', 'i02', 'patch-job_timestamp_index.sql' ),
                        array( 'doPageRestrictionsPKUKFix' ),
 
-                       //1.20
+                       // 1.20
                        array( 'addIndex', 'ipblocks', 'i05', 'patch-ipblocks_i05_index.sql' ),
                        array( 'addIndex', 'revision', 'i05', 'patch-revision_i05_index.sql' ),
                        array( 'dropField', 'category', 'cat_hidden', 'patch-cat_hidden.sql' ),
 
-                       //1.21
+                       // 1.21
                        array( 'addField', 'revision', 'rev_content_format',
                                'patch-revision-rev_content_format.sql' ),
                        array( 'addField', 'revision', 'rev_content_model',
@@ -93,14 +93,15 @@ class OracleUpdater extends DatabaseUpdater {
                        array( 'modifyField', 'user_former_groups', 'ufg_group',
                                'patch-ufg_group-length-increase-255.sql' ),
 
-                       //1.23
+                       // 1.23
                        array( 'addIndex', 'logging', 'i06', 'patch-logging_user_text_type_time_index.sql' ),
                        array( 'addIndex', 'logging', 'i07', 'patch-logging_user_text_time_index.sql' ),
                        array( 'addField', 'user', 'user_password_expires', 'patch-user_password_expire.sql' ),
                        array( 'addField', 'page', 'page_links_updated', 'patch-page_links_updated.sql' ),
                        array( 'addField', 'recentchanges', 'rc_source', 'patch-rc_source.sql' ),
 
-                       //1.24
+                       // 1.24
+                       array( 'addField', 'page', 'page_lang', 'patch-page-page_lang.sql' ),
 
                        // KEEP THIS AT THE BOTTOM!!
                        array( 'doRebuildDuplicateFunction' ),
index 9e25f47..89a6978 100644 (file)
@@ -152,17 +152,18 @@ class PostgresInstaller extends DatabaseInstaller {
         * @param string $user User name
         * @param string $password Password
         * @param string $dbName Database name
+        * @param string $schema Database schema
         * @return Status
         */
-       protected function openConnectionWithParams( $user, $password, $dbName ) {
+       protected function openConnectionWithParams( $user, $password, $dbName, $schema ) {
                $status = Status::newGood();
                try {
-                       $db = new DatabasePostgres(
-                               $this->getVar( 'wgDBserver' ),
-                               $user,
-                               $password,
-                               $dbName
-                       );
+                       $db = Database::factory( 'postgres', array(
+                               'host' => $this->getVar( 'wgDBserver' ),
+                               'user' => $user,
+                               'password' => $password,
+                               'dbname' => $dbName,
+                               'schema' => $schema ) );
                        $status->value = $db;
                } catch ( DBConnectionError $e ) {
                        $status->fatal( 'config-connection-error', $e->getMessage() );
@@ -230,7 +231,8 @@ class PostgresInstaller extends DatabaseInstaller {
                                return $this->openConnectionWithParams(
                                        $this->getVar( '_InstallUser' ),
                                        $this->getVar( '_InstallPassword' ),
-                                       $this->getVar( 'wgDBname' ) );
+                                       $this->getVar( 'wgDBname' ),
+                                       $this->getVar( 'wgDBmwschema' ) );
                        case 'create-tables':
                                $status = $this->openPgConnection( 'create-schema' );
                                if ( $status->isOK() ) {
@@ -260,11 +262,11 @@ class PostgresInstaller extends DatabaseInstaller {
                $status = Status::newGood();
                foreach ( $dbs as $db ) {
                        try {
-                               $conn = new DatabasePostgres(
-                                       $this->getVar( 'wgDBserver' ),
+                               $conn = $this->openConnectionWithParams(
                                        $user,
                                        $password,
-                                       $db );
+                                       $db,
+                                       $this->getVar( 'wgDBmwschema' ) );
                        } catch ( DBConnectionError $error ) {
                                $conn = false;
                                $status->fatal( 'config-pg-test-error', $db,
@@ -622,6 +624,14 @@ class PostgresInstaller extends DatabaseInstaller {
                return $status;
        }
 
+       public function getGlobalDefaults() {
+               // The default $wgDBmwschema is null, which breaks Postgres and other DBMSes that require
+               // the use of a schema, so we need to set it here
+               return array(
+                       'wgDBmwschema' => 'mediawiki',
+               );
+       }
+
        public function setupPLpgSQL() {
                // Connect as the install user, since it owns the database and so is
                // the user that needs to run "CREATE LANGAUGE"
index e8de7de..8404c2d 100644 (file)
@@ -414,6 +414,7 @@ class PostgresUpdater extends DatabaseUpdater {
                        array( 'addPgField', 'page_props', 'pp_sortkey', 'float NULL' ),
                        array( 'addPgIndex', 'page_props', 'pp_propname_sortkey_page',
                                        '( pp_propname, pp_sortkey, pp_page ) WHERE ( pp_sortkey IS NOT NULL )' ),
+                       array( 'addPgField', 'page', 'page_lang', 'TEXT default NULL' ),
                );
        }
 
index 111d654..cf3f065 100644 (file)
@@ -133,6 +133,7 @@ class SqliteUpdater extends DatabaseUpdater {
                        array( 'addField', 'page_props', 'pp_sortkey', 'patch-pp_sortkey.sql' ),
                        array( 'dropField', 'recentchanges', 'rc_cur_time', 'patch-drop-rc_cur_time.sql' ),
                        array( 'addIndex', 'watchlist', 'wl_user_notificationtimestamp', 'patch-watchlist-user-notificationtimestamp-index.sql' ),
+                       array( 'addField', 'page', 'page_lang', 'patch-page-page_lang.sql' ),
                );
        }
 
index 06b561b..677af4f 100644 (file)
@@ -1230,6 +1230,8 @@ class WebInstallerOptions extends WebInstallerPage {
                        'wgEmailAuthentication', 'wgMainCacheType', '_MemCachedServers',
                        'wgUseInstantCommons' ) );
 
+               $retVal = true;
+
                if ( !array_key_exists( $this->getVar( '_RightsProfile' ), $this->parent->rightsProfiles )
                ) {
                        reset( $this->parent->rightsProfiles );
@@ -1240,8 +1242,7 @@ class WebInstallerOptions extends WebInstallerPage {
                if ( $code == 'cc-choose' ) {
                        if ( !$this->getVar( '_CCDone' ) ) {
                                $this->parent->showError( 'config-cc-not-chosen' );
-
-                               return false;
+                               $retVal = false;
                        }
                } elseif ( array_key_exists( $code, $this->parent->licenses ) ) {
                        // Messages:
@@ -1265,7 +1266,8 @@ class WebInstallerOptions extends WebInstallerPage {
                $extsAvailable = $this->parent->findExtensions();
                $extsToInstall = array();
                foreach ( $extsAvailable as $ext ) {
-                       if ( $this->parent->request->getCheck( 'config_ext-' . $ext ) ) {
+                       $this->parent->setVarsFromRequest( array( "ext-$ext" ) );
+                       if ( $this->getVar( "ext-$ext" ) ) {
                                $extsToInstall[] = $ext;
                        }
                }
@@ -1275,8 +1277,7 @@ class WebInstallerOptions extends WebInstallerPage {
                        $memcServers = explode( "\n", $this->getVar( '_MemCachedServers' ) );
                        if ( !$memcServers ) {
                                $this->parent->showError( 'config-memcache-needservers' );
-
-                               return false;
+                               $retVal = false;
                        }
 
                        foreach ( $memcServers as $server ) {
@@ -1286,21 +1287,18 @@ class WebInstallerOptions extends WebInstallerPage {
                                                && ( gethostbyname( $memcParts[0] ) == $memcParts[0] ) )
                                ) {
                                        $this->parent->showError( 'config-memcache-badip', $memcParts[0] );
-
-                                       return false;
+                                       $retVal = false;
                                } elseif ( !isset( $memcParts[1] ) ) {
                                        $this->parent->showError( 'config-memcache-noport', $memcParts[0] );
-
-                                       return false;
+                                       $retVal = false;
                                } elseif ( $memcParts[1] < 1 || $memcParts[1] > 65535 ) {
                                        $this->parent->showError( 'config-memcache-badport', 1, 65535 );
-
-                                       return false;
+                                       $retVal = false;
                                }
                        }
                }
 
-               return true;
+               return $retVal;
        }
 
 }
index 86db20f..d949a8d 100644 (file)
@@ -1,9 +1,13 @@
 {
        "@metadata": {
                "authors": [
-                       "Mucalexx"
+                       "Mucalexx",
+                       "Matthias Klostermayr"
                ]
        },
+       "config-desc": "As Installationsprogramm vo MediaWiki",
+       "config-title": "Installation vo MediaWiki $1",
+       "config-information": "Information",
        "mainpagetext": "'''MediaWiki is erfoigreich installird worn.'''",
        "mainpagedocfooter": "A Hüf zur da Benützung und Konfigurazion voh da Wiki-Software findst auf [//meta.wikimedia.org/wiki/Help:Contents Benützerhåndbuach].\n\n== Starthüfe ==\n\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Listen voh de Konfigurazionsvariaablen]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki-FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailinglisten voh de neichen MediaWiki-Versionen]"
 }
index ca6b37d..f4b75db 100644 (file)
        "config-ns-invalid": "Direizh eo an esaouenn anv \"<nowiki>$1</nowiki>\" spisaet.\nMerkit un esaouenn anv disheñvel evit ar raktres.",
        "config-ns-conflict": "Tabut zo etre an esaouenn anv spisaet \"<nowiki>$1</nowiki>\" hag un esaouenn anv dre ziouer eus MediaWiki.\nSpisait un anv raktres esaouenn anv all.",
        "config-admin-box": "Kont merour",
-       "config-admin-name": "Hoc'h anv-implijer :",
+       "config-admin-name": "Hoc'h anv implijer :",
        "config-admin-password": "Ger-tremen :",
        "config-admin-password-confirm": "Adskrivañ ar ger-tremen :",
        "config-admin-help": "Merkit hoc'h anv implijer amañ, da skouer \"Yann Vlog\".\nHemañ eo an anv a implijot evit kevreañ d'ar wiki-mañ.",
index 72b6f73..56b2732 100644 (file)
@@ -12,6 +12,7 @@
        "config-localsettings-key": "Карлаяккхаран догӀа:",
        "config-localsettings-badkey": "Ахьа яздина нийса доцу догӀа",
        "config-your-language": "Хьан мотт:",
+       "config-wiki-language": "Вики чохь лелор болу мотт",
        "config-back": "← Юха",
        "config-continue": "Кхин дӀа →",
        "config-page-language": "Мотт",
index dbfef20..59ad98e 100644 (file)
@@ -60,7 +60,7 @@
        "config-no-db": "Nepodařilo se nalézt vhodný databázový ovladač! Musíte do PHP nainstalovat databázový ovladač.\nJsou podporovány následující typy databází: $1.\n\nPokud jste si PHP přeložili sami, překonfigurujte ho se zapnutým databázovým klientem, například pomocí <code>./configure --with-mysql</code>.\nPokud jste PHP nainstalovali z balíčku Debian či Ubuntu, potřebujete nainstalovat také modul php5-mysql.",
        "config-outdated-sqlite": "'''Upozornění''': Máte SQLite $1, které je starší než minimálně vyžadovaná verze $2. SQLite nebude dostupné.",
        "config-no-fts3": "'''Upozornění''': SQLite bylo přeloženo bez [//sqlite.org/fts3.html modulu FTS3], funkce pro vyhledávání zde nebudou dostupné.",
-       "config-register-globals": "'''Upozornění: Je zapnuta PHP volba <code>[http://php.net/register_globals register_globals]</code>.'''\n'''Pokud můžete, vypněte ji.'''\nMediaWiki bude fungovat, ale váš server je vystaven potenciálním bezpečnostním hrozbám.",
+       "config-register-globals-error": "<strong>Chyba: PHP nastavení <code>[http://php.net/register_globals register_globals]</code> je zapnuto. Pro pokračování v instalaci musí být vypnuto.</strong>\nRady, jak toho dosáhnout, najdete na [https://www.mediawiki.org/wiki/Register_globals https://www.mediawiki.org/wiki/register_globals].",
        "config-magic-quotes-runtime": "'''Kritická chyba: Je zapnuto [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime]!'''\nToto nastavení nepředvídatelně poškozuje vstupní data.\nMediaWiki nelze nainstalovat ani používat, dokud není toto nastavení vypnuto.",
        "config-magic-quotes-sybase": "'''Kritická chyba: Je zapnuto [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase]!'''\nToto nastavení nepředvídatelně poškozuje vstupní data.\nMediaWiki nelze nainstalovat ani používat, dokud není toto nastavení vypnuto.",
        "config-mbstring": "'''Kritická chyba: Je zapnuto [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload]!'''\nToto nastavení způsobuje chyby a může nepředvídatelně poškozovat vstupní data.\nMediaWiki nelze nainstalovat ani používat, dokud není toto nastavení vypnuto.",
index cd18c92..ac8daaf 100644 (file)
@@ -66,7 +66,7 @@
        "config-no-db": "Es konnte kein adäquater Datenbanktreiber gefunden werden. Es muss daher ein Datenbanktreiber für PHP installiert werden.\nDie folgenden Datenbanksysteme werden unterstützt: $1\n\nWenn du PHP selbst kompiliert hast, konfiguriere es erneut mit einem aktivierten Datenbankclient, zum Beispiel durch Verwendung von <code>./configure --with-mysqli</code>.\nWenn du PHP von einem Debian- oder Ubuntu-Paket installiert hast, dann musst du auch beispielsweise das <code>php5-mysql</code>-Paket installieren.",
        "config-outdated-sqlite": "'''Warnung:''' SQLite $1 ist installiert. Allerdings benötigt MediaWiki SQLite $2 oder höher. SQLite wird daher nicht verfügbar sein.",
        "config-no-fts3": "'''Warnung:''' SQLite wurde ohne das [//sqlite.org/fts3.html FTS3-Modul] kompiliert, sodass keine Suchfunktionen für dieses Datenbanksystem zur Verfügung stehen werden.",
-       "config-register-globals": "'''Warnung: Der Parameter <code>[http://php.net/register_globals register_globals]</code> von PHP ist aktiviert.'''\n'''Sie sollte deaktiviert werden, sofern dies möglich ist.'''\nDie MediaWiki-Installation wird zwar laufen, wobei aber der Server für potentielle Sicherheitsprobleme anfällig ist.",
+       "config-register-globals-error": "<strong>Fehler: Die PHP-Option <code>[http://php.net/register_globals register_globals]</code> ist aktiviert.\nSie muss deaktiviert sein, um mit der Installation fortzufahren.</strong>\nSiehe [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals] für Hilfe.",
        "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!'''\nDiese Einstellung führt zu unvorhersehbaren Problemen bei der Dateneingabe.\nMediaWiki kann nicht installiert werden, solange dieser Parameter nicht deaktiviert wurde.",
        "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>\nDiese Einstellung führt zu unvorhersehbaren Problemen bei der Dateneingabe.\nMediaWiki kann nicht installiert werden, solange dieser Parameter nicht deaktiviert wurde.",
        "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!'''\nDiese Einstellung verursacht Fehler und führt zu unvorhersehbaren Problemen bei der Dateneingabe.\nMediaWiki kann nicht installiert werden, solange dieser Parameter nicht deaktiviert wurde.",
index b19bdc0..e0cd1bf 100644 (file)
@@ -44,7 +44,6 @@
        "config-env-good": "The environment has been checked.\nYou can install MediaWiki.",
        "config-env-bad": "The environment has been checked.\nYou cannot install MediaWiki.",
        "config-env-php": "PHP $1 is installed.",
-       "config-env-php-toolow": "PHP $1 is installed.\nHowever, MediaWiki requires PHP $2 or higher.",
        "config-unicode-using-utf8": "Using Brion Vibber's utf8_normalize.so for Unicode normalization.",
        "config-unicode-using-intl": "Using the [http://pecl.php.net/intl intl PECL extension] for Unicode normalization.",
        "config-unicode-pure-php-warning": "<strong>Warning:</strong> The [http://pecl.php.net/intl intl PECL extension] is not available to handle Unicode normalization, falling back to slow pure-PHP implementation.\nIf you run a high-traffic site, you should read a little on [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations Unicode normalization].",
@@ -52,7 +51,7 @@
        "config-no-db": "Could not find a suitable database driver! You need to install a database driver for PHP.\nThe following database types are supported: $1.\n\nIf you compiled PHP yourself, reconfigure it with a database client enabled, for example, using <code>./configure --with-mysqli</code>.\nIf you installed PHP from a Debian or Ubuntu package, then you also need to install, for example, the <code>php5-mysql</code> package.",
        "config-outdated-sqlite": "<strong>Warning:</strong> you have SQLite $1, which is lower than minimum required version $2. SQLite will be unavailable.",
        "config-no-fts3": "<strong>Warning:</strong> SQLite is compiled without the [//sqlite.org/fts3.html FTS3 module], search features will be unavailable on this backend.",
-       "config-register-globals": "<strong>Warning: PHP's <code>[http://php.net/register_globals register_globals]</code> option is enabled.\nDisable it if you can.</strong>\nMediaWiki will work, but your server is exposed to potential security vulnerabilities.",
+       "config-register-globals-error": "<strong>Error: PHP's <code>[http://php.net/register_globals register_globals]</code> option is enabled.\nIt must be disabled to continue with installation.</strong>\nSee [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals] for help on how to do so.",
        "config-magic-quotes-runtime": "<strong>Fatal: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] is active!'</strong>\nThis option corrupts data input unpredictably.\nYou cannot install or use MediaWiki unless this option is disabled.",
        "config-magic-quotes-sybase": "<strong>Fatal: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] is active!</strong>\nThis option corrupts data input unpredictably.\nYou cannot install or use MediaWiki unless this option is disabled.",
        "config-mbstring": "<strong>Fatal: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] is active!</strong>\nThis option causes errors and may corrupt data unpredictably.\nYou cannot install or use MediaWiki unless this option is disabled.",
index b37a1b7..edb3f27 100644 (file)
@@ -75,7 +75,6 @@
        "config-no-db": "¡No fue posible encontrar un controlador adecuado para la base de datos! Necesitas instalar un controlador de base de datos para PHP.\nLos siguientes sistemas gestores de bases de datos están soportados: $1.\n\nSi compilaste PHP tú mismo, debes reconfigurarlo habilitando un cliente de base de datos, por ejemplo, usando <code>./configure --with-mysqli</code>.\nSi instalaste PHP desde un paquete Debian o Ubuntu, entonces también necesitas instalar, por ejemplo, el paquete <code>php5-mysql</code>.",
        "config-outdated-sqlite": "''' Advertencia ''': tiene la versión SQLite $1, que es inferior a la mínima versión requerida: $2 . SQLite no estará disponible.",
        "config-no-fts3": "'''Advertencia''': SQLite está compilado sin el [//sqlite.org/fts3.html módulo FTS3]. Las funcionalidades de búsqueda no estarán disponibles en esta instalación.",
-       "config-register-globals": "'''Advertencia: La opción de <code>[http://php.net/register_globals register_globals]</code> de PHP está habilitada.'''\n'''Desactívela si puede.'''\nMediaWiki funcionará, pero tu servidor quedará expuesto a vulnerabilidades de seguridad potenciales.",
        "config-magic-quotes-runtime": "'''Fatal: ¡[http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] está activada!'''\nEsta opción causa la imprevisible corrupción de la entrada de datos.\nNo puedes instalar o utilizar MediaWiki a menos que esta opción esté inhabilitada.",
        "config-magic-quotes-sybase": "'''Fatal: ¡[http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] está activada!'''\nEsta opción causa la imprevisible corrupción de la entrada de datos.\nNo puedes instalar o utilizar MediaWiki a menos que esta opción esté inhabilitada.",
        "config-mbstring": "'''Fatal: La opción [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] está activada!'''\nEsta opción causa errores y puede corromper los datos de una forma imprevisible.\nNo se puede instalar o usar MediaWiki a menos que esta opción sea desactivada.",
index d9ef1ef..308418f 100644 (file)
@@ -74,7 +74,7 @@
        "config-no-db": "Impossible de trouver un pilote de base de données approprié ! Vous devez installer un pilote de base de données pour PHP. Les types de bases de données suivants sont reconnus : $1.\n\nSi vous avez compilé PHP vous-même, reconfigurez-le avec un client de base de données activé, par exemple en utilisant <code>./configure --with-mysqli</code>. Si vous avez installé PHP depuis un paquet Debian ou Ubuntu, alors vous devrez aussi installer, par exemple, le paquet <code>php5-mysql</code>.",
        "config-outdated-sqlite": "'''Attention''': vous avez SQLite $1, qui est inférieur à la version minimale requise $2. SQLite sera indisponible.",
        "config-no-fts3": "'''Attention :''' SQLite est compilé sans le module [//sqlite.org/fts3.html FTS3] ; les fonctions de recherche ne seront pas disponibles sur ce moteur.",
-       "config-register-globals": "'''Attention : l'option <code>[http://php.net/register_globals register_globals]</code> de PHP est activée.'''\n'''Désactivez-la si vous le pouvez.'''\nMediaWiki fonctionnera, mais votre serveur sera exposé à de potentielles failles de sécurité.",
+       "config-register-globals-error": "<strong>Erreur : L’option <code>[http://php.net/register_globals register_globals]</code> de PHP est activée.\nElle doit être désactivée pour poursuivre l’installation.</strong>\nVoyez [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals] pour avoir de l’aide sur la manière de faire cela.",
        "config-magic-quotes-runtime": "'''Erreur fatale : [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] est activé !'''\nCette option corrompt les données de manière imprévisible.\nVous ne pouvez pas installer ou utiliser MediaWiki tant que cette option est activée.",
        "config-magic-quotes-sybase": "'''Erreur fatale : [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybasee] est activé !'''\nCette option corrompt les données de manière imprévisible.\nVous ne pouvez pas installer ou utiliser MediaWiki tant que cette option est activée.",
        "config-mbstring": "'''Erreur fatale : [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] est activé !'''\nCette option provoque des erreurs et peut corrompre les données de manière imprévisible.\nVous ne pouvez pas installer ou utiliser MediaWiki tant que cette option est activée.",
index a4cb9eb..5a7d148 100644 (file)
@@ -7,8 +7,11 @@
        "config-desc": "Ka polokalamu hoʻonoho no MekiaWiki",
        "config-title": "Ka hoʻonoho MekiaWiki $1",
        "config-information": "ʻIke",
+       "config-localsettings-upgrade": "Ua hōʻike ʻia kekahi waihona <code>LocalSettings.php</code>.\nNo ka hoʻopuka hou ʻana o kēia hoʻonohona, e ʻoluʻolu, e kikokiko i ka helu o <code>$wgUpgradeKey</code> i loko o ka pahu i lalo.\nAia ia ma <code>LocalSettings.php</code>.",
+       "config-localsettings-cli-upgrade": "Ua hōʻike ʻia kekahi waihona <code>LocalSettings.php</code>.\nNo ka hoʻopuka hou ʻana o kēia hoʻonohona, e hana iā <code>update.php</code> ke ʻoluʻolu.",
        "config-localsettings-key": "Pihi hoʻopuka hou:",
        "config-localsettings-badkey": "Hewa ka pihi.",
+       "config-upgrade-key-missing": "Loaʻa he hoʻonohona mai mua o MīkiaWiki mai mua.\nNo ka hoʻopuka hou ʻana o kēia hoʻonohona, e ʻoluʻolu, e kau i kēia laina lalo ma lalo o kāu <code>LocalSettings.php</code>:\n\n$1",
        "config-your-language": "Kāu ʻōlelo:",
        "config-your-language-help": "E koho i kekahi ʻōlelo no ka hoʻohana ʻana ma loko o ka hana hoʻonohona.",
        "config-wiki-language": "ʻŌlelo Wiki:",
index 5d4ba21..582e463 100644 (file)
@@ -59,7 +59,7 @@
        "config-no-db": "לא נמצא דרייבר מסד נתונים מתאים. יש להתקין דרייבר מסד נתונים ל־PHP.\nנתמכים הסוגים הבאים של מסדי נתונים: $1.\n\nאם קִמפלת את PHP בעצמך, יש להגדיר אותו מחדש ולהפעיל את לקוח מסד נתונים, למשל באמצעות <code dir=\"ltr\">./configure --with-mysqli</code>.\nאם התקנת את PHP מחבילה של דביאן או של אובונטו, יש להתקין, למשל, גם את המודול <code dir=\"ltr\">php5-mysql</code>.",
        "config-outdated-sqlite": "'''אזהרה''': במערכת מתוקן SQLite $1. גרסה זו לא נתמכת ולשימוש ב־SQLite נדרשת גרסה $2 לפחות. SQLlite לא יהיה זמין.",
        "config-no-fts3": "'''אזהרה''': SQLite מקומפל ללא [//sqlite.org/fts3.html מודול FTS]. יכולות חיפוש לא יהיו זמינות בהתקנה הזאת.",
-       "config-register-globals": "'''אזהרה: האפשרות <code>[http://php.net/register_globals register_globals]</code> של PHP מופעלת.'''\n'''כבו אותה אם זה אפשרי.'''\nמדיה־ויקי תעבוד, אבל השרת שלך חשוף לפגיעות אבטחה.",
+       "config-register-globals-error": "<strong>שגיאה: האפשרות <code>[http://php.net/register_globals register_globals]</code> של PHP מופעלת.\nצריך לכבות אותה כדי להמשיך בהתקנה.</strong>\nר' [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals] להסבר איך לעשות את זה.",
        "config-magic-quotes-runtime": "<strong>שגיאה סופנית: האפשרות [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] פעילה!</strong>\nהאפשרות הזאת מעוותת את נתוני הקלט באופן בלתי־צפוי.\nלא ניתן להתקין את מדיה־ויקי אלא אם האפשרות הזאת תכובה.",
        "config-magic-quotes-sybase": "'''שגיאה סופנית''': האפשרות [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] פעילה!'''\nהאפשרות הזאת מעוותת את נתוני הקלט באופן בלתי־צפוי.\nלא ניתן להתקין את מדיה־ויקי או להשתמש בה אלא אם האפשרות הזאת תכובה.",
        "config-mbstring": "'''שגיאה סופנית''': האפשרות [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] פעילה!'''\nהאפשרות הזאת גורמת לשגיאות ומעוותת את נתוני הקלט באופן בלתי־צפוי.\nלא ניתן להתקין את מדיה־ויקי או להשתמש בה אלא אם האפשרות הזאת תכובה.",
index e0b9c11..101c19a 100644 (file)
        "config-install-done": "<strong>Complimenti!</strong>\nHai installato correttamente MediaWiki.\n\nIl programma di installazione ha generato un file <code>LocalSettings.php</code> che contiene tutte le impostazioni.\n\nDevi scaricarlo ed inserirlo nella directory base del tuo wiki (la stessa dove è presente index.php). Il download dovrebbe partire automaticamente.\n\nSe il download non si avvia, o se è stato annullato, puoi riavviarlo cliccando sul collegamento di seguito:\n\n$3\n\n<strong>Nota:</strong> se esci ora dall'installazione senza scaricare il file di configurazione che è stato generato, questo poi non sarà più disponibile in seguito.\n\nQuando hai fatto, puoi <strong>[$2 entrare nel tuo wiki]</strong>.",
        "config-download-localsettings": "Scarica <code>LocalSettings.php</code>",
        "config-help": "aiuto",
+       "config-help-tooltip": "fai clic per espandere",
        "config-nofile": "Il file \"$1\" non può essere trovato. È stato eliminato?",
        "config-extension-link": "Sapevi che il tuo wiki supporta le  [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions estensioni]?\n\nPuoi navigare tra le [//www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category estensioni per categoria].",
        "mainpagetext": "'''Installazione di MediaWiki completata correttamente.'''",
index e236af5..87ab22e 100644 (file)
@@ -55,7 +55,7 @@
        "config-no-db": "Не можев да најдам соодветен двигател за базата на податоци! Ќе треба да воспоставите двигател за PHP-база.\nПоддржани се следниве видови бази: $1.\n\nДоколку самите го срочивте овој PHP, овозможете го базниот клиент во поставките — на пр. со <code>./configure --with-mysqli</code>.\nАко овој PHP го воспоставите од пакет на Debian или Ubuntu, тогаш ќе треба исто така да го воспоставите, на пр., пакетот <code>php5-mysql</code>.",
        "config-outdated-sqlite": "'''Предупредување''': имате SQLite $1. Најстарата допуштена верзија е $2. Затоа, SQLite ќе биде недостапен.",
        "config-no-fts3": "'''Предупредување''': SQLite iе составен без модулот [//sqlite.org/fts3.html FTS3] - за оваа база нема да има можност за пребарување.",
-       "config-register-globals": "'''Предупредување: Можноста <code>[http://php.net/register_globals register_globals]</code> за PHP е овозможена.'''\n'''Оневозможете ја ако е можно.'''\nМедијаВики ќе работи, но опслужувачот ви е изложен на безбедносни ризици.",
+       "config-register-globals-error": "<strong>Грешка: Вклучена е можноста <code>[http://php.net/register_globals register_globals]</code> за PHP.\nМора да се исклучи за да продолжите со воспоставката.</strong>\nКако да го направите тоа можете да прочитате на [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals].",
        "config-magic-quotes-runtime": "'''Кобно: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] е активно!'''\nОваа можност непредвидливо го расипува вносот на податоци.\nОваа можност мора да е исклучена. Во спротивно нема да можете да го воспоставите и користите МедијаВики.",
        "config-magic-quotes-sybase": "'''Кобно: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] е активно!'''\nОваа можност непредвидливо го расипува вносот на податоци.\nОваа можност мора да е исклучена. Во спротивно нема да можете да го воспоставите и користите МедијаВики.",
        "config-mbstring": "'''Кобно: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] е активно!'''\nОваа можност предизвикува грешки и може непредвидиво да го расипува вносот на податоци.\nОваа можност мора да е исклучена. Во спротивно нема да можете да го воспоставите и користите МедијаВики.",
        "config-db-account-lock": "Користи го истото корисничко име и лозинка за редовна работа",
        "config-db-wiki-account": "Корисничко име за редовна работа",
        "config-db-wiki-help": "Внесете корисничко име и лозинка што ќе се користат за поврзување со базата на податоци во текот на редовната работа со викито.\nАко сметката не постои, а инсталационата сметка има доволно привилегии, тогаш оваа корисничка сметка ќе биде создадена со минималните привилегии потребни за работа со викито.",
-       "config-db-prefix": "Ð\9fÑ\80еÑ\84икÑ\81 на табелата на базата:",
-       "config-db-prefix-help": "Ð\90ко Ñ\82Ñ\80еба Ð´Ð° Ð´ÐµÐ»Ð¸Ñ\82е ÐµÐ´Ð½Ð° Ð±Ð°Ð·Ð° Ð½Ð° Ð¿Ð¾Ð´Ð°Ñ\82оÑ\86и Ñ\81о Ð¿Ð¾Ð²ÐµÑ\9cе Ð²Ð¸ÐºÐ¸Ñ\98а, Ð¸Ð»Ð¸ Ñ\81о Ð\9cедиÑ\98аÐ\92ики Ð¸ Ð´Ñ\80Ñ\83г Ð¼Ñ\80ежен Ð¿Ñ\80огÑ\80ам, Ñ\82огаÑ\88 Ð¼Ð¾Ð¶ÐµÑ\82е Ð´Ð° Ð´Ð¾Ð´Ð°Ð´ÐµÑ\82е Ð¿Ñ\80еÑ\84икÑ\81 на сите називи на табелите за да спречите проблематични ситуации.\nНе користете празни простори.\n\nОва поле обично се остава празно.",
+       "config-db-prefix": "Ð\9fÑ\80еÑ\82Ñ\81Ñ\82авка на табелата на базата:",
+       "config-db-prefix-help": "Ð\90ко Ñ\82Ñ\80еба Ð´Ð° Ð´ÐµÐ»Ð¸Ñ\82е ÐµÐ´Ð½Ð° Ð±Ð°Ð·Ð° Ð½Ð° Ð¿Ð¾Ð´Ð°Ñ\82оÑ\86и Ñ\81о Ð¿Ð¾Ð²ÐµÑ\9cе Ð²Ð¸ÐºÐ¸Ñ\98а, Ð¸Ð»Ð¸ Ñ\81о Ð\9cедиÑ\98аÐ\92ики Ð¸ Ð´Ñ\80Ñ\83г Ð¼Ñ\80ежен Ð¿Ñ\80огÑ\80ам, Ñ\82огаÑ\88 Ð¼Ð¾Ð¶ÐµÑ\82е Ð´Ð° Ð´Ð¾Ð´Ð°Ð´ÐµÑ\82е Ð¿Ñ\80еÑ\82Ñ\81Ñ\82авка на сите називи на табелите за да спречите проблематични ситуации.\nНе користете празни простори.\n\nОва поле обично се остава празно.",
        "config-db-charset": "Збир знаци за базата",
        "config-charset-mysql5-binary": "Бинарен за MySQL 4.1/5.0",
        "config-charset-mysql5": "UTF-8 за MySQL 4.1/5.0",
        "config-missing-db-server-oracle": "Мора да внесете вредност за „{{int:config-db-host-oracle}}“.",
        "config-invalid-db-server-oracle": "Неважечки TNS „$1“.\nКористете или „TNS Name“ или низата „Easy Connect“ ([http://docs.oracle.com/cd/E11882_01/network.112/e10836/naming.htm Методи на именување за Oracle])",
        "config-invalid-db-name": "Неважечко име на базата „$1“.\nКористете само ASCII-букви (a-z, A-Z), бројки (0-9), долни црти (_) и цртички (-).",
-       "config-invalid-db-prefix": "Ð\9dеважеÑ\87ки Ð¿Ñ\80еÑ\84икÑ\81 за базата „$1“.\nКористете само ASCII-букви (a-z, A-Z), бројки (0-9), долни црти (_) и цртички (-).",
+       "config-invalid-db-prefix": "Ð\9dеважеÑ\87ка Ð¿Ñ\80еÑ\82Ñ\81Ñ\82авка за базата „$1“.\nКористете само ASCII-букви (a-z, A-Z), бројки (0-9), долни црти (_) и цртички (-).",
        "config-connection-error": "$1.\n\nПроверете го долунаведениот домаќин, корисничко име и лозинка и обидете се повторно.",
        "config-invalid-schema": "Неважечка шема за МедијаВики „$1“.\nКористете само букви, бројки и долни црти.",
        "config-db-sys-create-oracle": "Воспоставувачот поддржува само употреба на SYSDBA-сметка за создавање на нова сметка.",
index c95e9df..be78096 100644 (file)
@@ -58,7 +58,7 @@
        "config-no-db": "Fant ingen passende databasedriver! Du må installere en databasedriver for PHP.\nFølgende databasetyper støttes: $1\n\nOm du kompilerte PHP selv, rekonfigurer den med en aktivert databaseklient, for eksempel ved å bruke <code>./configure --with-mysql</code>.\nOm du installerte PHP fra en Debian- eller Ubuntu-pakke, må du også installere for eksempel <code>php5-mysql</code>-pakken.",
        "config-outdated-sqlite": "'''Advarsel''': Du har SQLite $1, som er en eldre versjon enn minimumskravet SQLite $2. SQLite vil ikke være tilgjengelig.",
        "config-no-fts3": "'''Advarsel''': SQLite er kompilert uten [//sqlite.org/fts3.html FTS3-modulen], søkefunksjoner vil ikke være tilgjengelig på dette bakstykket.",
-       "config-register-globals": "'''Advarsel: PHPs <code>[http://php.net/register_globals register_globals]</code>-alternativ er aktivert.'''\n'''Deaktiver det om du kan.'''\nMediaWiki vil fungere, men tjeneren din er utsatt for potensielle sikkerhetssårbarheter.",
+       "config-register-globals-error": "<strong>Feil: PHPs <code>[http://php.net/register_globals register_globals]</code>-valg er aktivt.\nDet må deaktiveres for å kunne fortsette med installeringen.</strong>\nSe [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals] for å få hjelp til å gjøre dette.",
        "config-magic-quotes-runtime": "'''Kritisk: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] er aktiv!'''\nDette alternativet ødelegger inndata på en uforutsigbar måte.\nDu kan ikke installere eller bruke MediaWiki med mindre dette alternativet deaktiveres.",
        "config-magic-quotes-sybase": "'''Kritisk: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] er aktiv!'''\nDette alternativet ødelegger inndata på en uforutsigbar måte.\nDu kan ikke installere eller bruke MediaWiki med mindre dette alternativet deaktiveres.",
        "config-mbstring": "'''Kritisk: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] er aktiv!'''\nDette alternativet fører til feil og kan ødelegge data på en uforutsigbar måte.\nDu kan ikke installere eller bruke MediaWiki med mindre dette alternativet deaktiveres.",
index 20f0b3e..79969e8 100644 (file)
@@ -65,7 +65,6 @@
        "config-no-db": "Não foi possível encontrar um driver de banco de dados adequado! É necessário instalar um driver de banco de dados para o PHP.\nSão suportados os seguintes tipos de bancos de dados: $1.\n\nSe você mesmo tiver compilado o PHP, reconfigure-o com um cliente de banco de dados ativado usando, por exemplo <code>./configure --with-mysqli</code>.\nSe você instalou o PHP a partir de um pacote do Debian ou do Ubuntu, então será também necessário instalar, por exemplo, o pacote <code>php5-mysql</code>.",
        "config-outdated-sqlite": "<strong>Aviso:</strong> você tem o SQLite versão $1, que é menor do que a versão mínima necessária $2. O SQLite não estará disponível.",
        "config-no-fts3": "<strong>Aviso</strong> O SQLite foi compilado sem o [//sqlite.org/fts3.html módulo FTS3], as funcionalidades de pesquisa não estarão disponíveis nesta instalação.",
-       "config-register-globals": "<strong>Aviso: A opção <code>[http://php.net/register_globals register_globals]</code> do PHP está ativada.\nDesative-a se puder.</strong>\nO MediaWiki funcionará mesmo assim, mas o seu servidor ficará exposto a potenciais vulnerabilidades de segurança.",
        "config-magic-quotes-runtime": "<strong>Erro fatal: A opção [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] está ativada!</strong>\nEsta opção causa corrupção dos dados de entrada de forma imprevisível.\nVocê não pode instalar ou utilizar o MediaWiki a menos que esta opção seja desativada.",
        "config-magic-quotes-sybase": "<strong>Erro fatal: A opção [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] está ativada!</strong>\nEsta opção corrompe os dados de entrada de forma imprevisível.\nVocê não pode instalar ou utilizar o MediaWiki a menos que esta opção seja desativada.",
        "config-mbstring": "<strong>Erro fatal: A opção [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] está ativada!</strong>\nEsta opção causa erros e pode corromper os dados de forma imprevisível.\nVocê não pode instalar ou utilizar o MediaWiki a menos que esta opção seja desativada.",
index 3a16079..b57ebf9 100644 (file)
@@ -70,7 +70,7 @@
        "config-no-db": "{{doc-important|Do not translate \"<code>./configure --with-mysqli</code>\" and \"<code>php5-mysql</code>\".}}\nParameters:\n* $1 is comma separated list of database types supported by MediaWiki.",
        "config-outdated-sqlite": "Used as warning. Parameters:\n* $1 - the version of SQLite that has been installed\n* $2 - minimum version",
        "config-no-fts3": "A \"[[:wikipedia:Front and back ends|backend]]\" is a system or component that ordinary users don't interact with directly and don't need to know about, and that is responsible for a distinct task or service - for example, a storage back-end is a generic system for storing data which other applications can use. Possible alternatives for back-end are \"system\" or \"service\", or (depending on context and language) even leave it untranslated.",
-       "config-register-globals": "Status message in the MediaWiki installer environment checks.",
+       "config-register-globals-error": "Error message in the MediaWiki installer environment checks.",
        "config-magic-quotes-runtime": "{{Related|Config-fatal}}",
        "config-magic-quotes-sybase": "{{Related|Config-fatal}}",
        "config-mbstring": "{{Related|Config-fatal}}",
index 17f5fbc..1bc4d08 100644 (file)
@@ -70,7 +70,7 @@
        "config-no-db": "Не удалось найти подходящие драйвера баз данных! Вам необходимо установить драйвера базы данных для PHP.\nПоддерживаются следующие типы баз данных: $1.\nЕсли вы скомпилировали PHP сами, перенастройте его с включением клиента баз данных, например, с помощью <code>./configure --with-mysqli</code>.\nЕсли вы скомпилировали PHP сами, сконфигурируйте его снова с включенным клиентом базы данных, например, с помощью <code>./configure --with-mysql</code>.\nЕсли вы установили PHP из пакетов Debian или Ubuntu, то вам также необходимо установить, например, пакет <code>php5-mysql</code>.",
        "config-outdated-sqlite": "'''Предупреждение''': у Вас установлен SQLite  $1, версия которого ниже требуемой $2 . SQLite будет недоступен.",
        "config-no-fts3": "'''Внимание''': SQLite собран без модуля [//sqlite.org/fts3.html FTS3] — поиск не будет работать для этой базы данных.",
-       "config-register-globals": "'''Внимание: PHP-опция <code>[http://php.net/register_globals register_globals]</code> включена.'''\n'''Отключите её, если это возможно.'''\nMediaWiki будет работать, но это снизит безопасность сервера и увеличит риск проникновения извне.",
+       "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-magic-quotes-runtime": "'''Проблема: включена опция PHP [http://www.php.net/manual/ru/function.magic-quotes-runtime.php magic_quotes_runtime]!'''\nЭто приводит к непредсказуемой порче вводимых данных.\nУстановка и использование MediaWiki без выключения этой опции невозможно.",
        "config-magic-quotes-sybase": "'''Проблема: включена опция PHP [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase]!'''\nЭто приводит к непредсказуемой порче вводимых данных.\nУстановка и использование MediaWiki без выключения этой опции невозможно.",
        "config-mbstring": "'''Проблема: включена опция PHP [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload]!'''\nЭто приводит к ошибкам и непредсказуемой порче вводимых данных.\nУстановка и использование MediaWiki без выключения этой опции невозможно.",
index c04765b..4f1c9c9 100644 (file)
@@ -59,7 +59,6 @@
        "config-no-db": "Kunde inte hitta en lämplig databasdrivrutin! Du måste installera en databasdrivrutin för PHP.\nFöljande databastyper stöds: $1.\n\nI du själv kompilerat din PHP, konfigurera den med en databasklient aktiverad genom att t.ex. använda <code>./configure --with-mysqli</code>.\nOm du installerade PHP från ett Debian- eller Ubuntupaket måste du även installera, t.ex. <code>php5-mysql</code>-paketet.",
        "config-outdated-sqlite": "'''Varning:''' du har SQLite $1, vilket är lägre än minimikravet version $2. SQLite kommer inte att vara tillgänglig.",
        "config-no-fts3": "'''Varning:''' SQLite kompileras utan [//sqlite.org/fts3.html FTS3-modulen], sökfunktioner kommer att vara otillgängliga på denna backend.",
-       "config-register-globals": "'''Varning: PHP:s <code>[http://php.net/register_globals register_globals]</code>-tillval är aktiverat.'''\n'''Inaktivera den om du kan.'''\nMediaWiki kommer att fungera, men din server exponeras för potentiella säkerhetshål.",
        "config-magic-quotes-runtime": "'''Kritiskt: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] är aktiv!'''\nDetta alternativ korrumperar inmatad data oförutsägbart.\nDu kan inte installera eller använda MediaWiki om detta alternativ är aktiverat.",
        "config-magic-quotes-sybase": "'''Kritiskt: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] är aktiv!'''\nDetta alternativ korrumperar inmatad data oförutsägbart.\nDu kan inte installera eller använda MediaWiki om detta alternativ är aktiverat.",
        "config-mbstring": "'''Kritiskt: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] är aktiv!'''\nDetta alternativ orsakar fel och kan korrumpera data oförutsägbart.\nDu kan inte installera eller använda MediaWiki om detta alternativ är aktiverat.",
@@ -99,6 +98,7 @@
        "config-db-name": "Databasnamn:",
        "config-db-name-help": "Välj ett namn som identifierar din wiki.\nDet bör inte innehålla mellanslag.\n\nOm du använder ett delat webbhotell kan de antingen ge dig ett särskilt databasnamn att använda eller så kan de låta dig skapa en databas via kontrollpanelen.",
        "config-db-name-oracle": "Databasschema:",
+       "config-db-account-oracle-warn": "Det finns tre stödda scenarier för installationen av Oracle som en backend-databas:\n\nOm du vill skapa ett databaskonto som en del av installationen, ange ett konto med SYSDBA-roll som databaskonto under installationen och ange de önskade autentiseringsuppgifterna för kontot med webb-åtkomst, annars kan du antingen skapa ett konto med webb-åtkomst manuellt och ange enbart detta konto (om den har behörighet att skapa schema-objekt) eller ange två olika konton, en med create-behörighet och en begränsad för webb-åtkomst.\n\nSkript för att skapa ett konto med de korrekta behörigheterna kan hittas i \"maintenance/oracle/\"-katalogen för denna installation. Tänk på att användningen av ett begränsat konto inaktiverar all underhållsmöjlighet med standardkontot.",
        "config-db-install-account": "Användarkonto för installation",
        "config-db-username": "Databas-användarnamn:",
        "config-db-password": "Databas-lösenord:",
        "config-db-schema-help": "Det här schemat blir oftast bra.\nÄndra det endast om du vet att du behöver.",
        "config-pg-test-error": "Kan inte ansluta till databas '''$1''': $2",
        "config-sqlite-dir": "SQLite data-katalog:",
+       "config-sqlite-dir-help": "SQLite lagrar all data i en enda fil.\n\nDen katalog du anger måste vara skrivbar av webbservern under installationen.\n\nDet bör <strong>inte</strong> vara tillgänglig via webben; Det är därför vi inte lägger den där dina PHP-filer är.\n\nInstallationsprogrammet kommer att skriva en <code>.htaccess</code>-fil tillsammans med den, men om det misslyckas kan någon få tillgång till den råa databasen.\nVlken innehåller rå användardata (e-postadresser, hashade lösenord) samt borttagna revideringar och annan begränsad data på wiki.\n\nÖverväga att lägga databasen någon helt annanstans, till exempel i <code>/var/lib/mediawiki/yourwiki</code>.",
+       "config-oracle-def-ts": "Standardtabellutrymme (tablespace):",
+       "config-oracle-temp-ts": "Tillfälligt tabellutrymme (tablespace):",
        "config-type-mysql": "MySQL (eller kompatibelt)",
        "config-type-mssql": "Microsoft SQL Server",
        "config-support-info": "MediaWiki stöder följande databassystem:\n\n$1\n\nOm du inte ser det databassystem som du försöker använda nedanstående, följ då instruktionerna länkade ovan för aktivera stöd för det.",
        "config-dbsupport-mysql": "* [{{int:version-db-mysql-url}} MySQL] är det primära målet för MediaWiki och det stöds bäst. MediaWiki fungerar även med [{{int:version-db-mariadb-url}} MariaDB] och [{{int:version-db-percona-url}} Percona Server], som är kompatibla med MySQL. ([http://www.php.net/manual/en/mysqli.installation.php Hur man kompilerar PHP med stöd för MySQL])",
+       "config-dbsupport-postgres": "* [{{int:version-db-postgres-url}} PostgreSQL] är ett populärt databassystem med öppen källkod som ett alternativ till MySQL. Det kan finnas några mindre kvarvarande buggar, och den rekommenderas inte för användning i en produktionsmiljö. ([http://www.php.net/manual/en/pgsql.installation.php Hur man kompilerar PHP med PostgreSQL stöd])",
+       "config-dbsupport-sqlite": "* [{{int:version-db-sqlite-url}} SQLite] är en lättviktsdatabassystem med väldigt bra stöd. ([http://www.php.net/manual/en/pdo.installation.php Hur man kompilerar PHP med SQLite stöd], använder PDO)",
+       "config-dbsupport-oracle": "* [{{int:version-db-oracle-url}} Oracle] är en kommersiellt databas för företag. ([http://www.php.net/manual/en/oci8.installation.php Hur man kompilerar PHP med OCI8 stöd])",
+       "config-dbsupport-mssql": "* [{{int:version-db-mssql-url}} Microsoft SQL Server] är en kommersiellt databas för företag för Windows. ([http://www.php.net/manual/en/sqlsrv.installation.php Hur man kompilerar PHP med SQLSRV stöd])",
        "config-header-mysql": "MySQL-inställningar",
        "config-header-postgres": "PostgreSQL-inställningar",
        "config-header-sqlite": "SQLite-inställningar",
        "config-missing-db-name": "Du måste ange ett värde för \"{{int:config-db-name}}\".",
        "config-missing-db-host": "Du måste ange ett värde för \"{{int:config-db-host}}\".",
        "config-missing-db-server-oracle": "Du måste ange ett värde för \"{{int:config-db-host-oracle}}\".",
+       "config-invalid-db-server-oracle": "Ogiltig databas-TNS \"$1\".\nAnvända antingen \"TNS Name\" eller en \"Easy Connect\"-sträng ([http://docs.oracle.com/cd/E11882_01/network.112/e10836/naming.htm Oracles namngivningsmetoder]).",
        "config-invalid-db-name": "\"$1\" är ett ogiltigt databasnamn.\nAnvänd bara ASCII-bokstäver (a-z, A-Z), siffror (0-9), understreck (_) och bindestreck (-).",
        "config-invalid-db-prefix": "\"$1\" är ett ogiltigt databasprefix.\nAnvänd bara ASCII-bokstäver (a-z, A-Z), siffror (0-9), understreck (_) och bindestreck (-).",
        "config-connection-error": "$1.\n\nKontrollera värd, användarnamn och lösenord och försök igen.",
        "config-postgres-old": "PostgreSQL $1 eller senare krävs, du har $2.",
        "config-mssql-old": "Microsoft SQL-server $1 eller senare krävs. Du har $2.",
        "config-sqlite-name-help": "Välja ett namn som identifierar din wiki.\nAnvänd inte mellanslag eller bindestreck.\nDetta kommer att användas för SQLite-data filnamnet.",
+       "config-sqlite-parent-unwritable-group": "Kan inte skapa datakatalogen <code><nowiki>$1</nowiki></code>, då den överordnade katalogen <code><nowiki>$2</nowiki></code> inte är skrivbar för webbservern.\n\nInstallationen har avgjort vilken användare din webbserver körs som.\nGör <code><nowiki>$3</nowiki></code>-katalogen skrivbar för den för att fortsätta.\nPå ett Unix/Linux system gör:\n\n<pre>cd $2\nmkdir $3\nchgrp $4 $3\nchmod g+w $3</pre>",
+       "config-sqlite-parent-unwritable-nogroup": "Kan inte skapa datakatalogen <code><nowiki>$1</nowiki></code>, då den överordnade katalogen <code><nowiki>$2</nowiki></code> inte är skrivbar för webbservern.\n\nInstallationen kunde inte avgöra vilken användare din webbserver körs som.\nGör <code><nowiki>$3</nowiki></code>-katalogen skrivbar för den (och andra!) för att fortsätta.\nPå ett Unix/Linux system gör:\n\n<pre>cd $2\nmkdir $3\nchmod g+w $3</pre>",
        "config-sqlite-mkdir-error": "Fel uppstod när datakatalogen \"$1\" skulle skapas.\nKontrollera platsen och försök igen.",
+       "config-sqlite-dir-unwritable": "Kunde inte skriva till katalogen \"$1\".\nÄndra dess behörighet så att webbservern kan skriva till den och försök igen.",
+       "config-sqlite-connection-error": "$1.\n\nKontrollera datakatalogen och databasnamnet nedan och försök igen.",
        "config-sqlite-readonly": "Filen <code>$1</code> är inte skrivbar.",
        "config-sqlite-cant-create-db": "Kunde inte skapa databasfilen <code>$1</code>.",
        "config-sqlite-fts3-downgrade": "PHP saknar stöd för FTS3, nedgraderar tabeller",
        "config-upgrade-done": "Uppgraderingen slutfördes.\n\nDu kan nu [$1 börja använda din wiki].\n\nOm du vill förnya din <code>LocalSettings.php</code>-fil, klicka på knappen nedan.\nDetta '''rekommenderas inte''' om du har problem med din wiki.",
        "config-upgrade-done-no-regenerate": "Uppgraderingen slutfördes.\n\nDu kan nu [$1 börja använda din wiki].",
        "config-regenerate": "Återskapa LocalSettings.php →",
+       "config-show-table-status": "<code>SHOW TABLE STATUS</code>-förfrågan misslyckades!",
        "config-unknown-collation": "'''Varning:''' Databasen använder en okänd sortering.",
        "config-db-web-account": "Databaskonto för webbaccess",
        "config-db-web-help": "Välj det användarnamn och lösenord som webbservern använder för att ansluta till databasservern, under ordinarie drift av wikin.",
        "config-mysql-utf8": "UTF-8",
        "config-mysql-charset-help": "I '''binärt läge''' lagrar MediaWiki UTF-8 text till databasen i binära fält.\nDetta är mer effektivt än MySQLs UTF-8-läge, och den tillåter dig att använda den fulla uppsättningen av Unicode-tecken.\n\nI '''UTF-8-läge''' vet MySQL vilket teckenuppsättning din data är i och kan presentera och konvertera den på ett lämpligt sätt, men den tillåter dig inte att lagra tecken över [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane].",
        "config-mssql-auth": "Autentiseringstyp:",
+       "config-mssql-install-auth": "Välj autentiseringstypen som kommer att användas för att ansluta till databasen under installationsprocessen.\nOm du väljer \"{{int:config-mssql-windowsauth}}\", kommer autentiseringsuppgifterna för den användare webbservern körs som att användas.",
+       "config-mssql-web-auth": "Välj autentiseringstypen som kommer att användas för att ansluta till databasen under ordinarie drift av wikin.\nOm du väljer \"{{int:config-mssql-windowsauth}}\", kommer autentiseringsuppgifterna för den användare webbservern körs som att användas.",
        "config-mssql-sqlauth": "SQL Server-autentisering",
        "config-mssql-windowsauth": "Windows-autentisering",
        "config-site-name": "Namnet på wikin:",
        "config-ns-site-name": "Samma som wikinamnet: $1",
        "config-ns-other": "Annan (specificera)",
        "config-ns-other-default": "MinWiki",
+       "config-project-namespace-help": "Per Wikipedias exempel håller många wikis sina policy-sidor separata från innehållssidorna i en \"'''projektnamnrymd'''\".\nAlla sidtitlar i denna namnrymd startar med ett visst prefix vilket du specificerar här.\nVanligtvis kan detta namn härledas från namnet på wikin, men den får inte innehålla interpunktionstecken som exempelvis \"#\" eller \":\".",
        "config-ns-invalid": "Den angivna namnrymden \"<nowiki>$1</nowiki>\" är ogiltig.\nAnge en annan namnrymd för projektet.",
        "config-ns-conflict": "Den angivna namnrymden \"<nowiki>$1</nowiki>\" står i konflikt med en standardnamnrymd för MediaWiki.\nAnge en annan namnrymd för projektet.",
        "config-admin-box": "Administratörskonto",
        "config-admin-error-password": "Internt fel lösenordet för administratören \"<nowiki>$1</nowiki>\" ställdes in: <pre>$2</pre>",
        "config-admin-error-bademail": "Du har angivit en ogiltig e-postadress.",
        "config-subscribe": "Prenumerera på [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce e-postlistan för kungörelser av nya versioner].",
+       "config-subscribe-help": "Detta är en e-postlista med låg volym vilken används för meddelanden om nya versionssläpp, inklusive viktiga säkerhetsmeddelanden.\nDu bör prenumerera på den och uppdatera din MediaWiki-installation när nya versioner kommer ut.",
+       "config-subscribe-noemail": "Du försökte att prenumerera på e-postlistan för versionssläppsmeddelanden utan att tillhandahålla en e-postadress.\nAnge en e-postadress om du vill prenumerera på e-postlistan.",
        "config-almost-done": "Du är nästan färdig!\nDu kan nu hoppa över återstående konfigurationer och installera wikin direkt.",
        "config-optional-continue": "Ställ fler frågor till mig.",
        "config-optional-skip": "Jag är redan uttråkad, bara installera wiki.",
+       "config-profile": "Profil för användarrättigheter:",
        "config-profile-wiki": "Öppen wiki",
        "config-profile-no-anon": "Kontoskapande krävs",
        "config-profile-fishbowl": "Endast auktoriserade redigerare",
        "config-profile-private": "Privat wiki",
+       "config-profile-help": "Wikis fungerar bäst när du låter som många människor som möjligt redigera dem.\nI MediaWiki, är det lätt att granska de senaste ändringarna och återställa alla skador som utförs av naiva eller illvilliga användare.\n\nMen många har funnit MediaWiki användbart i en mängd olika roller, och ibland är det inte lätt att övertyga alla fördelarna med wiki-sättet.\nSå valet är ditt.\n\nModellen <strong>{{int:config-profil-wiki}}</strong> tillåter vem som helst att redigera, utan att ens behöva logga in.\nEn wiki med <strong>{{int:config-profil-ingen-anon}}</strong> ger extra ansvarskänsla, men kan avskräcka tillfälliga bidragsgivare.\n\nScenariot <strong>{{int:config-profil-fishbowl}}</strong> tillåter godkända användare att redigera, men allmänheten kan se sidorna, inklusive historik.\nA <strong>{{int:config-profil-privat}}</strong> tillåter endast godkända användare att se sidor, samma grupp får även redigera.\n\nMer komplexa användarrättighetskonfigurationer finns tillgängliga efter installationen, se [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights avsnittet i manualen].",
        "config-license": "Upphovsrätt och licens:",
        "config-license-none": "Ingen licenssidfot",
        "config-license-cc-by-sa": "Creative Commons Erkännande-DelaLika",
        "config-license-gfdl": "GNU Free Documentation License 1.3 eller senare",
        "config-license-pd": "Public Domain",
        "config-license-cc-choose": "Välj en anpassad Creative Commons-licens",
+       "config-license-help": "Många publika wikis släpper alla bidrag under en  [http://freedomdefined.org/Definition fri licens].\nDetta bidrar till en känsla av gemensamt ägandeskap och uppmuntrar till långsiktiga bidrag.\nDet är i allmänhet inte nödvändigt för en privat eller företagswiki.\n\nOm du vill kunna använda text från Wikipedia, och du vill att Wikipedia ska kunna acceptera text kopierad ifrån din wiki bör du välja <strong>Creative Commons Erkännande-DelaLika</strong>.\n\nWikipedia använde tidigare  GNU Free Documentation License.\nGFDL är en giltig licens, men svår att förstå.\nDet är även svårt att återanvända innehåll som licensierats under GFDL.",
        "config-email-settings": "E-postinställningar",
        "config-enable-email": "Aktivera utgående e-post",
+       "config-enable-email-help": "Om du vill att e-post ska fungera behöver,[http://www.php.net/manual/en/mail.configuration.php PHPs e-postinställningar] vara konfigurerad på rätt sätt.\nOm du inte vill ha några e-postfunktioner, kan du inaktivera dem här.",
        "config-email-user": "Aktivera e-post mellan användare",
        "config-email-user-help": "Tillåta alla användare att skicka e-post till varandra om de har aktiverat det i sina inställningar.",
        "config-email-usertalk": "Aktivera meddelanden för användardiskussionssidor",
+       "config-email-usertalk-help": "Tillåt användare att få meddelanden när användardiskussionssidor ändras, om de har aktiverat detta i sina inställningar.",
        "config-email-watchlist": "Aktivera meddelanden för bevakningslistan",
+       "config-email-watchlist-help": "Tillåt användare att få meddelanden när deras bevakade sidor ändras, om de har aktiverat detta i sina inställningar.",
        "config-email-auth": "Aktivera autentisering via e-post",
+       "config-email-auth-help": "Om detta alternativ är aktiverat, måste användare bekräfta sin e-postadress via en länk som skickas till dem när de ställer in eller ändra den.\nEndast autentiserade e-postadresser kan ta emot e-post från andra användare eller ändra aviserings-e-post.\nDet här alternativet är <strong>rekommenderat</strong> för offentliga wikis på grund av potentiellt missbruk av e-postfunktionerna.",
+       "config-email-sender": "Returadress för e-post:",
+       "config-email-sender-help": "Ange den e-postadressen som ska användas som returadress på utgående e-post.\nDetta är dit studsar skickas.\nMånga mailservrar kräver att minst domännamndelen är giltigt.",
        "config-upload-settings": "Bild- och filuppladdningar",
        "config-upload-enable": "Aktivera filuppladdningar",
+       "config-upload-help": "Filuppladdning utsätter potentiellt din server för säkerhetsrisker.\nFör mer information, Läs  [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security säkerhetsavsnittet] i manualen.\n\nFör att aktivera filuppladdning, ändra läget för <code>images</code>-underkatalogen under rotkatalogen för MediaWiki så att webbservern kan skriva till den.\nAktivera sedan detta alternativ.",
        "config-upload-deleted": "Katalog för raderade filer:",
+       "config-upload-deleted-help": "Välja en katalog i vilken raderade filer arkiveras.\nHelst bör denna inte vara tillgängliga från webben.",
        "config-logo": "Logotyp-URL:",
        "config-logo-help": "MediaWikis standardutseende innehåller ett mellanrum för en 135x160 bildpunkter stor logotyp ovanför sidofältsmenyn.\nLadda upp en bild med lämplig storlek och ange webbadressen här.\n\nDu kan använda <code>$wgStylePath</code> eller <code>$wgScriptPath</code> om din logotyp är relativ till dessa sökvägar.\n\nOm du inte vill ha en logotyp kan du lämna detta fält tomt.",
        "config-instantcommons": "Aktivera Instant Commons",
+       "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-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.",
+       "config-cache-none": "Ingen cachelagring (ingen funktionalitet tas bort, men hastighet kan påverkas på större wiki-webbplatser)",
+       "config-cache-accel": "Cachelagring av PHP-objekt (APC, XCache eller WinCache)",
+       "config-cache-memcached": "Använda Memcached (kräver ytterligare inställningar och konfiguration)",
+       "config-memcached-servers": "Memcached-servrar:",
+       "config-memcached-help": "Lista över IP-adresser som ska användas för Memcached.\nBör ange en per rad och specificera den port som ska användas. Till exempel:\n 127.0.0.1:11211\n 192.168.1.25:1234",
+       "config-memcache-needservers": "Du valde Memcached som din cachelagringstyp men angav inte några servrar.",
+       "config-memcache-badip": "Du har angett en ogiltig IP-adress för Memcached: $1.",
+       "config-memcache-noport": "Du angav inte en port som ska användas för Memcached-server: $1.\nOm du inte vet porten, är standard 11211.",
+       "config-memcache-badport": "Memcached-portnummer bör vara mellan $1 och $2.",
        "config-extensions": "Tillägg",
+       "config-extensions-help": "Tilläggen ovan upptäcktes i din <code>./extensions</code>-katalog.\n\nDe kan kräva ytterligare konfiguration, men du kan aktivera dem nu.",
        "config-install-alreadydone": "''' Varning:''' Du verkar redan ha installerat MediaWiki och försöker installera det igen.\nVänligen fortsätt till nästa sida.",
        "config-install-begin": "Genom att trycka på \"{{int:config-continue}}\", påbörjar du installationen av MediaWiki.\nOm du fortfarande vill göra ändringar tryck på \"{{int:config-back}}\".",
        "config-install-step-done": "klar",
        "config-install-pg-plpgsql": "Kontroll för språket PL/pgSQL",
        "config-pg-no-plpgsql": "Du måste installera språket PL/pgSQL i databasen $1",
        "config-pg-no-create-privs": "Det konto som du har angett för installationen har inte tillräcklig behörighet för att skapa ett konto.",
+       "config-pg-not-in-role": "Det konto du angav för webbanvändaren finns redan.\nKontot du angav för installationen är inte en superanvändare (superuser) och är inte en medlem av webbanvändarens roll, därför kan den inte skapa objekt som ägs av webbanvändaren.\n\nMediaWiki kräver för närvarande att tabellerna ägs av webbanvändaren. Vänligen ange ett annat webbkontonamn, eller klicka \"tillbaka\" och ange en installationsanvändare med passande behörigheter.",
        "config-install-user": "Skapar databasanvändare",
        "config-install-user-alreadyexists": "Användaren \"$1\" finns redan",
        "config-install-user-create-failed": "Misslyckades att skapa användare \"$1\": $2",
        "config-install-tables-failed": "'''Fel:''' Skapandet av tabell misslyckades med följande fel: $1",
        "config-install-interwiki": "Lägger till standardtabell för interwiki",
        "config-install-interwiki-list": "Kunde inte läsa filen <code>interwiki.list</code>.",
+       "config-install-interwiki-exists": "<strong>Varning:</strong> Interwiki-tabellen verkar redan innehålla poster.\nHoppar över standardlistan.",
        "config-install-stats": "Initierar statistik",
        "config-install-keys": "Genererar hemliga nycklar",
        "config-insecure-keys": "'''Varning:''' {{PLURAL:$2|En säkerhetsnyckel|Säkerhetsnycklar}} ($1) som generades under installationen är inte helt {{PLURAL:$2|säker|säkra}} . Överväg att ändra {{PLURAL:$2|den|dem}} manuellt.",
diff --git a/includes/installer/i18n/tyv.json b/includes/installer/i18n/tyv.json
new file mode 100644 (file)
index 0000000..1652bcf
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Agilight"
+               ]
+       },
+       "config-page-welcome": "MediaWiki-же кирип моорлаңар!"
+}
index f04fd5d..47749b7 100644 (file)
@@ -8,6 +8,7 @@
        "config-desc": "דער אינסטאלירער פאר מעדיעוויקי",
        "config-title": "מעדיעוויקי $1 אינסטאלירונג",
        "config-information": "אינפֿארמאציע",
+       "config-localsettings-badkey": "דעם שליסל וואס איר האט אײַנגעגעבן איז פאלש.",
        "config-session-error": "פֿעלער ביים אנהייבן סעסיע:$1",
        "config-your-language": "אײַער שפראך:",
        "config-your-language-help": "קלויבט א שפראך צו ניצן ביים אינסטאלירונג פראצעס.",
@@ -29,6 +30,9 @@
        "config-page-releasenotes": "ווערסיע־הערות",
        "config-page-copying": "קאפיע",
        "config-page-upgradedoc": "ראנג־העכערן",
+       "config-page-existingwiki": "עקזיסטירנדע וויקי",
+       "config-help-restart": "צי ווילט איר אפראמען די גארע געשפייכלערטע דאטן וואס איר האט אײַנגעגעבן און ווידער אנהייבן דעם אינסטאלאציע־פראצעס?",
+       "config-restart": "יא, ווידעראמאל אנהייבן",
        "config-env-php": "PHP $1 איז אינצטאלירט.",
        "config-apc": "[http://www.php.net/apc APC] איז אינסטאלירט",
        "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] איז אינסטאלירט",
index fcb7a3e..6f67613 100644 (file)
@@ -19,7 +19,8 @@
                        "Qiyue2001",
                        "Kuailong",
                        "Zjzengdongyang",
-                       "Mywood"
+                       "Mywood",
+                       "Impersonator 1"
                ]
        },
        "config-desc": "MediaWiki安装程序",
@@ -72,7 +73,6 @@
        "config-no-db": "找不到合适的数据库驱动!您需要为PHP安装数据库驱动。目前支持以下数据库:$1。如果您是自己编译的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-register-globals": "'''警告:PHP的<code>[http://php.net/register_globals register_globals]</code>选项被启用。请尽量禁用该功能,'''虽然不会影响MediaWiki的运行,但您的服务器会被暴露给潜在的安全漏洞。",
        "config-magic-quotes-runtime": "'''毁灭性错误:[http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime]已启用!'''\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-license-gfdl": "GNU自由文档许可证1.3或更高版本",
        "config-license-pd": "公有领域",
        "config-license-cc-choose": "选择自定义的知识共享许可证",
-       "config-license-help": "许多公共wiki会以[http://freedomdefined.org/Definition 自由许可证]的方式释放出编者的所有贡献。这有助于构建社区的主人翁意识,并能鼓励长期贡献。对于非公共wiki或公司wiki,这并非必要条件。\n\n如果您希望使用来自维基百科的内容,并希望维基百科能接受复制自您的wiki的内容,请选择'''知识共享署名-相同方式共享'''。\n\nGNU自由文档许可证是维基百科曾经使用过的许可证,并迄今有效。然而,该许可证难以理解,并会增加重用内容的难度。",
+       "config-license-help": "许多公共wiki会以[http://freedomdefined.org/Definition 自由许可证]的方式释放出编者的所有贡献。这有助于构建社区的主人翁意识,并能鼓励长期贡献。对于非公共wiki或公司wiki,这并非必要条件。\n\n如果您希望使用来自维基百科的内容,并希望维基百科能接受复制自您的wiki的内容,您应当选择<strong>知识共享-署名-相同方式共享</strong>。\n\nGNU自由文档许可证是维基百科曾经使用过的许可证,并迄今有效。然而,该许可证难以理解,并会增加重用内容的难度。",
        "config-email-settings": "电子邮件设置",
        "config-enable-email": "启用出站电子邮件",
        "config-enable-email-help": "如果您希望使用电子邮件功能,请正确配置[http://www.php.net/manual/en/mail.configuration.php PHP的邮件设定]。如果您不需要任何电子邮件功能,请在此处禁用它。",
index 6739a84..088f447 100644 (file)
@@ -313,7 +313,7 @@ LUA;
                                } else {
                                        $blob = $this->popAndDeleteBlob( $conn );
                                }
-                               if ( $blob === false ) {
+                               if ( !is_string( $blob ) ) {
                                        break; // no jobs; nothing to do
                                }
 
@@ -703,6 +703,7 @@ LUA;
                                $count += $released + $pruned + $undelayed;
                                JobQueue::incrStats( 'job-recycle', $this->type, $released, $this->wiki );
                                JobQueue::incrStats( 'job-abandon', $this->type, $abandoned, $this->wiki );
+                               JobQueue::incrStats( 'job-undelay', $this->type, $undelayed, $this->wiki );
                        }
                } catch ( RedisException $e ) {
                        $this->throwRedisException( $conn, $e );
index 10277e6..6b10ae4 100644 (file)
@@ -40,6 +40,7 @@ class CSSMin {
        const EMBED_SIZE_LIMIT = 24576;
        const URL_REGEX = 'url\(\s*[\'"]?(?P<file>[^\?\)\'"]*?)(?P<query>\?[^\)\'"]*?|)[\'"]?\s*\)';
        const EMBED_REGEX = '\/\*\s*\@embed\s*\*\/';
+       const COMMENT_REGEX = '\/\*.*?\*\/';
 
        /* Protected Static Members */
 
@@ -203,13 +204,31 @@ class CSSMin {
                        $remote = substr( $remote, 0, -1 );
                }
 
+               // Replace all comments by a placeholder so they will not interfere
+               // with the remapping
+               // Warning: This will also catch on anything looking like the start of
+               // a comment between quotation marks (e.g. "foo /* bar").
+               $comments = array();
+               $placeholder = uniqid( '', true );
+
+               $pattern = '/(?!' . CSSMin::EMBED_REGEX . ')(' . CSSMin::COMMENT_REGEX . ')/s';
+
+               $source = preg_replace_callback(
+                       $pattern,
+                       function ( $match ) use ( &$comments, $placeholder ) {
+                               $comments[] = $match[ 0 ];
+                               return $placeholder . ( count( $comments ) - 1 ) . 'x';
+                       },
+                       $source
+               );
+
                // Note: This will not correctly handle cases where ';', '{' or '}'
                // appears in the rule itself, e.g. in a quoted string. You are advised
                // not to use such characters in file names. We also match start/end of
                // the string to be consistent in edge-cases ('@import url(…)').
                $pattern = '/(?:^|[;{])\K[^;{}]*' . CSSMin::URL_REGEX . '[^;}]*(?=[;}]|$)/';
 
-               return preg_replace_callback(
+               $source = preg_replace_callback(
                        $pattern,
                        function ( $matchOuter ) use ( $local, $remote, $embedData ) {
                                $rule = $matchOuter[0];
@@ -262,6 +281,15 @@ class CSSMin {
                                        return $ruleWithRemapped;
                                }
                        }, $source );
+
+               // Re-insert comments
+               $pattern = '/' . $placeholder . '(\d+)x/';
+               $source = preg_replace_callback( $pattern, function( $match ) use ( &$comments ) {
+                       return $comments[ $match[1] ];
+               }, $source );
+
+               return $source;
+
        }
 
        /**
index df99098..2022b22 100644 (file)
@@ -198,7 +198,7 @@ class HashRing {
                        }
                }
                if ( !$this->liveRing ) {
-                       throw UnexpectedValueException( "The live ring is currently empty." );
+                       throw new UnexpectedValueException( "The live ring is currently empty." );
                }
 
                return $this->liveRing;
index d72ffca..809bfdf 100644 (file)
@@ -28,8 +28,6 @@ class HttpStatus {
        /**
         * Get the message associated with HTTP response code $code
         *
-        * Replace OutputPage::getStatusMessage( $code )
-        *
         * @param $code Integer: status code
         * @return String or null: message or null if $code is not in the list of
         *         messages
index fda9a20..4ce8070 100644 (file)
@@ -68,25 +68,6 @@ class LogEventsList extends ContextSource {
                return $this->getTitle();
        }
 
-       /**
-        * Set page title and show header for this log type
-        * @param array $type
-        * @deprecated since 1.19
-        */
-       public function showHeader( $type ) {
-               wfDeprecated( __METHOD__, '1.19' );
-               // If only one log type is used, then show a special message...
-               $headerType = count( $type ) == 1 ? $type[0] : '';
-               $out = $this->getOutput();
-               if ( LogPage::isLogType( $headerType ) ) {
-                       $page = new LogPage( $headerType );
-                       $out->setPageTitle( $page->getName()->text() );
-                       $out->addHTML( $page->getDescription()->parseAsBlock() );
-               } else {
-                       $out->addHTML( $this->msg( 'alllogstext' )->parse() );
-               }
-       }
-
        /**
         * Show options for the log list
         *
diff --git a/includes/logging/PageLangLogFormatter.php b/includes/logging/PageLangLogFormatter.php
new file mode 100644 (file)
index 0000000..694fa7f
--- /dev/null
@@ -0,0 +1,61 @@
+<?php
+/**
+ * Formatter for changelang log entries.
+ *
+ * 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 Kunal Grover
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ * @since 1.24
+ */
+
+/**
+ * This class formats language change log entries.
+ *
+ * @since 1.24
+ */
+class PageLangLogFormatter extends LogFormatter {
+       protected function getMessageParameters() {
+               // Get the user language for displaying language names
+               $userLang = $this->context->getLanguage()->getCode();
+               $params = parent::getMessageParameters();
+
+               // Get the language codes from log
+               $oldLang = $params[3];
+               $kOld = strrpos( $oldLang, '[' );
+               if ( $kOld ) {
+                       $oldLang = substr( $oldLang, 0, $kOld );
+               }
+
+               $newLang = $params[4];
+               $kNew = strrpos( $newLang, '[' );
+               if ( $kNew ) {
+                       $newLang = substr( $newLang, 0, $kNew );
+               }
+
+               // Convert language codes to names in user language
+               $logOld = Language::fetchLanguageName( $oldLang, $userLang )
+                       . ' (' . $oldLang . ')';
+               $logNew = Language::fetchLanguageName( $newLang, $userLang )
+                       . ' (' . $newLang . ')';
+
+               // Add the default message to languages if required
+               $params[3] = !$kOld ? $logOld : $logOld . ' [' . $this->msg( 'default' ) . ']';
+               $params[4] = !$kNew ? $logNew : $logNew . ' [' . $this->msg( 'default' ) . ']';
+               return $params;
+       }
+}
index bcef433..4f2a565 100644 (file)
@@ -30,7 +30,7 @@ class PatrolLog {
        /**
         * Record a log event for a change being patrolled
         *
-        * @param mixed $rc Change identifier or RecentChange object
+        * @param int|RecentChange $rc Change identifier or RecentChange object
         * @param bool $auto Was this patrol event automatic?
         * @param User $user User performing the action or null to use $wgUser
         *
index 44be178..9a3e927 100644 (file)
@@ -117,6 +117,7 @@ class BitmapHandler extends ImageHandler {
                if ( !$this->normaliseParams( $image, $params ) ) {
                        return new TransformParameterError( $params );
                }
+
                # Create a parameter array to pass to the scaler
                $scalerParams = array(
                        # The size to which the image will be resized
@@ -187,7 +188,12 @@ class BitmapHandler extends ImageHandler {
                }
 
                # Transform functions and binaries need a FS source file
-               $scalerParams['srcPath'] = $image->getLocalRefPath();
+               $thumbnailSource = $image->getThumbnailSource( $params );
+
+               $scalerParams['srcPath'] = $thumbnailSource['path'];
+               $scalerParams['srcWidth'] = $thumbnailSource['width'];
+               $scalerParams['srcHeight'] = $thumbnailSource['height'];
+
                if ( $scalerParams['srcPath'] === false ) { // Failed to get local copy
                        wfDebugLog( 'thumbnail',
                                sprintf( 'Thumbnail failed on %s: could not get local copy of "%s"',
@@ -354,7 +360,30 @@ class BitmapHandler extends ImageHandler {
                                }
                        }
                } elseif ( $params['mimeType'] == 'image/x-xcf' ) {
-                       $animation_post = array( '-layers', 'merge' );
+                       // Before merging layers, we need to set the background
+                       // to be transparent to preserve alpha, as -layers merge
+                       // merges all layers on to a canvas filled with the
+                       // background colour. After merging we reset the background
+                       // to be white for the default background colour setting
+                       // in the PNG image (which is used in old IE)
+                       $animation_post = array(
+                               '-background', 'transparent',
+                               '-layers', 'merge',
+                               '-background', 'white',
+                       );
+                       wfSuppressWarnings();
+                       $xcfMeta = unserialize( $image->getMetadata() );
+                       wfRestoreWarnings();
+                       if ( $xcfMeta
+                               && isset( $xcfMeta['colorType'] )
+                               && $xcfMeta['colorType'] === 'greyscale-alpha'
+                               && version_compare( $this->getMagickVersion(), "6.8.9-3" ) < 0
+                       ) {
+                               // bug 66323 - Greyscale images not rendered properly.
+                               // So only take the "red" channel.
+                               $channelOnly = array( '-channel', 'R', '-separate' );
+                               $animation_post = array_merge( $animation_post, $channelOnly );
+                       }
                }
 
                // Use one thread only, to avoid deadlock bugs on OOM
@@ -845,7 +874,7 @@ class BitmapHandler extends ImageHandler {
        }
 
        /**
-        * Rerurns whether the file needs to be rendered. Returns true if the
+        * Returns whether the file needs to be rendered. Returns true if the
         * file requires rotation and we are able to rotate it.
         *
         * @param File $file
index fca1c6d..4200541 100644 (file)
@@ -1302,7 +1302,6 @@ class FormatMetadata extends ContextSource {
         * @param int $a Numerator
         * @param int $b Denominator
         * @return int
-        * @private
         */
        private function gcd( $a, $b ) {
                /*
@@ -1871,29 +1870,3 @@ class FormatMetadata extends ContextSource {
                return $priorityLanguages;
        }
 }
-
-/** For compatability with old FormatExif class
- * which some extensions use.
- *
- * @deprecated since 1.18
- *
- */
-class FormatExif {
-       /** @var array */
-       private $meta;
-
-       /**
-        * @param array $meta
-        */
-       function __construct( $meta ) {
-               wfDeprecated( __METHOD__, '1.18' );
-               $this->meta = $meta;
-       }
-
-       /**
-        * @return array
-        */
-       function getFormattedData() {
-               return FormatMetadata::getFormattedData( $this->meta );
-       }
-}
index 8a12e7e..6dd0453 100644 (file)
@@ -269,4 +269,20 @@ abstract class ImageHandler extends MediaHandler {
                                ->numParams( $file->getWidth(), $file->getHeight() )->text();
                }
        }
+
+       public function sanitizeParamsForBucketing( $params ) {
+               $params = parent::sanitizeParamsForBucketing( $params );
+
+               // We unset the height parameters in order to let normaliseParams recalculate them
+               // Otherwise there might be a height discrepancy
+               if ( isset( $params['height'] ) ) {
+                       unset( $params['height'] );
+               }
+
+               if ( isset( $params['physicalHeight'] ) ) {
+                       unset( $params['physicalHeight'] );
+               }
+
+               return $params;
+       }
 }
index a0f7acb..918d4ae 100644 (file)
@@ -158,4 +158,19 @@ class JpegHandler extends ExifBitmapHandler {
                        return parent::rotate( $file, $params );
                }
        }
+
+       public function supportsBucketing() {
+               return true;
+       }
+
+       public function sanitizeParamsForBucketing( $params ) {
+               $params = parent::sanitizeParamsForBucketing( $params );
+
+               // Quality needs to be cleared for bucketing. Buckets need to be default quality
+               if ( isset( $params['quality'] ) ) {
+                       unset( $params['quality'] );
+               }
+
+               return $params;
+       }
 }
index f6717cd..c4aab7b 100644 (file)
@@ -831,4 +831,24 @@ abstract class MediaHandler {
        public function isExpensiveToThumbnail( $file ) {
                return false;
        }
+
+       /**
+        * Returns whether or not this handler supports the chained generation of thumbnails according
+        * to buckets
+        * @return boolean
+        * @since  1.24
+        */
+       public function supportsBucketing() {
+               return false;
+       }
+
+       /**
+        * Returns a normalised params array for which parameters have been cleaned up for bucketing
+        * purposes
+        * @param array $params
+        * @return array
+        */
+       public function sanitizeParamsForBucketing( $params ) {
+               return $params;
+       }
 }
index 968db10..d879c12 100644 (file)
@@ -173,4 +173,8 @@ class PNGHandler extends BitmapHandler {
 
                return $wgLang->commaList( $info );
        }
+
+       public function supportsBucketing() {
+               return true;
+       }
 }
index 41e6f03..b303a01 100644 (file)
@@ -61,7 +61,28 @@ class XCFHandler extends BitmapHandler {
         * @return array
         */
        function getImageSize( $image, $filename ) {
-               return self::getXCFMetaData( $filename );
+               $header = self::getXCFMetaData( $filename );
+               if ( !$header ) {
+                       return false;
+               }
+
+               # Forge a return array containing metadata information just like getimagesize()
+               # See PHP documentation at: http://www.php.net/getimagesize
+               $metadata = array();
+               $metadata[0] = $header['width'];
+               $metadata[1] = $header['height'];
+               $metadata[2] = null; # IMAGETYPE constant, none exist for XCF.
+               $metadata[3] = sprintf(
+                       'height="%s" width="%s"', $header['height'], $header['width']
+               );
+               $metadata['mime'] = 'image/x-xcf';
+               $metadata['channels'] = null;
+               $metadata['bits'] = 8; # Always 8-bits per color
+
+               assert( '7 == count($metadata); ' .
+                       '# return array must contains 7 elements just like getimagesize() return' );
+
+               return $metadata;
        }
 
        /**
@@ -124,23 +145,61 @@ class XCFHandler extends BitmapHandler {
                wfDebug( __METHOD__ .
                        ": canvas size of '$filename' is {$header['width']} x {$header['height']} px\n" );
 
-               # Forge a return array containing metadata information just like getimagesize()
-               # See PHP documentation at: http://www.php.net/getimagesize
+               return $header;
+       }
+
+       /**
+        * Store the channel type
+        *
+        * Greyscale files need different command line options.
+        *
+        * @param File $file The image object, or false if there isn't one.
+        *   Warning, FSFile::getPropsFromPath might pass an (object)array() instead (!)
+        * @param string $path The filename
+        * @return string
+        */
+       public function getMetadata( $file, $filename ) {
+               $header = self::getXCFMetadata( $filename );
                $metadata = array();
-               $metadata[0] = $header['width'];
-               $metadata[1] = $header['height'];
-               $metadata[2] = null; # IMAGETYPE constant, none exist for XCF.
-               $metadata[3] = sprintf(
-                       'height="%s" width="%s"', $header['height'], $header['width']
-               );
-               $metadata['mime'] = 'image/x-xcf';
-               $metadata['channels'] = null;
-               $metadata['bits'] = 8; # Always 8-bits per color
+               if ( $header ) {
+                       // Try to be consistent with the names used by PNG files.
+                       // Unclear from base media type if it has an alpha layer,
+                       // so just assume that it does since it "potentially" could.
+                       switch( $header['base_type'] ) {
+                       case 0:
+                               $metadata['colorType'] = 'truecolour-alpha';
+                               break;
+                       case 1:
+                               $metadata['colorType'] = 'greyscale-alpha';
+                               break;
+                       case 2:
+                               $metadata['colorType'] = 'index-coloured';
+                               break;
+                       default:
+                               $metadata['colorType'] = 'unknown';
 
-               assert( '7 == count($metadata); ' .
-                       '# return array must contains 7 elements just like getimagesize() return' );
+                       }
+               } else {
+                       // Marker to prevent repeated attempted extraction
+                       $metadata['error'] = true;
+               }
+               return serialize( $metadata );
+       }
 
-               return $metadata;
+       /**
+        * Should we refresh the metadata
+        *
+        * @param File $file The file object for the file in question
+        * @param string $metadata Serialized metadata
+        * @return bool One of the self::METADATA_(BAD|GOOD|COMPATIBLE) constants
+        */
+       public function isMetadataValid( $file, $metadata ) {
+               if ( !$metadata ) {
+                       // Old metadata when we just put an empty string in there
+                       return self::METADATA_BAD;
+               } else {
+                       return self::METADATA_GOOD;
+               }
        }
 
        /**
@@ -153,4 +212,20 @@ class XCFHandler extends BitmapHandler {
        protected static function getScalerType( $dstPath, $checkDstPath = true ) {
                return "im";
        }
+
+       /**
+        * Can we render this file?
+        *
+        * Image magick doesn't support indexed xcf files as of current
+        * writing (as of 6.8.9-3)
+        */
+       public function canRender( $file ) {
+               wfSuppressWarnings();
+               $xcfMeta = unserialize( $file->getMetadata() );
+               wfRestoreWarnings();
+               if ( isset( $xcfMeta['colorType'] ) && $xcfMeta['colorType'] === 'index-coloured' ) {
+                       return false;
+               }
+               return parent::canRender( $file );
+       }
 }
index 55d5319..a74b701 100644 (file)
@@ -23,7 +23,7 @@
 
 /**
  * Class for reading xmp data containing properties relevant to
- * images, and spitting out an array that FormatExif accepts.
+ * images, and spitting out an array that FormatMetadata accepts.
  *
  * Note, this is not meant to recognize every possible thing you can
  * encode in XMP. It should recognize all the properties we want.
index c798187..7a4de3b 100644 (file)
@@ -65,6 +65,9 @@ text/plain    [TEXT]
 text/html application/xhtml+xml        [TEXT]
 application/xml text/xml       [TEXT]
 text   [TEXT]
+application/json       [TEXT]
+text/csv       [TEXT]
+text/tab-separated-values      [TEXT]
 
 application/zip application/x-zip      [ARCHIVE]
 application/x-gzip     [ARCHIVE]
@@ -108,3 +111,8 @@ application/vnd.ms-excel.template.macroEnabled.12                           [OFFICE]
 application/vnd.ms-excel.addin.macroEnabled.12                                 [OFFICE]
 application/vnd.ms-excel.sheet.binary.macroEnabled.12                          [OFFICE]
 application/acad application/x-acad application/autocad_dwg image/x-dwg application/dwg application/x-dwg application/x-autocad image/vnd.dwg drawing/dwg [DRAWING]
+chemical/x-mdl-molfile     [DRAWING]
+chemical/x-mdl-sdfile      [DRAWING]
+chemical/x-mdl-rxnfile     [DRAWING]
+chemical/x-mdl-rdfile      [DRAWING]
+chemical/x-mdl-rgfile      [DRAWING]
index 61f7ff5..ae6ca4d 100644 (file)
@@ -35,6 +35,7 @@ application/x-gzip gz
 application/x-hdf hdf
 application/x-jar jar
 application/x-javascript js
+application/json json
 application/x-koan skp skd skt skm
 application/x-latex latex
 application/x-netcdf nc cdf
@@ -109,6 +110,7 @@ model/mesh msh mesh silo
 model/vrml wrl vrml
 text/calendar ics ifb
 text/css css
+text/csv csv
 text/html html htm
 text/plain txt
 text/richtext rtx
@@ -169,3 +171,8 @@ application/vnd.ms-excel.sheet.binary.macroEnabled.12 xlsb
 model/vnd.dwfx+xps dwfx
 application/vnd.ms-xpsdocument xps
 application/x-opc+zip docx dotx docm dotm potx ppsx pptx ppam pptm potm ppsm xlsx xltx xlsm xltm xlam xlsb dwfx xps
+chemical/x-mdl-molfile mol
+chemical/x-mdl-sdfile sdf
+chemical/x-mdl-rxnfile rxn
+chemical/x-mdl-rdfile rd
+chemical/x-mdl-rgfile rg
index 56f1be2..dca5f32 100644 (file)
@@ -338,7 +338,7 @@ abstract class BagOStuff {
         */
        public function incrWithInit( $key, $ttl, $value = 1, $init = 1 ) {
                return $this->incr( $key, $value ) ||
-                       $this->add( $key, $init, $ttl ) || $this->incr( $key, $value );
+                       $this->add( $key, (int)$init, $ttl ) || $this->incr( $key, $value );
        }
 
        /**
index e770b73..c7d2f13 100644 (file)
@@ -298,9 +298,9 @@ class RedisBagOStuff extends BagOStuff {
         * command. But we are constrained by the memcached-like interface to
         * return null in that case. Once the key exists, further increments are
         * atomic.
-        * @param string $key
-        * @param int $value
-        * @param bool|mixed
+        * @param string $key Key to increase
+        * @param int $value Value to add to $key (Default 1)
+        * @return int|bool New value or false on failure
         */
        public function incr( $key, $value = 1 ) {
                $section = new ProfileSection( __METHOD__ );
@@ -313,7 +313,7 @@ class RedisBagOStuff extends BagOStuff {
                        return null;
                }
                try {
-                       $result = $this->unserialize( $conn->incrBy( $key, $value ) );
+                       $result = $conn->incrBy( $key, $value );
                } catch ( RedisException $e ) {
                        $result = false;
                        $this->handleException( $conn, $e );
@@ -322,14 +322,14 @@ class RedisBagOStuff extends BagOStuff {
                $this->logRequest( 'incr', $key, $server, $result );
                return $result;
        }
-
        /**
         * @param mixed $data
         * @return string
         */
        protected function serialize( $data ) {
-               // Ignore digit strings and ints so INCR/DECR work
-               return ( is_int( $data ) || ctype_digit( $data ) ) ? $data : serialize( $data );
+               // Serialize anything but integers so INCR/DECR work
+               // Do not store integer-like strings as integers to avoid type confusion (bug 60563)
+               return is_int( $data ) ? $data : serialize( $data );
        }
 
        /**
@@ -337,8 +337,7 @@ class RedisBagOStuff extends BagOStuff {
         * @return mixed
         */
        protected function unserialize( $data ) {
-               // Ignore digit strings and ints so INCR/DECR work
-               return ( is_int( $data ) || ctype_digit( $data ) ) ? $data : unserialize( $data );
+               return ctype_digit( $data ) ? intval( $data ) : unserialize( $data );
        }
 
        /**
index 3244d87..0e989d3 100644 (file)
@@ -1163,15 +1163,16 @@ class Article implements Page {
                        $rootPart = $parts[0];
                        $user = User::newFromName( $rootPart, false /* allow IP users*/ );
                        $ip = User::isIP( $rootPart );
+                       $block = Block::newFromTarget( $user, $user );
 
                        if ( !( $user && $user->isLoggedIn() ) && !$ip ) { # User does not exist
                                $outputPage->wrapWikiMsg( "<div class=\"mw-userpage-userdoesnotexist error\">\n\$1\n</div>",
                                        array( 'userpage-userdoesnotexist-view', wfEscapeWikiText( $rootPart ) ) );
-                       } elseif ( $user->isBlocked() ) { # Show log extract if the user is currently blocked
+                       } elseif ( !is_null( $block ) && $block->getType() != Block::TYPE_AUTO ) { # Show log extract if the user is currently blocked
                                LogEventsList::showLogExtract(
                                        $outputPage,
                                        'block',
-                                       $user->getUserPage(),
+                                       MWNamespace::getCanonicalName( NS_USER ) . ':' . $block->getTarget(),
                                        '',
                                        array(
                                                'lim' => 1,
@@ -1209,12 +1210,10 @@ class Article implements Page {
                        $this->getContext()->getRequest()->response()->header( "HTTP/1.1 404 Not Found" );
                }
 
-               if ( $validUserPage ) {
-                       // Also apply the robot policy for nonexisting user pages (as those aren't served as 404)
-                       $policy = $this->getRobotPolicy( 'view' );
-                       $outputPage->setIndexPolicy( $policy['index'] );
-                       $outputPage->setFollowPolicy( $policy['follow'] );
-               }
+               // Also apply the robot policy for nonexisting pages (even if a 404 was used for sanity)
+               $policy = $this->getRobotPolicy( 'view' );
+               $outputPage->setIndexPolicy( $policy['index'] );
+               $outputPage->setFollowPolicy( $policy['follow'] );
 
                $hookResult = wfRunHooks( 'BeforeDisplayNoArticleText', array( $this ) );
 
@@ -2060,29 +2059,41 @@ class Article implements Page {
 
        /**
         * @return array
+        *
+        * @deprecated since 1.24, use WikiPage::selectFields() instead
         */
        public static function selectFields() {
+               wfDeprecated( __METHOD__, '1.24' );
                return WikiPage::selectFields();
        }
 
        /**
         * @param Title $title
+        *
+        * @deprecated since 1.24, use WikiPage::onArticleCreate() instead
         */
        public static function onArticleCreate( $title ) {
+               wfDeprecated( __METHOD__, '1.24' );
                WikiPage::onArticleCreate( $title );
        }
 
        /**
         * @param Title $title
+        *
+        * @deprecated since 1.24, use WikiPage::onArticleDelete() instead
         */
        public static function onArticleDelete( $title ) {
+               wfDeprecated( __METHOD__, '1.24' );
                WikiPage::onArticleDelete( $title );
        }
 
        /**
         * @param Title $title
+        *
+        * @deprecated since 1.24, use WikiPage::onArticleEdit() instead
         */
        public static function onArticleEdit( $title ) {
+               wfDeprecated( __METHOD__, '1.24' );
                WikiPage::onArticleEdit( $title );
        }
 
index 60db202..89ca241 100644 (file)
@@ -296,7 +296,7 @@ class ImagePage extends Article {
        }
 
        protected function openShowImage() {
-               global $wgImageLimits, $wgEnableUploads, $wgSend404Code;
+               global $wgEnableUploads, $wgSend404Code;
 
                $this->loadFile();
                $out = $this->getContext()->getOutput();
@@ -341,49 +341,17 @@ class ImagePage extends Article {
 
                        if ( $this->displayImg->allowInlineDisplay() ) {
                                # image
-
                                # "Download high res version" link below the image
                                # $msgsize = wfMessage( 'file-info-size', $width_orig, $height_orig,
                                #   Linker::formatSize( $this->displayImg->getSize() ), $mime )->escaped();
                                # We'll show a thumbnail of this image
-                               if ( $width > $maxWidth || $height > $maxHeight ) {
-                                       # Calculate the thumbnail size.
-                                       # First case, the limiting factor is the width, not the height.
-                                       /** @todo // FIXME: Possible division by 0. bug 36911 */
-                                       if ( $width / $height >= $maxWidth / $maxHeight ) {
-                                               /** @todo // FIXME: Possible division by 0. bug 36911 */
-                                               $height = round( $height * $maxWidth / $width );
-                                               $width = $maxWidth;
-                                               # Note that $height <= $maxHeight now.
-                                       } else {
-                                               /** @todo // FIXME: Possible division by 0. bug 36911 */
-                                               $newwidth = floor( $width * $maxHeight / $height );
-                                               /** @todo // FIXME: Possible division by 0. bug 36911 */
-                                               $height = round( $height * $newwidth / $width );
-                                               $width = $newwidth;
-                                               # Note that $height <= $maxHeight now, but might not be identical
-                                               # because of rounding.
-                                       }
+                               if ( $width > $maxWidth || $height > $maxHeight || $this->displayImg->isVectorized() ) {
+                                       list( $width, $height ) = $this->getDisplayWidthHeight(
+                                               $maxWidth, $maxHeight, $width, $height
+                                       );
                                        $linktext = wfMessage( 'show-big-image' )->escaped();
-                                       if ( $this->displayImg->getRepo()->canTransformVia404() ) {
-                                               $thumbSizes = $wgImageLimits;
-                                               // Also include the full sized resolution in the list, so
-                                               // that users know they can get it. This will link to the
-                                               // original file asset if mustRender() === false. In the case
-                                               // that we mustRender, some users have indicated that they would
-                                               // find it useful to have the full size image in the rendered
-                                               // image format.
-                                               $thumbSizes[] = array( $width_orig, $height_orig );
-                                       } else {
-                                               # Creating thumb links triggers thumbnail generation.
-                                               # Just generate the thumb for the current users prefs.
-                                               $thumbSizes = array( $this->getImageLimitsFromOption( $user, 'thumbsize' ) );
-                                               if ( !$this->displayImg->mustRender() ) {
-                                                       // We can safely include a link to the "full-size" preview,
-                                                       // without actually rendering.
-                                                       $thumbSizes[] = array( $width_orig, $height_orig );
-                                               }
-                                       }
+
+                                       $thumbSizes = $this->getThumbSizes( $width, $height, $width_orig, $height_orig );
                                        # Generate thumbnails or thumbnail links as needed...
                                        $otherSizes = array();
                                        foreach ( $thumbSizes as $size ) {
@@ -393,7 +361,10 @@ class ImagePage extends Article {
                                                // the current thumbnail's size ($width/$height)
                                                // since that is added to the message separately, so
                                                // it can be denoted as the current size being shown.
-                                               if ( $size[0] <= $width_orig && $size[1] <= $height_orig
+                                               // Vectorized images are "infinitely" big, so all thumb
+                                               // sizes are shown.
+                                               if ( ( ($size[0] <= $width_orig && $size[1] <= $height_orig)
+                                                               || $this->displayImg->isVectorized() )
                                                        && $size[0] != $width && $size[1] != $height
                                                ) {
                                                        $sizeLink = $this->makeSizeLink( $params, $size[0], $size[1] );
@@ -403,6 +374,7 @@ class ImagePage extends Article {
                                                }
                                        }
                                        $otherSizes = array_unique( $otherSizes );
+
                                        $msgsmall = '';
                                        $sizeLinkBigImagePreview = $this->makeSizeLink( $params, $width, $height );
                                        if ( $sizeLinkBigImagePreview ) {
@@ -421,9 +393,6 @@ class ImagePage extends Article {
                                        # Some sort of audio file that doesn't have dimensions
                                        # Don't output a no hi res message for such a file
                                        $msgsmall = '';
-                               } elseif ( $this->displayImg->isVectorized() ) {
-                                       # For vectorized images, full size is just the frame size
-                                       $msgsmall = '';
                                } else {
                                        # Image is small enough to show full size on image page
                                        $msgsmall = wfMessage( 'file-nohires' )->parse();
@@ -1084,6 +1053,81 @@ EOT
                );
                return $langSelectLine;
        }
+
+       /**
+        * Get the width and height to display image at.
+        *
+        * @note This method assumes that it is only called if one
+        *  of the dimensions are bigger than the max, or if the
+        *  image is vectorized.
+        *
+        * @param $maxWidth integer Max width to display at
+        * @param $maxHeight integer Max height to display at
+        * @param $width integer Actual width of the image
+        * @param $height integer Actual height of the image
+        * @throws MWException
+        * @return Array (width, height)
+        */
+       protected function getDisplayWidthHeight( $maxWidth, $maxHeight, $width, $height ) {
+               if ( !$maxWidth || !$maxHeight ) {
+                       // should never happen
+                       throw new MWException( 'Using a choice from $wgImageLimits that is 0x0' );
+               }
+
+               if ( !$width || !$height ) {
+                       return array( 0, 0 );
+               }
+
+               # Calculate the thumbnail size.
+               if ( $width <= $maxWidth && $height <= $maxHeight ) {
+                       // Vectorized image, do nothing.
+               } elseif ( $width / $height >= $maxWidth / $maxHeight ) {
+                       # The limiting factor is the width, not the height.
+                       $height = round( $height * $maxWidth / $width );
+                       $width = $maxWidth;
+                       # Note that $height <= $maxHeight now.
+               } else {
+                       $newwidth = floor( $width * $maxHeight / $height );
+                       $height = round( $height * $newwidth / $width );
+                       $width = $newwidth;
+                       # Note that $height <= $maxHeight now, but might not be identical
+                       # because of rounding.
+               }
+               return array( $width, $height );
+       }
+
+       /**
+        * Get alternative thumbnail sizes.
+        *
+        * @note This will only list several alternatives if thumbnails are rendered on 404
+        * @param $origWidth Actual width of image
+        * @param $origHeight Actual height of image
+        * @return Array An array of [width, height] pairs.
+        */
+       protected function getThumbSizes( $origWidth, $origHeight ) {
+               global $wgImageLimits;
+               if ( $this->displayImg->getRepo()->canTransformVia404() ) {
+                       $thumbSizes = $wgImageLimits;
+                       // Also include the full sized resolution in the list, so
+                       // that users know they can get it. This will link to the
+                       // original file asset if mustRender() === false. In the case
+                       // that we mustRender, some users have indicated that they would
+                       // find it useful to have the full size image in the rendered
+                       // image format.
+                       $thumbSizes[] = array( $origWidth, $origHeight );
+               } else {
+                       # Creating thumb links triggers thumbnail generation.
+                       # Just generate the thumb for the current users prefs.
+                       $thumbSizes = array( $this->getImageLimitsFromOption( $this->getContext()->getUser(), 'thumbsize' ) );
+                       if ( !$this->displayImg->mustRender() ) {
+                               // We can safely include a link to the "full-size" preview,
+                               // without actually rendering.
+                               $thumbSizes[] = array( $origWidth, $origHeight );
+                       }
+               }
+               return $thumbSizes;
+       }
+
 }
 
 /**
index 855de8e..7c412ea 100644 (file)
@@ -277,7 +277,7 @@ class WikiPage implements Page, IDBAccessObject {
         * @return array
         */
        public static function selectFields() {
-               global $wgContentHandlerUseDB;
+               global $wgContentHandlerUseDB, $wgPageLanguageUseDB;
 
                $fields = array(
                        'page_id',
@@ -298,6 +298,10 @@ class WikiPage implements Page, IDBAccessObject {
                        $fields[] = 'page_content_model';
                }
 
+               if ( $wgPageLanguageUseDB ) {
+                       $fields[] = 'page_lang';
+               }
+
                return $fields;
        }
 
index 3425b6b..79c8ade 100644 (file)
@@ -242,7 +242,12 @@ class CoreParserFunctions {
        }
 
        static function canonicalurle( $parser, $s = '', $arg = null ) {
-               return self::urlFunction( 'escapeCanonicalURL', $s, $arg );
+               $temp = self::urlFunction( 'getCanonicalURL', $s, $arg );
+               if ( !is_string( $temp ) ) {
+                       return $temp;
+               } else {
+                       return htmlspecialchars( $temp );
+               }
        }
 
        static function urlFunction( $func, $s = '', $arg = null ) {
@@ -373,7 +378,7 @@ class CoreParserFunctions {
                // list of disallowed tags for DISPLAYTITLE
                // these will be escaped even though they are allowed in normal wiki text
                $bad = array( 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'blockquote', 'ol', 'ul', 'li', 'hr',
-                       'table', 'tr', 'th', 'td', 'dl', 'dd', 'caption', 'p', 'ruby', 'rb', 'rt', 'rp', 'br' );
+                       'table', 'tr', 'th', 'td', 'dl', 'dd', 'caption', 'p', 'ruby', 'rb', 'rt', 'rtc', 'rp', 'br' );
 
                // disallow some styles that could be used to bypass $wgRestrictDisplayTitle
                if ( $wgRestrictDisplayTitle ) {
index 8546348..648667b 100644 (file)
 class LinkHolderArray {
        var $internals = array(), $interwikis = array();
        var $size = 0;
+
+       /**
+        * @var Parser
+        */
        var $parent;
        protected $tempIdOffset;
 
+       /**
+        * @param Parser $parent
+        */
        function __construct( $parent ) {
                $this->parent = $parent;
        }
@@ -144,6 +151,10 @@ class LinkHolderArray {
                return $texts;
        }
 
+       /**
+        * @param array $m
+        * @return string
+        */
        protected function mergeForeignCallback( $m ) {
                return $m[1] . ( $m[2] + $this->tempIdOffset ) . $m[3];
        }
@@ -297,6 +308,7 @@ class LinkHolderArray {
                $queries = array();
                foreach ( $this->internals as $ns => $entries ) {
                        foreach ( $entries as $entry ) {
+                               /** @var Title $title */
                                $title = $entry['title'];
                                $pdbk = $entry['pdbk'];
 
@@ -329,7 +341,7 @@ class LinkHolderArray {
                                $where[] = $dbr->makeList(
                                        array(
                                                'page_namespace' => $ns,
-                                               'page_title' => $pages,
+                                               'page_title' => array_unique( $pages ),
                                        ),
                                        LIST_AND
                                );
@@ -490,6 +502,7 @@ class LinkHolderArray {
                // Then add variants of links to link batch
                $parentTitle = $this->parent->getTitle();
                foreach ( $titlesAttrs as $i => $attrs ) {
+                       /** @var Title $title */
                        list( $index, $title ) = $attrs;
                        $ns = $title->getNamespace();
                        $text = $title->getText();
index 61fd9cc..e5917b8 100644 (file)
@@ -2820,6 +2820,9 @@ class Parser {
                $pageLang = $this->getFunctionLang();
 
                switch ( $index ) {
+                       case '!':
+                               $value = '|';
+                               break;
                        case 'currentmonth':
                                $value = $pageLang->formatNum( MWTimestamp::getInstance( $ts )->format( 'm' ) );
                                break;
@@ -5010,9 +5013,9 @@ class Parser {
         * private variables.**
         *
         * @param string $tag The tag to use, e.g. 'hook' for "<hook>"
-        * @param mixed $callback The callback function (and object) to use for the tag
+        * @param callable $callback The callback function (and object) to use for the tag
         * @throws MWException
-        * @return mixed|null The old value of the mTagHooks array associated with the hook
+        * @return callable|null The old value of the mTagHooks array associated with the hook
         */
        public function setHook( $tag, $callback ) {
                $tag = strtolower( $tag );
@@ -5041,9 +5044,9 @@ class Parser {
         * @todo better document or deprecate this
         *
         * @param string $tag The tag to use, e.g. 'hook' for "<hook>"
-        * @param mixed $callback The callback function (and object) to use for the tag
+        * @param callable $callback The callback function (and object) to use for the tag
         * @throws MWException
-        * @return mixed|null The old value of the mTagHooks array associated with the hook
+        * @return callable|null The old value of the mTagHooks array associated with the hook
         */
        function setTransparentTagHook( $tag, $callback ) {
                $tag = strtolower( $tag );
@@ -5082,7 +5085,7 @@ class Parser {
         *   isHTML                    The returned text is HTML, armour it against wikitext transformation
         *
         * @param string $id The magic word ID
-        * @param mixed $callback The callback function (and object) to use
+        * @param callable $callback The callback function (and object) to use
         * @param int $flags A combination of the following flags:
         *     SFH_NO_HASH   No leading hash, i.e. {{plural:...}} instead of {{#if:...}}
         *
@@ -5366,6 +5369,7 @@ class Parser {
                        $ig->add( $title, $label, $alt, $link, $handlerOptions );
                }
                $html = $ig->toHTML();
+               wfRunHooks( 'AfterParserFetchFileAndTitle', array( $this, $ig, &$html ) );
                wfProfileOut( __METHOD__ );
                return $html;
        }
@@ -6335,4 +6339,23 @@ class Parser {
 
                return $html;
        }
+
+       /**
+        * Return this parser if it is not doing anything, otherwise
+        * get a fresh parser. You can use this method by doing
+        * $myParser = $wgParser->getFreshParser(), or more simply
+        * $wgParser->getFreshParser()->parse( ... );
+        * if you're unsure if $wgParser is safe to use.
+        *
+        * @since 1.24
+        * @return Parser A parser object that is not parsing anything
+        */
+       public function getFreshParser() {
+               global $wgParserConf;
+               if ( $this->mInParse ) {
+                       return new $wgParserConf['class']( $wgParserConf );
+               } else {
+                       return $this;
+               }
+       }
 }
index 90617b3..2cd208c 100644 (file)
@@ -422,11 +422,6 @@ class ParserOptions {
                return wfSetVar( $this->mTidy, $x );
        }
 
-       /** @deprecated since 1.19 */
-       function setSkin( $x ) {
-               wfDeprecated( __METHOD__, '1.19' );
-       }
-
        function setInterfaceMessage( $x ) {
                return wfSetVar( $this->mInterfaceMessage, $x );
        }
index 093fe49..2b37b0b 100644 (file)
@@ -154,8 +154,12 @@ class PoolCounterRedis extends PoolCounter {
                if rSlot ~= 'w' and redis.call('exists',kSlotsNextRelease) == 1 then
                        if 1*redis.call('zScore',kSlotsNextRelease,rSlot) ~= (rSlotTime + rExpiry) then
                                -- Slot lock expired and was released already
-                       elseif redis.call('lLen',kSlots) >= (1*rMaxWorkers - 1) then
-                               -- Clear list to save space; it will re-init as needed
+                       elseif redis.call('lLen',kSlots) >= 1*rMaxWorkers then
+                               -- Slots somehow got out of sync; reset the list for sanity
+                               redis.call('del',kSlots,kSlotsNextRelease)
+                       elseif redis.call('lLen',kSlots) == (1*rMaxWorkers - 1) and redis.call('zCard',kWaiting) == 0 then
+                               -- Slot list will be made full; clear it to save space (it re-inits as needed)
+                               -- since nothing is waiting on being unblocked by a push to the list
                                redis.call('del',kSlots,kSlotsNextRelease)
                        else
                                -- Add slot back to pool and update the "next release" time
index 9633d0d..75f6966 100644 (file)
@@ -370,17 +370,17 @@ class TransactionProfiler {
         *
         * @param string $server DB server
         * @param string $db DB name
-        * @param string $id Resource ID string of connection
+        * @param string $id ID string of transaction
         */
        public function transactionWritingIn( $server, $db, $id ) {
-               $name = "{$server} ({$db}) ($id)";
+               $name = "{$server} ({$db}) (TRX#$id)";
                if ( isset( $this->mDBTrxHoldingLocks[$name] ) ) {
-                       ++$this->mDBTrxHoldingLocks[$name]['refs'];
-               } else {
-                       $this->mDBTrxHoldingLocks[$name] = array(
-                               'refs' => 1, 'start' => microtime( true ), 'conns' => array() );
-                       $this->mDBTrxMethodTimes[$name] = array();
+                       wfDebugLog( 'DBPerformance', "Nested transaction for '$name' - out of sync." );
                }
+               $this->mDBTrxHoldingLocks[$name] =
+                       array( 'start' => microtime( true ), 'conns' => array() );
+               $this->mDBTrxMethodTimes[$name] = array();
+
                foreach ( $this->mDBTrxHoldingLocks as $name => &$info ) {
                        $info['conns'][$name] = 1; // track all DBs in transactions for this transaction
                }
@@ -421,30 +421,32 @@ class TransactionProfiler {
         *
         * @param string $server DB server
         * @param string $db DB name
-        * @param string $id Resource ID string of connection
+        * @param string $id ID string of transaction
         */
        public function transactionWritingOut( $server, $db, $id ) {
-               $name = "{$server} ({$db}) ($id)";
-               if ( --$this->mDBTrxHoldingLocks[$name]['refs'] <= 0 ) {
-                       $slow = false;
-                       foreach ( $this->mDBTrxMethodTimes[$name] as $info ) {
-                               $realtime = $info[1];
-                               if ( $realtime >= $this->mDBLockThreshold ) {
-                                       $slow = true;
-                                       break;
-                               }
+               $name = "{$server} ({$db}) (TRX#$id)";
+               if ( !isset( $this->mDBTrxMethodTimes[$name] ) ) {
+                       wfDebugLog( 'DBPerformance', "Detected no transaction for '$name' - out of sync." );
+                       return;
+               }
+               $slow = false;
+               foreach ( $this->mDBTrxMethodTimes[$name] as $info ) {
+                       $realtime = $info[1];
+                       if ( $realtime >= $this->mDBLockThreshold ) {
+                               $slow = true;
+                               break;
                        }
-                       if ( $slow ) {
-                               $dbs = implode( ', ', array_keys( $this->mDBTrxHoldingLocks[$name]['conns'] ) );
-                               $msg = "Sub-optimal transaction on DB(s) [{$dbs}]:\n";
-                               foreach ( $this->mDBTrxMethodTimes[$name] as $i => $info ) {
-                                       list( $method, $realtime ) = $info;
-                                       $msg .= sprintf( "%d\t%.6f\t%s\n", $i, $realtime, $method );
-                               }
-                               wfDebugLog( 'DBPerformance', $msg );
+               }
+               if ( $slow ) {
+                       $dbs = implode( ', ', array_keys( $this->mDBTrxHoldingLocks[$name]['conns'] ) );
+                       $msg = "Sub-optimal transaction on DB(s) [{$dbs}]:\n";
+                       foreach ( $this->mDBTrxMethodTimes[$name] as $i => $info ) {
+                               list( $method, $realtime ) = $info;
+                               $msg .= sprintf( "%d\t%.6f\t%s\n", $i, $realtime, $method );
                        }
-                       unset( $this->mDBTrxHoldingLocks[$name] );
-                       unset( $this->mDBTrxMethodTimes[$name] );
+                       wfDebugLog( 'DBPerformance', $msg );
                }
+               unset( $this->mDBTrxHoldingLocks[$name] );
+               unset( $this->mDBTrxMethodTimes[$name] );
        }
 }
index 7b82b7b..55c46c5 100644 (file)
@@ -55,8 +55,8 @@ class RevisionDeleteUser {
                $delUser = Revision::DELETED_USER | Revision::DELETED_RESTRICTED;
                $delAction = LogPage::DELETED_ACTION | Revision::DELETED_RESTRICTED;
                if ( $op == '&' ) {
-                       $delUser = "~{$delUser}";
-                       $delAction = "~{$delAction}";
+                       $delUser = $dbw->bitNot( $delUser );
+                       $delAction = $dbw->bitNot( $delAction );
                }
 
                # Normalize user name
@@ -66,14 +66,14 @@ class RevisionDeleteUser {
                # Hide name from live edits
                $dbw->update(
                        'revision',
-                       array( "rev_deleted = rev_deleted $op $delUser" ),
+                       array( self::buildSetBitDeletedField( 'rev_deleted', $op, $delUser, $dbw ) ),
                        array( 'rev_user' => $userId ),
                        __METHOD__ );
 
                # Hide name from deleted edits
                $dbw->update(
                        'archive',
-                       array( "ar_deleted = ar_deleted $op $delUser" ),
+                       array( self::buildSetBitDeletedField( 'ar_deleted', $op, $delUser, $dbw ) ),
                        array( 'ar_user_text' => $name ),
                        __METHOD__
                );
@@ -81,28 +81,28 @@ class RevisionDeleteUser {
                # Hide name from logs
                $dbw->update(
                        'logging',
-                       array( "log_deleted = log_deleted $op $delUser" ),
-                       array( 'log_user' => $userId, "log_type != 'suppress'" ),
+                       array( self::buildSetBitDeletedField( 'log_deleted', $op, $delUser, $dbw ) ),
+                       array( 'log_user' => $userId, 'log_type != ' . $dbw->addQuotes( 'suppress' ) ),
                        __METHOD__
                );
                $dbw->update(
                        'logging',
-                       array( "log_deleted = log_deleted $op $delAction" ),
+                       array( self::buildSetBitDeletedField( 'log_deleted', $op, $delAction, $dbw ) ),
                        array( 'log_namespace' => NS_USER, 'log_title' => $userDbKey,
-                               "log_type != 'suppress'" ),
+                               'log_type != ' . $dbw->addQuotes( 'suppress' ) ),
                        __METHOD__
                );
 
                # Hide name from RC
                $dbw->update(
                        'recentchanges',
-                       array( "rc_deleted = rc_deleted $op $delUser" ),
+                       array( self::buildSetBitDeletedField( 'rc_deleted', $op, $delUser, $dbw ) ),
                        array( 'rc_user_text' => $name ),
                        __METHOD__
                );
                $dbw->update(
                        'recentchanges',
-                       array( "rc_deleted = rc_deleted $op $delAction" ),
+                       array( self::buildSetBitDeletedField( 'rc_deleted', $op, $delAction, $dbw ) ),
                        array( 'rc_namespace' => NS_USER, 'rc_title' => $userDbKey, 'rc_logid > 0' ),
                        __METHOD__
                );
@@ -110,7 +110,7 @@ class RevisionDeleteUser {
                # Hide name from live images
                $dbw->update(
                        'oldimage',
-                       array( "oi_deleted = oi_deleted $op $delUser" ),
+                       array( self::buildSetBitDeletedField( 'oi_deleted', $op, $delUser, $dbw ) ),
                        array( 'oi_user_text' => $name ),
                        __METHOD__
                );
@@ -118,7 +118,7 @@ class RevisionDeleteUser {
                # Hide name from deleted images
                $dbw->update(
                        'filearchive',
-                       array( "fa_deleted = fa_deleted $op $delUser" ),
+                       array( self::buildSetBitDeletedField( 'fa_deleted', $op, $delUser, $dbw ) ),
                        array( 'fa_user_text' => $name ),
                        __METHOD__
                );
@@ -126,6 +126,12 @@ class RevisionDeleteUser {
                return true;
        }
 
+       private static function buildSetBitDeletedField( $field, $op, $value, $dbw ) {
+               return $field . ' = ' . ( $op === '&'
+                       ? $dbw->bitAnd( $field, $value )
+                       : $dbw->bitOr( $field, $value ) );
+       }
+
        public static function suppressUserName( $name, $userId, $dbw = null ) {
                return self::setUsernameBitfields( $name, $userId, '|', $dbw );
        }
index 8ff2640..581d8bc 100644 (file)
@@ -174,8 +174,6 @@ class SearchMySQL extends SearchDatabase {
        }
 
        protected function searchInternal( $term, $fulltext ) {
-               global $wgCountTotalSearchHits;
-
                // This seems out of place, why is this called with empty term?
                if ( trim( $term ) === '' ) {
                        return null;
@@ -189,19 +187,17 @@ class SearchMySQL extends SearchDatabase {
                );
 
                $total = null;
-               if ( $wgCountTotalSearchHits ) {
-                       $query = $this->getCountQuery( $filteredTerm, $fulltext );
-                       $totalResult = $this->db->select(
-                               $query['tables'], $query['fields'], $query['conds'],
-                               __METHOD__, $query['options'], $query['joins']
-                       );
-
-                       $row = $totalResult->fetchObject();
-                       if ( $row ) {
-                               $total = intval( $row->c );
-                       }
-                       $totalResult->free();
+               $query = $this->getCountQuery( $filteredTerm, $fulltext );
+               $totalResult = $this->db->select(
+                       $query['tables'], $query['fields'], $query['conds'],
+                       __METHOD__, $query['options'], $query['joins']
+               );
+
+               $row = $totalResult->fetchObject();
+               if ( $row ) {
+                       $total = intval( $row->c );
                }
+               $totalResult->free();
 
                return new SqlSearchResultSet( $resultSet, $this->searchTerms, $total );
        }
index f430dd0..698f93c 100644 (file)
@@ -173,7 +173,12 @@ class SqlSearchResultSet extends SearchResultSet {
        }
 
        function getTotalHits() {
-               return $this->totalHits;
+               if ( !is_null( $this->totalHits ) ) {
+                       return $this->totalHits;
+               } else {
+                       // Special:Search expects a number here.
+                       return $this->numRows();
+               }
        }
 }
 
index 8e820f3..05d5ca0 100644 (file)
@@ -164,7 +164,7 @@ class SearchSqlite extends SearchDatabase {
        }
 
        protected function searchInternal( $term, $fulltext ) {
-               global $wgCountTotalSearchHits, $wgContLang;
+               global $wgContLang;
 
                if ( !$this->fulltextSearchSupported() ) {
                        return null;
@@ -174,14 +174,12 @@ class SearchSqlite extends SearchDatabase {
                $resultSet = $this->db->query( $this->getQuery( $filteredTerm, $fulltext ) );
 
                $total = null;
-               if ( $wgCountTotalSearchHits ) {
-                       $totalResult = $this->db->query( $this->getCountQuery( $filteredTerm, $fulltext ) );
-                       $row = $totalResult->fetchObject();
-                       if ( $row ) {
-                               $total = intval( $row->c );
-                       }
-                       $totalResult->free();
+               $totalResult = $this->db->query( $this->getCountQuery( $filteredTerm, $fulltext ) );
+               $row = $totalResult->fetchObject();
+               if ( $row ) {
+                       $total = intval( $row->c );
                }
+               $totalResult->free();
 
                return new SqlSearchResultSet( $resultSet, $this->searchTerms, $total );
        }
index 6020396..bf86ab2 100644 (file)
@@ -106,7 +106,7 @@ abstract class FormSpecialPage extends SpecialPage {
                $this->alterForm( $form );
 
                // Give hooks a chance to alter the form, adding extra fields or text etc
-               wfRunHooks( "Special{$this->getName()}BeforeFormDisplay", array( &$form ) );
+               wfRunHooks( 'SpecialPageBeforeFormDisplay', array( $this->getName(), &$form ) );
 
                return $form;
        }
@@ -114,9 +114,10 @@ abstract class FormSpecialPage extends SpecialPage {
        /**
         * Process the form on POST submission.
         * @param array $data
-        * @return bool|array True for success, false for didn't-try, array of errors on failure
+        * @param HTMLForm $form
+        * @return bool|string|array|Status As documented for HTMLForm::trySubmit.
         */
-       abstract public function onSubmit( array $data );
+       abstract public function onSubmit( array $data /* $form = null */ );
 
        /**
         * Do something exciting on successful processing of the form, most likely to show a
diff --git a/includes/specialpage/ImageQueryPage.php b/includes/specialpage/ImageQueryPage.php
new file mode 100644 (file)
index 0000000..b0266cb
--- /dev/null
@@ -0,0 +1,80 @@
+<?php
+/**
+ * Variant of QueryPage which uses a gallery to output results.
+ *
+ * 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
+ */
+
+/**
+ * Variant of QueryPage which uses a gallery to output results, thus
+ * suited for reports generating images
+ *
+ * @ingroup SpecialPage
+ * @author Rob Church <robchur@gmail.com>
+ */
+abstract class ImageQueryPage extends QueryPage {
+       /**
+        * Format and output report results using the given information plus
+        * OutputPage
+        *
+        * @param OutputPage $out OutputPage to print to
+        * @param Skin $skin User skin to use [unused]
+        * @param DatabaseBase $dbr (read) connection to use
+        * @param int $res Result pointer
+        * @param int $num Number of available result rows
+        * @param int $offset Paging offset
+        */
+       protected function outputResults( $out, $skin, $dbr, $res, $num, $offset ) {
+               if ( $num > 0 ) {
+                       $gallery = ImageGalleryBase::factory();
+                       $gallery->setContext( $this->getContext() );
+
+                       # $res might contain the whole 1,000 rows, so we read up to
+                       # $num [should update this to use a Pager]
+                       $i = 0;
+                       foreach ( $res as $row ) {
+                               $i++;
+                               $namespace = isset( $row->namespace ) ? $row->namespace : NS_FILE;
+                               $title = Title::makeTitleSafe( $namespace, $row->title );
+                               if ( $title instanceof Title && $title->getNamespace() == NS_FILE ) {
+                                       $gallery->add( $title, $this->getCellHtml( $row ) );
+                               }
+                               if ( $i === $num ) {
+                                       break;
+                               }
+                       }
+
+                       $out->addHTML( $gallery->toHtml() );
+               }
+       }
+
+       // Gotta override this since it's abstract
+       function formatResult( $skin, $result ) {
+       }
+
+       /**
+        * Get additional HTML to be shown in a results' cell
+        *
+        * @param object $row Result row
+        * @return string
+        */
+       protected function getCellHtml( $row ) {
+               return '';
+       }
+}
diff --git a/includes/specialpage/PageQueryPage.php b/includes/specialpage/PageQueryPage.php
new file mode 100644 (file)
index 0000000..afc0227
--- /dev/null
@@ -0,0 +1,72 @@
+<?php
+/**
+ * Variant of QueryPage which formats the result as a simple link to the page.
+ *
+ * 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
+ */
+
+/**
+ * Variant of QueryPage which formats the result as a simple link to the page
+ *
+ * @ingroup SpecialPage
+ */
+abstract class PageQueryPage extends QueryPage {
+       /**
+        * Run a LinkBatch to pre-cache LinkCache information,
+        * like page existence and information for stub color and redirect hints.
+        * This should be done for live data and cached data.
+        *
+        * @param DatabaseBase $db
+        * @param ResultWrapper $res
+        */
+       public function preprocessResults( $db, $res ) {
+               if ( !$res->numRows() ) {
+                       return;
+               }
+
+               $batch = new LinkBatch();
+               foreach ( $res as $row ) {
+                       $batch->add( $row->namespace, $row->title );
+               }
+               $batch->execute();
+
+               $res->seek( 0 );
+       }
+
+       /**
+        * Format the result as a simple link to the page
+        *
+        * @param Skin $skin
+        * @param object $row Result row
+        * @return string
+        */
+       public function formatResult( $skin, $row ) {
+               global $wgContLang;
+
+               $title = Title::makeTitleSafe( $row->namespace, $row->title );
+
+               if ( $title instanceof Title ) {
+                       $text = $wgContLang->convert( $title->getPrefixedText() );
+                       return Linker::link( $title, htmlspecialchars( $text ) );
+               } else {
+                       return Html::element( 'span', array( 'class' => 'mw-invalidtitle' ),
+                               Linker::getInvalidTitleDescription( $this->getContext(), $row->namespace, $row->title ) );
+               }
+       }
+}
diff --git a/includes/specialpage/QueryPage.php b/includes/specialpage/QueryPage.php
new file mode 100644 (file)
index 0000000..3a83d2b
--- /dev/null
@@ -0,0 +1,761 @@
+<?php
+/**
+ * Base code for "query" special pages.
+ *
+ * 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
+ */
+
+/**
+ * This is a class for doing query pages; since they're almost all the same,
+ * we factor out some of the functionality into a superclass, and let
+ * subclasses derive from it.
+ * @ingroup SpecialPage
+ */
+abstract class QueryPage extends SpecialPage {
+       /** @var bool Whether or not we want plain listoutput rather than an ordered list */
+       protected $listoutput = false;
+
+       /** @var int The offset and limit in use, as passed to the query() function */
+       protected $offset = 0;
+
+       /** @var int */
+       protected $limit = 0;
+
+       /**
+        * The number of rows returned by the query. Reading this variable
+        * only makes sense in functions that are run after the query has been
+        * done, such as preprocessResults() and formatRow().
+        */
+       protected $numRows;
+
+       protected $cachedTimestamp = null;
+
+       /**
+        * Whether to show prev/next links
+        */
+       protected $shownavigation = true;
+
+       /**
+        * Get a list of query page classes and their associated special pages,
+        * for periodic updates.
+        *
+        * DO NOT CHANGE THIS LIST without testing that
+        * maintenance/updateSpecialPages.php still works.
+        * @return array
+        */
+       public static function getPages() {
+               global $wgDisableCounters;
+               static $qp = null;
+
+               if ( $qp === null ) {
+                       // QueryPage subclass, Special page name
+                       $qp = array(
+                               array( 'AncientPagesPage', 'Ancientpages' ),
+                               array( 'BrokenRedirectsPage', 'BrokenRedirects' ),
+                               array( 'DeadendPagesPage', 'Deadendpages' ),
+                               array( 'DoubleRedirectsPage', 'DoubleRedirects' ),
+                               array( 'FileDuplicateSearchPage', 'FileDuplicateSearch' ),
+                               array( 'ListDuplicatedFilesPage', 'ListDuplicatedFiles'),
+                               array( 'LinkSearchPage', 'LinkSearch' ),
+                               array( 'ListredirectsPage', 'Listredirects' ),
+                               array( 'LonelyPagesPage', 'Lonelypages' ),
+                               array( 'LongPagesPage', 'Longpages' ),
+                               array( 'MIMEsearchPage', 'MIMEsearch' ),
+                               array( 'MostcategoriesPage', 'Mostcategories' ),
+                               array( 'MostimagesPage', 'Mostimages' ),
+                               array( 'MostinterwikisPage', 'Mostinterwikis' ),
+                               array( 'MostlinkedCategoriesPage', 'Mostlinkedcategories' ),
+                               array( 'MostlinkedtemplatesPage', 'Mostlinkedtemplates' ),
+                               array( 'MostlinkedPage', 'Mostlinked' ),
+                               array( 'MostrevisionsPage', 'Mostrevisions' ),
+                               array( 'FewestrevisionsPage', 'Fewestrevisions' ),
+                               array( 'ShortPagesPage', 'Shortpages' ),
+                               array( 'UncategorizedCategoriesPage', 'Uncategorizedcategories' ),
+                               array( 'UncategorizedPagesPage', 'Uncategorizedpages' ),
+                               array( 'UncategorizedImagesPage', 'Uncategorizedimages' ),
+                               array( 'UncategorizedTemplatesPage', 'Uncategorizedtemplates' ),
+                               array( 'UnusedCategoriesPage', 'Unusedcategories' ),
+                               array( 'UnusedimagesPage', 'Unusedimages' ),
+                               array( 'WantedCategoriesPage', 'Wantedcategories' ),
+                               array( 'WantedFilesPage', 'Wantedfiles' ),
+                               array( 'WantedPagesPage', 'Wantedpages' ),
+                               array( 'WantedTemplatesPage', 'Wantedtemplates' ),
+                               array( 'UnwatchedPagesPage', 'Unwatchedpages' ),
+                               array( 'UnusedtemplatesPage', 'Unusedtemplates' ),
+                               array( 'WithoutInterwikiPage', 'Withoutinterwiki' ),
+                       );
+                       wfRunHooks( 'wgQueryPages', array( &$qp ) );
+
+                       if ( !$wgDisableCounters ) {
+                               $qp[] = array( 'PopularPagesPage', 'Popularpages' );
+                       }
+               }
+
+               return $qp;
+       }
+
+       /**
+        * A mutator for $this->listoutput;
+        *
+        * @param bool $bool
+        */
+       function setListoutput( $bool ) {
+               $this->listoutput = $bool;
+       }
+
+       /**
+        * Subclasses return an SQL query here, formatted as an array with the
+        * following keys:
+        *    tables => Table(s) for passing to Database::select()
+        *    fields => Field(s) for passing to Database::select(), may be *
+        *    conds => WHERE conditions
+        *    options => options
+        *    join_conds => JOIN conditions
+        *
+        * Note that the query itself should return the following three columns:
+        * 'namespace', 'title', and 'value'. 'value' is used for sorting.
+        *
+        * These may be stored in the querycache table for expensive queries,
+        * and that cached data will be returned sometimes, so the presence of
+        * extra fields can't be relied upon. The cached 'value' column will be
+        * an integer; non-numeric values are useful only for sorting the
+        * initial query (except if they're timestamps, see usesTimestamps()).
+        *
+        * Don't include an ORDER or LIMIT clause, they will be added.
+        *
+        * If this function is not overridden or returns something other than
+        * an array, getSQL() will be used instead. This is for backwards
+        * compatibility only and is strongly deprecated.
+        * @return array
+        * @since 1.18
+        */
+       function getQueryInfo() {
+               return null;
+       }
+
+       /**
+        * For back-compat, subclasses may return a raw SQL query here, as a string.
+        * This is strongly deprecated; getQueryInfo() should be overridden instead.
+        * @throws MWException
+        * @return string
+        */
+       function getSQL() {
+               /* Implement getQueryInfo() instead */
+               throw new MWException( "Bug in a QueryPage: doesn't implement getQueryInfo() nor "
+                       . "getQuery() properly" );
+       }
+
+       /**
+        * Subclasses return an array of fields to order by here. Don't append
+        * DESC to the field names, that'll be done automatically if
+        * sortDescending() returns true.
+        * @return array
+        * @since 1.18
+        */
+       function getOrderFields() {
+               return array( 'value' );
+       }
+
+       /**
+        * Does this query return timestamps rather than integers in its
+        * 'value' field? If true, this class will convert 'value' to a
+        * UNIX timestamp for caching.
+        * NOTE: formatRow() may get timestamps in TS_MW (mysql), TS_DB (pgsql)
+        *       or TS_UNIX (querycache) format, so be sure to always run them
+        *       through wfTimestamp()
+        * @return bool
+        * @since 1.18
+        */
+       function usesTimestamps() {
+               return false;
+       }
+
+       /**
+        * Override to sort by increasing values
+        *
+        * @return bool
+        */
+       function sortDescending() {
+               return true;
+       }
+
+       /**
+        * Is this query expensive (for some definition of expensive)? Then we
+        * don't let it run in miser mode. $wgDisableQueryPages causes all query
+        * pages to be declared expensive. Some query pages are always expensive.
+        *
+        * @return bool
+        */
+       function isExpensive() {
+               global $wgDisableQueryPages;
+               return $wgDisableQueryPages;
+       }
+
+       /**
+        * Is the output of this query cacheable? Non-cacheable expensive pages
+        * will be disabled in miser mode and will not have their results written
+        * to the querycache table.
+        * @return bool
+        * @since 1.18
+        */
+       public function isCacheable() {
+               return true;
+       }
+
+       /**
+        * Whether or not the output of the page in question is retrieved from
+        * the database cache.
+        *
+        * @return bool
+        */
+       function isCached() {
+               global $wgMiserMode;
+
+               return $this->isExpensive() && $wgMiserMode;
+       }
+
+       /**
+        * Sometime we don't want to build rss / atom feeds.
+        *
+        * @return bool
+        */
+       function isSyndicated() {
+               return true;
+       }
+
+       /**
+        * Formats the results of the query for display. The skin is the current
+        * skin; you can use it for making links. The result is a single row of
+        * result data. You should be able to grab SQL results off of it.
+        * If the function returns false, the line output will be skipped.
+        * @param Skin $skin
+        * @param object $result Result row
+        * @return string|bool String or false to skip
+        */
+       abstract function formatResult( $skin, $result );
+
+       /**
+        * The content returned by this function will be output before any result
+        *
+        * @return string
+        */
+       function getPageHeader() {
+               return '';
+       }
+
+       /**
+        * If using extra form wheely-dealies, return a set of parameters here
+        * as an associative array. They will be encoded and added to the paging
+        * links (prev/next/lengths).
+        *
+        * @return array
+        */
+       function linkParameters() {
+               return array();
+       }
+
+       /**
+        * Some special pages (for example SpecialListusers) might not return the
+        * current object formatted, but return the previous one instead.
+        * Setting this to return true will ensure formatResult() is called
+        * one more time to make sure that the very last result is formatted
+        * as well.
+        * @return bool
+        */
+       function tryLastResult() {
+               return false;
+       }
+
+       /**
+        * Clear the cache and save new results
+        *
+        * @param int|bool $limit Limit for SQL statement
+        * @param bool $ignoreErrors Whether to ignore database errors
+        * @throws DBError|Exception
+        * @return bool|int
+        */
+       function recache( $limit, $ignoreErrors = true ) {
+               if ( !$this->isCacheable() ) {
+                       return 0;
+               }
+
+               $fname = get_class( $this ) . '::recache';
+               $dbw = wfGetDB( DB_MASTER );
+               if ( !$dbw ) {
+                       return false;
+               }
+
+               try {
+                       # Do query
+                       $res = $this->reallyDoQuery( $limit, false );
+                       $num = false;
+                       if ( $res ) {
+                               $num = $res->numRows();
+                               # Fetch results
+                               $vals = array();
+                               foreach ( $res as $row ) {
+                                       if ( isset( $row->value ) ) {
+                                               if ( $this->usesTimestamps() ) {
+                                                       $value = wfTimestamp( TS_UNIX,
+                                                               $row->value );
+                                               } else {
+                                                       $value = intval( $row->value ); // @bug 14414
+                                               }
+                                       } else {
+                                               $value = 0;
+                                       }
+
+                                       $vals[] = array( 'qc_type' => $this->getName(),
+                                                       'qc_namespace' => $row->namespace,
+                                                       'qc_title' => $row->title,
+                                                       'qc_value' => $value );
+                               }
+
+                               $dbw->begin( __METHOD__ );
+                               # Clear out any old cached data
+                               $dbw->delete( 'querycache', array( 'qc_type' => $this->getName() ), $fname );
+                               # Save results into the querycache table on the master
+                               if ( count( $vals ) ) {
+                                       $dbw->insert( 'querycache', $vals, __METHOD__ );
+                               }
+                               # Update the querycache_info record for the page
+                               $dbw->delete( 'querycache_info', array( 'qci_type' => $this->getName() ), $fname );
+                               $dbw->insert( 'querycache_info',
+                                       array( 'qci_type' => $this->getName(), 'qci_timestamp' => $dbw->timestamp() ),
+                                       $fname );
+                               $dbw->commit( __METHOD__ );
+                       }
+               } catch ( DBError $e ) {
+                       if ( !$ignoreErrors ) {
+                               throw $e; // report query error
+                       }
+                       $num = false; // set result to false to indicate error
+               }
+
+               return $num;
+       }
+
+       /**
+        * Get a DB connection to be used for slow recache queries
+        * @return DatabaseBase
+        */
+       function getRecacheDB() {
+               return wfGetDB( DB_SLAVE, array( $this->getName(), 'QueryPage::recache', 'vslow' ) );
+       }
+
+       /**
+        * Run the query and return the result
+        * @param int|bool $limit Numerical limit or false for no limit
+        * @param int|bool $offset Numerical offset or false for no offset
+        * @return ResultWrapper
+        * @since 1.18
+        */
+       function reallyDoQuery( $limit, $offset = false ) {
+               $fname = get_class( $this ) . "::reallyDoQuery";
+               $dbr = $this->getRecacheDB();
+               $query = $this->getQueryInfo();
+               $order = $this->getOrderFields();
+
+               if ( $this->sortDescending() ) {
+                       foreach ( $order as &$field ) {
+                               $field .= ' DESC';
+                       }
+               }
+
+               if ( is_array( $query ) ) {
+                       $tables = isset( $query['tables'] ) ? (array)$query['tables'] : array();
+                       $fields = isset( $query['fields'] ) ? (array)$query['fields'] : array();
+                       $conds = isset( $query['conds'] ) ? (array)$query['conds'] : array();
+                       $options = isset( $query['options'] ) ? (array)$query['options'] : array();
+                       $join_conds = isset( $query['join_conds'] ) ? (array)$query['join_conds'] : array();
+
+                       if ( count( $order ) ) {
+                               $options['ORDER BY'] = $order;
+                       }
+
+                       if ( $limit !== false ) {
+                               $options['LIMIT'] = intval( $limit );
+                       }
+
+                       if ( $offset !== false ) {
+                               $options['OFFSET'] = intval( $offset );
+                       }
+
+                       $res = $dbr->select( $tables, $fields, $conds, $fname,
+                                       $options, $join_conds
+                       );
+               } else {
+                       // Old-fashioned raw SQL style, deprecated
+                       $sql = $this->getSQL();
+                       $sql .= ' ORDER BY ' . implode( ', ', $order );
+                       $sql = $dbr->limitResult( $sql, $limit, $offset );
+                       $res = $dbr->query( $sql, $fname );
+               }
+
+               return $dbr->resultObject( $res );
+       }
+
+       /**
+        * Somewhat deprecated, you probably want to be using execute()
+        * @param int|bool $offset
+        * @param int|bool $limit
+        * @return ResultWrapper
+        */
+       function doQuery( $offset = false, $limit = false ) {
+               if ( $this->isCached() && $this->isCacheable() ) {
+                       return $this->fetchFromCache( $limit, $offset );
+               } else {
+                       return $this->reallyDoQuery( $limit, $offset );
+               }
+       }
+
+       /**
+        * Fetch the query results from the query cache
+        * @param int|bool $limit Numerical limit or false for no limit
+        * @param int|bool $offset Numerical offset or false for no offset
+        * @return ResultWrapper
+        * @since 1.18
+        */
+       function fetchFromCache( $limit, $offset = false ) {
+               $dbr = wfGetDB( DB_SLAVE );
+               $options = array();
+               if ( $limit !== false ) {
+                       $options['LIMIT'] = intval( $limit );
+               }
+               if ( $offset !== false ) {
+                       $options['OFFSET'] = intval( $offset );
+               }
+               if ( $this->sortDescending() ) {
+                       $options['ORDER BY'] = 'qc_value DESC';
+               } else {
+                       $options['ORDER BY'] = 'qc_value ASC';
+               }
+               $res = $dbr->select( 'querycache', array( 'qc_type',
+                               'namespace' => 'qc_namespace',
+                               'title' => 'qc_title',
+                               'value' => 'qc_value' ),
+                               array( 'qc_type' => $this->getName() ),
+                               __METHOD__, $options
+               );
+               return $dbr->resultObject( $res );
+       }
+
+       public function getCachedTimestamp() {
+               if ( is_null( $this->cachedTimestamp ) ) {
+                       $dbr = wfGetDB( DB_SLAVE );
+                       $fname = get_class( $this ) . '::getCachedTimestamp';
+                       $this->cachedTimestamp = $dbr->selectField( 'querycache_info', 'qci_timestamp',
+                               array( 'qci_type' => $this->getName() ), $fname );
+               }
+               return $this->cachedTimestamp;
+       }
+
+       /**
+        * This is the actual workhorse. It does everything needed to make a
+        * real, honest-to-gosh query page.
+        * @param string $par
+        * @return int
+        */
+       function execute( $par ) {
+               global $wgQueryCacheLimit, $wgDisableQueryPageUpdate;
+
+               $user = $this->getUser();
+               if ( !$this->userCanExecute( $user ) ) {
+                       $this->displayRestrictionError();
+                       return;
+               }
+
+               $this->setHeaders();
+               $this->outputHeader();
+
+               $out = $this->getOutput();
+
+               if ( $this->isCached() && !$this->isCacheable() ) {
+                       $out->addWikiMsg( 'querypage-disabled' );
+                       return 0;
+               }
+
+               $out->setSyndicated( $this->isSyndicated() );
+
+               if ( $this->limit == 0 && $this->offset == 0 ) {
+                       list( $this->limit, $this->offset ) = $this->getRequest()->getLimitOffset();
+               }
+
+               // @todo Use doQuery()
+               if ( !$this->isCached() ) {
+                       # select one extra row for navigation
+                       $res = $this->reallyDoQuery( $this->limit + 1, $this->offset );
+               } else {
+                       # Get the cached result, select one extra row for navigation
+                       $res = $this->fetchFromCache( $this->limit + 1, $this->offset );
+                       if ( !$this->listoutput ) {
+
+                               # Fetch the timestamp of this update
+                               $ts = $this->getCachedTimestamp();
+                               $lang = $this->getLanguage();
+                               $maxResults = $lang->formatNum( $wgQueryCacheLimit );
+
+                               if ( $ts ) {
+                                       $updated = $lang->userTimeAndDate( $ts, $user );
+                                       $updateddate = $lang->userDate( $ts, $user );
+                                       $updatedtime = $lang->userTime( $ts, $user );
+                                       $out->addMeta( 'Data-Cache-Time', $ts );
+                                       $out->addJsConfigVars( 'dataCacheTime', $ts );
+                                       $out->addWikiMsg( 'perfcachedts', $updated, $updateddate, $updatedtime, $maxResults );
+                               } else {
+                                       $out->addWikiMsg( 'perfcached', $maxResults );
+                               }
+
+                               # If updates on this page have been disabled, let the user know
+                               # that the data set won't be refreshed for now
+                               if ( is_array( $wgDisableQueryPageUpdate )
+                                       && in_array( $this->getName(), $wgDisableQueryPageUpdate )
+                               ) {
+                                       $out->wrapWikiMsg(
+                                               "<div class=\"mw-querypage-no-updates\">\n$1\n</div>",
+                                               'querypage-no-updates'
+                                       );
+                               }
+                       }
+               }
+
+               $this->numRows = $res->numRows();
+
+               $dbr = wfGetDB( DB_SLAVE );
+               $this->preprocessResults( $dbr, $res );
+
+               $out->addHTML( Xml::openElement( 'div', array( 'class' => 'mw-spcontent' ) ) );
+
+               # Top header and navigation
+               if ( $this->shownavigation ) {
+                       $out->addHTML( $this->getPageHeader() );
+                       if ( $this->numRows > 0 ) {
+                               $out->addHTML( $this->msg( 'showingresultsinrange' )->numParams(
+                                       min( $this->numRows, $this->limit ), # do not show the one extra row, if exist
+                                       $this->offset + 1, ( min( $this->numRows, $this->limit ) + $this->offset ) )->parseAsBlock() );
+                               # Disable the "next" link when we reach the end
+                               $paging = $this->getLanguage()->viewPrevNext( $this->getPageTitle( $par ), $this->offset,
+                                       $this->limit, $this->linkParameters(), ( $this->numRows <= $this->limit ) );
+                               $out->addHTML( '<p>' . $paging . '</p>' );
+                       } else {
+                               # No results to show, so don't bother with "showing X of Y" etc.
+                               # -- just let the user know and give up now
+                               $out->addWikiMsg( 'specialpage-empty' );
+                               $out->addHTML( Xml::closeElement( 'div' ) );
+                               return;
+                       }
+               }
+
+               # The actual results; specialist subclasses will want to handle this
+               # with more than a straight list, so we hand them the info, plus
+               # an OutputPage, and let them get on with it
+               $this->outputResults( $out,
+                       $this->getSkin(),
+                       $dbr, # Should use a ResultWrapper for this
+                       $res,
+                       min( $this->numRows, $this->limit ), # do not format the one extra row, if exist
+                       $this->offset );
+
+               # Repeat the paging links at the bottom
+               if ( $this->shownavigation ) {
+                       $out->addHTML( '<p>' . $paging . '</p>' );
+               }
+
+               $out->addHTML( Xml::closeElement( 'div' ) );
+
+               return min( $this->numRows, $this->limit ); # do not return the one extra row, if exist
+       }
+
+       /**
+        * Format and output report results using the given information plus
+        * OutputPage
+        *
+        * @param OutputPage $out OutputPage to print to
+        * @param Skin $skin User skin to use
+        * @param DatabaseBase $dbr Database (read) connection to use
+        * @param ResultWrapper $res Result pointer
+        * @param int $num Number of available result rows
+        * @param int $offset Paging offset
+        */
+       protected function outputResults( $out, $skin, $dbr, $res, $num, $offset ) {
+               global $wgContLang;
+
+               if ( $num > 0 ) {
+                       $html = array();
+                       if ( !$this->listoutput ) {
+                               $html[] = $this->openList( $offset );
+                       }
+
+                       # $res might contain the whole 1,000 rows, so we read up to
+                       # $num [should update this to use a Pager]
+                       // @codingStandardsIgnoreStart Generic.CodeAnalysis.ForLoopWithTestFunctionCall.NotAllowed
+                       for ( $i = 0; $i < $num && $row = $res->fetchObject(); $i++ ) {
+                               // @codingStandardsIgnoreEnd
+                               $line = $this->formatResult( $skin, $row );
+                               if ( $line ) {
+                                       $attr = ( isset( $row->usepatrol ) && $row->usepatrol && $row->patrolled == 0 )
+                                               ? ' class="not-patrolled"'
+                                               : '';
+                                       $html[] = $this->listoutput
+                                               ? $line
+                                               : "<li{$attr}>{$line}</li>\n";
+                               }
+                       }
+
+                       # Flush the final result
+                       if ( $this->tryLastResult() ) {
+                               $row = null;
+                               $line = $this->formatResult( $skin, $row );
+                               if ( $line ) {
+                                       $attr = ( isset( $row->usepatrol ) && $row->usepatrol && $row->patrolled == 0 )
+                                               ? ' class="not-patrolled"'
+                                               : '';
+                                       $html[] = $this->listoutput
+                                               ? $line
+                                               : "<li{$attr}>{$line}</li>\n";
+                               }
+                       }
+
+                       if ( !$this->listoutput ) {
+                               $html[] = $this->closeList();
+                       }
+
+                       $html = $this->listoutput
+                               ? $wgContLang->listToText( $html )
+                               : implode( '', $html );
+
+                       $out->addHTML( $html );
+               }
+       }
+
+       /**
+        * @param int $offset
+        * @return string
+        */
+       function openList( $offset ) {
+               return "\n<ol start='" . ( $offset + 1 ) . "' class='special'>\n";
+       }
+
+       /**
+        * @return string
+        */
+       function closeList() {
+               return "</ol>\n";
+       }
+
+       /**
+        * Do any necessary preprocessing of the result object.
+        * @param DatabaseBase $db
+        * @param ResultWrapper $res
+        */
+       function preprocessResults( $db, $res ) {
+       }
+
+       /**
+        * Similar to above, but packaging in a syndicated feed instead of a web page
+        * @param string $class
+        * @param int $limit
+        * @return bool
+        */
+       function doFeed( $class = '', $limit = 50 ) {
+               global $wgFeed, $wgFeedClasses, $wgFeedLimit;
+
+               if ( !$wgFeed ) {
+                       $this->getOutput()->addWikiMsg( 'feed-unavailable' );
+                       return false;
+               }
+
+               $limit = min( $limit, $wgFeedLimit );
+
+               if ( isset( $wgFeedClasses[$class] ) ) {
+                       /** @var RSSFeed|AtomFeed $feed */
+                       $feed = new $wgFeedClasses[$class](
+                               $this->feedTitle(),
+                               $this->feedDesc(),
+                               $this->feedUrl() );
+                       $feed->outHeader();
+
+                       $res = $this->reallyDoQuery( $limit, 0 );
+                       foreach ( $res as $obj ) {
+                               $item = $this->feedResult( $obj );
+                               if ( $item ) {
+                                       $feed->outItem( $item );
+                               }
+                       }
+
+                       $feed->outFooter();
+                       return true;
+               } else {
+                       return false;
+               }
+       }
+
+       /**
+        * Override for custom handling. If the titles/links are ok, just do
+        * feedItemDesc()
+        * @param object $row
+        * @return FeedItem|null
+        */
+       function feedResult( $row ) {
+               if ( !isset( $row->title ) ) {
+                       return null;
+               }
+               $title = Title::makeTitle( intval( $row->namespace ), $row->title );
+               if ( $title ) {
+                       $date = isset( $row->timestamp ) ? $row->timestamp : '';
+                       $comments = '';
+                       if ( $title ) {
+                               $talkpage = $title->getTalkPage();
+                               $comments = $talkpage->getFullURL();
+                       }
+
+                       return new FeedItem(
+                               $title->getPrefixedText(),
+                               $this->feedItemDesc( $row ),
+                               $title->getFullURL(),
+                               $date,
+                               $this->feedItemAuthor( $row ),
+                               $comments );
+               } else {
+                       return null;
+               }
+       }
+
+       function feedItemDesc( $row ) {
+               return isset( $row->comment ) ? htmlspecialchars( $row->comment ) : '';
+       }
+
+       function feedItemAuthor( $row ) {
+               return isset( $row->user_text ) ? $row->user_text : '';
+       }
+
+       function feedTitle() {
+               global $wgLanguageCode, $wgSitename;
+               $desc = $this->getDescription();
+               return "$wgSitename - $desc [$wgLanguageCode]";
+       }
+
+       function feedDesc() {
+               return $this->msg( 'tagline' )->text();
+       }
+
+       function feedUrl() {
+               return $this->getPageTitle()->getFullURL();
+       }
+}
index 3bdbc3c..cd41a1c 100644 (file)
@@ -153,10 +153,6 @@ abstract class SpecialRedirectToSpecial extends RedirectSpecialPage {
  * preference, useful for preloaded edits where you know preview wouldn't be
  * useful.
  *
- * - internaledit, externaledit, mode: Allows forcing the use of the
- * internal/external editor, e.g. to force the internal editor for
- * short/simple preloaded edits.
- *
  * - redlink: Affects the message the user sees if their talk page/user talk
  * page does not currently exist. Avoids confusion for newbies with no user
  * pages over why they got a "permission error" following this link:
@@ -194,7 +190,7 @@ abstract class RedirectSpecialArticle extends RedirectSpecialPage {
                        # Options for preloaded edits
                        'preload', 'editintro', 'preloadtitle', 'summary', 'nosummary',
                        # Options for overriding user settings
-                       'preview', 'internaledit', 'externaledit', 'mode', 'minor', 'watchthis',
+                       'preview', 'minor', 'watchthis',
                        # Options for history/diffs
                        'section', 'oldid', 'diff', 'dir',
                        'limit', 'offset', 'feed',
index c062e27..f968276 100644 (file)
@@ -335,6 +335,21 @@ class SpecialPage {
                return array();
        }
 
+       /**
+        * Helper function for implementations of prefixSearchSubpages() that
+        * filter the values in memory (as oppposed to making a query).
+        *
+        * @since 1.24
+        * @param string $search
+        * @param int $limit
+        * @param array $subpages
+        * @return string[]
+        */
+       protected static function prefixSearchArray( $search, $limit, array $subpages ) {
+               $escaped = preg_quote( $search, '/' );
+               return array_slice( preg_grep( "/^$escaped/i", $subpages ), 0, $limit );
+       }
+
        /**
         * Sets headers - this should be called from the execute() method of all derived classes!
         */
index 0ee7f09..9ff96ab 100644 (file)
@@ -183,6 +183,7 @@ class SpecialPageFactory {
                global $wgSpecialPages;
                global $wgDisableCounters, $wgDisableInternalSearch, $wgEmailAuthentication;
                global $wgEnableEmail, $wgEnableJavaScriptTest;
+               global $wgPageLanguageUseDB;
 
                if ( !is_object( self::$list ) ) {
                        wfProfileIn( __METHOD__ );
@@ -208,6 +209,10 @@ class SpecialPageFactory {
                                self::$list['JavaScriptTest'] = 'SpecialJavaScriptTest';
                        }
 
+                       if ( $wgPageLanguageUseDB ) {
+                               self::$list['PageLanguage'] = 'SpecialPageLanguage';
+                       }
+
                        self::$list['Activeusers'] = 'SpecialActiveUsers';
 
                        // Add extension special pages
diff --git a/includes/specialpage/WantedQueryPage.php b/includes/specialpage/WantedQueryPage.php
new file mode 100644 (file)
index 0000000..678c803
--- /dev/null
@@ -0,0 +1,117 @@
+<?php
+/**
+ * Class definition for a wanted query page.
+ *
+ * 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
+ */
+
+/**
+ * Class definition for a wanted query page like
+ * WantedPages, WantedTemplates, etc
+ * @ingroup SpecialPage
+ */
+abstract class WantedQueryPage extends QueryPage {
+       function isExpensive() {
+               return true;
+       }
+
+       function isSyndicated() {
+               return false;
+       }
+
+       /**
+        * Cache page existence for performance
+        * @param DatabaseBase $db
+        * @param ResultWrapper $res
+        */
+       function preprocessResults( $db, $res ) {
+               if ( !$res->numRows() ) {
+                       return;
+               }
+
+               $batch = new LinkBatch;
+               foreach ( $res as $row ) {
+                       $batch->add( $row->namespace, $row->title );
+               }
+               $batch->execute();
+
+               // Back to start for display
+               $res->seek( 0 );
+       }
+
+       /**
+        * Should formatResult() always check page existence, even if
+        * the results are fresh?  This is a (hopefully temporary)
+        * kluge for Special:WantedFiles, which may contain false
+        * positives for files that exist e.g. in a shared repo (bug
+        * 6220).
+        * @return bool
+        */
+       function forceExistenceCheck() {
+               return false;
+       }
+
+       /**
+        * Format an individual result
+        *
+        * @param Skin $skin Skin to use for UI elements
+        * @param object $result Result row
+        * @return string
+        */
+       public function formatResult( $skin, $result ) {
+               $title = Title::makeTitleSafe( $result->namespace, $result->title );
+               if ( $title instanceof Title ) {
+                       if ( $this->isCached() || $this->forceExistenceCheck() ) {
+                               $pageLink = $title->isKnown()
+                                       ? '<del>' . Linker::link( $title ) . '</del>'
+                                       : Linker::link(
+                                               $title,
+                                               null,
+                                               array(),
+                                               array(),
+                                               array( 'broken' )
+                                       );
+                       } else {
+                               $pageLink = Linker::link(
+                                       $title,
+                                       null,
+                                       array(),
+                                       array(),
+                                       array( 'broken' )
+                               );
+                       }
+                       return $this->getLanguage()->specialList( $pageLink, $this->makeWlhLink( $title, $result ) );
+               } else {
+                       return $this->msg( 'wantedpages-badtitle', $result->title )->escaped();
+               }
+       }
+
+       /**
+        * Make a "what links here" link for a given title
+        *
+        * @param Title $title Title to make the link for
+        * @param object $result Result row
+        * @return string
+        */
+       private function makeWlhLink( $title, $result ) {
+               $wlh = SpecialPage::getTitleFor( 'Whatlinkshere', $title->getPrefixedText() );
+               $label = $this->msg( 'nlinks' )->numParams( $result->value )->escaped();
+               return Linker::link( $wlh, $label );
+       }
+}
index c42c089..8dc4b3c 100644 (file)
@@ -92,12 +92,16 @@ class ActiveUsersPager extends UsersPager {
        function getQueryInfo() {
                $dbr = $this->getDatabase();
 
+               $activeUserSeconds = $this->getConfig()->get( 'ActiveUserDays' ) * 86400;
+               $timestamp = $dbr->timestamp( wfTimestamp( TS_UNIX ) - $activeUserSeconds );
                $conds = array(
                        'qcc_type' => 'activeusers',
                        'qcc_namespace' => NS_USER,
                        'user_name = qcc_title',
                        'rc_user_text = qcc_title',
-                       'rc_type != ' . $dbr->addQuotes( RC_EXTERNAL ) // Don't count wikidata.
+                       'rc_type != ' . $dbr->addQuotes( RC_EXTERNAL ), // Don't count wikidata.
+                       'rc_log_type IS NULL OR rc_log_type != ' . $dbr->addQuotes( 'newusers' ),
+                       'rc_timestamp >= ' . $dbr->addQuotes( $timestamp ),
                );
                if ( $this->requestedUser != '' ) {
                        $conds[] = 'qcc_title >= ' . $dbr->addQuotes( $this->requestedUser );
index d44b94e..1e4e18b 100644 (file)
@@ -51,15 +51,13 @@ class SpecialAllMessages extends SpecialPage {
 
                $this->setHeaders();
 
-               global $wgUseDatabaseMessages;
-               if ( !$wgUseDatabaseMessages ) {
+               if ( !$this->getConfig()->get( 'UseDatabaseMessages' ) ) {
                        $out->addWikiMsg( 'allmessagesnotsupportedDB' );
 
                        return;
-               } else {
-                       $this->outputHeader( 'allmessagestext' );
                }
 
+               $this->outputHeader( 'allmessagestext' );
                $out->addModuleStyles( 'mediawiki.special' );
 
                $this->table = new AllmessagesTablePager(
@@ -148,15 +146,13 @@ class AllMessagesTablePager extends TablePager {
        }
 
        function buildForm() {
-               global $wgScript;
-
                $attrs = array( 'id' => 'mw-allmessages-form-lang', 'name' => 'lang' );
                $msg = wfMessage( 'allmessages-language' );
                $langSelect = Xml::languageSelector( $this->langcode, false, null, $attrs, $msg );
 
                $out = Xml::openElement( 'form', array(
                                'method' => 'get',
-                               'action' => $wgScript,
+                               'action' => $this->getConfig()->get( 'Script' ),
                                'id' => 'mw-allmessages-form'
                        ) ) .
                        Xml::fieldset( $this->msg( 'allmessages-filter-legend' )->text() ) .
index 17e080f..e4b606d 100644 (file)
@@ -98,11 +98,10 @@ class SpecialAllPages extends IncludableSpecialPage {
         * @return string
         */
        function namespaceForm( $namespace = NS_MAIN, $from = '', $to = '', $hideredirects = false ) {
-               global $wgScript;
                $t = $this->getPageTitle();
 
                $out = Xml::openElement( 'div', array( 'class' => 'namespaceoptions' ) );
-               $out .= Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) );
+               $out .= Xml::openElement( 'form', array( 'method' => 'get', 'action' => $this->getConfig()->get( 'Script' ) ) );
                $out .= Html::hidden( 'title', $t->getPrefixedText() );
                $out .= Xml::openElement( 'fieldset' );
                $out .= Xml::element( 'legend', null, $this->msg( 'allpages' )->text() );
index 7481b0c..05bbb5a 100644 (file)
@@ -270,25 +270,32 @@ class SpecialContributions extends IncludableSpecialPage {
                        // Show a note if the user is blocked and display the last block log entry.
                        // Do not expose the autoblocks, since that may lead to a leak of accounts' IPs,
                        // and also this will display a totally irrelevant log entry as a current block.
-                       if ( $userObj->isBlocked() && $userObj->getBlock()->getType() != Block::TYPE_AUTO ) {
-                               $out = $this->getOutput(); // showLogExtract() wants first parameter by reference
-                               LogEventsList::showLogExtract(
-                                       $out,
-                                       'block',
-                                       $nt,
-                                       '',
-                                       array(
-                                               'lim' => 1,
-                                               'showIfEmpty' => false,
-                                               'msgKey' => array(
-                                                       $userObj->isAnon() ?
-                                                               'sp-contributions-blocked-notice-anon' :
-                                                               'sp-contributions-blocked-notice',
-                                                       $userObj->getName() # Support GENDER in 'sp-contributions-blocked-notice'
-                                               ),
-                                               'offset' => '' # don't use WebRequest parameter offset
-                                       )
-                               );
+                       if ( !$this->including() ) {
+                               $block = Block::newFromTarget( $userObj, $userObj );
+                               if ( !is_null( $block ) && $block->getType() != Block::TYPE_AUTO ) {
+                                       if ( $block->getType() == Block::TYPE_RANGE ) {
+                                               $nt = MWNamespace::getCanonicalName( NS_USER ) . ':' . $block->getTarget();
+                                       }
+
+                                       $out = $this->getOutput(); // showLogExtract() wants first parameter by reference
+                                       LogEventsList::showLogExtract(
+                                               $out,
+                                               'block',
+                                               $nt,
+                                               '',
+                                               array(
+                                                       'lim' => 1,
+                                                       'showIfEmpty' => false,
+                                                       'msgKey' => array(
+                                                               $userObj->isAnon() ?
+                                                                       'sp-contributions-blocked-notice-anon' :
+                                                                       'sp-contributions-blocked-notice',
+                                                               $userObj->getName() # Support GENDER in 'sp-contributions-blocked-notice'
+                                                       ),
+                                                       'offset' => '' # don't use WebRequest parameter offset
+                                               )
+                                       );
+                               }
                        }
                }
 
index f3af312..30e3833 100644 (file)
@@ -43,7 +43,7 @@ class SpecialCreateAccount extends SpecialRedirectToSpecial {
        }
 
        public function isRestricted() {
-               return true;
+               return !User::groupHasPermission( '*', 'createaccount' );
        }
 
        public function userCanExecute( User $user ) {
index 5bec95b..4df5b2b 100644 (file)
@@ -472,7 +472,12 @@ class DeletedContributionsPage extends SpecialPage {
                        $links = $this->getLanguage()->pipeList( $tools );
 
                        // Show a note if the user is blocked and display the last block log entry.
-                       if ( $userObj->isBlocked() ) {
+                       $block = Block::newFromTarget( $userObj, $userObj );
+                       if ( !is_null( $block ) && $block->getType() != Block::TYPE_AUTO ) {
+                               if ( $block->getType() == Block::TYPE_RANGE ) {
+                                       $nt = MWNamespace::getCanonicalName( NS_USER ) . ':' . $block->getTarget();
+                               }
+
                                // LogEventsList::showLogExtract() wants the first parameter by ref
                                $out = $this->getOutput();
                                LogEventsList::showLogExtract(
@@ -485,7 +490,7 @@ class DeletedContributionsPage extends SpecialPage {
                                                'showIfEmpty' => false,
                                                'msgKey' => array(
                                                        'sp-contributions-blocked-notice',
-                                                       $nt->getText() # Support GENDER in 'sp-contributions-blocked-notice'
+                                                       $userObj->getName() # Support GENDER in 'sp-contributions-blocked-notice'
                                                ),
                                                'offset' => '' # don't use $this->getRequest() parameter offset
                                        )
index 02d8d70..369f11f 100644 (file)
@@ -125,11 +125,16 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
         * @return string[] Matching subpages
         */
        public function prefixSearchSubpages( $search, $limit = 10 ) {
-               // SpecialWatchlist uses SpecialEditWatchlist::getMode, so new types should be added
-               // here and there - no 'edit' here, because that the default for this page
-               $subpages = array( 'clear', 'raw' );
-               $escaped = preg_quote( $search );
-               return array_slice( preg_grep( "/^$escaped/i", $subpages ), 0, $limit );
+               return self::prefixSearchArray(
+                       $search,
+                       $limit,
+                       // SpecialWatchlist uses SpecialEditWatchlist::getMode, so new types should be added
+                       // here and there - no 'edit' here, because that the default for this page
+                       array(
+                               'clear',
+                               'raw',
+                       )
+               );
        }
 
        /**
index 1c4f79f..03b3688 100644 (file)
@@ -173,6 +173,21 @@ HTML;
                );
        }
 
+       /**
+        * Return an array of subpages beginning with $search that this special page will accept.
+        *
+        * @param string $search Prefix to search for
+        * @param integer $limit Maximum number of results to return
+        * @return string[] Matching subpages
+        */
+       public function prefixSearchSubpages( $search, $limit = 10 ) {
+               return self::prefixSearchArray(
+                       $search,
+                       $limit,
+                       array_keys( self::$frameworks )
+               );
+       }
+
        protected function getGroupName() {
                return 'other';
        }
index b88e196..aec1257 100644 (file)
@@ -132,7 +132,11 @@ class LinkSearchPage extends QueryPage {
                                'target',
                                'target',
                                50,
-                               $target
+                               $target,
+                               array(
+                                       // URLs are always ltr
+                                       'dir' => 'ltr',
+                               )
                        ) . "\n";
 
                if ( !$wgMiserMode ) {
index 3715b8b..1faa013 100644 (file)
@@ -460,6 +460,19 @@ class ImageListPager extends TablePager {
                                        );
                                        $download = $this->msg( 'parentheses' )->rawParams( $download )->escaped();
 
+                                       // Add delete links if allowed
+                                       // From https://github.com/Wikia/app/pull/3859
+                                       if ( $filePage->userCan( 'delete', $this->getUser() ) ) {
+                                               $deleteMsg = $this->msg( 'listfiles-delete' )->escaped();
+
+                                               $delete = Linker::linkKnown(
+                                                       $filePage, $deleteMsg, array(), array( 'action' => 'delete' )
+                                               );
+                                               $delete = $this->msg( 'parentheses' )->rawParams( $delete )->escaped();
+
+                                               return "$link $download $delete";
+                                       }
+
                                        return "$link $download";
                                } else {
                                        return htmlspecialchars( $value );
index aaa55a3..ced5d25 100644 (file)
@@ -127,8 +127,7 @@ class SpecialLog extends SpecialPage {
                $subpages = $wgLogTypes;
                $subpages[] = 'all';
                sort( $subpages );
-               $escaped = preg_quote( $search );
-               return array_slice( preg_grep( "/^$escaped/i", $subpages ), 0, $limit );
+               return self::prefixSearchArray( $search, $limit, $subpages );
        }
 
        private function parseParams( FormOptions $opts, $par ) {
index dce5ad9..7223efd 100644 (file)
@@ -567,10 +567,14 @@ class MovePageForm extends UnlistedSpecialPage {
                $oldLink = Linker::link(
                        $ot,
                        null,
-                       array(),
+                       array( 'id' => 'movepage-oldlink' ),
                        array( 'redirect' => 'no' )
                );
-               $newLink = Linker::linkKnown( $nt );
+               $newLink = Linker::linkKnown(
+                       $nt,
+                       null,
+                       array( 'id' => 'movepage-newlink' )
+               );
                $oldText = $ot->getPrefixedText();
                $newText = $nt->getPrefixedText();
 
diff --git a/includes/specials/SpecialPageLanguage.php b/includes/specials/SpecialPageLanguage.php
new file mode 100644 (file)
index 0000000..a432f10
--- /dev/null
@@ -0,0 +1,181 @@
+<?php
+/**
+ * Implements Special:PageLanguage
+ *
+ * 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
+ * @author Kunal Grover
+ * @since 1.24
+ */
+
+/**
+ * Special page for changing the content language of a page
+ *
+ * @ingroup SpecialPage
+ */
+class SpecialPageLanguage extends FormSpecialPage {
+       /**
+        * @var $goToUrl URL to go to if language change successful
+        */
+       private $goToUrl;
+
+       public function __construct() {
+               parent::__construct( 'PageLanguage', 'pagelang' );
+       }
+
+       protected function preText() {
+               $this->getOutput()->addModules( 'mediawiki.special.pageLanguage' );
+       }
+
+       protected function getFormFields() {
+               global $wgLanguageCode;
+               // Get default from the subpage of Special page
+               $defaultName = $this->par;
+
+               $page = array();
+               $page['pagename'] = array(
+                       'type' => 'text',
+                       'label-message' => 'pagelang-name',
+                       'default' => $defaultName,
+               );
+
+               // Options for whether to use the default language or select language
+               $selectoptions = array(
+                       (string)$this->msg( 'pagelang-use-default' )->escaped() => 1,
+                       (string)$this->msg( 'pagelang-select-lang' )->escaped() => 2,
+               );
+               $page['selectoptions'] = array(
+                       'id' => 'mw-pl-options',
+                       'type' => 'radio',
+                       'options' => $selectoptions,
+                       'default' => 1
+               );
+
+               // Building a language selector
+               $userLang = $this->getLanguage()->getCode();
+               $languages = Language::fetchLanguageNames( $userLang, 'mwfile' );
+               ksort( $languages );
+               $options = array();
+               foreach ( $languages as $code => $name ) {
+                       $options["$code - $name"] = $code;
+               }
+
+               $page['language'] = array(
+                       'id' => 'mw-pl-languageselector',
+                       'type' => 'select',
+                       'options' => $options,
+                       'label-message' => 'pagelang-language',
+                       'default' => $wgLanguageCode
+               );
+
+               return $page;
+       }
+
+       public function alterForm( HTMLForm $form ) {
+               $form->setDisplayFormat( 'vform' );
+               $form->setWrapperLegend( false );
+       }
+
+       /**
+        *
+        * @param array $data
+        */
+       public function onSubmit( array $data ) {
+               $title = Title::newFromText( $data['pagename'] );
+
+               // Check if title is valid
+               if ( !$title ) {
+                       return false;
+               }
+
+               // Get the default language for the wiki
+               // Returns the default since the page is not loaded from DB
+               $defLang = $title->getPageLanguage()->getCode();
+
+               $pageId =  $title->getArticleID();
+
+               // Check if article exists
+               if ( !$pageId ) {
+                       return false;
+               }
+
+               // Load the page language from DB
+               $dbw = wfGetDB( DB_MASTER );
+               $langOld = $dbw->selectField(
+                       'page',
+                       'page_lang',
+                       array( 'page_id' => $pageId ),
+                       __METHOD__
+               );
+
+               // Url to redirect to after the operation
+               $this->goToUrl = $title->getFullURL();
+
+               // Check if user wants to use default language
+               if ( $data['selectoptions'] == 1 ) {
+                       $langNew = null;
+               } else {
+                       $langNew = $data['language'];
+               }
+
+               // No change in language
+               if ( $langNew === $langOld ) {
+                       return false;
+               }
+
+               // Hardcoded [def] if the language is set to null
+               $logOld = $langOld ? $langOld : $defLang . '[def]';
+               $logNew = $langNew ? $langNew : $defLang . '[def]';
+
+               // Writing new page language to database
+               $dbw = wfGetDB( DB_MASTER );
+               $dbw->update(
+                       'page',
+                       array( 'page_lang' => $langNew ),
+                       array(
+                               'page_id' => $pageId,
+                               'page_lang' => $langOld
+                       ),
+                       __METHOD__
+               );
+
+               if ( !$dbw->affectedRows() ) {
+                       return false;
+               }
+
+               // Logging change of language
+               $logParams = array(
+                       '4::oldlanguage' => $logOld,
+                       '5::newlanguage' => $logNew
+               );
+               $entry = new ManualLogEntry( 'pagelang', 'pagelang' );
+               $entry->setPerformer( $this->getUser() );
+               $entry->setTarget( $title );
+               $entry->setParameters( $logParams );
+
+               $logid = $entry->insert();
+               $entry->publish( $logid );
+
+               return true;
+       }
+
+       public function onSuccess() {
+               // Success causes a redirect
+               $this->getOutput()->redirect( $this->goToUrl );
+       }
+}
index e22b42a..05f0b2b 100644 (file)
@@ -30,6 +30,7 @@
  */
 class SpecialPagesWithProp extends QueryPage {
        private $propName = null;
+       private $existingPropNames = null;
 
        function __construct( $name = 'PagesWithProp' ) {
                parent::__construct( $name );
@@ -47,18 +48,7 @@ class SpecialPagesWithProp extends QueryPage {
                $request = $this->getRequest();
                $propname = $request->getVal( 'propname', $par );
 
-               $dbr = wfGetDB( DB_SLAVE );
-               $res = $dbr->select(
-                       'page_props',
-                       'pp_propname',
-                       '',
-                       __METHOD__,
-                       array( 'DISTINCT', 'ORDER BY' => 'pp_propname' )
-               );
-               $propnames = array();
-               foreach ( $res as $row ) {
-                       $propnames[$row->pp_propname] = $row->pp_propname;
-               }
+               $propnames = $this->getExistingPropNames();
 
                $form = new HTMLForm( array(
                        'propname' => array(
@@ -88,6 +78,18 @@ class SpecialPagesWithProp extends QueryPage {
                parent::execute( $data['propname'] );
        }
 
+       /**
+        * Return an array of subpages beginning with $search that this special page will accept.
+        *
+        * @param string $search Prefix to search for
+        * @param integer $limit Maximum number of results to return
+        * @return string[] Matching subpages
+        */
+       public function prefixSearchSubpages( $search, $limit = 10 ) {
+               $subpages = array_keys( $this->getExistingPropNames() );
+               return self::prefixSearchArray( $search, $limit, $subpages );
+       }
+
        /**
         * Disable RSS/Atom feeds
         * @return bool
@@ -150,6 +152,25 @@ class SpecialPagesWithProp extends QueryPage {
                return $ret;
        }
 
+       public function getExistingPropNames() {
+               if ( $this->existingPropNames === null ) {
+                       $dbr = wfGetDB( DB_SLAVE );
+                       $res = $dbr->select(
+                               'page_props',
+                               'pp_propname',
+                               '',
+                               __METHOD__,
+                               array( 'DISTINCT', 'ORDER BY' => 'pp_propname' )
+                       );
+                       $propnames = array();
+                       foreach ( $res as $row ) {
+                               $propnames[$row->pp_propname] = $row->pp_propname;
+                       }
+                       $this->existingPropNames = $propnames;
+               }
+               return $this->existingPropNames;
+       }
+
        protected function getGroupName() {
                return 'pages';
        }
index 2a1bf11..2e67e2b 100644 (file)
@@ -101,10 +101,8 @@ class SpecialPrefixindex extends SpecialAllPages {
         * @return string
         */
        protected function namespacePrefixForm( $namespace = NS_MAIN, $from = '' ) {
-               global $wgScript;
-
                $out = Xml::openElement( 'div', array( 'class' => 'namespaceoptions' ) );
-               $out .= Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) );
+               $out .= Xml::openElement( 'form', array( 'method' => 'get', 'action' => $this->getConfig()->get( 'Script' ) ) );
                $out .= Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() );
                $out .= Xml::openElement( 'fieldset' );
                $out .= Xml::element( 'legend', null, $this->msg( 'allpages' )->text() );
index d3b168b..b90026a 100644 (file)
@@ -417,7 +417,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
                                                Xml::listDropDown( 'wpRevDeleteReasonList',
                                                        $this->msg( 'revdelete-reason-dropdown' )->inContentLanguage()->text(),
                                                        $this->msg( 'revdelete-reasonotherlist' )->inContentLanguage()->text(),
-                                                       $this->getRequest()->getText( 'wpRevDeleteReasonList', 'other' ), 'wpReasonDropDown', 1
+                                                       $this->getRequest()->getText( 'wpRevDeleteReasonList', 'other' ), 'wpReasonDropDown'
                                                ) .
                                        '</td>' .
                                "</tr><tr>\n" .
index 542fc86..15a7b59 100644 (file)
@@ -114,7 +114,7 @@ class SpecialSearch extends SpecialPage {
         */
        public function load() {
                $request = $this->getRequest();
-               list( $this->limit, $this->offset ) = $request->getLimitOffset( 20 );
+               list( $this->limit, $this->offset ) = $request->getLimitOffset( 20, '' );
                $this->mPrefix = $request->getVal( 'prefix', '' );
 
                $user = $this->getUser();
@@ -207,8 +207,7 @@ class SpecialSearch extends SpecialPage {
 
                $profile = new ProfileSection( __METHOD__ );
                $search = $this->getSearchEngine();
-               // Request an extra result to determine whether a "next page" link is useful
-               $search->setLimitOffset( $this->limit + 1, $this->offset );
+               $search->setLimitOffset( $this->limit, $this->offset );
                $search->setNamespaces( $this->namespaces );
                $this->saveNamespaces();
                $search->prefix = $this->mPrefix;
@@ -308,51 +307,37 @@ class SpecialSearch extends SpecialPage {
                                )
                        )
                );
+
+               // Get number of results
+               $titleMatchesNum = $textMatchesNum = $numTitleMatches = $numTextMatches = 0;
+               if ( $titleMatches ) {
+                       $titleMatchesNum = $titleMatches->numRows();
+                       $numTitleMatches = $titleMatches->getTotalHits();
+               }
+               if ( $textMatches ) {
+                       $textMatchesNum = $textMatches->numRows();
+                       $numTextMatches = $textMatches->getTotalHits();
+               }
+               $num = $titleMatchesNum + $textMatchesNum;
+               $totalRes = $numTitleMatches + $numTextMatches;
+
                $out->addHtml(
                        # This is an awful awful ID name. It's not a table, but we
                        # named it poorly from when this was a table so now we're
                        # stuck with it
                        Xml::openElement( 'div', array( 'id' => 'mw-search-top-table' ) ) .
-                       $this->shortDialog( $term ) .
-                       Xml::closeElement( 'div' )
+                       $this->shortDialog( $term, $num, $totalRes ) .
+                       Xml::closeElement( 'div' ) .
+                       $this->formHeader( $term ) .
+                       Xml::closeElement( 'form' )
                );
 
                $filePrefix = $wgContLang->getFormattedNsText( NS_FILE ) . ':';
                if ( trim( $term ) === '' || $filePrefix === trim( $term ) ) {
-                       $out->addHTML( $this->formHeader( $term, 0, 0 ) );
-                       $out->addHtml( $this->getProfileForm( $this->profile, $term ) );
-                       $out->addHTML( '</form>' );
-
                        // Empty query -- straight view of search form
                        return;
                }
 
-               // Get number of results
-               $titleMatchesNum = $titleMatches ? $titleMatches->numRows() : 0;
-               $textMatchesNum = $textMatches ? $textMatches->numRows() : 0;
-               // Total initial query matches (possible false positives)
-               $num = $titleMatchesNum + $textMatchesNum;
-
-               // Get total actual results (after second filtering, if any)
-               $numTitleMatches = $titleMatches && !is_null( $titleMatches->getTotalHits() ) ?
-                       $titleMatches->getTotalHits() : $titleMatchesNum;
-               $numTextMatches = $textMatches && !is_null( $textMatches->getTotalHits() ) ?
-                       $textMatches->getTotalHits() : $textMatchesNum;
-
-               // get total number of results if backend can calculate it
-               $totalRes = 0;
-               if ( $titleMatches && !is_null( $titleMatches->getTotalHits() ) ) {
-                       $totalRes += $titleMatches->getTotalHits();
-               }
-               if ( $textMatches && !is_null( $textMatches->getTotalHits() ) ) {
-                       $totalRes += $textMatches->getTotalHits();
-               }
-
-               // show number of results and current offset
-               $out->addHTML( $this->formHeader( $term, $num, $totalRes ) );
-               $out->addHtml( $this->getProfileForm( $this->profile, $term ) );
-
-               $out->addHtml( Xml::closeElement( 'form' ) );
                $out->addHtml( "<div class='searchresults'>" );
 
                // prev/next links
@@ -366,7 +351,7 @@ class SpecialSearch extends SpecialPage {
                                        $this->offset,
                                        $this->limit,
                                        $this->powerSearchOptions() + array( 'search' => $term ),
-                                       max( $titleMatchesNum, $textMatchesNum ) <= $this->limit
+                                       $this->limit + $this->offset >= $totalRes
                                );
                        }
                        wfRunHooks( 'SpecialSearchResults', array( $term, &$titleMatches, &$textMatches ) );
@@ -526,7 +511,11 @@ class SpecialSearch extends SpecialPage {
 
                if ( $user->isLoggedIn() &&
                        !is_null( $request->getVal( 'nsRemember' ) ) &&
-                       $user->matchEditToken( $request->getVal( 'nsToken' ) )
+                       $user->matchEditToken(
+                               $request->getVal( 'nsToken' ),
+                               'searchnamespace',
+                               $request
+                       )
                ) {
                        // Reset namespace preferences: namespaces are not searched
                        // when they're not mentioned in the URL parameters.
@@ -561,11 +550,9 @@ class SpecialSearch extends SpecialPage {
 
                $out = "<ul class='mw-search-results'>\n";
                $result = $matches->next();
-               $count = 0;
-               while ( $result && $count < $this->limit ) {
+               while ( $result ) {
                        $out .= $this->showHit( $result, $terms );
                        $result = $matches->next();
-                       $count++;
                }
                $out .= "</ul>\n";
 
@@ -727,7 +714,7 @@ class SpecialSearch extends SpecialPage {
                                                $thumb->toHtml( array( 'desc-link' => true ) ) .
                                                '</td>' .
                                                '<td style="vertical-align: top;">' .
-                                               "{$link} {$fileMatch}" .
+                                               "{$link} {$redirect} {$section} {$fileMatch}" .
                                                $extract .
                                                "<div class='mw-search-result-data'>{$score}{$desc} - {$date}{$related}</div>" .
                                                '</td>' .
@@ -882,26 +869,6 @@ class SpecialSearch extends SpecialPage {
                return $out;
        }
 
-       /**
-        * @param string $profile
-        * @param string $term
-        * @return string
-        */
-       protected function getProfileForm( $profile, $term ) {
-               // Hidden stuff
-               $opts = array();
-               $opts['profile'] = $this->profile;
-
-               if ( $profile === 'advanced' ) {
-                       return $this->powerSearchBox( $term, $opts );
-               } else {
-                       $form = '';
-                       wfRunHooks( 'SpecialSearchProfileForm', array( $this, &$form, $profile, $term, $opts ) );
-
-                       return $form;
-               }
-       }
-
        /**
         * Generates the power search box at [[Special:Search]]
         *
@@ -926,9 +893,7 @@ class SpecialSearch extends SpecialPage {
                        }
 
                        $rows[$subject] .=
-                               Xml::openElement(
-                                       'td', array( 'style' => 'white-space: nowrap' )
-                               ) .
+                               Xml::openElement( 'td' ) .
                                Xml::checkLabel(
                                        $name,
                                        "ns{$namespace}",
@@ -970,7 +935,13 @@ class SpecialSearch extends SpecialPage {
                $remember = '';
                $user = $this->getUser();
                if ( $user->isLoggedIn() ) {
-                       $remember .= Html::hidden( 'nsToken', $user->getEditToken() ) .
+                       $remember .= Html::hidden(
+                               'nsToken',
+                               $user->getEditToken(
+                                       'searchnamespace',
+                                       $this->getRequest()
+                               )
+                       ) .
                        Xml::checkLabel(
                                wfMessage( 'powersearch-remember' )->text(),
                                'nsRemember',
@@ -980,10 +951,7 @@ class SpecialSearch extends SpecialPage {
                }
 
                // Return final output
-               return Xml::openElement(
-                       'fieldset',
-                       array( 'id' => 'mw-searchoptions', 'style' => 'margin:0em;' )
-               ) .
+               return Xml::openElement( 'fieldset', array( 'id' => 'mw-searchoptions' ) ) .
                        Xml::element( 'legend', null, $this->msg( 'powersearch-legend' )->text() ) .
                        Xml::tags( 'h4', null, $this->msg( 'powersearch-ns' )->parse() ) .
                        Html::element( 'div', array( 'id' => 'mw-search-togglebox' ) ) .
@@ -1042,11 +1010,9 @@ class SpecialSearch extends SpecialPage {
 
        /**
         * @param string $term
-        * @param int $resultsShown
-        * @param int $totalNum
         * @return string
         */
-       protected function formHeader( $term, $resultsShown, $totalNum ) {
+       protected function formHeader( $term ) {
                $out = Xml::openElement( 'div', array( 'class' => 'mw-search-formheader' ) );
 
                $bareterm = $term;
@@ -1085,32 +1051,21 @@ class SpecialSearch extends SpecialPage {
                }
                $out .= Xml::closeElement( 'ul' );
                $out .= Xml::closeElement( 'div' );
-
-               // Results-info
-               if ( $resultsShown > 0 ) {
-                       if ( $totalNum > 0 ) {
-                               $top = $this->msg( 'showingresultsheader' )
-                                       ->numParams( $this->offset + 1, $this->offset + $resultsShown, $totalNum )
-                                       ->params( wfEscapeWikiText( $term ) )
-                                       ->numParams( $resultsShown )
-                                       ->parse();
-                       } elseif ( $resultsShown >= $this->limit ) {
-                               $top = $this->msg( 'showingresults' )
-                                       ->numParams( $this->limit, $this->offset + 1 )
-                                       ->parse();
-                       } else {
-                               $top = $this->msg( 'showingresultsnum' )
-                                       ->numParams( $this->limit, $this->offset + 1, $resultsShown )
-                                       ->parse();
-                       }
-                       $out .= Xml::tags( 'div', array( 'class' => 'results-info' ),
-                               Xml::tags( 'ul', null, Xml::tags( 'li', null, $top ) )
-                       );
-               }
-
                $out .= Xml::element( 'div', array( 'style' => 'clear:both' ), '', false );
                $out .= Xml::closeElement( 'div' );
 
+               // Hidden stuff
+               $opts = array();
+               $opts['profile'] = $this->profile;
+
+               if ( $this->profile === 'advanced' ) {
+                       $out .= $this->powerSearchBox( $term, $opts );
+               } else {
+                       $form = '';
+                       wfRunHooks( 'SpecialSearchProfileForm', array( $this, &$form, $this->profile, $term, $opts ) );
+                       $out .= $form;
+               }
+
                return $out;
        }
 
@@ -1118,7 +1073,7 @@ class SpecialSearch extends SpecialPage {
         * @param string $term
         * @return string
         */
-       protected function shortDialog( $term ) {
+       protected function shortDialog( $term, $resultsShown, $totalNum ) {
                $out = Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() );
                $out .= Html::hidden( 'profile', $this->profile ) . "\n";
                // Term box
@@ -1134,6 +1089,17 @@ class SpecialSearch extends SpecialPage {
                        array( 'class' => array( 'mw-ui-button', 'mw-ui-progressive' ) )
                ) . "\n";
 
+               // Results-info
+               if ( $totalNum > 0 ) {
+                       $top = $this->msg( 'showingresultsheader' )
+                               ->numParams( $this->offset + 1, $this->offset + $resultsShown, $totalNum )
+                               ->params( wfEscapeWikiText( $term ) )
+                               ->numParams( $resultsShown )
+                               ->parse();
+                       $out .= Xml::tags( 'div', array( 'class' => 'results-info' ), $top ) .
+                               Xml::element( 'div', array( 'style' => 'clear:both' ), '', false );
+               }
+
                return $out . $this->didYouMeanHtml;
        }
 
index 01c0aaf..976294b 100644 (file)
@@ -827,7 +827,7 @@ class UploadForm extends HTMLForm {
                }
 
                $canUploadByUrl = UploadFromUrl::isEnabled()
-                       && UploadFromUrl::isAllowed( $this->getUser() )
+                       && ( UploadFromUrl::isAllowed( $this->getUser() ) === true )
                        && $wgCopyUploadsFromSpecialUpload;
                $radio = $canUploadByUrl;
                $selectedSourceType = strtolower( $this->getRequest()->getText( 'wpSourceType', 'File' ) );
index 543c8fe..576b625 100644 (file)
@@ -129,6 +129,7 @@ class SpecialVersion extends SpecialPage {
                                        $this->getEntryPointInfo()
                                );
                                $out->addHtml(
+                                       $this->getSkinCredits() .
                                        $this->getExtensionCredits() .
                                        $this->getParserTags() .
                                        $this->getParserFunctionHooks()
@@ -210,7 +211,9 @@ class SpecialVersion extends SpecialPage {
                // wikimarkup can be used.
                $software = array();
                $software['[https://www.mediawiki.org/ MediaWiki]'] = self::getVersionLinked();
-               $software['[http://www.php.net/ PHP]'] = phpversion() . " (" . PHP_SAPI . ")";
+               $phpKey = wfIsHHVM() ? '[http://hhvm.com/ HHVM]' :
+                       '[http://www.php.net/ PHP]';
+               $software[$phpKey] = PHP_VERSION . " (" . PHP_SAPI . ")";
                $software[$dbr->getSoftwareLink()] = $dbr->getServerInfo();
 
                // Allow a hook to add/remove items.
@@ -418,7 +421,7 @@ class SpecialVersion extends SpecialPage {
        }
 
        /**
-        * Generate wikitext showing extensions name, URL, author and description.
+        * Generate wikitext showing the name, URL, author and description of each extension.
         *
         * @return string Wikitext
         */
@@ -450,9 +453,11 @@ class SpecialVersion extends SpecialPage {
                        }
                }
 
+               $this->firstExtOpened = false;
                // Loop through the extension categories to display their extensions in the list.
                foreach ( $extensionTypes as $type => $message ) {
-                       if ( $type != 'other' ) {
+                       // Skins have a separate section
+                       if ( $type !== 'other' && $type !== 'skin' ) {
                                $out .= $this->getExtensionCategory( $type, $message );
                        }
                }
@@ -465,6 +470,27 @@ class SpecialVersion extends SpecialPage {
                return $out;
        }
 
+       /**
+        * Generate wikitext showing the name, URL, author and description of each skin.
+        *
+        * @return string Wikitext
+        */
+       function getSkinCredits() {
+               $out = Xml::element(
+                               'h2',
+                               array( 'id' => 'mw-version-skin' ),
+                               $this->msg( 'version-skins' )->text()
+                       ) .
+                       Xml::openElement( 'table', array( 'class' => 'wikitable plainlinks', 'id' => 'sv-skin' ) );
+
+               $this->firstExtOpened = false;
+               $out .= $this->getExtensionCategory( 'skin', null );
+
+               $out .= Xml::closeElement( 'table' );
+
+               return $out;
+       }
+
        /**
         * Obtains a list of installed parser tags and the associated H2 header
         *
@@ -795,7 +821,7 @@ class SpecialVersion extends SpecialPage {
                }
        }
 
-       private function openExtType( $text, $name = null ) {
+       private function openExtType( $text = null, $name = null ) {
                $out = '';
 
                $opt = array( 'colspan' => 5 );
@@ -811,13 +837,18 @@ class SpecialVersion extends SpecialPage {
                        $opt['id'] = "sv-$name";
                }
 
-               $out .= Html::rawElement( 'tr', array(),
-                       Html::element( 'th', $opt, $text )
-               );
+               if ( $text !== null ) {
+                       $out .= Html::rawElement( 'tr', array(),
+                               Html::element( 'th', $opt, $text )
+                       );
+               }
 
+               $firstHeadingMsg = ( $name === 'credits-skin' )
+                       ? 'version-skin-colheader-name'
+                       : 'version-ext-colheader-name';
                $out .= Html::openElement( 'tr' );
                $out .= Html::element( 'th', array( 'class' => 'mw-version-ext-col-label' ),
-                       $this->msg( 'version-ext-colheader-name' )->text() );
+                       $this->msg( $firstHeadingMsg )->text() );
                $out .= Html::element( 'th', array( 'class' => 'mw-version-ext-col-label' ),
                        $this->msg( 'version-ext-colheader-version' )->text() );
                $out .= Html::element( 'th', array( 'class' => 'mw-version-ext-col-label' ),
index fa68504..7d439fa 100644 (file)
@@ -74,17 +74,39 @@ class WantedFilesPage extends WantedQueryPage {
 
        function getQueryInfo() {
                return array(
-                       'tables' => array( 'imagelinks', 'image' ),
+                       'tables' => array(
+                               'imagelinks',
+                               'page',
+                               'redirect',
+                               'img1' => 'image',
+                               'img2' => 'image',
+                       ),
                        'fields' => array(
                                'namespace' => NS_FILE,
                                'title' => 'il_to',
                                'value' => 'COUNT(*)'
                        ),
-                       'conds' => array( 'img_name IS NULL' ),
+                       'conds' => array(
+                               'img1.img_name' => null,
+                               // We also need to exclude file redirects
+                               'img2.img_name' => null,
+                        ),
                        'options' => array( 'GROUP BY' => 'il_to' ),
-                       'join_conds' => array( 'image' =>
-                               array( 'LEFT JOIN',
-                                       array( 'il_to = img_name' )
+                       'join_conds' => array(
+                               'img1' => array( 'LEFT JOIN',
+                                       'il_to = img1.img_name'
+                               ),
+                               'page' => array( 'LEFT JOIN', array(
+                                       'il_to = page_title',
+                                       'page_namespace' => NS_FILE,
+                               ) ),
+                               'redirect' => array( 'LEFT JOIN', array(
+                                       'page_id = rd_from',
+                                       'rd_namespace' => NS_FILE,
+                                       'rd_interwiki' => ''
+                               ) ),
+                               'img2' => array( 'LEFT JOIN',
+                                       'rd_title = img2.img_name'
                                )
                        )
                );
index 9c28d06..21a1f9b 100644 (file)
@@ -88,9 +88,15 @@ class SpecialWatchlist extends ChangesListSpecialPage {
         */
        public function prefixSearchSubpages( $search, $limit = 10 ) {
                // See also SpecialEditWatchlist::prefixSearchSubpages
-               $subpages = array( 'clear', 'edit', 'raw' );
-               $escaped = preg_quote( $search );
-               return array_slice( preg_grep( "/^$escaped/i", $subpages ), 0, $limit );
+               return self::prefixSearchArray(
+                       $search,
+                       $limit,
+                       array(
+                               'clear',
+                               'edit',
+                               'raw',
+                       )
+               );
        }
 
        /**
index 9118701..a4240e2 100644 (file)
@@ -73,7 +73,7 @@ class UsercreateTemplate extends BaseTemplate {
                        <?php } ?>
                        </div>
 
-                       <div>
+                       <div class="mw-ui-vform-field">
                                <label for='wpName2'>
                                        <?php $this->msg( 'userlogin-yourname' ); ?>
 
@@ -92,7 +92,7 @@ class UsercreateTemplate extends BaseTemplate {
                                ?>
                        </div>
 
-                       <div>
+                       <div class="mw-ui-vform-field">
                                <?php if ( $this->data['createemail'] ) { ?>
                                        <label class="mw-ui-checkbox-label">
                                                <input name="wpCreateaccountMail" type="checkbox" value="1" id="wpCreateaccountMail" tabindex="2"
@@ -105,7 +105,7 @@ class UsercreateTemplate extends BaseTemplate {
                                <?php } ?>
                        </div>
 
-                       <div class="mw-row-password">
+                       <div class="mw-ui-vform-field mw-row-password">
                                <label for='wpPassword2'><?php $this->msg( 'userlogin-yourpassword' ); ?></label>
                                <?php
                                echo Html::input( 'wpPassword', null, 'password', array(
@@ -127,7 +127,7 @@ class UsercreateTemplate extends BaseTemplate {
                                        $select->addOption( $dom );
                                }
                        ?>
-                               <div id="mw-user-domain-section">
+                               <div class="mw-ui-vform-field" id="mw-user-domain-section">
                                        <label for="wpDomain"><?php $this->msg( 'yourdomainname' ); ?></label>
                                        <div class="mw-input">
                                                <?php echo $select->getHTML(); ?>
@@ -135,7 +135,7 @@ class UsercreateTemplate extends BaseTemplate {
                                </div>
                        <?php } ?>
 
-                       <div class="mw-row-password">
+                       <div class="mw-ui-vform-field mw-row-password">
                                <label for='wpRetype'><?php $this->msg( 'createacct-yourpasswordagain' ); ?></label>
                                <?php
                                echo Html::input( 'wpRetype', null, 'password', array(
@@ -149,7 +149,7 @@ class UsercreateTemplate extends BaseTemplate {
                                ?>
                        </div>
 
-                       <div>
+                       <div class="mw-ui-vform-field">
                                <?php if ( $this->data['useemail'] ) { ?>
                                        <label for='wpEmail'>
                                                <?php
@@ -174,7 +174,7 @@ class UsercreateTemplate extends BaseTemplate {
                        </div>
 
                        <?php if ( $this->data['userealname'] ) { ?>
-                               <div>
+                               <div class="mw-ui-vform-field">
                                        <label for='wpRealName'><?php $this->msg( 'createacct-realname' ); ?></label>
                                        <input type='text' class='mw-input loginText' name="wpRealName" id="wpRealName"
                                                tabindex="7"
@@ -186,7 +186,7 @@ class UsercreateTemplate extends BaseTemplate {
                        <?php } ?>
 
                        <?php if ( $this->data['usereason'] ) { ?>
-                               <div>
+                               <div class="mw-ui-vform-field">
                                        <label for='wpReason'><?php $this->msg( 'createacct-reason' ); ?></label>
                                        <?php echo Html::input( 'wpReason', $this->data['reason'], 'text', array(
                                                'class' => 'mw-input loginText',
@@ -202,7 +202,7 @@ class UsercreateTemplate extends BaseTemplate {
                        $tabIndex = 9;
                        if ( isset( $this->data['extraInput'] ) && is_array( $this->data['extraInput'] ) ) {
                                foreach ( $this->data['extraInput'] as $inputItem ) { ?>
-                                       <div>
+                                       <div class="mw-ui-vform-field">
                                                <?php
                                                // If it's a checkbox, output the whole thing (assume it has a msg).
                                                if ( $inputItem['type'] == 'checkbox' ) {
@@ -252,7 +252,7 @@ class UsercreateTemplate extends BaseTemplate {
                        // so skip one index.
                        $tabIndex++;
                        ?>
-                       <div class="mw-submit">
+                       <div class="mw-ui-vform-field mw-submit">
                                <?php
                                echo Html::input(
                                        'wpCreateaccount',
index 0aad07d..19ea20b 100644 (file)
@@ -55,7 +55,7 @@ class UserloginTemplate extends BaseTemplate {
                                </div>
                        <?php } ?>
 
-                       <div>
+                       <div class="mw-ui-vform-field">
                                <label for='wpName1'>
                                        <?php
                                        $this->msg( 'userlogin-yourname' );
@@ -85,7 +85,7 @@ class UserloginTemplate extends BaseTemplate {
                                ?>
                        </div>
 
-                       <div>
+                       <div class="mw-ui-vform-field">
                                <label for='wpPassword1'>
                                        <?php
                                        $this->msg( 'userlogin-yourpassword' );
@@ -120,7 +120,7 @@ class UserloginTemplate extends BaseTemplate {
                                        $select->addOption( $dom );
                                }
                        ?>
-                               <div id="mw-user-domain-section">
+                               <div class="mw-ui-vform-field" id="mw-user-domain-section">
                                        <label for='wpDomain'><?php $this->msg( 'yourdomainname' ); ?></label>
                                        <?php echo $select->getHTML(); ?>
                                </div>
@@ -132,7 +132,7 @@ class UserloginTemplate extends BaseTemplate {
                        }
                        ?>
 
-                       <div>
+                       <div class="mw-ui-vform-field">
                                <?php if ( $this->data['canremember'] ) { ?>
                                        <label class="mw-ui-checkbox-label">
                                                <input name="wpRemember" type="checkbox" value="1" id="wpRemember" tabindex="4"
@@ -145,7 +145,7 @@ class UserloginTemplate extends BaseTemplate {
                                <?php } ?>
                        </div>
 
-                       <div>
+                       <div class="mw-ui-vform-field">
                                <?php
                                echo Html::input( 'wpLoginAttempt', $this->getMsg( 'pt-login-button' )->text(), 'submit', array(
                                        'id' => 'wpLoginAttempt',
@@ -154,7 +154,8 @@ class UserloginTemplate extends BaseTemplate {
                                ) );
                                ?>
                        </div>
-                       <div id="mw-userlogin-help">
+
+                       <div class="mw-ui-vform-field" id="mw-userlogin-help">
                                <?php
                                echo Html::element(
                                        'a',
@@ -167,6 +168,7 @@ class UserloginTemplate extends BaseTemplate {
                                );
                                ?>
                        </div>
+
                        <?php if ( $this->haveData( 'createOrLoginHref' ) ) { ?>
                                <?php if ( $this->data['loggedin'] ) { ?>
                                        <div id="mw-createaccount-another">
index d6c666a..8798de5 100644 (file)
@@ -277,8 +277,16 @@ class MediaWikiTitleCodec implements TitleFormatter, TitleParser {
                                        foreach ( $this->localInterwikis as $localIW ) {
                                                if ( 0 == strcasecmp( $parts['interwiki'], $localIW ) ) {
                                                        if ( $dbkey == '' ) {
-                                                               # Can't have an empty self-link
-                                                               throw new MalformedTitleException( 'Local interwiki with empty title: ' . $text );
+                                                               # Empty self-links should point to the Main Page, to ensure
+                                                               # compatibility with cross-wiki transclusions and the like.
+                                                               $mainPage = Title::newMainPage();
+                                                               return array(
+                                                                       'interwiki' => $mainPage->getInterwiki(),
+                                                                       'fragment' => $mainPage->getFragment(),
+                                                                       'namespace' => $mainPage->getNamespace(),
+                                                                       'dbkey' => $mainPage->getDBkey(),
+                                                                       'user_case_dbkey' => $mainPage->getUserCaseDBKey()
+                                                               );
                                                        }
                                                        $parts['interwiki'] = '';
 
index b8ca434..5defd45 100644 (file)
@@ -118,7 +118,7 @@ abstract class UploadBase {
         * Can be overridden by subclasses.
         *
         * @param User $user
-        * @return bool
+        * @return bool|string
         */
        public static function isAllowed( $user ) {
                foreach ( array( 'upload', 'edit' ) as $permission ) {
@@ -435,7 +435,7 @@ abstract class UploadBase {
                }
 
                $this->mFileProps = FSFile::getPropsFromPath( $this->mTempPath, $this->mFinalExtension );
-               $mime = $this->mFileProps['file-mime'];
+               $mime = $this->mFileProps['mime'];
 
                if ( $wgVerifyMimeType ) {
                        # XXX: Missing extension will be caught by validateName() via getTitle()
@@ -1390,12 +1390,19 @@ abstract class UploadBase {
                                return true;
                        }
 
-                       # href with javascript target
-                       if ( $stripped == 'href' && strpos( strtolower( $value ), 'javascript:' ) !== false ) {
-                               wfDebug( __METHOD__
-                                       . ": Found script in href attribute '$attrib'='$value' in uploaded file.\n" );
+                       # href with non-local target (don't allow http://, javascript:, etc)
+                       if ( $stripped == 'href'
+                               && strpos( $value, 'data:' ) !== 0
+                               && strpos( $value, '#' ) !== 0
+                       ) {
+                               if ( !( $strippedElement === 'a'
+                                       && preg_match( '!^https?://!im', $value ) )
+                               ) {
+                                       wfDebug( __METHOD__ . ": Found href attribute <$strippedElement "
+                                               . "'$attrib'='$value' in uploaded file.\n" );
 
-                               return true;
+                                       return true;
+                               }
                        }
 
                        # href with embedded svg as target
index e2013b0..0ce90c1 100644 (file)
@@ -285,7 +285,7 @@ class UIDGenerator {
                if ( $cache ) {
                        $counter = $cache->incr( $bucket, $count );
                        if ( $counter === false ) {
-                               if ( !$cache->add( $bucket, $count ) ) {
+                               if ( !$cache->add( $bucket, (int)$count ) ) {
                                        throw new MWException( 'Unable to set value to ' . get_class( $cache ) );
                                }
                                $counter = $count;
index e505b28..bf30455 100644 (file)
@@ -1030,6 +1030,18 @@ class Language {
                return $this->getMessageFromDB( self::$mHijriCalendarMonthMsgs[$key - 1] );
        }
 
+       /**
+        * Pass through result from $dateTimeObj->format()
+        */
+       private static function dateTimeObjFormat( &$dateTimeObj, $ts, $zone, $code ) {
+               if ( !$dateTimeObj ) {
+                       $dateTimeObj = DateTime::createFromFormat(
+                               'YmdHis', $ts, $zone ?: new DateTimeZone( 'UTC' )
+                       );
+               }
+               return $dateTimeObj->format( $code );
+       }
+
        /**
         * This is a workalike of PHP's date() function, but with better
         * internationalisation, a reduced set of format characters, and a better
@@ -1090,12 +1102,14 @@ class Language {
         *      YYYYMMDDHHMMSS
         *      01234567890123
         * @param DateTimeZone $zone Timezone of $ts
+        * @param[out] int $ttl The amount of time (in seconds) the output may be cached for.
+        * Only makes sense if $ts is the current time.
         * @todo handling of "o" format character for Iranian, Hebrew, Hijri & Thai?
         *
         * @throws MWException
         * @return string
         */
-       function sprintfDate( $format, $ts, DateTimeZone $zone = null ) {
+       function sprintfDate( $format, $ts, DateTimeZone $zone = null, &$ttl = null ) {
                $s = '';
                $raw = false;
                $roman = false;
@@ -1109,6 +1123,25 @@ class Language {
                $minguo = false;
                $tenno = false;
 
+               $usedSecond = false;
+               $usedMinute = false;
+               $usedHour = false;
+               $usedAMPM = false;
+               $usedDay = false;
+               $usedWeek = false;
+               $usedMonth = false;
+               $usedYear = false;
+               $usedISOYear = false;
+               $usedIsLeapYear = false;
+
+               $usedHebrewMonth = false;
+               $usedIranianMonth = false;
+               $usedHijriMonth = false;
+               $usedHebrewYear = false;
+               $usedIranianYear = false;
+               $usedHijriYear = false;
+               $usedTennoYear = false;
+
                if ( strlen( $ts ) !== 14 ) {
                        throw new MWException( __METHOD__ . ": The timestamp $ts should have 14 characters" );
                }
@@ -1152,213 +1185,247 @@ class Language {
                                        $hebrewNum = true;
                                        break;
                                case 'xg':
+                                       $usedMonth = true;
                                        $s .= $this->getMonthNameGen( substr( $ts, 4, 2 ) );
                                        break;
                                case 'xjx':
+                                       $usedHebrewMonth = true;
                                        if ( !$hebrew ) {
                                                $hebrew = self::tsToHebrew( $ts );
                                        }
                                        $s .= $this->getHebrewCalendarMonthNameGen( $hebrew[1] );
                                        break;
                                case 'd':
+                                       $usedDay = true;
                                        $num = substr( $ts, 6, 2 );
                                        break;
                                case 'D':
-                                       if ( !$dateTimeObj ) {
-                                               $dateTimeObj = DateTime::createFromFormat(
-                                                       'YmdHis', $ts, $zone ?: new DateTimeZone( 'UTC' )
-                                               );
-                                       }
-                                       $s .= $this->getWeekdayAbbreviation( $dateTimeObj->format( 'w' ) + 1 );
+                                       $usedDay = true;
+                                       $s .= $this->getWeekdayAbbreviation( Language::dateTimeObjFormat( $dateTimeObj, $ts, $zone, 'w' ) + 1 );
                                        break;
                                case 'j':
+                                       $usedDay = true;
                                        $num = intval( substr( $ts, 6, 2 ) );
                                        break;
                                case 'xij':
+                                       $usedDay = true;
                                        if ( !$iranian ) {
                                                $iranian = self::tsToIranian( $ts );
                                        }
                                        $num = $iranian[2];
                                        break;
                                case 'xmj':
+                                       $usedDay = true;
                                        if ( !$hijri ) {
                                                $hijri = self::tsToHijri( $ts );
                                        }
                                        $num = $hijri[2];
                                        break;
                                case 'xjj':
+                                       $usedDay = true;
                                        if ( !$hebrew ) {
                                                $hebrew = self::tsToHebrew( $ts );
                                        }
                                        $num = $hebrew[2];
                                        break;
                                case 'l':
-                                       if ( !$dateTimeObj ) {
-                                               $dateTimeObj = DateTime::createFromFormat(
-                                                       'YmdHis', $ts, $zone ?: new DateTimeZone( 'UTC' )
-                                               );
-                                       }
-                                       $s .= $this->getWeekdayName( $dateTimeObj->format( 'w' ) + 1 );
+                                       $usedDay = true;
+                                       $s .= $this->getWeekdayName( Language::dateTimeObjFormat( $dateTimeObj, $ts, $zone, 'w' ) + 1 );
                                        break;
                                case 'F':
+                                       $usedMonth = true;
                                        $s .= $this->getMonthName( substr( $ts, 4, 2 ) );
                                        break;
                                case 'xiF':
+                                       $usedIranianMonth = true;
                                        if ( !$iranian ) {
                                                $iranian = self::tsToIranian( $ts );
                                        }
                                        $s .= $this->getIranianCalendarMonthName( $iranian[1] );
                                        break;
                                case 'xmF':
+                                       $usedHijriMonth = true;
                                        if ( !$hijri ) {
                                                $hijri = self::tsToHijri( $ts );
                                        }
                                        $s .= $this->getHijriCalendarMonthName( $hijri[1] );
                                        break;
                                case 'xjF':
+                                       $usedHebrewMonth = true;
                                        if ( !$hebrew ) {
                                                $hebrew = self::tsToHebrew( $ts );
                                        }
                                        $s .= $this->getHebrewCalendarMonthName( $hebrew[1] );
                                        break;
                                case 'm':
+                                       $usedMonth = true;
                                        $num = substr( $ts, 4, 2 );
                                        break;
                                case 'M':
+                                       $usedMonth = true;
                                        $s .= $this->getMonthAbbreviation( substr( $ts, 4, 2 ) );
                                        break;
                                case 'n':
+                                       $usedMonth = true;
                                        $num = intval( substr( $ts, 4, 2 ) );
                                        break;
                                case 'xin':
+                                       $usedIranianMonth = true;
                                        if ( !$iranian ) {
                                                $iranian = self::tsToIranian( $ts );
                                        }
                                        $num = $iranian[1];
                                        break;
                                case 'xmn':
+                                       $usedHijriMonth = true;
                                        if ( !$hijri ) {
                                                $hijri = self::tsToHijri ( $ts );
                                        }
                                        $num = $hijri[1];
                                        break;
                                case 'xjn':
+                                       $usedHebrewMonth = true;
                                        if ( !$hebrew ) {
                                                $hebrew = self::tsToHebrew( $ts );
                                        }
                                        $num = $hebrew[1];
                                        break;
                                case 'xjt':
+                                       $usedHebrewMonth = true;
                                        if ( !$hebrew ) {
                                                $hebrew = self::tsToHebrew( $ts );
                                        }
                                        $num = $hebrew[3];
                                        break;
                                case 'Y':
+                                       $usedYear = true;
                                        $num = substr( $ts, 0, 4 );
                                        break;
                                case 'xiY':
+                                       $usedIranianYear = true;
                                        if ( !$iranian ) {
                                                $iranian = self::tsToIranian( $ts );
                                        }
                                        $num = $iranian[0];
                                        break;
                                case 'xmY':
+                                       $usedHijriYear = true;
                                        if ( !$hijri ) {
                                                $hijri = self::tsToHijri( $ts );
                                        }
                                        $num = $hijri[0];
                                        break;
                                case 'xjY':
+                                       $usedHebrewYear = true;
                                        if ( !$hebrew ) {
                                                $hebrew = self::tsToHebrew( $ts );
                                        }
                                        $num = $hebrew[0];
                                        break;
                                case 'xkY':
+                                       $usedYear = true;
                                        if ( !$thai ) {
                                                $thai = self::tsToYear( $ts, 'thai' );
                                        }
                                        $num = $thai[0];
                                        break;
                                case 'xoY':
+                                       $usedYear = true;
                                        if ( !$minguo ) {
                                                $minguo = self::tsToYear( $ts, 'minguo' );
                                        }
                                        $num = $minguo[0];
                                        break;
                                case 'xtY':
+                                       $usedTennoYear = true;
                                        if ( !$tenno ) {
                                                $tenno = self::tsToYear( $ts, 'tenno' );
                                        }
                                        $num = $tenno[0];
                                        break;
                                case 'y':
+                                       $usedYear = true;
                                        $num = substr( $ts, 2, 2 );
                                        break;
                                case 'xiy':
+                                       $usedIranianYear = true;
                                        if ( !$iranian ) {
                                                $iranian = self::tsToIranian( $ts );
                                        }
                                        $num = substr( $iranian[0], -2 );
                                        break;
                                case 'a':
+                                       $usedAMPM = true;
                                        $s .= intval( substr( $ts, 8, 2 ) ) < 12 ? 'am' : 'pm';
                                        break;
                                case 'A':
+                                       $usedAMPM = true;
                                        $s .= intval( substr( $ts, 8, 2 ) ) < 12 ? 'AM' : 'PM';
                                        break;
                                case 'g':
+                                       $usedHour = true;
                                        $h = substr( $ts, 8, 2 );
                                        $num = $h % 12 ? $h % 12 : 12;
                                        break;
                                case 'G':
+                                       $usedHour = true;
                                        $num = intval( substr( $ts, 8, 2 ) );
                                        break;
                                case 'h':
+                                       $usedHour = true;
                                        $h = substr( $ts, 8, 2 );
                                        $num = sprintf( '%02d', $h % 12 ? $h % 12 : 12 );
                                        break;
                                case 'H':
+                                       $usedHour = true;
                                        $num = substr( $ts, 8, 2 );
                                        break;
                                case 'i':
+                                       $usedMinute = true;
                                        $num = substr( $ts, 10, 2 );
                                        break;
                                case 's':
+                                       $usedSecond = true;
                                        $num = substr( $ts, 12, 2 );
                                        break;
                                case 'c':
                                case 'r':
+                                       $usedSecond = true;
+                                       // fall through
                                case 'e':
                                case 'O':
                                case 'P':
                                case 'T':
-                                       // Pass through string from $dateTimeObj->format()
-                                       if ( !$dateTimeObj ) {
-                                               $dateTimeObj = DateTime::createFromFormat(
-                                                       'YmdHis', $ts, $zone ?: new DateTimeZone( 'UTC' )
-                                               );
-                                       }
-                                       $s .= $dateTimeObj->format( $code );
+                                       $s .= Language::dateTimeObjFormat( $dateTimeObj, $ts, $zone, $code );
                                        break;
                                case 'w':
                                case 'N':
                                case 'z':
+                                       $usedDay = true;
+                                       $num = Language::dateTimeObjFormat( $dateTimeObj, $ts, $zone, $code );
+                                       break;
                                case 'W':
+                                       $usedWeek = true;
+                                       $num = Language::dateTimeObjFormat( $dateTimeObj, $ts, $zone, $code );
+                                       break;
                                case 't':
+                                       $usedMonth = true;
+                                       $num = Language::dateTimeObjFormat( $dateTimeObj, $ts, $zone, $code );
+                                       break;
                                case 'L':
+                                       $usedIsLeapYear = true;
+                                       $num = Language::dateTimeObjFormat( $dateTimeObj, $ts, $zone, $code );
+                                       break;
                                case 'o':
+                                       $usedISOYear = true;
+                                       $num = Language::dateTimeObjFormat( $dateTimeObj, $ts, $zone, $code );
+                                       break;
                                case 'U':
+                                       $usedSecond = true;
+                                       // fall through
                                case 'I':
                                case 'Z':
-                                       // Pass through number from $dateTimeObj->format()
-                                       if ( !$dateTimeObj ) {
-                                               $dateTimeObj = DateTime::createFromFormat(
-                                                       'YmdHis', $ts, $zone ?: new DateTimeZone( 'UTC' )
-                                               );
-                                       }
-                                       $num = $dateTimeObj->format( $code );
+                                       $num = Language::dateTimeObjFormat( $dateTimeObj, $ts, $zone, $code );
                                        break;
                                case '\\':
                                        # Backslash escaping
@@ -1403,6 +1470,62 @@ class Language {
                        }
                }
 
+               if ( $usedSecond ) {
+                       $ttl = 1;
+               } elseif ( $usedMinute ) {
+                       $ttl = 60 - substr( $ts, 12, 2 );
+               } elseif ( $usedHour ) {
+                       $ttl = 3600 - substr( $ts, 10, 2 ) * 60 - substr( $ts, 12, 2 );
+               } elseif ( $usedAMPM ) {
+                       $ttl = 43200 - ( substr( $ts, 8, 2 ) % 12 ) * 3600 - substr( $ts, 10, 2 ) * 60 - substr( $ts, 12, 2 );
+               } elseif ( $usedDay || $usedHebrewMonth || $usedIranianMonth || $usedHijriMonth || $usedHebrewYear || $usedIranianYear || $usedHijriYear || $usedTennoYear ) {
+                       // @todo Someone who understands the non-Gregorian calendars should write proper logic for them
+                       // so that they don't need purged every day.
+                       $ttl = 86400 - substr( $ts, 8, 2 ) * 3600 - substr( $ts, 10, 2 ) * 60 - substr( $ts, 12, 2 );
+               } else {
+                       $possibleTtls = array();
+                       $timeRemainingInDay = 86400 - substr( $ts, 8, 2 ) * 3600 - substr( $ts, 10, 2 ) * 60 - substr( $ts, 12, 2 );
+                       if ( $usedWeek ) {
+                               $possibleTtls[] = ( 7 - Language::dateTimeObjFormat( $dateTimeObj, $ts, $zone, 'N' ) ) * 86400 + $timeRemainingInDay;
+                       } elseif ( $usedISOYear ) {
+                               // December 28th falls on the last ISO week of the year, every year.
+                               // The last ISO week of a year can be 52 or 53.
+                               $lastWeekOfISOYear = DateTime::createFromFormat( 'Ymd', substr( $ts, 0, 4 ) . '1228', $zone ?: new DateTimeZone( 'UTC' ) )->format( 'W' );
+                               $currentISOWeek = Language::dateTimeObjFormat( $dateTimeObj, $ts, $zone, 'W' );
+                               $weeksRemaining = $lastWeekOfISOYear - $currentISOWeek;
+                               $timeRemainingInWeek = ( 7 - Language::dateTimeObjFormat( $dateTimeObj, $ts, $zone, 'N' ) ) * 86400 + $timeRemainingInDay;
+                               $possibleTtls[] = $weeksRemaining * 604800 + $timeRemainingInWeek;
+                       }
+
+                       if ( $usedMonth ) {
+                               $possibleTtls[] = ( Language::dateTimeObjFormat( $dateTimeObj, $ts, $zone, 't' ) - substr( $ts, 6, 2 ) ) * 86400 + $timeRemainingInDay;
+                       } elseif ( $usedYear ) {
+                               $possibleTtls[] = ( Language::dateTimeObjFormat( $dateTimeObj, $ts, $zone, 'L' ) + 364 - Language::dateTimeObjFormat( $dateTimeObj, $ts, $zone, 'z' ) ) * 86400
+                                       + $timeRemainingInDay;
+                       } elseif ( $usedIsLeapYear ) {
+                               $year = substr( $ts, 0, 4 );
+                               $timeRemainingInYear = ( Language::dateTimeObjFormat( $dateTimeObj, $ts, $zone, 'L' ) + 364 - Language::dateTimeObjFormat( $dateTimeObj, $ts, $zone, 'z' ) ) * 86400
+                                       + $timeRemainingInDay;
+                               $mod = $year % 4;
+                               if ( $mod || ( !( $year % 100 ) && $year % 400 ) ) {
+                                       // this isn't a leap year. see when the next one starts
+                                       $nextCandidate = $year - $mod + 4;
+                                       if ( $nextCandidate % 100 || !( $nextCandidate % 400 ) ) {
+                                               $possibleTtls[] = ( $nextCandidate - $year - 1 ) * 365 * 86400 + $timeRemainingInYear;
+                                       } else {
+                                               $possibleTtls[] = ( $nextCandidate - $year + 3 ) * 365 * 86400 + $timeRemainingInYear;
+                                       }
+                               } else {
+                                       // this is a leap year, so the next year isn't
+                                       $possibleTtls[] = $timeRemainingInYear;
+                               }
+                       }
+
+                       if ( $possibleTtls ) {
+                               $ttl = min( $possibleTtls );
+                       }
+               }
+
                return $s;
        }
 
index 9c46ab1..c9e75e0 100644 (file)
        'tt-latn' => 'tatarça',        # Tatar (Latin script)
        'tum' => 'chiTumbuka',  # Tumbuka
        'tw' => 'Twi',                  # Twi, (FIXME!)
-       'ty' => 'Reo Mā`ohi',  # Tahitian
+       'ty' => 'reo tahiti',   # Tahitian
        'tyv' => 'тыва дыл',     # Tyvan
        'udm' => 'удмурт',        # Udmurt
        'ug' => 'ئۇيغۇرچە / Uyghurche', # Uyghur (multiple scripts - defaults to Arabic)
index 740663f..226e313 100644 (file)
@@ -65,6 +65,8 @@ class LanguageRu extends Language {
                                                $word = join( '', array_slice( $chars[0], 0, -2 ) ) . 'тей';
                                        } elseif ( join( '', array_slice( $chars[0], -2 ) ) === 'ды' ) {
                                                $word = join( '', array_slice( $chars[0], 0, -2 ) ) . 'дов';
+                                       } elseif ( join( '', array_slice( $chars[0], -1 ) ) === 'д' ) {
+                                               $word = join( '', array_slice( $chars[0], 0, -1 ) ) . 'да';
                                        } elseif ( join( '', array_slice( $chars[0], -3 ) ) === 'ник' ) {
                                                $word = join( '', array_slice( $chars[0], 0, -3 ) ) . 'ника';
                                        } elseif ( join( '', array_slice( $chars[0], -3 ) ) === 'ные' ) {
@@ -91,6 +93,8 @@ class LanguageRu extends Language {
                                                $word = join( '', array_slice( $chars[0], 0, -2 ) ) . 'тях';
                                        } elseif ( join( '', array_slice( $chars[0], -2 ) ) === 'ды' ) {
                                                $word = join( '', array_slice( $chars[0], 0, -2 ) ) . 'дах';
+                                       } elseif ( join( '', array_slice( $chars[0], -1 ) ) === 'д' ) {
+                                               $word = join( '', array_slice( $chars[0], 0, -1 ) ) . 'де';
                                        } elseif ( join( '', array_slice( $chars[0], -3 ) ) === 'ник' ) {
                                                $word = join( '', array_slice( $chars[0], 0, -3 ) ) . 'нике';
                                        } elseif ( join( '', array_slice( $chars[0], -3 ) ) === 'ные' ) {
index 4920e13..545f19a 100644 (file)
        "qbmyoptions": "Laman lôn",
        "faq": "Teunanyöng Umom",
        "faqpage": "Project:FAQ",
-       "vector-action-addsection": "Tamah bhaih",
-       "vector-action-delete": "Sampôh",
-       "vector-action-move": "Pupinah",
-       "vector-action-protect": "Peulindông",
-       "vector-action-undelete": "Bateuë sampôh",
-       "vector-action-unprotect": "Gantoe neulindông",
-       "vector-view-create": "Peugöt",
-       "vector-view-edit": "Andam",
-       "vector-view-history": "Eu riwayat",
-       "vector-view-view": "Beuët",
-       "vector-view-viewsource": "Eu nè",
        "actions": "Buët",
        "namespaces": "Ruweuëng nan",
        "variants": "Ragam",
        "searchmenu-exists": "'''Na laman ngön nan \"[[:$1]]\" bak wiki nyoe.'''",
        "searchmenu-new": "<strong>Peugöt laman \"[[:$1]]\" bak wiki nyoë!</strong> {{PLURAL:$2|0=|Eu cit laman nyang geurumpok nibak meunita droëneuh.|Eu cit hasé mita nyang geurumpok.}}",
        "searchprofile-articles": "Laman asoë",
-       "searchprofile-project": "Laman Beunantu ngön Buët",
        "searchprofile-images": "Multimedia",
        "searchprofile-everything": "Ban dum",
        "searchprofile-advanced": "Tingkat lanjut",
        "searchprofile-articles-tooltip": "Mita bak $1",
-       "searchprofile-project-tooltip": "Mita bak $1",
        "searchprofile-images-tooltip": "Mita beureukaih",
        "searchprofile-everything-tooltip": "Mita ban dum laman asoë (rôh ôn marit)",
        "searchprofile-advanced-tooltip": "Mita bak ruweuëng nan meupat-pat",
        "allowemail": "Peuudép surat-e nibak ureueng ngui la'én",
        "prefs-searchoptions": "Mita",
        "prefs-namespaces": "Ruweuëng nan",
-       "defaultns": "Atawa neumita lam ruweueng nan nyoe:",
        "default": "meuneumat",
        "prefs-files": "Beureukaih",
        "youremail": "Surat-e:",
index 838f0e6..bae51c9 100644 (file)
        "qbmyoptions": "صفحاتي",
        "faq": "الأسئلة الأكثر تكرارا",
        "faqpage": "Project:أسئلة متكررة",
-       "vector-action-addsection": "أضف موضوعا",
-       "vector-action-delete": "احذف",
-       "vector-action-move": "انقل",
-       "vector-action-protect": "احم",
-       "vector-action-undelete": "استرجع الحذف",
-       "vector-action-unprotect": "غير الحماية",
-       "vector-view-create": "أنشئ",
-       "vector-view-edit": "Baddel",
-       "vector-view-history": "Warri l'historique",
-       "vector-view-view": "Aqra",
-       "vector-view-viewsource": "اعرض المصدر",
        "actions": "Aεmel",
        "namespaces": "El espaces de noms",
        "variants": "Anweε",
        "searchmenu-exists": "'''famma ss'af7a ismha \"[[:$1]]\" fi hedha el wiki.'''",
        "searchmenu-new": "'''أنشئ الصفحة \"[[:$1]]\" في هذا الويكي!'''",
        "searchprofile-articles": "Safħat mtaε contenu",
-       "searchprofile-project": "Safħat mtaε elmouεawna w les projets",
        "searchprofile-images": "Multimédia",
        "searchprofile-everything": "Kol chay",
        "searchprofile-advanced": "Avancé",
        "searchprofile-articles-tooltip": "Farkes fi $1",
-       "searchprofile-project-tooltip": "Farkis fi $1",
        "searchprofile-images-tooltip": "Farkes f'elfichiers",
        "searchprofile-everything-tooltip": "Farkes kol chay (ħatta safħat leħdith)",
        "searchprofile-advanced-tooltip": "Ekhtar les espaces de noms elli bech tfarkes εlihom",
index f980f19..c3e146a 100644 (file)
        "searchrelated": "verwante",
        "searchall": "alle",
        "showingresults": "Hier volg {{PLURAL:$1|'''1''' resultaat|'''$1''' resultate}} vanaf #'''$2'''.",
-       "showingresultsnum": "Hier onder {{PLURAL:$3|is '''1''' resultaat|is '''$3''' resultate}} vanaf #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Resultaat '''$1''' van '''$3'''|Resultate '''$1 - $2''' van '''$3'''}} vir '''$4'''",
        "search-nonefound": "Daar is geen resultate vir u soekopdrag nie.",
        "powersearch-legend": "Gevorderde soektog",
index 4ebee10..df26585 100644 (file)
        "qbmyoptions": "Faqet e mija",
        "faq": "Pyetjet e shpeshta",
        "faqpage": "Project:Pyetjet e shpeshta",
-       "vector-action-addsection": "Shto temë",
-       "vector-action-delete": "Fshij",
-       "vector-action-move": "Zhvendos",
-       "vector-action-protect": "Mbroj",
-       "vector-action-undelete": "Kthe fshimjen mbrapsht",
-       "vector-action-unprotect": "Hiq mbrojtjen",
-       "vector-view-create": "Krijo",
-       "vector-view-edit": "Redakto",
-       "vector-view-history": "Shih historinë",
-       "vector-view-view": "Lexo",
-       "vector-view-viewsource": "Shih kodin",
        "actions": "Veprimet",
        "namespaces": "Hapësinat",
        "variants": "Variantet",
        "editundo": "ktheje",
        "searchresults": "Rezultatet e kërkimit",
        "searchresults-title": "Rezultatet e kërkimit për \"$1\"",
-       "toomanymatches": "Ka tepër shumë përputhje, provoni nji kërkesë mâ të ngushtë",
        "titlematches": "Tituj që përputhen",
        "textmatches": "Përputhje në tekst",
        "notextmatches": "Nuk ka përputhje tekstuale në asnji faqe",
        "searchmenu-exists": "'''Në këtë wiki âsht nji faqe me titullin \"[[:$1]]\"'''",
        "searchmenu-new": "'''Krijo faqen \"[[:$1]]\" në këtë wiki!'''",
        "searchprofile-articles": "Faqet me përmbajtje",
-       "searchprofile-project": "Faqet e ndihmës dhe projekteve",
        "searchprofile-images": "Multimedia",
        "searchprofile-everything": "Gjithçka",
        "searchprofile-advanced": "Detajshëm",
        "searchprofile-articles-tooltip": "Kërko në $1",
-       "searchprofile-project-tooltip": "Kërko në $1",
        "searchprofile-images-tooltip": "Kërko skedarë",
        "searchprofile-everything-tooltip": "Kërko krejt përmbajtjen (përfshi edhe faqet e diskutimit)",
        "searchprofile-advanced-tooltip": "Kërkimi në hapësina",
        "search-interwiki-default": "$1 rezultate:",
        "search-interwiki-more": "(mâ shumë)",
        "search-relatedarticle": "Të ngjajshme",
-       "searcheverything-enable": "Kërko në tâna hapësinat",
        "searchrelated": "të ngjajshme",
        "searchall": "tâna",
        "showingresults": "Mâ poshtë {{PLURAL:$1|tregohet '''1''' rezultat|tregohen '''$1''' rezultate}} që nisin me #'''$2'''.",
-       "showingresultsnum": "Mâ poshtë {{PLURAL:$3|tregohet '''1''' rezultat|tregohen '''$3''' rezultate}} që nisin me #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Rezultati '''$1''' prej '''$3'''|Rezultatet '''$1 - $2''' prej '''$3'''}} për '''$4'''",
        "search-nonefound": "Nuk ka rezultate që përputhen me kërkesën.",
        "powersearch-legend": "Kërkimi i detajshëm",
        "allowemail": "Lejo emaila prej përdoruesve tjerë",
        "prefs-searchoptions": "Opcionet e kërkimit",
        "prefs-namespaces": "Hapësinat",
-       "defaultns": "Përndryshe kërko në këto hapësina:",
        "default": "e paracaktueme",
        "prefs-files": "Skedat",
        "prefs-custom-css": "CSS i përpunuem",
        "prefs-emailconfirm-label": "Konfirmimi i emailit:",
        "youremail": "Adresa e email-it*",
        "username": "Nofka e përdoruesit:",
-       "uid": "Nr. i identifikimit:",
        "prefs-memberingroups": "Anëtar i {{PLURAL:$1|grupit|grupeve}}:",
        "yourrealname": "Emri juej i vërtetë*",
        "yourlanguage": "Ndërfaqja gjuhësore",
        "booksources-go": "Shko",
        "log": "Regjistrat",
        "allpages": "Tâna faqet",
-       "alphaindexline": "$1 deri në $2",
        "prevpage": "Faqja paraprake ($1)",
        "allpagesfrom": "Trego faqet tue fillue me:",
        "allpagesto": "Trego faqet që mbarojnë me:",
        "tooltip-rollback": "\"Kthe mbrapa\" i kthen mbrapsht redaktimet e faqes aktuale prej kontribuuesit të fundit me nji klik",
        "tooltip-undo": "\"Zhbâne\" kthen mbrapsht këtë redaktim dhe çelë formularin e redaktimit në parapâmje.\nLejon dhânien e arsyes në përmbledhje.",
        "common.css": "/* CSSi i vendosun këtu ka me u zbatue në tâna dukjet */",
-       "cologneblue.css": "/* CSS i vendosun këtu ka me i prekë shfrytëzuesit e dukjes Cologne Blue */",
-       "monobook.css": "/* CSS i vednosun këtu ka me i prekë shfrytëzuesit e dukjes Monobook */",
-       "modern.css": "/* CSSi i vednosun këtu ka me i prekë shfrytëzuesit e dukjes Modern */",
-       "vector.css": "/* CSSi i vednosun këtu ka me i prekë shfrytëzuesit e dukjes Vector */",
        "print.css": "/* CSSi i vednosun këtu ka me e prekë pamjen e shtypjes */",
        "common.js": "/* Çdo JavaScript këtu ka me u ngarkue për të gjithë përdoruesit në secilën thirrje të faqes. */",
-       "cologneblue.js": "/* Çdo JavaScript këtu ka me u ngarkue për shfrytëzuesit që përdorin dukjen Cologne Blue */",
-       "monobook.js": "/* Çdo JavaScript këtu ka me u ngarkue për shfrytëzuesit që përdorin dukjen MonoBook */",
-       "modern.js": "/* Çdo JavaScript këtu ka me u ngarkue për shfrytëzuesit që përdorin dukjen Modern */",
-       "vector.js": "/* Çdo JavaScript këtu ka me u ngarkue për shfrytëzuesit që përdorin dukjen Vector */",
        "anonymous": "{{PLURAL:$1|Përdorues|Përdorues}} anonim të {{SITENAME}}",
        "siteuser": "Përdoruesi $1 i {{SITENAME}}",
        "lastmodifiedatby": "Kjo faqe âsht redaktue së fundi me $2, $1 prej $3.",
index f811ddf..20ad098 100644 (file)
        "searchrelated": "የተዛመደ",
        "searchall": "ሁሉ",
        "showingresults": "ከ ቁ.#<b>$2</b> ጀምሮ እስከ <b>$1</b> ውጤቶች ድረስ ከዚህ በታች ይታያሉ።",
-       "showingresultsnum": "ከ#'''$2''' ጀምሮ {{PLURAL:$3|'''1''' ውጤት|'''$3''' ውጤቶች}} ከዚህ ታች ማየት ይቻላል።",
        "showingresultsheader": "{{PLURAL:$5|ከ'''$3''' ውጤት ውስጥ '''$1'''|ከ'''$3''' ውጤቶች ውስጥ ከ'''$1''' እስከ '''$2'''}} ለ'''$4'''",
        "search-nonefound": "ለጥያቄው ምንም የሚስማማ ውጤት አልተገኘም።",
        "powersearch-legend": "ተጨማሪ ፍለጋ",
        "imgmultigoto": "ወደ ገጽ# $1 ለመሄድ",
        "table_pager_next": "ቀጥሎ ገጽ",
        "table_pager_prev": "ፊተኛው ገጽ",
-       "table_pager_first": "á\88\98á\8c\80á\88\98á\88­á\8b«á\8b\8d á\8c\8dጽ",
+       "table_pager_first": "á\88\98á\8c\80á\88\98á\88­á\8b«á\8b\8d á\8c\88ጽ",
        "table_pager_last": "መጨረሻው ገጽ",
        "table_pager_limit": "በየገጹ $1 መስመሮች",
        "table_pager_limit_submit": "ይታዩ",
index 1c2bcae..d804ec0 100644 (file)
        "qbmyoptions": "Pachinas propias",
        "faq": "Preguntas freqüents (FAQ)",
        "faqpage": "Project:Preguntas freqüents",
-       "vector-action-addsection": "Adhibir nueva sección",
-       "vector-action-delete": "Borrar",
-       "vector-action-move": "Tresladar",
-       "vector-action-protect": "Protecher",
-       "vector-action-undelete": "Restaurar",
-       "vector-action-unprotect": "Cambiar protección",
-       "vector-view-create": "Creyar",
-       "vector-view-edit": "Editar",
-       "vector-view-history": "Amostrar l'historial",
-       "vector-view-view": "Leyer",
-       "vector-view-viewsource": "Veyer o codigo fuent",
        "actions": "Accions",
        "namespaces": "Espacios de nombres",
        "variants": "Variants",
        "diff-multi-manyusers": "(No s'amuestra {{PLURAL:$1|una edición entremeya|$1 edicions entremeyas}} feitas por más {{PLURAL:$2|d'un usuario|de $2 usuarios}})",
        "searchresults": "Resultau d'a busca",
        "searchresults-title": "Resultaus de mirar \"$1\"",
-       "toomanymatches": "S'ha retornato masiadas coincidencias, por favor, torne a prebar con una consulta diferent",
        "titlematches": "Consonancias de títols de pachina",
        "textmatches": "Consonancias en o texto d'as pachinas",
        "notextmatches": "No bi ha garra consonancia en os textos d'as pachinas",
        "searchmenu-exists": "'''Bi ha una pachina clamada \"[[$1]]\" en ista wiki'''",
        "searchmenu-new": "<strong>Creyar a pachina \"[[:$1]]\" en iste wiki!</strong> {{PLURAL:$2|0=|Mire-se tamién a pachina que s'ha trobau.|Mire-se tamién os resultaus d'a busca.}}",
        "searchprofile-articles": "Pachinas de conteniu",
-       "searchprofile-project": "Pachinas d'aduya y d'o prochecto",
        "searchprofile-images": "Multimedia",
        "searchprofile-everything": "Tot",
        "searchprofile-advanced": "Abanzato",
        "searchprofile-articles-tooltip": "Mirar en $1",
-       "searchprofile-project-tooltip": "Mirar en $1",
        "searchprofile-images-tooltip": "Mirar fichers",
        "searchprofile-everything-tooltip": "Mirar en totz os contenius (tamién en as pachinas de descusión)",
        "searchprofile-advanced-tooltip": "Mirar en os siguients espacios de nombres",
        "search-interwiki-default": "$1 resultaus:",
        "search-interwiki-more": "(más)",
        "search-relatedarticle": "Relacionato",
-       "searcheverything-enable": "Mirar en totz os espacios de nombres",
        "searchrelated": "relacionato",
        "searchall": "totz",
        "showingresults": "Contino se bi {{PLURAL:$1|amuestra '''1''' resultau|amuestran '''$1''' resultaus}} prencipiando por o numero '''$2'''.",
-       "showingresultsnum": "Contino se bi {{PLURAL:$3|amuestra '''1''' resultau|amuestran os '''$3''' resultaus}} prencipiando por o numero '''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Resultau '''$1''' de '''$3'''|Resultaus '''$1-$2''' de '''$3'''}} ta '''$4'''",
        "search-nonefound": "No s'ha trobato garra resultau que cumpla os criterios.",
        "powersearch-legend": "Busca abanzata",
        "allowemail": "Activar a recepción de correu d'atros usuarios",
        "prefs-searchoptions": "Opcions de busca",
        "prefs-namespaces": "Espacios de nombres",
-       "defaultns": "Si no, mirar en istos espacios de nombres:",
        "default": "por defecto",
        "prefs-files": "fichers",
        "prefs-custom-css": "CSS presonalizato",
        "prefs-emailconfirm-label": "Confirmación de correu electronico:",
        "youremail": "Adreza de correu electronico:",
        "username": "Nombre d'usuario:",
-       "uid": "ID d'usuario:",
        "prefs-memberingroups": "Miembro {{PLURAL:$1|d'a colla|d'as collas}}:",
        "prefs-memberingroups-type": "$1",
        "prefs-registration": "Tiempo de rechistro:",
        "logempty": "No bi ha garra elemento en o rechistro con ixas carauteristicas.",
        "log-title-wildcard": "Mirar títols que prencipien con iste texto",
        "allpages": "Todas as pachinas",
-       "alphaindexline": "$1 a $2",
        "nextpage": "Siguient pachina ($1)",
        "prevpage": "Pachina anterior ($1)",
        "allpagesfrom": "Amostrar as pachinas que prencipien por:",
        "tooltip-preferences-save": "Alzar as preferencias",
        "tooltip-summary": "Escribir un breu resumen",
        "common.css": "/* Os estilos CSS definius aquí aplicarán a todas as apariencias (skins) */",
-       "cologneblue.css": "/* Os estilos CSS colocaus aquí s'aplicarán ta totz os usuarios que faigan servir l'apariencia Cologne Blue */",
-       "monobook.css": "/* Os estilos CSS colocaus aquí s'aplicarán ta totz os usuarios que faigan servir l'apariencia Monobook */",
-       "modern.css": "/* Os estilos CSS colocaus aquí s'aplicarán ta totz os usuarios que faigan servir l'apariencia Modern */",
-       "vector.css": "/* Os estilos CSS colocaus aquí s'aplicarán ta totz os usuarios que faigan servir l'apariencia Vector */",
        "print.css": "/* Os estilos CSS colocaus aquí afectarán a la impresión */",
        "noscript.css": "/* Os estilos CSS colocaus aquí s'aplicarán ta totz os usuarios que tiengan desactivato JavaScript */",
        "group-autoconfirmed.css": "/* Os estilos CSS colocaus aquí s'aplicarán nomás a os usuarios autoconfirmatos*/",
        "group-sysop.css": "/* Os estilos CSS colocaus aquí s'aplicarán nomás a os administradors*/",
        "group-bureaucrat.css": "/* Os estilos CSS colocaus aquí s'aplicarán nomás a os burocratas*/",
        "common.js": "/* Qualsiquier codigo Javascript escrito aquí se cargará ta totz os usuarios en cada carga de pachina */",
-       "cologneblue.js": "/* Qualsiquier codigo Javascript escrito aquí se cargará ta totz os usuarios que faigan servir l'apariencia Colonia azul */",
-       "monobook.js": "/* O codigo Javascript que se meta aquí será cargau por os usuarios faigan servir l'apariencia MonoBook */",
-       "modern.js": "/* O codigo Javascript que se meta aquí será cargau por os usuarios faigan servir l'apariencia Modern */",
-       "vector.js": "/* Qualsiquier codigo Javascript escrito aquí se cargará ta totz os usuarios que usen a piel Vector */",
        "group-autoconfirmed.js": "/* Qualsiquier codigo Javascript escrito aquí se cargará nomás ta os usuarios autoconfirmatos */",
        "group-bot.js": "/* Qualsiquier codigo Javascript escrito aquí se cargará nomás ta os bots */",
        "group-sysop.js": "/* Qualsiquier codigo Javascript escrito aquí se cargará nomás ta os administradors */",
        "pageinfo-watchers": "Numero d'usuarios que la cosiran",
        "pageinfo-edits": "Numero d'edicions",
        "pageinfo-authors": "Numero d'autors diferents",
-       "skinname-cologneblue": "Colonia Azul (Cologne Blue)",
-       "skinname-monobook": "MonoBook",
-       "skinname-modern": "Moderna",
-       "skinname-vector": "Vector",
        "markaspatrolleddiff": "Sinyalar como ya controlato",
        "markaspatrolledtext": "Sinyalar iste articlo como controlato",
        "markedaspatrolled": "Sinyalato como controlato",
index cf39137..e3ecd7d 100644 (file)
        "searchrelated": "gesibb",
        "searchall": "eall",
        "showingresults": "Īewan under oþ <b>$1</b> tōhīgunga onginnenda mid #<b>$2</b>.",
-       "showingresultsnum": "Under sind <b>$3</b> tóhígunga onginnende mid #<b>$2</b>.",
        "powersearch-legend": "Manigfeald sēcung",
        "powersearch-ns": "Sēcan in namstedum:",
        "search-external": "Ūtanweard sōcn",
index 0598325..2ba72df 100644 (file)
        "viewsourcetext": "تمكنك مطالعة و نسخ مصدر هذه الصفحة:",
        "viewyourtext": "يمكنك استعراض و نسخ مصدر ''' تعديلاتك ''' في هذه الصفحة:",
        "protectedinterface": "توفر هذه الصفحة نص الواجهة للبرنامج على هذا الويكي، وهي محمية لمنع سوء أستخدامها.\nلإضافة أو تغيير الترجمات لجميع مشاريع الويكي، رجاءً أستخدم [//translatewiki.net/ translatewiki.net]، مشروع الترجمة الخاص بميدياويكي.",
-       "editinginterface": "'''تحذير:''' أنت تقوم بتحرير صفحة تستخدم في الواجهة النصية للبرنامج.\nسوف تؤثر التغييرات في هذه الصفحة على مظهر واجهة المستخدم للمستخدمين الآخرين على هذا الويكي.\nلإضافة أو تغيير الترجمات في جميع مشاريع الويكي، رجاءً استخدم [//translatewiki.net/ translatewiki.net]، مشروع الترجمة الخاص بميدياويكي.",
+       "editinginterface": "<strong>تنبيه:</strong> تعديل هذه الصفحة سيحفظ في هذا الويكي فقط. لتعميم التعديل على جميع مشاريع ميدياويكي، عدلها في [//translatewiki.net/ مشروع ترجمة الويكي].",
        "cascadeprotected": "تمت حماية هذه الصفحة من التعديل لأنها مدمجة في {{PLURAL:$1||الصفحة التالية، والتي|الصفحتين التاليتين، واللتين|الصفحات التالية، والتي}} تم استعمال خاصية \"حماية الصفحات المدمجة\" {{PLURAL:$1||بها|بهما|بها}}:\n$2",
        "namespaceprotected": "لا تمتلك الصلاحية لتعديل الصفحات في نطاق '''$1'''.",
        "customcssprotected": "أنت لا تمتلك السماح لتعديل صفحة الCSS هذه، لأنها تحتوي على الإعدادات الشخصية لمستخدم آخر.",
        "virus-badscanner": "ضبط سيء: ماسح فيروسات غير معروف: ''$1''",
        "virus-scanfailed": "فشل المسح (كود $1)",
        "virus-unknownscanner": "مضاد فيروسات غير معروف:",
-       "logouttext": "'''أنت الآن غير مسجل الدخول.'''\n\nقد ترى بعض الصفحات كما لو أنك ما زلت مسجل الدخول، وذلك حتى تفرغ التخزين المؤقت في متصفحك.",
+       "logouttext": "<strong>أنت الآن غير مسجل الدخول.</strong> قد ترى بعض الصفحات كما لو أنك ما زلت مسجل الدخول، وذلك حتى تفرغ التخزين المؤقت في متصفحك.",
        "welcomeuser": "أهلاً بك يا $1!",
        "welcomecreation-msg": "تم إنشاء حسابك.\nلا تنس تعديل [[Special:Preferences|تفضيلاتك في {{SITENAME}}]].",
        "yourname": "اسم المستخدم:",
        "searchall": "الكل",
        "showingresults": "معروض بالأسفل {{PLURAL:$1|'''1''' نتيجة|'''$1''' نتيجة}} بدءا من رقم '''$2'''.",
        "showingresultsinrange": "معروض بالأسفل حتى {{PLURAL:$1|<strong>1</strong> نتيجة|<strong>$1</strong> نتائج}} في النطاق #<strong>$2</strong> إلى #<strong>$3</strong>.",
-       "showingresultsnum": "معروض بالأسفل {{PLURAL:$3|'''نتيجة واحدة'''|'''$3''' نتيجة}} بدءا من رقم'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|النتيجة '''$1''' من'''$3'''|النتائج '''$1 - $2''' من'''$3'''}} ل'''$4'''",
        "search-nonefound": "لا توجد نتائج تطابق الاستعلام.",
        "powersearch-legend": "بحث متقدم",
        "exbeforeblank": "المحتوى قبل الإفراغ كان: '$1'",
        "delete-confirm": "حذف \"$1\"",
        "delete-legend": "حذف",
-       "historywarning": "'''تحذير:''' الصفحة التي توشك على حذفها لها تاريخ فيه {{PLURAL:$1||مراجعة واحدة|مراجعتان|$1 مراجعات|$1 مراجعة}} تقريبا:",
+       "historywarning": "'''تنبيه:''' الصفحة التي تريد حذفها بها {{PLURAL:$1|نسخة|نسخة واحدة|نسختان|$1 نسخ|$1 نسخة}}. انظر",
        "confirmdeletetext": "أنت على وشك أن تقوم بحذف صفحة بالإضافة إلى كل تاريخها.\nمن فضلك التأكد من عزمك على الحذف، وبأنك مدرك للعواقب، وبأنك تقوم بهذا بالتوافق مع [[{{MediaWiki:Policy-url}}|السياسة]].",
        "actioncomplete": "انتهاء العملية",
        "actionfailed": "الفعل فشل",
        "delete-edit-reasonlist": "عدل أسباب الحذف",
        "delete-toobig": "لهذه الصفحة تاريخ تعديل طويل، أكثر من {{PLURAL:$1||مراجعة واحدة|مراجعتين|$1 مراجعات|$1 مراجعة}}.\nقُيّد محذف مثل هذه الصفحات لمنع الاضطراب المفاجئة في {{SITENAME}}.",
        "delete-warning-toobig": "لهذه الصفحة تاريخ تعديل طويل، أكثر من {{PLURAL:$1||مراجعة واحدة|مراجعتين|$1 مراجعات|$1 مراجعة}}.\nقد يؤدي حذفها إلى اضطراب عمليات قاعدة البيانات في {{SITENAME}}؛\nاستمر مع الحذر.",
-       "deleting-backlinks-warning": "'''تحذير:''' ترتبط [[Special:WhatLinksHere/{{FULLPAGENAME}}|صفحات أخرى]] بالصفحة التي أنت على وشك حذفها.",
+       "deleting-backlinks-warning": "[[Special:WhatLinksHere/{{FULLPAGENAME}}|تتصل صفحات أخرى]] بالصفحة التي تريد حذفها.",
        "rollback": "استرجاع التعديلات",
        "rollback_short": "استرجع",
        "rollbacklink": "استرجع",
        "duplicate-defaultsort": "'''تحذير:''' مفتاح الترتيب الافتراضي \"$2\" يتجاوز مفتاح الترتيب الافتراضي السابق \"$1\".",
        "version": "نسخة",
        "version-extensions": "الامتدادات المثبتة",
+       "version-skins": "واجهات",
        "version-specialpages": "صفحات خاصة",
        "version-parserhooks": "خطاطيف المحلل",
        "version-variables": "المتغيرات",
        "version-antispam": "منع البريد المزعج",
-       "version-skins": "واجهات",
        "version-api": "إيه بي آي",
        "version-other": "أخرى",
        "version-mediahandlers": "متحكمات الميديا",
index 38c4ad4..8d6b802 100644 (file)
        "searchrelated": "ܐܚܝܢܝ̈ܐ",
        "searchall": "ܟܠ",
        "showingresults": "ܚܘܘܝܐ ܠܬܚܬ {{PLURAL:$1|'''1''' ܦܠܛܐ|'''$1''' ܦܠܛ̈ܐ}} ܫܪܐ ܡܢ ܡܢܝܢܐ '''$2'''.",
-       "showingresultsnum": "ܚܘܘܝܐ ܠܬܚܬ {{PLURAL:$3|'''ܚܕ ܦܠܛܐ'''|'''$3''' ܦܠܛ̈ܐ}} ܫܪܐ ܡܢ ܡܢܝܢܐ '''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|ܦܠܛܐ '''$1''' ܡܢ '''$3'''|ܦܠܛ̈ܐ '''$1 - $2''' ܡܢ '''$3'''}} ܠ'''$4'''",
        "search-nonefound": "ܠܝܬ ܦܠܛ̈ܐ ܐܘܝܢ̈ܐ ܠܗܢܐ ܒܨܝܐ.",
        "powersearch-legend": "ܒܨܝܐ ܡܬܩܕܡܢܐ",
index b6388e7..c8a3bf9 100644 (file)
        "qbmyoptions": "tañi nütramkawe",
        "faq": "Rumelfemkelu ramtun",
        "faqpage": "Project:FAQ",
-       "vector-action-addsection": "Püñamtun dungu",
-       "vector-action-delete": "Liftun",
-       "vector-action-move": "Wiñamün",
-       "vector-action-protect": "Nürüfkünun",
-       "vector-action-undelete": "Wüñoñamümün",
-       "vector-action-unprotect": "Kalekünun Nürüfkünun",
-       "vector-view-create": "Dewman",
-       "vector-view-edit": "Kümeelün",
-       "vector-view-history": "Pengelün rupañmael",
-       "vector-view-view": "Chillkatun",
-       "vector-view-viewsource": "Kimam chew küpan chi wirin",
        "actions": "Femün",
        "namespaces": "Üytun ñi wellin",
        "variants": "Kaleyelu",
        "searchmenu-exists": "'''Müley kiñe wülngiñ «[[:$1]]» pingelu feychi wiki mew'''",
        "searchmenu-new": "'''¡Llitun pakina «[[:$1]]» tüfachi wiki mew!'''",
        "searchprofile-articles": "Trokiñdungu wülngiñ",
-       "searchprofile-project": "Kellu wülngiñ ka Deumandungu wülngiñ",
        "searchprofile-images": "Fill dungu (adentun, dungun, fidew)",
        "searchprofile-everything": "Kom",
        "searchprofile-advanced": "Doy amul",
        "searchprofile-articles-tooltip": "kintun $1 mew",
-       "searchprofile-project-tooltip": "Kintun $1 mew",
        "searchprofile-images-tooltip": "Kintun eltukawün",
        "searchprofile-everything-tooltip": "Kintun kom trokiñdungu (ka konkülechi nütramkawe)",
        "searchprofile-advanced-tooltip": "Kintun Wünezulliñ üytun ñi wellin",
        "speciallogtitlelabel": "Chew ñi amuael (Üy):",
        "log": "Wirintukun",
        "allpages": "Fill wülngiñ",
-       "alphaindexline": "$1, $2 mew",
        "allarticles": "Fill wülngiñ",
        "allpagessubmit": "Pengelün",
        "categories": "Fill trokiñ",
index 954a997..b8eaf38 100644 (file)
        "qbmyoptions": "'Ṣ-Ṣefḫaṫ dyawli",
        "faq": "asaila kaytaawdo bzaf",
        "faqpage": "Project:asaila kaytaawdo",
-       "vector-action-addsection": "Zid topic",
-       "vector-action-delete": "Suprimi",
-       "vector-action-move": "Neqel",
-       "vector-action-protect": "Ḫami",
-       "vector-action-undelete": "rja lhadf",
-       "vector-action-unprotect": "Ḫiyed l-ḫimaya",
-       "vector-view-create": "Ĥṫareĝ",
-       "vector-view-edit": "Ĝedel",
-       "vector-view-history": "Ṫariĥ l-fiċyé",
-       "vector-view-view": "Qra",
-       "vector-view-viewsource": "Ċof l-masdar",
        "actions": "afaal",
        "namespaces": "Maḫel s-smiyyaṫ :",
        "variants": "lhja:",
        "diff-multi-manyusers": "({{PLURAL:$1|ṃoṛajaĝa waṣita wḫda|$1 dl-ṃoṛajaĝaṫ l-waṣita}} ṫaĝṫ kṫr mn $2 {{PLURAL:$2|l-mosṫĥdim|dl-mosṫĥdimin}} ma mbeyyna-ċ)",
        "searchresults": "N-Naṫa'ij dyal l-beḫṫ",
        "searchresults-title": "N-Naṫa'ij dyal l-beḫṫ ĝla \"$1\"",
-       "toomanymatches": "bzzaf dl-motabaqaṫ ṫrddaṫ, ċof ċi talab aĥor",
        "titlematches": "onwan sfha yotabiq",
        "textmatches": "neṣ sfha kaytabq",
        "notextmatches": "Ḫṫa ċi neṣ ma mlaqi mĝa dakċi li kaṫqelleb ĝlih",
        "searchmenu-exists": "'''ḫṫṫa ṣfḫa f-had l-wiki ma smiṫha \"[[:$1]]\".'''",
        "searchmenu-new": "'''ṣayb f-had l-wiki ṣfḫṫ \"[[:$1]]\"!'''",
        "searchprofile-articles": "sfht mohtawa",
-       "searchprofile-project": "sfhai dyal lmossada ol mchroa",
        "searchprofile-images": "media",
        "searchprofile-everything": "kolchi",
        "searchprofile-advanced": "motaqaddim",
        "searchprofile-articles-tooltip": "qllb f $1",
-       "searchprofile-project-tooltip": "qllb f $1",
        "searchprofile-images-tooltip": "qllb f tsawr",
        "searchprofile-everything-tooltip": "qlleb kolċi fl-moḫṫawa (ḫṫṫa ṣfaḫi n-niqaċ)",
        "searchprofile-advanced-tooltip": "qlleb ġi f-ċi nitaqaṫ",
        "search-interwiki-default": "N-Naṫija dyal $1:",
        "search-interwiki-more": "(z-zyada)",
        "search-relatedarticle": "mortabita",
-       "searcheverything-enable": "qlleb f-gaĝ n-nitaqaṫ",
        "searchrelated": "mortabita",
        "searchall": "kolċi",
        "showingresults": "mbyyena l-ṫḫṫ ḫṫṫa l-{{PLURAL:$3|'''1''' n-naṫija|'''$3''' d-nnaṫa'ij}} badya mn rqm '''$2'''.",
-       "showingresultsnum": "mbyyena l-ṫḫṫ {{PLURAL:$3|'''1''' n-naṫija|'''$3''' d-nnaṫa'ij}} badya mn rqm '''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|n-naṫija '''$1''' mn '''$3'''|n-naṫa'ij '''$1 - $2''' mn '''$3'''}} l-'''$4'''",
        "search-nonefound": "ḫṫṫa naṫija ma bḫal ḫad t-talab.",
        "powersearch-legend": "Ṫeqlab ṣĝib",
        "allowemail": "mkn tlqa l'email mn mostakhdimin khrin",
        "prefs-searchoptions": "khiyarat lbaht",
        "prefs-namespaces": "Maḫel s-smiyyaṫ :",
-       "defaultns": "olla qlb f had dominat :",
        "default": "iftiradi",
        "prefs-files": "milffat",
        "prefs-custom-css": "personalisé CSS",
        "prefs-emailconfirm-label": "konfirmi l'email:",
        "youremail": "I-Méyl",
        "username": "smiṫ l-mosṫĥdim:",
-       "uid": "raqm lmostakhdim :",
        "prefs-memberingroups": "odw f  {{PLURAL:$1|mjmoaa|mjmoaat}}:",
        "prefs-registration": "wqt tasjil:",
        "yourrealname": "smiytk lhaqiqiya:",
        "all-logs-page": "kol sijillat laama",
        "logempty": "ḫṫṫa ċi madda ma mtabqa f-ssijill.",
        "allpages": "Ṣ-Ṣefḫaṫ kamlin",
-       "alphaindexline": "Men $1 ḫṫal $2",
        "nextpage": "sfha jaya ($1)",
        "prevpage": "Ṣ-Ṣefḫa li qbel ($1)",
        "allpagesfrom": "wrri ṣ-ṣfaḫi lli badyin mn:",
        "whatlinkshere-filters": "Filter",
        "blockip": "Bloké l-mosṫeĥdim",
        "blockip-legend": "Bloki l-mosṫeḫdim",
-       "ipadressorusername": "Ĝonwan IP ola smiyṫ l-mosṫeĥdim",
+       "ipaddressorusername": "Ĝonwan IP ola smiyṫ l-mosṫeĥdim",
        "ipbexpiry": "Ġayṫqada fe :",
        "ipbreason": "sabab:",
        "ipbcreateaccount": "Mneĝ ĥṫiraĝ ċi ḫsab",
        "file-info-png-looped": "mlfof",
        "newimages-legend": "Filter",
        "newimages-label": "smiyt lfichier olla chwiya mnno:",
-       "showhidebots": "($1 R-Robowaṫ)",
        "noimages": "walo maytchaf.",
        "ilsubmit": "Qelleb",
        "bydate": "hassab tarikh",
index db456aa..e04983e 100644 (file)
        "searchrelated": "مرتبطه",
        "searchall": "الكل",
        "showingresults": "القائمة دى بتعرض {{PLURAL:$1|'''1''' نتيجة|'''$1''' نتيجة}} من أول  رقم '''$2'''.",
-       "showingresultsnum": "معروض تحت {{PLURAL:$3|'''نتيجة واحدة'''|'''$3''' نتيجة}} من أول من رقم'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|النتيجه '''$1''' من'''$3'''|النتايج '''$1 - $2''' من'''$3'''}} ل'''$4'''",
        "search-nonefound": "لا توجد نتائج تطابق الاستعلام.",
        "powersearch-legend": "تدوير متقدم",
index 543f283..1607c1f 100644 (file)
        "searchrelated": "সম্পৰ্কিত",
        "searchall": "সকলো",
        "showingresults": "তলত #'''$2'''ৰ পৰা {{PLURAL:$1|'''1''' ফলাফল|'''$1''' ফলাফল}} দেখুওৱা হৈছে।",
-       "showingresultsnum": "তলত #'''$2'''ৰ পৰা {{PLURAL:$3|'''1''' ফলাফল|'''$3'''ফলাফল}} দেখুওৱা হৈছে ।",
        "showingresultsheader": "'''$4'''ৰ বাবে {{PLURAL:$5|'''$3''' ৰ '''$1''' ফলাফল| '''$3''' ৰ '''$1 - $2''' ফলাফলসমূহ}}",
        "search-nonefound": "এই অনুসন্ধানৰ কোনো ফলাফল নাই ।",
        "powersearch-legend": "শক্তিশালী সন্ধান",
        "duplicate-defaultsort": "'''সাৱধান!''' পূৰ্বনিৰ্ধাৰিত ক্ৰমসূচক \"$2\"-এ আগৰ ক্ৰমসূচক \"$1\"ক বিস্থাপিত কৰিছে।",
        "version": "সংস্কৰণ",
        "version-extensions": "ইন্‌ষ্টল কৰা এক্সটেনচনসমূহ",
+       "version-skins": "আৱৰণ",
        "version-specialpages": "বিশেষ পৃষ্ঠাসমূহ",
        "version-parserhooks": "পাৰ্চাৰ হুক",
        "version-variables": "চলকসমূহ",
        "version-antispam": "স্পাম প্ৰতিৰোধ",
-       "version-skins": "আৱৰণ",
        "version-other": "অন্য",
        "version-mediahandlers": "মাধ্যম ব্যৱস্থাপকসমূহ",
        "version-hooks": "হুকসমূহ",
index 5d4e42c..53e2e7b 100644 (file)
        "searchall": "toos",
        "showingresults": "Abaxo {{PLURAL:$1|amuésase '''un''' resultáu|amuésense '''$1''' resultaos}}, entamando col #'''$2'''.",
        "showingresultsinrange": "Más abaxo s'{{PLURAL:$1|amuesa|amuesen}} fasta {{PLURAL:$1|<strong>1</strong> resultáu|<strong>$1</strong> resultaos}} nel rangu ente #<strong>$2</strong> y #<strong>$3</strong>.",
-       "showingresultsnum": "Abaxo {{PLURAL:$3|amuésase '''un''' resultáu|amuésense '''$3''' resultaos}}, entamando col #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Resultáu '''$1''' de '''$3'''|Resultaos '''$1 - $2''' de '''$3'''}} pa '''$4'''",
        "search-nonefound": "Nun hebo resultaos que casaren cola consulta.",
        "powersearch-legend": "Busca avanzada",
index a93e2de..7956331 100644 (file)
        "qbmyoptions": "Jinaf ikatcukseem",
        "faq": "NEB",
        "faqpage": "Project:FAQ",
-       "vector-action-addsection": "Loplekura va detce",
-       "vector-action-delete": "Sulara",
-       "vector-action-move": "Arrundara",
-       "vector-action-protect": "Nendara",
-       "vector-view-create": "Redura",
-       "vector-view-edit": "Betara",
-       "vector-view-history": "Wira va izvot",
-       "vector-view-view": "Belira",
-       "vector-view-viewsource": "klitawira",
        "actions": "Tegira",
        "namespaces": "Yoltxo",
        "variants": "Arapeniks",
        "editundo": "dimaskira",
        "searchresults": "Aneyaradanekseem",
        "searchresults-title": "Aneyaratrasiks va \"$1\"",
-       "toomanymatches": "Slik trasiks, vay va amidafa aneyara yawal",
        "titlematches": "Vadjesaceem vanmia vergumvelteem",
        "textmatches": "Vadjesaceem ko krenteem",
        "notextmatches": "Mek krentvergumvelt ruldas va erune",
        "searchmenu-exists": "'''Ixam bu yoltkirafu gu \"[[:$1]]\" dene bati wiki.'''",
        "searchmenu-new": "'''Redura va bu \"[[:$1]]\" den bati wiki!'''",
        "searchprofile-articles": "Teliz",
-       "searchprofile-project": "Pomarabu ik abdumimaksbu",
        "searchprofile-images": "Jonkanaca",
        "searchprofile-everything": "Kotcoba",
        "searchprofile-advanced": "Lof",
        "searchprofile-articles-tooltip": "Aneyara ko $1",
-       "searchprofile-project-tooltip": "Aneyara ko $1",
        "searchprofile-images-tooltip": "Aneyara va iyeltak",
        "searchprofile-everything-tooltip": "Aneyara va kotaf cek (don prilarabu)",
        "searchprofile-advanced-tooltip": "Aneyara ko pilkovafo yoltxo",
        "search-interwiki-default": "$1 trasiks :",
        "search-interwiki-more": "(loon)",
        "search-relatedarticle": "Skedaf",
-       "searcheverything-enable": "Aneyara ko koto yoltxo",
        "searchrelated": "skedaf",
        "searchall": "kot",
        "showingresults": "Vlevefa nedira va {{PLURAL:$1|'''1''' trasiks|'''$1''' trasiks}} dem #'''$2''' toza.",
-       "showingresultsnum": "Nedira va '''$3''' trasiks male #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Trasiks '''$1''' ke '''$3'''|Trasiks '''$1 - $2''' ke '''$3'''}} icde '''$4'''",
        "search-nonefound": "Mek trasiks vas kucilara",
        "powersearch-legend": "Aneyapara",
        "allowemail": "Tutegirara va e-mail staksara mal ar favesik",
        "prefs-searchoptions": "Aneyarikatcura",
        "prefs-namespaces": "Yoltxo",
-       "defaultns": "Omavon, aneyara ko batyono yoltxo :",
        "default": "omava",
        "prefs-files": "Iyeltak se",
        "youremail": "Jinafe internetmane",
        "username": "Favesikyolt:",
-       "uid": "Favesikaf ID :",
        "prefs-memberingroups": "Bewik ke {{PLURAL:$1|lospa|lospa}}:",
        "yourrealname": "Rinaf ageltaf yolt*",
        "yourlanguage": "Walasikiava",
        "logempty": "Mek trasiks koe \"log\" iyeltak.",
        "log-title-wildcard": "Aneyara va vergumvelt dem mana toza",
        "allpages": "Kotaf bueem",
-       "alphaindexline": "male $1 kale $2",
        "nextpage": "Radimebu ($1)",
        "prevpage": "($1) abdifu bu",
        "allpagesfrom": "Nedira va bu se male",
index 331f5e2..c7d66d8 100644 (file)
@@ -23,7 +23,8 @@
                        "Wertuose",
                        "לערי ריינהארט",
                        "아라",
-                       "Arystanbek"
+                       "Arystanbek",
+                       "Dağlı95"
                ]
        },
        "tog-underline": "Keçidlərin altını xətlə:",
        "qbmyoptions": "Mənim səhifələrim",
        "faq": "TSS",
        "faqpage": "Project:TSS",
-       "vector-action-addsection": "Mövzu əlavə et",
-       "vector-action-delete": "Sil",
-       "vector-action-move": "Adını dəyişdir",
-       "vector-action-protect": "Mühafizə et",
-       "vector-action-undelete": "Bərpa et",
-       "vector-action-unprotect": "Mühafizəni kənarlaşdır",
-       "vector-view-create": "Yarat",
-       "vector-view-edit": "Redaktə",
-       "vector-view-history": "Tarixçəyə bax",
-       "vector-view-view": "Oxu",
-       "vector-view-viewsource": "Mənbəyə bax",
        "actions": "Hərəkətlər",
-       "vector-more-actions": "Daha",
        "namespaces": "Adlar fəzası",
        "variants": "Variantlar",
        "navigation-heading": "Naviqasiya menyusu",
        "showhideselectedversions": "Seçilən versiyaları göstər/gizlə",
        "editundo": "əvvəlki halına qaytar",
        "diff-multi-manyusers": "({{PLURAL:$2|Bir istifadəçi|$2 istifadəçi}} tərəfindən edilən {{PLURAL:$1|bir ara redaktə|$1 ara redaktə}} göstərilmir)",
+       "difference-missing-revision": "Səhifənin  {{PLURAL:$2|bu versiyasının|$2 versiyalarının}} müqayisəsi ($1) tapılmadı.\nBu xəta adətən, köhnəlmiş səhifələrin müqayisə versiyalarından keçid edildikdə baş verir.\nDaha ətraflı məlumat üçün [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} silmə qeydlərinə] baxın.",
        "searchresults": "Axtarış nəticələri",
        "searchresults-title": "''$1'' üçün axtarış nəticələri",
        "titlematches": "Səhifə adı eynidir",
        "searchrelated": "əlaqəli",
        "searchall": "bütün",
        "showingresults": "Aşağıda #'''$2''' ilə başlayan {{PLURAL:$1|'''$1'''-ə qədər}} nəticə göstərilib.",
-       "showingresultsnum": "Aşağıda #'''$2''' ilə başlayan {{PLURAL:$3|'''$3'''}} nəticə göstərilib.",
        "showingresultsheader": "'''$4''' üçün {{PLURAL:$5|'''$3'''-dən '''$1''' nəticə|'''$3'''-dən '''$1 - $2''' nəticə}}",
        "search-nonefound": "Sorğunuza uyğun nəticə tapılmadı.",
        "powersearch-legend": "Təkmil axtarış",
        "recentchanges-label-minor": "Bu kiçik redaktədir",
        "recentchanges-label-bot": "Bu redaktə bot tərəfindən edilmişdir",
        "recentchanges-label-unpatrolled": "Bu redaktə hələ nəzərdən keçirilməmişdir",
+       "recentchanges-label-plusminus": "Səhifənin ölçüsü bayt miqdarı ilə təyin edilir",
        "recentchanges-legend-newpage": "$1 - yeni səhifə",
        "rcnotefrom": "Aşağıda <strong>$2</strong>-dən bu yana olan dəyişikliklər göstərilib (<strong>$1</strong>-dən çox olmayaraq).",
        "rclistfrom": "$3 $2 vaxtından başlayaraq yeni dəyişiklikləri göstər",
        "badfilename": "Faylın adı dəyişildi. Yeni adı: \"$1\".",
        "filetype-mime-mismatch": "\".$1\" fayl uzantısı faylın MIME tipinə ($2) uyğun gəlmir.",
        "filetype-badmime": "\"$1\" MIME tipindəki faylların yüklənməsinə icazə verilmir.",
+       "filetype-banned-type": "'''\".$1\"''' {{PLURAL:$4|icazə verilən fayl formatı deyil}}. İcazə verilən {{PLURAL:$3|fayl formatı|fayl formatı bunlardır:}} $2.",
        "filetype-missing": "Faylın heç bir uzantısı yoxdur (məsələn, \".jpg\").",
        "empty-file": "Göndərdiyiniz fayl boşdur.",
        "file-too-large": "Göndərdiyiniz fayl çox böyükdür.",
        "largefileserver": "Faylın ölçüsü yol verilən həddi aşır.",
        "emptyfile": "Yüklədiyiniz fayl boşdur. Bu faylın adında olan hərf səhvi ilə bağlı ola bilər. Xahiş olunur ki, doğurdan da bu faylı yükləmək istədiyinizi yoxlayasınız.",
        "fileexists": "Yükləmək istədiyiniz adda fayl mövcuddur.\nLütfən <strong>[[:$1]]</strong> keçidini yoxlayın və bu faylı yükləmək istədiyinizdən əmin olun.\n[[$1|thumb]]",
+       "fileexists-extension": "Bu adda başqa bir fayl mövcuddur: [[$2|thumb]]\n* Yüklənilən faylın adı: <strong>[[:$1]]</strong>\n* Mövcud faylın adı: <strong>[[:$2]]</strong>\nXahiş edirik, başqa ad seçin.",
        "uploadwarning": "Yükləmə xəbərdarlığı",
        "savefile": "Faylı qeyd et",
        "uploadedimage": "\"[[$1]]\" yükləndi",
        "upload-description": "Faylın izahı",
        "upload-options": "Yükləmə parametrləri",
        "watchthisupload": "Bu faylı izlə",
+       "filename-bad-prefix": "Yüklədiyiniz faylın adı, çox güman ki, rəqəmsal kameralar tərəfindən avtomatik olaraq əlavə edilən və heç bir açıqlaması olmayan '''\"$1\"''' ilə başlayır.\nXahiş edirik faylın adını daha düzgün seçin.",
        "filename-prefix-blacklist": " #<!-- Bu sətrə toxunmayın --> <pre>\n# Sintaksis aşağıdakı kimi görünür:\n#   * \"#\" simvolundan sətrin sonuna kimi yazılar şərhdir\n#   * Tipik fayl adları üçün olan prefiksdəki hər bir boş olmayan sətir rəqəmli kamera trəfindən avtomatik qeydə alınır\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # digər mobil telefonlar\nIMG # generic\nJD # Jenoptik\nMGP # Pentax\nPICT # misc.\n #</pre> <!-- Bu sətrə toxunmayın -->",
        "upload-success-subj": "Yükləmə tamamlandı",
        "upload-failure-subj": "Yükləmə problemi",
        "linkstoimage-redirect": "$1 (fayl istiqamətləndirilir) $2",
        "sharedupload": "Bu fayl $1-dandır və ola bilsin ki, başqa layihələrdə də istifadə edilir.",
        "sharedupload-desc-here": "Bu fayl $1dandır və başqa layihələrdə də istifadə edilə bilər.\nFaylın [$2 təsvir səhifəsindəki] məlumat aşağıda göstərilib.",
+       "filepage-nofile": "Bu adda fayl mövcud deyil.",
+       "filepage-nofile-link": "Bu adda fayl mövcud deyil, amma bu faylı siz [$1 yükləyə bilərsiz]",
        "uploadnewversion-linktext": "Bu faylın yeni versiyasını yüklə",
        "shared-repo-from": "$1-dən",
        "shared-repo": "ümumi fayl anbarı",
        "filedelete": "$1 adlı faylı sil",
        "filedelete-legend": "Faylı sil",
        "filedelete-intro": "'''[[Media:$1|$1]]''' faylını və onunla bağlı bütün tarixçəni silmək ərəfəsindəsiniz.",
+       "filedelete-intro-old": "'''[[Media:$1|$1]]''' faylının [$4 $3, $2] tarixli versiyasını silirsiz.",
        "filedelete-comment": "Səbəb:",
        "filedelete-submit": "Sil",
        "filedelete-success": "'''$1''' silinmişdir.",
        "filedelete-reason-otherlist": "Başqa səbəb",
        "filedelete-reason-dropdown": "*Əsas silmə səbəbi\n** Müəllif hüququ pozuntusu\n** Dublikat fayl\n** Keyfiyyətsiz şəkil\n** İstifadəsiz fayl\n** Qeyri-ensiklopedik şəxs\n** Lisenziyasız fayl\n** Azad şəkillə əvəz olundu\n** Müəllif istəyi",
        "filedelete-edit-reasonlist": "Silmə səbəblərini redaktə et",
+       "filedelete-maintenance": "Texniki işlər səbəbindən faylların silinməsi və bərpası müvəqqəti olaraq bağlanmışdır.",
+       "filedelete-maintenance-title": "Faylı silmək mümkün olmadı.",
        "mimesearch": "MIME axtar",
        "mimetype": "MIME tipi:",
        "download": "Yüklə",
        "tooltip-preferences-save": "Nizamlamaları saxla",
        "tooltip-summary": "Qısa rezyume daxil edin",
        "common.css": "/* Burada yerləşən CSS bütün skinlərə tətbiq olunur */",
-       "monobook.css": "/* Burada yerləşən CSS Monobook skin istifadəçilərinə tətbiq olunur */",
-       "vector.css": "/* Burada yerləşən CSS Vector istifadəçilərinə tətbiq olunur */",
        "group-autoconfirmed.css": "/* Burada yerləşən CSS yalnız avtotəsdiqlənmiş istifadəçilərə şamil olunur */",
        "group-bot.css": "/* Burada yerləşən CSS yalnız botlara şamil olunur */",
        "group-sysop.css": "/* Burada yerləşən CSS yalnız idarəçilərə şamil olunur */",
        "group-bureaucrat.css": "/* Burada yerləşən CSS yalnız bürokratlara şamil olunur */",
        "common.js": "/* Burada istifadəçilərin hamısı üçün bütün səhifələrdə istənilən JavaScript yüklənəcək */",
-       "monobook.js": "/* Burada MonoBook skin istifadəçiləri üçün istənilən JavaScript yüklənəcək */",
-       "vector.js": "/* Burada Vector skin istifadəçiləri üçün istənilən JavaScript yüklənəcək */",
        "group-autoconfirmed.js": "/* Burada istənilən JavaScript yalnız avtotəsdiqlənmiş istifadəçilər üçün yüklənəcək */",
        "group-bot.js": "/* Burada istənilən JavaScript yalnız botlar üçün yüklənəcək */",
        "group-sysop.js": "/* Burada istənilən JavaScript yalnız idarəçilər üçün yüklənəcək */",
        "pageinfo-redirectsto": "İstiqamətləndirmə",
        "pageinfo-redirectsto-info": "məlumat",
        "pageinfo-contentpage-yes": "Bəli",
-       "skinname-monobook": "MonoBook",
-       "skinname-vector": "Vector",
        "markaspatrolleddiff": "Yoxlanıldı",
        "markaspatrolledtext": "Səhifəni patrullanmış kimi işarələ",
        "markedaspatrolled": "Yoxlanıldı",
        "filedeleteerror-short": "Fayl silinərkən xəta: $1",
        "filedeleteerror-long": "Fayl silinərkən üzə çıxan xətalar:\n\n$1",
        "filedelete-missing": "\"$1\" faylı mövcud olmadığından silinə bilinmir.",
+       "filedelete-old-unregistered": "Göstərilən faylın \"$1\" versiyası verilənlər bazasında mövcud deyil.",
        "filedelete-current-unregistered": "Göstərilən \"$1\" faylı verilənlər bazasında yoxdur.",
        "filedelete-archive-read-only": "\"$1\" kataloqunun arxivi veb-server yazıları üçün qapalıdır.",
        "previousdiff": "← Əvvəlki redaktə",
        "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|səhifə|səhifələr}}",
        "file-info": "faylın ölçüsü: $1, MIME tipi: $2",
        "file-info-size": "$1 × $2 piksel, fayl həcmi: $3, MIME növü: $4",
+       "file-info-size-pages": "$1 × $2 piksel, faylın ölçüsü: $3, MIME-tipi: $4, $5 {{PLURAL:$5|səhifə|səhifələr}}",
        "file-nohires": "Daha dəqiq versiyası yoxdur.",
        "svg-long-desc": "SVG fayl, nominal olaraq $1 × $2 piksel, faylın ölçüsü: $3",
        "show-big-image": "Faylın əsli",
        "file-info-gif-frames": "$1 {{PLURAL:$1|frame|çərçivə}}",
        "file-info-png-looped": "ilmələnib",
        "file-info-png-frames": "$1 {{PLURAL:$1|frame|çərçivə}}",
+       "file-no-thumb-animation": "'''Qeyd. Texniki səbəblərdən bu fayl tipinin animasiyası mümkün deyil.'''",
+       "file-no-thumb-animation-gif": "'''Qeyd. Yüksək ayırdetmə dəqiqliyinə malik belə GIF-təsvirlərinin animasiyası texniki səbəblərdən mümkün deyil.'''",
        "newimages": "Yeni faylların siyahısı",
        "newimages-legend": "Filtrlər",
        "newimages-label": "Faylın (və ya onun bir hissəsinin) adı:",
        "duplicate-defaultsort": "<strong>Diqqət:</strong> Susmaya görə \"$2\" çeşidləmə açarı susmaya görə əvvəlki \"$1\" çeşidləmə açarını inkar edir.",
        "version": "Versiya",
        "version-extensions": "NIzamlanmış genişlənmələr",
+       "version-skins": "Üzlük",
        "version-specialpages": "Xüsusi səhifələr",
        "version-parserhooks": "Parser hooks",
        "version-variables": "Dəyişkənlər",
        "version-antispam": "Spam önləmə",
-       "version-skins": "Üzlük",
        "version-other": "Digər",
        "version-hooks": "Çəngəllər",
        "version-hook-name": "Çəngəlin adı",
        "fileduplicatesearch-legend": "Dublikatı axtar",
        "fileduplicatesearch-filename": "Fayl adı:",
        "fileduplicatesearch-submit": "Axtar",
+       "fileduplicatesearch-result-1": "\"$1\" faylı hər hansı eyni dublikata malik deyil.",
+       "fileduplicatesearch-result-n": "\"$1\" faylı  $2 {{PLURAL:$2|eyni duplikata|eyni duplikatlara}} malikdir.",
        "fileduplicatesearch-noresults": "\"$1\" adında fayl tapılmadı.",
        "specialpages": "Xüsusi səhifələr",
        "specialpages-group-maintenance": "Cari məruzələr",
index 41f7ac1..7361191 100644 (file)
        "searchrelated": "ایلگیلی",
        "searchall": "بوتون",
        "showingresults": "آشاغیدا نومره '''$2'''-دن باشلایان {{PLURAL:$1|'''بیر'''|'''$1'''}} سونوجا قدر گؤستریلیر.",
-       "showingresultsnum": "آشاغیدا نومره '''$2'''-دن باشلایان {{PLURAL:$3|'''بیر'''|'''$3'''}} سونوج گؤستریلیر.",
        "showingresultsheader": "'''$4''' اوچون {{PLURAL:$5|'''$3'''-دن '''$1''' نتیجه|'''$3'''-دن '''$1-$2''' نتیجه}}",
        "search-nonefound": "سیزین سورونوزا اویغون نتیجه تاپیلمادی.",
        "powersearch-legend": "گلیشمیش آختاریش",
index 65c22ab..4f28db5 100644 (file)
        "qbmyoptions": "Биттәрем",
        "faq": "ЙБҺ",
        "faqpage": "Project:ЙБҺ",
-       "vector-action-addsection": "Тема өҫтәргә",
-       "vector-action-delete": "Юйырға",
-       "vector-action-move": "Исемен үҙгәртергә",
-       "vector-action-protect": "Һаҡларға",
-       "vector-action-undelete": "Тергеҙергә",
-       "vector-action-unprotect": "Һаҡлауҙы үҙгәртергә",
-       "vector-view-create": "Яһау",
-       "vector-view-edit": "Үҙгәртергә",
-       "vector-view-history": "Тарихты ҡарау",
-       "vector-view-view": "Уҡыу",
-       "vector-view-viewsource": "Сығанаҡты ҡарарға",
        "actions": "Хәрәкәт",
        "namespaces": "Исем арауыҡтары",
        "variants": "Варианттар",
        "difference-missing-revision": "$1 айырмаһының {{PLURAL:$2|1=бер өлгөһө|$2 өлгөһө}} табылманы.\n\nБыл хәл, ғәҙәттә, юйылған биткә яһалған айырма һылтанмаһының ваҡыты үтеүенән барлыҡҡа килә.\nТулыраҡ мәғлүмәт өсөн ҡарағыҙ: [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} юйыу яҙмалары].",
        "searchresults": "Эҙләү һөҙөмтәләре",
        "searchresults-title": "«$1» өсөн эҙләү һөҙөмтәләре",
-       "toomanymatches": "Бигерәк күп тап килеүҙәр табылды, зинһар, башҡа һорау яҙып ҡарағыҙ",
        "titlematches": "Бит исемдәрендә тап килеүҙәр",
        "textmatches": "Бит эстәлегендә тап килеүҙәр",
        "notextmatches": "Тап килгән бит табылманы",
        "searchmenu-exists": "'''Был вики-проектта «[[:$1]]» бите бар'''",
        "searchmenu-new": "'''Был википроектта \"[[:$1]]\" бите булдырырға.'''",
        "searchprofile-articles": "Эстәлек биттәре",
-       "searchprofile-project": "Ярҙамсы һәм проект биттәре",
        "searchprofile-images": "Мультимедиа",
        "searchprofile-everything": "Барыһы",
        "searchprofile-advanced": "Киңәйтелгән",
        "searchprofile-articles-tooltip": "$1 эсендә эҙлә",
-       "searchprofile-project-tooltip": "$1 эсендә эҙлә",
        "searchprofile-images-tooltip": "Файлдар эҙләү",
        "searchprofile-everything-tooltip": "Барлыҡ биттәрҙә эҙләү (фекерләшеү биттәрендә лә)",
        "searchprofile-advanced-tooltip": "Махсус исем арауыҡтарында эҙләргә",
        "search-interwiki-default": "$1 һөҙөмтә:",
        "search-interwiki-more": "(тағы)",
        "search-relatedarticle": "Ҡағылышлы",
-       "searcheverything-enable": "Бар исем арауыҡтарында эҙләргә",
        "searchrelated": "ҡағылышлы",
        "searchall": "барыһы",
        "showingresults": "Түбәндә №&nbsp;<strong>$2</strong> һөҙөмтәнән башлап <strong>$1</strong> {{PLURAL:$1|һөҙөмтә}} күрһәтелгән.",
-       "showingresultsnum": "Түбәндә №&nbsp;<strong>$2</strong> һөҙөмтәнән башлап <strong>$3</strong> {{PLURAL:$3|һөҙөмтә}} күрһәтелгән.",
        "showingresultsheader": "'''$4''' өсөн '''$3''' һөҙөмтәнән {{PLURAL:$5|1='''$1''' һөҙөмтә|'''$1 - $2''' арауығындағы һөҙөмтәләр}}",
        "search-nonefound": "Был һорауға яуап биреүсе һөҙөмтәләр табылманы.",
        "powersearch-legend": "Киңәйтелгән эҙләү",
        "allowemail": "Башҡа ҡулланыусыларҙан электрон хат алыуҙы рөхсәт итергә",
        "prefs-searchoptions": "Эҙләү",
        "prefs-namespaces": "Исем арауыҡтары",
-       "defaultns": "Юғиһә киләһе исем арауыҡтарында эҙләргә:",
        "default": "ғәҙәттәге",
        "prefs-files": "Файлдар",
        "prefs-custom-css": "Үҙ CSS",
        "prefs-emailconfirm-label": "Электрон почтаны раҫлау:",
        "youremail": "Электрон почта *",
        "username": "{{GENDER:$1|Ҡулланыусы исеме}}:",
-       "uid": "{{GENDER:$1|Ҡатнашыусы}} номеры:",
        "prefs-memberingroups": "{{PLURAL:$1|төркөм}} {{GENDER:$2|ағзаһы}}:",
        "prefs-registration": "Теркәлеү ваҡыты:",
        "yourrealname": "Һеҙҙең ысын исемегеҙ (*)",
        "log-title-wildcard": "Керетелгән хәрефтәр менән башланған исемдәрҙе табырға",
        "showhideselectedlogentries": "Журналдың һайланған яҙмаларын күрһәтергә/йәшерергә.",
        "allpages": "Бөтә биттәр",
-       "alphaindexline": "$1 алып $2 тиклем",
        "nextpage": "Киләһе бит ($1)",
        "prevpage": "Алдағы бит ($1)",
        "allpagesfrom": "Ошондай хәрефтәрҙән башланған биттәрҙе күрһәтергә:",
        "pageinfo-category-pages": "Биттәр һаны",
        "pageinfo-category-subcats": "Категория бүлемдәре һаны",
        "pageinfo-category-files": "Файлдар һаны",
-       "skinname-cologneblue": "Кёльн һағышы",
-       "skinname-modern": "Заманса",
-       "skinname-vector": "Векторлы",
        "markaspatrolleddiff": "Тикшерелгән, тип билдәләргә",
        "markaspatrolledtext": "Бил битте тикшерелгән, тип билдәләргә",
        "markedaspatrolled": "Тикшерелгән тип билдәнгән",
index 68d1029..e2194eb 100644 (file)
@@ -22,9 +22,9 @@
        "tog-hidepatrolled": "Kontroilirde Änderrungen in dé „Létzten Änderrungen“ ausblenden",
        "tog-newpageshidepatrolled": "Kóntróilirde Seiten auf da Listen „Neiche Seiten“ vaberng",
        "tog-extendwatchlist": "Daweiterde Beówochtungslisten",
-       "tog-usenewrc": "Daweiterde Dorstöung voh d' létzden Änderrungen (JavaScript werd braucht)",
+       "tog-usenewrc": "Endarunga vo \"Lezde Endarunga\" und vo \"Mei Beobochtd\" noch Seitn gruppian",
        "tog-numberheadings": "Ywerschriften autómaatisch nummerrirn",
-       "tog-showtoolbar": "Beorweiten-Werkzeigleisten åzoang (JavaScript werd braucht)",
+       "tog-showtoolbar": "Zoag de Edit Toolbar (JavaScript nedig)",
        "tog-editondblclick": "Seiten mid am Dóppedrucker beorweiden (JavaScript werd braucht)",
        "tog-editsectiononrightclick": "Oahzelne Obschnitt mid am Rechtsdrucker beorweiten (JavaScript werd braucht)",
        "tog-watchcreations": "Voh mir söwer eihgstöde Seiten autómaatisch beówochten",
        "create-this-page": "Seiten erstön",
        "delete": "Leschn",
        "deletethispage": "De Seiten leschen",
-       "undelete_short": "{{PLURAL:$1|1 Version|$1 Versionen}} wiederherstön",
+       "undelete_short": "{{PLURAL:$1|1 Version|$1 Versiona}} wiedaheastäin",
        "viewdeleted_short": "{{PLURAL:$1|Oah geléschde Versión|$1 geléschde Versiónen}} åschauh",
        "protect": "Schitzn",
        "protect_change": "endan",
        "talkpage": "De Seiten bsprecher",
        "talkpagelinktext": "Dischkrian",
        "specialpage": "Speziaalseiten",
-       "personaltools": "Mei Werkzeig",
+       "personaltools": "Mei Weakzeig",
        "postcomment": "Neicher Obschnit",
        "articlepage": "Seiteninhoid åzoang",
        "talk": "Dischkrian",
        "mainpage-description": "Hoamseitn",
        "policy-url": "Project:Richtlinien",
        "portal": "Autornportal",
-       "portal-url": "Project:Autornportal",
+       "portal-url": "Project:AutornPortal",
        "privacy": "Datnschutz",
        "privacypage": "Project:Datnschutz",
        "badaccess": "Koane ausreichenden Rechtt",
        "cannotdelete-title": "Seiten „$1“ kå néd gléschd wern",
        "badtitle": "koa gitiga Titl",
        "badtitletext": "Da Titl voh da ogfordatn Seitn is ned gitig, laar oda a ungitiga Sprochlink vonam andan Wiki.",
-       "perfcached": "Dé fóigernden Daaten staummern aus'm Cache und san méglicherweis nimmer aktuö. Maximoi {{PLURAL:$1|oah Ergebnis is|$1 Ergebniss san}} im Cache vafiagbor.",
-       "perfcachedts": "Dé Daaten staummern aus 'm Cache. Da Zeidbunkt voh da létzden Aktualisiarung: $1. Maximoi {{PLURAL:$4|oah Ergebnis is|$4 Ergebniss san}} im Cache vafiagbor.",
+       "perfcached": "De foigandn Datn stamma ausm Cache und san meglichaweis neama aktuäi. Maximoi {{PLURAL:$1|oa Eagebnis is|$1 Ergebniss san}} im Cache vafigboar.",
+       "perfcachedts": "De Datn stamma ausm Cache. Da Zeidpunkt vo da lezzdn Aktualisiarung: $2, $3 Uah. Maximoi {{PLURAL:$4|oa Ergebnis is|$4 Ergebniss san}} im Cache vafigboar.",
        "querypage-no-updates": "'''Dé Aktualisiarungsfunkzión voh derer Seiten is derzeid deaktivird. Dé Daaten wern bis auf Weiders néd daneiert.'''",
        "viewsource": "Quejtext ozoagn",
        "viewsource-title": "Quöntext voh da Seiten $1 auhschauh",
        "yourpassword": "Passwort:",
        "yourpasswordagain": "Es Passwort no amoi eigebm",
        "remembermypassword": "Mitm Brausa dauahoft ogmejd bleibm (maximoi $1 {{PLURAL:$1|Dog|Dog}})",
-       "yourdomainname": "Eanerne Domain:",
+       "yourdomainname": "Dei Domain:",
        "externaldberror": "Entweder es ligt a Feeler bai da externen Authentifiziarung vur oder du derfst dai externs Benytzerkonto ned aktualisirn.",
        "login": "Eilogga",
        "nav-login-createaccount": "Eilogga / Konto olegn",
        "wrongpassword": "Des Posswort is foisch! Bitschee prowirs nuamoi.",
        "wrongpasswordempty": "Es is koa Posswort ned aigeem worn. Bittschee prowirs nuamoi.",
        "mailmypassword": "Neichs Passwort zuaschicka",
-       "passwordremindertitle": "Naichs Posswort fyra {{SITENAME}}-Benytzerkonto",
+       "passwordremindertitle": "A neichs Kennwoat fiar a {{SITENAME}}-Nutzakonto",
        "acct_creation_throttle_hit": "Du host scho $1 {{PLURAL:$1|Benytzerkonto|Benytzerkonten}} und kååst jetzad koane mer åleeng.",
        "emailconfirmlink": "E-Póst-Adressen bstäting (Authentifiziarung)",
        "accountcreated": "Benytzerkonto is erstöid worn",
        "resetpass-submit-loggedin": "Posswort ändern",
        "resetpass-submit-cancel": "Obbrechen",
        "passwordreset": "Passwoat zrucksetzn",
-       "passwordreset-username": "Benutzernåm:",
+       "passwordreset-username": "Nutzanama:",
        "bold_sample": "Fetta Text",
        "bold_tip": "Fetta Text",
        "italic_sample": "Kursiva Text",
        "hiddencategories": "De Seitn is in {{PLURAL:$1|a vasteckde Kategorie|$1 vasteckde Kategorina}} eisortiad:",
        "nocreate-loggedin": "Du host koah Berechtigung, neiche Seiten z' erstön.",
        "permissionserrors": "Berechtigungsfeeler",
-       "permissionserrorstext": "Du bist néd berechtigt, dé Akzión auszfyrn.  {{PLURAL:$1|Grund|Grynd}}:",
-       "permissionserrorstext-withaction": "Du host koa Berechtigung ned, dass de $2.\n{{PLURAL:$1|Grund|Grind}}:",
+       "permissionserrorstext": "Du hosd koa Recht, des z doa. {{PLURAL:$1|Grund|Grind}}:",
+       "permissionserrorstext-withaction": "Du hosd aus {{PLURAL:$1|foigendm Grund|foigendn Grind}} koa Recht ned, $2:",
        "recreate-moveddeleted-warn": "'''Obocht: Du legst a Seitn o, wo scho friaa glescht worn is.'''\n\nBittschee ibaleg da genau, obs sinnvoi is de Seitn ozlegn.\nDes Lesch- und Vaschiab-Logbuach dazua findsd do:",
        "moveddeleted-notice": "De Seitn do is glescht worn. Es foigt a Auszug ausm Lesch- und Vaschiabungs-Logbuch vo dea Seitn.",
        "edit-conflict": "Konflikt ban Beorwaten.",
        "post-expand-template-inclusion-warning": "Obocht: De Gress vo eibundne Vorlong is z gross.\nA poar Vorlogn wean ned eibundn.",
        "post-expand-template-inclusion-category": "Seitn, wo d Gress vo de eibundnan Vorlogn ibaschrittn is",
        "post-expand-template-argument-warning": "'''Obocht:''' De Seitn enthoit mindastns oa Argument in da Vorlog, wo expandiat z grouss is. \nDe Parameta wean ignoriad.",
-       "post-expand-template-argument-category": "Seiten, dé ignorirde Vurlongargumentt enthoiden",
+       "post-expand-template-argument-category": "Seitn mid ignoriadn Voalognparametan",
        "undo-summary": "Änderrung $1 voh [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskussión]]) ryckgängig gmocht.",
        "cantcreateaccounttitle": "Benutzerkonto kå ned erstöd wern",
        "viewpagelogs": "Logbiacha fia de Datei ozoagn",
        "doubleredirects": "Doppede Weiderloatungen",
        "brokenredirects-edit": "werkeln",
        "brokenredirects-delete": "léschen",
-       "withoutinterwiki": "Seiten óne an Link zua åndre Sproochen",
+       "withoutinterwiki": "Seitn ohne Sprochlinks",
        "withoutinterwiki-summary": "D' foiganden Seiten valinken néd auf a åndre Sproochversion",
-       "withoutinterwiki-legend": "Präfix",
+       "withoutinterwiki-legend": "Prefix",
        "withoutinterwiki-submit": "Zoag",
        "fewestrevisions": "Seiten mid d' weenigsten Versiónen",
-       "nbytes": "$1 {{PLURAL:$1|Byte}}",
+       "nbytes": "$1 {{PLURAL:$1|Byte|Bytes}}",
        "ncategories": "$1 {{PLURAL:$1|Kategorie|Kategorien}}",
        "nlinks": "{{PLURAL:$1|a Link|$1 Links}}",
        "nmembers": "{{PLURAL:$1|1 Eindrog|$1 Eindreg}}",
        "mostcategories": "Seiten mid dé haiffigsten Kategorien",
        "mostimages": "Haiffig brauchde Daatein",
        "mostrevisions": "Seiten mid d' haiffigsten Versiónen",
-       "prefixindex": "Olle Seien (mit Präfix)",
+       "prefixindex": "Olle Seitn (mit Prefix)",
        "shortpages": "Kurze Seiten",
        "longpages": "Långe Seiten",
        "deadendpages": "Néd valinkende Seiten",
        "listgrouprights-addgroup-self-all": "Kauh olle Gruppm zum oagern Kóntó dazuadoah",
        "mailnologin": "Du bist néd auhgmödt",
        "emailuser": "Mail an den Nutza",
-       "emailpage": "E-Mail aun Benutzer",
-       "noemailtitle": "Koah E-Mail-Adress",
+       "emailpage": "E-Mail an Nutza",
+       "noemailtitle": "Koa Mail-Adress",
        "emailfrom": "Voh:",
        "emailto": "Aun:",
        "emailsubject": "Bedreff:",
        "ipbreason-dropdown": "* Oigmoahne Sperrgrynd\n** Eihfyng voh voische Informaziónen\n** Laarn voh Seiten\n** Massenweiss Eihfyng voh externe Links\n** Eihstön voh unsinnige Inhoite auf Seiten\n** néd åbrochts Vahoiden\n** Missbrauch mid mererne Benutzerkontós\n** néd geigneter Benutzernåm",
        "ipb-hardblock": "Auhgmödte Benutzer dodrauh hindern, daas Beorweitungen unter derer IP-Adress vurgnummer wern",
        "ipbcreateaccount": "D' Erstöung voh Benutzerkóntós vahindern",
-       "ipbemailban": "E-Mail-Vasånd sperrn",
+       "ipbemailban": "E-Mail-Vasand spean",
        "ipbenableautoblock": "Sperr dé aktuö voh dém Benutzer gnutzde IP-Adress sówia autómaatisch olle fóiganden, voh dénen aus er Beorweitungen óder 's Auhléng voh Benutzerkóntós vasuacht.",
        "ipbsubmit": "IP-Adress/Benutzer sperrn",
        "ipbother": "Åndre Dauer (auf englisch):",
        "unblocklink": "Freigebm",
        "change-blocklink": "Sperr endan",
        "contribslink": "Beidreg",
-       "emaillink": "E-Póst schicker",
+       "emaillink": "E-Mail vaschicka",
        "autoblocker": "Autómaatische Sperr, wei du a gmoahsaume IP-Adress mim [[User:$1|$1]] bnutzd. Grund voh da Benutzersperrn: „$2“.",
        "blocklogpage": "Sperrlogbuach",
        "blocklog-showlog": "{{GENDER:$1|Der Benutzer|Dé Benutzerrin|Der Benutzer}} do is schoh friarer gsperrd worn. Es fóigt a Eihtrog aus'm Benutzersperrlogbiaché:",
        "block-log-flags-anononly": "netter Anónyme",
        "block-log-flags-nocreate": "Es Olegn vo Nutzakontn is gsperrt",
        "block-log-flags-noautoblock": "Autóblóck deaktivierd",
-       "block-log-flags-noemail": "E-Post vaschicka gspead",
+       "block-log-flags-noemail": "Mail vaschicka gspead",
        "unlockdb": "Daatenbaunk freigeem",
        "unlockconfirm": "Ja, i mecht de Datenbank freigem.",
        "unlockbtn": "Datenbank freigem",
        "duplicate-defaultsort": "Obocht: Da Sortiasschlossl \"$2\" ibaschreibt in friaan Schlissl \"$1\".",
        "version": "Versión",
        "version-extensions": "Installierde Daweiterrungen",
+       "version-skins": "Benutzerówerflächen",
        "version-specialpages": "Speziaalseiten",
        "version-parserhooks": "Parser-Hooks",
        "version-variables": "Variaablen",
        "version-antispam": "Spamschutz",
-       "version-skins": "Benutzerówerflächen",
        "version-other": "Ånders",
        "version-mediahandlers": "Meediennutzung",
        "version-hooks": "Schnidstön ''(Hooks)''",
index 6da96fb..dec808c 100644 (file)
        "rev-deleted-user-contribs": "[یوزرنام یانکه یانکه آی پی ادرس هزپ بیتگ انت  - ویرایش چیرداتگین مان هواربیتگان]",
        "rev-deleted-text-permission": "ائ ویرایش چه ائ پیج '''هزپ بیتگ انت'''.\nبلکین اطلاعات گون آئی همگرنچء مان [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} هزپانی سیاهگ] موجوت بیت انت.",
        "rev-deleted-text-unhide": "ائ ویرایش چه ائ پیج '''هزپ بیتگ انت'''.\nبلکین اطلاعات گون آئی همگرنچء مان [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} هزپانی سیاهگ] موجوت بیت انت.\nشما هنچوش اگان بلوٹ ات توان ات [$1 ائ نسخگء بچار ات].",
-       "rev-deleted-text-view": "ای بازبینی صفحه چه آرشیو عمومی '''زورگ''' بیتت.\nپه عنوان مدیر ته {{SITENAME}}  شما تونیت آیء بگنیت;\nشاید جزییاتی ته ببیت [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} آمار حذف].",
-       "rev-deleted-no-diff": "شما نه تونیت تفاوت ای نسخه بچارت په چی که یکی چه نسخ چه عمومی آرشیو '''زورگ''' بوتت.\nممکن انت [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سیاهگ حذف]  جزئیاتی ببیت.",
-       "rev-deleted-unhide-diff": "یکی چه ای دو نسخهٔ  '''حذف بوتت'''.\nممکن انت اطلاعات این شی باره [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سیاهگ حذف] موجود ببیت.\nشما په عنوان یک مدیر هنگت توانیت اگر بلوٹیت [$1 ای تفاوت را بچاریت].",
+       "rev-suppressed-text-unhide": "ائ ویرایش چه ائ پیج '''دیم داشت''' بوت.\nبلکین اطلاعات گون آئی همگرنچء مان [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} دیم داشتانی سیاهگ]. موجوت بیت انت.\nشما هنچوش اگان بلوٹ ات توان ات [$1 ائ نسخگء بچار ات].",
+       "rev-deleted-text-view": "ائ ویرایش چه ائ پیج '''هزپ بیتگ انت'''.\nبلکین اطلاعات گون آئی همگرنچء مان [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} هزپانی سیاهگ]. موجوت بیت انت.",
+       "rev-suppressed-text-view": "ائ ویرایش چه ائ پیج '''دیم داشت''' بوت.\nبلکین اطلاعات گون آئی همگرنچء مان [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} دیم داشتانی سیاهگ]. موجوت بیت انت.",
+       "rev-deleted-no-diff": "ائ ویرایش چه ائ پیج '''هزپ بیتگ انت'''.\nبلکین اطلاعات گون آئی همگرنچء مان  [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} هزپانی سیاهگ]. موجوت بیت انت.",
+       "rev-suppressed-no-diff": "شما نتوان ات ائ ٹگل بیتگانء بگند ات، پرچا که یکء چه نسخگ ان \"\"هزپ بیتگ انت\"\".",
+       "rev-deleted-unhide-diff": "یکء چه ائ دوئین نسخگ ان '''هزپ بیتگ انت'''.\nبلکین اطلاعات گون آئی همگرنچء مان [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} هزپانی سیاهگ] موجوت بیت انت.\nشما هنچوش اگان بلوٹ ات توان ات [$1 ائ نسخگء بچار ات].",
+       "rev-suppressed-unhide-diff": "ائ ویرایش چه ائ پیج '''دیم داشت''' بوت.\nبلکین اطلاعات گون آئی همگرنچء مان [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} دیم داشتانی سیاهگ]. موجوت بیت انت.\nشما هنچوش اگان بلوٹ ات توان ات [$1 ائ نسخگء بچار ات].",
+       "rev-deleted-diff-view": "ائ ویرایش چه ائ پیج '''هزپ بیتگ انت'''.\nبلکین اطلاعات گون آئی همگرنچء مان [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} هزپانی سیاهگ]. موجوت بیت انت.",
+       "rev-suppressed-diff-view": "ائ ویرایش چه ائ پیج '''دیم داشت''' بوت.\nبلکین اطلاعات گون آئی همگرنچء مان [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} دیم داشتانی سیاهگ]. موجوت بیت انت.",
        "rev-delundel": "پیش دار/پناه کن",
+       "rev-showdeleted": "پیش بدار",
        "revisiondelete": "حذف/حذف مکن بازبینیء",
        "revdelete-nooldid-title": "نامعتبر بازبینی هدف",
        "revdelete-nooldid-text": "شما یا یک بازبینی هدفی په اجرای ای عمل مشخص نه کتت\n،بازبینی مشخص موجود نهنت، یا شما تلاش کنیت هنوکین بازبینی پناه کنیت.",
        "revdelete-no-file": "فایل مشخص بیتگین موجود نهنت",
+       "revdelete-show-file-confirm": "شما دلجم ات که هزپ بوتگین نسخگ چه ائ فایل «<nowiki>$1</nowiki>» مان $2 ساهت $3 رء بچار ات؟",
        "revdelete-show-file-submit": "بله",
+       "revdelete-selected-text": "{{PLURAL:$1|درچتگین نسخگ|درچتگین نسخگ ان}} [[:$2]]:",
+       "revdelete-selected-file": "{{PLURAL:$1|درچتگین نسخگ|درچتگین نسخگ ان}} [[:$2]]:",
        "logdelete-selected": "{{PLURAL:$1|رویداد آمار انتخابی|رویداد ان آمار انتخابی}}:",
-       "revdelete-suppress-text": "فرونشانی بایدن '''فقط''' په جهلگین موارد استفاده بیت:\n* اطلاعات نامناسب شخصی\n*: ''نشانی لوگ، شماره تلفن، شماره تامین اجتماعی و دگه.''",
+       "revdelete-text-text": "هزپ بیتگین نسخگ ان هنچوشء مان تاریخچگ گندگ بیت انت بلئی لهتء چه محتویات پر پهکینان پیش دارگ نه بنت.",
+       "revdelete-text-file": "هزپ بیتگین نسخگ ان هنچوشء مان تاریخچگ گندگ بیت انت بلئی لهتء چه محتویات پر پهکین کاربران پیش دارگ نه بنت.",
+       "logdelete-text": "هزپ بیتگین نسخگ ان هنچوشء مان سیاهگ ان گندگ بیت انت بلئی لهتء چه محتویات پر پهکینان پیش دارگ نه بنت.",
+       "revdelete-text-others": "ادگرین ماسٹران {{SITENAME}} اناگتء توان انت ائ چیرداتگین محتوا رء بگند انت ءُ چه همئ راهء هزپ بیتگانء واتر بکن انت، گیر چه ایش که دگرین محدودیتء ساتگ به بیت.",
+       "revdelete-confirm": "دزبندی انت تایید بکن ات پر ائ کارء لوٹء دلجمیء، که آئی رند ءُ پدء زانت ات ءُ ائ کارء همگرنچ گون [[{{MediaWiki:Policy-url}}|پالیسی]] گلائشء بئیت.",
+       "revdelete-suppress-text": "دیم داشت پیکن '''تهنا''' پر جهلیگین بابت ان کارمرز به بیت:\n* اطلاهاتء که بیت توهین به بنت\n* وتیگین نالوٹین اطلاهات\n*: ''گسء نشانیگ، فون نمبر، پجاریگین نشنال کد ءُ ادگر.''",
        "revdelete-legend": "تنظیم محدودیت آن دیستن",
-       "revdelete-hide-text": "Ù¾Ù\86اÙ\87 Ú©Ù\86 Ù\85تÙ\86 Ø¨Ø§Ø²Ø¨Û\8cÙ\86Û\8cØ¡",
+       "revdelete-hide-text": "Ù\86سخگÛ\8cÙ\86 ØªÚ©Ø³Øª",
        "revdelete-hide-image": "پناه کن فایل محتواء",
        "revdelete-hide-name": "پناه کن کار  و هدفء",
-       "revdelete-hide-comment": "پناه کن اصلاح نظرء",
-       "revdelete-hide-user": "پناه کن اصلاح کنوکء نام کاربری/آی پی",
+       "revdelete-hide-comment": "ادیتء خلاسگ",
+       "revdelete-hide-user": "ادیت کنوکین یوزرنام/آی‌پی ادرس",
        "revdelete-hide-restricted": "ای محدودیت آنء په مدیران سیستم و دگران بل",
+       "revdelete-radio-same": "(ٹگل مدئ)",
+       "revdelete-radio-set": "چیر بیتگین",
+       "revdelete-radio-unset": "چارگ بیت",
        "revdelete-suppress": "توقیف کن دیتاء چه مدیران سیستم و دگران",
        "revdelete-unsuppress": "بزور محدودیت آنء جه ترینتگین بازبینی آن",
        "revdelete-log": "دلیل:",
-       "revdelete-submit": "بÙ\84Û\8c Ø§Ù\88ر Ø§Ù\86تخابÛ\8c Ø¨Ø§Ø²Ø¨Û\8cÙ\86Û\8c",
-       "revdelete-success": "'''ظاهر بازبینی گون موفقیت تنظیم بوت.'''",
-       "revdelete-failure": "'''Ù¾Û\8cشدارگ Ù\86سخ Ù\82ابÙ\84 ØªÙ\86ظÛ\8cÙ\85 Ù\86Ù\87 Ø¨Û\8cتÙ\86.'''",
+       "revdelete-submit": "بÙ\87 Ø³Ø§Øª Ù\85اÙ\86 Ø¯Ø±Ú\86تگÛ\8cÙ\86 {{PLURAL:$1|Ù\86سخگ|Ù\86سخگ Ø§Ù\86}}",
+       "revdelete-success": "'''نسخگء بچار گون هیرء اپدیت بوت.'''",
+       "revdelete-failure": "'''Ù\86سخگاÙ\86Û\8c Ø¨Ú\86ار Ø§Ù¾Ø¯Û\8cت Ù\86Ù\87 Ø¨Û\8cت Ø§Ù\86ت:'''\n$1",
        "logdelete-success": "''''آمار ظاهر بیگ گون موفقیت تنظیم بوت.''''",
        "logdelete-failure": "'''پیدایی سیاه گان قابل تنظیم نهنت:'''\n$1",
        "revdel-restore": "عوض کن ظاهر بیگء",
        "pagehist": "تاریح صفحه",
        "deletedhist": "تاریح حذف بوت",
+       "revdelete-hide-current": "ارور مان آیتمء چیردارگ مان $2 ساهت $1: ائ نسخگ، آهرین سیاهگ انت ءُ چیردارگء نه بیت انت.",
+       "revdelete-show-no-access": "ارور مان آیتمء چیردارگ مان $2 ساهت $1: ائ نسخگ نشانیگء «محدودیت» داریت انت ءُ شما رء پر آئی دزرس نه انت.",
+       "revdelete-modify-no-access": "ارور مان آیتمء چیردارگ مان $2 ساهت $1: ائ نسخگ نشانیگء «محدودیت» داریت انت ءُ شما رء پر آئی دزرس نه انت.",
+       "revdelete-modify-missing": "ارور مان آیتمء چیردارگ نمبر $1: ائ نسخگ مان دیتابیسء موجوت نه انت!",
+       "revdelete-no-change": "'''هژاری:''' آیتم مان $2 ساهت $1 چه پیسریگء پیش دارگی تنظیمانء گون وتء داشت.",
+       "revdelete-concurrent-change": "ارور مان آیتمء چیردارگ مان $2 ساهت $1: چوش که پیداگ انت مان همئ وهدء که شما پر آئی وضعیتء ٹگلء جهدء کت ات، آئیء وضعیت گون دگه شهسء واسته ٹگل وارت ات. دزبندی انت سیاهگ انء بچار ات.",
+       "revdelete-only-restricted": "ارور مان آیتمء چیردارگ مان $2 ساهت $1: شما رء اجازت نه انت آیتم انء چه ماسٹرانیء گندء چیر بدئیت گیر چریشی که ادگر چیردارگی اپشنء بزیر ات.",
+       "revdelete-reason-dropdown": "*عامین دلیلان پر هزپ\n** کپی رایتء هلاپ\n** نالوٹین کامنت یانکه وتیگین اطلاهات\n** نالوٹین یوزرنام\n** اطلاهاتء که بیت توهین به بنت",
+       "revdelete-otherreason": "دگر/گیشترین دلیل:",
+       "revdelete-reasonotherlist": "دگرین دلیل",
        "revdelete-edit-reasonlist": "اصلاح دلایل حذف",
+       "revdelete-offender": "نسخگء نبیسوک:",
        "suppressionlog": "آمار توقیف",
-       "suppressionlogtext": "جهلء یک لیست چه حذفیات و محدودیات من جمله پناهین محتوا چه مدیران سیستم هست.\nبه چار [[Special:IPBlockList|IP block list]] په لیست هنوکین عملی محدویت آن",
+       "suppressionlogtext": "جهلیگء لیستء چه آهرین هزپ ان ءُ دیم داشت بیتگانء گند ات که آهانی توکا محتواء انت که چه ماسٹران چیردارگ بیتگ انت.\nپر چارگ لیستء چه فعالین دیم داشت بیتگ ان [[Special:BlockList|بلاک لیست]] رء بچار ات.",
        "mergehistory": "چن و بند کن تاریح آن صفحهء",
        "mergehistory-header": "ای صفحه شما را اجارت دن بازبینی ان تاریح یکی چه منابه صفحه ته یک نوکین صفحه چن وبند کنت.\nمطمین بت که ای تغییر ادامه تاریحی صفحه داریت.",
        "mergehistory-box": "چن وبند بازبینی آن دو صفحه:",
        "mergehistory-empty": "هچ بازبینی چن و بند نه توننت بنت",
        "mergehistory-success": "$3 {{PLURAL:$3|بازبینی|بازبینی ان}} ء [[:$1]] گون موفقیت چن و بند بوت ته [[:$2]].",
        "mergehistory-fail": "نه تونیت چن وبند تاریح اجرا کنت، لطفا دگه چک کنیت صفحه و وهد پارامترانء.",
+       "mergehistory-fail-toobig": "تاریخچگء همگرنچی بیت نه کنت که گیش چه محدودیت $1 {{PLURAL:$1|نسخه}} انتقال بیت انت.",
        "mergehistory-no-source": "منبع صفحه  $1 موجود نهنت.",
        "mergehistory-no-destination": "صفحه مقصد  $1 موجود نهنت.",
        "mergehistory-invalid-source": "منبع صفحه بایدن یک معتبرین عنوانی بیت.",
        "pagemerge-logentry": "چن و بند بوت [[$1]] په  [[$2]] (بازبینی ان تا$3)",
        "revertmerge": "بی چن وبند",
        "mergelogpagetext": "جهلء یک لیست چه نوکترین چن وبندان یکی تاریح صفحه په دگری هست.",
-       "history-title": "تاریح بازبینی \"$1\"",
+       "history-title": "$1: ویرایش انی دپتر",
+       "difference-title": "$1: پرک مان نسخگ ان",
+       "difference-title-multipage": "$1 و $2: پرک مان تاک ان",
+       "difference-multipage": "(پرک مان تاک ان)",
        "lineno": "خط$1:",
        "compareselectedversions": "مقایسه انتخاب بوتگین نسخه یان",
        "showhideselectedversions": "نمایش/پنهان کتن نسخ انتخابی",
        "editundo": "خنثی کتن",
+       "diff-empty": "(بئ پرک)",
+       "diff-multi-sameuser": "({{PLURAL:$1|یک میانجیگین نسخگ|$1 میانجیگین نسخگ}} گون همجندیء کاربر که پیش دارگ نه بوتگ انت)",
+       "diff-multi-otherusers": "({{PLURAL:$1|یک میانجیگین نسخگ$1 میانجیگین نسخگ ان}} گون {{PLURAL:$2|دگرین کاربر|$2 کاربران}} پیش دارگ نه بوتگ انت)",
+       "diff-multi-manyusers": "({{PLURAL:$1|یک میانجیگین نسخگ|$1 میانجیگین نسخگ}} که گون گیش چه $2 {{PLURAL:$2|کاربر|کاربران}} پیش دارگ نبیتگ انت)",
+       "difference-missing-revision": "{{PLURAL:$2|یک ویرایش|$2 ویرایش}}  چه نسخگانی پرک($1) {{PLURAL:$2|ودیگ|ودیگ}  نه بوت.\n\nبلکین گون لینک پر اپدیت نبوتگین تاکء هزپ بوتگ انت.\nتوان ات گیشترین جزئیاتء مان [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} هزپانی سیاهگ] بچار ات.",
        "searchresults": "نتایج گردگ",
        "searchresults-title": "نتایج گردگ په \"$1\"",
        "titlematches": "عنوان صفحه هم دپ نت",
        "shown-title": "پیش دار $1 {{PLURAL:$1|نتیجه|نتیجه}} ته هر صفحه",
        "viewprevnext": "($1 {{int:pipe-separator}} $2) ($3) دیدگ",
        "searchmenu-exists": "'''صفحه گون نام \"[[$1]]\" ته ای ویکی نیستن'''",
-       "searchmenu-new": "'''شر کن صفحه ای \"[[:$1]]\" ته ای ویکی!'''",
+       "searchmenu-new": "<strong>ائ تاکء اڈ کتن «[[:$1]]» مان ائ ویکی!</strong> {{PLURAL:$2|0=|ءُ هنچوش شمئی ودیگ بیتگین تاک گون شمئی شوهاز.|هنچوش شمئی شوهازء آسر.}}",
        "searchprofile-articles": "صفحات محتوا",
        "searchprofile-images": "ملتیمدیا",
        "searchprofile-everything": "هر چیز",
        "searchprofile-everything-tooltip": "گردگ په کل محتوا (هور گون صفحات گپ)",
        "searchprofile-advanced-tooltip": "گردگ ته نام فضایان دل واه",
        "search-result-size": "$1 ({{PLURAL:$2|1کلمه|$2 کلمات}})",
+       "search-result-category-size": "{{PLURAL:$1|یک عضو|$1 عضو}} ({{PLURAL:$2|یک جهلرده|$2 جهلرده}}، {{PLURAL:$3|یک فایل|$3 فایل}})",
        "search-result-score": "ربط: $1%",
        "search-redirect": "(غیر مستقیم $1 )",
        "search-section": "(بخش $1 )",
+       "search-file-match": "(فایلء محتواء همجندی)",
        "search-suggest": "شما را منظور ات: $1",
        "search-interwiki-caption": "پروژه آن گوهار",
-       "search-interwiki-default": "$1 نتایج:",
+       "search-interwiki-default": "نتایج چه $1 :",
        "search-interwiki-more": "(گیشتر)",
        "search-relatedarticle": "مربوطین",
        "searchrelated": "مربوط",
        "searchall": "کل",
        "showingresults": "جهل پیش دارگنت تا  {{PLURAL:$1|'''1'''نتیجه|'''$1''' نتایج}} شروع بنت گون #'''$2'''.",
-       "showingresultsnum": "جهل پیش داریت  {{PLURAL:$3|'''1''' نتیجه|'''$3''' نتایج}} شروع بیت گون #'''$2'''.",
+       "showingresultsinrange": "پیش دارگ مان جهلء تان {{PLURAL:$1|<strong>1</strong> نتیجگ|<strong>$1</strong> نتیجگ}} in range #<strong>$2</strong> تان #<strong>$3</strong>.",
        "showingresultsheader": "{{PLURAL:$5|نتیجه '''$1''' چه '''$3'''|نتایج '''$1 - $2''' چه '''$3'''}} په '''$4'''",
        "search-nonefound": "نتیجه هم دپ په درخواست نیست",
        "powersearch-legend": "گردگ پیشرفته",
        "powersearch-togglelabel": "کنترل:",
        "powersearch-toggleall": "کل",
        "powersearch-togglenone": "هچ یک",
+       "powersearch-remember": "منی زیرتنء پر آیوکین شوهاز شموش مکن",
        "search-external": "حارجی گردگ",
        "searchdisabled": "{{SITENAME}} گردگ غیر فعالنت.\nشما نونیت بگردیت چه طرق گوگل هم زمان.\nتوجه که اندیکس آن {{SITENAME}} محتوا شاید تاریح گوستگین بنت.",
+       "search-error": "ارور مان شوهازء درگت: $1",
        "preferences": "ترجیحات",
-       "mypreferences": "منی ترجیحات",
+       "mypreferences": "ترجیحات",
        "prefs-edits": "تعداد اصلاحات:",
+       "prefsnologintext2": "دزبندی انت  $1  پر ترجیحاتء تنظیم کتن.",
        "prefs-skin": "پوست",
        "skin-preview": "بازین",
        "datedefault": "هچ ترجیح",
+       "prefs-labs": "اپشن پر چکاس",
+       "prefs-user-pages": "کاربریگین تاکان",
        "prefs-personal": "نمایه کاربر",
        "prefs-rc": "نوکین تغییرات",
        "prefs-watchlist": "لیست چارگ",
        "prefs-watchlist-days": "روچان په پیش دارگ ته لیست چارگ",
-       "prefs-watchlist-days-max": "Maximum $1 {{PLURAL:$1|day|days}}",
+       "prefs-watchlist-days-max": "(مکسیمم $1 {{PLURAL:$1|روچ|روچ}})",
        "prefs-watchlist-edits": "گشیترین تعداد تغییرات په پیشدارگ ته پچین لیست چارگ:",
-       "prefs-watchlist-edits-max": "(گیشترین تعداد: ۱۰۰۰)",
+       "prefs-watchlist-edits-max": "(گیشترین نمبر: ۱۰۰۰)",
+       "prefs-watchlist-token": "چارگ لیستء رمز:",
        "prefs-misc": "هردابین",
        "prefs-resetpass": "عوض کتن کلمه رمز",
+       "prefs-changeemail": "ایمیل ادرسء ٹگل بدئ",
+       "prefs-setemail": "ایمیلء ادرسء بلک ات",
        "prefs-email": "گزینه یان ایمیل:",
        "prefs-rendering": "شکل صفحه",
        "saveprefs": "ذخیره",
-       "restoreprefs": "کل پیش فرضین تنظیمات برگردین",
+       "restoreprefs": "پهکین پیش‌ پرزین تنظیمانء واتر بکن (مان پهکین بهران)",
        "prefs-editing": "اصلاح",
        "rows": "ردیفآن«",
        "columns": "ستون‌ان:",
        "searchresultshead": "گردگ",
        "stub-threshold": "سرحد په  <a href=\"#\" class=\"stub\">چنڈ لینک</a> فرمت (بایت):",
+       "stub-threshold-disabled": "نافعال",
        "recentchangesdays": "روچ ان به پیش دارگ ته نوکیت تغییرات:",
        "recentchangesdays-max": "(حداکثر $1 {{PLURAL:$1|روچ|روچ}})",
        "recentchangescount": "تعداد اصلاحات به پیش دارگ به طور پیش فرض :",
        "prefs-help-recentchangescount": "شی هور گون نوکین تغییرات تاریح صفحات و سیاهگان انت.",
+       "prefs-help-watchlist-token2": "ائ سکرٹ کلیت پر ویب فید چه شمئی چارگ لیست انت.\nهرشهسء که آئرء بزانت توان انت که شمئی چارگ لیستء بوان ات، پمیشکا آئرا شیر مکن ات. [[Special:ResetTokens|اگان آئیء ٹگلء لوٹ ات ادان کلیک بکن ات]].",
        "savedprefs": "شمی ترجیحات ذخیره بوتن",
        "timezonelegend": "وهد ملک:",
        "localtime": "ملکی وهد:",
-       "timezoneuseserverdefault": "چه پیش فرضین سرور استفاده کن",
+       "timezoneuseserverdefault": "پیش فرضین ویکیء کارمرز بکن ($1)",
        "timezoneuseoffset": "دگر (اختلاف ءَ مشخص کنیت)",
        "servertime": "وهد سرور:",
        "guesstimezone": "پرکن چه بروزر",
        "timezoneregion-indian": "اقیانوس هند",
        "timezoneregion-pacific": "اقیانوس آرام",
        "allowemail": "فعال کن ایمیل چه دگه کابران",
-       "prefs-searchoptions": "گردگ انتخابان",
+       "prefs-searchoptions": "شوهاز",
        "prefs-namespaces": "نام فصا",
        "default": "پیش فرض",
        "prefs-files": "فایلان",
        "prefs-custom-css": "رسمی سی‌اس‌اس",
        "prefs-custom-js": "رسمی جی‌اس",
+       "prefs-common-css-js": "یک پیمین سی‌اس‌اس/جاوااسکریپٹ پر پهکین اسکین:",
        "prefs-reset-intro": "شما توانت چه ای  صفحه په واترینگ تنظیمات وت په پیش‌فرض استفاده کنیت. ای کار بازگشت‌ناپذیر انت.",
        "prefs-emailconfirm-label": "تایید کتن پست الکترونیک:",
        "youremail": "ایمیل:",
-       "username": "نام کاربری:",
-       "prefs-memberingroups": "عضو گروه {{PLURAL:$1|group|groups}}:",
+       "username": "{{GENDER:$1|یوزرنام}}:",
+       "prefs-memberingroups": "{{GENDER:$2|عضو}} {{PLURAL:$1|گروپ|گروپ}}:",
        "prefs-registration": "ثبت نام وهد:",
        "yourrealname": "راستین  نام:",
        "yourlanguage": "زبان:",
-       "yourvariant": "مغایر:",
+       "yourvariant": "زبان محتواء گؤشگ:",
+       "prefs-help-variant": "شمئی درچتگین گؤشگ پر تاکانی محتواء پیش دارگ مان ائ ویکی.",
        "yournick": "امضا:",
+       "prefs-help-signature": "نبشتگین کامنت ان مان ترانء تاک پیکن گون «<nowiki>~~~~</nowiki>» ایمزا به بنت؛ ائ نشانیگ گون وتکارین حالت پر شمئی ایمزا و وهدستامپء کنورتء بیت انت.",
        "badsig": "نامعتبرین حامین امضا تگان HTML چک کن",
        "badsiglength": "شمل امضا باز مزنتت.\nآی بایدن   $1 {{PLURAL:$1|کارکاتر|کاراکتران}} مزن تر مبیت",
-       "yourgender": "جنس:",
-       "gender-unknown": "نامعلوم",
+       "yourgender": "لوٹ ات که چونکا توصیف به بیت؟",
+       "gender-unknown": "ترجیحء دیان که نامالوم به بیت",
        "gender-male": "مردین",
        "gender-female": "جنین",
-       "prefs-help-gender": "اختÛ\8cارÛ\8c: Ù¾Ù\87 Ø®Ø§Ø·Ø± ØªÙ\88ار Ú©ØªÙ\86 Ø¯Ø±Ø³Øª Ø¬Ù\86س Ú¯Ù\88Ù\86 Ø¨Ø±Ù\86اÙ\85Ù\87 Ø§Ø³ØªÙ\81ادÙ\87 Ø¨Û\8cت. Ø§Û\8c Ø§Ø·Ù\84اعات Ø¨Ù\84Ú©Û\8cÙ\86 Ø¹Ù\85Ù\88Ù\85Û\8c Ø¨Ø¨نت.",
+       "prefs-help-gender": "ائ ØªÙ\86ظÛ\8cÙ\85Ø¡ Ú©Ø§Ø±Ù\85رز Ú©ØªÙ\86 Ø§Û\8cÙ\87تÛ\8cارÛ\8c Ø§Ù\86ت.\nسÙ\81تÙ\88ر Ú\86Ù\87 Ø§Ø¦ Ø§Ù\86داجگ Ù¾Ø± Ø¯Ø±Ø³ØªÛ\8cÙ\86 Ø§Ø´Ø§Ø±Ú¯ Ù¾Ø± Ø´Ù\85ئÛ\8c Ø§Ú©Ø§Ù\86ت Ú¯Ù\88Ù\86 Ø²Ø¨Ø§Ù\86Ø¡ Ú¯Ø±Ø§Ù\85رء Ø¨Ù\87ر Ø²Û\8cر Ø§Øª.\nائ Ø§Ø·Ù\84اÙ\87ات Ø¹Ø§Ù\85 Ø§نت.",
        "email": "ایمیل",
        "prefs-help-realname": "راستین  نام اهتیاریتن. اگه شما یکی انتخاب کنیت شی په شمی کارء نشان هلگ په روت.",
-       "prefs-help-email": "آدرس ایمیل اختیاری انت، بله اجازت دن که یک نوکین کلمه ی رمزی په شما دیم دهگ بیت وهدی که شما وتی رمزء شموشیت.\nشما هنچوش تونیت دگرانء اجازت بدهیت چه طریق شمی بحث_کاربر صفخه بی شی که وتی شناسگ پیش داریت تماس بگرنت.",
+       "prefs-help-email": "ایمیلء ادرس ایهتیاری انت، بلئی پسوردء واتر کتن اگان وتی پسوردء شموش بکن ات ممکن بیت کنت انت.",
+       "prefs-help-email-others": "شما هنچوشء توان ات اینتهاب بکن ات که کاربران بتوان انت چه شمئی بنتاکء لینک یانکه تران تاکء پر شما ایمیل دیم بده انت.\nشمئی ایمیل ادرس وهدء که ادگر شهسء پر شما ایمیل بجنت پیداگ نه بیت.",
        "prefs-help-email-required": "آدرس ایمیل نیازنت.",
        "prefs-info": "اولگین اطلاعات",
        "prefs-i18n": "بین المللی کتن",
        "prefs-signature": "امضا",
        "prefs-dateformat": "تاریح داب",
        "prefs-timeoffset": "وهد بنگیج",
-       "prefs-advancedediting": "پیشرفتگین گزینه",
+       "prefs-advancedediting": "عمومی تنظیمات",
+       "prefs-editor": "اصلاح کنوک",
+       "prefs-preview": "پیشچارگ",
        "prefs-advancedrc": "پیشرفتگین گزینه",
        "prefs-advancedrendering": "پیشرفتگین گزینه",
        "prefs-advancedsearchoptions": "پیشرفتگین گزینه",
        "prefs-advancedwatchlist": "پیشرفتگین گزینه",
        "prefs-displayrc": "پیشدارگ گزینه هان",
+       "prefs-displaywatchlist": "پیشدارگء اپشن",
+       "prefs-tokenwatchlist": "نشانگ",
        "prefs-diffs": "پرک",
+       "prefs-help-prefershttps": "ائ ترجیحء تاثیر رند چه شمئی رندی لاگینء کارمرز بیت انت.",
+       "prefs-tabs-navigation-hint": "بزان: شما توان ات چه چپی و راستی پیشداروکین بٹن ان  پر حرکت زبانگ انی توکا مان زبانگانی لیست کارمرز بکن ات.",
+       "email-address-validity-valid": "شمئی ایمیل ادرس پر درستی پیداگ انت",
+       "email-address-validity-invalid": "مهتبرین ایمیل ادرسء بلک ات",
        "userrights": "مدیریت حقوق کاربر",
        "userrights-lookup-user": "مدیریت گروه کاربر",
        "userrights-user-editname": "یک نام کاربری وارد کن",
        "editusergroup": "اصلاح گروه کاربر",
-       "editinguser": "عوض کنت حقوق کاربر  '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+       "editinguser": "ٹگل مان ایهتیارات کاربریء کاربر '''[[User:$1|$1]]''' $2",
        "userrights-editusergroup": "اصلاح گروه کاربر",
        "saveusergroups": "ذخیره گروه کاربر",
        "userrights-groupsmember": "عضو انت:",
+       "userrights-groupsmember-auto": "ضمنیگین عضو:",
        "userrights-groups-help": "شما شاید گروه ای کاربرء هست ته:\n* یک جعبه علامتی یعنی شی که کاربر تا آ گروه انت.\n* یک بی علامتین جعبه یعنی شی که کاربر ته آ گروه نهنت.\n* A * پیش داریت که شما نه تونیت بزور گروهی که یک بری که آیء اضافه کت یا برعکس.",
        "userrights-reason": "دلیل:",
        "userrights-no-interwiki": "شما را اجازت نیست دان حقوق کاربر ته دگ ویکی آن اصلاح کنیت.",
        "userrights-nodatabase": "دیتابیس $1  موجود نهنت یا محلی نهنت.",
        "userrights-nologin": "شما باید [[Special:UserLogin|وارد بیت]]  گون حساب مدیریتی په مشخص کتن حقوق کاربر.",
-       "userrights-notallowed": "شمی حساب اجازت په مشخص کتن حقوق کاربر نیست.",
+       "userrights-notallowed": "شما رء اجازت پر ادگر کاربرانی ایهتیاراتء هزپ یانکه ازاپ کتن نه انت.",
        "userrights-changeable-col": "گروهانی که شما تونیت عوض کنیت",
        "userrights-unchangeable-col": "گروهانی که شما نه نونیت عوض کنیت",
+       "userrights-conflict": "تعارض مان کاربریگء دزرس! دزبندی انت بازگند ءُ رندء تغییراتء تایید بکن ات.",
+       "userrights-removed-self": "شما پر درستی وتی دزرسانء هزپ کت ات. پمیشکا شما رء انیگ پر ائ تاک دزرس نه انت.",
        "group": "گروه:",
        "group-user": "کابران",
        "group-autoconfirmed": "کابران تایید اتوماتیکی",
        "group-bureaucrat": "دیوان داران",
        "group-suppress": "رویت کنوکان",
        "group-all": "(کل)",
-       "group-user-member": "کاربر",
-       "group-autoconfirmed-member": "کاربر تایید اتوماتیکی",
-       "group-bot-member": "روبات",
-       "group-sysop-member": "مدیر سیستم",
-       "group-bureaucrat-member": "دیوان دار",
-       "group-suppress-member": "رویت کنوک",
+       "group-user-member": "{{GENDER:$1|کاربر}}",
+       "group-autoconfirmed-member": "{{GENDER:$1|تایید بوتگین کاربر}}",
+       "group-bot-member": "{{GENDER:$1|ربات}}",
+       "group-sysop-member": "{{GENDER:$1|ماسٹر}}",
+       "group-bureaucrat-member": "{{GENDER:$1|دیوانسالار}}",
+       "group-suppress-member": "{{GENDER:$1|نظارت}}",
        "grouppage-user": "{{ns:project}}:کابران",
        "grouppage-autoconfirmed": "{{ns:project}}:کابران تایید اتوماتیکی",
        "grouppage-bot": "{{ns:project}}:روباتان",
        "right-move": "جاه په جاه کن صفحات",
        "right-move-subpages": "جاه په جاه کن صفحات گون زیرصفحاتش",
        "right-move-rootuserpages": "جاه په جاه کتن صفحات کاربری اصلی",
+       "right-move-categorypages": "انتقال مان کتگوریء پیج ان",
        "right-movefile": "جاه په جاه کتن فایلان",
        "right-suppressredirect": "شر نه کتن یک غیر مستقیم چه کهنگین نام وهدی که یک صفحه ای جاه په جاه بیت",
        "right-upload": "آپلود فایلان",
        "right-reupload-shared": "بنویس فایلانی که ته انبار میدیا شریکی ملکی انت",
        "right-upload_by_url": "فایل چه آدرس URL  آپلود کن",
        "right-purge": "پاک کتن ذخیره سایت په یک صفحه ای بی تایید",
-       "right-autoconfirmed": "اصلاح کن صفحات نیم محافظتی آ",
+       "right-autoconfirmed": "چه محدودیت سریت آی‌پی‌-محور تاثیر نزیر ات",
        "right-bot": "په داب یک پروسه اتوماتیکی زانگ بین",
        "right-nominornewtalk": "نداشتن هوردین اصلاح ته صفحات بحث یک نوکین کوله یانی پیش داریت",
        "right-apihighlimits": "استفاده کن چه بالاترین محدویتان ته جوستان API",
        "right-writeapi": "استفاده چه نوشتن API",
        "right-delete": "حذف صفحات",
        "right-bigdelete": "حذف صفحات گون درازین تاریح",
+       "right-deletelogentry": "هزپ و واتر چه خاصین مدخل چه سیاهه",
        "right-deleterevision": "حذف و حذف نه کتن مخصوصین بازبینی آن صفحات",
        "right-deletedhistory": "مداخل تاریح حذف بوتگین به گند، بی همراهی متن آیان",
+       "right-deletedtext": "هزپ بوتگین سیاهگء چارتن و تغییرات مان هزپ بوتگین نسخگانی توکء",
        "right-browsearchive": "گردگ صفحات حذفی",
        "right-undelete": "حذف مکن یک صفحه ایء",
        "right-suppressrevision": "بازبینی و ترینگ بازبینی آن پناهین چه مدیران سیستم",
        "right-hideuser": "یک نام کاربری منع کن، آیی چه عام پناه کنگنت",
        "right-ipblock-exempt": "منع جنبی آی پی، منع اتوماتیکی و منع بردی",
        "right-proxyunbannable": "جنبی اتوماتیکی منع پروکسی",
-       "right-protect": "سطوح محافظت عوض کن و اصلاح کن محافظتی صفحاتء",
-       "right-editprotected": "اصلاح کن محافظتی صفحات (بی حفاظت آبشاری)",
+       "right-unblockself": "وتی دزرسء پچ بکن",
+       "right-protect": "تغییر میزان تاکانی پرتکشن ءُ ویرایش مهاپزت بیتگین آپشانکین پیج ان",
+       "right-editprotected": "ویرایش مهاپزت بیتگین پیج گون ای حالت \"{{int:protect-level-sysop}}\"",
+       "right-editsemiprotected": "ویرایش مهاپزت بیتگین پیج گون ای حالت \"{{int:protect-level-autoconfirmed}}\"",
        "right-editinterface": "دستبر کاربر اصلاح کن",
        "right-editusercssjs": "دگر کابرانی فایلان  CSS  و JS اصلاح کن",
        "right-editusercss": "دگر کابرانی فایلان CSS اصلاح کن",
        "right-edituserjs": "دگر کابرانی فایلان JS اصلاح کن",
+       "right-editmyusercss": "وتیگین سی اس اس فایلانء ویرایش بکن ات",
+       "right-editmyuserjs": "وتیگین کاربری جاوااسکریپٹ فایلانء ویرایش بکن ات",
+       "right-viewmywatchlist": "وتیگین چارگ لیستء بگند ات",
+       "right-editmywatchlist": "وتیگین چارگ لیستء ویرایش بکن ات. هنچوش بزان که لهتئ چه اقدامات پیج انء گیر چه ائ اجازت هم ازاپء کن انت.",
+       "right-viewmyprivateinfo": "وتیگین پرایویت اطلاهاتء بچار ات (هنچوش که نام ءُ ایمیل)",
+       "right-editmyprivateinfo": "وتیگین پرایویت اطلاهاتء ادیت بکن ات (هنچوش که نام ءُ ایمیل)",
+       "right-editmyoptions": "وتی ترجیحاتء ادیت بکن ات",
        "right-rollback": "سریع برگردین اصلاحات آهری کاربر که یک بخصوصین صفحه ای اصلاح کتت.",
        "right-markbotedits": "نشان کن اصلاحات برگشتی په داب اصلاحات روباتی",
        "right-noratelimit": "تاثیر نهلیت گون محدودیاتان میزان",
        "right-userrights-interwiki": "اصلاح حقوق کابرانی کابران دگه ویکی انء",
        "right-siteadmin": "کبل و پچ دیتابیس",
        "right-override-export-depth": "درگیزگ صفحات گون صفحاتی لینک بوتگین ته سطح ۵",
+       "right-sendemail": "پر ادگران ایمیلء راهیگ بکن ات",
+       "right-passwordreset": "ایمیل پر پسوردء واترء بچار ات",
        "newuserlogpage": "ورود شرکتن کاربر",
        "newuserlogpagetext": ".شی یک ورودی چه شرکتن کاربر",
        "rightslog": "ورودان حقوق کاربر",
        "action-createpage": "شرکتن ای صفحه",
        "action-createtalk": "شرکتن صفحات بحث",
        "action-createaccount": "شرکتن ای حساب کاربری",
+       "action-history": "ائ پیجء تاریخء بچار ات",
        "action-minoredit": "نشان کتن ای اصلاح په داب هوردین",
        "action-move": "جاه په جاهی ای صفحه",
        "action-move-subpages": "جاه په جاه کتن ای صفحه و زیر صفحاتی",
        "action-move-rootuserpages": "جاه په جاه کتن صفحات کاربری اصلی",
+       "action-move-categorypages": "انتقال مان کتگوریء پیج ان",
        "action-movefile": "ای فایلءَ جاه په جاه کن",
        "action-upload": "آپلود کتن ای قایل",
        "action-reupload": "نویسگ سر ای موجودن فایل",
        "action-suppressionlog": "چارگ  ای خصوصین آمار",
        "action-block": "ای کاربرء چه اصلاح کتن بند کن",
        "action-protect": "عوص کتن سطح محافظت په ای صفحه",
-       "action-import": "وارد کتن ای صفحه چه دگه ویکیء",
-       "action-importupload": "وارد کتن ای صفحه چه یک آپلود فایلء",
+       "action-rollback": "ویرایشانی ترندین واتر چه آهرین کاربرء که یک مالومین تاکء رء ادیت کتگ",
+       "action-import": "تاکء هوار کتن چه ادگر ویکی هان",
+       "action-importupload": "تاکء هوار کتن گون یک فایلء اپلود کتن",
        "action-patrol": "نشان کتن اصلاح دگران په داب چارگ بیتگین",
        "action-autopatrol": "نشان کتن وتی اصلاح په داب چارگ بوتگین",
        "action-unwatchedpages": "چارگ لیست نچارتگین صفحات",
        "action-userrights": "اصلاح کل حقوق کاربر",
        "action-userrights-interwiki": "اصلاح حقوق کاربری کاربران ته دگه ویکیء",
        "action-siteadmin": "کبل یا پچ کتن دینابیس",
+       "action-sendemail": "ایمیلء راهیگ",
+       "action-editmywatchlist": "وتی چارگ لیستء ادیت بکن",
+       "action-viewmywatchlist": "وتیگین چارگ لیستء بچار",
+       "action-viewmyprivateinfo": "وتیگین پرایویت اینفارمیشنء بچار",
+       "action-editmyprivateinfo": "وتی پرایویت اینفارمیشنء ادیت بکن",
        "nchanges": "$1 {{PLURAL:$1|تغییر|تغییرات}}",
+       "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|چه آهریگین چارگ}}",
+       "enhancedrc-history": "تاریخچگ",
        "recentchanges": "نوکین تغییرات",
        "recentchanges-legend": "گزینه ی نوکین تغییرات",
        "recentchanges-summary": "رندگر نوکترین تغییرات ته ویکی تی ای صفحه.",
+       "recentchanges-noresult": "هچ تغییرء مان درچتگین درگتء گون ائ معیاران همگرنچ نه انت.",
        "recentchanges-feed-description": "آهرین تغییرات ته وی کی چه ای فید رند گر",
-       "rcnotefrom": "جهلا تغییرات چه '''$2''' (تا  '''$1''' پیش دارگنت). هست",
+       "recentchanges-label-newpage": "ائ ویرایش نوکین تاکء اڈ کت",
+       "recentchanges-label-minor": "ایش یک هوردین ادیتء انت",
+       "recentchanges-label-bot": "ائ ویرایش گون یک رباتء کتن بیتگ",
+       "recentchanges-label-unpatrolled": "این ویرایش اناگتء گشت‌زنی نه بیتگ",
+       "recentchanges-label-plusminus": "تاکء سایز همگرنچ گون ائ بایت انی انداجگ ٹگل وارتگ انت",
+       "recentchanges-legend-heading": "'''اختصاران:'''",
+       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (هنچوش پر [[Special:NewPages|نوکین تاکانء فهرست]] بچار ات)",
+       "rcnotefrom": "جهلیگء تغییرات چه <strong>$2</strong> (تان <strong>$1</strong> پیش دارگ بیتگ انت).",
        "rclistfrom": "پیش دار نوکین تغییراتآ چه $3 $2",
        "rcshowhideminor": "$1 هوردین تغییرات",
+       "rcshowhideminor-show": "پیش دارگ",
+       "rcshowhideminor-hide": "چیردارگ",
        "rcshowhidebots": "$1 روبوت",
-       "rcshowhideliu": "$1 کاربران وارد بوتگین",
+       "rcshowhidebots-show": "پیش دارگ",
+       "rcshowhidebots-hide": "چیردارگ",
+       "rcshowhideliu": "$1 رجسٹر کتگین کاربران",
+       "rcshowhideliu-show": "پیش دارگ",
+       "rcshowhideliu-hide": "چیردارگ",
        "rcshowhideanons": "$1 نا شناسین کاربران",
+       "rcshowhideanons-show": "پیش دارگ",
+       "rcshowhideanons-hide": "چیردارگ",
        "rcshowhidepatr": "$1 اصلاحات کنترل بیتگین",
+       "rcshowhidepatr-show": "پیش دارگ",
+       "rcshowhidepatr-hide": "چیردارگ",
        "rcshowhidemine": "$1 اصلاحات من",
+       "rcshowhidemine-show": "پیش دارگ",
+       "rcshowhidemine-hide": "چیردارگ",
        "rclinks": "پیش دار آهرین$1 تغییرات ته آهرین $2 روچان<br />$3",
        "diff": "تفاوت",
        "hist": "تاریخ",
        "number_of_watching_users_pageview": "[$1 چارگنت {{PLURAL:$1|کاربر|کابران}}]",
        "rc_categories": "محدودیت په دسته جات(دورش گون\"|\")",
        "rc_categories_any": "هرچی",
+       "rc-change-size-new": "$1 {{PLURAL:$1|بایت}} رند چه تغییر",
        "newsectionsummary": "/* $1 */ نوکین بخش",
-       "rc-enhanced-expand": "جزییات پیش دار(جاوا اسکریپت لازمنت)",
+       "rc-enhanced-expand": "جزئیاتء پیس دارگ",
        "rc-enhanced-hide": "پناه کتن جزییات",
+       "rc-old-title": "اڈ بیتگ گون «$1»",
        "recentchangeslinked": "مربوطین تغییرات",
        "recentchangeslinked-feed": "مربوطین تغییرات",
        "recentchangeslinked-toolbox": "مربوطین تغییرات",
        "upload": "آپلود کتن فایل",
        "uploadbtn": "آپلود فایل",
        "reuploaddesc": "کنسل آپلودء و ترر په فرم آپلود",
+       "upload-tryagain": "فایلء ٹگا وارتگین توضیحاتء راهیگ بکن ات",
        "uploadnologin": "وارد نهیت",
        "uploadnologintext": "شما بایدن [[Special:UserLogin|واردبیت]] په آپلود کتن فایل.",
        "upload_directory_missing": "مسیر آپلود ($1)  گارنت و گون وب سرور شر گنگ نه بیت.",
index 998bdd9..f5fb077 100644 (file)
        "searchrelated": "kauyon",
        "searchall": "gabós",
        "showingresults": "Pigpapahiling sa babâ sagkod sa {{PLURAL:$1|'''1''' resulta|'''$1''' mga resulta}} poon sa #'''$2'''.",
-       "showingresultsnum": "Pigpapahiling sa babâ {{PLURAL:$3|'''1''' resulta|'''$3''' mga resulta}} poon sa #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Resulta '''$1''' kan '''$3'''|Mga Resulta '''$1 - $2''' kan '''$3'''}} para sa '''$4'''",
        "search-nonefound": "Mayo nin mga resulta na panampok sa kahaputan.",
        "powersearch-legend": "Adbansiyadong paghahanap",
        "rclistfrom": "Ipahiling an baguhon na mga kaliwatan magpoon kan $3 $2",
        "rcshowhideminor": "$1 saradit na mga pagliwat",
        "rcshowhideminor-show": "Ipatanaw",
-       "rcshowhideminor-hide": "Tagoa",
+       "rcshowhideminor-hide": "Itago",
        "rcshowhidebots": "$1 mga gantaw",
        "rcshowhidebots-show": "Ipatanaw",
-       "rcshowhidebots-hide": "Tagoa",
+       "rcshowhidebots-hide": "Itago",
        "rcshowhideliu": "$1 rehistradong mga paragamit",
        "rcshowhideliu-show": "Ipatanaw",
-       "rcshowhideliu-hide": "Tagoa",
+       "rcshowhideliu-hide": "Itago",
        "rcshowhideanons": "$1 mga dae bistong paragamit",
        "rcshowhideanons-show": "Ipatanaw",
-       "rcshowhideanons-hide": "Tagoa",
+       "rcshowhideanons-hide": "Itago",
        "rcshowhidepatr": "$1 patrolyadong mga pagliwat",
        "rcshowhidepatr-show": "Ipatanaw",
        "rcshowhidepatr-hide": "Tagoa",
        "rcshowhidemine": "$1 sakong mga pagliliwat",
        "rcshowhidemine-show": "Ipatanaw",
-       "rcshowhidemine-hide": "Tagoa",
+       "rcshowhidemine-hide": "Itago",
        "rclinks": "Ipahilíng an $1 huring mga kaliwatan sa laog nin huring $2 na mga aldaw<br />$3",
        "diff": "kalaenan",
        "hist": "sagaysay",
        "duplicate-defaultsort": "'''Patanid tabi:''' An susing panugmad kan salansan na \"$2\" minasalimbaw sa dating susing panugmad kan salansan na \"$1\".",
        "version": "Bersyon",
        "version-extensions": "Instaladong mga ekstensyon",
+       "version-skins": "Mga kublit",
        "version-specialpages": "Espesyal na mga pahina",
        "version-parserhooks": "Mga pangawil kan parser",
        "version-variables": "Mga kabalanggayahan",
        "version-antispam": "Pan-spam na pangataman",
-       "version-skins": "Mga kublit",
        "version-other": "An iba pa",
        "version-mediahandlers": "Mga Midyang Tagakapot",
        "version-hooks": "Mga pangawil",
index 51f7900..f49c47e 100644 (file)
        "searchall": "усе",
        "showingresults": "Ніжэй {{PLURAL:$1|паданы|паданыя|паданыя}} да '''$1''' {{PLURAL:$1|выніку|вынікаў|вынікаў}}, пачынаючы з #<b>$2</b>.",
        "showingresultsinrange": "Ніжэй паказаныя да {{PLURAL:$1|<strong>$1</strong> выніку ў|<strong>$1</strong> вынікаў у}} дыяпазоне ад <strong>$2</strong> да <strong>$3</strong>.",
-       "showingresultsnum": "Ніжэй паказаны сьпіс з '''$3''' {{PLURAL:$3|выніка|вынікаў|вынікаў}}, пачынаючы ад № '''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|1=Вынік '''$1''' з '''$3'''|Вынікі '''$1—$2''' з '''$3'''}} для '''$4'''",
        "search-nonefound": "Супадзеньняў па запыце ня знойдзена.",
        "powersearch-legend": "Удасканалены пошук",
        "duplicate-defaultsort": "Папярэджаньне: Ключ сартыроўкі па змоўчваньні «$2» замяняе папярэдні ключ сартыроўкі па змоўчваньні «$1».",
        "version": "Вэрсія",
        "version-extensions": "Усталяваныя пашырэньні",
+       "version-skins": "Усталяваныя тэмы афармленьня",
        "version-specialpages": "Спэцыяльныя старонкі",
        "version-parserhooks": "Працэдуры-перахопнікі парсэра",
        "version-variables": "Зьменныя",
        "version-antispam": "Абарона ад спаму",
-       "version-skins": "Афармленьні",
        "version-api": "API",
        "version-other": "Іншыя",
        "version-mediahandlers": "Апрацоўшчыкі мэдыя",
        "version-license": "Ліцэнзія MediaWiki",
        "version-ext-license": "Ліцэнзія",
        "version-ext-colheader-name": "Пашырэньне",
+       "version-skin-colheader-name": "Тэма афармленьня",
        "version-ext-colheader-version": "Вэрсія",
        "version-ext-colheader-license": "Ліцэнзія",
        "version-ext-colheader-description": "Апісаньне",
        "expand_templates_remove_nowiki": "Падаўляць тэгі <nowiki> у выніку",
        "expand_templates_generate_xml": "Паказаць дрэва аналізу XML",
        "expand_templates_generate_rawhtml": "Паказаць HTML",
-       "expand_templates_preview": "Папярэдні прагляд"
+       "expand_templates_preview": "Папярэдні прагляд",
+       "pagelanguage": "Выбар мовы старонкі",
+       "pagelang-name": "Старонка",
+       "pagelang-language": "Мова",
+       "pagelang-use-default": "Ужываць мову па змоўчаньні",
+       "pagelang-select-lang": "Абярыце мову",
+       "right-pagelang": "Зьмяніць мову старонкі",
+       "action-pagelang": "зьмену мовы старонкі"
 }
index 1579ea7..58022e7 100644 (file)
        "hidden-categories": "{{PLURAL:$1|Схаваная катэгорыя|Схаваныя катэгорыі}}",
        "hidden-category-category": "Схаваныя катэгорыі",
        "category-subcat-count": "{{PLURAL:$1|Паказана $1 падкатэгорыя|Паказаны $1 падкатэгорыі|Паказаны $1 падкатэгорый}} з $2.",
-       "category-subcat-count-limited": "У гэтай катэгорыі ёсць {{PLURAL:$1|наступная падкатэгорыя|наступныя $1 падкатэгорый}}.",
+       "category-subcat-count-limited": "У гэтай катэгорыі ёсць {{PLURAL:$1|наступная падкатэгорыя|наступныя $1 падкатэгорыі|наступныя $1 падкатэгорый}}.",
        "category-article-count": "{{PLURAL:$1|Паказана $1 старонка|Паказаны $1 старонкі|Паказаны $1 старонак}} гэтай катэгорыі з $2.",
-       "category-article-count-limited": "У гэтай катэгорыі ёсць наступн{{PLURAL:$1|ая старонка|ыя $1 старонак}}.",
+       "category-article-count-limited": "У Ð³Ñ\8dÑ\82ай ÐºÐ°Ñ\82Ñ\8dгоÑ\80Ñ\8bÑ\96 Ñ\91Ñ\81Ñ\86Ñ\8c Ð½Ð°Ñ\81Ñ\82Ñ\83пн{{PLURAL:$1|аÑ\8f Ñ\81Ñ\82аÑ\80онка|Ñ\8bÑ\8f $1 Ñ\81Ñ\82аÑ\80онкÑ\96\8bÑ\8f $1 Ñ\81Ñ\82аÑ\80онак}}.",
        "category-file-count": "У гэтай катэгорыі ёсць {{PLURAL:$2|$2 файл|наступн{{PLURAL:$1|ы файл|ыя $1 файлаў}} з агульнага ліку $2}}.",
        "category-file-count-limited": "У гэтай катэгорыі ёсць $1 {{PLURAL:$1|файл|файлы|файлаў}}.",
        "listingcontinuesabbrev": "працяг",
        "nospecialpagetext": "<strong>Вы звярнуліся па няправільную адмысловую старонку.</strong>\n\nПералік правільных адмысловых старонак ёсць на [[Special:SpecialPages|{{int:specialpages}}]].",
        "error": "Памылка",
        "databaseerror": "Памылка базы дадзеных",
+       "databaseerror-text": "Здарылася памылка запыту да базы звестак.\nГэта можа ўказваць на няспраўнасць у праграме.",
+       "databaseerror-textcl": "Здарылася памылка запыту да базы звестак.",
        "databaseerror-query": "Запыт: $1",
        "databaseerror-function": "Функцыя: $1",
        "databaseerror-error": "Памылка: $1",
        "laggedslavemode": "<strong>Увага:</strong> Старонка можа не ўтрымліваць апошніх змен.",
-       "readonly": "База звестак заблакаваная",
+       "readonly": "База звестак зачынена",
        "enterlockreason": "Упішыце прычыну зачынення, а таксама меркаваны час адчынення",
        "readonlytext": "База даных не прыймае новых старонак і іншых змяненняў, таму што яна зараз зачынена, відаць, дзеля абслугоўвання, пасля чаго будзе вернута да нармальнай працы.\n\nАдміністратар, які зачыняў базу, растлумачыў гэта так: $1",
        "missing-article": "Не ўдалося знайсці тэксту старонкі ў базе даных, хаця ён мусіць там быць, з назвай \"$1\" $2.\n\nЗвычайна так бывае, калі адкрываюць састарэлую розніцу (diff) або спасылку з гісторыі сцёртай старонкі.\n\nКалі гэта не так, то, магчыма, гэта памылка ў праграмах.\nПаведамце пра гэта, разам з праблемным URL, аднаму з [[Special:ListUsers/sysop|адміністратараў]].",
        "mypreferencesprotected": "Вам не дазволена рэдагаваць свае настройкі.",
        "ns-specialprotected": "Не дазволена правіць старонкі ў прасторы назваў {{ns:special}}.",
        "titleprotected": "Назва засцерагаецца ад стварэння; ахова пастаўлена ўдзельнікам: [[User:$1|$1]].\nТлумачэнне пастаноўкі пад ахову: \"<em>$2</em>\".",
+       "filereadonlyerror": "Немагчыма змяніць файл \"$1\", таму што файлавае сховішча \"$2\" зараз у рэжыме \"толькі для чытання\".\n\nАдміністратар, які абмежаваў доступ, патлумачыў гэта так: \"$3\".",
        "invalidtitle-knownnamespace": "Недапушчальны загаловак з прасторай імёнаў \"$2\" і тэкстам \"$3\"",
        "invalidtitle-unknownnamespace": "Недапушчальны загаловак з невядомым лікам прасторы імён $1 і тэкстам \"$2\"",
        "exception-nologin": "Вы не ўвайшлі ў сістэму",
+       "exception-nologin-text": "Належыць [[Special:Userlogin|прадставіцца сістэме]], каб мець доступ да гэтай старонкі ці дзеяння.",
+       "exception-nologin-text-manual": "Належыць $1, каб мець доступ да гэтай старонкі ці дзеяння.",
        "virus-badscanner": "Некарэктная канфігурацыя: невядомы антывірусны сканер: ''$1''",
        "virus-scanfailed": "не ўдалося праверыць (код $1)",
        "virus-unknownscanner": "невядомы антывірус:",
        "userlogout": "Выйсці з сістэмы",
        "notloggedin": "Не ўвайшоў",
        "userlogin-noaccount": "Не маеце ўліковага запісу?",
+       "userlogin-joinproject": "Далучайцеся да {{GRAMMAR:родны|{{SITENAME}}}}",
        "nologin": "Не маеце рахунку? $1.",
        "nologinlink": "Завесці рахунак",
        "createaccount": "Стварыць рахунак",
        "gotaccountlink": "Увайсці ў сістэму",
        "userlogin-resetlink": "Забыліся даныя для ўваходу?",
        "userlogin-resetpassword-link": "Забылі пароль?",
+       "userlogin-helplink2": "Даведка па прадстаўленні сістэме",
+       "userlogin-loggedin": "Вы ўжо ўвайшлі ў сістэму як {{GENDER:$1|$1}}.\nСкарыстайцеся формай ніжэй, каб прадставіцца сістэме як іншы ўдзельнік.",
        "userlogin-createanother": "Стварыць яшчэ адзін уліковы запіс",
        "createacct-emailrequired": "Адрас электроннай пошты",
        "createacct-emailoptional": "Адрас электроннай пошты (неабавязкова)",
        "createacct-realname": "Сапраўднае імя (неабавязкова)",
        "createaccountreason": "Прычына:",
        "createacct-reason": "Прычына",
+       "createacct-reason-ph": "Чаму вы ствараеце іншы ўліковы запіс",
        "createacct-captcha": "Праверка бяспекі",
        "createacct-imgcaptcha-ph": "Увядзіце тэкст, які вы бачыце вышэй",
        "createacct-submit": "Стварыць уліковы запіс",
        "resetpass-submit-cancel": "Нічога",
        "resetpass-wrong-oldpass": "Недапушчальны тымчасовы ці актуальны пароль.\nМагчыма, вы ўжо змянілі свой пароль ці папрасілі новы тымчасовы.",
        "resetpass-recycled": "Калі ласка, змяніце свой пароль на нешта іншае, чым ваш цяперашні пароль.",
+       "resetpass-temp-emailed": "Вы ўвайшлі ў сістэму з дапамогаю тымчасовага коду, дасланага па эл.пошце.\nКаб завершыць уваход, неабходна ўстанавіць новы пароль:",
        "resetpass-temp-password": "Тымчасовы пароль:",
+       "resetpass-abort-generic": "Змяненне пароля было спынена прыстаўкаю.",
+       "resetpass-expired": "Ваш пароль пратэрмінаваны. Калі ласка, устанавіце новы пароль для ўваходу ў сістэму.",
+       "resetpass-expired-soft": "Ваш пароль пратэрмінаваны, яго трэба замяніць. Калі ласка, выберыце новы пароль зараз, ці націсніце \"{{int:resetpass-submit-cancel}}\", каб змяніць яго пазней.",
        "resetpass-validity-soft": "Ваш пароль недапушчальны: $1\n\nКалі ласка, выберыце новы пароль зараз, або націсніце \"{{int:resetpass-submit-cancel}}\", каб скінуць яго пазней.",
        "passwordreset": "Выслаць мне новы пароль",
        "passwordreset-text-one": "Запоўніце гэту форму, каб атрымаць часовы пароль па эл.пошце.",
+       "passwordreset-text-many": "{{PLURAL:$1|Запоўніце адно з палёў, каб атрымаць тымчасовы пароль па электроннай пошце.}}",
        "passwordreset-legend": "Пераўстанавіць пароль",
        "passwordreset-disabled": "Функцыя пераўсталёўкі пароля адключаная на гэтай вікі.",
        "passwordreset-emaildisabled": "Функцыі эл.пошты адключаны на гэтай Вікі.",
        "changeemail-submit": "Змяніць адрас электроннай пошты:",
        "changeemail-cancel": "Адмена",
        "changeemail-throttled": "Надта штмат спробаў увайсці пад гэтым рахункам. Пачакайце $1 перад тым, як спрабаваць ізноў.",
+       "resettokens-token-label": "$1 (актуальнае значэнне: $2)",
        "bold_sample": "Цёмны тэкст",
        "bold_tip": "Цёмны тэкст",
        "italic_sample": "Курсіўны тэкст",
        "anontalkpagetext": "----''Гэта старонка размовы з ананімным удзельнікам, які або не мае свайго рахунку, або ім не карыстаўся. Таму дзеля яго ці яе ідэнтыфікацыі мы мусім выкарыстаць лічбавы Адрас IP. Такі адрас IP могуць дзяліць між сабою некалькі асоб. Калі вы ананімны ўдзельнік, і лічыце, што атрымліваеце няслушныя заўвагі,[[Special:UserLogin/signup|стварыце рахунак]] або [[Special:UserLogin|акажыцеся]], каб вас больш не блыталі з іншымі ананімнымі ўдзельнікамі.''",
        "noarticletext": "Старонка не ўтрымлівае тэксту. Вы можаце [[Special:Search/{{PAGENAME}}|пашукаць гэткую назву]] ў іншых старонках ці <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ў журналах],\nабо [{{fullurl:{{FULLPAGENAME}}|action=edit}} папрацаваць з гэтай старонкай]</span>.",
        "noarticletext-nopermission": "Старонка не ўтрымлівае тэксту.\nВы можаце [[Special:Search/{{PAGENAME}}|пашукаць гэткую назву]] ў іншых старонках,\nці <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ў журналах]</span>, але вы не маеце дазволу на стварэнне гэтай старонкі.",
+       "missing-revision": "Няма версіі #$1 у старонкі з назвай \"{{FULLPAGENAME}}\".\n\nЗвычайна такое здараецца, калі прайсці па састарэлай спасылцы з гісторыі на старонку, якая была сцёрта.\nПадрабязнасці можна пабачыць у [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале сціранняў].",
        "userpage-userdoesnotexist": "Рахунак удзельніка \"<nowiki>$1</nowiki>\" не зарэгістраваны. Праверце, ці вы жадаеце стварыць або паправіць гэтую старонку.",
        "userpage-userdoesnotexist-view": "Уліковы запіс удзельніка \" $1 \"не зарэгістраваны.",
        "blocked-notice-logextract": "Гэты карыстальнік у дадзены момант заблакаваны. \n Апошні запіс журнала блакіровак прыводзіцца ніжэй для даведкі:",
        "content-not-allowed-here": "\"$1\" не дазволены на старонцы [[$2]]",
        "editwarning-warning": "Пераход на іншую старонку можа прывесці да страты правак, зробленых Вамі. \nКалі Вы ўвайшлі ў сістэму, Вы можаце адключыць гэта папярэджанне ў раздзеле \"{{int:prefs-editing}}\" Вашых настроек.",
        "editpage-notsupportedcontentformat-title": "Фармат змесціва не падтрымліваецца",
+       "editpage-notsupportedcontentformat-text": "Фармат змесціва $1 не падтрымліваецца мадэллю змесціва $2.",
        "content-model-wikitext": "вікі-тэкст",
        "content-model-text": "звычайны тэкст",
        "content-model-javascript": "JavaScript",
        "parser-template-loop-warning": "Цыклічнае ўключэнне шаблона: [[$1]]",
        "parser-template-recursion-depth-warning": "Вычарпаны ліміт глыбіні ўключэння шаблонаў ($1)",
        "language-converter-depth-warning": "Перавышана глыбіня моўнага канвертэра ($1)",
+       "node-count-exceeded-category": "Старонкі, якія перасягнулі колькасць вузлоў",
+       "node-count-exceeded-category-desc": "Катэгорыя для старонак, у якіх перавышана колькасць вузлоў.",
+       "node-count-exceeded-warning": "Старонка перасягнула колькасць вузлоў",
+       "expansion-depth-exceeded-category": "Старонкі, якія перасягнулі глыбіню разгортвання",
+       "expansion-depth-exceeded-category-desc": "Гэта катэгорыя для старонак, у якіх перасягнута глыбіня разгортвання.",
+       "expansion-depth-exceeded-warning": "Старонка перасягнула глыбіню разгортвання",
+       "parser-unstrip-loop-warning": "Выяўлены закальцаваны unstrip",
+       "parser-unstrip-recursion-limit": "Перавышаны ліміт рэкурсіі unstrip ($1)",
+       "converter-manual-rule-error": "Выяўлена памылка ў ручным правіле моўнага канвертара",
        "undo-success": "Праўку можна адкаціць, але праверце папярэдні паказ, што ніжэй, каб упэўніцца ў адпаведнасці будучых змяненняў, і толькі тады запішыце іх, каб завершыць адкат праўкі.",
        "undo-failure": "Немагчыма адкаціць праўку, таму што перашкаджаюць праўкі, што былі перад ёй.",
        "undo-norev": "Не ўдалося адкаціць праўку, таму што яна не існуе або была сцёрта.",
+       "undo-nochange": "Выглядае на тое, што праўка ўжо была адкочаная.",
        "undo-summary": "Адкат версіі $1 аўтарства [[Special:Contributions/$2|$2]] ([[User talk:$2|размова]])",
        "undo-summary-username-hidden": "Адкат версіі $1 схаванага ўдзельніка",
        "cantcreateaccounttitle": "Немагчыма стварыць рахунак",
        "cantcreateaccount-text": "Стварэнне рахункаў было забаронена для гэтага адрасу IP ('''$1''').\n\nЗабарона зроблена ўдзельнікам [[User:$3|$3]], з такім тлумачэннем: ''$2''",
+       "cantcreateaccount-range-text": "Стварэнне ўліковага запісу ўдзельніка з IP-адрасоў у дыяпазоне '''$1''', што ўключае ваш адрас IP ('''$4'''), было забаронена {{GENDER:$3|ўдзельнікам|ўдзельніцай}} [[User:$3|$3]].\n\n$3 {{GENDER:$3|патлумачыў|патлумачыла}} гэта так: ''$2''",
        "viewpagelogs": "Паказаць журналы для гэтай старонкі",
        "nohistory": "Старонка не мае гісторыі правак.",
        "currentrev": "Актуальная версія",
        "mergehistory-empty": "Няма версій, якія можна аб'яднаць.",
        "mergehistory-success": "$3 {{PLURAL:$3|версія|версій}} [[:$1]] паспяхова аб'яднаныя ў склад [[:$2]].",
        "mergehistory-fail": "Немагчыма аб'яднаць гісторыі, праверце зададзеныя назву і час.",
+       "mergehistory-fail-toobig": "Немагчыма выканаць зліццё гісторый, таму што больш за ліміт у $1 {{PLURAL:$1|версію|версіі|версій}} трэба пераносіць.",
        "mergehistory-no-source": "Не існуе крынічная старонка $1.",
        "mergehistory-no-destination": "Не існуе мэтавая старонка $1.",
        "mergehistory-invalid-source": "Крынічная старонка павінна мець карэктную назву.",
        "diff-multi-sameuser": "(Не паказана{{PLURAL:$1|адна прамежкавая версія|$1 прамежкавыя версіі|$1 прамежкавых версій}} таго ж удзельніка)",
        "diff-multi-otherusers": "(Не паказана {{PLURAL:$1|адна прамежкавая версія|$1 прамежкавыя версіі|$1 прамежкавых версій}} {{PLURAL:$2|яшчэ аднаго ўдзельніка|$2 удзельнікаў}})",
        "diff-multi-manyusers": "({{PLURAL:$1|не паказана $1 прамежкавая версія|не паказаны $1 прамежкавыя версіі|не паказаны $1 прамежкавых версій}}, зробленыя больш чым {{PLURAL:$2|$1 удзельнікам|$2 удзельнікамі}})",
+       "difference-missing-revision": "{{PLURAL:$2|$2 версія|$2 версіі|$2 версій}} гэтай розніцы ($1) {{PLURAL:$2|не знойдзена|не знойдзены}}.\n\nЗвычайна такое здараецца з-за пераходу па састарэлай спасылцы на розніцу ў старонцы, якая была сцёрта.\nПадрабязнасці могуць быць у [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале сціранняў].",
        "searchresults": "Вынікі пошуку",
        "searchresults-title": "Вынікі пошуку «$1»",
        "titlematches": "Знойдзена ў назвах",
        "searchall": "усе",
        "showingresults": "Ніжэй паказаны да {{PLURAL:$1|'''$1''' выніку|'''$1''' вынікаў}}, пачынаючы з нумару '''$2'''.",
        "showingresultsinrange": "Ніжэй паказаны да {{PLURAL:$1|<strong>1</strong> выніку|<strong>$1</strong> вынікаў}} у дыяпазоне ад #<strong>$2</strong> да #<strong>$3</strong>.",
-       "showingresultsnum": "Ніжэй паказаны{{PLURAL:$3| '''1''' вынік|я '''$3''' вынікаў}}, пачынаючы з нумару #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Вынік '''$1''' из '''$3'''|Вынікі '''$1 — $2''' из '''$3'''}} для '''$4'''",
        "search-nonefound": "Нічога не было знойдзена.",
        "powersearch-legend": "Падрабязны пошук",
        "powersearch-ns": "Шукаць у прасторах назваў:",
-       "powersearch-togglelabel": "Праверце:",
+       "powersearch-togglelabel": "Пазначыць:",
        "powersearch-toggleall": "Усе",
        "powersearch-togglenone": "Няма",
        "powersearch-remember": "Запомніць выбар для наступных пошукаў",
        "recentchangesdays-max": "(найбольш $1 {{PLURAL:$1|дзень|дзён}})",
        "recentchangescount": "Прадвызначаная колькасць правак дзеля паказу:",
        "prefs-help-recentchangescount": "Гэта ўключае ў сябе апошнія змены, гісторыі старонак, журналы.",
+       "prefs-help-watchlist-token2": "Гэта сакрэтны ключ к сеціўнай стужцы з вашага спісу назірання.\nКожны, хто ведае гэты ключ, будзе мець магчымасць чытаць ваш спіс назірання, таму не дзяліцеся ім.\nКалі трэба, можна [[Special:ResetTokens|скінуць яго]].",
        "savedprefs": "Настройкі замацаваныя.",
        "timezonelegend": "Часавы пояс:",
        "localtime": "Мясцовы час:",
        "lockmanager-fail-releaselock": "Не ўдалося разблакіраваць \"$1\"",
        "lockmanager-fail-db-bucket": "Не атрымалася звязацца з дастатковай колькасцю баз блакаванняў у сегменце $1.",
        "lockmanager-fail-db-release": "Не атрымалася зняць блакаванне базы дадзеных $1.",
+       "lockmanager-fail-svr-acquire": "Не ўдалося атрымаць блакаванні на серверы $1.",
        "lockmanager-fail-svr-release": "Не атрымалася зняць блакаванні на серверы $1.",
        "zip-file-open-error": "Адбылася памылка пры адкрыцці файла для праверкі архіва.",
        "zip-wrong-format": "Указаны файл не з'яўляецца файлам ZIP.",
        "http-invalid-url": "Памылковы URL: $1",
        "http-invalid-scheme": "Не падтрымліваюцца адрасы са схемай \"$1\"",
        "http-request-error": "Не атрымалася выканаць HTTP-запыт з-за невядомай памылкі",
-       "http-read-error": "Памылка чытання HTTP",
+       "http-read-error": "Памылка чытання HTTP.",
        "http-timed-out": "Мінуў час чакання HTTP-запыту.",
        "http-curl-error": "Памылка звароту да URL: $1",
        "http-bad-status": "Пад час апрацоўкі HTTP-запыту выяўлена праблема: $1 $2",
        "license-nopreview": "(без перадпаказу)",
        "upload_source_url": " (сапраўдны, публічна дасягальны URL)",
        "upload_source_file": " (файл на вашай машыне)",
+       "listfiles-delete": "сцерці",
        "listfiles-summary": "Гэтая службовая старонка паказвае ўсе загружаныя файлы.",
        "listfiles_search_for": "Знайсці назву выявы:",
        "imgfile": "файл",
        "sharedupload-desc-there": "Гэты файл з $1 і можа выкарыстоўвацца ў іншых праектах.\nДадатковую інфармацыю можна знайсці на [$2 старонцы апісання файла].",
        "sharedupload-desc-here": "Гэты файл з $1 і можа выкарыстоўвацца іншымі праектамі. Апісанне на яго [$2 старонцы размоў] прыведзена ніжэй",
        "sharedupload-desc-edit": "Гэты файл з $1 і можа выкарыстоўвацца ў іншых праектах.\nМажліва, вы хочаце правіць апісанне на [$2 старонцы апісання файла] там.",
+       "sharedupload-desc-create": "Гэты файл з $1 і можа выкарыстоўвацца ў іншых праектах.\nПравіць яго апісанне можна на гэнай [$2 старонцы апісання файла].",
        "filepage-nofile": "Не знойдзены файл з такой назвай.",
        "filepage-nofile-link": "Не знойдзены файл з такой назвай, але можна [$1 яго ўкласці].",
        "uploadnewversion-linktext": "Укласці новую версію гэтага файла",
        "listgrouprights-namespaceprotection-header": "Абмежаванні прасторы назваў",
        "listgrouprights-namespaceprotection-namespace": "Прастора назваў",
        "listgrouprights-namespaceprotection-restrictedto": "Дазвол(ы), неабходныя для праўкі",
-       "trackingcategories": "Катэгорыі адсочвання",
+       "trackingcategories": "Катэгорыі для асочвання",
+       "trackingcategories-summary": "На гэтай старонцы пералічаны катэгорыі для асочвання, якія аўтаматычна напаўняюцца праграмным забеспячэннем MediaWiki. Іх можна перайменаваць, змяніўшы адпаведныя сістэмныя паведамленні ў прасторы назваў {{ns:8}}.",
+       "trackingcategories-msg": "Катэгорыя для асочвання",
        "trackingcategories-name": "Назва паведамлення",
        "trackingcategories-desc": "Крытэрый уключэння ў катэгорыю",
+       "noindex-category-desc": "Старонка не індэксуецца пошукавымі робатамі, таму што на ёй ёсць магічнае слова <code><nowiki>__NOINDEX__</nowiki></code> і яна знаходзіцца ў прасторы назваў, дзе гэты сцяг дазволены.",
+       "index-category-desc": "На старонцы ёсць магічнае слова <code><nowiki>__INDEX__</nowiki></code> (і старонка знаходзіцца ў прасторы назваў, дзе гэты сцяг дазволены), таму яна індэксуецца пошукавымі робатамі у выпадках, калі гэтага звычайна не адбываецца.",
+       "post-expand-template-inclusion-category-desc": "Пасля разгортвання ўсіх шаблонаў памер старонкі перавышае <code>$wgMaxArticleSize</code>, таму некаторыя шаблоны пакінуты неразгорнутымі.",
+       "post-expand-template-argument-category-desc": "Пасля разгортвання аргумента шаблона (штосьці ў патройных фігурных дужках, напрыклад, <code>{{{Foo}}}</code>), памер старонкі перавышае <code>$wgMaxArticleSize</code>.",
+       "expensive-parserfunction-category-desc": "Занадта шмат працаёмкіх зваротаў да функцый парсера (напрыклад, <code>#ifexist</code>) уключана ў старонку. Гл. [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
+       "broken-file-category-desc": "Катэгорыя дадаецца, калі старонка ўтрымлівае няспраўную спасылку на файл (спасылку на ўкладзены файл, якога няма).",
+       "hidden-category-category-desc": "Гэта катэгорыя змяшчае <code><nowiki>__HIDDENCAT__</nowiki></code>, што паводле прадвызначэння засцерагае яе ад паказу ў спісе катэгорый на старонках.",
        "trackingcategories-nodesc": "Апісанне адсутнічае.",
        "trackingcategories-disabled": "Катэгорыя адключана",
        "mailnologin": "Няма эл.адрасу",
        "protect-badnamespace-title": "Прастора імёнаў без аховы",
        "protect-badnamespace-text": "Старонкі ў гэтай прасторы імёнаў не могуць знаходзіцца пад аховай.",
        "protect-norestrictiontypes-text": "Старонка не можа ахоўвацца, таму што недаступны тыпы абмежавання.",
+       "protect-norestrictiontypes-title": "Неахоўвальная старонка",
        "protect-legend": "Пацверджанне пачатку аховы",
        "protectcomment": "Прычына:",
        "protectexpiry": "Канчаецца:",
        "immobile-target-namespace-iw": "Нельга пераносіць старонку на месца спасылкі інтэрвікі.",
        "immobile-source-page": "Нельга пераносіць гэтую старонку.",
        "immobile-target-page": "Нельга пераносіць пад гэтую назву.",
+       "bad-target-model": "Пажаданая мэта ўжывае іншую мадэль змесціва. Немагчыма пераўтварыць $1 у $2.",
        "imagenocrossnamespace": "Нельга пераносіць у не-файлавую прастору назваў",
        "nonfile-cannot-move-to-file": "Немагчыма пераназываць старонкі ў выявы",
        "imagetypemismatch": "Новы канчатак назвы файла не адпавядае яго тыпу",
        "thumbnail_image-type": "Дадзены тып выявы не падтрымліваецца",
        "thumbnail_gd-library": "Няпоўная канфігурацыя бібліятэкі GD, адсутнічае функцыя $1",
        "thumbnail_image-missing": "Хутчэй за ўсё, адсутнічае файл $1",
+       "thumbnail_image-failure-limit": "Занадта шмат няўдалых спробаў ($1 ці болей) стварыць гэту мініяцюру, за апошні час. Калі ласка, паспрабуйце пазней.",
        "import": "Імпартаваць старонкі",
        "importinterwiki": "Імпарт Transwiki",
        "import-interwiki-text": "Выбар вікі і назвы старонкі дзеля імпарту.\nДаты версій і імёны аўтараў будуць захаваныя.\nУсе транс-вікавыя імпарты запісваюцца ў [[Special:Log/import|журнале імпартаў]].",
        "import-interwiki-templates": "Разам з усімі шаблонамі",
        "import-interwiki-submit": "Імпартаваць",
        "import-interwiki-namespace": "У прастору назваў:",
+       "import-interwiki-rootpage": "Мэтавая каранёвая старонка (неабавязкова):",
        "import-upload-filename": "Назва файла:",
        "import-comment": "Каментарый:",
        "importtext": "Калі ласка, экспартуйце файл з крынічнай вікі з дапамогай [[Special:Export|прылады экспарту]].\nЗахавайце яго на свой камп'ютар, а потым загрузіце сюды.",
        "import-error-interwiki": "Старонка «$1» не была імпартаваная, таму што гэтая назва зарэзерваваная для інтэрвікі.",
        "import-error-special": "Старонка «$1» не была імпартаваная, таму што яна належыць да спецыяльнай прасторы назваў, старонкі ў якой не дазволеныя.",
        "import-error-invalid": "Старонка «$1» не была імпартаваная з-за няслушнасці назвы.",
+       "import-error-unserialize": "Немагчыма дэсерыялізаваць версію $2 старонкі \"$1\". Меркавалася, што версія выкарыстоўвае мадэль змесціва $3, серыялізавана як $4.",
+       "import-error-bad-location": "Версія $2, якая выкарыстоўвае мадэль змесціва $3, не можа быць запісана на старонцы \"$1\" гэтай вікі, паколькі такая мадэль не падтрымліваецца на гэтай старонцы.",
+       "import-rootpage-invalid": "Пазначаная назва каранёвай старонкі недапушчальная.",
+       "import-rootpage-nosubpage": "У прастора назваў \"$1\" каранёвай старонкі падстаронкі не дазволены.",
        "importlogpage": "Журнал імпартаванняў",
        "importlogpagetext": "Адміністрацыйныя імпартаванні старонак з іншых вікі, разам з гісторыямі правак.",
        "import-logentry-upload": "імпартавана [[$1]] праз файлавы ўклад",
        "spambot_username": "Чыстка спаму MediaWiki",
        "spam_reverting": "Вяртаемся да апошняй версіі без спасылак на $1",
        "spam_blanking": "Усе версіі ўтрымлівалі спасылкі на $1, чысцім",
+       "spam_deleting": "Усе версіі ўтрымлівалі спасылкі на $1, сціраем",
+       "simpleantispam-label": "Праверка анты-спаму.\n<strong>НЕ</strong> ўпісвайце тут нічога!",
        "pageinfo-title": "Інфармацыя для \"$1\"",
+       "pageinfo-not-current": "Выбачайце, немагчыма даць гэтыя звесткі для старых версій.",
        "pageinfo-header-basic": "Агульныя звесткі",
        "pageinfo-header-edits": "Гісторыя правак",
        "pageinfo-header-restrictions": "Ахова старонкі",
        "pageinfo-lasttime": "Дата апошняй праўкі",
        "pageinfo-edits": "Агульная колькасць правак",
        "pageinfo-authors": "Агульная колькасць розных аўтараў",
+       "pageinfo-recent-edits": "Колькасць нядаўніх правак (за апошнія $1)",
+       "pageinfo-recent-authors": "Колькасць аўтараў за апошні час",
+       "pageinfo-magic-words": "{{PLURAL:$1|1=Магічнае слова|Магічныя словы}} ($1)",
+       "pageinfo-hidden-categories": "Схаван{{PLURAL:$1|ая катэгорыя|ыя катэгорыі}} ($1)",
+       "pageinfo-templates": "Выкарыстаны {{PLURAL:$1|шаблон|шаблоны}} ($1)",
+       "pageinfo-transclusions": "Выкарыстаны на {{PLURAL:$1|старонцы|старонках}} ($1)",
        "pageinfo-toolboxlink": "Звесткі пра старонку",
        "pageinfo-redirectsto": "Перасылае да",
        "pageinfo-redirectsto-info": "звесткі",
        "markedaspatrollederrortext": "Трэба паказаць тую версію, якую жадаеце пазначыць ухваленай.",
        "markedaspatrollederror-noautopatrol": "Вам не дазволена значыць уласныя праўкі як ухваленыя.",
        "markedaspatrollednotify": "Змена ў $1 пазначана як ухваленая.",
+       "markedaspatrollederrornotify": "Не ўдалося пазначыць як ухваленую.",
        "patrol-log-page": "Журнал ухваленых",
        "patrol-log-header": "Журнал ухваленых версій",
        "log-show-hide-patrol": "$1 журнал ухваленняў",
        "file-info-size-pages": "$1 × $2 пікселяў, памер файла: $3, MIME-тип: $4, $5 {{PLURAL:$5|старонка|старонкі|старонак}}",
        "file-nohires": "Без версіі ў лепшым разрозненні.",
        "svg-long-desc": "файл SVG, намінальна $1 × $2 кропак, аб'ём файла: $3",
+       "svg-long-desc-animated": "Анімаваны файл SVG, намінальна $1 × $2 кропак, аб'ём файла: $3",
+       "svg-long-error": "Няспраўны файл SVG: $1",
        "show-big-image": "Арыгінальны файл",
        "show-big-image-preview": "Памер пры папярэднім праглядзе: $1.",
        "show-big-image-other": "{{PLURAL:$2|Іншы дазвол|Іншыя дазволы}}: $1.",
        "file-info-png-looped": "бясконца",
        "file-info-png-repeat": "паўтараецца $1 {{PLURAL:$1|раз|разоў}}",
        "file-info-png-frames": "$1 {{PLURAL:$1|кадр|кадраў}}",
+       "file-no-thumb-animation": "<strong>Заўвага: З-за тэхнічных абмежаванняў мініяцюры гэтага файла не будуць анімаванымі.</strong>",
+       "file-no-thumb-animation-gif": "<strong>Заўвага: З-за тэхнічных абмежаванняў мініяцюры файлаў GIF высокага разрознення, такіх як гэты, ствараюцца без анімацыі.</strong>",
        "newimages": "Новыя файлы",
        "imagelisttext": "Ніжэй даецца спіс з '''$1''' {{PLURAL:$1|файла|файлаў}} у парадку $2.",
        "newimages-summary": "Тут паказаныя нядаўна ўкладзеныя файлы.",
        "imgmultigo": "Пераход!",
        "imgmultigoto": "На старонку $1",
        "img-lang-default": "(прадвызначаная мова)",
+       "img-lang-info": "Паказаць гэту выяву на мове $1. $2",
+       "img-lang-go": "Перайсці",
        "ascending_abbrev": "да больш.",
        "descending_abbrev": "да менш.",
        "table_pager_next": "Наступная старонка",
        "duplicate-defaultsort": "Увага: прадвызначаная клавіша ўпарадкавання \"$2\" замяніла ранейшую такую клавішу \"$1\".",
        "version": "Версія",
        "version-extensions": "Устаноўленыя прыстаўкі",
+       "version-skins": "Устаноўленыя вокладкі",
        "version-specialpages": "Адмысловыя старонкі",
        "version-parserhooks": "Хукі парсера",
        "version-variables": "Зменныя",
        "version-antispam": "Абарона ад спаму",
-       "version-skins": "Вокладкі",
        "version-other": "Рознае",
        "version-mediahandlers": "Апрацоўнікі мультымедый",
        "version-hooks": "Хукі",
        "version-license": "Ліцэнзія MediaWiki",
        "version-ext-license": "Ліцэнзія",
        "version-ext-colheader-name": "Прыстаўка",
+       "version-skin-colheader-name": "Вокладка",
        "version-ext-colheader-version": "Версія",
        "version-ext-colheader-license": "Ліцэнзія",
        "version-ext-colheader-description": "Апісанне",
        "version-ext-colheader-credits": "Аўтары",
        "version-license-title": "Ліцэнзія $1",
        "version-license-not-found": "Не знойдзена падрабязнай інфармацыі аб ліцэнзіі для гэтай прыстаўкі.",
+       "version-credits-title": "Спіс аўтараў $1",
+       "version-credits-not-found": "Для гэтай прыстаўкі не знойдзена падрабязных звестак пра аўтараў.",
        "version-poweredby-credits": "Пляцоўка працуе на '''[https://www.mediawiki.org/ MediaWiki]''', капірайт © 2001-$1 $2.",
        "version-poweredby-others": "іншыя",
        "version-poweredby-translators": "перакладчыкі translatewiki.net",
+       "version-credits-summary": "Мы хацелі б адзначыць наступных асоб, якія зрабілі ўнёсак у [[Special:Version|MediaWiki]].",
        "version-license-info": "MediaWiki з'яўляецца свабодным праграмным забеспячэннем. Такім чынам, вы можаце паўторна распаўсюджваць прадукт і(або) змяняць яго на ўмовах пагаднення GNU General Public License у тым выглядзе, у якім яно публікуецца фондам Free Software Foundation; сілу мае версія (выпуск) 2 гэтага пагаднення або, на ваш выбар, навейшая версія (выпуск) пагаднення.\n\nMediaWiki распаўсюджваецца, спадзеючыся на прыдатнасць прадукта, але БЕЗ ЯКІХ-НЕБУДЗЬ ГАРАНТЫЙ, у тым ліку, без імплікаваных гарантый СПАЖЫВЕЦКАЙ ВАРТАСЦІ або ПРЫДАТНАСЦІ ДЛЯ ЯКОЙ-НЕБУДЗЬ МЭТЫ. Больш падрабязна гл. пагадненне GNU General Public License.\n\nРазам з гэтым праграмным забеспячэннем вы павінны былі атрымаць [{{SERVER}}{{SCRIPTPATH}}/COPYING копію пагаднення GNU General Public License]. Калі гэта не так, паведамце аб гэтым у фонд Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA або [//www.gnu.org/licenses/old-licenses/gpl-2.0.html атрымайце яе з Інтэрнэту].",
        "version-software": "Устаноўленыя праграмныя прадукты",
        "version-software-product": "Прадукт",
        "version-software-version": "Версія",
+       "version-entrypoints": "Уваходныя адрасы",
        "version-entrypoints-header-entrypoint": "Кропка ўваходу",
        "version-entrypoints-header-url": "URL",
+       "redirect": "Перасылка да файла, ID удзельніка, старонкі ці версіі",
        "redirect-legend": "Перасылка да файла ці старонкі",
+       "redirect-summary": "Гэта адмысловая старонка перасылае да файла (з назвы файла), на старонку (з ідэнтыфікатара версіі ці старонкі), ці на старонку ўдзельніка (калі дадзены лічбавы ID удзельніка). Ужыванне: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], ці [[{{#Special:Redirect}}/user/101]].",
        "redirect-submit": "Перайсці",
        "redirect-lookup": "Шукаць:",
        "redirect-value": "Значэнне:",
        "htmlform-reset": "Адкаціць змяненні",
        "htmlform-selectorother-other": "Рознае",
        "htmlform-no": "Не",
+       "htmlform-yes": "Так",
        "htmlform-cloner-create": "Дадаць яшчэ",
        "htmlform-cloner-delete": "Сцерці",
        "htmlform-cloner-required": "Неабходна хаця б адно значэнне.",
        "api-error-overwrite": "Замена існуючага файла не дапускаецца.",
        "api-error-stashfailed": "Унутраная памылка: сервер не змог захаваць часовы файл.",
        "api-error-publishfailed": "Унутраная памылка: сервер не змог апублікаваць тымчасовы файл.",
+       "api-error-stasherror": "У час укладання файла ў сховішча здарылася памылка.",
        "api-error-timeout": "Сервер не адказаў у чаканы тэрмін.",
        "api-error-unclassified": "Узнікла невядомая памылка",
        "api-error-unknown-code": "Невядомая памылка: «$1».",
        "duration-decades": "$1 {{PLURAL:$1|дзесяцігоддзе|дзесяцігоддзі|дзесяцігоддзяў}}",
        "duration-centuries": "$1 {{PLURAL:$1|стагоддзе|стагоддзі|стагоддзяў}}",
        "duration-millennia": "$1 {{PLURAL:$1|тысячагоддзе|тысячагоддзі|тысячагоддзяў}}",
+       "rotate-comment": "Выява павернута на $1 {{PLURAL:$1|градус|градусы|градусаў}} па гадзіннікавай стрэлцы",
+       "limitreport-title": "Звесткі прафілявання парсера:",
+       "limitreport-cputime": "Выкарыстанне часу ЦП",
        "limitreport-cputime-value": "$1 {{PLURAL:$1|секунда|секунды|секундаў}}",
        "limitreport-walltime-value": "$1 {{PLURAL:$1|секунда|секунды|секундаў}}",
+       "limitreport-ppvisitednodes": "Колькасць вузлоў, наведаных прэпрацэсарам",
+       "limitreport-ppgeneratednodes": "Колькасць вузлоў, створаных прэпрацэсарам",
+       "limitreport-postexpandincludesize": "Памер уключэнняў па разгортванні",
+       "limitreport-postexpandincludesize-value": "$1/$2 {{PLURAL:$2|байт|байты|байтаў}}",
+       "limitreport-templateargumentsize": "Памер аргументаў шаблона",
+       "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|байт|байты|байтаў}}",
+       "limitreport-expansiondepth": "Найбольшая глыбіня разгортвання",
+       "limitreport-expensivefunctioncount": "Колькасць працаёмкіх зваротаў да функцый парсера",
+       "expandtemplates": "Разгортванне шаблонаў",
+       "expand_templates_intro": "Гэта адмысловая старонка бярэ тэкст і разгортвае ў ім усе шаблоны рэкурсіўна.\nТаксама разгортвае падтрыманыя функцыі парсера кшталту\n<code><nowiki>{{</nowiki>#language:…}}</code> і зменныя віду\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.\nФактычна, яна разгортвае ў пэўнай ступені ўсё ў двайных фігурных дужках.",
+       "expand_templates_title": "Загаловак старонкі, для {{FULLPAGENAME}} і г.д.:",
+       "expand_templates_input": "Уваходны тэкст:",
        "expand_templates_output": "Вынік",
+       "expand_templates_xml_output": "Выніковы XML",
+       "expand_templates_html_output": "Выніковы зыходны код HTML",
+       "expand_templates_ok": "Добра",
        "expand_templates_remove_comments": "Сцерці каментарыі",
-       "expand_templates_preview": "Перадпаказ"
+       "expand_templates_remove_nowiki": "Прыбраць тэгі <nowiki> з выніку",
+       "expand_templates_generate_xml": "Паказаць дрэва сінтаксічнага аналізу XML",
+       "expand_templates_generate_rawhtml": "Паказаць зыходны код HTML",
+       "expand_templates_preview": "Перадпаказ",
+       "pagelanguage": "Выбар мовы старонкі",
+       "pagelang-name": "Старонка",
+       "pagelang-language": "Мова",
+       "pagelang-use-default": "Прадвызначаная мова",
+       "pagelang-select-lang": "Выберыце мову",
+       "right-pagelang": "Змяняць мову старонкі",
+       "action-pagelang": "змяняць мову старонкі",
+       "log-name-pagelang": "Журнал змянення мовы",
+       "log-description-pagelang": "Гэта журнал змяненняў у мовах старонкі.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|змяніў|змяніла}} мову старонкі $3 з $4 на $5."
 }
index 207114f..d279705 100644 (file)
        "searchrelated": "свързани",
        "searchall": "всички",
        "showingresults": "Показване на до {{PLURAL:$1|'''1''' резултат|'''$1''' резултата}}, като се започва от номер '''$2'''.",
-       "showingresultsnum": "Показване на {{PLURAL:$3|'''1''' резултат|'''$3''' резултата}}, като се започва от номер '''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Резултат '''$1''' от '''$3'''|Резултати '''$1 - $2''' от '''$3'''}} за '''$4'''",
        "search-nonefound": "Няма резултати, които да отговарят на заявката.",
        "powersearch-legend": "Разширено търсене",
index f7dea84..bd3d464 100644 (file)
        "tog-hidepatrolled": "हाल के परिवर्तन में मामूली संपादन छुपाईं",
        "tog-newpageshidepatrolled": "नयका पृष्ठ के सूची में से जाँचल पृष्क के छुपाँई",
        "tog-extendwatchlist": "मात्र हाल के परिवर्तन ही नाही,बल्कि सब परिवर्तन के देखावे खातिर ध्यान सूची के विस्तारित करीं",
-       "tog-usenewrc": "तà¥\81रà¤\82त à¤­à¤\88ल à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤\86 à¤§à¥\8dयानसà¥\82à¤\9aà¥\80 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनà¥\8bà¤\82 à¤\95à¥\87 à¤ªà¤¨à¥\8dना à¤\95à¥\87 à¤\85नà¥\81सार à¤¸à¤®à¥\82ह à¤®à¥\87à¤\82 à¤¬à¤¾à¤\81à¤\9fà¥\80 (à¤\9cावासà¥\8dà¤\95à¥\8dरिपà¥\8dà¤\9f à¤\86वशà¥\8dयà¤\95)",
+       "tog-usenewrc": "तà¥\81रà¤\82त à¤­à¤\88ल à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤®à¥\87à¤\82 à¤\86 à¤§à¥\8dयानसà¥\82à¤\9aà¥\80 à¤®à¥\87à¤\82 à¤­à¤\88ल à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनन à¤\95à¥\87 à¤ªà¤¨à¥\8dना à¤\85नà¥\81सार à¤¸à¤®à¥\82ह à¤®à¥\87à¤\82 à¤¬à¤¾à¤\82à¤\9fà¥\80",
        "tog-numberheadings": "स्वयं-सांख्यिकी शिर्षक",
-       "tog-showtoolbar": "समà¥\8dपादन à¤\94à¤\9cारà¥\8d à¤¬à¤\95à¥\8dसा à¤\95à¥\87 à¤¦à¤¿à¤\96ाà¤\87लà¥\8d à¤\9cाà¤\8f",
-       "tog-editondblclick": "दà¥\81à¤\88 à¤\95à¥\8dलिà¤\95 à¤ªà¤° à¤ªà¥\83षà¥\8dठ à¤¸à¤\82पादित à¤\95रà¥\80à¤\82 (à¤\9cावासà¥\8dà¤\95à¥\8dरिपà¥\8dà¤\9f à¤\86वशà¥\8dयà¤\95 à¤¬à¤¾)",
-       "tog-editsectiononrightclick": "अनुभाग शीर्षक पर दायाँ क्लिक कर अनुभाग सम्पादित करीं (जावास्क्रिप्ट आवश्यक बा)",
+       "tog-showtoolbar": "समà¥\8dपादन à¤\94à¤\9cारपà¤\9fà¥\8dà¤\9fà¥\80 à¤\95à¥\87 à¤¦à¤¿à¤\96ावल à¤\9cाव",
+       "tog-editondblclick": "दà¥\81à¤\88 à¤\95à¥\8dलिà¤\95 à¤ªà¤° à¤ªà¤¨à¥\8dना à¤¸à¤\82पादन à¤\95रà¥\80à¤\82",
+       "tog-editsectiononrightclick": "अनुभाग शीर्षक पर दायाँ क्लिक कर अनुभाग सम्पादित करीं",
        "tog-watchcreations": "हमरा द्वारा निर्मित पृष्ठ आ हमरा द्वारा लादल फ़ाइलन के हमार ध्यानसूची में जोड़ी",
        "tog-watchdefault": "हमरा द्वारा निर्मित पृष्ठ आ हमरा द्वारा लादल फ़ाइलन के हमार ध्यानसूची में जोड़ी",
        "tog-watchmoves": "हमरा द्वारा स्थानांतरित पृष्ठ आ लादल फाईल के हमरा ध्यानसूची में जोड़ी",
@@ -31,7 +31,7 @@
        "tog-shownumberswatching": "ध्यान रखे वालन सदस्यन के देखावल जाव",
        "tog-oldsig": "वर्तमान हस्ताक्षर:",
        "tog-fancysig": "हस्ताक्षर के विकी पाठ के रुप में उपयोग करीं (बिना स्वचालित कड़ी के)",
-       "tog-uselivepreview": "लाà¤\88व à¤ªà¥\81रà¥\8dवालà¥\8bà¤\95न à¤\95à¥\87 à¤ªà¥\8dरयà¥\8bà¤\97 à¤\95रà¥\80à¤\82 (à¤\9cावासà¥\8dà¤\95à¥\8dरिपà¥\8dà¤\9f à¤¹à¥\8bà¤\96à¥\87 à¤\95à¥\87 à¤\9aाहà¥\80à¤\82) (पà¥\8dरयà¥\8bà¤\97à¤\95à¥\8dषम)",
+       "tog-uselivepreview": "लाà¤\87व à¤ªà¥\81रà¥\8dवालà¥\8bà¤\95न à¤\95à¥\87 à¤ªà¥\8dरयà¥\8bà¤\97 à¤\95रà¥\80à¤\82 (पà¥\8dरयà¥\8bà¤\97ातà¥\8dमà¤\95)",
        "tog-forceeditsummary": "यदि सम्पादन सारांश ना दिहल होखे त हमके सूचित करब",
        "tog-watchlisthideown": "हमार ध्यान दिहल पन्ना के सूची से हमरा खातिर परिवर्तन छिपाईं",
        "tog-watchlisthidebots": "हमार ध्यान सूची से बोट द्वारा करल गईल परिवर्तन के छिपाईं",
        "category-empty": "''इ श्रेणी में इ समय कउनो पन्ना या मीडिया नइखे।''",
        "hidden-categories": "{{PLURAL:$1|छुपावल गईल श्रेणी|छुपावल गईल श्रेणीं}}",
        "hidden-category-category": "छुपावल गइल श्रेणीं",
-       "category-subcat-count": "{{PLURAL:$2|à¤\87 à¤¶à¥\8dरà¥\87णà¥\80 à¤®à¥\87à¤\82 à¤®à¤¾à¤¤à¥\8dर à¤¨à¤¿à¤®à¥\8dनलिà¤\96ित à¤\89पशà¥\8dरà¥\87णà¥\80 à¤¬à¤¾|à¤\87 à¤¶à¥\8dरà¥\87णà¥\80 à¤®à¥\87à¤\82 à¤¨à¤¿à¤®à¥\8dनलिà¤\96ित {{PLURAL:$1|à¤\89पशà¥\8dरà¥\87णà¥\80|$1 à¤\89पशà¥\8dरà¥\87णà¥\80याà¤\82}} à¤¬à¤¾à¤¡à¤¼à¥\87, à¤\95à¥\81ल à¤\89पशà¥\8dरà¥\87णà¥\80याà¤\82 $2 à¤¬à¤¾à¤¡à¤¼à¥\87।}}",
+       "category-subcat-count": "{{PLURAL:$2|à¤\87 à¤¶à¥\8dरà¥\87णà¥\80 à¤®à¥\87à¤\82 à¤®à¤¾à¤¤à¥\8dर à¤¨à¤¿à¤®à¥\8dनलिà¤\96ित à¤\89पशà¥\8dरà¥\87णà¥\80 à¤¬à¤¾|à¤\87 à¤¶à¥\8dरà¥\87णà¥\80 à¤®à¥\87à¤\82 à¤¨à¤¿à¤®à¥\8dनलिà¤\96ित {{PLURAL:$1|à¤\89पशà¥\8dरà¥\87णà¥\80|$1 à¤\89पशà¥\8dरà¥\87णियाà¤\82}} à¤¬à¤¾à¤¡à¤¼à¥\87, à¤\95à¥\81ल à¤\89पशà¥\8dरà¥\87णियाà¤\81$2}}",
        "category-subcat-count-limited": "इ श्रेणी में निम्नलिखित {{PLURAL:$1|उपश्रेणी बा|$1 उपश्रेणीं बाड़े}}।",
-       "category-article-count": "{{PLURAL:$2|इ श्रेणी में मात्र निम्नलिखित पन्ना बा।|इ श्रेणी में निम्नलिखित {{PLURAL:$1|पन्ना बा|$1 पन्नें}}, कुल पन्नें $2 बाड़े।}}",
+       "category-article-count": "{{PLURAL:$2|इ श्रेणी में मात्र निम्नलिखित पन्न बा।|इ श्रेणी में निम्नलिखित {{PLURAL:$1|पन्ना बा|$1 पन्ना बाड़े}, कुल पन्ना $2}}",
        "category-article-count-limited": "निम्नलिखित {{PLURAL:$1|पन्ना|$1 पन्ना}} इ श्रेणीं में बा।",
        "category-file-count": "{{PLURAL:$2|इ श्रेणी में मात्र निम्नलिखित फ़ाइल बा।|इ श्रेणी में निम्नलिखित {{PLURAL:$1|फ़ाइल|$1 फ़ाइलं}} बाड़े, कुल फ़ाइलं $2}}",
        "category-file-count-limited": "वर्तमान में निम्नलिखित {{PLURAL:$1|पन्ना|$1 पन्नां}} इ श्रेणीं में बाड़े।",
        "newwindow": "(नया विंडो में खोलीं)",
        "cancel": "निरस्त",
        "moredotdotdot": "अउर...",
-       "morenotlisted": "à¤\85धिà¤\95 à¤¸à¥\82à¤\9aà¥\80बदà¥\8dध à¤¨à¤\87à¤\96à¥\87...",
+       "morenotlisted": "à¤\87 à¤¸à¥\82à¤\9aà¥\80 à¤ªà¥\82रà¥\8dण à¤¨à¤\87à¤\96à¥\87।",
        "mypage": "पन्ना",
        "mytalk": "राउर बात",
        "anontalk": "इ आइ॰पी खातिर वार्ता",
        "permalink": "स्थायी लिंक",
        "print": "छापीं",
        "view": "देखीं",
+       "view-foreign": "$1 पर देखीं",
        "edit": "सम्पादन",
+       "edit-local": "क्षेत्रीय विवरण देखीं",
        "create": "बनाईं",
+       "create-local": "क्षेत्रीय विवरण जोड़ीं",
        "editthispage": "ई पन्ना के सम्पादन करीं",
        "create-this-page": "ई पन्ना के निर्माण करीं",
        "delete": "मिटाईं",
        "articlepage": "सामग्री पन्ना देखीं",
        "talk": "बात-चीत",
        "views": "विचारसूची",
-       "toolbox": "à¤\94à¤\9cार-पà¥\87à¤\9fà¥\80",
+       "toolbox": "à¤\89पà¤\95रण",
        "userpage": "प्रयोगकर्ता पन्ना देखीं",
        "projectpage": "परियोजना पन्ना देखीं",
        "imagepage": "फाईल पन्ना देखीँ",
        "jumptonavigation": "परिभ्रमण",
        "jumptosearch": "खोजीं",
        "view-pool-error": "क्षमा करीं, ई समय सर्वर पर बहुत ज्यादा लोड बढ़ गईल बा।\nई पन्ना के बहुते प्रयोगकर्ता लोग देखे के कोशिश कर रहल बानी।\nई पन्ना के फिर से देखे से पहिले कृपया कुछ देर तक इन्तजार करीं।\n\n$1",
+       "generic-pool-error": "क्षमा करीं, ई समय सर्वर पर बहुत ज्यादा लोड बढ़ गईल बा।\nई संसाधन के बहुते प्रयोगकर्ता लोग देखे के कोशिश कर रहल बानी।\nई संसाधन तक पहुँच बनावे के कोशिश से पहिले कृपया कुछ देर तक इन्तजार करीं।",
        "pool-timeout": "तालाबन्दी खातिर प्रतीक्षा समय समाप्त",
        "pool-queuefull": "पूल पंक्ति भर गइल",
        "pool-errorunknown": "अज्ञात त्रुटि",
+       "pool-servererror": "पूल काउंटर सेवा उपलब्ध नाही बा ($1)।",
        "aboutsite": "{{SITENAME}} के बारे में",
        "aboutpage": "Project:बारे में",
-       "copyright": "सामà¤\97à¥\8dरà¥\80 $1 à¤\95à¥\87 à¤¤à¤¹à¤¤ à¤\89पलबà¥\8dध à¤¬à¤¾।",
+       "copyright": "à¤\89पलबà¥\8dध à¤¸à¤¾à¤®à¤\97à¥\8dरà¥\80 $1 à¤\95à¥\87 à¤\85धà¥\80न à¤\89पलबà¥\8dध à¤¬à¤¾ à¤\9cब à¤¤à¤\95 à¤\95à¥\80 à¤\85लà¤\97 à¤¸à¥\87 à¤\89लà¥\8dलà¥\87à¤\96 à¤¨à¤¾ à¤\95रल à¤\97à¤\88ल à¤¹à¥\8bà¤\96à¥\87 ।",
        "copyrightpage": "{{ns:project}}:लेखाधिकार",
        "currentevents": "हाल के घटना",
        "currentevents-url": "Project:हाल के घटना",
        "youhavenewmessages": "रउआ लगे बा $1 ($2).",
        "youhavenewmessagesfromusers": "रउआ खातिर {{PLURAL:$3|एगो अन्य सदस्य|$3 अन्य सदस्यन}} के $1 बा। ($2)",
        "youhavenewmessagesmanyusers": "रउआ खातिर कई सदस्यन द्वारा $1 बा। ($2)",
-       "newmessageslinkplural": "{{PLURAL:$1|à¤\8fà¤\97à¥\8b à¤¨à¤¯à¤¾ à¤¸à¤¨à¥\8dदà¥\87श à¤¬à¤¾|नया à¤¸à¤¨à¥\8dदà¥\87श à¤¬à¤¾à¤¡à¤¼à¤¨}}",
-       "newmessagesdifflinkplural": "{{PLURAL:$1|पिछला|पिछलका}} बदलाव",
+       "newmessageslinkplural": "{{PLURAL:$1|à¤\8fà¤\95 à¤¨à¤¯à¤¾ à¤¸à¤¨à¥\8dदà¥\87श|999=नयà¤\95ा à¤¸à¤¨à¥\8dदà¥\87श}}",
+       "newmessagesdifflinkplural": "पिछला {{PLURAL:$1|बदलाव|999=बदलावं}}",
        "youhavenewmessagesmulti": "रउआ लगे $1 पर नया सन्देश बा",
        "editsection": "सम्पादन",
        "editold": "सम्पादन",
        "nospecialpagetext": "<strong>रउआ एगो अवैद्य विशेष पन्ना के अनुरोध कईले बानी।</strong>\n\nवैद्य विशेष पन्ना के सूची मिल सकत बा [[Special:SpecialPages|{{int:specialpages}}]] पर।",
        "error": "त्रुटी",
        "databaseerror": "डेटाबेस त्रुटी",
+       "databaseerror-text": "डाटाबेस अनुरोध त्रुटि  भइल बा।\nसंभवतः सॉफ़्टवेयर में गड़बड़ी बा।",
+       "databaseerror-textcl": "डाटाबेस अनुरोध त्रुटि उत्त्पन्न हो गईल बा।",
+       "databaseerror-query": "अनुरोध: $1",
+       "databaseerror-function": "फ़ंक्शन: $1",
+       "databaseerror-error": "त्रुटि: $1",
        "laggedslavemode": "'''चेतावनी:''' इ पन्ना पर हाल के बदलाव ना होखे के आशंका बा।",
        "readonly": "डेटाबेस लॉक बा",
        "enterlockreason": "लॉक करे के कारण दिहीं, साथे लॉक खुले के समय के लगभग आकलन दिहीं।",
        "invalidtitle-knownnamespace": "\"$2\" नामस्थान आ \"$3\" पाठ्य वाला गलत शीर्षक",
        "invalidtitle-unknownnamespace": "अज्ञात नामस्थान संख्या $1 आ नाम \"$2\" वाला गलत शीर्षक",
        "exception-nologin": "खाता में प्रवेश नईखीं भईल",
-       "exception-nologin-text": "इ पन्ना अथवा कार्य खातिर रउआ विकि प्रवेश (लॉग इन) होना आवश्यक है।",
+       "exception-nologin-text": "इ पन्ना अथवा कार्य के सक्षम करे खातिर कृपया [[Special:Userlogin|लॉग इन]] करीं।",
+       "exception-nologin-text-manual": "इ पन्ना अथवा कार्य के सक्षम करे खातिर कृपया $1 करीं।",
        "virus-badscanner": "गलत जमाव: अज्ञात वायरस जाँचक: ''$1''",
        "virus-scanfailed": "जाँच विफल (कोड $1)",
        "virus-unknownscanner": "अज्ञात ऐंटीवायरस:",
        "gotaccount": "का पहिले से एगो खाता बा? $1.",
        "gotaccountlink": "खाता में प्रवेश",
        "userlogin-resetlink": "का रउआ आपन प्रवेश जानकारी भूला गइल बानी?",
-       "userlogin-resetpassword-link": "आपन गुप्तशब्द के फिर से बहाल करीं",
+       "userlogin-resetpassword-link": "आपन गुप्तशब्द भूला गईनी का?",
+       "userlogin-helplink2": "खाता प्रवेश साथ मदद",
+       "userlogin-loggedin": "रउआ {{GENDER:$1|$1}} के रूप में पहिले से लॉग्ड इन बानीं।\nकौनो अन्य सदस्य के रूप में लॉग इन करे खातिर निम्नलिखित फ़ॉर्म के प्रयोग करीं।",
+       "userlogin-createanother": "एगो दोसर खाता बनाईं",
        "createacct-emailrequired": "ई-मेल पता",
        "createacct-emailoptional": "ई-मेल पता (वैकल्पिक)",
        "createacct-email-ph": "आपन ई-मेल पता लिखीं",
        "passwordtooshort": "गुप्त-शब्द कम से कम {{PLURAL:$1|1 अक्षर|$1 अक्षर}} के होवे के चाहीं।",
        "password-name-match": "राउर गुप्त-शब्द राउर प्रयोगकर्ता नाम से अलग होवे के चाहीं।",
        "password-login-forbidden": "इस सदस्यनाम आ गुप्तशब्द के प्रयोग वर्जित बा।",
-       "mailmypassword": "नया à¤\97à¥\81पà¥\8dत-शबà¥\8dद à¤\88-मà¥\87ल à¤ªà¤° à¤­à¥\87à¤\9cीं",
+       "mailmypassword": "à¤\97à¥\81पà¥\8dतशबà¥\8dद à¤°à¤¿à¤¸à¥\87à¤\9f à¤\95रीं",
        "passwordremindertitle": "{{SITENAME}} खातिर नया अस्थायी गुप्त-शब्द",
        "passwordremindertext": "केहु (शायद रउए, $1 आइ॰पी पता से) {{SITENAME}} ($4) पर प्रयोग खातिर नया गुप्तशब्द के निवेदन कईले बानी। सदस्य \"$2\" खातिर एगो अस्थायी गुप्तशब्द बना दिहल गईल बा, आ ई अभी \"$3\" बा। यदि ई राउरे आशय रहल, त अब रउआ खाता प्रवेश खातिर एगो नया गुप्तशब्द चुने के पड़ी।\nराउर अस्थायी गुप्तशब्द के अवधि {{PLURAL:$5|एक दिन|$5 दिनं}} में समाप्त हो जाई।\n\nयदि इ निवेदन केहु अउर कइले रहल, या रउआ आपन पुरान गुप्तशब्द अब नइखी बदले के चाहत काहे कि रउआ राउर पुरनका गुप्तशब्द के स्मरण हो आइल बा, त रउआ इ संदेश के अनदेखा कर सकत बानी, आ आपन पुरान गुप्तशब्द के प्रयोग पहिले हि जइसन कर सकत बानी।",
        "noemail": "\"$1\" सदस्य खातिर कउनो भी ई-मेल पता दर्ज नइखे करल गइल।",
        "noemailcreate": "रउआ एगो जायज ई-मेल पता उपलब्ध करावे के पड़ी।",
        "passwordsent": "\"$1\" के ई-मेल पता पर एगो नया गुप्तशब्द भेज दिहल गइल बा।\nई-मेल पावे के बाद कृपया दुबारा खाता में प्रवेश करब।",
        "blocked-mailpassword": "राउर आइ॰पी पता के सम्पादन करे से वंचित कर दिहल गइल बा, आ गलत प्रयोग रोके खातिर गुप्तशब्द पुनः प्राप्ति के सुविधा इ आइ॰पी पर बंद कर दिहल गइल बा।",
-       "eauthentsent": "दरà¥\8dà¤\9c à¤\95रावल à¤\97à¤\87ल à¤\88-मà¥\87ल à¤ªà¤¤à¤¾ à¤ªà¤° à¤\8fà¤\97à¥\8b à¤ªà¥\81षà¥\8dà¤\9fिà¤\95रण à¤\88-मà¥\87ल à¤­à¥\87à¤\9c à¤¦à¤¿à¤¹à¤² à¤\97à¤\87ल à¤¬à¤¾à¥¤\nरà¤\89à¤\86 à¤\89 à¤\88-मà¥\87ल à¤ªà¤° à¤¦à¤¿à¤¹à¤² à¤\97à¤\87ल à¤¨à¤¿à¤°à¥\8dदà¥\87श à¤\95à¥\87 à¤\85नà¥\81सरण à¤\95र à¤\95à¥\87 à¤\88-मà¥\87ल à¤ªà¤¤à¤¾ à¤\95à¥\87 à¤ªà¥\81षà¥\8dà¤\9fिà¤\95रण à¤\95रावà¥\87 à¤\95à¥\87 à¤ªà¤¡à¤¼à¥\80, à¤\93à¤\95रा à¤¬à¤¾à¤¦à¥\87 à¤\85हिà¤\9cा à¤¸à¥\87 à¤\95à¤\89नà¥\8b à¤¦à¥\82सर à¤\88-मà¥\87ल à¤­à¥\87à¤\9cल à¤\9cाà¤\88।",
+       "eauthentsent": "दरà¥\8dà¤\9c à¤\95रावल à¤\97à¤\87ल à¤\88-मà¥\87ल à¤ªà¤¤à¤¾ à¤ªà¤° à¤\8fà¤\97à¥\8b à¤ªà¥\81षà¥\8dà¤\9fिà¤\95रण à¤\88-मà¥\87ल à¤­à¥\87à¤\9c à¤¦à¤¿à¤¹à¤² à¤\97à¤\87ल à¤¬à¤¾à¥¤\nà¤\89 à¤\96ाता à¤ªà¤° à¤\95à¥\8cनà¥\8b à¤¦à¥\81सर à¤\88मà¥\87ल à¤­à¥\87à¤\9cल à¤\9cाà¤\93 à¤\89 à¤¸à¥\87 à¤ªà¤¹à¤¿à¤²à¥\87, à¤°à¤\89à¤\86 à¤­à¥\87à¤\9cल à¤\97à¤\88ल à¤\88-मà¥\87ल à¤ªà¤° à¤¦à¤¿à¤¹à¤² à¤\97à¤\87ल à¤¨à¤¿à¤°à¥\8dदà¥\87श à¤\95à¥\87 à¤\85नà¥\81सरण à¤\95र à¤\95à¥\87 à¤\88-मà¥\87ल à¤ªà¤¤à¤¾ à¤\95à¥\87 à¤ªà¥\81षà¥\8dà¤\9fिà¤\95रण à¤\95रावà¥\87 à¤\95à¥\87 à¤ªà¤¡à¤¼à¥\80 à¤¤à¤¾à¤\95ि à¤ªà¤¤à¤¾ à¤\9aलà¥\87 à¤\95à¥\80 à¤¸à¤¹à¥\80 à¤®à¥\87à¤\82 à¤\89 à¤°à¤¾à¤\89रà¥\87 à¤\96ाता à¤¹।",
        "throttled-mailpassword": "पिछला {{PLURAL:$1|एक घंटा|$1 घंटा}} के अंदर एगो गुप्तशब्द पुनर्स्थापन ई-मेल भेजल जा चुकल बा।\nदुरुपयोग से बचावे खातिर {{PLURAL:$1|एक घंटा|$1 घंटा}} में सिर्फ एगो गुप्तशब्द पुनर्स्थापन ई-मेल भेजल जाई।",
        "mailerror": "ई-मेल भेजे में त्रुटि: $1",
        "acct_creation_throttle_hit": "राउर आइ॰पी पता से आईल आगंतुक पिछला चौबीस घंटा में इ विकि पर {{PLURAL:$1|एक खाता|$1 खाता}} बना चुकल बानी, इ समयावधि में इहे अधिकतम सीमा बा।\nअतः इ समय इ आइ॰पी पता के प्रयोग करे वाला आगंतुक अउर अधिक खाता नइखन बना सकत।",
-       "emailauthenticated": "राउर ई-मेल पता के पुष्ट दिनांक $2 के $3 बजे हो चुकल रहे।",
-       "emailnotauthenticated": "राउर ई-मेल पता के अभी तक प्रमाणिकरण नइखे भईल।\nनिम्नलिखित कउनो भी सुविधा खातिर रउआ ई-मेल ना भेजल जाई।",
+       "emailauthenticated": "$2 के $3 पर राउर ई-मेल पता के पुष्टीकरण हो चुकल बा।",
+       "emailnotauthenticated": "राà¤\89र à¤\88-मà¥\87ल à¤ªà¤¤à¤¾ à¤\95à¥\87 à¤\85भà¥\80 à¤¤à¤\95 à¤ªà¥\8dरमाणिà¤\95रण à¤¨à¤\87à¤\96à¥\87 à¤­à¤\88ल।\nनिमà¥\8dनलिà¤\96ित à¤\95à¤\89नà¥\8b à¤­à¥\80 à¤¸à¥\81विधा à¤\96ातिर à¤°à¤\89à¤\86 à¤\95à¥\87 à¤\95à¥\8cनà¥\8b à¤­à¥\80 à¤\88-मà¥\87ल à¤¨à¤¾ à¤­à¥\87à¤\9cल à¤\9cाà¤\88।",
        "noemailprefs": "इ सुविधा के प्रयोग करे खातिर आपन वरियता में एगो ई-मेल पता दिहीं।",
        "emailconfirmlink": "अपना ई-मेल पता कन्फर्म करीं",
        "invalidemailaddress": "राउर ई-मेल पता स्वीकार करल नइखे जा सकत काहे कि ई-मेल के जउन रुप दिखाई दे रहल बा उ गलत लागत बा।\nकृपया एगो सहि ई-मेल पता उपलब्ध कराईं या उ जगह के खाली छोड़ दिहीं।",
        "loginlanguagelabel": "भाषा: $1",
        "suspicious-userlogout": "राउर खाता से बाहर जाये के अनुरोध अस्वीकृत कर दिहल गइल बा काहे कि  अइसन लग रहल बा कि इ कउनो खराब ब्राउज़र या कैश करे वाली प्रॉक्सी द्वारा भेजल गईल रहल।",
        "createacct-another-realname-tip": "असली नाम वैकल्पिक बा।\nयदि रउआ इ के उपलब्ध करावे के चुनत बानी त, एकर प्रयोग सदस्य के ओकरा काम के अधिकार देवे खातिर होखी।",
+       "pt-login": "खाता में प्रवेश",
+       "pt-login-button": "खाता में प्रवेश",
+       "pt-createaccount": "खाता बनाईं",
+       "pt-userlogout": "खाता से बाहर",
        "php-mail-error-unknown": "PHP के mail() फ़ंक्शन में अज्ञात त्रुटि बा।",
        "user-mail-no-addy": "बिना कउनो ई-मेल पता के ई-मेल भेजे के प्रयत्न भईल बा।",
        "user-mail-no-body": "एगो खाली अथवा बहुत छोट ई-मेल भेजे के प्रयत्न भईल बा।",
        "changepassword": "गुप्त शब्द बदलीं",
-       "resetpass_announce": "रà¤\89à¤\86 à¤\88-मà¥\87ल à¤¸à¥\87 à¤ªà¥\8dरापà¥\8dत à¤\85सà¥\8dथायà¥\80 à¤\95à¥\8bड à¤¸à¥\87 à¤\96ाता à¤®à¥\87à¤\82 à¤ªà¥\8dरवà¥\87श à¤­à¤\88ल à¤¬à¤¾à¤¨à¥\80।\nà¤\96ाता à¤ªà¥\8dरवà¥\87श à¤\95à¥\87 à¤ªà¥\82रा à¤\95रà¥\87 à¤\96ातिर à¤°à¤\89à¤\86 à¤\87हाà¤\81 à¤\8fà¤\97à¥\8b à¤¨à¤¯à¤¾ à¤\97à¥\81पà¥\8dतशबà¥\8dद à¤¦à¥\87वà¥\87 à¤\95à¥\87 à¤ªà¤¡à¤¼à¥\80:",
+       "resetpass_announce": "लà¥\89à¤\97 à¤\87न à¤¸à¤®à¥\8dपà¥\82रà¥\8dण à¤\95रà¥\87 à¤\96ातिर à¤°à¤\89à¤\86 à¤\8fà¤\97à¥\8b à¤¨à¤¯à¤¾ à¤ªà¤¾à¤¸à¤µà¤°à¥\8dड à¤¦à¥\87वà¥\87 à¤\95à¥\87 à¤¹à¥\8bà¤\88।",
        "resetpass_header": "खाता के गुप्तशब्द बदलीं",
        "oldpassword": "पुराना गुप्त-शब्द:",
        "newpassword": "नया गुप्त-शब्द:",
        "retypenew": "नया गुप्त-शब्द पुन: डालीं:",
        "resetpass_submit": "गुप्तशब्द बनाईं आ खाता में प्रवेश करीं",
        "changepassword-success": "राउर गुप्तशब्द सफलतापुर्वक बदल दिहल गईल बा!",
+       "changepassword-throttled": "रउआ हाले में कईयन बार खाता में प्रवेश करे के कोशिश कर चुकल बानी।\nकृपया $1 प्रतिक्षा करला के बाद फिर से प्रयास करब।",
        "resetpass_forbidden": "गुप्तशब्द बदलल नइखे जा सकत",
        "resetpass-no-info": "इ पन्ना के सिधे प्रयोग करे खातिर रउआ पहिले खाता में प्रवेश करे के पड़ी।",
        "resetpass-submit-loggedin": "गुप्त शब्द बदलीं",
        "resetpass-submit-cancel": "रद्द करीं",
        "resetpass-wrong-oldpass": "अवैद्य अस्थायी या वर्तमान गुप्तशब्द।\nरउआ पहिले हिं सफलतापूर्वक आपन गुप्तशब्द बदल चुकल बानी, या रउआ एगो अस्थायी गुप्तशब्द के अनुरोध कइले होखब।",
+       "resetpass-recycled": "रीसेट करे खातिर नया पासवर्ड में कृपया आपन वर्तमान पासवर्ड के अलावा कौनो अन्य पासवर्ड के प्रयोग करीं।",
+       "resetpass-temp-emailed": "अस्थाई ईमेल कोड के द्वारा रउआ लॉग इन भइल बानी।\nलॉग इन पूरा करे खातिर, रउआ एगो नया पासवर्ड सेट करे के पड़ी:",
        "resetpass-temp-password": "अस्थायी गुप्तशब्द:",
        "resetpass-abort-generic": "कउनो एक्सटेंशन द्वारा गुप्तशब्द में बदलाव रोक दिहल गईल बा।",
+       "resetpass-expired": "राउर पासवर्ड की वैधता अवधि समाप्त हो चुकल बा। कृपया लॉग इन करे खातिर एगो नया पासवर्ड सेट करीं।",
        "passwordreset": "गुप्तशब्द रिसेट करीं",
        "passwordreset-text-one": "आपन गुप्तशब्द के पुनर्स्थापित करे खातिर इ फॉर्म भरीं।",
        "passwordreset-text-many": "{{PLURAL:$1|आपन गुप्तशब्द पुनर्स्थापित करे खातिर निम्न में से कउनो एगो स्थान भरीं।}}",
        "permissionserrors": "अनुमति त्रुटी",
        "log-fulllog": "पूरा लॉग देखीं",
        "edit-conflict": "संपादन अंतर्विरोध",
+       "postedit-confirmation-created": "पन्ना बना दिहल गईल।",
        "postedit-confirmation-saved": "राउर सम्पादन सुरक्षित कर दिहल गईल।",
        "invalid-content-data": "अवैध डाटा सामग्री",
        "content-model-wikitext": "विकीपाठ्य",
        "searchrelated": "संबंधित",
        "searchall": "सब",
        "showingresults": "नीचे देखावल जा रहल बा {{PLURAL:$1|'''1''' परिणाम|'''$1''' परिणाम}} #'''$2''' से शुरु होवे वाला।",
-       "showingresultsnum": "नीचे देखावल जा रहल बा {{PLURAL:$3|'''1''' परिणाम|'''$3''' परिणाम}} #'''$2''' से शुरु होवे वाला।",
        "search-nonefound": "राउर खोज मे से मेल खात कउनो परिणाम नईखे बा",
        "powersearch-legend": "उन्नत खोज",
        "powersearch-ns": "सन्दर्भ में खोजीं",
        "prefs-editing": "संपादन",
        "searchresultshead": "खोज",
        "savedprefs": "राउर वरीयताएँ सुरक्षित कर दिहल गईल।",
+       "timezoneregion-africa": "अफ़्रीका",
+       "timezoneregion-america": "अमेरिका",
+       "timezoneregion-antarctica": "अंटार्कटिका",
+       "timezoneregion-arctic": "आर्कटिक",
        "timezoneregion-asia": "एशिया",
+       "timezoneregion-atlantic": "एटलांटिक महासागर",
        "timezoneregion-australia": "अस्ट्रेलिया",
        "timezoneregion-europe": "यूरोप",
        "timezoneregion-indian": "हिंद महासागर",
        "yourrealname": "असली नाम",
        "yourlanguage": "भाषा:",
        "prefs-preview": "पूर्वावलोकन",
+       "action-move": "ई पन्ना के स्थांतरण करीं",
+       "action-delete": "ई पन्ना के मिटाईं",
        "recentchanges": "तुरंत भईल परिवर्तन",
        "recentchanges-legend": "हाल के परिवर्तन संबंधी विकल्प",
        "recentchanges-label-newpage": "ई सम्पादन से एगो नवका पृष्ठ तैयार हो गइल बा",
        "recentchanges-label-minor": "ई एगो छोटा सम्पाद बा",
+       "recentchanges-legend-heading": "'''कुंजी:'''",
        "rcshowhideminor": "$1 छोट सम्पादन",
+       "rcshowhideminor-show": "दिखाईं",
+       "rcshowhideminor-hide": "छुपाँई",
        "diff": "अन्तर",
        "hist": "इति",
        "hide": "छुपाँई",
        "recentchangeslinked": "सम्बन्धित बदलाव",
        "recentchangeslinked-feed": "सम्बन्धित बदलाव",
        "recentchangeslinked-toolbox": "सम्बन्धित बदलाव",
+       "recentchangeslinked-page": "पन्ना नाम:",
        "upload": "फाईल लादीं",
+       "filedesc": "सारांश",
+       "fileuploadsummary": "सारांश:",
+       "filesource": "स्रोत:",
+       "unknown-error": "अज्ञात त्रुटि उत्पन्न हो गईल बा।",
        "file-anchor-link": "फ़ाइल",
        "filehist": "पन्ना के इतिहास",
        "filehist-deleteall": "सब मिटाईं",
index 290cdbb..1f18c13 100644 (file)
        "qbmyoptions": "Tungkaran ulun",
        "faq": "FAQ",
        "faqpage": "Project:FAQ",
-       "vector-action-addsection": "Tambahi tupik",
-       "vector-action-delete": "Hapus",
-       "vector-action-move": "Pindahakan",
-       "vector-action-protect": "Lindungi",
-       "vector-action-undelete": "Pawalangan pahapusan",
-       "vector-action-unprotect": "Palindungan",
-       "vector-view-create": "Ulah",
-       "vector-view-edit": "Babak",
-       "vector-view-history": "Tiringi halam",
-       "vector-view-view": "Baca",
-       "vector-view-viewsource": "Tiringi asal mula",
        "actions": "Tindakan",
        "namespaces": "Ngarankamar",
        "variants": "Macam",
        "diff-multi-manyusers": "({{PLURAL:$1|Asa ralatan tangah|$1 raralatan tangah}} ulih labih pada $2 {{PLURAL:$2|pamuruk|papamuruk}} kada ditampaiakan)",
        "searchresults": "Kulihan panggagaian",
        "searchresults-title": "Kulihan gagai gasan \"$1\"",
-       "toomanymatches": "Kabanyakan nang cucuk kulihan, muhun cubai parmintaan lain",
        "titlematches": "Judul tungkaran pas",
        "textmatches": "Naskah tungkaran pas",
        "notextmatches": "Kadada tungkaran banaskah pas",
        "searchmenu-exists": "'''Ada tungkaran bangaran \"[[:$1]]\" dalam wiki ini.'''",
        "searchmenu-new": "'''Maulah tungkaran \"[[:$1]]\" dalam wiki ngini!'''",
        "searchprofile-articles": "Tungkaran isi",
-       "searchprofile-project": "Tutungkaran Patulung wan Rangka gawian",
        "searchprofile-images": "Multimadia",
        "searchprofile-everything": "Samunyaan",
        "searchprofile-advanced": "Haratan",
        "searchprofile-articles-tooltip": "Panggagaian pada $1",
-       "searchprofile-project-tooltip": "Panggagaian pada $1",
        "searchprofile-images-tooltip": "Panggagaian barakas",
        "searchprofile-everything-tooltip": "Panggagaian sabarataan isi (tamasuk tutungkaran pamandiran)",
        "searchprofile-advanced-tooltip": "Panggagaian pada ragam ngaran kakamar",
        "search-interwiki-default": "Kulihan $1",
        "search-interwiki-more": "(lagi)",
        "search-relatedarticle": "Bakulaan",
-       "searcheverything-enable": "Panggagaian pada samunyaan ngaran kakamar",
        "searchrelated": "bakulaan",
        "searchall": "samunyaan",
        "showingresults": "Di bawah ngini ditampaiakan hingga {{PLURAL:$1|'''1''' kulihan|'''$1''' kukulihan}}, dimulai matan #'''$2'''.",
-       "showingresultsnum": "Di bawah ngini ditampaiakan hingga {{PLURAL:$3|'''1''' kulihan|'''$3''' kukulihan}}, dimulai matan #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Kulihan '''$1''' matan '''$3'''|Kukulihan '''$1 - $2''' matan '''$3'''}} gasan '''$4'''",
        "search-nonefound": "Kadada kulihan nang pas awan parmintaan.",
        "powersearch-legend": "Panggagaian mahir",
        "allowemail": "Kawa'akan pamakai lain mangirim suril",
        "prefs-searchoptions": "Papilihan manggagai",
        "prefs-namespaces": "Ngaran kamar",
-       "defaultns": "Atawa-lah manggagai dalam ngaran kakamar nangini:",
        "default": "default",
        "prefs-files": "Barakas",
        "prefs-custom-css": "Saragamakan CSS",
        "prefs-emailconfirm-label": "Payakinakan suril:",
        "youremail": "Suril:",
        "username": "Ngaran pamuruk:",
-       "uid": "ID pamuruk:",
        "prefs-memberingroups": "Angguta matan {{PLURAL:$1|galambang|gagalambang}}:",
        "prefs-registration": "Waktu pandaptaran:",
        "yourrealname": "Ngaran asli:",
        "log-title-wildcard": "Gagai judul ba-awalan awan naskah ngini",
        "showhideselectedlogentries": "Tampaiakan/sungkupakan masukan log tapilih",
        "allpages": "Samunyaan tungkaran",
-       "alphaindexline": "$1 sampai $2",
        "nextpage": "Tungkaran salanjutnya ($1)",
        "prevpage": "Tungkaran sabalumnya ($1)",
        "allpagesfrom": "Manampaiakan tungkaran mulai matan:",
index 4c15455..434cf28 100644 (file)
        "searchall": "সমস্ত",
        "showingresults": "নিচে '''$2''' নং থেকে শুরু করে {{PLURAL:$1|'''1''' ফলাফল|'''$1''' ফলাফলসমূহ}} দেখানো হল।",
        "showingresultsinrange": "#<strong>$2</strong> থেকে #<strong>$3</strong> পরিসীমার মধ্যে {{PLURAL:$1|<strong>১টি</strong> ফলাফল|<strong>$1টি</strong> ফলাফল}} নিচে দেখানো হচ্ছে।",
-       "showingresultsnum": "নিম্নে {{PLURAL:$3|'''1''' ফলাফল|'''$3''' ফলাফলসমূহ}} দেখানো হয়েছে যা শুরু হয়েছে #'''$2''' দিয়ে।",
        "showingresultsheader": "'''$4''' এর জন্য {{PLURAL:$5|ফলাফল '''$3''' এর '''$1'''|ফলাফলসমূহ '''$3''' এর মধ্যে '''$1 - $2'''}}",
        "search-nonefound": "খোঁজকৃত পাতার সাথে মিলে যায় এমন কোনো ফলাফল নেই।",
        "powersearch-legend": "উন্নত অনুসন্ধান",
        "duplicate-defaultsort": "' ' ' সাবধান: ' ' '  ডিফল্ট সাজানোর কীঃ \"$2\" পূর্বে ডিফল্ট সাজানোর কীঃ \"$1\" কে অগ্রাহ্য করে।",
        "version": "সংস্করণ",
        "version-extensions": "ইন্সটলকৃত এক্সটেনশনসমূহ",
+       "version-skins": "ইনস্টল করা স্কিনসমূহ",
        "version-specialpages": "বিশেষ পাতাসমূহ",
        "version-parserhooks": "পার্সার হুক",
        "version-variables": "চলক",
        "version-antispam": "স্প্যাম প্রতিরোধ",
-       "version-skins": "আবরণসমূহ (Skin)",
        "version-other": "অন্য",
        "version-mediahandlers": "মিডিয়া ব্যবস্থাপক",
        "version-hooks": "হুক",
        "version-hook-name": "হুকের নাম",
        "version-hook-subscribedby": "সাবস্ক্রাইব করেছেন",
        "version-version": "(সংস্করণ $1)",
+       "version-no-ext-name": "[নাম নেই]",
        "version-license": "মিডিয়াউইকি লাইসেন্স",
        "version-ext-license": "লাইসেন্স",
        "version-ext-colheader-name": "এক্সটেনশন",
+       "version-skin-colheader-name": "স্কিন",
        "version-ext-colheader-version": "সংস্করণ",
        "version-ext-colheader-license": "লাইসেন্স",
        "version-ext-colheader-description": "বিবরণ",
index 212bd56..7b5d255 100644 (file)
        "qbmyoptions": "ངའི་ཤོག་ངོས།",
        "faq": "རྒྱུན་ལྡན་དྲི་བ།",
        "faqpage": "Project: རྒྱུན་ལྡན་དྲི་བ།",
-       "vector-action-addsection": "བརྗོད་གཞི་ཁ་སྣོན།",
-       "vector-action-delete": "སུབས།",
-       "vector-action-move": "སྤོར་བ།",
-       "vector-action-protect": "འགོག་སྲུང།",
-       "vector-action-undelete": "མི་བསུབས་",
-       "vector-action-unprotect": "སྲུང་སྐྱོབ་གློད་པ།",
-       "vector-view-create": "གསར་བཟོ།",
-       "vector-view-edit": "རྩོམ་སྒྲིག",
-       "vector-view-history": "ལོ་རྒྱུས་ལ་ལྟ་བ།",
-       "vector-view-view": "ཀློག་པ།",
-       "vector-view-viewsource": "ཁུངས་ལ་ལྟ་བ།",
        "actions": "བྱ་སྤྱོད།",
        "namespaces": "མིང་གནས།",
        "variants": "འགྱུར་ཚད།",
        "viewprevnext": "($1 {{int:pipe-separator}} $2) ($3)ལ་ལྟ་བ།",
        "searchmenu-new": "ཝེ་ཁི་སྟེང་ལ་ <strong>ཤོག་ངོས་གསར་པ་</strong> \"[[:$1]]\" བཟོས། {{PLURAL:$2|0=|ཁྱེད་ཀྱི་འཚོལ་ཞིབ་བྱས་པའི་ཤོག་ངོས་རྣམས་ལ་ཡང་གཟིགས་རོགས།.|མ་ཟད་འཚོལ་ཞིབ་བྱས་པའི་གྲུབ་འབྲས་གཞན་རྣམས་ལ་ཡང་གཟིགས་རོགས།}}",
        "searchprofile-articles": "ནང་དོན་ཤོག་ངོས།",
-       "searchprofile-project": "རོགས་རམ་དང་འཆར་གཞིའི་ཤོག་ངོས་",
        "searchprofile-images": "སྨྱན་མང་བརྒྱུད་ལམ།",
        "searchprofile-everything": "ཚང་མ་",
        "searchprofile-advanced": "མཐོ་རིམ་",
        "searchprofile-articles-tooltip": "$1ནང་དུ་འཚོལ་བ།",
-       "searchprofile-project-tooltip": "$1ནང་དུ་འཚོལ་བ།",
        "searchprofile-images-tooltip": "ཡིག་ཆ་འཚོལ་བ།",
        "searchprofile-everything-tooltip": "བརྗོད་དོན་ཚང་མ་འཚོལ་གཞིབ་བྱེད་(གྲོས་མེས་ཤོག་ངོས་ཡང་འཚུད་པ་)",
        "searchprofile-advanced-tooltip": "རང་སྒྲུབ་མིང་བར་ནང་འཚོལ་རོགས།",
        "timezoneregion-africa": "ཨ་ཧྥི་རི་ཀ",
        "youremail": "གློག་འཕྲིན།:",
        "username": "{{GENDER:$1|དྲ་མིང་།}}:",
-       "uid": "{{GENDER:$1|སྤྱོད་མིའི་}}ནང་འཛུལ་ཐོ་མིང་།:",
        "yourrealname": "དངོས་མིང་།",
        "yourlanguage": "སྐད་རིགས།",
        "yournick": "མིང་རྟགས་སོ་མ།",
        "booksources-go": "སོང་།",
        "log": "པོད་ཁུག",
        "allpages": "དྲ་ངོས་ཡོངས།",
-       "alphaindexline": "$1 ནས་ $2 བར།",
        "prevpage": "ཤོག་ངོས་གོང་མ་ ($1)",
        "allarticles": "ཤོག་ངོས་ཆ་ཚང་།",
        "allpagessubmit": "སོང་།",
index 36e298c..6358b2d 100644 (file)
        "qbmyoptions": "মর পছন",
        "faq": "আঙলাক",
        "faqpage": "Project:আঙলাক",
-       "vector-action-addsection": "বিষয় তিলকর",
-       "vector-action-delete": "পুসে বেলা",
-       "vector-action-move": "থেইকর",
-       "vector-action-protect": "লুকর",
-       "vector-action-undelete": "নাপুসি",
-       "vector-action-unprotect": "লুকরানিহান সিলকর",
-       "vector-view-create": "হঙকরিক",
-       "vector-view-edit": "পতানি",
-       "vector-view-history": "ইতিহাস চেইক",
-       "vector-view-view": "পাকরিক",
-       "vector-view-viewsource": "সোর্স চেইক",
        "actions": "কার্যক্রম",
        "namespaces": "নাঙরলাম",
        "variants": "ভেরিয়েন্টহানি",
        "editundo": "আলকর",
        "searchresults": "বিসারলে অতার ফলাফল",
        "searchresults-title": "\"$1\" বিসারলে অতার ফলাফল",
-       "toomanymatches": "তি বিসারর অহার ৱাখুম বপিসে, আরাক আহান্ন হন্না কর",
        "titlematches": "পাতার চিঙনাঙর লগে মান্না অসে",
        "textmatches": "পাতার ইকার লগে মান্না অসে",
        "notextmatches": "পাতাহার লেখার লগে মিল নেই",
        "searchmenu-exists": "'''উইকি এহাত \"[[:$1]]\" নাঙে পাতা আহান আসে'''",
        "searchmenu-new": "'''\"[[:$1]]\" নাঙর পাতাহান এরে উইকিত হঙকর!'''",
        "searchprofile-articles": "কন্টেন্টর পাতাহানি",
-       "searchprofile-project": "পাঙলাক বারো প্রকল্পর পাতা",
        "searchprofile-images": "মাল্টিমিডিয়া",
        "searchprofile-everything": "হাব্বি",
        "searchprofile-advanced": "উচ্চতর",
        "searchprofile-articles-tooltip": "$1 এহাত বিসারা",
-       "searchprofile-project-tooltip": "$1 এহাত বিসারা",
        "searchprofile-images-tooltip": "ফাইল বিসারা",
        "searchprofile-everything-tooltip": "হাব্বি থাকে বিসারা (য়্যারির পাতাতউ)",
        "searchprofile-advanced-tooltip": "নিজর লেপকরা নাঙথাকে বিসারা",
        "search-interwiki-default": "$1 ফলাফলহানি:",
        "search-interwiki-more": "(আরাকউ)",
        "search-relatedarticle": "সাকেই আসে",
-       "searcheverything-enable": "হাব্বি নাঙথাকে বিসারা",
        "searchrelated": "সাকেই আসে",
        "searchall": "হাব্বি",
        "showingresultsheader": "'''$4''' র কা {{PLURAL:$5|ফলহান '''$3''' র '''$1'''|ফলহানি '''$3''' র মা '''$1 - $2'''}}",
        "allowemail": "আরতা(ব্যবহার করেকুরা)ই ইমেইল করানির য়্যাথাং দে।",
        "prefs-searchoptions": "বিসারানির অপশনহানি",
        "prefs-namespaces": "নাঙরলাম",
-       "defaultns": "নাইলে এরে নাঙর লামে বিসারা:",
        "default": "আদি অঙতা",
        "prefs-files": "ফাইল",
        "prefs-custom-css": "স্বনির্ধারিত CSS",
        "log": "লগ",
        "all-logs-page": "হাব্বি পাবলিক লগ",
        "allpages": "হাবি পাতাহানি",
-       "alphaindexline": "$1 ত $2",
        "nextpage": "থাঙনার পাতা ($1)",
        "prevpage": "আগেকার পাতা ($1)",
        "allpagesfrom": "যেহাত্ত অকরিসি অহাত্ত পাতাহানি দেহাদেঃ",
        "blockip": "আতাকুরাগরে থেপকর",
        "blockip-legend": "আতাকুরাগরে থেপ কর",
        "blockiptext": "লেপকরিসত আইপি ঠিকানাহানরে নাইলে আতাকুরাগরে ইকরানিত্ত থেপকরানি থকিলে তলর ফর্মহান ব্যবহার কর।\nএহান হুদ্দা ধ্বংসর খৌরাঙ থেপকরানি বারো [[{{MediaWiki:Policy-url}}|নীতিমালা]] একরিয়া পতানি থক।\nতলে লেপ্পা কারণ আহান মাত (উদাহরনে মাতানি একরের, যে  যে পাতাহানি ধ্বংস করানি অসে অতা মাতে পারর)।",
-       "ipadressorusername": "আইপি ঠিকানাহান বারো আতাকুরার নাঙহান:",
+       "ipaddressorusername": "আইপি ঠিকানাহান বারো আতাকুরার নাঙহান:",
        "ipbexpiry": "মেয়াদহান লালুইতইতা:",
        "ipbreason": "কারণ:",
        "ipbreason-dropdown": "*থেপ করানির সাধারণ কারণহানি\n** মিস্সা পৌ বরাসে\n** পাতাহাত্ত বিষয়বস্তু পুসে বেলাসে\n** বারেতের কোন সাইটর মিলাপে স্প্যাম করিসে\n** পাতাহানিত অর্থনেই মেথেল বরাসে\n** দরপানির অসারে আচরণ/হিনকরানি\n** আবকচা অ্যাকাউন্টর অপব্যবহার\n** আতাকুরার নাঙহান চিঙথি ইসে",
        "show-big-image": "পুল্লাপ রিজলিউশন",
        "newimages": "নুৱা ফাইলর গ্যালারিগ",
        "newimages-legend": "সাক",
-       "showhidebots": "($1 বট)",
        "noimages": "চানার কা কিত্তাউ নেই।",
        "ilsubmit": "বিসারা",
        "bydate": "তারিখর সিজিলন",
index f72ed9e..0198e96 100644 (file)
        "wrongpasswordempty": "Ger-tremen ebet. Lakait unan mar plij.",
        "passwordtooshort": "{{PLURAL:$1|1 arouezenn|$1 arouezenn}} hir a rank bezañ ar gerioù-tremen da nebeutañ.",
        "password-name-match": "Rankout a ra ho ker-tremen bezañ disheñvel diouzh hoc'h anv implijer.",
-       "password-login-forbidden": "Berzet eo ober gant an anv-implijer hag ar ger-tremen-mañ.",
+       "password-login-forbidden": "Berzet eo ober gant an anv implijer hag ar ger-tremen-mañ.",
        "mailmypassword": "Adderaouekaat ar ger-tremen",
        "passwordremindertitle": "Ho ker-tremen berrbad nevez evit {{SITENAME}}",
        "passwordremindertext": "Unan bennak (c'hwi moarvat gant ar chomlec'h IP $1)\nen deus goulennet ma vo kaset dezhañ ur ger-tremen nevez evit {{SITENAME}} ($4).\nSavet ez eus bet ur ger-tremen da c'hortoz evit an implijer \"$2\" hag a zo \"$3\".\nMard eo se a felle deoc'h ober e vo ret deoc'h kevreañ ha cheñch ho ker-tremen bremañ. Didalvez e vo ho ker ker-tremen da c'hortoz a-benn {{PLURAL:$5|un devezh|$5 devezh}}\n\nMard eo bet graet ar goulenn gant unan bennak all, pe m'hoc'h eus soñj eus ho ker-tremen bremañ ha\nma ne fell ket deoc'h cheñch anezhañ ken, e c'hallit leuskel ar postel-mañ a-gostez ha kenderc'hel d'ober gant ho ker-tremen kozh.",
        "searchrelated": "disoc'hoù kar",
        "searchall": "An holl",
        "showingresults": "Diskouez betek {{PLURAL:$1|'''1''' disoc'h|'''$1''' disoc'h}} o kregiñ gant #'''$2'''.",
-       "showingresultsnum": "Diskouez {{PLURAL:$3|'''1''' disoc'h|'''$3''' disoc'h}} o kregiñ gant #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Disoc'h '''$1''' diwar '''$3'''|Disoc'hoù '''$1 - $2''' diwar '''$3'''}} evit '''$4'''",
        "search-nonefound": "An enklask-mañ ne zisoc'h war netra.",
        "powersearch-legend": "Klask araokaet",
        "duplicate-defaultsort": "Diwallit : Frikañ a ra an alc'hwez dre ziouer \"$2\" an hini a oa a-raok \"$1\".",
        "version": "Stumm",
        "version-extensions": "Astennoù staliet",
+       "version-skins": "Gwiskadurioù staliet",
        "version-specialpages": "Pajennoù dibar",
        "version-parserhooks": "Galvoù dielfennañ",
        "version-variables": "Argemmennoù",
        "version-antispam": "Mirout ouzh ar strob",
-       "version-skins": "Gwiskadurioù",
        "version-other": "Diseurt",
        "version-mediahandlers": "Merer danvez liesvedia",
        "version-hooks": "Galvoù",
        "expand_templates_remove_nowiki": "Diverkañ a ra ar balizennoù <nowiki> en disoc'h",
        "expand_templates_generate_xml": "Gwelet ar gwezennadur XML",
        "expand_templates_generate_rawhtml": "Diskouez an HTML kriz",
-       "expand_templates_preview": "Rakwelet"
+       "expand_templates_preview": "Rakwelet",
+       "pagelang-name": "Pajenn",
+       "pagelang-language": "Yezh",
+       "pagelang-use-default": "Implijout ar yezh dre ziouer",
+       "pagelang-select-lang": "Dibab ar yezh",
+       "right-pagelang": "Cheñch yezh ar bajenn"
 }
index 5aa1e21..0c30961 100644 (file)
        "searchrelated": "povezano",
        "searchall": "sve",
        "showingresults": "Dolje {{PLURAL:$1|je prikazan '''1''' rezultat|su prikazana '''$1''' rezultata|je prikazano '''$1''' rezultata}} počev od '''$2'''.",
-       "showingresultsnum": "Dolje {{PLURAL:$3|je prikazan '''1''' rezultat|su prikazana '''$3''' rezultata|je prikazano '''$3''' rezultata}} počev od #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Rezultat '''$1''' od '''$3'''|Rezultati '''$1 - $2''' od '''$3'''}} za '''$4'''",
        "search-nonefound": "Nisu pronađeni rezultati koji odgovaraju upitu.",
        "powersearch-legend": "Napredna pretraga",
        "pageinfo-lasttime": "Datum posljednje izmjene",
        "pageinfo-edits": "Ukupan broj izmjena",
        "pageinfo-authors": "Ukupan broj različitih autora",
-       "pageinfo-recent-edits": "Broj nedavnih izmjena (u poslednjih $1)",
+       "pageinfo-recent-edits": "Broj nedavnih izmjena (u posljednjih $1)",
        "pageinfo-recent-authors": "Broj nedavnih različitih autora",
        "pageinfo-magic-words": "{{PLURAL:$1|Čarobna riječ|Čarobne riječi}} ($1)",
        "pageinfo-hidden-categories": "{{PLURAL:$1|Sakrivena kategorija|Sakrivene kategorije}} ($1)",
        "duplicate-defaultsort": "Upozorenje: Postavljeni ključ sortiranja \"$2\" zamjenjuje raniji ključ \"$1\".",
        "version": "Verzija",
        "version-extensions": "Instalirana proširenja (ekstenzije)",
+       "version-skins": "Kože",
        "version-specialpages": "Posebne stranice",
        "version-parserhooks": "Kuke parsera",
        "version-variables": "Promjenjive",
        "version-antispam": "Sprječavanje spama",
-       "version-skins": "Kože",
        "version-other": "Ostalo",
        "version-mediahandlers": "Upravljači medije",
        "version-hooks": "Kuke",
index 97e7950..a01a3c1 100644 (file)
        "token_suffix_mismatch": "'''S'ha rebutjat la vostra modificació perquè el vostre client ha fet malbé els caràcters de puntuació en el testimoni d'edició. S'ha rebutjat la modificació per a evitar la corrupció del text de la pàgina. Açò passa a vegades quan s'utilitza un servei web de servidor intermediari anònim amb problemes.'''",
        "edit_form_incomplete": "'''Certes parts del formulari de modificació no han arribat al servidor, verifiqueu que les vostres modificacions estan intactes i proveu-ho de nou.'''",
        "editing": "Edició de la pàgina «$1»",
-       "creating": "S'està creant $1",
-       "editingsection": "Edició de «$1» (secció)",
-       "editingcomment": "Edició de «$1» (secció nova)",
+       "creating": "Creació de la pàgina «$1»",
+       "editingsection": "Edició de la pàgina «$1» (secció)",
+       "editingcomment": "Edició de la pàgina «$1» (secció nova)",
        "editconflict": "Conflicte d'edició: $1",
        "explainconflict": "Algú més ha canviat aquesta pàgina des que l'heu editada.\nL'àrea de text superior conté el text de la pàgina com existeix actualment.\nEls vostres canvis es mostren en l'àrea de text inferior.\nHaureu de fusionar els vostres canvis en el text existent.\n'''Només''' el text de l'àrea superior es desarà quan premeu el botó «{{int:savearticle}}».",
        "yourtext": "El vostre text",
        "parser-template-recursion-depth-warning": "S'ha excedit el límit de recursivitat de plantilles ($1)",
        "language-converter-depth-warning": "El límit de la profunditat del conversor d'idiomes ha excedit ($1)",
        "node-count-exceeded-category": "Pàgines on s'ha excedit el recompte de nodes",
+       "node-count-exceeded-category-desc": "Una categoria de les pàgines on s'ha excedit el recompte de nodes.",
        "node-count-exceeded-warning": "La pàgina ha excedit el recompte de nodes",
        "expansion-depth-exceeded-category": "Pàgines on s'ha excedit la profunditat d'expansió",
+       "expansion-depth-exceeded-category-desc": "Aquesta és una categoria de les pàgines on s'ha s'excedit la profunditat d'expansió.",
        "expansion-depth-exceeded-warning": "La pàgina ha excedit la profunditat d'expansió",
        "parser-unstrip-loop-warning": "S'ha detectat un bucle no desmuntable",
        "parser-unstrip-recursion-limit": "S'ha excedit el límit ($1) de recursivitat no desmuntable",
        "searchall": "tots",
        "showingresults": "Tot seguit es {{PLURAL:$1|mostra el resultat|mostren els <b>$1</b> resultats començant pel número <b>$2</b>}}.",
        "showingresultsinrange": "Es mostren a continuació fins a {{PLURAL:$1|<strong>1</strong> resultat|<strong>$1</strong> resultats}} de #<strong>$2</strong> a #<strong>$3</strong>.",
-       "showingresultsnum": "Tot seguit es {{PLURAL:$3|llista el resultat|llisten els <b>$3</b> resultats començant pel número <b>$2</b>}}.",
        "showingresultsheader": "{{PLURAL:$5|Resultat '''$1''' de '''$3'''|Resultats '''$1 - $2''' de '''$3'''}} per '''$4'''",
        "search-nonefound": "La cerca no ha donat cap resultat.",
        "powersearch-legend": "Cerca avançada",
        "windows-nonascii-filename": "Aquest wiki no permet noms de fitxer amb caràcters especials.",
        "fileexists": "Ja hi existeix un fitxer amb aquest nom, si us plau, verifiqueu <strong>[[:$1]]</strong> si no esteu segurs de voler substituir-lo.\n[[$1|thumb]]",
        "filepageexists": "La pàgina de descripció d'aquest fitxer ja ha estat creada (<strong>[[:$1]]</strong>), però de moment no hi ha cap fitxer amb aquest nom. La descripció que heu posat no apareixerà a la pàgina de descripció. Si voleu que hi aparegui haureu d'editar-la manualment.\n[[$1|thumb]]",
-       "fileexists-extension": "Ja existeix un fitxer amb un nom semblant: [[$2|thumb]]\n* Nom del fitxer que es puja: <strong>[[:$1]]</strong>\n* Nom del fitxer existent: <strong>[[:$2]]</strong>\nSi us plau, trieu un nom diferent.",
+       "fileexists-extension": "Ja existeix un fitxer amb un nom semblant: [[$2|thumb]]\n* Nom del fitxer que es puja: <strong>[[:$1]]</strong>\n* Nom del fitxer existent: <strong>[[:$2]]</strong>\nPotser voleu fer servir un nom més fàcil de distingir?",
        "fileexists-thumbnail-yes": "Aquest fitxer sembla ser una imatge en mida reduïda (<em>miniatura</em>). [[$1|thumb]]\nComproveu si us plau el fitxer <strong>[[:$1]]</strong>.\nSi el fitxer és la mateixa imatge a mida original, no cal carregar cap miniatura més.",
        "file-thumbnail-no": "El nom del fitxer comença per <strong>$1</strong>.\nSembla ser una imatge de mida reduïda ''(miniatura)''.\nSi teniu la imatge en resolució completa, pugeu-la, sinó mireu de canviar-li el nom, si us plau.",
        "fileexists-forbidden": "Ja hi existeix un fitxer amb aquest nom i no es pot sobreescriure.\nSi us plau, torneu enrere i carregueu aquest fitxer sota un altre nom. [[File:$1|thumb|center|$1]]",
        "filedelete-maintenance": "L'esborrament i recuperació de fitxers està temporalment deshabilitada durant el manteniment.",
        "filedelete-maintenance-title": "No pot suprimir arxiu",
        "mimesearch": "Cerca per MIME",
-       "mimesearch-summary": "Aquesta pàgina habilita el filtratge de fitxers per llur tipus MIME. Contingut: contenttype/subtype, ex. <code>image/jpeg</code>.",
+       "mimesearch-summary": "Aquesta pàgina habilita el filtratge de fitxers per llur tipus MIME. Contingut: contenttype/subtype o contenttype/*, p. ex. <code>image/jpeg</code>.",
        "mimetype": "Tipus MIME:",
        "download": "baixada",
        "unwatchedpages": "Pàgines desateses",
        "wantedtemplates": "Plantilles demanades",
        "mostlinked": "Pàgines més enllaçades",
        "mostlinkedcategories": "Categories més utilitzades",
-       "mostlinkedtemplates": "Plantilles més usades",
+       "mostlinkedtemplates": "Plantilles més incloses",
        "mostcategories": "Pàgines amb més categories",
        "mostimages": "Fitxers més enllaçats",
        "mostinterwikis": "Pàgines amb més interwikis",
        "move-page-legend": "Reanomena la pàgina",
        "movepagetext": "Amb el formulari següent reanomenareu una pàgina, movent tot el seu historial al nou nom.\nEl títol anterior es convertirà en una pàgina de redirecció al nou títol.\nPodeu actualitzar automàticament les redireccions que apuntin al títol original.\nSi no ho feu, assegureu-vos de verificar les redireccions [[Special:DoubleRedirects|dobles]] o [[Special:BrokenRedirects|trencades]].\nSerà de la vostra responsabilitat verificar que els enllaços segueixin apuntant cap a on se suposa que ho han de fer.\n\nTingueu en compte que la pàgina '''no''' serà traslladada si ja existeix una pàgina amb el títol nou, tret que sigui una redirecció sense més historial.\nAixò significa que podeu reanomenar de nou una pàgina al seu títol original si cometeu un error, i que no podeu sobreescriure una pàgina existent.\n\n'''Atenció!'''\nAçò pot ser un canvi dràstic i inesperat en una pàgina que sigui popular; \nassegureu-vos d'entendre les conseqüències que comporta abans de seguir endavant.",
        "movepagetext-noredirectfixer": "Amb el formulari següent podeu reanomenar una pàgina movent tot el seu historial al nom nou.\nEl títol anterior es convertirà en una pàgina de redirecció al nou títol. \nAssegureu-vos de verificar les redireccions [[Special:DoubleRedirects|dobles]] o [[Special:BrokenRedirects|trencades]].\nÉs responsabilitat vostra assegurar que els enllaços continuen apuntant cap a on se suposa que han d'anar. \n\nTingueu en compte que la pàgina '''no''' serà traslladada si ja existeix una pàgina amb el títol nou, tret que sigui una redirecció i no tingui més historial. \nAixò significa que podeu reanomenar de nou una pàgina al seu títol original si cometeu un error, i que no podeu sobreescriure una pàgina existent.\n \n'''Atenció!''' \nAixò pot ser un canvi dràstic i inesperat per una pàgina popular; \nassegureu-vos que sabeu el que feu abans de continuar.",
-       "movepagetalktext": "La pàgina de discussió associada també serà traslladada automàticament '''tret que''':\n* Ja existeix una pàgina de discussió no buida amb el nou nom, o\n* Desactiveu la opció de més avall.\n\nEn aquests casos, haureu de traslladar o fusionar la pàgina manualment si ho desitgeu.",
+       "movepagetalktext": "La pàgina de discussió associada també serà traslladada automàticament '''tret que''':\n* Ja existeixi una pàgina de discussió no buida amb el nou nom, o\n* Desactiveu l'opció de més avall.\n\nEn aquests casos, haureu de traslladar o fusionar la pàgina manualment si ho desitgeu.",
        "movearticle": "Reanomena la pàgina",
        "moveuserpage-warning": "'''Atenció:''' Esteu a punt de moure una pàgina d'usuari. Tingueu en compte que només la pàgina es desplaçarà i que el compte d'usuari ''no'' canviarà de nom.",
        "movecategorypage-warning": "<strong>Avís:</strong> Esteu a punt de moure una pàgina de categoria. Tingueu en compte que només es moure la pàgina i qualsevol de les pàgines a l'antiga categoria <em>no</em> es recategoritzarà automàticament en la nova.",
        "duplicate-defaultsort": "Atenció: La clau d'ordenació per defecte \"$2\" invalida l'anterior clau \"$1\".",
        "version": "Versió",
        "version-extensions": "Extensions instaŀlades",
+       "version-skins": "Aparences",
        "version-specialpages": "Pàgines especials",
        "version-parserhooks": "Extensions de l'analitzador",
        "version-variables": "Variables",
        "version-antispam": "Prevenció spam",
-       "version-skins": "Aparences",
        "version-other": "Altres",
        "version-mediahandlers": "Connectors multimèdia",
        "version-hooks": "Lligams",
        "version-hook-name": "Nom del lligam",
        "version-hook-subscribedby": "Subscrit per",
        "version-version": "(Versió $1)",
+       "version-no-ext-name": "[sense nom]",
        "version-license": "Llicència del MediaWiki",
        "version-ext-license": "Llicència",
        "version-ext-colheader-name": "Extensió",
+       "version-skin-colheader-name": "Aparença",
        "version-ext-colheader-version": "Versió",
        "version-ext-colheader-license": "Llicència",
        "version-ext-colheader-description": "Descripció",
        "expand_templates_remove_nowiki": "Suprimeix l'etiqueta <nowiki> en el resultat",
        "expand_templates_generate_xml": "Mostra l'arbre XML",
        "expand_templates_generate_rawhtml": "Mostra l'HTML sense filtrar",
-       "expand_templates_preview": "Previsualitza"
+       "expand_templates_preview": "Previsualitza",
+       "pagelanguage": "Selector de l'idioma de les pàgines",
+       "pagelang-name": "Pàgina",
+       "pagelang-language": "Idioma",
+       "pagelang-use-default": "Utilitza l'idioma per defecte",
+       "pagelang-select-lang": "Selecciona un idioma",
+       "right-pagelang": "Canvia l'idioma de la pàgina",
+       "action-pagelang": "canvia l'idioma de la pàgina"
 }
index d970933..f69fec2 100644 (file)
        "searchrelated": "相關其",
        "searchall": "全部",
        "showingresults": "顯示趁#<b>$2</b>開始其{{PLURAL:$1|'''$1'''萆結果}}。",
-       "showingresultsnum": "顯示趁#<b>$2</b>開始其{{PLURAL:$3|'''$3'''萆結果}}。",
        "preferences": "設定",
        "mypreferences": "我其設定",
        "prefs-edits": "修改數量:",
index 203382e..2a13114 100644 (file)
@@ -7,7 +7,8 @@
                        "Mega programmer",
                        "Sasan700",
                        "Умар",
-                       "아라"
+                       "아라",
+                       "Kaganer"
                ]
        },
        "tog-underline": "КӀел сиз хьакха хьажорган:",
@@ -39,7 +40,7 @@
        "tog-watchlisthideown": "Къайлаяха ас нисйинарш оцу тергаме могӀам чура",
        "tog-watchlisthidebots": "Къайладаха шаболх бечо нисдинарш оцу тергаме могӀам чура",
        "tog-watchlisthideminor": "Къайладаха кегийра нисдарш оцу тергаме могӀам чура",
-       "tog-watchlisthideliu": "Ð\9aÑ\8aайладаÑ\85а Ð²овзийтина болу декъашхойн нисдарш оцу тергаме могӀам чура",
+       "tog-watchlisthideliu": "Ð\9aÑ\8aайладаÑ\85а Ð±овзийтина болу декъашхойн нисдарш оцу тергаме могӀам чура",
        "tog-watchlisthideanons": "Къайладаха къайлаха болу декъашхойн нисдарш оцу тергаме могӀам чура",
        "tog-watchlisthidepatrolled": "Къайладаха хьаьжина долу нисдарш оцу тергаме могӀам чура",
        "tog-ccmeonemails": "Дlадахьийта суна исанна кехат, аса дохьуьйтуш долу кхечу декъашхошна.",
        "login-abort-generic": "Сестемин довзийта тарцаделира",
        "loginlanguagelabel": "Мотт: $1",
        "suspicious-userlogout": "Хьан сеанс чекхъяккха дина дехаш кхочуш цадина, иза нийса йоцу браузерца дар бахьнехь я прокси кэш еш хилар бахьнехь.",
+       "createacct-another-realname-tip": "Декъашхочун бакъ цӀе (яз ца йича мега).\nАхьа и язяхь, агӀона хийцам бича хьан цӀе гуш хира ю.",
        "pt-login": "ЧугӀо",
        "pt-login-button": "ЧугӀо",
        "pt-createaccount": "Кхолла декъашхочун дӀаяздар",
        "passwordreset-emailelement": "Декъашхочун цӀе: $1\nХанна йолу пароль: $2",
        "passwordreset-emailsent": "Электронан хаам баийтина кхоьссинчу паролах лаьцна хаам чохь болуш.",
        "passwordreset-emailsent-capture": "Электронан хаам баийтина кхоьссинчу паролах лаьцна хаам чохь болуш. \nцуна йозане хьажа йиш ю лахахь.",
-       "changeemail": "ХийÑ\86а Ñ\8dлекÑ\82Ñ\80они Ð¿Ð¾Ñ\87Ñ\82",
+       "changeemail": "ХийÑ\86а Ñ\8dлекÑ\82Ñ\80онан Ð¿Ð¾Ñ\87Ñ\82а",
        "changeemail-header": "Электронан почтан адрес хийцар",
        "changeemail-text": "Юза хӀара форма хьайн электронан почтан адрес хуьйцуш. Ахьа хийцар бакъдан язъян еза пароль.",
        "changeemail-no-info": "ХӀара агӀо лело системин чугӀо.",
        "accmailtitle": "Пароль дlаяхьийтина.",
        "accmailtext": "Пароль декъашхочуьнан [[User talk:$1|$1]], йина ша шех хитта делла чу элпашах, дӀаяхийтина хьокху $2 адрес тӀе.\n\nЧуваьлла/яла чул тӀехьа , кху гӀирса чохь шуьга хийцалур ю ''[[Special:ChangePassword|шай пароль]]''.",
        "newarticle": "(Kерла)",
-       "newarticletext": "Хьо веана хьажоригци хӀокху агӀон тӀе, хӀара агӀо хӀинца йоцаш ю.\nНагахь иза кхолла лаахь, хӀотта де лахо гуш долу корехь йоза (мадарра хьажа. [$1 гӀон агӀон чу]).\nНагахь гӀалат даьлла цахууш кхечехь кхузе, атта тӀе тӀаӀа йе '''юха йоккхуриг''' хьай гӀирса тӀехь.",
+       "newarticletext": "ХӀара агӀо хӀинца йоцаш ю.\nНагахь иза кхолла лаахь, хӀотта де лахо гуш долу корехь йоза (мадарра хьажа. [$1 гӀон агӀон чу]).\nНагахь гӀалат даьлла цахууш кхечехь кхузе, атта тӀе тӀаӀа йе '''юха йоккхуриг''' хьай браузеран тӀехь.",
        "anontalkpagetext": "----''ХӀара дийцаре агӀо къайлаха декъашхочуьна ю, хӀинца дӀаяздар доцу, я лелош воцуш/йоцуш.\nЦундела иза вовзийта/йовзийта лелош ду терахьца IP-адрес.\nИза терахь долу меттиг хила мега кхечу декъашхойчух терра.\nНагахь хьо къайлах волу декъашхо валахь хьайна хаам кхаьчна аьлла хеташн, хьуна хьажийна доцуш, дехар до, кхолла хьай меттиг кху чохь[[Special:UserLogin/signup|дӀаяздар кхоллар]] я [[Special:UserLogin|системин чугӀо]],",
        "noarticletext": "Хlокх хан чохь кху агlонца йоза дац.\nШуьга далундерг [[Special:Search/{{PAGENAME}}|лахар ишта хьехош йолу цlе]] кхечу яззамашкахь,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} лахар кхечу тептаршкахь],\nйа '''[{{fullurl:{{FULLPAGENAME}}|action=edit}} кхолла ишта цlе йолу агlо]'''</span>.",
        "noarticletext-nopermission": "ХӀокх хан чохь кху агӀонца йоза дац.\nШуьга далундерг [[Special:Search/{{PAGENAME}}|лахар ишта хьехош йолу цӀе]] кхечу яззамашкахь,\nйа <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} лаха оцуьнах терадерг кхечу тептаршкахь].</span>",
        "copyrightwarning": "Тергаме хьажа, массо яззаман чутухуш долу йозан хийцам хьажарехь бу, арахоьцушсанна оцу бакъойалар хьоляхь $2 (хьаж. $1).\nНагахь хьо лууш вацахь хьай йозанаш маьрша даржа а кхечаьрга хийцам байта, мадаха уьш кху чу.<br />\nИшта чlагlо йой ахьа, айхьа далош долучуьн хьо куьг да ву аьлла, йа хьаэцна цхьан\nхьостера, хийцам ба а дlаса даржада а чулацам болуш.<br />\n'''МАТОХИЙШ БАКЪО ЙОЦУ ГlИРСАШ КХУ ЧУ, КУЬГ ДЕ БАКЪО ЛАР ЙЕШ ЙОЛУ!'''",
        "readonlywarning": "'''ДӀАХЬЕДО. ГӀирса бух блоктоьхна оьшуш долучу хьаштан, цундера хӀинц хьоьга дӀа ца йазло хийцам.\nХила мега, ахьа Ӏалаш дан дезаш хьайн йоза, юха тӀаьхьо леладан иза йоза.'''\n\nКуьйгалхочо блоктоьхна гӀирса бух, цо битина кхетош хӀара хаам: $1",
        "protectedpagewarning": "'''Дlахьедар. Хlара агlо гlаролла дина ю хийцам цабайта, иза хийца йа нисйа а бакъо йолуш адаманкуьйгалла лелош болу декъашхой бе бац.'''\nЛахахьа гойту хаамаш тlаьхьара бина болу хийцамна тептар чура:",
+       "semiprotectedpagewarning": "'''ДӀахьедо.''' ХӀара агӀо гӀаролла йина ю; дӀабазбиначу декъашхошка бе цӀе хийцалуш яц.\nЛахахьа тептаро балийна тӀаьхьаралера дӀаязбина хаам:",
        "cascadeprotectedwarning": "<div id=\"cascadeprotectedwarning\" style=\"border:1px solid #ee0; padding:10px; background:#ffa; margin-bottom:1em\">[[file:Padlock.svg|left|25px|ДовгӀа|link=]]\nХӀара агӀо тада бакъо йолуш [[Project:Куьйгалхой|куьйгалхой]] бу, хӀунда аьлча и агӀо латийна кхечу агӀонашца хӀоттделлачу гӀаролле:</div>",
        "templatesused": "{{PLURAL:$1|1=Кеп, лелийна|Кепаш, лелош ю}} хӀокху агон башхонца:",
        "templatesusedpreview": "{{PLURAL:$1|1=Кеп, лелошдолу|Кепаш, лелойлу}} оцу хьалх хьожучу агӀонца:",
        "revdelete-reason-dropdown": "Даржина долу дӀаяккхаран баьхьанаш \n** Авторан бакъонаш талхор\n** Бита йиш йоцу шех лаьцна хаам\n** Бакъдоцург зуламан хаам",
        "revdelete-otherreason": "Кхин бахьна/тӀетохар:",
        "revdelete-reasonotherlist": "Кхин бахьна",
-       "revdelete-edit-reasonlist": "Бахьанин список нисяр",
+       "revdelete-edit-reasonlist": "Бахьанин могӀам нисбар",
        "revdelete-offender": "АгӀона версен автор:",
        "suppressionlog": "Хьулдаран тептар",
        "mergehistory": "Нисдарин истори цхьаьнатохар",
        "showingresultsheader": "{{PLURAL:$5|1=Хилам '''$1''' кху '''$3'''|Хиламаш '''$1 — $2''' кху '''$3'''}} оцун '''$4'''",
        "search-nonefound": "Дехаре терра цхьа хӀума ца карийна.",
        "powersearch-legend": "Шуьро лахар",
-       "powersearch-ns": "Цlераши анахь лахар:",
+       "powersearch-ns": "ЦӀерийн меттигашкахь лахар:",
        "powersearch-togglelabel": "Билгалдан:",
        "powersearch-toggleall": "Массо",
        "powersearch-togglenone": "ХӀумма цаоьшу",
+       "powersearch-remember": "Дагахь дита хаьржинарг кхечу хенахь лаха",
        "search-external": "Арахула лахар",
        "search-error": "Лохуш гӀалат даьлла: $1",
-       "preferences": "Гlирс нисбан",
+       "preferences": "ГӀирс нисбан",
        "mypreferences": "ГӀирс нисбан",
        "prefs-edits": "Нисдарийн дукхалла:",
        "prefsnologintext2": "Оьшу $1, гӀирс дӀанисбан.",
        "prefs-watchlist-token": "Тергаме могӀанан токен:",
        "prefs-misc": "Кхин гlирсаш",
        "prefs-resetpass": "Хийца пароль",
-       "prefs-changeemail": "ХийÑ\86а Ñ\8dлекÑ\82Ñ\80они Ð¿Ð¾Ñ\87Ñ\82",
+       "prefs-changeemail": "ХийÑ\86а Ñ\8dлекÑ\82Ñ\80онан Ð¿Ð¾Ñ\87Ñ\82а",
        "prefs-setemail": "Электронан почтан адрес дӀахӀоттор",
        "prefs-email": "Электронан почтан параметраш",
        "prefs-rendering": "Арахьара хатl",
        "prefs-custom-js": "Долахь йолу JS",
        "prefs-common-css-js": "Юкъара CSS/JS массо кеч даран темашан:",
        "prefs-reset-intro": "ХӀара агӀо лело мега ахьа нисбина гӀирс Ӏад битарца юха бокхуш.\nХӀара дешдерг кхочушъ динчул  тӀехьа хьан йиш хир-яц и юха меттахӀотто.",
-       "prefs-emailconfirm-label": "Ð\91акÑ\8a Ñ\8fÑ\80 Ñ\8dлекÑ\82Ñ\80они Ð¿Ð¾Ñ\87Ñ\82:",
+       "prefs-emailconfirm-label": "ЭлекÑ\82Ñ\80онан Ð¿Ð¾Ñ\87Ñ\82а Ð±Ð°ÐºÑ\8a Ñ\8fÑ\80:",
        "youremail": "Электронан почта:",
        "username": "{{GENDER:$1|Декъашхочун цӀе}}:",
        "prefs-memberingroups": "{{GENDER:$1|Тобана|Тобаншан}} {{PLURAL:$2|декъашхо|декъашхой}}:",
        "http-read-error": "Ешаран гӀалат HTTP.",
        "http-timed-out": "Хьежаран хан чекхели HTTP-жоп дехаран.",
        "http-curl-error": "URLан гӀалат: $1",
+       "upload-curl-error6": "Билгал дина адресе хьажа цало.",
        "upload-curl-error28": "Чуйоккху хан чеккхелла",
        "license": "Бакъойалар:",
        "license-header": "Бакъойалар",
        "filedelete-otherreason": "Кхин бахьна:",
        "filedelete-reason-otherlist": "Кхин бахьна",
        "filedelete-reason-dropdown": "* Даржина долу дӀаяккхаран баьхьанаш \n** Авторан бакъонаш талхор\n** ЦхӀатера файлаш хилар",
-       "filedelete-edit-reasonlist": "Бахьанин список нисяр",
+       "filedelete-edit-reasonlist": "Бахьанин могӀам нисбар",
        "filedelete-maintenance-title": "Файл дӀаяккха цало",
        "mimesearch": "MIME хула лаха",
        "mimesearch-summary": "ХӀокху агӀоно йиш хуьлуьйту MIME-тайпан файлаш харжа. Яздеш долу формат: чулацаман тайп/бухара тайп, масала  <code>image/jpeg</code>.",
        "unusedtemplateswlh": "кхин хьажоргаш",
        "randompage": "Цахууш нисъелла агӀо",
        "randomincategory": "Категори чу цахууш нисъелла  агӀо",
+       "randomincategory-nopages": "[[:Category:$1]] категори чохь агӀонаш яц.",
        "randomincategory-selectcategory": "Категори чу цахууш нийса елла агӀона чу гӀо: $1 $2.",
        "randomincategory-selectcategory-submit": "Дехьа гӀо",
        "randomredirect": "Цахууш нисделла дIасахьажор",
+       "randomredirect-nopages": "«$1» цӀерийн меттиган чохь дӀасахьажораш яц.",
        "statistics": "Статистика",
        "statistics-header-pages": "АгӀонийн жамӀ",
        "statistics-header-edits": "Нисдаран жамӀ",
        "pageswithprop-text": "Кхузахь гойтуш ю агӀонаш цхьадолу къастамаш куьйга юху билгал даьхнарш.",
        "pageswithprop-prop": "Къастаман цӀе:",
        "pageswithprop-submit": "Лаха",
+       "pageswithprop-prophidden-long": "деха йозан хӀуман маьӀна хьулйина ($1)",
+       "pageswithprop-prophidden-binary": "шалха маьӀна долу хӀума хьулйина ($1)",
        "doubleredirects": "Шалха дIасахьажийнарш",
        "doubleredirectstext": "ХӀокху агӀонехь ю дӀасахьажорашан тӀе хьажийна йолу дӀасахьажораш.\n<del>ТӀехула сиз хаькхна </del>нисйина чарна.",
        "double-redirect-fixed-move": "АгӀон [[$1]] цӀе хийцина, хӀинца иза дӀахьажийна оцу [[$2]]",
        "email-legend": "{{grammar:genitive|{{SITENAME}}}} кхечу декъашхочунга кехат дахьийтар",
        "emailfrom": "Хьаьнгара",
        "emailto": "Хьаьнга:",
+       "emailsubject": "Къамел:",
        "emailmessage": "Хаам:",
        "emailsend": "ДӀадахьийта",
        "emailccme": "Соьга а кхосса хааман копи.",
        "deleteotherreason": "Кхин бахьна/тӀетохар:",
        "deletereasonotherlist": "Кхин бахьна",
        "deletereason-dropdown": "* Даржина долу дӀаяккхаран баьхьанаш \n** зулма  \n** авторан лаамца\n** авторан бакъонаш талхор",
-       "delete-edit-reasonlist": "Бахьанин список нисяр",
+       "delete-edit-reasonlist": "Бахьанин могӀам нисбар",
        "deleting-backlinks-warning": "'''ДӀахьедар:''' Ахьа дӀайоккхуш йолчун тӀе товжийна [[Special:WhatLinksHere/{{FULLPAGENAME}}|кхин агӀонаш]] ю.",
        "rollback": "Юхабаккха хийцам",
        "rollback_short": "Юхаяккхар",
        "modifiedarticleprotection": "агlонан гlаролли локхалла хийцина «[[$1]]»",
        "unprotectedarticle": "ГӀоролла дӀадаьстина «[[$1]]»",
        "movedarticleprotection": "«[[$2]]» агӀона тӀера гӀаролла «[[$1]]» агӀона тӀе даьккхина",
-       "protect-title": "Оцунна «$1» гӀоралла дар",
+       "protect-title": "ГӀоралла хӀоттор: «$1»",
+       "protect-title-notallowed": "ГӀораллин бараме хьажар «$1»",
        "prot_1movedto2": "«[[$1]]» цӀе хийцина → «[[$2]]»",
+       "protect-badnamespace-title": "ГӀораладан цалуш йолу цӀерийн меттиг",
+       "protect-badnamespace-text": "ХӀокху цӀерийн меттигехь йолу агӀонашна гӀараладан цало.",
+       "protect-norestrictiontypes-title": "ГӀараладан цалуш йолу агӀо",
        "protect-legend": "Бакъде гӀоралла дар",
        "protectcomment": "Бахьна:",
        "protectexpiry": "Чекхйолу:",
        "protect-otherreason": "Кхин бахьна/тӀетохар:",
        "protect-otherreason-op": "Кхин бахьна",
        "protect-dropdown": "* ГӀоралла дарна баьхьаш \n** сих-сиха зулам дар \n** дуккха спам хилар\n** нисдаршан тӀом \n** гӀараялл агӀо",
-       "protect-edit-reasonlist": "Бахьанин список нисяр",
+       "protect-edit-reasonlist": "Бахьанин могӀам нисбар",
        "protect-expiry-options": "1 сахьт:1 hour,1 де:1 day,1 кӀиран:1 week,2 кӀиран:2 weeks,1 бутт:1 month,3 бутт:3 months,6 бутт:6 months,1 шо:1 year,цlкъа:infinite",
        "restriction-type": "Бакъонаш:",
        "restriction-level": "ТӀекхочаран локхалла:",
        "contribsub2": "Къинхьегам $1 ($2)",
        "contributions-userdoesnotexist": "«$1» декъашхочун дӀаяздар дӀаяздина яц.",
        "nocontribs": "Дехарца хийцамаш цакарий.",
-       "uctop": " (тlаьхьара)",
+       "uctop": "(карара)",
        "month": "Баттаца (я хьалхе):",
        "year": "Шерачохь (я хьалхе):",
        "sp-contributions-newbies": "Гайта бекъ къинхьегам, керла дlабазбиначара бина болу",
        "istemplate": "юкъаялийнарш",
        "isimage": "Файлан хьажораг",
        "whatlinkshere-prev": "{{PLURAL:$1|1=хьалхайодарг|хьалхайодарш}} $1",
-       "whatlinkshere-next": "{{PLURAL:$1|тlаьхьайогlург|тlаьхьайогlурш|тlаьхьайогlурш}} $1",
+       "whatlinkshere-next": "{{PLURAL:$1|тӀаьхьайогӀург|тӀаьхьайогӀурш}} $1",
        "whatlinkshere-links": "← хьажоргаш",
        "whatlinkshere-hideredirs": "$1 дӀасахьажорш",
        "whatlinkshere-hidetrans": "$1 латораш",
        "ipaddressorusername": "IP-адрес я декъашхочун цӀе:",
        "ipbexpiry": "Хан чекхйолу:",
        "ipbreason": "Бахьна:",
-       "ipbreason-dropdown": "* Белхан некъ дӀакъовлар бахьанаш:\n** Харца хаам бар\n** АгӀонан чураниг дӀаяккхар\n** Спам-хьажоргаш арахьара сайташна\n** МаьӀна доцу текст тӀетохар\n** Декъашхой хьийзабар, кхерамаш тийсар\n** Масийтта лараман яздар зуламан лелаяр\n** Магийтина йоцу декъашхочун цӀе",
+       "ipbreason-dropdown": "* Белхан некъ дӀакъовлар бахьанаш:\n** Харца хаам бар\n** АгӀонан чураниг дӀаяккхар\n** Спам-хьажоргаш арахьара сайташна\n** МаьӀна доцу йоза тӀетохар\n** Декъашхой хьийзабар, кхерамаш тийсар\n** Масийтта лараман яздар зуламан лелаяр\n** Магийтина йоцу декъашхочун цӀе",
        "ipb-hardblock": "Шаш довзийтина болу декъашхошна бехкам бе хӀокху IP-адресца тадарш дан",
        "ipbcreateaccount": "Цамаго керла декъашхочун дӀаяздарш кхолла",
        "ipbemailban": "Цамагдо декъашхошка хааман кехаташ кхехьийта",
        "ipbsubmit": "Блоктоха хӀокху декъашхочун/адресна",
        "ipbother": "Кхин хан:",
        "ipboptions": "2 сахьат:2 hours,1 де:1 day,3 де:3 days,1 кlиран:1 week,2 кlиран:2 weeks,1 бутт:1 month,3 бутт:3 months,6 бутт:6 months,1 шо:1 year,цӀкъа:infinite",
+       "ipbhidename": "Нисдарийн а могӀаман а чура декъашхочун цӀе хьул йе",
        "ipbwatchuser": "ТӀетоха тергаме могӀам юкъа цуьнан долахь йолу агӀо а цуьнан дийцаре агӀо а",
        "ipb-disableusertalk": "Цамагдо шин дийцаре агӀо та я блоктоьхна хан чекхъяллалц",
        "ipb-change-block": "Юхаблоктоха декъашхочун оьцу хийцамашца",
        "blockipsuccesssub": "Блоктохар чакхдели",
        "blockipsuccesstext": "[[Special:Contributions/$1|«$1»]] {{GENDER:$1|блоктоьхна}}.<br />\nХьажа. [[Special:BlockList|блоктоьхна IP-адресийнн могӀам]].",
        "ipb-blockingself": "Хьо хьайна блоктоха гӀерта! Лаьий хьона и кхочушдан?",
-       "ipb-edit-dropdown": "Бахьанин список нисяр",
+       "ipb-edit-dropdown": "Бахьанин могӀам нисбар",
        "ipb-unblock-addr": "ДӀаякхаблок $1",
        "ipb-unblock": "дӀаякхаблок декъашхонтӀера я IP-адрес тӀера",
        "ipb-blocklist": "Блоктоьхнарш",
        "blocklogentry": "блоктоьхна [[$1]] цхьана ханна $2 $3",
        "reblock-logentry": "Хийцина  блоктоьхна хан [[$1]] $2 $3",
        "blocklogtext": "Блоктохаршна а блокдӀаякхаршна а тептар. Ша блоккхеташ долу IP-адресаш кхузахь гойтуш дац. Кхин. [[Special:BlockList|хӀийнца блоктоьха берш]].",
-       "unblocklogentry": "дӀаякхинаблок $1",
+       "unblocklogentry": "дӀаяькхинаблок $1",
        "block-log-flags-anononly": "Къайлаха берш",
        "block-log-flags-nocreate": "цамагдо керла дӏаяздарш кхоллар",
        "block-log-flags-noautoblock": "ша блоктухарг дӏаяйина",
        "block-log-flags-noemail": "цамаго кехаташ кхехӀита",
        "block-log-flags-nousertalk": "шин дийцаре агӀо тая лууш дац",
+       "block-log-flags-angry-autoblock": "латина шуьйра автоблоктохар",
        "block-log-flags-hiddenname": "декъашхочун цӀе къайлаяьккхина",
+       "range_block_disabled": "Куьйгалхошна диапазонашна блоктоха цамага до.",
        "ipb_expiry_invalid": "Дешдерг дан нийса йоцу хан.",
        "ipb_already_blocked": "«$1» хӀинцале блоктоьхна ю.",
        "ipb-needreblock": "ХӀокху $1 декъашхочун {{GENDER:$1|блоктоьхна ю}}. Лаьий хьуна блоктохаран параметраш хийца?",
        "ipb_cant_unblock": "ГӀалат: блоктохар цакарий $1. Иза хӀинцале дӀаяьккхина хила мега.",
        "ip_range_invalid": "IP-адресийн магийна йоцу диапазон.",
        "proxyblocker": "Проксин блоктохар",
+       "lockdb": "Хаамийн база еша бен цалуш йе",
+       "unlockdb": "Хаамийн базан чу дӀаяздарш дан аьтту меттахӀотта бе",
+       "lockbtn": "Хаамийн база еша бен цалуш йе",
+       "unlockbtn": "Хаамийн базан чу дӀаяздарш дан аьтту меттахӀотта бе",
+       "locknoconfirm": "Ахьа бакъдеш йолу меттиге билгало йилина яц.",
+       "lockdbsuccesssub": "Хаамийн базан блоктоьхна",
+       "unlockdbsuccesssub": "Хаамийн базан тӀера блокдӀаяьккхина",
        "move-page": "$1 — цӀе хийцар",
        "move-page-legend": "ЦӀe хийца яр",
        "movepagetext": "Бухахь йолу форманца агӀон цӀе хийцало. Цул совнах цуьна хийцаман тептар кхоьчу метте доккха. Хьалхалера цӀарахь хиръю керла кхоьллина агӀонан хьажораг.\n\nХьовсалаш [[Special:DoubleRedirects|шалха]] а [[Special:BrokenRedirects|йохна хьажоргаш]] юй техь аьлла.\n\nШу жоьпехь ду хьажоргаш нийса некъ гойтуш хиларан.\n\nТидам бе хьалхалера агӀон цӀе ‘’’хийцалур яц’’’ иштта цӀе йолу агӀо йолуш елахь. Юкъардаккхар: йолуш йолу агӀо кхоьчухьа хьажораг елахь, я еса елахь а, цуьна хийцаме истори яцахь а.\n\nИ бохург ду шун агӀонан цӀе юха а хьалха хилларгчунтӀе хийца йиш ю, амма йолуш йолу агӀо дӀаяккха йиш яц.\n\n'''ДӀАХЬЕДАР!'''\n\nЦӀе хийцар бахьнехь гӀаръяьлла агӀонашна дукха дагахь боцу хийцамаш хила тарло. Цундела цӀе хийцале шеш хила тарлучу тӀехьонашах кхета аьлла тешна хила.",
        "semiprotectedpagemovewarning": "'''ДӀахьедо.''' ХӀара агӀо гӀаролла йина ю; дӀабазбиначу декъашхошка бе цӀе хийцалуш яц.\nЛахахьа тептаро балийна тӀаьхьаралера дӀаязбина хаам:",
        "export": "АгӀонаш араяхар",
        "exporttext": "Шуьга далур ду кхечу меттера чудахарш, йоза а хийцаме тептарш билгалла йолу агӀонаш йа гулдина йолу агӀонаш хӀокх XML барамца, юха тӀяхьа чура [[Special:Import|хьаэцалурдолш]] кхечу вики-хьалхен, болх беш йолу хlокху MediaWiki гlирсаца.\n\nКхечу меттера яззамаш чуйаха, чуязйе цӀе тадечу метте, цӀхьа могӀан цӀе могӀаршкахь, юха харжа лаьи шуна Кхечу меттер чуйаха массо яззамашна истори хийцамбарш йа тӀяхьаралера яззамна башхо.\n\nШуьга кхи даландерг, лелаеш йолу меттиг къастаман машан хьажораг кхечу меттер чудаха тӀаьхьарлерачу башхон яззамаш. Масала оцу яззамна [[{{MediaWiki:Mainpage}}]] хӀара хира ю хьажораг [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]].",
+       "exportall": "Массо агӀонаш экспорт ян",
        "exportcuronly": "Карара верси бен юкъа ма тоха, юзийна хьалхалерра истори йоцуш",
        "export-submit": "Экспорт ян",
        "export-addcattext": "ТӀетоха агӀонаш категори чура:",
        "filemissing": "Файл цакарий",
        "thumbnail_error": "Миниатюра кхолларна гӀалат: $1",
        "thumbnail_error_remote": "ГӀалатах хаам $1:\n$2",
+       "thumbnail_image-missing": "$1 файл йоцчух тера ду",
        "import": "АгӀонаш чуяхар",
+       "importinterwiki": "Викиюкъахь-импорт",
        "import-interwiki-source": "Вики-хьост/агlо:",
+       "import-interwiki-history": "ХӀокху агӀона ерриг хийцаман истори копи ян",
        "import-interwiki-templates": "Юкъайихка массо кепаш",
        "import-interwiki-submit": "Импорт ян",
+       "import-interwiki-namespace": "Коьрта цӀерийн меттиг:",
+       "import-interwiki-rootpage": "Коьрта агӀо (тӀехь дац):",
        "import-upload-filename": "Файлан цӀе:",
        "import-comment": "Билгалдаккхар:",
        "importstart": "АгӀонаш импорт яр…",
        "importnopages": "Импорт ян агӀонаш яц.",
        "imported-log-entries": "{{PLURAL:$1|Тептар чура импорт дина $1 дӀаяздар|Тептар чура импорт дина $1 дӀаяздарш}}.",
        "importfailed": "Импорт ян цаелира: $1",
+       "importcantopen": "Цатарло импорт еш йолу файл елла.",
+       "importbadinterwiki": "Нийса йоцу юкъаравики-хьажорг",
+       "importsuccess": "Импорт яр кхочушдина!",
        "importnosources": "Юкъаравики-импортан хьост хаьржина яцара, дуьхьала хийцамашан истори чуяккхар дӀадайина ду.",
+       "importnofile": "Импорт еш йолу файл чуяьккхина яц.",
        "import-noarticle": "Импорт ян агӀонаш яц!",
        "xml-error-string": "$1 $2 могӀан чохь, позицеш $3 (байт $4): $5",
        "import-upload": "Чуяха XML-хаамаш",
        "tooltip-ca-nstab-template": "Куцкепа агlо",
        "tooltip-ca-nstab-help": "ГӀоьна агӀо",
        "tooltip-ca-nstab-category": "Категорешан агӀо",
-       "tooltip-minoredit": "Къастам бé хlокху хийцамна кlеззиг боуш санна",
+       "tooltip-minoredit": "Къастам бé хӀокху хийцамна кӀеззиг болуш санна",
        "tooltip-save": "Хьан хийцамаш lалашбой",
        "tooltip-preview": "Дехар до, агlо lалаш йарал хьалха хьажа муха йу яз!",
        "tooltip-diff": "Гайта долуш долу йозанах бина болу хийцам.",
        "minutes-abbrev": "$1 мин",
        "hours-abbrev": "$1 сахь.",
        "seconds": "{{PLURAL:$1|$1 секунд}}",
-       "minutes": "{{PLURAL:$1|$1 минут}}",
+       "minutes": "$1 минут",
        "hours": "{{PLURAL:$1|сахьат}}",
        "days": "{{PLURAL:$1|$1 де}}",
        "weeks": "{{PLURAL:$1|$1 кӀира}}",
        "years": "$1 {{PLURAL:$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",
        "exif-whitebalance": "Къайн баланс",
        "exif-digitalzoomratio": "Терхьаш дукха хиларан коэффициент",
        "exif-scenecapturetype": "Сурт доккхуш йолу меттиган тайп",
+       "exif-contrast": "Къастам",
+       "exif-saturation": "Ӏаьбна",
+       "exif-sharpness": "Къаьсташ хилар",
+       "exif-devicesettingdescription": "Камеран хьолахь лаьцна",
+       "exif-subjectdistancerange": "Сурт тӀехь йолучун хӀуман юкъ",
        "exif-imageuniqueid": "Суьртан номер (ID)",
+       "exif-gpslatituderef": "Шораллин индекс",
        "exif-gpslatitude": "Шоралла",
+       "exif-gpslongituderef": "Дохаллин индекс",
        "exif-gpslongitude": "Дохалла",
+       "exif-gpsaltituderef": "Локхаллин индекс",
        "exif-gpsaltitude": "Локхалла",
+       "exif-gpstimestamp": "UTC-ца нийса хан",
        "exif-gpsdestlatitude": "Объектан дохалла",
        "exif-gpsdatestamp": "Терахь",
        "exif-jpegfilecomment": "JPEG-файлан билгалдаккхар",
        "exif-headline": "Корта",
        "exif-credit": "Кхоьхьург, хьа делла сурт",
        "exif-source": "Хьост",
+       "exif-urgency": "Керлачу хенахь",
+       "exif-fixtureidentifier": "МогӀан цӀе",
+       "exif-locationdest": "Сурт тӀера меттиг",
+       "exif-locationdestcode": "Сурт тӀера меттиган код",
+       "exif-contact": "Контактан хаам",
+       "exif-writer": "Йозан автор",
        "exif-languagecode": "Мотт",
        "exif-iimversion": "Верси IIM",
+       "exif-iimcategory": "Категори",
+       "exif-iimsupplementalcategory": "Кхин тӀе категореш",
+       "exif-datetimeexpires": "Ма лелае тӀехьа",
+       "exif-datetimereleased": "Араяларан терахь",
        "exif-originaltransmissionref": "ДӀадолалун меттиган код",
+       "exif-identifier": "ID",
+       "exif-lens": "ID",
+       "exif-serialnumber": "Камеран серин номер",
+       "exif-cameraownername": "Камера ерг",
        "exif-label": "Билгало",
        "exif-datetimemetadata": "ТӀехьара метахаамаш хийцина терахь",
+       "exif-nickname": "ЧӀагӀъелла йоцу суьртан цӀе",
+       "exif-rating": "Мах хадор (5 нах)",
+       "exif-rightscertificate": "Бакъонийн урхалладаран сертификат",
+       "exif-copyrighted": "Авторийн-бакъонийн статус:",
        "exif-copyrightowner": "Авторийн бакъонаш ерг",
        "exif-usageterms": "Лелоран хьал",
+       "exif-webstatement": "Интернет чохь долу авторийн бакъонийн хьал",
+       "exif-originaldocumentid": "ДӀадолалун документан ша тайпа ID",
+       "exif-licenseurl": "Авторийн лицензин URL",
+       "exif-morepermissionsurl": "Альтернативан лицензин хаам",
        "exif-pngfilecomment": "PNG-файлан билгалдаккхар",
+       "exif-disclaimer": "Бехк тӀе ца эцар",
+       "exif-contentwarning": "Чулацамах лаьцна дӀахьедар",
        "exif-giffilecomment": "GIF-файлан билгалдаккхар",
+       "exif-intellectualgenre": "ХӀуман тайп",
+       "exif-subjectnewscode": "Теман код",
+       "exif-scenecode": "IPTC сценан код",
+       "exif-event": "Сурт тӀе даьккхина хиларг",
+       "exif-organisationinimage": "Сурт тӀера организаци",
+       "exif-personinimage": "Сурт тӀера адам",
        "exif-compression-1": "ТIеIовдан яц",
        "exif-copyrighted-false": "Юкъараллин хьал",
        "exif-unknowndate": "Хууш доцу терахь",
        "exif-whitebalance-0": "Къайн автоматически баланс",
        "exif-whitebalance-1": "Куьйга хӀоттийна къайн баланс",
        "exif-scenecapturetype-0": "Стандартан",
+       "exif-scenecapturetype-3": "Буса даьккхина сурт",
        "exif-gaincontrol-0": "Яц",
+       "exif-gaincontrol-1": "Жим докха дар",
+       "exif-gaincontrol-2": "Дукху доккха дар",
+       "exif-gaincontrol-3": "Дуккху жим дар",
+       "exif-gaincontrol-4": "Дукху жим дар",
        "exif-contrast-0": "Лартӏахь",
+       "exif-contrast-1": "КӀеда айина",
+       "exif-contrast-2": "ЧӀогӀа айина",
        "exif-saturation-0": "Лартӏахь",
+       "exif-saturation-1": "КӀезиг Ӏаьбна",
+       "exif-saturation-2": "Докха Ӏаьбна",
        "exif-sharpness-0": "Лартӏахь",
+       "exif-sharpness-1": "КӀеда айина",
+       "exif-sharpness-2": "ЧӀогӀа айина",
+       "exif-subjectdistancerange-0": "Хууш дац",
+       "exif-subjectdistancerange-1": "Макро сурт даккхар",
+       "exif-subjectdistancerange-2": "Уллера сурт даккхар",
+       "exif-subjectdistancerange-3": "Генара сурт даккхар",
+       "exif-gpslatitude-n": "къилбседера шоралла",
+       "exif-gpslatitude-s": "къилбера шоралла",
+       "exif-gpslongitude-e": "малхбалера дохалла",
+       "exif-gpslongitude-w": "малхбузера шоралла",
        "exif-gpsaltitude-above-sealevel": "Хи хIоттарал локхалла $1 {{PLURAL:$1|метр}}",
        "exif-gpsaltitude-below-sealevel": "Хи хIоттарал локхаллин $1 {{PLURAL:$1|метр}} лахахь",
+       "exif-gpsstatus-a": "Дустар чекх даьлла дац",
+       "exif-gpsstatus-v": "Хаам дӀабала кичча ю",
+       "exif-gpsmeasuremode-2": "Дустар 2-х координаташ",
+       "exif-gpsmeasuremode-3": "Дустар 3-х координаташ",
        "exif-gpsspeed-k": "км/сахьтехь",
        "exif-gpsspeed-m": "миль/сахьтехь",
        "exif-gpsspeed-n": "шеддаш",
        "exif-dc-type": "Медиан тайп",
        "exif-rating-rejected": "ДӀайайина",
        "exif-isospeedratings-overflow": "65535 дукха",
+       "exif-iimcategory-ace": "Исбаьхьалла, культура а синкъерам а",
+       "exif-iimcategory-clj": "Зулам дар а Ӏедал а",
+       "exif-iimcategory-dis": "Ирча бохам а авари а",
+       "exif-iimcategory-fin": "Экономика а бизнес а",
+       "exif-iimcategory-edu": "Дешна хилар",
+       "exif-iimcategory-lab": "Къинхьегам",
+       "exif-iimcategory-rel": "Дин а тешар а",
+       "exif-iimcategory-sci": "Ӏилма а техника а",
+       "exif-iimcategory-soi": "Социалан хаттарш",
+       "exif-iimcategory-wea": "Хенан хӀоттам",
+       "exif-urgency-normal": "Диканиг ($1)",
+       "exif-urgency-low": "Лахара ($1)",
+       "exif-urgency-high": "Лакхара ($1)",
+       "exif-urgency-other": "Декъашхочо билгалйина приоритет ($1)",
        "watchlistall2": "массо",
        "namespacesall": "массо",
        "monthsall": "массо",
+       "confirmemail": "Электронан почтан адрес бакъдар",
+       "confirmemail_noemail": "Ахьа нийса электронан почтан адрес яздина дац [[Special:Preferences|гӀирсан чохь]].",
        "confirmrecreate": "Декъашхочо [[User:$1|$1]] ([[User talk:$1|дийцаре]]) хӀара агӀо дӀаяьккхина, ахьа иза тая йолийча, дӀаяккхарна бахьна:\n: ''$2''\nДехар до, тешал де, хьо иза агӀо меттахӀотто лууш ву/ю але.",
        "confirmrecreate-noreason": "Декъашхочо [[User:$1|$1]] ([[User talk:$1|дийцаре]]) хӀара агӀо дӀаяьккхина, ахьа иза тая йолийча. Дехар до, тешал де, хьо иза агӀо меттахӀотто лууш ву/ю але.",
        "recreate": "Юха кхолла",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|дийцаре]])",
        "version": "Верси MediaWiki",
        "version-extensions": "ДӀахӀоттийна шордарш",
+       "version-skins": "ДӀахӀоттийна кечяран темаш",
        "version-specialpages": "Белхан агӀонаш",
        "version-parserhooks": "Cинтаксисан къастор схьалоцурш",
        "version-variables": "Хийцаме",
-       "version-skins": "Кечяран темаш",
        "version-other": "Кхин",
        "version-mediahandlers": "Медиа кеч ерраш",
+       "version-hooks": "Схьалуьцарш",
        "version-parser-extensiontags": "Cинтаксисан къасторан шораллин тегаш",
        "version-parser-function-hooks": "Cинтаксисан къасторан функци схьалоцурш",
+       "version-hook-name": "Схьалуьцачун цӀе",
+       "version-hook-subscribedby": "ДӀабазбелла тӀе",
        "version-version": "(Верси $1)",
-       "version-license": "Бакъо",
+       "version-no-ext-name": "[цӀе йоцуш]",
+       "version-license": "MediaWiki Лицензи",
        "version-ext-license": "Лицензи",
        "version-ext-colheader-name": "Шордарш",
+       "version-skin-colheader-name": "Кечяран тема",
        "version-ext-colheader-version": "Верси",
        "version-ext-colheader-license": "Лицензи",
        "version-ext-colheader-description": "Цуьнах лаьцна",
        "version-ext-colheader-credits": "Автораш",
+       "version-license-title": "Лицензи цу $1",
+       "version-credits-title": "Авторийн могӀам цу $1",
        "version-poweredby-credits": "ХӀара вики болх беш ю '''[https://www.mediawiki.org/ MediaWiki]''' движок тӀехь, copyright © 2001-$1 $2.",
        "version-poweredby-others": "кхин",
        "version-poweredby-translators": "гочдархой translatewiki.net",
        "version-license-info": "MediaWiki ю маьрша программин латораг, шу йиш ю фондас арахецна йолу GNU General Public License лицензица и яржо я хийца а.\n\nMediaWiki яржош ю и шуна пайдане хир яц те аьлла, амма  ЦХЬА ЮКЪАРАХИЛАР ДОЦУШ. Хь. кхин. лицензи мадарра GNU General Public License .\n\nШоьга кхача езаш яра [{{SERVER}}{{SCRIPTPATH}}/COPYING копи GNU General Public License] хӀокху программица, кхаьчна яцахь язъе Free Software Foundation, Inc., адрес тӀе: 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA я [//www.gnu.org/licenses/old-licenses/gpl-2.0.html еша и онлайнехь].",
        "version-software": "ДӀахӀоттийна программин латтор",
+       "version-software-product": "Сурсат",
        "version-software-version": "Верси",
        "version-entrypoints": "ЧугӀо адресин тӀадамаш",
        "version-entrypoints-header-entrypoint": "Яздаран тӀадам",
        "redirect-lookup": "Лаха:",
        "redirect-value": "МаьӀна:",
        "redirect-user": "Декъашхочун ID",
+       "redirect-page": "АгӀона ID",
        "redirect-revision": "АгӀона верси",
        "redirect-file": "Файлан цӀе",
+       "redirect-not-exists": "МаьӀна цакарий",
        "fileduplicatesearch": "Лаха цхьатера йолу файлаш",
        "fileduplicatesearch-summary": "Лаха цхьатера йолу файлаш хэш-кодаца.",
        "fileduplicatesearch-legend": "Цхьатера ерш лахар",
        "fileduplicatesearch-filename": "Файлан цӀе:",
        "fileduplicatesearch-submit": "Лаха",
        "fileduplicatesearch-info": "$1 × $2 пиксель<br />Файлан барам: $3<br />MIME-тайп: $4",
+       "fileduplicatesearch-result-1": "«$1» файлах тера хӀума яц.",
        "fileduplicatesearch-noresults": "ЦӀе «$1» йолуш файл цакарий.",
        "specialpages": "Леррина агlонаш",
        "specialpages-note": "* Гуттарлера белха агlонаш.\n* <strong class=\"mw-specialpagerestricted\">Кlеззиг таронаш йолу леррина агlонаш.</strong>",
        "htmlform-no": "ХӀахӀа",
        "htmlform-yes": "ХӀаъ",
        "htmlform-chosen-placeholder": "Харжа кеп",
+       "htmlform-cloner-create": "ТӀетоха кхин",
+       "htmlform-cloner-delete": "ДӀаяккха",
        "logentry-delete-delete": "$1 {{GENDER:$2|дӀаяьккхина}} агӀо $3",
        "logentry-delete-restore": "$1 {{GENDER:$2|меттахӀоттайина|меттахӀоттайина}} агӀо $3",
        "logentry-delete-event": "$1 {{GENDER:$2|хийцина}} гуш хилар {{PLURAL:$5|1=$5 дӀаяздаран|$5 дӀаяздаршан}} тептаран → $3: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|хийцина}} {{PLURAL:$5|1=$5 верси|$5 версеш}} гуш хилар $3: $4 агӀорахь",
        "logentry-delete-event-legacy": "$1 {{GENDER:$2|хийцина}} $3 агӀона тептаран дӀаяздарш гуш хилар",
        "logentry-delete-revision-legacy": "$1 {{GENDER:$2|хийцина}} $3 агӀона верси гуш хилар",
+       "logentry-suppress-delete": "$1 {{GENDER:$2|дӀаяьккхина}} агӀо $3",
        "logentry-suppress-event": "$1 къайлаха {{GENDER:$2|хийцина}} тептаран {{PLURAL:$5|1=$5 дӀаяздар|$5 дӀаяздарш}} гуш хилар $3: $4 чохь",
        "logentry-suppress-revision": "$1 къайлаха {{GENDER:$2|хийцина}} {{PLURAL:$5|1=$5 верси|$5 версеш}} $3: $4 чохь гуш хилар",
        "logentry-suppress-event-legacy": "$1 къайлаха {{GENDER:$2|хийцина}} $3 тептар чура дӀаяздарш гуш хилар",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2|цӀе хийцина}} $3 → $4 дӀасахьажийнарг цаюьтуш",
        "logentry-move-move_redir": "$1 {{GENDER:$2|цӀе хийцина}} $3 → $4 дӀасахьажоран тӀохул",
        "logentry-move-move_redir-noredirect": "$1 {{GENDER:$2|цӀе хийцина}} $3 → $4 дӀасахьажоран тӀохул а дӀасахьажийнарг цаюьтуш а",
+       "logentry-patrol-patrol": "$1 {{GENDER:$2|хьаьжина}}  агӀона $3 $4 версега",
        "logentry-patrol-patrol-auto": "$1 автоматически {{GENDER:$2|хьаьжина}} $3 агӀона версега $4",
        "logentry-newusers-newusers": "{{GENDER:$2|ДӀавазвелла|ДӀаязелла}} керла декъашхо $1",
        "logentry-newusers-create": "{{GENDER:$2|ДӀавазвелла|ДӀаязелла}} керла декъашхо $1",
+       "logentry-newusers-create2": "$1 {{GENDER:$2|кхоьллина}} декъашхочун дӀаяздапр $3",
+       "logentry-newusers-byemail": "$1 {{GENDER:$2|кхоьллина}} декъашхочун дӀаяздар $3 пароль электронан почте яхьийтина",
        "logentry-newusers-autocreate": "Автоматически кхоьллина {{GENDER:$2|декъашхочун}} $1 дӀаяздар",
        "logentry-rights-rights": "$1 {{GENDER:$2|хийцина}} $3 бакъо $4 → $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|хийцина}} хӏокхуна $3 бакъо",
+       "logentry-rights-autopromote": "$1 {{GENDER:$2|вара|яра}} автоматически {{GENDER:$2|сихьа ваьлла|сихьа яьлла}} $4 $5 чу",
        "rightsnone": "(яц)",
+       "feedback-bugornote": "Хьайн техникин халонах лаьцна яздан хӀума делахь, дехар до, [$1 хаам бе тхоьга].\nДацахь хьан йиш ю хӀокху атта кепаца «[$3 $2]» агӀонг къамел тӀетоха хьан декъашхочун цӀарца, кхин лелош йолу браузер билгал еш.",
+       "feedback-subject": "Къамел:",
+       "feedback-message": "Хаам:",
        "feedback-cancel": "Цаоьшу",
+       "feedback-submit": "Дахьийта хетарг",
+       "feedback-adding": "АгӀона хетарг тӀетохар...",
        "feedback-close": "Кийчча ю",
        "searchsuggest-search": "Лаха",
        "searchsuggest-containing": "чуьраниг…",
        "api-error-duplicate": "Иштта чулацам болу {{PLURAL:$1|1=[$2 кхин файл]|[$2 кхин файлаш]}} йолуш ю",
        "api-error-duplicate-popup-title": "{{PLURAL:$1|1=Файлан|Файлийн}} дубликат.",
        "api-error-empty-file": "Ахьа яхьийтина файл еса ю.",
+       "api-error-mustbeposted": "Чоьхьара гӀалат: дехаро хьехам схьабоьху HTTP POST.",
        "api-error-noimageinfo": "Кхиамца чуяьккхина, амма серверо файлахь лаьцна цхьаа хаам битина бац.",
        "api-error-nomodule": "Чоьхьара гӀалат: чуйокху модуль нисйина яц.",
        "api-error-ok-but-empty": "Чоьхьара гӀалат: серверара жоп дац.",
        "limitreport-cputime": "Процессоран хан лелор",
        "limitreport-cputime-value": "$1 {{PLURAL:$1|секунд}}",
        "limitreport-walltime": "Йодуш йолу хенахь лелор",
-       "limitreport-walltime-value": "$1 {{PLURAL:$1|секунд}}",
+       "limitreport-walltime-value": "$1 секунд",
        "limitreport-ppvisitednodes": "Препроцессор хьаьжна шадин дукхалла",
        "limitreport-ppgeneratednodes": "Препроцессорс сгенерировать бина шадин дукхалла",
        "limitreport-postexpandincludesize": "Схьаяьстина юккъерчаран барам",
        "expand_templates_remove_nowiki": "ДӀайоху тегаш <nowiki> хилча",
        "expand_templates_generate_xml": "Гойту дитта цу XML",
        "expand_templates_generate_rawhtml": "Гайта HTML",
-       "expand_templates_preview": "Хьалха муха ю хьажа"
+       "expand_templates_preview": "Хьалха муха ю хьажа",
+       "pagelanguage": "АгӀона мотт харжар",
+       "pagelang-name": "АгӀо",
+       "pagelang-language": "Мотт",
+       "pagelang-use-default": "Ӏад битарца мотт",
+       "pagelang-select-lang": "Харжа мотт",
+       "right-pagelang": "АгӀона мотт хийца",
+       "action-pagelang": "агӀона мотт хийца",
+       "log-name-pagelang": "Мотт хийцаран тептар",
+       "log-description-pagelang": "ХӀара агӀонашкахь мотт хийцаран тептар ду.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|хийцина}} агӀона мотт $3 $4 → $5."
 }
index 8cbc3db..803e6f0 100644 (file)
        "qbmyoptions": "Akong mga panid",
        "faq": "FAQ",
        "faqpage": "Project:FAQ",
-       "vector-action-addsection": "Pagdugang og topiko",
-       "vector-action-delete": "Papasa",
-       "vector-action-move": "Ibalhin",
-       "vector-action-protect": "Protektahi",
-       "vector-action-undelete": "Ayaw papasa",
-       "vector-action-unprotect": "Ayaw protektahi",
-       "vector-view-create": "Himoa",
-       "vector-view-edit": "Usba",
-       "vector-view-history": "Tan-awa ang kaagi",
-       "vector-view-view": "Basaha",
-       "vector-view-viewsource": "Tan-awa ang ginikanan",
        "actions": "Mga lihok",
        "namespaces": "Mga ngalang espasyo",
        "variants": "Mga baryant",
        "allowemail": "I-enable ang e-mail gikan sa ubang gumagamit",
        "prefs-searchoptions": "Mga opsyon sa pagpangita",
        "prefs-namespaces": "Ngalang espasyo",
-       "defaultns": "Kondili, pangita na lang niining mga ngalang espasyo:",
        "default": "default",
        "prefs-files": "Mga payl",
        "prefs-custom-css": "Kustom nga CSS",
        "prefs-emailconfirm-label": "Kompirmasyon sa e-mail:",
        "youremail": "E-mail:",
        "username": "Username:",
-       "uid": "ID sa gumagamit:",
        "prefs-memberingroups": "Miyembro sa {{PLURAL:$1|grupo|mga grupo}}:",
        "prefs-registration": "Oras sa pagparehistro:",
        "yourrealname": "Tinuod nga pangalan:",
        "booksources-go": "Sige",
        "log": "Mga log",
        "allpages": "Tanang panid",
-       "alphaindexline": "$1 hangtod $2",
        "prevpage": "Miaging panid ($1)",
        "allpagesfrom": "Ipakita ang mga panid nga nagsugod sa:",
        "allpagesto": "Ipakita ang mga panid nga nagtapos sa:",
index 99d3360..96b48e0 100644 (file)
        "editundo": "funas",
        "searchresults": "Humuyongña i inaligao",
        "searchresults-title": "Risutton i inaligao \"$1\"",
-       "toomanymatches": "Mampos meggai na manaya ni humuyongña, pot fabot chagi difirente na inaligao",
        "titlematches": "Titulon påhina siha ni manaya",
        "textmatches": "Tinige' påhina siha ni manaya",
        "notextmatches": "Tåya' na tinige' påhina siha ni manaya",
        "searchrelated": "umachetton",
        "searchall": "todu",
        "showingresults": "A'annok gi sampapa' asta {{PLURAL:$1|'''1''' na humuyongña|'''$1''' na humuyongña siha}} tumutuhon yan i #'''$2'''.",
-       "showingresultsnum": "A'annok gi sampapa' {{PLURAL:$3|'''1''' na humuyongña|'''$3''' na humuyongña siha}} tumutuhon yan i #'''$2'''.",
        "powersearch-legend": "Finu na inaligao",
        "powersearch-ns": "Inaligao gi sagan nå'an:",
        "search-external": "Inaligao sanhiyong",
        "allowemail": "Na'sedi e-mail ginen otru na muna'sesetbi siha",
        "prefs-searchoptions": "Inayek manaligao siha",
        "prefs-namespaces": "Sågan nå'an",
-       "defaultns": "Fanaligao hålom este na sågan nå'an fine'nena:",
        "default": "default",
        "prefs-files": "Atkibu siha",
        "youremail": "E-mail:",
        "username": "Nå'an muna'sesetbi:",
-       "uid": "ID muna'sesetbi:",
        "prefs-memberingroups": "Miembron {{PLURAL:$1|i grupu|i grupu siha}}:",
        "yourrealname": "Minagahet nå'an-mu:",
        "yourlanguage": "Lengguahe:",
        "log": "Logs",
        "all-logs-page": "Todu i logs siha",
        "allpages": "Todu i påhina siha",
-       "alphaindexline": "$1 para $2",
        "nextpage": "Mamaila' na påhina ($1)",
        "prevpage": "Må'pos na påhina ($1)",
        "allpagesfrom": "Fa'nu'i i påhina siha tumutuhon gi:",
diff --git a/languages/i18n/chy.json b/languages/i18n/chy.json
new file mode 100644 (file)
index 0000000..cc2a2cf
--- /dev/null
@@ -0,0 +1,11 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Amqui"
+               ]
+       },
+       "talkpagelinktext": "Éestsestôtse",
+       "talk": "Éestsestôtse",
+       "mainpage": "Va'ohtama",
+       "mainpage-description": "Va'ohtama"
+}
index 35ea499..42f53e3 100644 (file)
        "searchrelated": "پەیوەست",
        "searchall": "ھەموو",
        "showingresults": "لە خوارەوە {{PLURAL:$1|'''یەک''' ئەنجام|'''$1''' ئەنجام}} نیشان دراوە، بە دەست پێ کردن لە ژمارەی '''$2'''ەوە.",
-       "showingresultsnum": "لە خوارەوە {{PLURAL:$3|'''١''' ئەنجام|'''$3''' ئەنجام}} دەبینن کە لە ئەنجامی ژمارە '''$2'''ەوە دەست{{PLURAL:$3|پێدەکات|پێدەکەن}}",
        "showingresultsheader": "{{PLURAL:$5|ئاکامی '''$1''' لە '''$3'''|ئاکامەکانی '''$1 - $2''' لە '''$3'''}} بۆ '''$4'''",
        "search-nonefound": "ھیچ ئاکامێک کە بە داواکارییەکەت بخوا نەدۆزرایەوە.",
        "powersearch-legend": "گەڕانی پێشکەوتوو",
        "action-userrights-interwiki": "دەستکاری مافەکانی بەکارهێنەریی بەکارهێنەران لە ویکی‌یەکانی دیکە‌دا",
        "action-siteadmin": "داخستن یا کردنەوەی بنکەدراو",
        "action-sendemail": "ناردنی ئیمەیلەکان",
+       "action-editmywatchlist": "دیتنی پێرستی چاودێریت",
        "action-viewmywatchlist": "دیتنی پێرستی چاودێریت",
        "nchanges": "$1 {{PLURAL:$1|گۆڕانکاری}}",
        "enhancedrc-history": "مێژوو",
        "pageswithprop-submit": "بڕۆ",
        "doubleredirects": "دووجار ڕەوانەکراوەکان",
        "doubleredirectstext": "ئەم پەڕە لیستی ئەو پەڕانەیە کە ڕەوانەکراون بۆ پەڕەیەکی ڕەوانەکراوی دیکە.\nهەر ڕیزێک، بەستەرەکانی ڕەوانەکردنەوەی یەکەم و دووەم و ھەروەھا ئامانجی ڕەوانەکراوی دووەمی تێدایە کە حاڵەتی ئاساییدا مەبەستی «ڕاستی»ی ڕەوانەکراوی یەکەمیش دەبێ بۆ ئەوێ بێت.\nئەوانەی <del>هێڵیان بەسەردا کێشراوە</del> چارەسەر کراون.",
-       "double-redirect-fixed-move": "[[$1]] گوێسترایەوە.\nئێستا ڕەوانکەرە بۆ [[$2]].",
+       "double-redirect-fixed-move": "[[$1]] گوازرایەوە.\nخۆگەڕ نوێ کرایەوە و ئێستا ڕەوانەکەرە بۆ [[$2]].",
        "double-redirect-fixer": "چارەسەرکەری ڕەوانکەر",
        "brokenredirects": "ڕەوانەکەرە شکاوەکان",
        "brokenredirectstext": "ئەم ڕەوانەکراوانە بەستەرن بۆ ئەو پەڕانە کە بوونیان نییە:",
        "restriction-create": "دروستکردن",
        "restriction-upload": "بارکردن",
        "restriction-level-sysop": "تەواو پارێزراو",
-       "restriction-level-autoconfirmed": "نیوەپارێزراو - ئاستی ١",
+       "restriction-level-autoconfirmed": "نیوەپارێزراو",
        "restriction-level-all": "هەر ئاستێک",
        "undelete": "پەڕە سڕاوەکان ببینە",
        "undeletepage": "پەڕە سڕاوەکان ببینە و بھێنەوە",
        "exif-countrycodedest": "کۆدی وڵاتی نیشان دراو",
        "exif-provinceorstatedest": "پارێزگا یان ویلایەتی نیشان دراو",
        "exif-citydest": "شاری نیشان دراو",
-       "exif-objectname": "سەردێری کورت",
+       "exif-objectname": "سەردێڕی کورت",
        "exif-specialinstructions": "ڕیسای کاری تایبەت",
-       "exif-headline": "سەردێر",
+       "exif-headline": "سەردێڕ",
        "exif-source": "سەرچاوە",
        "exif-contact": "زانیاری پەیوەندیکردن",
        "exif-writer": "نووسەر",
        "exif-flash-mode-3": "شێوازی خۆکار",
        "exif-flash-function-1": "فەنکشێنی فلاش نیە",
        "exif-flash-redeye-1": "شێوازی کەم‌کردنەوەی سوور-چاو",
-       "exif-focalplaneresolutionunit-2": "ئینج",
+       "exif-focalplaneresolutionunit-2": "ئینچ",
        "exif-sensingmethod-1": "دیاری نەکراو",
        "exif-sensingmethod-2": "یەک چیپی هەستەوەری بەشی ڕەنگ",
        "exif-sensingmethod-3": "دوو چیپی هەستەوەری بەشی ڕەنگ",
        "imgmultipagenext": "پەڕەی داهاتوو →",
        "imgmultigo": "بڕۆ!",
        "imgmultigoto": "بڕۆ بۆ پەڕەی $1",
+       "img-lang-go": "بڕۆ",
        "ascending_abbrev": "بەرەوە ژوور",
        "descending_abbrev": "بەرەوە ژێر",
        "table_pager_next": "پەڕەی داهاتوو",
        "duplicate-defaultsort": "'''ئاگاداری''' کلیلی پۆلێنکردنی \"$2'' چووەتە شوێنی کلیلی پۆلێنکردنی  \"$1\"",
        "version": "وەشان",
        "version-extensions": "پێوەکراوە دامەزراوەکان",
+       "version-skins": "پێستەکان",
        "version-specialpages": "پەڕە تایبەتەکان",
        "version-parserhooks": "قولاپە لێککەرەکان",
        "version-variables": "گۆڕاوەکان",
-       "version-skins": "پێستەکان",
        "version-other": "Other",
        "version-mediahandlers": "Media handlers",
        "version-hooks": "قولاپەکان",
        "version-hook-subscribedby": "بەشداربوو لە لایەن",
        "version-version": "(وەشانی $1)",
        "version-license": "مۆڵەتنامە",
+       "version-ext-colheader-version": "وەشان",
+       "version-ext-colheader-description": "وەسف",
        "version-poweredby-others": "دیکە",
        "version-software": "نەرمەکاڵای دامەزراو",
        "version-software-product": "بەرهەم",
        "version-software-version": "وەشان",
        "version-entrypoints-header-url": "ناونیشانی ئینتەرنێتی",
+       "redirect-submit": "بڕۆ",
        "fileduplicatesearch": "گەڕان بۆ پەڕگە دووپات کراوەکان",
        "fileduplicatesearch-summary": "گەڕان بۆ پەڕگە دووبارەکراوەکان لەسەر بنەمای نرخی hash.",
        "fileduplicatesearch-legend": "گەڕان بۆ دووبارەکردنێک",
index 96150d4..1cbf870 100644 (file)
        "blocklist-reason": "Mutivu",
        "ipblocklist-submit": "Ricerca",
        "anononlyblock": "solu i cuntributori anonimi",
+       "blocklist-nousertalk": "ùn pò mudificà a so propria pagina di discussione",
        "blocklink": "bluccà",
        "unblocklink": "sbluccà",
        "change-blocklink": "cambià u bloccu",
        "blocklogentry": "ha bluccatu [[$1]] per un periodu di $2 $3",
        "block-log-flags-anononly": "solu cuntributori anonimi",
        "block-log-flags-nocreate": "registramentu pruibitu",
+       "block-log-flags-nousertalk": "ùn pò mudificà a so propria pagina di discussione",
        "move-page-legend": "Move a pagina",
        "movearticle": "Move a pagina",
        "move-watch": "Fighjulà issa pagina",
index 0b601fc..18ff1d5 100644 (file)
        "qbmyoptions": "Akon mga pahina",
        "faq": "Mga perme napamangkot (\"FAQ\")",
        "faqpage": "Project:Mga perme napamangkot (''FAQ'')",
-       "vector-action-addsection": "Magdugang sang topiko",
-       "vector-action-delete": "Panason",
-       "vector-action-move": "Isdogon",
-       "vector-action-protect": "Protektahan",
-       "vector-action-undelete": "Indi pag panason",
-       "vector-action-unprotect": "Islan ang proteksyon",
-       "vector-view-create": "Ubrahon",
-       "vector-view-edit": "Bag-uhon",
-       "vector-view-history": "Ipakita ang kasaysayan",
-       "vector-view-view": "Basahon",
-       "vector-view-viewsource": "Lantawon ang ginhalinan",
        "actions": "Mga hulag",
        "namespaces": "Mga lang-at ngalan",
        "variants": "Mga pililian",
        "viewprevnext": "Tan-awon ($1 {{int:pipe-separator}} $2) ($3)",
        "searchmenu-new": "'''Ubrahon ang pahina nga \"[[:$1]]\" sa sini nga wiki!'''",
        "searchprofile-articles": "Mga pahina sang ka-undan",
-       "searchprofile-project": "Mga pahina sang Tabang kag Katuyuan",
        "searchprofile-images": "Multimidya",
        "searchprofile-everything": "Tanan nga butang",
        "searchprofile-advanced": "Mas mataas nga lebel",
        "searchprofile-articles-tooltip": "Pangitaon sa $1",
-       "searchprofile-project-tooltip": "Pangitaon sa $1",
        "searchprofile-images-tooltip": "Magpangita sang mga akta",
        "searchprofile-everything-tooltip": "Pangitaon ang tanan nga kaundan (lakip ang mga pahina sang pag-istoryahanay)",
        "searchprofile-advanced-tooltip": "Pangitaon sa ginpaubra nga mga lang-at pangalan",
        "booksources-go": "Padayon",
        "log": "Mga Listahan",
        "allpages": "Tanan nga pahina",
-       "alphaindexline": "$1 asta sa $2",
        "prevpage": "Antes nga pahina ($1)",
        "allpagesfrom": "Ipakita ang mga pahina halin sa:",
        "allpagesto": "Ipakita ang mga pahina nga nagatapos sa:",
diff --git a/languages/i18n/cr.json b/languages/i18n/cr.json
new file mode 100644 (file)
index 0000000..da515a7
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Kuvaly",
+                       "Malafaya"
+               ]
+       },
+       "mainpage": "ᓃᔥᑕᒻᐹᔅᑌᒋᓂᑲᓐ",
+       "mainpage-description": "ᓃᔥᑕᒻᐹᔅᑌᒋᓂᑲᓐ"
+}
index 1aa90c0..2a38313 100644 (file)
        "searchrelated": "багълы",
        "searchall": "эписи",
        "showingresults": "Ашагъыда №&nbsp;<strong>$2</strong>ден башлап {{PLURAL:$1|1='''1''' нетидже|'''$1''' нетидже}} булуна.",
-       "showingresultsnum": "Ашагъыда №&nbsp;'''$2'''ден башлап {{PLURAL:$3|1='''1''' нетидже|'''$3''' нетидже}} булуна.",
        "search-nonefound": "Соратманен эшлешкен бир нетидже ёкъ.",
        "powersearch-legend": "Тафсилятлы къыдырув",
        "powersearch-ns": "Бу исим фезаларында къыдыр:",
index b43d98e..82e3a05 100644 (file)
        "searchrelated": "bağlı",
        "searchall": "episi",
        "showingresults": "Aşağıda №&nbsp;<strong>$2</strong>den başlap {{PLURAL:$1|'''1''' netice|'''$1''' netice}} buluna.",
-       "showingresultsnum": "Aşağıda №&nbsp;'''$2'''den başlap {{PLURAL:$3|'''1''' netice|'''$3''' netice}} buluna.",
        "search-nonefound": "Soratmanen eşleşken bir netice yoq.",
        "powersearch-legend": "Tafsilâtlı qıdıruv",
        "powersearch-ns": "Bu isim fezalarında qıdır:",
index 77c706e..1478fda 100644 (file)
        "searchall": "vše",
        "showingresults": "Níže zobrazuji nejvýše <strong>$1</strong> {{PLURAL:$1|výsledek|výsledky|výsledků}} počínaje od <strong>$2</strong>.",
        "showingresultsinrange": "Níže zobrazuji nejvýše <strong>$1</strong> {{PLURAL:$1|výsledek|výsledky|výsledků}} v rozsahu #<strong>$2</strong>–#<strong>$3</strong>.",
-       "showingresultsnum": "Zobrazuji <strong>$3</strong> {{PLURAL:$3|výsledek|výsledky|výsledků}} počínaje od <strong>$2</strong>.",
        "showingresultsheader": "{{PLURAL:$5|Výsledek '''$1''' z '''$3'''|Výsledky '''$1–$2''' z '''$3'''}} pro '''$4'''",
        "search-nonefound": "Na váš dotaz nebyly nalezeny žádné výsledky.",
        "powersearch-legend": "Rozšířené vyhledávání",
        "license-nopreview": "(Náhled není dostupný)",
        "upload_source_url": " (platné, veřejně přístupné URL)",
        "upload_source_file": " (soubor ve vašem počítači)",
+       "listfiles-delete": "smazat",
        "listfiles-summary": "Tato speciální stránka zobrazuje všechny načtené soubory.",
        "listfiles_search_for": "Hledat soubor podle názvu:",
        "imgfile": "soubor",
        "duplicate-defaultsort": "Upozornění: Implicitní klíč řazení (DEFAULTSORTKEY) „$2“ přepisuje dříve nastavenou hodnotu „$1“.",
        "version": "Verze",
        "version-extensions": "Nainstalovaná rozšíření",
+       "version-skins": "Nainstalované vzhledy",
        "version-specialpages": "Speciální stránky",
        "version-parserhooks": "Přípojné body syntaktického analyzátoru",
        "version-variables": "Proměnné",
        "version-antispam": "Ochrana proti spamu",
-       "version-skins": "Vzhledy",
        "version-other": "Jiné",
        "version-mediahandlers": "Obsluha médií",
        "version-hooks": "Přípojné body",
        "version-license": "Licence MediaWiki",
        "version-ext-license": "Licence",
        "version-ext-colheader-name": "Rozšíření",
+       "version-skin-colheader-name": "Vzhled",
        "version-ext-colheader-version": "Verze",
        "version-ext-colheader-license": "Licence",
        "version-ext-colheader-description": "Popis",
        "expand_templates_remove_nowiki": "Potlačit ve výsledku značky <nowiki>",
        "expand_templates_generate_xml": "Zobrazit syntaktický strom v XML",
        "expand_templates_generate_rawhtml": "Zobrazit surové HTML",
-       "expand_templates_preview": "Náhled"
+       "expand_templates_preview": "Náhled",
+       "pagelanguage": "Volba jazyka stránky",
+       "pagelang-name": "Stránka",
+       "pagelang-language": "Jazyk",
+       "pagelang-use-default": "Použít implicitní jazyk",
+       "pagelang-select-lang": "Vybrat jazyk",
+       "right-pagelang": "Změnit jazyk stránky",
+       "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."
 }
index 5064dfc..6a4cf9c 100644 (file)
        "qbmyoptions": "Mòje òptacëje",
        "faq": "FAQ",
        "faqpage": "Project:FAQ",
-       "vector-action-addsection": "Dodôj témã",
-       "vector-action-delete": "Rëmôj",
-       "vector-action-move": "Przeniesë",
-       "vector-action-protect": "Zazychrëjë",
-       "vector-action-undelete": "Doprowôdzë nazôd",
-       "vector-action-unprotect": "Òdzychrëjë",
-       "vector-view-create": "Ùsôdzë",
-       "vector-view-edit": "Edicëjô",
-       "vector-view-history": "Historëjô lopka",
-       "vector-view-view": "Czëtôj",
-       "vector-view-viewsource": "Zdrojowi tekst",
        "actions": "Dzéjania",
        "namespaces": "Rum mionów:",
        "variants": "Wariantë",
        "allowemail": "Włączë mòżlewòtã sélaniô e-mailów òd jinëch brëkòwników",
        "prefs-searchoptions": "Òptacëje szëkbë",
        "prefs-namespaces": "Rum mionów",
-       "defaultns": "Abò szëkôj w nôslédny rëmnoce mionów:",
        "default": "domëszlné",
        "prefs-files": "Lopczi",
        "prefs-custom-css": "swój CSS",
        "prefs-emailconfirm-label": "Pòcwierdzenié e-mailowi adresë:",
        "youremail": "E-mail:",
        "username": "Miono brëkòwnika:",
-       "uid": "ID brëkòwnika:",
        "prefs-memberingroups": "Nôlëżnik {{PLURAL:$1|karna|karnów}}",
        "prefs-registration": "Czas registracëji:",
        "yourrealname": "Miono ë nôzwëskò:",
        "log": "Lodżi",
        "alllogstext": "Sparłãczoné registrë wszëtczich ôrtów dzejaniô dlô {{SITENAME}}.\nMòżesz zawãżëc wëszłosc przez wëbranié ôrtu registru, miona brëkòwnika abò miona zajimny dlô ce starnë.",
        "allpages": "Wszëtczé starnë",
-       "alphaindexline": "$1 --> $2",
        "nextpage": "Nôslédnô starna ($1)",
        "prevpage": "Wczasniészô starna ($1)",
        "allpagesfrom": "Wëskrzëni starnë naczënające sã na:",
index 1e14892..c80e34b 100644 (file)
        "qbmyoptions": "моꙗ страницѧ",
        "faq": "чѧстꙑ въпроси",
        "faqpage": "Project:Чѧстꙑ въпроси",
-       "vector-action-addsection": "новꙑ бєсѣдꙑ чѧсти сътворѥниѥ",
-       "vector-action-delete": "поничьжєниѥ",
-       "vector-action-move": "прѣимєнованиѥ",
-       "vector-action-protect": "ꙁабранѥниѥ",
-       "vector-action-unprotect": "иꙁмѣни ꙁабранѥниꙗ обраꙁъ",
-       "vector-view-create": "сътворѥниѥ",
-       "vector-view-edit": "исправи",
-       "vector-view-history": "їсторїꙗ",
-       "vector-view-view": "чьтѥниѥ",
-       "vector-view-viewsource": "страницѧ источьнъ обраꙁъ",
        "actions": "дѣиства",
-       "vector-more-actions": "вѧщє",
        "namespaces": "имєнъ просторꙑ",
        "errorpagetitle": "блаꙁна",
        "tagline": "{{grammar:genitive|{{SITENAME}}}} страница",
index b932619..9c6f083 100644 (file)
        "qbmyoptions": "Сирĕн ĕнĕрлевсем",
        "faq": "ЫйХу",
        "faqpage": "Project:ЫйХу",
-       "vector-action-addsection": "Тема хуш",
-       "vector-action-delete": "Кăларса пăрах",
-       "vector-action-move": "Ятне улăштар",
-       "vector-action-protect": "Хӳтĕле",
-       "vector-view-create": "Çĕннине ту",
-       "vector-view-edit": "Тӳрлет",
-       "vector-view-history": "Кун-çул",
-       "vector-view-view": "Вула",
-       "vector-view-viewsource": "пуçламăш текста пăх",
        "errorpagetitle": "Йăнăш",
        "returnto": "$1 страницăна таврăн.",
        "tagline": "{{GRAMMAR:genitive|{{SITENAME}}}}ри материал",
        "prefs-files": "Файлсем",
        "youremail": "Электронлă почта:",
        "username": "Хутшăнакан ячĕ:",
-       "uid": "Хутшăнакан идентификаторĕ:",
        "yourrealname": "Сирĕн чăн ят (*)",
        "yourlanguage": "Интерфейс чĕлхи:",
        "yourvariant": "Чĕлхе варианчĕ",
        "log": "Журналсем",
        "all-logs-page": "Журналсем",
        "allpages": "Пěтěм страницăсем",
-       "alphaindexline": "$1-$2",
        "nextpage": "Тепěр страницă ($1)",
        "prevpage": "Малтанхи страница ($1)",
        "allarticles": "Пĕтĕм статьясем",
index 0767119..e66b267 100644 (file)
        "createacct-another-realname-tip": "Gallwch ddewis roi eich enw go iawn.\nOs y gwnewch, fe gaiff yr enw go iawn ei defnyddio wrth dadogi'ch gwaith.",
        "pt-login": "Mewngofnodi",
        "pt-login-button": "Mewngofnoder",
-       "pt-createaccount": "Creu cyfri",
+       "pt-createaccount": "Crëwch gyfrif",
        "pt-userlogout": "Allgofnodi",
        "php-mail-error-unknown": "Gwall anhysbys yng ngweithrediad post() PHP",
        "user-mail-no-addy": "Wedi ceisio anfon e-bost heb gyfeiriad e-bost",
        "searchall": "oll",
        "showingresults": "Yn dangos $1 {{PLURAL:$1|canlyniad|canlyniad|ganlyniad|chanlyniad|chanlyniad|canlyniad}} isod gan ddechrau gyda rhif '''$2'''.",
        "showingresultsinrange": "Yn dangos hyd at {{PLURAL:$1||<strong>1</strong> canlyniad|<strong>$1</strong> ganlyniad|$1 o ganlyniadau}} isod yn yr ystod #<strong>$2</strong> i #<strong>$3</strong>.",
-       "showingresultsnum": "Yn dangos $3 {{PLURAL:$3|canlyniad|canlyniad|ganlyniad|chanlyniad|chanlyniad|canlyniad}} isod gan ddechrau gyda rhif '''$2'''.",
        "showingresultsheader": "{{PLURAL:$5||Canlyniad '''$1''' o blith '''$3'''|Canlyniadau '''$1 - $2''' o blith '''$3'''|Canlyniadau '''$1 - $2''' o blith '''$3'''|Canlyniadau '''$1 - $2''' o blith '''$3'''|Canlyniadau '''$1 - $2''' o blith '''$3'''}} ar gyfer '''$4'''",
        "search-nonefound": "Ni chafwyd dim canlyniadau i'r ymholiad.",
        "powersearch-legend": "Chwiliad uwch",
        "duplicate-defaultsort": "Rhybudd: Mae'r allwedd trefnu diofyn \"$2\" yn gwrthwneud yr allwedd trefnu diofyn blaenorol \"$1\".",
        "version": "Fersiwn",
        "version-extensions": "Estyniadau gosodedig",
+       "version-skins": "Gweddau",
        "version-specialpages": "Tudalennau arbennig",
        "version-parserhooks": "Bachau dosrannydd",
        "version-variables": "Newidynnau",
        "version-antispam": "Atal sbam",
-       "version-skins": "Gweddau",
        "version-other": "Arall",
        "version-mediahandlers": "Trinyddion cyfryngau",
        "version-hooks": "Bachau",
index 0b54dc1..797b8b6 100644 (file)
        "searchrelated": "relateret",
        "searchall": "alle",
        "showingresults": "Nedenfor vises <b>$1</b> {{PLURAL:$1|resultat|resultater}} startende med nummer <b>$2</b>.",
-       "showingresultsnum": "Herunder vises <b>$3</b> {{PLURAL:$3|resultat|resultater}} startende med nummer <b>$2</b>.",
        "showingresultsheader": "{{PLURAL:$5|Resultat '''$1''' af '''$3'''|Resultat '''$1 - $2''' af '''$3'''}} for '''$4'''",
        "search-nonefound": "Søgningen gav ingen resultater.",
        "powersearch-legend": "Avanceret søgning",
        "right-move": "Flytte sider",
        "right-move-subpages": "Flytte sider og undersider",
        "right-move-rootuserpages": "Flytte hovedbrugersider",
+       "right-move-categorypages": "Flytte kategorisider",
        "right-movefile": "Flytte filer",
        "right-suppressredirect": "Flytte sider uden at oprette en omdirigering fra det gamle navn",
        "right-upload": "Lægge filer op",
        "action-move": "flytte denne side",
        "action-move-subpages": "flytte denne side og dens undersider",
        "action-move-rootuserpages": "flytte hovedbrugersider",
+       "action-move-categorypages": "flytte kategorisider",
        "action-movefile": "flytte denne fil",
        "action-upload": "lægge denne fil op",
        "action-reupload": "overskrive den nuværende fil",
        "duplicate-defaultsort": "Advarsel: Standardsorteringsnøglen \"$2\" tilsidesætter den tidligere sorteringsnøgle \"$1\".",
        "version": "Information om MediaWiki",
        "version-extensions": "Installerede udvidelser",
+       "version-skins": "Udseender",
        "version-specialpages": "Specialsider",
        "version-parserhooks": "Parserfunktioner",
        "version-variables": "Variabler",
        "version-antispam": "Spamforebyggelse",
-       "version-skins": "Udseender",
        "version-other": "Andet",
        "version-mediahandlers": "Specialhåndtering af mediefiler",
        "version-hooks": "Funktionstilføjelser",
index b5c23a7..b2bf75f 100644 (file)
        "searchall": "alle",
        "showingresults": "Hier {{PLURAL:$1|ist '''1''' Ergebnis|sind '''$1''' Ergebnisse}}, beginnend mit Nummer '''$2.'''",
        "showingresultsinrange": "Unten {{PLURAL:$1|wird <strong>ein</strong> Ergebnis|werden bis zu <strong>$1</strong> Ergebnisse}} im Bereich <strong>$2</strong> bis <strong>$3</strong> angezeigt.",
-       "showingresultsnum": "Hier {{PLURAL:$3|ist '''1''' Ergebnis|sind '''$3''' Ergebnisse}}, beginnend mit Nummer '''$2.'''",
        "showingresultsheader": "{{PLURAL:$5|Ergebnis '''$1''' von '''$3'''|Ergebnisse '''$1–$2''' von '''$3'''}} für '''$4'''",
        "search-nonefound": "Zu deiner Suchanfrage wurden keine Ergebnisse gefunden.",
        "powersearch-legend": "Erweiterte Suche",
        "license-nopreview": "(es ist keine Vorschau verfügbar)",
        "upload_source_url": " (gültige, öffentlich zugängliche URL)",
        "upload_source_file": " (eine Datei auf deinem Computer)",
+       "listfiles-delete": "löschen",
        "listfiles-summary": "Diese Spezialseite listet alle hochgeladenen Dateien auf.",
        "listfiles_search_for": "Suche nach Datei:",
        "imgfile": "Datei",
        "duplicate-defaultsort": "Achtung: Der Sortierungsschlüssel „$2“ überschreibt den vorher verwendeten Schlüssel „$1“.",
        "version": "Version",
        "version-extensions": "Installierte Erweiterungen",
+       "version-skins": "Installierte Benutzeroberflächen",
        "version-specialpages": "Erweiterungen mit Spezialseiten",
        "version-parserhooks": "Parsererweiterungen",
        "version-variables": "Erweiterungen mit Variablen",
        "version-antispam": "Spamschutzerweiterungen",
-       "version-skins": "Benutzeroberflächen",
        "version-api": "API-Erweiterungen",
        "version-other": "Sonstige Erweiterungen",
        "version-mediahandlers": "Mediennutzungserweiterungen",
        "version-license": "MediaWiki-Lizenz",
        "version-ext-license": "Lizenz",
        "version-ext-colheader-name": "Bezeichnung",
+       "version-skin-colheader-name": "Benutzeroberfläche",
        "version-ext-colheader-version": "Version",
        "version-ext-colheader-license": "Lizenz",
        "version-ext-colheader-description": "Beschreibung",
        "expand_templates_remove_nowiki": "<nowiki>-Tags in der Ausgabe unterdrücken",
        "expand_templates_generate_xml": "XML-Parser-Baum zeigen",
        "expand_templates_generate_rawhtml": "Rohes HTML anzeigen",
-       "expand_templates_preview": "Vorschau"
+       "expand_templates_preview": "Vorschau",
+       "pagelanguage": "Seitensprachenauswahl",
+       "pagelang-name": "Seite",
+       "pagelang-language": "Sprache",
+       "pagelang-use-default": "Standardsprache verwenden",
+       "pagelang-select-lang": "Sprache auswählen",
+       "right-pagelang": "Seitensprache ändern",
+       "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."
 }
index fdd8b3d..4250606 100644 (file)
        "personaltools": "Hacetê şexsiy",
        "postcomment": "Qısımo newe",
        "articlepage": "Pela zerreki bıvêne",
-       "talk": "Vatenkerdış",
+       "talk": "Werênayış",
        "views": "Asayışi",
        "toolbox": "Haceti",
        "userpage": "Pela karberi bıvêne",
        "searchall": "pêro",
        "showingresults": "#<strong>$2</strong> netican ra {{PLURAL:$1|<strong>1</strong> netice cêr dero|<strong>$1</strong> neticey cêr derê}}.",
        "showingresultsinrange": "{{PLURAL:$1|<strong>1</strong> netice|<strong>$1</strong> neticey}} be mabeynê #<strong>$2</strong> ra be #<strong>$3</strong> cêr asenê.",
-       "showingresultsnum": "#<strong>$2</strong> netican ra {{PLURAL:$3|<strong>1</strong> netice cêr dero|<strong>$3</strong> neticey cêr derê}}.",
        "showingresultsheader": "{{PLURAL:$5|Neticeyê '''$1''' of '''$3'''|Neticeyanê '''$1 - $2''' hetê '''$3'''}} qe '''$4'''",
        "search-nonefound": "Zey perskerdışê şıma netice nêvêniya.",
        "powersearch-legend": "Cıgeyrayışo hera",
        "created": "viraziya",
        "changed": "vurneya",
        "deletepage": "Pele bestere",
-       "confirm": "Testiq ke",
+       "confirm": "Tesdiq ke",
        "excontent": "Zerreko verén: '$1'",
        "excontentauthor": "Zerrey cı: '$1' no/na ('[[Special:Contributions/$2|$2]]'  teyna iştıraq kerdo)",
        "exbeforeblank": "behsê verê esteriyayişi: '$1'",
        "duplicate-defaultsort": "'''Tembe:''' Hesıbyaye sırmey ratnayış de \"$2\" sırmey ratnayış de \"$1\"i nêhesıbneno.",
        "version": "Versiyon",
        "version-extensions": "Ekstensiyonî ke ronaye",
+       "version-skins": "Cıldi",
        "version-specialpages": "Pelanê xasiyan",
        "version-parserhooks": "Çengelê Parserî",
        "version-variables": "Vurnayeyî",
        "version-antispam": "Spam vındarnayış",
-       "version-skins": "Cıldi",
        "version-api": "API",
        "version-other": "Bin",
        "version-mediahandlers": "Kulbê medyayî",
index c77eb82..c34e9b3 100644 (file)
        "searchall": "wše",
        "showingresults": "How {{PLURAL:|jo '''1''' wuslědk|stej '''$1''' wuslědka|su '''$1''' wuslědki}} wót cysła '''$2'''.",
        "showingresultsinrange": "Dołojce pokazujo se do {{PLURAL:$1|<strong>1</strong> wuslědka|<strong>$1</strong> wuslědkowu|<strong>$1</strong> wuslědkow}} we wobłuku <strong>$2</strong> až do <strong>$3</strong>.",
-       "showingresultsnum": "How {{PLURAL:$3|jo '''1''' wuslědk|stej '''$3''' wuslědka|su '''$3''' wuslědki}} wót cysła '''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Wuslědk '''$1''' z '''$3'''|Wuslědki '''$1 - $2''' z '''$3'''}} za '''$4'''",
        "search-nonefound": "Njejsu se wuslědki namakali, kótarež wótpowěduju napšašowanjeju.",
        "powersearch-legend": "Rozšyrjone pytanje",
index 969741c..1db8670 100644 (file)
        "qbmyoptions": "Bobolikonku ngawi",
        "faq": "Ponguhatan Koinsoruan om Poninimbar",
        "faqpage": "Project:Ponguhatan Koinsoruan om Pininimbar",
-       "vector-action-addsection": "Ruhangai piboboroson",
-       "vector-action-delete": "Pugaso",
-       "vector-action-move": "Poundoliho",
-       "vector-action-protect": "Tingoligai",
-       "vector-action-undelete": "Kada pugaso",
-       "vector-action-unprotect": "Alanai tingolig",
-       "vector-view-create": "Pomonsoi",
-       "vector-view-edit": "Idito",
-       "vector-view-history": "Intaai susuyan",
-       "vector-view-view": "Basao",
-       "vector-view-viewsource": "Intaai wowonod",
        "actions": "Pongkinaraja",
        "namespaces": "Ponuratan ngaran",
        "variants": "Kopogisuaian",
        "searchmenu-exists": "'''Haro no bolikon pinungaranan do \"[[:$1]]\" hiti id wiki.'''",
        "searchmenu-new": "'''Pomonsoi do bolikon \"[[:$1]]\"hiti id wiki!'''",
        "searchprofile-articles": "Suang bobolikon",
-       "searchprofile-project": "Tatabang om Tongobolikon purujik",
        "searchprofile-images": "Multimodia",
        "searchprofile-everything": "Nunu nopo",
        "searchprofile-advanced": "Poinsogulu",
        "searchprofile-articles-tooltip": "Ihumo id $1",
-       "searchprofile-project-tooltip": "Ihumo id $1",
        "searchprofile-images-tooltip": "Ihumo montok tongopail",
        "searchprofile-everything-tooltip": "Ihumo oinsanan suang (kohompit bobolikon bolotok)",
        "searchprofile-advanced-tooltip": "Pogihum momoguno pinotomod ngaran",
        "search-interwiki-default": "Kootuson $1:",
        "search-interwiki-more": "(lobi)",
        "search-relatedarticle": "Kompinaian",
-       "searcheverything-enable": "Pogihum momoguno oinsanan ngaran:",
        "searchrelated": "kompinaian",
        "searchall": "oinsanan",
        "showingresultsheader": "{{PLURAL:$5|Kootuson '''$1''' of '''$3'''|Tongkootuson '''$1 - $2''' of '''$3'''}} montok '''$4'''",
        "specialloguserlabel": "Momoguno:",
        "log": "Tongolog",
        "allpages": "Oinsanan bolikon",
-       "alphaindexline": "$1 gisom $2",
        "nextpage": "Bolikon sumuhut ($1)",
        "prevpage": "Bolikon nakatalib $1",
        "allpagesfrom": "Pokitono bobolikon tinimpuun do:",
index 62d3ea5..ca2cfa4 100644 (file)
        "qbmyoptions": "މަގޭ ސަފްހާ ތައް",
        "faq": "އެފް.އޭ.ކިއު",
        "faqpage": "Project:އެފް.އޭ.ކިއު",
-       "vector-action-addsection": "ޚިޔާލެއް އިތުރުކުރައްވާ",
-       "vector-action-delete": "ފޮހެލައްވާ",
-       "vector-action-move": "ތަން ބަދަލުކުރައްވާ",
-       "vector-action-protect": "ދިފާޢުކުރައްވާ",
-       "vector-action-unprotect": "ދިފާޢުކުރުން ބަދަލުކުރައްވާ",
-       "vector-view-create": "ފަށްޓަވާ",
-       "vector-view-edit": "އުނިއިތުރު ގެންނަވާ",
-       "vector-view-history": "ޞަފްޙާގެ ތާރީޚް",
-       "vector-view-view": "ކިޔުއްވާ",
-       "vector-view-viewsource": "މަސްދަރު ބައްލަވާ",
        "actions": "ޢަމަލުތައް",
        "namespaces": "ނަންސްޕޭސަސް",
        "errorpagetitle": "ކުށް",
        "viewprevnext": "ބައްލަވާ($1 {{int:pipe-separator}} $2) ($3).",
        "searchmenu-new": "''' މި ވިކީގައި \"[[:$1]]\" ފަށްޓަވައިދެއްވާ! '''",
        "searchprofile-articles": "މަޒުމޫނު ޞަފްޙާތައް",
-       "searchprofile-project": "އެހީ ޞަފްޙާތަކާއި މަޝްރޫޢު ޞަފްޙާތައް",
        "searchprofile-images": "މަލްޓިމީޑިއާ",
        "searchprofile-everything": "ހުރިހާ",
        "searchprofile-advanced": "ފުންކޮށް",
        "searchprofile-articles-tooltip": "ހޯދާނީ $1އިން",
-       "searchprofile-project-tooltip": "ހޯދާނީ $1އިން",
        "searchprofile-images-tooltip": "ފައިލުތައް ހޯއްދަވާ",
        "searchprofile-everything-tooltip": "ހޯއްވާނީ ހުރިހާ އެއްޗެއް (ޚިޔާލު ޞަފްޙާތަކާއި އެކު)",
        "search-result-size": "$1 ({{PLURAL:$2|1 ބަސް|$2 ބަސްތައް}})",
        "booksources": "ފޮތްތަކުގެ މަސްދަރުތައް",
        "booksources-go": "ދުރުވޭ",
        "allpages": "ހުރިހާ ޞަފްޙާތައް",
-       "alphaindexline": "$1 އިން $2",
        "nextpage": "ކުރިއަށް ($1)",
        "prevpage": "ފަހަތަށް ($1)",
        "allarticles": "ހުރިހާ މަޒުމޫނުތައް",
        "watch": "ނަޒަރުބަހައްޓަވާ",
        "watchthispage": "މި ޞަފްޙާއަށް ނަޒަރުބަހައްޓަވާ",
        "unwatch": "ހާއްސަ ނަޒަރުން އުނިކުރޭ",
-       "watchlistcontains": "ތިޔަބޭފުޅާގެ ހާއްސަ ނަޒަރު ފިހުރިސްތުގައި ވަނީ $1 ޞަފްޙާއެވެ.",
        "changed": "ބަދަލުކުރެވިއްޖެ",
        "deletepage": "ޞަފްޙާ ފޮހެލައްވާ",
        "confirm": "ޔަގީން",
        "pageinfo-toolboxlink": "ސަފްޙާ އާއި ބެހޭ މައުލޫމާތު",
        "previousdiff": "→ ކުރީގެ ނުސްހާ",
        "nextdiff": "ފަހުގެ ނުސްހާ ←",
-       "showhidebots": "($1 ބޮޓްސް)",
        "ilsubmit": "ހޯއްދަވާ",
        "metadata": "މެޓަޑޭޓާ",
        "exif-imagewidth": "ފުޅާމިން",
index 286f720..4f6e294 100644 (file)
        "searchall": "tót",
        "showingresults": "Ed sègvit {{PLURAL:$1|a vîn preşentê al mâsim <strong>1</strong> rişultêt| a vînen preşentê al mâsim <strong>$1</strong> rişultêt}} a partîr dal nómer #<strong>$2</strong>.",
        "showingresultsinrange": "{{PLURAL:$1|A vîn mustrê| a vînen mustrê}} sòta {{PLURAL:$1|<strong>1</strong> rişultêt|<strong>$1</strong> rişultêt}} dal #<strong>$2</strong> al #<strong>$3</strong>.",
-       "showingresultsnum": "Ed sègvit {{PLURAL:$1|a vîn preşentê <strong>1</strong> rişultêt| a vînen preşentê  <strong>$3</strong> rişultêt}} a partîr dal nómer #<strong>$2</strong>.",
        "showingresultsheader": "{{PLURAL:$5|Al risultêt '''$1''' ed '''$3'''|I risultêt '''$1 - $2''' ed '''$3'''}} per '''$4'''",
        "search-nonefound": "La sērca an n'à mìa dê di rişultê.",
        "powersearch-legend": "Sèirca specêla",
index 4520b3b..c7bd536 100644 (file)
@@ -37,7 +37,8 @@
                        "לערי ריינהארט",
                        "Kolega2357",
                        "아라",
-                       "Calak"
+                       "Calak",
+                       "Auslaender"
                ]
        },
        "tog-underline": "Υπογράμμιση συνδέσμων:",
        "permalink": "Σταθερός σύνδεσμος",
        "print": "Εκτύπωση",
        "view": "Προβολή",
+       "view-foreign": "Δείτε στο $1",
        "edit": "Επεξεργασία",
        "create": "Δημιουργία",
+       "create-local": "Προσθέστε τοπική περιγραφή",
        "editthispage": "Επεξεργασία αυτής της σελίδας",
        "create-this-page": "Δημιουργία αυτής της σελίδας",
        "delete": "Διαγραφή",
        "searchrelated": "σχετικά",
        "searchall": "όλα",
        "showingresults": "Δείτε παρακάτω μέχρι τα {{PLURAL:$1|'''1'''αποτέλεσμα|'''$1''' αποτελέσματα}} ξεκινώντας με #'''$2'''.",
-       "showingresultsnum": "Εμφάνιση {{PLURAL:$3|'''1''' αποτελέσματος|'''$3''' αποτελεσμάτων}} αρχίζοντας με #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Αποτέλεσμα '''$1''' από '''$3'''|Αποτελέσματα '''$1 - $2''' από '''$3'''}} για '''$4'''",
        "search-nonefound": "Δεν υπάρχουν αποτελέσματα που να ικανοποιούν το ερώτημα.",
        "powersearch-legend": "Αναλυτική αναζήτηση",
        "recentchanges-label-unpatrolled": "Αυτή η επεξεργασία δεν έχει ελεγχθεί ακόμα",
        "recentchanges-label-plusminus": "Μεταβολή του μεγέθους της σελίδας σε bytes",
        "recentchanges-legend-heading": "'''Υπόμνημα:'''",
-       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (δείÏ\84ε [[Special:NewPages|Î\9dέεÏ\82 Ï\83ελίδεÏ\82]])",
+       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (δείÏ\84ε [[Special:NewPages|καÏ\84άλογοÏ\82 Î½Î­Ï\89ν Ï\83ελίδÏ\89ν]])",
        "rcnotefrom": "Παρακάτω είναι οι αλλαγές από τις <strong>$2</strong>  (εμφανίζονται μέχρι <strong>$1</strong> ).",
        "rclistfrom": "Εμφάνιση νέων αλλαγών αρχίζοντας από $3 $2",
        "rcshowhideminor": "$1 μικροεπεξεργασιών",
        "watchlistedit-raw-done": "Η λίστα παρακολούθησής σας ενημερώθηκε.",
        "watchlistedit-raw-added": "{{PLURAL:$1|1 σελίδα|$1 σελίδες}} προστέθηκαν:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1 σελίδα|$1 σελίδες}} αφαιρέθηκαν:",
+       "watchlistedit-clear-titles": "Τίτλοι:",
+       "watchlistedit-clear-submit": "Καθαρίστε τη λίστα παρακολούθησης (αυτό είναι μόνιμο!)",
+       "watchlistedit-too-many": "Υπάρχουν υπερβολικά πολλές σελίδες και δεν μπορούν να εμφανιστούν εδώ.",
        "watchlisttools-view": "Προβολή σχετικών αλλαγών",
        "watchlisttools-edit": "Προβολή και επεξεργασία λίστας παρακολούθησης",
        "watchlisttools-raw": "Επεξεργασία πρωτογενούς λίστας παρακολούθησης",
        "duplicate-defaultsort": "'''Προειδοποίηση:''' Το προεπιλεγμένο κλειδί ταξινόμησης «$2» υπερισχύει του προηγούμενου προεπιλεγμένου κλειδιού «$1».",
        "version": "Έκδοση",
        "version-extensions": "Εγκαταστημένες επεκτάσεις",
+       "version-skins": "Προσόψεις",
        "version-specialpages": "Ειδικές σελίδες",
        "version-parserhooks": "Άγκιστρα του συντακτικού αναλυτή",
        "version-variables": "Παράμετροι",
        "version-antispam": "Πρόληψη spam",
-       "version-skins": "Προσόψεις",
        "version-other": "Άλλα",
        "version-mediahandlers": "Χειριστές των μέσων",
        "version-hooks": "Άγκιστρα",
        "version-hook-name": "Όνομα άγκιστρου",
        "version-hook-subscribedby": "Υπογεγραμμένο από",
        "version-version": "(Έκδοση $1)",
+       "version-no-ext-name": "[χωρίς όνομα]",
        "version-license": "Άδεια MediaWiki",
        "version-ext-license": "Άδεια χρήσης",
        "version-ext-colheader-name": "Επέκταση",
        "htmlform-no": "Όχι",
        "htmlform-yes": "Ναι",
        "htmlform-chosen-placeholder": "Κάντε μια επιλογή",
+       "htmlform-cloner-create": "Προσθήκη περισσοτέρων",
+       "htmlform-cloner-delete": "Αφαίρεση",
+       "htmlform-cloner-required": "Απαιτείται τουλάχιστον μία τιμή.",
        "sqlite-has-fts": "$1 με υποστήριξη αναζήτησης πλήρους κειμένου",
        "sqlite-no-fts": "$1 χωρίς την υποστήριξη αναζήτησης πλήρους κειμένου",
        "logentry-delete-delete": "{{GENDER:$1|Ο|Η}} $1 διέγραψε τη σελίδα $3",
index a664f4d..ae1abfb 100644 (file)
        "talkpagelinktext": "Talk",
        "specialpage": "Special page",
        "personaltools": "Personal tools",
-       "postcomment": "New section",
        "addsection": "+",
        "articlepage": "View content page",
        "talk": "Discussion",
        "searchall": "all",
        "showingresults": "Showing below up to {{PLURAL:$1|<strong>1</strong> result|<strong>$1</strong> results}} starting with #<strong>$2</strong>.",
        "showingresultsinrange": "Showing below up to {{PLURAL:$1|<strong>1</strong> result|<strong>$1</strong> results}} in range #<strong>$2</strong> to #<strong>$3</strong>.",
-       "showingresultsnum": "Showing below {{PLURAL:$3|<strong>1</strong> result|<strong>$3</strong> results}} starting with #<strong>$2</strong>.",
        "showingresultsheader": "{{PLURAL:$5|Result <strong>$1</strong> of <strong>$3</strong>|Results <strong>$1 - $2</strong> of <strong>$3</strong>}} for <strong>$4</strong>",
        "search-nonefound": "There were no results matching the query.",
        "powersearch-legend": "Advanced search",
        "license-nopreview": "(Preview not available)",
        "upload_source_url": "(a valid, publicly accessible URL)",
        "upload_source_file": "(a file on your computer)",
+       "listfiles-delete": "delete",
        "listfiles-summary": "This special page shows all uploaded files.",
        "listfiles_search_for": "Search for media name:",
        "imgfile": "file",
        "version": "Version",
        "version-summary": "",
        "version-extensions": "Installed extensions",
+       "version-skins": "Installed skins",
        "version-specialpages": "Special pages",
        "version-parserhooks": "Parser hooks",
        "version-variables": "Variables",
        "version-antispam": "Spam prevention",
-       "version-skins": "Skins",
        "version-api": "API",
        "version-other": "Other",
        "version-mediahandlers": "Media handlers",
        "version-license": "MediaWiki License",
        "version-ext-license": "License",
        "version-ext-colheader-name": "Extension",
+       "version-skin-colheader-name": "Skin",
        "version-ext-colheader-version": "Version",
        "version-ext-colheader-license": "License",
        "version-ext-colheader-description": "Description",
        "expand_templates_remove_nowiki": "Suppress <nowiki> tags in result",
        "expand_templates_generate_xml": "Show XML parse tree",
        "expand_templates_generate_rawhtml": "Show raw HTML",
-       "expand_templates_preview": "Preview"
+       "expand_templates_preview": "Preview",
+       "pagelanguage": "Page language selector",
+       "pagelang-name": "Page",
+       "pagelang-language": "Language",
+       "pagelang-use-default": "Use default language",
+       "pagelang-select-lang": "Select language",
+       "right-pagelang": "Change page language",
+       "action-pagelang": "change the page language",
+       "log-name-pagelang": "Change language 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."
 }
index 5989982..45dc6b7 100644 (file)
        "edit-gone-missing": "Ne eblis ĝisdatigi la paĝon.\nVerŝajne ĝi estis forigita.",
        "edit-conflict": "Redakto-konflikto.",
        "edit-no-change": "Via redakto estis ignorita, ĉar neniu ŝanĝo estis farita al la teksto.",
+       "postedit-confirmation-created": "La paĝo estis kreita.",
+       "postedit-confirmation-restored": "La paĝo estis restarigita.",
        "postedit-confirmation-saved": "Via redakto estis konservita.",
        "edit-already-exists": "Ne eblis krei novan paĝon.\nĜi jam ekzistas.",
        "defaultmessagetext": "Defaŭlta teksto",
        "currentrev": "Aktuala versio",
        "currentrev-asof": "Nuna versio ekde $1",
        "revisionasof": "Kiel registrite je $1",
-       "revision-info": "Redakto de $1 de $2",
+       "revision-info": "Revizio de $1 fare de {{GENDER:$6|$2}}$7",
        "previousrevision": "← Antaŭa versio",
        "nextrevision": "Sekva versio →",
        "currentrevisionlink": "Rigardi nunan version",
        "searchall": "ĉiuj",
        "showingresults": "Montras {{PLURAL:$1|'''1''' trovitan|'''$1''' trovitajn}} ekde la #'''$2'''-a.",
        "showingresultsinrange": "Malsupre montriĝas {{PLURAL:$1|<strong>1</strong> rezulto|<strong>$1</strong> rezultoj}} en la intervalo #<strong>$2</strong> ĝis #<strong>$3</strong>.",
-       "showingresultsnum": "Montras {{PLURAL:$3|'''1''' trovitan|'''$3''' trovitajn}} ekde la #'''$2'''-a.",
        "showingresultsheader": "{{PLURAL:$5|Rezulto '''$1''' el '''$3'''|Rezultoj '''$1 – $2''' el '''$3'''}} por '''$4'''",
        "search-nonefound": "La serĉomendo rezultis kun neniuj trafoj.",
        "powersearch-legend": "Progresa serĉo",
        "largefileserver": "Ĉi tiu dosiero estas pli granda ol permesas la servilaj preferoj.",
        "emptyfile": "La dosiero kiun vi alŝutis ŝajnas malplena. Tio povas esti kaŭzita sde tajperaro en la titolo. Bonvolu kontroli ĉu vi vere volas alŝuti tiun dosieron.",
        "windows-nonascii-filename": "Ĉi tiu vikio ne subtenas dosiernomoj kun specialaj signoj.",
-       "fileexists": "Dosiero kun tia ĉi nomo jam ekzistas.\nBonvolu kontroli <strong>[[:$1]]</strong> krom se vi certas ke vi konscie volas ŝanĝi ĝuste tiun.\n[[$1|thumb]]",
+       "fileexists": "Dosiero kun tiu ĉi nomo jam ekzistas.\nBonvolu kontroli <strong>[[:$1]]</strong> krom se vi certas ke {{GENDER:|vi}} konscie volas ŝanĝi ĝuste tiun.\n[[$1|thumb]]",
        "filepageexists": "La priskriba paĝo por ĉi tiu dosiero jam estis kreita ĉe <strong>[[:$1]]</strong>, sed neniu dosiero kun ĉi tiu nomo nune ekzistas.\nLa resumo kiun vi entajpos ne aperos en la priskribo-paĝo.\nPor aperigi vian resumon, vi devos permane redakti ĝin.\n[[$1|thumb]]",
-       "fileexists-extension": "Dosiero kun simila nomo ekzistas: [[$2|thumb]]\n* Nomo de la alŝuta dosiero: <strong>[[:$1]]</strong>\n* Nomo de la ekzistanta dosiero: <strong>[[:$2]]</strong>\nBonvolu elekti malsaman nomon.",
+       "fileexists-extension": "Dosiero kun simila nomo ekzistas: [[$2|thumb]]\n* Nomo de la alŝutanta dosiero: <strong>[[:$1]]</strong>\n* Nomo de la ekzistanta dosiero: <strong>[[:$2]]</strong>\nBonvolu elekti malsaman nomon.",
        "fileexists-thumbnail-yes": "Ĉi tiu dosiero ŝajnas kiel bildo de malkreskigita grandeco ''(bildeto)''. [[$1|thumb]]\nBonvolu kontroli la dosieron <strong>[[:$1]]</strong>.\nSe la kontrolita dosiero estas la sama bildo kiel la originala grandeco, ĝi ne nepras alŝuti plian bideton.",
        "file-thumbnail-no": "La dosiernomo komencas kun <strong>$1</strong>.\nĜi ŝajnas kiel bildo de malgrandigita grandeco ''(thumbnail)''.\nSe vi havas ĉi tiun bildon en plena distingivo, alŝutu ĉi tiun, alikaze bonvolu ŝanĝi la dosieran nomon.",
        "fileexists-forbidden": "Dosiero kun ĉi tiu nomo jam ekzistas kaj ne povas anstataŭigi ĝin.\nSe vi ankoraŭ volas alŝuti vian dosieron, bonvolu reprovi kun nova nomo.\n[[File:$1|thumb|center|$1]]",
        "filedelete-maintenance": "Forigado kaj restarigado de dosieroj provizore malŝaltis dum funkciteno.",
        "filedelete-maintenance-title": "Ne povas forigi dosieron",
        "mimesearch": "MIME-serĉilo",
-       "mimesearch-summary": "Ĉi tiu paĝo ebligas la filtradon de dosieroj por ties MIME-tipo. Enigu: enhavo-tipo/subtipo, ekz. <code>image/jpeg</code>.",
+       "mimesearch-summary": "Ĉi tiu paĝo ebligas la filtradon de dosieroj por ties MIME-tipo. \nEnigu: enhavo-tipo/subtipo, aŭ enhavo-tipo/* - ekz. <code>image/jpeg</code>.",
        "mimetype": "MIME-tipo:",
        "download": "elŝuti",
        "unwatchedpages": "Neatentataj paĝoj",
        "doubleredirects": "Duoblaj alidirektadoj",
        "doubleredirectstext": "Ĉi tiu paĝo montras paĝojn kiuj alidirektas al aliaj alidirektiloj.\nĈiu vico enhavas ligilojn ĉe la unua kaj dua alidirektadoj, kaj la unua linio de la dua alidirektado, kiu ĝenerale montras la \"veran\" celpaĝon, kiu celu la unuan alidirektadon.\n<del>Forstrekitaj</del> listeroj estis riparitaj.",
        "double-redirect-fixed-move": "[[$1]] estis alinomigita. Ĝi estis ĝisdatigita kaj nun ĝi alidirektas al [[$2]].",
-       "double-redirect-fixed-maintenance": "Riparas duoblan alidirektilon de [[$1]] al [[$2]].",
+       "double-redirect-fixed-maintenance": "Aŭtomate riparas duoblan alidirektilon de [[$1]] al [[$2]] dum prizorga tasko.",
        "double-redirect-fixer": "Alidirektila riparilo",
        "brokenredirects": "Rompitaj alidirektadoj",
        "brokenredirectstext": "La jenaj alidirektadoj ligas al neekzistantaj paĝoj:",
        "listgrouprights-namespaceprotection-header": "Nomspacaj restriktoj",
        "listgrouprights-namespaceprotection-namespace": "Nomspaco",
        "listgrouprights-namespaceprotection-restrictedto": "Rajtoj, kiuj permesas al uzanto redakti",
+       "trackingcategories-name": "Nomo de mesaĝo",
        "trackingcategories-nodesc": "Neniu priskribo estas disponebla.",
        "trackingcategories-disabled": "Kategorio estas malaktivigita",
        "mailnologin": "Neniu alsendota adreso",
        "duplicate-defaultsort": "'''Averto:''' Defaŭlta ordiga ŝlosilo \"$2\" anstataŭigas pli fruan defaŭltan ordigan ŝlosilon \"$1\".",
        "version": "Versio",
        "version-extensions": "Instalitaj kromprogramoj",
+       "version-skins": "Instalitaj etosoj",
        "version-specialpages": "Specialaj paĝoj",
        "version-parserhooks": "Sintaksaj hokoj",
        "version-variables": "Variabloj",
        "version-antispam": "Kontraŭspamilo",
-       "version-skins": "Etosoj",
        "version-other": "Alia",
        "version-mediahandlers": "Mediaj traktiloj",
        "version-hooks": "Hokoj",
index 1bb9b51..fa41f55 100644 (file)
                        "Mcervera",
                        "Wifidel",
                        "Macofe",
-                       "Koavf"
+                       "Koavf",
+                       "Themasterriot"
                ]
        },
        "tog-underline": "Subrayar los enlaces:",
        "tog-prefershttps": "Utilizar una conexión segura siempre que haya iniciado una sesión",
        "underline-always": "Siempre",
        "underline-never": "Nunca",
-       "underline-default": "Aspecto (skin) o valor predeterminado del navegador",
+       "underline-default": "Tema o valor predeterminado del navegador",
        "editfont-style": "Estilo de tipografía del área de edición:",
        "editfont-default": "Predeterminado del navegador",
        "editfont-monospace": "Tipo de letra monoespaciado",
        "mergehistory-empty": "No hay revisiones fusionables.",
        "mergehistory-success": "$3 {{PLURAL:$3|revisión|revisiones}} de [[:$1]] fusionadas de forma exitosa en [[:$2]].",
        "mergehistory-fail": "No se puede realizar la fusión de historiales, por favor revisa la página y los parámetros de tiempo.",
+       "mergehistory-fail-toobig": "No se puede fusionar el historial ya que más del límite de $1 {{PLURAL:$1|revisión|revisiones}} se moverían.",
        "mergehistory-no-source": "La página origen $1 no existe.",
        "mergehistory-no-destination": "La página destino $1 no existe.",
        "mergehistory-invalid-source": "La página origen debe tener un título válido.",
        "searchall": "todos",
        "showingresults": "Abajo se {{PLURAL:$1|muestra '''1''' resultado|muestran hasta '''$1''' resultados}} comenzando por el n.º '''$2'''.",
        "showingresultsinrange": "Abajo se muestran hasta {{PLURAL:$1|<strong>1</strong> resultado|<strong>$1</strong> resultados}} en el rango #<strong>$2</strong> hasta #<strong>$3</strong>.",
-       "showingresultsnum": "Abajo se {{PLURAL:$3|muestra '''1''' resultado|muestran los '''$3''' resultados}} comenzando por el n.º '''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Resultado '''$1''' de '''$3'''|Resultados '''$1-$2''' de '''$3'''}} para '''$4'''",
        "search-nonefound": "No hay resultados que cumplan los criterios de búsqueda.",
        "powersearch-legend": "Búsqueda avanzada",
        "right-editprotected": "Editar páginas protegidas como «{{int:protect-level-sysop}}»",
        "right-editsemiprotected": "Editar páginas protegidas como «{{int:protect-level-autoconfirmed}}»",
        "right-editinterface": "Editar la interfaz de usuario",
-       "right-editusercssjs": "Editar las páginas de CSS y JS de otros usuarios",
+       "right-editusercssjs": "Editar las páginas de CSS y JavaScript de otros usuarios",
        "right-editusercss": "Editar las páginas de CSS de otros usuarios",
-       "right-edituserjs": "Editar las páginas de JS de otros usuarios",
+       "right-edituserjs": "Editar las páginas de JavaScript de otros usuarios",
        "right-editmyusercss": "Editar tus archivos de usuario CSS",
        "right-editmyuserjs": "Editar tus propios archivos JavaScript de usuario",
        "right-viewmywatchlist": "Ver tu lista de seguimiento",
        "recentchanges-summary": "Sigue los cambios más recientes de la wiki en esta página.",
        "recentchanges-noresult": "No hubo cambios durante el período seleccionado que respondan a esos criterios.",
        "recentchanges-feed-description": "Realiza un seguimiento de los cambios más recientes en el wiki en este canal.",
-       "recentchanges-label-newpage": "Esta edición inició una página",
+       "recentchanges-label-newpage": "Esta edición creó una página",
        "recentchanges-label-minor": "Esta es una edición menor",
        "recentchanges-label-bot": "Esta edición fue realizada por un robot",
        "recentchanges-label-unpatrolled": "Esta edición todavía no se ha patrullado",
        "nolicense": "Ninguna seleccionada",
        "license-nopreview": "(Previsualización no disponible)",
        "upload_source_url": " (una URL válida y accesible públicamente)",
-       "upload_source_file": " (un archivo en tu disco)",
+       "upload_source_file": "(un archivo en tu computadora)",
        "listfiles-summary": "Esta página especial muestra todos los archivos subidos.\nCuando el usuario la filtra, solo se muestran los archivos cargados por el usuario en su versión más reciente.",
        "listfiles_search_for": "Buscar por nombre de imagen:",
        "imgfile": "archivo",
        "patrol-log-header": "Este es un registro de revisiones patrulladas.",
        "log-show-hide-patrol": "$1 registro de patrullaje",
        "deletedrevision": "Borrada revisión antigua $1",
-       "filedeleteerror-short": "Se produjo un error al borrar el archivo: $1",
+       "filedeleteerror-short": "Error al borrar el archivo: $1",
        "filedeleteerror-long": "Se han producido errores mientras se borraba el archivo:\n\n$1",
        "filedelete-missing": "No se pudo borrar el archivo \"$1\" porque no existe.",
        "filedelete-old-unregistered": "La revisión de archivo \"$1\" no está en la base de datos.",
        "watchlistedit-clear-removed": "{{PLURAL:$1|un título fue removido|Los títulos $1 fueron removidos}}:",
        "watchlistedit-too-many": "Hay demasiadas páginas para mostrar aquí.",
        "watchlisttools-clear": "Limpiar la lista de seguimiento",
-       "watchlisttools-view": "Ver cambios",
+       "watchlisttools-view": "Ver cambios relevantes",
        "watchlisttools-edit": "Ver y editar tu lista de seguimiento",
        "watchlisttools-raw": "Editar lista de seguimiento en crudo",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|discusión]])",
        "duplicate-defaultsort": "'''Atención:''' La clave de ordenamiento predeterminada «$2» anula la clave de ordenamiento anterior «$1».",
        "version": "Versión",
        "version-extensions": "Extensiones instaladas",
+       "version-skins": "Temas instalados",
        "version-specialpages": "Páginas especiales",
        "version-parserhooks": "Extensiones del analizador sintáctico",
        "version-variables": "Variables",
        "version-antispam": "Prevención de spam",
-       "version-skins": "Apariencias",
        "version-other": "Otro",
        "version-mediahandlers": "Manejadores multimedia",
        "version-hooks": "Extensiones",
        "version-license": "Licencia de MediaWiki",
        "version-ext-license": "Licencia",
        "version-ext-colheader-name": "Extensión",
+       "version-skin-colheader-name": "Tema",
        "version-ext-colheader-version": "Versión",
        "version-ext-colheader-license": "Licencia",
        "version-ext-colheader-description": "Descripción",
        "api-error-filetype-banned": "Este tipo de archivo está prohibido.",
        "api-error-filetype-banned-type": "$1 {{PLURAL:$4|no es un tipo de archivo permitido|no son tipos de archivos permitidos}}. {{PLURAL:$3|El tipo de archivo permitido es|Los tipos de archivos permitidos son}} $2.",
        "api-error-filetype-missing": "El archivo no tiene extensión de archivo.",
-       "api-error-hookaborted": "La modificación que intentaste hacer fue cancelada por un gancho de extensión.",
+       "api-error-hookaborted": "La modificación que intentaste hacer fue cancelada por una extensión.",
        "api-error-http": "Error interno: No se puede conectar al servidor.",
        "api-error-illegal-filename": "El nombre de archivo no está permitido.",
        "api-error-internal-error": "Error interno: Algo salió mal al procesar tu subida en el wiki.",
        "expand_templates_remove_nowiki": "Suprimir <nowiki> etiquetas en resultado",
        "expand_templates_generate_xml": "Mostrar el árbol XML.",
        "expand_templates_generate_rawhtml": "Mostrar HTML en crudo",
-       "expand_templates_preview": "Previsualización"
+       "expand_templates_preview": "Previsualización",
+       "pagelanguage": "Selector de idioma de página",
+       "pagelang-name": "Página",
+       "pagelang-language": "Idioma",
+       "pagelang-use-default": "Utilizar el idioma predeterminado",
+       "pagelang-select-lang": "Seleccionar idioma",
+       "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-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."
 }
index 8a5745e..05c0e32 100644 (file)
        "searchall": "kõik",
        "showingresults": "Allpool näidatakse '''{{PLURAL:$1|ühte|$1}}''' tulemust alates '''$2'''. tulemusest.",
        "showingresultsinrange": "Allpool näidatakse {{PLURAL:$1|<strong>üht</strong>|<strong>$1</strong>}} tulemust vahemikus <strong>$2</strong>–<strong>$3</strong>.",
-       "showingresultsnum": "Allpool näitame {{PLURAL:$3|'''ühte''' tulemit|'''$3''' tulemit}} alates tulemist #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|'''$1''' '''$3'''-st vastest|Vasted '''$1–$2''' '''$3'''-st}} päringule '''$4'''",
        "search-nonefound": "Päringule ei leitud vasteid.",
        "powersearch-legend": "Täpsem otsing",
        "duplicate-defaultsort": "'''Hoiatus:''' Järjestamisvõti \"$2\" tühistab eespool oleva järjestamisvõtme \"$1\".",
        "version": "Versioon",
        "version-extensions": "Paigaldatud lisad",
+       "version-skins": "Paigaldatud kujundused",
        "version-specialpages": "Erileheküljed",
        "version-parserhooks": "Parserihaagid",
        "version-variables": "Muutujad",
        "version-antispam": "Rämpsposti tõkestus",
-       "version-skins": "Kujundused",
        "version-other": "Muu",
        "version-mediahandlers": "Meediatöötlejad",
        "version-hooks": "Haagid",
        "version-license": "MediaWiki litsents",
        "version-ext-license": "Litsents",
        "version-ext-colheader-name": "Lisa",
+       "version-skin-colheader-name": "Kujundus",
        "version-ext-colheader-version": "Versioon",
        "version-ext-colheader-license": "Litsents",
        "version-ext-colheader-description": "Kirjeldus",
        "expand_templates_remove_nowiki": "Ära näita tulemuses <nowiki>-silte",
        "expand_templates_generate_xml": "Näita XML-liigenduspuud",
        "expand_templates_generate_rawhtml": "Näita toor-HTMLi",
-       "expand_templates_preview": "Eelvaade"
+       "expand_templates_preview": "Eelvaade",
+       "pagelanguage": "Lehekülje keele valik",
+       "pagelang-name": "Lehekülg",
+       "pagelang-language": "Keel",
+       "pagelang-use-default": "Kasuta vaikekeelt",
+       "pagelang-select-lang": "Vali keel",
+       "right-pagelang": "Muuta lehekülje keelt",
+       "action-pagelang": "muuta lehekülje keelt",
+       "log-name-pagelang": "Keele muutmise logi",
+       "log-description-pagelang": "Siia on logitud lehekülgede keele muutmised.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|muutis}} lehekülje \"$3\" keelt: $4 → $5."
 }
index ee397f3..4f10d30 100644 (file)
        "november-date": "Azaroaren $1",
        "december-date": "Abenduaren $1",
        "pagecategories": "{{PLURAL:$1|Kategoria|Kategoriak}}",
-       "category_header": "\"$1\" kategoriako artikuluak",
+       "category_header": "«$1» kategoriako artikuluak",
        "subcategories": "Azpikategoriak",
        "category-media-header": "Media \"$1\" kategorian",
        "category-empty": "''Kategoria honek ez dauka artikulurik uneotan.''",
        "searchrelated": "erlazionatua",
        "searchall": "guztia",
        "showingresults": "Jarraian {{PLURAL:$1|emaitza '''1''' ikus daiteke|'''$1''' emaitza ikus daitezke}}, #'''$2'''.etik hasita.",
-       "showingresultsnum": "Hasieran #'''$2''' duten {{PLURAL:$3|emaitza '''1'''|'''$3''' emaitza}} erakusten dira jarraian.",
        "showingresultsheader": "{{PLURAL:$5|'''$1'''(e)tik '''$3''' emaitza|'''$1 - $2'''(e)tik '''$3''' emaitza}} '''$4'''(r)entzat",
        "search-nonefound": "Ez dago eskaerarekin bat egiten duten emaitzarik.",
        "powersearch-legend": "Bilaketa aurreratua",
        "duplicate-defaultsort": "Adi: Berezko \"$2\" antolatzeak aurreko berezko \"$1\" antolatzea gainditzen du.",
        "version": "Bertsioa",
        "version-extensions": "Instalatutako luzapenak",
+       "version-skins": "Itxurak",
        "version-specialpages": "Aparteko orrialdeak",
        "version-parserhooks": "Parser estentsioak",
        "version-variables": "Aldagaiak",
        "version-antispam": "Spam ekiditea",
-       "version-skins": "Itxurak",
        "version-other": "Bestelakoak",
        "version-mediahandlers": "Media gordailuak",
        "version-hooks": "Estentsioak",
index 46d5017..224adac 100644 (file)
        "qbmyoptions": "Las mis páhinas",
        "faq": "FAQ",
        "faqpage": "Project:FAQ",
-       "vector-action-addsection": "Añiil tema",
-       "vector-action-delete": "Esborral",
-       "vector-action-move": "Mual",
-       "vector-action-protect": "Protegel",
-       "vector-action-undelete": "Esborral",
-       "vector-action-unprotect": "Esprotegel",
-       "vector-view-create": "Crial",
-       "vector-view-edit": "Eital",
-       "vector-view-history": "Guipal estorial",
-       "vector-view-view": "Leyel",
-       "vector-view-viewsource": "Guipal cóigu",
        "actions": "Acionis",
        "namespaces": "Espáciu nombris",
        "variants": "Variantis",
        "searchprofile-everything": "Tó",
        "searchprofile-advanced": "Avançau",
        "searchprofile-articles-tooltip": "Landeal en $1",
-       "searchprofile-project-tooltip": "Landeal en $1",
        "searchprofile-images-tooltip": "Landeal archivus",
        "searchprofile-everything-tooltip": "Landeal tol conteniu (encruyendu carabas)",
        "search-result-size": "$1 ({{PLURAL:$2|1 letra|$2 letras}})",
        "searchrelated": "relacionau",
        "searchall": "tó",
        "showingresults": "Embahu se {{PLURAL:$1|muestra '''1''' resurtau qu'esmiença|muestran hata '''$1''' resurtaus qu'esmiençan}} pol #'''$2'''.",
-       "showingresultsnum": "Embahu se {{PLURAL:$3|muestra '''1''' resurtau qu'esmiença|muestran'''$3''' resurtaus qu'esmiençan}} pol #'''$2'''.",
        "powersearch-legend": "Landeu avançau",
        "powersearch-ns": "Landeal en espaciu e nombris:",
        "search-external": "Landeu estelnu",
        "allowemail": "Premitil que m´envíin emails otrus usuárius",
        "prefs-searchoptions": "Ocionis de landeu",
        "prefs-namespaces": "Espáciu nombris",
-       "defaultns": "Landeal nestus \"espacius de nombris\" pol defeutu:",
        "default": "defeutu",
        "prefs-files": "Archivus",
        "prefs-custom-css": "CSS pressonalizau",
        "prefs-custom-js": "JS pressonalizau",
        "youremail": "Email:",
        "username": "Nombri d'usuáriu:",
-       "uid": "ID d'usuáriu:",
        "prefs-memberingroups": "Miembru de {{PLURAL:$1|grupu|groupus}}:",
        "yourrealname": "Nombri verdaeru:",
        "yourlanguage": "Palra:",
        "logempty": "Nu desistin elementus con esas condicionis nel rustrihu.",
        "log-title-wildcard": "Landeal entítulus qu´esmiencin con esti testu",
        "allpages": "Tolas páhinas",
-       "alphaindexline": "$1 a $2",
        "nextpage": "Siguienti páhina ($1)",
        "prevpage": "Páhina anteriol ($1)",
        "allpagesfrom": "Muestral páhinas qu'esmiencin pol:",
        "tooltip-upload": "Prencipial a empuntal",
        "tooltip-rollback": "\"Reveltil\" esborra las eicionis hechas a esta página pol úrtimu usuáriu con un click",
        "tooltip-undo": "\"Esjadel\" revierti ésta eición i abri el mó eición en mó previsoreal.\nÉstu premiti añiil una radón al estorial.",
-       "monobook.js": "/* Antigu; gasta [[MediaWiki:common.js]] */",
        "anonymous": "{{PLURAL:$1|Ussuáriu anónimu|Ussuárius anónimus}} en {{SITENAME}}",
        "siteuser": "{{SITENAME}} usuáriu $1",
        "lastmodifiedatby": "Esta páhina se chambó pol úrtima vezi a las $2, el dia $1 pol $3.",
index 2815f28..77c1b16 100644 (file)
        "searchall": "همه",
        "showingresults": "نمایش حداکثر {{PLURAL:$1|'''۱''' نتیجه|'''$1''' نتیجه}} در پایین، آغاز از شماره '''$2'''.",
        "showingresultsinrange": "نمایش در پائین تا {{PLURAL:$1|<strong>1</strong> نتیجه|<strong>$1</strong> نتیجه}} in range #<strong>$2</strong> تا #<strong>$3</strong>.",
-       "showingresultsnum": "نمایش حداکثر '''$3''' {{PLURAL:$3|نتیجه|نتیجه}} در پایین، آغاز از شماره '''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|نتیجهٔ '''$1''' از '''$3'''|نتایج '''$1 تا $2''' از '''$3'''}} برای '''$4'''",
        "search-nonefound": "نتیجه‌ای منطبق با درخواست پیدا نشد.",
        "powersearch-legend": "جستجوی پیشرفته",
        "duplicate-defaultsort": "هشدار: ترتیب پیش‌فرض «$2» ترتیب پیش‌فرض قبلی «$1» را باطل می‌کند.",
        "version": "نسخه",
        "version-extensions": "افزونه‌های نصب‌شده",
+       "version-skins": "پوسته‌های نصب شده",
        "version-specialpages": "صفحه‌های ویژه",
        "version-parserhooks": "قلاب‌های تجزیه‌گر",
        "version-variables": "متغیرها",
        "version-antispam": "جلوگیری از هرزنامه",
-       "version-skins": "پوسته‌ها",
        "version-other": "غیره",
        "version-mediahandlers": "به‌دست‌گیرنده‌های رسانه‌ها",
        "version-hooks": "قلاب‌ها",
        "version-hook-name": "نام قلاب",
        "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-skin-colheader-name": "پوسته",
        "version-ext-colheader-version": "نسخه",
        "version-ext-colheader-license": "مجوز",
        "version-ext-colheader-description": "توصیفات",
        "expand_templates_remove_nowiki": "خنثی کردن تگ‌های <nowiki> در نتیجه",
        "expand_templates_generate_xml": "نمایش درخت تجزیهٔ XML",
        "expand_templates_generate_rawhtml": "نمایش اچ‌تی‌ام‌ال خام",
-       "expand_templates_preview": "پیش‌نمایش"
+       "expand_templates_preview": "پیش‌نمایش",
+       "pagelanguage": "صفحه انتخاب زبان",
+       "pagelang-name": "صفحه",
+       "pagelang-language": "زبان",
+       "pagelang-use-default": "استفاده از زبان پیش‌فرض",
+       "pagelang-select-lang": "انتخاب زبان",
+       "right-pagelang": "تغییر صفحهٔ زبان",
+       "action-pagelang": "تغییر زبان صفحه",
+       "log-name-pagelang": "تغییر سیاههٔ زبان",
+       "log-description-pagelang": "این سیاههٔ تغییرات صفحهٔ زبان‌ها است.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2| تغییریافت}} زبان صفحه برای  $3  از  $4  به  $5 ."
 }
index 91d72bc..d554fe6 100644 (file)
        "mergehistory-box": "Yhdistä kahden sivun muutoshistoria",
        "mergehistory-from": "Lähdesivu",
        "mergehistory-into": "Kohdesivu",
-       "mergehistory-list": "Liitettävissä olevat muutokset",
+       "mergehistory-list": "Sivuhistoria, joka voidaan yhdistää",
        "mergehistory-merge": "Seuraavat sivun [[:$1]] muutokset voidaan liittää sivun [[:$2]] muutoshistoriaan. Voit valita version, jota myöhempiä muutoksia ei liitetä. Selainlinkkien käyttäminen kadottaa tämän valinnan.",
        "mergehistory-go": "Etsi muutokset",
        "mergehistory-submit": "Yhdistä versiot",
        "mergehistory-empty": "Ei liitettäviä muutoksia.",
        "mergehistory-success": "{{PLURAL:$3|Yksi versio|$3 versiota}} sivusta [[:$1]] liitettiin sivuun [[:$2]].",
        "mergehistory-fail": "Muutoshistorian liittäminen epäonnistui. Tarkista määritellyt sivut ja versiot.",
+       "mergehistory-fail-toobig": "Sivuhistorian yhdistämistä ei voi tehdä, koska enemmän kuin sallittu määrä $1 {{PLURAL:$1|versio|versiota}} siirrettäisiin.",
        "mergehistory-no-source": "Lähdesivua $1 ei ole olemassa.",
        "mergehistory-no-destination": "Kohdesivua $1 ei ole olemassa.",
        "mergehistory-invalid-source": "Lähdesivulla pitää olla kelvollinen nimi.",
        "mergehistory-autocomment": "Yhdisti sivun [[:$1]] sivuun [[:$2]]",
        "mergehistory-comment": "Yhdisti sivun [[:$1]] sivuun [[:$2]]: $3",
        "mergehistory-same-destination": "Lähde- ja kohdesivut eivät voi olla samat",
-       "mergehistory-reason": "Syy",
+       "mergehistory-reason": "Syy:",
        "mergelog": "Yhdistämisloki",
        "pagemerge-logentry": "liitti sivun [[$1]] sivuun [[$2]] (muokkaukseen $3 asti)",
        "revertmerge": "Kumoa yhdistäminen",
        "searchall": "kaikki",
        "showingresults": "Alla on vain {{PLURAL:$1|<strong>1</strong> hakutulos|<strong>$1</strong> hakutulosta}} alkaen tuloksesta nro <strong>$2</strong>.",
        "showingresultsinrange": "Alla näytetään {{PLURAL:$1|<strong>1</strong> tulos|<strong>$1</strong> tulosta}} väliltä <strong>$2</strong> – <strong>$3</strong>.",
-       "showingresultsnum": "Alla on {{PLURAL:$3|<strong>1</strong> hakutulos|<strong>$3</strong> hakutulosta}} alkaen tuloksesta nro <strong>$2</strong>.",
        "showingresultsheader": "{{PLURAL:$5|Tulokset '''$1'''–'''$3'''|Tulokset '''$1'''–'''$2''' kaikkiaan '''$3''' osuman joukosta}} haulle '''$4'''",
        "search-nonefound": "Hakusi ei tuottanut tulosta.",
        "powersearch-legend": "Laajennettu haku",
        "windows-nonascii-filename": "Tämä wiki ei tue tiedostonimiä, joissa on erikoismerkkejä.",
        "fileexists": "Samanniminen tiedosto on jo olemassa.\nTarkasta tiedosto <strong>[[:$1]]</strong>, mikäli et ole varma, että haluat tehdä muutoksia tiedostoon.\n[[$1|thumb]]",
        "filepageexists": "Kuvaussivu <strong>[[:$1]]</strong> on ho olemassa, mutta vastaavaa tiedostoa ei ole olemassa.\nKirjoittamasi yhteenveto ei ilmesty kuvaussivulle,\nellet lisää sitä muokkaamalla sivua manuaalisesti.\n[[$1|thumb]]",
-       "fileexists-extension": "Tiedosto, jolla on samankaltainen nimi, on jo olemassa: [[$2|thumb]]\n* Tallennetun tiedoston nimi: <strong>[[:$1]]</strong>\n* Olemassa olevan tiedoston nimi: <strong>[[:$2]]</strong>\nValitse toinen tiedostonimi.",
+       "fileexists-extension": "Tiedosto, jolla on samankaltainen nimi, on jo olemassa: [[$2|thumb]]\n* Tallennettavana olevan tiedoston nimi: <strong>[[:$1]]</strong>\n* Olemassa olevan tiedoston nimi: <strong>[[:$2]]</strong>\nSinun kannattaa käyttää mieluummin tarkempaa nimeä.",
        "fileexists-thumbnail-yes": "Tiedosto näyttäisi olevan pienennetty kuva ''(pienoiskuva)''. [[$1|thumb]]\nTarkista tiedosto <strong>[[:$1]]</strong>.\nJos yllä oleva tiedosto on alkuperäisversio samasta kuvasta, ei sille tarvitse tallentaa pienoiskuvaa.",
        "file-thumbnail-no": "Tiedostonimi alkaa merkkijonolla <strong>$1</strong>. Tiedosto näyttäisi olevan pienennetty kuva.\nJos sinulla on tämän kuvan alkuperäinen versio, tallenna se. Muussa tapauksessa nimeä tiedosto uudelleen.",
        "fileexists-forbidden": "Samanniminen tiedosto on jo olemassa, eikä sen tilalle voi tallentaa uutta. \nJos kuitenkin haluat tallentaa tiedostosi, palaa takaisin ja käytä jotain toista nimeä. \n[[File:$1|thumb|center|$1]]",
        "filedelete-maintenance": "Tiedostojen poisto ja palautus on väliaikaisesti poistettu käytöstä huoltotoimien vuoksi.",
        "filedelete-maintenance-title": "Tiedostoa ei voi poistaa",
        "mimesearch": "MIME-haku",
-       "mimesearch-summary": "Tällä sivulla voit etsiä tiedostoja niiden MIME-tyypin perusteella.\nSyöte: sisältötyyppi/alatyyppi, esimerkiksi <code>image/jpeg</code>.",
+       "mimesearch-summary": "Tämä sivu antaa mahdollisuuden hakea tiedostoja niiden MIME-tyypin perusteella.\nSyöte: sisältötyyppi/alatyyppi tai sisältötyyppi/*, esim. <code>image/jpeg</code>.",
        "mimetype": "MIME-tyyppi:",
        "download": "lataa",
        "unwatchedpages": "Tarkkailemattomat sivut",
        "deletedcontributions-title": "Poistetut muokkaukset",
        "sp-deletedcontributions-contribs": "muokkaukset",
        "linksearch": "Etsi ulkoisia linkkejä",
-       "linksearch-pat": "Osoite",
-       "linksearch-ns": "Nimiavaruus",
+       "linksearch-pat": "Hakuehto:",
+       "linksearch-ns": "Nimiavaruus:",
        "linksearch-ok": "Etsi",
        "linksearch-text": "Jokerimerkkejä, kuten \"*.wikipedia.org\", voidaan käyttää.\nVaaditaan vähintään ylätason verkkotunnus, esimerkiksi \"*.org\".<br />\n{{PLURAL:$2|Tuettu protokolla|Tuetut protokollat}}: <code>$1</code> (oletuksena on <code>http://</code>, jos protokollaa ei määritetä).",
        "linksearch-line": "$1 on linkitetty sivulta $2",
        "undelete-error-long": "Tiedoston palauttaminen epäonnistui:\n\n$1",
        "undelete-show-file-confirm": "Haluatko varmasti nähdä poistetun version tiedostosta <nowiki>$1</nowiki>, joka on tallennettu $2 kello $3?",
        "undelete-show-file-submit": "Kyllä",
-       "namespace": "Nimiavaruus",
+       "namespace": "Nimiavaruus:",
        "invert": "Käänteinen valinta",
        "tooltip-invert": "Valitse tämä kohta, jos haluat piilottaa muutokset sivuihin valitussa nimiavaruudessa (ja liittyviin nimiavaruuksiin, jos valittu)",
-       "namespace_association": "Liitetty nimiavaruus",
-       "tooltip-namespace_association": "Valitse tämä kohta, jos haluat sisällyttää myös keskustelu- tai aihe-nimiavaruudet, jotka on liitetty valittuun nimiavaruuteen",
+       "namespace_association": "Liittyvä nimiavaruus",
+       "tooltip-namespace_association": "Valitse tämä kohta, jos haluat sisällyttää ne keskustelu- tai aihe-nimiavaruudet, jotka liittyvät valittuun nimiavaruuteen",
        "blanknamespace": "(sivut)",
        "contributions": "{{GENDER:$1|Käyttäjän}} muokkaukset",
        "contributions-title": "Käyttäjän $1 muokkaukset",
        "blockip-legend": "Estä käyttäjä",
        "blockiptext": "Tällä toiminnolla voit estää käyttäjätunnusta tai IP-osoitetta muokkaamasta.<br />\nTällainen muokkausesto pitäisi asettaa vain vandalismin torjumiseksi ja [[{{MediaWiki:Policy-url}}|käytännön]] mukaisesti.\nKirjoita eston syy alla olevaan kenttään.",
        "ipaddressorusername": "IP-osoite tai käyttäjätunnus",
-       "ipbexpiry": "Kesto",
-       "ipbreason": "Syy",
+       "ipbexpiry": "Vanhentuu:",
+       "ipbreason": "Syy:",
        "ipbreason-dropdown": "*Yleiset estosyyt\n** Väärän tiedon lisääminen\n** Sisällön poistaminen\n** Mainoslinkkien lisääminen\n** Sotkeminen tai roskan lisääminen\n** Häiriköinti\n** Useamman käyttäjätunnuksen väärinkäyttö\n** Sopimaton käyttäjätunnus",
        "ipb-hardblock": "Estä sisäänkirjautuneita käyttäjiä muokkaamasta tästä IP-osoitteesta",
        "ipbcreateaccount": "Estä tunnusten luonti",
        "allmessages-filter-unmodified": "Muuttamaton",
        "allmessages-filter-all": "Kaikki",
        "allmessages-filter-modified": "Muutettu",
-       "allmessages-prefix": "Suodata etuliitteellä",
+       "allmessages-prefix": "Suodata etuliitteellä:",
        "allmessages-language": "Kieli:",
        "allmessages-filter-submit": "Siirry",
        "allmessages-filter-translate": "Käännä",
        "siteuser": "{{GRAMMAR:genitive|{{SITENAME}}}} käyttäjä $1",
        "anonuser": "{{GRAMMAR:genitive|{{SITENAME}}}} anonyymi käyttäjä $1",
        "lastmodifiedatby": "Tätä sivua muokkasi viimeksi $3 $1 kello $2.",
-       "othercontribs": "Perustuu työlle, jonka teki $1.",
+       "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",
        "anonusers": "{{GRAMMAR:genitive|{{SITENAME}}}} {{PLURAL:$2|anonyymi käyttäjä|anonyymit käyttäjät}} $1",
        "pageinfo-display-title": "Sivun otsikko",
        "pageinfo-default-sort": "Oletuslajitteluavain",
        "pageinfo-length": "Sivun pituus (tavuina)",
-       "pageinfo-article-id": "Sivun tunniste",
+       "pageinfo-article-id": "Sivun tunnistenumero",
        "pageinfo-language": "Sivun sisällön kieli",
        "pageinfo-content-model": "Sivun sisällön muoto",
        "pageinfo-robot-policy": "Hakukonemerkinnät",
        "pageinfo-toolboxlink": "Sivun tiedot",
        "pageinfo-redirectsto": "Ohjaus sivulle",
        "pageinfo-redirectsto-info": "tiedot",
-       "pageinfo-contentpage": "Lasketaan sisältösivuksi",
+       "pageinfo-contentpage": "Kohdellaan sisältösivuna",
        "pageinfo-contentpage-yes": "Kyllä",
        "pageinfo-protect-cascading": "Tämä on tarttuvan suojauksen lähdesivu",
        "pageinfo-protect-cascading-yes": "Kyllä",
        "duplicate-defaultsort": "'''Varoitus:''' Oletuslajitteluavain ”$2” korvaa aiemman oletuslajitteluavaimen ”$1”.",
        "version": "Versio",
        "version-extensions": "Asennetut laajennukset",
+       "version-skins": "Asennetut ulkoasut",
        "version-specialpages": "Toimintosivut",
        "version-parserhooks": "Jäsenninkytkökset",
        "version-variables": "Muuttujat",
        "version-antispam": "Roskalinkkien estäminen",
-       "version-skins": "Ulkoasut",
        "version-other": "Muut",
        "version-mediahandlers": "Median käsittelijät",
        "version-hooks": "Kytköspisteet",
        "version-hook-name": "Kytköspisteen nimi",
        "version-hook-subscribedby": "Kytkökset",
        "version-version": "($1)",
+       "version-no-ext-name": "[ei nimeä]",
        "version-license": "MediaWikin lisenssi",
        "version-ext-license": "Lisenssi",
        "version-ext-colheader-name": "Laajennusosa",
+       "version-skin-colheader-name": "Ulkoasu",
        "version-ext-colheader-version": "Versio",
        "version-ext-colheader-license": "Lisenssi",
        "version-ext-colheader-description": "Kuvaus",
        "intentionallyblankpage": "Tämä sivu on tarkoituksellisesti tyhjä.",
        "external_image_whitelist": " #Älä muuta tätä riviä lainkaan.<pre>\n#Laita säännöllisten lausekkeiden palaset (vain osa, joka menee //-merkkien väliin) alle\n#Niitä verrataan ulkoisten (suoralinkitettyjen) kuvien URLeihin\n#Ne jotka sopivat, näytetään kuvina, muutoin kuviin näytetään vain linkit\n#Rivit, jotka alkavat #-merkillä ovat kommentteja\n#Tämä on riippumaton kirjainkoosta\n\n#Laita kaikki säännöllisten lausekkeiden palaset tämän rivit yläpuolelle. Älä muuta tätä riviä lainkaan</pre>",
        "tags": "Voimassa olevat muutosmerkinnät",
-       "tag-filter": "[[Special:Tags|Merkintäsuodatin]]",
+       "tag-filter": "[[Special:Tags|Merkintä]]suodatin:",
        "tag-filter-submit": "Suodata",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Merkintä|Merkinnät}}]]: $2)",
        "tags-title": "Merkinnät",
        "expand_templates_remove_nowiki": "Poista <nowiki>-tagit tulosteesta",
        "expand_templates_generate_xml": "Näytä XML-jäsennyspuu",
        "expand_templates_generate_rawhtml": "Näytä raaka HTML",
-       "expand_templates_preview": "Esikatselu"
+       "expand_templates_preview": "Esikatselu",
+       "pagelanguage": "Sivun kielen valinta",
+       "pagelang-name": "Sivu",
+       "pagelang-language": "Kieli",
+       "pagelang-use-default": "Käytä oletuskieltä",
+       "pagelang-select-lang": "Valitse kieli",
+       "right-pagelang": "Vaihda sivun kieli",
+       "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."
 }
index 85cd19f..2e56326 100644 (file)
        "gotaccountlink": "Rita inn",
        "userlogin-resetlink": "Hevur tú gloymt tínar logg inn upplýsingar",
        "userlogin-resetpassword-link": "Hevur tú gloymt títt loyniorð?",
+       "userlogin-helplink2": "Hjálp til innritan",
        "userlogin-loggedin": "Tú ert longu innritað/ur sum {{GENDER:$1|$1}}.\nNýt formularin niðanfyri fyri at rita inn sum ein annar brúkari.",
        "userlogin-createanother": "Stovna eina aðra kontu",
        "createacct-emailrequired": "Teldupost adressa",
        "resetpass-submit-loggedin": "Broyt loyniorð",
        "resetpass-submit-cancel": "Ógildað",
        "resetpass-wrong-oldpass": "Ógyldug fyribils ella verandi loyniorð.\nMøguliga hevur tú longu broytt títt loyniorð ella biðið um eitt nýtt fyribils loyniorð.",
+       "resetpass-recycled": "Vinarliga broyt títt loyniorð til okkurt annað enn tað tú hevur í løtuni.",
+       "resetpass-temp-emailed": "Tú hevur ritað inn við einum fyribils loyniorði frá telduposti. \nFyri at gjøgnumføra innritanina, so mást tú velja tær eitt nýtt loyniorð og skriva tað her:",
        "resetpass-temp-password": "Fyribils loyniorð",
        "resetpass-abort-generic": "Broyting av loyniorði bleiv avbrotin av einari víðkan.",
+       "resetpass-expired": "Títt loyniorð er útgingið. Vinarliga vel tær eitt nýtt, so tú kanst rita inn.",
+       "resetpass-expired-soft": "Títt loyniorð er útgingið og má broytast. Vinarliga vel tær eitt nýtt nú ella trýst á \"{{int:resetpass-submit-cancel}}\" fyri at broyta tað seinni.",
        "passwordreset": "Nullstilla loyniorðið",
        "passwordreset-text-one": "Útfyll henda teigin fyri at nullstilla títt loyniorð.",
        "passwordreset-text-many": "{{PLURAL:$1|Útfyll í ein av teigunum fyri at móttaka eitt fyribils loyniorð við telduposti.}}",
        "edit-gone-missing": "Tað var ikki møguligt at dagføra síðuna.\nTað sær út til at hon er blivin strikað.",
        "edit-conflict": "Rættingar trupulleiki (konflikt).",
        "edit-no-change": "Tín rætting var sæð burtur frá, tí ongin broyting varð gjørd í tekstinum.",
+       "postedit-confirmation-created": "Síðan er upprættað.",
+       "postedit-confirmation-restored": "Síðan er endurskapað.",
        "postedit-confirmation-saved": "Tín rætting varð goymd.",
        "edit-already-exists": "Tað var ikki møguligt at upprætta nýggja síðu.\nSíðan er longu til.",
        "defaultmessagetext": "Standard boðtekstur",
        "undo-summary-username-hidden": "Angra versjón $1 sum ein fjaldur brúkari hevur gjørt",
        "cantcreateaccounttitle": "Tað ber ikki til at upprætta konto",
        "cantcreateaccount-text": "Upprættan frá hesi IP adressuni ('''$1''') er blivin sperrað av [[User:$3|$3]]. Orsøkin til sperringina sigst vera ''$2''\n\n$3 sigur orsøkina vera ''$2''",
+       "cantcreateaccount-range-text": "IP adressur í intervallinum '''$1''', sum fevnir um tína IP adressu ('''$4'''), eru sperraðar fyri upprættan av nýggjari konto av [[User:$3|$3]].\n\n$3 segði orsøkina vera ''$2''",
        "viewpagelogs": "Sí logg fyri hesa grein",
        "nohistory": "Eingin broytisøga er til hesa síðuna.",
        "currentrev": "Núverandi endurskoðan",
        "currentrev-asof": "Seinasta endurskoðan sum var $1",
        "revisionasof": "Endurskoðan frá $1",
-       "revision-info": "Versjón frá $1 av $2",
+       "revision-info": "Versjón frá $1 av {{GENDER:$6|$2}}$7",
        "previousrevision": "←Eldri endurskoðan",
        "nextrevision": "Nýggjari endurskoðan→",
        "currentrevisionlink": "Skoða verandi endurskoðan",
        "search-section": "(sektión $1)",
        "search-suggest": "Meinti tú: $1",
        "search-interwiki-caption": "Líknandi verkætlanir",
-       "search-interwiki-default": "$1 úrslit:",
+       "search-interwiki-default": "Úrslit frá $1:",
        "search-interwiki-more": "(meira)",
        "search-relatedarticle": "Líknandi",
        "searchrelated": "líknandi",
        "searchall": "alt",
        "showingresults": "Niðanfyri standa upp til {{PLURAL:$1|'''$1''' úrslit, sum byrjar|'''$1''' úrslit, sum byrja}} við #<b>$2</b>.",
-       "showingresultsnum": "Niðanfyri standa {{PLURAL:$3|'''1''' úrslit, sum byrjar|'''$3''' úrslit, sum byrja}} við #<b>$2</b>.",
+       "showingresultsinrange": "Niðanfyri verða víst upp til {{PLURAL:$1|<strong>1</strong> úrslit|<strong>$1</strong> úrslit}} í økinum #<strong>$2</strong> til #<strong>$3</strong>.",
        "showingresultsheader": "{{PLURAL:$5|Úrslit '''$1''' av '''$3'''|Úrslit '''$1 - $2''' av '''$3'''}} fyri '''$4'''",
        "search-nonefound": "Leitingin gav onki úrslit.",
        "powersearch-legend": "Víðkað leitan",
        "powersearch-togglelabel": "Kanna eftir:",
        "powersearch-toggleall": "Alt",
        "powersearch-togglenone": "Ongi",
+       "powersearch-remember": "Minst til tað valda til framtíðar leitingar",
        "search-external": "Uttanhýsis leitan",
        "searchdisabled": "{{SITENAME}} leitan er sett úr gildi.\nTú kanst leita via Google ímeðan.\nLegg til merkis, at teirra innihaldsyvirlit av {{SITENAME}} kann vera gamalt og ikki dagført.",
        "search-error": "Ein feilur hendi undir leitanini: $1",
        "preferences": "Innstillingar",
        "mypreferences": "Innstillingar",
        "prefs-edits": "Tal av rættingum:",
+       "prefsnologintext2": "Vinarliga $1 fyri at broyta tínar innstillingat.",
        "prefs-skin": "Hamur",
        "skin-preview": "Forskoðan",
        "datedefault": "Ongi serlig ynskir",
        "right-move": "Flyt síður",
        "right-move-subpages": "Flyt síður saman við undirsíðum teirra",
        "right-move-rootuserpages": "Flyta høvuðs brúkarasíður",
+       "right-move-categorypages": "Flyt bólkasíður",
        "right-movefile": "Flyt fílur",
        "right-suppressredirect": "Flyta síður uttan at upprætta víðaristilling frá tí gomlu síðuni.",
        "right-upload": "Legg upp fílur",
        "action-createpage": "upprætta síður",
        "action-createtalk": "upprætta kjak síður",
        "action-createaccount": "upprætta hesa brúkarakontuna",
+       "action-history": "vís søguna hjá hesi síðu",
        "action-minoredit": "marka hesa rætting sum lítla",
        "action-move": "flyt hesa síðu",
        "action-move-subpages": "flyt hesa síðu og undirsíður hennara",
        "action-move-rootuserpages": "flyt høvuðs brúkarasíður",
+       "action-move-categorypages": "Flyt bólkasíður",
        "action-movefile": "flyt hesa fílu",
        "action-upload": "send hesa fílu upp",
        "action-reupload": "yvirskriva hesa verandi fíluna",
        "recentchanges-label-minor": "Hetta er ein lítil rætting",
        "recentchanges-label-bot": "Henda rætting varð gjørd av einum botti",
        "recentchanges-label-unpatrolled": "Henda rætting er ikki blivin eftirkannað enn",
+       "recentchanges-label-plusminus": "Støddin á síðuni broyttist við hesum talinum av bytes",
        "recentchanges-legend-heading": "'''Teknfrágreiðing:'''",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (sí eisini [[Special:NewPages|yvirlit yvir nýggjar síður]])",
-       "rcnotefrom": "Niðanfyri standa broytingarnar síðani '''$2''', (upp til '''$1''' er sýndar).",
+       "rcnotefrom": "Niðanfyri verða broytingar síðan <strong>$2</strong> (upp til <strong>$1</strong> vístar).",
        "rclistfrom": "Sýn nýggjar broytingar byrjandi við $3 $2",
        "rcshowhideminor": "$1 minni rættingar",
+       "rcshowhideminor-show": "Vís",
+       "rcshowhideminor-hide": "Fjal",
        "rcshowhidebots": "$1 bottar",
+       "rcshowhidebots-show": "Vís",
+       "rcshowhidebots-hide": "Fjal",
        "rcshowhideliu": "$1 skrásettir brúkarar",
+       "rcshowhideliu-show": "Vís",
+       "rcshowhideliu-hide": "Fjal",
        "rcshowhideanons": "$1 navnleysar brúkarar",
+       "rcshowhideanons-show": "Vís",
+       "rcshowhideanons-hide": "Fjal",
        "rcshowhidepatr": "$1 eftirhugdar rættingar",
+       "rcshowhidepatr-show": "Vís",
+       "rcshowhidepatr-hide": "Fjal",
        "rcshowhidemine": "$1 mínar rættingar",
+       "rcshowhidemine-show": "Vís",
+       "rcshowhidemine-hide": "Fjal",
        "rclinks": "Sýn seinastu $1 broytingarnar seinastu $2 dagarnar<br />$3",
        "diff": "munur",
        "hist": "søga",
        "lockmanager-fail-svr-acquire": "Kundi ikki skaffa lás til dátagrunnin $1.",
        "lockmanager-fail-svr-release": "Kundi ikki loysa lásini í ambætaranum $1.",
        "uploadstash": "Legg út stash",
+       "uploadstash-clear": "Rudda burtur stashaðar fílur",
        "uploadstash-refresh": "Uppfrískað listan við fílum",
        "img-auth-accessdenied": "Atgongd noktað",
        "img-auth-badtitle": "Tað bar ikki til at gera eitt heiti útfrá \"$1\".",
        "watchlisttools-raw": "Rætta rátt eftirlit",
        "duplicate-defaultsort": "'''Ávaring:''' Standard sorteringslykilin \"$2\" yvirtekur fyrrverandi standard sorteringslykilin \"$1\".",
        "version": "Útgáva",
-       "version-specialpages": "Serstakar síður",
        "version-skins": "Útsjóndir",
+       "version-specialpages": "Serstakar síður",
        "version-other": "Annað",
        "version-hooks": "Krókur",
        "version-hook-name": "Krókurnavn",
index 6a47d6f..5f57d75 100644 (file)
                        "아라",
                        "Scoopfinder",
                        "Akeron",
-                       "Linedwell"
+                       "Linedwell",
+                       "Yona b"
                ]
        },
        "tog-underline": "Souligner les liens :",
        "searchall": "tout",
        "showingresults": "Affichage de <b>$1</b> résultat{{PLURAL:$1||s}} à partir du n°<b>$2</b>.",
        "showingresultsinrange": "Afficher ci-dessous jusqu’à {{PLURAL:$1|<strong>1</strong> résultat|<strong>$1</strong> résultats}} dans la série #<strong>$2</strong> à #<strong>$3</strong>.",
-       "showingresultsnum": "Affichage de <b>$3</b> résultat{{PLURAL:$3||s}} à partir du n°<b>$2</b>.",
        "showingresultsheader": "{{PLURAL:$5|Résultat '''$1'''|Résultats '''$1–$2'''}} de '''$3''' pour '''$4'''",
        "search-nonefound": "Il n'y a aucun résultat correspondant à la requête.",
        "powersearch-legend": "Recherche avancée",
        "license-nopreview": "(Prévisualisation non disponible)",
        "upload_source_url": " (une URL valide et accessible publiquement)",
        "upload_source_file": " (un fichier sur votre ordinateur)",
+       "listfiles-delete": "supprimer",
        "listfiles-summary": "Cette page spéciale permet de lister tous les fichiers importés.",
        "listfiles_search_for": "Rechercher un nom de média :",
        "imgfile": "fichier",
        "duplicate-defaultsort": "Attention : la clé de tri par défaut « $2 » écrase la précédente clé « $1 ».",
        "version": "Version",
        "version-extensions": "Extensions installées",
+       "version-skins": "Habillages installés",
        "version-specialpages": "Pages spéciales",
        "version-parserhooks": "Greffons de l'analyseur syntaxique",
        "version-variables": "Variables",
        "version-antispam": "Prévention du pollupostage",
-       "version-skins": "Habillages",
        "version-other": "Divers",
        "version-mediahandlers": "Manipulateurs de médias",
        "version-hooks": "Greffons",
        "version-license": "Licence MediaWiki",
        "version-ext-license": "Licence",
        "version-ext-colheader-name": "Extension",
+       "version-skin-colheader-name": "Habillage",
        "version-ext-colheader-version": "Version",
        "version-ext-colheader-license": "Licence",
        "version-ext-colheader-description": "Description",
        "expand_templates_remove_nowiki": "Supprime les marqueurs <nowiki> dans le résultat",
        "expand_templates_generate_xml": "Voir l’arborescence d’analyse XML",
        "expand_templates_generate_rawhtml": "Afficher le HTML brut",
-       "expand_templates_preview": "Aperçu du rendu"
+       "expand_templates_preview": "Aperçu du rendu",
+       "pagelanguage": "Sélecteur de langue de la page",
+       "pagelang-name": "Page",
+       "pagelang-language": "Langue",
+       "pagelang-use-default": "Utiliser la langue par défaut",
+       "pagelang-select-lang": "Sélectionner la langue",
+       "right-pagelang": "Changer la langue de la page",
+       "action-pagelang": "changer la langue de la page",
+       "log-name-pagelang": "Tracer les changements de langue",
+       "log-description-pagelang": "Ceci est un journal des changements dans les langues des pages.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|a changé}} la langue de la page $3 de $4 à $5."
 }
index e5203bc..02f26b9 100644 (file)
        "qbmyoptions": "Mes pâges",
        "faq": "Quèstions sovent posâyes",
        "faqpage": "Project:Quèstions sovent posâyes",
-       "vector-action-addsection": "Apondre na chousa",
-       "vector-action-delete": "Suprimar",
-       "vector-action-move": "Dèplaciér",
-       "vector-action-protect": "Protègiér",
-       "vector-action-undelete": "Refâre",
-       "vector-action-unprotect": "Changiér la protèccion",
-       "vector-view-create": "Fâre",
-       "vector-view-edit": "Changiér",
-       "vector-view-history": "Vêre l’historico",
-       "vector-view-view": "Liére",
-       "vector-view-viewsource": "Vêre lo tèxto sôrsa",
        "actions": "Accions",
        "namespaces": "Èspâços de noms",
        "variants": "Variantes",
        "difference-missing-revision": "{{PLURAL:$2|Na vèrsion|$2 vèrsions}} de cela difèrence ($1) {{PLURAL:$2|est pas étâye trovâye|sont pas étâyes trovâyes}}.\n\nEn g·ènèral cen arreve en siuvent un lim d’una dif dèpassâye de vers na pâge qu’est étâye suprimâye.\nVos pouede trovar més de dètalys sur lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de les suprèssions].",
        "searchresults": "Rèsultats de la rechèrche",
        "searchresults-title": "Rèsultats de la rechèrche por « $1 »",
-       "toomanymatches": "Un mouél de corrèspondances est étâ retornâ, se vos plét èprovâd na rechèrche difèrenta",
        "titlematches": "Corrèspondances dedens los titros de les pâges",
        "textmatches": "Corrèspondances dedens lo tèxto de les pâges",
        "notextmatches": "Niona corrèspondance dedens lo tèxto de les pâges",
        "searchrelated": "aparentâ",
        "searchall": "tot",
        "showingresults": "Vua de '''$1''' rèsultat{{PLURAL:$1||s}} dês lo numerô '''$2'''.",
-       "showingresultsnum": "Vua de '''$3''' rèsultat{{PLURAL:$3||s}} dês lo numerô '''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Rèsultat '''$1'''|Rèsultats '''$1 - $2'''}} de '''$3''' por '''$4'''",
        "search-nonefound": "Y at gins de rèsultat que corrèspond a la rechèrche.",
        "powersearch-legend": "Rechèrche avanciêe",
        "tooltip-preferences-save": "Encartar les prèferences",
        "tooltip-summary": "Buchiéd un côrt rèsumâ",
        "common.css": "/* Lo code CSS betâ ique serat aplicâ a tôs los habelyâjos. */",
-       "monobook.css": "/* Lo code CSS betâ ique afècterat los usanciérs de l’habelyâjo « MonoBook ». */",
-       "vector.css": "/* Lo code CSS betâ ique afècterat los usanciérs de l’habelyâjo « Vèctor ». */",
        "print.css": "/* Lo code CSS betâ ique afècterat les emprèssions. */",
        "noscript.css": "/* Lo code CSS betâ ique afècterat los usanciérs qu’ont dèsactivâ lo code JavaScript. */",
        "group-autoconfirmed.css": "/* Lo code CSS betâ ique afècterat ren que los usanciérs encartâs. */",
        "group-sysop.css": "/* Lo code CSS betâ ique afècterat ren que los administrators. */",
        "group-bureaucrat.css": "/* Lo code CSS betâ ique afècterat ren que los grata-papiérs. */",
        "common.js": "/* Tot code JavaScript betâ ique serat chargiê per tôs los usanciérs avouéc châque chargement de pâge. */",
-       "monobook.js": "/* Tot code JavaScript betâ ique serat chargiê per los usanciérs de l’habelyâjo « MonoBook ». */",
-       "vector.js": "/* Tot code JavaScript betâ ique serat chargiê per los usanciérs de l’habelyâjo « Vèctor ». */",
        "group-autoconfirmed.js": "/* Tot code JavaScript betâ ique serat chargiê ren que por los usanciérs encartâs. */",
        "group-bot.js": "/* Tot code JavaScript betâ ique serat chargiê ren que por los bots. */",
        "group-sysop.js": "/* Tot code JavaScript betâ ique serat chargiê ren que por los administrators. */",
        "pageinfo-contentpage": "Comptâ coment pâge de contegnu",
        "pageinfo-contentpage-yes": "Ouè",
        "pageinfo-protect-cascading-yes": "Ouè",
-       "skinname-monobook": "MonoBook",
-       "skinname-vector": "Vèctor",
        "markaspatrolleddiff": "Marcar coment survelyê",
        "markaspatrolledtext": "Marcar ceta pâge coment survelyê",
        "markedaspatrolled": "Marcâye coment survelyêye",
index f928602..6bb0457 100644 (file)
        "permalink": "Permanent link",
        "print": "Drük",
        "view": "Lees",
+       "view-foreign": "Üüb $1 uunluke",
        "edit": "Bewerke",
+       "edit-local": "Lokaal beskriiwang bewerke",
        "create": "Maage",
+       "create-local": "Lokaal beskriiwang diartudu",
        "editthispage": "Sidj bewerke",
        "create-this-page": "Nei sidj maage",
        "delete": "Strik",
        "jumptonavigation": "Nawigatjuun",
        "jumptosearch": "Schük",
        "view-pool-error": "Det dää üs iarag, a servers san auerläästet.\nTuföl brükern ferschük, det sidj tu beschüken.\nWees so gud an teew en uugenblak, iar dü det noch ans ferschükst.\n\n$1",
+       "generic-pool-error": "Det dää üs iarag, a servers san tu tidj auerläästet.\nTuföl brükern ferschük, det sidj tu beschüken.\nWees so gud an teew en uugenblak, iar dü det noch ans weder ferschükst.",
        "pool-timeout": "Tidj uflepen bi't teewen üüb't sperang",
        "pool-queuefull": "Pool as auerläästet",
        "pool-errorunknown": "Ünbekäänd feeler",
        "edit-gone-missing": "Detdiar sidj küd ei aktualisiaret wurd. Ferlicht as det stregen wurden.",
        "edit-conflict": "Konflikt bi't bewerkin (BK).",
        "edit-no-change": "Din feranrang woort ei seekert, auer dü di tekst ei feranert heest.",
+       "postedit-confirmation-created": "Det sidj as maaget wurden.",
+       "postedit-confirmation-restored": "Det sidj as weder turaghaalet wurden.",
        "postedit-confirmation-saved": "Din feranrang as seekert wurden.",
        "edit-already-exists": "Det nei sidj küd ei iinracht wurd. Son sidj as al diar.",
        "defaultmessagetext": "Standard tekst",
        "parser-template-recursion-depth-warning": "Tuföl föörlaagen uun föörlaagen ($1)",
        "language-converter-depth-warning": "Spriakenkonwerter auerläästet ($1)",
        "node-count-exceeded-category": "Jodiar sidjen haa tuföl ferbinjangen (nodes)",
+       "node-count-exceeded-category-desc": "En kategorii för sidjen mä tuföl knooter (nodes).",
        "node-count-exceeded-warning": "Detdiar sidj hää tuföl ferbinjangen (nodes)",
        "expansion-depth-exceeded-category": "Jodiar sidjen haa tuföl ütjwidjangen (expansion)",
+       "expansion-depth-exceeded-category-desc": "Det as en kategorii för sidjen mä tuföl ütjwidjangen.",
        "expansion-depth-exceeded-warning": "Detdiar sidj hää tuföl ütjwidjangen (expansion)",
        "parser-unstrip-loop-warning": "Diar as en jinsidjag ferwisang",
        "parser-unstrip-recursion-limit": "Tuföl jinsidjag ferwisangen bi $1",
        "currentrev": "Leetst werjuun",
        "currentrev-asof": "Leetst werjuun faan di $2, am a klook $3",
        "revisionasof": "Werjuun faan a $2, klook $3",
-       "revision-info": "Werjuun faan di $4 am a klook $5 faan $2",
+       "revision-info": "Werjuun faan di $4, am a klook $5 faan {{GENDER:$6|$2}}$7",
        "previousrevision": "← Naistääler werjuun:",
        "nextrevision": "Naistjonger werjuun →",
        "currentrevisionlink": "Leetst werjuun",
        "mergehistory-empty": "Nian werjuunen kön tuupfeerd wurd.",
        "mergehistory-success": "$3 {{PLURAL:$3|werjuun|werjuunen}} faan [[:$1]] tuupfeerd tu [[:$2]].",
        "mergehistory-fail": "Werjuunen kön ei tuupfeerd wurd. Luke noch ans efter at sidj an a tidjen.",
+       "mergehistory-fail-toobig": "A werjuunen küd ei tuupfeerd wurd, auer muar üs {{PLURAL:$1|ian werjuun|$1 werjuunen}} fersköwen {{PLURAL:$1|wurd skul|wurd skul}}.",
        "mergehistory-no-source": "Det iarst sidj \"$1\" as ai diar.",
        "mergehistory-no-destination": "Det ööder sidj „$1“ as ei diar.",
        "mergehistory-invalid-source": "Jurtkamstsid mötj en gülti sidnoome heewe.",
        "searchall": "aaltumaal",
        "showingresults": "Heer {{PLURAL:$1|as '''1''' resultaat|san '''$1''' resultaaten}}, jo began mä numer '''$2.'''",
        "showingresultsinrange": "Oner {{PLURAL:$1|woort <strong>ian</strong> resultaat|wurd bit tu <strong>$1</strong> resultaaten}} tesken <strong>$2</strong> an <strong>$3</strong> uunwiset.",
-       "showingresultsnum": "Heer {{PLURAL:$3|as '''1''' resultaat|san '''$3''' resultaaten}}, jo began mä numer '''$2.'''",
        "showingresultsheader": "{{PLURAL:$5|resultaat '''$1''' faan '''$3'''|resultaaten '''$1-$2''' faan '''$3'''}}, för '''$4.'''",
        "search-nonefound": "För din uunfraag san nian resultaaten fünjen wurden.",
        "powersearch-legend": "Ütjwidjet schüken",
        "powersearch-togglelabel": "Schük uun:",
        "powersearch-toggleall": "Aaltumaal",
        "powersearch-togglenone": "Nianen",
+       "powersearch-remember": "Ütjwool mark för leeder schükuunfraagen",
        "search-external": "Schük ekstern",
        "searchdisabled": "Det schüken üüb {{SITENAME}} as ei aktiif. Dü könst uuntesken mä Google schük. Seenk diaram, dat Google sin steegwurden miast ei üüb a leetst stant san.",
        "search-error": "Diar as wat skiaf gingen bi't schüken: $1",
        "right-move": "Sidjen fersküüw",
        "right-move-subpages": "Sidjen mä onersidjen fersküüw",
        "right-move-rootuserpages": "Hood-brükersidj fersküüw",
+       "right-move-categorypages": "Kategoriisidjen fersküüw",
        "right-movefile": "Datein fersküüw",
        "right-suppressredirect": "Bi't fersküüwen nian widjerfeerang iinracht",
        "right-upload": "Datein huuchschüür",
        "action-createpage": "nei sidjen tu maagin",
        "action-createtalk": "diskusjuunssidjen maage",
        "action-createaccount": "jüdeer brükerkonto mååge",
+       "action-history": "di ferluup faan detdiar sidj uuntulukin.",
        "action-minoredit": "detdiar feranrang üs letj kääntiakne",
        "action-move": "an fersküüw det diar sidj",
        "action-move-subpages": "an fersküüw detdiar sidj mä hör onersidjen",
        "action-move-rootuserpages": "hood-brükersidj fersküüw",
+       "action-move-categorypages": "kategoriisidjen uuntulukin",
        "action-movefile": "an fersküüw detdiar datei",
        "action-upload": "Datein huuchschüür",
        "action-reupload": "det datei auerskriiw",
        "windows-nonascii-filename": "Detheer wiki läät nian dateinöömer mä aparte tiakens tu.",
        "fileexists": "En datei mä didiar nööm jaft at al. Luke noch ans efter <strong>[[:$1]]</strong>, wan dü ei gans seeker beest, of dü det anre wel.\n[[$1|thumb]]",
        "filepageexists": "En beskriiwangssidj för <strong>[[:$1]]</strong> as al diar, oober nian datei. Din beskriiwang woort ei apnimen. Det beskriiwangssidj mut do man efter't huuchschüüren noch ans efterluket wurd.\n[[$1|thumb]]",
-       "fileexists-extension": "Diar as al en datei mä di nööm: [[$2|thumb]]\n* Nööm faan det nei datei: <strong>[[:$1]]</strong>\n* Nööm faan det ual datei: <strong>[[:$2]]</strong>\nWees so gud an nem en öödern nööm.",
+       "fileexists-extension": "Diar as al en datei mä di nööm: [[$2|thumb]]\n* Nööm faan det nei datei: <strong>[[:$1]]</strong>\n* Nööm faan det ual datei: <strong>[[:$2]]</strong>\nWel dü ei ferlicht en beedern nööm brük?",
        "fileexists-thumbnail-yes": "Detdiar datei as was en sümnaielbil ''(thumbnail)''. [[$1|thumb]]\nLuke di det datei <strong>[[:$1]]</strong> noch ans uun.\nWan det det originaal bil as, säärst dü nian sümnaielbil huuchschüür.",
        "file-thumbnail-no": "Di dateinööm begant mä <strong>$1</strong>. Det as was en sümnaielbil ''(thumbnail)''.\nLuke noch ans efter, of dü det bil uun fol grate diar heest, an do schüür det huuch.",
        "fileexists-forbidden": "En datei mä didiar nööm jaft at al an koon ei auerskrewen wurd.\nGung noch ans turag an schüür det datei mä en öödern nööm huuch.\n[[File:$1|thumb|center|$1]]",
        "filedelete-maintenance": "Det striken of turaghaalin faan datein gongt uun uugenblak ei.",
        "filedelete-maintenance-title": "Det datei koon ei stregen wurd",
        "mimesearch": "Efter MIME-Typ schük",
-       "mimesearch-summary": "Üüb detheer sidj könst dü datein efter hör MIME-Typ filtre.\nDet formoot as leewen slach/onerslach üs uun det bispal: <code>image/jpeg</code>.",
+       "mimesearch-summary": "Üüb detheer sidj könst dü datein efter hör MIME-Typ filtre.\nDet formoot as leewen slach/onerslach üs uun det bispal: <code>image/jpeg</code> of uk <code>image/*</code>.",
        "mimetype": "MIME-Typ:",
        "download": "Deelloose",
        "unwatchedpages": "Sidjen, diar näämen uun't uug hää",
        "pageswithprop-prophidden-binary": "Binär eegenskapswäärs ferbürgen ($1)",
        "doubleredirects": "Dobelt widjerfeerangen",
        "doubleredirectstext": "Detheer list feert widjerfeerangen ap, diar üüb widjerfeerangen widjer feer.\nUun arke rä stun ferwisangen tu't iarst an ööder widjerfeerang an uk tu det sidj, huar det ööder widjerfeerang üüb ferwiset. <del>Trochstregen</del> iindracher san al bewerket wurden.",
-       "double-redirect-fixed-move": "[[$1]] as fersköwen wurden an feert nü widjer tu [[$2]].",
+       "double-redirect-fixed-move": "[[$1]] as fersköwen wurden. Hat feert nü widjer tu [[$2]].",
        "double-redirect-fixed-maintenance": "Dobelt widjerfeerang faan [[$1]] tu [[$2]] as apredet wurden.",
        "double-redirect-fixer": "Bot för widjerfeerangen",
        "brokenredirects": "Uunstaken widjerfeerangen",
        "wantedtemplates": "Föörlaagen, diar brükt wurd",
        "mostlinked": "Sidjen, huar a miast ööder sidjen üüb ferwise",
        "mostlinkedcategories": "Miast brükt kategoriin",
-       "mostlinkedtemplates": "Miast brükt föörlaagen",
+       "mostlinkedtemplates": "Miast iinbünjen sidjen",
        "mostcategories": "Sidjen mä a miast kategoriin",
        "mostimages": "Datein, huar a miast sidjen üüb ferwise",
        "mostinterwikis": "Sidjen mä a miast ferwisangen tu ööder spriaken",
        "listgrouprights-removegroup-self": "Aanj brükerkonto faan {{PLURAL:$2|detdiar skööl|jodiar sköölen}} wechnem: $1",
        "listgrouprights-addgroup-self-all": "Koon aal a sköölen tu't aanj brükerkonto tuwise",
        "listgrouprights-removegroup-self-all": "Koon aal a sköölen faan't aanj brükerkonto wechnem",
+       "listgrouprights-namespaceprotection-header": "Nöömrüm mögelkhaiden",
+       "listgrouprights-namespaceprotection-namespace": "Nöömrüm",
+       "listgrouprights-namespaceprotection-restrictedto": "Rochten faan di brüker tu bewerkin",
        "trackingcategories": "Kategoriin ferfulge",
        "trackingcategories-summary": "Üüb detdiar sidj stun ferfulagt kategoriin, diar faan't MediaWiki-software iindraanj wurden san. Hör nöömer kön feranert wurd, wan dü a süsteem-noorachten uun a {{ns:8}}-nöömrüm feranerst.",
        "trackingcategories-msg": "Kategorii ferfulge",
        "watchnologin": "Ei uunmeldet",
        "addwatch": "Uk uun't uug behual",
        "addedwatchtext": "Det sidj „[[:$1]]“ wel dü [[Special:Watchlist|uun't uug behual]].\nFeranrangen faan detdiar sidj wurd üüb detdiar list fäästhäälen.",
+       "addedwatchtext-short": "Det sidj „$1“ kaam tu din sidjen, diar dü uun't uug behual wel.",
        "removewatch": "Ei muar uun't uug behual",
        "removedwatchtext": "Det sidj „[[:$1]]“ as faan a sidjen, diar dü [[Special:Watchlist|uun't uug behual]] wel, wechnimen wurden.",
+       "removedwatchtext-short": "Det sidj „$1“ woort ei muar faan di uun't uug behäälen.",
        "watch": "Uun't uug behual",
        "watchthispage": "Detdiar sidj uun't uug behual",
        "unwatch": "Ei muar uun't uug behual",
        "unwatchthispage": "Ei muar uun't uug behual",
        "notanarticle": "Nään artiikel",
        "notvisiblerev": "Det werjuun faan en öödern brüker as stregen wurden.",
-       "watchlist-details": "Dü heest {{PLURAL:$1|1 sidj|$1 sidjen}} uun't uug.",
+       "watchlist-details": "Dü behäälst {{PLURAL:$1|1 sidj|$1 sidjen}} uun't uug, diarbi wurd diskuschuunsidjen ei mätääld.",
        "wlheader-enotif": "Di e-mail siinst as aktiif.",
        "wlheader-showupdated": "Nei feranert sidjen wurd '''fäät''' uunwiset.",
        "wlnote2": "Diar stun a feranrangen faan a leetst {{PLURAL:$1|stünj|<strong>$1</strong> stünjen}}, üüb a stant faan $2, $3.",
        "contributions-title": "Brükerbidracher för \"$1\"",
        "mycontris": "Bidracher",
        "contribsub2": "För {{GENDER:$3|$1}} ($2)",
+       "contributions-userdoesnotexist": "Son brükerkonto \"$1\" jaft at ei.",
        "nocontribs": "Diar wiar nian paasin brükerbidracher",
        "uctop": "(aktuel)",
        "month": "faan muun (of iarer):",
        "movepagetalktext": "Uk det diskusjuunssidj woort fersköwen, wan det diar as, '''oober ei, wan:'''\n*Diar al en diskusjuunssidj mä didiar nööm as, of\n*Dü detdiar mögelkhaid ütjslotst.\n\nUun didiar faal skel dü a diskusjuunssidjen faan hun tuupfeer.\n\nDreeg di '''nei''' tiitel bi '''ööder sidj''' iin, an diaroner '''en grünj''' för't amnäämen.",
        "movearticle": "Sidj fersküüw:",
        "moveuserpage-warning": "'''Paase üüb:''' Dü wel en brükersidj fersküüw. Seenk diaram, dat bluas det brükersidj amnäämd woort, oober '''ei''' di brüker. Hi behäält san ual nööm.",
+       "movecategorypage-warning": "<strong>Paase üüb:</strong> Dü wel jüst en kategoriisidj fersküüw. Seenk diaram, dat bluas det sidj fersköwen woort. A sidjen uun det kategorii wurd <em>ei</em> nei kategorisiaret.",
        "movenologintext": "Dü skel registriaret an [[Special:UserLogin|uunmeldet]] wees, am en sidj tu fersküüwen.",
        "movenotallowed": "Dü mutst nian sidjen fersküüw.",
        "movenotallowedfile": "Dü mutst nian datein fersküüw.",
        "cant-move-user-page": "Dü mutst nian brükersidjen fersküüw (bluas onersidjen).",
        "cant-move-to-user-page": "Dü mutst nian sidjen üüb en brükersidj fersküüw (bluas üüb onersidjen).",
+       "cant-move-category-page": "Dü mutst nian kategoriisidjen fersküüw.",
+       "cant-move-to-category-page": "Dü mutst nian sidj tu en kategoriisidj fersküüw.",
        "newtitle": "Müülj:",
        "move-watch": "Jodiar sidjen uun't uug behual",
        "movepagebtn": "Sidj fersküüw",
        "newimages-summary": "Detdiar spezial-sidj wiset a tuleetst huuchschüürd datein uun.",
        "newimages-legend": "Filter",
        "newimages-label": "Dateinööm (of en dial diarfaan):",
+       "newimages-showbots": "Faan bots huuchschüürd sidjen uunwise.",
        "noimages": "Niks tu sen.",
        "ilsubmit": "Schük",
        "bydate": "efter dootem",
        "watchlistedit-raw-done": "Det list mä sidjen, diar dü uun't uug behual wel, as nü üüb di neist stant.",
        "watchlistedit-raw-added": "{{PLURAL:$1|Ään iindrach as|$1 iindracher san}} diartu skrewen wurden:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|Ään iindrach as|$1 iindracher san}} wechnimen wurden:",
+       "watchlistedit-clear-title": "Nian sidjen muar uun't uug behual",
+       "watchlistedit-clear-legend": "Nian sidjen muar uun't uug behual",
+       "watchlistedit-clear-explain": "Aal a sidjennöömer wel dü ei muar uun't uug behual",
+       "watchlistedit-clear-titles": "Sidjennöömer:",
+       "watchlistedit-clear-submit": "Sidjen, diar dü uun't uug behual wel, strik (permanent)",
+       "watchlistedit-clear-done": "Det list mä sidjen, diar dü uun't uug behual wel, as nü leesag maaget wurden.",
+       "watchlistedit-clear-removed": "{{PLURAL:$1|Ään iindrach as|$1 iindracher san}} wechnimen wurden:",
+       "watchlistedit-too-many": "Diar san tuföl sidjen tu uunwisin heer.",
+       "watchlisttools-clear": "Nian sidjen muar uun't uug behual",
        "watchlisttools-view": "Uun't uug behual: Feranrangen",
        "watchlisttools-edit": "Normool bewerke",
        "watchlisttools-raw": "Uun't listenformoot bewerke",
        "duplicate-defaultsort": "'''Paase üüb:''' Di sortiarkai \"$2\" auerskraft di ual sortiarkai \"$1\"",
        "version": "Werjuun",
        "version-extensions": "Instaliaret ütjwidjangen",
+       "version-skins": "Instaliaret brükerskaker",
        "version-specialpages": "Spezial-sidjen",
        "version-parserhooks": "Ütjwidjet parserfunktjuunen",
        "version-variables": "Wariaabeln",
        "version-antispam": "''Spam''seekerangen",
-       "version-skins": "Brükerskaker",
        "version-other": "Ööders wat",
        "version-mediahandlers": "Ütjwidjet medien-funktjuunen",
        "version-hooks": "Hooks",
        "version-hook-name": "Hook nööm",
        "version-hook-subscribedby": "Aprepen faan",
        "version-version": "($1)",
+       "version-no-ext-name": "[saner nööm]",
        "version-license": "MediaWiki-lisens",
        "version-ext-license": "Lisens",
        "version-ext-colheader-name": "Ütjwidjang",
+       "version-skin-colheader-name": "Skak",
        "version-ext-colheader-version": "Werjuun",
        "version-ext-colheader-license": "Lisens",
        "version-ext-colheader-description": "Beskriiwang",
        "htmlform-no": "Naan",
        "htmlform-yes": "Ja",
        "htmlform-chosen-placeholder": "Schük ütj",
+       "htmlform-cloner-create": "Muar diartudu",
+       "htmlform-cloner-delete": "Wechnem",
+       "htmlform-cloner-required": "Dü skel tumanst ään wäärs uundu.",
        "sqlite-has-fts": "Werjuun $1 mä halep för't schüken uun di hialer tekst.",
        "sqlite-no-fts": "Werjuun $1 saner halep för't schüken uun di hialer tekst.",
        "logentry-delete-delete": "$1 {{Gender:$2}} hää det sidj $3 stregen",
        "expand_templates_remove_nowiki": "<nowiki>-tags uun't resultaat ei uunwise",
        "expand_templates_generate_xml": "XML-parser-buum uunwise",
        "expand_templates_generate_rawhtml": "Rä HTML uunwise",
-       "expand_templates_preview": "Föörskau"
+       "expand_templates_preview": "Föörskau",
+       "pagelanguage": "Ütjwool faan sidjenspriaken",
+       "pagelang-name": "Sidj",
+       "pagelang-language": "Spriak",
+       "pagelang-use-default": "Standard spriak brük",
+       "pagelang-select-lang": "Spriak ütjschük",
+       "right-pagelang": "Sidjenspriak feranre",
+       "action-pagelang": "det sidjenspriak tu feranrin",
+       "log-name-pagelang": "Logbuk för spriak-feranrangen",
+       "log-description-pagelang": "Det as en logbuk för sidjenspriak-feranrangen",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|hää}} det sidjenspriak för $3 faan $4 tu $5 feranert."
 }
index 5ccdd4c..ff1c4e3 100644 (file)
        "qbmyoptions": "Mês pagjinis",
        "faq": "Domandis plui frecuentis",
        "faqpage": "Project:FAQ",
-       "vector-action-addsection": "Gnove sezion",
-       "vector-action-delete": "Elimine",
-       "vector-action-move": "Môf",
-       "vector-action-protect": "Protêç",
-       "vector-action-undelete": "Recupere",
-       "vector-action-unprotect": "Gambie la protezion",
-       "vector-view-create": "Cree",
-       "vector-view-edit": "Cambie",
-       "vector-view-history": "Cjale il storic",
-       "vector-view-view": "Lei",
-       "vector-view-viewsource": "Cjale risultive",
        "actions": "Azions",
        "namespaces": "Spazis dai nons",
        "variants": "Variants",
        "editundo": "anule",
        "searchresults": "Risultâts de ricercje",
        "searchresults-title": "Risultâts de ricercje di \"$1\"",
-       "toomanymatches": "Masse risultâts, prove par plasê une ricercje divierse.",
        "titlematches": "Corispondencis tai titui des pagjinis",
        "textmatches": "Corispondencis tal test des pagjinis",
        "notextmatches": "Nissune corispondence tal test des pagjinis",
        "searchmenu-exists": "'''E je une pagjine di non \"[[:$1]]\" su cheste wiki'''",
        "searchmenu-new": "'''Cree la pagjine \"[[:$1]]\" su cheste wiki!'''",
        "searchprofile-articles": "Pagjinis di contignûts",
-       "searchprofile-project": "Pagjinis di jutori e sul progjet",
        "searchprofile-images": "Multimedia",
        "searchprofile-everything": "Dut",
        "searchprofile-advanced": "Avançade",
        "searchprofile-articles-tooltip": "Cîr in $1",
-       "searchprofile-project-tooltip": "Cîr in $1",
        "searchprofile-images-tooltip": "Cîr files",
        "searchprofile-everything-tooltip": "Cîr ducj i gjenars di contignûts (ancje lis pagjinis di discussion)",
        "searchprofile-advanced-tooltip": "Cîr tai spazis dai nons personalizâts",
        "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'''.",
-       "showingresultsnum": "Ca sot {{PLURAL:$3|al è '''1''' risultât|a son '''$3''' risultâts}} scomençant dal numar '''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Risultât '''$1''' su '''$3'''|Risultâts '''$1 - $2''' su '''$3'''}} par '''$4'''",
        "search-nonefound": "Nissun risultât par cheste ricercje.",
        "powersearch-legend": "Ricercje avanzade",
        "allowemail": "Ative la ricezion di messaçs email di bande di altris utents¹",
        "prefs-searchoptions": "Cîr",
        "prefs-namespaces": "Spazis dai nons",
-       "defaultns": "Se no, cîr in chescj spazis dai nons:",
        "default": "predeterminât",
        "prefs-files": "Files",
        "prefs-custom-css": "CSS personalizât",
        "prefs-emailconfirm-label": "Conferme de pueste eletroniche:",
        "youremail": "Email *",
        "username": "{{GENDER:$1|Non utent}}:",
-       "uid": "ID utent:",
        "prefs-memberingroups": "Al fâs part {{PLURAL:$1|dal grup|dai grups}}:",
        "prefs-registration": "Date di regjistrazion:",
        "yourrealname": "Non vêr *",
        "alllogstext": "Viodude combinade di ducj i regjistris disponibii di {{SITENAME}}.\nTu puedis strenzi la viodude sielzint un gjenar di regjistri, un non utent e/o la vôs che ti interesse (ducj e doi i cjamps a son sensibii al maiuscul/minuscul).",
        "logempty": "Nissun element corispondint tal regjistri.",
        "allpages": "Dutis lis pagjinis",
-       "alphaindexline": "di $1 a $2",
        "nextpage": "Prossime pagjine ($1)",
        "prevpage": "Pagjinis precedentis ($1)",
        "allpagesfrom": "Mostre pagjinis scomençant di:",
        "whatlinkshere-filters": "Filtris",
        "blockip": "Bloche utent",
        "blockip-legend": "Bloche l'utent",
-       "ipadressorusername": "Direzion IP o non utent:",
+       "ipaddressorusername": "Direzion IP o non utent:",
        "ipbexpiry": "Scjadence dal bloc:",
        "ipbreason": "Reson dal bloc:",
        "ipbsubmit": "Bloche chest utent",
        "tooltip-rollback": "\"Rollback\" al anule il/i cambiament/s a cheste pagjine fats dal ultin utent cuntun sôl clic",
        "tooltip-undo": "\"Anule\" al permet di anulâ chest cambiament e al vierç il modul pal cambiament te modalitât di anteprime. Al permet cussì di zontâ une reson tal somari.",
        "tooltip-summary": "Inserìs un curt somari",
-       "monobook.css": "/* modifiche chest file par personalizâ la skin monobook par dut il sît */",
        "anonymous": "{{PLURAL:$1|Utent anonim|Utents anonims}} di {{SITENAME}}",
        "siteuser": "Utent $1 di {{SITENAME}}",
        "anonuser": "$1, utent anonim di {{SITENAME}}",
        "anonusers": "$1, {{PLURAL:$2|utent anonim|utents anonims}} di {{SITENAME}}",
        "creditspage": "Pagjine dai ricognossiments",
        "nocredits": "Nissune informazion sui ricognossiments disponibil par cheste pagjine.",
-       "skinname-modern": "Moderne",
        "previousdiff": "← Difarence precedente",
        "nextdiff": "Prossime difarence →",
        "thumbsize": "Dimension miniature:",
        "show-big-image": "File origjnâl",
        "newimages": "Galarie dai gnûfs files",
        "imagelisttext": "Ca sot e je une liste di $1 {{PLURAL:$1|file|files}} ordenâts $2.",
-       "showhidebots": "($1 i bots)",
        "noimages": "Nuie di viodi.",
        "ilsubmit": "Cîr",
        "bydate": "par date",
index ece00d8..0851cc8 100644 (file)
        "qbmyoptions": "Myn Opsjes",
        "faq": "FAQ (faak stelde fragen)",
        "faqpage": "Project:Faak stelde fragen",
-       "vector-action-delete": "Fuortsmite",
-       "vector-action-move": "Werneam",
-       "vector-action-protect": "Beskermje",
-       "vector-action-undelete": "Tebeksette",
-       "vector-action-unprotect": "Beskerming fuorthelje",
-       "vector-view-create": "Oanmeitsje",
-       "vector-view-edit": "Wizigje",
-       "vector-view-history": "Skiednis sjen litte",
-       "vector-view-view": "Lês",
-       "vector-view-viewsource": "Besjoch de boarne",
        "namespaces": "Nammeromten",
        "variants": "Farianten",
        "errorpagetitle": "Fout",
        "editundo": "werom sette",
        "searchresults": "Sykresultaat",
        "searchresults-title": "Sykresultaten foar \"$1\"",
-       "toomanymatches": "Der wiene tefolle resultaten.\nPrebearje in oare sykopdracht.",
        "titlematches": "Titels",
        "textmatches": "Siden",
        "notextmatches": "Gjin siden",
        "searchmenu-exists": "'''Der is in side mei namme \"[[:$1]]\" yn dizze wiki'''",
        "searchmenu-new": "'''Meitsje de side \"[[:$1]]\" yn dizze wiki!'''",
        "searchprofile-articles": "Ynhâldlike siden",
-       "searchprofile-project": "Projektsiden",
        "searchprofile-images": "Triemmen",
        "searchprofile-everything": "Alles",
        "searchprofile-advanced": "Utwreide",
        "searchprofile-articles-tooltip": "Sykje yn $1",
-       "searchprofile-project-tooltip": "Sykje yn $1",
        "searchprofile-images-tooltip": "Sykje om triemmen",
        "searchprofile-everything-tooltip": "Alle ynhâld trochsykje (ynklusyf oerlissiden)",
        "searchprofile-advanced-tooltip": "Sykje yn oanjûne nammerûmten",
        "search-interwiki-default": "$1 resultaten:",
        "search-interwiki-more": "(mear)",
        "search-relatedarticle": "Besibbe",
-       "searcheverything-enable": "Sykje op alle nammeromten",
        "searchrelated": "besibbe",
        "searchall": "alle",
        "showingresults": "{{PLURAL:$1|'''1''' resultaat|'''$1''' resultaten}} fan #'''$2''' ôf.",
-       "showingresultsnum": "{{PLURAL:$3|'''1''' resultaat|'''$3''' resultaten}} fan #'''$2''' ôf.",
        "search-nonefound": "Der binne gjin resultaten foar Jo sykopdracht.",
        "powersearch-legend": "Sykje",
        "powersearch-ns": "Sykje op nammeromten:",
        "allowemail": "Lit my ek netpost fan oare meidoggers krije",
        "prefs-searchoptions": "Sykynstellings",
        "prefs-namespaces": "Nammeromten",
-       "defaultns": "Nammeromten dy't normaal trochsocht wurde:",
        "default": "standert",
        "prefs-files": "Triemen",
        "prefs-custom-js": "Persoanlik JS",
        "prefs-emailconfirm-label": "Netpostbefêstiging:",
        "youremail": "Jo netpostadres:",
        "username": "Meidochnamme:",
-       "uid": "Wikinûmer:",
        "prefs-memberingroups": "Lid fan {{PLURAL:$1|groep|groepen}}:",
        "yourrealname": "Jo wiere namme:",
        "yourlanguage": "Taal:",
        "logempty": "Gjin treffers yn it loch.",
        "log-title-wildcard": "Siden sykje dy't mei dizze namme begjinne",
        "allpages": "Alle siden",
-       "alphaindexline": "$1 oant $2",
        "nextpage": "Folgjende side ($1)",
        "prevpage": "Foargeande side ($1)",
        "allpagesfrom": "Begjin list by",
index 97b3acb..0fe4dfa 100644 (file)
        "qbmyoptions": "Mo chuid leathanaigh",
        "faq": "Ceisteanna Coiteanta",
        "faqpage": "Project:Ceisteanna_Coiteanta",
-       "vector-action-addsection": "Cuir topaic leis",
-       "vector-action-delete": "Scrios",
-       "vector-action-move": "Athainmnigh",
-       "vector-action-protect": "Glasáil",
-       "vector-action-undelete": "Díscrios",
-       "vector-action-unprotect": "Díghlasáil",
-       "vector-view-create": "Cruthaigh",
-       "vector-view-edit": "Athraigh an lch seo",
-       "vector-view-history": "Féach ar stair",
-       "vector-view-view": "Léigh",
-       "vector-view-viewsource": "Féach ar fhoinse",
        "actions": "Gníomhartha",
        "namespaces": "Ainmspásanna",
        "variants": "Leaganacha Malartacha",
        "viewprevnext": "Taispeáin ($1 {{int:pipe-separator}} $2) ($3).",
        "searchmenu-new": "'''Cruthaigh an leathanach \"[[:$1]]\" ar an vicí seo!'''",
        "searchprofile-articles": "Leathanaigh ábhair",
-       "searchprofile-project": "Leathanaigh thionscadail agus cabhair",
        "searchprofile-images": "Ilmheáin",
        "searchprofile-everything": "Gach rud",
        "searchprofile-advanced": "Casta",
        "searchprofile-articles-tooltip": "Cuardaigh i $1",
-       "searchprofile-project-tooltip": "Cuardaigh i $1",
        "searchprofile-images-tooltip": "Cuardaigh le comhaid",
        "searchprofile-everything-tooltip": "Cuardaigh an t-ábhar ar fad (leathanaigh plé san áireamh)",
        "searchprofile-advanced-tooltip": "Cuardaigh in ainmspásanna saincheaptha",
        "searchrelated": "gaolmhara",
        "searchall": "an t-iomlán",
        "showingresults": "Ag taispeáint thíos {{PLURAL:$1|'''toradh amháin'''|'''$1''' torthaí}}, ag tosú le #'''$2'''.",
-       "showingresultsnum": "Ag taispeáint thíos {{PLURAL:$3|'''toradh amháin'''|'''$3''' torthaí}}, ag tosú le #'''$2'''.",
        "search-nonefound": "Ní bhfuarthas toradh ar bith ar an iarratas.",
        "powersearch-legend": "Cuardach casta",
        "powersearch-ns": "Cuardaigh in ainmspásanna:",
        "timezoneregion-pacific": "An tAigéan Ciúin",
        "allowemail": "Tabhair cead d'úsáideoirí eile ríomhphost a sheoladh chugat.",
        "prefs-namespaces": "Ainmspáis",
-       "defaultns": "Cuardaigh sna ranna seo a los éagmaise:",
        "default": "réamhshocrú",
        "prefs-files": "Comhaid",
        "youremail": "Do ríomhsheoladh:",
        "username": "D'ainm úsáideora:",
-       "uid": "D’uimhir úsáideora:",
        "prefs-memberingroups": "Comhalta {{PLURAL:$1|an ghrúpa|na ghrúpaí}}:",
        "yourrealname": "D'fhíorainm **",
        "yourlanguage": "Teanga",
        "all-logs-page": "Gach loga poiblí",
        "alllogstext": "Bailiúchán cuimsitheach de gach loga {{SITENAME}}.\nIs féidir leat an méid ar taispeáint a chúngú trí roghnú an saghas loga, an t-ainm úsáideora (cásíogair), nó an leathanach (cásíogair freisin) atá i gceist agat.",
        "allpages": "Gach leathanach",
-       "alphaindexline": "$1 go $2",
        "nextpage": "An leathanach a leanas ($1)",
        "prevpage": "Leathanach roimhe sin ($1)",
        "allpagesfrom": "Taispeáin leathanaigh ó:",
        "tooltip-rollback": "Fill ar leagan an leathanaigh seo roimh athruithe an eagarthóra dheireanaigh in aon chlic amháin",
        "tooltip-undo": "Cuirtear \"Cealaigh\" an t-athrú seo ar cheal agus osclaítear an fhoirm eagair i mód réamhamhairc. Is féidir cúis na hathruithe a chur san achoimre.",
        "tooltip-summary": "Cuir isteach achoimre ghearr",
-       "monobook.css": "/* athraigh an comhad seo chun an craiceann MonoBook a athrú don suíomh ar fad */",
        "anonymous": "{{PLURAL:$1|Úsáideoir|Úsáideoirí}} gan ainm ar {{SITENAME}}",
        "siteuser": "Úsáideoir $1 ag {{SITENAME}}",
        "lastmodifiedatby": "Leasaigh $3 an leathanach seo go déanaí ag $2, $1.",
        "spamprotectionmatch": "Truicear ár scagaire dramhála ag an téacs seo a leanas: $1",
        "spambot_username": "MediaWiki turscar glanadh",
        "pageinfo-toolboxlink": "Faoin leathanach seo",
-       "skinname-cologneblue": "Gorm Köln",
-       "skinname-monobook": "MonoBook",
-       "skinname-modern": "Nua-aimseartha",
-       "skinname-vector": "Veicteoir",
        "markaspatrolleddiff": "Comharthaigh mar patrólta.",
        "markaspatrolledtext": "Comharthaigh an t-alt seo mar patrólta",
        "markedaspatrolled": "Comharthaithe mar patrólta",
index ca3192d..ba65dc6 100644 (file)
        "qbmyoptions": "Sayfalarım",
        "faq": "SSS",
        "faqpage": "Project:SSS",
-       "vector-view-edit": "Diiştir",
-       "vector-view-view": "Oku",
        "errorpagetitle": "Yannış",
        "returnto": "$1 dön.",
        "tagline": "{{SITENAME}} saydından",
        "skin-preview": "Ön siir",
        "youremail": "E-mail adresiniz*",
        "username": "Kullanıcı adı:",
-       "uid": "Registrațiya nomeri:",
        "yourrealname": "Haliz adınız:",
        "yourlanguage": "Dil:",
        "yournick": "Nik",
        "log": "Jurnallar",
        "all-logs-page": "Hepsi jurnallar",
        "allpages": "Hepsi sayfalar",
-       "alphaindexline": "$1den $2e",
        "nextpage": "Geeriki sayfa ($1)",
        "prevpage": "İlerki sayfa ($1)",
        "allpagesfrom": "Listaya düzmää başlanılacêk bukvalar:",
index f1db4fd..b15deea 100644 (file)
@@ -12,7 +12,9 @@
                        "Vipuser",
                        "Xiaomingyan",
                        "아라",
-                       "Mywood"
+                       "Mywood",
+                       "Duolaimi",
+                       "Impersonator 1"
                ]
        },
        "tog-underline": "下划链接",
        "viewsourcetext": "倷可以眵吖或复制个页𠮶源代码:",
        "protectedinterface": "个页给正嘞软件𠮶界面文本,佢拖锁到怕人乱扤。",
        "editinginterface": "'''Warning:''' You are editing a page which is used to provide interface text for the software.\nChanges to this page will affect the appearance of the user interface for other users.\nFor translations, please consider using [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], the MediaWiki localisation project.",
-       "cascadeprotected": "个页已拖保护,因为佢拖“联锁保护”𠮶{{PLURAL:$1|一只|几只}}拖保护页包到:\n$2",
+       "cascadeprotected": "个页已拖保护,因为佢拖“级联”𠮶{{PLURAL:$1|一只|几只}}拖保护页包到:\n$2",
        "namespaceprotected": "倷冇权编写'''$1'''空间里度𠮶页面。",
        "ns-specialprotected": "编写伓正{{ns:special}}空间𠮶页面。",
        "virus-unknownscanner": "不晓得𠮶防病毒:",
        "readonlywarning": "'''警告: 数据库锁到嘞进行定期修护,眼下倷存伓正倷𠮶改动。倷可以拿佢存到文档再著。'''",
        "protectedpagewarning": "'''警告: 个页拕锁到哩,单就管理员许可权𠮶用户才改得正。'''\n下首系供得汝参考𠮶最晏𠮶日志。",
        "semiprotectedpagewarning": "'''注意:'''个页拕锁到哩,单就注册用户编得正。\n下首系供得汝参考𠮶最晏𠮶日志。",
-       "cascadeprotectedwarning": "警告: 个页已经受保护,单只管理员权限𠮶用户才改得正,因为个页同底下𠮶连锁保护𠮶{{PLURAL:$1|一只|多只}}页面包到嘞:",
+       "cascadeprotectedwarning": "警告: 个页已经受保护,单只管理员权限𠮶用户才改得正,因为个页同底下𠮶级联保护𠮶{{PLURAL:$1|一只|多只}}页面包到嘞:",
        "titleprotectedwarning": "'''警告:个只页锁到哩,需要[[Special:ListGroupRights|指定𠮶权限]]才建立得正。'''\n下首系供得汝参考𠮶最晏𠮶日志。",
        "templatesused": "个只页面使用𠮶有{{PLURAL:$1|模板|模板}}:",
        "templatesusedpreview": "个只预览使用𠮶有{{PLURAL:$1|模板|模板}}",
        "searchrelated": "相关",
        "searchall": "所有",
        "showingresults": "底下从第<b>$2</b>条显示起先𠮶<b>$1</b>条结果:",
-       "showingresultsnum": "底下从第<b>$2</b>条显示起先𠮶<b>$3</b>条结果:",
        "showingresultsheader": "'''$4'''𠮶{{PLURAL:$5|第'''$1'''到第'''$3'''只结果|第'''$1 - $2'''只,拢共'''$3'''只结果}}",
        "search-nonefound": "冇合到𠮶查询结果。",
        "powersearch-legend": "高级搜寻",
        "protect-fallback": "非要“$1”𠮶许可",
        "protect-level-autoconfirmed": "禁止冇注册𠮶用户",
        "protect-level-sysop": "只限操作员",
-       "protect-summary-cascade": "联锁",
+       "protect-summary-cascade": "级联",
        "protect-expiring": "$1 (UTC)到期",
-       "protect-cascade": "保护个页含到𠮶页面 (连锁保护)",
+       "protect-cascade": "保护个页含到𠮶页面 (级联保护)",
        "protect-cantedit": "倷改伓正个页𠮶保护程度,因为倷冇搦到编辑授权。",
        "protect-expiry-options": "两个钟头:2 hours,一日:1 day,三日:3 days,一个礼拜:1 week,两个礼拜:2 weeks,一个月:1 month,三个月:3 months,六个月:6 months,一年:1 year,一世:infinite",
        "restriction-type": "权限:",
index 2ff24b1..8320af5 100644 (file)
        "searchrelated": "相關",
        "searchall": "所有",
        "showingresults": "底下從第<b>$2</b>條顯示起先嗰<b>$1</b>條結果:",
-       "showingresultsnum": "底下從第<b>$2</b>條顯示起先嗰<b>$3</b>條結果:",
        "showingresultsheader": "'''$4'''嗰{{PLURAL:$5|第'''$1'''到第'''$3'''隻結果|第'''$1 - $2'''隻,攏共'''$3'''隻結果}}",
        "search-nonefound": "冇合到嗰查詢結果。",
        "powersearch-legend": "高級搜尋",
index 45dffab..8e18888 100644 (file)
@@ -20,7 +20,7 @@
        "tog-numberheadings": "Cuir àireamhan ri ceann-sgrìobhaidhean leis fhèin",
        "tog-showtoolbar": "Seall am bàr-inneal deasachaidh",
        "tog-editondblclick": "Tòisich air deasachadh duilleige le briogadh dùbailte",
-       "tog-editsectiononrightclick": "Cuir an comas deasachadh earrainn le briogadh deas air tiotal de dh'earrainn",
+       "tog-editsectiononrightclick": "Cuir an comas deasachadh earrainn le briogadh deas air tiotal na h-earrainn",
        "tog-watchcreations": "Cuir duilleagan a chruthaicheas mi air a' chlàr-fhaire agam",
        "tog-watchdefault": "Cuir duilleagan a dheasaicheas mi air a' chlàr-fhaire agam",
        "tog-watchmoves": "Cuir duilleagan a ghluaiseas mi air a' chlàr-fhaire agam",
@@ -48,7 +48,7 @@
        "tog-showhiddencats": "Seall na roinnean-seòrsa falaichte",
        "tog-norollbackdiff": "Na seall na diofaran às dèidh roladh air ais",
        "tog-useeditwarning": "Thoir rabhadh dhomh ma bhios mi an impis duilleag deasachaidh fhàgail mus do shàbhail mi na mùthaidhean agam",
-       "tog-prefershttps": "Cleachd ceangal tèarainte an-còmhnaidh nuair a bhios mi clàraichte a-staigh",
+       "tog-prefershttps": "Cleachd ceangal tèarainte an-còmhnaidh nuair a bhios mi air logadh a-steach",
        "underline-always": "An-còmhnaidh",
        "underline-never": "Na dèan seo idir",
        "underline-default": "Bun-roghainn a' bhrabhsair no a' chraicinn",
        "help": "Cobhair",
        "search": "Lorg",
        "searchbutton": "Lorg",
-       "go": "Rach",
-       "searcharticle": "Rach",
+       "go": "Siuthad",
+       "searcharticle": "Siuthad",
        "history": "Eachdraidh na duilleige",
        "history_short": "Eachdraidh",
        "updatedmarker": "air ùrachadh on turas mu dheireadh a thadhail mi air",
        "aboutsite": "Mu dhèidhinn {{SITENAME}}",
        "aboutpage": "Project:Mu dhèidhinn",
        "copyright": "Tha susbaint ri làimh fo $1 mur eil an caochladh 'ga innse.",
-       "copyrightpage": "{{ns:project}}:Còraichean-lethbhreac",
+       "copyrightpage": "{{ns:project}}:Còir-lethbhreac",
        "currentevents": "Cùisean an latha",
        "currentevents-url": "Project:Cùisean an latha",
        "disclaimers": "Aithrisean-àichidh",
        "filereadonlyerror": "Cha ghabh am faidhle \"$1\" atharrachadh a chionn 's gu bheil ionad-tasgaidh fhaidhlichean \"$2\" ri leughadh a-mhàin.\nThug an rianaire a ghlais e seachad an t-adhbhar a leanas: \"$3\".",
        "invalidtitle-knownnamespace": "Tiotal mì-dhligheach leis an ainm-spàs \"$2\" agus an teacsa \"$3\"",
        "invalidtitle-unknownnamespace": "Tiotal mì-dhligheach leis an àireamh ainm-spàis $1 agus an teacsa \"$2\"",
-       "exception-nologin": "Chan eil thu air clàradh a-steach",
-       "exception-nologin-text": "Feumaidh tu [[Special:Userlogin|clàradh a-steach]] mus fhaic thu an duilleag seo no mus urrainn dhut seo a dhèanamh.",
+       "exception-nologin": "Chan eil thu air logadh a-steach",
+       "exception-nologin-text": "Feumaidh tu [[Special:Userlogin|logadh a-steach]] mus fhaic thu an duilleag seo no mus urrainn dhut seo a dhèanamh.",
        "exception-nologin-text-manual": "Ma tha thu ag iarraidh cothrom air an duilleag no air a' ghnìomh seo, $1.",
        "virus-badscanner": "Droch cho-dhealbhachd: sganair bhìorasan neo-aithnichte: <em>$1</em>",
        "virus-scanfailed": "dh'fhàillig an sganadh (còd $1)",
        "virus-unknownscanner": "sganair bhìorasan neo-aithnichte:",
-       "logouttext": "<strong>Chaidh do chlàradh a-mach.</strong>\n\nThoir an aire gum bi coltas air cuid dhe na duilleagan mar gum biodh tu air clàradh a-steach gus am falamhaich thu tasgadan a' bhrabhsair agad.",
+       "logouttext": "<strong>Chaidh do logadh a-mach.</strong>\n\nThoir an aire gum bi coltas air cuid dhe na duilleagan mar gum biodh tu air logadh a-steach gus am falamhaich thu tasgadan a' bhrabhsair agad.",
        "welcomeuser": "Fàilte ort, $1",
        "welcomecreation-msg": "Chaidh an cunntas agad a chruthachadh.\nNa dìochuimhnich na [[Special:Preferences|roghainnean agad air {{SITENAME}}]] a ghleusadh dhut fhèin.",
        "yourname": "Ainm-cleachdaiche:",
        "userlogin-yourname": "Ainm-cleachdaiche",
        "userlogin-yourname-ph": "Cuir a-steach an t-ainm-cleachdaiche agad",
        "createacct-another-username-ph": "Cuir a-steach an t-ainm-cleachdaiche",
-       "yourpassword": "Am facal-faire agad",
+       "yourpassword": "Facal-faire:",
        "userlogin-yourpassword": "Facal-faire",
        "userlogin-yourpassword-ph": "Cuir a-steach am facal-faire agad",
        "createacct-yourpassword-ph": "Cuir a-steach facal-faire",
        "createacct-yourpasswordagain": "Dearbh am facal-faire",
        "createacct-yourpasswordagain-ph": "Cuir a-steach am facal-faire a-rithist",
        "remembermypassword": "Cuimhnich gu bheil mi air logadh a-steach air a' choimpiutair seo (suas gu $1 {{PLURAL:$1|latha|latha|làithean|latha}})",
-       "userlogin-remembermypassword": "Cum clàraichte a-staigh mi",
+       "userlogin-remembermypassword": "Cum air logadh a-steach mi",
        "userlogin-signwithsecure": "Cleachd ceangal tèarainte",
        "yourdomainname": "An àrainn-lìn agad:",
        "password-change-forbidden": "Chan urrainn dhut faclan-faire atharrachadh air an uicipeid seo.",
        "gotaccountlink": "Log a-steach",
        "userlogin-resetlink": "Na dhìochuimhnich thu d' ainm is facal-faire?",
        "userlogin-resetpassword-link": "Na dhìochuimhnich thu am facal-faire agad?",
-       "userlogin-helplink2": "Taic le clàradh a-steach",
-       "userlogin-loggedin": "Chaidh do chlàradh mar $1 mu thràth.\nCleachd am foirm gu h-ìosal airson clàradh a-steach mar chleachdaiche eile.",
+       "userlogin-helplink2": "Taic le logadh a-steach",
+       "userlogin-loggedin": "Chaidh do logadh a-steach mar $1 mu thràth.\nCleachd am foirm gu h-ìosal airson logadh a-steach mar chleachdaiche eile.",
        "userlogin-createanother": "Cruthaich cunntas eile",
        "createacct-emailrequired": "Seòladh puist-d",
        "createacct-emailoptional": "Seòladh puist-d (roghainneil)",
        "password-login-forbidden": "Tha an t-ainm-cleachdaiche 's am facal-faire seo toirmisgte.",
        "mailmypassword": "Ath-shuidhich am facal-faire",
        "passwordremindertitle": "Facal-faire sealach ùr airson {{SITENAME}}",
-       "passwordremindertext": "Dh'iarr cuideigin ('s mathaid gun do dh'iarr thusa seo on t-seòladh IP $1) facal-faire ùr airson {{SITENAME}} ($4). Chaidh facal-faire sealach a chruthachadh airson \"$2\" a tha 'na \"$3\".\nMa bha sin fa-near dhut, bidh agad ri clàradh a-steach agus facal-faire ùr a thaghadh\nan-dràsta fhèin. Falbhaidh an ùine air an fhacal-fhaire sealach agad ann an {{PLURAL:$5|$5 latha|$5 latha|$5 làithean|$5 latha}}.\n\nMa dh'iarr cuideigin eile seo no ma chuimhnich thu am facal-faire agad 's mur eil thu\nairson atharrachadh tuilleadh, 's urrainn dhut an teachdaireachd seo a leigeil seachad\nagus leantainn ort leis an t-seann fhacal-faire.",
+       "passwordremindertext": "Dh'iarr cuideigin ('s mathaid gun do dh'iarr thusa seo on t-seòladh IP $1) facal-faire ùr airson {{SITENAME}} ($4). Chaidh facal-faire sealach a chruthachadh airson \"$2\" a tha 'na \"$3\".\nMa bha sin fa-near dhut, bidh agad ri logadh a-steach agus facal-faire ùr a thaghadh\nan-dràsta fhèin. Falbhaidh an ùine air an fhacal-fhaire sealach agad ann an {{PLURAL:$5|$5 latha|$5 latha|$5 làithean|$5 latha}}.\n\nMa dh'iarr cuideigin eile seo no ma chuimhnich thu am facal-faire agad 's mur eil thu\nairson atharrachadh tuilleadh, 's urrainn dhut an teachdaireachd seo a leigeil seachad\nagus leantainn ort leis an t-seann fhacal-faire.",
        "noemail": "Cha deach post-d a chlàradh airson a' chleachdaiche \"$1\".",
        "noemailcreate": "Feumaidh tu post-d dligheach a chur ann",
-       "passwordsent": "Chaidh facal-faire ùr a chur dhan phost-d a chaidh a chlàradh airson \"$1\".\nClàraich a-steach a-rithist nuair a gheibh thu e.",
+       "passwordsent": "Chaidh facal-faire ùr a chur dhan phost-d a chaidh a chlàradh airson \"$1\".\nDèan logadh a-steach a-rithist nuair a gheibh thu e.",
        "blocked-mailpassword": "Chaidh bacadh a chur air an t-seòladh IP agad 's chan eil cead deasachaidh agad agus chan urrainn dhut an gleus a chum aiseag an fhacail-fhaire a chleachdadh gus casg a chur air mì-ghnàthachadh.",
        "eauthentsent": "Chaidh post-d dearbhaidh a chur dhan phost-d a chaidh ainmeachadh.\nMus dèid post-d sam bith eile a chur dhan chunntas, feumaidh tu leantainn ris an stiùireadh sa phost-d mar dhearbhadh gur ann agadsa a tha an cunntas.",
        "throttled-mailpassword": "Chaidh post-d a chur airson ath-shuidheachadh facail-fhaire mu thràth $1 {{PLURAL:$1|uair|uair|uairean|uair}} a thìde air ais.\nGus casg a chur air mì-ghnàthachadh, cha chuir sinn ach aon chuimhneachan facail-fhaire gach $1 {{PLURAL:$1|uair|uair|uairean|uair}} a thìde.",
        "accountcreated": "Cunntas cruthaichte",
        "accountcreatedtext": "Chaidh an cunntas cleachdaiche airson [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|na deasbaireachd]]) a chruthachadh.",
        "createaccount-title": "Cruthachadh cunntais airson {{SITENAME}}",
-       "createaccount-text": "Chruthaich cuideigin cunntas airson a' phost-d agad air {{SITENAME}} ($4) air a bheil \"$2\", leis an fhacal-fhaire \"$3\".\nBu chòir dhut clàradh a-steach agus am facal-faire agad atharrachadh gu h-ìosal an-dràsta.\n\n'S urrainn dhut an teachdaireachd seo a leigeil seachad ma chaidh an cunntas a chruthachadh air mhearachd.",
-       "login-throttled": "Dh'fheuch thu ri clàradh a-steach ro thric o chionn ghoirid.\nFuirich ort $1 mus feuch thu ris a-rithist.",
-       "login-abort-generic": "Cha do shoirbhich leat leis a' chlàradh a-steach - Chaidh sgur dheth",
+       "createaccount-text": "Chruthaich cuideigin cunntas airson a' phost-d agad air {{SITENAME}} ($4) air a bheil \"$2\", leis an fhacal-fhaire \"$3\".\nBu chòir dhut logadh a-steach agus am facal-faire agad atharrachadh gu h-ìosal an-dràsta.\n\n'S urrainn dhut an teachdaireachd seo a leigeil seachad ma chaidh an cunntas a chruthachadh air mhearachd.",
+       "login-throttled": "Dh'fheuch thu ri logadh a-steach ro thric o chionn ghoirid.\nFuirich ort $1 mus feuch thu ris a-rithist.",
+       "login-abort-generic": "Cha do shoirbhich leat leis an logadh a-steach - Chaidh sgur dheth",
        "loginlanguagelabel": "Cànan: $1",
-       "suspicious-userlogout": "Chaidh d' iarrtas airson clàradh a-mach a dhiùltadh a chionn 's gu bheil coltas gun deach a chur le brabhsair briste no le progsaidh tasglannaidh.",
+       "suspicious-userlogout": "Chaidh d' iarrtas airson logadh a-mach a dhiùltadh a chionn 's gu bheil coltas gun deach a chur le brabhsair briste no le progsaidh tasglannaidh.",
        "createacct-another-realname-tip": "Cha leig thu leas innse dè am fìor-ainm a tha ort.\nMa bheir thu seachad e, thèid seo a chleachdadh gus urram a thoirt dha na h-ùghdaran airson an cuid obrach.",
        "pt-login": "Log a-steach",
        "pt-login-button": "Log a-steach",
        "user-mail-no-addy": "Cha do ghabh am post-d a chur leis nach robh seòladh puist-d ann.",
        "user-mail-no-body": "Bha bodhaig na teachdaireachd bàn no air leth goirid.",
        "changepassword": "Atharraich facal-faire",
-       "resetpass_announce": "Gus an clàradh a-steach a choileanadh, tha agad ri facal-faire ùr a shuidheachadh.",
+       "resetpass_announce": "Gus an logadh a-steach a choileanadh, tha agad ri facal-faire ùr a shuidheachadh.",
        "resetpass_text": "<!-- Cuir teacsa an-seo -->",
        "resetpass_header": "Atharraich facal-faire a' chunntais",
        "oldpassword": "Seann fhacal-faire",
        "newpassword": "Facal-faire ùr",
        "retypenew": "Ath-sgrìobh am facal-faire ùr",
-       "resetpass_submit": "Suidhich am facal-faire 's clàraich a-steach",
+       "resetpass_submit": "Suidhich am facal-faire 's dèan logadh a-steach",
        "changepassword-success": "Chaidh am facal-faire agad atharrachadh!",
-       "changepassword-throttled": "Dh'fheuch thu ri clàradh a-steach ro thric o chionn ghoirid.\nFuirich ort $1 mus feuch thu ris a-rithist.",
+       "changepassword-throttled": "Dh'fheuch thu ri logadh a-steach ro thric o chionn ghoirid.\nFuirich ort $1 mus feuch thu ris a-rithist.",
        "resetpass_forbidden": "Cha ghabh na faclan-faire atharrachadh",
-       "resetpass-no-info": "Feumaidh tu clàradh a-steach mus dèan thu inntrigeadh dìreach dhan duilleag seo.",
+       "resetpass-no-info": "Feumaidh tu logadh a-steach mus dèan thu inntrigeadh dìreach dhan duilleag seo.",
        "resetpass-submit-loggedin": "Atharraich am facal-faire",
        "resetpass-submit-cancel": "Sguir dheth",
        "resetpass-wrong-oldpass": "Tha am facal-faire sealach no làithreach mì-dhligheach.\nSaoil an do dh'atharraich thu am facal-faire agad mu thràth no an do dh'iarr thu facal-faire sealach ùr?",
        "resetpass-recycled": "Tagh facal-faire ùr nach eil co-ionnann ris an fhacal-fhaire a tha agad an-dràsta.",
-       "resetpass-temp-emailed": "Rinn thu clàradh a-steach le còd sealach a fhuair thu air a' phost-d.\nAirson clàradh a-steach slàn a dhèanamh, feumaidh tu facal-faire ùr a shuidheachadh an-seo:",
+       "resetpass-temp-emailed": "Rinn thu logadh a-steach le còd sealach a fhuair thu air a' phost-d.\nAirson logadh a-steach slàn a dhèanamh, feumaidh tu facal-faire ùr a shuidheachadh an-seo:",
        "resetpass-temp-password": "Facal-faire sealach:",
        "resetpass-abort-generic": "Chuir leudachan crìoch air atharrachadh an fhacail-fhaire.",
-       "resetpass-expired": "Dh'fhalbh an ùine air an fhacal-fhaire agad. Suidhich facal-faire ùr airson clàradh a-steach.",
+       "resetpass-expired": "Dh'fhalbh an ùine air an fhacal-fhaire agad. Suidhich facal-faire ùr airson logadh a-steach.",
        "resetpass-expired-soft": "Dh'fhalbh an ùine air an fhacal-fhaire agad is feumaidh tu ath-shuidheachadh. Tagh fear ùr no briog air \"{{int:resetpass-submit-cancel}}\" gus ath-shuidheachadh às a dhèidh seo.",
        "resetpass-validity-soft": "Chan eil am facal-faire seo dligheach: $1\n\nTagh facal-faire ùr an-dràsta no briog air \"{{int:resetpass-submit-cancel}}\" gus ath-shuidheachadh às a dhèidh seo.",
        "passwordreset": "Ath-shuidhich am facal-faire",
        "passwordreset-capture-help": "Ma chuireas tu cromag sa bhogsa seo, chì thusa am post-d (leis an fhacal-fhaire sealach) agus gheibh an cleachdaiche e cuideachd.",
        "passwordreset-email": "Seòladh puist-d:",
        "passwordreset-emailtitle": "Dàta a' chunntais air {{SITENAME}}",
-       "passwordreset-emailtext-ip": "Dh'iarr cuideigin (thu fhèin, 's mathaid, on t-seòladh IP $1) am facal-faire airson {{SITENAME}} ($4) ath-shuidheachadh. Tha {{PLURAL:$3|an cunntas|na cunntasan}} a leanas co-cheangailte ris a' phost-d seo:\n\n$2\n\nFalbhaidh an ùine air {{PLURAL:$3|an fhacal-fhaire shealach|na faclan-faire sealach}} seo an ceann $5 {{PLURAL:$5|latha|latha|làithean|latha}}.\nBu chòir dhut clàradh a-steach agus facal-faire ùr a thaghadh an-dràsta. Ma dh'iarr cuideigin eile seo no ma chuimhnich thu air an fhacal-fhaire agad 's mur eil thu airson atharrachadh tuilleadh, leig seachad an teachdaireachd seo 's lean ort leis an t-seann fhacal-fhaire.",
-       "passwordreset-emailtext-user": "Dh'iarr an cleachdaiche $1 air {{SITENAME}} ath-shuidheachadh an fhacail-fhaire air {{SITENAME}} ($4). Tha {{PLURAL:$3|an cunntas-cleachdaiche|na cunntasan-cleachdaiche}} a leanas co-cheangailte ris an t-seòladh puist-d seo:\n\n$2\n\nFalbhaidh an ùine air {{PLURAL:$3|an fhacal-fhaire shealach|na faclan-faire sealach}} seo an ceann $5 {{PLURAL:$5|latha|latha|làithean|latha}}.\nBu chòir dhut clàradh a-steach agus facal-faire ùr a thaghadh an-dràsta. Ma dh'iarr cuideigin eile seo no ma chuimhnich thu air an fhacal-fhaire agad 's mur eil thu airson atharrachadh tuilleadh, leig seachad an teachdaireachd seo 's lean ort leis an t-seann fhacal-fhaire.",
+       "passwordreset-emailtext-ip": "Dh'iarr cuideigin (thu fhèin, 's mathaid, on t-seòladh IP $1) am facal-faire airson {{SITENAME}} ($4) ath-shuidheachadh. Tha {{PLURAL:$3|an cunntas|na cunntasan}} a leanas co-cheangailte ris a' phost-d seo:\n\n$2\n\nFalbhaidh an ùine air {{PLURAL:$3|an fhacal-fhaire shealach|na faclan-faire sealach}} seo an ceann $5 {{PLURAL:$5|latha|latha|làithean|latha}}.\nBu chòir dhut logadh a-steach agus facal-faire ùr a thaghadh an-dràsta. Ma dh'iarr cuideigin eile seo no ma chuimhnich thu air an fhacal-fhaire agad 's mur eil thu airson atharrachadh tuilleadh, leig seachad an teachdaireachd seo 's lean ort leis an t-seann fhacal-fhaire.",
+       "passwordreset-emailtext-user": "Dh'iarr an cleachdaiche $1 air {{SITENAME}} ath-shuidheachadh an fhacail-fhaire air {{SITENAME}} ($4). Tha {{PLURAL:$3|an cunntas-cleachdaiche|na cunntasan-cleachdaiche}} a leanas co-cheangailte ris an t-seòladh puist-d seo:\n\n$2\n\nFalbhaidh an ùine air {{PLURAL:$3|an fhacal-fhaire shealach|na faclan-faire sealach}} seo an ceann $5 {{PLURAL:$5|latha|latha|làithean|latha}}.\nBu chòir dhut logadh a-steach agus facal-faire ùr a thaghadh an-dràsta. Ma dh'iarr cuideigin eile seo no ma chuimhnich thu air an fhacal-fhaire agad 's mur eil thu airson atharrachadh tuilleadh, leig seachad an teachdaireachd seo 's lean ort leis an t-seann fhacal-fhaire.",
        "passwordreset-emailelement": "Ainm-cleachdaiche: $1\nFacal-faire sealach: $2",
        "passwordreset-emailsent": "Chaidh post-d airson ath-shuidheachadh an fhacail-fhaire a chur.",
        "passwordreset-emailsent-capture": "Chaidh post-d a chum ath-shuidheachadh an fhacail-fhaire a chur agus chì thu sin gu h-ìosal.",
        "changeemail": "Atharraich am post-d",
        "changeemail-header": "Atharraich cunntas a' phuist-d",
        "changeemail-text": "Lìon am foirm seo gus am post-d agad atharrachadh. Feumaidh tu am facal-faire agad a chur a-steach a-rithist gus a dhearbhadh.",
-       "changeemail-no-info": "Feumaidh tu clàradh a-steach mus dèan thu inntrigeadh dìreach dhan duilleag seo.",
+       "changeemail-no-info": "Feumaidh tu logadh a-steach mus dèan thu inntrigeadh dìreach dhan duilleag seo.",
        "changeemail-oldemail": "An seòladh puist-d làithreach:",
        "changeemail-newemail": "An seòladh puist-d ùr:",
        "changeemail-none": "(chan eil gin)",
        "changeemail-password": "Am facal-faire agad air {{SITENAME}}:",
        "changeemail-submit": "Atharraich am post-d",
        "changeemail-cancel": "Sguir dheth",
-       "changeemail-throttled": "Dh'fheuch thu ri clàradh a-steach ro thric.\nFuirich ort $1 mus feuch thu ris a-rithist.",
+       "changeemail-throttled": "Dh'fheuch thu ri logadh a-steach ro thric.\nFuirich ort $1 mus feuch thu ris a-rithist.",
        "resettokens": "Ath-shuidhich na tòcanan",
        "resettokens-text": "'S urrainn dhut tòcanan ath-shuidheachadh a bheir cothrom dhut air cuid a dhàta prìobhaideach a tha co-cheangailte ris a' chunntas agad.\n\nBu chòir dhut seo a dhèanamh ma thug thu do chuideigin e air mhearachd no ma bhris cuideigin a-steach air a' chunntas agad.",
        "resettokens-no-tokens": "Chan eil tòcan ann a ghabhas ath-shuidheachadh.",
        "preview": "Ro-shealladh",
        "showpreview": "Seall an ro-shealladh",
        "showdiff": "Seall na mùthaidhean",
-       "anoneditwarning": "<strong>Rabhadh:</strong> Chan eil thu air logadh a-steach.\nThèid an seòladh IP agad a chlàrachadh ann an eachdraidh na duilleige seo.",
-       "anonpreviewwarning": "<em>Chan eil thu air clàradh a-steach. Ma nì thu sàbhaladh, thèid an seòladh IP agad a chlàradh ann an eachdraidh deasachadh na duilleige seo.</em>",
+       "anoneditwarning": "<strong>Rabhadh:</strong> Chan eil thu air logadh a-steach.\nThèid an seòladh IP agad a chlàradh ann an eachdraidh na duilleige seo.",
+       "anonpreviewwarning": "<em>Chan eil thu air logadh a-steach. Ma nì thu sàbhaladh, thèid an seòladh IP agad a chlàradh ann an eachdraidh deasachadh na duilleige seo.</em>",
        "missingsummary": "<strong>Cuimhnich:</strong> Cha dug thu seachad gearr-chunntas air na dh'atharraich thu.\nMa bhriogas tu air \"{{int:savearticle}}\" a-rithist, thèid na dheasaich thu a shàbhaladh as aonais gearr-chunntais.",
        "missingcommenttext": "Cuir a-steach beachd gu h-ìosal.",
        "missingcommentheader": "<strong>Cuimhnich:</strong> Cha dug thu seachad cuspair/ceann airson a' bheachd seo.\nMa bhriogas tu air \"{{int:savearticle}}\" a-rithist, thèid na dheasaich thu a shàbhaladh as aonais.",
        "confirmedittext": "Feumaidh tu am post-d agad a dhearbhadh mus urrainn dhut duilleagan a dheasachadh.\nSuidhich is dearbhaich am post-d agad ann an [[Special:Preferences|roghainnean a' chleachdaiche]]",
        "nosuchsectiontitle": "Cha ghabh an earrann a lorg",
        "nosuchsectiontext": "Dh'fheuch thu ri earrann a dheasachadh nach eil ann.\nDh'fhaoidte gun deach a ghluasad no a sguabadh às fhad 's a bha thu a' coimhead air an duilleag.",
-       "loginreqtitle": "Feumaidh tu clàradh a-steach",
+       "loginreqtitle": "Feumaidh tu logadh a-steach",
        "loginreqlink": "log a-steach",
        "loginreqpagetext": "Feumaidh tu $1 mus urrainn dhut coimhead air duilleagan eile.",
        "accmailtitle": "Facal-faire air a chur.",
-       "accmailtext": "Chaidh facal-faire a chruthachadh air thuaiream airson [[User talk:$1|$1]] 's a chur gu $2.\n\nGabhaidh am facal-faire airson a' chunntais ùir seo atharrachadh air an fo <em>[[Special:ChangePassword|atharraich facal-faire]]</em> às dèidh dhan chleachdaiche clàradh a-steach.",
+       "accmailtext": "Chaidh facal-faire a chruthachadh air thuaiream airson [[User talk:$1|$1]] 's a chur gu $2.\n\nGabhaidh am facal-faire airson a' chunntais ùir seo atharrachadh air an fo <em>[[Special:ChangePassword|atharraich facal-faire]]</em> às dèidh dhan chleachdaiche logadh a-steach.",
        "newarticle": "(Ùr)",
        "newarticletext": "Lean thu ri ceangal gu duilleag nach eil ann fhathast.\nCuir teacs sa bhogsa gu h-ìosal gus an duilleag seo a chruthachadh (seall air [$1 duilleag na cobharach] airson barrachd fiosrachaidh).\nMura robh dùil agad ris an duilleag seo a ruigsinn, briog air a' phutan <strong>air ais</strong> 'nad bhrabhsair.",
-       "anontalkpagetext": "----\n<em>Seo an duilleag deasbaireachd aig cleachdaiche gun urra nach do chruthaich cunntas fhathast no nach eil 'ga chleachdadh.</em>\nFeumaidh sinn an àireamh IP aca a chleachdadh air sgàth sin.\nFaodadh grunn chleachdaichean seòladh IP mar a chleachdadh còmhla.\nMas e cleachdaiche gun urra a tha annad 's ma tha thu dhen bheachd nach eil na beachdan seo a' buntainn riut, nach [[Special:UserLogin/signup|clàraich thu]] no [[Special:UserLogin|clàraich a-steach]] gus bùrach mar seo a sheachnadh san àm ri teachd?",
+       "anontalkpagetext": "----\n<em>Seo an duilleag deasbaireachd aig cleachdaiche gun urra nach do chruthaich cunntas fhathast no nach eil 'ga chleachdadh.</em>\nFeumaidh sinn an àireamh IP aca a chleachdadh air sgàth sin.\nFaodadh grunn chleachdaichean seòladh IP mar a chleachdadh còmhla.\nMas e cleachdaiche gun urra a tha annad 's ma tha thu dhen bheachd nach eil na beachdan seo a' buntainn riut, nach [[Special:UserLogin/signup|clàraich thu]] no nach dèan thu [[Special:UserLogin|logadh a-steach]] gus bùrach mar seo a sheachnadh san àm ri teachd?",
        "noarticletext": "Chan eil teacsa sam bith anns an duilleag seo an-dràsta.\n'S urrainn dhut [[Special:Search/{{PAGENAME}}|an tiotal seo a lorg]] ann an duilleagan eile,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} na logaichean co-cheangailte a rannsachadh],\nno [{{fullurl:{{FULLPAGENAME}}|action=edit}} an duilleag seo a dheasachadh]</span>.",
        "noarticletext-nopermission": "Chan eil teacsa sam bith san duilleag seo an-dràsta.\n'S urrainn dhut [[Special:Search/{{PAGENAME}}|tiotal na duilleige seo a lorg]] ann an duilleagan eile, no <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} na logaichean co-cheangailte a rannsachadh]</span> ach chan eil cead agad an duilleag seo a chruthachadh.",
        "missing-revision": "Chan eil mùthadh #$1 na duilleige \"{{FULLPAGENAME}}\" ann.\n\nMar is trice, tachraidh seo ma leanas tu ceangal san eachdraidh a tha fìor aosta 's a tha a' dol gu duilleag a chaidh a sguabadh às.\nGheibh thu mion-fhiosrachadh ann an [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} loga nan duilleagan a chaidh a sguabadh às].",
        "previewnote": "<strong>Cuimhnich nach eil ann ach ro-shealladh.</strong>\nCha deach na mùthaidhean agad a shàbhaladh fhathast!",
        "continue-editing": "Rach gun raon deasachaidh",
        "previewconflict": "Tha an ro-shealladh seo a' sealltainn dhut an teacsa san raon teacsa gu h-àrd mar a nochdas e ma shàbhaileas tu an-dràsta.",
-       "session_fail_preview": "<strong>Duilich! Cha b' urrainn dhuinn na dheasaich thu a làimhseachadh air sgàth call dàta an t-seisein.</strong>\nNach fheuch thu ris a-rithist?\nMur obraich e fhathast, feuch is [[Special:UserLogout|clàraich a-mach]] is a-steach a-rithist an uairsin.",
-       "session_fail_preview_html": "<strong>Duilich! Cha b' urrainn dhuinn na dheasaich thu a làimhseachadh air sgàth call dàta an t-seisein.</strong>\n\n<em>A chionn 's gun do chuir {{SITENAME}} còd HTML an comas, tha an ro-shealladh falaichte mar dhìon an aghaidh ionnsaighean JavaScript.</em>\n\n<strong>Mas e deasachadh dligheach a tha seo, feuch ris a-rithist.</strong>\nMur obraich e fhathast, feuch is [[Special:UserLogout|clàraich a-mach]] is a-steach a-rithist an uairsin.",
+       "session_fail_preview": "<strong>Duilich! Cha b' urrainn dhuinn na dheasaich thu a làimhseachadh air sgàth call dàta an t-seisein.</strong>\nNach fheuch thu ris a-rithist?\nMur obraich e fhathast, feuch is [[Special:UserLogout|log a-mach]] is a-steach a-rithist an uairsin.",
+       "session_fail_preview_html": "<strong>Duilich! Cha b' urrainn dhuinn na dheasaich thu a làimhseachadh air sgàth call dàta an t-seisein.</strong>\n\n<em>A chionn 's gun do chuir {{SITENAME}} còd HTML an comas, tha an ro-shealladh falaichte mar dhìon an aghaidh ionnsaighean JavaScript.</em>\n\n<strong>Mas e deasachadh dligheach a tha seo, feuch ris a-rithist.</strong>\nMur obraich e fhathast, feuch is dèan [[Special:UserLogout|logadh a-mach]] is a-steach a-rithist an uairsin.",
        "token_suffix_mismatch": "<strong>Dhiùlt sinn na dheasaich thu a chionn 's gun do chuir an cliant agad na caractaran puingeachaidh tro chèile san tòcan deasachaidh.</strong>\nDhiùlt sinn na dheasaich thu air eagal 's gun coirbeadh e teacsa na duilleige.\nTachraidh seo uaireannan ma chleachdar seirbheis-lìn progsaidh gun urra a tha làn de mhearachdan.",
        "edit_form_incomplete": "<strong>Cha do ràinig cuid dhen fhoirm deasachaidh am frithealaichte; dèan cinnteach gu bheil gach deasachadh agad slàn is feuch ris a-rithist.</strong>",
        "editing": "A' deasachadh $1",
        "protectedpagewarning": "<strong>Rabhadh: Chaidh an duilleag seo a dhìon 's chan urrainn ach dhan fheadhainn aig a bheil ùghdarras rianaire a dheasachadh.</strong>\nChì thu an clàr mu dheireadh san loga mar fhiosrachadh dhut gu h-ìosal:",
        "semiprotectedpagewarning": "<strong>An aire:</strong> Chaidh an duilleag seo a dhìon 's chan fhaod ach cleachdaichean clàraichte a dheasachadh.\nSeo an rud mu dheireadh san loga mar fhiosrachadh dhut:",
        "cascadeprotectedwarning": "<strong>Rabhadh:</strong> Chaidh an duilleag seo a dhìon 's chan fhaod ach rianairean a dheasachadh a chionn 's gun robh e am broinn {{PLURAL:$1|na duilleige|nan duilleagan}} a leanas a tha dìonta o bhith mar eas.",
-       "titleprotectedwarning": "<strong>Rabhadh: Chaidh an duilleag seo a dhìon 's feumar [[Special:ListGroupRights|còraichean sònraichte]] gus a dheasachadh.</strong>\nSeo an rud mu dheireadh san loga mar fhiosrachadh dhut:",
+       "titleprotectedwarning": "<strong>Rabhadh: Chaidh an duilleag seo a dhìon 's feumar [[Special:ListGroupRights|ceadan sònraichte]] gus a dheasachadh.</strong>\nSeo an rud mu dheireadh san loga mar fhiosrachadh dhut:",
        "templatesused": "Tha {{PLURAL:$1|teamplaid 'ga cleachdadh|teamplaidean 'gan cleachdadh}} air an duilleag seo:",
        "templatesusedpreview": "Tha {{PLURAL:$1|teamplaid 'ga cleachdadh|teamplaidean 'gan cleachdadh}} san ro-shealladh seo:",
        "templatesusedsection": "Tha {{PLURAL:$1|teamplaid 'ga cleachdadh|teamplaidean 'gan cleachdadh}} san earrann seo:",
        "hiddencategories": "Tha an duilleag seo 'na ball de {{PLURAL:$1|$1 roinn-seòrsa fhalaichte|$1 roinn-seòrsa fhalaichte|$1 roinnean-seòrsa falaichte|$1 roinn-seòrsa fhalaichte}}:",
        "edittools": "<!-- Nochdaidh an teacsa seo fo fhoirmean deasachaidh 's luchdaidh suas. -->",
        "edittools-upload": "-",
-       "nocreatetext": "Chuir {{SITENAME}} bacadh air cruthachadh de dhuilleagan ùra.\n'S urrainn dhut tilleadh is duilleag a tha ann mu thràth a dheasachadh no [[Special:UserLogin|clàradh a-steach no cunntas a chruthachadh]].",
+       "nocreatetext": "Chuir {{SITENAME}} bacadh air cruthachadh de dhuilleagan ùra.\n'S urrainn dhut tilleadh is duilleag a tha ann mu thràth a dheasachadh no [[Special:UserLogin|logadh a-steach no cunntas a chruthachadh]].",
        "nocreate-loggedin": "Chan eil cead agad duilleagan ùra a chruthachadh.",
        "sectioneditnotsupported-title": "Chan eil taic ri deasachadh earrannan",
        "sectioneditnotsupported-text": "Chan eil taic ri deasachadh earrannan air an duilleag seo.",
        "mergehistory-empty": "Chan eil mùthadh sam bith ann a ghabhas a cho-aonadh.",
        "mergehistory-success": "Chaidh $3 {{PLURAL:$3|mhùthadh|mhùthadh|mùthaidhean|mùthadh}} air [[:$1]] a cho-aonadh dha [[:$2]].",
        "mergehistory-fail": "Cha ghabh an eachdraidh a cho-aonadh, thoir sùil air paramadairean na duilleige 's an ama.",
+       "mergehistory-fail-toobig": "Cha b' urrainn dhuinn an eachdraidh a cho-aonachadh on a bhiodh barrachd na tha ceadaichte de $1 {{PLURAL:$1|mhùthadh|mhùthadh|mùthaidhean|mùthadh}} a ghluasad.",
        "mergehistory-no-source": "Chan eil an tùs-duilleag $1 ann.",
        "mergehistory-no-destination": "Chan eil an an duilleag targaide $1 ann.",
        "mergehistory-invalid-source": "Feumaidh an tùs-duilleag a bhith 'na thiotal dligheach.",
        "searchall": "a h-uile",
        "showingresults": "A' sealltainn suas ri <strong>$1</strong> {{PLURAL:$1|toradh|thoradh|toraidhean|toradh}} gu h-ìosal a' tòiseachadh le àireamh <strong>$2</strong>.",
        "showingresultsinrange": "A' sealltainn suas ri <strong>$1</strong> {{PLURAL:$1|toradh|thoradh|toraidhean|toradh}} san rainse eadar àireamh <strong>$2</strong> is <strong>$3</strong>.",
-       "showingresultsnum": "A' sealltainn <strong>$3</strong> {{PLURAL:$3|toradh|thoradh|toraidhean|toradh}} gu h-ìosal a' tòiseachadh le àireamh <strong>$2</strong>.",
        "showingresultsheader": "{{PLURAL:$5|Toradh <strong>$1</strong> à <strong>$3</strong>|Toraidhean <strong>$1 - $2</strong> à <strong>$3</strong>}} airson <strong>$4</strong>",
        "search-nonefound": "Cha do fhreagair toradh sam bith ri d' iarrtas.",
        "powersearch-legend": "Rannsachadh adhartach",
        "datedefault": "Gun roghainnean",
        "prefs-labs": "Feartan nan deuchainn-lannan",
        "prefs-user-pages": "Duilleagan a' chleachdaiche",
-       "prefs-personal": "Pròifil a' chleachdaiche",
+       "prefs-personal": "Pròifil",
        "prefs-rc": "Mùthaidhean ùra",
        "prefs-watchlist": "An clàr-faire",
        "prefs-watchlist-days": "Co mheud latha a sheallar air a' chlàr-fhaire:",
        "prefs-rendering": "Coltas",
        "saveprefs": "Sàbhail",
        "restoreprefs": "Aisig na roghainnean bunaiteach uile (anns gach earrann)",
-       "prefs-editing": "A' deasachadh",
+       "prefs-editing": "Deasachadh",
        "rows": "Sreathan",
        "columns": "Colbhan",
        "searchresultshead": "Lorg",
        "prefs-memberingroups-type": "$1",
        "prefs-registration": "Àm clàraidh:",
        "prefs-registration-date-time": "$1",
-       "yourrealname": "An dearbh ainm a th' ort:",
+       "yourrealname": "D' fhìor-ainm:",
        "yourlanguage": "Cànan:",
        "yourvariant": "Eug-samhail cànan na susbaint:",
        "prefs-help-variant": "Do roghainn eug-samhail sgrìobhaidh a thèid duilleagan na h-uicipeid seo a shealltainn innte.",
        "prefs-help-signature": "Bu chòir dhut d' ainm a chur ri beachdan air duilleagan deasbaireachd le \"<nowiki>~~~~</nowiki>\" agus chithear d' ainm agus stampa ama 'na àite an uairsin.",
        "badsig": "Tha co-chàradh an t-soidhnidh mì-dhligheach.\nThoir sùil air na tagaichean HTML.",
        "badsiglength": "Tha an t-earr-sgrìobhadh agad ro fhada.\nChan fhaod e a bhith nas fhaide na $1 {{PLURAL:$1|charactar|charactar|caractaran|caractar}}.",
-       "yourgender": "Dè a' ghnè a tha annad:",
+       "yourgender": "Do ghnè:",
        "gender-unknown": "B' fhearr leam gun a bhith 'ga leigeil ris",
        "gender-male": "Deasaichidh e duilleagan na h-uicidh",
        "gender-female": "Deasaichidh i duilleagan na h-Uicipeid",
        "right-passwordreset": "Cead gus puist-d ath-shuidheachadh nam facal-faire a shealltainn",
        "newuserlogpage": "Loga cruthachadh nan cleachdaichean",
        "newuserlogpagetext": "Seo loga nan cleachdaichean a chaidh a chruthachadh.",
-       "rightslog": "Loga còraichean a' chleachdaiche",
+       "rightslog": "Loga ceadan a' chleachdaiche",
        "rightslogtext": "Seo loga nan atharraichean air ceadan nan cleachdaichean.",
        "action-read": "leugh an duilleag seo",
        "action-edit": "deasaich an duilleag seo",
        "recentchangeslinked-feed": "Mùthaidhean buntainneach",
        "recentchangeslinked-toolbox": "Mùthaidhean buntainneach",
        "recentchangeslinked-title": "Mùthaidhean co-cheangailte ri \"$1\"",
-       "recentchangeslinked-summary": "Seo liosta nam mùthaidhean a chaidh a chur air duilleagan a tha a' ceangal o dhuilleag shònraichte (no ri buill ann an roinn-seòrsa sònraichte).\nTha duilleagan air [[Special:Watchlist|do chlàr-faire]] ann an litrichean <strong>troma</strong>.",
+       "recentchangeslinked-summary": "Seo liosta nam mùthaidhean a chaidh a chur air duilleagan a tha a' ceangal o dhuilleag shònraichte (no ri buill ann an roinn-seòrsa sònraichte).\nTha duilleagan air a' [[Special:Watchlist|chlàr-fhaire]] agad ann an litrichean <strong>troma</strong>.",
        "recentchangeslinked-page": "Ainm na duilleige:",
        "recentchangeslinked-to": "Seall mùthaidhean nan duilleagan a tha a' ceangal ris an duilleag sin 'na àite",
        "upload": "Luchdaich suas faidhle",
        "filetype-unwanted-type": "Cha ghabh sinn ris an seòrsa faidhle <strong>\".$1\"</strong>.\nIs docha leinn {{PLURAL:$3|an seòrsa faidhle|na seòrsaichean faidhle}} $2.",
        "filetype-banned-type": "Chan eil <strong>\".$1\"</strong> {{PLURAL:$4|'na seòrsa faidhle|'nan seòrsaichean faidhle}} ceadaichte.\nIs $2 {{PLURAL:$3|an seòrsa faidhle|na seòrsaichean faidhle}} ceadaichte.",
        "filetype-missing": "Chan eil leudachan aig an fhaidhle (can \".jpg\").",
-       "empty-file": "Cha am faidhle a chuir thu a-null falamh.",
-       "file-too-large": "Cha am faidhle a chuir thu a-null ro mhòr.",
+       "empty-file": "Tha am faidhle a chuir thu a-null falamh.",
+       "file-too-large": "Tha am faidhle a chuir thu a-null ro mhòr.",
        "filename-tooshort": "Tha ainm an fhaidhle a chuir thu a-null ro ghoirid.",
        "filetype-banned": "Tha an seòrsa faidhle seo toirmisgte.",
        "verification-error": "Dh'fhàillig am faidhle seo an dearbhadh.",
        "windows-nonascii-filename": "Cha chuir an uicidh seo taic ri ainm faidhle sa bheil caractaran sònraichte.",
        "fileexists": "Tha faidhle ann mu thràth air a bheil an t-ainm seo, thoir sùil air <strong>[[:$1]]</strong> mur eil thu buileach cinnteach a bheil thu airson atharrachadh.\n[[$1|thumb]]",
        "filepageexists": "Chaidh duilleag an tuairisgeil airson na duilleige seo a chruthachadh air <strong>[[:$1]]</strong> mar-thà ach chan eil faidhle air a bheil an t-ainm seo ann an-dràsta.\nCha nochd an gearr-chunntas a chuireas tu a-steach air duilleag an tuairisgeil.\nFeumaidh tu a dheasachadh a làimh ach an nochd an gearr-chunntas agad an-siud.\n[[$1|thumb]]",
-       "fileexists-extension": "Tha faidhle ann air a bheil ainm a tha coltach ris: [[$2|thumb]]\n* Ainm an fhaidhle 'ga luchdadh suas: <strong>[[:$1]]</strong>\n* Ainm an fhaidhle a tha ann: <strong>[[:$2]]</strong>\nFeuch an tagh thu ainm eile.",
+       "fileexists-extension": "Tha faidhle ann air a bheil ainm a tha coltach ris: [[$2|thumb]]\n* Ainm an fhaidhle 'ga luchdadh suas: <strong>[[:$1]]</strong>\n* Ainm an fhaidhle a tha ann: <strong>[[:$2]]</strong>\nNach tagh thu ainm nas diofraichte uaithe?",
        "fileexists-thumbnail-yes": "Tha coltas an deilbh le meud lùghdaichte <em>(dealbhag)</em> air an fhaidhle seo.\n[[$1|thumb]]\nThoir sùil air an fhaidhle <strong>[[:$1]]</strong>.\nMas e an aon dealbh a tha san fhaidhle sin ach air meud tùsail, cha leig thu leas dealbhag a bharrachd a luchdadh suas.",
        "file-thumbnail-no": "Tha ainm an fhaidhle a' tòiseachadh le <strong>$1</strong>.\nTha coltas an deilbh le meud lùghdaichte <em>(dealbhag)</em> air.\nMa tha an dealbh agad le dùmhlachd-bhreacaidh shlàn, feuch an luchdaich thu am fear ud suas 's mur eil, feuch an atharraich thu ainm an fhaidhle.",
        "fileexists-forbidden": "Tha faidhle air a bheil an t-ainm seo ann mar-thà 's cha ghabh sgrìobhadh thairis air.\nMa tha thu airson am faidhle agad a luchdadh suas fhathast, rach air ais 's cleachd ainm ùr.\n[[File:$1|thumb|center|$1]]",
        "backend-fail-store": "Cha b' urrainn dhuinn am faidhle \"$1\" a stòradh air \"$2\".",
        "backend-fail-copy": "Cha b' urrainn dhuinn lethbhreac dhen fhaidhle \"$1\" a chur gu \"$2\".",
        "backend-fail-move": "Cha b' urrainn dhuinn am faidhle \"$1\" a ghluasad gu \"$2\".",
-       "backend-fail-opentemp": "Cha deach leinn faidhle sealach fhosgladh.",
+       "backend-fail-opentemp": "Cha deach leinn faidhle sealach fhosgladh.",
        "backend-fail-writetemp": "Cha deach leinn sgrìobhadh san fhaidhle sealach.",
        "backend-fail-closetemp": "Cha deach leinn am faidhle sealach a dhùnadh.",
        "backend-fail-read": "Cha b' urrainn dhuinn am faidhle \"$1\" a leughadh.",
        "backend-fail-create": "Cha b' urrainn dhuinn sgrìobhadh san fhaidhle \"$1\".",
        "backend-fail-maxsize": "Cha b' urrainn dhuinn am faidhle \"$1\" a sgrìobhadh on a tha e nas motha na $2 {{PLURAL:$2|bhaidht|bhaidht|baidhtichean|baidht}}.",
        "backend-fail-readonly": "Chan eil backend an stòraidh \"$1\" ach ri leughadh a-mhàin an-dràsta. Seo as adhbhar: \"<em>$2</em>\"",
-       "backend-fail-synced": "Cha am faidhle \"$1\" ann an staid mì-chòrdail a thaobh nam backends stòraidh inntearnail.",
+       "backend-fail-synced": "Tha am faidhle \"$1\" ann an staid mì-chòrdail a thaobh nam backends stòraidh inntearnail.",
        "backend-fail-connect": "Cha deach leinn ceangal ri backend an stòraidh \"$1\".",
        "backend-fail-internal": "Chathair mearachd neo-aithnichte le backend an stòraidh \"$1\".",
        "backend-fail-contenttype": "Cha deach leinn faighinn a-mach dè an seòrsa susbaint a tha san fhaidhle ri stòradh air \"$1\".",
        "zip-bad": "Tha am faidhle ZIP coirbte no cha ghabh a leughadh air adhbhar eile air choireigin.\nChan urrainn dhuinn dearbhadh mar bu chòir a bheil e tèarainte gus nach eil.",
        "zip-unsupported": "Tha am faidhle ZIP seo a' chleachdadh feartan ZIP ris nach cuir MediaWiki taic.\nChan urrainn dhuinn dearbhadh mar bu chòir a bheil e tèarainte gus nach eil.",
        "uploadstash": "Tasgadan an luchdaidh suas",
+       "uploadstash-summary": "Bheir an duilleag seo inntrigeadh dhut a dh'fhaidhlichean a chaidh a luchdadh suas no a tha 'gan luchdadh suas ach nach deach fhoillseachadh air an uicidh fhathast. Chan fhaic duine na faidhlichean seo ach an cleachdaiche a rinn an luchdadh suas.",
        "uploadstash-clear": "Glan na faidhlichean ann an tasgadan an luchdaidh suas",
        "uploadstash-nofiles": "Chan eil faidhle agad ann an tasgadan an luchdaidh suas.",
+       "uploadstash-badtoken": "Cha deach an gnìomh seo a choileanadh, 's dòcha air sgàth 's gun do dh'fhalbh an ùine air an teisteanas deasachaidh agad. Am feuch thu ris a-rithist?",
+       "uploadstash-errclear": "Cha deach leinn na faidhlichean a ghlanadh air falbh.",
+       "uploadstash-refresh": "Ath-nuadhaich liosta nam faidhlichean",
+       "invalid-chunk-offset": "Frith-àireamh a' chnaip mhì-dhligheach",
+       "img-auth-accessdenied": "Chaidh an t-inntrigeadh a dhiùltadh",
+       "img-auth-nopathinfo": "Tha PATH_INFO a dhìth.\nCha deach am frithealaiche agad a shuidheachadh ach an doireadh e am fiosrachadh seo seachad.\nDh'fhaoidte gu bheil e stèidhichte air CGI 's chan urrainn dha taic a chur ri img_auth.\nFaic https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
+       "img-auth-notindir": "Chan eil an t-slighe a chaidh iarraidh san t-slighe luchdaidh suas a chaidh a rèiteachadh.",
+       "img-auth-badtitle": "Cha ghabh tiotal dligheach a thogail o \"$1\".",
+       "img-auth-nologinnWL": "Chan eil thu air logadh a-steach 's chan eil \"$1\" air a' gheal-liosta.",
+       "img-auth-nofile": "Chan eil am faidhle \"$1\" ann.",
+       "img-auth-isdir": "Tha thu a' feuchainn ris a' phasgan \"$1\" inntrigeadh.\nChan fhaod thu ach faidhlichean inntrigeadh.",
+       "img-auth-streaming": "A' sruthadh \"$1\".",
+       "img-auth-public": "Nì img_auth.php às-chur airson faidhlichean o uicidh phrìobhaideach.\nChaidh an uicidh seo a rèiteachadh mar thè phoblach.\nChaidh img_auth.php a chur à comas a chum tèarainteachd.",
+       "img-auth-noread": "Chan eil cead inntrigidh aig a' chleachdaiche gus \"$1\" a leughadh.",
+       "http-invalid-url": "URL mì-dhligheach: $1",
+       "http-invalid-scheme": "Cha chuirear taic ri URLaichean leis an sgeama \"$1\".",
+       "http-request-error": "Dh'fhàillig leis an iarrtas HTTP ri linn mearachd neo-aithnichte.",
+       "http-read-error": "Mearachd leughadh HTTP.",
+       "http-timed-out": "Dh'fhalbh an ùine air an iarrtas HTTP.",
+       "http-curl-error": "Mearachd a' faighinn an URL: $1",
+       "http-bad-status": "Thachair duilgheadas rè an iarrtais HTTP: $1 $2",
+       "upload-curl-error6": "Cha deach leinn an URL a ruigsinn",
+       "upload-curl-error6-text": "Cha deach leinn an URL a chaidh a thoirt seachad a ruigsinn.\nDearbhaich gu bheil an URL mar bu chòir 's gu bheil an làrach ag obair.",
+       "upload-curl-error28": "Dh'fhalbh an ùine air an luchdadh suas",
+       "upload-curl-error28-text": "Thug an làrach seo ro fhada gus freagairt a thoirt.\nDearbhaich gu bheil an àrach ag obrachadh, fuirich greiseag 's feuch ris a-rithist.\n'S dòcha gum b' fheairrde thu feuchainn a-rithist nuair nach eil i cho trang.",
        "license": "Ceadachadh:",
        "license-header": "Ceadachadh",
        "nolicense": "Cha deach gin a thaghadh",
        "filehist-nothumb": "Gun dealbhag",
        "filehist-user": "Cleachdaiche",
        "filehist-dimensions": "Meud",
+       "filehist-filesize": "Meud an fhaidhle",
        "filehist-comment": "Beachd",
        "imagelinks": "Cleachdadh an fhaidhle",
        "linkstoimage": "Tha ceangal ris an fhaidhle seo {{PLURAL:$1|san duilleag|sna duilleagan}} a leanas:",
        "pageswithprop-prophidden-long": "chaidh luach fada aig buadh teacsa fhalach ($1)",
        "pageswithprop-prophidden-binary": "chaidh luach bìnearaidh fhalach ($1)",
        "doubleredirects": "Ath-seòlaidhean dùbailte",
+       "doubleredirectstext": "Seallaidh an duilleag seo na duilleagan dhut a nì ath-stiùireadh gu duilleag eile a tha 'na t-ath-stiùireadh.\nTha ceanglaichean dhan chiad 's dàrna ath-stiùireadh anns gach ràgh cho math ri ceann-uidhe an dàrna ath-stiùiridh a tha 'na \"fhìor\" dhuilleag-uidhe ris am bu chòir a' chiad duilleag a thomhadh mar as trice.\nChaidh innteartan le <del>loidhne tromhpa</del> fhuasgladh.",
        "double-redirect-fixed-move": "Chaidh [[$1]] a ghluasad.\nChaidh ùrachadh gu fèin-obrachail 's nì e ath-stiùireadh gu [[$2]] a-nis.",
        "double-redirect-fixed-maintenance": "A' càradh ath-stiùireadh dùblaichte o [[$1]] gu [[$2]] gu fèin-obrachail le obair-càraidh.",
        "double-redirect-fixer": "Càraichear nan ath-stiùiridhean",
        "wantedpages": "Duilleagan a thathar 'gan iarraidh",
        "wantedpages-badtitle": "Tha tiotal mì-dhligheach am measg nan toraidhean: $1",
        "wantedfiles": "Faidhlichean a thathar 'gan iarraidh",
+       "wantedfiletext-cat": "Tha na faidhlichean a leanas 'gan cleachdadh ach chan eil iad ann. Dh'fhaoidte gum bi faidhlichean o ionadan-tasgaidh cèine 'gan sealltainn an-seo ged a tha iad ann. Bidh <del>loidhne tro</del> na toraidhean a bharrachd seo. A bharrachd air sin, chì thu na duilleagan sa bhios faidhlichean nach eil ann leabaichte air [[:$1]].",
+       "wantedfiletext-nocat": "Tha na faidhlichean a leanas 'gan cleachdadh ach chan eil iad ann. Dh'fhaoidte gum bi faidhlichean o ionadan-tasgaidh cèine 'gan sealltainn an-seo ged a tha iad ann. Bidh <del>loidhne tro</del> na toraidhean a bharrachd seo.",
        "wantedtemplates": "Teamplaidean a thathar 'gan iarraidh",
        "mostlinked": "Na duilleagan ris a bheil an àireamh as motha de cheanglaichean",
        "mostlinkedcategories": "Na roinnean-seòrsa ris a bheil an àireamh as motha de cheanglaichean",
        "deadendpagestext": "Cha dèan na duilleagan seo ceangal gu duilleag sam bith eile air {{SITENAME}}.",
        "protectedpages": "Duilleagan fo dhìon",
        "protectedpages-indef": "Dìonan buana a-mhàin",
+       "protectedpages-summary": "Chì thu na duilleagan a tha ann 's gan dìon an-seo. Faic [[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]] airson liosta dhe na tiotalan a tha 'gan dìon o chruthachadh.",
        "protectedpages-cascade": "Dìonan o bhith mar eas a-mhàin",
+       "protectedpages-noredirect": "Falaich ath-sheòlaidhean",
+       "protectedpagesempty": "Chan eil duilleag 'ga dhìon leis na paramadairean seo aig an àm seo.",
+       "protectedpages-timestamp": "Stampa-tìde",
+       "protectedpages-page": "Duilleag",
+       "protectedpages-expiry": "Falbhaidh an ùine air",
+       "protectedpages-performer": "An cleachdaiche a rinn an dìon",
+       "protectedpages-params": "Paramadairean an dìona",
+       "protectedpages-reason": "Adhbhar",
+       "protectedpages-unknown-timestamp": "Chan eil fhios",
+       "protectedpages-unknown-performer": "Cleachdaiche neo-aithnichte",
+       "protectedtitles": "Tiotalan fo dhìon",
+       "protectedtitles-summary": "Chì thu na tiotalan a tha fo dhìon o chruthachadh air an duilleag seo. Chì thu na duilleagan a tha ann aig an àm seo 's a tha fo dìon air [[{{#special:ProtectedPages}}|{{int:protectedpages}}]].",
+       "protectedtitlesempty": "Chan eil tiotal 'ga dhìon leis na paramadairean seo aig an àm seo.",
        "listusers": "Liosta nan cleachdaichean",
+       "listusers-editsonly": "Na seall ach cleachdaichean a rinn deasachadh",
+       "listusers-creationsort": "Seòrsaich a-rèir ceann-là a' chruthachaidh",
+       "listusers-desc": "Seòrsaich a' teàrnadh",
        "usereditcount": "$1 {{PLURAL:$1|deasachadh|dheasachadh|deasachaidhean|deasachadh}}",
        "usercreated": "Air a chruthachadh $1 $2",
        "newpages": "Duilleagan ùra",
        "ancientpages": "Duilleagan as sìne",
        "move": "Gluais",
        "movethispage": "Gluais an duilleag seo",
+       "unusedimagestext": "Tha na faidhlichean a leanas ann ach cha deach an leabachadh ann an duilleag sam bith.\nThoir an aire gun dèan làraichean-lìn eile ceangal gu faidhlichean ma dh'fhaoidte le URL dìreach 's mar sin dh'fhaoidte gun dèid an cleachdadh fhathast ged a nochdas iad an-seo.",
        "unusedcategoriestext": "Tha na duilleagan roinn-seòrsa seo ann ged nach cleachd duilleag no roinn-seòrsa sam bith eile iad.",
+       "notargettitle": "Gun cheann-uidhe",
+       "notargettext": "Cha dug thu seachad duilleag-uidhe no cleachdaiche air an dèanamaid an gnìomh seo.",
+       "nopagetitle": "Chan eil an duilleag-uidhe ann",
+       "nopagetext": "Chan eil an duilleag-uidhe a thug thu seachad ann.",
        "pager-newer-n": "{{PLURAL:$1|an $1 nas ùire|na $1 nas ùire}}",
        "pager-older-n": "{{PLURAL:$1|an $1 nas sine|na $1 nas sine}}",
        "suppress": "Marasgal",
+       "querypage-disabled": "Chaidh an duilleag shònraichte seo a chur à comas a chum dèanadais.",
        "booksources": "Tùsan a tha 'nan leabhraichean",
        "booksources-search-legend": "Lorg tùsan a tha 'nan leabhraichean",
+       "booksources-isbn": "ISBN:",
        "booksources-go": "Siuthad",
+       "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:",
+       "speciallogtitlelabel": "Ceann-uidhe (tiotal no cleachdaiche):",
        "log": "Logaichean",
        "all-logs-page": "A h-uile loga poblach",
+       "alllogstext": "Sealladh co-mheasgaichte dhen a h-uile loga aig {{SITENAME}} a tha ri làimh.\n'S urrainn dhut an sealladh a chuingeachadh 's tu a' taghadh seòrsa an loga, ainm a' chleachdaiche (le aire do litrichean mòra 's beaga) no an duilleag a tha fo bhuaidh (le aire do litrichean mòra 's beaga).",
        "logempty": "Chan eil rud sam bith san loga a tha 'ga mhaidseadh.",
+       "log-title-wildcard": "Lorg sna tiotalan a thòisicheas leis an teacsa seo",
        "showhideselectedlogentries": "Seall/Falaich innteartan an loga a thagh thu",
        "allpages": "A h-uile duilleag",
        "nextpage": "An ath dhuilleag ($1)",
        "prevpage": "An duilleag roimhe ($1)",
-       "allpagesfrom": "Seall duilleagan a tha a' tòiseachadh aig:",
+       "allpagesfrom": "Seall duilleagan o seo a-mach:",
        "allpagesto": "Seall duilleagan a tha a' crìochnachadh aig:",
        "allarticles": "A h-uile duilleag",
        "allinnamespace": "A h-uile duilleag (ainm-spàs $1)",
-       "allpagessubmit": "Rach",
+       "allpagessubmit": "Siuthad",
+       "allpagesprefix": "Seall na duilleagan leis an ro-leasachan:",
+       "allpagesbadtitle": "Chaidh tiotal duilleige mì-dhligheach a thoirt seachad no bha ro-leasachan eadar-cànain no eadar-uicidh aige.\nFaodaidh gu bheil aon no barrachd charactaran ann nach urrainn dhut a chleachdadh ann an tiotal.",
        "allpages-bad-ns": "Chan eil an t-ainm-spàs \"$1\" aig {{SITENAME}}.",
+       "allpages-hide-redirects": "Falaich ath-sheòlaidhean",
+       "cachedspecial-viewing-cached-ttl": "Chì thu an tionndadh dhen duilleag seo a tha san tasgadan 's a tha suas ri $1 a dh'aois, ma dh'fhaoidte.",
+       "cachedspecial-viewing-cached-ts": "Chì thu an tionndadh dhen duilleag seo a tha san tasgadan 's a tha caran sean, ma dh'fhaoidte.",
+       "cachedspecial-refresh-now": "Seall an tionndadh as ùire.",
        "categories": "Roinnean-seòrsa",
        "categoriespagetext": "Tha duilleagan no meadhan {{PLURAL:$1|san roinn-seòrsa|sna roinnean-seòrsa|}} a leanas.\nChan fhaicear [[Special:UnusedCategories|roinnean-seòrsa gun chleachdadh an-seo]].\nThoir sùil air na [[Special:WantedCategories|roinnean-seòrsa a thathar 'gan iarraidh cuideachd]].",
-       "categoriesfrom": "Seall roinnean-seòrsa a tha a' tòiseachadh aig:",
+       "categoriesfrom": "Seall roinnean-seòrsa o seo a-mach:",
+       "special-categories-sort-count": "seòrsaich a-rèir an uireid",
+       "special-categories-sort-abc": "seòrsaich a rèir na h-aibidil",
        "deletedcontributions": "Obair air a sguabadh às",
        "deletedcontributions-title": "Obair air a sguabadh às",
        "sp-deletedcontributions-contribs": "obair",
        "linksearch": "Lorg sna ceanglaichean dhan taobh a-muigh",
+       "linksearch-pat": "Pàtran an luirg:",
        "linksearch-ns": "Ainm-spàs:",
+       "linksearch-ok": "Lorg",
+       "linksearch-text": "'S urrainn dhut saoragan mar \"*.wikipedia.org\" a chleachdadh.\nBidh feum air air co-dhiù aon àrainn aig ìre as àirde, can \"*.org\".<br />\n{{PLURAL:$2|pròtacal|pròtacalan}} ris an cuirear taic: <code>$1</code> (http:// a ghnáth mur dèid pròtacal a shònrachadh).",
        "linksearch-line": "Tha $1 a' ceangal an-seo o $2",
+       "linksearch-error": "Chan fhaod saorag nochdadh ach aig toiseach ainm an òstair.",
+       "listusersfrom": "Seall cleachdaichean o seo a-mach:",
+       "listusers-submit": "Seall",
+       "listusers-noresult": "Cha deach cleachdaiche a lorg.",
+       "listusers-blocked": "('ga bhacadh)",
+       "activeusers": "Na cleachdaichean gnìomhach",
+       "activeusers-intro": "Seo liosta dhe na cleachdaichean a rinn gnìomh air choireigin am broinn {{PLURAL:$1|an $1 latha|an $1 latha|nan $1 làithean|an $1 latha}} mu dheireadh.",
+       "activeusers-count": "$1 {{PLURAL:$1|ghnìomh|ghnìomh|gnìomhan|gnìomh}} am broinn {{PLURAL:$3|an $3 latha|an $3 latha|nan $3 làithean|an $3 latha}} mu dheireadh.",
+       "activeusers-from": "Seall cleachdaichean o seo a-mach:",
+       "activeusers-hidebots": "Falaich na botaichean",
+       "activeusers-hidesysops": "Falaich na rianairean",
+       "activeusers-noresult": "Cha deach cleachdaiche a lorg.",
+       "listgrouprights": "Ceadan nam buidhnean chleachdaichean",
+       "listgrouprights-summary": "chì thu liosta dhe na buidhnean chleachdaichean a tha san uicidh seo 's na ceadan inntrigidh aca.\nDh'fhaoidte gu bheil [[{{MediaWiki:Listgrouprights-helppage}}|barrachd fiosrachaidh]] mu cheadan fa leth ann.",
        "listgrouprights-key": "Treòir:\n* <span class=\"listgrouprights-granted\">Cead a fhuair iad</span>\n* <span class=\"listgrouprights-revoked\">Cead air a thoirt uapa</span>",
+       "listgrouprights-group": "Buidheann",
+       "listgrouprights-rights": "Ceadan",
+       "listgrouprights-helppage": "Help:Ceadan nam buidhnean",
        "listgrouprights-members": "(liosta de bhuill)",
+       "listgrouprights-right-display": "<span class=\"listgrouprights-granted\">$1 <code>($2)</code></span>",
+       "listgrouprights-right-revoked": "<span class=\"listgrouprights-revoked\">$1 <code>($2)</code></span>",
+       "listgrouprights-addgroup": "Cuir {{PLURAL:$2|buidheann|buidhnean}} ris: $1",
+       "listgrouprights-removegroup": "Thoir {{PLURAL:$2|buidheann|buidhnean}} ar falbh: $1",
+       "listgrouprights-addgroup-all": "Cuir a h-uile buidheann ris",
+       "listgrouprights-removegroup-all": "Thoir a h-uile buidheann air falbh",
+       "listgrouprights-addgroup-self": "Cuir {{PLURAL:$2|buidheann|buidhnean}} ris a' chunntas agad fhèin: $1",
+       "listgrouprights-removegroup-self": "Thoir {{PLURAL:$2|buidheann|buidhnean}} air falbh on chunntas agad fhèin: $1",
+       "listgrouprights-addgroup-self-all": "Cuir a h-uile buidheann ris a' chunntas agad fhèin",
+       "listgrouprights-removegroup-self-all": "Thoir a h-uile buidheann air falbh on chunntas agad fhèin",
        "listgrouprights-namespaceprotection-header": "Cuingeachaidhean air ainm-spàs",
        "listgrouprights-namespaceprotection-namespace": "Ainm-spàs",
+       "listgrouprights-namespaceprotection-restrictedto": "Na bheir cead deasachaidh dhan chleachdaiche",
        "trackingcategories": "Roinnean-seòrsa tracaidh",
        "trackingcategories-summary": "Chì thu na roinnean-seòrsa tracaidh air an duilleag seo a thèid a chur riutha gu fèin-obrachail leis a' bhathar-bhog MediaWiki. 'S urrainn dhut na h-ainmean a tha orra atharrachadh 's tu ag atharrachadh teachdaireachdan an t-siostaim iomchaidh san ainm-spàs {{ns:8}}.",
        "trackingcategories-msg": "Roinn-seòrsa tracaidh",
+       "trackingcategories-name": "Ainm na teachdaireachd",
        "trackingcategories-desc": "Cuspairean-deuchainn gus roinnean-seòrsa a chur ris",
        "noindex-category-desc": "Cha dèid an duilleag seo a chur ris an inneacs luirg le botaichean on a tha am facal draoidheach <code><nowiki>__NOINDEX__</nowiki></code> air 's a tha i ann an ainm-spàs far a bheil a' bhratach seo ceadaichte.",
        "index-category-desc": "Tha <code><nowiki>__INDEX__</nowiki></code> air an duilleag seo ('s tha i ann an ainm-spàs far a bheil a' bhratach seo ceadaichte) 's mar sin thèid a chur ri inneacsan luirg le botaichean ged nach tachradh seo gu h-àbhaisteach.",
+       "post-expand-template-inclusion-category-desc": "Bhiodh an duilleag nas motha na <code>$wgMaxArticleSize</code> às dèidh a h-uile teamplaid a leudachadh 's mar sin cha deach a h-uile teamplaid a leudachadh.",
+       "post-expand-template-argument-category-desc": "Bidh an duilleag nas motha na  <code>$wgMaxArticleSize</code> às dèidh argamaid teamplaid a leudachadh (rudeigin eadar camagan dualach trìoblaichte, can <code>{{{Foo}}}</code>).",
+       "expensive-parserfunction-category-desc": "Tha cus foincseanan cosgail a' pharsair (can <code>#ifexist</code>) am broinn duilleige. Faic [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
        "broken-file-category-desc": "Thèid an roinn-seòrsa seo a chur ris nuair a bhios ceangal gu faidhle briste am broinn na duilleige (ceangal gus faidhle a leabachadh mur eil am faidhle ann).",
        "hidden-category-category-desc": "Seo ronn-seòrsa le <code><nowiki>__HIDDENCAT__</nowiki></code> oirre ach nach nochd i ann am bogsa nan ceanglaichean gu roinnean-seòrsa air na duilleagan o thùs.",
        "trackingcategories-nodesc": "Chan eil tuairisgeul ri làimh.",
        "trackingcategories-disabled": "Tha an roinn-seòrsa à comas",
+       "mailnologin": "Gun seòladh an t-seòladair",
+       "mailnologintext": "Feumaidh tu [[Special:UserLogin|logadh a-steach]] 's seòladh puist-d dligheach a bhith sna [[Special:Preferences|roghainnean]] agad mus cuir thu post-d gu cleachdaiche eile.",
        "emailuser": "Cuir post-dealain dhan chleachdaiche seo",
        "emailuser-title-target": "Cuir post-d dhan chleachdaiche seo",
+       "emailuser-title-notarget": "Cuir post-d gu cleachdaiche",
+       "emailpage": "Cuir post-d gun chleachdaiche",
+       "emailpagetext": "'S urrainn dhut am foirm gu h-ìosal a chleachdadh gus post-d a chur dhan chleachdaiche seo.\nNochdaidh an seòladh a chuir thu a-steach [[Special:Preferences|sna roghainnean agad]] mar an seòladh \"O\" sa post-d, mar sin 's urrainn dhan fhaightear freagairt a chur thugad gu dìreach.",
+       "defemailsubject": "Post-d on chleachdaiche \"$1\" air {{SITENAME}}",
+       "usermaildisabled": "Chaidh post-d nan cleachdaichean a chur à comas.",
+       "usermaildisabledtext": "Chan urrainn dhut post-d a chur gu cleachdaiche eile air an uicidh seo",
+       "noemailtitle": "Gun seòladh puist-d",
+       "noemailtext": "Cha dug an cleachdaiche seo seòladh puist-d dligheach seachad.",
+       "nowikiemailtext": "Chuir an cleachdaiche seo roimhe nach fhaigh e post-d o chleachdaiche eile.",
+       "emailnotarget": "Chan eil ainm-cleachdaiche an fhaighteir ann no tha e mì-dhligheach.",
+       "emailtarget": "Cuir a-steach ainm-cleachdaiche an fhaighteir",
        "emailusername": "Ainm-cleachdaiche:",
        "emailusernamesubmit": "Air adhart",
+       "email-legend": "Cuir post-d gu cleachdaiche eile air {{SITENAME}}",
        "emailfrom": "O:",
        "emailto": "Gu:",
        "emailsubject": "Cuspair:",
        "emailmessage": "Teachdaireachd:",
        "emailsend": "Cuir",
+       "emailccme": "Cuir lethbhreac dhen phost-d thugam.",
+       "emailccsubject": "Lethbhreac dhen teachdaireachd agad gu $1: $2",
+       "emailsent": "Post-d air a chur",
+       "emailsenttext": "Chaidh an teachdaireachd puist-d agad a chur.",
+       "emailuserfooter": "Chaidh am post-d seo a chur o $1 gu $2 leis an fheart \"cuir post-d gu cleachdaiche\" air {{SITENAME}}.",
+       "usermessage-summary": "A' fàgail teachdaireachd an t-siostaim.",
+       "usermessage-editor": "Teachdaire an t-siostaim",
+       "usermessage-template": "MediaWiki:UserMessage",
        "watchlist": "An clàr-faire",
        "mywatchlist": "An clàr-faire",
        "watchlistfor2": "aig $1 $2",
        "nowatchlist": "Chan eil rud sam bith air a' chlàr-fhaire agad.",
        "watchlistanontext": "$1 gus nithean air a' chlàr-fhaire agad a shealltainn no a dheasachadh.",
+       "watchnologin": "Chan eil thu air logadh a-steach",
        "addwatch": "Cuir air a' chlàr-fhaire",
-       "addedwatchtext": "Chaidh an duilleag \"[[:$1]]\" a chur ri [[Special:Watchlist|do chlàr-faire]].\nNochdaidh mùthaidhean a nithear air an duilleag seo 's air an duilleag deasbaireachd a tha co-cheangailte ris an-seo san àm ri teachd.",
+       "addedwatchtext": "Chaidh an duilleag \"[[:$1]]\" a chur ris a' [[Special:Watchlist|chlàr-fhaire]] agad.\nNochdaidh mùthaidhean a nithear air an duilleag seo 's air an duilleag deasbaireachd a tha co-cheangailte ris an-seo san àm ri teachd.",
        "addedwatchtext-short": "Chaidh an duilleag \"$1\" a chur ris a' chlàr-fhaire agad.",
        "removewatch": "Thoir air falbh on chlàr-fhaire",
-       "removedwatchtext": "Chaidh an duilleag \"[[:$1]]\" a thoirt air falbh o [[Special:Watchlist|do chlàr-faire]].",
+       "removedwatchtext": "Chaidh an duilleag \"[[:$1]]\" a thoirt air falbh on [[Special:Watchlist|chlàr-fhaire]] agad.",
        "removedwatchtext-short": "Chaidh an duilleag \"$1\" a thoirt ait falbh on chlàr-fhaire agad.",
        "watch": "Cum sùil air",
        "watchthispage": "Cum sùil air an duilleag seo",
        "enotif_body_intro_moved": "Chaidh duilleag $1 air {{SITENAME}} a ghluasad le $2 $PAGEEDITDATE, faic $3 airson a' mhùthaidh làithrich.",
        "enotif_body_intro_restored": "Chaidh duilleag $1 air {{SITENAME}} aiseag le $2 $PAGEEDITDATE, faic $3 airson a' mhùthaidh làithrich.",
        "enotif_body_intro_changed": "Chaidh duilleag $1 air {{SITENAME}} atharrachadh le $2 $PAGEEDITDATE, faic $3 airson a' mhùthaidh làithrich.",
+       "enotif_lastvisited": "Faic $1 airson gach atharrachadh on turas mu dheireadh a thadhail thu an-seo.",
+       "enotif_lastdiff": "Faic $1 gus coimhead air an atharrachadh seo.",
+       "enotif_anon_editor": "ball gun ainm $1",
        "enotif_body": "$WATCHINGUSERNAME, a charaid,\n\n$PAGEINTRO $NEWPAGE\n\nGearr-chunntas an deasaiche: $PAGESUMMARY $PAGEMINOREDIT\n\nCuir fios gun deasaiche:\npost-d: $PAGEEDITOR_EMAIL\nuicidh: $PAGEEDITOR_WIKI\n\nChan fhaigh thu brath-naidheachd eile air gnìomhan ach ma thadhaileas tu air an duilleag 's tu air logadh a-steach. 'S urrainn dhut cuideachd brataich nam brathan-naidheachd aiseag airson nan duilleagan uile a tha air a' chlàr-fhaire agad.\n\nSiostam càirdeil nam brath aig {{SITENAME}}\n\n--\nGus roghainnean nam brathan a gheibh thu air a' phost-d atharrachadh, tadhail air\n{{canonicalurl:{{#special:Preferences}}}}\n\nGus roghainnean a' chlàir-fhaire agad atharrachadh, tadhail air\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nGus duilleagan a thoirt far a' chlàir-fhaire agad, tadhail air\n$UNWATCHURL\n\nBeachdan thugainn 's barrachd taice:\n$HELPPAGE",
+       "created": "air a chruthachadh",
+       "changed": "air atharrachadh",
        "deletepage": "Sguab às duilleag",
        "confirm": "Daingnich",
        "excontent": "stuth a bh' ann: '$1'",
        "excontentauthor": "b' e: \"$1\" an t-susbaint (is \"[[Special:Contributions/$2|$2]]\" an aon deasaiche)",
+       "exbeforeblank": "an t-susbaint mus deach a bànachadh: \"$1\"",
        "delete-confirm": "Sguab às \"$1\"",
        "delete-legend": "Sguab às",
        "historywarning": "<strong>Rabhadh:</strong> Tha eachdraidh air an duilleag a tha thu airson sguabadh às sa bheil mu $1 {{PLURAL:$1|mhùthadh|mhùthadh|mùthaidhean|mùthadh}}:",
        "actionfailed": "Dh'fhàillig ort",
        "deletedtext": "Chaidh \"$1\" a sguabadh às.\nSeall air $2 airson clàr de dhuilleagan a chaidh a sguabadh às o chionn ghoirid.",
        "dellogpage": "Loga an sguabaidh às",
+       "dellogpagetext": "Seo liosta dhe na chaidh a sguabadh às o chionn goirid.",
+       "deletionlog": "loga an sguabaidh às",
        "reverted": "Air aiseag gu mùthadh nas sine",
        "deletecomment": "Adhbhar:",
        "deleteotherreason": "Adhbhar eile/a bharrachd:",
        "delete-edit-reasonlist": "Deasaich adhbharan sguabadh às",
        "delete-toobig": "Tha eachdraidh deasachaidh mòr aig an duilleag seo sa bheil barrachd air $1 {{PLURAL:$1|mhùthadh|mhùthadh|mùthaidhean|mùthadh}}.\nChaidh sguabadh às nan duilleagan dhen leithid a chuingeachadh ach na dèid cron a dhèanamh air {{SITENAME}} le mearachd.",
        "delete-warning-toobig": "Tha eachdraidh deasachaidh mòr aig an duilleag seo sa bheil barrachd air $1 {{PLURAL:$1|mhùthadh|mhùthadh|mùthaidhean|mùthadh}}.\nMa sguabas tu às dhi, dh'fhaoidte gun dèan thu cron air na gnìomhan stòr-dàta aig {{SITENAME}}; mar sin, thoir an aire.",
+       "deleting-backlinks-warning": "'''Rabhadh:''' Tha [[Special:WhatLinksHere/{{FULLPAGENAME}}|duilleag eile]] a' ceangal ris an duilleag a tha thu airson sguabadh às no 'ga gabhail a-steach 'na h-iomradh.",
        "rollback": "Roilig atharraichean air ais",
        "rollback_short": "Roladh air ais",
        "rollbacklink": "roilig air ais",
        "revertpage": "Deasachaidhean a chaidh a thilleadh leis [[Special:Contributions/$2|$2]] ([[User talk:$2|an deasbaireachd]]) dhan mhùthadh mu dheireadh le [[User:$1|$1]]",
        "revertpage-nouser": "Deasachaidhean a chaidh a thilleadh le cleachdaiche falaichte dhan mhùthadh mu dheireadh le [[User:$1|$1]]",
        "rollback-success": "Na deasachaidhean a chaidh a thilleadh le $1;\nchaidh an tilleadh gun mhùthadh mu dheireadh le $2.",
+       "sessionfailure-title": "Trioblaid leis an t-seisean",
+       "sessionfailure": "Tha duilgheadas ann leis an seisean logaidh a-steach agad a-rèir coltais;\nchaidh sgur dhen ghnìomh seo a chum dìon o session hijacking.\nTill dhan duilleag roimhpe, ath-luchdaich an duilleag ud 's feuch ris a-rithist an uairsin.",
        "protectlogpage": "Loga an dìon",
        "protectlogtext": "Tha liosta na chaidh a dhìon gu h-ìosal.\nCuir sùil air [[Special:ProtectedPages|liosta nan duilleagan fo dhìon]] airson liosta na fheadhainn a tha fo dhìon an-dràsta fhèin.",
        "protectedarticle": "\"[[$1]]\" air a dhìon",
        "modifiedarticleprotection": "a dh'atharraich an ìre dìon de \"[[$1]]\"",
        "unprotectedarticle": "a neo-dhìon \"[[$1]]\"",
-       "protect-title": "A' dìonadh \"$1\"",
-       "prot_1movedto2": "[[$1]] gluaiste ri [[$2]]",
+       "movedarticleprotection": "chaidh roghainn an dìona a ghluasad o \"[[$2]]\" gu \"[[$1]]\"",
+       "protect-title": "Atharraich an dìon airson \"$1\"",
+       "protect-title-notallowed": "Seall an dìon airson \"$1\"",
+       "prot_1movedto2": "chaidh [[$1]] a ghluasad gu [[$2]]",
        "protect-badnamespace-title": "Cha ghabh an t-ainm-spàs seo a dhìon",
        "protect-badnamespace-text": "Cha ghabh duilleagan san ainm-spàs seo a dhìon.",
+       "protect-norestrictiontypes-text": "Cha ghabh an duilleag seo a dhìon o nach eil seòrsa cuingeachaidh sam bith ri làimh.",
        "protect-norestrictiontypes-title": "Cha ghabh an duilleag seo a dhìon",
        "protect-legend": "Daingnich dìonadh",
        "protectcomment": "Adhbhar:",
        "protectexpiry": "Falbhaidh an ùine air:",
        "protect_expiry_invalid": "Tha an t-àm-crìochnachaidh mì-dhligheach.",
        "protect_expiry_old": "Tha an t-àm crìochnachaidh seachad mu thràth.",
+       "protect-unchain-permissions": "Thoir a' ghlas far na roghainnean dìona a bharrachd",
        "protect-text": "Chì thu an ìre dìon dhen duilleag <strong>$1</strong> an-seo agus is urrainn dhut atharrachadh an-seo.",
+       "protect-locked-blocked": "Chan urrainn dhut ìre an dìon atharrachadh rè bacaidh.\nSeo na roghainnean aig an duilleag <strong>$1</strong>:",
+       "protect-locked-dblock": "Chan urrainn dhut ìre an dìon atharrachadh on a tha an stòr-dàta glaiste an-dràsta.\nSeo na roghainnean aig an duilleag <strong>$1</strong>:",
        "protect-locked-access": "Chan eil cead aig a' chunntas agad an ìre dìon de dhuilleag atharrachadh.\nSeo roghainnean làithreach na duilleige <strong>$1</strong>:",
        "protect-cascadeon": "Tha an duilleag seo fo dhìon an-dràsta a chionn 's gu bheil e air a ghabhail a-steach {{PLURAL:$1|$1 duilleag|$1 dhuilleag|$1 duilleagan|$1 duilleag}} a leanas aig a bheil dìon o bhith mar eas air.\n'S urrainn dhut ìre dìon na duilleige seo atharrachadh ach cha bhi buaidh air an dìon o bhith mar eas.",
        "protect-default": "Ceadaich a h-uile cleachdaiche",
        "undelete": "Seal na duilleagan air an sguabadh às",
        "undeletepage": "Seall 's aisig duilleagan air an sguabadh às",
        "undeletepagetitle": "<strong>Chan e ach mùthaidhean de [[:$1|$1]] a chaidh a sguabadh às a tha sna leanas</strong>.",
+       "viewdeletedpage": "Seal na duilleagan air an sguabadh às",
+       "undeletepagetext": "Chaidh {{PLURAL:$1|an $1 duilleag|an $1 dhuilleag|na $1 duilleagan|am $1 duilleag}} a sguabadh às ach tha {{PLURAL:$1|i|iad}} san tasglann fhathast 's gabhaidh {{PLURAL:$1|a h-aiseag|an aiseag}}.\nDh'fhaoidte gun dèid an tasglann a ghlanadh gu cunbhalach.",
        "undelete-fieldset-title": "Aisig mùthaidhean",
+       "undeleteextrahelp": "Gus eachdraidh shlàn na duilleige aiseag, fàg gach bogsa bàn 's briog air <strong><em>{{int:undeletebtn}}</em></strong>.\nGus cuid dheth aiseag, cuir cromag sna bogsaichean airson nam mùthaidhean a tha thu airson aiseag 's briog air <strong><em>{{int:undeletebtn}}</em></strong>.",
        "undeleterevisions": "Chaidh {{PLURAL:$1|$1 mhùthadh|$1 mhùthadh|$1 mùthaidhean|$1 mùthadh}} a chur san tasg-lann",
+       "undeletehistory": "Ma dh'aisigeas tu an duilleag, thèid gach mùthadh aiseag dhan eachdraidh.\nMa chaidh duilleag air a bheil an aon ainm a chruthachadh às dèidh an sguabaidh às, nochdaidh na mùthaidhean air an aiseag san eachdraidh roimhpe.",
+       "undeleterevdel": "Cha dèid an sguabadh às a neo-dhèanamh ma sguabadh seo às pàirt de mhùthadh na duilleige no an fhaidhle as ùire.\nMas e seo na thachradh, feumaidh tu a' chromag a thoirt far a' mhùthaidh as ùire a chaidh a sguabadh às no gun a bhith 'ga fhalach tuilleadh.",
        "undeletehistorynoadmin": "Chaidh an duilleag seo a sguabadh às.\nChì thu adhbhar an sguabaidh às sa ghearr-chunntas gu h-ìosal cho math ri fiosrachadh mu na chleachdaichean a dheasaich an duilleag seo mus deach a sguabadh às.\nChan fhaic ach rianairean an teacsa fhèin aig na mùthaidhean air an sguabadh às.",
+       "undelete-revision": "Mùthadh de $1 air a sguabadh às (o $4 $5) le $3:",
+       "undeleterevision-missing": "Mùthadh mì-dhligheach no a dhìth.\n'S dòcha gu bheil droch cheangal agad no gun deach am mùthadh aiseag no a thoirt far na tasglainn.",
+       "undelete-nodiff": "Cha deach mùthadh as sine a lorg.",
+       "undeletebtn": "Aisig",
        "undeletelink": "seall/aisig",
        "undeleteviewlink": "seall",
+       "undeleteinvert": "Ais-thionndaidh na thagh thu",
+       "undeletecomment": "Adhbhar:",
+       "undeletedrevisions": "Chaidh $1 {{PLURAL:$1|mhùthadh|mhùthadh|mùthaidhean|mùthadh}} aiseag",
+       "undeletedrevisions-files": "Chaidh $1 {{PLURAL:$1|mhùthadh|mhùthadh|mùthaidhean|mùthadh}} agus $2 {{PLURAL:$2|fhaidhle|fhaidhle|faidhlichean|faidhle}} aiseag",
+       "undeletedfiles": "Chaidh $1 {{PLURAL:$1|fhaidhle|fhaidhle|faidhlichean|faidhle}} aiseag",
+       "cannotundelete": "Cha deach leinn an sguabadh às a neo-dhèanamh:\n$1",
+       "undeletedpage": "<strong>Chaidh $1 aiseag</strong>\n\nThoir sùil air [[Special:Log/delete|loga an sguabaidh às]] airson clàr air na chaidh a sguabadh às no aiseag o chionn goirid.",
+       "undelete-header": "Faic [[Special:Log/delete|loga an sguabaidh às]] airson duilleagan a chaidh a sguabadh às o chionn goirid.",
+       "undelete-search-title": "Lorg sna duilleagan air an sguabadh às",
+       "undelete-search-box": "Lorg sna duilleagan air an sguabadh às",
+       "undelete-search-prefix": "Seall na duilleagan a thòisicheas le:",
+       "undelete-search-submit": "Lorg",
+       "undelete-no-results": "Cha deach duilleag a dh'fhreagradh a lorg ann an tasglann nan sguabaidhean às.",
+       "undelete-filename-mismatch": "Cha ghabh mùthadh an fhaidhle aiseag air a bheil an stampa-tìde $1: Chan fhreagair ainmean nam faidhlichean ri chèile.",
+       "undelete-bad-store-key": "Cha ghabh mùthadh an fhaidhle aiseag air a bheil an stampa-tìde $1: Bha am faidhle a dhìth mar-thà mus deach a sguabadh às.",
+       "undelete-cleanup-error": "Mearachd a' sguabadh às faidhle tasglainn \"$1\" nach eil 'ga chleachdadh.",
+       "undelete-missing-filearchive": "Cha ghabh tasglann an fhaidhle air a bheil an ID $1 aiseag o nach eil e san stòr-dàta.\n'S dòcha gun deach an sguabadh às a neo-dhèanamh mar-thà.",
+       "undelete-error": "Mearachd a' neo-dhèanamh sguabadh às na duilleige",
+       "undelete-error-short": "Mearachd a' neo-dhèanamh sguabadh às an fhaidhle: $1",
+       "undelete-error-long": "Thachair mearachd le neo-dhèanamh sguabadh às an fhaidhle:\n\n$1",
+       "undelete-show-file-confirm": "A bheil thu cinnteach gu bheil thu airson coimhead air mùthadh an fhaidhle \"<nowiki>$1</nowiki>\" a chaidh a sguabadh às $2 aig $3?",
+       "undelete-show-file-submit": "Tha",
+       "undelete-revision-row": "$1 $2 ($3) $4 . . $5 $6 $7 $8 $9",
        "namespace": "Ainm-spàs:",
        "invert": "Cuir na thagh mi bun os cionn",
        "tooltip-invert": "Cuir cromag sa bhogsa seo gus atharraichean air an duilleag seo fhalach am broinn an ainm-spàs a thagh thu ('s an ainm-spàs co-cheangailte riutha ma tha cromag ris)",
        "contributions-title": "Obair a rinn $1",
        "mycontris": "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.",
        "uctop": "(làithreach)",
        "month": "On mhìos (agus na bu tràithe):",
        "year": "On bhliadhna (agus na bu tràithe):",
        "sp-contributions-newbies": "Seall obair le cunntasan ùra a-mhàin",
+       "sp-contributions-newbies-sub": "Airson cunntasan ùra",
        "sp-contributions-newbies-title": "Obair le cunntasan ùra",
        "sp-contributions-blocklog": "an loga bacaidh",
        "sp-contributions-suppresslog": "obair a chaidh a mhùchadh",
        "sp-contributions-logs": "logaichean",
        "sp-contributions-talk": "deasbaireachd",
        "sp-contributions-userrights": "stiùireadh ceadan a' chleachdaiche",
+       "sp-contributions-blocked-notice": "Tha an cleachdaiche seo 'ga bhacadh an-dràsta.\nSeo dhut loga a' bhacaidh mu dheireadh gu h-ìosal:",
+       "sp-contributions-blocked-notice-anon": "Tha an seòladh IP seo 'ga bhacadh an-dràsta.\nSeo dhut loga a' bhacaidh mu dheireadh gu h-ìosal:",
        "sp-contributions-search": "Lorg airson obair a rinneadh",
        "sp-contributions-username": "Seòladh IP no ainm-cleachdaiche:",
        "sp-contributions-toponly": "Na seall deasachaidhean ach na mùthaidhean as ùire",
+       "sp-contributions-newonly": "Na seall ach na deasachaidhean a tha 'nan cruthachadh duilleige",
        "sp-contributions-submit": "Lorg",
        "whatlinkshere": "Na tha a' ceangal a-nall an-seo",
        "whatlinkshere-title": "Duilleagan a tha a' ceangal ri \"$1\"",
        "whatlinkshere-hidelinks": "$1 ceanglaichean",
        "whatlinkshere-hideimages": "$1 ceanglaichean nam faidhlichean",
        "whatlinkshere-filters": "Criathairean",
+       "autoblockid": "Fèin-bhacadh $1",
        "block": "Bac an cleachdaiche",
        "unblock": "Neo-bhac an cleachdaiche",
        "blockip": "Bac an cleachdaiche",
+       "blockip-legend": "Bac an cleachdaiche",
+       "blockiptext": "Cleachd am foirm gu h-ìosal gus seòladh IP no cleachdaiche sònraichte a bhacadh o sgrìobhadh.\nNa dèan seo ach gus dìon o bhandalachd agus a-rèir [[{{MediaWiki:Policy-url}}|a' phoileasaidh]].\nLìon an t-adhbhar sònraichte gu h-ìosal (mar eisimpleir le iomradh air na duilleagan le bhandalachd orra).",
+       "ipaddressorusername": "Seòladh IP no ainm-cleachdaiche:",
+       "ipbexpiry": "Falbhaidh an ùine air:",
        "ipbreason": "Adhbhar:",
+       "ipbreason-dropdown": "*Adhbharan bacaidh cumanta\n** Cur fiosrachadh cearr a-steach\n** Toirt susbaint far duilleagan\n** Cur ceanglaichean-spama gu làraichean a-muigh ris\n** Cur a-steach amaideas/mablais air duilleagan\n** Smàdadh/sàrachadh\n** Ana-chleachdadh air iomadh cunntas\n** Ainm-cleachdaiche neo-thaitneach",
+       "ipb-hardblock": "Bac cleachdaichean on deasachadh a nì logadh a-steach on t-seòladh IP seo",
+       "ipbcreateaccount": "Bac cruthachadh cunntais",
+       "ipbemailban": "Bac cleachdaiche o chur puist-d",
+       "ipbenableautoblock": "Bac an seòladh IP mu dheireadh a chleachd an cleachdaiche seo gu fèin-obrachail 's gach seòladh IP a dh'fheuchas e ri deasachadh uaithe an uairsin",
        "ipbsubmit": "Bac an cleachdaiche seo",
+       "ipbother": "Àm eile:",
        "ipboptions": "2 uair a thìde:2 hours, 1 latha:1 day, 3 làithean:3 days, 1 seachdain:1 week, 2 sheachdain:2 weeks, 1 mhìos:1 month, 3 mìosan:3 months, 6 mìosan:6 months, 1 bhliadhna:1 year,buan:infinite",
+       "ipbhidename": "Falaich an t-ainm-cleachdaiche o dheasachaidhean 's liostaichean",
        "ipbwatchuser": "Cum sùil air duilleagan a' chleachdaiche 's deasbaireachd aig a' chleachdaiche seo",
        "ipb-disableusertalk": "Chan fhaod an cleachdaiche seo an duilleag deasbaireachd aige fhèin a dheasachadh fhad 's a bhios e bacte",
+       "ipb-change-block": "Bac an cleachdaiche a-rithist leis na roghainnean seo",
+       "ipb-confirm": "Dearbhaich am bacadh",
        "badipaddress": "Chan eil an seòladh IP aig a' cleachdair seo iomchaidh",
        "blockipsuccesssub": "Shoirbhich leat leis a' bhacadh",
        "blockipsuccesstext": "Chaidh [[Special:Contributions/$1|$1]] a bhacadh.\n<br />Faic [[Special:BlockList|liosta nan IP bacte]] gus sùile a thoirt air na bacaidhean.",
+       "ipb-blockingself": "Chuir thu romhad thu fhèin a bhacadh! A bheil thu cinnteach gu bheil thu airson seo a dhèanamh?",
        "ipb-confirmhideuser": "Cha thu an impis cleachdaiche a bhacadh le \"falaich cleachdaiche\" an comas. Mùchaidh seo ainm a' chleachdaiche anns gach uile liosta 's nì loga. A bheil thu cinnteach gu bheil thu airson seo a dhèanamh?",
+       "ipb-confirmaction": "Ma tha thu cinnteach gu bheil thu airson seo a dhèanamh, cuir cromag san raon \"{{int:ipb-confirm}}\" aig a' bhonn.",
+       "ipb-edit-dropdown": "Deasaich adhbharan a' bhacaidh",
+       "ipb-unblock-addr": "Neo-bhac $1",
+       "ipb-unblock": "Neo-bhac ainm-chleachdaiche no seòladh IP",
+       "ipb-blocklist": "Seall na bacaidhean a tha ann",
        "ipb-blocklist-contribs": "Obair a rinn $1",
        "unblockip": "Neo-bhac an cleachdaiche",
+       "unblockiptext": "Cleachd am foirm gu h-ìosal gus cead sgrìobhaidh aiseag gu seòladh IP no ainm-cleachdaiche a chaidh a bhacadh roimhe.",
        "ipusubmit": "Thoir air falbh am bacadh seo",
+       "unblocked": "Chaidh [[User:$1|$1]] a neo-bhacadh.",
+       "unblocked-range": "Chaidh $1 a neo-bhacadh.",
+       "unblocked-id": "Chaidh am bacadh $1 a thoirt air falbh.",
+       "blocklist": "Cleachdaichean a chaidh a bhacadh",
        "ipblocklist": "Cleachdaichean a chaidh a bhacadh",
+       "ipblocklist-legend": "Lorg cleachdaiche a chaidh a bhacadh",
+       "blocklist-userblocks": "Falaich bacaidhean cunntais",
+       "blocklist-tempblocks": "Falaich bacaidhean sealach",
+       "blocklist-addressblocks": "Falaich bacaidhean air aon IP",
+       "blocklist-rangeblocks": "Falaich bacaidhean air rainse",
+       "blocklist-timestamp": "Stampa-tìde",
+       "blocklist-target": "Amas",
+       "blocklist-expiry": "Falbhaidh an ùine air",
+       "blocklist-by": "Rianaire a rinn bacadh",
+       "blocklist-params": "Roghainnean a' bhacaidh",
+       "blocklist-reason": "Adhbhar",
+       "ipblocklist-submit": "Lorg",
+       "ipblocklist-localblock": "Bacadh ionadail",
+       "ipblocklist-otherblocks": "{{PLURAL:$1|Bacadh|Bacaidhean}} eile",
+       "infiniteblock": "buan",
+       "expiringblock": "falbhaidh an ùine air $1 $2",
+       "anononlyblock": "gun ainm a-mhàin",
+       "noautoblockblock": "chaidh fèin-bhacadh a chur à comas",
+       "createaccountblock": "chaidh cruthachadh chunntasan ùra a chur à comas",
+       "emailblock": "chaidh puist-d a chur à comas",
        "blocklist-nousertalk": "chan fhaod e an duilleag deasbaireachd aige fhèin a dheasachadh",
+       "ipblocklist-empty": "Tha liosta nam bacaidhean falamh.",
+       "ipblocklist-no-results": "Cha deach an seòladh IP no ainm-cleachdaiche a dh'iarradh bacadh.",
        "blocklink": "bac",
        "unblocklink": "neo-bhac",
        "change-blocklink": "mùth bacadh",
        "contribslink": "mùthaidhean",
+       "emaillink": "cuir post-d",
+       "autoblocker": "Chaidh do bhacadh gu fèin-obrachail on a chaidh an seòladh IP agad a cleachdadh le \"[[User:$1|$1]]\" o chionn goirid.\nIs \"$2\" an t-adhbhar a chaidh $1 a bhacadh",
        "blocklogpage": "Loga nam bacadh",
+       "blocklog-showlog": "Chaidh an cleachdaiche seo a bhacadh roimhe.\nSeo dhut loga a' bhacaidh:",
        "blocklog-showsuppresslog": "Chaidh an cleachdaiche seo a bhacadh 's a mhùchadh roimhe.\nSeo dhut loga a' mhùchaidh:",
        "blocklogentry": "Chaidh bacadh a chrìochnaicheas ann an $2 a chur air [[$1]] $3",
+       "reblock-logentry": "chaidh roghainnean a' bhacaidh atharrachadh airson [[$1]] 's falbhaidh an ùine air $2 $3",
+       "blocklogtext": "Seo loga dhe na bacaidhean 's neo-bhacaidhean air cleachdaichean.\nCha nochd na seòlaidhean IP a chaidh a bhacadh gu fèin-obrachail an-seo.\nFaic [[Special:BlockList|liosta nam bacaidhean]] airson nan toirmeasgan 's bacaidhean a tha gnìomhach an-dràsta.",
        "unblocklogentry": "\"$1\" air a neo-bhacadh",
+       "block-log-flags-anononly": "buill gun ainm a-mhàin",
        "block-log-flags-nocreate": "cruthachadh de chunntasan ùra à comas",
+       "block-log-flags-noautoblock": "chaidh fèin-bhacadh a chur à comas",
+       "block-log-flags-noemail": "chaidh puist-d a chur à comas",
        "block-log-flags-nousertalk": "chan fhaod e an duilleag deasbaireachd aige fhèin a dheasachadh",
+       "block-log-flags-angry-autoblock": "chaidh am fèin-bhacadh adhartach a chur an comas",
+       "block-log-flags-hiddenname": "chaidh an t-ainm-cleachdaiche fhalach",
+       "range_block_disabled": "Tha comas nan rianairean gus bacadh le rainse a chruthachadh a chur à comas.",
        "ipb_expiry_invalid": "Tha an t-àm-crìochnachaidh mì-dhligheach.",
+       "ipb_expiry_temp": "Feumaidh bacadh air ainm-cleachdaiche falaichte a bhith buan.",
        "ipb_hide_invalid": "Cha ghabh an cunntas seo a mhùchadh on a tha barrachd air $1 {{PLURAL:$1|deasachadh|dheasachadh|deasachaidhean|deasachadh}} aige.",
+       "ipb_already_blocked": "Chaidh \"$1\" a bhacadh mar-thà.",
+       "ipb-needreblock": "Chaidh $1 a bhacadh mar-thà. A bheil thu airson na roghainnean atharrachadh?",
+       "ipb-otherblocks-header": "{{PLURAL:$1|Bacadh|Bacaidhean}} eile",
+       "unblock-hideuser": "Chan urrainn dhut an cleachdaiche seo a neo-bhacadh on a chaidh ainm-cleachdaiche fhalach.",
+       "ipb_cant_unblock": "Mearachd: Cha deach am bacadh air a bheil an ID $1 a lorg. Dh'fhaoidte gun deach a neo-bhacadh mar-thà.",
+       "ipb_blocked_as_range": "Mearachd: Cha deach an t-seòladh IP $1 a bhacadh gu dìreach 's cha ghabh a neo-bhacadh.\nChaidh a bhacadh 'na phàirt dhen rainse $2 co-dhiù a ghabhas neo-bhacadh.",
        "ip_range_invalid": "Raon IP neo-iomchaidh.",
+       "ip_range_toolarge": "Chan eil bacadh le rainse nas motha na /$1 ceadaichte.",
+       "proxyblocker": "Bacaiche nam progsaidh",
+       "proxyblockreason": "Chaidh an seòladh IP agad a bhacadh air sgàth 's gur e progsaidh fhosgailte a th' ann.\nCuir fios gu solaraiche seirbheis eadar-lìn no sgioba taice a' bhuidhinn agad 's innis dhaibh mun duilgheadas mhòr leis an tèarainteachd a tha seo.",
+       "sorbs": "DNSBL",
+       "sorbsreason": "Nochdaidh an seòladh IP agad mar phrogsaidh fhosgailte air an liosta DNSBL a tha 'ga chleachdadh le {{SITENAME}}.",
+       "sorbs_create_account_reason": "Nochdaidh an seòladh IP agad mar phrogsaidh fhosgailte air an liosta DNSBL a tha 'ga chleachdadh le {{SITENAME}}.\nChan urrainn dhut cunntas a chruthachadh.",
+       "xffblockreason": "Chaidh seòladh IP a tha sa bhann-chinn X-Forwarded-For a bhacadh, seo an t-seòladh agad fhèin no fear aig frithealaiche progsaidh a tha thu a' chleachdadh. Seo adhbhar a' bhacaidh thùsail: $1",
+       "cant-see-hidden-user": "Chaidh an cleachdaiche a tha thu airson bacadh a bhacadh no fhalach mar-thà.\nChan urrainn dhut am bacadh aig a' chleachdaiche a shealltainn no a dheasachadh air sgath 's nach eil cead agad gus cleachdaiche fhalach.",
+       "ipbblocked": "Chan urrainn dhut cleachdaichean eile a bhacadh no a neo-bhacadh on a chaidh do bacadh fhèin.",
+       "ipbnounblockself": "Chan fhaod thu thu fhèin a neo-bhacadh.",
        "lockdb": "Glais an stòr-dàta",
-       "lockconfirm": "Seadh, is ann a tha mi ag iarraidh an stòr-dàta a ghlasadh.",
+       "unlockdb": "Thoir a' ghlas far an stòr-dàta",
+       "lockdbtext": "Ma ghlaiseas tu an stòr-dàta, chan urrainn do chleachdaiche sam bith duilleagan a dheasachadh, na roghainnean aige atharrachadh, an clàr-faire aige a dheasachadh no rud sam bith eile a dhèanamh a rinneadh atharrachadh air an stòr-dàta.\nDearbhaich gur e seo na tha thu airson dèanamh is gun toir thu a' ghlas far an stòr-dàta nuair a bhios tu deiseil le do chuid obrach-glèidhidh.",
+       "unlockdbtext": "Ma bheirh thu a' ghlas far an stòir-dhàta, 's urrainn do chleachdaiche sam bith duilleagan a dheasachadh, na roghainnean aige atharrachadh, an clàr-faire aige a dheasachadh no rud sam bith eile a dhèanamh a rinneadh atharrachadh air an stòr-dàta.\nDearbhaich gur e seo na tha thu airson dèanamh.",
+       "lockconfirm": "Seadh, is ann a tha mi airson an stòr-dàta a ghlasadh.",
+       "unlockconfirm": "Seadh, is ann a tha mi airson a' ghlas a thoirt far an stòir-dhàta.",
        "lockbtn": "Glais an stòr-dàta",
+       "unlockbtn": "Thoir a' ghlas far an stòr-dàta",
+       "locknoconfirm": "Cha dug thu cromag sa bhogsa dhearbhaidh.",
        "lockdbsuccesssub": "Shoirbhich leat le glasadh an stòir-dhàta",
+       "unlockdbsuccesssub": "Thug thu a' ghlas far an stòir-dhàta",
+       "lockdbsuccesstext": "Chaidh an stòr-dàta a ghlasadh.<br />\nCuimhnich gun [[Special:UnlockDB|doir thu a' ghlas far an stòir-dhàta]] nuair a bhios do chuid obrach-glèidhidh dèanta.",
+       "unlockdbsuccesstext": "Chaidh a' ghlas a thoirt far an stòir-dhàta.",
+       "lockfilenotwritable": "Cha ghabh sgrìobhadh ann am faidhle glasaidh an stòir-dhàta.\nFeumaidh comas sgrìobhaidh leis an fhrithealaiche-lìn a bhith ann ach an gabh an stòr-dàta a ghlasadh no a' ghlas a thoirt fo bharr.",
+       "databasenotlocked": "Chan eil an stòr-dàta glaiste.",
        "lockedbyandtime": "(le $1 $2 $3)",
+       "move-page": "Gluais $1",
        "move-page-legend": "Gluais duilleag",
        "movepagetext": "Ma chleachdas tu am foirm gu h-ìosal, cuiridh tu ainm ùr air 's gluaisidh tu a h-eachdraidh gu lèir dhan ainm ùr.\nBidh an seann tiotal 'na ath-sheòladh dhan tiotal ùr an uairsin.\n'S urrainn dhut ath-sheòladh sam bith a tha a' dol dhan tiotal tùsail ùrachadh leis fhèin.\nMura dèan thu sin, dèan cinnteach gun cuir thu sùil air eagal 's gum bi [[Special:DoubleRedirects|ath-sheòlaidhean dùbailte]] no [[Special:BrokenRedirects|briste]] ann.\n'S ann ort-sa a tha an t-uallach airson dèanamh cinntach gu bheil na ceanglaichean a' dol dha na h-àitichean ceart.\n\nThoir an aire <strong>nach dèid</strong> an duilleag a ghluasad ma tha duilleag air an tiotal ùr mu thràth ach ma bhios e falamh no 'na ath-sheòladh 's mur eil eachdraidh deasachaidh ann.\n'S ciall dha seo gun urrainn dhut ainm duilleige a thilleadh dhan ainm a bha air roimhe ma rinn thu mearachd agus nach urrainn dhut sgrìobhadh thairis air duilleag a tha ann.\n\n<strong>Rabhadh!</strong>\nFaodaidh seo a bhith 'na atharrachadh mòr ris nach bi dùil air duilleag air a bheil fèill mhòr;\ndèan cinnteach gu bheil thu a' tuigsinn dè a' bhuaidh a bhios agad mus dèid thu air adhart.",
+       "movepagetext-noredirectfixer": "Ma chleachdas tu am foirm gu h-ìosal, cuiridh tu ainm ùr air 's gluaisidh tu a h-eachdraidh gu lèir dhan ainm ùr.\nBidh an seann tiotal 'na ath-stiùireadh dhan tiotal ùr an uairsin.\nDearbhaich nach bi ath-sheòlaidhean [[Special:DoubleRedirects|dùbailte]] no [[Special:BrokenRedirects|briste]] ann.\n'S ann ort-sa a tha an t-uallach airson dèanamh cinnteach gu bheil na ceanglaichean a' dol dha na h-àitichean a bu chòir.\n\nThoir an aire <strong>nach dèid</strong> an duilleag a ghluasad ma tha duilleag air an tiotal ùr mu thràth ach ma bhios e falamh no 'na ath-sheòladh 's mur eil eachdraidh deasachaidh ann.\n'S ciall dha seo gur urrainn dhut ainm duilleige a thilleadh dhan ainm a bha air roimhe ma rinn thu mearachd agus nach urrainn dhut sgrìobhadh thairis air duilleag a tha ann.\n\n<strong>Rabhadh!</strong>\nFaodaidh seo a bhith 'na atharrachadh mòr ris nach bi dùil air duilleag air a bheil fèill mhòr;\ndèan cinnteach gu bheil thu a' tuigsinn dè a' bhuaidh a bhios agad mus dèid thu air adhart.",
        "movepagetalktext": "Thèid an duilleag deasbaireachd a tha co-cheangailte ris a ghluasad 'na cois <strong>ach:</strong>\n*Ma tha duilleag deasbaireachd nach eil falamh aig an ainm ùr mu thràth, no\n*Ma bheir thu air falbh a' chromag on bhogsa gu h-ìosal\n\nMa thachras seo, feumaidh to an duilleag a ghluasad no cho-aonachadh a làimh, ma tha sin fa-near dhut.",
        "movearticle": "Gluais duilleag:",
-       "movecategorypage-warning": "<strong>Rachadh:</strong> Tha thu airson duilleag roinn-seòrsa a ghluasad. Thoir an aire nach dèid ach an duilleag a ghluasad 's <em>gur ann nach dèid</em> gach duilleag a tha san t-seann roinn-seòrsa a chur ris an roinn-seòrsa ùr.",
+       "moveuserpage-warning": "<strong>Rabhadh:</strong> Tha thu airson duilleag cleachdaiche a ghluasad. Thoir an aire nach dèid ach an duilleag a ghluasad 's <em>gur ann nach dèid</em> ainm ùr a thoirt air a' chleachdaiche.",
+       "movecategorypage-warning": "<strong>Rabhadh:</strong> Tha thu airson duilleag roinn-seòrsa a ghluasad. Thoir an aire nach dèid ach an duilleag a ghluasad 's <em>gur ann nach dèid</em> gach duilleag a tha san t-seann roinn-seòrsa a chur ris an roinn-seòrsa ùr.",
+       "movenologintext": "Feumaidh tu a bhith 'nad bhall clàraichte 's air [[Special:UserLogin|logadh a-steach]] mus gluais thu duilleag.",
+       "movenotallowed": "Chan eil cead agad duilleagan a ghluasad.",
+       "movenotallowedfile": "Chan eil cead agad faidhlichean a ghluasad.",
+       "cant-move-user-page": "Chan eil cead agad duilleagan cleachdaiche a ghluasad (ach fo-dhuilleagan).",
+       "cant-move-to-user-page": "Chan eil cead agad duilleag a ghluasad gu duilleag cleachdaiche (ach gu fo-dhuilleag cleachdaiche).",
        "cant-move-category-page": "Chan eil cead agad duilleagan roinn-seòrsa a ghluasad.",
        "cant-move-to-category-page": "Chan eil cead agad duilleag a ghluasad gu duilleag roinn-seòrsa.",
        "newtitle": "Dhan tiotal ùr:",
        "movepagebtn": "Gluais duilleag",
        "pagemovedsub": "Shoirbhich leat leis a' ghluasad",
        "movepage-moved": "<strong>Chaidh \"$1\" a ghluasad a \"$2\"</strong>",
+       "movepage-moved-redirect": "Chaidh ath-stiùireadh a chruthachadh.",
        "movepage-moved-noredirect": "Chaidh cruthachadh an ath-stiùiridh seo a mhùchadh.",
        "articleexists": "Tha duilleag ann mu thràth air a bheil an t-ainm seo no chan eil an t-ainm a thagh thu dligheachd.\nNach tagh thu ainm eile?",
+       "cantmove-titleprotected": "Chan urrainn dhut duilleag a ghluasad dhan ionad seo on a chaidh an tiotal ùr a dhìon o chruthachadh",
        "movetalk": "Gluais an duilleag deasbaireachd a tha co-cheangailte ris",
+       "move-subpages": "Gluais fo-duilleagan (suas ri $1)",
        "move-talk-subpages": "Gluais na fo-dhuilleagan aig duilleag deasbaireachd (suas ri $1)",
+       "movepage-page-exists": "Chan duilleag air a bheil $1 ann mar-thà 's cha ghabh sgrìobhadh thairis oirre gu fèin-obrachail.",
+       "movepage-page-moved": "Chaidh duilleag $1 a ghluasad gu $2.",
+       "movepage-page-unmoved": "Cha b' urrainn dhuinn duilleag $1 a ghluasad gu $2.",
+       "movepage-max-pages": "Tha na tha ceadaichte de $1 {{PLURAL:$1|duilleag|dhuilleag|duilleagan|duilleag}} a ghluasad 's cha dèid a bharrachd dhiubh a ghluasad gu fèin-obrachail.",
        "movelogpage": "Loga nan gluasadan",
+       "movelogpagetext": "Chì thu liosta dhe na duilleagan a chaidh gluasad gu h-ìosal.",
        "movesubpage": "{{PLURAL:$1|Fo-dhuilleag|Fo-dhuilleagan}}",
+       "movesubpagetext": "Tha $1 {{PLURAL:$1|fho-dhuilleag|fho-dhuilleag|fo-dhuilleagan|fo-dhuilleag}} aig an duilleag seo a chì thu gu h-ìosal.",
+       "movenosubpage": "Chan eil fo-dhuilleag aig an duilleag seo.",
        "movereason": "Adhbhar:",
        "revertmove": "till",
        "delete_and_move": "Sguab às agus gluais",
+       "delete_and_move_text": "== Tha sguabadh às a dhìth ==\nTha an duilleag-uidhe \"[[:$1]]\" ann mar-thà.\nA bheil thu airson a sguabadh às ach am bidh rum airson a' ghluasaid ann?",
        "delete_and_move_confirm": "Siuthad, sguab às an duilleag",
+       "delete_and_move_reason": "Chaidh a sguabadh às gus rum a airson a' ghluasaid o \"[[$1]]\" a chruthachadh",
+       "selfmove": "Tha tiotalan an tùis a' chinn-uidhe co-ionnann;\nchan urrainn dhut duilleag a ghluasad dhan ionad aice fhèin.",
        "immobile-source-namespace": "Cha ghabh duilleagan a ghluasad san ainm-spàs \"$1\"",
        "immobile-target-namespace": "Cha ghabh duilleagan a ghluasad dhan ainm-spàs \"$1\"",
+       "immobile-target-namespace-iw": "Chan eil ceangal eadar-uicidh 'na cheann-uidhe dligheach airson gluasad duilleige.",
+       "immobile-source-page": "Cha ghabh an duilleag seo gluasad.",
+       "immobile-target-page": "Cha ghabh gluasad gu tiotal a' chinn-uidhe seo.",
+       "bad-target-model": "Tha an ceann-uidhe a dh'iarr thu a' chleachdadh modail susbainte eadar-dhealaichte. Cha ghabh iompachadh o $1 gu $2,",
        "imagenocrossnamespace": "Cha ghabh faidhle a ghluasad gu ainm-spàs nach eil 'na fhaidhle",
        "nonfile-cannot-move-to-file": "Cha ghabh rud nach eil 'na fhaidhle a ghluasad gu ainm-spàs a bheil 'na fhaidhle",
+       "imagetypemismatch": "Cha fhreagair leudachan an fhaidhle ùir ri a sheòrsa",
+       "imageinvalidfilename": "Tha ainm-uidhe an fhaidhle mì-dhligheach",
+       "fix-double-redirects": "Ùraich gach ath-stiùireadh a thomhas ris an tiotail tùsail",
+       "move-leave-redirect": "Fàg ath-stiùireadh ann",
+       "protectedpagemovewarning": "<strong>Rabhadh: Chaidh an duilleag seo a dhìon 's chan urrainn ach dhan fheadhainn aig a bheil ùghdarras rianaire a ghluasad.</strong>\nChì thu an clàr mu dheireadh san loga mar fhiosrachadh dhut gu h-ìosal:",
+       "semiprotectedpagemovewarning": "<strong>An aire:</strong> Chaidh an duilleag seo a dhìon 's chan fhaod ach cleachdaichean clàraichte a ghluasad.\nSeo an rud mu dheireadh san loga mar fhiosrachadh dhut:",
        "move-over-sharedrepo": "== Tha am faidhle ann ==\nTha [[:$1]] ann an ionad-tasgaidh co-roinnte. Thèid tar-àithneadh air an fhaidhle cho-roinnte ma ghluaiseas tu faidhle gun tiotal seo.",
        "file-exists-sharedrepo": "Tha ainm an fhaidhle a thagh thu 'ga chleachdadh ann an ionad-tasgaidh co-roinnte mar-thà.\nFeuch an tagh thu ainm eile.",
        "export": "Às-phortaich duilleagan",
+       "exporttext": "'S urrainn dhut teacsa is eachdraidh an deasachaidh aig duilleag no duilleagan sònraichte às-phortachadh le XML timcheall air.\nGabhaidh seo ion-phortachadh gu uicidh eile a chleachdas MediaWiki air an [[Special:Import|duilleag ion-phortachaidh]].\n\nGus duilleagan às-phortachadh, cuir a-steach na tiotalan sa bhogsa-teacsa gu h-ìosal, gach tiotal air loidhne fa leth, agus tagh a bheil thu ag iarraidh am mùthadh làithreach cho math ri seann mhùthaidhean le loidhnichean eachdraidh nan duilleagan no a bheil thu ag iarraidh am mùthadh làithreach le fiosrachadh mun deasachadh mu dheireadh.\n\nMa chuir thu an roghainn eile romhad, 's urrainn dhut ceangal a chleachdadh cuideachd, mar eisimpleir [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] airson na duilleige \"[[{{MediaWiki:Mainpage}}]]\".",
+       "exportall": "Às-phortaich na duilleagan uile",
+       "exportcuronly": "Cha ghabh a-steach ach an tionndadh làithreach seach an eachdraidh slàn",
+       "exportnohistory": "----\n<strong>An aire:</strong> Chaidh às-phortachadh na h-eachdraidh slàin aig na duilleagan seo leis an foirm seo a chur à comas air sàilleibh dèanadais.",
        "exportlistauthors": "Cuir liosta shlàn dhe na deasaichean ris gach duilleag",
+       "export-submit": "Às-phortaich",
        "export-addcattext": "Cuir duilleagan ris o roinn-seòrsa:",
+       "export-addcat": "Cuir ris",
        "export-addnstext": "A h-uile duilleag on ainm-spàs:",
+       "export-addns": "Cuir ris",
+       "export-download": "Sàbhail mar fhaidhle",
+       "export-templates": "Gabh a-steach na teamplaidean",
+       "export-pagelinks": "Gabh a-steach na duilleagan ceangailte gu doimhe de:",
        "allmessages": "Teachdaireachdan an t-siostaim",
        "allmessagesname": "Ainm",
        "allmessagesdefault": "Teacsa bunaiteach na teachdaireachd",
+       "allmessagescurrent": "Teacsa na teachdaireachd an-dràsta",
        "allmessagestext": "Seo liosta de theachdaireachdan an t-siostaim a tha ri làimh ann an ainm-spàs MediaWiki.\nTadhail air [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation Ionadaileadh MediaWiki] is [//translatewiki.net translatewiki.net] ma tha thu airson pàirt a ghabhail ann an ionadaileadh MediaWiki.",
+       "allmessagesnotsupportedDB": "Cha ghabh an duilleag seo cleachdadh on a chaidh <strong>$wgUseDatabaseMessages</strong> a chur à comas.",
+       "allmessages-filter-legend": "Criathrag",
+       "allmessages-filter": "Criathraich le staid a' ghnàthachaidh:",
+       "allmessages-filter-unmodified": "Gun atharrachadh",
+       "allmessages-filter-all": "Na h-uile",
+       "allmessages-filter-modified": "Air atharrachadh",
+       "allmessages-prefix": "Criathraich le ro-leasachan:",
+       "allmessages-language": "Cànan:",
+       "allmessages-filter-submit": "Siuthad",
+       "allmessages-filter-translate": "Eadar-theangachaich",
        "thumbnail-more": "Meudaich",
        "filemissing": "Faidhle a dhìth",
        "thumbnail_error": "Mearachd le cruthachadh na dealbhaige: $1",
+       "thumbnail_error_remote": "Teachdaireachd na mearachd o $1:\n$2",
+       "djvu_page_error": "Tha duilleag DjVu a-mach às an rainse",
+       "djvu_no_xml": "Cha b' urrainn dhuinn an XML fhaighinn airson an fhaidhle DjVu",
        "thumbnail-temp-create": "Cha deach leinn faidhle sealach na dealbhaige a chruthachadh",
        "thumbnail-dest-create": "Cha deach leinn an dealbhag a shàbhaladh gun cheann-uidhe",
        "thumbnail_invalid_params": "Paramadairean na dealbhaige mì-dhligheach",
+       "thumbnail_dest_directory": "Cha b' urrainn dhuinn am pasgan-uidhe a chruthachadh",
+       "thumbnail_image-type": "Cha chuirear taic ris an t-seòrsa deilbh",
+       "thumbnail_gd-library": "Chan eil rèiteachadh na tasglainn GD coileanta: Tha am foincsean $1 a dhìth",
+       "thumbnail_image-missing": "Tha faidhle a dhìth a-rèit coltais: $1",
        "thumbnail_image-failure-limit": "Chaidh feuchainn cus tursan ($1 no a bharrachd) o chionn goirid gus an dealbhag seo a reandaradh. Feuch ris a-rithist uaireigin eile.",
+       "import": "Ion-phortaich duilleagan",
+       "importinterwiki": "Ion-phortachadh tar-uicidh",
+       "import-interwiki-text": "Tagh uicidh 's tiotal na duilleige airson ion-phortachadh.\nThèid cinn-là nam mùthaidhean 's ainmean nan deasaichean a ghlèidheadh.\nThèid gach gnìomh ion-phortachadh tar-uicidh a chur ris an [[Special:Log/import|loga ion-phortachaidh]].",
+       "import-interwiki-source": "An uicidh/duilleag thùsail:",
+       "import-interwiki-history": "Dèan lethbhreac de dh'eachdraidh nam mùthaidhean slàna airson na duilleige seo",
+       "import-interwiki-templates": "Gabh a-steach na teamplaidean uile",
+       "import-interwiki-submit": "Ion-phortaich",
        "import-interwiki-namespace": "Ainm-spàs-uidhe:",
+       "import-interwiki-rootpage": "Duilleag freumha a' chinn-uidhe (roghainneil):",
+       "import-upload-filename": "Ainm an fhaidhle:",
+       "import-comment": "Beachd:",
+       "importtext": "Às-phortaich am faidhle on uicidh tùsail le [[Special:Export|goireas an às-phortachaidh]].\nSàbhail e air a' choimpiutair agad is luchdaich suas e an-seo.",
+       "importstart": "Af ion-phortachadh duilleagan...",
        "import-revision-count": "$1 {{PLURAL:$1|mhùthadh|mhùthadh|mùthaidhean|mhùthadh}}",
+       "importnopages": "Chan eil duilleag ri ion-phortachadh ann.",
+       "imported-log-entries": "Chaidh $1 {{PLURAL:$1|innteart|innteart|innteartan|innteart}} an loga ion-phortachadh.",
+       "importfailed": "Dh'fhàillig leis an ion-phortachadh: <nowiki>$1</nowiki>",
+       "importunknownsource": "Chan aithnich sinn seòrsa an tùis airson an ion-phortachaidh",
+       "importcantopen": "Cha deach leinn am faidhle ion-phortachaidh fhosgladh.",
+       "importbadinterwiki": "Droch cheangal eadar-uicodh",
+       "importsuccess": "Tha an t-ion-phortachadh coileanta!",
+       "importnosources": "Cha deach tùs ion-phortachadh tar-uicidh a mhìneachadh agus tha luchdadh suas dìreach nan eachdraidhean à comas.",
+       "importnofile": "Cha deach faidhle ion-phortachaidh a luchdadh suas.",
+       "importuploaderrorsize": "Dh'fhàillig le luchdadh suas an fhaidhle ion-phortachaidh.\nTha am faidhle nas motha na tha ceadaichte.",
+       "importuploaderrorpartial": "Dh'fhàillig le luchdadh suas an fhaidhle ion-phortachaidh.\nCha deach ach pàirt dhen fhaidhle a luchdadh suas.",
+       "importuploaderrortemp": "Dh'fhàillig le luchdadh suas an fhaidhle ion-phortachaidh.\nTha pasgan sealach a dhìth.",
+       "import-parse-failure": "Dh'fhàillig le parsadh an XML ion-phortachaidh",
+       "import-noarticle": "Chan eil duilleag ri ion-phortachadh ann!",
+       "import-nonewrevisions": "Cha deach mùthadh ion-phortachadh (bha iad uile ann roimhe no chaidh an leigeil seachad ri linn mhearachdan).",
+       "xml-error-string": "$1 air loidhne $2, colbh $3 (baidht $4): $5",
+       "import-upload": "Luchdaich suas dàta XML",
+       "import-token-mismatch": "Chaidh dàta an t-seisein air chall.\nFeuch ris a-rithist.",
+       "import-invalid-interwiki": "Cha ghabh ion-phortachadh in uicidh a shònraich thu.",
+       "import-error-edit": "Cha deach an duilleag \"$1\" ion-phortachadh o nach fhaod thu a deasachadh.",
+       "import-error-create": "Cha deach an duilleag \"$1\" ion-phortachadh o nach fhaod thu a cruthachadh.",
+       "import-error-interwiki": "Cha deach an duilleag \"$1\" ion-phortachadh on a chaidh ainm a ghlèidheadh airson ceangal a-mach (eadar-uicidh).",
        "import-error-special": "Cha deach an duilleag \"$1\" ion-phortadh on a bhuineas i ri ainm-spàs sònraichte nach ceadaich duilleagan.",
+       "import-error-invalid": "Cha deach an duilleag \"$1\" ion-phortachadh on a tha ainm mì-dhligheach.",
+       "import-error-unserialize": "Cha ghabh mùthadh $2 dhen duilleag \"$1\" a thogail on tionndadh serialized. Chaidh aithris gun cleachd am mùthadh modail susbaint $3 a tha serialized mar $4.",
+       "import-error-bad-location": "Cha ghabh am mùthadh $2 a chleachdas modail susbainte $3 a stòradh air \"$1\" air an uicidh seo o nach cuir an duilleag ud taic ris a' mhodail seo.",
+       "import-options-wrong": "{{PLURAL:$2|Roghainn cearr|Roghainnean cearra}}: <nowiki>$1</nowiki>",
+       "import-rootpage-invalid": "Tha an duilleag freumha a chaidh a thoirt seachad 'na thiotal mì-dhligheach.",
        "import-rootpage-nosubpage": "Cha cheadaich an t-ainm-spàs \"$1\" aig an duilleag freumha fo-duilleagan.",
+       "importlogpage": "Loga an ion-phortachaidh",
+       "importlogpagetext": "Ion-phortachadh rianachd de dhuilleagan aig a bheil eachdraidh mhùthaidhean o uicidhean eile.",
+       "import-logentry-upload": "chaidh [[$1]] ion-phortachadh le luchdadh suas faidhle",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|mhùthadh|mùthadh|mùthaidhean|mùthadh}}",
+       "import-logentry-interwiki": "air fhaighinn 'na thar-uicidh $1",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|mhùthadh|mhùthadh|mùthaidhean|mùthadh}} o $2",
+       "javascripttest": "Deuchainn air JavaScript",
+       "javascripttest-title": "A' ruith deuchainnean aig $1",
+       "javascripttest-pagetext-noframework": "Tha an duilleag seo glèidhte airson deuchainnean JavaScript a ruith.",
+       "javascripttest-pagetext-unknownframework": "Framework deuchainn \"$1\" neo-aithnichte.",
+       "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.",
+       "javascripttest-qunit-heading": "MediaWiki JavaScript QUnit test suite",
        "tooltip-pt-userpage": "An duilleag phearsanta 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-anontalk": "deasbaireachd mu dheasachaidhean on t-seòladh IP seo",
        "tooltip-pt-preferences": "Do roghainnean",
        "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-ca-viewsource": "Tha an duilleag seo fo dhìon.\n'S urrainn dhut a tùs fhaicinn",
        "tooltip-ca-history": "Seann mhùthaidhean na duilleige seo",
        "tooltip-ca-protect": "Dìon an duilleag seo",
+       "tooltip-ca-unprotect": "Atharraich dìon na duilleige seo",
        "tooltip-ca-delete": "Sguab às an duilleag seo",
+       "tooltip-ca-undelete": "Aisig na deasachaidhean a chaidh a dhèanamh air an duilleag seo mus deach a sguabadh às",
        "tooltip-ca-move": "Gluais an duilleag seo",
        "tooltip-ca-watch": "Cuir an duilleag seo air mo chlàr-faire",
        "tooltip-ca-unwatch": "Thoir an duilleag seo far mo chlàir-fhaire",
        "tooltip-t-permalink": "Dèan ceangal buan gu mùthadh seo na duilleige",
        "tooltip-ca-nstab-main": "Seall duilleag na susbainte",
        "tooltip-ca-nstab-user": "Seall duilleag a' chleachdaiche",
+       "tooltip-ca-nstab-media": "Seall duilleag a' mheadhain",
        "tooltip-ca-nstab-special": "Seo duilleag shònraichte, chan urrainn dhut an duilleag fhèin a dheasachadh",
        "tooltip-ca-nstab-project": "Seall duilleag a' phròiseict",
        "tooltip-ca-nstab-image": "Seall duilleag an fhaidhle",
+       "tooltip-ca-nstab-mediawiki": "Seall teachdaireachd an t-siostaim",
        "tooltip-ca-nstab-template": "Seall an teamplaid",
+       "tooltip-ca-nstab-help": "Seall duilleag na cobharach",
        "tooltip-ca-nstab-category": "Seall duilleag na roinn-seòrsa",
        "tooltip-minoredit": "Comharraich seo mar dheasachadh beag",
        "tooltip-save": "Sàbhail na mùthaidhean agad",
        "tooltip-preview": "Ro-sheall na mùthaidhean agad; saoil an cleachd thu seo mus sàbhail thu iad?",
        "tooltip-diff": "Seall na mùthaidhean a chuir mi air an teacs",
        "tooltip-compareselectedversions": "Seall an diofar eadar an dà mhùthadh dhen duilleag seo a thagh thu",
-       "tooltip-watch": "Cuir an duilleag seo air do chlàr-faire",
+       "tooltip-watch": "Cuir an duilleag seo ris a' chlàr-fhaire agad",
+       "tooltip-watchlistedit-normal-submit": "Thoir tiotalan air falbh",
        "tooltip-watchlistedit-raw-submit": "Ùraich an clàr-faire",
+       "tooltip-recreate": "Ath-chruthaich an duilleag seo ged a chaidh a sguabadh às",
+       "tooltip-upload": "Tòisich air an luchdadh suas",
        "tooltip-rollback": "Ma chleachdas tu \"Roilig air ais\", tillidh thu gach mùthadh a rinn deasaiche àraid le aon bhriogadh",
        "tooltip-undo": "Tillidh \"Neo-dhèan\" am mùthadh seo 's fosglaidh e am foirm mùthaidh ann am modh an ro-sheallaidh. 'S urrainn dhut adhbhar a chur an cèill sa ghearr-chunntas air an dòigh seo.",
+       "tooltip-preferences-save": "Sàbhail na roghainnean",
        "tooltip-summary": "Cuir a-steach gearr-chunntas",
+       "interlanguage-link-title": "$1 – $2",
+       "interlanguage-link-title-nonlang": "$1 – $2",
+       "common.css": "/* Thèid an CSS a chuireas tu an-seo a chur an sàs air a h-uile craiceann */",
+       "print.css": "/* Bidh buaidh aig an CSS a chuireas tu an-seo air às-chur a' clò-bhualaidh */",
+       "noscript.css": "/* Bidh buaidh aig an CSS a chuireas tu an-seo air na daoine aig a bheil JavaScript à comas */",
+       "group-autoconfirmed.css": "/* Cha bhi buaidh aig an CSS a chuireas tu an-seo ach air cleachdaichean fèin-dearbhte */",
+       "group-user.css": "/* Cha bhi buaidh aig an CSS a chuireas tu an-seo ach air cleachdaichean clàraichte */",
+       "group-bot.css": "/* Cha bhi buaidh aig an CSS a chuireas tu an-seo ach air botaichean */",
+       "group-sysop.css": "/* Cha bhi buaidh aig an CSS a chuireas tu an-seo ach air rianairean */",
+       "group-bureaucrat.css": "/* Cha bhi buaidh aig an CSS a chuireas tu an-seo ach air biurocratan */",
+       "common.js": "/* Thèid gach JavaScript a chuireas tu an-seo a luchdadh leis gach luchdadh duilleige airson a h-uile cleachdaiche. */",
+       "group-autoconfirmed.js": "/* Cha dèid an JavaScript a chuireas tu an-seo a luchdadh ach airson nan cleachdaichean fèin-dearbhte */",
+       "group-user.js": "/* Cha dèid an JavaScript a chuireas tu an-seo a luchdadh ach airson nan cleachdaichean clàraichte */",
+       "group-bot.js": "/* Cha dèid an JavaScript a chuireas tu an-seo a luchdadh ach airson botaichean */",
+       "group-sysop.js": "/* Cha dèid an JavaScript a chuireas tu an-seo a luchdadh ach airson rianairean */",
+       "group-bureaucrat.js": "/* Cha dèid an JavaScript a chuireas tu an-seo a luchdadh ach airson biurocratan */",
        "anonymous": "{{PLURAL:$1|Cleachdaiche|Cleachdaichean}} gun ainm o {{SITENAME}}",
        "siteuser": "cleachdaiche {{SITENAME}} $1",
+       "anonuser": "{{SITENAME}} cleachdaiche gun ainm $1",
+       "lastmodifiedatby": "Chaidh an duilleag seo a mhùthadh $1 $2 le $3 an turas mu dheireadh.",
        "othercontribs": "Stèidhichte air obair le $1.",
        "others": "eile",
        "siteusers": "{{PLURAL:$2|Cleachdaiche|Cleachdaichean}} {{SITENAME}} $1",
+       "anonusers": "{{PLURAL:$2|Cleachdaiche|Cleachdaichean}} {{SITENAME}} gun ainm $1",
+       "creditspage": "Cliù airson na duilleige",
+       "nocredits": "Chan eil fiosrachadh cliùtha ri làimh airson na duilleige seo.",
+       "spamprotectiontitle": "Chriathrag dìona o spama",
+       "spamprotectiontext": "Chaidh an teacsa a bha thu airson a shàbhaladh a bhacadh le criathrag an spama.\nDh'fhaoidte gun do dh'adhbharaich ceangal seo a cheanglas ri làrach a-muigh a tha air an dubh-liosta.",
+       "spamprotectionmatch": "Seo an teacsa a thug aire air a' chriathrag spama againn: $1",
+       "spambot_username": "Sgioblachadh spama aig MediaWiki",
+       "spam_reverting": "A' tilleadh dhan mhùthadh mu dheireadh anns nach eil ceangal gu $1",
+       "spam_blanking": "Cha ceangal gu $1 anns gach mùthadh, 'ga bhànachadh",
+       "spam_deleting": "Cha ceangal gu $1 anns gach mùthadh, 'ga sguabadh às",
+       "simpleantispam-label": "Dearbhadh an aghaidh spama.\n<strong>NA</strong> lìon seo!",
+       "pageinfo-title": "Fiosrachadh airson \"$1\"",
+       "pageinfo-not-current": "Duilich, ach cha ghabh am fiosrachadh seo a thoirt seachad airson seann mhùthaidhean.",
+       "pageinfo-header-basic": "Fiosrachadh bunasach",
+       "pageinfo-header-edits": "Eachdraidh an deasachaidh",
+       "pageinfo-header-restrictions": "Dìon na duilleige",
+       "pageinfo-header-properties": "Roghainnean na duilleige",
+       "pageinfo-display-title": "Tiotal a thèid a shealltainn",
+       "pageinfo-default-sort": "Iuchair bunaiteach an t-seòrsachaidh \\",
+       "pageinfo-length": "Faid na duilleige (ann am baidhtichean)",
+       "pageinfo-article-id": "ID na duilleige",
+       "pageinfo-language": "Cànan susbaint na duilleige",
+       "pageinfo-content-model": "Modail susbaint na duilleige",
+       "pageinfo-robot-policy": "Inneacsadh le robotairean",
+       "pageinfo-robot-index": "Ceadaichte",
+       "pageinfo-robot-noindex": "Neo-cheadaichte",
+       "pageinfo-views": "Air a sealltainn",
+       "pageinfo-watchers": "A' cumail sùil air",
+       "pageinfo-few-watchers": "Tha nas lugha na $1 a' cumail sùil air",
+       "pageinfo-redirects-name": "Ath-stiùiridhean dhan duilleag seo",
+       "pageinfo-redirects-value": "$1",
+       "pageinfo-subpages-name": "Fo-dhuilleagan",
+       "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|ath-stiùireadh|ath-stiùireadh|ath-stiùiridhean|ath-stiùireadh}}; $3 {{PLURAL:$3|nach eil 'na ath-stiùireadh|nach eil 'nan ath-stiùireadh}})",
+       "pageinfo-firstuser": "Cruthaichear na duilleige",
+       "pageinfo-firsttime": "Ceann-là a chaidh a chruthachadh",
+       "pageinfo-lastuser": "An deasaiche mu deireadh",
+       "pageinfo-lasttime": "Ceann-là an deasachaidh mu dheireadh",
+       "pageinfo-edits": "Uiread nan deasachaidhean",
+       "pageinfo-authors": "Uiread nan ùghdaran fa leth",
+       "pageinfo-recent-edits": "Uiread nan deasachaidhean o chionn goirid (o chionn $1)",
+       "pageinfo-recent-authors": "Uiread nan ùghdaran fa leth o chionn goirid",
+       "pageinfo-magic-words": "{{PLURAL:$1|Facal|Faclan}} draoidheach ($1)",
        "pageinfo-hidden-categories": "{{PLURAL:$1|Roinn-seòrsa fhalaichte|Roinnean-seòrsa falaichte}} ($1)",
+       "pageinfo-templates": "{{PLURAL:$1|Teamplaid 'ga gabhail a-steach 'na iomradh|Teamplaidean 'gan gabhail a-steach 'nan iomradh}} ($1)",
+       "pageinfo-transclusions": "{{PLURAL:$1|Duilleag 'ga gabhail a-steach 'na iomradh|Duilleagan 'gan gabhail a-steach 'nan iomradh}} air ($1)",
        "pageinfo-toolboxlink": "Fiosrachadh mun duilleag",
+       "pageinfo-redirectsto": "'Na ath-stiùireadh gu",
+       "pageinfo-redirectsto-info": "fiosrachadh",
+       "pageinfo-contentpage": "'Ga chunntadh 'na duilleag susbainte",
+       "pageinfo-contentpage-yes": "Seadh",
        "pageinfo-protect-cascading": "'Ga dhìon o bhith mar eas on a sheo",
+       "pageinfo-protect-cascading-yes": "Seadh",
        "pageinfo-protect-cascading-from": "'Ga dhìon o bhith mar eas uaithe",
        "pageinfo-category-info": "Fiosrachadh mun roinn-seòrsa",
+       "pageinfo-category-pages": "Àireamh de dhuilleagan",
        "pageinfo-category-subcats": "Àireamh de fho-roinnean-seòrsa",
+       "pageinfo-category-files": "Àireamh de dh'fhaidhlichean",
        "markaspatrolleddiff": "Cuir comharra freiceadain ris",
        "markaspatrolledtext": "Cuir comharra freiceadain ris an duilleag seo",
        "markedaspatrolled": "Comharra freiceadain ris",
        "patrol-log-page": "Loga nam freiceadan",
        "patrol-log-header": "Seo loga nam mùthaidhean le comharra freiceadain riutha.",
        "log-show-hide-patrol": "$1 loga nam freiceadan",
+       "deletedrevision": "Chaidh an seann mhùthadh $1 a sguabadh às",
+       "filedeleteerror-short": "Mearachd a' sguabadh às an fhaidhle: $1",
+       "filedeleteerror-long": "Thachair mearachd le sguabadh às an fhaidhle:\n\n$1",
+       "filedelete-missing": "cha ghabh am faidhle \"$1\" a sguabadh às o nach eil e ann.",
+       "filedelete-old-unregistered": "chan eil am mùthadh \"$1\" aig an fhaidhle san stòr-dàta.",
+       "filedelete-current-unregistered": "chan eil am faidhle \"$1\" a chaidh a thoirt seachad san stòr-dàta.",
+       "filedelete-archive-read-only": "Chan urrainn dhan fhrithealaiche-lìn sgrìobhadh sa phasgan tasglainn \"$1\".",
        "previousdiff": "← Mùthadh nas sine",
        "nextdiff": "Deasachadh nas ùire →",
+       "mediawarning": "<strong>Rabhadh:</strong> dh'fhaoidte gu bheil còd droch-rùnach am broinn an t-seòrsa faidhle seo.\nDh'fhaoidte gun tèid tèarainteachd an t-siostaim agad a bhriseadh ma ruitheas tu e.",
        "imagemaxsize": "Crìochan air meud an deilbh:<br /><em>(airson duilleagan tuairisgeul an fhaidhle)</em>",
        "thumbsize": "Meud na dealbhaige:",
+       "widthheight": "$1 × $2",
+       "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|duilleag|dhuilleag|duilleagan|duilleag}}",
+       "file-info": "meud an fhaidhle: $1, seòrsa MIME: $2",
        "file-info-size": "$1 × $2 pixel, meud an fhaidhle: $3, seòrsa MIME: $4",
+       "file-info-size-pages": "$1 × $2 piogsail, meud an fhaidhle: $3, seòrsa MIME: $4, $5 {{PLURAL:$5|duilleag|dhuilleag|duilleagan|duilleag}}",
        "file-nohires": "Chan eil dùmhlachd-bhreacaidh nas fhearr ri fhaighinn.",
        "svg-long-desc": "Faidhle SVG, a-rèir ainm $1 × $2 pixel, meud faidhle: $3",
+       "svg-long-desc-animated": "Faidhle SVG beòthaichte, a-rèir ainm $1 × $2 pixel, meud faidhle: $3",
+       "svg-long-error": "Faidhle SVG mì-dhligheach: $1",
        "show-big-image": "Am faidhle tùsail",
+       "show-big-image-preview": "Meud an ro-sheallaidh seo: $1.",
+       "show-big-image-other": "{{PLURAL:$2|Dùmhlachd-bhreacaidh|Dùmhlachdan-breacaidh}} eile: $1.",
+       "show-big-image-size": "$1 × $2 piogsail",
+       "file-info-gif-looped": "lùbte",
+       "file-info-gif-frames": "$1 {{PLURAL:$1|fhrèam|fhrèam|frèaman|frèam}}",
+       "file-info-png-looped": "lùbte",
+       "file-info-png-repeat": "air a chluich $1 {{PLURAL:$1|turas|thuras|tursan|turas}}",
+       "file-info-png-frames": "$1 {{PLURAL:$1|fhrèam|fhrèam|frèaman|frèam}}",
        "file-no-thumb-animation": "<strong>An aire: Cha bhi beòthachadh air dealbhagan an fhaidhle seo ri linn cuingeachaidhean teicnigeach.</strong>",
        "file-no-thumb-animation-gif": "<strong>An aire: Cha bhi beòthachadh air dealbhagan airson dealbhan GIF le dùmhlachd-bhreacaidh àrd mar an tè seo ri linn cuingeachaidhean teicnigeach.</strong>",
+       "newimages": "Gailearaidh nan dealbhan ùra",
+       "imagelisttext": "Chì thu liosta dhe <strong>$1</strong> {{PLURAL:$1|fhaidhle|fhaidhle|faidhlichean|faidhle}} gu h-ìosal air {{PLURAL:$1|a sheòrsachadh|an seòrsachadh}} $2.",
+       "newimages-summary": "Seallaidh an duilleag shònraichte seo na faidhlichean as ùire a chaidh a luchdadh suas.",
+       "newimages-legend": "Criathrag",
+       "newimages-label": "Ainm faidhle (no pàirt dheth):",
+       "newimages-showbots": "Seall luchdaidhean suas le botaichean",
+       "noimages": "Chan eil dad ri fhaicinn an-seo.",
        "ilsubmit": "Rannsaich",
        "bydate": "air ceann-latha",
+       "sp-newimages-showfrom": "Seall na faidhlichean ùra a-mach o $1 $2",
+       "video-dims": "$1, $2 × $3",
+       "seconds-abbrev": "$1 diog",
+       "minutes-abbrev": "$1 mion",
+       "hours-abbrev": "$1 uair",
+       "days-abbrev": "$1 là",
+       "seconds": "{{PLURAL:$1|$1 diog|$1 dhiog|$1 diogan|$1 diog}}",
+       "minutes": "{{PLURAL:$1|$1 mhionaid|$1 mhionaid|$1 mionaidean|$1 mionaid}}",
+       "hours": "{{PLURAL:$1|$1 uair|$1 uair|$1 uairean|$1 uair}}",
+       "days": "{{PLURAL:$1|$1 latha|$1 latha|$1 làithean|$1 latha}}",
+       "weeks": "{{PLURAL:$1|$1 seachdain|$1 sheachdain|$1 seachdainean|$1 seachdain}}",
+       "months": "{{PLURAL:$1|$1 mhìos|$1 mhìos|$1 mìosan|$1 mìos}}",
+       "years": "{{PLURAL:$1|$1 bhliadhna|$1 bhliadhna|$1 bliadhnaichean|$1 bliadhna}}",
+       "ago": "o chionn $1",
+       "just-now": "an-dràsta fhèin",
+       "hours-ago": "o chionn $1 {{PLURAL:$1|uair|uair|uairean|uair}}",
+       "minutes-ago": "o chionn $1 {{PLURAL:$1|mhionaid|mhionaid|mionaidean|mionaid}}",
+       "seconds-ago": "o chionn $1 {{PLURAL:$1|diog|dhiog|diogan|diog}}",
+       "monday-at": "DiLuain $1",
+       "tuesday-at": "DiMàirt $1",
+       "wednesday-at": "DiChiadain $1",
+       "thursday-at": "DiarDaoin $1",
+       "friday-at": "DihAoine $1",
+       "saturday-at": "DiSathairne $1",
+       "sunday-at": "DiDòmhnaich $1",
+       "yesterday-at": "An-dè $1",
        "bad_image_list": "Seo mar a tha am fòrmat:\n\nCha bheachdaichear ach air buill liosta (loidhniche a tha * air am beulaibh).\nFeumaidh a' chiad cheangal air loidhne a bhith 'na cheangal ri droch fhaidhle.\nThathar a' coimhead air ceangal sam bith eile san loidhne sin mar eisgeachdan, 's e sin duilleagan far am faod am faidhle a bhith sa loidhne.",
        "metadata": "Metadata",
        "metadata-help": "Tha fiosrachadh a bharrachd san fhaidhle seo, 's mathaid o chamara digiteach no sganair a chaidh a chleachdadh gus a chruthachadh no a dhigiteachadh.\nMa chaidh am faidhle tùsail atharrachadh, faodaidh nach eil cuid dhen fhiosrachadh ceart a thaobh an fhaidhle atharraichte tuilleadh.",
        "metadata-expand": "Seall am fiosrachadh a bharrachd",
        "metadata-collapse": "Cuir am fiosrachadh a bharrachd am falach",
        "metadata-fields": "Thèid raointean meata-dhàta nan dealbhan a tha ainmichte san teachdaireachd seo a ghabhail a-steach air duilleag an deilbh nuair a bhios clàr a' mheata-dàta air a dhùmhlachadh.\nBidh an fheadhainn eile falaichte a ghnàth.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
+       "metadata-langitem": "<strong>$2:</strong> $1",
+       "metadata-langitem-default": "$1",
+       "exif-imagewidth": "Leud",
+       "exif-imagelength": "Àirde",
+       "exif-bitspersample": "Biod sa cho-phàirt",
+       "exif-compression": "Sgeama an dùmhlachaidh",
+       "exif-photometricinterpretation": "Co-dhèanamh nam piogsail",
+       "exif-orientation": "Comhair",
+       "exif-samplesperpixel": "Àireamh nan co-phàirtean",
+       "exif-planarconfiguration": "Rian an dàta",
+       "exif-xresolution": "Dùmhlachd-bhreacaidh chòmhnard",
+       "exif-yresolution": "Dùmhlachd-bhreacaidh inghearach",
+       "exif-stripoffsets": "Ionad dàta an deilbh",
+       "exif-jpeginterchangeformat": "Frith-àireamh gu JPEG SOI",
+       "exif-jpeginterchangeformatlength": "Baidhtichean de dhàta JPEG",
+       "exif-ycbcrcoefficients": "Co-èifeachdan a' mheatraigs atharrachaidh airson an spàs datha",
+       "exif-referenceblackwhite": "Càraid de luachan iomraidh dubh is geal",
+       "exif-datetime": "Ceann-là 's àm aig atharrachadh an fhaidhle",
+       "exif-imagedescription": "Tiotal an deilbh",
+       "exif-make": "Dèanadair a' chamara",
+       "exif-model": "Modail a' chamara",
+       "exif-software": "Am bathar-bog a chleachdadh",
+       "exif-artist": "Ùghdar",
        "exif-copyright": "Seilbheadair na còrach-lethbhreac",
+       "exif-exifversion": "Tionndadh de Exif",
+       "exif-flashpixversion": "An tionndadh de Flashpix ris an cuirear taic",
+       "exif-colorspace": "Spàs datha",
+       "exif-componentsconfiguration": "Ciall aig gach co-phàirt",
+       "exif-compressedbitsperpixel": "Modh dùmhlachd-bhreacaidh an deilbh",
+       "exif-pixelydimension": "Leud an deilbh",
+       "exif-pixelxdimension": "Àirde an deilbh",
+       "exif-usercomment": "Beachdan nan cleachdaichean",
+       "exif-relatedsoundfile": "Faidhle fuaime co-cheangailte ris",
+       "exif-datetimeoriginal": "Ceann-là 's àm a chaidh an dàta a chruthachadh",
+       "exif-datetimedigitized": "Ceann-là 's àm a chaidh cruth digiteach a chur air an dàta",
+       "exif-subsectime": "Fo-dhiogan cinn-là 's ama",
+       "exif-subsectimeoriginal": "Fo-dhiogan cinn-là 's ama thùsail",
+       "exif-subsectimedigitized": "Fo-dhiogan cinn-là 's ama an dreach digitich",
+       "exif-exposuretime": "Ùine deisearais",
+       "exif-exposuretime-format": "$1 diog ($2)",
+       "exif-fnumber": "Àireamh F",
+       "exif-fnumber-format": "f/$1",
+       "exif-exposureprogram": "Prògram deisearais",
+       "exif-spectralsensitivity": "Mothalachd speictreach",
+       "exif-isospeedratings": "Rangachadh astar ISO",
+       "exif-shutterspeedvalue": "Luaths siutair APEX",
+       "exif-aperturevalue": "Fosgladh APEX",
+       "exif-brightnessvalue": "Soilleireachd APEX",
+       "exif-exposurebiasvalue": "Claonadh deisearais APEX",
+       "exif-subjectdistance": "Astar a' chuspair",
+       "exif-meteringmode": "Modh meidheachaidh",
+       "exif-lightsource": "Tùs an t-solais",
+       "exif-flash": "Solas-boillsgidh",
+       "exif-focallength": "Faid fòcas an lionsa",
+       "exif-focallength-format": "$1 mm",
+       "exif-subjectarea": "Raon a' chuspair",
+       "exif-flashenergy": "Lùths an t-solais boillsgidh",
+       "exif-focalplanexresolution": "Dùmhlachd-bhreacaidh X aig plèana an fhòcais",
+       "exif-focalplaneyresolution": "Dùmhlachd-bhreacaidh Y aig plèana an fhòcais",
+       "exif-focalplaneresolutionunit": "Aonad dùmhlachd-breacaidh aig plèana an fhòcais",
+       "exif-subjectlocation": "Ionad a' chuspair",
+       "exif-exposureindex": "Inneacs deisearais",
+       "exif-sensingmethod": "Dòigh a' mhothaicheir",
+       "exif-filesource": "Tùs an fhaidhle",
+       "exif-scenetype": "Seòrsa an t-seallaidh",
+       "exif-customrendered": "Pròiseasadh gnàthaichte an deilbh",
+       "exif-exposuremode": "Modh deisearais",
+       "exif-whitebalance": "Meidh na gile",
+       "exif-digitalzoomratio": "Co-mheas an t-sùma dhigitich",
+       "exif-focallengthin35mmfilm": "Faid fòcas an am film 35 mm",
+       "exif-scenecapturetype": "Seòrsa glacaidh-sgrìn",
+       "exif-gaincontrol": "Smachd air an t-seallaidh",
+       "exif-contrast": "Iomsgaradh",
+       "exif-saturation": "Sàthachd",
+       "exif-sharpness": "Geurad",
        "exif-devicesettingdescription": "Tuairisgeul aig roghainnean an uidheim",
+       "exif-subjectdistancerange": "Rainse astar a' chuspair",
+       "exif-imageuniqueid": "ID fa leth an deilbh",
+       "exif-gpsversionid": "Tionndadh dhen taga GPS",
+       "exif-gpslatituderef": "Domhan-leud tuath no deas",
+       "exif-gpslatitude": "Domhan-leud",
+       "exif-gpslongituderef": "Domhan-fhad ear no siar",
+       "exif-gpslongitude": "Domhan-fhad",
+       "exif-gpsaltituderef": "Iomradh na h-àirde",
+       "exif-gpsaltitude": "Àirde",
+       "exif-gpstimestamp": "Àm GPS (uaireadair atomach)",
+       "exif-gpssatellites": "Saidealan a chaidh a chleachdadh airson an tomhais",
+       "exif-gpsstatus": "Staid a' ghlacadair",
+       "exif-gpsmeasuremode": "Modh an tomhais",
+       "exif-gpsdop": "Pongalachd an tomhais",
+       "exif-gpsspeedref": "Aonad an luaiths",
+       "exif-gpsspeed": "Luaths a' ghlacadair GPS",
+       "exif-gpstrackref": "Iomradh airson comhair a' ghluasaid",
+       "exif-gpstrack": "Comhair a' ghluasaid",
+       "exif-gpsimgdirectionref": "Iomradh airson comhair an deilbh",
+       "exif-gpsimgdirection": "Comhair an deilbh",
+       "exif-gpsdestlatituderef": "Iomradh airson domhan-leud a' chinn-uidhe",
+       "exif-gpsdestlatitude": "Domhan-leud a' chinn-uidhe",
+       "exif-gpsdestlongituderef": "Iomradh airson domhan-fhad a' chinn-uidhe",
+       "exif-gpsdestlongitude": "Domhan-fhad a' chinn-uidhe",
+       "exif-gpsdestbearingref": "Iomradh airson comhair a' chinn-uidhe",
+       "exif-gpsdestbearing": "Comhair a' chinn-uidhe",
+       "exif-gpsdestdistanceref": "Iomradh airson astar on cheann-uidhe",
+       "exif-gpsdestdistance": "Astar on cheann-uidhe",
+       "exif-gpsprocessingmethod": "Ainm air modh pròiseasadh GPS",
+       "exif-gpsareainformation": "Ainm raon GPS",
+       "exif-gpsdatestamp": "Ceann-là GPS",
+       "exif-gpsdifferential": "Ceartachadh diofarail GPS",
+       "exif-coordinate-format": "$1° $2′ $3″ $4",
+       "exif-jpegfilecomment": "Beachd faidhle JPEG",
+       "exif-keywords": "Facalan-luirg",
+       "exif-worldregioncreated": "An roinn-dùthcha san deach an dealbh a thogail",
+       "exif-countrycreated": "An dùthaich san deach an dealbh a thogail",
+       "exif-countrycodecreated": "Còd na dùthcha san deach an dealbh a thogail",
+       "exif-provinceorstatecreated": "An t-siorrachd no còigeamh san deach an dealbh a thogail",
+       "exif-citycreated": "Am baile san deach an dealbh a thogail",
+       "exif-sublocationcreated": "An t-ionad sa bhaile san deach an dealbh a thogail",
+       "exif-worldregiondest": "Tha an roinn-dùthcha 'ga sealltainn",
+       "exif-countrydest": "Tha an dùthaich 'ga sealltainn",
+       "exif-countrycodedest": "Tha còd na dùthcha air 'ga sealltainn",
+       "exif-provinceorstatedest": "Tha an t-siorrachd no còigeamh 'ga sealltainn",
+       "exif-citydest": "Tha am baile 'ga shealltainn",
+       "exif-sublocationdest": "Tha an t-ionad sa bhaile 'ga shealltainn",
+       "exif-objectname": "Tiotal goirid",
+       "exif-specialinstructions": "Stiùireadh sònraichte",
+       "exif-headline": "Ceann-sgrìobhadh",
+       "exif-credit": "Cliù/Solaraiche",
+       "exif-source": "Tùs",
+       "exif-editstatus": "Staid deasachaidh an deilbh",
+       "exif-urgency": "Èiginneachd",
+       "exif-fixtureidentifier": "Ainm nì shocraichte",
+       "exif-locationdest": "An t-ionad san dealbh",
+       "exif-locationdestcode": "Còs an ionaid san dealbh",
+       "exif-objectcycle": "Àm an latha iomchaidh airson a' mheadhain",
+       "exif-contact": "Fiosrachadh conaltraidh",
+       "exif-writer": "Sgrìobhadair",
+       "exif-languagecode": "Cànan",
+       "exif-iimversion": "Tionndadh de IIM",
        "exif-iimcategory": "Roinn-seòrsa",
        "exif-iimsupplementalcategory": "Roinnean-seòrsa foirlionach",
+       "exif-datetimeexpires": "Na cleachd às dèidh",
+       "exif-datetimereleased": "'Ga sgaoileadh o",
+       "exif-originaltransmissionref": "Còd ionaid tùsail an tar-chuir",
+       "exif-identifier": "Aithnichear",
+       "exif-lens": "An lionsa a chaidh a chleachdadh",
+       "exif-serialnumber": "Àireamh shreathach a' chamara",
+       "exif-cameraownername": "Seilbheadair a' chamara",
+       "exif-label": "Leubail",
+       "exif-datetimemetadata": "An ceann-là a chaidh am meata-dàta atharrachadh an turas mu dheireadh",
+       "exif-nickname": "Ainm neo-fhoirmeil an deilbh",
+       "exif-rating": "Rangachadh (a-mach à 5)",
+       "exif-rightscertificate": "Teisteanas rianachd chòraichean",
        "exif-copyrighted": "Staid na còrach-lethbhreac",
        "exif-copyrightowner": "Seilbheadair na còrach-lethbhreac",
+       "exif-usageterms": "Teirmichean a' chleachdaidh",
        "exif-webstatement": "Aithris na còrach-lethbhreac air loidhne",
+       "exif-originaldocumentid": "ID fa leth na sgrìobhainn tùsail",
        "exif-licenseurl": "URL airson ceadachas na còrach-lethbhreac",
+       "exif-morepermissionsurl": "Fiosrachadh ceadachais eile",
+       "exif-attributionurl": "Nuair a chleachdas sibh an obair seo, dèanaibh ceangal gu",
+       "exif-preferredattributionname": "Nuair a chleachdas sibh an obair seo, thoiribh cliù do",
+       "exif-pngfilecomment": "Beachd faidhle PNG",
+       "exif-disclaimer": "Aithris-àichidh",
+       "exif-contentwarning": "Rabhadh susbainte",
+       "exif-giffilecomment": "Beachd faidhle GIF",
+       "exif-intellectualgenre": "Seòrsa na susbainte",
+       "exif-subjectnewscode": "Còd a' chuspair",
+       "exif-scenecode": "Còd seallaidh IPTC",
+       "exif-event": "Tachartas san dealbh",
+       "exif-organisationinimage": "Buidheann san dealbh",
+       "exif-personinimage": "Neach sa dealbh",
+       "exif-originalimageheight": "Àirde an deilbh mus deach a bhearradh",
+       "exif-originalimagewidth": "Leud an deilbh mus deach a bhearradh",
        "exif-contact-value": "$1\n\n$2\n<div class=\"adr\">\n$3\n\n$4, $5, $6 $7\n</div>\n$8",
        "exif-subjectnewscode-value": "$2 ($1)",
        "exif-compression-1": "Gun dùmhlachadh",
+       "exif-compression-3": "Còdachadh facs CCITT Group 3",
+       "exif-compression-4": "Còdachadh facs CCITT Group 4",
        "exif-compression-5": "LZW",
        "exif-compression-6": "JPEG (sean)",
        "exif-compression-7": "JPEG",
        "exif-exposureprogram-0": "Gun mhìneachadh",
        "exif-exposureprogram-1": "A làimh",
        "exif-exposureprogram-2": "Prògram àbhaisteach",
+       "exif-exposureprogram-3": "Prìomhachas fosglaidh",
+       "exif-exposureprogram-4": "Prìomhachas siutair",
+       "exif-exposureprogram-5": "Prògram cruthachail (le claonadh gu doimhne an raoin)",
+       "exif-exposureprogram-6": "Prògram gluasaid (le claonadh gu siutair luath)",
+       "exif-exposureprogram-7": "Modh portraid (airson dealbhan faisg gun fhòcas air a' chùlaibh)",
+       "exif-exposureprogram-8": "Modh crutha-tìre (airson dealbhan crutha-tìre le fòcas air a' chùlaibh)",
        "exif-subjectdistance-value": "$1 {{PLURAL:$1|mheatair|mheatair|meatairean|meatair}}",
        "exif-meteringmode-0": "Chan eil fhios",
        "exif-meteringmode-1": "Cuibheasach",
+       "exif-meteringmode-2": "Cuibheas le cuideam sa bheadhan",
+       "exif-meteringmode-3": "Spot",
+       "exif-meteringmode-4": "Iomadh-spot",
+       "exif-meteringmode-5": "Pàtran",
+       "exif-meteringmode-6": "Leth-phàirteach",
        "exif-meteringmode-255": "Eile",
        "exif-lightsource-0": "Chan eil fhios",
+       "exif-lightsource-1": "Eile",
+       "exif-lightsource-2": "Fluaraiseach",
+       "exif-lightsource-3": "Tungstan (solas-dealain)",
+       "exif-lightsource-4": "Solas-boillsgidh",
+       "exif-lightsource-9": "Deagh shìde",
+       "exif-lightsource-10": "Sìde neulach",
+       "exif-lightsource-11": "Sgàil",
+       "exif-lightsource-12": "Fluaraiseach solas an latha (D 5700 – 7100K)",
+       "exif-lightsource-13": "Fluaraiseach geal an latha (N 4600 – 5400K)",
+       "exif-lightsource-14": "Fluaraiseach geal fuair (W 3900 – 4500K)",
+       "exif-lightsource-15": "Fluaraiseach geal (WW 3200 – 3700K)",
+       "exif-lightsource-17": "Solas stannardach A",
+       "exif-lightsource-18": "Solas stannardach B",
+       "exif-lightsource-19": "Solas stannardach C",
        "exif-lightsource-20": "D55",
        "exif-lightsource-21": "D65",
        "exif-lightsource-22": "D75",
        "exif-lightsource-23": "D50",
-       "exif-flash-mode-2": "bacadh riatanach air an t-solas-boillsgidh",
+       "exif-lightsource-24": "Tungstan stiùideo ISO",
+       "exif-lightsource-255": "Tùs solais eile",
+       "exif-flash-fired-0": "Cha deach an solas-boillsgidh air",
+       "exif-flash-fired-1": "Chaidh an solas-boillsgidh air",
+       "exif-flash-return-0": "gun fhoincsean mothachaidh airson an t-solais-bhoillsgidh",
+       "exif-flash-return-2": "cha deach solas-boillsgidh a mhothachadh",
+       "exif-flash-return-3": "chaidh solas-boillsgidh a mhothachadh",
+       "exif-flash-mode-1": "solas-boillsgidh riatanach",
+       "exif-flash-mode-2": "bacadh riatanach air an t-solas-bhoillsgidh",
        "exif-flash-mode-3": "modh fèin-obrachail",
+       "exif-flash-function-1": "Gun solas-boillsgidh",
+       "exif-flash-redeye-1": "modh lùghdachadh nan sùilean dearga",
        "exif-focalplaneresolutionunit-2": "òirleach",
        "exif-sensingmethod-1": "Gun mhìneachadh",
+       "exif-sensingmethod-2": "Mothaichear raon datha aon-sgeilbe",
+       "exif-sensingmethod-3": "Mothaichear raon datha dà-sgeilbe",
+       "exif-sensingmethod-4": "Mothaichear raon datha trì-sgeilbe",
+       "exif-sensingmethod-5": "Mothaichear raon datha sreathach",
+       "exif-sensingmethod-7": "Mothaichear trì-loidhneach",
+       "exif-sensingmethod-8": "Mothaichear datha sreathach loidhneach",
+       "exif-filesource-3": "Camara dhealbhan digiteach",
+       "exif-scenetype-1": "Dealbh a chaidh a thogail gu dìreach",
+       "exif-customrendered-0": "Pròiseas àbhaisteach",
+       "exif-customrendered-1": "Pròiseas gnàthaichte",
+       "exif-exposuremode-0": "Deisearas fèin-obrachail",
+       "exif-exposuremode-1": "Deisearas a làimh",
+       "exif-exposuremode-2": "Bracaid fèin-obrachail",
+       "exif-whitebalance-0": "Meidh na gile fèin-obrachail",
+       "exif-whitebalance-1": "Meidh na gile a làimh",
+       "exif-scenecapturetype-0": "Stannardach",
+       "exif-scenecapturetype-1": "Dreach-tìre",
+       "exif-scenecapturetype-2": "Portraid",
+       "exif-scenecapturetype-3": "Sealladh oidhche",
        "exif-gaincontrol-0": "Chan eil gin",
+       "exif-gaincontrol-1": "Buannachd ìosal suas",
+       "exif-gaincontrol-2": "Buannachd àrd suas",
+       "exif-gaincontrol-3": "Buannachd ìosal sìos",
+       "exif-gaincontrol-4": "Buannachd àrd sìos",
+       "exif-contrast-0": "Àbhaisteach",
+       "exif-contrast-1": "Lag",
+       "exif-contrast-2": "Cruaidh",
+       "exif-saturation-0": "Àbhaisteach",
+       "exif-saturation-1": "Sàthachd ìosal",
+       "exif-saturation-2": "Sàthachd àrd",
+       "exif-sharpness-0": "Àbhaisteach",
+       "exif-sharpness-1": "Lag",
+       "exif-sharpness-2": "Cruaidh",
+       "exif-subjectdistancerange-0": "Chan eil fios",
+       "exif-subjectdistancerange-1": "Macro",
+       "exif-subjectdistancerange-2": "Sealladh dlùth",
+       "exif-subjectdistancerange-3": "Sealladh aig astar",
+       "exif-gpslatitude-n": "Domhan-leud tuath",
+       "exif-gpslatitude-s": "Domhan-leud deas",
+       "exif-gpslongitude-e": "Domhan-fhad ear",
+       "exif-gpslongitude-w": "Domhan-fhad siar",
+       "exif-gpsaltitude-above-sealevel": "$1 {{PLURAL:$1|mheatair|mheatair|meatairean|meatair}} os cionn àirde na mara",
+       "exif-gpsaltitude-below-sealevel": "$1 {{PLURAL:$1|mheatair|mheatair|meatairean|meatair}} fo àirde na mara",
+       "exif-gpsstatus-a": "'Ga thomhas",
+       "exif-gpsstatus-v": "Comas eadar-obrachadh an tomhais",
+       "exif-gpsmeasuremode-2": "Tomhas air 2 dhimeinsean",
+       "exif-gpsmeasuremode-3": "Tomhas air 3 dimeinseanan",
        "exif-gpsspeed-k": "Cilemeatair san uair",
        "exif-gpsspeed-m": "Mìle gach uair",
        "exif-gpsspeed-n": "Mìle-mara san uair",
        "exif-gpsdestdistance-k": "Cilemeatair",
        "exif-gpsdestdistance-m": "Mìle",
        "exif-gpsdestdistance-n": "Mìle-mara",
+       "exif-gpsdop-excellent": "Sgoinneil ($1)",
+       "exif-gpsdop-good": "Math ($1)",
+       "exif-gpsdop-moderate": "Meadhanach ($1)",
+       "exif-gpsdop-fair": "Ceart gu leòr ($1)",
+       "exif-gpsdop-poor": "Dona ($1)",
+       "exif-objectcycle-a": "Sa madainn a-mhàin",
+       "exif-objectcycle-p": "Feasgar a-mhàin",
+       "exif-objectcycle-b": "An dà chuid sa mhadainn 's feasgar",
+       "exif-gpsdirection-t": "Fìor-chomhair",
+       "exif-gpsdirection-m": "Comhair mhagnaiteach",
+       "exif-ycbcrpositioning-1": "Meadhanaichte",
        "exif-dc-contributor": "Deasaichean",
+       "exif-dc-coverage": "Sgòp na h-aite no ama aig a' mheadhan",
        "exif-dc-date": "Ceann-là",
        "exif-dc-publisher": "Foillsichear",
        "exif-dc-relation": "Meadhanan co-cheangailte",
        "exif-rating-rejected": "Air a dhiùltadh",
        "exif-isospeedratings-overflow": "Nas motha na 65535",
        "exif-maxaperturevalue-value": "$1 APEX (f/$2)",
-       "watchlistall2": "a h-uile",
-       "namespacesall": "uile",
-       "monthsall": "uile",
+       "exif-iimcategory-ace": "Na h-ealain, cultar 's dibhearsan",
+       "exif-iimcategory-clj": "Eucoir 's lagha",
+       "exif-iimcategory-dis": "Dunaidh 's tubhaistean",
+       "exif-iimcategory-fin": "Eaconamaidh 's gnìomhachas",
+       "exif-iimcategory-edu": "Foghlam",
+       "exif-iimcategory-evn": "An àrainneachd",
+       "exif-iimcategory-hth": "Slàinte",
+       "exif-iimcategory-hum": "Daoine",
+       "exif-iimcategory-lab": "Obair",
+       "exif-iimcategory-lif": "Dòigh-bheatha 's cur-seachad",
+       "exif-iimcategory-pol": "Polataigs",
+       "exif-iimcategory-rel": "Creideamh",
+       "exif-iimcategory-sci": "Saidheans 's teicneolas",
+       "exif-iimcategory-soi": "Cuspairean sòisealta",
+       "exif-iimcategory-spo": "Spòrs",
+       "exif-iimcategory-war": "Cogadh, còmhstri 's aramach",
+       "exif-iimcategory-wea": "Aimsir",
+       "exif-urgency-normal": "Àbhaisteach ($1)",
+       "exif-urgency-low": "Ìosal ($1)",
+       "exif-urgency-high": "Àrd ($1)",
+       "exif-urgency-other": "Prìomhachas gnàthaiche ($1)",
+       "watchlistall2": "na h-uile",
+       "namespacesall": "na h-uile",
+       "monthsall": "na h-uile",
+       "confirmemail": "Dearbh an seòladh puist-dhealain",
+       "confirmemail_noemail": "Cha dug thu seachad seòladh puist-d dligheach ann an [[Special:Preferences|roghainnean a' chleachdaiche]] agad.",
+       "confirmemail_text": "Iarraidh {{SITENAME}} ort gun dearbh thu an seòladh puist-d agad mus cleachd thu feartan puist-d.\nCleachd am putan gu h-ìosal gus post-d dearbhaidh a chur dhan t-seòladh agad.\nBidh ceangal le còd sa phost-d ud;\nluchdaich an ceangal sa bhrabhsair agad airson dearbhadh gu bheil an seòladh puist-d agad dligheach.",
+       "confirmemail_pending": "Chaidh còd dearbhaidh a chur thugad air a' phost-d mar-thà;\nma tha thu air a' chunntas agad a chruthachadh o chionn goirid, 's math dh'fhaoidte gum b' feairrde thu feitheamh mionaid no dhà ach an ruig e thu mus iarr thu còd ùr.",
+       "confirmemail_send": "Cuir còd dearbhaidh thugam",
+       "confirmemail_sent": "Chaidh post-d dearbhaidh a chur.",
+       "confirmemail_oncreate": "Chaidh còd dearbhaidh a chur dhan t-seòladh puist-d agad.\nChan eil thu feumach air a' chòd seo airson logadh a-steach, ach feumaidh tu a thoirt seachad mus cleachd thu feart sam bith san uicidh a chleachdas post-d.",
+       "confirmemail_sendfailed": "Cha deach le {{SITENAME}} post-d dearbhaidh a chur thugad.\nDearbhaich nach eil caractar mì-dhligheach san t-seòladh puist-d agad.\n\nSeo na thill an t-inneal puist-d: $1",
+       "confirmemail_invalid": "Tha an còd dearbhaidh mì-dhligheach.\n'S dòcha gun do dh'fhalbh an ùine air.",
+       "confirmemail_needlogin": "$1 gus an seòladh puist-d agad a dhearbhadh.",
+       "confirmemail_success": "Chaidh an seòladh puist-d agad a dhearbhadh.\nFaodaidh tu [[Special:UserLogin|logadh a-steach]] a-nis 's tlachd a ghabhail às an uicidh.",
+       "confirmemail_loggedin": "Tha an seòladh puist-d agad air a dhearbhadh a-nis.",
+       "confirmemail_subject": "Dearbhadh an t-seòlaidh puist-d air {{SITENAME}}",
+       "confirmemail_body": "Chlàraich chuideigin - 's sinne an dùil gur e tusa a bh' ann - cunntas \"$2\"\nair {{SITENAME}} leis an t-seòladh puist-d seo on t-seòladh IP $1.\n\nGus dearbhadh gur an agad fhèin a tha an cunntas seo agus gus na feartan puist-d\na ghnìomhachadh air {{SITENAME}}, fosgail an ceangal seo sa bhrabhsair agad:\n\n$3\n\nMur e *tusa* a bh' ann a chlàraich an cunntas seo, lean air a' cheangal seo\ngus sgur dhen dearbhadh leis a' phost-d:\n\n$5\n\nFalbhaidh an ùine air a' chòd dearbhaidh seo $4.",
+       "confirmemail_body_changed": "Dh'atharraich chuideigin - 's sinne an dùil gur e tusa a bh' ann - an seòladh puist-d\naig a' chunntas \"$2\" air {{SITENAME}} dhan t-seòladh puist-d seo on t-seòladh IP $1.\n\nGus dearbhadh gur an agad fhèin a tha an cunntas seo agus gus na feartan puist-d\na ghnìomhachadh às ùr air {{SITENAME}}, fosgail an ceangal seo sa bhrabhsair agad:\n\n$3\n\nMur e *tusa* a bh' ann a chlàraich an cunntas seo, lean air a' cheangal seo\ngus sgur dhen dearbhadh leis a' phost-d:\n\n$5\n\nFalbhaidh an ùine air a' chòd dearbhaidh seo $4.",
+       "confirmemail_body_set": "Shuidhich chuideigin - 's sinne an dùil gur e tusa a bh' ann - an seòladh puist-d\naig a' chunntas \"$2\" air {{SITENAME}} dhan t-seòladh puist-d seo on t-seòladh IP $1.\n\nGus dearbhadh gur an agad fhèin a tha an cunntas seo agus gus na feartan puist-d\na ghnìomhachadh air {{SITENAME}}, fosgail an ceangal seo sa bhrabhsair agad:\n\n$3\n\nMur e *tusa* a bh' ann a chlàraich an cunntas seo, lean air a' cheangal seo\ngus sgur dhen dearbhadh leis a' phost-d:\n\n$5\n\nFalbhaidh an ùine air a' chòd dearbhaidh seo $4.",
+       "confirmemail_invalidated": "Chaidh sgur de dhearbhadh an t-seòlaidh puist-d",
+       "invalidateemail": "Sguir de dhearbhadh an t-seòlaidh puist-d",
+       "scarytranscludedisabled": "[Tha gabhail a-steach 'na iomradh eadar-uicidh à comas]",
+       "scarytranscludefailed": "[Dh'fhàillig le fhaighinn na teamplaid airson $1]",
+       "scarytranscludefailed-httpstatus": "[Dh'fhàillig le fhaighinn na teamplaid airson $1: HTTP $2]",
+       "scarytranscludetoolong": "[Tha an URL ro fhada]",
+       "deletedwhileediting": "<strong>Rabhadh:</strong> Chaidh an duilleag seo a sguabadh às às dèidh do thòiseachadh leis an deasachadh oirre!",
        "confirmrecreate": "Sguab [[User:$1|$1]] ([[User talk:$1|an deasbaireachd]]) an duilleag seo às às dèidh do thòiseachadh air an deasachadh air an adhbhar seo:\n: <em>$2</em>\nDearbhaich gu bheil thu airson an duilleag seo ath-chruthachadh dha-rìribh.",
        "confirmrecreate-noreason": "Sguab [[User:$1|$1]] ([[User talk:$1|an deasbaireachd]]) an duilleag seo às às dèidh do thòiseachadh air an deasachadh.\nDearbhaich gu bheil thu airson an duilleag seo ath-chruthachadh dha-rìribh.",
+       "recreate": "Ath-chruthaich",
+       "unit-pixel": "px",
+       "confirm_purge_button": "Ceart ma-thà",
+       "confirm-purge-top": "A bheil thu airson tasgadan na duilleige seo a ghlanadh?",
+       "confirm-purge-bottom": "Ma ghlanas tu duilleag, falamhaichidh seo an tasgadan 's bheir e air am mùthadh as ùire gun nochd e.",
+       "confirm-watch-button": "Ceart ma-thà",
        "confirm-watch-top": "A bheil thu airson an duilleag seo a chur ris a' chlàr-fhaire agad?",
+       "confirm-unwatch-button": "Ceart ma-thà",
        "confirm-unwatch-top": "A bheil thu airson an duilleag seo a thoirt air falbh on chlàr-fhaire agad?",
+       "semicolon-separator": ";&#32;",
+       "comma-separator": ",&#32;",
+       "colon-separator": ":&#32;",
+       "pipe-separator": "&#32;|&#32;",
+       "word-separator": "&#32;",
+       "ellipsis": "...",
+       "percent": "$1%",
+       "parentheses": "($1)",
+       "brackets": "[$1]",
+       "quotation-marks": "\"$1\"",
+       "imgmultipageprev": "← an duilleag roimhpe",
+       "imgmultipagenext": "an ath-dhuilleag →",
+       "imgmultigo": "Siuthad!",
+       "imgmultigoto": "Rach gu duilleag $1",
+       "img-lang-opt": "$2 ($1)",
+       "img-lang-default": "(an cànan tùsail)",
+       "img-lang-info": "Reandaraich an dealbh seo sa: $1. $2",
+       "img-lang-go": "Siuthad",
+       "ascending_abbrev": "a' dìreadh",
+       "descending_abbrev": "a' teàrnadh",
+       "table_pager_next": "An ath-dhuilleag",
+       "table_pager_prev": "An duilleag roimhpe",
+       "table_pager_first": "A' chiad duilleag",
+       "table_pager_last": "An duilleag mu dheireadh",
+       "table_pager_limit": "Seall $1 nithean air gach duilleag",
+       "table_pager_limit_label": "Nithean air gach duilleag:",
+       "table_pager_limit_submit": "Siuthad",
+       "table_pager_empty": "Gun toradh",
+       "autosumm-blank": "Chaidh an duilleag a bhànachadh",
+       "autosumm-replace": "Chaidh \"$1\" a chur an àite na susbaint",
+       "autoredircomment": "Chaidh an duilleag ath-stiùireadh gu [[$1]]",
+       "autosumm-new": "Chaidh duilleag le \"$1\" a chruthachadh",
+       "size-bytes": "$1 B",
+       "size-kilobytes": "$1 KB",
+       "size-megabytes": "$1 MB",
+       "size-gigabytes": "$1 GB",
+       "size-terabytes": "$1 TB",
+       "size-petabytes": "$1 PB",
+       "size-exabytes": "$1 EB",
+       "size-zetabytes": "$1 ZB",
+       "size-yottabytes": "$1 YB",
+       "bitrate-bits": "$1 bps",
+       "bitrate-kilobits": "$1 kbps",
+       "bitrate-megabits": "$1 Mbps",
+       "bitrate-gigabits": "$1 Gbps",
+       "bitrate-terabits": "$1 Tbps",
+       "bitrate-petabits": "$1 Pbps",
+       "bitrate-exabits": "$1 Ebps",
+       "bitrate-zetabits": "$1 Zbps",
+       "bitrate-yottabits": "$1 Ybps",
+       "lag-warn-normal": "Dh'fhaoidte nach nochd atharraichean nas ùire na $1 {{PLURAL:$1|diog|dhiog|diogan|diog}} air an liosta seo.",
+       "lag-warn-high": "Air sàilleibh eallach air frithealaiche an stòir-dhàta, dh'fhaoidte nach nochd atharraichean nas ùire na $1 {{PLURAL:$1|diog|dhiog|diogan|diog}} air an liosta seo.",
        "watchlistedit-normal-title": "Deasaich an clàr-faire",
        "watchlistedit-normal-legend": "Thoir tiotalan air falbh on chlàr-fhaire",
        "watchlistedit-normal-explain": "Chì thu na tiotalan a tha air a' chlàr-fhaire agad gu h-ìosal.\nGus tiotal a thoirt air falbh, cuir cromag sa bhogsa ri thaobh 's briog air \"{{int:Watchlistedit-normal-submit}}\".\n'S urrainn dhut [[Special:EditWatchlist/raw|còd an liosta a dheasachadh]] cuideachd.",
        "watchlistedit-normal-done": "Chaidh {{PLURAL:$1|$1 tiotal|$1 thiotal|$1 tiotalan|$1 tiotal}} a thoirt far a' chlàir-fhaire agad:",
        "watchlistedit-raw-title": "Deasaich còd a' chlàir-fhaire",
        "watchlistedit-raw-legend": "Deasaich còd a' chlàir-fhaire",
+       "watchlistedit-raw-explain": "Chì thu na tiotalan air a' chlàr-fhaire agad gu h-ìosal agus 's urrainn dhut an deasachadh 's tu an cur ris 's a thoirt air falbh on liosta;\naon tiotal air gach loidhne.\nNuair a bhios tu deiseil, briog air \"{{int:Watchlistedit-raw-submit}}\".\n'S urrainn dhut [[Special:EditWatchlist|an deasaiche àbhaisteach]] a cleachdadh cuideachd.",
+       "watchlistedit-raw-titles": "Tiotalan:",
        "watchlistedit-raw-submit": "Ùraich an clàr-faire",
+       "watchlistedit-raw-done": "Chaidh an clàr-faire agad ùrachadh.",
+       "watchlistedit-raw-added": "Chaidh $1 {{PLURAL:$1|tiotal|thiotal|tiotalan|tiotal}} a chur ris:",
+       "watchlistedit-raw-removed": "Chaidh $1 {{PLURAL:$1|tiotal|thiotal|tiotalan|tiotal}} a thoirt air falbh:",
+       "watchlistedit-clear-title": "Clàr-faire air a ghlanadh",
+       "watchlistedit-clear-legend": "Glan an clàr-faire",
+       "watchlistedit-clear-explain": "Thèid a h-uile tiotal a thoirt far a' chlàr-fhaire agad",
+       "watchlistedit-clear-titles": "Tiotalan:",
+       "watchlistedit-clear-submit": "Glan an clàr-faire (falbhaidh iad gu buan!)",
+       "watchlistedit-clear-done": "Chaidh an clàr-faire agad a ghlanadh.",
+       "watchlistedit-clear-removed": "Chaidh $1 {{PLURAL:$1|tiotal|thiotal|tiotalan|tiotal}} a thoirt air falbh:",
+       "watchlistedit-too-many": "Tha cus duilleagan ann gus an sealltainn an-seo.",
+       "watchlisttools-clear": "Glan an clàr-faire",
        "watchlisttools-view": "Seall na mùthaidhean iomchaidh",
        "watchlisttools-edit": "Seall is deasaich mo chlàr-faire",
        "watchlisttools-raw": "Deasaich còd a' chlàir-fhaire",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|an deasbaireachd]])",
+       "timezone-utc": "UTC",
+       "unknown_extension_tag": "Taga leudachain \"$1\" neo-aithnichte",
        "duplicate-defaultsort": "<strong>Rabhadh:</strong> Tha an iuchair seòrsachaidh bhunaiteach \"$2\" a' dol thairis air seann iuchair eile, \"$1\".",
        "version": "Tionndadh",
+       "version-extensions": "Leudachain air an stàladh",
+       "version-skins": "Craicnean",
+       "version-specialpages": "Duilleagan sònraichte",
+       "version-parserhooks": "Hooks a' pharsair",
+       "version-variables": "Caochladairean",
+       "version-antispam": "Dìon o spama",
+       "version-api": "API",
+       "version-other": "Eile",
+       "version-mediahandlers": "Làimhsichearan mheadhanan",
+       "version-hooks": "Hooks",
+       "version-parser-extensiontags": "Tagaichean leudachadh a' pharsair",
+       "version-parser-function-hooks": "Hooks foincsean a' pharsair",
+       "version-hook-name": "Ainm a' hook",
+       "version-hook-subscribedby": "'Ga fho-sgrìobhadh le",
+       "version-version": "($1)",
+       "version-no-ext-name": "[gun ainm]",
+       "version-svn-revision": "r$1",
+       "version-license": "Ceadachas MediaWiki",
+       "version-ext-license": "Ceadachas",
+       "version-ext-colheader-name": "Leudachan",
+       "version-skin-colheader-name": "Craiceann",
+       "version-ext-colheader-version": "Tionndadh",
+       "version-ext-colheader-license": "Ceadachas",
        "version-ext-colheader-description": "Tuairisgeul",
+       "version-ext-colheader-credits": "Ùghdaran",
+       "version-license-title": "Ceadachas airson $1",
+       "version-license-not-found": "Cha deach fiosrachadh mionaideach a' cheadachais a lorg airson an leudachain seo.",
+       "version-credits-title": "Cliù airson $1",
+       "version-credits-not-found": "Cha deach fiosrachadh mionaideach a' chliùtha a lorg airson an leudachain seo.",
        "version-poweredby-credits": "Tha an uicidh seo 'ga toirt dhut le cumhachd <strong>[https://www.mediawiki.org/ MediaWiki]</strong>, còir-lethbhreac © 2001-$1 $2.",
+       "version-poweredby-others": "eile",
+       "version-poweredby-translators": "eadar-theangadairean translatewiki.net",
        "version-credits-summary": "Bu toigh leinn urram a thoirt air na daoine a leanas air sgàth 's an cuid obrach airson [[Special:Version|MediaWiki]].",
+       "version-software": "Bathar-bog air a stàladh",
+       "version-software-product": "Bathar",
+       "version-software-version": "Tionndadh",
+       "version-entrypoints": "URLaichean puing-inntrigidh",
+       "version-entrypoints-header-entrypoint": "Puing-inntrigidh",
+       "version-entrypoints-header-url": "URL",
+       "version-entrypoints-articlepath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgArticlePath Slighe artaigil]",
+       "version-entrypoints-scriptpath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgScriptPath slighe sgriobt]",
+       "redirect": "Ath-stiùireadh le faidhle, cleachdaiche, duilleag no ID a' mhùthaidh",
+       "redirect-legend": "Cruthaich ath-stiùireadh gu faidhle no duilleag",
+       "redirect-summary": "Nì an duilleag shònraichte seo ath-stiùireadh gu faidhle (le ainm faidhle), duilleag (le ID a' mhùthaidh no ID na duilleige) no duilleag cleachdaiche (le àireamh ID a' chleachdaiche). Seo mar a chleachdas tu e: [[{{#Special:Redirect}}/file/Ball-eisimpleir.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] no [[{{#Special:Redirect}}/user/101]].",
+       "redirect-submit": "Siuthad",
+       "redirect-lookup": "Rannsaich:",
+       "redirect-value": "Luach:",
+       "redirect-user": "ID a' chleachdaiche",
+       "redirect-page": "ID na duilleige",
+       "redirect-revision": "Mùthadh na duilleige",
+       "redirect-file": "Ainm am fhaidhle",
+       "redirect-not-exists": "Cha deach an luach a lorg",
+       "fileduplicatesearch": "Lorg airson faidhlichean dùblaichte",
+       "fileduplicatesearch-summary": "Lorg airson faidhlichean dùblaichte, stèidhichte air luachan hais.",
+       "fileduplicatesearch-legend": "Lorg airson dùblachadh",
+       "fileduplicatesearch-filename": "Ainm an fhaidhle:",
+       "fileduplicatesearch-submit": "Lorg",
+       "fileduplicatesearch-info": "$1 × $2 piogsail<br />Meud an fhaidhle: $3<br />Seòrsa MIME: $4",
+       "fileduplicatesearch-result-1": "Chan eil dùblachadh co-ionnann aig an fhaidhle \"$1\".",
+       "fileduplicatesearch-result-n": "Tha $2 {{PLURAL:$2|dùblachadh co-ionnann|dhùblachadh co-ionnann|dùblachaidhean co-ionnann|dùblachadh co-ionnann}} aig an fhaidhle \"$1\".",
+       "fileduplicatesearch-noresults": "Cha deach faidhle air a bheil \"$1\" a lorg.",
        "specialpages": "Duilleagan sònraichte",
        "specialpages-note-top": "Treòir",
+       "specialpages-note": "* Duilleagan sònraichte coitcheann.\n* <span class=\"mw-specialpagerestricted\">Duilleagan sònraichte cuingichte.</span>",
+       "specialpages-group-maintenance": "Aithrisean na h-obrach-glèidhidh",
+       "specialpages-group-other": "Duilleagan sònraichte eile",
+       "specialpages-group-login": "Log a-steach / cruthaich cunntas",
+       "specialpages-group-changes": "Atharraichean 's logaichean o chionn goirid",
+       "specialpages-group-media": "Aithrisean mheadhanan 's luchdaidhean suas",
+       "specialpages-group-users": "Cleachdaichean 's ceadan",
+       "specialpages-group-highuse": "Duilleagan 'gan cleachdadh gu tric",
+       "specialpages-group-pages": "Liosta dhe na duilleagan",
+       "specialpages-group-pagetools": "Innealan nan duilleag",
+       "specialpages-group-wiki": "Ceann-là 's innealan",
+       "specialpages-group-redirects": "Duilleagan sònraichte a nì ath-stiùireadh",
+       "specialpages-group-spam": "Innealan spama",
+       "blankpage": "Duilleag bhàn",
+       "intentionallyblankpage": "Tha an duilleag seo bàn a dh'aona-ghothach.",
        "external_image_whitelist": " #Fàg an loidhne seo dìreach mar a tha e<pre>\n#Cuir mìrean nan regular expressions (dìreach a' phàirt eadar //) gu hìosal\n#Thèid seisean URL a lorg dhaibh am measg nan dealbhan air an taobh a-muigh (hotlinks)\n#Chithear an fheadhainn a tha a' freagairt ri seise a shealltainn air neo chithear ceangal dhan dealbh a-mhàin\n#Chan eil ann an loidhnichean a tha a' tòiseachadh le # ach beachdan\n#Chan eil aire do litrichean mòra no beaga\n\n#Cuir gach mì regex os cionn na loidhne seo. Fàg an loidhne seo dìreach mar a tha e</pre>",
+       "tags": "Tagaichean atharrachaidh dligheach",
        "tag-filter": "Criathrag [[Special:Tags|thagaichean]]:",
+       "tag-filter-submit": "Criathraich",
+       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Taga|Tagaichean}}]]: $2)",
+       "tags-title": "Tagaichean",
+       "tags-intro": "Seallaidh an duilleag seo na tagaichean a chleachdas am bathar-bog gus deasachadh a chomharrachadh 's an ciall a th' orra.",
+       "tags-tag": "Ainm an taga",
+       "tags-display-header": "Dreach air liostaichean nan atharraichean",
        "tags-description-header": "Tuairisgeul slàn a' chèill",
+       "tags-active-header": "Gnìomhach?",
+       "tags-hitcount-header": "Atharraichean le tagaichean riutha",
+       "tags-active-yes": "Seadh",
+       "tags-active-no": "Chan eadh",
+       "tags-edit": "deasaich",
+       "tags-hitcount": "$1 {{PLURAL:$1|atharrachadh|atharrachadh|atharraichean|atharrachadh}}",
+       "comparepages": "Coimeas duillegan",
+       "compare-page1": "Duilleag 1",
+       "compare-page2": "Duilleag 2",
+       "compare-rev1": "Mùthadh 1",
+       "compare-rev2": "Mùthadh 2",
+       "compare-submit": "Coimeas",
+       "compare-invalid-title": "Tha an tiotal a shònraich thu mì-dhligheach.",
+       "compare-title-not-exists": "Chan eil an tiotal a shònraich thu ann.",
+       "compare-revision-not-exists": "Chan eil am mùthadh a shònraich thu ann.",
+       "dberr-problems": "Duilich! Tha trioblaid teicnigeach aig an làrach seo.",
+       "dberr-again": "Feitheamh mionaid no dhà 's ath-luchdaich i.",
+       "dberr-info": "(Chan obraich an conaltradh ri frithealaiche an stòir-dhàta: $1)",
+       "dberr-info-hidden": "(Chan obraich an conaltradh ri frithealaiche an stòir-dhàta)",
+       "dberr-usegoogle": "Feuch lorg le Google san eadar-àm.",
+       "dberr-outofdate": "Thoir an aire nach eil an clàr acasan air an t-susbaint againn cho ùr sa ghabhas ma dh'fhaoidte.",
+       "dberr-cachederror": "Seo lethbhreac dhen duilleag a dh'iarr thu on tasgadan 's chan eil e cho ùr 's a ghabhas, ma dh'fhaoidte.",
+       "htmlform-invalid-input": "Cha duilgheadas le cuid dhe na chuir thu a-steach.",
+       "htmlform-select-badoption": "Chan eil an luach a thug thu seachad 'na roghainn dhligheach.",
+       "htmlform-int-invalid": "Chan eil an luach a thug thu seachad 'na àireamh shlàn.",
+       "htmlform-float-invalid": "Chan eil an luach a thug thu seachad 'na àireamh.",
+       "htmlform-int-toolow": "Tha an luach a thug thu seachad ro bheag on a tha e nas lugha na $1.",
+       "htmlform-int-toohigh": "Tha an luach a thug thu seachad ro mhòr on a tha e nas motha na $1.",
+       "htmlform-required": "Tha an luach seo riatanach.",
+       "htmlform-submit": "Cuir a-null",
+       "htmlform-reset": "Neo-dhèan na h-atharraichean",
+       "htmlform-selectorother-other": "Eile",
+       "htmlform-no": "Chan eil",
+       "htmlform-yes": "Tha",
+       "htmlform-chosen-placeholder": "Tagh roghainn",
+       "htmlform-cloner-create": "Cuir barrachd ris",
+       "htmlform-cloner-delete": "Thoir air falbh",
+       "htmlform-cloner-required": "Tha luach a dhìth.",
+       "sqlite-has-fts": "$1 le taic ri lorg teacsa shlàin",
+       "sqlite-no-fts": "$1 gun taic ri lorg teacsa shlàin",
        "logentry-delete-delete": "Sguab $1 às duilleag $3",
        "logentry-delete-restore": "Dh'aisig $1 duilleag $3",
        "logentry-delete-event": "Dh'atharraich $1 an fhaicsinneachd aig $5 {{PLURAL:$5|tachartas|thachartas|tachartasan|tachartas}} an loga air $3: $4",
        "logentry-suppress-revision": "Dh'atharraich $1 an fhaicsinneachd aig $5 {{PLURAL:$5|mhùthadh|mhùthadh|mùthaidhean|mùthadh}} air $3 gu dìomhair: $4",
        "logentry-suppress-event-legacy": "Dh'atharraich $1 an fhaicsinneachd aig tachartasan an loga air $3 gu dìomhair",
        "logentry-suppress-revision-legacy": "Dh'atharraich $1 an fhaicsinneachd aig mùthaidhean air $3 gu dìomhair",
+       "revdelete-content-hid": "chaidh susbaint fhalach",
        "revdelete-summary-hid": "chaidh gearr-chunntas an deasachaidh fhalach",
+       "revdelete-uname-hid": "chaidh ainm-cleachdaiche fhalach",
+       "revdelete-content-unhid": "chaidh susbaint a neo-fhalach",
        "revdelete-summary-unhid": "chaidh gearr-chunntas an deasachaidh a nochdadh",
+       "revdelete-uname-unhid": "chaidh ainm-cleachdaiche a neo-fhalach",
+       "revdelete-restricted": "chaidh cuingeachaidhean a chur an sàs air rianairean",
+       "revdelete-unrestricted": "chaidh cuingeachaidhean a thoirt air falbh airson rianairean",
        "logentry-move-move": "Ghluais $1 duilleag $3 gu $4",
        "logentry-move-move-noredirect": "Ghluais $1 duilleag $3 gu $4 's cha do {{GENDER:$2|dh'fhàg e|dh'fhàg i|dh'fhàgadh}} ath-stiùireadh ann",
        "logentry-move-move_redir": "Ghluais $1 duilleag $3 gu $4 slighe ath-stiùiridh",
        "logentry-rights-rights-legacy": "Dh'atharraich $1 {{GENDER:$2|a bhallrachd|a ballrachd}} ann am buidheann airson $3",
        "logentry-rights-autopromote": "Chaidh $1 àrdachadh o $4 gu $5 gu fèin-obrachail",
        "rightsnone": "(chan eil gin)",
+       "feedback-bugornote": "Ma tha fiosrachadh mionaideach agad air duilgheadas teicnigeach, feuch an dèan thu [$1 aithris air buga].\nMur eil, 's urrainn dhut am foirm furasta a chleachdadh gu h-ìosal. Thèid do bheachd a chur ris an duilleag \"[$3 $2]\" is d' ainm-cleachdaiche a chur ris.",
+       "feedback-subject": "Cuspair:",
+       "feedback-message": "Teachdaireachd:",
+       "feedback-cancel": "Sguir dheth",
+       "feedback-submit": "Cuir do bheachd a-null",
+       "feedback-adding": "A' cur beachd ri duilleag...",
+       "feedback-error1": "Mearachd: Chan aithnich sinn toradh an API",
+       "feedback-error2": "Mearachd: Dh'fhàillig leis an deasachadh",
+       "feedback-error3": "Mearachd: Cha d' fhuair sinn freagairt on API",
+       "feedback-thanks": "Mòran taing! Chaidh do bheachd a phostadh air an duilleag \"[$2 $1]\".",
+       "feedback-close": "Dèanta",
+       "feedback-bugcheck": "Taghta! Dearbh nach eil e air [$1 liosta nam bugaichean air a bheil sinn eòlach] mar-thà.",
+       "feedback-bugnew": "Dhearbh mi seo. Dèan aithris air buga ur",
+       "searchsuggest-search": "Lorg",
        "searchsuggest-containing": "anns a bheil...",
+       "api-error-badaccess-groups": "Chan eil cead agad gus faidhlichean a luchdadh suas dhan uicidh seo.",
+       "api-error-badtoken": "Mearachd taobh a-staigh: Droch thòcan.",
+       "api-error-copyuploaddisabled": "Tha luchdadh suas le URL à comas air an fhrithealaiche seo.",
+       "api-error-duplicate": "Tha {{PLURAL:$1|[$2 faidhle eile]|are [$2 faidhlichean eile]}} air an làrach seo mar-thà sa bheil an aon susbaint.",
+       "api-error-duplicate-archive": "Tha {{PLURAL:$1|[$2 faidhle eile]|are [$2 faidhlichean eile]}} air an làrach seo mar-thà sa bheil an aon susbaint ach chaidh {{PLURAL:$1|a sguabadh|an sguabadh}} às.",
+       "api-error-duplicate-archive-popup-title": "Bha {{PLURAL:$1|am faidhle|na faidhlichean}} dùblaichte air {{PLURAL:$1|a|an}} sguabadh às mar-thà.",
+       "api-error-duplicate-popup-title": "{{PLURAL:$1|Faidhle|Faidhlichean}} dùblaichte.",
+       "api-error-empty-file": "Tha am faidhle a chuir thu a-null falamh.",
+       "api-error-emptypage": "Chan fhaodar duilleagan falamh ùra a chruthachadh.",
+       "api-error-fetchfileerror": "Mearachd taobh a-staigh: Chaidh rudeigin cearr le faighinn an fhaidhle.",
+       "api-error-fileexists-forbidden": "Tha faidhle air a bheil \"$1\" ann mar-thà 's cha ghabh sgrìobhadh thairis air.",
        "api-error-fileexists-shared-forbidden": "Tha faidhle air a bheil \"$1\" san ionad-tasgaich cho-roinnte mar-thà 's cha ghabh sgrìobhadh thairis air.",
+       "api-error-file-too-large": "Tha am faidhle a chuir thu a-null ro mhòr.",
+       "api-error-filename-tooshort": "Tha ainm an fhaidhle ro ghoirid.",
+       "api-error-filetype-banned": "Tha an seòrsa faidhle seo toirmisgte.",
+       "api-error-filetype-banned-type": "Chan eil $1 {{PLURAL:$4|'na seòrsa faidhle|'nan seòrsaichean faidhle}} ceadaichte. Is $2 {{PLURAL:$3|an seòrsa faidhle|na seòrsaichean faidhle}} ceadaichte.",
+       "api-error-filetype-missing": "Tha leudachan a dhìth air an fhaidhle.",
+       "api-error-hookaborted": "Chaidh sgur dhen atharrachadh a dh'fheuch thu ri dèanamh le leudachan.",
+       "api-error-http": "Mearachd taobh a-staigh: Cha b' urrainn dhuinn ceangal ris an fhrithealaiche.",
+       "api-error-illegal-filename": "Chan eil ainm an fhaidhle ceadaichte.",
+       "api-error-internal-error": "Mearachd tabh a-staigh: chaidh rudeigin cearr rè an luchdaidh suas agad dhan uicidh.",
+       "api-error-invalid-file-key": "Mearachd taobh a-staigh: Cha deach am faidhle a lorg san stòras shealach.",
+       "api-error-missingparam": "Mearachd taobh a-staigh: Tha paramadair a dhìth air an iarrtas.",
+       "api-error-missingresult": "Mearachd taobh a-staigh: Cha d' fhuair sinn a-mach co-dhiù an do shoirbhich leis an lethbhreac gus nach do shoirbhich.",
+       "api-error-mustbeloggedin": "Feumaidh tu logadh a-steach mus luchdaich thu suas faidhle.",
+       "api-error-mustbeposted": "Mearachd taobh a-staigh: Tha an t-iarrtas ag iarraidh HTTP POST.",
+       "api-error-noimageinfo": "Shoirbhich leis an luchdadh suas, ach cha dug am frithealaiche fiosrachadh sam bith dhuinn mun fhaidhle.",
+       "api-error-nomodule": "Mearachd taobh a-staigh: cha deach mòideal luchdaidh suas a shuidheachadh.",
+       "api-error-ok-but-empty": "Mearachd taobh a-staigh: Cha d' fhuair sinn freagairt on fhrithealaiche.",
+       "api-error-overwrite": "Chan fhaodar sgrìobhadh thairis air faidhle a tha ann mar-thà.",
+       "api-error-stashfailed": "Mearachd taobh a-staigh: Cha deach leis an fhrithealaiche faidhle sealach a stòradh.",
+       "api-error-publishfailed": "Mearachd taobh a-staigh: Cha deach leis an fhrithealaiche faidhle sealach fhoillseachadh.",
        "api-error-stasherror": "Thachair mearachd le luchdadh suas an fhaidhle dhan tasgadan.",
-       "expand_templates_remove_nowiki": "Mùch tagaichean <nowiki> san toradh"
+       "api-error-timeout": "Cha d' fhuair sinn freagairt on fhrithealaiche ri àm.",
+       "api-error-unclassified": "Thachair mearachd neo-aithnichte.",
+       "api-error-unknown-code": "Mearachd neo-aithnichte: \"$1\".",
+       "api-error-unknown-error": "Mearachd tabh a-staigh: Chaidh rudeigin cearr rè luchdadh suas an fhaidhle agad.",
+       "api-error-unknown-warning": "Rabhadh neo-aithnichte: \"$1\".",
+       "api-error-unknownerror": "Mearachd neo-aithnichte: \"$1\".",
+       "api-error-uploaddisabled": "Tha luchdadh suas à comas air an uicidh seo.",
+       "api-error-verification-error": "Dh'fhaoidte gu bheil am faidhle seo coirbte no gu bheil an leudachan cearr air.",
+       "duration-seconds": "$1 {{PLURAL:$1|diog|dhiog|diogan|diog}}",
+       "duration-minutes": "$1 {{PLURAL:$1|mhionaid|mhionaid|mionaidean|mionaid}}",
+       "duration-hours": "$1 {{PLURAL:$1|uair|uair|uairean|uair}}",
+       "duration-days": "$1 {{PLURAL:$1|latha|latha|làithean|latha}}",
+       "duration-weeks": "$1 {{PLURAL:$1|seachdain|sheachdain|seachdainean|seachdain}}",
+       "duration-years": "$1 {{PLURAL:$1|bhliadhna|bhliadhna|bliadhnaichean|bliadhna}}",
+       "duration-decades": "$1 {{PLURAL:$1|deichead|dheichead|deicheadan|deichead}}",
+       "duration-centuries": "$1 {{PLURAL:$1|linn|linn|linntean|linn}}",
+       "duration-millennia": "$1 {{PLURAL:$1|mhìle bliadhna|mhìle bliadhna|mìle bliadhna|mìle bliadhna}}",
+       "rotate-comment": "Chaidh an dealbh a chuairteachadh le $1 {{PLURAL:$1|cheum|cheum|ceuman|ceum}} gu tuathal",
+       "limitreport-cputime-value": "$1 {{PLURAL:$1|diog|dhiog|diogan|diog}}",
+       "limitreport-walltime-value": "$1 {{PLURAL:$1|diog|dhiog|diogan|diog}}",
+       "limitreport-ppvisitednodes-value": "$1/$2",
+       "limitreport-ppgeneratednodes-value": "$1/$2",
+       "limitreport-postexpandincludesize-value": "$1/$2 {{PLURAL:$2|bhaidht|bhaidht|baidhtichean|baidht}}",
+       "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|bhaidht|bhaidht|baidhtichean|baidht}}",
+       "limitreport-expansiondepth-value": "$1/$2",
+       "limitreport-expensivefunctioncount-value": "$1/$2",
+       "expandtemplates": "Leudaich na templaidean",
+       "expand_templates_intro": "Gabhaidh an duilleag shònraichte seo ri teacsa agus leudaichidh i a h-uile teamplaid na broinn gu ath-chùrsach.\nLeudaichidh i cuideachd foincseanan parsair ris a chuirear taic, can\n<code><nowiki>{{</nowiki>#language:…}}</code> agus caochladairean mar\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.\nAir deireadh na sgeòil, leudaichidh i cha mhòr gach rud eadar camagan dualach dùbailte.",
+       "expand_templates_title": "Tiotal a' cho-theacsa airson {{FULLPAGENAME}} is msaa.:",
+       "expand_templates_input": "Teacsa ion-chuir:",
+       "expand_templates_output": "Toradh",
+       "expand_templates_xml_output": "Às-chur XML",
+       "expand_templates_html_output": "Bun-tùs a' chòd HTML",
+       "expand_templates_ok": "Ceart ma-thà",
+       "expand_templates_remove_comments": "Thoir na beachdan air falbh",
+       "expand_templates_remove_nowiki": "Mùch tagaichean <nowiki> san toradh",
+       "expand_templates_generate_xml": "Seall craobh parsaidh an XML",
+       "expand_templates_generate_rawhtml": "Seall bun-tùs an HTML",
+       "expand_templates_preview": "Ro-sheall",
+       "pagelanguage": "Roghnaichear cànan nan duilleag",
+       "pagelang-name": "Duilleag",
+       "pagelang-language": "Cànan",
+       "pagelang-use-default": "Cleachd an cànan tùsail",
+       "pagelang-select-lang": "Tagh cànan",
+       "right-pagelang": "Atharraich cànan nan duilleagan",
+       "action-pagelang": "atharraich cànan nan duilleagan",
+       "log-name-pagelang": "Loga air atharrachadh nan cànan",
+       "log-description-pagelang": "Seo loga dhe na h-atharraichean air cànanan nan duilleagan.",
+       "logentry-pagelang-pagelang": "Dh'atharraich $1 cànan nan duilleagan airson $3 o $4 gu $5."
 }
index 324bf23..d72e97a 100644 (file)
        "searchall": "todo",
        "showingresults": "{{PLURAL:$1|Móstrase '''1''' resultado|Móstranse '''$1''' resultados}}, comezando polo número '''$2'''.",
        "showingresultsinrange": "{{PLURAL:$1|Móstrase <strong>1</strong> resultado|Móstranse <strong>$1</strong> resultados}}, comezando polo número <strong>$2</strong> e rematando polo número <strong>$3</strong>.",
-       "showingresultsnum": "A continuación {{PLURAL:$3|móstrase '''1''' resultado|móstranse '''$3''' resultados}}, comezando polo número '''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Resultado '''$1''' de '''$3'''|Resultados do '''$1''' ao '''$2''', dun total de '''$3''',}} para \"'''$4'''\"",
        "search-nonefound": "Non se atopou ningún resultado que coincidise coa procura.",
        "powersearch-legend": "Busca avanzada",
index 95e9f9b..36237d0 100644 (file)
        "qbmyoptions": "Οἱ δέλτοι μου",
        "faq": "Τὰ πολλάκις αἰτηθέντα",
        "faqpage": "Project:Πολλάκις αἰτηθέντα",
-       "vector-action-addsection": "Θέμα προστιθέναι",
-       "vector-action-delete": "Σβεννύναι",
-       "vector-action-move": "Κινεῖν",
-       "vector-action-protect": "Φυλάττειν",
-       "vector-action-undelete": "Ἀποκαθιστάναι",
-       "vector-action-unprotect": "Ἄλλαξον τὴν φύλαξιν",
-       "vector-view-create": "Ποιεῖν",
-       "vector-view-edit": "Μεταγράφειν",
-       "vector-view-history": "Ἱστορίαν ὁρᾶν",
-       "vector-view-view": "Ἀναγνῶναι",
-       "vector-view-viewsource": "Ὁρᾶν τὴν πηγήν",
        "actions": "Δράσεις",
        "namespaces": "Ὀνοματεῖα",
        "variants": "Παραλλαγαί",
        "editundo": "ἀναίρεσις",
        "searchresults": "Ἀποτελέσματα ἀναζητήσεως",
        "searchresults-title": "Ἀποτελέσματα ζητήσεως διὰ \"$1\"",
-       "toomanymatches": "Αἱ ἀπαντήσασαι ἀντιστοιχίαι εἰσὶν ὑπὲρ τὸ δέον πλείονες· πείρασον ἑτέραν πεῦσιν τινά",
        "titlematches": "Ἡ ἐπιγραφὴ τῆς δέλτου ἀντιστοιχεῖ",
        "textmatches": "Τὸ κείμενον τῆς δέλτου ἀντιστοιχεῖ",
        "notextmatches": "Οὐδὲν κείμενον τῆς δέλτου ἀντιστοιχεῖ",
        "searchmenu-exists": "'''Ὑπάρχει δέλτος τις ὀνόματι \"[[:$1]]\" ἐν τῷδε τῷ βίκι'''",
        "searchmenu-new": "'''Ποιεῖν τὴν δέλτον \"[[:$1]]\" ἐν τῷδε τῷ βίκι'''",
        "searchprofile-articles": "Δέλτοι περιεχομένων",
-       "searchprofile-project": "Βοήθεια  καὶ δέλτοι ἐγχειρήματος",
        "searchprofile-images": "Πολυμέσα",
        "searchprofile-everything": "Ἅπαντα",
        "searchprofile-advanced": "Προεωσμένον",
        "searchprofile-articles-tooltip": "Ζητεῖν ἐν $1",
-       "searchprofile-project-tooltip": "Ζητεῖν ἐν $1",
        "searchprofile-images-tooltip": "Ζητεῖν ἀρχεῖα",
        "searchprofile-everything-tooltip": "Πανταχοῖ (καὶ τὰς δέλτους διαλέξεως) ζητεῖν.",
        "searchprofile-advanced-tooltip": "Ζητεῖν εἰς συνήθη ὀνοματεῖα",
        "search-interwiki-default": "$1 ἀποτελέσματα:",
        "search-interwiki-more": "(πλείω)",
        "search-relatedarticle": "Σχετικά",
-       "searcheverything-enable": "Ζήτησις ἐν πᾶσι τοῖς ὀνοματοχώροις",
        "searchrelated": "σχετικά",
        "searchall": "ἅπασαι",
        "showingresults": "Δεικνύναι κατωτέρω μέχρι {{PLURAL:$1|'''1''' ἀποτέλεσμα|'''$1''' ἀποτελέσματα}}· ἐκκίνησις ἐκ τοῦ #'''$2'''.",
-       "showingresultsnum": "Δεικνύναι {{PLURAL:$3|'''1''' ἀποτέλεσμα|'''$3''' ἀποτελέσματα}}· ἐκκίνησις ἐκ τοῦ #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Ἀποτέλεσμα'''$1''' ἀπὸ '''$3'''|Ἀποτελέσματα '''$1 - $2''' ἀπὸ '''$3'''}} περὶ '''$4'''",
        "search-nonefound": "Οὐδὲν ἀποτέλεσμα ἀντίστοιχον τῆς πεύσεως.",
        "powersearch-legend": "Ἀνωτέρα ἀναζήτησις",
        "allowemail": "Ἐπιτρέπειν τὴν χρῆσιν ἠλ-ταχυδρομείου ὑφ'ἑτέρων χρωμένων",
        "prefs-searchoptions": "Ἐπιλογαὶ ζητήσεως",
        "prefs-namespaces": "Ὄνοματικὸς χῶρος",
-       "defaultns": "Εἰ δὲ ἄλλως, ζήτησον ἐν τοῖσδε ὀνοματικοῖς χώροις:",
        "default": "προκαθωρισμένον",
        "prefs-files": "Ἀρχεῖα",
        "prefs-custom-css": "CSS παραγγελτόν",
        "prefs-emailconfirm-label": "Ἐπιβεβαίωσις ἠλ.-διευθύνσεως:",
        "youremail": "Ἠλεκτρονικαὶ ἐπιστολαί:",
        "username": "Ὄνομα χρωμένου:",
-       "uid": "Ταυτότης χρωμένου:",
        "prefs-memberingroups": "Μέλος {{PLURAL:$1|ομάδoς|ομάδων}}:",
        "prefs-registration": "Χρόνος ἐγγραφῆς:",
        "yourrealname": "Τὸ ἀληθὲς ὄνομα:",
        "logempty": "Μὴ ἀντιστοιχοῦντα τὰ τεμάχια ἐν τῷδε τῷ καταλόγῳ.",
        "log-title-wildcard": "Ζητεῖν ἐπιγραφὰς ἐκκινουμένας ἐκ τοῦδε τοῦ κειμένου",
        "allpages": "Πᾶσαι αἱ δέλτοι",
-       "alphaindexline": "$1 ἕως $2",
        "nextpage": "Ἡ δέλτος ἡ ἑπομένη ($1)",
        "prevpage": "Ἡ δέλτος ἡ προτέρα ($1)",
        "allpagesfrom": "Ἐπιδεικνύναι τὰς δέλτους ἐκ:",
index ecc51da..d47eab5 100644 (file)
        "searchrelated": "verwandt",
        "searchall": "alli",
        "showingresults": "Do {{PLURAL:$1|isch '''1''' Ergebnis|sin '''$1''' Ergebniss}}, s fangt aa mit dr Nummerer '''$2.'''",
-       "showingresultsnum": "Do {{PLURAL:$3|isch '''1''' Ergebnis|sin '''$3''' Ergebniss}}, s fangt aa mit dr Nummere '''$2.'''",
        "showingresultsheader": "{{PLURAL:$5|Ergebnis '''$1''' vu '''$3'''|Ergebnis '''$1 - $2''' vu '''$3'''}} fir '''$4'''",
        "search-nonefound": "Fir Dyyni Suechaafrog sin keini Ergebniss gfunde wore.",
        "powersearch-legend": "Erwytereti Suech",
index 90c3184..46f1539 100644 (file)
        "searchrelated": "શોધ સંબંધિત",
        "searchall": "બધા",
        "showingresults": " {{PLURAL:$1|'''1''' પરિણામ|'''$1''' પરિણામો}} સુધી #'''$2''' થી શરૂ  કરી",
-       "showingresultsnum": "#'''$2''' થી શરૂ કરી {{PLURAL:$3|'''1''' પરિણામresult|'''$3''' પરિણામો}} અહીં બતાવ્યાં છે",
        "showingresultsheader": "'''$4''' માટે {{PLURAL:$5|પરિણામ  '''$1''' of '''$3'''|પરિણામો '''$1 - $2''' of '''$3'''}}",
        "search-nonefound": "તમે આપેલી માહિતી ને મળતાં આવતાં કોઈ પરિણામો નથી",
        "powersearch-legend": "વધુ પર્યાયો સાથે શોધો",
index cb5b009..23cbf79 100644 (file)
        "qbmyoptions": "My ghuillagyn",
        "faq": "FC",
        "faqpage": "Project:FC",
-       "vector-action-addsection": "Cur cooish noa rish",
-       "vector-action-delete": "Scryss",
-       "vector-action-move": "Scugh",
-       "vector-action-protect": "Coadee",
-       "vector-action-undelete": "Jee-scryss",
-       "vector-action-unprotect": "Caghlaa coadey",
-       "vector-view-create": "Croo",
-       "vector-view-edit": "Reagh",
-       "vector-view-history": "Jeeagh er shennaghys",
-       "vector-view-view": "Lhaih",
-       "vector-view-viewsource": "Jeeagh er bun",
        "actions": "Jantyssyn",
        "namespaces": "Reamyssyn",
        "variants": "Cummaghyn elley",
        "viewprevnext": "Jeeagh er ($1 {{int:pipe-separator}} $2) ($3)",
        "searchmenu-new": "'''Croo yn duillag \"[[:$1]]\" er y wiki shoh!'''",
        "searchprofile-articles": "Duillagyn cummal",
-       "searchprofile-project": "Duillagyn Coonee as Shalee",
        "searchprofile-everything": "Dagh red",
        "searchprofile-articles-tooltip": "Ronsee ayns $1",
-       "searchprofile-project-tooltip": "Ronsee ayns $1",
        "searchprofile-images-tooltip": "Ronsee coadanyn",
        "searchprofile-everything-tooltip": "Ronsee dagh red (goaill stiagh duillagyn resoonaght)",
        "search-result-size": "$1 ({{PLURAL:$2|1 fockle|$2 'ockle|$2 'ockle|$2 focklyn}})",
        "prefs-files": "Coadanyn",
        "youremail": "Post-L:",
        "username": "Dt'ennym ymmydeyr:",
-       "uid": "Enney ymmydeyr:",
        "prefs-memberingroups": "Oltey {{PLURAL:$1|possan|phossan|phossan|possanyn}} heese:",
        "prefs-registration": "Traa listal",
        "yourrealname": "Feer-ennym:",
        "log": "Lioaryn cooishyn",
        "all-logs-page": "Dagh ooilley lioar chooishyn",
        "allpages": "Dagh ooilley ghuillag",
-       "alphaindexline": "$1 gys $2",
        "nextpage": "Yn chied duillag elley ($1)",
        "prevpage": "Yn duillag roish ($1)",
        "allpagesfrom": "Taishbyn ny duillagyn ta toshiaghey lesh:",
index 718610d..a900ad5 100644 (file)
        "searchrelated": "相關",
        "searchall": "全部",
        "showingresults": "Ha-mien hién-sṳ chhiùng thi-'''$2'''-thiàu khôi-sṳ́ ke '''$1'''-thiàu kiet-kó:",
-       "showingresultsnum": "下背展示從第'''$2'''條開始嘅'''{{PLURAL:$3|1|$3}}'''條結果。",
        "showingresultsheader": "對'''$4'''嘅{{PLURAL:$5|第'''$1'''到第'''$3'''隻結果|第'''$1 - $2'''隻,共'''$3'''隻結果}}",
        "search-nonefound": "在查詢肚無結果相符。",
        "powersearch-legend": "高級搜尋",
index a78042e..bfba9bb 100644 (file)
        "qbmyoptions": "Ka‘u mau ‘ao‘ao",
        "faq": "NNP",
        "faqpage": "Project:NNP",
-       "vector-action-addsection": "Hoʻohui kumuhana",
-       "vector-action-delete": "Holoi",
-       "vector-action-move": "E hoʻoneʻe",
-       "vector-action-protect": "E hoʻomalu",
-       "vector-action-undelete": "Holoiʻole",
-       "vector-action-unprotect": "E hoʻololi i ka hoʻomalu",
-       "vector-view-create": "Haku",
-       "vector-view-edit": "Hoʻololi",
-       "vector-view-history": "Nānā i ka mōʻaukala",
-       "vector-view-view": "Heluhelu",
-       "vector-view-viewsource": "Nānā i ke kumu",
        "actions": "Nā Hana",
        "namespaces": "Lewainoa",
        "variants": "Nā Lolina",
        "recreate-moveddeleted-warn": "<strong>E akahele: Ke haku nei ʻoe i kekahi ʻaoʻao i holoi ʻia.</strong>\n\nPono ʻoe e noʻonoʻo e pili ana ka pono o ka hoʻomau ʻana o ka hoʻololi ʻana o kēia ʻaoʻao.\nAia ka moʻolelo holoi a hoʻoneʻe no kēia ʻaoʻao ma ʻaneʻi:",
        "moveddeleted-notice": "Ua holoi ʻia kēia ʻaoʻao.\nHoʻolako ʻia ka moʻolelo holoi a hoʻoneʻe no kēia ʻaoʻao i lalo no ke kūmole.",
        "log-fulllog": "Nānā i ka moʻolelo piha",
-       "postedit-confirmation": "Ua mālama ʻia kāu hoʻololi",
+       "postedit-confirmation-saved": "Ua mālama ʻia kāu hoʻololi",
        "defaultmessagetext": "Kikokikona pūlono pa‘amau",
        "content-model-wikitext": "kikokikonawiki",
        "content-model-javascript": "IawaSikulipa",
        "searchmenu-exists": "<strong>Aia kekahi ʻaoʻao i kapa ʻia o \"[[:$1]]\" ma kēia wiki.</strong> {{PLURAL:$2|0=|ʻIke hoʻi i na hualoaʻa huli ʻē aʻe i loaʻa ʻia.}}",
        "searchmenu-new": "<strong>Haku i ka ʻaoʻao \"[[:$1]]\" ma kēia wiki!</strong> {{PLURAL:$2|0=|\"ʻIke hoʻi i ka ʻaoʻao i loaʻa ʻia ma kou huli ʻana.|ʻIke hoʻi nā hualoaʻa huli i loaʻa ʻia.}}",
        "searchprofile-articles": "Nā ʻAoʻao mealoko",
-       "searchprofile-project": "Nā ʻaoʻao Kōkua a me Papahana",
        "searchprofile-images": "Laupāpaho",
        "searchprofile-everything": "Nā mea apau",
        "searchprofile-advanced": "Kiʻelē",
        "searchprofile-articles-tooltip": "Huli i loko o $1",
-       "searchprofile-project-tooltip": "Huli i loko o $1",
        "searchprofile-images-tooltip": "Huli no nā waihona",
        "searchprofile-everything-tooltip": "Huli i nā mea apau (nā walaʻau nō hoʻi)",
        "searchprofile-advanced-tooltip": "Huli iā lewainoa pilikino",
        "search-interwiki-default": "Nā hualoaʻa mai $1:",
        "search-interwiki-more": "(hou aʻe)",
        "search-relatedarticle": "Nā Mea ʻālike",
-       "searcheverything-enable": "Huli i nā lewainoa apau",
        "searchrelated": "na mea ʻālike",
        "searchall": "nā mea apau",
        "showingresultsheader": "{{PLURAL:$5|<strong>$1</strong> hualoaʻa o <strong>$3</strong> mau hualoaʻa|<strong$1-$2</strong> mau hualoaʻa o <strong>$3</strong> mau hualoaʻa}} no <strong>$4</strong>",
        "prefs-files": "Waihona",
        "youremail": "Lekauila:",
        "username": "{{GENDER:$1|Inoa mea hoʻohana}}:",
-       "uid": "{{GENDER:$1|Mea hoʻohana}} ID:",
        "prefs-memberingroups": "{{GENDER:$2|He lālā}} o {{PLURAL:$1|hui|mau hui}}:",
        "prefs-registration": "Hola kāinoa:",
        "yourrealname": "Inoa ʻoiaʻiʻo:",
        "log": "Nā Mo‘olelo",
        "all-logs-page": "Nā Moʻolelo lehulehu apau",
        "allpages": "Nā ‘Ao‘ao apau",
-       "alphaindexline": "$1 i $2",
        "nextpage": "Mea aʻe ($1)",
        "prevpage": "Mea ma mua aʻe ($1)",
        "allarticles": "Nā ʻAoʻao apau",
        "show-big-image-preview": "Ka nui o kēia nāmua: $1.",
        "show-big-image-size": "$1 × $2 mau pikela",
        "newimages-legend": "Kānana",
-       "showhidebots": "($1 mau lopako)",
        "noimages": "ʻAʻohe mea.",
        "ilsubmit": "Huli",
        "bydate": "e ka lā",
index f33218c..6116884 100644 (file)
        "searchall": "הכול",
        "showingresults": "{{PLURAL:$1|מוצגת תוצאה <strong>אחת</strong>|מוצגות עד <strong>$1</strong> תוצאות}} החל ממספר <strong>$2</strong>:",
        "showingresultsinrange": "{{PLURAL:$1|מוצגת תוצאה <strong>אחת</strong>|מוצגות עד <strong>$1</strong> תוצאות}} בין המספרים <strong>$2</strong> ו‏‏־<strong>$3</strong>:",
-       "showingresultsnum": "{{PLURAL:$3|מוצגת תוצאה '''אחת'''|מוצגות '''$3''' תוצאות}} החל ממספר '''$2''':",
        "showingresultsheader": "{{PLURAL:$5|תוצאה '''$1''' מתוך '''$3'''|תוצאות '''$1 - $2''' מתוך '''$3'''}} עבור '''$4'''",
        "search-nonefound": "לא נמצאו תוצאות המתאימות לחיפוש.",
        "powersearch-legend": "חיפוש מתקדם",
        "license-nopreview": "(תצוגה מקדימה לא זמינה)",
        "upload_source_url": "(כתובת URL תקפה ונגישה)",
        "upload_source_file": "(קובץ במחשב שלך)",
+       "listfiles-delete": "מחיקה",
        "listfiles-summary": "דף מיוחד זה מציג את כל הקבצים שהועלו.",
        "listfiles_search_for": "חיפוש קובץ מדיה בשם:",
        "imgfile": "קובץ",
        "duplicate-defaultsort": "'''אזהרה:''' המיון הרגיל \"$2\" דורס את המיון הרגיל המוקדם ממנו \"$1\".",
        "version": "גרסת התוכנה",
        "version-extensions": "הרחבות מותקנות",
+       "version-skins": "עיצובים מותקנים",
        "version-specialpages": "דפים מיוחדים",
        "version-parserhooks": "הרחבות מפענח",
        "version-variables": "משתנים",
        "version-antispam": "מניעת ספאם",
-       "version-skins": "עיצובים",
        "version-other": "אחר",
        "version-mediahandlers": "מציגי מדיה",
        "version-hooks": "מבני Hook",
        "version-license": "רישיון עבור מדיה־ויקי",
        "version-ext-license": "רישיון",
        "version-ext-colheader-name": "הרחבה",
+       "version-skin-colheader-name": "עיצוב",
        "version-ext-colheader-version": "גרסה",
        "version-ext-colheader-license": "רישיון",
        "version-ext-colheader-description": "תיאור",
        "expand_templates_remove_nowiki": "הסרת תגי <nowiki> בתוצאה",
        "expand_templates_generate_xml": "הצגת עץ הפענוח של XML",
        "expand_templates_generate_rawhtml": "הצגת HTML גולמי",
-       "expand_templates_preview": "תצוגה מקדימה"
+       "expand_templates_preview": "תצוגה מקדימה",
+       "pagelanguage": "בורר שפת הדף",
+       "pagelang-name": "דף",
+       "pagelang-language": "שפה",
+       "pagelang-use-default": "להשתמש בשפה הרגילה",
+       "pagelang-select-lang": "בחירת שפה",
+       "right-pagelang": "שינוי שפת הדף",
+       "action-pagelang": "לשנות את שפת הדף",
+       "log-name-pagelang": "יומן שינוי שפה",
+       "log-description-pagelang": "זהו יומן של שינויים בשפות של הדפים.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|שינה|שינתה}} את שפת הדף $3 מ$4 ל$5."
 }
index 2b9ef85..6845717 100644 (file)
        "searchrelated": "सम्बंधित",
        "searchall": "सभी",
        "showingresults": "नीचे क्रमांक '''$2''' से प्रारंभ कर के अधिकतम '''$1''' परिणाम {{PLURAL:$1|दिखाया गया है|दिखाए गए हैं}}।",
-       "showingresultsnum": "नीचे क्रमांक '''$2''' से प्रारंभ कर के अधिकतम '''$3''' परिणाम {{PLURAL:$3|दिखाया गया है|दिखाए गए हैं}}।",
        "showingresultsheader": "'''$4''' के खोज परिणाम {{PLURAL:$5|कुल '''$3''' में से #'''$1'''|कुल '''$3''' में से क्रं. '''$1 - $2'''}}",
        "search-nonefound": "आपकी खोज से मेल खाते कोई परिणाम नहीं मिले।",
        "powersearch-legend": "उन्नत खोज",
index fda5f14..21f50ce 100644 (file)
        "qbmyoptions": "Hamar panna",
        "faq": "Sab time puchhe waala sawal",
        "faqpage": "Project:Sab time puchhe waala sawal",
-       "vector-action-addsection": "Topic jorro",
-       "vector-action-delete": "Mitao",
-       "vector-action-move": "Naam badlo",
-       "vector-action-protect": "Bachao",
-       "vector-action-undelete": "Pahile jaise karo",
-       "vector-action-unprotect": "Surakchha ke badlo",
-       "vector-view-create": "Banao",
-       "vector-view-edit": "Badlo",
-       "vector-view-history": "Itihaas dekho",
-       "vector-view-view": "Parrho",
-       "vector-view-viewsource": "Source dekho",
        "actions": "Karam",
        "namespaces": "Naam",
        "variants": "Antar",
        "difference-missing-revision": "Ii badlao ($1) {{PLURAL:$2|was|were}} pe {{PLURAL:$2|One revision|$2 revisions}} nai pawa gais hae\nIske kaaran ii hoe sake hae ki ek mitawa gais panna se link karaa jaawe hae.\nIske baare me aur jaankari [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] me paawa jaae sake hae.",
        "searchresults": "Khoj ke natija",
        "searchresults-title": "\"$1\" ke natija ke khojo",
-       "toomanymatches": "Bahut dher match mila, duusra query se kosis karo",
        "titlematches": "Panna ke jon naam mile hai",
        "textmatches": "Panna ke jon text mile hai",
        "notextmatches": "Koi panna see text nai mile hae",
        "searchrelated": "sambhand rakkhe hai",
        "searchall": "sab",
        "showingresults": "Niche dekhae hai {{PLURAL:$1|'''1''' result|'''$1''' results}} #'''$2''' se suruu hoe ke.",
-       "showingresultsnum": "Niche dekhawa jae hai {{PLURAL:$3|'''1''' result|'''$3''' results}}, #'''$2''' se suruu hoe ke.",
        "showingresultsheader": "{{PLURAL:$5|Natija '''$1''' of '''$3'''|Natija '''$1 - $2''' of '''$3'''}} '''$4''' khatir",
        "search-nonefound": "Ii sawaal ke koi jawab nai hae.",
        "powersearch-legend": "Gahira khoj",
index 1de9987..255e77f 100644 (file)
        "qbmyoptions": "Akon mga panid",
        "faq": "Mga masami pamangkoton",
        "faqpage": "Project:MMP",
-       "vector-action-addsection": "Magdugang sang topiko",
-       "vector-action-delete": "Panason",
-       "vector-action-move": "Saylohon",
-       "vector-action-protect": "Pangapinan",
-       "vector-action-undelete": "Dulaon ang pagpanas",
-       "vector-action-unprotect": "Ilisan ang pagpangapin",
-       "vector-view-create": "Himuon",
-       "vector-view-edit": "Ilisan",
-       "vector-view-history": "Lantawon ang kasaysayan",
-       "vector-view-view": "Magbasa",
-       "vector-view-viewsource": "Lantawon ang ginhalinan",
        "actions": "Mga hulag",
        "namespaces": "Ngalan-espasyo",
        "variants": "Mga nagkalain-lain",
        "difference-missing-revision": "May {{PLURAL:$2|isa ka pagbag-o|$2 ka mga pagbag-o}} san sini nga kinalain ($1) ang wala makita.\n\nIni kalabanan ginabuhat sang nagasunod nga wala na mabag-o nga link sang isa ka panid nga gindula na.\nAng mga detalye mahimo nga makita sa [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].",
        "searchresults": "Resulta sang Pagpangita",
        "searchresults-title": "Resulta sang Pagpangita para \"$1\"",
-       "toomanymatches": "Tuman ka madamo nga pareho ang nagbalik, palihog tilaw sang lain nga pagpangita",
        "titlematches": "Mga pareho nga titulo sang panid",
        "textmatches": "Mga pareho nga teksto sang panid",
        "notextmatches": "Wala sang pahina nga parehas teksto",
        "searchmenu-exists": "'''May yara sang panid nga ginhingalanan nga \"[[:$1]]\" sa sini nga wiki.'''",
        "searchmenu-new": "'''Gintuga ang panid nga \"[[:$1]]\" sa sini nga wiki!'''",
        "searchprofile-articles": "Mga panid sang unod",
-       "searchprofile-project": "Mga panid sang Bulig kag Proyekto",
        "searchprofile-images": "Multimedia",
        "searchprofile-everything": "Tanan-tanan",
        "searchprofile-advanced": "Mas mauna",
        "searchprofile-articles-tooltip": "Pangitaa sa $1",
-       "searchprofile-project-tooltip": "Pangitaa sa $1",
        "searchprofile-images-tooltip": "Mangita sang mga hilera",
        "searchprofile-everything-tooltip": "Pangitaon ang tanan nga kaundan (dala na ang mga panid sang pag-estorya)",
        "searchprofile-advanced-tooltip": "Pangitaon sa pahungod nga espasyo sang pangalan",
        "search-interwiki-default": "$1 mga resulta:",
        "search-interwiki-more": "(damu)",
        "search-relatedarticle": "Konektado",
-       "searcheverything-enable": "Pangitaon sa tanan nga espasyo sang pangalan",
        "searchrelated": "konektado",
        "searchall": "tanan",
        "showingresults": "Ginapakita sa dalom pakadto sa {{PLURAL:$1|'''1''' ka resulta|'''$1''' ka mga resulta}} umpisa ang #'''$2'''.",
-       "showingresultsnum": "Ginapakita sa dalom ang {{PLURAL:$3|'''1''' ka resulta|'''$3''' ka mga resulta}} umpisa ang #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Resulta nga '''$1''' sang '''$3'''|Mga resulta nga '''$1 - $2''' sang '''$3'''}} para sa '''$4'''",
        "search-nonefound": "Wala sang mga resulta nga nagsanto sa imo nga ginapangita.",
        "powersearch-legend": "Abanse nga pagpangita",
        "allowemail": "Paganahon ang e-mail halin sa iban nga manuggamit",
        "prefs-searchoptions": "Mga pililian sa pagpangita",
        "prefs-namespaces": "Ngalan-espasyo",
-       "defaultns": "Kon indi magpangita na lang sa sini nga mga ngalan-espasyo",
        "default": "default",
        "prefs-files": "Mga hilera",
        "prefs-custom-css": "Ginhungod nga CSS",
        "prefs-emailconfirm-label": "Paagkumperma sang e-mail:",
        "youremail": "E-mail:",
        "username": "Ngalan sang Manog-gamit:",
-       "uid": "ID sang manuggamit:",
        "prefs-memberingroups": "Miyembro sang {{PLURAL:$1|grupo|mga grupo}}:",
        "prefs-registration": "Oras sang pagparehistro:",
        "yourrealname": "Matood-tood nga pangalan:",
        "booksources-go": "Lakat",
        "log": "Logs",
        "allpages": "Tanan nga mga pahina",
-       "alphaindexline": "$1 sa $2",
        "prevpage": "Antes nga pahina ($1)",
        "allpagesfrom": "Ipakita ang mga pahina sugod sa:",
        "allpagesto": "Ipakita ang mga pahina nga nagakatapos sa:",
index 568b852..f2cf581 100644 (file)
        "searchall": "sve",
        "showingresults": "Dolje {{PLURAL:$1|je prikazan '''$1''' rezultat|su prikazana '''$1''' rezultata|je prikazano '''$1''' rezultata}}, počevši od '''$2'''.",
        "showingresultsinrange": "Dolje {{PLURAL:$1|je prikazan '''$1''' rezultat|su prikazana '''$1''' rezultata|je prikazano '''$1''' rezultata}}, u rasponu od '''$2''' do '''$3'''.",
-       "showingresultsnum": "Dolje {{PLURAL:$3|je prikazan '''$3''' rezultat|su prikazana '''$3''' rezultata|je prikazano '''$3''' rezultata}}, počevši s brojem '''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Rezultat '''$1''' od '''$3'''|Rezultati '''$1 - $2''' od '''$3'''}} za '''$4'''",
        "search-nonefound": "Ne postoje rezultati koji se podudaraju s upitom.",
        "powersearch-legend": "Napredno pretraživanje",
        "powersearch-togglelabel": "Uključi:",
        "powersearch-toggleall": "Sve",
        "powersearch-togglenone": "Ništa",
+       "powersearch-remember": "Zapamti izbor za buduća pretraživanja",
        "search-external": "Vanjski pretraživač",
        "searchdisabled": "<p>Oprostite! Pretraga po cjelokupnoj bazi je zbog bržeg rada projekta {{SITENAME}} trenutačno onemogućena. Možete se poslužiti tražilicom Google.</p>",
        "preferences": "Postavke",
        "scarytranscludefailed": "[Dobava predloška nije uspjela za $1]",
        "scarytranscludefailed-httpstatus": "[Preuzimanje predloška nije uspjelo za $1: HTTP $2]",
        "scarytranscludetoolong": "[URL je predug]",
-       "deletedwhileediting": "'''Upozorenje''': Ova stranica je obrisana nakon što ste počeli uređivati!",
+       "deletedwhileediting": "'''Upozorenje''': ova stranica je obrisana nakon što ste počeli uređivati!",
        "confirmrecreate": "Suradnik [[User:$1|$1]] ([[User talk:$1|talk]]) izbrisao je ovaj članak nakon što ste ga počeli uređivati. Razlog brisanja\n: ''$2''\nPotvrdite namjeru vraćanja ovog članka.",
        "confirmrecreate-noreason": "Suradnik [[User:$1|$1]] ([[User talk:$1|razgovor]]) je obrisao ovaj članak nakon što ste ga počeli uređivati. Molimo potvrdite da stvarno želite ponovo započeti ovaj članak.",
        "recreate": "Vrati",
        "duplicate-defaultsort": "'''Upozorenje:''' Razvrstavanje po \"$2\" poništava ranije razvrstavanje po \"$1\".",
        "version": "Inačica softvera",
        "version-extensions": "Instalirana proširenja",
+       "version-skins": "Izgledi",
        "version-specialpages": "Posebne stranice",
        "version-parserhooks": "Kuke parsera",
        "version-variables": "Varijable",
        "version-antispam": "Sprječavanje spama",
-       "version-skins": "Izgledi",
        "version-other": "Ostalo",
        "version-mediahandlers": "Rukovatelji medijima",
        "version-hooks": "Kuke",
        "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",
-       "specialpages-group-login": "Prijava / Otvaranje računa",
+       "specialpages-group-login": "Prijava/otvaranje računa",
        "specialpages-group-changes": "Nedavne promjene i evidencije",
        "specialpages-group-media": "Izvještaji i postavljanje datoteka",
        "specialpages-group-users": "Suradnici i suradnička prava",
index 15cbb43..b952766 100644 (file)
        "searchall": "alle",
        "showingresults": "Hier {{PLURAL:$1|ist '''1''' Ergebnis|sind '''$1''' Ergebnisse}}, beginnend mit Nummer '''$2.'''",
        "showingresultsinrange": "Unne {{PLURAL:$1|weard <strong>en</strong> Ergebnis|werre bis zu <strong>$1</strong> Ergebnisse}} im Bereich <strong>$2</strong> bis <strong>$3</strong> oongezeicht.",
-       "showingresultsnum": "Hier {{PLURAL:$3|ist '''1''' Ergebnis|sind '''$3''' Ergebnisse}}, beginnend mit Nummer '''$2.'''",
        "showingresultsheader": "{{PLURAL:$5|Ergebnis '''$1''' von '''$3'''|Ergebnisse '''$1–$2''' von '''$3'''}} für '''$4'''",
        "search-nonefound": "Zu deiner Suchoonfroch wore ken Ergebnisse gefund.",
        "powersearch-legend": "Erweiterte Such",
index ce9a52c..3677994 100644 (file)
        "searchall": "wšě",
        "showingresults": "Deleka so hač {{PLURAL:$1|'''1''' wuslědk pokazuje|'''$1''' wuslědkaj pokazujetej|'''$1''' wuslědki pokazuja|'''$1''' wuslědkow pokazuje}}, započinajo z #'''$2'''.",
        "showingresultsinrange": "Deleka so do {{PLURAL:$1|<strong>1</strong> wuslědka|<strong>$1</strong> wuslědkow}} we wobłuku <strong>$2</strong> hač do <strong>$3</strong> pokazuje.",
-       "showingresultsnum": "Deleka so {{PLURAL:$3|'''1''' wuslědk pokazuje|'''$3''' wuslědkaj pokazujetej|'''$3''' wuslědki pokazuja|'''$3''' wuslědkow pokazuje}}, započinajo z #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Wuslědk '''$1''' z '''$3'''|Wuslědki '''$1 - $2''' z '''$3'''}} za '''$4'''",
        "search-nonefound": "Njebuchu wuslědki namakane, kotrež naprašowanju wotpowěduja.",
        "powersearch-legend": "Rozšěrjene pytanje",
        "duplicate-defaultsort": "Warnowanje: Standardny sortěrowonski kluč (DEFAULTSORTKEY) \"$2\" přepisa prjedawšu sortěrowanski kluč \"$1\".",
        "version": "Wersija",
        "version-extensions": "Instalowane rozšěrjenja",
+       "version-skins": "Šaty",
        "version-specialpages": "Specialne strony",
        "version-parserhooks": "Parserowe hoki",
        "version-variables": "Wariable",
        "version-antispam": "Škit přećiwo spamej",
-       "version-skins": "Šaty",
        "version-other": "Druhe",
        "version-mediahandlers": "Předźěłaki medijow",
        "version-hooks": "Hoki",
index 172e3a4..6759eb6 100644 (file)
        "qbmyoptions": "Paj mwen yo",
        "faq": "FAQ",
        "faqpage": "Project:FAQ",
-       "vector-action-addsection": "Ajoute yon sijè",
-       "vector-action-delete": "Efase",
-       "vector-action-move": "Chanje non",
-       "vector-action-protect": "Pwoteje",
-       "vector-action-undelete": "Retabli",
-       "vector-action-unprotect": "Pa pwoteje",
-       "vector-view-create": "Kreye",
-       "vector-view-edit": "Modifye",
-       "vector-view-history": "Gade istorik",
-       "vector-view-view": "Li",
-       "vector-view-viewsource": "Wè kòd tèks sa a",
        "actions": "Aksyon yo",
        "namespaces": "Espas non yo",
        "variants": "Varyant yo",
        "skin-preview": "Voye kout je",
        "youremail": "Adrès imèl :",
        "username": "Non itilizatè a:",
-       "uid": "Nimewo ID itilizatè a:",
        "prefs-memberingroups": "Manm {{PLURAL:$1|nan gwoup sa|nan gwoup sa yo }} :",
        "yourrealname": "Vre non ou:",
        "yourlanguage": "Lang:",
        "log": "Jounal yo",
        "all-logs-page": "Tout jounal yo (istorik yo)",
        "allpages": "Tout paj yo",
-       "alphaindexline": "$1 jiska $2",
        "nextpage": "Paj swivan ($1)",
        "prevpage": "Paj presedan ($1)",
        "allpagesfrom": "Afiche paj yo depi :",
index 92fe241..6f410c1 100644 (file)
@@ -34,7 +34,8 @@
                        "Tgr",
                        "Xbspiro",
                        "아라",
-                       "Csega"
+                       "Csega",
+                       "ViDam"
                ]
        },
        "tog-underline": "Hivatkozások aláhúzása:",
@@ -53,7 +54,7 @@
        "tog-watchdeletion": "Az általam törölt lapok és fájlok felvétele a figyelőlistámra",
        "tog-minordefault": "Alapértelmezetten minden szerkesztésemet jelölje aprónak",
        "tog-previewontop": "Előnézet megjelenítése a szerkesztőablak előtt",
-       "tog-previewonfirst": "Előnézet első szerkesztésnél",
+       "tog-previewonfirst": "Előnézet mutatása az első szerkesztésnél",
        "tog-enotifwatchlistpages": "Kapjak értesítést e-mailben, ha egy általam figyelt lap vagy fájl megváltozik",
        "tog-enotifusertalkpages": "Kapjak értesítést e-mailben, ha megváltozik a vitalapom",
        "tog-enotifminoredits": "Kapjak értesítést e-mailben a lapok és fájlok apró változtatásairól",
        "currentrev": "Aktuális változat",
        "currentrev-asof": "A lap jelenlegi, $1-kori változata",
        "revisionasof": "A lap $1-kori változata",
-       "revision-info": "A lap korábbi változatát látod, amilyen {{GENDER:$6|$2}} $1-kor történt szerkesztése$7 után volt.",
+       "revision-info": "A lap korábbi változatát látod, amilyen {{GENDER:$6|$2}} $1-kor történt szerkesztése után volt.$7",
        "previousrevision": "←Régebbi változat",
        "nextrevision": "Újabb változat→",
        "currentrevisionlink": "Aktuális változat",
        "searchrelated": "kapcsolódó",
        "searchall": "mind",
        "showingresults": "Lent '''{{PLURAL:$1|egy|$1}}''' találat látható, az eleje '''$2'''.",
-       "showingresultsnum": "Lent '''{{PLURAL:$3|egy|$3}}''' találat látható, az eleje '''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|'''$1'''|'''$1 - $2'''}}. találat a(z) '''$4''' kifejezésre (összesen: '''$3''')",
        "search-nonefound": "Nincs egyezés a megadott szöveggel.",
        "powersearch-legend": "Részletes keresés",
        "duplicate-defaultsort": "Figyelem: a(z) „$2” rendezőkulcs felülírja a korábbit („$1”).",
        "version": "Névjegy",
        "version-extensions": "Telepített kiterjesztések",
+       "version-skins": "Telepített felületek",
        "version-specialpages": "Speciális lapok",
        "version-parserhooks": "Értelmező hookok",
        "version-variables": "Változók",
        "version-antispam": "Spammegelőzés",
-       "version-skins": "Felületek",
        "version-other": "Egyéb",
        "version-mediahandlers": "Médiafájl-kezelők",
        "version-hooks": "Hookok",
        "version-license": "MediaWiki licenc",
        "version-ext-license": "Licenc",
        "version-ext-colheader-name": "Kiterjesztés",
+       "version-skin-colheader-name": "Felület",
        "version-ext-colheader-version": "Verzió",
        "version-ext-colheader-license": "Licenc",
        "version-ext-colheader-description": "Leírás",
        "expand_templates_remove_nowiki": "<nowiki> tagek mellőzése az eredményben",
        "expand_templates_generate_xml": "XML elemzési fa mutatása",
        "expand_templates_generate_rawhtml": "Nyers HTML megjelenítése",
-       "expand_templates_preview": "Előnézet"
+       "expand_templates_preview": "Előnézet",
+       "pagelanguage": "Oldalnyelv-választó",
+       "pagelang-name": "Oldal",
+       "pagelang-language": "Nyelv",
+       "pagelang-use-default": "Alapértelmezett nyelv használata",
+       "pagelang-select-lang": "Nyelv kiválasztása",
+       "right-pagelang": "Oldal nyelvének megváltoztatása",
+       "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."
 }
index 3428570..52c0fa0 100644 (file)
        "searchrelated": "հարակից",
        "searchall": "բոլոր",
        "showingresults": "Ստորև բերված է մինչև {{PLURAL:$1|'''1''' արդյունք|'''$1''' արդյունք}}՝ սկսած №&nbsp;<strong>$2</strong>-ից։",
-       "showingresultsnum": "Ստորև բերված է {{PLURAL:$3|'''1''' արդյունք|'''$3''' արդյունք}}` սկսած №&nbsp;<strong>$2</strong>-ից։",
        "showingresultsheader": "{{PLURAL:$5|'''$1''' արդյունք '''$3'''-ից|'''$1 - $2''' արդյունքներ '''$3'''-ից}}  '''$4'''-ի համար",
        "search-nonefound": "Որոնմանը համապատասխանող արդյունքներ չեն գտնվել։",
        "powersearch-legend": "Ընդլայնված որոնում",
index c294d59..ca955f2 100644 (file)
@@ -11,7 +11,8 @@
                        "Shirayuki",
                        "Yfdyh000",
                        "לערי ריינהארט",
-                       "아라"
+                       "아라",
+                       "Carlosedepaula"
                ]
        },
        "tog-underline": "Sublinear ligamines:",
        "searchall": "totes",
        "showingresults": "Infra se monstra non plus de {{PLURAL:$1|'''1''' resultato|'''$1''' resultatos}} a partir del numero '''$2'''.",
        "showingresultsinrange": "In basso es monstrate usque a {{PLURAL:$1|<strong>1</strong> resultato|<strong>$1</strong> resultatos}} inter #<strong>$2</strong> e #<strong>$3</strong>.",
-       "showingresultsnum": "Infra se monstra {{PLURAL:$3|'''1''' resultato|'''$3''' resultatos}} a partir del numero '''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Resultato '''$1'''|Resultatos '''$1 - $2'''}} de '''$3''' pro '''$4'''",
        "search-nonefound": "Le recerca non ha producite resultatos.",
        "powersearch-legend": "Recerca avantiate",
        "duplicate-defaultsort": "Attention: Le clave de ordination predefinite \"$2\" supplanta le anterior clave de ordination predefinite \"$1\".",
        "version": "Version",
        "version-extensions": "Extensiones installate",
+       "version-skins": "Apparentias installate",
        "version-specialpages": "Paginas special",
        "version-parserhooks": "Uncinos del analysator syntactic",
        "version-variables": "Variabiles",
        "version-antispam": "Prevention de spam",
-       "version-skins": "Apparentias",
        "version-other": "Altere",
        "version-mediahandlers": "Executores de media",
        "version-hooks": "Uncinos",
        "version-license": "Licentia pro MediaWiki",
        "version-ext-license": "Licentia",
        "version-ext-colheader-name": "Extension",
+       "version-skin-colheader-name": "Apparentia",
        "version-ext-colheader-version": "Version",
        "version-ext-colheader-license": "Licentia",
        "version-ext-colheader-description": "Description",
        "expand_templates_remove_nowiki": "Supprimer le etiquettas <nowiki> in le resultato",
        "expand_templates_generate_xml": "Monstrar arbore syntactic XML",
        "expand_templates_generate_rawhtml": "Monstrar HTML brute",
-       "expand_templates_preview": "Previsualisation"
+       "expand_templates_preview": "Previsualisation",
+       "pagelanguage": "Selector de lingua de pagina",
+       "pagelang-name": "Pagina",
+       "pagelang-language": "Lingua",
+       "pagelang-use-default": "Usar lingua predefinite",
+       "pagelang-select-lang": "Selige lingua",
+       "right-pagelang": "Cambiar lingua del pagina",
+       "action-pagelang": "Cambiar lingua del pagina",
+       "log-name-pagelang": "Registro de cambios de lingua",
+       "log-description-pagelang": "Isto es un registro de cambios de lingua in paginas.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|cambiava}} le lingua del pagina $3 de $4 a $5."
 }
index c8b84de..b23e77e 100644 (file)
        "searchall": "semua",
        "showingresults": "Di bawah ini ditampilkan hingga {{PLURAL:$1|'''1''' hasil|'''$1''' hasil}}, dimulai dari #'''$2'''.",
        "showingresultsinrange": "Menampilkan sampai dengan {{PLURAL:$1|<strong>1</strong> hasil|<strong>$1</strong> hasil}} dalam jangkauan #<strong>$2</strong> sampai #<strong>$3</strong>.",
-       "showingresultsnum": "Di bawah ini ditampilkan {{PLURAL:$3|'''1'''|'''$3'''}} hasil, dimulai dari #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Hasil '''$1''' dari '''$3'''|Hasil '''$1 - $2''' dari '''$3'''}} untuk '''$4'''",
        "search-nonefound": "Tidak ada hasil yang sesuai dengan kriteria.",
        "powersearch-legend": "Pencarian lanjut",
        "duplicate-defaultsort": "Peringatan: Kunci pengurutan baku \"$2\" mengabaikan kunci pengurutan baku \"$1\" sebelumnya.",
        "version": "Versi",
        "version-extensions": "Ekstensi terinstal",
+       "version-skins": "Kulit",
        "version-specialpages": "Halaman istimewa",
        "version-parserhooks": "Kait parser",
        "version-variables": "Variabel",
        "version-antispam": "Pencegahan spam",
-       "version-skins": "Kulit",
        "version-api": "API",
        "version-other": "Lain-lain",
        "version-mediahandlers": "Penanganan media",
index ba845bb..6e09f82 100644 (file)
        "qbpageoptions": "Págine de optiones",
        "qbmyoptions": "Mi optiones",
        "faq": "FAQ",
-       "vector-action-addsection": "Adjunter tema",
-       "vector-action-delete": "Deleter",
-       "vector-action-move": "Mover",
-       "vector-action-protect": "Gardar",
-       "vector-action-undelete": "Restituer",
-       "vector-action-unprotect": "Desgardar",
-       "vector-view-create": "Crear",
-       "vector-view-edit": "Redacter",
-       "vector-view-history": "Historie de versiones",
-       "vector-view-view": "Leer",
-       "vector-view-viewsource": "Vider fonte",
        "actions": "Actiones",
        "namespaces": "Spacies de nómine",
        "variants": "Variantes",
        "editundo": "anullar",
        "searchresults": "Serch-resultates",
        "searchresults-title": "Serch-resultates por «$1»",
-       "toomanymatches": "Anc mult concurses esset retornat, pleser prova un question diferent",
        "titlematches": "Resultates in li titules de págines",
        "textmatches": "Resultates in textu de págines",
        "prevn": "anteyan {{PLURAL:$1|$1}}",
        "searchmenu-exists": "'''Vi un págine nominat \"[[:$1]]\" in ti wiki.'''",
        "searchmenu-new": "'''Crear li págine «[[:$1]]» in ti wiki.'''",
        "searchprofile-articles": "Págines de contenete",
-       "searchprofile-project": "Auxilie e Págines de projecte",
        "searchprofile-images": "Multimedia",
        "searchprofile-everything": "Omnicós",
        "searchprofile-advanced": "Avansat",
        "searchprofile-articles-tooltip": "Serchar in $1",
-       "searchprofile-project-tooltip": "Serchar in $1",
        "searchprofile-images-tooltip": "Serchar files",
        "searchprofile-everything-tooltip": "Serchar in li tot contenete (includent págines de conversation)",
        "searchprofile-advanced-tooltip": "Serchar in special spacies de nómine",
        "timezoneregion-pacific": "Ocean Pacific",
        "youremail": "E-mail:",
        "username": "Nómine de usator:",
-       "uid": "Identification de usator:",
        "yourrealname": "Nómine real:",
        "yourlanguage": "Lingue:",
        "yourvariant": "Variante:",
        "log": "Diariumes",
        "all-logs-page": "Omni li diariumes public",
        "allpages": "Omni li págines",
-       "alphaindexline": "$1 till $2",
        "nextpage": "Proxim págine ($1)",
        "prevpage": "Ultim págine ($1)",
        "allarticles": "Omni li articules",
        "tooltip-undo": "«Desfar» reverte solmen ti-ci redaction e monstra li resultate in prevision, porque tu posse indicar un rason in li linea de resumé.",
        "tooltip-preferences-save": "Conservar preferenties",
        "tooltip-summary": "Ples intrar un curt resummation.",
-       "vector.css": "/* CSS colocat ci va afectar usatores de pelle Vector */",
-       "vector.js": "/* Alquel JavaScript ci va esser cargat por usatores que usa li pelle Vector */",
        "previousdiff": "← Redaction anteriori",
        "nextdiff": "Proxim redaction →",
        "thumbsize": "Mesura de miniatura:",
index 0289610..88015ef 100644 (file)
        "qbmyoptions": "Ihüm",
        "faq": "FAQ",
        "faqpage": "Project:FAQ",
-       "vector-action-addsection": "Tinyé Okwu",
-       "vector-action-delete": "Kàcha",
-       "vector-action-move": "Páfụ",
-       "vector-action-protect": "Cẹdolu",
-       "vector-action-undelete": "Á gbàkashikwà",
-       "vector-action-unprotect": "Nchẹdo mgbanwe",
-       "vector-view-create": "Ké",
-       "vector-view-edit": "Mèzi",
-       "vector-view-history": "Zí ịta",
-       "vector-view-view": "Gụ́",
-       "vector-view-viewsource": "Zi mkpurụ",
        "actions": "Mmèmé",
        "namespaces": "Ámááhà",
        "variants": "Nke ichè ichè",
        "viewprevnext": "Lé ($1 {{int:pipe-separator}} $2) ($3)",
        "searchmenu-new": "'''Ké ihü \"[[:$1]]\" na wiki nke á!'''",
        "searchprofile-articles": "Ihü ihe dị",
-       "searchprofile-project": "Ihü Nkwádo na Orürü",
        "searchprofile-images": "Nkaníle",
        "searchprofile-everything": "Iheníle",
        "searchprofile-advanced": "Nke kárí",
        "searchprofile-articles-tooltip": "Chọwa na $1",
-       "searchprofile-project-tooltip": "Chọwa na $1",
        "searchprofile-images-tooltip": "Chọwa màkà usòrò",
        "searchprofile-everything-tooltip": "Tùwé ihe nile (na okwu ihü)",
        "searchprofile-advanced-tooltip": "Chọwa na ímé áhàámá nke gí Í kèrè",
        "search-interwiki-default": "$1 nke ziri:",
        "search-interwiki-more": "(dikarírí)",
        "search-relatedarticle": "Nwanne",
-       "searcheverything-enable": "Chọwa na ébé nílé",
        "searchrelated": "nke kọlu",
        "searchall": "nke níle",
        "powersearch-legend": "Nchöwá nkè íshí",
        "prefs-custom-js": "JavaScript na áká mádu",
        "youremail": "E-mail:",
        "username": "Áhà ọ'bànifé:",
-       "uid": "ID ọ'bànifé:",
        "prefs-memberingroups": "Onyé otu nke {{PLURAL:$1|ọtú|ọtú}}:",
        "yourrealname": "Ézíbóté áhà:",
        "yourlanguage": "Ásụ̀sụ̀:",
        "speciallogtitlelabel": "Ishi:",
        "log": "Ndetu-nchétá",
        "allpages": "Ihü níle",
-       "alphaindexline": "$1 ruó $2",
        "nextpage": "Ihü sò ($1)",
        "prevpage": "Ihü nke búzọr ($1)",
        "allpagesfrom": "Zi ihü bídóró na:",
        "block": "Gbàchí ọ'bànifé",
        "blockip": "Gbàchí ọ'bànifé",
        "blockip-legend": "Gbàchí ọ'bànifé",
-       "ipadressorusername": "IP mà ọ bu áhà ọ'bànifé:",
+       "ipaddressorusername": "IP mà ọ bu áhà ọ'bànifé:",
        "ipbexpiry": "Gbá okà:",
        "ipbreason": "Mgbághapụtà:",
        "ipbsubmit": "Kwàchí ọ'bànifé nkèá",
        "show-big-image": "Hü ya ka o dị",
        "file-info-gif-looped": "etemte",
        "newimages-legend": "Nzàtà",
-       "showhidebots": "(bot $1)",
        "noimages": "Ọ díghì ihe di ngá Í lé.",
        "ilsubmit": "Chọwa",
        "bydate": "shi afọ",
index 25394c1..617110a 100644 (file)
        "searchall": "amin",
        "showingresults": "Maiparang dita baba agingga {{PLURAL:$1|iti '''1''' a nagbanagan|dagiti '''$1''' a nagbanagan}} a mangrugi iti #'''$2'''.",
        "showingresultsinrange": "Mangipakpakita aginggana {{PLURAL:$1|iti <strong>1</strong> a resulta|dagiti <strong>$1</strong> a resulta}} iti sakop ti #<strong>$2</strong> aginggana ti #<strong>$3</strong>.",
-       "showingresultsnum": "Maipakpakita dita baba  {{PLURAL:$3|iti '''1''' a nagbanagan|dagiti '''$3''' a nagbanagan}} a mangrugi iti #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Nagbanagan a '''$1''' iti '''$3'''|Dagiti Nagbanagan a '''$1 - $2''' iti '''$3'''}} para iti '''$4'''",
        "search-nonefound": "Awan ti nagbanagan a kapadpada ti sinapul.",
        "powersearch-legend": "Napasayat a panagbiruk",
index bcbdc91..5ed80a3 100644 (file)
        "qbmyoptions": "Са оттамаш",
        "faq": "Каст-каста хаттараш",
        "faqpage": "Project:Каст-каста хаттараш",
-       "vector-action-addsection": "БӀагал тӀатоха",
-       "vector-action-delete": "ДӀадаккха",
-       "vector-action-move": "ЦӀи хувца",
-       "vector-action-protect": "Лораде",
-       "vector-action-undelete": "Юхаоттаде",
-       "vector-action-unprotect": "Лорам хувца",
-       "vector-view-create": "Кхолларле",
-       "vector-view-edit": "Хувцам",
-       "vector-view-history": "Искар",
-       "vector-view-view": "Дешар",
-       "vector-view-viewsource": "Зембакхама бӀаргтассам",
        "actions": "ДулархIамаш",
        "namespaces": "ЦӀерий аренаш",
        "variants": "Доштайпарленаш",
        "searchmenu-exists": "'''Укх масса-хьахьоадайтамач ер оаг|ув \"[[:$1]]\" я'''",
        "searchmenu-new": "'''Укх \"[[:$1]]\" масса-хьахоадайтамач оагIув хьае!'''",
        "searchprofile-articles": "Гомлен оагIувнаш",
-       "searchprofile-project": "Дагарлеи хьахоадайтами оагIувнаш",
        "searchprofile-images": "Медифаг",
        "searchprofile-everything": "Массана",
        "searchprofile-advanced": "Шера я",
        "searchprofile-articles-tooltip": "$1чу лахар",
-       "searchprofile-project-tooltip": "$1чу лахар",
        "searchprofile-images-tooltip": "Паьлий лахар",
        "searchprofile-everything-tooltip": "Массадола оагIувний лахар (дувцама оагIувнаш чулоацаш)",
        "searchprofile-advanced-tooltip": "Iочуязаяь цIераренашках лаха",
        "booksources-go": "Лаха",
        "log": "Тептараш",
        "allpages": "Еррига оагIувнаш",
-       "alphaindexline": "$1гIара $2гIачу",
        "prevpage": "($1) хьалхара оагIув",
        "allpagesfrom": "Цу тайпара ювлаж йола оагIувнаш белгал е:",
        "allpagesto": "Укх оагIувнаш тIа бIарга дита:",
index 1362c8e..01f4b3e 100644 (file)
        "qbedit": "Redaktar",
        "qbpageoptions": "Ica pagino",
        "qbmyoptions": "Mea pagini",
-       "vector-action-addsection": "Adjuntar topiko",
-       "vector-action-delete": "Efacar",
-       "vector-action-move": "Movar",
-       "vector-action-protect": "Protektar",
-       "vector-action-undelete": "Rekuperar",
-       "vector-action-unprotect": "Desprotektar",
-       "vector-view-create": "Krear",
-       "vector-view-edit": "Redaktar",
-       "vector-view-history": "Vidar versionaro",
-       "vector-view-view": "Lektar",
-       "vector-view-viewsource": "Vidar fonto",
        "actions": "Agi",
        "namespaces": "Nomari",
        "variants": "Varianti",
        "viewprevnext": "Vidar ($1 {{int:pipe-separator}} $2) ($3).",
        "searchmenu-new": "'''Kreez la pagino \"[[:$1]]\" in ca wiki!'''",
        "searchprofile-articles": "Temala pagini",
-       "searchprofile-project": "Helpo",
        "searchprofile-images": "''Media''",
        "searchprofile-everything": "Omno",
        "searchprofile-articles-tooltip": "Serchez en $1",
-       "searchprofile-project-tooltip": "Serchez en $1",
        "searchprofile-images-tooltip": "Serchez arkivi",
        "search-result-size": "$1 ({{PLURAL:$2|1 vorto|$2 vorti}})",
        "search-result-score": "Importo: $1%",
        "search-interwiki-more": "(plusa)",
        "searchall": "omna",
        "showingresults": "Montrante infre {{PLURAL:$1|'''1''' rezulto|'''$1''' rezulti}}, qui komencas kun numero #'''$2'''.",
-       "showingresultsnum": "Montrante infre {{PLURAL:$3|'''1''' rezulto|'''$3''' rezulti}}, qui komencas kun numero #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Rezultajo '''$1''' ek '''$3'''|Rezultaji '''$1 - $2''' ek '''$3'''}} di '''$4'''",
        "powersearch-legend": "Avancita sercho",
        "powersearch-ns": "Serchez en nomari:",
        "timezoneregion-pacific": "Pacifico",
        "allowemail": "Permisez e-posti de altra uzanti",
        "prefs-namespaces": "Nomari",
-       "defaultns": "Altre serchar en ca nomari:",
        "prefs-files": "Arkivi",
        "youremail": "Vua e-adreso:",
        "username": "Uzantonomo:",
-       "uid": "ID dil uzanto:",
        "prefs-memberingroups": "Membro di la {{PLURAL:$1|grupo|grupi}}:",
        "yourrealname": "Reala nomo:",
        "yourlanguage": "Linguo:",
        "log": "Registrari",
        "all-logs-page": "Omna publika registrari",
        "allpages": "Omna pagini",
-       "alphaindexline": "$1 til $2",
        "nextpage": "Sequanta pagino ($1)",
        "prevpage": "Antea pagino ($1)",
        "allpagesfrom": "Montrez pagini de:",
        "whatlinkshere-filters": "Filtrili",
        "blockip": "Blokusado di IP-adresi",
        "blockip-legend": "Blokusar uzanto",
-       "ipadressorusername": "IP-adreso od uzantonomo:",
+       "ipaddressorusername": "IP-adreso od uzantonomo:",
        "ipbexpiry": "Expiro:",
        "ipbreason": "Motivo:",
        "ipbreason-dropdown": "*Ordinara motivi por blokuso\n** Insertar nevera informi\n** Efacar kontenajo de pagini\n** Insertadar ligili ad extera reti\n** Insertar radoto aden pagini\n** Timidiganta ago\n** Trouzar multa konti\n** Neaceptebla uzanto-nomo",
        "newimages": "Galerio di nova arkivi",
        "imagelisttext": "Infre esas listo di '''$1''' {{PLURAL:$1|arkivo|arkivi}} rangizita $2.",
        "newimages-legend": "Filtrilo",
-       "showhidebots": "($1 roboti)",
        "ilsubmit": "Serchar",
        "bydate": "per dato",
        "metadata": "Metadonaji",
index cbcdf49..2837738 100644 (file)
        "content-failed-to-parse": "Gat ekki þáttað $2 efni samkvæmt $1 líkani: $3",
        "invalid-content-data": "Ógild efnisgögn.",
        "content-not-allowed-here": "„$1“ efni er ekki leyfilegt á síðunni [[$2]]",
-       "editwarning-warning": "Ef farið er frá þessari síðu gætu þær breytingar sem þú hefur gert tapast.\nEf þú ert skráður inn, þá getur þú óvirkjað þessi skilaboð í „Breytingarflipanum\" undir stillingum.",
+       "editwarning-warning": "Ef farið er frá þessari síðu gætu þær breytingar sem þú hefur gert tapast.\nEf þú ert skráður inn, þá getur þú óvirkjað þessi skilaboð í „{{int:prefs-editing}}\" undir stillingum.",
        "content-model-wikitext": "wiki-texti",
        "content-model-text": "hreinn texti",
        "content-model-javascript": "JavaScript",
        "currentrev": "Núverandi útgáfa",
        "currentrev-asof": "Núverandi breyting frá og með $1",
        "revisionasof": "Útgáfa síðunnar $1",
-       "revision-info": "Útgáfa frá $1 eftir $2",
+       "revision-info": "Útgáfa frá $1 eftir $2\nÚtgáfa frá $1 eftir {{GENDER:$6|$2}}$7",
        "previousrevision": "←Fyrri útgáfa",
        "nextrevision": "Næsta útgáfa→",
        "currentrevisionlink": "Núverandi útgáfa",
        "searchrelated": "tengt",
        "searchall": "öllum",
        "showingresults": "Sýni <strong>$1</strong> {{PLURAL:$1|niðurstöðu|niðurstöður}} frá og með #<strong>$2</strong>.",
-       "showingresultsnum": "Sýni {{PLURAL:$3|'''$3''' niðurstöðu|'''$3''' niðurstöður}} frá og með #<b>$2</b>.",
        "showingresultsheader": "{{PLURAL:$5|Niðurstaða '''$1''' af '''$3'''|Niðurstöður'''$1 - $2''' af '''$3'''}} fyrir '''$4'''",
        "search-nonefound": "Engar niðurstöður pössuðu við fyrirspurnina.",
        "powersearch-legend": "Ítarlegri leit",
        "gender-unknown": "Ég vil heldur ekki gefa upp",
        "gender-male": "Hann breytir wikisíðum",
        "gender-female": "Hún breytir wikisíðum",
-       "prefs-help-gender": "Valfrjálst: notað til að aðgreina kynin í meldingum hugbúnaðarins. Þessar upplýsingar verða aðgengilegar öllum.",
+       "prefs-help-gender": "Þessi stilling er valfrjáls. Notað til að aðgreina kynin í meldingum hugbúnaðarins. Þessar upplýsingar verða aðgengilegar öllum.",
        "email": "Tölvupóstur",
        "prefs-help-realname": "Alvöru nafn er valfrjálst.\nEf þú kýst að gefa það upp, verður það notað til að gefa þér heiður af verkum þínum.",
        "prefs-help-email": "Tölvupóstfang er valfrjálst, en gerir þér kleift að fá nýtt lykilorð ef þú gleymir lykilorðinu þínu.",
        "right-reupload-shared": "Hunsa skrár á sameiginlegu myndasafni staðbundið",
        "right-upload_by_url": "Hlaða inn skrám frá vefslóð",
        "right-purge": "Hreinsa skyndiminni síðu án staðfestingar",
-       "right-autoconfirmed": "Breyta hálfvernduðum síðum",
+       "right-autoconfirmed": "Sneiða hjá takmörkunum vistfanga",
        "right-bot": "Eru meðhöndlaðir eins og sjálfvirk aðgerð",
        "right-nominornewtalk": "Ekki láta minniháttar breytingar á spjallsíðum kveða upp áminningu um ný skilaboð",
        "right-apihighlimits": "Setja hærri mörk á fjölda API fyrirspurna",
        "windows-nonascii-filename": "Þessi wiki styður ekki skráarnöfn með sérstökum stöfum",
        "fileexists": "Skrá með þessu nafni er þegar til, skoðaðu <strong>[[:$1]]</strong> ef þú ert óviss um hvort þú viljir breyta henni, ekki verður skrifað yfir gömlu skránna hlaðiru inn nýrri með sama nafni heldur verður núverandi útgáfa geymd í útgáfusögu.\n[[$1|thumb]]",
        "filepageexists": "Myndasíðan fyrir þessa síðu hefur þegar verið búin til <strong>[[:$1]]</strong>, en engin skrá er til með þessu nafni.\nLýsingin sem þú skrifaðir verður ekki birt á myndasíðunni.\nTil þess að lýsingin geti birst á síðunni, þá þarft þú að breyta síðunni sérstaklega.\n[[$1|thumb]]",
-       "fileexists-extension": "Skrá með svipuðu nafni er til: [[$2|thumb]]\n*Nafn skráarinnar sem hlaða á inn: <strong>[[:$1]]</strong>\n*Nafn skráarinnar sem er þegar til: <strong>[[:$2]]</strong>\nVinsamlegast veldu annað skráarnafn.",
+       "fileexists-extension": "Skrá með svipuðu nafni er til: [[$2|thumb]]\n*Nafn skráarinnar sem hlaða á inn: <strong>[[:$1]]</strong>\n*Nafn skráarinnar sem er þegar til: <strong>[[:$2]]</strong>\nVilt þú kanski nota annað nafn sem er meira lýsandi fyrir skránna ?",
        "fileexists-thumbnail-yes": "Skráin virðist vera smámynd [[$1|thumb]]\nVinsamlegast athugaðu skránna <strong>[[:$1]]</strong>.\nEf skráin er sama myndin í upprunalegri stærð er ekki þörf á annari smámynd.",
        "file-thumbnail-no": "Skráin er líklega smámynd, því skráarnafnið byrjar á <strong>$1</strong>.\nEf skráin er í fullri upplausn haltu þá áfram að hlaða henni inn, en ef ekki breyttu þá skráarnafninu.",
        "fileexists-forbidden": "Skrá með þessu nafni er þegar til og ekki er hægt að skrifa yfir skránna.\nEf þú villt hlaða inn skránni þinni engu að síður, farðu þá til baka og veldu annað skráarnafn.\n[[File:$1|thumb|center|$1]]",
        "pageswithprop-submit": "Áfram",
        "doubleredirects": "Tvöfaldar tilvísanir",
        "doubleredirectstext": "Þessi síða er listi yfir skrár sem eru tilvísanir á aðrar tilvísanir.\nHver lína inniheldur tengla á fyrstu og aðra tilvísun auk þeirrar síðu sem seinni tilvísunin beinist að, sem er oftast sú síða sem allar tilvísanirnar eiga að benda á.\n<del>Yfirstrikaðar</del> færslur hafa verið leiðréttar.",
-       "double-redirect-fixed-move": "[[$1]] hefur verið færð.\nHún er tilvísun á [[$2]].",
-       "double-redirect-fixed-maintenance": "Laga tvöfalda tilvísun frá [[$1]] til [[$2]].",
+       "double-redirect-fixed-move": "[[$1]] hefur verið færð.\nHún var uppfærð sjálfkrafa og tilvísar núna á [[$2]].",
+       "double-redirect-fixed-maintenance": "Laga sjálfvirkt tvöfalda tilvísun frá [[$1]] til [[$2]] í viðhalds aðgerð.",
        "double-redirect-fixer": "Laga tilvísun",
        "brokenredirects": "Brotnar tilvísanir",
        "brokenredirectstext": "Eftirfarandi tilvísanir vísa á síður sem ekki eru til:",
        "wantedtemplates": "Eftirsótt snið",
        "mostlinked": "Mest ítengdu síður",
        "mostlinkedcategories": "Mest ítengdu flokkar",
-       "mostlinkedtemplates": "Mest ítengdu snið",
+       "mostlinkedtemplates": "Mest ítengdu síður",
        "mostcategories": "Mest flokkaðar greinar",
        "mostimages": "Mest ítengdu skrárnar",
        "mostinterwikis": "Síður með flestm tungumálatenglum",
        "pageinfo-length": "Lengd síðunnar (í bætum)",
        "pageinfo-article-id": "Einkennisnúmer síðunnar",
        "pageinfo-language": "Tungumál síðunnar",
-       "pageinfo-robot-policy": "Leitarvélastaða",
+       "pageinfo-robot-policy": "Attriðaskráning af vélmennum",
        "pageinfo-robot-index": "Heimilað",
        "pageinfo-robot-noindex": "Ekki heimilað",
        "pageinfo-views": "Fjöldi innlita",
        "duplicate-defaultsort": "'''Viðvörun:''' Sjálfgildur flýtihnappur \"$2\" tekur yfir fyrri flýtihnapp \"$1\".",
        "version": "Útgáfa",
        "version-extensions": "Uppsettar viðbætur",
+       "version-skins": "Uppsett þemu",
        "version-specialpages": "Kerfissíður",
        "version-variables": "Breytur",
        "version-antispam": "Amapósts sía",
-       "version-skins": "Þemu",
        "version-other": "Aðrar",
        "version-mediahandlers": "Rekill margmiðlunarskráa",
        "version-parser-extensiontags": "Þáttuð smáforrita tög",
index ad0430d..7172181 100644 (file)
        "searchall": "tutti",
        "showingresults": "Di seguito {{PLURAL:$1|viene presentato al massimo '''1''' risultato|vengono presentati al massimo '''$1''' risultati}} a partire dal numero '''$2'''.",
        "showingresultsinrange": "{{PLURAL:$1|Viene mostrato|Vengono mostrati}} sotto {{PLURAL:$1|<strong>1</strong> risultato|<strong>$1</strong> risultati}} dal <strong>$2</strong> al <strong>$3</strong>.",
-       "showingresultsnum": "Di seguito {{PLURAL:$3|viene presentato '''1''' risultato|vengono presentati '''$3''' risultati}} a partire dal numero '''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Risultato '''$1''' di '''$3'''|Risultati '''$1 - $2''' di '''$3'''}} per '''$4'''",
        "search-nonefound": "La ricerca non ha prodotto risultati.",
        "powersearch-legend": "Ricerca avanzata",
        "license-nopreview": "(Anteprima non disponibile)",
        "upload_source_url": " (una URL corretta e accessibile)",
        "upload_source_file": " (un file sul proprio computer)",
+       "listfiles-delete": "cancella",
        "listfiles-summary": "Questa pagina speciale mostra tutti i file caricati.",
        "listfiles_search_for": "Ricerca immagini per nome:",
        "imgfile": "file",
        "duplicate-defaultsort": "Attenzione: la chiave di ordinamento predefinita \"$2\" sostituisce la precedente \"$1\".",
        "version": "Versione",
        "version-extensions": "Estensioni installate",
+       "version-skins": "Skin installate",
        "version-specialpages": "Pagine speciali",
        "version-parserhooks": "Hook del parser",
        "version-variables": "Variabili",
        "version-antispam": "Prevenzione dello spam",
-       "version-skins": "Skin",
        "version-other": "Altro",
        "version-mediahandlers": "Gestori di contenuti multimediali",
        "version-hooks": "Hook",
        "version-license": "Licenza MediaWiki",
        "version-ext-license": "Licenza",
        "version-ext-colheader-name": "Estensione",
+       "version-skin-colheader-name": "Skin",
        "version-ext-colheader-version": "Versione",
        "version-ext-colheader-license": "Licenza",
        "version-ext-colheader-description": "Descrizione",
        "expand_templates_remove_nowiki": "Elimina il tag <nowiki> nel risultato",
        "expand_templates_generate_xml": "Mostra albero sintattico XML",
        "expand_templates_generate_rawhtml": "Mostra HTML",
-       "expand_templates_preview": "Anteprima"
+       "expand_templates_preview": "Anteprima",
+       "pagelanguage": "Seleziona lingua della pagina",
+       "pagelang-name": "Pagina",
+       "pagelang-language": "Lingua",
+       "pagelang-use-default": "Utilizza la lingua predefinita",
+       "pagelang-select-lang": "Seleziona lingua",
+       "right-pagelang": "Modifica la lingua della pagina",
+       "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."
 }
index 3eb9fdc..4457755 100644 (file)
@@ -59,7 +59,8 @@
                        "青子守歌",
                        "아라",
                        "Rxy",
-                       "Mfuji"
+                       "Mfuji",
+                       "Takot"
                ]
        },
        "tog-underline": "リンクの下線:",
        "resetpass-abort-generic": "拡張機能により、パスワードの変更は取り消されました。",
        "resetpass-expired": "パスワードの有効期限が切れました。ログインするには新しいパスワードを設定してください。",
        "resetpass-expired-soft": "パスワードの有効期限が切れたため、再設定する必要があります。新しいパスワードを今すぐ設定するか、または「{{int:resetpass-submit-cancel}}」をクリックしてあとで再設定してください。",
+       "resetpass-validity-soft": "あなたのパスワードは無効です: $1\n\n今すぐ新しいパスワードに変更するか、「{{int:resetpass-submit-cancel}}」をクリックして後で再設定してください。",
        "passwordreset": "パスワードの再設定",
        "passwordreset-text-one": "仮パスワードをメールで受け取るにはこのフォームに記入してください。",
        "passwordreset-text-many": "{{PLURAL:$1|仮パスワードをメールで受け取るにはいずれかの欄に記入してください。}}",
        "revdelete-show-file-confirm": "ファイル「<nowiki>$1</nowiki>」の削除された$2$3の版を本当に閲覧しますか?",
        "revdelete-show-file-submit": "はい",
        "revdelete-selected-text": "[[:$2]] の{{PLURAL:$1|選択された版}}:",
+       "revdelete-selected-file": "[[:$2]] の{{PLURAL:$1|選択された版}}:",
        "logdelete-selected": "{{PLURAL:$1|選択された記録項目}}:",
        "revdelete-text-text": "削除された版は履歴に表示され続けますが、一般の利用者が内容を閲覧できなくなります。",
        "revdelete-text-file": "削除されたファイルの版はファイルの履歴に表示されつづけますが、一般の利用者はその内容の一部を閲覧できなくなります。",
        "searchall": "すべて",
        "showingresults": "<strong>$2</strong> 件目以降の最大 {{PLURAL:$1|<strong>$1</strong> 件の結果}}を表示しています。",
        "showingresultsinrange": "<strong>$2</strong> 件目から<strong>$3</strong> 件目までの範囲内で最大 {{PLURAL:$1|<strong>$1</strong> 件の結果}}を表示しています。",
-       "showingresultsnum": "<strong>$2</strong> 件目以降の {{PLURAL:$3|<strong>$3</strong> 件の結果}}を表示しています。",
        "showingresultsheader": "「<strong>$4</strong>」の検索結果 {{PLURAL:$5|<strong>$3</strong> 件中の <strong>$1</strong> 件目|<strong>$3</strong> 件中の <strong>$1</strong> 件目から <strong>$2</strong> 件目}}",
        "search-nonefound": "問い合わせに合致する検索結果はありませんでした。",
        "powersearch-legend": "高度な検索",
        "powersearch-togglelabel": "チェックを入れる:",
        "powersearch-toggleall": "すべて",
        "powersearch-togglenone": "すべて外す",
+       "powersearch-remember": "この選択を今後の検索のために記憶させる",
        "search-external": "外部検索",
        "searchdisabled": "{{SITENAME}}の検索機能は無効化されています。\nさしあたってはGoogleなどで検索できます。\nただし外部の検索エンジンの索引にある{{SITENAME}}のコンテンツは古い場合があります。",
        "search-error": "検索する際にエラーが発生しました: $1",
        "windows-nonascii-filename": "このウィキではファイル名に特殊文字を使用できません。",
        "fileexists": "この名前のファイルは既に存在します。{{GENDER:|}}置き換えていいかどうか確信が持てない場合は、<strong>[[:$1]]</strong>を確認してください。\n[[$1|thumb]]",
        "filepageexists": "このファイルのための説明ページは既に<strong>[[:$1]]</strong>に作成されていますが、現在、ファイルが存在しません。\n入力した概要は説明ページに反映されません。\n新しい概要を表示させるには、説明ページを手動で編集する必要があります。\n[[$1|thumb]]",
-       "fileexists-extension": "類似した名前のファイルが既に存在します: [[$2|thumb]]\n* アップロード中のファイルの名前: <strong>[[:$1]]</strong>\n* 既存ファイルの名前: <strong>[[:$2]]</strong>\n違う名前を選択してください。",
+       "fileexists-extension": "類似した名前のファイルが既に存在します: [[$2|thumb]]\n* アップロード中のファイルの名前: <strong>[[:$1]]</strong>\n* 既存ファイルの名前: <strong>[[:$2]]</strong>\nもう少し分かりやすい名前を付けますか?",
        "fileexists-thumbnail-yes": "このファイルは元の画像から縮小されたもの <em>(サムネイル)</em> のようです。\n[[$1|thumb]]\nファイル <strong>[[:$1]]</strong> を確認してください。\n確認したファイルが同じ画像の元のサイズの版の場合は、サムネイルを別途アップロードする必要はありません。",
        "file-thumbnail-no": "ファイル名が <strong>$1</strong> で始まっています。\n他の画像から縮小されたもの <em>(サムネイル)</em> のようです。\nより高精細な画像をお持ちの場合はそれをアップロードしてください。お持ちではない場合はファイル名を変更してください。",
        "fileexists-forbidden": "この名前のファイルは既に存在しており、上書きできません。\nアップロードを継続したい場合は、前のページに戻り、別のファイル名を使用してください。\n[[File:$1|thumb|center|$1]]",
        "pageswithprop-prophidden-binary": "プロパティ値のバイナリが長いため非表示 ($1)",
        "doubleredirects": "二重転送",
        "doubleredirectstext": "このページでは、転送ページへの転送ページを列挙します。\n最初の転送ページ、その転送先にある転送ページ、さらにその転送先にあるページ、それぞれへのリンクを各行に表示しています。多くの場合は最終的な転送先が「正しい」転送先であり、最初の転送ページの転送先は最終的な転送先に直接向けるべきです。\n<del>取り消し線</del>が入った項目は解決済みです。",
-       "double-redirect-fixed-move": "[[$1]]を移動しました。\n今後は[[$2]]に転送されます。",
+       "double-redirect-fixed-move": "[[$1]]を移動しました。\n自動的に更新され、今後は[[$2]]に転送されます。",
        "double-redirect-fixed-maintenance": "メンテナンス作業の一環として[[$1]]から[[$2]]への二重転送を自動的に修正します。",
        "double-redirect-fixer": "転送修正係",
        "brokenredirects": "迷子のリダイレクト",
        "import-error-special": "ページ「$1」は、ページが許可されない特別名前空間に属しているため取り込みません。",
        "import-error-invalid": "名前が正しくないため、ページ「$1」を取り込みませんでした。",
        "import-error-unserialize": "ページ「$1」の版 $2 はシリアライズ解除できませんでした。この版は $4 としてシリアライズされたコンテンツモデル $3 を使用していると報告されています。",
+       "import-error-bad-location": "コンテンツモデル $3 はこのページではサポート外のため、モデル $3 を使用している版 $2 はこのウィキ上の「$1」に保存できません。",
        "import-options-wrong": "間違った{{PLURAL:$2|オプション}}です: <nowiki>$1</nowiki>",
        "import-rootpage-invalid": "入力したルートページの名前は無効です。",
        "import-rootpage-nosubpage": "ルートページの名前空間「$1」では、下位ページが許可されていません。",
        "duplicate-defaultsort": "<strong>警告:</strong> 既定のソートキー「$2」が、その前に書かれている既定のソートキー「$1」を上書きしています。",
        "version": "バージョン情報",
        "version-extensions": "インストール済み拡張機能",
+       "version-skins": "インストール済み外装",
        "version-specialpages": "特別ページ",
        "version-parserhooks": "構文解析フック",
        "version-variables": "変数",
        "version-antispam": "スパム対策",
-       "version-skins": "外装",
        "version-other": "その他",
        "version-mediahandlers": "メディアハンドラー",
        "version-hooks": "フック",
        "version-license": "MediaWiki のライセンス",
        "version-ext-license": "ライセンス",
        "version-ext-colheader-name": "拡張機能",
+       "version-skin-colheader-name": "外装",
        "version-ext-colheader-version": "バージョン",
        "version-ext-colheader-license": "ライセンス",
        "version-ext-colheader-description": "説明",
        "htmlform-no": "いいえ",
        "htmlform-yes": "はい",
        "htmlform-chosen-placeholder": "選択してください",
+       "htmlform-cloner-create": "さらに追加",
        "htmlform-cloner-delete": "除去",
+       "htmlform-cloner-required": "少なくとも 1 つの値が必要です。",
        "sqlite-has-fts": "$1 (全文検索あり)",
        "sqlite-no-fts": "$1 (全文検索なし)",
        "logentry-delete-delete": "$1 がページ「$3」を{{GENDER:$2|削除しました}}",
        "expand_templates_remove_nowiki": "結果に含まれる <nowiki> タグを表示しない",
        "expand_templates_generate_xml": "XML 構文解析ツリーを表示",
        "expand_templates_generate_rawhtml": "HTML ソースを表示",
-       "expand_templates_preview": "プレビュー"
+       "expand_templates_preview": "プレビュー",
+       "pagelanguage": "ページ言語選択",
+       "pagelang-name": "ページ",
+       "pagelang-language": "言語",
+       "pagelang-use-default": "既定の言語を使用",
+       "pagelang-select-lang": "言語を選択",
+       "right-pagelang": "ページの言語を変更",
+       "action-pagelang": "ページの言語の変更",
+       "log-name-pagelang": "言語変更記録",
+       "log-description-pagelang": "これはページ言語の変更の記録です。",
+       "logentry-pagelang-pagelang": "$1 がページ $3 の言語を $4 から $5 に{{GENDER:$2|変更しました}}"
 }
index 571ed7d..d7054bf 100644 (file)
        "qbmyoptions": "Mi piejdem",
        "faq": "FAK",
        "faqpage": "Project:FAK",
-       "vector-action-addsection": "Ad tapik",
-       "vector-action-delete": "Diliit",
-       "vector-action-move": "Muuv",
-       "vector-action-protect": "Protek",
-       "vector-action-undelete": "Andiliit",
-       "vector-action-unprotect": "Neu protektian",
-       "vector-view-create": "Kriet",
-       "vector-view-edit": "Hedit",
-       "vector-view-history": "Vyuu ischri",
-       "vector-view-view": "Riid",
-       "vector-view-viewsource": "Vyuu Suos",
        "actions": "Akshan",
        "namespaces": "Niemspies",
        "variants": "Vieriant",
        "booksources-go": "Gwaan",
        "log": "Lagdem",
        "allpages": "Aal piej",
-       "alphaindexline": "$1 tu $2",
        "prevpage": "Priivos piej ($1)",
        "allpagesfrom": "Displie piej taat a:",
        "allpagesto": "Displie piej en a:",
index 3ada493..3a6b61b 100644 (file)
        "searchrelated": "kagandhèng",
        "searchall": "kabèh",
        "showingresults": "Ing ngisor iki dituduhaké {{PLURAL:$1|'''1''' kasil|'''$1''' kasil}}, wiwitané saking #<strong>$2</strong>.",
-       "showingresultsnum": "Ing ngisor iki dituduhaké {{PLURAL:$3|'''1''' kasil|'''$3''' kasil}}, wiwitané saka #<strong>$2</strong>.",
        "showingresultsheader": "{{PLURAL:$5|Asil '''$1''' saka '''$3'''|Asil '''$1 - $2''' saka '''$3'''}} kanggo '''$4'''",
        "search-nonefound": "Ora ana kasil sing cocog karo pitakonan (''query'').",
        "powersearch-legend": "Panggolèkan sabanjuré (''advance search'')",
index 63f48d7..857fa17 100644 (file)
        "searchrelated": "მიბმული",
        "searchall": "ყველა",
        "showingresults": "ქვემოთ იხილეთ <b>$1</b>-მდე შედეგი დაწყებული #<b>$2</b>-იდან.",
-       "showingresultsnum": "ქვემოთ იხილეთ <b>$3</b> შედეგი დაწყებული #<b>$2</b>-იდან.",
        "showingresultsheader": "{{PLURAL:$5|რეზულტატი '''$1'''  '''$3'''-დან|რეზულტატები '''$1 — $2''' -დან '''$3'''}}  '''$4'''-თვის",
        "search-nonefound": "მოთხოვნის შესაბამისობა არ არის ნაპოვნი.",
        "powersearch-legend": "გაფართოებული ძიება",
index 8e1db50..8380ac5 100644 (file)
        "qbmyoptions": "Menin' betlerim",
        "faq": "KBS",
        "faqpage": "Project:KBS",
-       "vector-action-addsection": "Tema qosıw",
-       "vector-action-delete": "O'shiriw",
-       "vector-action-move": "Ko'shiriw",
-       "vector-action-protect": "Qorg'aw",
-       "vector-action-undelete": "Qayta tiklew",
-       "vector-action-unprotect": "Qorg'awdı o'zgertiw",
-       "vector-view-create": "Jaratıw",
-       "vector-view-edit": "O'zgertiw",
-       "vector-view-history": "Tariyxın ko'riw",
-       "vector-view-view": "Oqıw",
-       "vector-view-viewsource": "Deregin ko'riw",
        "actions": "Ha'reketler",
        "namespaces": "İsimler ko'plikleri",
        "variants": "Variantlar",
        "editundo": "qaytar",
        "searchresults": "İzlew na'tiyjeleri",
        "searchresults-title": "\"$1\" sorawnaması boyınsha tabılg'an na'tiyjeler",
-       "toomanymatches": "Dım ko'p sa'ykeslikler qaytarıldı, basqa sorawdı isletip ko'rin'",
        "titlematches": "Bet ataması sa'ykes keledi",
        "textmatches": "Bet tekstinin' tuwra kelgenleri",
        "notextmatches": "Hesh qanday bet teksti tuwra kelmedi",
        "searchmenu-exists": "'''Bul wikide \"[[:$1]]\" atamalı bet bar'''",
        "searchmenu-new": "'''Bul wikide \"[[:$1]]\" betin jaratıw!'''",
        "searchprofile-articles": "Mag'lıwmat betleri",
-       "searchprofile-project": "Ja'rdem ha'm Proekt betleri",
        "searchprofile-images": "Multimediya",
        "searchprofile-everything": "Barlıq jerde",
        "searchprofile-advanced": "Ken'eytilgen",
        "searchprofile-articles-tooltip": "$1 izlew",
-       "searchprofile-project-tooltip": "$1 izlew",
        "searchprofile-images-tooltip": "Fayllardı izlew",
        "searchprofile-everything-tooltip": "Barlıq betlerde izlew (sa'wbet betlerin qosıp)",
        "searchprofile-advanced-tooltip": "Berilgen isimler ko'pliginde izlew",
        "searchrelated": "baylanıslı",
        "searchall": "barlıq",
        "showingresults": "To'mende '''$2''' ornınan baslap {{PLURAL:$1|'''1''' na'tiyje|'''$1''' shekemgi na'tiyjeler}} ko'rsetilgen.",
-       "showingresultsnum": "To'mende '''$2''' ornınan baslap {{PLURAL:$3|'''1''' na'tiyje|'''$3''' na'tiyje}} ko'rsetilgen.",
        "search-nonefound": "Sorawg'a sa'ykes na'tiyje tabılmadı.",
        "powersearch-legend": "Ken'eytilgen izlew",
        "powersearch-ns": "Usı isimler ko'pliginen izlew:",
        "allowemail": "Basqalardan xat qabıllawdı qos",
        "prefs-searchoptions": "İzlew sazlawları",
        "prefs-namespaces": "İsimler ko'plikleri",
-       "defaultns": "Bolmasa usı isimler ko'plikleri boyınsha izlew:",
        "default": "defolt",
        "prefs-files": "Fayllar",
        "youremail": "E-mail:",
        "username": "Paydalanıwshı atı:",
-       "uid": "Paydalanıwshı IDsı:",
        "prefs-memberingroups": "Kirgen {{PLURAL:$1|toparın'ız|toparların'ız}}:",
        "yourrealname": "Haqıyqıy isimin'iz:",
        "yourlanguage": "Til:",
        "all-logs-page": "Barlıq ashıq jurnallar",
        "log-title-wildcard": "Usı tekstten baslang'an atamalardı izlew",
        "allpages": "Ha'mme betler",
-       "alphaindexline": "$1 — $2",
        "nextpage": "Keyingi bet ($1)",
        "prevpage": "Aldıng'ı bet ($1)",
        "allpagesfrom": "Mına betten baslap ko'rsetiw:",
        "whatlinkshere-filters": "Filtrler",
        "blockip": "Paydalanıwshını bloklaw",
        "blockip-legend": "Paydalanıwshını bloklaw",
-       "ipadressorusername": "IP Adres yamasa paydalanıwshı atı:",
+       "ipaddressorusername": "IP Adres yamasa paydalanıwshı atı:",
        "ipbexpiry": "Ku'shin joytıw waqtı:",
        "ipbreason": "Sebep:",
        "ipbcreateaccount": "Akkaunt jaratıwdı qadag'an etiw",
        "svg-long-desc": "SVG fayl, $1 × $2 piksel belgilengen, fayldın' ha'jmi: $3",
        "show-big-image": "Joqarı imkaniyatlı",
        "newimages": "Taza fayllar galereyasi",
-       "showhidebots": "(botlardı $1)",
        "noimages": "Ko'riwge su'wret joq.",
        "ilsubmit": "İzle",
        "bydate": "sa'ne boyınsha",
index dab63fa..acd010c 100644 (file)
        "searchrelated": "ineqqes",
        "searchall": "akk",
        "showingresults": "Tamuli n {{PLURAL:$1|'''Yiwen''' wegmud|'''$1''' n yigmad}} seg  #'''$2'''.",
-       "showingresultsnum": "Tamuli n {{PLURAL:$3|'''Yiwen''' wegmud|'''$3''' n yigmad}} seg  #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Agmud '''$1'''|Igmad '''$1–$2'''}} n '''$3''' i '''$4'''",
        "search-nonefound": "Ulac igmad i usuter agi.",
        "powersearch-legend": "Anadi amahlan",
index c39bc1e..0ccb278 100644 (file)
        "qbmyoptions": "Уи зэгъэзэхуэгъуэхэр",
        "faq": "FAQ",
        "faqpage": "Project:FAQ",
-       "vector-action-addsection": "Теухугъуэ щӀэуэ щӀэдзэн",
-       "vector-action-delete": "Ихын",
-       "vector-action-move": "ЦӀэр хъуэжын",
-       "vector-action-protect": "Хъумэн",
-       "vector-action-undelete": "ЗыфӀэгъэувэжын",
-       "vector-action-unprotect": "Хъумэныр техыжын",
-       "vector-view-create": "ЩӀын",
-       "vector-view-edit": "Гъэтэрэзын",
-       "vector-view-history": "Тхыдэм еплъын",
-       "vector-view-view": "Еджэн",
-       "vector-view-viewsource": "КъызхэкӀам еплъын",
        "actions": "ЩӀыгъэхэр",
        "namespaces": "ЦӀэхэм я пӀэр",
        "variants": "Вариантхэр",
        "nextn": "яуж кӀуэр {{PLURAL:$1|$1}}",
        "viewprevnext": "Еплъын ($1 {{int:pipe-separator}} $2) ($3)",
        "searchprofile-articles-tooltip": "Лъыхъуэн $1-м",
-       "searchprofile-project-tooltip": "Лъыхъуэн $1-м",
        "search-result-size": "$1 ({{PLURAL:$2|псалъэу $2|псалъэу $2|псалъэу $2}})",
        "search-redirect": "(егъэкӀуэкӀын $1)",
        "search-section": "(секцэ $1)",
        "booksources-go": "Къэгъуэтын",
        "log": "Тхылъхэр",
        "allpages": "НапэкIуэцIухъуар",
-       "alphaindexline": "$1-м щыщIэдзауэ $2-м нэс",
        "prevpage": "Япэреуэ кӀуа напэкӀуэцӀыр ($1)",
        "allpagesfrom": "МыбыкIэ щIидзэ напэкIуэцIхэр къихын:",
        "allpagesto": "Къихыныр къэгъэувыIэн:",
index 6cb8209..9a5181c 100644 (file)
        "qbmyoptions": "مہ صفحات",
        "faq": "عام معلومات",
        "faqpage": "Project:معلوماتِ عامہ",
-       "vector-action-addsection": "نوغ موضوع",
-       "vector-action-delete": "بوغاوے",
-       "vector-action-move": "منتقل کورے",
-       "vector-action-protect": "محفوظ کورے",
-       "vector-action-undelete": "اچی انگیے",
-       "vector-action-unprotect": "غیر محفوظ",
-       "vector-view-create": "ساوزاوے",
-       "vector-view-edit": "ایڈٹ کورے",
-       "vector-view-history": "تاریخچہ",
-       "vector-view-view": "راوے",
-       "vector-view-viewsource": "مسودہ",
        "actions": "ایکشنز",
        "namespaces": "نامان ژاغہ",
        "variants": "الگ",
        "searchmenu-exists": "'''ھیہ کھوار ویکیپیڈیا \"[[:$1]]\" نامی ای صفحہ موجود شیر'''",
        "searchmenu-new": "↓'''ھیہ کھوار ویکیپیڈیا صفحہ \"[[:$1]]\" تخلیق کورے!'''",
        "searchprofile-articles": "مشمولاتی صفحات",
-       "searchprofile-project": "مدد اوچے منصوبو صفحات",
        "searchprofile-images": "ملٹی میڈیا",
        "searchprofile-everything": "سف اشناری",
        "searchprofile-advanced": "ایڈوانس",
        "searchprofile-articles-tooltip": "$1 ھیہ صفحا تلاش",
-       "searchprofile-project-tooltip": "$1 ھیارا تلاش",
        "searchprofile-images-tooltip": "تلاش برائے فایل",
        "searchprofile-everything-tooltip": "ہر ژاغا تلاش کورے",
        "searchprofile-advanced-tooltip": "کسٹم نیم اسپیسا تلاش کورے",
        "skin-preview": "نمائش",
        "youremail": "بشلی کغاز",
        "username": "ممبارو نم",
-       "uid": "ممبارو لمبار:",
        "prefs-memberingroups": "{{PLURAL:$1|گروہ|گروہاں}} رُکن:",
        "prefs-registration-date-time": "$1",
        "yourrealname": "* اصلی نم",
        "speciallogtitlelabel": "عنوان:",
        "log": "نوشتہ جات",
        "allpages": "سف صفحات",
-       "alphaindexline": "$1 تا $2",
        "prevpage": "آچھو صفحہ ($1)",
        "allpagesfrom": "مطلوبہ حرفاری شروع باک صفحاتن نمائش:",
        "allpagesto": "مطلوبہ حرفاری ختم باک صفحاتن نمائش:",
diff --git a/languages/i18n/ki.json b/languages/i18n/ki.json
new file mode 100644 (file)
index 0000000..ed5523a
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Stephenwanjau"
+               ]
+       },
+       "gotaccountlink": "Ingira",
+       "protectedarticle": "nimenyeriri [[$1]]",
+       "watchlistall2": "ciothi"
+}
index bd13cab..c5d401d 100644 (file)
        "qbmyoptions": "Pelê mı",
        "faq": "PZP (Persê ke zaf perşinê)",
        "faqpage": "Project:PZP",
-       "vector-action-addsection": "Mewzu ilawe ke",
-       "vector-action-delete": "Bestere",
-       "vector-action-move": "Bere",
-       "vector-action-protect": "Bısevekne",
-       "vector-action-undelete": "Esterıtene peyser bıcê",
-       "vector-action-unprotect": "Rake",
-       "vector-view-create": "Vıraze",
-       "vector-view-edit": "Bıvurne",
-       "vector-view-history": "Tarixi basne",
-       "vector-view-view": "Bıwane",
-       "vector-view-viewsource": "Çımey bıvêne",
        "actions": "Kerdey",
        "namespaces": "Caê namey",
        "variants": "Varyanti",
index ec41fcf..97df37b 100644 (file)
        "compareselectedversions": "بولەكتەنگەن نۇسقالاردى سالىستىرۋ",
        "editundo": "جوققا شىعارۋ",
        "searchresults": "ىزدەۋ ناتىيجەلەرى",
-       "toomanymatches": "تىم كوپ سايكەس قايتارىلدى, وزگە سۇرانىمدى بايقاپ كورىڭىز",
        "titlematches": "بەت تاقىرىبىن اتى سايكەس كەلەدى",
        "textmatches": "بەت ٴماتىنى سايكەس كەلەدى",
        "notextmatches": "ەش بەت ٴماتىنى سايكەس ەمەس",
        "searchrelated": "قاتىستى",
        "searchall": "بارلىق",
        "showingresults": "تومەندە ٴنومىر '''$2''' ورنىنان باستاپ بارىنشا '''$1''' ناتىيجە كورسەتىلەدى.",
-       "showingresultsnum": "تومەندە ٴنومىر '''$2''' ورنىنان باستاپ '''$3''' ناتىيجە كورسەتىلەدى.",
        "powersearch-legend": "كەڭەيتىلگەن ىزدەۋ",
        "powersearch-ns": "مىنا ەسىم ايالاردا ىزدەۋ:",
        "search-external": "شەتتىك ىزدەگىش",
        "allowemail": "باسقادان حات قابىلداۋىن قوس",
        "prefs-searchoptions": "ىزدەۋ باپتالىمدارى",
        "prefs-namespaces": "ەسىم ايالارى",
-       "defaultns": "مىنا ەسىم ايالاردا ادەپكىدەن ىزدەۋ:",
        "default": "ادەپكى",
        "prefs-files": "فايلدار",
        "youremail": "ە-پوشتاڭىز:",
        "username": "قاتىسۋشى اتىڭىز:",
-       "uid": "قاتىسۋشى تەڭدەستىرگىشىڭىز:",
        "prefs-memberingroups": "كىرگەن {{PLURAL:$1|توبىڭىز|توپتارىڭىز}}:",
        "yourrealname": "ناقتى اتىڭىز:",
        "yourlanguage": "ٴتىلىڭىز:",
        "logempty": "جۋرنالدا سايكەس دانالار جوق.",
        "log-title-wildcard": "مىنا ماتىننەڭ باستالىتىن تاقىرىپ اتتارىن ىزدەۋ",
        "allpages": "بارلىق بەتتەر",
-       "alphaindexline": "$1 — $2",
        "nextpage": "كەلەسى بەتكە ($1)",
        "prevpage": "الدىڭعى بەتكە ($1)",
        "allpagesfrom": "مىنا بەتتەن باستاپ كورسەتۋ:",
        "blockip": "قاتىسۋشىنى بۇعاتتاۋ",
        "blockip-legend": "قاتىسۋشىنى بۇعاتتاۋ",
        "blockiptext": "تومەندەگى ٴپىشىن قاتىسۋشىنىڭ جازۋ رۇقساتىن بەلگىلى IP مەكەنجايىمەن نە اتىمەن بۇعاتتاۋ ٴۇشىن قولدانىلادى.\nبۇنى تەك بۇزاقىلىقتى قاقپايلاۋ ٴۇشىن جانە دە [[{{{{ns:mediawiki}}:Policy-url}}|ەرەجەلەر]] بويىنشا اتقارۋىڭىز ٴجون.\nتومەندە ٴتىيىستى سەبەبىن تولتىرىپ كورسەتىڭىز (مىسالى, دايەككە بۇزاقىلىقپەن وزگەرتكەن بەتتەردى كەلتىرىپ).",
-       "ipadressorusername": "IP مەكەنجايى نە قاتىسۋشى اتى:",
+       "ipaddressorusername": "IP مەكەنجايى نە قاتىسۋشى اتى:",
        "ipbexpiry": "مەرزىمى بىتپەك:",
        "ipbreason": "سەبەبى:",
        "ipbreason-dropdown": "* بۇعاتتاۋدىڭ جالپى سەبەبتەرى\n** جالعان مالىمەت ەنگىزۋ\n** بەتتەردەگى ماعلۇماتتى الاستاۋ\n** شەتتىك توراپتار سىلتەمەلەرىن جاۋدىرۋ\n** بەتتەرگە ماعىناسىزدىق/بالدىرلاۋ كىرىستىرۋ\n** قوقانداۋ/قۋعىنداۋ مىنەزقۇلىق\n** بىرنەشە رەت تىركەلىپ قىيياناتتاۋ\n** ورەسكەل قاتىسۋشى اتى",
        "tooltip-recreate": "بەت جويىلعانىنا قاراماستان قايتا باستاۋ",
        "tooltip-upload": "قوتارىپ بەرۋدى باستاۋ",
        "common.css": "/* مىندا ورنالاستىرىلعان CSS بارلىق مانەرلەردە قولدانىلادى */",
-       "cologneblue.css": "/* مىندا ورنالاستىرىلعان CSS تەك «كولن زەڭگىرلىگى» (cologneblue) مانەرىن پايدالانۋشىلارىنا ىقپال ەتەدى skin */",
-       "monobook.css": "/* مىندا ورنالاستىرىلعان CSS تەك «دارا كىتاپ» (monobook) مانەرىن پايدالانۋشىلارىنا ىقپال ەتەدى */",
-       "modern.css": "/* مىندا ورنالاستىرىلعان CSS تەك «زاماناۋىي» (modern) مانەرىن پايدالانۋشىلارىنا ىقپال ەتەدى */",
        "common.js": "/* مىنداعى ٴارتۇرلى JavaScript كەز كەلگەن بەت قوتارىلعاندا بارلىق پايدالانۋشىلار ٴۇشىن جەگىلەدى. */",
-       "cologneblue.js": "/* مىنداعى JavaScript تەك «كولن زەڭگىرلىگى» (cologneblue) مانەرىن پايدالانۋشىلار ٴۇشىن جەگىلەدى */",
-       "monobook.js": "/* مىنداعى JavaScript تەك «دارا كىتاپ» (monobook) مانەرىن پايدالانۋشىلار ٴۇشىن جەگىلەدى */",
-       "modern.js": "/* مىنداعى JavaScript تەك «زاماناۋىي» (modern) مانەرىن پايدالانۋشىلار ٴۇشىن جەگىلەدى */",
        "anonymous": "{{SITENAME}} تىركەلگىسىز قاتىسۋشى(لارى)",
        "siteuser": "{{SITENAME}} قاتىسۋشى $1",
        "lastmodifiedatby": "بۇل بەتتى $3 قاتىسۋشى سوڭعى وزگەرتكەن كەزى: $2, $1.",
        "spambot_username": "MediaWiki spam cleanup",
        "spam_reverting": "$1 دەگەنگە سىلتەمەلەرى جوق سوڭعى نۇسقاسىنا قايتارىلدى",
        "spam_blanking": "$1 دەگەنگە سىلتەمەلەرى بار بارلىق تۇزەتۋلەر تازارتىلدى",
-       "skinname-cologneblue": "كولن زەڭگىرلىگى (cologneblue)",
-       "skinname-monobook": "دارا كىتاپ (monobook)",
-       "skinname-modern": "زاماناۋىي (modern)",
        "markaspatrolleddiff": "زەرتتەلدى دەپ بەلگىلەۋ",
        "markaspatrolledtext": "بۇل بەتتى زەرتتەلدى دەپ بەلگىلە",
        "markedaspatrolled": "زەرتتەلدى دەپ بەلگىلەندى",
        "newimages": "جاڭا فايلدار كورمەسى",
        "imagelisttext": "تومەندە $2 سۇرىپتالعان '''$1''' فايل ٴتىزىمى.",
        "newimages-summary": "بۇل ارنايى بەتىندە سوڭعى قوتارىپ بەرىلگەن فايلدار كورسەتىلەدى",
-       "showhidebots": "(بوتتاردى $1)",
        "noimages": "كورەتىن ەشتەڭە جوق.",
        "ilsubmit": "ىزدە",
        "bydate": "كۇن-ايىمەن",
index 32d4ccf..f962fa6 100644 (file)
        "watchthis": "Бұл бетті бақылау",
        "savearticle": "Бетті сақтау",
        "preview": "Қарап шығу",
-       "showpreview": "Алдын ала қарау",
+       "showpreview": "Алдын-ала қарау",
        "showdiff": "Өзгерістерді көрсет",
        "anoneditwarning": "<strong> Ескерту:</strong>  Сіз жүйеге кірмегенсіз.\nIP мекенжайыңыз бұл беттің өңделу тарихында жазылып алынады.",
        "anonpreviewwarning": "<em>Сіз жүйеге кірмегенсіз. IP мекенжайыңыз бұл беттің өңделу тарихында жазылып алынады.</em>",
        "rev-suppressed-unhide-diff": "Бір түзетуі (нұсқасы) <strong>жасырылған</strong>.\nЕгжей-тегжейін [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} жою журналынан] таба аласыз.\nЕгер жалғастырсаңыз [$1 бұл айырмашылықты] көре аласыз.",
        "rev-deleted-diff-view": "Бұл нұсқалар айырмасының бір нұсқасы <strong>жойылған</strong>.\n[{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Жою журналынан] егжей-тегжейін таба аласыз.",
        "rev-suppressed-diff-view": "Бұл нұсқалар айырмасының бір нұсқасы <strong>жасырылған</strong>.\n[{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Жасыру журналынан] егжей-тегжейін таба аласыз.",
-       "rev-delundel": "көÑ\80Ñ\96нÑ\96Ñ\81Ñ\96н Ó©Ð·Ð³ÐµÑ\80Ñ\82Ñ\83",
+       "rev-delundel": "көÑ\80Ñ\81еÑ\82/жаÑ\81Ñ\8bÑ\80",
        "rev-showdeleted": "көрсету",
        "revisiondelete": "Нұсқаларды жою/жоюды болдырмау",
        "revdelete-nooldid-title": "Нысана түзету жарамсыз",
        "revdelete-success": "'''Түзету көрінісі сәтті жаңартылды.'''",
        "revdelete-failure": "'''Түзету көрінісі жаңартылмады:'''\n$1",
        "logdelete-success": "'''Журнал көрінісі сәтті қойылды.'''",
-       "revdel-restore": "Ð\9aөрінісін өзгерту",
+       "revdel-restore": "көрінісін өзгерту",
        "pagehist": "Бет тарихы",
        "deletedhist": "Жойылған тарихы",
        "revdelete-otherreason": "Басқа/қосымша себеп:",
        "search-section": "(бөлім $1)",
        "search-suggest": "Мүмкін осы болар: $1",
        "search-interwiki-caption": "Бауырлас жобалар",
-       "search-interwiki-default": "$1 нәтиже:",
+       "search-interwiki-default": "$1 Ð´ÐµÐ³ÐµÐ½Ð½ÐµÐ½ Ð½Ó\99Ñ\82иже:",
        "search-interwiki-more": "(көбірек)",
        "search-relatedarticle": "Қатысты",
        "searchrelated": "қатысты",
        "searchall": "барлық",
        "showingresults": "Төменде нөмір '''$2''' орнынан бастап барынша '''$1''' нәтиже көрсетіледі.",
-       "showingresultsnum": "Төменде нөмір '''$2''' орнынан бастап '''$3''' нәтиже көрсетіледі.",
        "showingresultsheader": "«<strong>$4</strong>» сұранысына {{PLURAL:$5|тек <strong>$1</strong> нәтиже табылды|табылған <strong>$3</strong> нәтиженің <strong>$1 - $2</strong> аралығы көрсетілген}}",
        "search-nonefound": "Сұрауға сәйкес нәтижелер табылмады.",
        "powersearch-legend": "Кеңейтілген іздеу",
        "powersearch-togglelabel": "Белгілеу:",
        "powersearch-toggleall": "Барлығы",
        "powersearch-togglenone": "Ешқандай",
+       "powersearch-remember": "Келесі іздеулер үшін таңдалғанды есте сақтау",
        "search-external": "Сыртқы іздеу",
        "searchdisabled": "{{SITENAME}} іздеу қызметі өшірілген.\nӘзірше Google арқылы іздеуге болады.\nАңғартпа: {{SITENAME}} торабының мағлұмат тізбелері ескірген болуы мүмкін.",
        "search-error": "Іздеген кезде қате кездесті: $1",
        "right-move": "Беттерді жылжыту",
        "right-move-subpages": "Беттерді олардың бағынышты беттерін қоса жылжыту",
        "right-move-rootuserpages": "Қатысушы беттерін түбірімен жылжыту",
+       "right-move-categorypages": "Санат беттерінің атауын өзгерту",
        "right-movefile": "Файлдарды жылжыту",
        "right-suppressredirect": "Тиісті атауға бетті жылжытқанда айдағышты жасамау",
        "right-upload": "Файлдарды жүктеу",
        "action-createpage": "беттерді бастау",
        "action-createtalk": "талқылау беттерін бастау",
        "action-createaccount": "Бұл қатысушы тіркелгісін жасау",
+       "action-history": "бұл беттің өңделу тарихын қарау",
        "action-minoredit": "бұл өңдемені шағын деп белгілеу",
        "action-move": "бұл бетті жылжыту",
        "action-move-subpages": "бұл бетті және оның төменгі беттерін жылжыту",
        "action-move-rootuserpages": "қатысушы беттерін түбірімен жылжыту",
+       "action-move-categorypages": "санат беттерінің атауын өзгерту",
        "action-movefile": "Бұл файлды жылжыту",
        "action-upload": "бұл файлды жүктеу",
        "action-reupload": "бұл бар файлдың үстіне жазу",
        "backend-fail-read": "«$1» файлы оқылмайды.",
        "backend-fail-create": "«$1» файлы жазылмайды.",
        "backend-fail-maxsize": "\"$1\" файлы жазылмайды, себебі {{PLURAL:$2|1 байттан|$2 байттан}} үлкенірек.",
+       "img-auth-accessdenied": "Қатынау шектелген",
        "http-invalid-url": "Жарамсыз URL: $1",
        "http-read-error": "HTTP оқудағы қате.",
        "upload-curl-error6": "URL жетілмеді",
        "pageswithprop-submit": "Өту",
        "doubleredirects": "Екі мәрте айдағыштар",
        "doubleredirectstext": "Бұл бетте басқа айдату беттерге сілтейтін беттер тізімделінеді. Әрбір жолақта бірінші және екінші айдағышқа сілтемелер бар, сонымен бірге екінші айдағыш нысанасы бар, әдетте бұл бірінші айдағыш бағыттайтын «нақты» нысана бет атауы болуы керек.",
-       "double-redirect-fixed-move": "[[$1]] Ð¶Ñ\8bлжÑ\8bÑ\82Ñ\8bлдÑ\8b.\nоÒ\93ан Ò\9bазÑ\96Ñ\80 [[$2]] Ð´ÐµÐ³ÐµÐ½Ð³Ðµ Ð°Ð¹Ð´Ð°Ñ\82Ñ\8bлды.",
+       "double-redirect-fixed-move": "[[$1]] Ð¶Ñ\8bлжÑ\8bÑ\82Ñ\8bлдÑ\8b.\nÐ\9eл Ó©Ð·Ð´Ñ\96кÑ\82Ñ\96 Ñ\82Ò¯Ñ\80де Ð¶Ð°Ò£Ð°Ñ\80Ñ\82Ñ\8bладÑ\8b Ð¶Ó\99не Ð¾Ò\93ан Ò\9bазÑ\96Ñ\80 [[$2]] Ð´ÐµÐ³ÐµÐ½Ð³Ðµ Ð±Ð°Ò\93Ñ\8bÑ\82Ñ\82алады.",
        "brokenredirects": "Сынық айдағыштар",
        "brokenredirectstext": "Келесі айдағыштар жоқ беттерге сілтейді:",
        "brokenredirects-edit": "өңдеу",
        "wantedtemplates": "Басталмаған үлгілер",
        "mostlinked": "Ең көп сілтенген беттер",
        "mostlinkedcategories": "Ең көп сілтенген санаттар",
-       "mostlinkedtemplates": "Ең көп сілтенген үлгілер",
+       "mostlinkedtemplates": "Ең көп кірістірілген (қолданылған) үлгілер",
        "mostcategories": "Ең көп санаты бар беттер",
        "mostimages": "Ең көп сілтенген файлдар",
        "mostinterwikis": "Ең көп интеруикилері бар беттер",
        "listgrouprights-removegroup-self": "Өз тіркелгіңізді {{PLURAL:$2|топтан|топтардан}} алып тастау: $1",
        "listgrouprights-addgroup-self-all": "Өз тіркелгіңізге барлық топтарды қосу",
        "listgrouprights-removegroup-self-all": "Өз тіркелгіңізден барлық топтарды алып тастау",
+       "listgrouprights-namespaceprotection-namespace": "Атау кеңістігі",
+       "trackingcategories-name": "Хабарлама атауы",
+       "trackingcategories-nodesc": "Сипаттамасы қолжетімді емес.",
+       "trackingcategories-disabled": "Санат өшірілген",
        "mailnologin": "Еш мекенжай жөнелтілген жоқ",
        "mailnologintext": "Басқа қатысушыға хат жөнелту үшін [[Special:UserLogin|кіруіңіз]] жөн, және [[Special:Preferences|бапталымдарыңызда]] жарамды е-пошта мекенжайы болуы жөн.",
        "emailuser": "Қатысушыға хат жазу",
        "usermaildisabledtext": "Бұл уикиде басқа қатысушыларға хат жібере алмайсыз",
        "noemailtitle": "Еш е-пошта мекенжайы жоқ",
        "noemailtext": "Бұл қатысушы жарамды е-пошта мекенжайын келтірмеген.",
+       "nowikiemailtext": "Бұл қатысушы басқа қатысушылардан хат хабылдамауды таңдаған.",
        "emailusername": "Қатысушы аты:",
        "emailusernamesubmit": "Жіберу",
        "email-legend": "Басқа {{SITENAME}} қатысушысына хат жіберу",
        "watchnologin": "Кірмегенсіз",
        "addwatch": "Бақылау тізіміңізге қосу",
        "addedwatchtext": "«[[:$1]]» беті [[Special:Watchlist|бақылау тізіміңізге]] қосылды.\nБұл беттің және байланысты талқылау бетінің келешектегі өзгерістері сонда тізімделеді.",
+       "addedwatchtext-short": "«$1» беті бақылау тізіміңізге қосылды.",
        "removewatch": "Бақылау тізіміңізден аластату",
        "removedwatchtext": "«[[:$1]]» беті [[Special:Watchlist|бақылау тізіміңізден]] аласталды.",
+       "removedwatchtext-short": "«$1» беті бақылау тізіміңізден аласталды",
        "watch": "Бақылау",
        "watchthispage": "Бұл бетті бақылау",
        "unwatch": "Бақыламау",
        "contributions-title": "$1 есімді қатысушының үлесі",
        "mycontris": "Үлесім",
        "contribsub2": "{{GENDER:$3|$1}} ($2) үлесі",
+       "contributions-userdoesnotexist": "«$1» қатысушы акаунты тіркелмеді.",
        "nocontribs": "Осы іздеу шартына сәйкес өзгерістер табылған жоқ.",
        "uctop": "(соңғы)",
        "month": "Мына айдан (және ертеректен):",
        "nolinkshere": "'''[[:$1]]''' дегенге еш бет сілтемейді.",
        "nolinkshere-ns": "Таңдалған есім кеңістігінде '''[[:$1]]''' дегенге ешқандай бет сілтемейді.",
        "isredirect": "бағыттау беті",
-       "istemplate": "кірікбет",
+       "istemplate": "кіріcтірілген",
        "isimage": "файл сілтемесі",
        "whatlinkshere-prev": "{{PLURAL:$1|алдыңғы|алдыңғы $1}}",
        "whatlinkshere-next": "{{PLURAL:$1|келесі|келесі $1}}",
        "whatlinkshere-links": "← сілтемелер",
-       "whatlinkshere-hideredirs": "Ð\91аÒ\93Ñ\8bÑ\82Ñ\82аÑ\83Ñ\88Ñ\8bлаÑ\80дÑ\8b $1",
+       "whatlinkshere-hideredirs": "баÒ\93Ñ\8bÑ\82Ñ\82аÑ\83 Ð±ÐµÑ\82Ñ\82еÑ\80Ñ\96н $1",
        "whatlinkshere-hidetrans": "кіріcтірілген беттерді $1",
        "whatlinkshere-hidelinks": "сілтемелерді $1",
        "whatlinkshere-hideimages": "файл сілтемелерін $1",
        "ipblocklist-empty": "Бұғаттау тізімі бос.",
        "ipblocklist-no-results": "Сұратылған IP мекенжай немесе қатысушы аты бұғатталмаған.",
        "blocklink": "бұғаттау",
-       "unblocklink": "бұÒ\93аÑ\82Ñ\82амау",
+       "unblocklink": "бұÒ\93аÑ\82Ñ\8bнан Ñ\88Ñ\8bÒ\93аÑ\80у",
        "change-blocklink": "бұғаттауын өзгерту",
        "contribslink": "үлесі",
        "emaillink": "хат жіберу",
        "movepagetalktext": "Келесі жағдай орын алса, қатысты талқылау беті '''жылжытылмайды''':\n*жаңа атаумен аталатын беттің талқылау беті әлдеқашан бар болған кезде (бұл жағдайда талқылауын қолмен көшіруге болады, бірақ түйіндемесіне қай беттен көшірілгендігін міндетті түрде жазыңыз)\n*төмендегі қорапшадан құсбелгі алынып тасталғанда.\n\nАл мақаланың атауын өзгертем деп мағлұматын қолмен көшіруге болмайды, себебі беттің түзету тарихын өшіреді.",
        "movearticle": "Бетті жылжыту:",
        "moveuserpage-warning": "<strong>Ескерту:</strong> Сіз қатысушы бетін жылжытпақшысыз. Назар аударыңыз, қатысушы беті ғана жылжытылуы мүмкін және қатысушы аты <em>өзгертілмейді</em>.",
+       "movecategorypage-warning": "<strong>Ескерту:</strong> Сіз санат бетінің атауын өзгерткелі жатырсыз. Бұл әрекетіңізде санат атауы ғана өзгерте аласыз сондықтан санаттың бұрыңғы атауындағы қандай да бір бет санаттың жаңа атауына өздігінен <em>санатталмайтыны</em> есіңізде болсын. Санаттың бұрыңғы атауындағы беттері мен санатшаларын жаңа атауына қайта санаттап шығуға тура келеді.",
        "movenologintext": "Бетті жылжыту үшін тіркелген қатысуышы болуыңыз және [[Special:UserLogin|кіруіңіз]] керек.",
        "movenotallowed": "{{SITENAME}} жобасында беттерді жылжытуға рұқсатыңыз жоқ.",
        "movenotallowedfile": "Файлдарды жылжытуға рұқсатыңыз жоқ.",
        "cant-move-user-page": "Қатысушы беттерін жылжытуға рұқсатыңыз жоқ (төменгі беттерінен басқа).",
        "cant-move-to-user-page": "Бетті қатысушы бетіне жылжытуға рұқсатыңыз жоқ (төменгі беттерін қоспағанда).",
+       "cant-move-category-page": "Сізде санат беттерінің атауын өзгертуге рұқсатыңыз жоқ.",
+       "cant-move-to-category-page": "Сізде бетті санат бетіне жылжытуға рұқсатыңыз жоқ.",
        "newtitle": "Жаңа бет атауы:",
        "move-watch": "Бұл бетті бақылау",
        "movepagebtn": "Бетті жылжыту",
        "watchlistedit-raw-done": "Бақылау тізіміңіз жаңартылды.",
        "watchlistedit-raw-added": "$1 тақырып аты үстелді:",
        "watchlistedit-raw-removed": "$1 тақырып аты аласталды:",
+       "watchlistedit-clear-title": "Бақылау тізіміңіз тазартылды",
+       "watchlistedit-clear-legend": "Бақылау тізімін тазарту",
+       "watchlistedit-clear-explain": "Барлық атаулар бақылау тізіміңізден аласталды",
+       "watchlistedit-clear-titles": "Тақырып аттары:",
+       "watchlistedit-clear-submit": "Бақылау тізімді тазарту (Бұл қайтадан өзгермейді!)",
+       "watchlistedit-clear-done": "Бақылау тізіміңіз тазартылды.",
+       "watchlistedit-clear-removed": "{{PLURAL:$1|1 бет атауы|$1 бет атауы}} аласталды:",
+       "watchlistedit-too-many": "Мұнда өте көп беттер көрсетілген.",
+       "watchlisttools-clear": "Бақылау тізімін тазарту",
        "watchlisttools-view": "Қатысты өзгерістерді қарау",
        "watchlisttools-edit": "Бақылау тізімді қарау және өңдеу",
        "watchlisttools-raw": "Бақылау тізімін өңдеу",
        "unknown_extension_tag": "Белгісіз кеңейтпе белгісі \"$1\"",
        "version": "Нұсқа",
        "version-extensions": "Орнатылған кеңейтімдер",
+       "version-skins": "Орнатылған мәнерлер",
        "version-specialpages": "Арнайы беттер",
        "version-parserhooks": "Құрылымдық талдатқыштың тұзақтары",
        "version-variables": "Айнымалылар",
        "version-antispam": "Спамнан қорғау",
-       "version-skins": "Мәнерлер",
        "version-other": "Тағы басқалар",
        "version-mediahandlers": "Медиа өңдеткіштері",
        "version-hooks": "Жете тұзақтары",
        "version-hook-name": "Тұзақ атауы",
        "version-hook-subscribedby": "Тұзақ тартқыштары",
        "version-version": "(Нұсқасы: $1)",
+       "version-no-ext-name": "[аты жоқ]",
        "version-license": "MediaWiki Лицензиясы",
        "version-ext-license": "Лицензия",
        "version-ext-colheader-name": "Кеңейтілім",
+       "version-skin-colheader-name": "Мәнер",
        "version-ext-colheader-version": "Нұсқасы",
        "version-ext-colheader-license": "Лицензиясы",
        "version-ext-colheader-description": "Сипаттамасы",
        "htmlform-selectorother-other": "Басқа",
        "htmlform-no": "Жоқ",
        "htmlform-yes": "Иә",
+       "htmlform-cloner-create": "Тағы қосу",
+       "htmlform-cloner-delete": "Аластау",
        "logentry-delete-delete": "$1 $3 деген бетті {{GENDER:$2|жойды}}",
        "logentry-delete-restore": "$1 $3 деген бетті {{GENDER:$2|қалпына келтірді}}",
        "logentry-delete-event": "$1 $3 бетіндегі {{PLURAL:$5|журнал оқиғасы|$5 журнал оқиғасы}} көрінісін {{GENDER:$2|өзгертті}}: $4",
index 968cd64..cbec7b2 100644 (file)
        "compareselectedversions": "Bölektengen nusqalardı salıstırw",
        "editundo": "joqqa şığarw",
        "searchresults": "İzdew nätïjeleri",
-       "toomanymatches": "Tım köp säýkes qaýtarıldı, özge suranımdı baýqap köriñiz",
        "titlematches": "Bet taqırıbın atı säýkes keledi",
        "textmatches": "Bet mätini säýkes keledi",
        "notextmatches": "Eş bet mätini säýkes emes",
        "searchrelated": "qatıstı",
        "searchall": "barlıq",
        "showingresults": "Tömende nömir '''$2''' ornınan bastap barınşa '''$1''' nätïje körsetiledi.",
-       "showingresultsnum": "Tömende nömir '''$2''' ornınan bastap '''$3''' nätïje körsetiledi.",
        "powersearch-legend": "Keñeýtilgen izdew",
        "powersearch-ns": "Usı isimler ko'pliginen izlew:",
        "search-external": "Şettik izdegiş",
        "allowemail": "Basqadan xat qabıldawın qos",
        "prefs-searchoptions": "İzdew baptalımdarı",
        "prefs-namespaces": "Esim ayaları",
-       "defaultns": "Mına esim ayalarda ädepkiden izdew:",
        "default": "ädepki",
        "prefs-files": "Faýldar",
        "youremail": "E-poştañız:",
        "username": "Qatıswşı atıñız:",
-       "uid": "Qatıswşı teñdestirgişiñiz:",
        "prefs-memberingroups": "Kirgen {{PLURAL:$1|tobıñız|toptarıñız}}:",
        "yourrealname": "Naqtı atıñız:",
        "yourlanguage": "Tiliñiz:",
        "logempty": "Jwrnalda säýkes danalar joq.",
        "log-title-wildcard": "Mına mätinneñ bastalıtın taqırıp attarın izdew",
        "allpages": "Barlıq better",
-       "alphaindexline": "$1 — $2",
        "nextpage": "Kelesi betke ($1)",
        "prevpage": "Aldıñğı betke ($1)",
        "allpagesfrom": "Mına betten bastap körsetw:",
        "blockip": "Qatıswşını buğattaw",
        "blockip-legend": "Qatıswşını buğattaw",
        "blockiptext": "Tömendegi pişin qatıswşınıñ jazw ruqsatın belgili IP mekenjaýımen ne atımen buğattaw üşin qoldanıladı.\nBunı tek buzaqılıqtı qaqpaýlaw üşin jäne de [[{{{{ns:mediawiki}}:Policy-url}}|erejeler]] boýınşa atqarwıñız jön.\nTömende tïisti sebebin toltırıp körsetiñiz (mısalı, däýekke buzaqılıqpen özgertken betterdi keltirip).",
-       "ipadressorusername": "IP mekenjaýı ne qatıswşı atı:",
+       "ipaddressorusername": "IP mekenjaýı ne qatıswşı atı:",
        "ipbexpiry": "Merzimi bitpek:",
        "ipbreason": "Sebebi:",
        "ipbreason-dropdown": "* Buğattawdıñ jalpı sebebteri\n** Jalğan mälimet engizw\n** Betterdegi mağlumattı alastaw\n** Şettik toraptar siltemelerin jawdırw\n** Betterge mağınasızdıq/baldırlaw kiristirw\n** Qoqandaw/qwğındaw minezqulıq\n** Birneşe ret tirkelip qïyanattaw\n** Öreskel qatıswşı atı",
        "tooltip-recreate": "Bet joýılğanına qaramastan qaýta bastaw",
        "tooltip-upload": "Qotarıp berwdi bastaw",
        "common.css": "/* Mında ornalastırılğan CSS barlıq mänerlerde qoldanıladı */",
-       "cologneblue.css": "/* Mında ornalastırılğan CSS tek «Köln zeñgirligi» (cologneblue) mänerin paýdalanwşılarına ıqpal etedi skin */",
-       "monobook.css": "/* Mında ornalastırılğan CSS tek «Dara kitap» (monobook) mänerin paýdalanwşılarına ıqpal etedi */",
-       "modern.css": "/* Mında ornalastırılğan CSS tek «Zamanawï» (modern) mänerin paýdalanwşılarına ıqpal etedi */",
        "common.js": "/* Mındağı ärtürli JavaScript kez kelgen bet qotarılğanda barlıq paýdalanwşılar üşin jegiledi. */",
-       "cologneblue.js": "/* Mındağı JavaScript tek «Köln zeñgirligi» (cologneblue) mänerin paýdalanwşılar üşin jegiledi */",
-       "monobook.js": "/* Mındağı JavaScript tek «Dara kitap» (monobook) mänerin paýdalanwşılar üşin jegiledi */",
-       "modern.js": "/* Mındağı JavaScript tek «Zamanawï» (modern) mänerin paýdalanwşılar üşin jegiledi */",
        "anonymous": "{{SITENAME}} tirkelgisiz qatıswşı(ları)",
        "siteuser": "{{SITENAME}} qatıswşı $1",
        "lastmodifiedatby": "Bul betti $3 qatıswşı soñğı özgertken kezi: $2, $1.",
        "spambot_username": "MediaWiki spam cleanup",
        "spam_reverting": "$1 degenge siltemeleri joq soñğı nusqasına qaýtarıldı",
        "spam_blanking": "$1 degenge siltemeleri bar barlıq tüzetwler tazartıldı",
-       "skinname-cologneblue": "Köln zeñgirligi (cologneblue)",
-       "skinname-monobook": "Dara kitap (monobook)",
-       "skinname-modern": "Zamanawï (modern)",
        "markaspatrolleddiff": "Zertteldi dep belgilew",
        "markaspatrolledtext": "Bul betti zertteldi dep belgile",
        "markedaspatrolled": "Zertteldi dep belgilendi",
        "newimages": "Jaña faýldar körmesi",
        "imagelisttext": "Tömende $2 surıptalğan '''$1''' faýl tizimi.",
        "newimages-summary": "Bul arnaýı betinde soñğı qotarıp berilgen faýldar körsetiledi",
-       "showhidebots": "(bottardı $1)",
        "noimages": "Köretin eşteñe joq.",
        "ilsubmit": "İzde",
        "bydate": "kün-aýımen",
index 7c3f223..c6a3dc8 100644 (file)
        "searchrelated": "ទាក់ទិន",
        "searchall": "ទាំងអស់",
        "showingresults": "ខាងក្រោមកំពុងបង្ហាញរហូតដល់ {{PLURAL:$1|'''១''' លទ្ឋផល|'''$1''' លទ្ឋផល}} ចាប់ផ្ដើមពីលេខ #'''$2'''។",
-       "showingresultsnum": "កំពុងបង្ហាញ {{PLURAL:$3|'''1''' result|'''$3''' លទ្ឋផល}}ខាងក្រោម ចាប់ផ្ដើមដោយ #'''$2''' ។",
        "showingresultsheader": "{{PLURAL:$5|លទ្ឋផល '''$1''' ក្នុងចំណោមលទ្ឋផលសរុប '''$3'''|លទ្ឋផល '''$1 - $2''' ក្នុងចំណោមលទ្ឋផលសរុប '''$3'''}} សម្រាប់ '''$4'''",
        "search-nonefound": "មិនមានលទ្ធផលណាមួយ​ត្រូវគ្នានឹងសំណើសុំនេះទេ",
        "powersearch-legend": "ស្វែងរកថ្នាក់ខ្ពស់",
index cc392e1..cbd849c 100644 (file)
        "qbmyoptions": "ನನ್ನ ಪುಟಗಳು",
        "faq": "ಸಾಮಾನ್ಯವಾಗಿ ಕೇಳಲಾಗುವ ಪ್ರಶ್ನೆಗಳು",
        "faqpage": "Project:ಸಾಮಾನ್ಯವಾಗಿ ಕೇಳಲಾಗುವ ಪ್ರಶ್ನೆಗಳು",
-       "vector-action-addsection": "ವಿಷಯ ಸೇರಿಸಿ",
-       "vector-action-delete": "ಅಳಿಸು",
-       "vector-action-move": "ಸ್ಥಳಾಂತರಿಸಿ",
-       "vector-action-protect": "ಸಂರಕ್ಷಿಸು",
-       "vector-action-undelete": "ಅಳಿಸಬೇಡ",
-       "vector-action-unprotect": "ರಕ್ಷಣೆಯನ್ನು ಬದಲಾವಣೆ",
-       "vector-view-create": "ಸೃಷ್ಟಿಸು",
-       "vector-view-edit": "ಸಂಪಾದಿಸಿ",
-       "vector-view-history": "ಇತಿಹಾಸವನ್ನು ನೋಡಿ",
-       "vector-view-view": "ಓದು",
-       "vector-view-viewsource": "ಆಕರ ವೀಕ್ಷಿಸು",
        "actions": "ಕ್ರಿಯೆಗಳು",
        "namespaces": "ನಾಮವರ್ಗಗಳು",
        "variants": "ಹಲವು",
        "editundo": "ಹಿಂದಿನಂತೆ",
        "searchresults": "ಶೋಧನೆಯ ಫಲಿತಾಂಶಗಳು",
        "searchresults-title": "\"$1\" ಅನ್ನು ಹುಡುಕಿದ ಫಲಿತಾಂಶಗಳು",
-       "toomanymatches": "ತುಂಬಾ ಫಲಿತಾಂಶಗಳು ದೊರೆತಿವೆ, ದಯವಿಟ್ಟು ಬೇರೆ ಪದಪುಂಜವನ್ನು ಪ್ರಯತ್ನಿಸಿ",
        "titlematches": "ಹೊಂದಿಕೆಯಿರುವ ಪುಟ ಶೀರ್ಷಿಕೆಗಳು",
        "textmatches": "ಪುಟದ ಪಠ್ಯದಲ್ಲಿನ ಹೋಲಿಕೆಗಳು",
        "notextmatches": "ಯಾವ ಪುಟದ ಪಠ್ಯದಲ್ಲೂ ಹೋಲಿಕೆಗಳಿಲ್ಲ",
        "searchrelated": "ಸಂಬಂಧಿತ",
        "searchall": "ಎಲ್ಲಾ",
        "showingresults": "ಕೆಳಗೆ #'''$2''' ಇಂದ ಶುರುವಾದ {{PLURAL:$1|'''೧''' ಫಲಿತಾಂಶದ|'''$1''' ಫಲಿತಾಂಶಗಳ}}ವರೆಗೂ ತೋರಿಸಲಾಗುತ್ತಿದೆ.",
-       "showingresultsnum": "ಕೆಳಗೆ #'''$2''' ಇಂದ ಶುರುವಾಗಿ {{PLURAL:$3|'''೧''' ಫಲಿತಾಂಶವನ್ನು|'''$3''' ಫಲಿತಾಂಶಗಳನ್ನು}} ತೋರಿಸಲಾಗುತ್ತಿದೆ.",
        "showingresultsheader": "'''$4''' ಗೆ {{PLURAL:$5|'''$3''' ರಲ್ಲಿ '''$1'''  ಫಲಿತಾಂಶ|'''$3''' ರಲ್ಲಿ '''$1 - $2'''  ಫಲಿತಾಂಶಗಳು}}",
        "search-nonefound": "ನಿಮ್ಮ ವಿಚಾರಣೆಗೆ ತಕ್ಕ ಫಲಿತಾಂಶಗಳಿಲ್ಲ.",
        "powersearch-legend": "ಮುಂದುವರೆದ ಹುಡುಕಾಟ",
index 15d9641..159b32b 100644 (file)
        "user-mail-no-addy": "받는 이의 이메일 주소가 없으면 이메일을 보낼 수 없습니다.",
        "user-mail-no-body": "비어 있거나 지나치게 짧은 본문으로 이메일을 보내려고 했습니다.",
        "changepassword": "비밀번호 바꾸기",
-       "resetpass_announce": "ë¡\9cê·¸ì\9d¸ì\9d\84 ë§\88ì¹\98려면 ì\83\88 ë¹\84ë°\80ë²\88í\98¸ë¥¼ ì\97¬ê¸°ì\97\90ì\84\9c ì\84¤ì \95í\95´ì\95¼ í\95©ë\8b\88ë\8b¤:",
+       "resetpass_announce": "ë¡\9cê·¸ì\9d¸ì\9d\84 ë§\88ì¹\98려면 ì\83\88 ë¹\84ë°\80ë²\88í\98¸ë¥¼ ì\84¤ì \95í\95´ì\95¼ í\95©ë\8b\88ë\8b¤.",
        "resetpass_text": "<!-- 여기에 텍스트를 추가하세요 -->",
        "resetpass_header": "비밀번호 바꾸기",
        "oldpassword": "이전 비밀번호:",
        "resetpass-submit-cancel": "취소",
        "resetpass-wrong-oldpass": "비밀번호가 잘못되었거나 현재의 비밀번호와 같습니다.\n이미 비밀번호를 성공적으로 바꾸었거나 새 임시 비밀번호를 요청했을 수 있습니다.",
        "resetpass-recycled": "현재 비밀번호와 다른 비밀번호로 재설정해주세요.",
-       "resetpass-temp-emailed": "임시 이메일 코드로 로그인되어 있습니다.\n로그인을 마치려면 여기서 새로운 비밀번호를 설정해야 합니다:",
+       "resetpass-temp-emailed": "임시 이메일 코드로 로그인되어 있습니다.\n로그인을 마치려면, 여기서 새 비밀번호를 설정해야 합니다:",
        "resetpass-temp-password": "임시 비밀번호:",
        "resetpass-abort-generic": "비밀번호 바꾸기가 확장 기능에 의해 중단되었습니다.",
-       "resetpass-expired": "비밀번호가 만료되었습니다. 로그인하려면 새로운 비밀번호를 설정해야 합니다.",
+       "resetpass-expired": "비밀번호가 만료되었습니다. 로그인하려면 새 비밀번호를 설정해야 합니다.",
        "resetpass-expired-soft": "비밀번호가 만료되어 재설정해야 합니다. 지금 새로운 비밀번호를 선택하거나, \"{{int:resetpass-submit-cancel}}\"를 클릭하고 나중에 재설정해주세요.",
        "resetpass-validity-soft": "귀하의 비밀번호는 유효하지 않습니다: $1\n\n새로운 비밀번호를 지금 설정하거나, \"{{int:resetpass-submit-cancel}}\"을 눌러 나중에 재설정하세요.",
        "passwordreset": "비밀번호 재설정",
        "searchall": "모두",
        "showingresults": "'''$2'''번 부터의 {{PLURAL:$1|결과 '''1'''개|결과 '''$1'''개}}입니다.",
        "showingresultsinrange": "#<strong>$2</strong>부터 #<strong>$3</strong>까지의 범위에서 <strong>$1</strong>개의 {{PLURAL:$1|결과}}가 아래에 보입니다.",
-       "showingresultsnum": "'''$2'''번 부터의 {{PLURAL:$3|결과 '''1'''개|결과 '''$3'''개}}입니다.",
        "showingresultsheader": "'''$4''' 검색어에 대한 {{PLURAL:$5|결과 '''$3'''개 중 '''$1'''개|결과 '''$3'''개 중 '''$1 - $2'''번째}}",
        "search-nonefound": "검색어와 일치하는 결과가 없습니다.",
        "powersearch-legend": "고급 검색",
        "gender-unknown": "밝히고 싶지 않습니다",
        "gender-male": "위키 문서를 편집하는 남자입니다",
        "gender-female": "위키 문서를 편집하는 여자입니다",
-       "prefs-help-gender": "ì\9d´ í\95­ëª©ì\9d\80 ì\84 í\83\9d ì\82¬í\95­ì\9e\85ë\8b\88ë\8b¤.\nì \81ì \88í\95\9c ë¬¸ë²\95ì \81 ì\84±ë³\84ì\9d\84 ì\82¬ì\9a©í\95\98ì\97¬ ë\8b¹ì\8b ì\9d\84 ì§\80ì¹­í\95\98ê±°ë\82\98 ë\8b¤ë¥¸ ì\82¬ë\9e\8cë\93¤ì\97\90ê²\8c ë\8b¹ì\8b ì\9d\84 ì\96¸ê¸\89í\95\98ë\8a\94 ê²½ì\9a°ì\97\90 ì\9d´ í\95­ëª©ì\9d\98 ê°\92ì\9d´ ì\82¬ì\9a©ë\90©ë\8b\88ë\8b¤.\nì\9d´ê²\83ì\9d\80 ê³µê°\9c í\95­ëª©ì\9e\85니다.",
+       "prefs-help-gender": "ì\9d´ í\99\98ê²½ ì\84¤ì \95ì\9d\80 ì\84 í\83\9d ì\82¬í\95­ì\9e\85ë\8b\88ë\8b¤.\nì\86\8cí\94\84í\8a¸ì\9b¨ì\96´ë\8a\94 ì \81ì \88í\95\9c ì\84±ë³\84 ë¬¸ë²\95ì\9d\84 ì\82¬ì\9a©í\95\98ì\97¬ ë\8b¤ë¥¸ ì\82¬ì\9a©ì\9e\90ì\97\90ê²\8c ë\8b¹ì\8b ì\9d\84 ì\96¸ê¸\89í\95\98ë\8a\94 ê²\83ì\9d\84 í\95´ê²°í\95\98기 ì\9c\84í\95´ ì\82¬ì\9a©ë\90©ë\8b\88ë\8b¤.\nì\9d´ ì \95ë³´ë\8a\94 ê³µê°\9cë\90©니다.",
        "email": "이메일",
        "prefs-help-realname": "실명은 선택 사항입니다.\n실명을 입력하면 문서 기여에 자신의 이름이 들어가게 됩니다.",
        "prefs-help-email": "이메일 주소 입력은 선택 사항입니다. 다만 비밀번호를 잊었을 때 비밀번호를 재설정하기 위해 필요합니다.",
        "fileexists-shared-forbidden": "같은 이름의 파일이 이미 위키미디어 공용에 있습니다.\n그래도 파일을 올리려면 뒤로 돌아가서 다른 이름으로 시도해 주시기 바랍니다.\n[[File:$1|thumb|center|$1]]",
        "file-exists-duplicate": "현재 올리고 있는 {{PLURAL:$1|파일}}이 아래 파일과 중복됩니다:",
        "file-deleted-duplicate": "이 파일과 같은 파일 ([[:$1]])이 이전에 삭제된 적이 있습니다. 파일을 다시 올리기 전에 문서의 삭제 기록을 확인해 주시기 바랍니다.",
-       "file-deleted-duplicate-notitle": "ì\9d´ í\8c\8cì\9d¼ê³¼ ê°\99ì\9d\80 í\8c\8cì\9d¼ì\9d´ ì\82­ì \9cë\90\9c ì\9d´ë ¥ì\9d´ ì\9e\88ì\8aµë\8b\88ë\8b¤. ì\97\85ë¡\9cë\93\9cí\95\98기ì\97\90 ì\95\9eì\84\9c, ì\82­ì \9cë\90\9c í\8c\8cì\9d¼ì\9d\98 ì\9d´ë ¥ì\9d\84 í\99\95ì\9d¸í\95  ì\88\98 ì\9e\88ë\8a\94 ê¶\8cí\95\9cì\9d\84 ê°\80ì§\84 ë\8b´ë\8b¹ì\9e\90ì\97\90ê²\8c ë¨¼ì \80 ë¬¸ì\9d\98í\95\98기 ë°\94ë\9e\8d니다.",
+       "file-deleted-duplicate-notitle": "ì\9d´ í\8c\8cì\9d¼ê³¼ ê°\99ì\9d\80 í\8c\8cì\9d¼ì\9d´ ì\9d´ì \84ì\97\90 ì\82­ì \9cë\90\9c ì \81ì\9d´ ì\9e\88ì\9c¼ë©°, ì \9c목ì\9d\80 ì\88¨ê²¨ì ¸ ì\9e\88ì\8aµë\8b\88ë\8b¤.\në\8b¤ì\8b\9c ì\98¬ë¦¬ê¸° ì \84ì\97\90 ì\83\81í\99\95ì\9d\80 ê²\80í\86 í\95\98기 ì\9c\84í\95´ ì\88¨ê²¨ì§\84 í\8c\8cì\9d¼ ë\8d°ì\9d´í\84°ë¥¼ ë³¼ ì\88\98 ì\9e\88ë\8a\94 ë\88\84êµ°ê°\80ì\97\90ê²\8c ë¬¼ì\96´ë´\90ì\95¼ í\95©니다.",
        "uploadwarning": "올리기 경고",
        "uploadwarning-text": "아래의 파일 설명을 수정하고 다시 시도해 주세요.",
        "savefile": "파일 저장",
        "delete-edit-reasonlist": "삭제 이유 편집",
        "delete-toobig": "이 문서에는 {{PLURAL:$1|편집 역사}}가 $1개 있습니다.\n편집 역사가 긴 문서를 삭제하면 {{SITENAME}}에 큰 혼란을 줄 수 있기 때문에 삭제할 수 없습니다.",
        "delete-warning-toobig": "이 문서에는 {{PLURAL:$1|편집 역사}}가 $1개 있습니다.\n편집 역사가 긴 문서를 삭제하면 {{SITENAME}} 데이터베이스 동작에 큰 영향을 줄 수 있습니다.\n주의해 주세요.",
-       "deleting-backlinks-warning": "'''경고:''' 삭제하려는 문서가 [[Special:WhatLinksHere/{{FULLPAGENAME}}|다른 문서에 연결]]되거나 삽입되어 있습니다.",
+       "deleting-backlinks-warning": "'''경고:''' 삭제하려는 문서가 [[Special:WhatLinksHere/{{FULLPAGENAME}}|다른 문서]]에 링크되어 있거나 끼워져 있습니다.",
        "rollback": "편집 되돌리기",
        "rollback_short": "되돌리기",
        "rollbacklink": "되돌리기",
        "duplicate-defaultsort": "'''경고:''' 기본 정렬 키 \"$2\"가 이전의 기본 정렬 키 \"$1\"를 덮어쓰고 있습니다.",
        "version": "버전",
        "version-extensions": "설치된 확장 기능",
+       "version-skins": "설치된 스킨",
        "version-specialpages": "특수 문서",
        "version-parserhooks": "파서 훅",
        "version-variables": "변수",
        "version-antispam": "스팸 막기",
-       "version-skins": "스킨",
        "version-other": "기타",
        "version-mediahandlers": "미디어 핸들러",
        "version-hooks": "훅",
        "version-parser-function-hooks": "파서 함수 훅",
        "version-hook-name": "훅 이름",
        "version-hook-subscribedby": "훅이 사용된 위치",
-       "version-version": "(버전 $1)",
+       "version-version": "($1)",
+       "version-no-ext-name": "[이름 없음]",
        "version-license": "미디어위키 라이선스",
        "version-ext-license": "라이선스",
        "version-ext-colheader-name": "확장 기능",
+       "version-skin-colheader-name": "스킨",
        "version-ext-colheader-version": "버전",
        "version-ext-colheader-license": "라이선스",
        "version-ext-colheader-description": "설명",
        "version-ext-colheader-credits": "저자",
        "version-license-title": "$1용 라이센스",
-       "version-license-not-found": "이 확장기능에 대한 라이선스 세부 정보가 없습니다.",
+       "version-license-not-found": "이 확장 기능에 대한 자세한 라이선스 정보가 없습니다.",
        "version-credits-title": "$1의 작성자",
-       "version-credits-not-found": "이 확장기능에 대한 크레딧 세부 정보가 없습니다.",
+       "version-credits-not-found": "이 확장 기능에 대한 자세한 제작진 정보가 없습니다.",
        "version-poweredby-credits": "이 위키는 '''[https://www.mediawiki.org/ MediaWiki]'''(미디어위키)를 기반으로 작동합니다. Copyright © 2001-$1 $2.",
        "version-poweredby-others": "그 외 다른 개발자",
        "version-poweredby-translators": "translatewiki.net 번역자",
index a3abd89..fdd1d4e 100644 (file)
        "searchrelated": "бейламлы",
        "searchall": "бютеу",
        "showingresults": "Тюбюрек №&nbsp;<strong>$2</strong> башлаб <strong>$1</strong> {{PLURAL:$1|1=эсеб|эсебле}} {{PLURAL:$1|1=кёргюзюлгенди|кёргюзюлгендиле}}.",
-       "showingresultsnum": "Тюбюрек №&nbsp;<strong>$2</strong> башлаб <strong>$3</strong> {{PLURAL:$3|1=эсеб|эсебле}} {{PLURAL:$3|1=кёргюзюлгенди|кёргюзюлгендиле}}.",
        "showingresultsheader": "'''$4''' ючюн {{PLURAL:$5|1='''$3''' эсебден '''$1'''|'''$1 — $2''' арасы '''$3''' эсеб}}",
        "search-nonefound": "Соруу бла келишген эсеб джокъду",
        "powersearch-legend": "Кенг излеу",
        "duplicate-defaultsort": "'''Эсгериу:''' Бар саналгъан \"$2\" сыныфлама ачхыч, аллындагъы \"$1\" сыныфлама ачхычны джараусуз этеди.",
        "version": "Версия",
        "version-extensions": "Салыннган кенгертиуле",
+       "version-skins": "Джасауну темалары",
        "version-specialpages": "Къуллукъ бетле",
        "version-parserhooks": "Синтаксис анализаторну тутуучула",
        "version-variables": "Тюрленнгенле",
        "version-antispam": "Антиспам",
-       "version-skins": "Джасауну темалары",
        "version-other": "Башха",
        "version-mediahandlers": "Медияны джарашдырыучула",
        "version-hooks": "Тутуучула",
index 9789d61..583b573 100644 (file)
        "pagecategories": "{{PLURAL:$1|Saachjrupp|Saachjruppe}}",
        "category_header": "Atikkele en dä Saachjrupp „$1“",
        "subcategories": "Ungerjruppe",
-       "category-media-header": "Dateie en de Saachjrupp \"$1\"",
+       "category-media-header": "Dateije en dä Saachjropp „$1“",
        "category-empty": "''En dä Saachjrupp heh sin kein Sigge un kein Dateie.''",
        "hidden-categories": "Verstoche Saachjrupp{{PLURAL:$1||e|e}}",
        "hidden-category-category": "Verstoche Saachjruppe",
        "searchall": "all",
        "showingresults": "Onge {{PLURAL:$1|weed <strong>eine</strong>|wääde bes <strong>$1</strong>|weed <strong>keine</strong>}} vun de jefonge Endrähsch jezeisch, vun de Nommer <strong>$2</strong> av.",
        "showingresultsinrange": "{{PLURAL:$1|<strong>Ein</strong> Saachjropp|<strong>$1</strong> Saachjroppe|Kein Saachjropp}}, vun Nommer <strong>$2</strong> bes Nommer <strong>$3</strong> {{PLURAL:$1|weed|wääde|weed}} heh opjeleß.",
-       "showingresultsnum": "Onge {{PLURAL:$3|es ein|sin <strong>$3</strong>|sin <strong>kein</strong>}} vun de jefonge Endrähsch opjeleß, vun de Nommer <strong>$2</strong> av.",
        "showingresultsheader": "Jefonge un aanjezeisch: {{PLURAL:$5|'''$1''' vun '''$3'''|'''$1''' beß '''$2''' vun '''$3'''|nix}} för '''$4'''",
        "search-nonefound": "Mer han nix zopaß jefonge för Ding Aanfrohch.",
        "powersearch-legend": "Extra Söhke",
        "duplicate-defaultsort": "'''Opjepaß:'''\nDä Shtanndat-Zoot-Schlößel „$1“ övverschriif dä älldere Zoot-Schlößel „$2“.",
        "version": "Väsjohn vun de Wiki Soffwär zeije",
        "version-extensions": "Installeete Erjänzunge un Zohsätz",
+       "version-skins": "Ovverflääsche",
        "version-specialpages": "{{int:nstab-special}}e",
        "version-parserhooks": "De Parser-Hooke",
        "version-variables": "Variable",
        "version-antispam": "SPAM verhendere",
-       "version-skins": "Ovverflääsche",
        "version-api": "<i lang=\"en\">API</i>",
        "version-other": "Söns",
        "version-mediahandlers": "Medije-Handler",
index 689a9ad..f4ecf82 100644 (file)
        "qbmyoptions": "Rûpelên min",
        "faq": "PGP",
        "faqpage": "Project:PGP",
-       "vector-action-addsection": "Mijarekê lê zêde bike",
-       "vector-action-delete": "Jê bibe",
-       "vector-action-move": "Nav biguherîne",
-       "vector-action-protect": "Biparêze",
-       "vector-action-undelete": "Jê nebe",
-       "vector-action-unprotect": "Parastinê rake",
-       "vector-view-create": "Çêke",
-       "vector-view-edit": "Biguherîne",
-       "vector-view-history": "Dîrokê bibîne",
-       "vector-view-view": "Bixwîne",
-       "vector-view-viewsource": "Çavkaniyan bibîne",
        "actions": "Çalakî",
        "namespaces": "Valahiya nav",
        "variants": "Variyant",
        "searchrelated": "pêwendîdar",
        "searchall": "hemû",
        "showingresults": "{{PLURAL:$1|Encamek|'''$1''' encam}}, bi #'''$2''' dest pê dike.",
-       "showingresultsnum": "{{PLURAL:$3|'''1'''|'''$3'''}} encam, bi #<b>$2</b> dest pê dike.",
        "showingresultsheader": "{{PLURAL:$5|Encam '''$1''' ên '''$3'''|Encam '''$1 - $2''' ên '''$3'''}} ji bo '''$4'''",
        "search-nonefound": "Ti rûpelên wek ya daxwazkirî nînin.",
        "powersearch-legend": "Lê bigere",
        "tooltip-compareselectedversions": "Cudatiyên guhertoyên hilbijartî yên vê rûpelê bibîne.",
        "tooltip-watch": "Vê rûpelê têke nav lîsteya te ya şopandinê",
        "tooltip-upload": "Barkirinê destpêke",
-       "monobook.css": "/* CSS placed here will affect users of the Monobook skin */",
        "common.js": "/* Any JavaScript here will be loaded for all users on every page load. */",
        "anonymous": "Bikarhênera/ê nediyarkirî ya/yê {{SITENAME}}",
        "siteuser": "Bikarhênera $1 ê {{SITENAME}}",
index bbaef68..5461859 100644 (file)
        "qbpageoptions": "An folen-ma",
        "qbmyoptions": "Ow folennow",
        "faq": "FAQ",
-       "vector-action-addsection": "Keworra testen",
-       "vector-action-delete": "Dilea",
-       "vector-action-move": "Gwaya",
-       "vector-action-protect": "Difres",
-       "vector-action-undelete": "Disdhilea",
-       "vector-action-unprotect": "Chanjya difresans",
-       "vector-view-create": "Gwruthyl",
-       "vector-view-edit": "Chanjya",
-       "vector-view-history": "Gweles an istori",
-       "vector-view-view": "Redya",
-       "vector-view-viewsource": "Gweles an bennfenten",
        "actions": "Gwriansow",
        "namespaces": "Spasys hanow",
        "variants": "Variennow",
        "searchmenu-exists": "''Yma folen henwys \"[[:$1]]\" war an wiki-ma'''",
        "searchmenu-new": "'''Gwruthyl an folen \"[[:$1]]\" war an wiki-ma!'''",
        "searchprofile-articles": "Folennow dalgh",
-       "searchprofile-project": "Folennow gweres ha ragdres",
        "searchprofile-images": "Liesmedia",
        "searchprofile-everything": "Puptra",
        "searchprofile-advanced": "Avonsys",
        "searchprofile-articles-tooltip": "Hwilas yn $1",
-       "searchprofile-project-tooltip": "Hwilas yn $1",
        "searchprofile-images-tooltip": "Hwilas restrennow",
        "searchprofile-everything-tooltip": "Hwilas pub le (yn folennow keskows ynwedh)",
        "searchprofile-advanced-tooltip": "Hwilas yn spasys hanow personelhes",
        "search-interwiki-default": "$1 sewyansow:",
        "search-interwiki-more": "(moy)",
        "search-relatedarticle": "Kelmys",
-       "searcheverything-enable": "Hwilas yn pub spas-hanow",
        "searchrelated": "kelmys",
        "searchall": "oll",
        "showingresultsheader": "{{PLURAL:$5|Sewyans '''$1''' a '''$3'''|Sewyansow '''$1 - $2''' a '''$3'''}} rag '''$4'''",
        "prefs-emailconfirm-label": "Afydhyans an ebost:",
        "youremail": "Ebost:",
        "username": "{{GENDER:$1|Hanow devnydhyer}}:",
-       "uid": "{{GENDER:$1|ID an devnydhyer}}:",
        "prefs-memberingroups": "{{GENDER:$2|Esel}} a'n {{PLURAL:$1|bagas|bagasow}}:",
        "prefs-registration": "Termyn kovskrifa:",
        "yourrealname": "Hanow gwir:",
        "log": "Kovnotennow",
        "logempty": "Nyns eus tra vyth owth omdhesedha y'n govnoten.",
        "allpages": "Keniver folen",
-       "alphaindexline": "$1 dhe $2",
        "prevpage": "Folen gyns ($1)",
        "allpagesfrom": "Diskwedhes folennow yn unn dhalleth orth:",
        "allpagesto": "Diskwedhes folennow yn unn dhiwedha orth:",
        "whatlinkshere-hideimages": "$1 kevrennow restren",
        "whatlinkshere-filters": "Sidhlow",
        "blockip": "Lettya devnydhyer",
-       "ipadressorusername": "Trigva IP po hanow-usyer:",
+       "ipaddressorusername": "Trigva IP po hanow-usyer:",
        "ipbreason": "Acheson:",
        "ipboptions": "2 our:2 hours,1 jydh:1 day,3 dydh:3 days,1 seythen:1 week,2 seythen:2 weeks,1 vis:1 month,3 mis:3 months,6 mis:6 months,1 vledhen:1 year,heb diwedh:infinite",
        "ipb-blocklist-contribs": "Kevrohow rag $1",
index d0a703d..a64f675 100644 (file)
        "january-date": "Январь (Үчтүн айы) $1",
        "february-date": "$1-феврал",
        "march-date": "$1-март",
+       "april-date": "Чын Куран $1",
+       "may-date": "Бугу $1",
+       "june-date": "Кулжа $1",
+       "july-date": "Теке $1",
+       "august-date": "Баш Оона $1",
+       "september-date": "Аяк Оона $1",
+       "october-date": "Тогуздун айы $1",
+       "november-date": "Жетинин айы $1",
+       "december-date": "Бештин айы $1",
        "pagecategories": "{{PLURAL:$1|Категория|Категориялар}}",
        "category_header": "\"$1\" категориясындагы барактар",
        "subcategories": "Ички категориялар",
        "newwindow": "(жаңы терезеде ачылат)",
        "cancel": "Жокко чыгаруу",
        "moredotdotdot": "Көбүрөөк...",
-       "morenotlisted": "Бөлөк эч нерсе жок...",
+       "morenotlisted": "Бул тизме толук эмес.",
        "mypage": "Барак",
        "mytalk": "Талкуу",
        "anontalk": "Бул IP-дарек үчүн талкуулоо",
        "qbmyoptions": "Барактарым",
        "faq": "КБС",
        "faqpage": "Project:КБС",
-       "vector-action-addsection": "Тема кошуу",
-       "vector-action-delete": "Өчүрүү",
-       "vector-action-move": "Аталышын өзгөртүү",
-       "vector-action-protect": "Коргоо",
-       "vector-action-undelete": "Калыбына келтирүү",
-       "vector-action-unprotect": "Коргоону өзгөртүү",
-       "vector-view-create": "Түзүү",
-       "vector-view-edit": "Оңдоо",
-       "vector-view-history": "Тарыхын кароо",
-       "vector-view-view": "Окуу",
-       "vector-view-viewsource": "Кайнарын кароо",
        "actions": "Аракеттер",
        "namespaces": "Аталыштар мейкиндиги",
        "variants": "Варианттар",
        "permalink": "Туруктуу шилтеме",
        "print": "Басып чыгаруу",
        "view": "Кароо",
+       "view-foreign": "Көрүлдү $1",
        "edit": "Оңдоо",
+       "edit-local": "Локалдык баяндоону оңдоо",
        "create": "Түзүү",
+       "create-local": "Локалдык баяндоо кошуу",
        "editthispage": "Бул баракты оңдоо",
        "create-this-page": "Бул баракты түзүү",
        "delete": "Өчүрүү",
        "jumptonavigation": "навигация",
        "jumptosearch": "издөө",
        "view-pool-error": "Кечириңиз, азыркы учурда серверлер ашыра жүктөлгөн болуп турат.\nӨтө көп колдонуучулар бул баракты көрүүгө аракет кылып жатышат.\nБул баракка бир аздан соң кайра кайрылып көрүңүз.\n\n$1",
+       "generic-pool-error": "Кечиресиз, азыркы убакытта серверлер ашыкча жүктөлүүдө.\nКөптөгөн колдонуучулар да, бул ресурсту көргөнгө аракет кылып атышат.\nСураныч күтө туруңуз, бир аздан кийин кайра бул ресурска кире аласыз.",
        "pool-timeout": "Бөгөттөөнүн күтүү убактысы аяктады",
        "pool-queuefull": "Суроо жыйнагыч толгон",
        "pool-errorunknown": "Белгисиз ката",
        "thisisdeleted": "$1 көрүү же калыбына келтирүү?",
        "viewdeleted": "Көрүү $1?",
        "restorelink": "{{PLURAL:$1|$1 өчүрүлгөн оңдоо}}",
+       "feedlinks": "Дубал:",
        "feed-unavailable": "Синдикация лентасы жеткиликтүү эмес",
        "site-rss-feed": "$1 RSS тилкеси",
        "site-atom-feed": "$1 Atom агымы",
        "nosuchspecialpage": "Мындай кызматтык барак жок",
        "error": "Ката",
        "databaseerror": "Маалымат базасынын катасы",
+       "databaseerror-query": "Талап: $1",
+       "databaseerror-function": "Функция: $1",
+       "databaseerror-error": "Ката: $1",
        "laggedslavemode": "'''Эскертүү:''' баракта акыркы жаңыртуулар жок болуп калышы мүмкүн.",
        "readonly": "Маалымат базасы бөгөттөлгөн",
        "enterlockreason": "Бөгөттөөнүн себебин жана мөөнөтүн көрсөтүңүз",
        "ns-specialprotected": "Кызматык барактарды оңдоого мүмкүн эмес.",
        "invalidtitle-unknownnamespace": "Туура эмес баш сөз",
        "exception-nologin": "Сиз системге кирген жоксуз",
-       "exception-nologin-text": "Ð\91Ñ\83л Ð±Ð°Ñ\80ак Ð¶Ðµ Ð°Ñ\80акеÑ\82 Ñ\81издин ÐºÐ¾Ð»Ð´Ð¾Ð½Ñ\83Ñ\83Ñ\87Ñ\83 Ð°Ñ\82Ñ\8bÒ£Ñ\8bз Ð¼ÐµÐ½ÐµÐ½ Ñ\81иÑ\81Ñ\82емге ÐºÐ¸Ñ\80иÑ\88иңизди Ñ\82алап ÐºÑ\8bлаÑ\82.",
+       "exception-nologin-text": "СÑ\83Ñ\80анÑ\8bÑ\87 Ð±Ñ\83л Ð±Ð°Ñ\80акка Ð¶Ðµ Ð°Ñ\80акеÑ\82Ñ\82и Ð°Ñ\82каÑ\80Ñ\83Ñ\83 Ò¯Ñ\87үн[[Special:Userlogin|киÑ\80Ñ\88иңиз]]кеÑ\80ек.",
        "virus-badscanner": "Ырастоо катасы. Белгисиз вирус сканери: ''$1''",
        "virus-scanfailed": "скандоо катасы (код $1)",
        "virus-unknownscanner": "белгисиз антивирус:",
        "gotaccountlink": "Кирүү",
        "userlogin-resetlink": "Кирүүчү маалыматарыңызды эсиңизден чыгардыңызбы?",
        "userlogin-resetpassword-link": "Сырсөздү алмаштыруу",
+       "userlogin-loggedin": "Сиз эчак эле {{GENDER:$1|$1}} деп киргенсиз.\nБашка колдонуучунун атынан кириш үчүн асытдагы форманы колдонуңуз.",
        "createacct-emailrequired": "Эмейл дарек",
        "createacct-emailoptional": "Эмейл дарек (милдеттүү эмес)",
        "createacct-email-ph": "Эмейл дарегиңизди киргизиңиз",
        "login-throttled": "Сиз системге кирүүгө өтө көп аракет кылдыңыз. Сураныч, аракетиңизди бир аз тыныгуудан соң улантыңыз.",
        "login-abort-generic": "Сиздин кирүүңүз ийгиликсиз болду - Үзүлдү",
        "loginlanguagelabel": "Тили: $1",
+       "suspicious-userlogout": "Сиздин чыгуу талабыңыз сиздин браузериңиздин туура эмес аткарылышынан же прокси кеширлөөсүнөн улам аткарылган жок.",
+       "pt-login": "Кирүү",
+       "pt-userlogout": "Чыгуу",
        "php-mail-error-unknown": "PHP'нин mail() функциясындагы белгисиз ката.",
        "changepassword": "Сырсөздү өзгөртүү",
        "resetpass_header": "Эсеп жазуунун сырсөзүн өзгөртүү",
        "resetpass-submit-loggedin": "Сырсөздү өзгөртүү",
        "resetpass-submit-cancel": "Жокко чыгаруу",
        "resetpass-temp-password": "Убактылуу сырсөз:",
+       "resetpass-expired": "Сиздин сырсөзүңүз эскирген. Сураныч жаңы сырсөзүңүз менен кириңиз.",
        "passwordreset": "Сырсөздү түшүрүү",
        "passwordreset-text-one": "Сырсөздү алмаштыруу үчүн бул үлгүнү толтуруңуз.",
        "passwordreset-legend": "Сырсөздү түшүрүү",
        "moveddeleted-notice": "Бул барак өчүрүлгөн.\nМаалымат үчүн төмөндө өчүрүүлөрдүн жана өзгөртүүлөрдүн тизмеси берилген.",
        "log-fulllog": "Журналды бүтүн бойдон көрүү",
        "edit-conflict": "Оңдоолор конфликти",
-       "postedit-confirmation": "Оңдооңуз сакталды",
+       "postedit-confirmation-saved": "Оңдооңуз сакталды",
        "edit-already-exists": "Жаңы барак түзүү мүмкүн эмес. Мындай барак бар",
        "defaultmessagetext": "Жарыяланбасча текст",
        "content-model-wikitext": "уики-текст",
        "searchmenu-exists": "'''Бул Уикиде \"[[:$1]]\" деп аталган барак бар.'''",
        "searchmenu-new": "'''Бул Уикиде \"[[:$1]]\" барагын түз!'''",
        "searchprofile-articles": "Негизги барактар",
-       "searchprofile-project": "Жардам жана Долбоор барактары",
        "searchprofile-images": "Мултимедиа",
        "searchprofile-everything": "Баары",
        "searchprofile-advanced": "Кеңейтилген",
        "searchprofile-articles-tooltip": "$1 -де издөө",
-       "searchprofile-project-tooltip": "$1 -де издөө",
        "searchprofile-images-tooltip": "Файлдарды издөө",
        "searchprofile-everything-tooltip": "Баардык барактардан (талкуу барактарды кошо) издөө",
        "searchprofile-advanced-tooltip": "Белгиленген аталыш мейкиндиктеринде издөө",
        "search-interwiki-default": "$1 жыйын.:",
        "search-interwiki-more": "(көбүрөөк)",
        "search-relatedarticle": "Байланыштуу",
-       "searcheverything-enable": "Бардык аталыш мейкиндиктеринен издөө",
        "searchrelated": "байланыштуу",
        "searchall": "баары",
        "showingresultsheader": "'''$4''' үчүн {{PLURAL:$5|'''$3''' жыйынтыктан '''$1'''-и|'''$1 - $2''' -дан '''$3''' жыйынтык}}",
        "prefs-emailconfirm-label": "Эл. почтаны аныктоо:",
        "youremail": "Электрондук дарек:",
        "username": "{{GENDER:$1|Колдонуучу аты}}:",
-       "uid": "{{GENDER:$1|Колдонуучунун}} коду:",
        "prefs-memberingroups": "{{GENDER:$2|Мүчөсү}} болгон {{PLURAL:$1|топ|топтор}}:",
        "prefs-registration": "Катталуу убактысы:",
        "yourrealname": "Өз ысымыңыз:",
        "yournick": "Жаңы кол тамгаңыз:",
        "badsig": "Туура эмес кол тамга.\nHTML-тегдеринин тууралыгын текшериңиз.",
        "yourgender": "Жыныс:",
+       "gender-unknown": "Айткым келген жок",
        "gender-male": "Эркек",
        "gender-female": "Аялзат",
        "email": "Электрондук дарек",
        "upload": "Файлды жүктөө",
        "uploadbtn": "Файлды жүктөө",
        "uploaderror": "Жүктөө катасы",
-       "uploadtext": "Cүрөт жүктөш үчүн астыдагы форманы колдонуңуз.\nМурда жүктөлгөн сүрөттөрдү издеп көрүш үчүн  [[Special:FileList|жүктөлгөн сүрөттөрдүн тизмеси]]не кириңиз, кайра жүктөлгөндөр да [[Special:Log/upload|жүктөлгөндөр тизмеси]] журналында жазылышат, өчүрүлгөндөр да [[Special:Log/delete|өчүрүлгөндөр тизмеси]] журналында сакталат.\n\nTo include a file in a page, use a link in one of the following forms:\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code>''' to use the full version of the file\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code>''' to use a 200 pixel wide rendition in a box in the left margin with 'alt text' as description\n* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>''' for directly linking to the file without displaying the file",
+       "uploadtext": "'''Cүрөт жүктөш үчүн астыдагы форманы колдонуңуз'''.\nМурда жүктөлгөн сүрөттөрдү издеп көрүш үчүн  [[Special:FileList|жүктөлгөн сүрөттөрдүн тизмеси]]не кириңиз, кайра жүктөлгөндөр да [[Special:Log/upload|жүктөлгөндөр тизмеси]] журналында жазылат, өчүрүлгөндөр да [[Special:Log/delete|өчүрүлгөндөр тизмеси]] журналында сакталат.\n\nФайлды макалага кошуу үчүн, астыдагы формалардын биринин шилтемесин колдонсоңуз болот:\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code>''' файлдын толук версиясын колдонуу үчүн\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code>''' туурасы 200 пикселдик кеңдиктеги үкөкчөдө сол талаада , \"алтетрнативдик текст\" менен чогуу жайгаштырганга \n* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>''' файлдын өзү көрсөтүлбөгөн, түз шилтеме",
        "upload-permitted": "Уруксат болгон файл типтери: $1.",
        "uploadlogpage": "Жүктөөлөр журналы",
        "filename": "Файл аталышы",
        "upload-maxfilesize": "Максималдуу файл өлчөмү: $1",
        "upload-description": "Файл баяндамасы",
        "upload-options": "Жүктөө варианты",
+       "watchthisupload": "Бул файлды көзөмөлгө алуу",
        "upload-success-subj": "Ийгиликтүү жүктөлдү",
        "upload-failure-subj": "Жүктөө көйгөйү",
        "upload-proto-error": "Туура эмес протокол",
        "http-invalid-url": "Туура эмес URL: $1",
        "license": "Лицензиялоо:",
        "license-header": "Лицензиялоо",
+       "nolicense": "Тандалган жок",
+       "upload_source_file": "сиздин компьютердеги файл өлчөмү",
        "imgfile": "файл",
        "listfiles": "Файлдар тизмеси",
        "listfiles_thumb": "Миниатюра",
        "speciallogtitlelabel": "Максаты (аталышы же колдонуучу):",
        "log": "Журналдар",
        "allpages": "Бардык барактар",
-       "alphaindexline": "$1 -дан $2 чейин",
        "nextpage": "Кийинки барак ($1)",
        "prevpage": "Мурунку барак ($1)",
        "allpagesfrom": "-дан башталган барактарды көрсөтүү:",
        "block": "Колдонуучуну бөгөттөө",
        "blockip": "Колдонуучуну бөгөттөө",
        "blockip-legend": "Колдонуучуну бөгөттөө",
-       "ipadressorusername": "IP-дарек же колдонуучунун аты:",
+       "ipaddressorusername": "IP-дарек же колдонуучунун аты:",
        "ipbreason": "Себеп:",
        "ipbsubmit": "Бул колдонуучуну бөгөттөө",
        "ipbother": "Башка убакыт:",
        "newimages": "Жаңы файлдардын галереясы",
        "newimages-legend": "Чыпка",
        "newimages-label": "Файл аты (же анын жартысы):",
-       "showhidebots": "($1 боттор)",
        "noimages": "Көрүүгө эчтеке жок.",
        "ilsubmit": "Издөө",
        "bydate": "дата боюнча",
        "duplicate-defaultsort": "'''Эскертүү:''' \"$2\" белгиленген ылгоочу ачкыч \"$1\" мурунку белгиленген ылгоочу ачкычты жокко чыгарат.",
        "version": "Версия",
        "version-extensions": "Орнотулган кеңейтүүлөр",
+       "version-skins": "Темалар",
        "version-specialpages": "Кызматтык барактар",
        "version-variables": "Өзгөрмөлөр",
-       "version-skins": "Темалар",
        "version-other": "Башка",
        "version-version": "(Версия $1)",
        "version-license": "Лицензия",
index fc34096..14f9fa3 100644 (file)
        "searchrelated": "relata",
        "searchall": "omnia",
        "showingresults": "Subter monstrans {{PLURAL:$1|'''1''' eventu|'''$1''' eventibus}} tenus incipiens ab #'''$2'''.",
-       "showingresultsnum": "Subter monstrans {{PLURAL:$3|'''1''' eventum|'''$3''' eventus}} incipiens ab #'''$2'''.",
        "search-nonefound": "Nullae paginae quaesitionem tuam adaequant.",
        "powersearch-legend": "Quaerere callidissime",
        "powersearch-ns": "Quaerere in spatiis nominalibus:",
index 10396bb..c1e5ee6 100644 (file)
        "qbmyoptions": "Mis hojas",
        "faq": "DDS",
        "faqpage": "Project:DDS",
-       "vector-action-addsection": "Ajustar sujeto",
-       "vector-action-delete": "Efassar",
-       "vector-action-move": "Taşirear",
-       "vector-action-protect": "Guadrar",
-       "vector-action-undelete": "Traer atrás",
-       "vector-action-unprotect": "Trocar proteksyon",
-       "vector-view-create": "Criar",
-       "vector-view-edit": "Trocar",
-       "vector-view-history": "Ver la istoria",
-       "vector-view-view": "Meldar",
-       "vector-view-viewsource": "Ver su manadero",
        "actions": "Aksiones",
        "namespaces": "Espacios de nombres",
        "variants": "Variantes",
        "searchmenu-exists": "Egziste una oja yamada \"[[:$1]]\" en esta viki",
        "searchmenu-new": "<strong>Criar la hoja «[[:$1]]» en este viki!</strong>{{PLURAL:$2|0=|También ver la hoja topada con tu búxquida.|También ver las resultas de tu búxquida.}}",
        "searchprofile-articles": "Hojas de contènido",
-       "searchprofile-project": "Hojas de ayudo y hojas de projeto",
        "searchprofile-images": "Multimedya",
        "searchprofile-everything": "Todo",
        "searchprofile-advanced": "Adelantado",
        "searchprofile-articles-tooltip": "Buxcar en $1",
-       "searchprofile-project-tooltip": "Buxcar en $1",
        "searchprofile-images-tooltip": "Buxcar dosyas",
        "searchprofile-everything-tooltip": "Buxca en todo el contènido (y mismo en las hojas de diskusyón)",
        "searchprofile-advanced-tooltip": "Buxcar en espacios de nombres partikolares",
        "booksources-go": "Ir",
        "log": "Rejistros",
        "allpages": "Todas las hojas",
-       "alphaindexline": "De $1 fina $2",
        "nextpage": "La sigiente pajina ($1)",
        "prevpage": "Hoja de antés ($1)",
        "allpagesfrom": "Mostrar hojas que empecen por:",
        "whatlinkshere-hideimages": "$1 atamientos a dosyas",
        "whatlinkshere-filters": "Filtres",
        "blockip": "Bloquear usuario",
-       "ipadressorusername": "Adreso de IP o nombre de usuario:",
+       "ipaddressorusername": "Adreso de IP o nombre de usuario:",
        "ipbreason": "Razon:",
        "ipboptions": "2 oras:2 hours,1 día:1 day,3 días:3 days,1 semana:1 week,2 semanas:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 año:1 year,parâ siempre:infinite",
        "badipaddress": "Adreso de IP invalido",
        "file-nohires": "No disponible a mayor resolución.",
        "svg-long-desc": "arxivo SVG, nominalmente $1 × $2 píkseles, boy del arxivo: $3",
        "show-big-image": "Dosya orijinal",
-       "showhidebots": "($1 bots)",
        "ilsubmit": "Bushkar",
        "bydate": "por data",
        "seconds": "{{PLURAL:$1|$1 segundo|$1 segundos}}",
index dac67fa..f261368 100644 (file)
        "searchrelated": "a Verbindng",
        "searchall": "all",
        "showingresults": "Hei gesitt der  {{PLURAL:$1| '''1''' Resultat|'''$1''' Resultater}}, ugefaange mat #'''$2'''.",
-       "showingresultsnum": "Hei gesitt der  {{PLURAL:$3|'''1''' Resultat|'''$3''' Resultater}}, ugefaange mat #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Resultat '''$1''' vu(n) '''$3'''|Resultater '''$1 - $2''' vu(n) '''$3'''}} fir '''$4'''",
        "search-nonefound": "Fir Är Ufro gouf näischt fonnt.",
        "powersearch-legend": "Erweidert Sich",
        "license-nopreview": "(Kucken ouni ofzespäichere geet net)",
        "upload_source_url": " (gëlteg, ëffentlech zougänglech URL)",
        "upload_source_file": " (e Fichier op Ärem Computer)",
+       "listfiles-delete": "läschen",
        "listfiles-summary": "Op dëser Spezialsäit stinn all déi eropgeluede Fichieren.",
        "listfiles_search_for": "Sicht nom Fichier:",
        "imgfile": "Fichier",
        "duplicate-defaultsort": "'''Opgepasst:''' Den Zortéierschlëssel \"$2\" iwwerschreift de virege Standard-Zortéierschlëssel \"$1\".",
        "version": "Versioun",
        "version-extensions": "Installéiert Erweiderungen",
+       "version-skins": "Installéiert Skins/Layout",
        "version-specialpages": "Spezialsäiten",
        "version-parserhooks": "Parser-Erweiderungen",
        "version-variables": "Variabelen",
        "version-antispam": "Spam-Preventioun",
-       "version-skins": "Skins/Layout",
        "version-other": "Aner",
        "version-mediahandlers": "Medien-Ënnerstëtzung",
        "version-hooks": "Klameren",
        "version-license": "MediaWiki-Lizenz",
        "version-ext-license": "Lizenz",
        "version-ext-colheader-name": "Erweiderung",
+       "version-skin-colheader-name": "Ausgesinn",
        "version-ext-colheader-version": "Versioun",
        "version-ext-colheader-license": "Lizenz",
        "version-ext-colheader-description": "Beschreiwung",
        "expand_templates_remove_nowiki": "<nowiki>-Taggen am Resultat suppriméieren",
        "expand_templates_generate_xml": "Weis d'Struktur vum XML",
        "expand_templates_generate_rawhtml": "HTML-Format weisen",
-       "expand_templates_preview": "Kucken ouni ofzespäicheren"
+       "expand_templates_preview": "Kucken ouni ofzespäicheren",
+       "pagelanguage": "Eraussiche vun der Sprooch vun der Säit",
+       "pagelang-name": "Säit",
+       "pagelang-language": "Sprooch",
+       "pagelang-use-default": "Standard-Sprooch benotzen",
+       "pagelang-select-lang": "Sprooch eraussichen",
+       "right-pagelang": "Sprooch vun der Säit änneren",
+       "action-pagelang": "d'Sprooch vun der Säit änneren",
+       "log-description-pagelang": "Dëst ass a Log mat den Ännerunge vun de Sprooche vun de Säiten."
 }
index a301c5a..3cbf19c 100644 (file)
        "qbmyoptions": "Зи ччинар",
        "faq": "Фад-фад гузвай жузунар (ФГЖ)",
        "faqpage": "Project:ФГС",
-       "vector-action-addsection": "Тема алава авун",
-       "vector-action-delete": "Алудун",
-       "vector-action-move": "ТӀвар эхцигун",
-       "vector-action-protect": "Хуьн",
-       "vector-action-undelete": "ТуькӀуьр хъувун",
-       "vector-action-unprotect": "Хуьн дегишарун",
-       "vector-view-create": "ТуькӀуьрун",
-       "vector-view-edit": "Дуьзарин",
-       "vector-view-history": "Тарихдиз килигун",
-       "vector-view-view": "КӀелун",
-       "vector-view-viewsource": "Чешме къалурун",
        "actions": "Крар",
        "namespaces": "ТӀварарин генгвилер",
        "variants": "Жуьреяр",
index a93b27d..f11f156 100644 (file)
        "log": "Lista de atas",
        "all-logs-page": "Tota catalogos",
        "allpages": "Tota pajes",
-       "alphaindexline": "$1 a $2",
        "nextpage": "Paje seguente ($1)",
        "prevpage": "Paje presedente ($1)",
        "allpagesfrom": "Mostra pajes comensante a:",
index f3911bf..25010fe 100644 (file)
        "qbmyoptions": "Empapula zange",
        "faq": "Ebitera okubuuzibwa",
        "faqpage": "Project:Ebitera okubuuzibwa ku",
-       "vector-action-addsection": "Tandikawo emboozi endala",
-       "vector-action-delete": "Gyawo olupapula luno",
-       "vector-action-move": "Simbuliza",
-       "vector-action-protect": "Ssiba",
-       "vector-action-undelete": "Zawo",
-       "vector-action-unprotect": "Kyusa ebikugizo",
-       "vector-view-create": "Lukolewo",
-       "vector-view-edit": "Kyusa",
-       "vector-view-history": "Ennanda ya fayiro eno",
-       "vector-view-view": "Soma",
-       "vector-view-viewsource": "Kebera obulambike obw'ennono obw'olupapula luno",
        "actions": "By'oyinza okukola",
        "namespaces": "Makuŋaanyizo",
        "errorpagetitle": "Kiremya",
        "editundo": "julula enkyukakyuka",
        "searchresults": "Noonyeza mu bizuulidwa",
        "searchresults-title": "Ebizuulidwa ku \"$1\"",
-       "toomanymatches": "Ebikwataganya by'onoonyezesazza biyitiridde obungi. Ky'onoonyezesa kikyusemu",
        "titlematches": "Empapula ezirina emitwe egyefaananyiriza guno",
        "textmatches": "Empapula eziriko ebigambo by'onoonyezesezza",
        "notextmatches": "Tewali mpapula ziriko bigambo bino",
        "searchmenu-exists": "'''Olupapula \"[[:$1]]\" gyeruli ku wiki eno.'''",
        "searchmenu-new": "'''Oba oyagala, olupapula \"[[:$1]]\" gwe osobola okulukolawo ku wiki eno.'''",
        "searchprofile-articles": "Empapula ez'ensonga",
-       "searchprofile-project": "Empapula eziriko obuyambi n'eza Kawefube",
        "searchprofile-images": "Mediya ey'ekintabuli - Bifaananyi, Vidiyo n'ebiWulirizibwa",
        "searchprofile-everything": "Wonna",
        "searchprofile-articles-tooltip": "Noonyeza mu $1",
-       "searchprofile-project-tooltip": "Noonyeza mu $1",
        "searchprofile-images-tooltip": "Noonya fayiro",
        "search-result-size": "$1 ({{PLURAL:$2|kigambo 1 | bigambo $2}})",
        "search-redirect": "(olupapula '$1' lukuggusiza wano)",
        "specialloguserlabel": "Memba:",
        "log": "Empapula ez'ebyafaayo eby'emirimu egitaligimu",
        "allpages": "Empapula zonna",
-       "alphaindexline": "okuva ku $1 kutuuka ku $2",
        "nextpage": "Dda ku luddirira luno ($1)",
        "prevpage": "Dda ku lukulembera luno ($1)",
        "allpagesfrom": "Laga empapula okuva ku:",
index 743e9cf..255d832 100644 (file)
        "qbmyoptions": "mien opties",
        "faq": "FAQ (väölgesjtèlde vraoge)",
        "faqpage": "Project:Väölgestjèlde vraoge",
-       "vector-action-addsection": "Voog köpke toe",
-       "vector-action-delete": "Ewegsjaffe",
-       "vector-action-move": "Verplaats",
-       "vector-action-protect": "Besjirm",
-       "vector-action-undelete": "Plaats trök",
-       "vector-action-unprotect": "Anger beveiliging",
-       "vector-view-create": "Maak aan",
-       "vector-view-edit": "Bewirk",
-       "vector-view-history": "Bekiek de gesjiedenis",
-       "vector-view-view": "Laes",
-       "vector-view-viewsource": "Bekiek bróntèks",
        "actions": "Hanjeling",
        "namespaces": "Naamruumdes",
        "variants": "Anger vorme",
        "diff-multi-manyusers": "($1 tösseligkende versies door mier es $2 gebroekers waere neet waergaeve)",
        "searchresults": "Zeukresultate",
        "searchresults-title": "Zeukresultate veur \"$1\"",
-       "toomanymatches": "d'r Wore te väöl resultate. Probeer estebleef  'n anger zeukopdrach.",
        "titlematches": "Overeinkoms mèt volgende titels",
        "textmatches": "Euvereinkoms mèt artikelinhoud",
        "notextmatches": "Geen artikel gevonden met opgegeven zoekterm",
        "searchmenu-exists": "* Pagina '''[[$1]]'''",
        "searchmenu-new": "'''De pagina \"[[:$1]]\" aanmake op deze wiki'''",
        "searchprofile-articles": "Inhaudelike pagina's",
-       "searchprofile-project": "Help- en projekpagina's",
        "searchprofile-images": "Bestenj",
        "searchprofile-everything": "Alles",
        "searchprofile-advanced": "Oetgebreid",
        "searchprofile-articles-tooltip": "Zeuke in $1",
-       "searchprofile-project-tooltip": "Zeuke in $1",
        "searchprofile-images-tooltip": "Zeuke naor besjtandje",
        "searchprofile-everything-tooltip": "Alle inhaud doorzeuke (inklusief euverlèkpagina's)",
        "searchprofile-advanced-tooltip": "Zeuke in aongegeve naamruumdes",
        "search-interwiki-default": "$1 resultate:",
        "search-interwiki-more": "(meer)",
        "search-relatedarticle": "Gerelateerd",
-       "searcheverything-enable": "Zeuke in alle naamruumdes",
        "searchrelated": "gerelateerd",
        "searchall": "alle",
        "showingresults": "Hieonger staon de <b>$1</b> {{PLURAL:$1|resultaat|resultaat}}, vanaaf #<b>$2</b>.",
-       "showingresultsnum": "Hieonger {{PLURAL:$3|steit '''1''' resultaat|staon '''$3''' resultate}} vanaaf #<b>$2</b>.",
        "showingresultsheader": "{{PLURAL:$5|Resultaat '''$1''' van '''$3'''|Resultate '''$1 - $2''' van '''$3'''}} veur '''$4'''",
        "search-nonefound": "D'r zien gein resultate veur diene zeukopdrach.",
        "powersearch-legend": "Oetgebreid zeuke",
        "allowemail": "E-mail van anger gebroekers toesjtaon",
        "prefs-searchoptions": "Zeukinstellinge",
        "prefs-namespaces": "Naamruimte",
-       "defaultns": "Zeuk anges in dees naomruumdes:",
        "default": "sjtandaard",
        "prefs-files": "Bestenj",
        "prefs-custom-css": "Persoonlijke CSS",
        "prefs-emailconfirm-label": "E-mailbevestiging:",
        "youremail": "Dien e-mailadres",
        "username": "Gebroekersnaam:",
-       "uid": "Gebroekersnómmer:",
        "prefs-memberingroups": "Lid van {{PLURAL:$1|gróp|gróppe}}:",
        "prefs-registration": "Registratiedatum:",
        "yourrealname": "Dienen echte naam*",
        "log-title-wildcard": "Zeuk pagina's die met deze naam beginne",
        "showhideselectedlogentries": "Tuin of verstaek geselecteerdje logbookregels",
        "allpages": "Alle pagina's",
-       "alphaindexline": "$1 nao $2",
        "nextpage": "Volgende pazjena ($1)",
        "prevpage": "Veurige pagina ($1)",
        "allpagesfrom": "Tuin pagina's vanaaf:",
        "pageinfo-watchers": "Aantal volgers",
        "pageinfo-edits": "Aantal bewèrkinge",
        "pageinfo-authors": "Aantal versjillende sjrievers",
-       "skinname-cologneblue": "Keuls blauw",
        "markaspatrolleddiff": "Markeer es gecontroleerd",
        "markaspatrolledtext": "Markeer deze pagina es gecontroleerd",
        "markedaspatrolled": "Gemarkeerd es gecontroleerd",
index 8c1d942..98789dd 100644 (file)
        "qbmyoptions": "E mæ paggine",
        "faq": "Domande frequenti",
        "faqpage": "Project:Domande frequente",
-       "vector-action-addsection": "Azónzi discusción",
-       "vector-action-delete": "Scancella",
-       "vector-action-move": "Mescia",
-       "vector-action-protect": "Protezi",
-       "vector-action-undelete": "Recuppera",
-       "vector-action-unprotect": "Cangia a proteçion",
-       "vector-view-create": "Crea",
-       "vector-view-edit": "Càngia",
-       "vector-view-history": "Fanni védde a Stöia",
-       "vector-view-view": "Lêzi",
-       "vector-view-viewsource": "Veddi a sorgénte",
        "actions": "Açioìn",
        "namespaces": "Namespaces",
        "variants": "Diferense",
        "searchmenu-exists": "'''Inte questa wiki gh'è za 'na pàgina co-o nómme \"[[:$1]]\"'''",
        "searchmenu-new": "Crea a pagina \"[[:$1]]\" insce questo scito",
        "searchprofile-articles": "Pàgina di contegnûi",
-       "searchprofile-project": "Pàgine de agiùtto e relative a-o progetto",
        "searchprofile-images": "Moltimedia",
        "searchprofile-everything": "Tùtto",
        "searchprofile-advanced": "Avansæ",
        "searchprofile-articles-tooltip": "Çerca in $1",
-       "searchprofile-project-tooltip": "Çerca in $1",
        "searchprofile-images-tooltip": "Çerca file",
        "searchprofile-everything-tooltip": "Çerca in ògni dove (anche inte pàgine de discusción)",
        "searchprofile-advanced-tooltip": "Çerca inti namespace personalizæ",
        "all-logs-page": "Tûtti i registri",
        "alllogstext": "Presentaçion unega de tutti i registri do scito {{SITENAME}}.\nTi te peu strinza a vista se ti te çerni un tipo de registro, un nomme de un utente o de pagina.",
        "allpages": "Tûtte e paggine",
-       "alphaindexline": "Da $1 a $2",
        "nextpage": "Proscima paggina ($1)",
        "prevpage": "Paggina preçedente ($1)",
        "allpagesfrom": "Fanni vedde e paggine comensando da:",
index cf3e7e2..4990cb2 100644 (file)
        "searchrelated": "ກ່ຽວຂ້ອງ",
        "searchall": "ທັງໜົດ",
        "showingresults": "ສະແດງທາງລຸ່ມ ຮອດ {{PLURAL:$1|'''1''' ຜົນ|'''$1''' ຜົນ}} ເລີ່ມຈາກ  #'''$2'''.",
-       "showingresultsnum": "ສະແດງທາງລຸ່ມ  {{PLURAL:$3|'''1''' ຜົນ|'''$3''' ຜົນ}} ເລີ່ມຈາກ #'''$2'''.",
        "preferences": "ການຕັ້ງຄ່າ",
        "mypreferences": "ຕັ້ງຄ່າ",
        "prefs-edits": "ຈຳນວນການດັດແກ້:",
        "servertime": "ເວລາເຊີເວີ",
        "guesstimezone": "ເອົາເວລາຈາກໂປຣແກຣມທ່ອງເວັບ",
        "allowemail": "ອະນຸຍາດ ໃຫ້ຜູ້ໃຊ້ອື່ນ ສົ່ງອີເມລຫາຂ້ອຍ",
-       "defaultns": "ຄົ້ນຫາ ໃນ ຂອບເຂດຊື່ ນີ້ ເວລາບໍ່ມີການລະບຸ:",
        "prefs-files": "ໄຟລ໌",
        "youremail": "ອີເມລ *:",
        "username": "ຊື່ຜູ້ໃຊ້:",
-       "uid": "ເລກປະຈຳໂຕຜູ້ໃຊ້:",
        "yourrealname": "ຊື່ແທ້ *:",
        "yourlanguage": "ພາສາ:",
        "yournick": "ຊື່ຫຼິ້ນ:",
        "all-logs-page": "ທຸກໆຂໍ້ມູນບັນທຶກການນຳໃຊ້",
        "logempty": "ຍັງບໍ່ພົບເນື້ອໃນບັນທຶກ.",
        "allpages": "ທຸກໆໜ້າ",
-       "alphaindexline": "$1 ຫາ $2",
        "nextpage": "ໜ້າຕໍ່ໄປ ($1)",
        "prevpage": "ໜ້າກ່ອນ ($1)",
        "allpagesfrom": "ສະແດງທຸກໆໜ້າ ເລີ່ມແຕ່:",
index 8e097c9..fdeafee 100644 (file)
        "viewprevnext": "Kamukile ($1 {{int:pipe-separator}} $2) ($3)",
        "searchall": "xete",
        "showingresults": "Kamukile opi {{PLURAL:$1|'''1''' ekali|'''$1''' ekalina}} di #'''$2'''.",
-       "showingresultsnum": "Kamukile {{PLURAL:$3|'''1''' ekali|'''$3''' ekalina}} di #'''$2'''.",
        "preferences": "Petohoni di sebelu",
        "mypreferences": "Zwa petohoni di sebelu",
        "prefs-edits": "Hloli ye ng'inabi:",
        "prefs-files": "Imegini",
        "youremail": "Imeli:",
        "username": "Sebelu:",
-       "uid": "Sebelu ID:",
        "yourrealname": "Sebu monida:",
        "yourlanguage": "Siselect:",
        "yourvariant": "Pane:",
        "log": "Desuni",
        "all-logs-page": "Xete desu",
        "allpages": "Mukoloko di petulo",
-       "alphaindexline": "$1 di $2",
        "nextpage": "Lila petulo ($1)",
        "prevpage": "Kona petulo ($1)",
        "allpagesfrom": "Kamukile petulo di:",
        "whatlinkshere-next": "{{PLURAL:$1|lila|lila $1}}",
        "whatlinkshere-links": "← ling'ki",
        "blockip": "Bolok sebelu",
-       "ipadressorusername": "IP/sebelu:",
+       "ipaddressorusername": "IP/sebelu:",
        "ipboptions": "2 ora:2 hours,1 dia:1 day,3 dia:3 days,1 wiki:1 week,2 wiki:2 weeks,1 muna:1 month,3 muna:3 months,6 muna:6 months,1 anu:1 year,di simuluzi:infinite",
        "badipaddress": "IP ni sa",
        "ipblocklist": "Mukoloko di IP e sebelu bye sa bolok",
index 8d9bae3..ed606d2 100644 (file)
        "qbmyoptions": "Mano puslapiai",
        "faq": "DUK",
        "faqpage": "Project:DUK",
-       "vector-action-addsection": "Pridėti temą",
-       "vector-action-delete": "Ištrinti",
-       "vector-action-move": "Pervardyti",
-       "vector-action-protect": "Užrakinti",
-       "vector-action-undelete": "Atkurti",
-       "vector-action-unprotect": "Keisti apsaugą",
-       "vector-view-create": "Kurti",
-       "vector-view-edit": "Redaguoti",
-       "vector-view-history": "Istorija",
-       "vector-view-view": "Skaityti",
-       "vector-view-viewsource": "Žiūrėti kodą",
        "actions": "Veiksmai",
        "namespaces": "Vardų sritys",
        "variants": "Variantai",
        "diff-multi-manyusers": "(daugiau nei $2 {{PLURAL:$2|naudotojo|naudotojų|naudotojų}} $1 {{PLURAL:$1|tarpinis keitimas nėra rodomas|tarpiniai keitimai nėra rodomi|tarpinių keitimų nėra rodoma}})",
        "searchresults": "Paieškos rezultatai",
        "searchresults-title": "Paieškos rezultatai „$1“",
-       "toomanymatches": "Perdaug atitikmenų buvo grąžinta. Prašome pabandyti kitokią užklausą",
        "titlematches": "Puslapių pavadinimų atitikmenys",
        "textmatches": "Puslapio turinio atitikmenys",
        "notextmatches": "Jokių puslapių teksto atitikmenų",
        "searchmenu-exists": "'''Puslapis pavadinimu „[[$1]]“ šioje wiki'''",
        "searchmenu-new": "<strong>Sukurti puslapį „[[:$1]]“ šioje wiki!</strong> {{PLURAL:$2|0=|Taip pat peržiūrėkite šį rastą puslapį.|Taip pat peržiūrėkite šiuos paieškos rezultatus.}}",
        "searchprofile-articles": "Turinio puslapiai",
-       "searchprofile-project": "Pagalbos ir projekto puslapiai",
        "searchprofile-images": "Daugialypės terpės failai",
        "searchprofile-everything": "Viskas",
        "searchprofile-advanced": "Išplėstinė",
        "searchprofile-articles-tooltip": "Ieškoti čia: $1",
-       "searchprofile-project-tooltip": "Ieškoti čia: $1",
        "searchprofile-images-tooltip": "Ieškoti failų",
        "searchprofile-everything-tooltip": "Ieškoti viso turinio (tame tarpe aptarimų puslapių)",
        "searchprofile-advanced-tooltip": "Ieškoti skirtingose vardų srityse",
        "search-interwiki-default": "Rezultatai iš $1:",
        "search-interwiki-more": "(daugiau)",
        "search-relatedarticle": "Susiję",
-       "searcheverything-enable": "Ieškoti visose vardų srityse",
        "searchrelated": "susiję",
        "searchall": "visi",
        "showingresults": "Žemiau rodoma iki '''$1''' {{PLURAL:$1|rezultato|rezultatų|rezultatų}} pradedant #'''$2'''.",
-       "showingresultsnum": "Žemiau rodoma '''$3''' {{PLURAL:$3|rezultato|rezultatų|rezultatų}}rezultatų pradedant #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Rezultatas '''$1''' iš '''$3'''|Rezultatai '''$1 - $2''' iš '''$3'''}} pagal užklausą '''$4'''",
        "search-nonefound": "Nėra rezultatų, atitinkančių užklausą.",
        "powersearch-legend": "Išplėstinė paieška",
        "allowemail": "Leisti siųsti el. laiškus iš kitų naudotojų",
        "prefs-searchoptions": "Paieška",
        "prefs-namespaces": "Vardų sritys",
-       "defaultns": "Pagal nutylėjimą ieškoti šiose vardų srityse:",
        "default": "pagal nutylėjimą",
        "prefs-files": "Failai",
        "prefs-custom-css": "Asmeninis CSS",
        "prefs-emailconfirm-label": "El. pašto patvirtinimas:",
        "youremail": "El. paštas:",
        "username": "{{GENDER:$1Naudotojo vardas}}:",
-       "uid": "{{GENDER:$1|Naudotojo}} ID:",
        "prefs-memberingroups": "{{PLURAL:$1|Grupės|Grupių}} narys:",
        "prefs-registration": "Registravimosi laikas:",
        "yourrealname": "Tikrasis vardas:",
        "log-title-wildcard": "Ieškoti pavadinimų, prasidedančių šiuo tekstu",
        "showhideselectedlogentries": "Rodyti/slėpti pasirinktus sąrašo elementus",
        "allpages": "Visi puslapiai",
-       "alphaindexline": "Nuo $1 iki $2",
        "nextpage": "Kitas puslapis ($1)",
        "prevpage": "Ankstesnis puslapis ($1)",
        "allpagesfrom": "Rodyti puslapius pradedant nuo:",
        "tooltip-preferences-save": "Išsaugoti nustatymus",
        "tooltip-summary": "Įvesti trumpą santrauką",
        "common.css": "/** Čia įdėtas CSS bus taikomas visoms išvaizdoms */",
-       "monobook.css": "/* Čia įdėtas CSS bus rodomas Monobook išvaizdos naudotojams */",
        "common.js": "/* Bet koks čia parašytas JavaScript bus rodomas kiekviename puslapyje kievienam naudotojui. */",
-       "monobook.js": "/* Šis JavaScript bus įkeltas tik „MonoBook“ išvaizdos naudotojams. */",
        "anonymous": "{{SITENAME}} {{PLURAL:$1|anoniminis naudotojas|anoniminiai naudotojai}}",
        "siteuser": "{{SITENAME}} {{GENDER:$2|naudotojas|naudotoja}} $1",
        "anonuser": "{{SITENAME}} anoniminis naudotojas $1",
        "pageinfo-category-pages": "Puslapių skaičius",
        "pageinfo-category-subcats": "Dukterinių kategorijų skaičius",
        "pageinfo-category-files": "Failų skaičius",
-       "skinname-cologneblue": "Kelno mėlyna",
-       "skinname-monobook": "MonoBook",
-       "skinname-modern": "Moderni",
-       "skinname-vector": "Vektorinė",
        "markaspatrolleddiff": "Žymėti, kad patikrinta",
        "markaspatrolledtext": "Pažymėti, kad puslapis patikrintas",
        "markedaspatrolled": "Pažymėtas kaip patikrintas",
index e81281e..151cac7 100644 (file)
        "qbmyoptions": "Munys puslopys",
        "faq": "BUV",
        "faqpage": "Project:BUV",
-       "vector-action-addsection": "Dalikt padaļu",
-       "vector-action-delete": "Iztreit",
-       "vector-action-move": "Puorceļt",
-       "vector-action-protect": "Apsorguot",
-       "vector-action-unprotect": "Puormeit apsardzeibu",
-       "vector-view-edit": "Pataiseit",
-       "vector-view-history": "Viesture",
-       "vector-view-view": "Vērtīs",
        "actions": "Darbeibys",
        "namespaces": "Vuordu pluoti",
        "variants": "Varianti",
        "prefs-files": "Faili",
        "youremail": "Tovs e-posta adress:",
        "username": "Slāgvuords:",
-       "uid": "Lītuotuoja ID:",
        "yourrealname": "Jiusu eistyns vuords:",
        "yourlanguage": "Volūda:",
        "yourgender": "Kuorta:",
        "booksources-go": "Meklēt",
        "log": "Registri",
        "allpages": "Vysys puslopys",
-       "alphaindexline": "nu $1 da $2",
        "prevpage": "Īprīškejuo lopa ($1)",
        "allpagesfrom": "Paruodeit puslopys, kurys aizsuokys ar:",
        "allpagesto": "Paruodeit lopys da:",
index 4c75d41..a133150 100644 (file)
        "qbmyoptions": "Ka phêkte",
        "faq": "Zawhzin",
        "faqpage": "Project: Zawhzin",
-       "vector-action-addsection": "Thupui belhna",
-       "vector-action-delete": "Paihna",
-       "vector-action-move": "Sawnna",
-       "vector-action-protect": "Venhimna",
-       "vector-action-undelete": "Lak kir lehna",
-       "vector-action-unprotect": "Venhimna dinhmun tidanglam rawh",
-       "vector-view-create": "Siamna",
-       "vector-view-edit": "Siamţhatna",
-       "vector-view-history": "Hunhlui-chanchin",
-       "vector-view-view": "Chhiarna",
-       "vector-view-viewsource": "A hnar enna",
        "actions": "Thiltih",
        "namespaces": "Hminghmun",
        "variants": "Zedang",
        "searchmenu-exists": "'''He wiki-ah hian \"[[:$1]]\" tia koh phêk a awm.'''",
        "searchmenu-new": "'''[[:$1]] phek hi he wiki-ah hian siam rawh le!'''",
        "searchprofile-articles": "A chhunga thu awm",
-       "searchprofile-project": "Ţanpuina leh hna-hmachhawp phekte",
        "searchprofile-images": "Maltimedia",
        "searchprofile-everything": "A vai",
        "searchprofile-advanced": "Ràiril",
        "searchprofile-articles-tooltip": "$1-ah zawng rawh",
-       "searchprofile-project-tooltip": "$1-ah zawng rawh",
        "searchprofile-images-tooltip": "Taksa-ho zawnna",
        "searchprofile-everything-tooltip": "A chhung zawng chhuak vek rawh (sawihona tiamin)",
        "searchprofile-advanced-tooltip": "Hminghmun thlansa-ah zawng rawh",
        "search-interwiki-default": "Chhuak $1:",
        "search-interwiki-more": "(tam)",
        "search-relatedarticle": "Laichin",
-       "searcheverything-enable": "Hminghmun zawng zawngah zawng rawh",
        "searchrelated": "laichin",
        "searchall": "a vaiin",
        "showingresultsheader": "'''$4'''  tana {{PLURAL:$5|chhuak   '''$3'''  zinga  '''$1'''|chhuak  '''$3'''  zinga   '''$1 - $2'''  }}",
        "allowemail": "Hmangtu dang e-lehkhathawn phal rawh",
        "prefs-searchoptions": "Zawn duhthlanna",
        "prefs-namespaces": "Hminghmun",
-       "defaultns": "A nih loh vëk leh hêng hminghmunahte hian zawng rawh:",
        "default": "thlansa",
        "prefs-files": "Taksa",
        "prefs-custom-css": "CSS hman",
        "prefs-emailconfirm-label": "E-chenhmun tihchianna:",
        "youremail": "E-chenhmun:",
        "username": "Hmangtu hming:",
-       "uid": "Hmangtu ID",
        "prefs-memberingroups": "{{PLURAL:$1|pawl|pawlte}}-a tel.",
        "prefs-registration": "Inziahluh hun:",
        "yourrealname": "Hming tak:",
        "all-logs-page": "Chanchin-ziak vàntlang thilte:",
        "log-title-wildcard": "Hë thüa inṭan hmingte hi zawng rawh",
        "allpages": "Phek zawng zawngte",
-       "alphaindexline": "$1 aṭanga $2",
        "nextpage": "Phek dawt ($1)",
        "prevpage": "Phêk hmasa ($1)",
        "allpagesfrom": "Hemi aṭanga inṭan hian pholang rawh:",
        "whatlinkshere-filters": "Thlitfimna",
        "blockip": "Hmangtu dangbet rawh",
        "blockip-legend": "Hmangtu dangbet rawh",
-       "ipadressorusername": "Chenhmun-IP emaw hmangtuhming:",
+       "ipaddressorusername": "Chenhmun-IP emaw hmangtuhming:",
        "ipbexpiry": "Tawphun:",
        "ipbreason": "Chhan:",
        "ipbsubmit": "Hmangtu dangbet rawh",
index fb25cc8..70c362e 100644 (file)
        "toc": "Satura rādītājs",
        "showtoc": "parādīt",
        "hidetoc": "paslēpt",
-       "collapsible-collapse": "Sakļaut",
-       "collapsible-expand": "Izplest",
+       "collapsible-collapse": "paslēpt",
+       "collapsible-expand": "rādīt",
        "thisisdeleted": "Apskatīt vai atjaunot $1?",
        "viewdeleted": "Skatīt $1?",
        "restorelink": "$1 {{PLURAL:$1|dzēsto versiju|dzēstās versijas}}",
        "searchrelated": "saistītais",
        "searchall": "viss",
        "showingresults": "Šobrīd ir {{PLURAL:$1|redzama|redzamas}} '''$1''' {{PLURAL:$1|lapa|lapas}}, sākot ar #'''$2'''.",
-       "showingresultsnum": "Šobrīd ir {{PLURAL:$3|redzama|redzamas}} '''$3''' {{PLURAL:$3|lapa|lapas}}, sākot ar #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Šobrīd ir redzama '''$1''' lapa no '''$3'''|Šobrīd ir redzamas '''$1 — $2''' lapas no '''$3'''}}, kas satur '''$4'''",
        "search-nonefound": "Nav atrasti pieprasījumam atbilstoši rezultāti.",
        "powersearch-legend": "Izvērstā meklēšana",
        "duplicate-defaultsort": "'''Brīdinājums:''' Noklusējuma kārtošanas atslēga \"$2\" ignorē kārtošanas atslēga \"$1\".",
        "version": "Versija",
        "version-extensions": "Ieinstalētie paplašinājumi",
+       "version-skins": "Apdares",
        "version-specialpages": "Īpašās lapas",
        "version-variables": "Mainīgie",
        "version-antispam": "Spama aizsardzība",
-       "version-skins": "Apdares",
        "version-other": "Cita",
        "version-hooks": "Aizķeres",
        "version-hook-name": "Aizķeres nosaukums",
index cab767d..967370c 100644 (file)
        "qbmyoptions": "吾好",
        "faq": "頻答問",
        "faqpage": "Project:頻答問",
-       "vector-action-addsection": "入題",
-       "vector-action-delete": "刪",
-       "vector-action-move": "遷",
-       "vector-action-protect": "緘",
-       "vector-action-undelete": "覽刪",
-       "vector-action-unprotect": "啟",
-       "vector-view-create": "立",
-       "vector-view-edit": "纂",
-       "vector-view-history": "覽史",
-       "vector-view-view": "閱",
-       "vector-view-viewsource": "覽源",
        "actions": "動",
        "namespaces": "名集",
        "variants": "變字",
        "diff-multi-manyusers": "($2多作未示之審有$1)",
        "searchresults": "得尋",
        "searchresults-title": "\"$1\"得尋",
-       "toomanymatches": "多配應之,試異詢也",
        "titlematches": "合題",
        "textmatches": "合文",
        "notextmatches": "無文合",
        "searchmenu-exists": "'''在此wiki中有頁為\"[[:$1]]\"。'''",
        "searchmenu-new": "'''在此wiki上建頁\"[[:$1]]\"!'''",
        "searchprofile-articles": "容",
-       "searchprofile-project": "助題",
        "searchprofile-images": "媒",
        "searchprofile-everything": "全",
        "searchprofile-advanced": "進",
        "searchprofile-articles-tooltip": "在$1中尋",
-       "searchprofile-project-tooltip": "在$1中尋",
        "searchprofile-images-tooltip": "尋檔",
        "searchprofile-everything-tooltip": "尋全(含議)",
        "searchprofile-advanced-tooltip": "自定名集中尋",
        "search-interwiki-default": "結果有$1:",
        "search-interwiki-more": "(多)",
        "search-relatedarticle": "關",
-       "searcheverything-enable": "尋全名集",
        "searchrelated": "關",
        "searchall": "全",
        "showingresults": "見'''$1'''尋,自'''$2'''始:",
-       "showingresultsnum": "見'''$3'''尋,自'''$2'''始:",
        "showingresultsheader": "見'''$4''',{{PLURAL:$5|'''$1''''''$3'''之尋|'''$1 - $2''',共'''$3'''之尋}}",
        "search-nonefound": "詢中無結。",
        "powersearch-legend": "尋",
        "allowemail": "允遺書",
        "prefs-searchoptions": "尋項",
        "prefs-namespaces": "名集",
-       "defaultns": "則尋之名集:",
        "default": "予定",
        "prefs-files": "檔",
        "prefs-custom-css": "定之CSS",
        "prefs-emailconfirm-label": "確郵:",
        "youremail": "郵:",
        "username": "簿名:",
-       "uid": "編號︰",
        "prefs-memberingroups": "{{PLURAL:$1|一|權任}}:",
        "prefs-registration": "注簿時辰:",
        "yourrealname": "本名:",
        "logempty": "無合誌也。",
        "log-title-wildcard": "題以此始者,取之",
        "allpages": "全典",
-       "alphaindexline": "自$1至$2",
        "nextpage": "次頁($1)",
        "prevpage": "先頁($1)",
        "allpagesfrom": "始頁:",
        "tooltip-preferences-save": "存註",
        "tooltip-summary": "輸一短摘",
        "common.css": "/* 此之 CSS 用於全面也 */",
-       "cologneblue.css": "/* 此之 CSS 用於馨藍面之簿也 */",
-       "monobook.css": "/* 此之 CSS 用於單書面之簿也 */",
-       "modern.css": "/* 此之 CSS 用於時髦面之簿也 */",
-       "vector.css": "/* 此之 CSS 用於動力面之簿也 */",
        "print.css": "/* 此之 CSS 用於印之出力也 */",
        "common.js": "/* 此之JavaScript將載於全簿之頁。 */",
-       "cologneblue.js": "/* 此之JavaScript將載於用馨藍面之簿 */",
-       "monobook.js": "/* 此之JavaScript將載於用單書面之簿 */",
-       "modern.js": "/* 此之JavaScript將載於用時髦面之簿 */",
-       "vector.js": "/* 此之JavaScript將載於用動力面之簿 */",
        "anonymous": "{{SITENAME}}無{{PLURAL:$1|簿|簿}}者",
        "siteuser": "{{SITENAME}}有簿者$1",
        "anonuser": "{{SITENAME}}有匿簿者$1",
        "spam_reverting": "還新審之無鏈$1者。",
        "spam_blanking": "審皆鏈$1,遂令白頁。",
        "pageinfo-toolboxlink": "文訊",
-       "skinname-cologneblue": "馨藍",
-       "skinname-monobook": "單書",
-       "skinname-modern": "時髦",
-       "skinname-vector": "動力",
        "markaspatrolleddiff": "派哨",
        "markaspatrolledtext": "哨此報",
        "markedaspatrolled": "派哨",
index 2baf3b1..d71bd77 100644 (file)
        "qbmyoptions": "हमर पन्ना सभ",
        "faq": "त्वरित प्रश्नोत्तरी",
        "faqpage": "Project: त्वरित प्रश्नोत्तरी",
-       "vector-action-addsection": "विचार-बिन्दु जोड़ू",
-       "vector-action-delete": "मेटाउ",
-       "vector-action-move": "घसकाउ",
-       "vector-action-protect": "रक्षण करू",
-       "vector-action-undelete": "आपस लाउ",
-       "vector-action-unprotect": "सुरक्षा बदलू",
-       "vector-view-create": "बनाउ",
-       "vector-view-edit": "सम्पादन करू",
-       "vector-view-history": "इतिहास देखू",
-       "vector-view-view": "पढ़ू",
-       "vector-view-viewsource": "जड़ि देखू",
        "actions": "क्रिया सभ",
        "namespaces": "चेन्हासी समूह सभ",
        "variants": "प्रकार सभ",
        "diff-multi-manyusers": "({{PLURAL:$1|एकटा मध्यस्थ संशोधन|$1 मध्यस्थ संशोधन सभ}} $2 सँ बेसी {{PLURAL:$2|प्रयोक्ता|प्रयोक्ता सभ}} नै देखाएल)",
        "searchresults": "तकबाक फलाफल",
        "searchresults-title": "तकबाक फलाफल \"$1\" लेल",
-       "toomanymatches": "कतेको प्रयास आपस भेल, कृपा कऽ दोसर अभ्यर्थनासँ प्रयास करू।",
        "titlematches": "पन्ना शीर्ष मेल",
        "textmatches": "पन्ना पाठ मेल",
        "notextmatches": "पन्नाक पाठक किछु मेल नै खाइए",
        "searchmenu-exists": "'''ऐ विकीपर एकटा पन्ना अछि \"[[:$1]]\" नामसँ।'''",
        "searchmenu-new": "''' पन्ना निर्माण \"[[:$1]]\" ऐ विकीपर !'''",
        "searchprofile-articles": "अनुक्रम पन्ना सभ",
-       "searchprofile-project": "सहायता आ परियोजना पन्ना सभ",
        "searchprofile-images": "दृश्य-श्रव्य",
        "searchprofile-everything": "सभटा",
        "searchprofile-advanced": "विशिष्ट",
        "searchprofile-articles-tooltip": "$1 मे ताकू",
-       "searchprofile-project-tooltip": "$1 मे ताकू",
        "searchprofile-images-tooltip": "संचिका सभ लेल ताकू",
        "searchprofile-everything-tooltip": "सभटा सामिग्रीमे ताकू (चर्चा पन्ना सहित)",
        "searchprofile-advanced-tooltip": "बनाएल नामस्थान सभमे ताकू",
        "search-interwiki-default": "$1 सभटा परिणाम:",
        "search-interwiki-more": "(आर)",
        "search-relatedarticle": "सम्बन्धी",
-       "searcheverything-enable": "सभ नामस्थान सभमे ताकू",
        "searchrelated": "सम्बन्धी",
        "searchall": "सभटा",
        "showingresults": "नीचाँ एतऽ धरि {{PLURAL:$1|'''1''' परिणाम|'''$1''' परिणाम सभ}}  #'''$2''' सँ प्रारम्भ भऽ कऽ।",
-       "showingresultsnum": "नीचाँ देखबै छी {{PLURAL:$3|'''1''' परिणाम|'''$3''' परिणाम सभ}}  #'''$2'''सँ प्रारम्भ भऽ कऽ।",
        "showingresultsheader": "{{PLURAL:$5|परिणाम '''$1''' एकर '''$3'''|परिणाम सभ '''$1 - $2''' एकर '''$3'''}} ऐ लेल '''$4'''",
        "search-nonefound": "अभ्यर्थनासँ मेल खाइत कोनो परिणाम नै भेटल।",
        "powersearch-legend": "विशेष खोज",
        "allowemail": "आन प्रयोक्ताक ई-पत्र समर्थ करू",
        "prefs-searchoptions": "खोज विकल्प",
        "prefs-namespaces": "नामस्थान सभ",
-       "defaultns": "नै तँ ऐ नामस्थान सभमे ताकू:",
        "default": "पूर्वनिर्धारित",
        "prefs-files": "संचिका सभ",
        "prefs-custom-css": "खास सी.एस.एस.",
        "prefs-emailconfirm-label": "ई-पत्र पुष्टि:",
        "youremail": "ई-पत्र:",
        "username": "प्रयोक्तानाम:",
-       "uid": "प्रयोक्ताक पहिचान:",
        "prefs-memberingroups": "{{PLURAL:$1|संवर्ग|संवर्ग सभ}}:एकर सदस्य",
        "prefs-memberingroups-type": "$1",
        "prefs-registration": "पंजीकरणक समए:",
        "logempty": "वृत्तलेखमे कोनो मेल खाइबला बौस्तु नै।",
        "log-title-wildcard": "खोज शीर्षक सभ ऐ पाठसँ प्रारम्भ",
        "allpages": "सभ पन्ना",
-       "alphaindexline": "$1 to $2",
        "nextpage": "अगिला पन्ना ($1)",
        "prevpage": "पहिलुका पन्ना ($1)",
        "allpagesfrom": "पन्ना प्रदर्शन प्रारम्भ भेल:",
        "pageinfo-watchers": "जानकारक संख्या",
        "pageinfo-edits": "सम्पादनक संख्या",
        "pageinfo-authors": "भिन्न लेखक संख्या",
-       "skinname-modern": "आधुनिक",
-       "skinname-vector": "सदिश",
        "markaspatrolleddiff": "देखि लेल गेल, एहन चिन्ह लगाऊ",
        "markaspatrolledtext": "देखि लेल गेल, एहन चिन्ह लगाऊ",
        "markedaspatrolled": "देखि लेल गेल, एहन चिन्ह लगाऊ",
index c323d43..a652ff8 100644 (file)
        "qbmyoptions": "Kaca-ne inyong",
        "faq": "FAQ (Pitakonan sing sering ditakokna)",
        "faqpage": "Project:FAQ",
-       "vector-action-addsection": "Nambah topik",
-       "vector-action-delete": "Busek",
-       "vector-action-move": "Pindah",
-       "vector-action-protect": "Reksa",
-       "vector-action-undelete": "Batalna pambusakan",
-       "vector-action-unprotect": "Owahi pangreksan",
-       "vector-view-create": "Gawe",
-       "vector-view-edit": "Sunting",
-       "vector-view-history": "Sajarah kaca",
-       "vector-view-view": "Waca",
-       "vector-view-viewsource": "Deleng sumbere",
        "actions": "Tindakan",
        "namespaces": "Bilik jeneng",
        "variants": "Varian",
        "diff-multi-manyusers": "Ana ({{PLURAL:$1|Siji|$1}} revisi antara gaweane lewih sekang {{PLURAL:$2|siji|$2}} panganggo sing ora ditidokna)",
        "searchresults": "Hasile penggoletan",
        "searchresults-title": "Hasile penggoletan sekang \"$1\"",
-       "toomanymatches": "Pengoletane Rika ngasilna kakehan pituwas, monggo lebokna ''query'' liyane",
        "titlematches": "Judul kaca sing cocog",
        "textmatches": "Teks kaca sing cocog",
        "notextmatches": "Ora ana teks kaca sing cocog",
        "searchmenu-exists": "''' Ana kaca nganggo jeneng \"[[:$1]]\" nang wiki kiye.'''",
        "searchmenu-new": "'''Gawe kaca \"[[:$1]]\" nang wiki kiye!'''",
        "searchprofile-articles": "Isine kaca",
-       "searchprofile-project": "Kaca pitulung lan proyèk",
        "searchprofile-images": "Multimedia",
        "searchprofile-everything": "Kabèh",
        "searchprofile-advanced": "Lanjutan",
        "searchprofile-articles-tooltip": "Panggolèkan nang $1",
-       "searchprofile-project-tooltip": "Goleti nang $1",
        "searchprofile-images-tooltip": "Panggolèkan berkas",
        "searchprofile-everything-tooltip": "Goleti kabeh isi (termasuke kaca dhiskusi)",
        "searchprofile-advanced-tooltip": "Goleti nang bilik jeneng biasa",
        "search-interwiki-default": "Hasil $1:",
        "search-interwiki-more": "(terusane)",
        "search-relatedarticle": "Kagandhèng",
-       "searcheverything-enable": "Goleti nang kabeh bilik jeneng",
        "searchrelated": "kagandhèng",
        "searchall": "kabèh",
        "showingresults": "Nang ngisor kiye ditidokna ana {{PLURAL:$1|'''1''' kasil|'''$1''' kasil}}, dimulai sekang #'''$2'''.",
-       "showingresultsnum": "Nang ngisor kiye ditidokna ana {{PLURAL:$3'''1''' kasil|'''$3''' kasil}}, dimulai sekang #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Asil '''$1''' sekang '''$3'''|Asil '''$1 - $2''' sekang '''$3'''}} kanggo '''$4'''",
        "search-nonefound": "Ora ana kasil sing cocog karo pitakonan (''query'').",
        "powersearch-legend": "Panggoletan lanjut",
        "allowemail": "Aktifna fitur nggo nampa imel sekang pangganggo liyane",
        "prefs-searchoptions": "Goleti",
        "prefs-namespaces": "Bilik jeneng",
-       "defaultns": "Utawa goleti nang bilik jeneng kiye:",
        "default": "baku",
        "prefs-files": "Berkas",
        "prefs-custom-css": "CSS pribadi",
        "prefs-emailconfirm-label": "Konfirmasi imel:",
        "youremail": "Imel:",
        "username": "{{GENDER:$1|Jeneng panganggo}}:",
-       "uid": "{{GENDER:$1|ID panganggo}}:",
        "prefs-memberingroups": "{{GENDER:$2|Anggota}} \n{{PLURAL:$1|klompok|klompok-klompok}}:",
        "prefs-registration": "Wektu régistrasi:",
        "yourrealname": "Jeneng asli:",
        "logempty": "Ora ditemokna entri log sing pas.",
        "log-title-wildcard": "Goleti judul sing dimolai karo teks kiye",
        "allpages": "Kabèh kaca",
-       "alphaindexline": "$1 gutul $2",
        "nextpage": "Kaca seteruse ($1)",
        "prevpage": "Kaca sedurungé ($1)",
        "allpagesfrom": "Tidokna kaca-kaca molai sekang:",
index 5bc4044..57fe8cf 100644 (file)
        "qbmyoptions": "Монь лопане",
        "faq": "Сидеста Кеподеви Кизефксне",
        "faqpage": "Project:Сидеста Кеподеви Кизефксне",
-       "vector-action-addsection": "Поладомс мезень колга корхтамс",
-       "vector-action-delete": "Нардамс",
-       "vector-action-move": "Шашфтомс",
-       "vector-action-protect": "Араламс",
-       "vector-action-undelete": "Мърдафтомс",
-       "vector-action-unprotect": "Араламать полафтомс",
-       "vector-view-create": "Тиемс",
-       "vector-view-edit": "Петнемс",
-       "vector-view-history": "История няфтемс",
-       "vector-view-view": "Морафтомс",
-       "vector-view-viewsource": "Лисьма няфтемс",
        "actions": "Тефне",
        "namespaces": "Лемботмот",
        "variants": "Вариатт",
        "editundo": "валхтомс",
        "searchresults": "Мезе мувсь",
        "searchresults-title": "Мезе мувсь \"$1\" лемс",
-       "toomanymatches": "Пяк лама вешфонди малады муфкст, эняльттяма вешентть тага весть",
        "titlematches": "Лопать коняксоц мувсь",
        "textmatches": "Лопаса сёрматфсь мувсь",
        "notextmatches": "Лопаса сёрматфсь изь мув",
        "searchmenu-exists": "'''Тя Викиса ули лопась \"[[:$1]]\" лем мархта'''",
        "searchmenu-new": "'''Ушедомс лопась \"[[:$1]]\" тя Викиса!'''",
        "searchprofile-articles": "Потмонь лопат",
-       "searchprofile-project": "Лезкс эди проектонь лопат",
        "searchprofile-images": "Мультимедиа",
        "searchprofile-everything": "Сембе",
        "searchprofile-advanced": "Келептьф",
        "searchprofile-articles-tooltip": "Вешендемс $1са",
-       "searchprofile-project-tooltip": "Вешендемс $1са",
        "searchprofile-images-tooltip": "Вешендемс файлхт",
        "searchprofile-everything-tooltip": "Вешендемс сембе лопаса (корхнема лопат сявомок)",
        "searchprofile-advanced-tooltip": "Вешендемс кърдань лемботмова",
        "searchrelated": "мала",
        "searchall": "сембе",
        "showingresults": "Ала няфтеви {{PLURAL:$1|мувсь '''1'''|мувсть '''$1'''}} '''$2'''-ста ушедомс.",
-       "showingresultsnum": "Ала няфтеви {{PLURAL:$3|мувсь '''1'''|мувсть '''$3'''}} '''$2'''-ста ушедомс.",
        "showingresultsheader": "{{PLURAL:$5|'''$1''' сафкс '''$3'''-ста|'''$1 - $2''' сафкст '''$3'''-ста}} '''$4'''нди",
        "search-nonefound": "Аш вешфксонди малады муфкст.",
        "powersearch-legend": "Анцяйняньбес вешендема",
        "allowemail": "Электрононь сёрматнень иля тиихнень эзда тиемс мярьговикс",
        "prefs-searchoptions": "Вешендема арафнемат",
        "prefs-namespaces": "Лемботмот",
-       "defaultns": "Илякс вешентть ня лемботмова:",
        "default": "апак полафтт",
        "prefs-files": "Файлхт",
        "youremail": "Электрононь адресце:",
        "username": "Тиить лемоц:",
-       "uid": "Тиить идентификациесь:",
        "prefs-memberingroups": "Полаяй {{PLURAL:$1|полга|полга}}ста:",
        "yourrealname": "Афкуксонь лемце:",
        "yourlanguage": "Кяль:",
        "logempty": "Стапт сувамот лувомаса ашет.",
        "log-title-wildcard": "Мумс конякст конат ушедыхть стама тяшкста",
        "allpages": "Сембе лопат",
-       "alphaindexline": "$1-ста $2-с",
        "nextpage": "Сай лопа ($1)",
        "prevpage": "Сядынголень лопа ($1)",
        "allpagesfrom": "Няфтемс лопат ушедомс:",
index e372e99..ccaae87 100644 (file)
        "searchrelated": "voadinika",
        "searchall": "rehetra",
        "showingresults": "Omeo ny valiny{{PLURAL:$1||}} miisa hatramin'ny <b>$1</b> manomboka ny #<b>$2</b>.",
-       "showingresultsnum": "Omeo ny valiny miisa <b>$3</b> manomboka ny #<b>$2</b>.{{PLURAL:||}}",
        "showingresultsheader": "{{PLURAL:$5}}Valim-pikaronhana '''$1x–$2''' an'i '''$3''' ho an'i '''$4'''",
        "search-nonefound": "Tsy nahitana valiny ilay fanontaniana.",
        "powersearch-legend": "Fikarohana havanana",
index 8b6be56..99d471f 100644 (file)
        "qbpageoptions": "Тиде лаштык",
        "qbmyoptions": "Мыйын лаштык-влак",
        "faq": "ЧӱВаЙо (Чӱчкыдын вашлиялтше йодыш-влак)",
-       "vector-action-addsection": "У ӱжашым тӱҥалаш",
-       "vector-action-delete": "Шӧраш",
-       "vector-action-move": "Лӱмым вашталташ",
-       "vector-action-protect": "Тӧрлатымаш деч аралаш",
-       "vector-action-undelete": "Шӧрымым пӧртылаш",
-       "vector-action-unprotect": "Оролым вашталташ",
-       "vector-view-create": "Ышташ",
-       "vector-view-edit": "Тӧрлаташ",
-       "vector-view-history": "Эртымгорным ончалаш",
-       "vector-view-view": "Лудаш",
-       "vector-view-viewsource": "Тӱҥалтыш текстым ончалаш",
        "actions": "Сомылка-влак",
        "namespaces": "Лӱм-влак ора",
        "variants": "Вариант-влак",
        "viewprevnext": "Ончал ($1 {{int:pipe-separator}} $2) ($3)",
        "searchmenu-new": "'''Тиде вики-проектыште «[[:$1]]» лӱман лаштыкым ышташ!'''",
        "searchprofile-articles": "Возымо лаштык-влак",
-       "searchprofile-project": "Полыш да проект лаштык",
        "searchprofile-images": "Мультимедий",
        "searchprofile-everything": "Чыла",
        "searchprofile-advanced": "Кумдарак",
        "searchprofile-articles-tooltip": "Кычалмаш $1ште",
-       "searchprofile-project-tooltip": "Кычалмаш $1ште",
        "searchprofile-images-tooltip": "Файл-влакым кычалмаш",
        "searchprofile-everything-tooltip": "Чыла лаштык-влакыште кычалаш (каҥашымаш лаштык-влакыштат)",
        "searchprofile-advanced-tooltip": "Искать в заданных пространствах имён",
index 1ce7021..01cd28e 100644 (file)
        "qbmyoptions": "Laman denai",
        "faq": "FAQ",
        "faqpage": "Project:FAQ",
-       "vector-action-addsection": "Bagian baru",
-       "vector-action-delete": "Hapuih",
-       "vector-action-move": "Pindahkan",
-       "vector-action-protect": "Linduangkan",
-       "vector-action-undelete": "Pambatalan pangapuihan",
-       "vector-action-unprotect": "Tuka palinduangan",
-       "vector-view-create": "Buek",
-       "vector-view-edit": "Suntiang",
-       "vector-view-history": "Riwayaik",
-       "vector-view-view": "Baco",
-       "vector-view-viewsource": "Caliak sumber",
        "actions": "Tindakan",
        "namespaces": "Ruang namo",
        "variants": "Variasi",
        "searchrelated": "bakaitan",
        "searchall": "sado",
        "showingresults": "Di bawah ko dikaluaan sampai {{PLURAL:$1|'''$1''' hasil}}, dimulai dari #'''$2'''.",
-       "showingresultsnum": "Di bawah ko dikaluaan {{PLURAL:$3|'''$3'''}} hasil mulai dari #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Hasil '''$1 - $2''' dari '''$3'''}} untuak '''$4'''",
        "search-nonefound": "Indak ado hasil nan cocok sasuai jo parmintaan",
        "powersearch-legend": "Pencarian lanjut",
        "pageinfo-category-pages": "Jumlah laman",
        "pageinfo-category-subcats": "Jumlah subkategori",
        "pageinfo-category-files": "Jumlah berkas",
-       "skinname-monobook": "MonoBook",
-       "skinname-vector": "Vektor",
        "markaspatrolleddiff": "Tandoi lah dipatroli",
        "markaspatrolledtext": "Tandoi laman ko lah dipatroli",
        "markedaspatrolled": "Tandoi lah dipatroli",
index c772ddf..684b2a0 100644 (file)
        "searchall": "сè",
        "showingresults": "Подолу {{PLURAL:$1|е прикажан '''1''' резултат|се прикажани '''$1''' резултати}} почнувајќи од бр. '''$2'''.",
        "showingresultsinrange": "Долу {{PLURAL:$1|е прикажан до <strong>еден</strong> резултат|се прикажани до <strong>$1</strong> резултати}} во опсег од <strong>$2</strong> до <strong>$3</strong>.",
-       "showingresultsnum": "Подолу {{PLURAL:$3|е прикажан '''1''' резултат|се прикажани '''$3''' резултати}} почнувајќи од '''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Резултат '''$1''' од '''$3'''|Резултати '''$1 - $2''' од '''$3'''}} за '''$4'''",
        "search-nonefound": "Нема резултати што одговараат на бараното.",
        "powersearch-legend": "Напредно пребарување",
        "emptyfile": "Податотеката што ја подигнавте е празна.\nОва може да се должи на грешка во нејзиното име.\nПроверете дали навистина сакате да ја подигнете ваквата податотека.",
        "windows-nonascii-filename": "Опслужувачот не поддржува податотечни имиња со специјални знаци.",
        "fileexists": "Податотека со ова име веќе постои. Проверете <strong>[[:$1]]</strong> ако не {{GENDER:|сте}} сигурни дали сакате да ја промените.\n[[$1|thumb]]",
-       "filepageexists": "СÑ\82Ñ\80аниÑ\86аÑ\82а Ð·Ð° Ð¾Ð¿Ð¸Ñ\81 Ð½Ð° Ð¾Ð²Ð°Ð° Ð¿Ð¾Ð´Ð°Ñ\82оÑ\82ека Ðµ Ð²ÐµÑ\9cе Ñ\81оздадена Ð½Ð° <strong>[[:$1]]</strong>, Ð½Ð¾ Ð½Ðµ Ð¿Ð¾Ñ\81Ñ\82ои Ð¿Ð¾Ð´Ð°Ñ\82оÑ\82ека Ñ\81о Ñ\82оа Ð¸Ð¼Ðµ.\nÐ\9eпиÑ\81оÑ\82 ÐºÐ¾Ñ\98 Ð³Ð¾ Ð²Ð½ÐµÑ\81овÑ\82е Ð½ÐµÐ¼Ð° Ð´Ð° Ñ\81Ñ\82ои Ð½Ð° Ñ\81Ñ\82Ñ\80аниÑ\86аÑ\82а Ð·Ð° Ð¾Ð¿Ð¸Ñ\81.\nДоколку сакате описот да стои тука, ќе морате да го уредите рачно.\n[[$1|thumb]]",
+       "filepageexists": "Ð\9eпиÑ\81наÑ\82а Ñ\81Ñ\82Ñ\80аниÑ\86а Ð½Ð° Ð¾Ð²Ð°Ð° Ð¿Ð¾Ð´Ð°Ñ\82оÑ\82ека Ðµ Ð²ÐµÑ\9cе Ñ\81оздадена Ð½Ð° <strong>[[:$1]]</strong>, Ð½Ð¾ Ð½Ðµ Ð¿Ð¾Ñ\81Ñ\82ои Ð¿Ð¾Ð´Ð°Ñ\82оÑ\82ека Ñ\81о Ñ\82оа Ð¸Ð¼Ðµ.\nÐ\9eпиÑ\81оÑ\82 ÐºÐ¾Ñ\98 Ð³Ð¾ Ð²Ð½ÐµÑ\81овÑ\82е Ð½ÐµÐ¼Ð° Ð´Ð° Ñ\81Ñ\82ои Ð½Ð° Ð¾Ð¿Ð¸Ñ\81наÑ\82а Ñ\81Ñ\82Ñ\80аниÑ\86а.\nДоколку сакате описот да стои тука, ќе морате да го уредите рачно.\n[[$1|thumb]]",
        "fileexists-extension": "Податотека со слично име веќе постои: [[$2|thumb]]\n* Име на податотека која се подигнува: <strong>[[:$1]]</strong>\n* Име на постоечката податотека: <strong>[[:$2]]</strong>\nДали можеби би сакале да користите покарактеристично име.",
        "fileexists-thumbnail-yes": "Се чини дека податотеката е слика со намалена големина ''(минијатура)''. [[$1|thumb]]\nПроверете ја податотеката <strong>[[:$1]]</strong>.\nАко податотеката која ја проверувате е истата слика во својата изворна големина тогаш не мора да ја подигате дополнително.",
        "file-thumbnail-no": "Името на податотеката почнува со <strong>$1</strong>.\nИзгледа дека е слика со намалена големина ''(мини, thumbnail)''.\nАко ја имате оваа слика во изворна големина, подигнете ја неја. Во спротивно сменете го името на податотеката.",
        "license-nopreview": "(Прегледот не е достапен)",
        "upload_source_url": " (важечка, јавно достапна URL-адреса)",
        "upload_source_file": "(податотека на вашиот компјутер)",
+       "listfiles-delete": "избриши",
        "listfiles-summary": "Оваа специјална страница ги прикажува сите подигнати податотеки.",
        "listfiles_search_for": "Побарај име на податотека:",
        "imgfile": "податотека",
        "linkstoimage-redirect": "$1 (пренасочување) $2",
        "duplicatesoffile": "{{PLURAL:$1|Следната податотека е дупликат|$1 Следните податотеки се дупликати}} на оваа податотека ([[Special:FileDuplicateSearch/$2|повеќе информации]]):",
        "sharedupload": "Оваа податотека е од $1 и може да се користи во други проекти.",
-       "sharedupload-desc-there": "Оваа податотека е од $1 и може да се користи во други проекти.\nПогледнете ја [$2 страницата за опис на податотеката] за повеќе информации.",
-       "sharedupload-desc-here": "Оваа податотека е од $1 и може да се користи во други проекти.\nОписот од нејзината [$2 страница за опис] е прикажан подолу.",
+       "sharedupload-desc-there": "Оваа податотека е од $1 и може да се користи во други проекти.\nПогледнете ја [$2 описната страница  на податотеката] за повеќе информации.",
+       "sharedupload-desc-here": "Оваа податотека е од $1 и може да се користи во други проекти.\nОписот од нејзината [$2 описна страница] е прикажан подолу.",
        "sharedupload-desc-edit": "Оваа податотека е од $1 и може да се користи во други проекти.\nНејзиниот опис можете да го уредите на [$2 соодветната страница].",
        "sharedupload-desc-create": "Оваа податотека е од $1 и може да се користи во други проекти.\nНејзиниот опис можете да го уредите на [$2 соодветната страница].",
        "filepage-nofile": "Не постои податотека со ова име.",
        "shared-repo-from": "од $1",
        "shared-repo": "заедничко складиште",
        "shared-repo-name-wikimediacommons": "Ризницата",
-       "filepage.css": "/* Тука поставените каскадни стилски страници (CSS) се вклучени во страницата за опис на податотеката, како и на клиентските викија */",
+       "filepage.css": "/* Тука поставените каскадни стилски страници (CSS) се вклучени во описната страница на податотеката, како и на клиентските викија */",
        "upload-disallowed-here": "Нажалост, не можете да презапишете врз сликава.",
        "filerevert": "Врати $1",
        "filerevert-legend": "Врати податотека",
        "mostinterwikis": "Страници со најмногу меѓувики",
        "mostrevisions": "Статии со најмногу верзии",
        "prefixindex": "Сите страници (со претставка)",
-       "prefixindex-namespace": "СиÑ\82е Ñ\81Ñ\82Ñ\80аниÑ\86и Ñ\81о Ð¿Ñ\80еÑ\84икÑ\81 (именски простор $1)",
+       "prefixindex-namespace": "СиÑ\82е Ñ\81Ñ\82Ñ\80аниÑ\86и Ñ\81о Ð¿Ñ\80еÑ\82Ñ\81Ñ\82авка (именски простор $1)",
        "prefixindex-strip": "Отстрани ја претставката во списокот",
        "shortpages": "Кратки страници",
        "longpages": "Долги страници",
        "allmessages-filter-unmodified": "Неизменети",
        "allmessages-filter-all": "Сите",
        "allmessages-filter-modified": "Изменети",
-       "allmessages-prefix": "ФилÑ\82Ñ\80иÑ\80аÑ\98 Ð¿Ð¾ Ð¿Ñ\80еÑ\84икÑ\81:",
+       "allmessages-prefix": "ФилÑ\82Ñ\80иÑ\80аÑ\98 Ð¿Ð¾ Ð¿Ñ\80еÑ\82Ñ\81Ñ\82авка:",
        "allmessages-language": "Јазик:",
        "allmessages-filter-submit": "Оди",
        "allmessages-filter-translate": "Преведување",
        "duplicate-defaultsort": "Предупредување: Основниот клуч за подредување „$2“ го поништува претходниот основен клуч за подредување „$1“.",
        "version": "Верзија",
        "version-extensions": "Воспоставени додатоци",
+       "version-skins": "Воспоставени рува",
        "version-specialpages": "Специјални страници",
        "version-parserhooks": "Расчленувачки куки",
        "version-variables": "Променливи",
        "version-antispam": "Спречување на спам",
-       "version-skins": "Рува",
        "version-api": "Прилози",
        "version-other": "Друго",
        "version-mediahandlers": "Ракувачи со мултимедијални содржини",
        "version-license": "Лиценца на МедијаВики",
        "version-ext-license": "Лиценца",
        "version-ext-colheader-name": "Додаток",
+       "version-skin-colheader-name": "Руво",
        "version-ext-colheader-version": "Верзија",
        "version-ext-colheader-license": "Лиценца",
        "version-ext-colheader-description": "Опис",
        "expand_templates_remove_nowiki": "Притаи <nowiki> ознаки во резултатот",
        "expand_templates_generate_xml": "Прикажи XML-дрво на расчленувањето",
        "expand_templates_generate_rawhtml": "Прикажувај сиров HTML",
-       "expand_templates_preview": "Преглед"
+       "expand_templates_preview": "Преглед",
+       "pagelanguage": "Изборник за јазик на страницата",
+       "pagelang-name": "Страница",
+       "pagelang-language": "Јазик",
+       "pagelang-use-default": "Користи стандарден јазик",
+       "pagelang-select-lang": "Одберете јазик",
+       "right-pagelang": "Менување јазик на страница",
+       "action-pagelang": "менување јазик на страница",
+       "log-name-pagelang": "Дневник на менување на јазикот",
+       "log-description-pagelang": "Ова е дневник на менувања на јазикот на страницата.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|го смени}} јазикот на страницата $3 од $4 на $5."
 }
index 6f1a12c..56c62e6 100644 (file)
        "mergehistory-empty": "സം‌യോജിപ്പിക്കാവുന്ന പതിപ്പുകളൊന്നും ഇല്ല.",
        "mergehistory-success": "[[:$1]]-ന്റെ {{PLURAL:$3|പതിപ്പ്|പതിപ്പുകൾ}} [[:$2]]-ലേക്കു വിജയകരമായി സം‌യോജിപ്പിച്ചിരിക്കുന്നു.",
        "mergehistory-fail": "താളുകളുടെ നാൾവഴി സം‌യോജനം നടത്താൻ സാദ്ധ്യമല്ല. താളുകളും സമയവിവരങ്ങളും ഒന്നു കൂടി പരിശോധിക്കുക.",
+       "mergehistory-fail-toobig": "{{PLURAL:$1|ഒരു നാൾപ്പതിപ്പിൽ|$1 നാൾപ്പതിപ്പുകൾ}} മാറ്റണമെന്നതിനാൽ നാൾവഴി ലയിപ്പിക്കാൽ നടത്താനാവില്ല.",
        "mergehistory-no-source": "സ്രോതസ്സ് താളായ $1 നിലവിലില്ല.",
        "mergehistory-no-destination": "ലക്ഷ്യ താളായ $1 നിലവിലില്ല.",
        "mergehistory-invalid-source": "സ്രോതസ്സ് താളിന് നിർബന്ധമായും സാധുവായ ഒരു തലക്കെട്ടുണ്ടായിരിക്കണം.",
        "searchall": "എല്ലാം",
        "showingresults": "'''$2''' മുതലുള്ള {{PLURAL:$1|'''ഒരു''' ഫലം|'''$1''' ഫലങ്ങൾ}} താഴെ പ്രദർശിപ്പിക്കുന്നു.",
        "showingresultsinrange": "#<strong>$2</strong> മുതൽ #<strong>$3</strong> വരെയുള്ള പരിധിയിലെ {{PLURAL:$1|<strong>ഒരു</strong> ഫലം|<strong>$1</strong> ഫലങ്ങൾ}} താഴെ പ്രദർശിപിക്കുന്നു.",
-       "showingresultsnum": "'''$2''' മുതലുള്ള {{PLURAL:$3|'''ഒരു''' ഫലം|'''$3''' ഫലങ്ങൾ}} താഴെ പ്രദർശിപ്പിക്കുന്നു.",
        "showingresultsheader": "'''$4''' എന്ന പദത്തിനു ആകെ ലഭിച്ച {{PLURAL:$5| '''$3''' ഫലത്തിൽ '''$1''' എണ്ണം|'''$3''' ഫലത്തിൽ '''$1 മുതൽ $2''' വരെയുള്ളവ}}",
        "search-nonefound": "താങ്കൾ തിരഞ്ഞ പദത്തിനു യോജിച്ച ഫലങ്ങളൊന്നും ലഭിച്ചില്ല.",
        "powersearch-legend": "വിപുലീകൃത തിരച്ചിൽ",
        "windows-nonascii-filename": "പ്രത്യേകാക്ഷരങ്ങളുള്ള പ്രമാണനാമങ്ങൾ ഈ വിക്കി പിന്തുണയ്ക്കുന്നില്ല.",
        "fileexists": "ഇതേ പേരിൽ വേറെ ഒരു പ്രമാണം നിലവിലുണ്ട്.\nദയവായി <strong>[[:$1]]</strong> പരിശോധിച്ച് പ്രസ്തുത പ്രമാണം {{GENDER:|മാറ്റണമോ}} എന്നു തീരുമാനിക്കുക.\n[[$1|thumb]]",
        "filepageexists": "ഈ പ്രമാണത്തിനുള്ള വിവരണതാൾ <strong>[[:$1]]</strong> എന്നു സൃഷ്ടിക്കപ്പെട്ടിട്ടുണ്ട്, പക്ഷേ ഇതേ പേരിൽ പ്രമാണം ഒന്നും നിലവിലില്ല.\nവിവരണതാളിൽ താങ്കൾ ഇവിടെ ചേർക്കുന്ന ലഘുകുറിപ്പ് പ്രത്യക്ഷപ്പെടുന്നതല്ല.\nഅവിടെ ലഘുകുറിപ്പ് വരാൻ ആ താൾ താങ്കൾ സ്വയം തിരുത്തേണ്ടതാണ്.\n[[$1|ലഘുചിത്രം]]",
-       "fileexists-extension": "à´\87à´¤àµ\87 à´ªàµ\87രിൽ à´®à´±àµ\8dà´±àµ\8aà´°àµ\81 à´ªàµ\8dരമാണà´\82 à´¨à´¿à´²à´µà´¿à´²àµ\81à´£àµ\8dà´\9fàµ\8d: [[$2|à´²à´\98àµ\81à´\9aà´¿à´¤àµ\8dà´°à´\82]]\n* à´\87à´ªàµ\8dà´ªàµ\8bൾ à´\85à´ªàµ\8dâ\80\8cà´²àµ\8bà´¡àµ\8d à´\9aàµ\86à´¯àµ\8dà´¤ à´ªàµ\8dരമാണതàµ\8dതിനàµ\8dà´±àµ\86 à´ªàµ\87à´°àµ\8dâ\80\8c: <strong>[[:$1]]</strong>\n* à´¨à´¿à´²à´µà´¿à´²àµ\81à´³àµ\8dà´³ à´ªàµ\8dരമാണതàµ\8dതിനàµ\8dà´±àµ\86 à´ªàµ\87à´°àµ\8dâ\80\8c: <strong>[[:$2]]</strong>\nമറàµ\8dà´±àµ\8aà´°àµ\81 à´ªàµ\87à´°àµ\81 à´¤à´¿à´°à´\9eàµ\8dà´\9eàµ\86à´\9fàµ\81à´\95àµ\8dà´\95àµ\81à´\95.",
+       "fileexists-extension": "à´\87à´¤àµ\87 à´ªàµ\87രിൽ à´®à´±àµ\8dà´±àµ\8aà´°àµ\81 à´ªàµ\8dരമാണà´\82 à´¨à´¿à´²à´µà´¿à´²àµ\81à´£àµ\8dà´\9fàµ\8d: [[$2|à´²à´\98àµ\81à´\9aà´¿à´¤àµ\8dà´°à´\82]]\n* à´\87à´ªàµ\8dà´ªàµ\8bൾ à´\85à´ªàµ\8dâ\80\8cà´²àµ\8bà´¡àµ\8d à´\9aàµ\86à´¯àµ\8dà´¤ à´ªàµ\8dരമാണതàµ\8dതിനàµ\8dà´±àµ\86 à´ªàµ\87à´°àµ\8dâ\80\8c: <strong>[[:$1]]</strong>\n* à´¨à´¿à´²à´µà´¿à´²àµ\81à´³àµ\8dà´³ à´ªàµ\8dരമാണതàµ\8dതിനàµ\8dà´±àµ\86 à´ªàµ\87à´°àµ\8dâ\80\8c: <strong>[[:$2]]</strong>\nà´\95àµ\82à´\9fàµ\81തൽ à´µàµ\8dയതàµ\8dയാസമàµ\81à´³àµ\8dà´³ à´ªàµ\87à´°àµ\81പയàµ\8bà´\97à´¿à´\95àµ\8dà´\95à´£àµ\8b?",
        "fileexists-thumbnail-yes": "ഈ ചിത്രം വലിപ്പം കുറച്ച ഒന്നാണെന്നു ''(ലഘുചിത്രം)'' കാണുന്നു.\n[[$1|ലഘുചിത്രം]]\nദയവായി <strong>[[:$1]]</strong> എന്ന ചിത്രം പരിശോധിക്കുക.\n[[:$1]] എന്ന ചിത്രവും ഈ ചിത്രവും ഒന്നാണെങ്കിൽ ലഘുചിത്രത്തിനു വേണ്ടി മാത്രമായി ചിത്രം അപ്‌ലോഡ് ചെയ്യേണ്ടതില്ല.",
        "file-thumbnail-no": "പ്രമാണത്തിന്റെ പേര്‌  <strong>$1</strong> എന്നാണ്‌ തുടങ്ങുന്നത്.\nഇതു വലിപ്പം കുറച്ച ഒരു ചിത്രം ''(ലഘുചിത്രം)'' ആണെന്നു കാണുന്നു.\nപൂർണ്ണ റെസലൂഷൻ ഉള്ള ചിത്രം ഉണ്ടെങ്കിൽ അതു അപ്‌ലോഡ് ചെയ്യുവാൻ താല്പര്യപ്പെടുന്നു, അല്ലെങ്കിൽ പ്രമാണത്തിന്റെ പേരു മാറ്റുവാൻ അഭ്യർത്ഥിക്കുന്നു.",
        "fileexists-forbidden": "ഈ പേരിൽ ഒരു പ്രമാണം നിലവിലുണ്ട്, അതു മാറ്റി സൃഷ്ടിക്കുക സാദ്ധ്യമല്ല.\nതാങ്കൾക്ക് ഈ ചിത്രം അപ്‌ലോഡ് ചെയ്തേ മതിയാവുയെങ്കിൽ, ദയവു ചെയ്തു വേറൊരു പേരിൽ ഈ പ്രമാണം അപ്‌ലോഡ് ചെയ്യുക. [[File:$1|thumb|center|$1]]",
        "filedelete-maintenance": "നന്നാക്കൽ പ്രവർത്തനങ്ങൾ പുരോഗമിക്കുന്നതിനാൽ പ്രമാണങ്ങളുടെ മായ്ക്കലും പുനഃസ്ഥാപിക്കലും താത്ക്കാലികമായി നിർത്തിവച്ചിരിക്കുന്നു.",
        "filedelete-maintenance-title": "പ്രമാണം മായ്ക്കാൻ കഴിയില്ല",
        "mimesearch": "മൈം(MIME) തിരയൽ",
-       "mimesearch-summary": "ഈ താൾ പ്രമാണങ്ങളെ അവയുടെ മൈം(MIME)-തരം അനുസരിച്ച് അരിച്ചെടുക്കാൻ പ്രാപ്തമാക്കുന്നു:\nനൽകേണ്ടവിധം: പ്രമാണത്തിന്റെ തരം/ഉപതരം, ഉദാ:<code>image/jpeg</code>.",
+       "mimesearch-summary": "ഈ താൾ പ്രമാണങ്ങളെ അവയുടെ മൈം(MIME)-തരം അനുസരിച്ച് അരിച്ചെടുക്കാൻ പ്രാപ്തമാക്കുന്നു:\nനൽകേണ്ടവിധം: പ്രമാണത്തിന്റെ തരം/ഉപതരം അല്ലെങ്കിൽ പ്രമാണത്തിന്റെ തരം/*, ഉദാ:<code>image/jpeg</code>.",
        "mimetype": "മൈം(MIME) തരം:",
        "download": "ഡൗൺലോഡ്",
        "unwatchedpages": "ആരും ശ്രദ്ധിക്കാത്ത താളുകൾ",
        "duplicate-defaultsort": "'''മുന്നറിയിപ്പ്:''' ക്രമപ്പെടുത്താനുള്ള ചാവിയായ \"$2\" മുമ്പ് ക്രമപ്പെടുത്താനുള്ള ചാവിയായിരുന്ന \"$1\" എന്നതിനെ അതിലംഘിക്കുന്നു.",
        "version": "പതിപ്പ്",
        "version-extensions": "ഇൻസ്റ്റോൾ ചെയ്തിട്ടുള്ള അനുബന്ധങ്ങൾ",
+       "version-skins": "ഇൻസ്റ്റോൾ ചെയ്തിട്ടുള്ള ദൃശ്യരൂപങ്ങൾ",
        "version-specialpages": "പ്രത്യേക താളുകൾ",
        "version-parserhooks": "പാഴ്‌സർ കൊളുത്തുകൾ",
        "version-variables": "ചരങ്ങൾ",
        "version-antispam": "പാഴെഴുത്ത് തടയൽ",
-       "version-skins": "ദൃശ്യരൂപങ്ങൾ",
        "version-other": "മറ്റുള്ളവ",
        "version-mediahandlers": "മീഡിയ കൈകാര്യോപകരണങ്ങൾ",
        "version-hooks": "കൊളുത്തുകൾ",
        "version-hook-name": "കൊളുത്തിന്റെ പേര്",
        "version-hook-subscribedby": "വരിക്കാരനായത്",
        "version-version": "(പതിപ്പ് $1)",
+       "version-no-ext-name": "[[പേര് നൽകിയിട്ടില്ല]",
        "version-license": "മീഡിയവിക്കി ഉപയോഗാനുമതി",
        "version-ext-license": "അനുമതി",
        "version-ext-colheader-name": "അനുബന്ധം",
+       "version-skin-colheader-name": "ദൃശ്യരൂപം",
        "version-ext-colheader-version": "പതിപ്പ്",
        "version-ext-colheader-license": "ഉപയോഗാനുമതി",
        "version-ext-colheader-description": "വിവരണം",
        "expand_templates_remove_nowiki": "ഫലങ്ങളിലെ <nowiki> റ്റാഗുകൾ ഒതുക്കുക",
        "expand_templates_generate_xml": "എക്സ്.എം.എൽ. പാഴ്‌സർ ട്രീ പ്രദർശിപ്പിക്കുക",
        "expand_templates_generate_rawhtml": "അസംസ്കൃത എച്ച്.റ്റി.എം.എൽ. പ്രദർശിപ്പിക്കുക",
-       "expand_templates_preview": "എങ്ങനെയുണ്ടെന്നു കാണുക"
+       "expand_templates_preview": "എങ്ങനെയുണ്ടെന്നു കാണുക",
+       "pagelanguage": "താളിന്റെ ഭാഷാ തിരഞ്ഞെടുപ്പ് സൗകര്യം",
+       "pagelang-name": "താൾ",
+       "pagelang-language": "ഭാഷ",
+       "pagelang-use-default": "സ്വതേയുള്ള ഭാഷ ഉപയോഗിക്കുക",
+       "pagelang-select-lang": "ഭാഷ തിരഞ്ഞെടുക്കുക",
+       "right-pagelang": "താളിന്റെ ഭാഷ മാറ്റുക",
+       "action-pagelang": "താളിന്റെ ഭാഷ മാറ്റുക",
+       "log-name-pagelang": "ഭാഷ മാറ്റലിന്റെ രേഖ",
+       "log-description-pagelang": "താളുകളുടെ ഭാഷകൾ മാറ്റിയതിന്റെ രേഖകൾ ഇവിടെക്കാണാം.",
+       "logentry-pagelang-pagelang": "$3 എന്ന താളിന്റെ ഭാഷയായിരുന്ന $4, $1 $5 ആയി {{GENDER:$2|മാറ്റി}}."
 }
index e7d9776..67e82db 100644 (file)
        "searchrelated": "холбоотой",
        "searchall": "бүгдийг",
        "showingresults": "Доор #'''$2'''-с эхлэсэн '''$1''' илэрцийг үзүүлж байна.",
-       "showingresultsnum": "Доор #'''$2'''-с эхлэсэн '''$3''' илэрцийг үзүүлж байна.",
        "showingresultsheader": "'''$4''' хайлтын {{PLURAL:$5|'''$3'''-н '''$1''' үр дүн|'''$3'''-н '''$1 - $2''' үр дүн}}",
        "search-nonefound": "Хайлтад таарсан үр дүн илэрсэнгүй.",
        "powersearch-legend": "Сонгосон хайлт",
index cc5252f..d7c946f 100644 (file)
        "searchall": "सर्व",
        "showingresults": "#'''$2'''पासून {{PLURAL:$1|'''1'''पर्यंतचा निकाल|'''$1'''पर्यंतचे निकाल}} खाली दाखवले आहे.",
        "showingresultsinrange": "खाली #<strong>$2</strong> ते #<strong>$3</strong> पर्यंतच्या कक्षेतील {{PLURAL:$1|<strong>१</strong> निकाल दाखविला आहे|<strong>$1</strong> निकाल दाखविले आहेत}}.",
-       "showingresultsnum": "खाली दिलेले #'''$2'''पासून सुरू होणारे  {{PLURAL:$3|'''1''' निकाल|'''$3''' निकाल}}.",
        "showingresultsheader": "'''$4''' साठी {{PLURAL:$5|'''$3'''पैकी '''$1''' निकाल|'''$3''' पैकी '''$1 - $2''' निकाल}}",
        "search-nonefound": "दिलेल्या पृच्छेशी जुळणारे निकाल नाहीत.",
        "powersearch-legend": "प्रगत शोध",
index 4f0b46d..4953184 100644 (file)
        "searchall": "semua",
        "showingresults": "Yang berikut ialah '''$1''' hasil bermula daripada yang {{PLURAL:$2|pertama|ke-'''$2'''}}.",
        "showingresultsinrange": "Yang berikut adalah {{PLURAL:$1|<strong>satu</strong> hasil|sebanyak <strong>$1</strong> hasil}} dalam julat #<strong>$2</strong> hingga #<strong>$3</strong>.",
-       "showingresultsnum": "Yang berikut ialah '''$3''' hasil bermula daripada yang {{PLURAL:$2|pertama|ke-'''$2'''}}.",
        "showingresultsheader": "{{PLURAL:$5|Keputusan '''$1''' daripada '''$3'''|Keputusan '''$1 - $2''' daripada '''$3'''}} untuk '''$4'''",
        "search-nonefound": "Tiada hasil yang sepadan dengan pertanyaan.",
        "powersearch-legend": "Carian lanjutan",
index 3189c68..d707821 100644 (file)
        "searchrelated": "relatati",
        "searchall": "kollha",
        "showingresults": "Hawn taħt ġie inkluż massimu ta' {{PLURAL:$1|riżultat '''1''' li jibda|'''$1''' riżultat li jibdew}} bin-numru '''$2'''.",
-       "showingresultsnum": "Hawn taħt {{PLURAL:$3|jinsab riżultat '''1''' li jibda|jinsabu '''$3''' riżultati li jibdew}} bin-numru '''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Riżultat '''$1''' minn '''$3'''|Riżultati '''$1 - $2''' minn '''$3'''}} għal '''$4'''",
        "search-nonefound": "It-tfittxija ma tat l-ebda riżultat.",
        "powersearch-legend": "Tfittxija avvanzata",
        "powersearch-togglelabel": "Agħżel:",
        "powersearch-toggleall": "Kollha",
        "powersearch-togglenone": "Ebda",
+       "powersearch-remember": "Ftakar l-għażla għal tfittxijiet oħra",
        "search-external": "Tfittxija esterna",
        "searchdisabled": "It-Tfittxija fil-{{SITENAME}} mhux attiva.\nSadanittant, tista' tipprova tfittex bil-Google.\nInnota però li l-werreja tal-kontenut ta' {{SITENAME}} f'dawn is-siti, jistgħu ma jkunux aġġornati.",
        "preferences": "Preferenzi",
        "duplicate-defaultsort": "'''Twissija:''' iċ-ċavetta tal-issortjar oriġinali \"$2\" tissostitwixxi dik preċedenti \"$1\".",
        "version": "Verżjoni",
        "version-extensions": "Estensjonijiet installati",
+       "version-skins": "Aspetti",
        "version-specialpages": "Paġni speċjali",
        "version-parserhooks": "Hook tal-parser",
        "version-variables": "Varjabili",
        "version-antispam": "Prevenzjoni tal-ispam",
-       "version-skins": "Aspetti",
        "version-other": "Oħrajn",
        "version-mediahandlers": "Imradd tal-medja",
        "version-hooks": "Hook",
index b0ab19f..7ad868f 100644 (file)
        "prefs-emailconfirm-label": "Cunfirmaçon de l correio eiletrónico:",
        "youremail": "Morada de correio eiletrónico:",
        "username": "Nome de outelizador:",
-       "uid": "Númaro de eidentificaçon:",
        "prefs-memberingroups": "Nembro {{PLURAL:$1|de l grupo|de ls grupos}}:",
        "yourrealname": "Nome berdadeiro:",
        "yourlanguage": "Lhéngua:",
        "log": "Registros",
        "all-logs-page": "Todos ls registros públicos",
        "allpages": "Todas las páiginas",
-       "alphaindexline": "$1 a $2",
        "nextpage": "Próssima páigina ($1)",
        "prevpage": "Páigina d'atrás ($1)",
        "allpagesfrom": "Amostrar páiginas ampeçando an:",
        "tooltip-watch": "Ajuntar esta páigina als tous begiados",
        "tooltip-rollback": "\"{{int:rollbacklink}}\" çfazer, cun un solo clique, las eidiçones de l redadeiro eiditor desta páigina.",
        "tooltip-undo": "\"Çfazer\" çfaç esta eidiçoni abre ls campos de eidiçon ne l modo \"ber cumo queda\".\nPremite ajuntar la rezon de la eidiçon ne l sumário.",
-       "skinname-cologneblue": "Azul",
-       "skinname-monobook": "Lhibro",
-       "skinname-modern": "Moderno",
        "previousdiff": "← Eidiçon d'atrás",
        "nextdiff": "Redadeira eidiçon →",
        "file-info-size": "$1 × $2 pixel, tamanho: $3, tipo MIME: $4",
index e64eb1c..ed24060 100644 (file)
        "qbmyoptions": "ကျွန်ုပ် စာမျက်နှာများ",
        "faq": "မေးလေ့ရှိကြသည်များ",
        "faqpage": "Project:မေးလေ့ရှိကြသည်များ",
-       "vector-action-addsection": "အကြောင်းအရာအသစ် ထပ်ထည့်ရန်",
-       "vector-action-delete": "ဖျက်​ပါ​",
-       "vector-action-move": "ရွှေ့ပါ",
-       "vector-action-protect": "ထိမ်း​သိမ်း​ပါ​",
-       "vector-action-undelete": "မဖျက်တော့ရန်",
-       "vector-action-unprotect": "ကာကွယ်ခြင်းကို ပြောင်းလဲရန်",
-       "vector-view-create": "စတင်ရေးသားရန်",
-       "vector-view-edit": "ပြင်ရန်",
-       "vector-view-history": "ရာဇဝင်ကြည့်ရန်",
-       "vector-view-view": "ဖတ်ရန်",
-       "vector-view-viewsource": "ရင်းမြစ်ကို ကြည့်ရန်",
        "actions": "ဆောင်ရွက်ချက်များ",
        "namespaces": "အမည်ညွှန်းများ",
        "variants": "အမျိုးမျိုးအပြားပြား",
        "editundo": "နောက်ပြန် ပြန်ပြင်ရန်",
        "searchresults": "ရှာဖွေမှု ရလဒ်များ",
        "searchresults-title": "\"$1\" အတွက် ရှာတွေ့သည့် ရလဒ်များ",
-       "toomanymatches": "ကိုက်ညီမှုမြောက်များစွာ ပေါ်ထွက်လာသောကြောင့် ကျေးဇူးပြု၍ တခြားစုံစမ်းမှုနောက်တစ်ခု ပြုလုပ်ပေးပါ",
        "titlematches": "စာမျက်နှာခေါင်းစဉ်ကိုက်ညီသည်",
        "textmatches": "စာမျက်နှာစာသားကိုက်ညီသည်",
        "notextmatches": "ဤခေါင်းစဉ်နှင့် ကိုက်ညီသောစာမျက်နှာမရှိပါ",
        "searchmenu-exists": "'''ဤဝီကီတွင် \"[[:$1]]\" အမည်နှင့် စာမျက်နှာတစ်ခုရှိသည်။'''",
        "searchmenu-new": "'''ဤဝီကီတွင် \"[[:$1]]\" အမည်နှင့် စာမျက်နှာကို ဖန်တီးပါ။'''",
        "searchprofile-articles": "မာတိကာစာမျက်နှာများ",
-       "searchprofile-project": "အကူအညီနှင့် ပရောဂျက်စာမျက်နှာများ",
        "searchprofile-images": "မာလတီမီဒီယာ",
        "searchprofile-everything": "အားလုံး",
        "searchprofile-advanced": "အဆင့်မြင့်",
        "searchprofile-articles-tooltip": "$1 တွင် ရှာရန်",
-       "searchprofile-project-tooltip": "$1 တွင် ရှာရန်",
        "searchprofile-images-tooltip": "ဖိုင်များကို ရှာရန်",
        "searchprofile-everything-tooltip": "(ဆွေးနွေးချက်စာမျက်နှာများအပါအဝင်) ရှိသမျှအားလုံးတွင် ရှာရန်",
        "searchprofile-advanced-tooltip": "စိတ်ကြိုက်အမည်ညွှန်းများတွင် ရှာရန်",
        "search-interwiki-default": "ရလဒ် $1 ခု -",
        "search-interwiki-more": "(နောက်ထပ်)",
        "search-relatedarticle": "ဆက်နွယ်သော",
-       "searcheverything-enable": "အမည်ညွှန်းအားလုံးတွင် ရှာရန်",
        "searchrelated": "ဆက်နွယ်သော",
        "searchall": "အားလုံး",
        "showingresults": "'''$2''' နှင့်စသော ရလဒ် {{PLURAL:$1|'''1''' ခု|'''$1''' ခု}}ထိကို အောက်တွင် ပြထားသည်။",
-       "showingresultsnum": "'''$2''' နှင့်စသော ရလဒ် {{PLURAL:$3|'''1''' ခု|'''$3''' ခု}} ကို အောက်တွင် ပြထားသည်။",
        "showingresultsheader": "'''$4''' အတွက် {{PLURAL:$5|ရလဒ် '''$3''' ခု အနက်မှ '''$1'''|ရလဒ် '''$3'''ခု အနက်မှ '''$1 - $2'''}}",
        "search-nonefound": "စုံစမ်းမှုနှင့်ကိုက်ညီသော ရလဒ်မရှိပါ။",
        "powersearch-legend": "အထူးပြု ရှာဖွေရန်",
        "allowemail": "အခြားအသုံးပြုသူများထံမှ အီးမေးများကို လက်ခံရန်",
        "prefs-searchoptions": "ရှာဖွေရန် ရွေးချယ်မှု",
        "prefs-namespaces": "အမည်ညွှန်း",
-       "defaultns": "သို့မဟုတ်ပါက ဤအမည်ညွှန်းများတွင် ရှာပါ -",
        "default": "ပုံမှန်အားဖြင့်",
        "prefs-files": "ဖိုင်",
        "prefs-custom-css": "စိတ်ကြိုက် CSS",
        "prefs-emailconfirm-label": "အီးမေးအတည်ပြုရန်",
        "youremail": "အီး​မေး -",
        "username": "အသုံးပြုသူအမည် -",
-       "uid": "အသုံးပြုသူ ​ID -",
        "prefs-memberingroups": "{{PLURAL:$1|အုပ်စု|အုပ်စု}}၏ အဖွဲ့ဝင်",
        "prefs-registration": "မှတ်ပုံတင်သည့် အချိန် -",
        "yourrealname": "နာမည်ရင်း -",
        "log": "မှတ်​တမ်း​များ​",
        "all-logs-page": "အများနှင့်ဆိုင်သောမှတ်တမ်းအားလုံး",
        "allpages": "စာမျက်နှာအားလုံး",
-       "alphaindexline": "$1 မှ $2 အထိ",
        "nextpage": "နောက်ထပ်စာမျက်နှာ ($1)",
        "prevpage": "ယခင် စာမျက်နှာ ($1)",
        "allpagesfrom": "ဤမှစသော စာမျက်နှာများကို ပြနေသည် -",
        "whatlinkshere-filters": "စိစစ်မှုများ",
        "blockip": "အသုံးပြုသူကို ပိတ်ပင်ရန်",
        "blockip-legend": "အသုံးပြုသူကို ပိတ်ပင်ရန်",
-       "ipadressorusername": "အိုင်ပီလိပ်စာ သို့ အသုံးပြုသူအမည် -",
+       "ipaddressorusername": "အိုင်ပီလိပ်စာ သို့ အသုံးပြုသူအမည် -",
        "ipbexpiry": "သက်တမ်းကုန်လွန်ရက် -",
        "ipbreason": "အ​ကြောင်း​ပြ​ချက်:",
        "ipbcreateaccount": "အကောင့်အသစ်ပြုလုပ်ခြင်းကို တားဆီးရန်",
        "newimages": "ပုံအသစ်များပြခန်း",
        "newimages-legend": "စိစစ်မှု",
        "newimages-label": "ဖိုင်အမည် (သို့ ယင်း၏အစိတ်အပိုင်း) -",
-       "showhidebots": "(ဘော့ $1 ခု)",
        "noimages": "ကြည့်စရာဘာမှ မရှိပါ။",
        "ilsubmit": "ရှာ​ဖွေ​ရန်​",
        "bydate": "ရက်စွဲဖြိင့်",
index 5c20f00..ed2cb7a 100644 (file)
        "qbmyoptions": "مه صفحه‌ئون",
        "faq": "معمولی سوالا",
        "faqpage": "Project:FAQ",
-       "vector-action-addsection": "ترنه گپ بزوئن",
-       "vector-action-delete": "پاک هاکردن",
-       "vector-action-move": "دکش هاکردن",
-       "vector-action-protect": "زلفن بزوئن",
-       "vector-action-undelete": "دباره بنویشته بیّن",
-       "vector-action-unprotect": "زلفن عوض هاکردن",
-       "vector-view-create": "بساتن",
-       "vector-view-edit": "دچی‌ین",
-       "vector-view-history": "تاریخچه ره بَدی‌ین",
-       "vector-view-view": "بخوندستن",
-       "vector-view-viewsource": "ونه منبع ره هارشائن",
        "actions": "عملکاردون",
        "namespaces": "ایسم فضائون",
        "variants": "گویش‌ئون",
        "prefs-rc": "تازه دگاردسته‌ئون",
        "youremail": "شه مه Email:",
        "username": "کاروری نوم:",
-       "uid": "کاروری إشماره:",
        "yourrealname": "شیمه راستین ره نوم :",
        "yourlanguage": "زوون:",
        "badsig": "ایمضا بی اعتبار هسه. html کودون ره أی هارشین.",
        "booksources-text": "زیر فهرستی از لینکا به وبگاه‌ئون دیگه دره که کتاب‌ئون نو و دست دوم روشنّه و ممکنه اطلاعات ویشتری راجع به کتاب مورد نظر دارِن:",
        "specialloguserlabel": "کارور:",
        "allpages": "همه صفحه‌ئون",
-       "alphaindexline": "$1 تا  $2",
        "prevpage": "پیشین صفحه ($1)",
        "allarticles": "همه صفحه‌ئون",
        "allpagessubmit": "بـور",
        "imagelisttext": "فهرست بن $1 {{PLURAL:$1|عکسی|عکسی}} که $2 مرتب بیی‌یه بموئه.",
        "newimages-summary": "این صفحه شا آخرین عکس‌ئون بار بی‌یشته ره نیمایش دنه",
        "newimages-label": "ایسم عکس (یا ات تیکه که ونه شه):",
-       "showhidebots": "(دچی‌یه‌ن روباتا $1)",
        "noimages": "هچی دنی‌یه که هارشی.",
        "ilsubmit": "بگردستن",
        "bydate": "تاریخ رو جه",
index e17ea9c..71e6514 100644 (file)
        "qbmyoptions": "Nozāzanil",
        "faq": "Zan īc tētlatlanīliztli",
        "faqpage": "Project:FAQ",
-       "vector-action-delete": "Ticpolōz",
-       "vector-action-move": "Ticzacāz",
-       "vector-action-protect": "Ticquīxtīz",
-       "vector-view-create": "Ticchīhuāz",
-       "vector-view-edit": "Ticpatlāz",
-       "vector-view-history": "Tlahcuilōlli tlahcuilōlloh",
-       "vector-view-view": "Tāmapōhuaz",
-       "vector-view-viewsource": "Tiquittāz in mēyalli",
        "actions": "Āyiliztli",
        "namespaces": "Tòkâyeyàntìn",
        "errorpagetitle": "Aiuhcāyōtl",
        "searchmenu-exists": "'''Ye ia zāzanilli ītōca \"[[$1]]\" inīn huiquipan'''",
        "searchmenu-new": "'''Tihuelīti ticchīhuāz zāzanilli ītōca \"[[:$1]]\" inīn huiquipan'''",
        "searchprofile-articles": "Tlapiyaliztli zāzanilli",
-       "searchprofile-project": "Tēpalēhuiliztli īhuān īxiptlahtli āmatl",
        "searchprofile-images": "Nepapan media",
        "searchprofile-everything": "Mochi",
        "searchprofile-advanced": "Huehca ōmpa",
        "searchprofile-articles-tooltip": "Tictēmōz īpan $1",
-       "searchprofile-project-tooltip": "Tictēmōz īpan $1",
        "searchprofile-images-tooltip": "Tiquintēmōz tlahcuilōlli",
        "searchprofile-everything-tooltip": "Tictēmōz mochi tlapiyalizpan (mopiyah tēixnāmiquiliztli zāzanilli)",
        "search-result-size": "$1 ({{PLURAL:$2|1 tlahtōl|$2 tlahtōltin}})",
        "timezoneregion-pacific": "Pacífico Ilhuicaātl",
        "prefs-searchoptions": "Titlatēmōz",
        "prefs-namespaces": "Tōcātzin",
-       "defaultns": "Tlatēmōz inīn tōcātzimpan achtopa:",
        "default": "ic default",
        "prefs-files": "Tlahcuilōlli",
        "youremail": "Maltzinteyōtl netitlanizyeyāntli:",
        "username": "{{GENDER:$1|Tlatequitiltilīltōcāitl}}:",
-       "uid": "{{GENDER:$1|Tlatequitiltilīlli}} ID:",
        "prefs-memberingroups": "{{GENDER:$2|Tlacotōncayōtl}} in {{PLURAL:$1|tēolōlolli|tēolōloltin}}",
        "yourrealname": "Melāhuac motōcā:",
        "yourlanguage": "Tlâtòlli:",
        "log": "Tlahcuilōlloh",
        "all-logs-page": "Mochīntīn tlācah īntlahcuilōlloh",
        "allpages": "Mochīntīn zāzanilli",
-       "alphaindexline": "$1 oc $2",
        "nextpage": "Niman zāzanilli ($1)",
        "prevpage": "Achto zāzanilli ($1)",
        "allarticles": "Mochīntīn tlahcuilōlli",
index b85b1f2..f29574c 100644 (file)
        "actionthrottledtext": "Ūi-tio̍h thê-hông lah-sap ê chhú-tì,  lí ū hông hān-chè tī té sî-kan lāi chò siuⁿ chē pái chit ê tōng-chok,  taⁿ lí í-keng chhiau-koè hān-chè.\nChhiáⁿ tī kúi hun-cheng hāu chiah koh chhì.",
        "protectedpagetext": "Chit ia̍h hông só tiâu leh, bē pian-chi̍p tit, mā bē-tàng chò kî-thaⁿ oa̍h-tāng.",
        "viewsourcetext": "Lí ē-sái khoàⁿ ia̍h khó͘-pih chit ia̍h ê goân-sú loē-iông:",
+       "viewyourtext": "你會使看<strong>你改的</strong>原始碼,並且khop去這頁:",
        "protectedinterface": "Chit ia̍h thê-kiong nńg-thé kài-bīn ēng ê bûn-jī. Ūi beh ī-hông lâng chau-that, só͘-í ū siū tio̍h pó-hō͘. Nā beh kái hoan-e̍k, chhiaⁿ khì Ûi-ki Mûi-thé chāi-tē-hoà sū-kang [//translatewiki.net/ translatewiki.net] hiâ.",
        "editinginterface": "'''Sè-jī:''' Lí tng teh siu-kái 1 bīn thê-kiong nńg-thé kài-bīn bûn-jī ê ia̍h. Jīn-hô kái-piàn to ē éng-hióng tio̍h kî-thaⁿ iōng-chiá ê sú-iōng kài-bīn. Nā beh kái hoan-e̍k, chhiaⁿ khì Ûi-ki Mûi-thé chāi-tē-hoà sū-kang [//translatewiki.net/ translatewiki.net] hiâ.",
        "cascadeprotected": "Chit-ê ia̍h í-keng hông pó-hō͘ bē kái tit. In-ūi i tī ē-bīn {{PLURAL:$1|ê|ê}} liân-só pó-hō͘ lāi-té:\n$2",
        "namespaceprotected": "Lí bô khoân-lī kái '''$1'''  miâ-khong-kan ê ia̍h",
+       "exception-nologin": "Bô teng-ji̍p",
+       "exception-nologin-text": "請先[[Special:Userlogin|登入]]了才有法度看這頁抑對這頁做動作。",
+       "exception-nologin-text-manual": "請先$1,才有法度看這頁抑對這頁做動作。",
+       "virus-badscanner": "設定毋著:你的病毒掃描程式阮毋知:<em>$1</em>",
+       "virus-scanfailed": "掃病毒無成功(代碼$1)",
        "virus-unknownscanner": "M̄-chai siáⁿ pēⁿ-to̍k:",
        "logouttext": "'''Lí í-keng teng-chhut.'''\nChhiaⁿ chù-ì: ū-kóa ia̍h ū khó-lêng khoàⁿ-tio̍h bē-su lí iáu teng-ji̍p tī leh; che chi-iàu piàⁿ tiāu liû-lám-khì ê khoài-chhú-khu, tiō ē chèng-siông.",
        "welcomeuser": "Hoan-gêng, $1!",
+       "welcomecreation-msg": "你的口座以經開好矣,\n你若有需要,會使去改你佇{{SITENAME}}的設定。",
        "yourname": "Lí ê iōng-chiá miâ-chheng:",
        "userlogin-yourname": "Iōng-chiá miâ-chheng",
+       "userlogin-yourname-ph": "拍你的用者名稱",
+       "createacct-another-username-ph": "拍你的用者名稱",
        "yourpassword": "Lí ê bi̍t-bé:",
        "userlogin-yourpassword": "Bi̍t-bé",
+       "userlogin-yourpassword-ph": "拍密碼",
+       "createacct-yourpassword-ph": "拍密碼",
        "yourpasswordagain": "Têng phah bi̍t-bé:",
+       "createacct-yourpasswordagain": "確認密碼",
+       "createacct-yourpasswordagain-ph": "閣拍一擺密碼",
        "remembermypassword": "Tī chit ê liû-lám-khì kì góa ê teng-ji̍p chu-liāu.(siōng chē kì $1 {{PLURAL:$1|kang|kang}})",
+       "userlogin-remembermypassword": "我登入的資料記起來",
+       "userlogin-signwithsecure": "用安全連線",
+       "yourdomainname": "你的網域:",
        "password-change-forbidden": "佇這个維基,你袂當改密碼。",
        "externaldberror": "這可能是資料庫驗證錯誤,抑是無允准你改外部的口座。",
        "login": "Teng-ji̍p",
        "createaccount": "Khui sin kháu-chō",
        "gotaccount": "Í-keng ū kháu-chō? '''$1'''.",
        "gotaccountlink": "Teng-ji̍p",
+       "userlogin-resetlink": "你敢袂記得你登入的資料?",
+       "userlogin-resetpassword-link": "袂記得你的密碼?",
+       "userlogin-helplink2": "協助你登入",
+       "userlogin-loggedin": "你已經用{{GENDER:$1|$1}}登入,用下跤的表,登入別个名。",
+       "userlogin-createanother": "開另外一个口座",
+       "createacct-emailrequired": "電子批地址",
+       "createacct-emailoptional": "電子批地址(無一定愛寫)",
+       "createacct-email-ph": "拍你的電子批地址",
+       "createacct-another-email-ph": "拍你的電子批地址",
        "createaccountmail": "Iōng chi̍t-ê lîm-sî loān-sò͘ sán-seng ê bi̍t-bé , kià khì goá chí-tēng ê tiān-chú-phoe tē-chí.",
+       "createacct-realname": "真正的名",
        "createaccountreason": "Lí-iû:",
+       "createacct-reason-ph": "為啥物你欲開一另外一个口座?",
+       "createacct-captcha": "安全檢驗",
+       "createacct-imgcaptcha-ph": "共下跤你看著的字拍入來",
+       "createacct-submit": "開你的口座",
+       "createacct-another-submit": "開另外一个口座",
+       "createacct-benefit-heading": "{{SITENAME}}是為著親像你的儂,才來建立。",
+       "createacct-benefit-body1": "改{{PLURAL:$1|擺|擺}}",
+       "createacct-benefit-body2": "{{PLURAL:$1|頁|頁}}",
+       "createacct-benefit-body3": "最近{{PLURAL:$1|个儂有貢獻|个儂有貢獻}}",
        "badretype": "Lí su-ji̍p ê 2-cho· bi̍t-bé bô tùi.",
        "userexists": "Lí phah ê iōng-chiá miâ-chheng í-keng ū lâng iōng. Chhiáⁿ lí iōng pa̍t-ê miâ.",
        "loginerror": "Teng-ji̍p chhò-gō·",
+       "createacct-error": "開口座無成功",
        "createaccounterror": "Bô hoat-tō͘ khui kháu-chō: $1",
+       "nocookiesnew": "你的用者口座已經開好矣,毋過你猶未登入,{{SITENAME}}有用Cookies做記錄登入的用者,你無允准用Cookies,請先共阻擋提掉,才閣用你的用者名稱佮密碼登入。",
+       "nocookieslogin": "{{SITENAME}}有用cookies做記錄用者,毋過你無允準用cookies,等你改做會當了後,才閣試。",
        "loginsuccesstitle": "Teng-ji̍p sêng-kong",
        "loginsuccess": "Lí hiān-chhú-sî í-keng teng-ji̍p {{SITENAME}} chò \"$1\".",
        "nosuchuser": "Chia bô iōng-chiá hō-chò \"$1\".\nIiōng-chiá hō-chò ū hun toā-jī sè-jī.\nChhiáⁿ kiám-cha lí ê phèng-im, a̍h-sī  [[Special:UserLogin/signup|khui sin iōng-chiá ê kháu-chō.]]",
        "search-section": "(toān-lo̍h $1)",
        "searchall": "choân-pō·",
        "showingresults": "Ē-kha tùi #<b>$2</b> khai-sí hián-sī <b>$1</b> hāng kiat-kó.",
-       "showingresultsnum": "Ē-kha tùi #<b>$2</b> khai-sí hián-sī <b>$3</b> hāng kiat-kó.",
        "showingresultsheader": "對'''$4'''的{{PLURAL:$5|第 '''$1''' 到第 '''$3''' 項結果|第 '''$1 - $2''' 項,總共 '''$3''' 項結果}}",
        "powersearch-legend": "Kiám-sek",
        "preferences": "Siat-tēng",
index f3908ec..0d09d74 100644 (file)
        "qbmyoptions": "'E ppaggene mie",
        "faq": "FAQ",
        "faqpage": "Project:Domanne frequente",
-       "vector-action-addsection": "Aggiunge chiacchierata",
-       "vector-action-delete": "Scancèlla",
-       "vector-action-move": "Spusta",
-       "vector-action-protect": "Prutegge",
-       "vector-action-undelete": "Ripristina",
-       "vector-action-unprotect": "Càgna prutezzione",
-       "vector-view-create": "Cria",
-       "vector-view-edit": "Càgna",
-       "vector-view-history": "Vere cronologgia",
-       "vector-view-view": "Legge",
-       "vector-view-viewsource": "Vere sorgente",
        "actions": "Azione",
        "namespaces": "Namespace",
        "variants": "Variante",
index 811cb5b..51f192a 100644 (file)
        "mergehistory-empty": "Ingen revisjoner kan flettes.",
        "mergehistory-success": "{{PLURAL:$3|Én revisjon|$3 revisjoner}} av [[:$1]] ble flettet til [[:$2]].",
        "mergehistory-fail": "Klarte ikke å utføre historikkfletting; sjekk siden og tidsparameterne igjen.",
+       "mergehistory-fail-toobig": "Det er ikke mulig å utføre historikk-fletting fordi flere enn tillatte $1 {{PLURAL:$1|revisjon|revisjoner}} ville blitt flyttet.",
        "mergehistory-no-source": "Kildesiden $1 finnes ikke.",
        "mergehistory-no-destination": "Målsiden $1 finnes ikke.",
        "mergehistory-invalid-source": "Kildesiden må ha en gyldig tittel.",
        "searchall": "alle",
        "showingresults": "Nedenfor vises opptil {{PLURAL:$1|'''ett''' resultat|'''$1''' resultater}} fra og med nummer <b>$2</b>.",
        "showingresultsinrange": "Nedenfor vises opptil {{PLURAL:$1|<strong>1</strong> resultat|<strong>$1</strong> resulter}} i området #<strong>$2</strong> til #<strong>$3</strong>.",
-       "showingresultsnum": "Nedenfor vises {{PLURAL:$3|'''ett''' resultat|'''$3''' resultater}} fra og med nummer '''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Resultat '''$1''' av '''$3'''|Resultat '''$1 - $2''' av '''$3'''}} for '''$4'''",
        "search-nonefound": "Ingen resultater passet til søket.",
        "powersearch-legend": "Avansert søk",
        "license-nopreview": "(Forhåndsvisning ikke tilgjengelig)",
        "upload_source_url": " (en gyldig, offentlig tilgjengelig adresse)",
        "upload_source_file": " (en fil på din datamaskin)",
+       "listfiles-delete": "slett",
        "listfiles-summary": "Denne spesialsiden viser alle opplastede filer.",
        "listfiles_search_for": "Søk etter filnavn:",
        "imgfile": "fil",
        "duplicate-defaultsort": "Advarsel: Standardsorteringen «$2» tar over for den tidligere sorteringen «$1».",
        "version": "Versjon",
        "version-extensions": "Installerte utvidelser",
+       "version-skins": "Installerte drakter",
        "version-specialpages": "Spesialsider",
        "version-parserhooks": "Parsertillegg",
        "version-variables": "Variabler",
        "version-antispam": "Søppelpostforebygging",
-       "version-skins": "Drakter",
        "version-other": "Annet",
        "version-mediahandlers": "Mediahåndterere",
        "version-hooks": "Haker",
        "version-hook-name": "Navn",
        "version-hook-subscribedby": "Brukes av",
        "version-version": "(versjon $1)",
+       "version-no-ext-name": "[uten navn]",
        "version-license": "Lisens",
        "version-ext-license": "Lisens",
        "version-ext-colheader-name": "Utvidelse",
+       "version-skin-colheader-name": "Drakt",
        "version-ext-colheader-version": "Versjon",
        "version-ext-colheader-license": "Lisens",
        "version-ext-colheader-description": "Beskrivelse",
        "expand_templates_remove_nowiki": "Ikke vis <nowiki>-merkelapper i resultatet",
        "expand_templates_generate_xml": "Vis parsetre som XML",
        "expand_templates_generate_rawhtml": "Vis ubehandlet HTML",
-       "expand_templates_preview": "Forhåndsvisning"
+       "expand_templates_preview": "Forhåndsvisning",
+       "pagelanguage": "Valg av sidespråk",
+       "pagelang-name": "Side",
+       "pagelang-language": "Språk",
+       "pagelang-use-default": "Bruk standardspråk",
+       "pagelang-select-lang": "Velg språk",
+       "right-pagelang": "Endre sidespråk",
+       "action-pagelang": "endre sidespråket",
+       "log-name-pagelang": "Endre språklogg",
+       "log-description-pagelang": "Dette er en logg som viser endringer i sidespråk",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|endret}} sidespråk for $3 fra $4 til $5."
 }
index 34b82a0..d3c08bb 100644 (file)
        "searchrelated": "verwaant",
        "searchall": "alles",
        "showingresults": "Hieronder {{PLURAL:$1|steet '''1''' resultaot|staon '''$1''' resultaoten}}  <b>$1</b> vanaof nummer <b>$2</b>.",
-       "showingresultsnum": "Hieronder {{PLURAL:$3|steet '''1''' resultaot|staon '''$3''' resultaoten}} vanaof nummer '''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Resultaot '''$1''' van '''$3'''|Resultaoten '''$1 - $2''' van '''$3'''}} veur '''$4'''",
        "search-nonefound": "Der bin gien resultaoten veur de zeukopdrachte.",
        "powersearch-legend": "Uutebreid zeuken",
        "rcnotefrom": "Dit bin de wiezigingen sinds <strong>$2</strong> (maximum van <strong>$1</strong> wiezigingen).",
        "rclistfrom": "Bekiek wiezigingen vanaof $3 $2",
        "rcshowhideminor": "$1 kleine wiezigingen",
-       "rcshowhideminor-show": "Bekieken",
-       "rcshowhideminor-hide": "Verbargen",
+       "rcshowhideminor-show": "Bekiek",
+       "rcshowhideminor-hide": "Verbarg",
        "rcshowhidebots": "$1 botgebrukers",
-       "rcshowhidebots-show": "Bekieken",
-       "rcshowhidebots-hide": "Verbargen",
+       "rcshowhidebots-show": "Bekiek",
+       "rcshowhidebots-hide": "Verbarg",
        "rcshowhideliu": "$1 eregistreerden gebrukers",
-       "rcshowhideliu-show": "Bekieken",
-       "rcshowhideliu-hide": "Verbargen",
+       "rcshowhideliu-show": "Bekiek",
+       "rcshowhideliu-hide": "Verbarg",
        "rcshowhideanons": "$1 anonieme gebrukers",
-       "rcshowhideanons-show": "Bekieken",
-       "rcshowhideanons-hide": "Verbargen",
+       "rcshowhideanons-show": "Bekiek",
+       "rcshowhideanons-hide": "Verbarg",
        "rcshowhidepatr": "$1 nao-ekeken bewarkingen",
-       "rcshowhidepatr-show": "Bekieken",
-       "rcshowhidepatr-hide": "Verbargen",
+       "rcshowhidepatr-show": "Bekiek",
+       "rcshowhidepatr-hide": "Verbarg",
        "rcshowhidemine": "$1 mien bewarkingen",
-       "rcshowhidemine-show": "Bekieken",
-       "rcshowhidemine-hide": "Verbargen",
+       "rcshowhidemine-show": "Bekiek",
+       "rcshowhidemine-hide": "Verbarg",
        "rclinks": "Bekiek de leste $1 wiezigingen van de aofgeleupen $2 dagen<br />$3",
        "diff": "wiezig",
        "hist": "gesch",
        "download": "binnenhaolen",
        "unwatchedpages": "Ziejen die niet evolgd wörden",
        "listredirects": "Lieste van deurverwiezingen",
+       "listduplicatedfiles": "Lieste mit bestaanden mit duplikaoten",
        "unusedtemplates": "Ongebruukten mallen",
        "unusedtemplatestext": "Hieronder staon alle ziejen in de naamruumte \"{{ns:template}}\" die nargens gebruukt wörden.\nVergeet niet de verwiezingen nao te kieken veurda'j de mal vortdoon.",
        "unusedtemplateswlh": "aandere verwiezingen",
        "listgrouprights-removegroup-self": "Kan {{PLURAL:$2|groep|groepen}} vortdoon van eigen gebruker: $1",
        "listgrouprights-addgroup-self-all": "Kan alle groepen bie de eigen gebruker doon",
        "listgrouprights-removegroup-self-all": "Kan alle groepen vortdoon van eigen gebruker",
+       "trackingcategories": "Volgkategorieën",
        "mailnologin": "Niet an-emeld.",
        "mailnologintext": "Je mutten [[Special:UserLogin|an-emeld]] ween en n geldig e-mailadres in \"[[Special:Preferences|mien veurkeuren]]\" invoeren um disse funksie te kunnen gebruken.",
        "emailuser": "n Bericht sturen",
        "duplicate-defaultsort": "Waorschuwing: de standardsortering \"$2\" krig veurrang veur de sortering \"$1\".",
        "version": "Versie",
        "version-extensions": "Uutbreidingen die installeerd bin",
+       "version-skins": "Vormgevingen",
        "version-specialpages": "Spesiale ziejen",
        "version-parserhooks": "Parserhoeken",
        "version-variables": "Variabels",
        "version-antispam": "Veurkoemen van ongewunste bewarkingen",
-       "version-skins": "Vormgevingen",
        "version-api": "Api",
        "version-other": "Overige",
        "version-mediahandlers": "Mediaverwarkers",
index dfdeed7..8811cd0 100644 (file)
        "qbmyoptions": "Instellen",
        "faq": "Faken stellte Fragen",
        "faqpage": "Project:Faken stellte Fragen",
-       "vector-action-addsection": "Thema tofögen",
-       "vector-action-delete": "Wegdoon",
-       "vector-action-move": "Schuven",
-       "vector-action-protect": "Schulen",
-       "vector-action-undelete": "Wedderhalen",
-       "vector-action-unprotect": "Siedenschuul ännern",
-       "vector-view-create": "Opstellen",
-       "vector-view-edit": "Ännern",
-       "vector-view-history": "Historie bekieken",
-       "vector-view-view": "Lesen",
-       "vector-view-viewsource": "Borntext bekieken",
        "actions": "Akschonen",
        "namespaces": "Naamrüüm",
        "variants": "Varianten",
        "searchrelated": "verwandt",
        "searchall": "all",
        "showingresults": "Hier {{PLURAL:$1|is een Resultat|sünd '''$1''' Resultaten}}, anfungen mit #'''$2'''.",
-       "showingresultsnum": "Hier {{PLURAL:$3|is een Resultat|sünd '''$3''' Resultaten}}, anfungen mit #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Resultaat '''$1''' vun '''$3'''|Resultaten '''$1 - $2''' vun '''$3'''}} för '''$4'''",
        "search-nonefound": "För de Söökanfraag geev dat keen Resultaten.",
        "powersearch-legend": "Betere Söök",
        "tooltip-preferences-save": "Instellungen spiekern",
        "tooltip-summary": "Giff en korte Tosamenfattung in",
        "common.css": "/** CSS-Kood hier binnen warrt för all Stilvörlagen (Skins) inbunnen */",
-       "monobook.css": "/* disse Datei ännern üm de Monobook-Stilvörlaag för de ganze Siet antopassen */",
        "anonymous": "{{PLURAL:$1|Anonym Bruker|Anonyme Brukers}} vun {{SITENAME}}",
        "siteuser": "{{SITENAME}}-Bruker $1",
        "anonuser": "{{SITENAME}} anonym  Bruker user $1",
index a9afdab..bcce965 100644 (file)
        "searchrelated": "सम्बन्धित",
        "searchall": "सबै",
        "showingresults": "देखाउँदै  {{PLURAL:$1|'''१''' नतिजा|'''$1''' नतिजाहरू }} , #'''$2''' बाट सुरुहुने ।",
-       "showingresultsnum": "तल देखाउदै  {{PLURAL:$3|'''१''' नतिजा|'''$3''' नतिजाहरु }}, #'''$2''' बाट सुरुहुने ।",
        "showingresultsheader": "{{PLURAL:$5|नतिजा '''$1''' को '''$3'''|नतिजाहरु '''$1 - $2''' को'''$3'''}}  ,'''$4''' को लागि",
        "search-nonefound": "तपाईँको क्वेरीसँग मेल खाने नतिजाहरू भेटिएनन्",
        "powersearch-legend": "उन्नत खोज",
index 1ec5f12..fc941fa 100644 (file)
@@ -57,7 +57,8 @@
                        "לערי ריינהארט",
                        "아라",
                        "Mar(c)",
-                       "Calak"
+                       "Calak",
+                       "Arg"
                ]
        },
        "tog-underline": "Koppelingen onderstrepen:",
        "searchall": "alle",
        "showingresults": "Hieronder {{PLURAL:$1|staat '''1''' resultaat|staan '''$1''' resultaten}} vanaf #'''$2'''.",
        "showingresultsinrange": "Hieronder {{PLURAL:$1|wordt|worden}} maximaal {{PLURAL:$1|<strong>1</strong> resultaat|<strong>$1 </strong>resultaten}} weergegeven in het bereik #<strong>$2</strong> tot #<strong>$3</strong>.",
-       "showingresultsnum": "Hieronder {{PLURAL:$3|staat '''1''' resultaat|staan '''$3''' resultaten}} vanaf #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Resultaat '''$1''' van '''$3'''|Resultaten '''$1 - $2''' van '''$3'''}} voor '''$4'''",
        "search-nonefound": "Er zijn geen resultaten voor uw zoekopdracht.",
        "powersearch-legend": "Uitgebreid zoeken",
        "license-nopreview": "(Voorvertoning niet beschikbaar)",
        "upload_source_url": " (een geldige, publiek toegankelijke URL)",
        "upload_source_file": " (een bestand op uw computer)",
+       "listfiles-delete": "verwijderen",
        "listfiles-summary": "Op deze speciale pagina zijn alle toegevoegde bestanden te bekijken.",
        "listfiles_search_for": "Zoeken naar bestand:",
        "imgfile": "bestand",
        "duplicate-defaultsort": "'''Waarschuwing:''' de standaardsortering \"$2\" krijgt voorrang voor de sortering \"$1\".",
        "version": "Versie",
        "version-extensions": "Geïnstalleerde uitbreidingen",
+       "version-skins": "Geïnstalleerde vormgevingen",
        "version-specialpages": "Speciale pagina's",
        "version-parserhooks": "Parserhooks",
        "version-variables": "Variabelen",
        "version-antispam": "Spampreventie",
-       "version-skins": "Vormgevingen",
        "version-other": "Overige",
        "version-mediahandlers": "Mediaverwerkers",
        "version-hooks": "Hooks",
        "version-license": "Licentie voor MediaWiki",
        "version-ext-license": "Licentie",
        "version-ext-colheader-name": "Uitbreiding",
+       "version-skin-colheader-name": "Vormgeving",
        "version-ext-colheader-version": "Versie",
        "version-ext-colheader-license": "Licentie",
        "version-ext-colheader-description": "Beschrijving",
        "expand_templates_remove_nowiki": "Tags <nowiki> in resultaat onderdrukken",
        "expand_templates_generate_xml": "XML-parserboom bekijken",
        "expand_templates_generate_rawhtml": "Ruwe HTML weergeven",
-       "expand_templates_preview": "Voorvertoning"
+       "expand_templates_preview": "Voorvertoning",
+       "pagelang-name": "Pagina",
+       "pagelang-language": "Taal",
+       "pagelang-select-lang": "Taal selecteren"
 }
index 7ffb521..40d1bee 100644 (file)
        "searchrelated": "relatert",
        "searchall": "alle",
        "showingresults": "Nedanfor er opp til {{PLURAL:$1|'''eitt'''|'''$1'''}} resultat som byrjar med nummer '''$2''' vist{{PLURAL:$1||e}}.",
-       "showingresultsnum": "Nedanfor er {{PLURAL:$3|'''eitt'''|'''$3'''}} resultat som byrjar med nummer '''$2''' {{PLURAL:$3|vist|viste}}.",
        "showingresultsheader": "{{PLURAL:$5|Resultat '''$1''' av '''$3'''|Resultat '''$1 - $2''' av '''$3'''}} for '''$4'''",
        "search-nonefound": "Ingen resultat svarte til førespurnaden.",
        "powersearch-legend": "Avansert søk",
        "duplicate-defaultsort": "Åtvaring: Standardsorteringa «$2» tar over for den tidlegare sorteringa «$1».",
        "version": "Versjon",
        "version-extensions": "Installerte utvidingar",
+       "version-skins": "Draktar",
        "version-specialpages": "Spesialsider",
        "version-parserhooks": "Parsertillegg",
        "version-variables": "Variablar",
        "version-antispam": "Hindring av spam",
-       "version-skins": "Draktar",
        "version-other": "Anna",
        "version-mediahandlers": "Mediahandsamarar",
        "version-hooks": "Tilleggsuttrykk",
diff --git a/languages/i18n/nrm.json b/languages/i18n/nrm.json
new file mode 100644 (file)
index 0000000..e15c5ba
--- /dev/null
@@ -0,0 +1,100 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Crochet.david",
+                       "Nemo bis",
+                       "WikiEoFrEn"
+               ]
+       },
+       "wednesday": "Mêcrédi",
+       "friday": "Vendrédi",
+       "january": "Jaunvyi",
+       "february": "Févryi",
+       "march": "Mar",
+       "april": "Avri",
+       "may_long": "Mouai",
+       "june": "Juin",
+       "july": "Juilet",
+       "august": "Âot",
+       "september": "Setembe",
+       "october": "Octobe",
+       "november": "Novembe",
+       "december": "Décembe",
+       "cancel": "R'nonchi",
+       "qbedit": "Amendaer",
+       "help": "Aîgue",
+       "search": "Trachi",
+       "searchbutton": "Trachi",
+       "history_short": "Historique",
+       "printableversion": "Versioun imprimablle",
+       "edit": "Amendaer",
+       "create": "Criyaer",
+       "editthispage": "Amendaer la page",
+       "create-this-page": "Criyaer la page",
+       "specialpage": "Page espéciâle",
+       "toolbox": "Boête à ôtis",
+       "otherlanguages": "En d'aut's langues",
+       "currentevents": "Nouvelles du jouo",
+       "mainpage": "Aîgue",
+       "mainpage-description": "Page dé garde",
+       "editsection": "amendaer",
+       "editold": "amendaer",
+       "editsectionhint": "Amendaer la sectioun: $1",
+       "red-link-title": "$1 (page à criyaer)",
+       "nstab-user": "Page dé faichonneu",
+       "nstab-special": "Page espéciâle",
+       "badtitle": "Mâovais tite",
+       "login": "Se merqùi",
+       "nav-login-createaccount": "Se merqùi / Coumpte nouvé",
+       "userlogout": "S'n alaer",
+       "gotaccountlink": "Se merqùi",
+       "summary": "Countenun:",
+       "minoredit": "Ch'tî-chîn est un p'tit amendement",
+       "savearticle": "Saôvaer la page",
+       "showdiff": "Mouôntrer l's amendements",
+       "editing": "Amendement de $1",
+       "editundo": "défaire",
+       "searchmenu-exists": "'''I y a eune page \"[[:$1]]\" sur l'outchi''",
+       "searchmenu-new": "'''Criyaer la page \"[[:$1]]\" dauns la Viqùipédie normaunde !'''",
+       "search-result-size": "$1 ({{PLURAL:$2|1 mot|$2 mots}})",
+       "search-suggest": "Veurs-tu dyire: $1",
+       "recentchanges": "Dreins amendements",
+       "recentchanges-label-newpage": "L'amendement a criyaée eune page",
+       "recentchanges-label-minor": "Ch'tî-chîn est un p'tit amendement",
+       "show": "Mouôntrer",
+       "upload": "Chèrgi un dôssyi",
+       "filehist-datetime": "Date/Temps",
+       "filehist-user": "Faichonneu",
+       "randompage": "À dgi l'adèrt",
+       "move": "Déplléchi",
+       "allpagesfrom": "Queri les pages qùi qu'menchent à:",
+       "allarticles": "Touos l's articl'yes",
+       "watchlist": "Ma liste à dgetter",
+       "mywatchlist": "Ma liste à dgetter",
+       "deletepage": "Dénichi la page",
+       "blanknamespace": "(Principâ)",
+       "mycontris": "M's abyinements",
+       "contribslink": "abyinements",
+       "allmessagesname": "Noum",
+       "allmessages-filter-all": "Touot",
+       "allmessages-filter-modified": "Chaungi",
+       "allmessages-prefix": "Faire coulaer par préfiqùi:",
+       "tooltip-pt-preferences": "Préféthences",
+       "tooltip-pt-mycontris": "Eune liste dé v's abyinements",
+       "tooltip-pt-login": "Ou n'êtes pon r'gistré. Vos pou'aez itou vous servi de la Viqùipédie sauns vous merqùi, mais ch'est muus dé se merqùi.",
+       "tooltip-pt-logout": "S'n alaer",
+       "tooltip-ca-edit": "Vos pouvaez amendaer cht'é page-ilo. Merci d'appier sus la préveie, devaunt que de sâovaer.",
+       "tooltip-ca-addsection": "Criyaer eune nouvé section",
+       "tooltip-ca-move": "Déplléchi la page",
+       "tooltip-ca-watch": "Ajouôtez cht'é page-ilo sus vot' liste à gùetti",
+       "tooltip-p-logo": "Viyiz la page dé garde",
+       "tooltip-n-mainpage": "Viyiz la page dé garde",
+       "tooltip-n-mainpage-description": "Viyiz la page dé garde",
+       "tooltip-n-recentchanges": "Eune liste des dreins amendements sur la Viqùipédie/Ouitchipédie en nouormand.",
+       "tooltip-t-upload": "Chèrgi un dôssyi",
+       "tooltip-t-specialpages": "Eune liste des pages espéciâles",
+       "tooltip-t-print": "Versioun imprimablle dé la page",
+       "tooltip-save": "Sâover v's amendements",
+       "autoredircomment": "Èrdirect sus [[$1]]",
+       "specialpages": "Page espéciâle"
+}
index 10c2889..8e77368 100644 (file)
        "qbpageoptions": "Letlakala le",
        "qbmyoptions": "Matlakala a ka",
        "faq": "\"FAQ\"",
-       "vector-action-addsection": "Lokela sererwa",
-       "vector-action-delete": "Phumula",
-       "vector-action-move": "Huduša",
-       "vector-action-protect": "Lota",
-       "vector-view-create": "Hlola",
-       "vector-view-edit": "Fetola",
-       "vector-view-history": "Laetša histori",
-       "vector-view-view": "Bala",
-       "vector-view-viewsource": "Lebelela mothopo",
        "actions": "Ditiro",
        "namespaces": "Di-\"namespace\"",
        "variants": "Di-\"variant\"",
        "searchmenu-exists": "'''Go ena le letlaka la leina la \"[[:$1]]\" go wiki ye.'''",
        "searchmenu-new": "'''Hlola letlakala \"[[:$1]]\" go wiki ye!'''",
        "searchprofile-articles": "Matlakala a diteng",
-       "searchprofile-project": "Thušo le matlaka a diprojeke",
        "searchprofile-images": "Diphatlalatši tša \"multi\"",
        "searchprofile-everything": "Ka moka",
        "searchprofile-advanced": "Maemo-godimo",
        "searchprofile-articles-tooltip": "Fetleka gare ga $1",
-       "searchprofile-project-tooltip": "Fetleka gare ga $1",
        "searchprofile-images-tooltip": "Fetleka difaele",
        "searchprofile-everything-tooltip": "Fetleka matlakala ka moka (le matlakala a dipoledišano)",
        "searchprofile-advanced-tooltip": "Fetleka go di-\"namespace\" tša \"custom\"",
        "prefs-files": "Difaele",
        "youremail": "E-Poso",
        "username": "Mošomiši:",
-       "uid": "Nomoro ya mošomiši:",
        "prefs-memberingroups": "Leloko la {{PLURAL:$1|ya sehlopha|ya dihlopha}}:",
        "yourrealname": "Leina la mmakgonthe:",
        "yourlanguage": "Polelo:",
        "log": "Di-''log''",
        "all-logs-page": "Di-''log'' tša bohle ka moka",
        "allpages": "Matlakala ka moka",
-       "alphaindexline": "$1 goya go $2",
        "nextpage": "Letlakala lago latela ($1)",
        "prevpage": "Letlakala la go feta ($1)",
        "allpagesfrom": "Bontšha matlakala go thoma go :",
index 2c07442..1d2cd01 100644 (file)
        "searchall": "Totes",
        "showingresults": "Afichatge de <b>$1</b> resultat{{PLURAL:$1||s}} a partir del n°<b>$2</b>.",
        "showingresultsinrange": "Afichar çaijós fins a {{PLURAL:$1|<strong>1</strong> resultat|<strong>$1</strong> resultats}} dins la seria #<strong>$2</strong> a #<strong>$3</strong>.",
-       "showingresultsnum": "Afichatge {{PLURAL:$3|d''''1''' resultat|de '''$3''' resultats}} a partir del #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Resultat '''$1'''|Resultats '''$1 - $2'''}} de '''$3''' per '''$4'''",
        "search-nonefound": "I a pas cap de resultat correspondent a la requèsta.",
        "powersearch-legend": "Recèrca avançada",
index 12937ed..b64b5e6 100644 (file)
        "qbmyoptions": "ମୋ ପୃଷ୍ଠାଗୁଡ଼ିକ",
        "faq": "ବାରମ୍ବାର ପଚରାଯାଉଥିବା ପ୍ରଶ୍ନ",
        "faqpage": "Project:ବାରମ୍ବାର ପଚରାଯାଉଥିବା ପ୍ରଶ୍ନ",
-       "vector-action-addsection": "ନୂଆ ଯୋଡ଼ନ୍ତୁ",
-       "vector-action-delete": "ଲିଭାଇବେ",
-       "vector-action-move": "ଘୁଞ୍ଚାଇବେ",
-       "vector-action-protect": "କିଳିବେ",
-       "vector-action-undelete": "ଲିଭାଇବେ ନାହିଁ",
-       "vector-action-unprotect": "କିଳିବେ ନାହିଁ",
-       "vector-view-create": "ତିଆରି କରନ୍ତୁ",
-       "vector-view-edit": "ସମ୍ପାଦନା (Edit)",
-       "vector-view-history": "ଇତିହାସ",
-       "vector-view-view": "ପଢ଼ନ୍ତୁ",
-       "vector-view-viewsource": "ସୋର୍ସ ଦେଖନ୍ତୁ",
        "actions": "କାର୍ଯ୍ୟକ୍ରମ",
        "namespaces": "ନେମସ୍ପେସ",
        "variants": "ନିଆରା",
        "difference-missing-revision": "($1) {{PLURAL:$2|was|were}}ର ଭିନ୍ନତା {{PLURAL:$2|One revision|$2 revisions}} ମିଳିଲା ନାହିଁ ।\n\nପୁରୁଣା ହୋଇଯାଇଥିବା ଇତିହାସ ଲିଙ୍କ ଯାହା ଏକ ଲିଭାଯାଇଥିବା ପୃଷ୍ଠାକୁ ଦିଆଯାଇଥିବାରୁ ଏହା ସାଧାରଣତଃ ହୋଇଥାଏ ।\nଅଧିକ ବିବରଣୀ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log]ରେ ମିଳିପାରିବ ।",
        "searchresults": "ଖୋଜା ଫଳାଫଳ",
        "searchresults-title": "\"$1\" ପାଇଁ ଖୋଜିବାରୁ ମିଳିଲା",
-       "toomanymatches": "ବହୁଗୁଡ଼ିଏ ମେଳ ଲେଉଟିଆସିଛି, ଦୟାକରି ନୂଆ ପ୍ରଶ୍ନଟିଏ ସହିତ ଖୋଜନ୍ତୁ ।",
        "titlematches": "ପୃଷ୍ଠାଟିର ନାମ ମିଶୁଅଛି",
        "textmatches": "ପୃଷ୍ଠାଟିର ଲେଖା ମିଶୁଅଛି",
        "notextmatches": "ପୃଷ୍ଠାଟିର ନାମ ମିଶୁନାହିଁ",
        "searchrelated": "ଯୋଡ଼ା",
        "searchall": "ସବୁ",
        "showingresults": "ତଳେ {{PLURAL:$1|'''ଗୋଟିଏ'''  ଫଳାଫଳ|'''$1'''ଟି ଫଳାଫଳ}} ଦେଖାଉଛୁ ଯାହା #'''$2'''ରେ ଆରମ୍ଭ ହୋଇଅଛି ।",
-       "showingresultsnum": "ତଳେ {{PLURAL:$3|ଗୋଟିଏ ଫଳାଫଳ|'''$3'''ଟି ଫଳାଫଳ}} ଦେଖାଉଛୁ ଯାହା #'''$2'''ରେ ଆରମ୍ଭ ହୋଇଅଛି ।",
        "showingresultsheader": "'''$4''' ପାଇଁ {{PLURAL:$5|'''$3'''ର '''$1''' ଫଳ |'''$3'''ର '''$1 - $2''' ଫଳ }}",
        "search-nonefound": "ଆପଣ ଖୋଜିଥିବା ପ୍ରଶ୍ନ ପାଇଁ କିଛି ଫଳ ମିଳିଲା ନାହିଁ ।",
        "powersearch-legend": "ଗହିର ଖୋଜା",
index 0b11f46..492a1f4 100644 (file)
        "qbmyoptions": "Мæ фæрстæ",
        "faq": "FAQ",
        "faqpage": "Project:FAQ",
-       "vector-action-addsection": "Нæуæг ныхас бакæнын",
-       "vector-action-delete": "Схафын",
-       "vector-action-move": "Ном ивын",
-       "vector-action-protect": "Сæхгæнын",
-       "vector-action-undelete": "Рацаразын",
-       "vector-action-unprotect": "Ивын хъахъхъæд",
-       "vector-view-create": "Скæнын",
-       "vector-view-edit": "Ивын",
-       "vector-view-history": "Истори",
-       "vector-view-view": "Кæсын",
-       "vector-view-viewsource": "Код кæсын",
        "actions": "Архайдтæ",
        "namespaces": "Номдæттæ",
        "variants": "Варианттæ",
        "searchmenu-exists": "'''Ацы викийы ис фарс \"[[:$1]]\" номимæ.'''",
        "searchmenu-new": "'''Сараз фарс \"[[:$1]]\" ацы викийы!'''",
        "searchprofile-articles": "Мидисы фæрстæ",
-       "searchprofile-project": "Æххуыс æмæ Проекты фæрстæ",
        "searchprofile-images": "Мультимеди",
        "searchprofile-everything": "Алцыдæр",
        "searchprofile-advanced": "Лæмбынæг",
        "searchprofile-articles-tooltip": "Агурын ам: $1",
-       "searchprofile-project-tooltip": "Агурын ам: $1",
        "searchprofile-images-tooltip": "Агурын файлтæ",
        "searchprofile-everything-tooltip": "Агурын алыран дæр (тæрхоны фæрсты дæр)",
        "searchprofile-advanced-tooltip": "Агурын равзаргæ номдæтты",
        "prefs-custom-js": "Хиæвæрд JavaScript",
        "youremail": "E-mail:",
        "username": "{{GENDER:$1|Фæсномыг}}:",
-       "uid": "{{GENDER:$1|Архайæджы}} ID:",
        "yourrealname": "Æцæг ном:",
        "yourlanguage": "Æвзаг:",
        "yourvariant": "Мидисы æвзаджы вариант:",
        "log": "Логтæ",
        "all-logs-page": "Иууылдæр логтæ",
        "allpages": "Иууылдæр фæрстæ",
-       "alphaindexline": "$1 (уыдоны ’хсæн цы уацтæ ис, фен) $2",
        "nextpage": "Фæдылдзог фарс ($1)",
        "prevpage": "Раздæры фарс ($1)",
        "allarticles": "Иууылдæр фæрстæ",
        "block": "Архайæгыл хъоды кæнын",
        "blockip": "Бахъоды кæнын",
        "blockip-legend": "Архайæгыл хъоды кæнын",
-       "ipadressorusername": "IP адрис кæнæ фæсномыг:",
+       "ipaddressorusername": "IP адрис кæнæ фæсномыг:",
        "ipbexpiry": "Фæуыны афон:",
        "ipbreason": "Аххос:",
        "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",
        "lastmodifiedatby": "Ацы фарс фæстаг хатт фæивта $3, $1, $2 сахатыл.",
        "others": "æндæртæ",
        "spamprotectiontitle": "Спамы ныхмæ фильтр",
-       "skinname-cologneblue": "Кёльны æрхæндæг",
-       "skinname-monobook": "Моно-чиныг",
        "previousdiff": "← Зæронддæр ивд",
        "nextdiff": "Фæстæдæр ивд →",
        "thumbsize": "Къаддæргонды бæрц:",
        "svg-long-desc": "SVG файл, номиналон $1 × $2 пикселы, файлы бæрц: $3",
        "show-big-image": "Оригиналы файл",
        "newimages": "Ног нывты галерей",
-       "showhidebots": "(роботты куыст $1)",
        "ilsubmit": "Агурын",
        "bydate": "рæстæгмæ гæсгæ",
        "bad_image_list": "Формат у ахæм:\n\nÆрмæстдæр рæгъон рæнхъытæ (рæнхъытæ, кæдон байдауынц * символæй) нымады кæнынц.\nФыццаг æрвитæн рæнхъы хъуамæ æрвита æвзæр файлмæ.\nИннæ æрвитæнтæ уыцы рæнхъы нымады кæнынц куыд уæлвæткытæ, кæдон сты фæрстæ кæдæм ис бар бавæрын файл.",
index 3746ad8..d66eb12 100644 (file)
@@ -28,7 +28,7 @@
        "tog-hidepatrolled": "ਤਾਜ਼ਾ ਤਬਦੀਲੀਆਂ ਵਿੱਚੋਂ ਜਾਂਚੀਆਂ ਸੋਧਾਂ ਲੁਕਾਓ",
        "tog-newpageshidepatrolled": "ਨਵੀਂ ਸਫ਼ਾ ਸੂਚੀ ਵਿੱਚੋਂ ਜਾਂਚੇ ਸਫ਼ੇ ਲੁਕਾਓ",
        "tog-extendwatchlist": "ਸਿਰਫ਼ ਤਾਜ਼ਾ ਹੀ ਨਹੀਂ, ਸਗੋਂ ਸਾਰੀਆਂ ਤਬਦੀਲੀਆਂ ਨੂੰ ਵਖਾਉਣ ਲਈ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਨੂੰ ਵਧਾਓ",
-       "tog-usenewrc": "ਤਾà¨\9c਼ਾ à¨¤à¨¬à¨¦à©\80ਲà©\80à¨\86à¨\82 à¨\85ਤà©\87 à¨¨à¨¿à¨\97ਰਾਨà©\80-ਲਿਸà¨\9f à¨µà¨¿à©±à¨\9a à¨¸à¨«à¨¼à©\87 à¨®à©\81ਤਾਬà¨\95 à¨¤à¨¬à¨¦à©\80ਲà©\80à¨\86à¨\82 à¨¦à©\87 à¨\97ਰà©\81ੱà¨\95 ਬਣਾਓ (ਜਾਵਾਸਕਰਿਪਟ ਲੋੜੀਂਦੀ ਹੈ)",
+       "tog-usenewrc": "ਹਾਲà©\80à¨\86 à¨¤à¨¬à¨¦à©\80ਲà©\80à¨\86à¨\82 à¨\85ਤà©\87 à¨¨à¨¿à¨\97ਰਾਨà©\80-ਲਿਸà¨\9f à¨µà¨¿à©±à¨\9a à¨¸à¨«à¨¼à©\87 à¨®à©\81ਤਾਬà¨\95 à¨¤à¨¬à¨¦à©\80ਲà©\80à¨\86à¨\82 à¨¦à©\87 à¨\97ਰà©\81ੱਪ ਬਣਾਓ (ਜਾਵਾਸਕਰਿਪਟ ਲੋੜੀਂਦੀ ਹੈ)",
        "tog-numberheadings": "ਆਟੋ-ਨੰਬਰ ਸਿਰਨਾਵੇਂ",
        "tog-showtoolbar": "ਸੋਧ ਸੰਦਬਕਸਾ ਵੇਖੋ",
        "tog-editondblclick": "ਦੋ ਵਾਰ ਕਲਿੱਕ ਕਰਨ 'ਤੇ ਸਫ਼ੇ ਸੋਧੋ",
        "qbmyoptions": "ਮੇਰੇ ਸਫ਼ੇ",
        "faq": "ਅਕਸਰ ਪੁੱਛੇ ਜਾਂਦੇ ਸੁਆਲ",
        "faqpage": "Project:ਸਵਾਲ-ਜਵਾਬ",
-       "vector-action-addsection": "ਵਿਸ਼ਾ ਜੋੜੋ",
-       "vector-action-delete": "ਹਟਾਓ",
-       "vector-action-move": "ਭੇਜੋ",
-       "vector-action-protect": "ਸੁਰੱਖਿਆ",
-       "vector-action-undelete": "ਹਟਾਉਣਾ-ਵਾਪਸ",
-       "vector-action-unprotect": "ਸੁਰੱਖਿਆ ਬਦਲੋ",
-       "vector-view-create": "ਬਣਾਓ",
-       "vector-view-edit": "ਸੋਧੋ",
-       "vector-view-history": "ਅਤੀਤ ਵੇਖੋ",
-       "vector-view-view": "ਪੜ੍ਹੋ",
-       "vector-view-viewsource": "ਸਰੋਤ ਵੇਖੋ",
        "actions": "ਕਾਰਵਾਈਆਂ",
        "namespaces": "ਨਾਮਸਥਾਨ",
        "variants": "ਬਦਲ",
        "mypreferencesprotected": "ਤੁਹਾਨੂੰ ਆਪਣੀਆਂ ਪਸੰਦਾਂ ਵਿੱਚ ਸੋਧ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ।",
        "ns-specialprotected": "ਖ਼ਾਸ ਸਫ਼ਿਆਂ ’ਚ ਫੇਰ-ਬਦਲ ਨਹੀਂ ਹੋ ਸਕਦੇ।",
        "titleprotected": "ਇਹ ਸਿਰਲੇਖ [[User:$1|$1]] ਵੱਲੋਂ ਸੁਰੱਖਿਅਤ ਕੀਤਾ ਗਿਆ ਹੈ ਅਤੇ ਵਰਤਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ। ਦਿੱਤਾ ਹੋਇਆ ਕਾਰਨ ਹੈ, \"''$2''\"।",
-       "filereadonlyerror": "\"$1\" à¨«à¨¼à¨¾à¨\88ਲ à¨µà¨¿à©±à¨\9a à¨¤à¨¬à¨¦à©\80ਲà©\80 à¨¨à¨¹à©\80à¨\82 à¨¹à©\8b à¨°à¨¹à©\80 à¨\95ਿà¨\89à¨\82à¨\95ਿ à¨«à¨¼à¨¾à¨\88ਲ à¨­à©°à¨¡à¨¾à¨° \"$2\" à¨¸à¨¿à¨°à¨«à¨¼ à¨ªà©\9cà©\8dਹਨਯà©\8bà¨\97 à¨°à©\82ਪ à¨µà¨¿à¨\9a à¨¹à©\88।\n\nà¨\89ਹ à¨ªà©\8dਰਸ਼ਾਸà¨\95, à¨\9cਿਹਨà©\87 à¨\87ਹ à¨°à©\8bà¨\95 à¨²à¨¾à¨\88 à¨¹à©\88, à¨¦à¨¾ à¨\95ਹਿਣਾ à¨¹à©\88:",
+       "filereadonlyerror": "\"$1\" à¨«à¨¼à¨¾à¨\88ਲ à¨µà¨¿à©±à¨\9a à¨¤à¨¬à¨¦à©\80ਲà©\80 à¨¨à¨¹à©\80à¨\82 à¨¹à©\8b à¨¸à¨\95ਦà©\80 à¨\95ਿà¨\89à¨\82à¨\95ਿ à¨«à¨¼à¨¾à¨\88ਲ à¨­à©°à¨¡à¨¾à¨° \"$2\" à¨¸à¨¿à¨°à¨«à¨¼ à¨µà©\87à¨\96ਣਯà©\8bà¨\97 à¨°à©\82ਪ à¨µà¨¿à¨\9a à¨¹à©\88।\n\nà¨\89ਹ à¨ªà©\8dਰਬੰਧà¨\95, à¨\9cਿਹਨà©\87 à¨\87ਹ à¨°à©\8bà¨\95 à¨²à¨¾à¨\88 à¨¹à©\88, à¨¦à¨¾ à¨\95ਹਿਣਾ à¨¹à©\88: ''$3''",
        "invalidtitle-knownnamespace": "ਥਾਂ-ਨਾਮ \"$2\" ਅਤੇ ਲਿਖਤ \"$3\" ਵਾਲ਼ਾ ਗ਼ਲਤ ਸਿਰਲੇਖ",
        "invalidtitle-unknownnamespace": "ਅਣਜਾਣ ਨਾਂ-ਸਥਾਨ ਗਿਣਤੀ $1 ਅਤੇ ਲਿਖਤ $2 ਵਾਲ਼ਾ ਗ਼ਲਤ ਸਿਰਲੇਖ",
        "exception-nologin": "ਲਾਗਇਨ ਨਹੀਂ ਕੀਤਾ",
        "virus-badscanner": "ਮੰਦਾ ਪ੍ਰਬੰਧ: ਅਣਜਾਣ ਵਾਇਰਸ ਸਕੈਨਰ: ''$1''",
        "virus-scanfailed": "ਸਕੈਨ ਫੇਲ੍ਹ ਹੈ (ਕੋਡ $1)",
        "virus-unknownscanner": "ਅਣਪਛਾਤਾ ਐਂਟੀਵਾਇਰਸ:",
-       "logouttext": "'''ਹੁਣ ਤੁਸੀਂ ਵਿਦਾਈ ਲੈ ਚੁੱਕੇ ਹੋ।'''\n\nਤੁਸੀਂ {{SITENAME}} ਦੀ ਵਰਤੋਂ ਗੁਮਨਾਮ ਰਹਿ ਕੇ ਕਰ ਸਕਦੇ ਹੋ ਜਾਂ ਦੁਬਾਰਾ ਇਹੋ ਜਾਂ ਵੱਖਰੇ ਵਰਤੋਂਕਾਰ ਵਜੋਂ ਦਾਖ਼ਲਾ ਲੈ ਸਕਦੇ ਹੋ।\nਧਿਆਨ ਦਿਉ ਕਿ ਜਿੰਨੀ ਦੇਰ ਤੱਕ ਤੁਸੀਂ ਆਪਣੇ ਬਰਾਊਜ਼ਰ ਦਾ ਕੈਸ਼ ਸਾਫ਼ ਨਹੀਂ ਕਰਦੇ, ਕੁਝ ਸਫ਼ੇ ਇੱਦਾਂ ਵਿਖਣਗੇ ਜਿਵੇਂ ਤੁਸੀਂ ਅਜੇ ਵੀ ਦਾਖ਼ਲ ਹੀ ਹੋ।",
+       "logouttext": "<strong>ਹੁਣ ਤੁਸੀਂ ਵਿਦਾਈ ਲੈ ਚੁੱਕੇ ਹੋ।</strong> ਧਿਆਨ ਦਿਉ ਕਿ ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਆਪਣੇ ਬਰਾਊਜ਼ਰ ਦਾ ਕੈਸ਼ ਸਾਫ਼ ਨਹੀਂ ਕਰਦੇ, ਕੁਝ ਸਫ਼ੇ ਏਦਾਂ ਵਿਖਾਈ ਦੇ ਸਕਦੇ ਹਨ ਕਿ ਜਿਵੇਂ ਤੁਸੀਂ ਅਜੇ ਵੀ ਲਾਗਇਨ ਹੀ ਹੋ।",
        "welcomeuser": "$1 ਜੀ ਆਇਆਂ ਨੂੰ!",
        "welcomecreation-msg": "ਤੁਹਾਡਾ ਖਾਤਾ ਬਣ ਚੁੱਕਾ ਹੈ। ਆਪਣੀਆਂ [[Special:Preferences|{{SITENAME}} ਪਸੰਦ]] ਬਦਲਣੀ ਨਾ ਭੁੱਲੋ।",
        "yourname": "ਵਰਤੋਂਕਾਰ-ਨਾਂ:",
        "createacct-benefit-body3": "ਹਾਲੀਆ {{PLURAL:$1|ਯੋਗਦਾਨੀ}}",
        "badretype": "ਤੁਹਾਡੇ ਵਲੋਂ ਦਿੱਤੇ ਪਾਸਵਰਡ ਮਿਲਦੇ ਨਹੀਂ ਹਨ।",
        "userexists": "ਯੂਜ਼ਰ-ਨਾਂ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ। ਵੱਖਰਾ ਨਾਂ ਚੁਣੋ ਜੀ।",
-       "loginerror": "ਲਾਗਇਨ ਗਲਤੀ",
+       "loginerror": "ਲਾà¨\97à¨\87ਨ à¨\97਼ਲਤà©\80",
        "createacct-error": "ਖਾਤਾ ਬਣਾਉਣ ਵਿਚ ਗਲਤੀ",
        "createaccounterror": "ਖਾਤਾ ਬਣਾਇਆ ਨਹੀਂ ਜਾ ਸਕਿਆ: $1",
        "nocookiesnew": "ਯੂਜ਼ਰ ਅਕਾਊਂਟ ਬਣਾਇਆ ਗਿਆ ਹੈ, ਪਰ ਤੁਸੀਂ ਲਾਗਇਨ ਨਹੀਂ ਕੀਤਾ ਹੈ।{{SITENAME}} uses cookies to log in users. You have cookies disabled. Please enable them, then log in with your new username and password.",
        "user-mail-no-addy": "ਬਿਨਾਂ ਈ-ਮੇਲ ਪਤਾ ਦਿੱਤੇ ਈ-ਮੇਲ ਭੇਜਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ।",
        "user-mail-no-body": "ਖ਼ਾਲੀ ਜਾਂ ਬਹੁਤੀ ਛੋਟੀ ਸਮੱਗਰੀ ਨਾਲ਼ ਈਮੇਲ ਭੇਜਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ ਗਈ",
        "changepassword": "ਪਾਸਵਰਡ ਬਦਲੋ",
-       "resetpass_announce": "ਤà©\81ਸà©\80à¨\82 à¨\87ੱà¨\95 à¨\86ਰà¨\9c਼à©\80 à¨\88-ਮà©\87ਲ à¨\95à©\80ਤà©\87 à¨\95à©\8bਡ à¨¨à¨¾à¨² à¨²à¨¾à¨\97à¨\87ਨ à¨\95à©\80ਤਾ à¨¹à©\88। à¨²à¨¾à¨\97à¨\87ਨ à¨ªà©\82ਰਾ à¨\95ਰਨ à¨²à¨\88, à¨¤à©\81ਹਾਨà©\82à©° à¨\87ੱਥà©\87 à¨¨à¨µà¨¾à¨\82 à¨ªà¨¾à¨¸à¨µà¨°à¨¡ à¨¦à©\87ਣਾ à¨ªà¨µà©\87à¨\97ਾ:",
+       "resetpass_announce": "ਲਾà¨\97à¨\87ਨ à¨ªà©\82ਰਾ à¨\95ਰਨ à¨²à¨\88 à¨¤à©\81ਹਾਨà©\82à©° à¨¨à¨µà¨¾à¨\82 à¨ªà¨¾à¨¸à¨µà¨°à¨¡ à¨¬à¨£à¨¾à¨\89ਣਾ à¨ªà¨µà©\87à¨\97ਾ।",
        "resetpass_header": "ਅਕਾਊਂਟ ਪਾਸਵਰਡ ਬਦਲੋ",
        "oldpassword": "ਪੁਰਾਣਾ ਪਾਸਵਰਡ:",
        "newpassword": "ਨਵਾਂ ਪਾਸਵਰਡ:",
        "resetpass-abort-generic": "ਇੱਕ ਐਕਸਟੈਂਸ਼ਨ ਵੱਲੋਂ ਪਾਸਵਰਡ ਦੀ ਤਬਦੀਲੀ ਰੱਦ ਕੀਤੀ ਗਈ",
        "passwordreset": "ਪਾਸਵਰਡ ਮੁੜ-ਸੈੱਟ ਕਰੋ",
        "passwordreset-text-one": "ਪਾਸਵਰਡ ਦੁਬਾਰਾ ਬਣਾਉਣ ਲਈ ਇਹ ਫ਼ਾਰਮ ਭਰੋ।",
-       "passwordreset-text-many": "{{PLURAL:$1|à¨\86ਪਣਾ à¨ªà¨¾à¨¸à¨µà¨°à¨¡ à¨®à©\81à©\9c à¨¬à¨£à¨¾à¨\89ਣ ਲਈ ਕੋਈ ਇੱਕ ਥਾਂ ਭਰੋ।}}",
+       "passwordreset-text-many": "{{PLURAL:$1|à¨\88-ਮà©\87ਲ à¨\9c਼ਰà©\80à¨\8f à¨\86ਪਣਾ à¨\86ਰà¨\9c਼à©\80 à¨ªà¨¾à¨¸à¨µà¨°à¨¡ à¨¹à¨¾à¨¸à¨² à¨\95ਰਨ ਲਈ ਕੋਈ ਇੱਕ ਥਾਂ ਭਰੋ।}}",
        "passwordreset-legend": "ਪਾਸਵਰਡ ਮੁੜ-ਸੈੱਟ ਕਰੋ",
        "passwordreset-disabled": "ਇਸ ਵਿਕੀ ਤੇ ਪਾਸਵਰਡ ਰੀਸੈੱਟ ਬੰਦ ਕੀਤੇ ਗਏ ਹਨ।",
        "passwordreset-emaildisabled": "ਇਹ ਵਿਕਿ ਉੱਤੇ ਈਮੇਲ ਫੀਚਰ ਬੰਦ ਕੀਤਾ ਹੋਇਆ ਹੈ।",
        "currentrev": "ਮੌਜੂਦਾ ਰੀਵਿਜ਼ਨ",
        "currentrev-asof": "$1 ਮੁਤਾਬਕ ਸਭ ਤੋਂ ਨਵਾਂ ਰੀਵਿਜਨ",
        "revisionasof": "$1 ਦਾ ਰੀਵਿਜਨ",
-       "revision-info": "$2 ਦਾ ਬਣਾਇਆ $1 ਦਾ ਰੀਵਿਜਨ",
+       "revision-info": "{{GENDER:$6|$2}}$7 ਦਾ ਬਣਾਇਆ $1 ਦਾ ਰੀਵਿਜ੍ਹਨ",
        "previousrevision": "←ਪੁਰਾਣਾ ਰੀਵਿਜਨ",
        "nextrevision": "ਨਵਾਂ ਰੀਵਿਜਨ →",
        "currentrevisionlink": "ਸਭ ਤੋ ਨਵਾਂ ਰੀਵਿਜਨ",
        "diff-empty": "(ਕੋਈ ਫ਼ਰਕ ਨਹੀਂ)",
        "searchresults": "ਖੋਜ ਨਤੀਜੇ",
        "searchresults-title": "\"$1\" ਲਈ ਖੋਜ ਨਤੀਜੇ",
-       "toomanymatches": "ਬਾਹਲੇ ਮੇਲ ਮਿਲੇ ਹਨ, ਕਿਰਪਾ ਕਰਕੇ ਕੋਈ ਹੋਰ ਪੁੱਛ-ਗਿੱਛ ਵਰਤੋ",
        "titlematches": "ਆਰਟੀਕਲ ਟੈਕਸਟ ਮਿਲਦਾ",
        "textmatches": "ਸਫ਼ੇ ਦੀ ਲਿਖਤ ਮੇਲ ਖਾਂਦੀ ਹੈ",
        "notextmatches": "ਕਿਸੇ ਸਫ਼ੇ ਦੀ ਲਿਖਤ ਮੇਲ ਨਹੀਂ ਖਾਂਦੀ",
        "searchmenu-exists": "'''ਇਸ ਵਿਕੀ ’ਤੇ \"[[:$1]]\" ਨਾਮ ਦਾ ਸਫਾ ਹੈ।'''",
        "searchmenu-new": "'''ਇਸ ਵਿਕੀ ’ਤੇ \"[[:$1]]\" ਸਫ਼ਾ ਬਣਾਓ!'''",
        "searchprofile-articles": "ਸਮੱਗਰੀ ਸਫ਼ੇ",
-       "searchprofile-project": "ਮਦਦ ਤੇ ਪਰੋਜੈਕਟ ਸਫ਼ੇ",
        "searchprofile-images": "ਮਲਟੀਮੀਡੀਆ",
        "searchprofile-everything": "ਸਭ ਕੁਝ",
        "searchprofile-advanced": "ਉੱਨਤ",
-       "searchprofile-articles-tooltip": "$1 ਵਿੱਚ ਖੋਜ",
-       "searchprofile-project-tooltip": "$1 ਵਿੱਚ ਖੋਜ",
+       "searchprofile-articles-tooltip": "$1 ਵਿੱਚ ਖੋਜੋ",
        "searchprofile-images-tooltip": "ਫ਼ਾਈਲਾਂ ਖੋਜੋ",
        "searchprofile-everything-tooltip": "ਸਾਰੀ ਸਮੱਗਰੀ ਵਿੱਚੋਂ ਖੋਜੋ (ਗੱਲ-ਬਾਤ ਸਫ਼ਿਆਂ ਸਮੇਤ)",
        "searchprofile-advanced-tooltip": "ਆਪਣੀਆਂ ਬਣਾਈਆਂ ਨਾਂ-ਥਾਂਵਾਂ ਵਿੱਚ ਖੋਜੋ",
        "search-interwiki-default": "$1 ਨਤੀਜੇ:",
        "search-interwiki-more": "(ਹੋਰ)",
        "search-relatedarticle": "ਸਬੰਧਤ",
-       "searcheverything-enable": "ਸਾਰੇ ਥਾਂ-ਨਾਂਵਾਂ ਵਿਚ ਖੋਜੋ",
        "searchrelated": "ਸਬੰਧਤ",
        "searchall": "ਸਭ",
        "showingresults": "ਹੇਠਾਂ #'''$2''' ਨਾਲ਼ ਸ਼ੁਰੂ ਹੋਣ ਵਾਲ਼ੇ {{PLURAL:\n$1|'''1''' ਨਤੀਜਾ|'''$1''' ਤੱਕ ਨਤੀਜੇ}} ਵਖਾਓ।",
-       "showingresultsnum": "ਹੇਠਾਂ #'''$2''' ਨਾਲ਼ ਸ਼ੁਰੂ ਹੋਣ ਵਾਲ਼ੇ {{PLURAL:\n$3|'''1''' ਨਤੀਜਾ|'''$3''' ਨਤੀਜੇ}} ਵਖਾਓ।",
        "showingresultsheader": "'''$4''' ਵਾਸਤੇ {{PLURAL:$5|'''$3''' ਵਿੱਚੋਂ '''$1''' ਨਤੀਜੇ|'''$3''' ਵਿੱਚੋਂ '''$1 - $2''' ਨਤੀਜੇ}}",
        "search-nonefound": "ਤੁਹਾਡੀ ਖੋਜ ਨਾਲ ਮੇਲ ਖਾਂਦੇ ਕੋਈ ਨਤੀਜੇ ਨਹੀਂ ਮਿਲੇ।",
        "powersearch-legend": "ਤਕਨੀਕੀ ਖੋਜ",
        "allowemail": "ਹੋਰ ਯੂਜ਼ਰਾਂ ਤੋਂ ਈਮੇਲ ਯੋਗ ਕਰੋ",
        "prefs-searchoptions": "ਖੋਜ",
        "prefs-namespaces": "ਥਾਂ-ਨਾਮ",
-       "defaultns": "ਨਹੀਂ ਤਾਂ ਇਹਨਾਂ ਥਾਂ-ਨਾਂਵਾਂ ਵਿਚ ਖੋਜੋ:",
        "default": "ਮੂਲ",
        "prefs-files": "ਫ਼ਾਈਲਾਂ",
        "prefs-custom-css": "ਰਿਵਾਇਤੀ CSS",
        "prefs-emailconfirm-label": "ਈ-ਮੇਲ ਪੁਸ਼ਟੀ:",
        "youremail": "ਈ-ਮੇਲ:",
        "username": "{{GENDER:$1|ਯੂਜ਼ਰਨਾਂ}}:",
-       "uid": "{{GENDER:$1|User}} ਆਈਡੀ:",
        "prefs-memberingroups": "{{PLURAL:$1|ਗਰੁੱਪ|ਗਰੁੱਪਾਂ}} ਦਾ ਮੈਂਬਰ:",
        "prefs-registration": "ਰਜਿਸਟਰੇਸ਼ਨ ਸਮਾਂ:",
        "yourrealname": "ਅਸਲੀ ਨਾਂ:",
        "log-title-wildcard": "ਇਸ ਲਿਖਤ ਨਾਲ਼ ਸ਼ੁਰੂ ਹੋਣ ਵਾਲ਼ੇ ਸਿਰਲੇਖ ਖੋਜੋ",
        "showhideselectedlogentries": "ਚਿੱਠੇ ਦੇ ਚੁਣੇ ਹੋਏ ਦਾਖ਼ਲੇ ਵਖਾਓ/ਲੁਕਾਓ",
        "allpages": "ਸਭ ਸਫ਼ੇ",
-       "alphaindexline": "$1 ਤੋਂ $2",
        "nextpage": "ਅਗਲਾ ਸਫ਼ਾ ($1)",
        "prevpage": "ਪਿਛਲਾ ਸਫ਼ਾ ($1)",
        "allpagesfrom": "ਇਸਤੋਂ ਸ਼ੁਰੂ ਹੋਣ ਵਾਲ਼ੇ ਸਫ਼ੇ ਵਿਖਾਓ:",
        "pageinfo-category-pages": "ਸਫ਼ਿਆਂ ਦੀ ਗਿਣਤੀ",
        "pageinfo-category-subcats": "ਉਪ-ਸ਼੍ਰੇਣੀਆਂ ਦੀ ਗਿਣਤੀ",
        "pageinfo-category-files": "ਫ਼ਾਈਲਾਂ ਦੀ ਗਿਣਤੀ",
-       "skinname-monobook": "ਮੋਨੋਬੁੱਕ",
        "previousdiff": "← ਪੁਰਾਣੀ ਤਬਦੀਲੀ",
        "nextdiff": "ਨਵੀਂ ਤਬਦੀਲੀ →",
        "thumbsize": "ਥੰਮਨੇਲ ਆਕਾਰ:",
        "watchlisttools-raw": "ਕੱਚੀ ਨਿਗਰਾਨ-ਸੂਚੀ ਸੋਧੋ",
        "duplicate-defaultsort": "ਪੁਰਾਣੀ ਮੂਲ ਕਰਮਾਂਕਨ ਕੁੰਜੀ $1 ਦੇ ਬਜਾਏ ਹੁਣ ਮੂਲ ਕਰਮਾਂਕਨ ਕੁੰਜੀ $2 ਹੋਵੇਗੀ।",
        "version": "ਵਰਜਨ",
-       "version-specialpages": "ਖ਼ਾਸ ਸਫ਼ੇ",
        "version-skins": "ਸਕਿਨਾਂ",
+       "version-specialpages": "ਖ਼ਾਸ ਸਫ਼ੇ",
        "version-other": "ਹੋਰ",
        "version-hooks": "ਹੁੱਕਾਂ",
        "version-hook-name": "ਹੁੱਕ ਦਾ ਨਾਂ",
index 9b49369..3dd109b 100644 (file)
        "qbmyoptions": "Deng kakung bulung",
        "faq": "Maralas a Kukutang (MAK)",
        "faqpage": "Project:MAK",
-       "vector-action-addsection": "Dagdagan ing pisasabian",
-       "vector-action-delete": "Buran",
-       "vector-action-move": "Iyalis",
-       "vector-action-protect": "Protectan/kambilan",
-       "vector-action-undelete": "Isubli/iurung ya pangabura",
-       "vector-action-unprotect": "Idayu ya panga-protecta",
-       "vector-view-create": "Maglalang",
-       "vector-view-edit": "Alilan",
-       "vector-view-history": "Lawen ya ing amlat",
-       "vector-view-view": "Basan",
-       "vector-view-viewsource": "Lawen ya ing pikuanan",
        "actions": "↓Ding kilus",
        "namespaces": "Karinanlagiu",
        "variants": "Aliwapa",
        "editundo": "iurung",
        "searchresults": "Ding linual (resulta) king pamanintun",
        "searchresults-title": "Resulta ning pamanintun king \"$1\"",
-       "toomanymatches": "Masiadu lang dakal deng tinud (matches); subukan meng alilan ing kekang kutang (query)",
        "titlematches": "Deng tinud/mipareu kareng bansag bulung (page title matches)",
        "textmatches": "Deng kapareu na king kasulatan (text) da reng bulung",
        "notextmatches": "Alang tinud/pareu kareng bansag bulung (no page title matches)",
        "searchmenu-exists": "'''Atin bulung a mikilagiung \"[[:$1]]\" keng wiking ini.'''",
        "searchmenu-new": "↓'''Maglalang kang bulung \"[[:$1]] keng wiking ini!'''",
        "searchprofile-articles": "↓Kalamnan bulung",
-       "searchprofile-project": "↓Saup ampong bulung proyectu",
        "searchprofile-images": "↓Dakalmedia",
        "searchprofile-everything": "Eganagana",
        "searchprofile-articles-tooltip": "Paintunan king$1",
        "searchrelated": "kaugne",
        "searchall": "eganagana",
        "showingresults": "Ing/ding {{PLURAL:$1|'''1''' a resulta|'''$1''' resulta}} manibatan king #'''$2'''.",
-       "showingresultsnum": "Ing/ding {{PLURAL:$3|'''1''' a resulta|'''$3''' resulta}} manibatan king #'''$2'''.",
        "powersearch-legend": "Espesial a pamanintun",
        "powersearch-ns": "Maintun ka kareng namespace:",
        "search-external": "Pamanintun king kilual",
        "servertime": "Oras king server (server time)",
        "guesstimezone": "Pakibatan ya manibat king browser",
        "allowemail": "Pabustan ya ing e-mail ibat karing aliwang talagamit",
-       "defaultns": "Paintunan ya karening pirinan lagyu (namespaces) nung alang mepili:",
        "default": "alang mepili",
        "prefs-files": "Simpan (files)",
        "youremail": "Ing kekang e-mail:",
        "username": "Talagamitlagyu:",
-       "uid": "Ing kekang user ID:",
        "yourrealname": "Tutung lagyu:",
        "yourlanguage": "Amanu:",
        "yournick": "Pirma (Signature):",
        "logempty": "Ala yang kapareu (matching items) king tala (log).",
        "log-title-wildcard": "Maintun bansag (title) magumpisa king sulat a ini",
        "allpages": "Deng eganaganang bulung",
-       "alphaindexline": "$1 papuntang $2",
        "nextpage": "Tutuking bulung ($1)",
        "prevpage": "Minunang bulung ($1)",
        "allpagesfrom": "Ipakit la reng bulung manibat:",
        "tooltip-undo": "Ing \"balikgawan (undo)\" susubli ne ing edit at bubusni ne ing edit form king pasinag mode.\nPaintulutan na ing pamandagdag king sangkan king sampulung (''summary'').",
        "tooltip-summary": "↓Palub kang makuyad a kabilugan",
        "common.css": "/** CSS mikabit keni maging mabisa ya karing eganaganang pabalat */",
-       "monobook.css": "/* CSS a mikabit keni miapectuan la reng gagamit king Monobook a pabalat */",
        "common.js": "/* Agiang nanung JavaScript a atiu keni misampa la kareng eganaganang gagamit balang misampang bulung. */",
        "anonymous": "Ing/Deng gagamit king {{SITENAME}} a e pepakilala.",
        "siteuser": "talagamit ning {{SITENAME}} $1",
index 31f6ecb..f780a0a 100644 (file)
        "qbmyoptions": "Mes paches",
        "faq": "FAQ",
        "faqpage": "Project:FAQ",
-       "vector-action-addsection": "Rajouter un sujeut",
-       "vector-action-delete": "Défacer",
-       "vector-action-move": "Canger ch'nom",
-       "vector-action-protect": "Garantir",
-       "vector-action-undelete": "N'poin défacher",
-       "vector-action-unprotect": "Canger l'garantie",
-       "vector-view-create": "Créer",
-       "vector-view-edit": "Éditer",
-       "vector-view-history": "Vir l'histoère",
-       "vector-view-view": "Lire",
-       "vector-view-viewsource": "Vir l'source",
        "actions": "Acchons",
        "namespaces": "Éspaces d'chés noms",
        "variants": "Ércanjantes",
        "searchmenu-exists": "'''Il y o eune pache lonmée « [[:$1]] » édseur ch'wiki'''",
        "searchmenu-new": "'''Créer l'pache « [[:$1|$1]] » édseur ech wiki !'''",
        "searchprofile-articles": "Paches d'étnu",
-       "searchprofile-project": "Paches d’aïude et pi d'prodjé",
        "searchprofile-images": "Multimédia",
        "searchprofile-everything": "Tout",
        "searchprofile-advanced": "Értrache avanchée",
        "searchprofile-articles-tooltip": "tracher dins $1",
-       "searchprofile-project-tooltip": "Tracher dins $1",
        "searchprofile-images-tooltip": "Tracher des fichiés multimédias",
        "searchprofile-everything-tooltip": "Tracher dins tout ch'wikipédia (et ochi dins chés paches éd distchucion)",
        "searchprofile-advanced-tooltip": "Couésir chés éspaches d'noms pour l'értrache",
        "timezoneregion-europe": "Urope",
        "youremail": "Imèle:",
        "username": "Nom d'uzeu:",
-       "uid": "ID dech uzeu:",
        "prefs-memberingroups": "{{GENDER:$2|Mimbe}}  {{PLURAL:$1|du groupe|des groupes}}:",
        "yourrealname": "Vrai nom:",
        "yourlanguage": "Langache:",
        "booksources-go": "Aler",
        "log": "Gasètes",
        "allpages": "Tertous chés paches",
-       "alphaindexline": "$1 à $2",
        "prevpage": "Pache édvant ($1)",
        "allpagesfrom": "Afiquer chés paches éq partent à:",
        "allpagesto": "Foaire vir chés paches qui s'términette à:",
index 9f15208..036d5c4 100644 (file)
        "qbmyoptions": "Mei Bledder",
        "faq": "FAQ",
        "faqpage": "Project:FAQ",
-       "vector-action-delete": "Verwische",
-       "vector-action-move": "Ziehe",
-       "vector-action-protect": "Schitze",
-       "vector-view-create": "Schtaerte",
-       "vector-view-edit": "Ennere",
-       "vector-view-history": "Gschicht zeige",
-       "vector-view-view": "Lese",
        "namespaces": "Blatznaame",
        "errorpagetitle": "Mischteek",
        "returnto": "Zerick zum Blatt $1.",
        "searchmenu-new": "'''Schtaert des Blatt „[[:$1|$1]]“ uf dem Wiki.'''",
        "searchprofile-everything": "Abaddiche",
        "searchprofile-articles-tooltip": "Uffgucke in $1",
-       "searchprofile-project-tooltip": "Uffgucke in $1",
        "searchprofile-images-tooltip": "Nooch Feils uffgucke",
        "search-result-size": "$1 ({{PLURAL:$2|1 Wadd|$2 Wadde}})",
        "search-redirect": "(Weiderleiding vun „$1“)",
        "prefs-custom-js": "JavaScript vum Yuuser",
        "youremail": "E-Poschde:",
        "username": "{{GENDER:$1|Yuuser-Naame}}:",
-       "uid": "{{GENDER:$1|Yuuser-ID}}:",
        "prefs-memberingroups": "{{GENDER:$2|Mitglied}} vun de {{PLURAL:$1|Yuuser-Druppe|Yuuser-Druppe}}:",
        "yourlanguage": "Schprooch:",
        "yourgender": "Geschlecht:",
        "speciallogtitlelabel": "Titel:",
        "log": "Logbicher",
        "allpages": "Alle Bledder",
-       "alphaindexline": "$1 bis $2",
        "nextpage": "Neegschtes Blatt ($1)",
        "prevpage": "Letscht Blatt ($1)",
        "allarticles": "Alle Bledder",
        "block": "Yuuser aabinne",
        "blockip": "Yuuser aabinne",
        "blockip-legend": "Yuuser aabinne",
-       "ipadressorusername": "IP-Adress odder Yuusernaame:",
+       "ipaddressorusername": "IP-Adress odder Yuusernaame:",
        "ipbreason": "Grund:",
        "ipbsubmit": "Daen Yuuser aabinne",
        "ipbother": "Annere Zeit (englisch):",
        "nextdiff": "Zum neegschte Versionsunnerschidd →",
        "widthheightpage": "$1 × $2, {{PLURAL:$3|1 Blatt|$3 Bledder}}",
        "file-info-size": "$1 × $2 Pixel, Daadegrees: $3, MIME-Typ: $4",
-       "showhidebots": "(Bots $1)",
        "noimages": "Keene Feils gfunne.",
        "ilsubmit": "Guck uff",
        "seconds": "{{PLURAL:$1|$1 Sekund|$1 Sekunde}}",
index 4a7cb6d..c5b47ac 100644 (file)
        "qbpageoptions": "Die Said",
        "qbmyoptions": "Moi Saide",
        "faq": "Ofd gschdeldi Froche",
-       "vector-action-addsection": "Abschnidd dzufiesche",
-       "vector-action-delete": "Lesche",
-       "vector-action-move": "Vaschiewe",
-       "vector-action-protect": "Schidze",
-       "vector-action-undelete": "Zriggbringe",
-       "vector-view-create": "Õleesche",
-       "vector-view-edit": "Drõ schaffe",
-       "vector-view-history": "Dadaigschischd",
-       "vector-view-view": "Lese",
-       "vector-view-viewsource": "Gwelltegschd zaische",
        "actions": "Maßnõhme",
        "namespaces": "Nõmensreum",
        "variants": "Tibbe",
        "search-interwiki-default": "Eagewnis vun $1:",
        "search-interwiki-more": "(meh)",
        "search-relatedarticle": "Vawond",
-       "searcheverything-enable": "Gugg iwwaraal",
        "searchrelated": "vawond",
        "searchall": "alle",
        "showingresultsheader": "{{PLURAL:$5|Eagewnis '''$1''' vun '''$3'''|Eagewnis '''$1–$2''' vun '''$3'''}} fa '''$4'''",
index 83a5b24..776d7bc 100644 (file)
        "mergehistory-empty": "Brak historii zmian do scalenia.",
        "mergehistory-success": "$3 {{PLURAL:$3|zmiana|zmiany|zmian}} w [[:$1]] zostało scalonych z [[:$2]].",
        "mergehistory-fail": "Scalenie historii zmian jest niewykonalne. Zmień ustawienia parametrów.",
+       "mergehistory-fail-toobig": "Nie można połączyć historii, gdyż wymagałoby to przeniesienia więcej niż maksymalnej dopuszczalnej liczby $1 {{PLURAL:$1|wersji}}.",
        "mergehistory-no-source": "Strona źródłowa $1 nie istnieje.",
        "mergehistory-no-destination": "Strona docelowa $1 nie istnieje.",
        "mergehistory-invalid-source": "Strona źródłowa musi mieć poprawną nazwę.",
        "searchall": "wszystkie",
        "showingresults": "Poniżej znajduje się lista {{PLURAL:$1|z '''1''' wynikiem|'''$1''' wyników}}, rozpoczynając od wyniku numer '''$2'''.",
        "showingresultsinrange": "Poniżej wyświetlono co najwyżej {{PLURAL:$1|<strong>1</strong> wynik|<strong>$1</strong> wyniki|<strong>$1</strong> wyników}} w zakresie od <strong>$2</strong> do <strong>$3</strong>.",
-       "showingresultsnum": "Poniżej znajduje się lista {{PLURAL:$3|z '''1''' wynikiem|'''$3''' wyników}}, rozpoczynając od wyniku numer '''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Wynik '''$1''' z '''$3'''|Wyniki '''$1 – $2''' z '''$3'''}} dla '''$4'''",
        "search-nonefound": "Brak wyników spełniających kryteria podane w zapytaniu.",
        "powersearch-legend": "Wyszukiwanie zaawansowane",
        "right-passwordreset": "Sprawdzanie treści e‐maila o resetowaniu hasła",
        "newuserlogpage": "Nowi użytkownicy",
        "newuserlogpagetext": "To jest rejestr ostatnio utworzonych kont użytkowników",
-       "rightslog": "Rejestr uprawnień",
+       "rightslog": "Uprawnienia",
        "rightslogtext": "Rejestr zmian uprawnień użytkowników.",
        "action-read": "przeglądania tej strony",
        "action-edit": "edytowania tej strony",
        "duplicate-defaultsort": "Uwaga: Domyślnym kluczem sortowania będzie „$2” i zastąpi on wcześniej wykorzystywany klucz „$1”.",
        "version": "Wersja oprogramowania",
        "version-extensions": "Zainstalowane rozszerzenia",
+       "version-skins": "Zainstalowane skórki",
        "version-specialpages": "Strony specjalne",
        "version-parserhooks": "Haki analizatora składni (ang. parser hooks)",
        "version-variables": "Zmienne",
        "version-antispam": "Ochrona przed spamem",
-       "version-skins": "Skórki",
        "version-other": "Pozostałe",
        "version-mediahandlers": "Wtyczki obsługi mediów",
        "version-hooks": "Haki (ang. hooks)",
        "version-license": "Licencja MediaWiki",
        "version-ext-license": "Licencja",
        "version-ext-colheader-name": "Rozszerzenie",
+       "version-skin-colheader-name": "Skórka",
        "version-ext-colheader-version": "Wersja",
        "version-ext-colheader-license": "Licencja",
        "version-ext-colheader-description": "Opis",
        "expand_templates_remove_nowiki": "Ukrywaj w wyniku znaczniki <nowiki>",
        "expand_templates_generate_xml": "Pokaż drzewo analizatora składni w formacie XML",
        "expand_templates_generate_rawhtml": "Pokaż surowy HTML",
-       "expand_templates_preview": "Podgląd"
+       "expand_templates_preview": "Podgląd",
+       "pagelanguage": "Wybór języka strony",
+       "pagelang-name": "Strona",
+       "pagelang-language": "Język",
+       "pagelang-use-default": "Użyj domyślnego języka",
+       "pagelang-select-lang": "Wybierz język",
+       "right-pagelang": "Zmiana języka strony",
+       "action-pagelang": "zmiany języka strony",
+       "log-name-pagelang": "Rejestr zmian języka",
+       "log-description-pagelang": "Rejestr zmian języków przypisanych do poszczególnych stron",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|zmienił|zmieniła}} język strony $3 z „$4” na „$5”."
 }
index 6ba8004..38a7b14 100644 (file)
        "searchall": "tuti",
        "showingresults": "Ambelessì-sota a treuva fin a {{PLURAL:$1|'''1'''|'''$1'''}} arzultà, a parte dal nùmer #'''$2'''.",
        "showingresultsinrange": "Smon-e sì-sota fin-a a {{PLURAL:$1|<strong>1</strong>|<strong>$1</strong>}} arzultà ant la serie da #<strong>$2</strong> a #<strong>$3</strong>.",
-       "showingresultsnum": "Ambelessì-sota a treuva {{PLURAL:$3|'''1'''|'''$3'''}} arzultà a parte da #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Arzultà '''$1''' ëd '''$3'''|Arzultà '''$1 - $2''' ëd '''$3'''}} për '''$4'''",
        "search-nonefound": "A-i é gnun arzultà për l'arserca.",
        "powersearch-legend": "Arserca avansà",
        "duplicate-defaultsort": "'''Atension:''' La ciav d'ordinament ëstàndard «$2» a pija ël pòst ëd cola ëd prima «$1».",
        "version": "Version",
        "version-extensions": "Estension anstalà",
+       "version-skins": "Pej",
        "version-specialpages": "Pàgine speciaj",
        "version-parserhooks": "Gancio dël dëscompositor",
        "version-variables": "Variàbij",
        "version-antispam": "Prevension dla rumenta",
-       "version-skins": "Pej",
        "version-other": "Àutr",
        "version-mediahandlers": "Gestor multimojen",
        "version-hooks": "Gancio",
index 941ef81..3029c96 100644 (file)
        "qbmyoptions": "میرے صفے",
        "faq": "FAQ",
        "faqpage": "Project:FAQ",
-       "vector-action-addsection": "مضمون پاؤ",
-       "vector-action-delete": "مکاؤ",
-       "vector-action-move": "ٹرو",
-       "vector-action-protect": "بچاؤ",
-       "vector-action-undelete": "واپس لیاؤ",
-       "vector-action-unprotect": "تبدیلی بچاؤ",
-       "vector-view-create": "بناؤ",
-       "vector-view-edit": "لکھو",
-       "vector-view-history": "تریخ وکھاؤ",
-       "vector-view-view": "پڑھو",
-       "vector-view-viewsource": "ویکھو",
        "actions": "کم",
        "namespaces": "ناواں دی جگہ:",
        "variants": "قسماں",
        "diff-multi-manyusers": "({{انیک:$1|اک وشکارلی ریوین|$1 وشکارلیاں ریویناں}} توں ود $2 {{انیک:$2|ورتن والا|ورتن والا}} نئیں دسی گئی)",
        "searchresults": "کھوج دا نتارا",
        "searchresults-title": "\"$1\" دے کھوج نتارے",
-       "toomanymatches": "چوکھے سارے رلدے جوڑے سامنے آے نیں، اک ہور کھوج دی کوشش کرو۔",
        "titlematches": "صفے دا سرناواں رلدا اے",
        "textmatches": "صفہ لکھت رلدا",
        "notextmatches": "کوئی صفح نئیں لبیا",
        "searchmenu-exists": "'''ایس وکی تے \"[[:$1]]\" ناں دا صفہ ہے۔.'''",
        "searchmenu-new": "'''ایس وکی تے \"[[:$1]]\" بناؤ'''",
        "searchprofile-articles": "لسٹ صفے",
-       "searchprofile-project": "مدد تے ویونت صفے",
        "searchprofile-images": "ملٹیمیڈیا",
        "searchprofile-everything": "ہرشے",
        "searchprofile-advanced": "اگلا",
        "searchprofile-articles-tooltip": "$1 چ لبو",
-       "searchprofile-project-tooltip": "$1 چ لبو",
        "searchprofile-images-tooltip": "فائلاں لئی لبو",
        "searchprofile-everything-tooltip": "سارا مواد لبو (گل بات والے صفے وی)",
        "searchprofile-advanced-tooltip": "کسٹم ناواں چ لبو",
        "search-interwiki-default": "$1 نتارے:",
        "search-interwiki-more": "(اور)",
        "search-relatedarticle": "جڑیاں",
-       "searcheverything-enable": "ہر ناں چ لبو",
        "searchrelated": "جڑیا",
        "searchall": "سارے",
        "showingresults": "تھلیوں دسے گۓ  {{PLURAL:$1|'''1''' نتیجہ|'''$1''' نتیجے}}  شروع #'''$2'''.",
-       "showingresultsnum": "تھلے دسدا اے {{PLURAL:$3|'''1''' نتیجہ|'''$3''' نتیجے}} #'''$2''' توں ٹرن والے۔",
        "showingresultsheader": "{{PLURAL:$5|نتیجہ '''$1''' دا '''$3'''|نتیجے '''$1 - $2''' دے '''$3'''}} لئی '''$4'''",
        "search-nonefound": "سوال نال رلدے کوئی نتارے نئیں سن۔",
        "powersearch-legend": "ہور کھوج",
        "allowemail": "دوجے ورتن آلیاں توں ای-میل آن دیو",
        "prefs-searchoptions": "چنوتیاں کھوجو",
        "prefs-namespaces": "ناواں دی جگہ:",
-       "defaultns": "نئیں تے ایناں ناں تھاواں تے کھوج کرو:",
        "default": "ڈیفالٹ",
        "prefs-files": "فائلاں",
        "prefs-custom-css": "کسٹم سی ایس ایس",
        "prefs-emailconfirm-label": "ای-میل کنفرمیشن:",
        "youremail": "ای میل:",
        "username": "ورتن آلے دا ناں:",
-       "uid": "ورتن والے دی آئی ڈی",
        "prefs-memberingroups": "سنگی {{PLURAL:$1|ٹولی|ٹولیاں}}:",
        "prefs-registration": "رجسٹریشن ویلہ:",
        "yourrealname": "اصلی ناں:",
        "logempty": "لاگ چ کوئي رلدیاں شیواں نئیں۔",
        "log-title-wildcard": "ایناں بولاں نال شروع ہون والے سرنویں لبو۔",
        "allpages": "سارے صفے",
-       "alphaindexline": "$1 توں $2",
        "nextpage": "اگلا صفحہ ($1)",
        "prevpage": "پچھلا صفحہ ($1)",
        "allpagesfrom": "اس جگہ توں شروع ہونے آلے صفحے وکھاؤ:",
index 3e282a2..eb0d128 100644 (file)
        "qbmyoptions": "Τ' εμά τα σελίδας",
        "faq": "Πολλά ερωτήσεις (FAQ)",
        "faqpage": "Project:Πολλά ερωτήσεις (FAQ)",
-       "vector-action-delete": "Σβήσον",
-       "vector-action-move": "Ετεροχλάεμαν",
-       "vector-action-protect": "Ασπάλιγμαν",
-       "vector-action-undelete": "Κλώσιμον",
-       "vector-action-unprotect": "Άνοιγμαν",
-       "vector-view-create": "Ποίσον",
-       "vector-view-edit": "Άλλαξον",
-       "vector-view-history": "Τερέστεν ιστορίαν",
-       "vector-view-view": "Δεάβασον",
-       "vector-view-viewsource": "Τερέστεν κωδικόν",
        "actions": "Ενέργειας",
        "namespaces": "Περιοχάς",
        "variants": "Παραλλαγάς",
        "prefs-files": "Αρχεία",
        "youremail": "Ελεκτρονικόν μένεμαν:",
        "username": "Όνεμα χρήστε:",
-       "uid": "ID Χρήστε:",
        "yourrealname": "Πραματικόν όνεμαν:",
        "yourlanguage": "Τ' εσόν η γλώσσαν:",
        "yournick": "Υπογραφή:",
        "log": "Αρχεία",
        "all-logs-page": "Όλεα τα δημόσεα αρχεία",
        "allpages": "Όλεα τα σελίδας",
-       "alphaindexline": "$1 ους $2",
        "nextpage": "Επόμενον σελίδα ($1)",
        "prevpage": "Προηγούμενον σελίδα ($1)",
        "allpagesfrom": "Τέρεμαν σελιδίων ντ' εσκαλών'νε ασό:",
        "show-big-image": "Τζιπ τρανόν ανάλυση",
        "newimages": "Τερέστεν τα καινούρεα φωτογραφίας",
        "newimages-legend": "Φίλτρον",
-       "showhidebots": "($1 μποτ)",
        "ilsubmit": "Αράεμαν",
        "bydate": "ημερομηνίας",
        "bad_image_list": "Η σύνταξην εν αέτς:\n\nΤα αντικείμενα τη λίστας (τα γραμμάς ντ' αχπάσκουνταν με *) και μόνον τερούμε. Ο πρώτον ο σύνδεσμον σε μιαν γραμμήν πρέπ' να δεκνίζ' σε κακόν αρχείον.\nΉντιαν συνδέσμ' ντ' έρταν ασην ίδιαν γραμμήν οπίς θεωρούματα εξαιρέσεις, δηλαδή σελίδας όπου επορούμ' να συναντούμε την εικόναν σε σύνδεσην.",
index 1e61f41..258bdc9 100644 (file)
        "qbmyoptions": "Majāi pāusai",
        "faq": "Ukadeznai prasīsenei",
        "faqpage": "Project:Ukadeznai prasīsenei",
-       "vector-action-delete": "Āupausinais",
-       "vector-action-move": "Prapīdais",
-       "vector-action-protect": "Kūnsteis",
-       "vector-action-unprotect": "Etkūnteis",
-       "vector-view-create": "Teīkeis",
-       "vector-view-edit": "Redigīs",
-       "vector-view-history": "Enwaidinnais istōrijan",
-       "vector-view-view": "Skaitāis",
-       "vector-view-viewsource": "Enwaidinnais appun",
        "actions": "Dīlasenei",
        "namespaces": "Tītelin plattibis",
        "variants": "Warjāntai",
        "editundo": "Naikinnais redigīsenin",
        "searchresults": "Laukīsnas rezultātai",
        "searchresults-title": "Laukīsnas rezultātai per \"$1\"",
-       "toomanymatches": "Per tūlin etrāsenei gaūtan, bandais kittan prasīsenin",
        "titlematches": "Aupalā di en tītelamans",
        "textmatches": "Aupalā di en pāusan ēnturu",
        "notextmatches": "Ni aupalā di en pāusan ēnturu",
        "viewprevnext": "Wīdais ($1 {{int:pipe-separator}} $2) ($3)",
        "searchmenu-exists": "'''Ast pāusan \"[[:$1]]\" en šissei wikkin''",
        "searchmenu-new": "'''Teīkeis pāusan \"[[:$1|$1]]\" en šissei wikki!'''",
-       "searchprofile-project": "Pagalbas be prōjaktas pāusai",
        "searchprofile-everything": "Wiss",
        "searchprofile-advanced": "Ēmpirsin treppun",
        "searchprofile-articles-tooltip": "Laukīs en tītelin plattibei $1",
-       "searchprofile-project-tooltip": "Laukīs en tītelin plattibimans $1",
        "searchprofile-images-tooltip": "Laukīs zūrbrukins",
        "searchprofile-everything-tooltip": "Laukīs en pastippai ēnturan (dīgi en diskusiōnis pāusamans)",
        "searchprofile-advanced-tooltip": "Laukīs en etrinktammans tītelin plattibins",
        "search-interwiki-default": "Rezultātai per $1:",
        "search-interwiki-more": "(tūls)",
        "search-relatedarticle": "Ristan",
-       "searcheverything-enable": "Laukīs en wisēimans tītelin plattibins",
        "searchrelated": "gintawai",
        "searchall": "wisāi",
        "showingresults": "Zemmais ast listi {{PLURAL:$1|sen '''1''' rezultātan|stēisan '''$1''' rezultātan}}, pagaūnintei ezze '''$2'''-asmu rezutātan.",
-       "showingresultsnum": "Zemmais ast listi {{PLURAL:$3|sen '''1''' rezultātan|stēisan '''$3''' rezultātan}}, pagaūnintei ezze '''$2'''-asmu rezutātan.",
        "search-nonefound": "Nisatausnā stēisan rezultātan izpilnintan prasīsenes kritērijans.",
        "powersearch-legend": "Paplatintā laukīsna",
        "powersearch-ns": "Laukīs en tītelin plattibimans:",
        "prefs-emailconfirm-label": "E-mailas padruktinsna:",
        "youremail": "Twajā e-mail adressi:",
        "username": "Tērpautajas pabilisnā:",
-       "uid": "Tērpautajas ID:",
        "prefs-memberingroups": "Perlānke prei {{PLURAL:$1|gruppin|gruppins:}}",
        "prefs-registration": "Registraciōnis kerdā:",
        "yourrealname": "Arwis emmens:",
        "logempty": "Ni ast passauwintei registeres elamēntai.",
        "log-title-wildcard": "Laukīs tītelins pagauwīntins sen šin tekstan",
        "allpages": "Wisāi pāusai",
-       "alphaindexline": "ezze $1 ērgi $2",
        "nextpage": "Ripīntin pāusan ($1)",
        "prevpage": "Pirzdauman pāusan ($1)",
        "allpagesfrom": "Waidinnais pāusans pagaūnintins si sen:",
        "blockip": "Blōkis tērpautajan",
        "blockip-legend": "Blōkis tērpautajan",
        "blockiptext": "Tērpaus zemmaisin fōrmularan, kāi blōkilai enpeisāsenes mazīngiskwan iz kōnkretai IP adressin anga kōnkretasmu tērpautajan.\nBlōkitun prawerru tēr kāi ebsergītun ezze wandalisman be preitarīngi sen [[{{MediaWiki:Policy-url}}|pōlitikin]].\nPadāis brewīnslin zemmais (p. endījanei tītelins stēisan wandalizītan pāusan).",
-       "ipadressorusername": "IP adressi anga tērpautajas pabilisnā:",
+       "ipaddressorusername": "IP adressi anga tērpautajas pabilisnā:",
        "ipbexpiry": "Blōkisenis wanginna:",
        "ipbreason": "Brewīnsli:",
        "ipbcreateaccount": "Ebsergēis ezze rekkenas teīkseņu",
        "newimages-summary": "Šin speciālin pāusan waidinna panzdaumai enkraūtans zūrbrukins.",
        "newimages-legend": "Filteris",
        "newimages-label": "Zūrbrukis pabilisnā (anga tenesses delīks):",
-       "showhidebots": "($1 bōtai)",
        "noimages": "Nika per waidīnsnan.",
        "ilsubmit": "Laukīs",
        "bydate": "pa dātan",
index 9fdfa5b..ff4c931 100644 (file)
        "unprotectthispage": "Alterar a proteção desta página",
        "newpage": "Página nova",
        "talkpage": "Dialogar sobre esta página",
-       "talkpagelinktext": "Discussão",
+       "talkpagelinktext": "discussão",
        "specialpage": "Página especial",
        "personaltools": "Ferramentas pessoais",
        "postcomment": "Nova seção",
        "searchrelated": "relacionados",
        "searchall": "todos",
        "showingresults": "A seguir {{PLURAL:$1|é mostrado '''um''' resultado|são mostrados até '''$1''' resultados}}, iniciando no '''$2'''º.",
-       "showingresultsnum": "A seguir {{PLURAL:$3|é mostrado '''um''' resultado|são mostrados '''$3''' resultados}}, iniciando com o '''$2'''º.",
        "showingresultsheader": "{{PLURAL:$5|Resulado '''$1''' de '''$3'''|Resultados '''$1 - $2''' de '''$3'''}} para '''$4'''",
        "search-nonefound": "Não há resultados que correspondam à consulta.",
        "powersearch-legend": "Pesquisa avançada",
        "duplicate-defaultsort": "Aviso: A chave de ordenação padrão \"$2\" sobrepõe-se à anterior chave de ordenação padrão \"$1\".",
        "version": "Versão",
        "version-extensions": "Extensões instaladas",
+       "version-skins": "Temas instalados",
        "version-specialpages": "Páginas especiais",
        "version-parserhooks": "Hooks do analisador (parser)",
        "version-variables": "Variáveis",
        "version-antispam": "Prevenção contra spam",
-       "version-skins": "Temas",
        "version-other": "Diversos",
        "version-mediahandlers": "Executores de mídia",
        "version-hooks": "Hooks",
        "expand_templates_remove_nowiki": "Suprima marcações <nowiki> no resultado",
        "expand_templates_generate_xml": "Mostrar árvore de análise (parse) do XML",
        "expand_templates_generate_rawhtml": "Mostrar HTML puro",
-       "expand_templates_preview": "Pré-visualização"
+       "expand_templates_preview": "Pré-visualização",
+       "pagelang-select-lang": "Selecionar idioma",
+       "right-pagelang": "Mudar idioma da página",
+       "action-pagelang": "mudar idioma da página",
+       "log-name-pagelang": "Mudar idioma do log"
 }
index 21a6d15..8d8abfa 100644 (file)
        "edit": "Editar",
        "edit-local": "Editar descrição local",
        "create": "Criar",
-       "create-local": "Adicionar descrição do local",
+       "create-local": "Adicionar descrição local",
        "editthispage": "Editar esta página",
        "create-this-page": "Criar esta página",
        "delete": "Eliminar",
        "unprotectthispage": "Alterar a proteção desta página",
        "newpage": "Página nova",
        "talkpage": "Discutir esta página",
-       "talkpagelinktext": "Discussão",
+       "talkpagelinktext": "discussão",
        "specialpage": "Página especial",
        "personaltools": "Ferramentas pessoais",
        "postcomment": "Seção nova",
        "mergehistory-empty": "Não existem revisões fundíveis.",
        "mergehistory-success": "Foram fundidas $3 {{PLURAL:$3|edição|edições}} de [[:$1]] em [[:$2]].",
        "mergehistory-fail": "Não foi possível fundir os históricos; verifique a página e os parâmetros de tempo, por favor.",
+       "mergehistory-fail-toobig": "Não é possível mesclar o histórico, já que um número de revisão(ões) acima do limite ($1 {{PLURAL:$1|revisão|revisões}}) seriam movidos.",
        "mergehistory-no-source": "A página de origem $1 não existe.",
        "mergehistory-no-destination": "A página de destino $1 não existe.",
        "mergehistory-invalid-source": "A página de origem precisa ser um título válido.",
        "searchall": "todos",
        "showingresults": "{{PLURAL:$1|É apresentado '''um''' resultado|São apresentados até '''$1''' resultados}} abaixo{{PLURAL:$1||, começando pelo '''$2'''º}}.",
        "showingresultsinrange": "Apresenta-se abaixo {{PLURAL:$1|<strong>1</strong> resultado|até <strong>$1</strong> resultados}} no intervalo #<strong>$2</strong> a #<strong>$3</strong>.",
-       "showingresultsnum": "{{PLURAL:$3|É apresentado '''um''' resultado|São apresentados '''$3''' resultados}} abaixo{{PLURAL:$3||, começando pelo '''$2'''º}}.",
        "showingresultsheader": "{{PLURAL:$5|Resultado '''$1''' de '''$3'''|Resultados '''$1–$2''' de '''$3'''}} para '''$4'''",
        "search-nonefound": "A pesquisa não produziu resultados.",
        "powersearch-legend": "Pesquisa avançada",
        "license-nopreview": "(Antevisão indisponível)",
        "upload_source_url": " (uma URL válida, publicamente acessível)",
        "upload_source_file": " (um ficheiro no seu computador)",
+       "listfiles-delete": "eliminar",
        "listfiles-summary": "Esta página especial mostra todos os ficheiros carregados.",
        "listfiles_search_for": "Pesquisar por nome de imagem:",
        "imgfile": "ficheiro",
        "filedelete-maintenance": "Eliminação e restauro de ficheiros foram temporariamente impossibilitadas durante a manutenção.",
        "filedelete-maintenance-title": "Não é possível eliminar o ficheiro",
        "mimesearch": "Pesquisa MIME",
-       "mimesearch-summary": "Esta página permite pesquisar os ficheiros da wiki, filtrando-os a partir do seu tipo MIME. O tipo MIME deve ser especificado na forma: tipo/subtipo. Alguns exemplos de tipos frequentes: <code>image/jpeg</code>, <code>image/gif</code>, <code>image/png</code>, <code>application/pdf</code>, <code>application/vnd.ms-excel</code>, <code>application/zip</code>, <code>application/vnd.ms-powerpoint</code>.",
+       "mimesearch-summary": "Esta página permite a filtragem de ficheiros pelo seu tipo MIME. Entrada: contenttype/subtype ou contenttype/*, ex. <code>image/jpeg</code>.",
        "mimetype": "Tipo MIME:",
        "download": "descarregar",
        "unwatchedpages": "Páginas não vigiadas",
        "uctop": "(atual)",
        "month": "Até o mês:",
        "year": "Até o ano:",
-       "sp-contributions-newbies": "Mostrar só as contribuições das contas recentes",
+       "sp-contributions-newbies": "Mostrar só as contribuições de contas recentes",
        "sp-contributions-newbies-sub": "Para contas novas",
        "sp-contributions-newbies-title": "Contribuições de contas novas",
        "sp-contributions-blocklog": "registo de bloqueios",
        "duplicate-defaultsort": "<strong>Aviso:</strong> A chave de ordenação padrão \"$2\" sobrepõe-se à anterior \"$1\".",
        "version": "Versão",
        "version-extensions": "Extensões instaladas",
+       "version-skins": "Temas instalados",
        "version-specialpages": "Páginas especiais",
        "version-parserhooks": "''Hooks'' do analisador sintático",
        "version-variables": "Variáveis",
        "version-antispam": "Prevenção contra spam",
-       "version-skins": "Temas",
        "version-other": "Diversos",
        "version-mediahandlers": "Leitura e tratamento de multimédia",
        "version-hooks": "Hooks",
        "version-license": "Licença do MediaWiki",
        "version-ext-license": "Licença",
        "version-ext-colheader-name": "Extensão",
+       "version-skin-colheader-name": "Tema",
        "version-ext-colheader-version": "Versão",
        "version-ext-colheader-license": "Licença",
        "version-ext-colheader-description": "Descrição",
        "expand_templates_remove_nowiki": "Suprimir marcações <nowiki> no resultado",
        "expand_templates_generate_xml": "Mostrar a árvore de análise sintáctica do XML",
        "expand_templates_generate_rawhtml": "Mostrar o HTML puro",
-       "expand_templates_preview": "Antevisão do resultado"
+       "expand_templates_preview": "Antevisão do resultado",
+       "pagelanguage": "Seletor de idioma da página",
+       "pagelang-name": "Página",
+       "pagelang-language": "Idioma",
+       "pagelang-use-default": "Usar idioma pré-definido",
+       "pagelang-select-lang": "Escolher o idioma",
+       "right-pagelang": "Alterar o idioma da página",
+       "action-pagelang": "alterar o idioma da página",
+       "log-name-pagelang": "Alterar registo 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."
 }
index 9d019f9..fc600ab 100644 (file)
        "anonnotice": "{{notranslate}}",
        "newsectionheaderdefaultlevel": "{{notranslate}}\nParameters:\n* $1 - section name",
        "red-link-title": "Title for red hyperlinks. Indicates, that the page is empty, not written yet.\n\nParameters:\n* $1 - page title",
-       "sort-descending": "JavaScript message. Used by sortable table script.",
-       "sort-ascending": "JavaScript message. Used by sortable table script.",
+       "sort-descending": "JavaScript message. Used by sortable table script.\n\nSee also:\n* {{msg-mw|Sort-ascending}}",
+       "sort-ascending": "JavaScript message. Used by sortable table script.\n\nSee also:\n* {{msg-mw|Sort-descending}}\n{{Identical|Sort ascending}}",
        "nstab-main": "The name for the tab of the main namespace. Example: [[Example]]\n\nSee also:\n* {{msg-mw|Nstab-main}}\n* {{msg-mw|Accesskey-ca-nstab-main}}\n* {{msg-mw|Tooltip-ca-nstab-main}}\n{{Identical|Page}}",
        "nstab-user": "The name for the tab of the user namespace. Example: [[User:Example]]. It is possible to use <nowiki>{{GENDER:{{ROOTPAGENAME}}|male form|female form}}</nowiki> if needed.\n\nSee also:\n* {{msg-mw|Nstab-user}}\n* {{msg-mw|Accesskey-ca-nstab-user}}\n* {{msg-mw|Tooltip-ca-nstab-user}}\n{{Identical|User page}}",
        "nstab-media": "The name for the tab of the media namespace. Example: [[Media:Example]]\n\nSee also:\n* {{msg-mw|Nstab-media}}\n* {{msg-mw|Accesskey-ca-nstab-media}}\n* {{msg-mw|Tooltip-ca-nstab-media}}",
        "yourpasswordagain": "Since 1.22 no longer used in core, but may be used by some extensions. DEPRECATED",
        "createacct-yourpasswordagain": "In create account form, label for field to re-enter password\n\nSee example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]\n{{Identical|Confirm password}}",
        "createacct-yourpasswordagain-ph": "Placeholder text in create account form for re-enter password field.\n\nSee example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]",
-       "remembermypassword": "Used as checkbox label in [[Special:UserLogin]]. Parameters:\n* $1 - number of days\n{{Identical|Remember my login on this computer}}",
+       "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]]",
        "yourdomainname": "Used as label for listbox.",
        "passwordreset-disabled": "Used as error message in changing password.",
        "passwordreset-emaildisabled": "Used as error message in changing password when site's email feature is disabled.",
        "passwordreset-username": "{{Identical|Username}}",
-       "passwordreset-domain": "A domain like used in Domain Name System (DNS) or more specifically like a domain component in the Lightweight Directory Access Protocol (LDAP)",
+       "passwordreset-domain": "A domain like used in Domain Name System (DNS) or more specifically like a domain component in the Lightweight Directory Access Protocol (LDAP).\n{{Identical|Domain}}",
        "passwordreset-capture": "Label for checkbox asking the user whether they want to see the contents of the password reset email (only shown if they have the <code>passwordreset</code> permission).",
        "passwordreset-capture-help": "Longer explanatory message for the capture checkbox label.",
        "passwordreset-email": "{{Identical|E-mail address}}",
        "searchall": "{{Identical|All}}",
        "showingresults": "This message is used on some special pages such as [[Special:WantedCategories]]. Parameters:\n* $1 - the total number of results in the batch shown\n* $2 - the number of the first item listed\nSee also:\n* {{msg-mw|Showingresultsnum}}",
        "showingresultsinrange": "Used in pagination of [[Special:MostLinkedCategories]]. Parameters:\n* $1 - the total number of results in the batch shown\n* $2 - the number of the first item listed\n* $3 - the number of last item in the batch shown\n\nSee also {{msg-mw|Showingresults}}",
-       "showingresultsnum": "Parameters:\n* $1 - (Unused) the total number of results in the batch shown\n* $2 - the first number in the batch of results\n* $3 - the number of results on the page\nSee also:\n* {{msg-mw|Showingresults}}",
        "showingresultsheader": "Used in search results of [[Special:Search]]. Parameters:\n* $1 - minimum offset\n* $2 - maximum offset\n* $3 - total number of results\n* $4 - the search term\n* $5 - number of results",
        "search-nonefound": "Message shown when a search returned no results (when using the default MediaWiki search engine).",
        "powersearch-legend": "Advanced search\n\n{{Identical|Advanced search}}",
        "license-nopreview": "Error message when a certain license does not exist",
        "upload_source_url": "Used in [[Special:Upload]].\n\nSee also:\n* {{msg-mw|Sourcefilename|label}}\n* {{msg-mw|Sourceurl|label}}\n* {{msg-mw|Upload source file}}\n* {{msg-mw|Upload-maxfilesize}}",
        "upload_source_file": "Used in [[Special:Upload]].\n\nSee also:\n* {{msg-mw|Sourcefilename|label}}\n* {{msg-mw|Sourceurl|label}}\n* {{msg-mw|Upload source url}}\n* {{msg-mw|Upload-maxfilesize}}",
+       "listfiles-delete": "Text of the delete links next to the entries on [[Special:ListFiles]], surrounded by parentheses.\n{{Identical|Delete}}",
        "listfiles-summary": "This message is displayed at the top of [[Special:ImageList]] to explain how to use that special page.",
        "listfiles_search_for": "Input label for the form displayed on [[Special:ListFiles]].",
        "imgfile": "{{Identical|File}}",
        "popularpages-summary": "{{doc-specialpagesummary|popularpages}}",
        "wantedcategories": "{{doc-special|WantedCategories}}",
        "wantedcategories-summary": "{{doc-specialpagesummary|wantedcategories}}",
-       "wantedpages": "{{doc-special|WantedPages}}",
+       "wantedpages": "{{doc-special|WantedPages}}\n{{Identical|Wanted page}}",
        "wantedpages-summary": "{{doc-specialpagesummary|wantedpages}}",
        "wantedpages-badtitle": "Error message shown when [[Special:WantedPages]] is listing a page with a title that shouldn't exist.\n\nParameters:\n* $1 - a page title",
        "wantedfiles": "{{doc-special|WantedFiles}}",
        "categoriespagetext": "{{doc-important|Do not translate or change links.}}\nText displayed in [[Special:Categories]].\n\nIn order to translate \"Unused categories\" and \"wanted categories\" see {{msg-mw|Unusedcategories}} and {{msg-mw|Wantedcategories}}.\n\nParameters:\n* $1 - number of categories",
        "categoriesfrom": "Used as label for the input box in [[Special:Categories]].\n\nThis message follows the fieldset label {{msg-mw|categories}}, and is followed by the input box.",
        "special-categories-sort-count": "Commented out at this time.\n\nThis message is used on [[Special:Categories]] to sort the list by the number of members in the categories.\n\nSee also:\n* {{msg-mw|Special-categories-sort-abc}}",
-       "special-categories-sort-abc": "Commented out at this time.\n\nThis message is used on [[Special:Categories]] to sort the list by the category name.\n\nSee also:\n* {{msg-mw|Special-categories-sort-count}}",
+       "special-categories-sort-abc": "Commented out at this time.\n\nThis message is used on [[Special:Categories]] to sort the list by the category name.\n\nSee also:\n* {{msg-mw|Special-categories-sort-count}}\n{{Identical|Sort alphabetically}}",
        "deletedcontributions": "The message is shown as a link on [[Special:SpecialPages]] to [[Special:DeletedContributions]].\n\n{{Identical|Deleted user contributions}}",
        "deletedcontributions-summary": "{{doc-specialpagesummary|deletedcontributions}}",
        "deletedcontributions-title": "Title of [[Special:DeletedContributions]] (extension), a special page with a list of edits to pages which were deleted. Only viewable by sysops.\n\n{{Identical|Deleted user contributions}}",
        "version": "{{doc-special|Version}}\n{{Identical|Version}}",
        "version-summary": "{{doc-specialpagesummary|version}}",
        "version-extensions": "Header on [[Special:Version]].",
+       "version-skins": "Header on [[Special:Version]].\n\nSee also:\n* {{msg-mw|Version-software}}\n* {{msg-mw|Version-extensions}}",
        "version-specialpages": "Part of [[Special:Version]].\n{{Identical|Special page}}",
        "version-parserhooks": "This message is a heading at [[Special:Version]] for extensions that modifies the parser of wikitext.",
        "version-variables": "{{Identical|Variable}}",
        "version-antispam": "Part of [[Special:Version]].\nThis message is followed by the list of SPAM prevention extensions.",
-       "version-skins": "{{Identical|Skin}}",
        "version-api": "{{optional}}",
        "version-other": "{{Identical|Other}}",
        "version-mediahandlers": "Used in [[Special:Version]]. It is the title of a section for media handler extensions (e.g. [[mw:Extension:OggHandler]]).\nThere are no such extensions here, so look at [[wikipedia:Special:Version]] for an example.",
        "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-skin-colheader-name": "Column header for the name of a skin.\n{{Identical|Skin}}",
        "version-ext-colheader-version": "Column header for describing an extensions version.\n{{Identical|Version}}",
        "version-ext-colheader-license": "Column header for describing an extensions license.\n{{Identical|License}}",
        "version-ext-colheader-description": "Column header for the description of an extension.\n{{Identical|Description}}",
        "expand_templates_remove_nowiki": "Option on [[Special:Expandtemplates]]\n\nHere's what the tick box does:\n\nFor:\n<pre>\n&lt;nowiki>test&lt;/nowiki>\n</pre>\n\nNot ticked:\n<pre>\n&lt;nowiki>test&lt;/nowiki>\n</pre>\n\nTicked:\n<pre>\ntest\n</pre>",
        "expand_templates_generate_xml": "Used as checkbox label.",
        "expand_templates_generate_rawhtml": "Used as checkbox label.",
-       "expand_templates_preview": "{{Identical|Preview}}"
+       "expand_templates_preview": "{{Identical|Preview}}",
+       "pagelanguage": "Title for page Special:PageLanguage",
+       "pagelang-name": "Input label for page name on Special:PageLanguage\n{{Identical|Page}}",
+       "pagelang-language": "Language selector label for Special:PageLanguage\n{{Identical|Language}}",
+       "pagelang-use-default": "Radio label for selector on Special:PageLanguage for default language",
+       "pagelang-select-lang": "Radio label for selector on Special:PageLanguage for language selection\n{{Identical|Select language}}",
+       "right-pagelang": "{{Doc-right|pagelang}}\nRight to change page language on Special:PageLanguage",
+       "action-pagelang": "{{Doc-action|pagelang}}",
+       "log-name-pagelang": "Display entry for log name for changes in page language in Special:Log.",
+       "log-description-pagelang": "Display description for log name for changes in page language in Special:Log.",
+       "logentry-pagelang-pagelang": "{{Logentry}}\nAdditional parameters:\n* $4 - old language code, or \"[def]\" (hard-coded)\n* $5 - new language code, or \"[def]\" (hard-coded)"
 }
index c548685..b82a39d 100644 (file)
        "searchall": "tukuy",
        "showingresults": "Qhipanpiqa rikuchkanki {{PLURAL:$1|'''1''' tarisqatam|'''$1'''-kama tarisqakunatam}}, '''$2''' huchhawan qallarispa.",
        "showingresultsinrange": "Qhipanpiqa rikuchkanki {{PLURAL:$1|<strong>1</strong>-kama tarisqatam|<strong>$1</strong>-kama tarisqakunatam}}, #<strong>$2</strong> huchhamanta #<strong>$3</strong> huchhakama.",
-       "showingresultsnum": "Qhipanpiqa rikuchkanki {{PLURAL:$3|'''1''' tarisqatam|'''$3''' tarisqakunatam}}, '''$2''' yupaywan qallarispa.",
        "showingresultsheader": "{{PLURAL:$5|Taripasqa: '''$1''', '''$3'''-manta|Taripasqa: '''$1 - $2''', '''$3'''-manta}}, '''$4'''-paq",
        "search-nonefound": "Maskaypaq kay hina kachun nisqakamaqa manam kanchu taripasqakuna.",
        "powersearch-legend": "Ñawparikusqa maskay",
index fe3d236..337f61e 100644 (file)
        "qbmyoptions": "Ñukapak pankakuna",
        "faq": "Ashtawan tapushkaka tapunakuna",
        "faqpage": "Project:ashta ministishka tapuykuna",
-       "vector-action-addsection": "Shuk mushuk rimanakuyta kallarina",
-       "vector-action-delete": "Pichana",
-       "vector-action-move": "Apakuna",
-       "vector-action-protect": "Harkana",
-       "vector-action-undelete": "Kutin wacharichina",
-       "vector-action-unprotect": "Harkayta shukchina",
-       "vector-view-create": "Kamarina",
-       "vector-view-edit": "Killkana",
-       "vector-view-history": "Wiñay kawsayta rikuna",
-       "vector-view-view": "Killkakatina",
-       "vector-view-viewsource": "Pukyu killkata rikuna",
        "actions": "Ruraykuna",
        "namespaces": "Shutipak kitikuna",
        "variants": "Shuk rikuchiy shinakuna",
        "searchmenu-exists": "Kay wikipi shuk \"[[:$1]]\" shutiyuk pankaka tiyanmi.",
        "searchmenu-new": "'''Kay wikipi \"[[:$1]]\" shutiyuk pankata kamariy!'''",
        "searchprofile-articles": "Yachaykunayuk pankakuna",
-       "searchprofile-project": "Yanapana ruraykamaypash pankakuna",
        "searchprofile-images": "Multimidya",
        "searchprofile-everything": "Tukuy",
        "searchprofile-advanced": "Yachak rurakkunamanlla",
        "searchprofile-articles-tooltip": "$1 kitikunapi maskana",
-       "searchprofile-project-tooltip": "$1 kitikunapi maskana",
        "searchprofile-images-tooltip": "Archiwukunata maskana",
        "searchprofile-everything-tooltip": "Tukuy pankakunapi maskana (rimanakuy pankakunapipashmi)",
        "searchprofile-advanced-tooltip": "Maykan shuti kitikunapi maskanami kanchikchu akllana",
        "booksources-go": "Rina",
        "log": "Kamukuna",
        "allpages": "Tukuy pankakuna",
-       "alphaindexline": "$1-manta $2-man",
        "prevpage": "Ñawpak panka ($1)",
        "allpagesfrom": "Shinami kallarik pankakunata rikuchiy:",
        "allpagesto": "Kaywan tukurik pankakunata rikuchina:",
index d00255d..e9b0e3d 100644 (file)
        "searchrelated": "sumegliant",
        "searchall": "tuts",
        "showingresults": "Sutvart èn enfin {{PLURAL:$1|'''in''' resultat|'''$1''' resultats}} cumenzond cun il numer '''$2'''.",
-       "showingresultsnum": "Qua èn {{PLURAL:$3|'''1''' resultat|'''$3''' resultats}}, cumenzond cun il number '''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Resultat '''$1''' da '''$3'''|Resultats '''$1-$2''' da '''$3'''}} per '''$4'''",
        "search-nonefound": "Per il term tschertgà èn nagins resultats vegnids chattads.",
        "powersearch-legend": "Tschertga extendida",
index 662a388..1b49b95 100644 (file)
        "category_header": "Pagini din categoria „$1”",
        "subcategories": "Subcategorii",
        "category-media-header": "Fișiere media din categoria „$1”",
-       "category-empty": "''Această categorie nu conține articole sau fișiere media.''",
+       "category-empty": "''Această categorie nu conține în acest moment niciun articol sau fișier media.''",
        "hidden-categories": "{{PLURAL:$1|Categorie ascunsă|Categorii ascunse}}",
        "hidden-category-category": "Categorii ascunse",
        "category-subcat-count": "{{PLURAL:$2|Această categorie conține doar următoarea subcategorie.|Această categorie conține {{PLURAL:$1|următoarea subcategorie|următoarele $1 subcategorii|următoarele $1 de subcategorii}}, dintr-un total de $2.}}",
-       "category-subcat-count-limited": "Această categorie conține {{PLURAL:$1|următoarea subcategorie|următoarele $1 subcategorii}}.",
+       "category-subcat-count-limited": "Această categorie conține {{PLURAL:$1|următoarea subcategorie|următoarele $1 subcategorii|următoarele $1 de subcategorii}}.",
        "category-article-count": "{{PLURAL:$2|Această categorie conține doar următoarea pagină.|{{PLURAL:$1|Următoarea pagină|Următoarele $1 pagini}} se află în această categorie, dintr-un total de $2.}}",
-       "category-article-count-limited": "{{PLURAL:$1|Următoarea pagină|Următoarele $1 pagini}} se află în categoria curentă.",
+       "category-article-count-limited": "{{PLURAL:$1|Următoarea pagină este|Următoarele $1 pagini sunt|Următoarele $1 de pagini sunt}} în categoria curentă.",
        "category-file-count": "{{PLURAL:$2|Această categorie conține doar următorul fișier.|{{PLURAL:$1|Următorul fișier|Următoarele $1 fișiere}} se află în această categorie, dintr-un total de $2.}}",
-       "category-file-count-limited": "{{PLURAL:$1|Următorul fișier|Următoarele $1 fișiere}} se află în categoria curentă.",
+       "category-file-count-limited": "{{PLURAL:$1|Următorul fișier este|Următoarele $1 fișiere sunt |Următoarele $1 de fișiere sunt}} în categoria curentă.",
        "listingcontinuesabbrev": "cont.",
        "index-category": "Pagini indexate",
        "noindex-category": "Pagini neindexate",
        "noemail": "Nu este nici o adresă de e-mail înregistrată pentru utilizatorul „$1”.",
        "noemailcreate": "Trebuie oferită o adresă e e-mail validă.",
        "passwordsent": "O nouă parolă a fost trimisă la adresa de e-mail a utilizatorului \"$1\". Te rugăm să te autentifici pe {{SITENAME}} după ce o primești.",
-       "blocked-mailpassword": "Această adresă IP este blocată la editare, și deci nu este permisă utilizarea funcției de recuperare a parolei pentru a preveni abuzul.",
+       "blocked-mailpassword": "Această adresă IP este blocată la editare. Pentru a preveni abuzul, funcția de recuperare a parolei este dezactivată.",
        "eauthentsent": "Un e-mail de confirmare a fost trimis către adresa specificată.\nÎnainte ca orice alt e-mail să mai fie trimis către acel cont, trebuie să urmați instrucțiunile prezente în e-mail pentru a confirma că acest cont este într-adevăr al dumneavoastră.",
        "throttled-mailpassword": "Un e-mail pentru resetarea parolei a fost deja trimis în {{PLURAL:$1|ultima oră|ultimele $1 ore|ultimele $1 de ore}}. Pentru a preveni abuzul, se va trimite doar un e-mail de resetare a parolei la un interval de o {{PLURAL:$1|o oră|$1 ore|$1 de ore}}.",
        "mailerror": "Eroare la trimitere e-mail: $1",
        "searchall": "toate",
        "showingresults": "Mai jos {{PLURAL:$1|apare '''1''' rezultat|apar '''$1''' rezultate|apar '''$1''' de rezultate}} începând cu nr. <b>$2</b>.",
        "showingresultsinrange": "Mai jos se afișează un număr de până la {{PLURAL:$1|<strong>1</strong> rezultat|<strong>$1</strong> rezultate|<strong>$1</strong> de rezultate}} din intervalul #<strong>$2</strong> la #<strong>$3</strong>.",
-       "showingresultsnum": "Mai jos {{PLURAL:$3|apare '''1''' rezultat|apar '''$3''' rezultate|apar '''$3''' de rezultate}} cu nr. <b>$2</b>.",
        "showingresultsheader": "{{PLURAL:$5|Rezultatul '''$1''' din '''$3'''|Rezultatele '''$1 - $2''' din '''$3'''}} pentru '''$4'''",
        "search-nonefound": "Nu sunt rezultate conforme interogării.",
        "powersearch-legend": "Căutare avansată",
        "license-nopreview": "(Previzualizare indisponibilă)",
        "upload_source_url": " (un URL valid, accesibil public)",
        "upload_source_file": " (un fișier de pe computerul dv.)",
+       "listfiles-delete": "șterge",
        "listfiles-summary": "Această pagină specială listează toate fișierele încărcate.",
        "listfiles_search_for": "Căutare fișiere după nume:",
        "imgfile": "fișier",
        "protectedpagesempty": "Nu există pagini protejate",
        "protectedpages-timestamp": "Data și ora",
        "protectedpages-page": "Pagină",
-       "protectedpages-expiry": "Expiră la",
+       "protectedpages-expiry": "Expiră pe",
        "protectedpages-performer": "Utilizator care a protejat",
        "protectedpages-params": "Parametri de protejare",
        "protectedpages-reason": "Motiv",
        "protect-level-sysop": "Autorizat doar pentru administratori",
        "protect-summary-cascade": "în cascadă",
        "protect-expiring": "expiră $1 (UTC)",
-       "protect-expiring-local": "expiră la $1",
+       "protect-expiring-local": "expiră pe $1",
        "protect-expiry-indefinite": "indefinit",
        "protect-cascade": "Protejare în cascadă - toate paginile incluse în această pagină vor fi protejate.",
        "protect-cantedit": "Nu puteți schimba nivelul de protecție a acestei pagini, deoarece nu aveți permisiunea de a o modifica.",
        "blocklist-rangeblocks": "Ascunde blocările de gamă",
        "blocklist-timestamp": "Data și ora",
        "blocklist-target": "Utilizator/adresă IP",
-       "blocklist-expiry": "Expiră la",
+       "blocklist-expiry": "Expiră pe",
        "blocklist-by": "Administratorul care a efectuat blocarea",
        "blocklist-params": "Parametrii blocării",
        "blocklist-reason": "Motiv",
        "noautoblockblock": "autoblocare dezactivată",
        "createaccountblock": "crearea de conturi blocată",
        "emailblock": "e-mail blocat",
-       "blocklist-nousertalk": "nu poate modifica propria pagină de discuție",
+       "blocklist-nousertalk": "fără drept de modificare a propriei pagini de discuții",
        "ipblocklist-empty": "Lista blocărilor este goală.",
        "ipblocklist-no-results": "Nu există blocare pentru adresa IP sau numele de utilizator.",
        "blocklink": "blochează",
        "reblock-logentry": "a fost schimbată blocarea pentru [[$1]] cu data expirării la $2 $3",
        "blocklogtext": "Acest jurnal cuprinde acțiunile de blocare și deblocare. Adresele IP blocate automat nu sunt afișate. Vizitați [[Special:BlockList|lista blocărilor]] pentru o listă explicită a adreselor blocate în acest moment.",
        "unblocklogentry": "a deblocat utilizatorul $1",
-       "block-log-flags-anononly": "doar utilizatorii anonimi",
-       "block-log-flags-nocreate": "crearea de conturi dezactivată",
-       "block-log-flags-noautoblock": "autoblocarea dezactivată",
-       "block-log-flags-noemail": "e-mail blocat",
-       "block-log-flags-nousertalk": "nu poate edita propria pagină de discuție",
+       "block-log-flags-anononly": "doar utilizatori anonimi",
+       "block-log-flags-nocreate": "fără drept de a crea conturi",
+       "block-log-flags-noautoblock": "fără blocare automată",
+       "block-log-flags-noemail": "fără drept de a trimite e-mail",
+       "block-log-flags-nousertalk": "fără drept de modificare a propriei pagini de discuții",
        "block-log-flags-angry-autoblock": "autoblocarea avansată activată",
        "block-log-flags-hiddenname": "nume de utilizator ascuns",
        "range_block_disabled": "Abilitatea dezvoltatorilor de a bloca serii de adrese este dezactivată.",
        "allmessagesdefault": "Textul standard",
        "allmessagescurrent": "Textul curent",
        "allmessagestext": "Aceasta este lista completă a mesajelor disponibile în domeniul MediaWiki.\nVă rugăm să vizitați [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation MediaWiki Localisation] și [//translatewiki.net translatewiki.net] dacă vreți să contribuiți la localizarea programului MediaWiki generic.",
-       "allmessagesnotsupportedDB": "'''{{ns:special}}:Allmessages''' nu poate fi folosit deoarece '''$wgUseDatabaseMessages''' este închisă.",
+       "allmessagesnotsupportedDB": "'''{{ns:special}}:Allmessages''' nu poate fi folosit deoarece opțiunea '''$wgUseDatabaseMessages''' este dezactivată.",
        "allmessages-filter-legend": "Filtru",
        "allmessages-filter": "Filtru după statutul de modificare:",
        "allmessages-filter-unmodified": "Nemodificat",
        "duplicate-defaultsort": "'''Atenție:''' Cheia de sortare implicită („$2”) o înlocuiește pe precedenta („$1”).",
        "version": "Versiune",
        "version-extensions": "Extensii instalate",
+       "version-skins": "Aspecte instalate",
        "version-specialpages": "Pagini speciale",
        "version-parserhooks": "Hook-uri parser",
        "version-variables": "Variabile",
        "version-antispam": "Prevenirea spamului",
-       "version-skins": "Aspect",
        "version-other": "Altele",
        "version-mediahandlers": "Suport media",
        "version-hooks": "Hook-uri",
        "version-license": "Licență MediaWiki",
        "version-ext-license": "Licență",
        "version-ext-colheader-name": "Extensie",
+       "version-skin-colheader-name": "Aspect",
        "version-ext-colheader-version": "Versiune",
        "version-ext-colheader-license": "Licență",
        "version-ext-colheader-description": "Descriere",
        "expand_templates_remove_nowiki": "Suprimă etichetele <nowiki> în rezultat",
        "expand_templates_generate_xml": "Arată arborele de analiză XML",
        "expand_templates_generate_rawhtml": "Arată HTML brut",
-       "expand_templates_preview": "Previzualizare"
+       "expand_templates_preview": "Previzualizare",
+       "pagelanguage": "Selector limbă pagină",
+       "pagelang-name": "Pagină",
+       "pagelang-language": "Limbă",
+       "pagelang-use-default": "Folosește limba implicită",
+       "pagelang-select-lang": "Alege limba",
+       "right-pagelang": "Modifică limba paginii",
+       "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."
 }
index 49f05aa..5004182 100644 (file)
        "searchrelated": "colleghete",
        "searchall": "tutte",
        "showingresults": "Stoche a fazze vedè aqquà sotte {{PLURAL:$1|'''1''' resultete|'''$1''' resultete}} ca accumenzene cu #'''$2'''.",
-       "showingresultsnum": "Stoche a fazze vedè {{PLURAL:$3|'''1''' resultete|'''$3''' resultete}} ca accumenzene cu #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Resultate '''$1''' de '''$3'''|Resultate '''$1 - $2''' de '''$3'''}} pe '''$4'''",
        "search-nonefound": "Non ge stonne resultete ca soddisfecene l'inderrogazione.",
        "powersearch-legend": "Ricerche avanzete",
        "duplicate-defaultsort": "'''Attenziò:''' 'A chiave de arrangamende de default \"$2\" sovrascrive quedda precedende \"$1\".",
        "version": "Versione",
        "version-extensions": "Estenziune installete",
+       "version-skins": "Skin",
        "version-specialpages": "Pàggene speciele",
        "version-parserhooks": "Hook analizzature",
        "version-variables": "Variabbele",
        "version-antispam": "Previzione d'u spam",
-       "version-skins": "Skin",
        "version-api": "API",
        "version-other": "Otre",
        "version-mediahandlers": "Gestore de le Media",
index b89154f..45846c3 100644 (file)
        "mergehistory-empty": "Не найдены правки для объединения.",
        "mergehistory-success": "$3 {{PLURAL:$3|правка|правок|правки}} из [[:$1]] успешно {{PLURAL:$3|перенесена|перенесены}} в [[:$2]].",
        "mergehistory-fail": "Не удалось произвести объединение историй страниц, пожалуйста, проверьте параметры страницы и времени.",
+       "mergehistory-fail-toobig": "Не удаётся выполнить слияние истории, так как необходимо перенести больше допустимого лимита в $1 {{PLURAL:$1|версию|версий|версии}}.",
        "mergehistory-no-source": "Исходная страница «$1» не существует.",
        "mergehistory-no-destination": "Целевая страница «$1» не существует.",
        "mergehistory-invalid-source": "Источник должен иметь правильный заголовок.",
        "searchall": "все",
        "showingresults": "Ниже {{PLURAL:$1|1=показан результат|показаны  результаты}} с № '''$2''' и вплоть до № '''$1'''.",
        "showingresultsinrange": "Ниже показано до {{PLURAL:$1|<strong>1</strong> результата|<strong>$1</strong> результатов|<strong>$1</strong> результата}} в диапазоне от <strong>$2</strong> до <strong>$3</strong>.",
-       "showingresultsnum": "Ниже {{PLURAL:$3|1=показан|показаны}} '''$3''' {{PLURAL:$3|результат|результатов|результата}}, начиная с № '''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|1=Результат '''$1''' из '''$3'''|Результаты '''$1—$2''' из '''$3'''}} для «'''$4'''»",
        "search-nonefound": "Соответствий запросу не найдено.",
        "powersearch-legend": "Расширенный поиск",
        "license-nopreview": "(Предпросмотр недоступен)",
        "upload_source_url": " (правильный, публично доступный интернет-адрес)",
        "upload_source_file": " (файл на вашем компьютере)",
+       "listfiles-delete": "удалить",
        "listfiles-summary": "Эта служебная страница показывает все загруженные файлы.",
        "listfiles_search_for": "Поиск по имени файла:",
        "imgfile": "файл",
        "duplicate-defaultsort": "Внимание. Ключ сортировки по умолчанию «$2» переопределяет прежний ключ сортировки по умолчанию «$1».",
        "version": "Версия",
        "version-extensions": "Установленные расширения",
+       "version-skins": "Установленные темы оформления",
        "version-specialpages": "Служебные страницы",
        "version-parserhooks": "Перехватчики синтаксического анализатора",
        "version-variables": "Переменные",
        "version-antispam": "Антиспам",
-       "version-skins": "Темы оформления",
        "version-other": "Иное",
        "version-mediahandlers": "Обработчики медиа",
        "version-hooks": "Перехватчики",
        "version-hook-name": "Имя перехватчика",
        "version-hook-subscribedby": "Подписан на",
        "version-version": "(Версия $1)",
+       "version-no-ext-name": "[без названия]",
        "version-license": "Лицензия MediaWiki",
        "version-ext-license": "Лицензия",
        "version-ext-colheader-name": "Расширение",
+       "version-skin-colheader-name": "Тема оформления",
        "version-ext-colheader-version": "Версия",
        "version-ext-colheader-license": "Лицензия",
        "version-ext-colheader-description": "Описание",
        "expand_templates_remove_nowiki": "Подавлять теги <nowiki> в результате",
        "expand_templates_generate_xml": "Показать дерево разбора XML",
        "expand_templates_generate_rawhtml": "Показать HTML",
-       "expand_templates_preview": "Предпросмотр"
+       "expand_templates_preview": "Предпросмотр",
+       "pagelanguage": "Выбор языка страницы",
+       "pagelang-name": "Страница",
+       "pagelang-language": "Язык",
+       "pagelang-use-default": "Использовать язык по умолчанию",
+       "pagelang-select-lang": "Выберите язык",
+       "right-pagelang": "Изменить язык страницы",
+       "action-pagelang": "изменять язык страницы",
+       "log-name-pagelang": "Журнал изменения языка",
+       "log-description-pagelang": "Это журнал изменений в языках страницы.",
+       "logentry-pagelang-pagelang": "$1 изменил{{GENDER:$2||а}} язык страницы для $3 с $4 на $5."
 }
index 4fdf3dc..f89f060 100644 (file)
        "qbmyoptions": "Мої сторінкы",
        "faq": "Часты звідованя",
        "faqpage": "Project:Часты звідованя",
-       "vector-action-addsection": "Придати тему",
-       "vector-action-delete": "Вымазати",
-       "vector-action-move": "Переменовати",
-       "vector-action-protect": "Всокотити",
-       "vector-action-undelete": "Обновити",
-       "vector-action-unprotect": "Змінити замок",
-       "vector-view-create": "Створити",
-       "vector-view-edit": "Едітовати",
-       "vector-view-history": "Видїти історію",
-       "vector-view-view": "Чітати",
-       "vector-view-viewsource": "Видїти код",
        "actions": "Дїї",
        "namespaces": "Просторы назв",
        "variants": "Варіанты",
        "difference-missing-revision": "{{PLURAL:$2|Єдна з ревізій|$2 ревізії|$2 ревізій}} к пожадованому порівнаню ($1) {{PLURAL:$2|не є|не суть|не є}}.\n\nГевсе є звычайно запрічінене так, же наслїдовали сьте застарїлый одказ історічнов ревізіов сторінкы, котра уж была змазана.\nДетайлы можуть быти найджены в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} книзї змазаный сторінок].",
        "searchresults": "Резултаты гляданя",
        "searchresults-title": "Резултаты гляданя \"$1\"",
-       "toomanymatches": "Пожадавцї одповідать дуже много згод, спробуйте іншый запыт.",
        "titlematches": "Сторінкы з одповідаючов назвов",
        "textmatches": "Сторінкы з одповідаючім текстом",
        "notextmatches": "Немає згоду в текстах сторінок",
        "searchmenu-exists": "'''У тій вікі є сторінка з назвов «[[:$1]]»'''",
        "searchmenu-new": "<strong>Створити сторінку на тій вікі „[[:$1]]“!</strong> {{PLURAL:$2|0=|Тыж собі посмотьте сторінку найдену вашым гляданём.|Тыж посмотьте сторінкы найдены вашым гляданём.}}",
        "searchprofile-articles": "Статї",
-       "searchprofile-project": "Сторінкы помочі і проєкту",
        "searchprofile-images": "Мултімедія",
        "searchprofile-everything": "Вшытко",
        "searchprofile-advanced": "Росшырене",
        "searchprofile-articles-tooltip": "Переглядавати: $1",
-       "searchprofile-project-tooltip": "Переглядавати: $1",
        "searchprofile-images-tooltip": "Глядати файлы",
        "searchprofile-everything-tooltip": "Переглядавати вшыток обсяг (рахувчі діскузны сторінкы)",
        "searchprofile-advanced-tooltip": "Задати просторы назв, де ся мать глядати",
        "search-interwiki-default": "$1 резултаты:",
        "search-interwiki-more": "(веце)",
        "search-relatedarticle": "Звязаный",
-       "searcheverything-enable": "Глядати во вшыткых просторах назв",
        "searchrelated": "звязаный",
        "searchall": "вшыткы",
        "showingresults": "Ниже {{PLURAL:$1|вказане|вказаны|вказаных}} '''$1''' {{PLURAL:$1|резултат|резултаты|резултатів}}, почінаючіх з №&nbsp;'''$2'''",
-       "showingresultsnum": "Ниже вказано <strong>$3</strong> {{PLURAL:$3|резултат|резултаты|резултатів}}, почінаючі з №&nbsp;<strong>$2</strong>.",
        "showingresultsheader": "{{PLURAL:$5|Резултат '''$1''' з '''$3'''|Резултаты '''$1 — $2''' з '''$3'''}}  про '''$4'''",
        "search-nonefound": "На вашу пожадавку не были найджены жадны резултаты.",
        "powersearch-legend": "Росшырене гляданя",
        "allowemail": "Поволити електронічну пошту од іншых хоснователїв",
        "prefs-searchoptions": "Гляданя",
        "prefs-namespaces": "Просторы назв",
-       "defaultns": "Інакше глядати в такых просторах назв:",
        "default": "імпліцітне",
        "prefs-files": "Файлы",
        "prefs-custom-css": "Властный CSS",
        "prefs-emailconfirm-label": "Потверджіня електронічной пошты:",
        "youremail": "Адреса електронічной пошты:",
        "username": "{{GENDER:$1|Імя хоснователя}}:",
-       "uid": "Ідентіфікатор {{GENDER:$1|хоснователя}}:",
        "prefs-memberingroups": "{{GENDER:$2|Член}} {{PLURAL:$1|ґрупы|ґруп}}:",
        "prefs-registration": "Час реґістрації:",
        "yourrealname": "Правдиве імя:",
        "log-title-wildcard": "Глядати назвы зачінаючі ся з тым текстом",
        "showhideselectedlogentries": "Вказати/сховати зволены записы лоґу.",
        "allpages": "Вшыткы сторінкы",
-       "alphaindexline": "од $1 до $2",
        "nextpage": "Далша сторінка ($1)",
        "prevpage": "Попередня сторінка ($1)",
        "allpagesfrom": "Вказати сторінкы, што ся зачінають на:",
index 705de39..9a8e9fe 100644 (file)
@@ -6,10 +6,6 @@
                ]
        },
        "mytalk": "Ibiganiro byanjye",
-       "vector-action-move": "Imura",
-       "vector-view-edit": "Hindura",
-       "vector-view-history": "Reba amateka",
-       "vector-view-view": "Soma",
        "toolbox": "Ibikoresho",
        "currentevents": "Ibigezweho",
        "mainpage": "Intangiriro",
index 9599d23..c2d4562 100644 (file)
        "qbmyoptions": "मम पृष्ठानि",
        "faq": "सामान्यजिज्ञासाः (FAQ)",
        "faqpage": "Project:सामान्यजिज्ञासाः(FAQ)",
-       "vector-action-addsection": "विषयः योज्यताम्",
-       "vector-action-delete": "अपाक्रियताम्",
-       "vector-action-move": "शीर्षकं परिवर्त्यताम्",
-       "vector-action-protect": "संरक्ष्यताम्",
-       "vector-action-undelete": "नापाकृतं",
-       "vector-action-unprotect": "संरक्षणं परिवर्तयतु",
-       "vector-view-create": "सृज्यताम्",
-       "vector-view-edit": "सम्पाद्यताम्",
-       "vector-view-history": "इतिहासः दृश्यताम्",
-       "vector-view-view": "पठ्यताम्",
-       "vector-view-viewsource": "स्रोतः दृश्यताम्",
        "actions": "क्रियाः",
        "namespaces": "नामाकाशाः",
        "variants": "पाठभेदाः",
        "difference-missing-revision": "एतस्य भेदस्य {{PLURAL:$2|एकं संस्करणं|$2 संस्करणानि}} ($1) न {{PLURAL:$2|प्राप्तम्|प्राप्तानि}} ।\n\nअपाकृतानां पृष्ठानां संस्करणानाम् अन्वेषणकाले प्रायशः एतादृशं भवति । अधिकं ज्ञातुं [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} अपाकृतानाम् आवलि)] पश्यतु ।",
        "searchresults": "अन्वेषणपरिणामाः",
        "searchresults-title": "\"$1\" कृते अन्वेषणपरिणामाः",
-       "toomanymatches": "बहवः परिणामाः प्राप्ताः, कृपया शब्दं परिवर्त्य पुनः अन्विष्यताम्",
        "titlematches": "पृष्ठशीर्षकं मेलः (matches)",
        "textmatches": "पृष्ठपाठः मेलः (matches)",
        "notextmatches": "एषः शब्दः न कस्मिंश्चिदपि पृष्ठे अन्तर्भवति ।",
        "searchall": "सर्वाणि",
        "showingresults": "#'''$2''' क्रमाङ्कात् आरभ्य {{PLURAL:$1|'''$1''' परिणामः अधः प्रदर्शितः|'''$1''' परिणामाः अधः प्रदर्शिताः}}।",
        "showingresultsinrange": "#'''$2''' क्रमाङ्कात् आरभ्य #'''$3''' क्रमाङ्कपर्यन्तं {{PLURAL:$1|'''$1''' परिणामः अधः प्रदर्शितः|'''$1''' परिणामाः अधः प्रदर्शिताः}}।",
-       "showingresultsnum": "#'''$2''' क्रमाङ्कात् आरभ्य {{PLURAL:$3|'''1''' परिणामः अधः प्रदर्शितः|'''$3''' परिणामाः अधः प्रदर्शिताः}}।",
        "showingresultsheader": "'''$4''' इत्येतस्मै {{PLURAL:$5|'''$1''' परिणामः '''$3''' इत्येषु|'''$1 - $2''' परिणामाः '''$3''' इत्येषु}}",
        "search-nonefound": "भवतः/भवत्याः अपेक्षानुगुणं परिणामः न विद्यते ।",
        "powersearch-legend": "प्रगतम् अन्वेषणम्",
        "pageinfo-category-pages": "पृष्ठानां सङ्ख्या",
        "pageinfo-category-subcats": "उपवर्गानां सङ्ख्या",
        "pageinfo-category-files": "सञ्चिकानां सङ्ख्या",
-       "skinname-monobook": "पुस्तक",
        "markaspatrolleddiff": "आरक्षितमिति अङ्कयतु ।",
        "markaspatrolledtext": "एतपुटम् आरक्षितमिति अङ्कयतु ।",
        "markedaspatrolled": "आरक्षितमिति अङ्कयतु ।",
index 6ec3f12..7ffcdeb 100644 (file)
        "searchall": "бары",
        "showingresults": "Манна {{PLURAL:$1|түмүк|түмүктэр}} {{PLURAL:$1|көрдөрүлүннэ|көрдөрүлүннүлэр}} <strong>$1</strong> , мантан саҕалаан №&nbsp;<strong>$2</strong>.",
        "showingresultsinrange": "Манна {{PLURAL:$1|<strong>1</strong> түмүк|<strong>$1</strong> түмүк}} мантан саҕалаан <strong>$2</strong> маныаха дылы <strong>$3</strong> көрдөрүлүннэ.",
-       "showingresultsnum": "Манна {{PLURAL:$3|түмүк|түмүктэр}} {{PLURAL:$3|көрдөрөлүннэ|көрдөрүлүннүлэр}} <strong>$3</strong>, мантан саҕалаан №&nbsp;<strong>$2</strong>.",
        "showingresultsheader": "'''$4''' анаммыт {{PLURAL:$5|мантан '''$3''' түмүгэ - '''$1'''|мантан '''$3''' түмүктэрэ '''$1 - $2'''}}",
        "search-nonefound": "Көрдөбүлгэ эппиэттиир билэлэр көстүбэтилэр.",
        "powersearch-legend": "Дириҥэтэн көрдөөһүн",
index 99d07b5..dc1661a 100644 (file)
        "qbmyoptions": "In̕anḱ sakamko",
        "faq": "Baḍae kupuliko",
        "faqpage": "Project:FAQ",
-       "vector-action-addsection": "Asol katha joṛaome",
-       "vector-action-delete": "Giḍi",
-       "vector-action-move": "Ocoḱ́me",
-       "vector-action-protect": "Bańcao",
-       "vector-action-undelete": "Bań getgiḍi",
-       "vector-action-unprotect": "Bodol rukhiyạ",
-       "vector-view-create": "Tearme",
-       "vector-view-edit": "So̠mpado̠n",
-       "vector-view-history": "Jạṛ ńelme",
-       "vector-view-view": "Paṛhaḱme",
-       "vector-view-viewsource": "Ńamoḱaḱ ńelme",
        "actions": "Kạmi",
        "namespaces": "Ñutum jaiga",
        "variants": "Etaḱko",
        "searchmenu-exists": "'''Noa wiki re do \"[[:$1]] ńutum sakam menaḱa",
        "searchmenu-new": "wiki re [[:$1]]nãwã sakam tear",
        "searchprofile-articles": "Menaḱaḱ sakamko",
-       "searchprofile-project": "Go̠ṛo ar Project sakam",
        "searchprofile-images": "Multimedia",
        "searchprofile-everything": "Sanamaḱ koge",
        "searchprofile-advanced": "Sompadon",
        "searchprofile-articles-tooltip": "$1 re ńelme",
-       "searchprofile-project-tooltip": "$1 re sẽndraeme",
        "searchprofile-images-tooltip": "File sendra",
        "searchprofile-everything-tooltip": "Sanam ko modre sẽndra ( roṛ sakam modre hõ)",
        "searchprofile-advanced-tooltip": "Judạ ńutum re sẽndra",
index 14ae576..b2c68bb 100644 (file)
        "qbmyoptions": "Is preferèntzias meas",
        "faq": "Pregontas/Respostas (FAQ)",
        "faqpage": "Project:FAQ",
-       "vector-action-addsection": "Giunghe cuntierra",
-       "vector-action-delete": "Cantzella",
-       "vector-action-move": "Move",
-       "vector-action-protect": "Ampara",
-       "vector-action-undelete": "Recùpera",
-       "vector-view-create": "Crea",
-       "vector-view-edit": "Acontza",
-       "vector-view-history": "Càstia istòria",
-       "vector-view-view": "Leghe",
-       "vector-view-viewsource": "Càstia mitza",
        "actions": "Atziones",
-       "vector-more-actions": "Prus",
        "namespaces": "Nùmene-logos",
        "variants": "Variantes",
        "navigation-heading": "Menu po nàvigu",
index 0fb4ce1..62f3650 100644 (file)
        "tog-hidepatrolled": "Ammuccia li mudìfichi fatti ntâ l'ùrtimi canciamenti",
        "tog-newpageshidepatrolled": "Ammuccia li pàggini virificati di l'alencu dî pàgging cchiù novi",
        "tog-extendwatchlist": "Attiva tutti li funzioni avanzati pi l'ossirvati spiciali, nun sulu l'ultima",
-       "tog-usenewrc": "Utilizza Ùrtimi canciamenti avanzati (richiedi JavaScript)",
+       "tog-usenewrc": "Raggruppa li canci pi pàggina ntê canciamenti ricenti e ntâ lista dî taliati spiciali",
        "tog-numberheadings": "Nummirazzioni automàtica dî tìtuli di paràgrafu",
        "tog-showtoolbar": "Ammustra la barra dî strumenta pi lu canciamentu",
-       "tog-editondblclick": "Duppiu click pi canciari l'artìculu (richiedi Javascript)",
-       "tog-editsectiononrightclick": "Abbìlita lu canciamentu dî sezzioni tràmiti duppiu click supra lu tìtulu dâ sezzioni (richiedi Javascript)",
-       "tog-watchcreations": "Agghiunci li pàggini criati a l'ossirvati spiciali",
+       "tog-editondblclick": "Duppiu click pi canciari l'artìculu",
+       "tog-editsectiononrightclick": "Abbìlita lu canciamentu dî sizzioni tràmiti duppiu click a manu dritta supra lu tìtulu dâ sezzioni",
+       "tog-watchcreations": "Agghiunci li pàggini criati e li files â lista dî taliati",
        "tog-watchdefault": "Agghiunci li pàggini canciati a l'ossirvati spiciali",
        "tog-watchmoves": "Agghiunci li pàggini spustati a l'ossirvati spiciali",
        "tog-watchdeletion": "Agghiunci li pàggini di mìa cancillati a l'ossirvati spiciali",
        "searchrelated": "currilati",
        "searchall": "tutti",
        "showingresults": "Ammustra nzinu a {{PLURAL:$1|'''1''' risurtatu|'''$1''' risurtati}} a pàrtiri dô nùmmuru '''$2'''.",
-       "showingresultsnum": "L'alencu cunteni {{PLURAL:$3|'''1''' risurtatu|'''$3''' risurtati}} a pàrtiri dû nùmmuru '''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Risultatu '''$1''' di '''$3'''|Risultati '''$1 - $2''' di '''$3'''}} pi '''$4'''",
        "search-nonefound": "La circata nun desi nuddu risurtatu.",
        "powersearch-legend": "Ricerca avanzata",
index 2ec5dfc..5c60e43 100644 (file)
        "searchall": "aw",
        "showingresults": "Shawin ablo up tae {{PLURAL:$1|'''1''' ootcome|'''$1''' ootcomes}} stertin wi #'''$2'''.",
        "showingresultsinrange": "Shawin ablo up til {{PLURAL:$1|<strong>1</strong> ootcome|<strong>$1</strong> ootcome}} in range #<strong>$2</strong> til #<strong>$3</strong>.",
-       "showingresultsnum": "Shawin ablo {{PLURAL:$3|'''1''' ootcome|'''$3''' ootcomes}} stertin wi #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Ootcome <strong>$1</strong> o <strong>$3</strong>|Ootcomes <strong>$1 - $2</strong> o <strong>$3</strong>}} fer <strong>$4</strong>",
        "search-nonefound": "Thaur were naw ootcomes matchin the speiring.",
        "powersearch-legend": "Advanced rake",
index 67d9eab..a934d02 100644 (file)
        "qbmyoptions": "Li me' pàgini",
        "faq": "FAQ (infuimmazioni e aggiuddu)",
        "faqpage": "Project:FAQ (infuimmazioni e aggiuddu)",
-       "vector-action-addsection": "Aggiungì oggettu",
-       "vector-action-delete": "Canzella",
-       "vector-action-move": "Ippustha",
-       "vector-action-protect": "Pruteggì",
-       "vector-view-create": "Cria",
-       "vector-view-edit": "Mudifigga",
-       "vector-view-history": "Vèdi isthòria",
-       "vector-view-view": "Leggi",
-       "vector-view-viewsource": "Vèdi fonti",
        "actions": "Azioni",
        "namespaces": "Tipi di pàgina:",
        "variants": "Varianti",
        "searchmenu-exists": "'''Z'è una pàgina ciamadda\"[[:$1]]\" in chisthu vichi.''' {{PLURAL:$2|0=|Vèdi puru li althri risulthaddi agattaddi.}}",
        "searchmenu-new": "'''Crea la pàgina \"[[:$1]]\" in chistha vichi!''' {{PLURAL:$2|0=|Vèdi puru la pàgina agattadda cun la zercha tòia.|Vèdi puru li risulthaddi agattaddi .}}",
        "searchprofile-articles": "Bozi",
-       "searchprofile-project": "Pàgini d'aggiuddu e di prugettu",
        "searchprofile-images": "Mùrthimediari",
        "searchprofile-everything": "Tuttu",
        "searchprofile-advanced": "Abanzaddu",
        "searchprofile-articles-tooltip": "Zercha in $1",
-       "searchprofile-project-tooltip": "Zercha in $1",
        "searchprofile-images-tooltip": "Zirchà dati",
        "searchprofile-everything-tooltip": "Zercha in tuttu lu cuntinuddu (pàgini di dischussioni cumpresi)",
        "searchprofile-advanced-tooltip": "Zercha in althri tipi di pàgina",
        "searchrelated": "curriraddi",
        "searchall": "tutti",
        "showingresults": "Accó {{PLURAL:$1|màssimu '''1''' risulthaddu|màssimu li '''$1''' risulthaddi}} à partì da lu nùmaru #'''$2'''.",
-       "showingresultsnum": "Accó {{PLURAL:$3|'''1''' risulthaddu |li '''$3''' risulthaddi}} à partì da lu nùmaru #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Risulthaddu '''$1''' of '''$3'''|Risulthaddi '''$1 - $2''' di '''$3'''}} pa '''$4'''",
        "search-nonefound": "Nisciuni risulthaddi pa la to' zercha",
        "powersearch-legend": "Zercha abanzadda",
        "allowemail": "Cunsenti lu rizzibimentu di postha erettrònica d'althri utenti (1)",
        "prefs-searchoptions": "Zercha",
        "prefs-namespaces": "Tipu di pagina",
-       "defaultns": "Namespace pridifiniddi pa zirchà:",
        "default": "pridifiniddu",
        "prefs-files": "File",
        "prefs-custom-css": "CSS passunarizzaddu",
        "prefs-custom-js": "JS passunarizzaddu",
        "youremail": "Indirizzu di postha erettrònica: *",
        "username": "Innòmu utenti",
-       "uid": "ID utenti:",
        "prefs-memberingroups": "Membru di {{PLURAL:$1|lu gruppu|li gruppi}}:",
        "prefs-registration": "Data di registhrazioni:",
        "yourrealname": "Innòmu veru: *",
        "logempty": "Lu rigisthru nò cunteni erementi curripundenti.",
        "log-title-wildcard": "Zercha li tìturi ch'ischuminzani cun",
        "allpages": "Tutti li pàgini",
-       "alphaindexline": "da $1 a $2",
        "nextpage": "Pàgini sighenti ($1)",
        "prevpage": "Pàgina prizzidenti ($1)",
        "allpagesfrom": "Musthra li pàgini a parthì da:",
index fca4c06..d079543 100644 (file)
        "qbedit": "Rievdat",
        "qbpageoptions": "Siidoásahusat",
        "qbmyoptions": "Ásahusat",
-       "vector-action-addsection": "Lasit fáttá",
-       "vector-action-delete": "Sihko",
-       "vector-action-move": "Sirdde",
-       "vector-action-protect": "Suodjal",
-       "vector-action-undelete": "Máhcat",
-       "vector-action-unprotect": "Rievdat suodjaleami",
-       "vector-view-create": "Álggat",
-       "vector-view-edit": "Rievdat",
-       "vector-view-history": "Geahča historjjá",
-       "vector-view-view": "Loga",
-       "vector-view-viewsource": "Geahča gáldokoda",
        "errorpagetitle": "Feaila",
        "returnto": "Máhcat siidui $1.",
        "tagline": "{{SITENAME}}",
        "viewprevnext": "Čájet [$3] oktanaga.\n\n$1 {{int:pipe-separator}} $2",
        "searchmenu-new": "'''Álggat siiddu ''[[:$1]]'' dán Wikipediai'''",
        "searchprofile-articles": "Sisdoallosiiddut",
-       "searchprofile-project": "Veahkke- ja prošeaktasiiddut",
        "searchprofile-everything": "Buot",
        "searchprofile-advanced": "Viiddiduvvon",
        "showingresults": "{{PLURAL:$1|'''Okta''' boađus|'''$1''' bohtosa}} bohtosa'''$2''' rájes.",
-       "showingresultsnum": "Vuolábealde {{PLURAL:$3|lea '''okta''' ohcanboađus|leat '''$3''' ohcanbohtosa}} '''$2.''' bohtosa rájes.",
        "powersearch-ns": "Oza nammagomuvuođain:",
        "powersearch-togglelabel": "Rievdat válljema:",
        "powersearch-toggleall": "Buot",
        "prefs-files": "Fiillat",
        "youremail": "E-poastačujuhus",
        "username": "Geavaheaddjenamma:",
-       "uid": "Geavaheaddji-ID:",
        "prefs-memberingroups": "Miellahttu/lahttu {{PLURAL:$1|joavkkus|joavkkuin}}:",
        "prefs-registration": "Registrerenáigi:",
        "yourrealname": "Rivttes namma",
        "logempty": "Eai dáhpáhusat loggas.",
        "log-title-wildcard": "Mearri álgá mearkkaiguin",
        "allpages": "Buot siiddut",
-       "alphaindexline": "$1…$2",
        "nextpage": "Čuovvovaš siidu ($1)",
        "prevpage": "Ovddit siidu ($1)",
        "allarticles": "Buot siiddut",
        "block": "Hehtte geavaheaddji",
        "blockip": "Hehtte rievdadeamis",
        "blockip-legend": "Cagge geavaheaddji",
-       "ipadressorusername": "IP-čujuhus dahje geavaheaddjidovddaldat",
+       "ipaddressorusername": "IP-čujuhus dahje geavaheaddjidovddaldat",
        "ipbexpiry": "Guhkkodat",
        "ipbreason": "Sivva",
        "ipbreason-dropdown": "*Dábálas cakkastallansivat\n** Boasto dieđuid lasiheapmi\n** Sisdoalu sihkkun\n** Reklámaliŋkkaid lasiheapmi\n** Moiven dahje ruskkaid lasiheapmi\n** Hehtten\n** Maŋgga geavaheaddjidovddaldaga geaveaheapmi boastut\n** Fasttes geavaheaddjidovddaldat",
index 7d92e0c..0ff91b7 100644 (file)
        "servertime": "Xepede server",
        "guesstimezone": "Xuniimyabuatlecaún dai'browser",
        "allowemail": "Pos-coccebj e-iitomde diijömde caitóm",
-       "defaultns": "Yahöx jan ipartuatl iti auto:",
        "default": "auto",
        "prefs-files": "Ciúchán",
        "youremail": "E-iitom:",
        "username": "Caitom ID:",
-       "uid": "ID comháars:",
        "yourrealname": "Comcáacuatl:",
        "yourlanguage": "Itom ö:",
        "yourvariant": "Ccójbam:",
        "istemplate": "incluciónaj",
        "whatlinkshere-links": "← linkám",
        "blockip": "Block caitom",
-       "ipadressorusername": "Addressade IP jöx caitom ID:",
+       "ipaddressorusername": "Addressade IP jöx caitom ID:",
        "ipbreason": "Ra:",
        "ipbsubmit": "Block jan caitom",
        "ipbother": "Pac'de xepe:",
        "siteusers": "{{SITENAME}} cait(o/ó)m $1",
        "spambot_username": "MediaWiki nespam",
        "widthheightpage": "$1 × $2, $3 páhinám",
-       "showhidebots": "($1 botám)",
        "ilsubmit": "Yahöx",
        "bydate": "de datum",
        "exif-fnumber": "F Numberam",
index 389e4dd..6ad3c21 100644 (file)
        "qbmyoptions": "Mona poslapē",
        "faq": "DOK",
        "faqpage": "Project:DOK",
-       "vector-action-addsection": "Pridietė tema",
-       "vector-action-delete": "Trintė",
-       "vector-action-move": "Parvadintė",
-       "vector-action-protect": "Ožrakintė",
-       "vector-action-undelete": "Atkortė",
-       "vector-action-unprotect": "Keistė apsauga",
-       "vector-view-create": "Sokortė",
-       "vector-view-edit": "Taisītė",
-       "vector-view-history": "Veizietė istuorėjė",
-       "vector-view-view": "Skaitītė",
-       "vector-view-viewsource": "Veizietė kuoda",
        "actions": "Vēksmā",
        "namespaces": "Vardū srėtīs",
        "variants": "Variantā",
        "searchmenu-exists": "'''Poslapis pavadėnts „[[$1]]“ šėtuo wiki'''",
        "searchmenu-new": "'''Sokortė poslapi „[[:$1]]“ šėtuo wiki!'''",
        "searchprofile-articles": "Torėnė poslapē",
-       "searchprofile-project": "Pagelbas ė pruojekta poslapē",
        "searchprofile-images": "Daugēlīpės terpės failā",
        "searchprofile-everything": "Vėsks",
        "searchprofile-advanced": "Prapliesta",
        "searchprofile-articles-tooltip": "Ėiškuotė čiuonās: $1",
-       "searchprofile-project-tooltip": "Ėiškuotė čiuonās: $1",
        "searchprofile-images-tooltip": "Ėiškuotė failu",
        "searchprofile-everything-tooltip": "Ėiškuotė vėsuo torėnė (tuom patėm ėr aptarėma poslapiu)",
        "searchprofile-advanced-tooltip": "Ėiškoutė skėrtingūsė vardū sėtīsė",
        "searchrelated": "sosėjėn",
        "searchall": "vėsė",
        "showingresults": "Žemiau ruodoma lėgė '''$1''' {{PLURAL:$1|rezoltata|rezoltatu|rezoltatu}} pradedont #'''$2'''.",
-       "showingresultsnum": "Žemiau ruodoma '''$3''' {{PLURAL:$3|rezoltata|rezoltatu|rezoltatu}} pradedant #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Rezoltats '''$1''' ėš '''$3'''|Rezoltatā '''$1 - $2''' ėš '''$3'''}} vagol paklausėma '''$4'''",
        "search-nonefound": "Nier rezoltatu, katrėi atitėktu ožklausėma.",
        "powersearch-legend": "Prapliesta paėiška",
        "allowemail": "Lēstė siūstė el. gramuotelės ėš kėtū nauduotuoju",
        "prefs-searchoptions": "Paėiškuos nustatīmā",
        "prefs-namespaces": "Vardū srėtīs",
-       "defaultns": "Palē nutīliejėma ėiškuotė šėtuosė vardū srėtīsė:",
        "default": "palē nūtīliejėma",
        "prefs-files": "Failā",
        "youremail": "El. pašts:",
index dca11bf..b422598 100644 (file)
        "searchall": "sve",
        "showingresults": "Dole {{PLURAL:$1|je prikazan '''1''' rezultat|su prikazana '''$1''' rezultata|je prikazano '''$1''' rezultata}} počev od '''$2'''.",
        "showingresultsinrange": "Ispod {{PLURAL:$1|je prikazan <strong>1</strong> rezultat|su prikazana <strong>$1</strong> rezultata|je prikazano <strong>$1</strong> rezultata}}, u rasponu od <strong>$2</strong> do <strong>$3</strong>.",
-       "showingresultsnum": "Dolje {{PLURAL:$3|je prikazan '''1''' rezultat|su prikazana '''$3''' rezultata|je prikazano '''$3''' rezultata}} počev od #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Rezultat '''$1''' od '''$3'''|Rezultati '''$1 - $2''' od '''$3'''}} za '''$4'''",
        "search-nonefound": "Nisu pronađeni rezultati koji odgovaraju upitu.",
        "powersearch-legend": "Napredna pretraga",
        "duplicate-defaultsort": "'''Upozorenje''': Postavljeni ključ sortiranja \"$2\" zamjenjuje raniji ključ \"$1\".",
        "version": "Verzija / Верзија",
        "version-extensions": "Instalirana proširenja (ekstenzije)",
+       "version-skins": "Izgledi (skinovi)",
        "version-specialpages": "Posebne stranice",
        "version-parserhooks": "Kuke parsera",
        "version-variables": "Promjenjive",
        "version-antispam": "Sprečavanje spama",
-       "version-skins": "Izgledi (skinovi)",
        "version-other": "Ostalo",
        "version-mediahandlers": "Upravljači medije",
        "version-hooks": "Kuke",
index 07849a4..d2a285b 100644 (file)
        "qbmyoptions": "Tisnatin inu",
        "faq": "Isqsitn li bdda tsutulnin",
        "faqpage": "Project: Isqqsit li bdda",
-       "vector-action-addsection": "Zayd amli",
-       "vector-action-delete": "Ḥiyd",
-       "vector-action-move": "Smmatti",
-       "vector-action-protect": "Ḥbu",
-       "vector-action-undelete": "Rard may mayḥiydn",
-       "vector-action-unprotect": "Ḥiyd aḥbu",
-       "vector-view-create": "Skert",
-       "vector-view-edit": "Ara",
-       "vector-view-history": "Mel amzruy",
-       "vector-view-view": "ɣr",
-       "vector-view-viewsource": "Ẓr asagm",
        "actions": "Imskarn",
        "namespaces": "Ismawn n tɣula",
        "variants": "lmotaghayirat",
        "diff-multi-manyusers": "({{PLURAL:$1|yan ulqm n gratsn|$1 ilqmn ngratsn}} zdar mnnaw {{PLURAL:$2|amcgr |n $2 imcgrn}} {{PLURAL:$1|iḥba|lli iḥban}})",
        "searchresults": "Mad akkan icnubcn",
        "searchresults-title": "Mad akkan icnubcn f \"$1\"",
-       "toomanymatches": "Illa bzzaf maygan zund maya. sbadl taguri yad skra yaḍn",
        "titlematches": "Assaɣ n tasna iga zund",
        "textmatches": "Aṭṛiṣ n tasna iga zund",
        "notextmatches": "Ur ittyufa kra nu uṭṛiṣ igan zund ɣwad",
        "searchmenu-exists": "\"'Tlla yat tasna lli ilan assaɣ « [[:$1]] » ɣ wiki yad",
        "searchmenu-new": "'''Skr Tasna « [[:$1|$1]] » ɣ wiki !'''",
        "searchprofile-articles": "Mayllan ɣ tasna",
-       "searchprofile-project": "Tisniwin n w-aws n usnfar",
        "searchprofile-images": "Multimedia",
        "searchprofile-everything": "kullu",
        "searchprofile-advanced": "motaqqadim",
        "searchprofile-articles-tooltip": "qlb gh $1",
-       "searchprofile-project-tooltip": "qlb gh $1",
        "searchprofile-images-tooltip": "qlb gh tswira",
        "searchprofile-everything-tooltip": "Cabba ɣ kullu may ityran ɣid (d ḥtta ɣ tisna nu umsgdal)",
        "searchprofile-advanced-tooltip": "Cabba ɣ igmmaḍn li tuyzlaynin",
        "search-interwiki-default": "$1 imyakkatn",
        "search-interwiki-more": "(Uggar)",
        "search-relatedarticle": "Tzdi",
-       "searcheverything-enable": "Cabba ɣ graygat agmmaḍ",
        "searchrelated": "Tuyzday",
        "searchall": "Kullu",
        "showingresults": "Ẓr azddar  {{PLURAL:$1|'''1''' May tuykfan|'''$1''' Mad kfan}} Bdu s #'''$2'''",
-       "showingresultsnum": "Ẓr azddar (ifsr ɣ uzddar) {{PLURAL:$3|'''1''' may kfa|'''$3''' mad kfan}} Bdu s #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|May kfa '''$1''' ar '''$3'''|Mad kfan '''$1 - $2''' ar '''$3'''}} i '''$4'''",
        "search-nonefound": "Ur ittuykfa walu maygan zund ɣayli trit",
        "powersearch-legend": "Amsigl imzwarn",
        "allowemail": "artamz limail dar isxdamn yadni",
        "prefs-searchoptions": "Istayn ucnubc",
        "prefs-namespaces": "Ismawn n tɣula",
-       "defaultns": "ghd sigl gh nitaqat ad",
        "default": "iftiradi",
        "prefs-files": "Asdaw",
        "prefs-custom-css": "khss CSS",
        "prefs-custom-js": "khss JavaScipt",
        "youremail": "Tabrat mail",
        "username": "smiyt o-msxdam:",
-       "uid": "raqm omskhdam:",
        "prefs-registration": "waqt n tsjil:",
        "yourrealname": "smiyt nk lmqol",
        "yourlanguage": "tutlayt:",
        "all-logs-page": "Immussutn ittyuran immurzmn i kullu..",
        "log-title-wildcard": "Cabba s iswln li ttizwirnin s uṭṛiṣ ad",
        "allpages": "Tisniwin kullu tnt",
-       "alphaindexline": "$1 ar $2",
        "nextpage": "Tasna li rad yack ($1)",
        "prevpage": "Tasna li izrin $1",
        "allpagesfrom": "Mel tisniwin li ittizwirn z",
index 8fdddd6..3b582a5 100644 (file)
        "qbmyoptions": "මගේ පිටු",
        "faq": "නිවිප්‍ර",
        "faqpage": "Project:නිවිප්‍ර",
-       "vector-action-addsection": "මාතෘකාව එක්කරන්න",
-       "vector-action-delete": "මකන්න",
-       "vector-action-move": "ගෙනයන්න",
-       "vector-action-protect": "ආරක්‍ෂණය",
-       "vector-action-undelete": "මකාදැමීම අවලංගු කරන්න",
-       "vector-action-unprotect": "ආරක්ෂණ තත්වය වෙනස් කරන්න",
-       "vector-view-create": "තනන්න",
-       "vector-view-edit": "සංස්කරණය",
-       "vector-view-history": "ඉතිහාසය නරඹන්න",
-       "vector-view-view": "කියවන්න",
-       "vector-view-viewsource": "මූලාශ්‍රය නරඹන්න",
        "actions": "කාර්යයන්",
-       "vector-more-actions": "තවත්",
        "namespaces": "නාමඅවකාශයන්",
        "variants": "ප්‍රභේද",
        "navigation-heading": "සංචාලන මෙනුව",
        "diff-multi-manyusers": "(පරිශීලකයන් $2 කට වඩා වැඩි ගණනකගේ ආසන්න පුනරීක්‍ෂණ $1ක් පෙන්වා නොමැත)",
        "searchresults": "ගවේෂණ ප්‍රතිඵල",
        "searchresults-title": "\"$1\" සඳහා ගවේෂණ ප්‍රතිඵල",
-       "toomanymatches": "පමණට වඩා ගැලපුම් ගණනක් ලැබුණි, කරුණාකර වෙනස් විමසුමක් සිදුකර බලන්න",
        "titlematches": "පිටු ශීර්ෂය ගැළපෙයි",
        "textmatches": "පිටු පෙළ ගැළපෙයි",
        "notextmatches": "පිටු පෙළ කිසිවක් නොගැළපෙයි",
        "searchrelated": "ආශ්‍රිත",
        "searchall": "සියල්ල",
        "showingresults": "#'''$2''' ගෙන් ආරම්භ කොට, {{PLURAL:$1|ප්‍රතිඵල '''1'''  ක් |ප්‍රතිඵල '''$1''' ක්}} දක්වා පහත පෙන්වා ඇත.",
-       "showingresultsnum": "#'''$2''' ගෙන් ආරම්භ කොට, {{PLURAL:$3|ප්‍රතිඵල '''1'''  ක් |ප්‍රතිඵල '''$3''' ක්}} පහත පෙන්වා ඇත.",
        "showingresultsheader": "'''$4''' සඳහා {{PLURAL:$5| '''$3''' අතුරින් '''$1''' ප්‍රතිඵලය| '''$3''' අතුරින් '''$1 - $2''' ප්‍රතිඵලයන්}}",
        "search-nonefound": "විමසුම හා ගැලපෙන ප්‍රතිඵල කිසිවක් නොමැත.",
        "powersearch-legend": "වැඩිමනත් ගවේෂණය",
        "tooltip-preferences-save": "අභිරුචීන් සුරකින්න",
        "tooltip-summary": "කෙටි සාරාංශයක් ඇතුළත් කරන්න",
        "common.css": "/* මෙහි CSS  බහාලීම සියළු ඡවියයන් භාවිතා කරන පරිශීලකයන් හට බලපෑම් සිදු කල හැක */",
-       "monobook.css": "/* මෙහි CSS  බහාලීම ඒකායන ඡවිය භාවිතා කරන පරිශීලකයන් හට බලපෑම් සිදු කල හැක */",
        "print.css": "/* මෙහි CSS  බහාලීම මුද්‍රණ ප්‍රතිදානයට බලපෑම් සිදු කල හැක */",
        "common.js": "/* මෙහි ඕනෑම ජාවාස්ක්‍රිප්ට් එකක් සෑම පිටු ප්‍රවේශනයකදීම සියළු පරිශීලකයන්හට ප්‍රවේශනය කෙරේ. */",
-       "monobook.js": "/* මෙහි ඕනෑම ජාවාස්ක්‍රිප්ට් එකක් ඒකායන ඡවිය භාවිතා කරන පරිශීලකයන්හට ප්‍රවේශනය කෙරේ */",
        "anonymous": "{{SITENAME}} හි නිර්නාමික {{PLURAL:$1|පරිශීලකයා|පරිශීලකයෝ}}",
        "siteuser": "{{SITENAME}} පරිශීලක $1",
        "anonuser": "{{SITENAME}} නිර්නාමික පරිශීලක $1",
index ae13f91..a27497b 100644 (file)
        "searchrelated": "súvisiace",
        "searchall": "všetko",
        "showingresults": "Nižšie {{PLURAL:$1|je zobrazený jeden výsledok|sú zobrazené '''1''' výsledky|je zobrazených '''$1''' výsledkov}}, počnúc od  #<b>$2</b>.",
-       "showingresultsnum": "Nižšie {{PLURAL:$3|je zobrazený najviac '''1''' výsledok|sú zobrazené najviac '''$3''' výsledky|je zobrazených najviac '''$3''' výsledkov}}, počnúc od  #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Výsledok '''$1''' z '''$3'''|Výsledky '''$1 - $2''' z '''$3'''}} pre '''$4'''",
        "search-nonefound": "Vyhľadávanie nenašlo žiadne výsledky.",
        "powersearch-legend": "Pokročilé hľadanie",
index 4a902d0..719ce57 100644 (file)
        "searchall": "vse",
        "showingresults": "Prikazujem do '''$1''' {{PLURAL:$1|zadetek|zadetka|zadetke|zadetkov}}, začenši s št. '''$2'''.",
        "showingresultsinrange": "Spodaj prikazujem {{PLURAL:$1|1=<strong>1</strong> rezultat|<strong>$1</strong> rezultata|<strong>$1</strong> rezultate|<strong>$1</strong> rezultatov}} v razponu od št. <strong>$2</strong> do št. <strong>$3</strong>.",
-       "showingresultsnum": "Prikazujem '''$3''' {{PLURAL:$3|zadetek|zadetka|zadetke|zadetkov|zadetkov}}, začenši s št. '''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Zadetek '''$1''' od '''$3'''|Zadetki '''$1 - $2''' od skupno '''$3'''}} za povpraševanje '''$4'''",
        "search-nonefound": "Ni bilo zadetkov, ki ustrezajo poizvedbi.",
        "powersearch-legend": "Napredno iskanje",
        "license-nopreview": "(Predogled ni na voljo)",
        "upload_source_url": " (veljaven, javnosti dostopen URL)",
        "upload_source_file": " (datoteka na vašem računalniku)",
+       "listfiles-delete": "izbriši",
        "listfiles-summary": "Ta posebna stran prikazuje vse naložene datoteke.",
        "listfiles_search_for": "Išči po imenu datoteke:",
        "imgfile": "dat.",
        "duplicate-defaultsort": "'''Opozorilo:''' Privzeti ključ razvrščanja »$2« prepiše prejšnji privzeti ključ razvrščanja »$1«.",
        "version": "Različica",
        "version-extensions": "Nameščene razširitve",
+       "version-skins": "Nameščene kože",
        "version-specialpages": "Posebne strani",
        "version-parserhooks": "Razširitve razčlenjevalnika",
        "version-variables": "Spremenljivke",
        "version-antispam": "Preprečevanje smetja",
-       "version-skins": "Kože",
        "version-other": "Ostalo",
        "version-mediahandlers": "Upravljavci predstavnostnih vsebin",
        "version-hooks": "Razširitve",
        "version-license": "Dovoljenje MediaWiki",
        "version-ext-license": "Dovoljenje",
        "version-ext-colheader-name": "Razširitev",
+       "version-skin-colheader-name": "Koža",
        "version-ext-colheader-version": "Različica",
        "version-ext-colheader-license": "Dovoljenje",
        "version-ext-colheader-description": "Opis",
        "expand_templates_remove_nowiki": "V rezultatu odstrani oznake <nowiki>",
        "expand_templates_generate_xml": "Pokaži razčlenitveno drevo XML",
        "expand_templates_generate_rawhtml": "Prikaži surovi HTML",
-       "expand_templates_preview": "Predogled"
+       "expand_templates_preview": "Predogled",
+       "pagelanguage": "Izbirnik jezika strani",
+       "pagelang-name": "Stran",
+       "pagelang-language": "Jezik",
+       "pagelang-use-default": "Uporabi privzeti jezik",
+       "pagelang-select-lang": "Izberite jezik",
+       "right-pagelang": "Spreminjanje jezika strani",
+       "action-pagelang": "spreminjanje jezika strani",
+       "log-name-pagelang": "Dnevnik spreminjanja 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."
 }
index cf37864..28e64ee 100644 (file)
        "qbpageoptions": "Seytaoptiona",
        "qbmyoptions": "Menne Seyta",
        "faq": "FAQ",
-       "vector-action-addsection": "Obschnitt hinzufiega",
-       "vector-action-delete": "Läscha",
-       "vector-action-move": "Verschieba",
-       "vector-action-protect": "Schützen",
-       "vector-action-undelete": "Wiederherstella",
-       "vector-action-unprotect": "Freigahn",
-       "vector-view-create": "Erstella",
-       "vector-view-edit": "Bearbeita",
-       "vector-view-history": "Versionsgeschichte",
-       "vector-view-view": "Lessa",
-       "vector-view-viewsource": "Quelltext siehn",
        "actions": "Aksjonna",
        "namespaces": "Noamensraum:",
        "variants": "Varianta",
        "editundo": "rieckgängig",
        "searchresults": "Sichergebnisse",
        "searchresults-title": "Suchergebnisse fier \"$1\"",
-       "toomanymatches": "De Oazoahl dar Sichergebnisse ies zu gruß, bitte versiche anne andere Obfroage.",
        "titlematches": "Iebereinstimmunga miet Seytatitteln",
        "textmatches": "Iebereinstimmunga miet Inhalta",
        "notextmatches": "Kenne Iebereinstimmunga miet Inhalta",
        "searchmenu-exists": "'''Is gitt anne Seite, de den Noama „[[:$1]]“ hoot'''",
        "searchmenu-new": "'''Erstalle de Seite „[[:$1|$1]]“ ei diesem Wiki.'''",
        "searchprofile-articles": "Inhaltsseyta",
-       "searchprofile-project": "Helfe on Projektseyta",
        "searchprofile-images": "Multimedia",
        "searchprofile-everything": "Olles",
        "searchprofile-advanced": "Erweitert",
        "searchprofile-articles-tooltip": "Sucha ei $1",
-       "searchprofile-project-tooltip": "Sucha ei $1",
        "searchprofile-images-tooltip": "Noach Bildern sucha",
        "searchprofile-everything-tooltip": "Gesamta Inhalt durchsicha (inklusive Dischkursseyta)",
        "searchprofile-advanced-tooltip": "Suche ei wettern Noamensräuma",
        "searchrelated": "verwandt",
        "searchall": "olle",
        "showingresults": "Hier {{PLURAL:$1|ies '''1''' Ergebnis|sein '''$1''' Ergebnisse}}, beginnend miet Nummer '''$2.'''",
-       "showingresultsnum": "Hier {{PLURAL:$3|ies '''1''' Ergebnis|sein '''$3''' Ergebnisse}}, beginnend miet Nummer '''$2.'''",
        "showingresultsheader": "{{PLURAL:$5|Ergebnis '''$1''' vu '''$3'''|Ergebnisse '''$1–$2''' vu '''$3'''}} fier '''$4'''",
        "search-nonefound": "Fier denne Sichoafroage wurden kenne Ergebnisse gefunda.",
        "powersearch-ns": "Suche ei Noamasräuma:",
        "allowemail": "E-Mail-Empfang vu andern Benutzern ermeeglichn",
        "prefs-searchoptions": "Sichoptiona",
        "prefs-namespaces": "Noamasräume",
-       "defaultns": "Andernfoalls ei diesen Noamasräumen sucha:",
        "prefs-custom-js": "Nutzerdefiniertes JS",
        "youremail": "E-Mail-Adresse:",
        "username": "Benutzernoame:",
        "logempty": "Kenne poaßenda Einträge.",
        "log-title-wildcard": "Tittel begennt miet …",
        "allpages": "Olle Seyta",
-       "alphaindexline": "$1 bis $2",
        "nextpage": "Nächste Seite ($1)",
        "prevpage": "Vurherige Seite ($1)",
        "allpagesfrom": "Seyta oazeega oab:",
index c8c93d9..aaa8f1a 100644 (file)
        "searchrelated": "La xiriiro",
        "searchall": "Dhamaan",
        "showingresults": "Waxaa hoos laga heley{{PLURAL:$1|'''1''' natiijo|'''$1''' natiijooyin}} ka biloow #'''$2'''.",
-       "showingresultsnum": "Hoos waxaa laga helay {{PLURAL:$3|'''1''' Natiijo|'''$3''' Natiijooyin}} Ka billow #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Natiijada  '''$1''' ee '''$3'''|Natiijooyinka '''$1 - $2'''  oo ah  '''$3'''}} ee '''$4'''",
        "search-nonefound": "Wax natiijo oo ka soo baxay ma jirto wixii aad raadisay",
        "powersearch-legend": "Sidii aad wax uugu raadin laheed",
index baa5b45..384a630 100644 (file)
@@ -24,7 +24,9 @@
                        "Urhixidur",
                        "Vinie007",
                        "לערי ריינהארט",
-                       "아라"
+                       "아라",
+                       "Gertakapllani",
+                       "OrvenBregu"
                ]
        },
        "tog-underline": "Nënvizo lidhjet:",
@@ -44,7 +46,7 @@
        "tog-minordefault": "Shëno të gjitha redaktimet si të vogla automatikisht",
        "tog-previewontop": "Vendose kutinë e bocetit sipër kutisë së redaktimeve",
        "tog-previewonfirst": "Tregoje bocetin në redaktimin e parë",
-       "tog-enotifwatchlistpages": "Më njofto me e-mail kur ndryshohet një faqe apo skedaë nga lista ime e faqeve nën mbikqyrje",
+       "tog-enotifwatchlistpages": "Më njofto me e-mail kur ndryshohet një faqe apo skedarë nga lista ime e faqeve nën mbikqyrje",
        "tog-enotifusertalkpages": "Më njofto me e-mail kur faqja ime e dikutimeve të përdoruesit ndryshohet",
        "tog-enotifminoredits": "Më njofto me e-mail edhe kur ka redaktime të vogla në faqe dhe skedave",
        "tog-enotifrevealaddr": "Tregoje adresën time të e-mail-it në e-mail-et njoftuese",
        "thu": "Enj",
        "fri": "Pr",
        "sat": "Sht",
-       "january": "janar",
-       "february": "shkurt",
-       "march": "mars",
-       "april": "prill",
-       "may_long": "maj",
-       "june": "qershor",
-       "july": "korrik",
-       "august": "gusht",
-       "september": "shtator",
-       "october": "tetor",
-       "november": "nëntor",
-       "december": "dhjetor",
-       "january-gen": "janar",
-       "february-gen": "shkurt",
-       "march-gen": "mars",
-       "april-gen": "prill",
-       "may-gen": "maj",
-       "june-gen": "qershor",
+       "january": "Janar",
+       "february": "Shkurt",
+       "march": "Mars",
+       "april": "Prill",
+       "may_long": "Maj",
+       "june": "Qershor",
+       "july": "Korrik",
+       "august": "Gusht",
+       "september": "Shtator",
+       "october": "Tetor",
+       "november": "Nëntor",
+       "december": "Dhjetor",
+       "january-gen": "Janar",
+       "february-gen": "Shkurt",
+       "march-gen": "Mars",
+       "april-gen": "Prill",
+       "may-gen": "Maj",
+       "june-gen": "Qershor",
        "july-gen": "korrik",
-       "august-gen": "gusht",
-       "september-gen": "shtator",
-       "october-gen": "tetor",
-       "november-gen": "nëntor",
-       "december-gen": "dhjetor",
+       "august-gen": "Gusht",
+       "september-gen": "Shtator",
+       "october-gen": "Tetor",
+       "november-gen": "Nëntor",
+       "december-gen": "Dhjetor",
        "jan": "Jan",
        "feb": "Shku",
        "mar": "Mar",
        "oct": "Tet",
        "nov": "Nën",
        "dec": "Dhje",
-       "january-date": "$1 janar",
-       "february-date": "$1 shkurt",
-       "march-date": "$1 mars",
-       "april-date": "$1 prill",
-       "may-date": "$1 maj",
-       "june-date": "$1 qershor",
-       "july-date": "$1 korrik",
-       "august-date": "$1 gusht",
-       "september-date": "$1 shtator",
-       "october-date": "$1 tetor",
-       "november-date": "$1 nëntor",
-       "december-date": "$1 dhjetor",
+       "january-date": "$1 Janar",
+       "february-date": "Shkurt, <span class=\"notranslate\" translate=\"asnjë\">$1</span>",
+       "march-date": "Mars <span class=\"notranslate\" translate=\"asnjë\">$1</span>",
+       "april-date": "Prill <span class=\"notranslate\" translate=\"asnjë\">$1</span>",
+       "may-date": "$1 Maj",
+       "june-date": "$1 Qershor",
+       "july-date": "$1 Korrik",
+       "august-date": "$1 Gusht",
+       "september-date": "$1 Shtator",
+       "october-date": "$1 Tetor",
+       "november-date": "$1 Nëntor",
+       "december-date": "$1 Dhjetor",
        "pagecategories": "{{PLURAL:$1|Kategoria|Kategoritë}}",
        "category_header": "Artikuj në kategorinë \"$1\"",
        "subcategories": "Nën-kategori",
        "anontalk": "Diskutimet për këtë IP",
        "navigation": "Shfleto",
        "and": "&#32;dhe",
-       "qbfind": "Kërko",
+       "qbfind": "Gjeni",
        "qbbrowse": "Shfletoni",
        "qbedit": "Redaktoni",
        "qbpageoptions": "Kjo faqe",
        "qbmyoptions": "Faqet e mia",
        "faq": "Pyetje që bëhen shpesh",
-       "faqpage": "Project: Pyetje që bëhen shpesh",
+       "faqpage": "Projekt: Pyetje që bëhen shpesh",
        "actions": "Veprimet",
        "namespaces": "Hapsirat e emrit",
        "variants": "Variante",
        "invalidtitle-knownnamespace": "Titull jo i vlefshëm me hapësirën \"$2\" dhe teksti \"$3\"",
        "invalidtitle-unknownnamespace": "Titull jo i vlefshëm me numrin e panjohur të hapësirës së emrit $1 dhe tekstit \"$2\"",
        "exception-nologin": "I paqasur",
-       "exception-nologin-text": "Kjo faqe ose ky veprim ju kërkon që të qaseni në këtë wiki.",
+       "exception-nologin-text": "Ju lutem [[Special:Userlogin|hyni brënda]] për të qenë  në gjendje të hyni në këtë faqe ose veprim.",
        "exception-nologin-text-manual": "Ju lutem <span class=\"notranslate\" translate=\"asnjë\">$1</span> që të jeni në gjendje për të hyrë në këtë faqe ose të veproni.",
        "virus-badscanner": "Konfiguracion i parregullt: Skaner i panjohur virusesh: ''$1''",
        "virus-scanfailed": "skani dështoi (code $1)",
        "createacct-benefit-heading": "{{SITENAME}} është bërë nga njerëz si ju.",
        "createacct-benefit-body1": "$1 {{PLURAL:$1|redaktim|redaktime}}",
        "createacct-benefit-body2": "\n{{Plural: $ 1 | faqe | faqe}}",
+       "createacct-benefit-body3": "kohët e fundit <span class=\"notranslate\" translate=\"asnjë\">{{PLURAL:$1|</span>kontribues|kontribuesit}}",
        "badretype": "Fjalëkalimet nuk janë njësoj.",
        "userexists": "Emri i përdoruesit që kërkuat është në përdorim. \nZgjidhni një emër tjetër.",
        "loginerror": "Gabim gjatë identifikimit",
+       "createacct-error": "krijim gabim llogarie",
        "createaccounterror": "I pamundur krijimi i llogarisë: $1",
        "nocookiesnew": "Llogaria e përdoruesit u krijua por ju nuk jeni identifikuar ende.\n{{SITENAME}} shfrytëzon \"cookies\" për të identifikuar përdoruesit.\nJu nuk mundësoni lejimin e \"cookies\".\nJu lutemi, mundësojini ato, pastaj identifikohuni me anë të të dhënave tuaja të reja: emri i përdoruesit dhe fjalëkalimi.",
        "nocookieslogin": "{{SITENAME}} shfrytëzon \"cookies\" për identifikimin e përdoruesve.\nYou nuk lejoni shfrytëzimin e \"cookies\".\nJu lutemi, lejoni shfrytëzimin e \"cookies\" dhe provojeni përsëri.",
        "passwordtooshort": "Fjalëkalimi juaj është i pavlefshëm ose tepër i shkurtër. Ai duhet të ketë së paku {{PLURAL:$1|1 shkronjë|$1 shkronja}} dhe duhet të jetë i ndryshëm nga emri i përdoruesit.",
        "password-name-match": "Fjalëkalimi juaj duhet të jetë i ndryshëm nga emri juaj.",
        "password-login-forbidden": "Përdorimi i kësaj nofke dhe fjalëkalimi është i ndaluar.",
-       "mailmypassword": "Më dërgo një fjalëkalim të ri tek adresa ime",
+       "mailmypassword": "Ridergo fjalekalimin",
        "passwordremindertitle": "Kërkesë për fjalëkalim të ri tek {{SITENAME}}",
        "passwordremindertext": "Dikush (sigurisht ju, nga adresa IP adresa $1) kërkoi një fjalëkalim të ri për hyrje tek {{SITENAME}} ($4). U krijua fjalëkalimi i përkohshëm për përdoruesin \"$2\" dhe u dërgua tek \"$3\". Nëse ky ishte tentimi juaj duhet që të kyçeni dhe ndërroni fjalëkalimin tani. Fjalëkalimi juaj i përkohshëm do të skadojë {{PLURAL:$5|një dite|$5 ditësh}}.\n\nNëse ndokush tjetër ka bërë këtë kërkesë, ose nëse ju kujtohet fjalëkalimin dhe nuk doni që ta ndërroni, mund të e injoroni këtë porosi dhe të vazhdoni të përdorni  fjalëkalimin e vjetër.",
        "noemail": "Regjistri nuk ka adresë për përdoruesin \"$1\".",
        "noemailcreate": "Ju duhet të sigurojë një adresë e e-mailit të saktë.",
        "passwordsent": "Një fjalëkalim i ri është dërguar tek adresa e regjistruar për \"$1\". Provojeni përsëri hyrjen mbasi ta keni marrë fjalëkalimin.",
        "blocked-mailpassword": "IP adresa juaj është bllokuar , si e tillë nuk lejohet të përdor funksionin pë rikthim të fjalkalimit , në mënyrë që të parandalohet abuzimi.",
-       "eauthentsent": "Një eMail konfirmues u dërgua te adresa e dhënë.\nPara se të pranohen eMail nga përdoruesit e tjerë, duhet që adressa e juaj të vërtetohet.\nJu lutemi ndiqni këshillat në eMailin e pranuar.",
+       "eauthentsent": "Një email konfirmimi është dërguar në adresën e caktuar  të e-mailit.\nParase te dergohen emaile të tjerë  në llogarinë tuaj, duhet të ndiqni udhëzimet në email, për të konfirmuar se llogaria është  vërtetë e juaja.",
        "throttled-mailpassword": "Një kujtesë e fjalëkalimit është dërguar gjatë {{PLURAL:$1|orës|$1 orëve}} të kaluara. Për t'u mbrojtur nga abuzime vetëm një kujtesë dërgohet çdo {{PLURAL:$1|orë|$1 orë}}.",
        "mailerror": "Gabim duke dërguar postën: $1",
        "acct_creation_throttle_hit": "Nuk lejoheni të krijoni më llogari pasi keni krijuar {{PLURAL:$1|1|$1}}.",
        "accountcreatedtext": "Llogarija e Përdoruesit për $1 u krijua",
        "createaccount-title": "Hapja e llogarive për {{SITENAME}}",
        "createaccount-text": "Dikush ka përdorur adresën tuaj për të hapur një llogari tek {{SITENAME}} ($4) të quajtur \"$2\" me fjalëkalimin \"$3\".\nDuhet të hyni brenda dhe të ndërroni fjalëkalimin tani nëse ky person jeni ju. Përndryshe shpërfilleni këtë mesazh.",
-       "login-throttled": "Keni bërë shumë tentime të njëpasnjëshme në fjalëkalimin e kësaj llogarie. Ju lutemi prisni para tentimit përsëri.",
+       "login-throttled": "Keni bërë shumë tentime të njëpasnjëshme në fjalëkalimin e kësaj llogarie. Ju lutemi prisni para se te tentoni përsëri.",
        "login-abort-generic": "login juaj ishte i pasuksesshëm - Ndërpre",
        "loginlanguagelabel": "Gjuha: $1",
        "suspicious-userlogout": "Kërkesa juaj për të shkëputet u mohua sepse duket sikur është dërguar nga një shfletues të thyer ose caching proxy.",
+       "createacct-another-realname-tip": "* Emri i vërtetë nuk është i domosdoshëm: Nëse e jepni do të përmendeni si kontribues për punën që ke bërë.",
+       "pt-login": "Hyni",
+       "pt-login-button": "Hyni",
+       "pt-createaccount": "Krijo llogari",
+       "pt-userlogout": "Dil",
        "php-mail-error-unknown": "Gabim i panjohur në funksionin e postës PHP ()",
        "user-mail-no-addy": "Provuat të dërgoni një korrespondencë pa adresë elektronike",
+       "user-mail-no-body": "U përpoqët të dërgonio email me një përmbajtje të shkurtër dhe të paarsyeshme.",
        "changepassword": "Ndërroni fjalëkalimin",
-       "resetpass_announce": "Ju keni hyrë me një kod të përkohshëm.\nPër të hyrë tërësisht duhet të vendosni një fjalëkalim të ri këtu:",
+       "resetpass_announce": "Për të përfunduar regjistrimin, ju duhet të vendosni një fjalëkalim të ri.",
        "resetpass_header": "Ndrysho fjalëkalimin e llogarisë",
        "oldpassword": "I vjetri",
        "newpassword": "I riu",
        "retypenew": "I riu përsëri",
        "resetpass_submit": "Ndrysho fjalëkalimin dhe hyni brenda",
-       "changepassword-success": "Fjalëkalimi juaj është ndryshuar me sukses! Mund të hyni brenda...",
+       "changepassword-success": "Fjalëkalimin juaj ka ndryshuar me sukses!",
+       "changepassword-throttled": "Keni bërë shumë tentime të njëpasnjëshme në fjalëkalimin e kësaj llogarie. Ju lutemi prisni para se te tentoni përsëri.",
        "resetpass_forbidden": "Fjalëkalimet nuk mund të ndryshohen",
        "resetpass-no-info": "Duhet të jeni i kyçur që të keni qasje direkte në këtë faqe.",
        "resetpass-submit-loggedin": "Ndrysho fjalëkalimin",
        "resetpass-submit-cancel": "Anulo",
        "resetpass-wrong-oldpass": "Fjalëkalimi momental ose i përkohshëm nuk është i vlefshëm. Ndoshta tanimë me sukses keni ndërruar fjalëkalimin, ose keni kërkuar fjalëkalim të përkohshëm.",
+       "resetpass-recycled": "Ju lutemi rivendosni fjalëkalimin tuaj për diçka tjetër përveç fjalëkalimin tuaj të tanishme.",
+       "resetpass-temp-emailed": "Ju keni hyrë në me një koditë përkohshme të dërguar me email .\nPër të përfundojë logging in, ju duhet të vendosni një fjalëkalim të ri këtu:",
        "resetpass-temp-password": "Fjalëkalimi i përkohshëm:",
+       "resetpass-abort-generic": "Ndryshimi i fjalëkalimi  dështoi nga një zgjerim.",
        "resetpass-expired": "Fjalëkalimin tuaj ka skaduar. Ju lutem vendosni një fjalëkalim të ri për të hyr.",
        "resetpass-expired-soft": "Fjalëkalimi juaj ka skaduar dhe duhet të rivendoset. Ju lutem zgjidhni një fjalëkalim të ri tani, ose klikoni \"{{int:resetpass-submit-cancel}}\" për ta rivendosur më vonë.",
+       "resetpass-validity-soft": "Fjalëkalimi juaj ka skaduar dhe duhet të rivendoset. Ju lutem zgjidhni një fjalëkalim të ri tani, ose klikoni \"{{int:resetpass-submit-cancel}}\" për ta rivendosur më vonë.",
        "passwordreset": "Ndrysho fjalkalimin",
+       "passwordreset-text-one": "Plotësoni këtë formular për të marrë një fjalëkalim të përkohshëm nëpërmjet postës elektronike.",
+       "passwordreset-text-many": "<span class=\"notranslate\" translate=\"asnjë\">{{PLURAL:$1|</span>Mbush një nga fushat për të marrë një fjalëkalim të përkohshëm nëpërmjet postës elektronike.}}",
        "passwordreset-legend": "Ndrysho fjalkalimin",
        "passwordreset-disabled": "Rivendosja e fjalëkalimit është deaktivizuar në këtë wiki.",
+       "passwordreset-emaildisabled": "Karakteristikat e  Email janë të paaftë në këtë wiki.",
        "passwordreset-username": "Nofka:",
        "passwordreset-domain": "Domain:",
        "passwordreset-capture": "Dëshiron të shikosh e-mail-in që rezulton?",
        "edit-gone-missing": "Faqja nuk mund t freskohet.\nDuket se është grisur.",
        "edit-conflict": "Konflikt në redaktim.",
        "edit-no-change": "Redaktimi juaj është anashkaluar pasi që asnjë ndryshim nuk u bë në tekst.",
+       "postedit-confirmation-created": "Faqja eshte krijuar",
+       "postedit-confirmation-restored": "Faqja eshte kthyer",
+       "postedit-confirmation-saved": "Redaktimi juaj eshte ruajtur.",
        "edit-already-exists": "Faqja nuk mundej të hapet.\nAjo tanimë ekziston.",
        "defaultmessagetext": "Teksti i porosisë së parazgjedhur",
-       "editwarning-warning": "Lënia e kësaj faqeje mund t'ju shkaktojë humbjen e çdo ndryshimi që keni bërë.\nNëse keni hyrë brenda, ju mund ta hiqni këtë paralajmërim në seksionin \"Redaktimi\" tek preferencat tuaja.",
+       "invalid-content-data": "Të pavlefshme të dhënave e përmbajtjes",
+       "editwarning-warning": "Duke e lënë këtë faqe mund të shkaktojë ju për të humbur të gjitha ndryshimet që keni bërë ju.\nNëse ju jeni regjistruar, ju mund të çaktivizoni këtë paralajmërim në \"{{int:prefs-editing}}\" seksionin e preferencave tuaja.",
        "content-model-text": "tekst i thejshtë",
        "expensive-parserfunction-warning": "Kujdes: Kjo faqe ka shumë kërkesa që kërkojnë analizë gramatikore të kushtueshme për sistemin.\n\nDuhet të ketë më pakë se $2, {{PLURAL:$2|kërkesë|kërkesa}}, kurse tani {{PLURAL:$1|është $1 kërkesë|janë $1 kërkesa}}.",
        "expensive-parserfunction-category": "Faqe me shumë shprehje të kushtueshmë për analizë gramatikore",
        "searchrelated": "të ngjashme",
        "searchall": "të gjitha",
        "showingresults": "Më poshtë tregohen {{PLURAL:$1|'''1''' përfundim|'''$1''' përfundime}} duke filluar nga #'''$2'''.",
-       "showingresultsnum": "Më poshtë tregohen {{PLURAL:$3|'''1''' përfundim|'''$3''' përfundime}} duke filluar nga #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Rezultati '''$1''' nga '''$3'''|Rezultatet '''$1 - $2''' nga '''$3'''}} për '''$4'''",
        "search-nonefound": "Nuk ka rezultate që përputhen me kërkesën.",
        "powersearch-legend": "Kërkim i përparuar",
        "license-nopreview": "(Nuk ka parapamje)",
        "upload_source_url": " (URL e vlefshme, publikisht e përdorshme)",
        "upload_source_file": " (skeda në kompjuterin tuaj)",
+       "listfiles-delete": "fshije",
        "listfiles-summary": "Kjo faqe speciale tregon tërë skedat e ngarkuara.\nFillimisht skedat e ngarkuara së fundmi jepen më sipër.\nShtypni kolonat e tjera për të ndryshuar radhitjen.",
        "listfiles_search_for": "Kërko për emrin e figurës:",
        "imgfile": "skeda",
        "duplicate-defaultsort": "'''Kujdes:''' Renditja kryesore e çelësit \"$2\" refuzon renditjen e mëparshme kryesore të çelësit \"$1\".",
        "version": "Versioni",
        "version-extensions": "Zgjerime të instaluara",
+       "version-skins": "Pamjet",
        "version-specialpages": "Faqe speciale",
        "version-parserhooks": "Parser goditje",
        "version-variables": "Variabël",
        "version-antispam": "Spam",
-       "version-skins": "Pamjet",
        "version-other": "Të tjera",
        "version-mediahandlers": "Mbajtesit e Media-s",
        "version-hooks": "Goditjet",
index 86d2892..83ee30b 100644 (file)
@@ -58,7 +58,7 @@
        "tog-watchlisthideminor": "Сакриј мање измене са списка надгледања",
        "tog-watchlisthideliu": "Сакриј измене пријављених корисника са списка надгледања",
        "tog-watchlisthideanons": "Сакриј измене анонимних корисника са списка надгледања",
-       "tog-watchlisthidepatrolled": "Сакриј прегледане измене са списка надгледања",
+       "tog-watchlisthidepatrolled": "Сакриј патролиране измене са списка надгледања",
        "tog-ccmeonemails": "Пошаљи ми копије е-порука које пошаљем другим корисницима",
        "tog-diffonly": "Не приказуј садржај странице испод разлика",
        "tog-showhiddencats": "Прикажи скривене категорије",
        "error": "Грешка",
        "databaseerror": "Грешка у бази података",
        "databaseerror-text": "Дошло је до грешке у упиту базе података. Можда је у питању програмска грешка.",
+       "databaseerror-query": "Упит: $1",
        "databaseerror-function": "Функција: $1",
        "databaseerror-error": "Грешка: $1",
        "laggedslavemode": "'''Упозорење:''' страница је можда застарела.",
        "resetpass-expired-soft": "Ваша лозинка је истекла и морате поставити нову. Поставите нову лозинку или кликните „{{int:resetpass-submit-cancel}}“ да је поставите касније.",
        "resetpass-validity-soft": "Ваша лозинка није ваљана: $1\n\nМолимо изаберите нову или кликните „{{int:resetpass-submit-cancel}}“ да ресетујете касније.",
        "passwordreset": "Обнављање лозинке",
-       "passwordreset-text-one": "Попуните овај образац да бисте ресетовали лозинку.",
+       "passwordreset-text-one": "Попуните овај образац да бисте добили привремену лозинку на е-пошту.",
        "passwordreset-text-many": "{{PLURAL:$1|Испуните једно од поља како би сте добили привремену лозинку на е-пошту.}}",
        "passwordreset-legend": "Поништи лозинку",
        "passwordreset-disabled": "Обнављање лозинке је онемогућено на овом викију.",
        "mergehistory-empty": "Нема измена за спајање.",
        "mergehistory-success": "$3 {{PLURAL:$3|измена странице [[:$1]] је спојена|измене странице [[:$1]] су спојене|измена странице [[:$1]] је спојено}} у [[:$2]].",
        "mergehistory-fail": "Не могу да спојим историје. Проверите страницу и временске параметре.",
-       "mergehistory-fail-toobig": "Није могуће спојити историје јер више од $1 {{PLURAL:$1|измене|измена}} ће бити премештено.",
+       "mergehistory-fail-toobig": "Није могуће спојити историје јер више од $1 {{PLURAL:$1|измене ће бити премештене|измена ће бити премештено}}.",
        "mergehistory-no-source": "Изворна страница $1 не постоји.",
        "mergehistory-no-destination": "Одредишна страница $1 не постоји.",
        "mergehistory-invalid-source": "Изворна страница мора имати исправан наслов.",
        "showhideselectedversions": "Прикажи/сакриј изабране измене",
        "editundo": "поништи",
        "diff-empty": "(Нема разлике)",
-       "diff-multi-sameuser": "({{PLURAL:$1|Једна међуизмена истог корисника није приказана|$1 међуизмена истог корисника није приказано}})",
-       "diff-multi-otherusers": "({{PLURAL:$1|Једна међуизмена|$1 међуизмена}} од стране {{PLURAL:$2|још једног корисника није приказана|$2 корисника није приказано}})",
+       "diff-multi-sameuser": "({{PLURAL:$1|Ð\88една Ð¼ÐµÑ\92Ñ\83измена Ð¸Ñ\81Ñ\82ог ÐºÐ¾Ñ\80иÑ\81ника Ð½Ð¸Ñ\98е Ð¿Ñ\80иказана|$1 Ð¼ÐµÑ\92Ñ\83измене Ð¸Ñ\81Ñ\82ог ÐºÐ¾Ñ\80иÑ\81ника Ð½Ð¸Ñ\98е Ð¿Ñ\80иказано|$1 Ð¼ÐµÑ\92Ñ\83измена Ð¸Ñ\81Ñ\82ог ÐºÐ¾Ñ\80иÑ\81ника Ð½Ð¸Ñ\98е Ð¿Ñ\80иказано}})",
+       "diff-multi-otherusers": "({{PLURAL:$1|Ð\88една Ð¼ÐµÑ\92Ñ\83измена|$1 Ð¼ÐµÑ\92Ñ\83измене|$1 Ð¼ÐµÑ\92Ñ\83измена}} Ð¾Ð´ Ñ\81Ñ\82Ñ\80ане {{PLURAL:$2|Ñ\98оÑ\88 Ñ\98едног ÐºÐ¾Ñ\80иÑ\81ника Ð½Ð¸Ñ\98е Ð¿Ñ\80иказана|$2 ÐºÐ¾Ñ\80иÑ\81ника Ð½Ð¸Ñ\98е Ð¿Ñ\80иказано}})",
        "diff-multi-manyusers": "({{PLURAL:$1|Није приказана међуизмена|Нису приказане $1 међуизмене|Није приказано $1 међуизмена}} од више од $2 корисника)",
        "difference-missing-revision": "Не могу да пронађем {{PLURAL:$2|једну измену|$2 измене|$2 измена}} од ове разлике ($1).\n\nОво се обично дешава када пратите застарелу везу до странице која је обрисана.\nВише информација можете пронаћи у [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} дневнику брисања].",
        "searchresults": "Резултати претраге",
        "searchall": "све",
        "showingresults": "Испод {{PLURAL:$1|је приказан <strong>1</strong> резултат|су приказана <strong>$1</strong> резултата|је приказано <strong>$1</strong> резултата}} почев од броја <strong>$2</strong>.",
        "showingresultsinrange": "Испод {{PLURAL:$1|је приказан <strong>1</strong> резултат|су приказана <strong>$1</strong> резултата|је приказано <strong>$1</strong> резултата}}, у распону од <strong>$2</strong> до <strong>$3</strong>.",
-       "showingresultsnum": "Испод {{PLURAL:$3|је приказан '''1''' резултат|су приказана '''$3''' резултата|је приказано '''$3''' резултата}} почев од броја '''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Резултат '''$1''' од '''$3'''|Резултата '''$1 – $2''' од '''$3'''}} за '''$4'''",
        "search-nonefound": "Нема поклапања.",
        "powersearch-legend": "Напредна претрага",
        "license-nopreview": "(преглед није доступан)",
        "upload_source_url": " (исправна и јавно доступна адреса)",
        "upload_source_file": "(датотека на вашем рачунару)",
+       "listfiles-delete": "обриши",
        "listfiles-summary": "Ова посебна страница приказује све послате датотеке.",
        "listfiles_search_for": "Назив датотеке:",
        "imgfile": "датотека",
        "ancientpages": "Најстарије странице",
        "move": "премести",
        "movethispage": "Премести ову страницу",
-       "unusedimagestext": "Следеће датотеке постоје, али не користе се ни у једној страници.\nДруге веб странице могу користити слику преко директне адресе, тако да и поред тога могу бити приказане овде поред активне употребе.",
+       "unusedimagestext": "Следеће датотеке постоје, али не користе се ни у једној страници.\nДруге веб странице могу користити слику преко директне адресе, тако да и поред активне употребе могу бити приказане овде.",
        "unusedcategoriestext": "Следеће странице категорија постоје иако их ниједан други чланак или категорија не користе.",
        "notargettitle": "Нема одредишта",
        "notargettext": "Нисте навели одредишну страницу или корисника на коме би се извела ова радња.",
        "listgrouprights-addgroup-self-all": "Додај све групе на сопствени налог",
        "listgrouprights-removegroup-self-all": "Уклони све групе са сопственог налога",
        "listgrouprights-namespaceprotection-namespace": "Именски простор",
+       "trackingcategories-name": "Име поруке",
        "trackingcategories-nodesc": "Опис није доступан.",
        "mailnologin": "Нема адресе за слање",
        "mailnologintext": "Морате бити [[Special:UserLogin|пријављени]] и имати исправну е-адресу у [[Special:Preferences|подешавањима]] да бисте слали е-поруке другим корисницима.",
        "duplicate-defaultsort": "'''Упозорење:''' подразумевани кључ сврставања „$2“ мења некадашњи кључ „$1“.",
        "version": "Верзија",
        "version-extensions": "Инсталирана проширења",
+       "version-skins": "Теме",
        "version-specialpages": "Посебне странице",
        "version-parserhooks": "Куке рашчлањивача",
        "version-variables": "Променљиве",
        "version-antispam": "Спречавање непожељних порука",
-       "version-skins": "Теме",
        "version-api": "АПИ",
        "version-other": "Друго",
        "version-mediahandlers": "Руководиоци медијима",
        "version-hook-name": "Назив куке",
        "version-hook-subscribedby": "Пријављено од",
        "version-version": "(издање $1)",
+       "version-no-ext-name": "[нема имена]",
        "version-svn-revision": "(изм. $2)",
        "version-license": "Медијавики лиценца",
        "version-ext-license": "Лиценца",
        "version-ext-colheader-name": "Екстензија",
+       "version-skin-colheader-name": "Тема",
        "version-ext-colheader-version": "Верзија",
        "version-ext-colheader-license": "Лиценца",
        "version-ext-colheader-description": "Опис",
        "expand_templates_input": "Унос:",
        "expand_templates_output": "Резултат",
        "expand_templates_xml_output": "XML излаз",
+       "expand_templates_html_output": "Сиров HTML излаз",
        "expand_templates_ok": "У реду",
        "expand_templates_remove_comments": "Уклони коментаре",
        "expand_templates_remove_nowiki": "Поништава ефекат <nowiki> тагова у приказу чланака",
-       "expand_templates_generate_xml": "прикажи XML стабло",
-       "expand_templates_preview": "Приказ"
+       "expand_templates_generate_xml": "Прикажи XML стабло",
+       "expand_templates_generate_rawhtml": "Прикажи сиров HTML",
+       "expand_templates_preview": "Приказ",
+       "pagelang-name": "Страница",
+       "pagelang-language": "Језик",
+       "pagelang-select-lang": "Изабери језик",
+       "right-pagelang": "промена језика странице",
+       "action-pagelang": "промену језика странице"
 }
index d416e87..799eaea 100644 (file)
@@ -50,7 +50,7 @@
        "tog-watchlisthideminor": "Sakrij manje izmene sa spiska nadgledanja",
        "tog-watchlisthideliu": "Sakrij izmene prijavljenih korisnika sa spiska nadgledanja",
        "tog-watchlisthideanons": "Sakrij izmene anonimnih korisnika sa spiska nadgledanja",
-       "tog-watchlisthidepatrolled": "Sakrij pregledane izmene sa spiska nadgledanja",
+       "tog-watchlisthidepatrolled": "Sakrij patrolirane izmene sa spiska nadgledanja",
        "tog-ccmeonemails": "Pošalji mi primerke e-poruka koje pošaljem drugim korisnicima",
        "tog-diffonly": "Ne prikazuj sadržaj stranice ispod razlika",
        "tog-showhiddencats": "Prikaži skrivene kategorije",
        "resetpass-expired-soft": "Vaša lozinka je istekla i morate postaviti novu. Postavite novu lozinku ili kliknite „{{int:resetpass-submit-cancel}}“ da je postavite kasnije.",
        "resetpass-validity-soft": "Vaša lozinka nije valjana: $1\n\nMolimo izaberite novu ili kliknite „{{int:resetpass-submit-cancel}}“ da resetujete kasnije.",
        "passwordreset": "Obnavljanje lozinke",
-       "passwordreset-text-one": "Popunite ovaj obrazac da biste resetovali lozinku.",
+       "passwordreset-text-one": "Popunite ovaj obrazac da biste dobili privremenu lozinku na e-poštu.",
        "passwordreset-text-many": "{{PLURAL:$1|Ispunite jedno od polja kako bi ste dobili privremenu lozinku na e-poštu.}}",
        "passwordreset-legend": "Poništi lozinku",
        "passwordreset-disabled": "Obnavljanje lozinke je onemogućeno na ovom vikiju.",
        "showhideselectedversions": "Prikaži/sakrij izabrane izmene",
        "editundo": "poništi",
        "diff-empty": "(Nema razlike)",
-       "diff-multi-sameuser": "({{PLURAL:$1|Jedna međuizmena istog korisnika nije prikazana|$1 međuizmena istog korisnika nije prikazano}})",
-       "diff-multi-otherusers": "({{PLURAL:$1|Jedna međuizmena|$1 međuizmena}} od strane {{PLURAL:$2|još jednog korisnika nije prikazana|$2 korisnika nije prikazano}})",
+       "diff-multi-sameuser": "({{PLURAL:$1|Jedna međuizmena istog korisnika nije prikazana|$1 međuizmene istog korisnika nije prikazano|$1 međuizmena istog korisnika nije prikazano}})",
+       "diff-multi-otherusers": "({{PLURAL:$1|Jedna međuizmena|$1 međuizmene|$1 međuizmena}} od strane {{PLURAL:$2|još jednog korisnika nije prikazana|$2 korisnika nije prikazano}})",
        "diff-multi-manyusers": "({{PLURAL:$1|Nije prikazana međuizmena|Nisu prikazane $1 međuizmene|Nije prikazano $1 međuizmena}} od više od $2 korisnika)",
        "difference-missing-revision": "Ne mogu da pronađem {{PLURAL:$2|jednu izmenu|$2 izmene|$2 izmena}} od ove razlike ($1).\n\nOvo se obično dešava kada pratite zastarelu vezu do stranice koja je obrisana.\nViše informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} dnevniku brisanja].",
        "searchresults": "Rezultati pretrage",
        "searchall": "sve",
        "showingresults": "Ispod {{PLURAL:$1|je prikazan <strong>1</strong> rezultat|su prikazana <strong>$1</strong> rezultata|je prikazano <strong>$1</strong> rezultata}} počev od broja <strong>$2</strong>.",
        "showingresultsinrange": "Ispod {{PLURAL:$1|je prikazan <strong>1</strong> rezultat|su prikazana <strong>$1</strong> rezultata|je prikazano <strong>$1</strong> rezultata}}, u rasponu od <strong>$2</strong> do <strong>$3</strong>.",
-       "showingresultsnum": "Ispod {{PLURAL:$3|je prikazan '''1''' rezultat|su prikazana '''$3''' rezultata|je prikazano '''$3''' rezultata}} počev od broja '''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|1=Rezultat '''$1''' od '''$3'''|Rezultata '''$1 – $2''' od '''$3'''}} za '''$4'''",
        "search-nonefound": "Nema poklapanja.",
        "powersearch-legend": "Napredna pretraga",
        "ancientpages": "Najstarije stranice",
        "move": "premesti",
        "movethispage": "Premesti ovu stranicu",
-       "unusedimagestext": "Sledeće datoteke postoje, ali ne koriste se ni u jednoj stranici.\nDruge veb stranice mogu koristiti sliku preko direktne adrese, tako da i pored toga mogu biti prikazane ovde pored aktivne upotrebe.",
+       "unusedimagestext": "Sledeće datoteke postoje, ali ne koriste se ni u jednoj stranici.\nDruge veb stranice mogu koristiti sliku preko direktne adrese, tako da i pored aktivne upotrebe mogu biti prikazane ovde.",
        "unusedcategoriestext": "Sledeće stranice kategorija postoje iako ih nijedan drugi članak ili kategorija ne koriste.",
        "notargettitle": "Nema odredišta",
        "notargettext": "Niste naveli odredišnu stranicu ili korisnika na kome bi se izvela ova radnja.",
        "duplicate-defaultsort": "'''Upozorenje:''' podrazumevani ključ svrstavanja „$2“ menja nekadašnji ključ „$1“.",
        "version": "Verzija",
        "version-extensions": "Instalirana proširenja",
+       "version-skins": "Teme",
        "version-specialpages": "Posebne stranice",
        "version-parserhooks": "Kuke raščlanjivača",
        "version-variables": "Promenljive",
        "version-antispam": "Sprečavanje nepoželjnih poruka",
-       "version-skins": "Teme",
        "version-api": "API",
        "version-other": "Drugo",
        "version-mediahandlers": "Rukovodioci medijima",
        "expand_templates_ok": "U redu",
        "expand_templates_remove_comments": "Ukloni komentare",
        "expand_templates_remove_nowiki": "Poništava efekat <nowiki> tagova u prikazu članaka",
-       "expand_templates_generate_xml": "prikaži XML stablo",
+       "expand_templates_generate_xml": "Prikaži XML stablo",
        "expand_templates_preview": "Prikaz"
 }
index 9319a88..6178e4c 100644 (file)
        "servertime": "Serverten",
        "guesstimezone": "Fu a browser presi",
        "allowemail": "E-mail fu trawan masyin adu",
-       "defaultns": "Soma ini disi nenpreki suku:",
        "default": "soma",
        "prefs-files": "Gefre",
        "youremail": "E-mail:",
        "username": "Kebroikiman nen:",
-       "uid": "Kebroikiman ID:",
        "prefs-memberingroups": "Memre fu {{PLURAL:$1|grupu|grupu}}:",
        "yourrealname": "Yu tru nen:",
        "yourlanguage": "Tongo:",
        "all-logs-page": "Ala log buku",
        "log-title-wildcard": "Peprewoysi suku dy nanga disi nen bigin",
        "allpages": "Ala papira",
-       "alphaindexline": "$1 te go miti $2",
        "nextpage": "A papira d'e kon ($1)",
        "prevpage": "A papira di psa ($1)",
        "allpagesfrom": "Sori papira, bigin na:",
        "svg-long-desc": "SVG file, marki $1 × $2 pixel, bigi: $3",
        "show-big-image": "Moro srapu",
        "newimages": "Nyun file",
-       "showhidebots": "(Bot $1)",
        "noimages": "Noti a si.",
        "ilsubmit": "Suku",
        "bydate": "opo datum",
index cedcb88..d229fba 100644 (file)
        "qbmyoptions": "Mien Sieden",
        "faq": "Oafte stoalde Froagen",
        "faqpage": "Project:FAQ",
-       "vector-action-addsection": "Ousnit bietouföigje",
-       "vector-action-delete": "Läskje",
-       "vector-action-move": "Ferskuuwe",
-       "vector-action-protect": "Skutsje",
-       "vector-action-undelete": "Wierhäärstaale",
-       "vector-action-unprotect": "Siedenskuts annerje",
-       "vector-view-create": "Moakje",
-       "vector-view-edit": "Beoarbaidje",
-       "vector-view-history": "Versionsgeskichte",
-       "vector-view-view": "Leese",
-       "vector-view-viewsource": "Wältext bekiekje",
        "actions": "Aktione",
        "namespaces": "Noomeruume",
        "variants": "Variante",
        "diff-multi-manyusers": " ({{PLURAL:$1|Ne deertwiske lääsende Version|$1 deertwiske lääsende Versione}} fon moor as {{PLURAL:$2|Benutser|$2 Benutsere}} nit wiesd)",
        "searchresults": "Säikresultoate",
        "searchresults-title": "Säikresultoate foar \"$1\"",
-       "toomanymatches": "Ju Antaal fon Säikresultoate is tou groot, fersäik ne näie Oufroage.",
        "titlematches": "Uureenstämmengen mäd Uurskrifte",
        "textmatches": "Uureenstämmengen mäd Texte",
        "notextmatches": "Neen Uureenstimmengen",
        "searchmenu-exists": "'''Dät rakt n Siede mäd Noome \"[[:$1]]\" ap dissen Wiki'''",
        "searchmenu-new": "'''Moak ju Siede „[[:$1]]“ in dissen Wiki.'''",
        "searchprofile-articles": "Inhooldssieden",
-       "searchprofile-project": "Hälpe un Projektsieden",
        "searchprofile-images": "Multimedia",
        "searchprofile-everything": "Aal",
        "searchprofile-advanced": "Fergratterd",
        "searchprofile-articles-tooltip": "Säike in $1",
-       "searchprofile-project-tooltip": "Säike in $1",
        "searchprofile-images-tooltip": "Ätter Bielden säike",
        "searchprofile-everything-tooltip": "Gansen Inhoold truchsäike (inklusive Diskussionssieden)",
        "searchprofile-advanced-tooltip": "Säik in wiedere Noomensruume",
        "search-interwiki-default": "$1 Resultoate:",
        "search-interwiki-more": "(wiedere)",
        "search-relatedarticle": "Früünde",
-       "searcheverything-enable": "Säik in aal Noomensruume",
        "searchrelated": "früünd",
        "searchall": "aal",
        "showingresults": "Hier {{PLURAL:$1|is '''1''' Resultoat|sunt '''$1''' Resultoate}}, ounfangend mäd Nuumer '''$2'''.",
-       "showingresultsnum": "Hier {{PLURAL:$3|is '''1''' Resultoat|sunt '''$3''' Resultoate}}, ounfangend mäd Nuumer '''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Resultoat '''$1''' fon '''$3'''|Resultoate '''$1–$2''' fon '''$3'''}} foar '''$4'''",
        "search-nonefound": "Foar dien Säikanfroage wuuden neen Resultoate fuunen.",
        "powersearch-legend": "Fääre säike",
        "allowemail": "Emails fon uur Benutsere kriegen",
        "prefs-searchoptions": "Säikoptione",
        "prefs-namespaces": "Noomensruume",
-       "defaultns": "Uursiede in disse Noomensruume säike:",
        "default": "Standoardienstaalenge",
        "prefs-files": "Doatäie",
        "prefs-custom-css": "Benutserdefinierde CSS",
        "prefs-emailconfirm-label": "E-Mail-Bestäätigenge:",
        "youremail": "E-Mail-Adrässe:",
        "username": "Benutsernoome:",
-       "uid": "Benutser-ID:",
        "prefs-memberingroups": "Meeglid fon {{PLURAL:$1|ju Benutzergruppe|do Benutzergruppen}}:",
        "prefs-registration": "Anmäldetiedpunkt:",
        "yourrealname": "Dien ächte Noome:",
        "logempty": "Neen paasende Iendraage.",
        "log-title-wildcard": "Tittel fangt oun mäd …",
        "allpages": "Aal Artikkele",
-       "alphaindexline": "$1 bit $2",
        "nextpage": "Naiste Siede ($1)",
        "prevpage": "Foarige Siede ($1)",
        "allpagesfrom": "Sieden wiese fon:",
        "tooltip-preferences-save": "Ienstaalengen spiekerje",
        "tooltip-summary": "Reek ne kuute Touhoopefoatenge ien",
        "common.css": "/** CSS an disse Steede wirket sik ap aal Skins uut */",
-       "monobook.css": "/* Littikschrieuwen nit twinge */",
        "common.js": "/* Älk JavaScript hier wäd foar aal Benutsere foar älke Siede leeden. */",
-       "monobook.js": "/* Ferallerd; benutsje insteede deerfon [[MediaWiki:common.js]] */",
        "anonymous": "{{PLURAL:$1|Anonymen Benutser|Anonyme Benutsere}} ap {{SITENAME}}",
        "siteuser": "{{SITENAME}}-Benutser $1",
        "anonuser": "Anonymen {{SITENAME}}-Benutser $1",
index be38bf4..265dfe8 100644 (file)
        "qbmyoptions": "Kaca kuring",
        "faq": "NLD",
        "faqpage": "Project:NLD",
-       "vector-action-addsection": "Jieun jejer anyar",
-       "vector-action-delete": "Hapus",
-       "vector-action-move": "Pindahkeun",
-       "vector-action-protect": "Konci",
-       "vector-action-undelete": "Bolaykeun ngahapus",
-       "vector-action-unprotect": "Robah protéksi",
-       "vector-view-create": "Jieun",
-       "vector-view-edit": "Édit",
-       "vector-view-history": "Témbongkeun jujutan",
-       "vector-view-view": "Baca",
-       "vector-view-viewsource": "Témbongkeun sumber",
        "actions": "Peta",
        "namespaces": "Spasi ngaran",
        "variants": "Varian",
        "diff-multi-manyusers": "({{PLURAL:$1|Hiji révisi antara|$1 révisi antara}} karya leuwih ti {{PLURAL:$2|pamaké|pamaké}} teu ditémbongkeun)",
        "searchresults": "Hasil maluruh",
        "searchresults-title": "Hasil nyusud \"$1\"",
-       "toomanymatches": "Loba teuing nu cocog, mangga cobi mundut nu sanésna",
        "titlematches": "Judul artikel nu cocog",
        "textmatches": "Téks kaca nu cocog",
        "notextmatches": "Teu aya téks kaca nu cocog",
        "searchmenu-exists": "'''Dina wiki ieu geus aya kaca nu ngaranna \"[[:$1]]\"'''",
        "searchmenu-new": "'''Jieun kaca \"[[:$1]]\" dina ieu wiki!'''",
        "searchprofile-articles": "Kaca eusi",
-       "searchprofile-project": "Kaca Pitulung jeung Proyék",
        "searchprofile-images": "Multimédia",
        "searchprofile-everything": "Sagala",
        "searchprofile-advanced": "Lengkep",
        "searchprofile-articles-tooltip": "Pilari di $1",
-       "searchprofile-project-tooltip": "Pilari di $1",
        "searchprofile-images-tooltip": "Pilari koropak/file",
        "searchprofile-everything-tooltip": "Pilari di sakabéh eusi (kaasup kaca obrolan)",
        "searchprofile-advanced-tooltip": "Paluruh di rohang ngaran anu tangtu",
        "search-interwiki-default": "$1 hasil:",
        "search-interwiki-more": "(saterusna)",
        "search-relatedarticle": "Patula-patali",
-       "searcheverything-enable": "Pilari di sakabéh rohangaran",
        "searchrelated": "patula-patali",
        "searchall": "sadayana",
        "showingresults": "Di handap ieu némbongkeun {{PLURAL:$1|'''1''' hasil|'''$1''' hasil}}, dimimitianku  #'''$2'''.",
-       "showingresultsnum": "Di handap ieu némbongkeun {{PLURAL:$3|'''1''' hasil|'''$3''' hasil}}, dimimitian #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Hasil '''$1''' ti '''$3'''|Hasil '''$1 - $2''' ti '''$3'''}} pikeun '''$4'''",
        "search-nonefound": "Euweuh hasil nu cocog jeung kueri.",
        "powersearch-legend": "Panéangan tuluy",
        "allowemail": "Buka koropak pikeun nampa surélék ti nu séjén",
        "prefs-searchoptions": "Piliheun Panéangan",
        "prefs-namespaces": "Ngaranspasi",
-       "defaultns": "Lamun teu kitu, paluruh dina rohang ngaran di handap ieu:",
        "default": "ti dituna",
        "prefs-files": "Koropak",
        "prefs-custom-css": "CSS sakahayang",
        "prefs-emailconfirm-label": "Konfirmasi surélék:",
        "youremail": "Surélék:",
        "username": "Landihan:",
-       "uid": "ID pamaké:",
        "prefs-memberingroups": "Anggota {{PLURAL:$1|jumplukan|jumplukan}}:",
        "prefs-registration": "Waktu daptar:",
        "yourrealname": "Ngaran anjeun*",
        "logempty": "Taya item nu cocog dina log.",
        "log-title-wildcard": "Téangan judul nu dimimitian ku tulisan ieu",
        "allpages": "Sadaya kaca",
-       "alphaindexline": "$1 ka $2",
        "nextpage": "Kaca salajengna ($1)",
        "prevpage": "Kaca saméméhna ($1)",
        "allpagesfrom": "Pintonkeun kaca ti mimiti:",
        "tooltip-preferences-save": "Simpen préferénsi",
        "tooltip-summary": "Asupkeun ringkesan",
        "common.css": "/* CSS nu di angé ku kabeh ''skin'' */",
-       "monobook.css": "/* édit koropak ieu pikeun nyaluyukeun kulit ''monobook'' pikeun sakabéh situs */",
        "common.js": "/* JavaScript nu aya didieu di angé ku kabeh ''skin'' */",
        "anonymous": "{{PLURAL:$1|Pamaké|Pamaké-pamaké}} anonim di {{SITENAME}}",
        "siteuser": "Pamaké $1 {{SITENAME}}",
index 9f845f6..6dc5f90 100644 (file)
        "externaldberror": "Antingen inträffade autentiseringsproblem med en extern databas, eller så får du inte uppdatera ditt externa konto.",
        "login": "Logga in",
        "nav-login-createaccount": "Logga in / skapa konto",
-       "loginprompt": "Du måste tillåta cookies för att logga in på {{SITENAME}}.",
+       "loginprompt": "Du måste tillåta kakor för att logga in på {{SITENAME}}.",
        "userlogin": "Logga in / skapa konto",
        "userloginnocreate": "Logga in",
        "logout": "Logga ut",
        "loginerror": "Inloggningsproblem",
        "createacct-error": "Fel när konto skulle skapas",
        "createaccounterror": "Kunde inte skapa konto: $1",
-       "nocookiesnew": "Användarkontot skapades, men du är inte inloggad.\n{{SITENAME}} använder cookies för att logga in användare.\nDu har cookies avaktiverade.\nAktivera dem, och logga sen in med ditt nya användarnamn och lösenord.",
-       "nocookieslogin": "{{SITENAME}} använder cookies för att logga in användare. Du har stängt av cookies i din webbläsare. Försök igen med stöd för cookies aktiverat.",
-       "nocookiesfornew": "Användarkontot skapades inte, eftersom vi inte kunde bekräfta dess källa.\nSe till att du har aktiverat cookies, ladda om denna sida och försök igen.",
+       "nocookiesnew": "Användarkontot skapades, men du är inte inloggad.\n{{SITENAME}} använder kakor för att logga in användare.\nDu har kakor inaktiverade.\nAktivera dem, och logga sen in med ditt nya användarnamn och lösenord.",
+       "nocookieslogin": "{{SITENAME}} använder kakor för att logga in användare. Du har stängt av kakor i din webbläsare. Försök igen med stöd för kakor aktiverat.",
+       "nocookiesfornew": "Användarkontot skapades inte, eftersom vi inte kunde bekräfta dess källa.\nSe till att du har aktiverat kakor, ladda om denna sida och försök igen.",
        "noname": "Du har angett ett ogiltigt användarnamn.",
        "loginsuccesstitle": "Inloggningen lyckades",
        "loginsuccess": "'''Du är nu inloggad på {{SITENAME}} som \"$1\".'''",
        "subject": "Ämne/rubrik:",
        "minoredit": "Mindre ändring (m)",
        "watchthis": "Bevaka denna sida",
-       "savearticle": "Spara sida",
+       "savearticle": "Spara sidan",
        "preview": "Förhandsgranska",
        "showpreview": "Visa förhandsgranskning",
        "showdiff": "Visa ändringar",
        "searchall": "alla",
        "showingresults": "Nedan visas upp till {{PLURAL:$1|'''1''' post|'''$1''' poster}} från och med nummer '''$2'''.",
        "showingresultsinrange": "Nedan visas upp till {{PLURAL:$3|<strong>1</strong> resultat|<strong>$1</strong> resultat}} mellan nummer <strong>$2</strong> och nummer <strong>$3</strong>.",
-       "showingresultsnum": "Nedan visas {{PLURAL:$3|'''1''' post|'''$3''' poster}} från och med nummer '''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Resultat '''$1''' av '''$3'''|Resultat '''$1 - $2''' av '''$3'''}} för '''$4'''",
        "search-nonefound": "Inga resultat matchade frågan.",
        "powersearch-legend": "Avancerad sökning",
        "allinnamespace": "Alla sidor (i namnrymden $1)",
        "allpagessubmit": "Visa",
        "allpagesprefix": "Visa sidor med prefixet:",
-       "allpagesbadtitle": "Den sökta sidtiteln var ogiltig eller så innehöll den ett prefix för annan språkversion eller interwiki-prefix. Titeln kan innehålla bokstäver som inte är tillåtna i sidtitlar.",
+       "allpagesbadtitle": "Den angivna sidtiteln var ogiltig eller innehöll ett prefix för annan språkversion eller ett interwiki-prefix.\nDen kan innehålla en eller fler tecken som inte är tillåtna i titlar.",
        "allpages-bad-ns": "Namnrymden \"$1\" finns inte på {{SITENAME}}.",
        "allpages-hide-redirects": "Göm omdirigeringar",
        "cachedspecial-viewing-cached-ttl": "Du visar en cachad version av denna sida, som kan vara upp till $1 gammal.",
        "duplicate-defaultsort": "'''Varning:''' Standardsorteringsnyckeln \"$2\" tar över från den tidigare standardsorteringsnyckeln \"$1\".",
        "version": "Version",
        "version-extensions": "Installerade programtillägg",
+       "version-skins": "Installerade utseenden",
        "version-specialpages": "Specialsidor",
        "version-parserhooks": "Parsertillägg",
        "version-variables": "Variabler",
        "version-antispam": "Förhindrar spam",
-       "version-skins": "Utseenden",
        "version-other": "Annat",
        "version-mediahandlers": "Mediahanterare",
        "version-hooks": "Hakar",
        "version-license": "MediaWiki-licens",
        "version-ext-license": "Licens",
        "version-ext-colheader-name": "Tillägg",
+       "version-skin-colheader-name": "Utseende",
        "version-ext-colheader-version": "Version",
        "version-ext-colheader-license": "Licens",
        "version-ext-colheader-description": "Beskrivning",
        "expand_templates_remove_nowiki": "Undertryck <nowiki> taggar i resultatet",
        "expand_templates_generate_xml": "Visa parseträd som XML",
        "expand_templates_generate_rawhtml": "Visa rå HTML",
-       "expand_templates_preview": "Förhandsvisning"
+       "expand_templates_preview": "Förhandsvisning",
+       "pagelanguage": "Sidspråksväljare",
+       "pagelang-name": "Sida",
+       "pagelang-language": "Språk",
+       "pagelang-use-default": "Använd standardspråk",
+       "pagelang-select-lang": "Välj språk",
+       "right-pagelang": "Ändra sidans språ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."
 }
index 660df9c..2d064c7 100644 (file)
        "qbmyoptions": "Kurasa zangu",
        "faq": "Maswali ya kawaida",
        "faqpage": "Project:Maswali Yaulizwayo Marakwamara",
-       "vector-action-addsection": "Weka mada",
-       "vector-action-delete": "Futa",
-       "vector-action-move": "Hamisha",
-       "vector-action-protect": "Linda",
-       "vector-action-undelete": "Rudisha",
-       "vector-action-unprotect": "Badilisha ulinzi",
-       "vector-view-create": "Anzisha",
-       "vector-view-edit": "Hariri",
-       "vector-view-history": "Fungua historia",
-       "vector-view-view": "Soma",
-       "vector-view-viewsource": "Tazama msimbo",
        "actions": "Vitendo",
        "namespaces": "Maeneo ya wiki",
        "variants": "Vibadala",
        "editundo": "tengua",
        "searchresults": "Matokeo ya utafutaji",
        "searchresults-title": "Matokeo ya utafutaji kwa ajili ya \"$1\"",
-       "toomanymatches": "Yalipatikana majibu mengi mno, kwa hiyo tafadhali jaribu ulizo mwingine",
        "titlematches": "Kurasa zinazo majina yenye maneno ya ulizo",
        "textmatches": "Kurasa zinazo maandishi yenye maneno ya ulizo",
        "notextmatches": "Maandishi yaliyotafutwa hayakupatikana kwenye kurasa zo zote",
        "searchmenu-exists": "'''Ukurasa wa \"[[:$1]]\" upo kwenye wiki hii'''",
        "searchmenu-new": "'''Anzisha ukurasa wa \"[[:$1]]\" katika wiki hii!'''",
        "searchprofile-articles": "Kurasa kwa kusudi ya wiki",
-       "searchprofile-project": "Kurasa za msaada na za mradi",
        "searchprofile-images": "Picha na kadhalika",
        "searchprofile-everything": "Zote",
        "searchprofile-advanced": "Hali ya juu",
        "searchprofile-articles-tooltip": "Tafuta kwenye $1",
-       "searchprofile-project-tooltip": "Tafuta kwenye $1",
        "searchprofile-images-tooltip": "Tafuta mafaili",
        "searchprofile-everything-tooltip": "Tafuta wiki nzima (pamoja na kurasa za majadiliano)",
        "searchprofile-advanced-tooltip": "Tafuta katika maeneo ya wiki utakayoyachagua",
        "search-interwiki-default": "Matokeo toka $1:",
        "search-interwiki-more": "(zaidi)",
        "search-relatedarticle": "Zingine zinazofanana",
-       "searcheverything-enable": "Tafuta katika maeneo yote ya wiki",
        "searchrelated": "zingine zinazofanana",
        "searchall": "zote",
        "showingresults": "{{PLURAL:$1|Tokeo '''1''' linaonyeshwa|matokeo '''$1''' yanaonyeshwa}} chini, kuanzia na namba '''$2'''.",
-       "showingresultsnum": "{{PLURAL:$3|Tokeo '''1''' linaonyeshwa|Matokeo '''$3''' yanaonyeshwa}} chini, kuanzia na namba '''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Tokeo '''$1''' kati ya jumla ya '''$3'''|Matokeo '''$1 - $2''' kati ya jumla ya '''$3'''}} kutokana na kuitafuta '''$4'''",
        "search-nonefound": "Hakuna matokeo ya kutafuta ulizio ule.",
        "powersearch-legend": "Tafuta kwa hali ya juu",
        "allowemail": "Wezesha barua pepe toka kwa watumiaji wengine",
        "prefs-searchoptions": "Hitiari za kutafuta",
        "prefs-namespaces": "Maeneo ya wiki",
-       "defaultns": "La sivyo tafuta kwenye maeneo haya:",
        "default": "chaguo-msingi",
        "prefs-files": "Mafaili",
        "prefs-custom-css": "CSS niliyotunga mwenyewe",
index 64158b3..df1295c 100644 (file)
        "qbmyoptions": "Moje zajty",
        "faq": "FAQ",
        "faqpage": "Project:FAQ",
-       "vector-action-addsection": "Nowo tajla",
-       "vector-action-delete": "Wyćepej",
-       "vector-action-move": "Przećep",
-       "vector-action-protect": "Zawrzij",
-       "vector-action-undelete": "Wćep",
-       "vector-action-unprotect": "Uodymkńij",
-       "vector-view-create": "Stwůrz",
-       "vector-view-edit": "Sprowjej",
-       "vector-view-history": "Uobocz gyszichta",
-       "vector-view-view": "Czytej",
-       "vector-view-viewsource": "Zdrzůdłowy tekst",
        "actions": "Akcyje",
        "namespaces": "Raumy mjan",
        "variants": "Warjanty",
        "difference-missing-revision": "{{PLURAL:$2|Wersyjo|$2 wersyje|$2 wersyji}} #$1 zajty \"{{PAGENAME}}\" ńy {{PLURAL:$2|uostoła znaleźůno|uostoły znaleźůne|uostoło znaleźůnych}}. Zauobycz je to skiż starygo linky do wyćępanyj zajty. Powůd wyćepańa nojdźesz we [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rejerze].",
        "searchresults": "Wyńiki sznupańo",
        "searchresults-title": "Wyniki sznupańo za „$1”",
-       "toomanymatches": "Za dužo elymyntůw kere pasujům do wzorca, wćep inkše zapytańy",
        "titlematches": "Znejdźono we titlach:",
        "textmatches": "Znejdźono na zajtach:",
        "notextmatches": "Ńy znejdźono we tekście zajtůw",
        "searchmenu-exists": "'''Ńy ma zajty uo mjańy \"[[:$1]]\" na tyj wiki'''",
        "searchmenu-new": "'''Stwůrz zajta „[[:$1|$1]]” na tyj wiki!'''",
        "searchprofile-articles": "Zajty",
-       "searchprofile-project": "Zajty půmocy a projektu",
        "searchprofile-images": "Multimedyja",
        "searchprofile-everything": "Wszyjsko",
        "searchprofile-advanced": "Rozszerzůne",
        "searchprofile-articles-tooltip": "Sznupańy we raumje mjan $1",
-       "searchprofile-project-tooltip": "Sznupańy we raumach mjan $1",
        "searchprofile-images-tooltip": "Sznupańy za plikůma",
        "searchprofile-everything-tooltip": "Sznupej we cołku (i ze zajtůma dyskusyje)",
        "searchprofile-advanced-tooltip": "Sznupańy we uobranych raumach mjan",
        "search-interwiki-default": "$1 wyńiki:",
        "search-interwiki-more": "(wjyncyj)",
        "search-relatedarticle": "Podane",
-       "searcheverything-enable": "Sznupej we wszech mjan",
        "searchrelated": "podane",
        "searchall": "wszyjske",
        "showingresults": "To lista na keryj je {{PLURAL:$1|'''1''' wyńik|'''$1''' wyńikůw}}, počynojůnc uod nůmeru '''$2'''.",
-       "showingresultsnum": "To lista na keryj je {{PLURAL:$3|'''1''' wyńik|'''$3''' wyńikůw}}, počynojůnc uod nůmeru '''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Wyńik '''$1''' z '''$3'''|Wyńiki '''$1 – $2''' z '''$3'''}} lo '''$4'''",
        "search-nonefound": "Ńy mo wynikůw, kere uodpadajům kryterjům zapytańo.",
        "powersearch-legend": "Sznupańy zaawansowane",
        "allowemail": "Inksze użytkowńiki můgům posyłać mje e-brify",
        "prefs-searchoptions": "Sznupańe",
        "prefs-namespaces": "Raumy mjan",
-       "defaultns": "Důmyślńy sznupej we nastympujůncych przystrzyńach mjan:",
        "default": "důmyślńy",
        "prefs-files": "Pliki",
        "youremail": "E-brif:",
        "username": "{{GENDER:$1|Mjano używocza}}:",
-       "uid": "{{GENDER:$1|ID używocza}}:",
        "prefs-memberingroups": "Należy do {{PLURAL:$1|grupy|grup:}}",
        "prefs-registration": "Czas twůrzyńa kůnta:",
        "yourrealname": "Prawdźiwe mjano",
        "logempty": "Ńy ma wpisůw we rejeře",
        "log-title-wildcard": "Šnupej za titlami kere začynojům śe uod tygo tekstu",
        "allpages": "Wšyskie zajty",
-       "alphaindexline": "uod $1 do $2",
        "nextpage": "Nostympno zajta ($1)",
        "prevpage": "Popředńo zajta ($1)",
        "allpagesfrom": "Zajty začynojůnce śe na:",
index d297c7b..512c95a 100644 (file)
        "qbmyoptions": "என் விருப்பத்தேர்வுகள்",
        "faq": "அடிக்கடி கேட்கப்படும் கேள்விகள்",
        "faqpage": "Project:அடிக்கடி கேட்கப்படும் கேள்விகள்",
-       "vector-action-addsection": "தலைப்பைச் சேர்",
-       "vector-action-delete": "நீக்குக",
-       "vector-action-move": "நகர்த்தவும்",
-       "vector-action-protect": "காக்கவும்",
-       "vector-action-undelete": "நீக்கத்தை நிறுத்து",
-       "vector-action-unprotect": "காப்பை மாற்று",
-       "vector-view-create": "உருவாக்கவும்",
-       "vector-view-edit": "தொகு",
-       "vector-view-history": "வரலாற்றைக் காட்டவும்",
-       "vector-view-view": "படிக்கவும்",
-       "vector-view-viewsource": "மூலத்தைக் காட்டவும்",
        "actions": "செயல்கள்",
        "namespaces": "பெயர்வெளிகள்",
        "variants": "மாற்றுக்கள்\n\nமாற்றுருவங்கள்",
        "diff-multi-manyusers": "({{PLURAL:$2|பயனரால்|$2 பயனர்களால்}} செய்யப்பட்ட {{PLURAL:$1|ஒரு இடைப்பட்ட திருத்தம்|$1 இடைப்பட்ட திருத்தங்கள்}}  காட்டப்படவில்லை.)",
        "searchresults": "தேடல் முடிவுகள்",
        "searchresults-title": "\"$1\" இற்கான தேடல் முடிவுகள்",
-       "toomanymatches": "மிகக்கூடுதலான பொருத்தம் தரும் உருப்படிகளைத் தருகின்றது,  உங்கள் கேள்வியை மாற்றியமைக்கவும்",
        "titlematches": "கட்டுரைத் தலைப்புப் பொருந்துகிறது",
        "textmatches": "கட்டுரை உரை பொருந்துகிறது",
        "notextmatches": "கட்டுரை உரை எதுவும் பொருந்தவில்லை",
        "searchrelated": "தொடர்புடையவை",
        "searchall": "அனைத்தும்",
        "showingresults": "'''$2''' இலிருந்து தொடங்கும்  {{PLURAL:$1|'''1''' முடிவு கீழே காட்டப்பட்டுள்ளது|'''$1''' முடிவுகள் கீழே காட்டப்பட்டுள்ளன}}.",
-       "showingresultsnum": "'''$2''' இலிருந்து தொடங்கும்  {{PLURAL:$3|'''1''' முடிவு கீழே காட்டப்பட்டுள்ளது|'''$3''' முடிவுகள் கீழே காட்டப்பட்டுள்ளன}}.",
        "showingresultsheader": "'''$4''' இற்கான {{PLURAL:$5|முடிவு  '''$3''' இல் '''$1'''|முடிவுகள்'''$3''' இல்  '''$1 - $2''' }}",
        "search-nonefound": "உங்கள் வினவலுக்கான முடிவுகள் எதுவும் இல்லை.",
        "powersearch-legend": "மேம்பட்ட தேடல்",
index 3c54cb6..9df1372 100644 (file)
        "qbmyoptions": "ಎನ್ನ ಪುಟೊಲು",
        "faq": "ಸಾಮಾನ್ಯವಾದ್ ಕೇನುನ ಪ್ರಶ್ನೆಲು",
        "faqpage": "Project:ಸಾಮಾನ್ಯವಾದ್ ಕೇನುನ ಪ್ರಶ್ನೆಲು",
-       "vector-action-addsection": "ವಿಷಯ ಸೇರಾಲೆ",
-       "vector-action-delete": "ದೆತ್ತ್ ಪಾಡ್ಲೆ",
-       "vector-action-move": "ಸ್ಥಳಾಂತರ ಮಲ್ಪುಲೆ",
-       "vector-action-protect": "ಸ೦ರಕ್ಷಿಸಾಲೆ",
-       "vector-action-undelete": "ಮಾಜಾವಡೆ",
-       "vector-action-unprotect": "ಬದಲಾವಣೆನ್ ರಕ್ಷಿಸಾಲೆ",
-       "vector-view-create": " ಸುರು ಮಲ್ಪುಲೆ",
-       "vector-view-edit": "ಸಂಪಾದನೆ ಮಲ್ಪುಲೆ",
-       "vector-view-history": "ಇತಿಹಾಸೊನು ತೂಲೆ",
-       "vector-view-view": "ಓದ್ಲೇ",
-       "vector-view-viewsource": "ಮೂಲೊನು ತೂಲೆ",
        "actions": "ಕ್ರಿಯೆಕ್ಕುಲು",
        "namespaces": "ಪುದರ್ ದ ವರ್ಗೊಲು",
        "variants": "ರೂಪಾಂತರ ಹೊಂದ್‘ನ",
        "prefs-files": "ಕಡತೊಲು",
        "youremail": "ಇ-ಅಂಚೆ",
        "username": "ಸದಸ್ಯೆರ್ನ ಪುದರ್:",
-       "uid": "ಸದಸ್ಯೆರನ  ID",
        "yourrealname": "ನಿಜವಾಯಿನ ಪುದರ್",
        "yourlanguage": "ಭಾಷೆ:",
        "yournick": "ಪೊಸ ಸಹಿ",
        "booksources-go": "ಪೋ",
        "log": "ದಾಖಲೆಲು",
        "allpages": "ಪೂರಾ ಪೂಟೊಲು",
-       "alphaindexline": "$1 ರ್ದ್ $2 ಗ್",
        "allpagesfrom": "ಇಂದೆರ್ದ್ ಶುರುವಾಪುನ ಪುಟೊಲೆನ್ ತೊಜ್ಪಾವು:",
        "allpagesto": "ಇಂದೆರ್ದ್ ಅಂತ್ಯ ಆಪುನ ಪುಟೊಲೆನ್ ತೊಜ್ಪಾವು:",
        "allarticles": "ಪೂರಾ ಲೇಖನೊಲು",
index 67d8ba6..92528f5 100644 (file)
        "searchall": "అన్నీ",
        "showingresults": "#<strong>$2</strong> నుండి మొదలుకొని {{PLURAL:$1|</strong>ఒక్క</strong> ఫలితాన్ని|<strong>$1</strong> ఫలితాలను}} కింద చూపించాం.",
        "showingresultsinrange": "#<strong>$2</strong> నుండి  #<strong>$3</strong> వరకు ఉన్న ఫలితాల శ్రేణి నుండి {{PLURAL:$1|<strong>ఒక్క</strong> ఫలితం|<strong>$1</strong> ఫలితాల}} వరకు కింద చూపించాం.",
-       "showingresultsnum": "#<strong>$2</strong> నుండి మొదలుకొని {{PLURAL:$3|<strong>ఒక్క</strong> ఫలితాన్ని|<strong>$3</strong> ఫలితాలను}} కింద చూపించాం.",
        "showingresultsheader": "<strong>$4</strong> కోసం వచ్చిన ఫలితాలు {{PLURAL:$5|<strong>$3</strong> లో <strong>$1</strong>|</strong>$3</strong> లో <strong>$1 - $2</strong>}}",
        "search-nonefound": "మీ ప్రశ్నకి సరిపోలిన ఫలితాలేమీ లేవు.",
        "powersearch-legend": "నిశితమైన అన్వేషణ",
index d3da814..423f1e3 100644 (file)
        "qbmyoptions": "Ha'u-nia pájina sira",
        "faq": "FAQ",
        "faqpage": "Project:FAQ",
-       "vector-action-protect": "Proteje",
-       "vector-view-create": "Kria",
-       "vector-view-edit": "Edita",
-       "vector-view-history": "Haree istória",
-       "vector-view-view": "Lee",
        "actions": "Aksaun sira",
        "errorpagetitle": "Sala",
        "returnto": "Fali ba $1.",
        "searchmenu-new": "'''Kria pájina \"[[:$1]]\" iha wiki ne'e!'''",
        "searchprofile-everything": "Hotu",
        "searchprofile-articles-tooltip": "Buka iha $1",
-       "searchprofile-project-tooltip": "Buka iha $1",
        "search-result-size": "$1 ({{PLURAL:$2|liafuan ida|liafuan $2}})",
        "search-section": "(seksaun $1)",
        "search-suggest": "Parese Ita buka: $1",
        "timezoneregion-europe": "Europa",
        "youremail": "Korreiu eletróniku:",
        "username": "Naran uza-na'in:",
-       "uid": "Númeru uza-na'in:",
        "yourlanguage": "Lian:",
        "gender-male": "Mane",
        "gender-female": "Feto",
        "specialloguserlabel": "Uza-na'in ne'ebé halo:",
        "speciallogtitlelabel": "Objetivu (títulu ka uza-na'in):",
        "allpages": "Pájina hotu",
-       "alphaindexline": "$1 to'o $2",
        "nextpage": "Pájina oinmai ($1)",
        "prevpage": "Pájina molok ($1)",
        "allpagesfrom": "Hatudu pájina sira; hahú iha:",
        "block": "Blokeiu uza-na'in",
        "blockip": "Blokeiu uza-na'in",
        "blockip-legend": "Blokeiu uza-na'in",
-       "ipadressorusername": "Diresaun IP ka naran uza-na'in:",
+       "ipaddressorusername": "Diresaun IP ka naran uza-na'in:",
        "ipbexpiry": "Tempu:",
        "ipbreason": "Motivu:",
        "ipbcreateaccount": "La bele kria konta foun",
        "siteuser": "uza-na'in {{SITENAME}} nian $1",
        "lastmodifiedatby": "Pájina ne'e $3 mak muda ba dala ikus iha $1, $2.",
        "siteusers": "{{PLURAL:$2|uza-na'in|uza-na'in}} {{SITENAME}} nian $1",
-       "skinname-cologneblue": "Kolónia azúl",
        "previousdiff": "←Versaun molok",
        "nextdiff": "Versaun oinmai→",
        "show-big-image": "Boot liu",
-       "showhidebots": "($1 bot sira)",
        "ilsubmit": "Buka",
        "bad_image_list": "Formatu:\n\nLiña hotu tenke komesa ho *\nLigasaun uluk iha liña tenke ligasaun bá imajen aat.\nLigasaun seluk iha liña - ne'e pájina sira iha ne'ebé bele inklui imajen aat.",
        "exif-make": "Fabrikante kámara nian",
        "compare-rev1": "Versaun 1",
        "compare-rev2": "Versaun 2",
        "compare-submit": "Halo komparasaun",
-       "dberr-header": "Wiki ne'e iha problema",
        "rightsnone": "(mamuk)",
        "searchsuggest-search": "Buka",
        "expand_templates_ok": "OK"
index 1d84b32..50eecf7 100644 (file)
        "qbmyoptions": "Саҳифаҳои ман",
        "faq": "Саволҳои тез-тез пурсидашуда",
        "faqpage": "Project:Саволҳои тез-тез пурсидашуда",
-       "vector-action-addsection": "Иловаи унвон",
-       "vector-action-delete": "Ҳазф",
-       "vector-action-move": "Кӯчонидан",
-       "vector-action-protect": "Муҳофизат",
-       "vector-action-undelete": "Эҳё",
-       "vector-action-unprotect": "Тағйири муҳофизат",
-       "vector-view-create": "Эҷод",
-       "vector-view-edit": "Вироиш",
-       "vector-view-history": "Намоиши таърих",
-       "vector-view-view": "Хондан",
-       "vector-view-viewsource": "Намоиши манбаъ",
        "actions": "Амалкардҳо",
        "namespaces": "Фазоҳои ном",
        "variants": "Вариантҳо",
        "diff-empty": "(бе тафовут)",
        "searchresults": "Натиҷаҳои ҷустуҷӯ",
        "searchresults-title": "Натоиҷи ҷустуҷӯ барои \"$1\"",
-       "toomanymatches": "Теъдоди мавориди мутобиқ хеле зиёд буд, лутфан дархости дигареро имтиҳон кунед",
        "titlematches": "Унвони саҳифа татбиқ мекунад",
        "textmatches": "Матни мақола татбиқ мекунад",
        "notextmatches": "Матни ҳеҷ мақолае рост намеояд",
        "searchmenu-exists": "'''Саҳифае бо номи \"[[:$1]]\" дар ин вики вуҷуд дорад.'''",
        "searchmenu-new": "'''Эҷоди саҳифаи \"[[:$1]]\" дар ин вики!'''",
        "searchprofile-articles": "Саҳифаҳои мӯҳтаво",
-       "searchprofile-project": "Саҳифаҳои роҳномо ва лоиҳа",
        "searchprofile-images": "Чандрасонаӣ",
        "searchprofile-everything": "Ҳамачиз",
        "searchprofile-advanced": "Пешрафта",
        "searchprofile-articles-tooltip": "Ҷустуҷӯ дар $1",
-       "searchprofile-project-tooltip": "Ҷустуҷӯ дар $1",
        "searchprofile-images-tooltip": "Ҷустуҷӯи парвандаҳо",
        "searchprofile-everything-tooltip": "Ҷустуҷӯи ҳамаи мӯҳтаво (бо ҳисоби саҳифаҳои баҳс)",
        "searchprofile-advanced-tooltip": "Ҷустуҷӯ дар фазоҳои номи дилхоҳ",
        "searchrelated": "алоқаманд",
        "searchall": "ҳама",
        "showingresults": "Намоиши {{PLURAL:$1|'''1''' натиҷа|'''$1''' натоиҷ}} дар зер оғоз аз #'''$2'''.",
-       "showingresultsnum": "Намоиши {{PLURAL:$3|'''1''' натиҷа|'''$3''' натоиҷ}} оғоз аз #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Натиҷаи <strong>$1</strong> <strong>$3</strong>|Натоиҷи <strong>$1 - $2</strong> <strong>$3</strong>}} барои <strong>$4</strong>",
        "search-nonefound": "Натиҷаи муносиб бо дархост пайдо нашуд.",
        "powersearch-legend": "Ҷустуҷӯи пешрафта",
        "allowemail": "Иҷозат додани e-mail аз дигар корбарон",
        "prefs-searchoptions": "Ҷустуҷӯ",
        "prefs-namespaces": "Фазоҳои ном",
-       "defaultns": "Вагарнда дар ин фазоҳои ном ҷустуҷӯ шавад:",
        "default": "пешфарз",
        "prefs-files": "Файлҳо",
        "prefs-emailconfirm-label": "Тасдиқи почта:",
        "youremail": "Почтаи электронии Шумо:",
        "username": "{{GENDER:$1|Номи корбар}}:",
-       "uid": "{{GENDER:$1|Корбар}} ID:",
        "prefs-memberingroups": "{{GENDER:$2|Узви}} ин {{PLURAL:$1|гурӯҳ|гурӯҳҳо}}:",
        "prefs-registration": "Замони сабтином:",
        "yourrealname": "Номи аслӣ:",
        "logempty": "Мавриди мутобиқ ба манзури шумо дар гузориш пайдо нашуд.",
        "log-title-wildcard": "Саҳифаҳоеро ҷустуҷӯ кунед, ки унвонашон бо ин матн оғоз мешаванд",
        "allpages": "Ҳамаи саҳифаҳо",
-       "alphaindexline": "$1 то $2",
        "nextpage": "Саҳифаи баъдина ($1)",
        "prevpage": "Саҳифаи пешина ($1)",
        "allpagesfrom": "Намоиши саҳифаҳо бо шурӯъ аз:",
index 2d38b3c..780bc24 100644 (file)
        "qbmyoptions": "Sahifahoi man",
        "faq": "Savolhoi tez-tez pursidaşuda",
        "faqpage": "Project:Savolhoi tez-tez pursidaşuda",
-       "vector-action-addsection": "Ilovai unvon",
-       "vector-action-delete": "Hazf",
-       "vector-action-move": "Kūconidan",
-       "vector-action-protect": "Muhofizat",
-       "vector-action-undelete": "Ehjo",
-       "vector-action-unprotect": "Ba dar ovardan az muhofizat",
-       "vector-view-create": "Eçod",
-       "vector-view-edit": "Viroiş",
-       "vector-view-history": "Namoişi ta'rix",
-       "vector-view-view": "Xondan",
-       "vector-view-viewsource": "Namoişi manba'",
        "actions": "Amalkardho",
        "namespaces": "Fazohoi nom",
        "variants": "Variantho",
        "editundo": "botil",
        "searchresults": "Natiçahoi çustuçū",
        "searchresults-title": "Natoiçi çustuçū baroi \"$1\"",
-       "toomanymatches": "Te'dodi mavoridi mutobiq xele zijod bud, lutfan darxosti digarero imtihon kuned",
        "titlematches": "Unvoni sahifa tatbiq mekunad",
        "textmatches": "Matni maqola tatbiq mekunad",
        "notextmatches": "Matni heç maqolae rost nameojad",
        "searchmenu-new": "'''Eçodi sahifai \"[[:$1]]\" dar in viki!'''",
        "searchprofile-advanced": "Peşrafta",
        "searchprofile-articles-tooltip": "Çustuçū dar $1",
-       "searchprofile-project-tooltip": "Çustuçū dar $1",
        "searchprofile-images-tooltip": "Çustuçūi parvandaho",
        "searchprofile-everything-tooltip": "Çustuçūi hamai mūhtavo (bo hisobi sahifahoi bahs)",
        "search-result-size": "$1 ({{PLURAL:$2|1 kalima|$2 kalimaho}})",
        "searchrelated": "aloqamand",
        "searchall": "hama",
        "showingresults": "Namoişi {{PLURAL:$1|'''1''' natiça|'''$1''' natoiç}} dar zer oƣoz az #'''$2'''.",
-       "showingresultsnum": "Namoişi {{PLURAL:$3|'''1''' natiça|'''$3''' natoiç}} oƣoz az #'''$2'''.",
        "powersearch-legend": "Çustuçūi peşrafta",
        "powersearch-ns": "Çustuçū dar fazohoi nom:",
        "search-external": "Çustuçūi xoriçī",
        "prefs-files": "Fajlho",
        "youremail": "Poctai elektroniji Şumo:",
        "username": "Nomi korbar:",
-       "uid": "ID-i korbar:",
        "prefs-memberingroups": "A'zoi {{PLURAL:$1|gurūh|gurūhho}}:",
        "yourrealname": "Nomi aslī:",
        "yourlanguage": "Zabon:",
        "logempty": "Mavridi mutobiq ba manzuri şumo dar guzoriş pajdo naşud.",
        "log-title-wildcard": "Sahifahoero çustuçū kuned, ki unvonaşon bo in matn oƣoz meşavand",
        "allpages": "Hamai sahifaho",
-       "alphaindexline": "$1 to $2",
        "nextpage": "Sahifai ba'dina ($1)",
        "prevpage": "Sahifai peşina ($1)",
        "allpagesfrom": "Namoişi sahifaho bo şurū' az:",
        "blockip": "Bastani korbar",
        "blockip-legend": "Bastani korbar",
        "blockiptext": "Baroi bastani dastrasiji viroişi nişonai IP jo nomi korbarī muşaxxas az formi zerin istifoda kuned.\nIn kor faqat bojad baroi çilavgirī az xarobkori va muvofiqi bo [[{{MediaWiki:Policy-url}}|sijosati qat'i dastrasī]] ançom şavad.\nDaleli muşaxxas baroi in korro dar zer zikr kuned (baroi misol, zikri sahifahoe, ki xarobkorī şudaand).",
-       "ipadressorusername": "IP nişona jo nomi korbar:",
+       "ipaddressorusername": "IP nişona jo nomi korbar:",
        "ipbexpiry": "Xotima:",
        "ipbreason": "Sabab:",
        "ipbreason-dropdown": "*Sababhoi umumiji bastan\n** Vorid kardani ittilooti nodurust\n** Pok kardani ittilooti mufid az sahifaho\n** Istifoda burdani pajvandhoi spam ba somonahoi beruna\n** Vorid kardani naviştahoi beman'nī ba sahifaho\n** Raftori ba'd/masxarakuniji digar korbaron\n** Sūiistifoda az cand hisobi korbarī\n** Nomi korbariji nomunosib",
        "imagelisttext": "Dar zer fehristi '''$1''' {{PLURAL:$1|parvandai|parvandahoi}} ba tartib ovarda şuda, omadaast $2.",
        "newimages-summary": "In sahifai viƶa oxirin parvandahoi borşudaro namoiş medihad.",
        "newimages-legend": "Filtr",
-       "showhidebots": "($1 botho)",
        "noimages": "Cize baroi didan nest.",
        "ilsubmit": "Çustuçūi",
        "bydate": "az rūi sana",
index 10ca3ea..083efdd 100644 (file)
        "searchall": "ทั้งหมด",
        "showingresults": "ด้านล่างแสดง <strong>1</strong> ผลลัพธ์ เริ่มตั้งแต่รายการที่ <strong>$2</strong>",
        "showingresultsinrange": "ด้านล่างแสดงมากสุด {{PLURAL:$1|<strong>1</strong>|<strong>$1</strong>}} ผลลัพธ์ ในพิสัย #<strong>$2</strong> ถึง #<strong>$3</strong>",
-       "showingresultsnum": "ด้านล่างแสดง <strong>$3</strong> ผลลัพธ์ เริ่มตั้งแต่รายการที่ <strong>$2</strong>",
        "showingresultsheader": "{{PLURAL:$5|ผลการค้นหา <strong>$1</strong> จาก <strong>$3</strong>|ผลการค้นหา <strong>$1 - $2</strong> จาก <strong>$3</strong>}} สำหรับ <strong>$4</strong>",
        "search-nonefound": "ไม่มีผลลัพธ์ตรงกับคำค้น",
        "powersearch-legend": "ค้นหาระดับสูง",
        "wantedtemplates": "แม่แบบที่ต้องการ",
        "mostlinked": "หน้าที่มีการเชื่อมโยงหามากที่สุด",
        "mostlinkedcategories": "หมวดหมู่ที่มีการเชื่อมโยงหามากที่สุด",
-       "mostlinkedtemplates": "à¹\81มà¹\88à¹\81à¸\9aà¸\9aที่มีการเชื่อมโยงหามากที่สุด",
+       "mostlinkedtemplates": "หà¸\99à¹\89าที่มีการเชื่อมโยงหามากที่สุด",
        "mostcategories": "หน้าที่มีหมวดหมู่มากที่สุด",
        "mostimages": "ภาพที่มีการโยงไปหามากที่สุด",
        "mostinterwikis": "หน้าที่มีลิงก์ข้ามโครงการมากที่สุด",
        "pageinfo-length": "ความยาวหน้า (ไบต์)",
        "pageinfo-article-id": "หมายเลขประจำหน้า",
        "pageinfo-language": "ภาษาเนื้อหาของหน้า",
+       "pageinfo-content-model": "ตัวแบบเนื้อหาของหน้า",
        "pageinfo-robot-policy": "การทำดัชนีโดยบอต",
        "pageinfo-robot-index": "อนุญาต",
        "pageinfo-robot-noindex": "ไม่อนุญาต",
        "duplicate-defaultsort": "คำเตือน: หลักเรียงลำดับปริยาย \"$2\" ได้ลบล้างหลักเรียงลำดับปริยาย \"$1\" ที่มีอยู่ก่อนหน้า",
        "version": "รุ่นซอฟต์แวร์",
        "version-extensions": "ส่วนขยายเพิ่ม (extension) ที่ติดตั้ง",
+       "version-skins": "รูปลักษณ์ที่ติดตั้ง",
        "version-specialpages": "หน้าพิเศษ",
        "version-parserhooks": "ฮุกที่มีการพาร์สค่า",
        "version-variables": "ตัวแปร",
        "version-antispam": "การป้องกันสแปม",
-       "version-skins": "รูปลักษณ์",
        "version-other": "อื่นๆ",
        "version-mediahandlers": "ตัวจัดการเกี่ยวกับสื่อ (media handler)",
        "version-hooks": "ฮุก",
index 9a27692..c6b21c3 100644 (file)
        "qbmyoptions": "Meniň sahypalarym",
        "faq": "KSS",
        "faqpage": "Project:KSS",
-       "vector-action-addsection": "Tema goş",
-       "vector-action-delete": "Öçür",
-       "vector-action-move": "Adyny üýtget",
-       "vector-action-protect": "Goraga al",
-       "vector-action-undelete": "Öçürmäni yzyna al",
-       "vector-action-unprotect": "Goragy üýtget",
-       "vector-view-create": "Döret",
-       "vector-view-edit": "Üýtget",
-       "vector-view-history": "Taryhy gör",
-       "vector-view-view": "Oka",
-       "vector-view-viewsource": "Çeşmäni gör",
        "actions": "Hereketler",
        "namespaces": "At giňişlikleri",
        "variants": "Wariantlar",
        "diff-multi-manyusers": "($2 ulanyjydan köp {{PLURAL:$2|ulanyjy|ulanyjy}} tarapyndan edilen {{PLURAL:$1|aralyk wersiýa|$1 sany aralyk wersiýa}} görkezilmeýär)",
        "searchresults": "Gözleg netijeleri",
        "searchresults-title": "\"$1\" hakda gözleg netijeleri",
-       "toomanymatches": "Çakdanaşa köp gabat gelme tapyldy, başgaçarak talap ýazyp görüň",
        "titlematches": "Sahypa ady gabat gelýär",
        "textmatches": "Sahypa teksti gabat gelýär",
        "notextmatches": "Hiç bir sahypada tapylmady",
        "searchmenu-exists": "'''Bu wikide \"[[:$1]]\" atly sahypa bar'''",
        "searchmenu-new": "<strong>Bu wikide \"[[:$1]]\" sahypasyny dörediň!</strong> \n{{PLURAL:$2|0=|Gözlegde tapylan sahypa-da serediň.|Tapylan gözleg netijelerine-de serediň.}}",
        "searchprofile-articles": "Esasy sahypalar",
-       "searchprofile-project": "Kömek we taslama sahypalary",
        "searchprofile-images": "Multimedia",
        "searchprofile-everything": "Ähli zatlar",
        "searchprofile-advanced": "Giňişleýin",
        "searchprofile-articles-tooltip": "$1 içinden gözle",
-       "searchprofile-project-tooltip": "$1 içinden gözle",
        "searchprofile-images-tooltip": "Faýllary gözle",
        "searchprofile-everything-tooltip": "Ähli sahypalardan gözle (şol sanda pikir alyşma sahypalaryndan)",
        "searchprofile-advanced-tooltip": "Laýyk at giňişliklerinde gözle",
        "search-interwiki-default": "$1 netijeler:",
        "search-interwiki-more": "(has-da köp)",
        "search-relatedarticle": "Baglanyşykly",
-       "searcheverything-enable": "Ähli at giňişliklerinde gözle",
        "searchrelated": "baglanyşykly",
        "searchall": "ählisi",
        "showingresults": "Aşakda №'''$2''' netijeden başlap, {{PLURAL:$1|'''1''' netije|'''$1''' netije}} görkezilýär.",
-       "showingresultsnum": "Aşakda №'''$2''' netijeden başlap, {{PLURAL:$3|'''1''' netije|'''$3''' netije}} görkezilýär.",
        "showingresultsheader": "'''$4''' hakda {{PLURAL:$5|'''$3''' netijeden '''$1''' sanysy|'''$3''' netijeden '''$1 - $2''' aralygy}}",
        "search-nonefound": "Talaba gabat gelýän hiç hili netije ýok.",
        "powersearch-legend": "Giňişleýin gözleg",
        "allowemail": "Başga ulanyjylar maňa e-poçta iberip bilsin",
        "prefs-searchoptions": "Gözleg",
        "prefs-namespaces": "At giňişlikleri",
-       "defaultns": "Bolmasa şu at giňişliklerinde gözleg geçiriň:",
        "default": "gaýybana",
        "prefs-files": "Faýllar",
        "prefs-custom-css": "Hususy CSS",
        "prefs-emailconfirm-label": "E-poçta tassyklamasy:",
        "youremail": "E-poçta:",
        "username": "Ulanyjy ady:",
-       "uid": "Ulanyjy belgisi:",
        "prefs-memberingroups": "Agza {{PLURAL:$1|topary|toparlary}}:",
        "prefs-registration": "Hasaba alnan wagty:",
        "yourrealname": "Hakyky adyňyz:",
        "logempty": "Gündelikde gabat gelýän ýazgy ýok.",
        "log-title-wildcard": "Şu tekst bilen başlaýan atlary gözle",
        "allpages": "Ähli sahypalar",
-       "alphaindexline": "$1 sahypasyndan $2 sahypasyna çenli",
        "nextpage": "Indiki sahypa ($1)",
        "prevpage": "Öňki sahypa ($1)",
        "allpagesfrom": "Sanawy şu harplar bilen başlat:",
index 9e092e7..c589b01 100644 (file)
        "searchrelated": "kaugnay",
        "searchall": "lahat",
        "showingresults": "Ipinapakita sa ibaba ang magpahanggang sa {{PLURAL:$1|'''1''' resultang|'''$1''' mga resultang}} nagsisimula sa #'''$2'''.",
-       "showingresultsnum": "Ipinapakita sa ibaba ang {{PLURAL:$3|'''1''' resultang|'''$3''' mga resultang}} nagsisimula sa #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Resultang '''$1''' ng '''$3'''|Mga resultang '''$1 - $2''' ng '''$3'''}} para sa '''$4'''",
        "search-nonefound": "Walang mga resultang tumutugma sa katanungan/pagtatanong.",
        "powersearch-legend": "Paghahanap na may mas mataas na antas",
        "duplicate-defaultsort": "Babala: Madadaig ng susi ng pagtatakdang \"$2\" ang mas naunang susi ng pagtatakdang \"$1\".",
        "version": "Bersyon",
        "version-extensions": "Nakaluklok/Nakainstalang mga karugtong",
+       "version-skins": "Mga pabalat",
        "version-specialpages": "Natatanging mga pahina",
        "version-parserhooks": "Mga pangkawit ng banghay (''parser'')",
        "version-variables": "Mga bagay na nababago/nagbabago",
        "version-antispam": "Pag-iwas sa masasamang mga e-liham",
-       "version-skins": "Mga pabalat",
        "version-api": "API",
        "version-other": "Iba pa",
        "version-mediahandlers": "Mga tagahawak/tagapamahala ng midya",
index 8cc4d3d..2f9d67a 100644 (file)
        "qbmyoptions": "Чымы сәһифон",
        "faq": "РАП",
        "faqpage": "Project:РАП",
-       "vector-action-addsection": "Мывзу зијод кардеј",
-       "vector-action-delete": "Рәдд кардеј",
-       "vector-action-move": "Номи дәгиш кардеј",
-       "vector-action-protect": "Мыдофијә кардеј",
-       "vector-action-undelete": "Бәрпо кардеј",
-       "vector-action-unprotect": "Мыдофијә дәгиш кардеј",
-       "vector-view-create": "Офәјеј",
-       "vector-view-edit": "Сәрост кардеј",
-       "vector-view-history": "Тарых",
-       "vector-view-view": "Һандемон",
-       "vector-view-viewsource": "Дијә кардеј",
        "actions": "Һәрәкәтон",
        "namespaces": "Номон мәконон",
        "variants": "Вариантон",
        "searchmenu-exists": "'''Бы вики-нәхшәдә һесте сәһифә «[[:$1]]»'''",
        "searchmenu-new": "'''Сәһифә офәјеј «[[:$1]]» бә ым вики-нахшәдә!'''",
        "searchprofile-articles": "Әсосә сәһифон",
-       "searchprofile-project": "Че араијшон ијән нахшон сәһифон",
        "searchprofile-images": "Мултимедијә",
        "searchprofile-everything": "Һар вырәдә",
        "searchprofile-advanced": "һовуж",
        "searchprofile-articles-tooltip": "Нәве бә $1",
-       "searchprofile-project-tooltip": "Нәве бә $1",
        "searchprofile-images-tooltip": "Фајлон нәве",
        "searchprofile-everything-tooltip": "Һәммәј сәһифонәдә нәве (мызокирә сәһифонәдән)",
        "searchprofile-advanced-tooltip": "Бә асбардә быә номон мәкононәдә нәве",
        "prefs-custom-css": "Хысуси CSS",
        "youremail": "E-номә:",
        "username": "{{GENDER:$1|Иштирокәкә ном}}:",
-       "uid": "{{GENDER:$1|Иштирокәкә}} ID:",
        "yourrealname": "Шымә әсыл ном:",
        "yourlanguage": "Зывон:",
        "email": "E-номә",
        "booksources-go": "Нәве",
        "log": "Журналон",
        "allpages": "Һәммәј сәһифон",
-       "alphaindexline": "че $1 тоса $2",
        "allarticles": "Һәммәј сәһифон",
        "allpagessubmit": "Бә вырә роснијеј",
        "categories": "Категоријон",
index 9c17de2..58e73ab 100644 (file)
        "search-suggest": "Mahalo pē naʻa ke fiemaʻu: $1",
        "search-interwiki-more": "(lahi ange)",
        "showingresults": "ʻOku ʻasi ʻi lalo ʻa e ngaahi fua ʻoku kamata mo e #'''$2''' (aʻu ki he '''$1''').",
-       "showingresultsnum": "ʻOku ʻasi ʻi lalo ha fua ʻe '''$3''', ʻoku kamata mo e #'''$2'''.",
        "powersearch-legend": "Kumi lakasi",
        "preferences": "Faʻiteliha",
        "mypreferences": "faʻiteliha ʻaʻaku",
        "servertime": "Taimi ʻo e tauhia:",
        "timezoneregion-africa": "ʻAfelika",
        "allowemail": "Fakamafeiaʻi ʻa e tohila mei he kau ʻetita ʻe taha",
-       "defaultns": "Kumi ʻi he vā hingoa fakatuʻunga:",
        "default": "tuʻunga",
        "prefs-files": "Ngaahi faile",
        "youremail": "Tohila:",
        "username": "Ko e ʻetita hono hingoa:",
-       "uid": "hono fika:",
        "yourrealname": "Hingoa moʻoni:",
        "yourlanguage": "Lea:",
        "yourvariant": "Faikeheʻi",
        "alllogstext": "Fakaʻaliʻali fakakātoa ʻo e ngaahi tohinoa hiki hake, mo tāmateʻi, mo maluʻi, mo taʻofi, mo fakapule. ʻOku lava ke ke sivi ʻa e fakaʻaliʻalí ni ʻi he fili ʻo e falenga tohinoa pe hingoa ʻo e ʻetita pe peesi hūkitonu.",
        "logempty": "ʻOku maha ʻa e tohinoa.",
        "allpages": "Peesi kotoa",
-       "alphaindexline": "$1 ki he $2",
        "nextpage": "Peesi hoko ($1)",
        "prevpage": "Peesi ki muʻa ($1)",
        "allpagesfrom": "ʻAsi mai ngaahi peesi ʻoku kamata he:",
        "whatlinkshere-links": "← fehokotaki",
        "blockip": "Taʻofia ʻa e ʻetita",
        "blockiptext": "Ngāueʻaki ʻa e foomu ʻi lalo ʻe taʻofia ʻa e ngofua tohi ʻo e tuʻasila IP pe hingoa ʻetita ʻe taha. ʻOku pau ʻe fai pehē ʻi he taʻofi laukovi pē, lototaha ia mo e [[{{MediaWiki:Policy-url}}|founga]]. Fakafonu ʻi lalo ʻa e ʻuhinga totonu (fakafuaʻaki, lau ki he ngaahi peesi naʻe laukovi).",
-       "ipadressorusername": "Tuʻasila IP pe hingoa ʻo e ʻetita",
+       "ipaddressorusername": "Tuʻasila IP pe hingoa ʻo e ʻetita",
        "ipbexpiry": "Mate",
        "ipbreason": "ʻUhinga",
        "ipbcreateaccount": "Taʻofia ʻa e fakatupu ʻo ha tohi kau-ki-ai",
        "show-big-image": "ʻAsi ʻa e faitā auiiki",
        "newimages": "Fakaʻaliʻali ʻo e ngaahi faitā foʻou",
        "imagelisttext": "ʻOku ʻasi ʻi lalo ha hokohoko ʻo e '''$1''' vahevahe he $2.",
-       "showhidebots": "($1 fatu fakamīsini)",
        "noimages": "ʻOku ʻikai ha meʻa ke sio ki ai.",
        "ilsubmit": "Kumi",
        "bydate": "ʻi honau ʻaho",
index 4396245..347e836 100644 (file)
@@ -19,7 +19,6 @@
        "tog-showtoolbar": "Soim ol liklik link long wokim senis kwiktaim (i nidim JavaScript)",
        "tog-editondblclick": "Senisim pes taim yu paitim tupela taim kwiktaim (i nidim JavaScript)",
        "tog-editsectiononrightclick": "Senisim ol hap bilong pes taim yu paitim nem bilong hap<br />wantaim raithan-klik (i nidim Javascript)",
-       "tog-rememberpassword": "Holim yusanem bilong mi long dispela komputa (holim pas longpela taim $1 {{PLURAL:$1|de|de}})",
        "tog-watchcreations": "Putim ol nupela pes mi wokim na fail mi salim long lukautbuk",
        "tog-watchdefault": "Putim ol pes na fail mi senisim long lukautbuk bilong mi",
        "tog-watchmoves": "Putim ol pes mi surikim long lukautbuk bilong mi",
        "qbedit": "Senisim",
        "qbpageoptions": "Dispela pes",
        "qbmyoptions": "Ol pes bilong mi",
-       "vector-action-delete": "Rausim",
-       "vector-action-move": "Surikim",
-       "vector-action-protect": "Tambuim",
-       "vector-view-create": "Kirapim",
-       "vector-view-edit": "Senisim",
-       "vector-view-history": "Ol senis",
-       "vector-view-view": "Rit",
-       "vector-view-viewsource": "Lukim as tok",
        "errorpagetitle": "Samting i kranki",
        "returnto": "Go bek long $1",
        "tagline": "Long {{SITENAME}}",
        "savearticle": "Raitim pes",
        "preview": "Pes wantaim senis (pastaim long raitim)",
        "showpreview": "Soim pes wantaim senis (pastaim long raitim)",
-       "showlivepreview": "Soim senis kwiktaim taim mi wokim (pastaim long raitim)",
        "showdiff": "Soim ol senis",
        "missingcommenttext": "Plis raitim tingting daunbilo.",
        "summary-preview": "Toksave bilong senis bai luk olsem:",
        "searchprofile-images": "Media",
        "searchprofile-everything": "Olgeta",
        "searchprofile-articles-tooltip": "Painim long $1",
-       "searchprofile-project-tooltip": "Painim long $1",
        "search-result-size": "$1 ({{PLURAL:$2|1 wot|ol $2 wot}})",
        "search-redirect": "(nupela rot long $1)",
        "search-section": "(seksen $1)",
        "searchall": "olgeta",
        "powersearch-legend": "Mobeta Painim",
        "powersearch-ns": "Painim long ol nem",
-       "powersearch-redir": "Soim ol nupela rot",
        "powersearch-toggleall": "Olgeta",
        "powersearch-togglenone": "I nogat wanpela",
        "preferences": "Ol laik",
        "prefs-custom-js": "Praivet JavaScript",
        "youremail": "E-mel:",
        "username": "Yusanem:",
-       "uid": "Yusa ID:",
        "yourrealname": "Tru nem:",
        "yourlanguage": "Tokples:",
        "yourgender": "Man/Meri:",
        "speciallogtitlelabel": "Nem:",
        "log": "Ol ripot",
        "allpages": "Olgeta pes",
-       "alphaindexline": "$1 inap long $2",
        "allarticles": "Ol pes",
        "allpagessubmit": "Go",
        "categories": "Ol grup",
        "previousdiff": "← Moa olpela senis",
        "nextdiff": "Moa nupela senis →",
        "show-big-image": "Bikpela piksa",
-       "showhidebots": "($1 ol bot)",
        "ilsubmit": "Painim",
        "metadata": "Metadata",
        "exif-imagedescription": "Nem bilong piksa",
        "confirm_purge_button": "OK",
        "imgmultigo": "Go!",
        "table_pager_limit_submit": "Go",
-       "watchlistedit-numitems": "Igat {{PLURAL:$1|1 samting|$1 samting}} insait long lukautbuk bilong yu (ol pes bilong toktok i no stap long dispela namba).",
-       "watchlistedit-noitems": "Nogat wanpela samting long lukautbuk bilong yu.",
        "watchlistedit-normal-title": "Senisim lukautbuk",
        "watchlistedit-normal-legend": "Rausim ol samting long lukautbuk",
        "watchlistedit-normal-explain": "Ananit yu lukim ol samting long lukautbuk. Long rausim wanpela samting, makim liklik boxis long sait bilong en, na paitim \"Rausim ol samting\".  Na tu yu inap [[Special:EditWatchlist/raw|senisim lukautbuk long wanpela bokis]].",
index 63b80e9..00479fe 100644 (file)
        "searchall": "hepsi",
        "showingresults": "$2. sonuçtan başlayarak {{PLURAL:$1|'''1''' sonuç |'''$1''' sonuç }} aşağıdadır:",
        "showingresultsinrange": "<strong>$2</strong> ile <strong>$3</strong> arasında toplam <strong>$1</strong> sonuç gösteriliyor.",
-       "showingresultsnum": "'''$2''' sonuçtan başlayarak {{PLURAL:$3|'''1''' sonuç|'''$3''' sonuç}} aşağıdadır:",
        "showingresultsheader": "'''$4''' için {{PLURAL:$5|'''$3''' sonuçtan '''$1'''i|'''$1 - $2''' arası '''$3''' sonuç}}",
        "search-nonefound": "Sorguyla eşleşen bir sonuç yok.",
        "powersearch-legend": "Gelişmiş arama",
        "duplicate-defaultsort": "'''Uyarı:''' Varsayılan \"$2\" sınıflandırma anahtarı, önceki \"$1\" sınıflandırma anahtarını geçersiz kılıyor.",
        "version": "Sürüm",
        "version-extensions": "Yüklü ekler",
+       "version-skins": "Görünümler",
        "version-specialpages": "Özel sayfalar",
        "version-parserhooks": "Derleyici çengelleri",
        "version-variables": "Değişkenler",
        "version-antispam": "Yığın mesaj (spam) önleme",
-       "version-skins": "Görünümler",
        "version-other": "Diğer",
        "version-mediahandlers": "Ortam işleyiciler",
        "version-hooks": "Çengeller",
        "expand_templates_remove_nowiki": "Sonuçlarda <nowiki> etiketlerini bastır",
        "expand_templates_generate_xml": "XML derleyici ağacını göster",
        "expand_templates_generate_rawhtml": "Ham HTML göster",
-       "expand_templates_preview": "Önizleme"
+       "expand_templates_preview": "Önizleme",
+       "pagelang-language": "Dil",
+       "pagelang-use-default": "Varsayılan dili kullan",
+       "pagelang-select-lang": "Dil seçin",
+       "right-pagelang": "Sayfa dilini değiştir"
 }
index 12cb82c..77efb97 100644 (file)
        "qbmyoptions": "aFaṭoṭayḍi",
        "faq": "Şuwole",
        "faqpage": "Project:FAQ",
-       "vector-action-addsection": "Maḥat Fusoqo ḥaṭo",
-       "vector-action-delete": "Slag",
-       "vector-action-move": "Mtaxar",
-       "vector-action-protect": "Mastar",
-       "vector-view-create": "Xlaq",
-       "vector-view-edit": "Mşaḥlaf",
-       "vector-view-history": "Maktabzabno",
-       "vector-view-view": "Qray",
-       "vector-view-viewsource": "Maḥway li aMabu³e.",
        "actions": "Dubore",
        "namespaces": "Dukṭo luIşmo",
        "variants": "Variants",
        "searchmenu-exists": "'''Kito Faṭo herke Işma \"[[:$1]]\"yo'''",
        "searchmenu-new": "Kṭaw iFaṭaṭe \"[[:$1]]\" buWiki.",
        "searchprofile-articles": "Faṭoṭe daḤbişoṭo",
-       "searchprofile-project": "Faṭoṭe du3udrono u daProjat",
        "searchprofile-images": "Multimediya",
        "searchprofile-everything": "Kulmede",
        "searchprofile-advanced": "Advanced",
        "searchprofile-articles-tooltip": "Krax b$1",
-       "searchprofile-project-tooltip": "Krax b$1",
        "searchprofile-images-tooltip": "Krax Ṥurtoṭe",
        "searchprofile-everything-tooltip": "Krax baḤbişoṭo (baFaṭoṭe duDroşo ste)",
        "searchprofile-advanced-tooltip": "Search in custom namespaces",
        "booksources-go": "Zux",
        "log": "Logs",
        "allpages": "aFaṭaṭe kulle",
-       "alphaindexline": "$1  l$2",
        "allarticles": "aFaṭaṭe kulle",
        "allpagessubmit": "Zux",
        "categories": "Sedre",
index b5a157b..1833d18 100644 (file)
        "qbmyoptions": "Matluka ya mina",
        "faq": "FAQ",
        "faqpage": "Project:FAQ",
-       "vector-action-addsection": "Veka nholoko ya mhaka",
-       "vector-action-delete": "Sula",
-       "vector-action-move": "Yi sa kunwana",
-       "vector-action-protect": "Sirhelela",
-       "vector-action-undelete": "Cinca kusula",
-       "vector-action-unprotect": "Cinca kusirhelela",
-       "vector-view-create": "Tumbuluxa",
-       "vector-view-edit": "Lulamisa",
-       "vector-view-history": "Languta matimu",
-       "vector-view-view": "Hlaya",
-       "vector-view-viewsource": "Languta xihlovo",
        "actions": "Swiendlo",
        "namespaces": "Swikhomela viti",
        "variants": "Tinxaka hi ku hambana",
        "searchmenu-exists": "'''Tluka leri vuriwaka \"[[:$1]]\" ikhale ririkona eka wiki leyi.'''",
        "searchmenu-new": "'''Tumbuluxa tluka ra \"[[:$1]]\" eka wiki leyi!'''",
        "searchprofile-articles": "Matluka lama tsariweke",
-       "searchprofile-project": "Mpfuno na matluka ya phurojeki",
        "searchprofile-images": "Tifayili ta mfpumawulo na swifaniso",
        "searchprofile-everything": "Hinkwaswo",
        "searchprofile-advanced": "Rharhangana",
        "searchprofile-articles-tooltip": "Lavisisa eka $1",
-       "searchprofile-project-tooltip": "Lavisisa eka $1",
        "searchprofile-images-tooltip": "Lava tifayili",
        "searchprofile-everything-tooltip": "Lavalava eka matsalwa hinkwawo  (kuhlanganisa na matluka ya mbulavulo)",
        "searchprofile-advanced-tooltip": "Lavalava eka swisivela mavito leswi tolovelekeke",
        "specialloguserlabel": "Mutirhisi:",
        "log": "Nghula ya minxaxamelo",
        "allpages": "Matluka hinkwawo",
-       "alphaindexline": "$1 kuya fika eka $2",
        "allarticles": "Matluka hinkwawo",
        "allpagessubmit": "Nghena",
        "categories": "Mintlawa",
index de90e5a..8cc9001 100644 (file)
        "searchrelated": "бәйләнгән",
        "searchall": "барлык",
        "showingresults": "Аста № '''$2''' {{PLURAL:$1|башлап}} '''$1''' {{PLURAL:$1|результат}} күрсәтелгән.",
-       "showingresultsnum": "Аста № '''$2''' {{PLURAL:$3|башлап}} '''$3''' {{PLURAL:$3|результат}} күрсәтелгән.",
        "showingresultsheader": "'''$4''' өчен {{PLURAL:$5|1=Результат '''$1''' сеннән '''$3'''|Результатлар '''$1 — $2''' сеннән  '''$3'''}}",
        "search-nonefound": "Сорауга туры килгән җаваплар табылмады.",
        "powersearch-legend": "Өстәмә эзләү",
index 206af30..95cb788 100644 (file)
        "qbmyoptions": "Bitlärem",
        "faq": "YBS",
        "faqpage": "Project:YBS",
-       "vector-action-addsection": "Yaña tema östäw",
-       "vector-action-delete": "Beterü",
-       "vector-action-move": "Küçerü",
-       "vector-action-protect": "Yaqlaw",
-       "vector-action-undelete": "Qaytaru",
-       "vector-action-unprotect": "Yaqlawnı beterü",
-       "vector-view-create": "Tözü",
-       "vector-view-edit": "Üzgärtü",
-       "vector-view-history": "Tarixın qaraw",
-       "vector-view-view": "Uqu",
-       "vector-view-viewsource": "Çığanağın qaraw",
        "actions": "Xäräkät",
        "namespaces": "İsemnär mäydanı",
        "variants": "Törlär",
        "viewprevnext": "Kürsätelüe: ($1 {{int:pipe-separator}} $2) ($3)",
        "searchmenu-new": "'''«[[:$1]]»  isemle yaña bit yasaw'''",
        "searchprofile-articles": "Töp bitlär",
-       "searchprofile-project": "Yärdäm häm proyektlar bite",
        "searchprofile-images": "Multimedia",
        "searchprofile-everything": "Härqayda",
        "searchprofile-advanced": "Kiñäytelgän",
        "searchprofile-articles-tooltip": "$1 dä ezläw",
-       "searchprofile-project-tooltip": "$1 dä ezläw",
        "searchprofile-images-tooltip": "Fayllar ezläw",
        "searchprofile-everything-tooltip": "Barlıq bitlärdä dä ezläw",
        "searchprofile-advanced-tooltip": "Birelgän isemnär mäydanında ezläw",
        "search-interwiki-default": "$1 näticä:",
        "search-interwiki-more": "(tağın)",
        "search-relatedarticle": "Bäylängän",
-       "searcheverything-enable": "Barlıq isemnär mäydanında ezläw",
        "searchrelated": "bäylängän",
        "searchall": "barlıq",
        "showingresults": "Asta № '''$2''' {{PLURAL:$1|başlap}} '''$1''' {{PLURAL:$1|rezultat}} kürsätelgän.",
-       "showingresultsnum": "Asta № '''$2''' {{PLURAL:$3| başlap}} '''$3''' {{PLURAL:$3|rezultat}} kürsätelgän.",
        "showingresultsheader": "'''$4''' öçen {{PLURAL:$5|Rezultat '''$1''' sennän '''$3'''|Rezultatlar '''$1 — $2''' sennän  '''$3'''}}",
        "search-nonefound": "Sorawğa turı kilgän cawaplar tabılmadı.",
        "powersearch-legend": "Östämä ezläw",
        "allowemail": "Başqa qullanuçılardan xatlar alırğa röxsät itelsen",
        "prefs-searchoptions": "Ezläw köylänmäläre",
        "prefs-namespaces": "İsemnär mäydanı",
-       "defaultns": "Alaysa menä bu isemnär mäydanında ezläw",
        "default": "kileşü buyınça",
        "prefs-files": "Fayllar",
        "prefs-custom-css": "Üzemneñ CSS",
        "prefs-emailconfirm-label": "E-mail raslaw",
        "youremail": "Elektron poçta:",
        "username": "Qullanuçı iseme:",
-       "uid": "Qullanuçınıñ identifikatorı:",
        "prefs-memberingroups": "Törkem {{PLURAL:$1|äğzası}}:",
        "prefs-memberingroups-type": "$1",
        "prefs-registration": "Terkälü waqıtı:",
        "alllogstext": "{{SITENAME}} säxifäseneñ ğomumi köndälekläre isemlege.\nSez näticälärne köndälek töre, qullanuçı iseme (xäref zurlığın istä totığız) yäki quzzallağan bit (şulay uq xäref zurlığın istä totığız) buyınça tärtipkä salırğa mömkin.",
        "logempty": "Kiräkle yazmalar köndälektä yuq.",
        "allpages": "Barlıq bitlär",
-       "alphaindexline": "$1 bitennän $2 bitenä qädär",
        "nextpage": "Aldağı bit ($1)",
        "prevpage": "Aldağı bit ($1)",
        "allpagesfrom": "Moña başlanuçı bitlärne çığaru:",
        "siteusers": "{{SITENAME}} {{PLURAL:$2|qullanuçısı|qullanuçıları}} $1",
        "creditspage": "Räxmätlär",
        "spamprotectiontitle": "Spam filtrı",
-       "skinname-cologneblue": "Zäñgär sağış",
-       "skinname-monobook": "Kitap",
-       "skinname-modern": "Zamana",
-       "skinname-vector": "Sızımlı",
        "markaspatrolledtext": "Bu mäqäläne tikşerelgän dip tamğalaw",
        "markedaspatrolled": "Tikşerelgän dip tamğalandı",
        "markedaspatrolledtext": "Saylanğan [[:$1]] mäqäläseneñ älege yuraması tikşerelgän dip tamğalandı.",
diff --git a/languages/i18n/tw.json b/languages/i18n/tw.json
new file mode 100644 (file)
index 0000000..86973bf
--- /dev/null
@@ -0,0 +1,52 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Nemo bis",
+                       "Rberchie"
+               ]
+       },
+       "sun": "Kwasiada",
+       "mon": "Dwoada",
+       "tue": "Benada",
+       "wed": "Wukuada",
+       "thu": "Yawoada",
+       "fri": "\tFida",
+       "sat": "Memeneda",
+       "april": "Oforisuo",
+       "january-gen": "OpƐpon",
+       "february-gen": "ogyefuo",
+       "march-gen": "ɔbɛnem",
+       "april-gen": "oforisuo",
+       "may-gen": "kɔtɔnimma",
+       "june-gen": "ayɛwohomumɔ",
+       "july-gen": "kutawonsa",
+       "august-gen": "ɔsannaa",
+       "september-gen": "ɛbɔ",
+       "october-gen": "ahinime",
+       "november-gen": "obubuo",
+       "december-gen": "ɔpɛnimma",
+       "faq": "Nsemisa  amanfour tae bisa",
+       "searchbutton": "Hwewhe'",
+       "create": "Bo",
+       "protect_change": "Sesa",
+       "talkpagelinktext": "Kasa",
+       "otherlanguages": "Wo kasa ahodour mu",
+       "toc": "Biribiara",
+       "viewsource": "Hwe bebia efiri",
+       "template-protected": "(Wei yabo eho ban)",
+       "searchprofile-everything": "Biribiara",
+       "searchprofile-articles-tooltip": "Hwehwe wo dola baako mu",
+       "searchall": "Biribiara",
+       "diff": "NSONSOE",
+       "hide": "Fa sie",
+       "watch": "Hwe",
+       "undeleteviewlink": "Hwe",
+       "namespace": "Bea wodin wo",
+       "tooltip-pt-mytalk": "Wokasa bea",
+       "tooltip-pt-preferences": "Nea wope",
+       "tooltip-pt-watchlist": "Bebree kabea",
+       "tooltip-pt-mycontris": "Wonom a woboayen",
+       "tooltip-pt-logout": "Pue",
+       "tooltip-ca-watch": "Fa wei ka nnema wo hwe so",
+       "tooltip-summary": "Bo no tofa"
+}
index 598df5f..6d2d010 100644 (file)
        "qbmyoptions": "Мээң арыннарым",
        "faq": "Бо-ла салыр айтырыглар (БлСА)",
        "faqpage": "Project:БлСА",
-       "vector-action-addsection": "Кол сөстү немелээри",
-       "vector-action-delete": "Ырадыры",
-       "vector-action-move": "Шимчээри",
-       "vector-action-protect": "Камгалаары",
-       "vector-action-undelete": "Эгидер",
-       "vector-action-unprotect": "Камгалалды өскертири",
-       "vector-view-create": "Чаяары",
-       "vector-view-edit": "Эдер",
-       "vector-view-history": "Төөгүнү көөрү",
-       "vector-view-view": "Номчуур",
-       "vector-view-viewsource": "Дөзү бижиин көөрү",
        "actions": "Кылыглар",
        "namespaces": "Аттар делгемнери",
        "variants": "Бир янзы",
        "tooltip-summary": "Кысказы-биле бижиңер",
        "anonymous": "{{grammar:genitive|{{SITENAME}}}} адыжок {{PLURAL:$1|киржикчизи}}",
        "pageinfo-toolboxlink": "Арын дугайында медээлел",
-       "skinname-monobook": "МоноБук",
-       "skinname-vector": "Вектор",
        "filedelete-missing": "«$1» деп файл чок, ынчангаш ол ап калдынмас.",
        "previousdiff": "← Артык эрги үндүрери",
        "nextdiff": "Артык чаа үндүрери →",
diff --git a/languages/i18n/tzm.json b/languages/i18n/tzm.json
new file mode 100644 (file)
index 0000000..bc5be58
--- /dev/null
@@ -0,0 +1,611 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Moha",
+                       "Tifinaghes"
+               ]
+       },
+       "underline-always": "ⴷⴰⵢⵎⴰⵏ",
+       "underline-never": "ⵙⵙⵏⵜⵉ",
+       "editfont-sansserif": "ⵡⴰⵔ ⴰⵙⴽⴽⵉⵍ serif",
+       "editfont-serif": "ⴰⵙⴽⴽⵉⵍ ⵏ Serif",
+       "sunday": "ⴰⵙⴰⵎⴰⵙ",
+       "monday": "ⴰⵢⵏⴰⵙ",
+       "tuesday": "ⴰⵙⵉⵏⴰⵙ",
+       "wednesday": "ⴰⴽⵔⴰⵙ",
+       "thursday": "ⴰⴽⵡⴰⵙ",
+       "friday": "ⴰⵙⵉⵎⵡⴰⵙ",
+       "saturday": "ⴰⵙⵉⴹⵢⴰⵙ",
+       "sun": "ⴰⵙⴰⵎⴰⵙ",
+       "mon": "ⴰⵙⵉⵏⴰⵙ",
+       "tue": "ⴰⴽⵔⴰⵙ",
+       "wed": "ⴰⴽⵡⴰⵙ",
+       "thu": "ⴰⴽⵡⴰⵙ",
+       "fri": "ⴰⵙⵉⵎⵡⴰⵙ",
+       "sat": "ⴰⵙⵉⴹⵢⴰⵙ",
+       "january": "ⵢⵏⵏⴰⵢⵔ",
+       "february": "ⴱⵕⴰⵢⵔ",
+       "march": "ⵎⴰⵔⵙ",
+       "april": "ⵉⴱⵔⵉⵍ",
+       "may_long": "ⵎⴰⵢⵢⵓ",
+       "june": "ⵢⵓⵏⵢⵓ",
+       "july": "ⵢⵓⵍⵢⵓ",
+       "august": "ⵖⵓⵛⵜ",
+       "september": "ⵛⵓⵜⴰⵏⴱⵉⵔ",
+       "october": "ⴽⵟⵓⴱⵔ",
+       "november": "ⵏⵓⵡⴰⵏⴱⵉⵔ",
+       "december": "ⴷⵓⵊⴰⵏⴱⵉⵔ",
+       "january-gen": "ⵢⵏⵏⴰⵢⵔ",
+       "february-gen": "ⴱⵕⴰⵢⵔ",
+       "march-gen": "ⵎⴰⵔⵙ",
+       "april-gen": "ⵉⴱⵔⵉⵍ",
+       "may-gen": "ⵎⴰⵢⵢⵓ",
+       "june-gen": "ⵢⵓⵏⵢⵓ",
+       "july-gen": "ⵢⵓⵍⵢⵓ",
+       "august-gen": "ⵖⵓⵛⵜ",
+       "september-gen": "ⵛⵓⵜⴰⵏⴱⵉⵔ",
+       "october-gen": "ⴽⵟⵓⴱⵔ",
+       "november-gen": "ⵏⵓⵡⴰⵏⴱⵉⵔ",
+       "december-gen": "ⴷⵓⵊⴰⵏⴱⵉⵔ",
+       "jan": "ⵢⵏⵏⴰⵢⵔ",
+       "feb": "ⴱⵕⴰⵢⵔ",
+       "mar": "ⵎⴰⵔⵙ",
+       "apr": "ⵉⴱⵔⵉⵍ",
+       "may": "ⵎⴰⵢⵢⵓ",
+       "jun": "ⵢⵓⵏⵢⵓ",
+       "jul": "ⵢⵓⵍⵢⵓⵣ",
+       "aug": "ⵖⵓⵛⵜ",
+       "sep": "ⵛⵓⵜⴰⵏⴱⵉⵔ",
+       "oct": "ⴽⵟⵓⴱⵔ",
+       "nov": "ⵏⵓⵡⴰⵏⴱⵉⵔ",
+       "dec": "ⴷⵓⵊⴰⵏⴱⵉⵔ",
+       "february-date": "ⴱⵕⴰⵢⵔ $1",
+       "march-date": "ⵎⴰⵔⵙ $1",
+       "pagecategories": "{{PLURAL:$1|ⵜⴰⴳⴳⴰⵢⵜ|ⵜⴰⴳⴳⴰⵢⵉⵏ}}",
+       "category_header": "ⵜⵉⵙⵏⵉⵡⵉⵏ ⵏ ⵜⴰⴳⴳⴰⵢⵜ \"$1\"",
+       "categoryviewer-pagedlinks": "($1) ($2)",
+       "about": "ⵅⴼ",
+       "newwindow": "(ⴰⴷ ⵜⵏⵏⵓⵔⵣⵎⴷ ⴷⵉ ⵓⵙⴽⵙⵍ ⴰⵎⴰⵢⵏⵓ)",
+       "cancel": "ⵓⵖⴰⵍ",
+       "moredotdotdot": "ⵓⴳⴰⵔ...",
+       "mypage": "ⵜⴰⵙⵏⴰ",
+       "mytalk": "ⴰⵎⵢⴰⵏⵏⴰⵏ",
+       "navigation": "ⴰⵎⵢⴰⵡⴰⴹ",
+       "and": "&#32;ⴷ",
+       "qbfind": "ⴰⴼ",
+       "qbbrowse": "ⴰⵎⵢⴰⵡⴰⴹ",
+       "qbedit": "ⴱⴷⴷⴻⵍ",
+       "qbpageoptions": "ⵜⴰⵙⵏⴰ ⴰⴷ",
+       "qbmyoptions": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⵉⵏⵓ",
+       "faq": "ⵉⵙⵇⵙⵉⵜⵏ",
+       "faqpage": "Project:ⵉⵙⵇⵙⵉⵜⵏ",
+       "actions": "ⵉⵎⵢⴰⴳⵏ",
+       "variants": "ⵉⵏⴱⴷⴷⴻⵍⵏ",
+       "errorpagetitle": "Error",
+       "returnto": "ⴰⵖⵓⵍ ⵖⵔ $1.",
+       "tagline": "ⵙⴳ {{SITENAME}}",
+       "help": "ⵜⵉⵡⵉⵙⵉ",
+       "search": "ⴰⵔⵣⵣⵓ",
+       "searchbutton": "ⴰⵔⵣⵣⵓ",
+       "go": "ⴷⴷⵓ",
+       "searcharticle": "ⴷⴷⵓ",
+       "history": "ⴰⵎⵣⵔⵓⵢ ⵏ ⵜⴰⵙⵏⴰ",
+       "history_short": "ⴰⵎⵣⵔⵓⵢ",
+       "permalink": "ⴰⵣⴷⴰⵢ ⵏ ⴱⴻⴷⴷⴰ",
+       "print": "ⵙⵙⵉⴳⵣ",
+       "view": "ⵥⵕ",
+       "edit": "ⴱⴷⴷⴻⵍ",
+       "create": "ⴰⵔⴰ",
+       "editthispage": "ⴱⴷⴷⵍ ⵜⴰⵙⵏⴰ ⴰⴷ",
+       "create-this-page": "ⴰⵔⴰ ⵜⴰⵙⵏⴰ ⴰⴳⵉ",
+       "delete": "ⵙⴼⴹ",
+       "protect": "ⵜⴰⵙⵜⴰⵏⵜ",
+       "protect_change": "ⴱⴷⴷⴻⵍ",
+       "unprotect": "ⴱⴷⴷⴻⵍ ⵜⴰⵙⵜⴰⵏⵜ",
+       "newpage": "ⵜⴰⵙⵏⴰ ⵜⴰⵎⴰⵢⵏⵓⵜ",
+       "talkpagelinktext": "ⴰⵎⵢⴰⵏⵏⴰⵏ",
+       "specialpage": "ⵜⴰⵙⵏⴰ ⵉⵥⵍⵉⵏ",
+       "personaltools": "ⵉⵎⴰⵙⵙⵏ ⵉⵏⵡ",
+       "postcomment": "ⵜⴰⴷⴰⵍⴰ ⵜⴰⵎⴰⵢⵏⵓⵜ",
+       "talk": "ⴰⵎⵢⴰⵏⵏⴰⵏ",
+       "views": "ⵥⵕ",
+       "toolbox": "ⵉⵎⴰⵙⵙⵏ",
+       "userpage": "ⵥⵕ ⵜⴰⵙⵏⴰ ⵓⵎⴷⴰⵏ",
+       "projectpage": "ⵥⵕ ⵜⴰⵙⵏⴰ ⵓⵙⵏⴼⴰⵔ",
+       "imagepage": "ⵥⵕ ⵜⴰⵙⵏⴰ ⵓⵙⴷⴰⵡ",
+       "mediawikipage": "ⵥⵕ ⵜⴰⴱⵔⴰⵜ ⵓⵙⴷⴰⵡ",
+       "templatepage": "ⵥⵕ ⵜⴰⵍⵖⴰ ⵏ ⵜⴰⵙⵏⴰ",
+       "viewhelppage": "ⵥⵕ ⵜⴰⵙⵏⴰ ⵏ ⵜⵡⵉⵙⵉ",
+       "categorypage": "ⵥⵕ ⵜⴰⵙⵏⴰ ⵏ ⵜⴰⴳⴳⴰⵢⵜ",
+       "viewtalkpage": "ⵥⵕ ⴰⵎⵢⴰⵏⵏⴰⵏ",
+       "otherlanguages": "ⵙ ⵜⵓⵜⵍⴰⵢⵉⵏ ⵏⵉⴹⵏ",
+       "protectedpage": "ⵜⴰⵙⵏⴰ ⵜⴰⵎⵙⵜⴰⵏⵜ",
+       "jumpto": "ⴷⴷⵓ ⵖⵔ:",
+       "jumptonavigation": "ⴰⵎⵢⴰⵡⴰⴹ",
+       "jumptosearch": "ⴰⵔⵣⵣⵓ",
+       "pool-errorunknown": "ⴰⵣⴳⴰⵍ ⵓⵔ ⵢⴻⵜⵜⵡⴰⵙⴰⵏ",
+       "aboutsite": "ⵅⴼ {{SITENAME}}",
+       "aboutpage": "Project:ⵅⴼ",
+       "currentevents": "ⵉⵏⵖⵎⵉⵙⵏ ⵉⵎⴰⵢⵏⵓⵜⵏ",
+       "disclaimers": "ⵡⴰⵔ ⵜⴰⵎⴰⵙⴰⵢⵜ",
+       "edithelp": "ⵜⵉⵡⵉⵙⵉ ⵏ ⵓⴱⴷⴷⴻⵍ",
+       "mainpage": "ⴰⵙⵏⵓⴱⴳ",
+       "mainpage-description": "ⴰⵙⵏⵓⴱⴳ",
+       "policy-url": "Project:ⵜⴰⵙⵔⵜⵉⵜ",
+       "portal": "ⴰⴳⴳⵓⵔ ⵏ ⵡⴰⵎⵓⵏ",
+       "portal-url": "Project:ⵜⴰⴳⴳⵓⵔⵜ ⵏ ⵡⴰⵎⵓⵏ",
+       "privacy": "ⵜⴰⵙⵔⵜⵉⵜ ⵜⵓⵙⵍⵉⴳⵜ",
+       "privacypage": "Project:ⵜⴰⵙⵔⵜⵉⵜ ⵜⵓⵙⵍⵉⴳⵜ",
+       "badaccess": "ⴰⵣⴳⴰⵍ ⴳ ⵓⵙⵙⵓⵔⴼ",
+       "ok": "ⵡⴰⵅⵅⴰ",
+       "pagetitle": "$1 - {{SITENAME}}",
+       "pagetitle-view-mainpage": "{{SITENAME}}",
+       "backlinksubtitle": "← $1",
+       "youhavenewmessages": "ⵜⵍⵍⴰ ⵖⵓⵔⴽ $1 ($2).",
+       "editsection": "ⴱⴷⴷⴻⵍ",
+       "editold": "ⴱⴷⴷⴻⵍ",
+       "viewsourceold": "ⵥⵕ ⴰⵖⴱⴰⵍⵓ",
+       "editlink": "ⴱⴷⴷⴻⵍ",
+       "viewsourcelink": "ⵥⵕ ⴰⵖⴱⴰⵍⵓ",
+       "editsectionhint": "ⴱⴷⴷⴻⵍ ⵜⴰⴷⴰⵍⴰ: $1",
+       "toc": "ⴰⴳⴱⵓⵔ",
+       "showtoc": "ⵥⵕ",
+       "hidetoc": "ⵃⴱⵓ",
+       "viewdeleted": "ⵥⵕ $1?",
+       "feedlinks": "Feed:",
+       "site-rss-feed": "\"$1\" RSS feed",
+       "site-atom-feed": "$1 ⵓⵜⵓⵎ ⵏ feed",
+       "page-rss-feed": "\"$1\" RSS feed",
+       "feed-atom": "ⴰⵜⵓⵎ",
+       "feed-rss": "RSS",
+       "red-link-title": "$1 (ⵜⴰⵙⵏⴰ ⵓⵔ ⵜⵍⵍⴰ)",
+       "nstab-main": "ⵜⴰⵙⵏⴰ",
+       "nstab-user": "ⴰⵎⴷⴰⵏ ⵏ ⵜⴰⵙⵏⴰ",
+       "nstab-media": "ⵜⴰⵙⵏⴰ ⵏ ⵎⵉⴷⵢⴰ",
+       "nstab-special": "ⵜⴰⵙⵏⴰ ⵉⵥⵍⵉⵏ",
+       "nstab-project": "ⵜⴰⵙⵏⴰ ⵓⵙⵏⴼⴰⵔ",
+       "nstab-image": "ⴰⵙⴷⴰⵡ",
+       "nstab-mediawiki": "ⵜⴰⴱⵔⴰⵜ",
+       "nstab-template": "ⵜⴰⵍⵖⴰ",
+       "nstab-help": "ⵜⴰⵙⵏⴰ ⵏ ⵜⵡⵉⵙⵉ",
+       "nstab-category": "ⵜⴰⴳⴳⴰⵢⵜ",
+       "error": "ⴰⵣⴳⵍ",
+       "internalerror": "ⴰⵣⴳⵍ ⴰⴳⵯⵏⵙⴰⵏ",
+       "internalerror_info": "ⴰⵣⴳⵍ ⴰⴳⵯⵏⵙⴰⵏ :$1",
+       "filedeleteerror": "ⵓⵔ ⵉⵎⴽⵏ ⵓⴽⵓⵙ ⵓⵙⴷⴰⵡ \"$1\".",
+       "badtitle": "ⴰⵣⵡⵉⵍ ⵓⵔ ⵢⴻⵥⵉⵍ",
+       "viewsource": "ⵥⵕ ⴰⵖⴱⴰⵍⵓ",
+       "viewsource-title": "ⵥⵕ ⴰⵖⴱⴰⵍⵓ ⵏ $1",
+       "exception-nologin": "ⵓⵔ ⵜⴽⵛⵎⴷ",
+       "userlogin-yourname": "ⴰⵙⵙⴰⵖ",
+       "yourpassword": "ⵜⴰⵡⴰⵍⵜ ⵓⵙⵉⴽⵍ:",
+       "yourpasswordagain": "ⴰⵍⵙ ⵜⴰⵡⴰⵍⵜ ⵓⵙⵉⴽⵍ:",
+       "login": "ⴽⵛⵎ",
+       "nav-login-createaccount": "ⴽⵛⵎ/ⴰⵙⵓⵙⵔ",
+       "userloginnocreate": "ⴽⵛⵎ",
+       "logout": "ⵓⴼⵓⵖ",
+       "userlogout": "ⵓⴼⵓⵖ",
+       "nologinlink": "ⴰⵔⴰ ⴰⵙⴷⴰⵡ ⴰⵎⴰⵢⵏⵓ",
+       "createaccount": "ⵙⴽⵔ ⴰⵙⴷⴰⵡ ⴰⵎⴰⵢⵏⵓ",
+       "gotaccountlink": "ⴽⵛⵎ",
+       "createaccountmail": "ⵙ ⵓⵎⵢⴰⵣⴰⵏ ⴰⵍⵉⴽⵜⵔⵓⵏⵉ",
+       "createaccountreason": "ⴰⵙⵔⴰⴳ",
+       "createacct-reason": "ⴰⵙⵔⴰⴳ",
+       "loginerror": "ⴰⵣⴳⵍ ⴳ ⵓⴽⵛⵛⵓⵎ",
+       "nocookiesforlogin": "{{int:nocookieslogin}}",
+       "mailmypassword": "ⵜⴰⵡⴰⵍⵜ ⵓⵙⵉⴽⵍ ⵏ E-mail",
+       "loginlanguagelabel": "ⵜⵓⵜⵍⴰⵢⵜ: $1",
+       "changepassword": "ⴱⴷⴷⴻⵍ ⵜⴰⵡⴰⵍⵜ ⵓⵙⵉⴽⵍ",
+       "resetpass_text": "<!-- ⵔⵏⵓ ⴰⴹⵔⵉⵙ ⵖⵉ -->",
+       "oldpassword": "ⵜⴰⵡⴰⵍⵜ ⵓⵙⵉⴽⵍ ⵜⴰⵣⴰⵢⴽⵓⵜ",
+       "newpassword": "ⵜⴰⵡⴰⵍⵜ ⵓⵙⵉⴽⵍ ⵜⴰⵎⴰⵢⵏⵓⵜ:",
+       "retypenew": "ⴰⵍⵙ ⵜⴰⵡⴰⵍⵜ ⵓⵙⵉⴽⵍ ⵜⴰⵎⴰⵢⵏⵓⵜ:",
+       "resetpass-submit-loggedin": "ⴱⴷⴷⴻⵍ ⵜⴰⵡⴰⵍⵜ ⵓⵙⵉⴽⵍ",
+       "passwordreset": "ⴰⵍⵙ ⵜⴰⵡⴰⵍⵜ ⵓⵙⵉⴽⵍ",
+       "passwordreset-username": "ⴰⵙⵙⴰⵖ ⵓⵎⴷⴰⵏ:",
+       "passwordreset-domain": "ⴰⵙⵡⵉⵔ:",
+       "changeemail-none": "(ⵡⴰⵔ)",
+       "changeemail-submit": "ⴱⴷⴷⴻⵍ ⴰⵎⵢⴰⵣⴰⵍ ⴰⵍⵉⴽⵜⵔⵓⵏⵉ",
+       "resettokens-tokens": "ⵜⵉⵙⵓⵔⴰ:",
+       "resettokens-done": "ⴱⴷⴷⴻⵍ ⵜⵉⵙⵓⵔⴰ",
+       "bold_sample": "Bold text",
+       "bold_tip": "Bold text",
+       "italic_sample": "Italic text",
+       "italic_tip": "Italic text",
+       "link_sample": "ⴰⵣⵡⵉⵍ ⵏ ⵓⵣⴷⴰⵢ",
+       "link_tip": "ⴰⵣⴷⴰⵢ ⵏ ⵓⴳⵏⵙⵓ",
+       "extlink_sample": "http://www.example.com ⴰⵣⵡⵉⵍ ⵓⵣⴷⴰⵢ",
+       "image_sample": "Example.jpg",
+       "media_sample": "Example.ogg",
+       "media_tip": "ⴰⵣⴷⴰⵢ ⵓⵙⴷⴰⵡ",
+       "savearticle": "ⵣⵎⵎⴻⵎ ⵜⴰⵙⵏⴰ",
+       "preview": "ⴰⵥⵕⵉ ⴰⵎⵣⵡⴰⵔⵓ",
+       "showpreview": "ⵥⵕ",
+       "showdiff": "ⵥⵕ ⵉⴱⴷⴷⴻⵍⵏ",
+       "loginreqlink": "ⴽⵛⵎ",
+       "newarticle": "(ⴰⵎⴰⵢⵏⵓ)",
+       "note": "'''ⵜⴰⵏⵏⴰⵢⵜ:'''",
+       "editing": "ⴰⴱⴷⴷⴻⵍ $1",
+       "yourtext": "ⴰⴹⵕⵉⵙ ⵏⵏⴽ",
+       "template-protected": "(protected)",
+       "edittools-upload": "-",
+       "nocreate-loggedin": "ⵓⵔ ⵖⵓⵔⴽ ⵜⵓⵔⴰⴳⵜ ⵏ ⴰⵙⵏⵓⵍⴼⵓ ⵏ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵜⵉⵎⴰⵢⵏⵓⵜⵉⵏ.",
+       "content-model-wikitext": "ⵡⵉⴽⵉⴰⴹⵔⵉⵙ",
+       "content-model-javascript": "JavaScript",
+       "content-model-css": "CSS",
+       "nextrevision": "ⵜⴰⵙⵉⵡⵍⵜ ⵜⴰⵎⴰⵢⵏⵓⵜ",
+       "cur": "ⵡⵉⵏ ⵖⵉⵍⴰ",
+       "last": "ⴰⵎⵣⵡⴰⵔⵓ",
+       "page_first": "ⵜⴰⵎⵣⵡⴰⵔⵓⵜ",
+       "page_last": "ⵜⴰⵏⴳⴳⴰⵔⵓⵜ",
+       "history-show-deleted": "ⵙⴼⴹ ⵡⴰⵀⴰ",
+       "histfirst": "ⴰⵎⵣⵡⴰⵔⵓ",
+       "histlast": "ⴰⵎⴰⵢⵏⵓ",
+       "historyempty": "(ⵓⵔ ⴷⵉⵙ ⴰⵎⵢⴰ)",
+       "history-feed-item-nocomment": "$1 ⴷⵉ $2",
+       "rev-showdeleted": "ⵥⵕ",
+       "revdelete-show-file-submit": "ⵢⴰⵀ",
+       "revdelete-radio-same": "(ⵡⴰⵔ ⴰⴱⴷⴷⴻⵍ)",
+       "revdelete-radio-set": "ⵢⴰⵀ",
+       "revdelete-radio-unset": "ⵓⵀ ⵓ",
+       "revdelete-log": "ⴰⵙⵔⴰⴳ:",
+       "pagehist": "ⴰⵎⵣⵔⵓⵢ ⵏ ⵜⴰⵙⵏⴰ",
+       "revdelete-reasonotherlist": "ⴰⵙⵔⴰⴳ ⵏⵉⴹⵏ",
+       "mergehistory-from": "ⵜⴰⵙⵏⴰ ⴰⵖⴱⴰⵍⵓ:",
+       "mergehistory-into": "ⴰⵡⵜⵜⴰ ⵏ ⵜⴰⵙⵏⴰ:",
+       "mergehistory-reason": "ⴰⵙⵔⴰⴳ:",
+       "lineno": "ⴰⴹⵕⵕⴰⵙ $1:",
+       "editundo": "ⵓⵖⴰⵍ",
+       "searchresults": "ⵜⴰⵢⴰⴼⵓⵜ ⵏ ⵓⵔⵣⵣⵓ",
+       "searchresults-title": "ⵜⴰⵢⴰⴼⵓⵜ ⵓⵔⵣⵣⵓ ⵅⴼ \"$1\"",
+       "prevn": "ⴰⵎⵣⵡⴰⵔⵓ {{PLURAL:$1|$1}}",
+       "nextn": "ⴰⵎⴹⴼⵉⵔ {{PLURAL:$1|$1}}",
+       "prevn-title": "ⴰⵎⵣⵡⴰⵔⵓ $1 {{PLURAL:$1|ⵜⴰⵢⴰⴼⵓⵜ|ⵜⵉⵢⴰⴼⵓⵜⵉⵏ}}",
+       "nextn-title": "ⴰⵎⴹⴼⵉⵔ $1 {{PLURAL:$1|ⵜⴰⵢⴰⴼⵓⵜ|ⵜⵉⵢⴰⴼⵓⵜⵉⵏ}}",
+       "shown-title": "ⵥⵕ $1 {{PLURAL:$1|ⵜⴰⵢⴰⴼⵓⵜ|ⵜⵉⵢⴰⴼⵓⵜⵉⵏ}} ⵉ ⴽⵓ ⵜⴰⵙⵏⴰ",
+       "viewprevnext": "ⵥⵕ ($1 {{int:pipe-separator}} $2) ($3).",
+       "searchprofile-images": "ⵎⵓⵍⵜⵉⵎⵉⴷⵢⴰ",
+       "searchprofile-everything": "ⵎⴰⵕⵕⴰ (ⴰⴽⴽ)",
+       "searchprofile-articles-tooltip": "ⵔⵣⵣⵓ ⴷⵉ $1",
+       "searchprofile-images-tooltip": "ⵔⵣⵣⵓ ⵅⴼ ⵜⵡⵍⴰⴼⵉⵏ",
+       "search-result-size": "$1 ({{PLURAL:$2|1 ⵜⴰⴳⵓⵔⵉ|$2 ⵜⵉⴳⵓⵔⵉⵡⵉⵏ}})",
+       "search-section": "(ⵜⴰⴷⴰⵍⴰ $1)",
+       "search-interwiki-default": "$1 ⵜⴰⵢⴰⴼⵓⵜ:",
+       "search-interwiki-more": "(ⵓⴳⴰⵔ)",
+       "search-relatedarticle": "ⵜⴰⵎⵣⴷⴰⵢⵜ",
+       "searchrelated": "ⵜⴰⵎⵣⴷⴰⵢⵜ",
+       "searchall": "ⵎⴰⵕⵕⴰ",
+       "showingresultsheader": "{{PLURAL:$5|ⵜⴰⵢⴰⴼⵓⵜ '''$1'''|ⵜⵉⵢⴰⴼⵓⵜⵉⵏ '''$1–$2'''}} ⵙⴳ '''$3''' ⵉ '''$4'''",
+       "powersearch-toggleall": "ⵎⴰⵕⵕⴰ",
+       "powersearch-togglenone": "ⴰⵎⵢⴰ (ⵓⵍⴰⵛ)",
+       "search-external": "ⴰⵔⵣⵣⵓ ⴰⴱⵕⵕⴰⵏⵉ",
+       "mypreferences": "Preferences",
+       "prefs-skin": "ⵓⴷⵎ",
+       "prefs-personal": "ⴰⵙⴷⴰⵡ ⵏ ⵓⵎⴰⴷⴰⵏ",
+       "prefs-rc": "ⵉⴱⴷⴷⴻⵍⵏ ⵉⵏⴳⴳⵓⵔⴰ",
+       "prefs-watchlist": "ⵓⵎⵓⵖ ⵏ ⵓⵙⵎⴰⵇⵇⵍ",
+       "prefs-resetpass": "ⴱⴷⴷⴻⵍ ⵜⴰⵡⴰⵍⵜ ⵓⵙⵉⴽⵍ",
+       "prefs-changeemail": "ⴱⴷⴷⴻⵍ ⴰⵎⵢⴰⵣⴰⵏ ⴰⵍⵉⴽⵜⵔⵓⵏⵉ",
+       "saveprefs": "ⵣⵎⵎⴻⵎ",
+       "prefs-editing": "ⴰⵙⴷⵔⴼ",
+       "columns": "ⵉⵏⴱⴷⴰⴷⵏ:",
+       "searchresultshead": "ⴰⵔⵣⵣⵓ",
+       "timezoneregion-africa": "ⵉⴼⵔⵉⵇⵢⴰ",
+       "timezoneregion-america": "ⴰⵎⵔⵉⴽⴰ",
+       "timezoneregion-antarctica": "ⴰⵏⵜⴰⵔⴽⵜⵉⴽⴰ",
+       "timezoneregion-asia": "ⴰⵙⵢⴰ",
+       "timezoneregion-atlantic": "ⴰⴳⴰⵔⴰⵡ ⴰⵟⵍⴰⵏⵟⵉ",
+       "timezoneregion-australia": "ⵓⵙⵜⵔⴰⵍⵢⴰ",
+       "timezoneregion-europe": "ⵜⵓⵔⵓⴼⵜ (Europe)",
+       "timezoneregion-indian": "ⴰⴳⴰⵔⴰⵡ ⴰⵀⵉⵏⴷⵉ",
+       "timezoneregion-pacific": "ⴰⴳⴰⵔⴰⵡ ⴰⵎⵍⵡⵉ",
+       "prefs-searchoptions": "ⴰⵔⵣⵣⵓ",
+       "prefs-files": "ⵉⵙⴷⴰⵡⵏ",
+       "prefs-custom-css": "Custom CSS",
+       "youremail": "ⴰⵎⵢⴰⵣⴰⵏ ⴰⵍⵉⴽⵜⵔⵓⵏⵉ",
+       "yourrealname": "ⴰⵙⵙⴰⵖ ⵏ ⵜⵉⴷⵜ:",
+       "yourlanguage": "ⵜⵓⵜⵍⴰⵢⵜ:",
+       "yourgender": "ⵓⵣⵓⴼ:",
+       "gender-male": "ⴰⵎⴰⵢ",
+       "gender-female": "ⵜⴰⵡⵜⵎⵜ",
+       "email": "ⴰⵎⵢⴰⵣⴰⵏ ⴰⵍⵉⴽⵜⵔⵓⵏⵉ",
+       "prefs-info": "ⵉⵏⵖⵎⵉⵙⵏ ⵉⴷⵙⵍⴰⵏⵏ",
+       "prefs-i18n": "ⵜⴰⵙⵓⵖⵍⵜ",
+       "prefs-signature": "Signature",
+       "prefs-dateformat": "ⴰⵏⴰⵡ ⵏ ⵡⴰⴽⵓⴷ",
+       "prefs-editor": "ⴰⵎⵙⴷⵔⴼ",
+       "prefs-preview": "ⴰⵥⵕⵉ ⴰⵎⵣⵡⴰⵔⵓ",
+       "prefs-tokenwatchlist": "ⵜⴰⵙⴰⵔⵓⵜ",
+       "userrights-groupsmember": "ⴰⴳⵎⴰⵎ ⴷⵉ:",
+       "userrights-irreversible-marker": "$1*",
+       "group": "ⵜⴰⵔⴰⴱⴱⵓⵜ:",
+       "group-sysop": "ⵉⵏⵎⵀⴰⵍⵏ ⵏ ⵓⴳⵔⴰⵡ",
+       "group-all": "(ⵎⴰⵕⵕⴰ)",
+       "group-user-member": "{{GENDER:$1|ⴰⴳⵎⴰⵎ}}",
+       "group-bot-member": "{{GENDER:$1|ⴰⵕⵓⴱⵓⵜ}}",
+       "group-sysop-member": "{{GENDER:$1|ⴰⵏⵎⵀ ⴰⵍ}}",
+       "grouppage-user": "{{ns:project}}:ⵉⴳⵎⴰⵎⵏ",
+       "right-delete": "ⴽⴽⵉⵙ ⵜⵉⵙⵏⴰⵡⵉⵏ",
+       "action-read": "ⵖⵔ ⵜⴰⵙⵏⴰ ⴰⴷ",
+       "action-edit": "ⴱⴷⴷⵍ ⵜⴰⵙⵏⴰ ⴰⴷ",
+       "action-delete": "ⴽⴽⵉⵙ ⵜⴰⵙⵏⴰ ⴰⴷ",
+       "action-sendemail": "ⴰⵣⵏ ⵜⵉⴱⵔⴰⵜⵉⵏ ⵏ e-mail",
+       "nchanges": "$1 {{PLURAL:$1|ⴰⴱⴷⴷⴻⵍ|ⵉⴱⴷⴷⴻⵍⵏ}}",
+       "recentchanges": "ⵉⴱⴷⴷⴻⵍⵏ ⵉⵏⴳⴳⵓⵔⴰ",
+       "rcshowhidemine": "$1 ⵉⴱⴷⴷⴻⵍⵏ ⵉⵏⵓ",
+       "diff": "ⵍⴼⵔⵇ",
+       "hist": "ⴰⵎⵣⵔⵓⵢ",
+       "hide": "ⵃⴱⵓ",
+       "show": "ⵥⵕ",
+       "minoreditletter": "ⵎ",
+       "newpageletter": "ⵏ",
+       "boteditletter": "ⴱ",
+       "unpatrolledletter": "!",
+       "rc_categories_any": "ⵎⴰⵏ",
+       "recentchangeslinked-toolbox": "ⵉⴱⴷⴷⴻⵍⵏ ⵖⵓⵔ ⵜⴰⵣⴷⴰⵢⵜ",
+       "recentchangeslinked-page": "ⴰⵙⵙⴰⵖ ⵏ ⵜⴰⵙⵏⴰ:",
+       "upload": "ⵣⴷⴻⵎ ⴰⵙⴷⴰⵡ",
+       "filename": "ⴰⵙⵙⴰⵖ ⵓⵙⴷⴰⵡ",
+       "filereuploadsummary": "ⵉⴱⴷⴷⴻⵍⵏ ⵏ ⵓⵙⴷⴰⵡ:",
+       "filesource": "ⴰⵖⴱⴰⵍⵓ:",
+       "savefile": "ⵣⵎⵎⴻⵎ ⴰⵙⴷⴰⵡ",
+       "upload-source": "ⴰⵖⴱⴰⵍⵓ ⵓⵙⴷⴰⵡ",
+       "sourcefilename": "ⴰⵖⴱⴰⵍⵓ ⵡⴰⵙⵙⴰⵖ ⵓⵙⴷⴰⵡ:",
+       "sourceurl": "ⴰⵖⴱⴰⵍⵓ ⵏ URL:",
+       "img-auth-accessdenied": "ⴰⵎⵢⴰⵡⴰⴹ ⵢⵓⴳⵉ",
+       "img-auth-nofile": "ⴰⵙⴷⴰⵡ \"$1\" ⴰⴷ ⵓⵔ ⵢⴻⵍⵍⴰ.",
+       "license-header": "ⵜⵓⵔⴰⴳⵜ",
+       "listfiles_search_for": "ⵔⵣⵣⵓ ⵅⴼ ⵡⴰⵙⵙⴰⵖ ⵏ ⵎⵉⴷⵢⴰ:",
+       "imgfile": "ⴰⵙⴷⴰⵡ",
+       "listfiles": "ⵓⵎⵓⵖ ⵏ ⵉⵙⴷⴰⵡⵏ",
+       "listfiles_thumb": "ⴰⵙⵙⵎⵥⵉⵢ",
+       "listfiles_date": "ⴰⴽⵓⴷ",
+       "listfiles_name": "ⴰⵙⵙⴰⵖ",
+       "listfiles_size": "Size",
+       "listfiles-latestversion-yes": "ⵢⴰⵀ",
+       "file-anchor-link": "ⴰⵙⴷⴰⵡ",
+       "filehist": "ⴰⵎⵣⵔⵓⵢ ⵏ ⵓⵙⴷⴰⵡ",
+       "filehist-deleteall": "ⴽⴽⵉⵙ ⵎⴰⵕⵕⴰ",
+       "filehist-deleteone": "ⵓⴽⵓⵙ",
+       "filehist-revert": "ⵙⵙⵓⵖⴰⵍ ⵖⵔ ⴰⵎⵣⵡⴰⵔⵓ",
+       "filehist-current": "ⵖⵉⵍⴰ",
+       "filehist-datetime": "ⴰⴽⵓⴷ/ⴰⵣⵎⵣ",
+       "filehist-thumb": "Thumbnail",
+       "filehist-user": "ⴰⵎⴷⴰⵏ",
+       "filehist-filesize": "ⵜⵉⴷⴷⵉ ⵓⵙⴷⴰⵡ",
+       "filehist-comment": "ⵜⴰⵏⵏⴰⵢⵜ",
+       "filepage-nofile": "ⵓⵔ ⵉⵍⵍⴰ ⵓⵙⴷⴰⵡ ⵙ ⵡⴰⵙⵙⴰⵖ ⴰⴷ/ⴰⴳⵉ.",
+       "shared-repo-from": "ⵙⴳ $1",
+       "filerevert-comment": "ⴰⵙⵔⴰⴳ:",
+       "filedelete": "ⴽⴽⵉⵙ $1",
+       "filedelete-legend": "ⴽⴽⴻⵙ ⴰⵙⴷⴰⵡ",
+       "filedelete-comment": "ⴰⵙⵔⴰⴳ:",
+       "filedelete-submit": "ⵓⴽⵓⵙ",
+       "mimesearch": "ⴰⵔⵣⵣⵓ ⵏ MIME",
+       "mimetype": "ⴰⵏⴰⵡ ⵓⵙⴷⴰⵡ:",
+       "statistics-pages": "ⵜⵉⵙⵏⴰⵡⵉⵏ",
+       "statistics-views-total": "ⵎⴰⵕⵕⴰ ⵉⵎⵥⵕⴰⵏ",
+       "brokenredirects-edit": "ⴱⴷⴷⴻⵍ",
+       "brokenredirects-delete": "ⵓⴽⵓⵙ",
+       "withoutinterwiki-submit": "ⵥⵕ",
+       "nbytes": "$1 {{PLURAL:$1|byte|bytes}}",
+       "ncategories": "$1 {{PLURAL:$1|ⵜⴰⴳⴳⴰⵢⵜ|ⵜⴰⴳⴳⴰⵢⵉⵏ}}",
+       "nviews": "$1 {{PLURAL:$1|ⵥⵕ|ⵥⵕ ⴰⴽⴽ}}",
+       "longpages": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⵎⵇⵇⴰⵔⵏⵜ",
+       "newpages": "ⵜⵉⵙⵏⵉⵡⵉⵏ ⵜⵉⵎⴰⵢⵏⵓⵜⵉⵏ",
+       "newpages-username": "ⴰⵙⵙⴰⵖ ⵓⵎⴷⴰⵏ:",
+       "move": "ⵙⵎⵓⵜⵜⵉ",
+       "notargettitle": "ⵡⴰⵔ ⴰⵡⵜⵜⴰⵙ",
+       "pager-newer-n": "{{PLURAL:$1|ⴰⵙⵎⴰⵢⵏⵓ|$1 ⵉⵙⵎⴰⵢⵏⵓⵜⵏ}}",
+       "booksources": "ⵉⵖⴱⵓⵍⴰ ⵏ ⵓⴷⵍⵉⵙ",
+       "booksources-search-legend": "ⵔⵣⵣⵓ ⵅⴼ ⵉⵖⴱⵓⵍⴰ ⵏ ⵉⴷⵍⵉⵙⵏ",
+       "booksources-isbn": "ISBN:",
+       "booksources-go": "ⴷⴷⵓ",
+       "allpages": "ⵎⴰⵕⵕⴰ ⵜⵉⵙⵏⴰⵡⵉⵏ",
+       "allarticles": "ⵎⴰⵕⵕⴰ ⵜⵉⵙⵏⴰⵡⵉⵏ",
+       "allpagessubmit": "ⴷⴷⵓ",
+       "allpagesprefix": "ⵥⵕ ⵜⵉⵙⵏⵉⵡⵉⵏ ⵏⵏⴰ ⵉⵣⵡⴰⵔⵏ ⵙ:",
+       "categories": "ⵜⴰⴳⴳⴰⵢⵉⵏ",
+       "linksearch-ok": "ⴰⵔⵣⵣⵓ",
+       "linksearch-line": "$1 ⵉⵣⴷⵉⴷ ⵙⴳ $2",
+       "listusers-submit": "ⵥⵕ",
+       "listusers-blocked": "(ⵉⴱⵍⵓⴽⵉ)",
+       "listgrouprights-group": "ⵜⴰⵔⴰⴱⴱⵓⵜ",
+       "listgrouprights-members": "(ⵓⵎⵓⵖ ⵏ ⵉⴳⵎⴰⵎⵏ)",
+       "emailuser": "ⴰⵣⵏ e-mail",
+       "emailfrom": "ⵙⴳ:",
+       "emailto": "ⴰⵔ:",
+       "emailmessage": "ⵜⴰⴱⵔⴰⵜ:",
+       "emailsend": "ⴰⵣⵏ",
+       "watchlist": "ⵓⵎⵓⵖ ⵏ ⵓⵙⵎⴰⵇⵇⵍ ⵉⵏⵓ",
+       "mywatchlist": "ⵓⵎⵓⵖ ⵏ ⵓⵙⵎⴰⵇⵇⵍ",
+       "watchlistfor2": "ⵉ $1 $2",
+       "watch": "ⵥⵕ",
+       "unwatch": "ⵙⴱⴻⴷⴷ ⵍⵄⵙⵙⴰ",
+       "wlshowlast": "ⵉⵥⵕⵉ ⵏⵉⴹⵏ $1 ⵜⴰⵔⴰⴳⵉⵏ $2 ⵓⵙⵙⴰⵏ $3",
+       "changed": "ⵜⴱⴷⴷⴻⵍⴷ",
+       "delete-legend": "ⵓⴽⵓⵙ",
+       "protectcomment": "ⴰⵙⵔⴰⴳ:",
+       "protect-othertime": "ⴰⵣⵎⵣ ⵏⵏⵉⴹⵏ:",
+       "protect-othertime-op": "ⴰⴽⵓⴷ ⵢⴰⴹⵏ",
+       "restriction-upload": "Upload",
+       "undeleteviewlink": "ⵥⵕ",
+       "undelete-search-submit": "ⴰⵔⵣⵣⵓ",
+       "undelete-show-file-submit": "ⵢⴰⵀ",
+       "blanknamespace": "(ⴰⵎⵣⵡⴰⵔⵓ)",
+       "mycontris": "ⴰⵎⴰⵡⴰⵙⵏ",
+       "contribsub2": "ⵉ $1 ($2)",
+       "uctop": "(ⴰⴼⵍⵍⴰ)",
+       "sp-contributions-newbies-sub": "ⵉ ⵉⵙⴷⴰⵡⵏ ⵉⵎⴰⵢⵏⵓⵜⵏ",
+       "sp-contributions-talk": "ⴰⵎⵢⴰⵏⵏⴰⵏ",
+       "sp-contributions-submit": "ⴰⵔⵣⵣⵓ",
+       "whatlinkshere": "ⵎⴰ ⵢⵣⴷⵉⵏ ⵖⵉ",
+       "whatlinkshere-title": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⵉⴷ ⵉⵣⴷⵢⴻⵏ ⵖⵔ  \"$1\"",
+       "whatlinkshere-page": "ⵜⴰⵙⵏⴰ:",
+       "isimage": "ⴰⵣⴷⴰⵢ ⵓⵙⴷⴰⵡ",
+       "whatlinkshere-links": "← ⵉⵣⴷⴰⵢⵏ",
+       "whatlinkshere-hidelinks": "$1 ⵉⵣⴷⴰⵢⵏ",
+       "whatlinkshere-hideimages": "$1 ⵉⵣⴷⴰⵢⵏ ⵏ ⵉⵙⴷⴰⵡⵏ",
+       "whatlinkshere-filters": "ⴰⵎⵙⵜⴰⵢ",
+       "blocklist-timestamp": "ⴰⴽⵓⴷ",
+       "blocklist-target": "ⴰⵡⵜⵜⴰⵙ",
+       "blocklist-reason": "ⴰⵙⵔⴰⴳ",
+       "blocklink": "ⵙⴳⴷⴰⵍ",
+       "contribslink": "ⵉⵎⵢⴰⵡⴰⵙⵏ",
+       "blocklogpage": "ⵣⵎⵎⵉⵎ ⴰⴳⴷⴰⵍ",
+       "movereason": "ⴰⵙⵔⴰⴳ:",
+       "export-addcat": "ⵔⵏⵓ",
+       "export-addns": "ⵔⵏⵓ",
+       "export-download": "ⵣⵎⵎⴻⵎ ⴰⵎ ⴰⵙⴷⴰⵡ",
+       "allmessagesname": "ⴰⵙⵙⴰⵖ",
+       "allmessages-filter-legend": "ⴰⵎⵙⵜⴰⵢ",
+       "allmessages-filter-all": "ⵎⴰⵕⵕⴰ",
+       "allmessages-language": "ⵜⵓⵜⵍⴰⵢⵜ:",
+       "allmessages-filter-submit": "ⴷⴷⵓ",
+       "thumbnail-more": "ⵙⵙⴻⵎⵖⵔ",
+       "import-upload-filename": "ⴰⵙⵙⴰⵖ ⵓⵙⴷⴰⵡ:",
+       "import-comment": "ⵜⴰⵏⵏⴰⵢⵜ:",
+       "tooltip-pt-mytalk": "ⵜⴰⵙⵏⴰ ⵓⵎⵙⴰⵡⴰⵍ ⵏⵏⴽ",
+       "tooltip-pt-mycontris": "ⵓⵎⵓⵖ ⵏ ⵜⵡⵉⵙⵉ ⵏⵏⴽ",
+       "tooltip-pt-logout": "ⵓⴼⵓⵖ",
+       "tooltip-search": "ⵔⵣⵣⵓ ⵅⴼ {{SITENAME}}",
+       "tooltip-search-fulltext": "ⵔⵣⵣⵓ ⴷⵉ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵅⴼ ⵓⴹⵕⵉⵙ ⴰⴷ",
+       "tooltip-p-logo": "ⴰⵙⵏⵓⴱⴳ",
+       "tooltip-n-mainpage": "ⵥⵕ ⴰⵙⵏⵓⴱⴳ",
+       "tooltip-n-mainpage-description": "ⵥⵕ ⴰⵙⵏⵓⴱⴳ",
+       "tooltip-n-portal": "ⵅⴼ ⵓⵙⵏⴼⴰⵔ, ⵎⵉⵏ ⵜⵣⵎⵎⴰⵔⴻⴷ ⴰⴷ ⵜⴻⴳⴳⴷ,ⵎⴰⵏⵉ ⵖⴰ ⵜⴰⴼⴷ ⵜⵉⵖⴰⵡⵙⵉⵡⵉⵏ",
+       "tooltip-n-recentchanges": "ⵓⵎⵓⵖ ⵏ ⵉⴱⴷⴷⵉⵍⴻⵏ ⵉⵏⴳⵓⵔⴰ ⴷⵉ ⵡⵉⴽⵉ",
+       "tooltip-n-help": "ⴰⴷⵖⴰⵔ ⴳⵎⵉ ⵖ ⵜⴰⴼⴷ",
+       "tooltip-t-whatlinkshere": "ⵓⵎⵓⵖ ⵏ ⵎⴰⵕⵕⴰ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵏ ⵡⵉⴽⵉ ⵉⵣⴷⴷⵉⵏ ⴷⴰ",
+       "tooltip-t-emailuser": "ⴰⵣⵏ email ⵉ ⵓⴼⴳⴰⵏ ⴰⴷ",
+       "tooltip-t-upload": "ⵣⴷⴻⵎ ⴰⵙⴷⴰⵡ",
+       "tooltip-t-specialpages": "ⵓⵎⵓⵖ ⵏ ⴰⴽⴽ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵉⵥⵍⵉⵏ",
+       "tooltip-t-permalink": "ⴰⵣⴷⴰⵢ ⵏ ⴱⴻⴷⴷⴰ ⵉ ⵓⵍⵇⵎ ⵙⴳ ⵜⴰⵙⵏⴰ",
+       "tooltip-ca-nstab-media": "ⵥⵕ ⵜⴰⵙⵏⴰ ⵏ ⵎⵉⴷⵢⴰ",
+       "tooltip-ca-nstab-project": "ⵥⵕ ⵜⴰⵙⵏⴰ ⵓⵙⵏⴼⴰⵔ",
+       "tooltip-ca-nstab-image": "ⵥⵕ ⵜⴰⵙⵏⴰ ⵏ ⵓⵙⴷⴰⵡ",
+       "tooltip-ca-nstab-template": "ⵥⵕ ⵜⴰⵍⵖⴰ",
+       "tooltip-ca-nstab-category": "ⵥⵕ ⵜⴰⵙⵏⴰ ⵏ ⵜⴰⴳⴳⴰⵢⵜ",
+       "pageinfo-display-title": "ⵥⵕ ⴰⵣⵡⵉⵍ",
+       "pageinfo-article-id": "ⵓⵟⵟⵓⵏ ⵏ ⵜⴰⵙⵏⴰ (ID)",
+       "pageinfo-redirects-value": "$1",
+       "pageinfo-lasttime": "ⴰⵎⵣⵔⵓⵢ ⵓⴱⴷⴷⴻⵍ ⴰⵏⴳⴳⴰⵔⵓ",
+       "pageinfo-edits": "ⵓⵟⵟⵓⵏ ⵏ ⵉⴱⴷⴷⴻⵍⵏ",
+       "pageinfo-toolboxlink": "ⵉⵏⵖⵎⵉⵙⵏ ⵅⴼ ⵜⴰⵙⵏⴰ ⴰⴳⵉ (ⴰⴷ)",
+       "pageinfo-redirectsto-info": "ⵉⵏⵖⵎⵉⵙⵏ",
+       "pageinfo-contentpage-yes": "ⵢⴰⵀ",
+       "pageinfo-protect-cascading-yes": "ⵢⴰⵀ",
+       "ilsubmit": "ⴰⵔⵣⵣⵓ",
+       "bydate": "ⵙ ⵓⵣⵎⵣ",
+       "seconds-abbrev": "$1 s",
+       "minutes-abbrev": "$1 min",
+       "hours-abbrev": "$1 h",
+       "minutes": "{{PLURAL:$1|$1 ⵜⵓⵙⴷⴰⴷⵜ|$1 ⵜⵓⵙⴷⴰⴷⵉⵏ}}",
+       "hours": "{{PLURAL:$1|$1 ⵜⴰⵙⵔⴰⴳⵜ|$1 ⵜⵉⵙⵔⴰⴳⵉⵏ}}",
+       "days": "{{PLURAL:$1|$1 ⴰⵙⵙ|$1 ⵓⵙⵙⴰⵏ}}",
+       "months": "{{PLURAL:$1|$1 ⴰⵢⵢⵓⵔ|$1 ⴰⵢⵢⵓⵔⵏ}}",
+       "ago": "$1 ⴷⴰⵜ",
+       "just-now": "ⵖⵉⵍⴰ ⵚⴰⴼⵉ",
+       "variantname-zh-hant": "hant",
+       "variantname-zh-cn": "cn",
+       "variantname-zh": "zh",
+       "variantname-ku-arab": "ku-Arab",
+       "variantname-tg": "tg",
+       "exif-imagedescription": "ⴰⵣⵡⵍ ⵏ ⵜⵡⵍⴰⴼⵜ",
+       "exif-model": "ⴰⵏⴰⵡ ⵏ ⵍⴽⴰⵎⵉⵔⴰ",
+       "exif-exposuretime-format": "$1 ⵜⴰⵙⵏⴰⵜ ($2)",
+       "exif-flash": "Flash",
+       "exif-filesource": "ⴰⵖⴱⴰⵍⵓ ⵓⵙⴷⴰⵡ",
+       "exif-scenetype": "ⴰⵏⴰⵡ ⵏ ⵉⵏⵥⵔⵉ",
+       "exif-gpsdatestamp": "GPS ⴰⵎⵣⵔⵓⵢ",
+       "exif-jpegfilecomment": "ⵜⴰⵏⵏⴰⵢⵜ ⵓⵙⴷⴰⵡ JPEG",
+       "exif-keywords": "ⵜⵉⴳⵓⵔⵉⵡⵉⵏ ⵏ ⵜⵙⴰⵔⵓⵜ",
+       "exif-objectname": "ⴰⵣⵡⵉⵍ ⴰⴳⵯⵣⵣⴰⵍ",
+       "exif-headline": "ⴰⵣⵡⵉⵍ",
+       "exif-source": "ⴰⵖⴱⴰⵍⵓ",
+       "exif-urgency": "ⴰⵎⴰⵢⵏⵓ",
+       "exif-fixtureidentifier": "ⴰⵙⵙⴰⵖ ⵓⴼⵔⴷⵉⵙ",
+       "exif-contact": "ⵉⵏⵖⵎⵉⵙⵏ ⵓⵎⵢⴰⵡⴰⴹ",
+       "exif-writer": "ⴰⵎⴰⵔⴰ",
+       "exif-languagecode": "ⵜⵓⵜⵍⴰⵢⵜ",
+       "exif-iimcategory": "ⵜⴰⴳⴳⴰⵢⵜ",
+       "exif-label": "ⵜⴰⵎⴰⵜⴰⵔⵜ",
+       "exif-copyrighted": "ⴰⴷⴷⴰⵏ ⵏ ⵉⵣⵔⴼⴰⵏ ⵓⵎⴼⵙⴰⵔ",
+       "exif-giffilecomment": "ⵜⴰⵏⵏⴰⵢⵜ ⵓⵙⴷⴰⵡ GIF",
+       "exif-exposureprogram-1": "ⴰⵎⴰⴼⵓⵙ",
+       "exif-meteringmode-1": "ⴰⵏⴰⵎⵎⴰⵙ",
+       "exif-lightsource-0": "ⵡⴰⵔ ⴰⵙⵙⴰⵖ",
+       "exif-lightsource-1": "ⵜⵉⴼⴰⵡⵜ ⵏ ⵡⴰⵙⵙ",
+       "exif-lightsource-4": "ⴼⵍⴰⵛ",
+       "exif-flash-fired-1": "Flash ⵉⵙⵙⵏⵜⴰ",
+       "exif-scenecapturetype-0": "ⴰⵜⵔⴰⵔ",
+       "exif-gaincontrol-0": "ⵓⵍⴰⵛ (ⴰⵎⵢⴰ)",
+       "exif-subjectdistancerange-1": "ⵎⴰⴽⵔⵓ",
+       "exif-gpsspeed-m": "ⵎⵉⵍ ⴳ ⵜⵙⵔⴰⴳⵜ",
+       "exif-gpsspeed-n": "ⵜⴰⵙⵓⵜ",
+       "exif-gpsdestdistance-k": "ⴽⵉⵍⵓⵎⵉⵜⵔ",
+       "exif-gpsdestdistance-m": "Miles",
+       "exif-gpsdop-good": "ⵉⵥⵉⵍ ($1)",
+       "exif-dc-contributor": "ⴰⵎⴰⵡⴰⵙⵏ",
+       "exif-dc-date": "ⴰⴽⵓⴷ(ⵉⴽⵓⴷⵏ)",
+       "exif-dc-publisher": "ⴰⵎⴼⵙⵔ",
+       "exif-dc-rights": "ⵉⵣⵔⴼⴰⵏ",
+       "exif-dc-source": "ⴰⵖⴱⴰⵍⵓ ⵏ ⵓⵙⴷⴰⵡ",
+       "exif-dc-type": "ⴰⵏⴰⵡ ⵏ ⵓⵎⵉⴷⵢⴰ",
+       "exif-iimcategory-ace": "ⵜⵉⵥⵓⵔⵉⵡⵉⵏ, ⴷ ⵜⴷⵍⵙⴰ ⴷ ⴰⵎⵣⵍ",
+       "exif-iimcategory-fin": "ⵜⴰⴷⴰⵎⵙⴰ ⴷ ⵜⴰⵙⴱⴱⴰⴱⵜ",
+       "exif-iimcategory-edu": "ⴰⵙⵙⵍⵎⴷ",
+       "exif-iimcategory-evn": "ⵜⴰⵡⵏⵏⴰⵟ",
+       "exif-iimcategory-hth": "ⵜⴰⴷⵓⵙⵉ",
+       "exif-iimcategory-lab": "ⵜⴰⵡⵓⵔⵉ",
+       "exif-iimcategory-pol": "ⵜⴰⵙⵔⵜⵉⵜ",
+       "exif-iimcategory-rel": "ⴰⵙⴳⴷ ⴷ ⵜⵉⴼⵍⵙⵉⵏ",
+       "exif-iimcategory-spo": "ⵜⵓⵏⵏⵓⵏⵜ",
+       "exif-iimcategory-wea": "ⴰⵏⵣⵡⵉ",
+       "watchlistall2": "ⵎⴰⵕⵕⴰ",
+       "namespacesall": "ⵎⴰⵕⵕⴰ",
+       "monthsall": "ⵎⴰⵕⵕⴰ",
+       "confirm_purge_button": "ⵡⴰⵅⵅⴰ",
+       "confirm-watch-button": "ⵡⴰⵅⵅⴰ",
+       "confirm-unwatch-button": "ⵡⴰⵅⵅⴰ",
+       "semicolon-separator": "&#32;",
+       "imgmultigo": "ⴷⴷⵓ!",
+       "imgmultigoto": "ⴷⴷⵓ ⵖⵔ ⵜⴰⵙⵏⴰ $1",
+       "table_pager_first": "ⵜⴰⵙⵏⴰ ⵜⴰⵎⵣⵡⴰⵔⵓⵜ",
+       "table_pager_last": "ⵜⴰⵙⵏⴰ ⵜⴰⵏⴳⴳⴰⵔⵓⵜ",
+       "table_pager_limit_label": "ⵉⴼⵔⴷⵉⵙⵏ ⴷⵉ ⴽⵓ ⵜⴰⵙⵏⴰ:",
+       "table_pager_limit_submit": "ⴷⴷⵓ",
+       "table_pager_empty": "ⵡⴰⵔ ⵜⵉⵢⴰⴼⵓⵜⵉⵏ",
+       "watchlistedit-raw-titles": "ⵉⵣⵡⵉⵍⵏ:",
+       "iranian-calendar-m8": "ⴰⴱⴰⵏ",
+       "hijri-calendar-m8": "ⵛⴰⵄⴱⴰⵏ",
+       "hebrew-calendar-m6": "ⴰⴷⴰⵔ",
+       "version-skins": "ⵓⴷⵎⴰⵡⵏ",
+       "version-software-product": "ⴰⵎⵙⵢⴰⴼⵓ (ⴰⵏⴼⵔⴰⵙ)",
+       "version-entrypoints-header-url": "URL",
+       "fileduplicatesearch-filename": "ⴰⵙⵙⴰⵖ ⵓⵙⴷⴰⵡ:",
+       "fileduplicatesearch-submit": "ⴰⵔⵣⵣⵓ",
+       "specialpages": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⵉⵥⵍⵉⵏ",
+       "specialpages-group-pagetools": "ⵉⵎⴰⵙⵙⵏ ⵏ ⵜⴰⵙⵏⴰ",
+       "specialpages-group-spam": "ⵉⵎⴰⵙⵙⵏ ⵏ ⵙⴱⴰⵎ",
+       "tag-filter-submit": "ⴰⵎⵙⵜⴰⵢ",
+       "compare-page1": "ⵜⴰⵙⵏⴰ 1",
+       "compare-page2": "ⵜⴰⵙⵏⴰ 2",
+       "logentry-delete-delete": "$1 ⴽⴽⵉⵙ ⵜⴰⵙⵏⴰ $3",
+       "logentry-delete-restore": "$1 ⵙⵙⴰⵖⵓⵍ ⵜⴰⵙⵏⴰ $3",
+       "rightsnone": "(ⵡⴰⵔ)",
+       "feedback-subject": "ⴰⵙⵏⵜⵍ:",
+       "feedback-message": "ⵜⴰⴱⵔⴰⵜ:",
+       "feedback-close": "ⵉⵣⵎⵎⴻⵎ",
+       "searchsuggest-search": "ⴰⵔⵣⵣⵓ",
+       "api-error-duplicate-popup-title": "ⵣⴷⴻⵎ {{PLURAL:$1|ⴰⵙⴷⴰⵡ|ⵉⵙⴷⴰⵡⵏ}}.",
+       "api-error-filename-tooshort": "ⴰⵙⵙⴰⵖ ⵓⵙⴷⴰⵡ ⵉⴳⵣⵣⵓⵍ ⵛⵉⴳⴰⵏ.",
+       "duration-seconds": "$1 {{PLURAL:$1|ⵜⴰⵙⵏⴰⵜ|ⵜⵉⵙⵏⴰⵜⵉⵏ}}",
+       "duration-minutes": "$1 {{PLURAL:$1|ⵜⵓⵙⴷⴰⴷⵜ|ⵜⵓⵙⴷⴰⴷⵉⵏ}}",
+       "duration-hours": "$1 {{PLURAL:$1|ⵜⴰⵙⵔⴰⴳⵜ|ⵜⵉⵙⵔⴰⴳⵉⵏ}}",
+       "duration-days": "$1 {{PLURAL:$1|ⴰⵙⵙ|ⵓⵙⵙⴰⵏ}}",
+       "duration-weeks": "$1 {{PLURAL:$1|ⵉⵎⴰⵍⴰⵙⵙ|ⵉⵎⴰⵍⴰⵙⵙⵏ}}",
+       "duration-years": "$1 {{PLURAL:$1|ⴰⵙⴳⴳⵯⴰⵙ|ⵉⵙⴳⴳⵯⴰⵙⵏ}}",
+       "duration-decades": "$1 {{PLURAL:$1|ⵜⴰⵙⵓⵜ|ⵜⴰⵙⵓⵜⵉⵏ}}",
+       "duration-centuries": "$1 {{PLURAL:$1|ⵜⴰⵙⵓⵜ|ⵜⴰⵙⵓⵜⵉⵏ}}"
+}
index 62b6340..bfa01d5 100644 (file)
        "searchrelated": "ئالاقىدار",
        "searchall": "ھەممىسى",
        "showingresults": "تۆۋەندە '''$2''' - نەتىجىدىن باشلانغان {{PLURAL:$1|'''1''' نەتىجە|'''$1''' نەتىجە}} كۆرسىتىدۇ:",
-       "showingresultsnum": "تۆۋەندە '''$2''' - نەتىجىدىن باشلانغان {{PLURAL:$3|'''1''' نەتىجە |'''$3''' نەتىجە }} كۆرسىتىدۇ:",
        "showingresultsheader": "'''$4''' نىڭ {{PLURAL:$5|'''$1''' دىن '''$3'''غىچە نەتىجە | '''$1 - $2''' غىچە جەمئى '''$3''' نەتىجە}}",
        "search-nonefound": "سۈرۈشتۈرۈشكە ماس نەتىجە تېپىلمىدى.",
        "powersearch-legend": "ئالىي ئىزدەش",
index 6b7d813..95d9f26 100644 (file)
@@ -50,7 +50,7 @@
                        "Calak"
                ]
        },
-       "tog-underline": "Підкреслювати посилання:\nПідкреслювання посилань:",
+       "tog-underline": "Підкреслювання посилань:",
        "tog-hideminor": "Приховати незначні редагування у списку останніх змін",
        "tog-hidepatrolled": "Приховувати патрульовані редагування у списку нових редагувань",
        "tog-newpageshidepatrolled": "Приховувати патрульовані сторінки у списку нових сторінок",
        "unexpected": "Неочікуване значення: «$1»=«$2».",
        "formerror": "Помилка: неможливо передати дані форми",
        "badarticleerror": "Ця дія не може бути виконана на цій сторінці.",
-       "cannotdelete": "Неможливо вилучити сторінку або файл \"$1\".\nМожливо, її (його) вже вилучив хтось інший.",
+       "cannotdelete": "Неможливо вилучити сторінку або файл «$1».\nМожливо, її (його) вже вилучив хтось інший.",
        "cannotdelete-title": "Не вдається видалити сторінку «$1»",
        "delete-hook-aborted": "Вилучення було скасовано процедурою-перехоплювачем. \nНіяких поясненень надано не було.",
        "no-null-revision": "Не вдалося створити нульову версію сторінки «$1»",
        "namespaceprotected": "У вас нема дозволу редагувати сторінки в просторі назв «$1».",
        "customcssprotected": "У вас немає прав на редагування цієї CSS-сторінки, так як вона містить особисті налаштування іншого користувача.",
        "customjsprotected": "У вас немає дозволу на редагування цієї JavaScript-сторінки, так як вона містить особисті налаштування іншого користувача.",
-       "mycustomcssprotected": "У Ð²ас немає прав для редагування цієї CSS сторінки.",
+       "mycustomcssprotected": "У Ð\92ас немає прав для редагування цієї CSS сторінки.",
        "mycustomjsprotected": "Ви не маєте дозволу для редагування цієї сторінки JavaScript.",
        "myprivateinfoprotected": "У Вас немає дозволу на редагування своєї приватної інформації.",
        "mypreferencesprotected": "У Вас немає дозволу на редагування своїх налаштувань.",
        "currentrev": "Поточна версія",
        "currentrev-asof": "Поточна версія на $1",
        "revisionasof": "Версія за $1",
-       "revision-info": "Версія від $1; $2",
+       "revision-info": "Версія від $1, створена {{GENDER:$6|$2}}$7",
        "previousrevision": "← Попередня версія",
        "nextrevision": "Новіша версія →",
        "currentrevisionlink": "Поточна версія",
        "mergehistory-empty": "Не знайдені редагування для об'єднання.",
        "mergehistory-success": "$3 {{PLURAL:$3|редагування|редагування|редагувань}} з [[:$1]] успішно перенесені до [[:$2]].",
        "mergehistory-fail": "Не вдалося здійснити об'єднання історій сторінок, будь ласка, перевірте параметри сторінки й часу.",
+       "mergehistory-fail-toobig": "Не вдалося виконати злиття історії оскільки буде перейменовано більше, ніж ліміт у $1 {{PLURAL:$1|версію|версії|версій}}.",
        "mergehistory-no-source": "Вихідна сторінка «$1» не існує.",
        "mergehistory-no-destination": "Цільова сторінка «$1» не існує.",
        "mergehistory-invalid-source": "Джерело повинне мати правильний заголовок.",
        "searchall": "усі",
        "showingresults": "Нижче {{PLURAL:$1|показане|показані|показані}} '''$1''' {{PLURAL:$1|результат|результати|результатів}}, починаючи з №&nbsp;'''$2'''",
        "showingresultsinrange": "Нижче показано до {{PLURAL:$1|<strong>1</strong> результата|<strong>$1</strong> результатів|<strong>$1</strong> результати}} у діапазоні від #<strong>$2</strong> до #<strong>$3</strong>.",
-       "showingresultsnum": "Нижче показано <strong>$3</strong> {{PLURAL:$3|результат|результати|результатів}}, починаючи з №&nbsp;<strong>$2</strong>.",
        "showingresultsheader": "{{PLURAL:$5|1=Результат '''$1''' з '''$3'''|Результати '''$1 — $2''' з '''$3'''}} для '''$4'''",
        "search-nonefound": "Не знайдено результатів, що відповідають запиту.",
        "powersearch-legend": "Розширений пошук",
        "userrights": "Керування правами користувачів",
        "userrights-lookup-user": "Керування групами користувача",
        "userrights-user-editname": "Введіть ім'я користувача:",
-       "editusergroup": "Редагувати групи користувача",
+       "editusergroup": "Редагувати групи користувачів",
        "editinguser": "Зміна прав користувача '''[[User:$1|$1]]''' $2",
-       "userrights-editusergroup": "Змінити групи користувача",
+       "userrights-editusergroup": "Змінити групи користувачів",
        "saveusergroups": "Зберегти групи користувача",
        "userrights-groupsmember": "Член груп:",
        "userrights-groupsmember-auto": "Неявний член:",
        "largefileserver": "Розмір файлу більший за максимальнодозволений.",
        "emptyfile": "Завантажений вами файл ймовірно порожній. Можливо, це сталося через помилку при введенні імені файлу. Будь-ласка, перевірте, чи справді ви бажаєте звантажити цей файл.",
        "windows-nonascii-filename": "Ця вікі не підтримує імена файлів зі спеціальними символами.",
-       "fileexists": "Файл з такою назвою вже існує.\nБудь ласка, перевірте <strong>[[:$1]]</strong>, якщо ви не впевнені, чи хочете замінити його.\n[[$1|thumb]]",
+       "fileexists": "Файл з такою назвою вже існує.\nБудь ласка, перевірте <strong>[[:$1]]</strong>, якщо {{GENDER:|ви}} не впевнені, чи хочете замінити його.\n[[$1|thumb]]",
        "filepageexists": "Сторінка опису цього файлу вже створена як <strong>[[:$1]]</strong>, але файлу з такою назвою немає. Уведений опис не з'явиться на сторінці опису зображення. Щоб додати новий опис, вам доведеться змінити його вручну. [[$1|thumb]]",
-       "fileexists-extension": "Ð\86Ñ\81нÑ\83Ñ\94 Ñ\84айл Ð·Ñ\96 Ñ\81Ñ\85ожоÑ\8e Ð½Ð°Ð·Ð²Ð¾Ñ\8e: [[$2|thumb]]\n* Ð\9dазва Ð·Ð°Ð²Ð°Ð½Ñ\82аженого Ñ\84айлÑ\83: <strong>[[:$1]]</strong>\n* Ð\9dазва Ñ\96Ñ\81нÑ\83Ñ\8eÑ\87ого Ñ\84айлÑ\83: <strong>[[:$2]]</strong>\nÐ\91Ñ\83дÑ\8cÑ\82е Ð»Ð°Ñ\81кавÑ\96, Ð²Ð¸Ð±ÐµÑ\80Ñ\96Ñ\82Ñ\8c Ñ\96нÑ\88Ñ\83 Ð½Ð°Ð·Ð²Ñ\83.",
+       "fileexists-extension": "Ð\86Ñ\81нÑ\83Ñ\94 Ñ\84айл Ð·Ñ\96 Ñ\81Ñ\85ожоÑ\8e Ð½Ð°Ð·Ð²Ð¾Ñ\8e: [[$2|thumb]]\n* Ð\9dазва Ð·Ð°Ð²Ð°Ð½Ñ\82аженого Ñ\84айлÑ\83: <strong>[[:$1]]</strong>\n* Ð\9dазва Ñ\96Ñ\81нÑ\83Ñ\8eÑ\87ого Ñ\84айлÑ\83: <strong>[[:$2]]</strong>\nÐ\9cожливо, Ð²Ð¸ Ñ\85оÑ\87еÑ\82е Ð¾Ð±Ñ\80аÑ\82и Ð½Ð°Ð·Ð²Ñ\83, Ñ\89о Ð±Ñ\83де Ð±Ñ\96лÑ\8cÑ\88е Ð²Ñ\96дÑ\80Ñ\96знÑ\8fÑ\82иÑ\81Ñ\8f?",
        "fileexists-thumbnail-yes": "Можливо, файл є зменшеною копією (мініатюрою). [[$1|thumb]]\nБудь ласка, перевірте файл <strong>[[:$1]]</strong>.\nЯкщо вказаний файл є тим самим зображенням, не варто окремо завантажувати його зменшену копію.",
        "file-thumbnail-no": "Назва файлу починається на <strong>$1</strong>.\nМожливо, це зменшена копія зображення ''(мініатюра)''.\nЯкщо у вас є це зображення в повному розмірі, завантажте його, інакше змініть назву файлу.",
        "fileexists-forbidden": "Файл з такою назвою вже існує і не може бути перезаписаний.\nЯкщо ви все одно хочете завантажити цей файл, будь ласка, поверніться назад і оберіть іншу назву.\n[[File:$1|thumb|center|$1]]",
        "filedelete-maintenance": "Вилучення та відновлення файлів відімкнене на час технічних робіт.",
        "filedelete-maintenance-title": "Не вдається видалити файл",
        "mimesearch": "Пошук по MIME",
-       "mimesearch-summary": "Ця сторінка дозволяє вибирати файли за їх MIME-типом. Формат вводу: тип_вмісту/підтип, наприклад <code>image/jpeg</code>.",
+       "mimesearch-summary": "Ця сторінка дозволяє вибирати файли за їх MIME-типом. Формат вводу: тип_вмісту/підтип або тип_вмісту/* тощо, наприклад <code>image/jpeg</code>.",
        "mimetype": "MIME-тип:",
        "download": "завантажити",
        "unwatchedpages": "Сторінки, за якими ніхто не спостерігає",
        "wantedtemplates": "Необхідні шаблони",
        "mostlinked": "Сторінки, на які найбільше посилань",
        "mostlinkedcategories": "Найбільші категорії",
-       "mostlinkedtemplates": "Ð\9dайÑ\83живанÑ\96Ñ\88Ñ\96 Ñ\88аблони",
+       "mostlinkedtemplates": "Ð\9dайÑ\87аÑ\81Ñ\82Ñ\96Ñ\88е Ð²ÐºÐ»Ñ\8eÑ\87енÑ\96 Ñ\81Ñ\82оÑ\80Ñ\96нки",
        "mostcategories": "Статті з найбільшою кількістю категорій",
        "mostimages": "Найуживаніші зображення",
        "mostinterwikis": "Сторінки з найбільшою кількістю інтервікі-посилань",
        "watchlistedit-clear-titles": "Сторінки:",
        "watchlistedit-clear-submit": "Очистити список спостереження (це безповоротньо!)",
        "watchlistedit-clear-done": "Ваш список спостереження було очищено.",
+       "watchlistedit-clear-removed": "Було видалено {{PLURAL:$1|1 запис|$1 записів|$1 записи}}:",
        "watchlistedit-too-many": "Забагато сторінок для відображення тут.",
        "watchlisttools-clear": "Очистити список спостереження",
        "watchlisttools-view": "Зміни на сторінках зі списку",
        "duplicate-defaultsort": "Увага. Ключ сортування «$2» перекриває попередній ключ сортування «$1».",
        "version": "Версія MediaWiki",
        "version-extensions": "Установлені розширення",
+       "version-skins": "Встановлені теми оформлення",
        "version-specialpages": "Спеціальні сторінки",
        "version-parserhooks": "Перехоплювачі синтаксичного аналізатора",
        "version-variables": "Змінні",
        "version-antispam": "Захист від спаму",
-       "version-skins": "Оформлення",
        "version-api": "API",
        "version-other": "Інше",
        "version-mediahandlers": "Обробники медіа",
        "version-hook-name": "Ім'я перехоплювача",
        "version-hook-subscribedby": "Підписаний на",
        "version-version": "($1)",
+       "version-no-ext-name": "[без назви]",
        "version-svn-revision": "(r$2)",
        "version-license": "Ліцензія MediaWik",
        "version-ext-license": "Ліцензія",
        "version-ext-colheader-name": "Розширення",
+       "version-skin-colheader-name": "Тема оформлення",
        "version-ext-colheader-version": "Версія",
        "version-ext-colheader-license": "Ліцензія",
        "version-ext-colheader-description": "Опис",
        "expand_templates_remove_nowiki": "Ігнорувати теги <nowiki> в результаті",
        "expand_templates_generate_xml": "Показати дерево аналізу XML",
        "expand_templates_generate_rawhtml": "Показати сирий HTML",
-       "expand_templates_preview": "Попередній перегляд"
+       "expand_templates_preview": "Попередній перегляд",
+       "pagelanguage": "Вибір мови сторінки",
+       "pagelang-name": "Сторінка",
+       "pagelang-language": "Мова",
+       "pagelang-use-default": "Мова за замовчуванням",
+       "pagelang-select-lang": "Оберіть мову",
+       "right-pagelang": "Змінити мову сторінки",
+       "action-pagelang": "змінити мову сторінки",
+       "log-name-pagelang": "Журнал змін мови",
+       "log-description-pagelang": "Це журнал змін мови сторінок.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|змінив|змінила}} мову сторінки для $3 з $4 на $5."
 }
index 22d26c3..8726dc3 100644 (file)
        "qbmyoptions": "میرے صفحات",
        "faq": "معلوماتِ عامہ",
        "faqpage": "Project:معلوماتِ عامہ",
-       "vector-action-addsection": "نیا موضوع",
-       "vector-action-delete": "حذف کرو",
-       "vector-action-move": "منتقل کرو",
-       "vector-action-protect": "محفوظ کرو",
-       "vector-action-undelete": "بحال",
-       "vector-action-unprotect": "تحفظ میں تبدیلی",
-       "vector-view-create": "تخلیق",
-       "vector-view-edit": "ترمیم",
-       "vector-view-history": "تاریخ",
-       "vector-view-view": "مطالعہ",
-       "vector-view-viewsource": "مسودہ",
        "actions": "ایکشنز",
-       "vector-more-actions": "زیادہ",
        "namespaces": "جائے نام",
        "variants": "متغیرات",
        "errorpagetitle": "خطاء",
index 9ad375a..25867f7 100644 (file)
        "searchrelated": "bogʻlangan",
        "searchall": "barchasi",
        "showingresults": "Quyida №'''$2'''dan boshlab {{PLURAL:$1|'''bitta''' natija|'''$1''' ta natija}} koʻrsatilgan.",
-       "showingresultsnum": "Quyida №'''$2'''dan boshlab '''$1''' ta {{PLURAL:$1|natija}} ko'rsatildi.",
        "showingresultsheader": "<strong>$4</strong> uchun jami {{PLURAL:$5|<strong>$3</strong> tadan <strong>$1</strong> ta natija koʻrsatildi|<strong>$3</strong> tadan <strong>$1</strong> — <strong>$2</strong> chi natijalar koʻrsatildi}}",
        "search-nonefound": "Talabga javob beradigan natija topilmadi.",
        "powersearch-legend": "Kengaytirilgan qidiruv",
index 978a98f..09c4ce1 100644 (file)
        "searchrelated": "ligà",
        "searchall": "tuti",
        "showingresults": "Qua de soto vien mostrà al massimo {{PLURAL:$1|'''1''' risultato|'''$1''' risultati}} a partir dal nùmaro '''$2'''.",
-       "showingresultsnum": "Qua soto ghe xe {{PLURAL:$3|'''1''' risultato|'''$3''' risultati}} a partir da #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Risultato '''$1''' de '''$3'''|Risultati '''$1 - $2''' de '''$3'''}} par '''$4'''",
        "search-nonefound": "La riserca no la gà catà gnente.",
        "powersearch-legend": "Riserca avansà",
index dcb3994..07ba40c 100644 (file)
        "qbmyoptions": "Minun järgendused",
        "faq": "PPK",
        "faqpage": "Project:PPK",
-       "vector-action-addsection": "Ližada tem",
-       "vector-action-delete": "Čuta poiš",
-       "vector-action-move": "Udesnimitada",
-       "vector-action-protect": "Kaita",
-       "vector-action-undelete": "Pördutada",
-       "vector-action-unprotect": "Toižetada kaičend",
-       "vector-view-create": "Säta",
-       "vector-view-edit": "Redaktiruida",
-       "vector-view-history": "Kacta istorii",
-       "vector-view-view": "Lugeda",
-       "vector-view-viewsource": "Kacta purtkehe",
        "actions": "Tegendad",
        "namespaces": "Nimiavaruded",
        "variants": "Variantad",
        "editundo": "heitta pätand",
        "searchresults": "Ectä rezul'tatad",
        "searchresults-title": "Ecindan rezul'tatad sanale \"$1\"",
-       "toomanymatches": "Om löutud äjahko rezul'tatoid, olgat hüväd, eckat toine sana",
        "titlematches": "Löutud lehtpoliden nimed",
        "textmatches": "Löutud tekstanpalad lehtpolil",
        "notextmatches": "Lehtpoliden tekstoiš ei ole ectud sanad",
        "searchmenu-exists": "'''Neciš Wikiš om jo lehtpol' ningoižen nimenke: \"[[:$1]]\"'''",
        "searchmenu-new": "'''Säta lehtpol' \"[[:$1]]\" neciš Wikiš!'''",
        "searchprofile-articles": "Südäimištlehtpoled",
-       "searchprofile-project": "Abun da projektoiden lehtpoled",
        "searchprofile-images": "Mul'timedii",
        "searchprofile-everything": "Kaikjal",
        "searchprofile-advanced": "Levitoittud",
        "searchprofile-articles-tooltip": "Ectä täs: $1",
-       "searchprofile-project-tooltip": "Ectä täs: $1",
        "searchprofile-images-tooltip": "Failoiden ecind",
        "searchprofile-everything-tooltip": "Ectä kaikil lehtpolil (lodulehtpolid mülütaden)",
        "searchprofile-advanced-tooltip": "Ectä märitud nimiavarusiš",
        "search-interwiki-default": "$1 rezul'tatad:",
        "search-interwiki-more": "(völ)",
        "search-relatedarticle": "Sidotud lehtpoled",
-       "searcheverything-enable": "Ectä kaikiš nimiavarusiš",
        "searchrelated": "sidotud",
        "searchall": "kaik",
        "showingresults": "Alemba ozutadas {{PLURAL:$1|'''1''' rezul'tat|'''$1''' rezul'tatad}} nomeraspäi #'''$2''' augotaden.",
-       "showingresultsnum": "Alemba ozutadas {{PLURAL:$3|'''1''' rezul'tat|'''$3''' rezul'tatad}} nomeraspäi '''$2''' augotaden.",
        "showingresultsheader": "{{PLURAL:$5|'''$1''' '''$3'''-š rezul'tatoišpäi|Rezul'tatad '''$1–$2''' '''$3'''-špäi}} '''$4'''-n täht",
        "search-nonefound": "Ecmižhe ei löudnus rezul'tatoid.",
        "powersearch-legend": "Levitoittud ecind",
        "allowemail": "Laskkat toižile kävutajile oigeta teile e-počtad",
        "prefs-searchoptions": "Ectä",
        "prefs-namespaces": "Nimiavarused",
-       "defaultns": "Toižiš statjoiš ectä neniš nimiavarusiš:",
        "default": "augotižjärgendusen mödhe",
        "prefs-files": "Failad",
        "prefs-custom-css": "Ičeze CSS",
        "prefs-emailconfirm-label": "E-počtan vahvištand:",
        "youremail": "E-počt:",
        "username": "{{GENDER:$1|Kävutajan nimi}}:",
-       "uid": "{{GENDER:$1|Kävutajan nomer}} ID:",
        "prefs-memberingroups": "{{PLURAL:$1|Gruppan|Gruppiden}} {{GENDER:$2|ühtnii}}:",
        "prefs-registration": "Registracijan aig:",
        "yourrealname": "Todesine nimi:",
        "logempty": "Ei ole sättujid kirjutesid aigkirjas.",
        "log-title-wildcard": "Ectä pälkirjutesid, kudambil augoitišes om ningomid simvoloid",
        "allpages": "Kaik lehtpoled",
-       "alphaindexline": "$1... $2",
        "nextpage": "Toine lehtpol’ ($1)",
        "prevpage": "Edeline lehtpol' ($1)",
        "allpagesfrom": "Ozutada lehtpoled, kudambad augotase necil tekstal:",
        "pageinfo-category-pages": "Lehtpoliden lugumär",
        "pageinfo-category-subcats": "Alakategorijoiden lugumär",
        "pageinfo-category-files": "Failoiden lugumär",
-       "skinname-cologneblue": "Köl'nan sinine",
-       "skinname-monobook": "MonoBook",
-       "skinname-modern": "Nügüd'aigaine",
        "markaspatrolleddiff": "Znamoita kut patruliruidud",
        "markaspatrolledtext": "Znamoita nece lehtpol' kut patruliruidud",
        "markedaspatrolled": "Om znamoitud kut patruliruidud",
index 6667c65..a262641 100644 (file)
@@ -44,7 +44,7 @@
        "tog-watchdeletion": "Tự động theo dõi các trang và tập tin tôi xóa",
        "tog-minordefault": "Mặc định đánh dấu tất cả sửa đổi của tôi là sửa đổi nhỏ",
        "tog-previewontop": "Hiển thị phần xem trước nằm trên hộp sửa đổi",
-       "tog-previewonfirst": "Hiện xem trước tại lần sửa đầu tiên",
+       "tog-previewonfirst": "Hiện xem trước tại ngay khi bắt đầu sửa đổi",
        "tog-enotifwatchlistpages": "Gửi thư cho tôi khi có thay đổi tại trang hoặc tập tin tôi theo dõi",
        "tog-enotifusertalkpages": "Gửi thư cho tôi khi có thay đổi tại trang thảo luận của tôi",
        "tog-enotifminoredits": "Gửi thư cho tôi cả những thay đổi nhỏ trong trang và tập tin",
@@ -68,7 +68,7 @@
        "tog-prefershttps": "Luôn kết nối an toàn khi đăng nhập",
        "underline-always": "Luôn luôn",
        "underline-never": "Không bao giờ",
-       "underline-default": "Mặc định của hình dạng hoặc trình duyệt",
+       "underline-default": "Mặc định của giao diện hoặc trình duyệt",
        "editfont-style": "Kiểu phông chữ trong khung sửa đổi:",
        "editfont-default": "Mặc định của trình duyệt",
        "editfont-monospace": "Phông đẳng cách",
        "nextn-title": "$1 {{PLURAL:$1|kết quả|kết quả}} sau",
        "shown-title": "Hiển thị $1 {{PLURAL:$1|kết quả|kết quả}} mỗi trang",
        "viewprevnext": "Xem ($1 {{int:pipe-separator}} $2) ($3).",
-       "searchmenu-exists": "* Trang '''[[$1]]'''",
-       "searchmenu-new": "'''Tạo trang “[[:$1]]” trên wiki này!''' {{PLURAL:$2|0=|Hãy xem {{PLURAL:$2|kết quả|các kết quả}} tìm kiếm:}}",
+       "searchmenu-exists": "<strong>Có trang với tên “[[:$1]]” trên wiki này.</strong> {{PLURAL:$2|0=|Xem thêm các kết quả tìm kiếm bên dưới:}}",
+       "searchmenu-new": "'''Tạo trang “[[:$1]]” trên wiki này!''' {{PLURAL:$2|0=|Xem thêm {{PLURAL:$2|kết quả|các kết quả}} tìm kiếm:}}",
        "searchprofile-articles": "Trang nội dung",
        "searchprofile-images": "Đa phương tiện",
        "searchprofile-everything": "Tất cả",
        "searchall": "tất cả",
        "showingresults": "Dưới đây là {{PLURAL:$1|'''1'''|'''$1'''}} kết quả bắt đầu từ #'''$2'''.",
        "showingresultsinrange": "Dưới đây là cho tới <strong>$1</strong> kết quả từ #<strong>$2</strong> đến #<strong>$3</strong>.",
-       "showingresultsnum": "Dưới đây là {{PLURAL:$3|'''1'''|'''$3'''}} kết quả bắt đầu từ #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Kết quả thứ '''$1''' trong tổng số '''$3''' kết quả|Các kết quả '''$1–$2''' trong tổng số '''$3''' kết quả}} cho '''$4'''",
        "search-nonefound": "Không có kết quả nào khớp với câu truy vấn.",
        "powersearch-legend": "Tìm kiếm nâng cao",
        "mypreferences": "Tùy chọn",
        "prefs-edits": "Số lần sửa đổi:",
        "prefsnologintext2": "Xin vui lòng $1 để thay đổi tùy chọn.",
-       "prefs-skin": "Hình dạng",
+       "prefs-skin": "Giao diện",
        "skin-preview": "Xem trước",
        "datedefault": "Không quan tâm",
        "prefs-labs": "Tính năng phòng thí nghiệm",
        "prefs-changeemail": "Đổi địa chỉ thư điện tử",
        "prefs-setemail": "Đặt địa chỉ thư điện tử",
        "prefs-email": "Tùy chọn thư điện tử",
-       "prefs-rendering": "Bề ngoài",
+       "prefs-rendering": "Giao diện",
        "saveprefs": "Lưu tùy chọn",
        "restoreprefs": "Mặc định lại toàn bộ tùy chọn (trong tất cả các phần)",
        "prefs-editing": "Sửa đổi",
        "prefs-files": "Tập tin",
        "prefs-custom-css": "sửa CSS",
        "prefs-custom-js": "sửa JS",
-       "prefs-common-css-js": "CSS/JS chung cho mọi hình dạng:",
+       "prefs-common-css-js": "CSS/JS chung cho mọi giao diện:",
        "prefs-reset-intro": "Có thể mặc định lại toàn bộ tùy chọn dùng trang này.\nKhông có thể lùi lại tác động này.",
        "prefs-emailconfirm-label": "Xác nhận thư điện tử:",
        "youremail": "Thư điện tử:",
        "enhancedrc-history": "lịch sử",
        "recentchanges": "Thay đổi gần đây",
        "recentchanges-legend": "Tùy chọn thay đổi gần đây",
-       "recentchanges-summary": "Xem các thay đổi gần đây nhất tại wiki trên trang này.",
+       "recentchanges-summary": "Xem các thay đổi gần đây nhất trên wiki này tại đây.",
        "recentchanges-noresult": "Không có thay đổi trong khoảng thời gian phù hợp với các tiêu chí này.",
        "recentchanges-feed-description": "Theo dõi các thay đổi gần đây nhất của wiki dùng nguồn cấp dữ liệu này.",
        "recentchanges-label-newpage": "Bản sửa này tạo ra trang mới",
        "javascripttest-pagetext-noframework": "Trang này dành cho việc chạy các ca kiểm thử JavaScript.",
        "javascripttest-pagetext-unknownframework": "Nền tảng kiểm thử không rõ “$1”.",
        "javascripttest-pagetext-frameworks": "Hãy chọn một trong những nền tảng kiểm thử sau: $1",
-       "javascripttest-pagetext-skins": "Hãy chọn một bề ngoài để sử dụng với các ca kiểm thử:",
+       "javascripttest-pagetext-skins": "Hãy chọn giao diện để sử dụng với các ca kiểm thử:",
        "javascripttest-qunit-intro": "Xem [$1 tài liệu kiểm thử] tại mediawiki.org.",
        "javascripttest-qunit-heading": "Tập kiểm thử QUnit JavaScript MediaWiki",
        "tooltip-pt-userpage": "Trang cá nhân của tôi",
        "tooltip-preferences-save": "Lưu tùy chọn",
        "tooltip-summary": "Hãy nhập câu tóm lược",
        "interlanguage-link-title": "$1 – $2",
-       "common.css": "/* Mã CSS đặt ở đây sẽ áp dụng cho mọi hình dạng */",
+       "common.css": "/* Mã CSS đặt ở đây sẽ áp dụng cho mọi giao diện */",
        "print.css": "/* Mã CSS tại đây sẽ ảnh hưởng đến bản để in */",
        "noscript.css": "/* Mã CSS tại đây sẽ ảnh hưởng đến những người dùng tắt JavaScript */",
        "group-autoconfirmed.css": "/* Mã CSS tại đây sẽ chỉ ảnh hưởng đến các thành viên tự động xác nhận */",
        "duplicate-defaultsort": "Cảnh báo: Từ khóa xếp mặc định “$2” ghi đè từ khóa trước, “$1”.",
        "version": "Phiên bản",
        "version-extensions": "Các phần mở rộng được cài đặt",
+       "version-skins": "Giao diện đã cài đặt",
        "version-specialpages": "Trang đặc biệt",
        "version-parserhooks": "Hook trong bộ xử lý",
        "version-variables": "Biến",
        "version-antispam": "Chống spam",
-       "version-skins": "Hình dạng",
        "version-other": "Phần mở rộng khác",
        "version-mediahandlers": "Bộ xử lý phương tiện",
        "version-hooks": "Các hook",
        "version-license": "Giấy phép MediaWiki",
        "version-ext-license": "Giấy phép",
        "version-ext-colheader-name": "Phần mở rộng",
+       "version-skin-colheader-name": "Giao diện",
        "version-ext-colheader-version": "Phiên bản",
        "version-ext-colheader-license": "Giấy phép",
        "version-ext-colheader-description": "Miêu tả",
        "expand_templates_remove_nowiki": "Bỏ qua thẻ <nowiki> trong kết quả",
        "expand_templates_generate_xml": "Xem cây phân tích XML",
        "expand_templates_generate_rawhtml": "Hiển thị HTML thô",
-       "expand_templates_preview": "Xem trước"
+       "expand_templates_preview": "Xem trước",
+       "pagelanguage": "Chọn ngôn ngữ trang",
+       "pagelang-name": "Trang",
+       "pagelang-language": "Ngôn ngữ",
+       "pagelang-use-default": "Sử dụng ngôn ngữ mặc định",
+       "pagelang-select-lang": "Chọn ngôn ngữ",
+       "right-pagelang": "Thay đổi ngôn ngữ của trang",
+       "action-pagelang": "thay đổi ngôn ngữ của trang",
+       "log-name-pagelang": "Nhật trình thay đổi ngôn ngữ",
+       "log-description-pagelang": "Nhật trình này ghi các thay đổi ngôn ngữ của các trang.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2}}đã đổi ngôn ngữ của trang $3 từ $4 thành $5."
 }
index 1ea9513..39099bc 100644 (file)
        "qbmyoptions": "Mâj sajdn",
        "faq": "FAQ",
        "faqpage": "Project:FAQ",
-       "vector-action-addsection": "Ân najn abschnid ôôfangn",
-       "vector-action-delete": "Leschn",
-       "vector-action-move": "Umdaafn",
-       "vector-action-protect": "Schidsn",
-       "vector-action-undelete": "Leschn riggängich machn",
-       "vector-action-unprotect": "Schuds ufgeebn",
-       "vector-view-create": "Ôôleechn",
-       "vector-view-edit": "Bearbajdn",
-       "vector-view-history": "Wärsjoonsfolche",
-       "vector-view-view": "Leesn",
-       "vector-view-viewsource": "Gwäl-dhägsd ôôgugn",
        "actions": "Agdsiona",
        "namespaces": "Nôômsrajm",
        "variants": "Warjandn",
        "searchmenu-exists": "'''Es gidd a Seidn, däi wou´n Nooma „[[:$1]]“ hodd.'''",
        "searchmenu-new": "'''Derschdell dai Seidn „[[:$1]]“ in diesn Wigi.'''",
        "searchprofile-articles": "Inhaldsseidn",
-       "searchprofile-project": "Hilf- un Brojegdseidn",
        "searchprofile-images": "Muldimedia",
        "searchprofile-everything": "Alls",
        "searchprofile-advanced": "Erweiderd",
        "searchprofile-articles-tooltip": "Soung in $1",
-       "searchprofile-project-tooltip": "Soung in $1",
        "searchprofile-images-tooltip": "Nach Daddein soung",
        "searchprofile-everything-tooltip": "Gsamdn Inhald durchsoung (aa Disgussionsseidn)",
        "searchprofile-advanced-tooltip": "Soung in weidere Namensraim",
        "search-interwiki-default": "Af $1 gfundn:",
        "search-interwiki-more": "(noch mäa´)",
        "search-relatedarticle": "Fârwande",
-       "searcheverything-enable": "In aln naamsrajm suuchn",
        "searchrelated": "fârwand",
        "searchall": "ale",
        "showingresults": "Hiâr {{PLURAL:$1|is '''1'''|sin '''$1'''}} Ärgääbnis , ôôgfangn baj numâr '''$2.'''",
-       "showingresultsnum": "Hiâr {{PLURAL:$3|is '''1''' |sin '''$3''' }} Ärgääbnis, oogfangn baj numâr '''$2.'''",
        "showingresultsheader": "{{PLURAL:$5|Ärgääbnis '''$1''' don '''$3'''|Ärgääbnis '''$1–$2''' fon '''$3'''}} fir '''$4'''",
        "search-nonefound": "Dsu dajna suuchfrôôchn is nigs gfundn wôrn.",
        "powersearch-legend": "Suuche mid mäa oogaam",
        "booksources-go": "Loos-suchng",
        "log": "Logbicher",
        "allpages": "Ale sajdn",
-       "alphaindexline": "$1 bis $2",
        "prevpage": "Fooriche sajdn ($1)",
        "allpagesfrom": "Sajdn ôôdsajchn ab:",
        "allpagesto": "Sajdn ôôdsajchn bis:",
        "tooltip-undo": "Hiir glign machd dii aane ändärung riggängich un dsajchd dan ôô, wiis dan ausschaua dääd. Dann koosd aa no â dsamfassung wisoo un warum dâdsuuschrajm.",
        "tooltip-summary": "Gib a korze Zammfassung ei.",
        "common.css": "/* CSS hiir beâjflusd ale schelfn */",
-       "cologneblue.css": "/* CSS hiir beâjflusd nôr dii Kölnisch-Blau-schelfn. Wen'd ale uf ôômôôl beâjflusn wilsch, muâsch an MediaWiki:Common.css was ändârn. */",
-       "monobook.css": "/* CSS hiir beâjflusd nôr dii Monobook-schelfn. Wen'd ale uf ôômôôl beâjflusn wilsch, muâsch an MediaWiki:Common.css was ändârn. */",
-       "modern.css": "/* CSS hiir beâjflusd nôr dii Modern-schelfn. Wen'd ale uf ôômôôl beâjflusn wilsch, muâsch an MediaWiki:Common.css was ändârn. */",
-       "vector.css": "/* CSS hiir beâjflusd nôr dii Vector-schelfn. Wen'd ale uf ôômôôl beâjflusn wilsch, muâsch an MediaWiki:Common.css was ändârn. */",
        "print.css": "/* CSS hiir beâjflusd nôr dii drugausgaawe. */",
        "common.js": "/* Des folchende JavaScript wird fir ale benudsâr glôôdn un fir ale sajdn, dii se ôôgugn. */",
        "previousdiff": "← Dsur foorichn fârändârung",
index ecc53f1..b073f11 100644 (file)
        "qbmyoptions": "Pads obik",
        "faq": "Säks suvo pasäköls",
        "faqpage": "Project:FAQ",
-       "vector-action-addsection": "Lüükön yegädi",
-       "vector-action-delete": "Moükön",
-       "vector-action-move": "Topätükön",
-       "vector-action-protect": "Jelön",
-       "vector-action-undelete": "Sämoükön",
-       "vector-action-unprotect": "Votükön jeli",
-       "vector-view-create": "Jafön",
-       "vector-view-edit": "Redakön",
-       "vector-view-history": "Logön jenotemi",
-       "vector-view-view": "Reidön",
-       "vector-view-viewsource": "Logön fonäti",
        "actions": "Dunots",
        "namespaces": "Nemaspads",
        "errorpagetitle": "Pöl",
        "editundo": "sädunön",
        "searchresults": "Sukaseks",
        "searchresults-title": "Sukaseks pro: \"$1\"",
-       "toomanymatches": "Pads tu mödiks labü vöd(s) pesuköl petuvons. Sukolös vödi(s) votik.",
        "titlematches": "Leigon ko padatiäd",
        "textmatches": "Leigon ko dil padavödema",
        "notextmatches": "Leigon ko nos in padavödem",
        "searchmenu-exists": "'''Dabinon pad labü nem: \"[[:$1]]\" su vük at'''",
        "searchmenu-new": "'''Jafolös padi: \"[[:$1]]\" su vük at!'''",
        "searchprofile-articles": "Ninädapads",
-       "searchprofile-project": "Yufa e Proyegapads",
        "searchprofile-images": "Mödamedäd",
        "searchprofile-everything": "Valikos",
        "searchprofile-advanced": "Paramets pluik",
        "searchprofile-articles-tooltip": "Sukön in $1",
-       "searchprofile-project-tooltip": "Sukön in $1",
        "searchprofile-images-tooltip": "Sukön ragivis",
        "searchprofile-everything-tooltip": "Sukön in ninäd lölik (keninükamü bespikapads)",
        "searchprofile-advanced-tooltip": "Sukön in nemaspads patik",
        "search-interwiki-default": "Seks se $1:",
        "search-interwiki-more": "(pluikos)",
        "search-relatedarticle": "Tefik",
-       "searcheverything-enable": "Sukolöd in nemaspads valik",
        "searchrelated": "tefik",
        "searchall": "valik",
        "showingresults": "Pajonons dono jü {{PLURAL:$1|sukasek '''1'''|sukaseks '''$1'''}}, primölo me nüm #'''$2'''.",
-       "showingresultsnum": "Dono pajonons {{PLURAL:$3:|sek '''1'''|seks '''$3'''}}, primölo me nüm: '''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Sek: '''$1''' se '''$3'''|Seks: '''$1 - $2''' se '''$3'''}} pro '''$4'''",
        "search-nonefound": "Sukaseks nonik dabinons.",
        "powersearch-legend": "Suk komplitikum",
        "allowemail": "Fägükolös siti ad getön poti leäktronik de gebans votik",
        "prefs-searchoptions": "Suk",
        "prefs-namespaces": "Nemaspads",
-       "defaultns": "Votiko sukolös in nemaspads at:",
        "default": "stad kösömik",
        "prefs-files": "Ragivs",
        "prefs-custom-css": "CSS nekösömik",
        "prefs-custom-js": "JavaScript nekösömik",
        "youremail": "Ladet leäktronik *:",
        "username": "{{GENDER:$1|Gebananem}}:",
-       "uid": "{{GENDER:$1|Gebanadientif}}:",
        "prefs-memberingroups": "{{GENDER:$2|Liman}} {{PLURAL:$1|grupa|grupas}}:",
        "prefs-registration": "Tim registarama:",
        "yourrealname": "Nem jenöfik *:",
        "logempty": "No dabinons notets in jenotalised at.",
        "log-title-wildcard": "Sukön tiäds primöl me:",
        "allpages": "Pads valik",
-       "alphaindexline": "$1 jü $2",
        "nextpage": "Pad sököl ($1)",
        "prevpage": "Pad büik ($1)",
        "allpagesfrom": "Jonolöd padis, primöl me:",
        "tooltip-undo": "\"Sädunön bali\" sädunon redakami at e maifükön redakamafometi as büologed.\nDälon läükami koda.",
        "tooltip-summary": "Penolös pläni brefik",
        "common.css": "/** El CSS isio peplädöl pogebon pro padafomäts valik */",
-       "monobook.css": "/* El CSS isio pepladöl otefon gebanis padafomäta: Monobook */",
        "common.js": "/* El JavaScript isik alseimik pogebon pro gebans valik pö padilogam valik. */",
        "anonymous": "{{PLURAL:$1|Geban|Gebans}} nennemik ela {{SITENAME}}",
        "siteuser": "Geban ela {{SITENAME}}: $1",
index c1aeb63..3154416 100644 (file)
        "qbpageoptions": "Kase cülci",
        "faq": "FAQ",
        "faqpage": "Project:FAQ",
-       "vector-action-addsection": "Vassõn teema",
-       "vector-action-delete": "Pühi",
-       "vector-action-move": "Liikut",
-       "vector-action-protect": "Varjaa",
-       "vector-view-create": "Loo cülci",
-       "vector-view-edit": "Muuttaa",
-       "vector-view-history": "Istori",
-       "vector-view-view": "Lukõa",
-       "vector-view-viewsource": "Lähtekoodi",
        "actions": "Tekod",
        "namespaces": "Nimiruumid",
        "variants": "Variandid",
        "searchmenu-exists": "Kazez viki-projeektaz on lehocülci «[[:$1]]» õõmaz",
        "searchmenu-new": "Tehä lehocülci «[[:$1]]» senez viki-projeektaz!",
        "searchprofile-articles": "Pääcülcid",
-       "searchprofile-project": "Selvitühse ja projeekta lehocülled",
        "searchprofile-images": "Multimedia",
        "searchprofile-everything": "Kõik",
        "searchprofile-advanced": "Lizätez",
        "searchprofile-articles-tooltip": "Etsi \"$1\":az",
-       "searchprofile-project-tooltip": "Etsi \"$1\":az",
        "searchprofile-images-tooltip": "Failõje õttsigo",
        "searchprofile-everything-tooltip": "Õttsigo kõikill lehocüllill (ceskussõõmizõ lehocülled siällhulgaz)",
        "searchprofile-advanced-tooltip": "Annõttu nimije tiloiz õttsia",
        "booksources-go": "Mee",
        "log": "Logid",
        "allpages": "Kõik artikkelid",
-       "alphaindexline": "$1 ... $2",
        "prevpage": "Entin сülсi ($1)",
        "allpagesfrom": "Сüľľelt",
        "allpagesto": "Сüľľessaa",
index 19909f8..b942a82 100644 (file)
        "qbmyoptions": "Mu säädmiseq",
        "faq": "Sagõhõhe küsüdüq küsümiseq",
        "faqpage": "Project:KKK",
-       "vector-action-addsection": "Vahtsõ teema ülespandminõ",
-       "vector-action-delete": "Kistudaq ärq",
-       "vector-action-move": "Nõstaq ümbre",
-       "vector-action-protect": "Kaidsaq",
-       "vector-action-undelete": "Tiiq tagasi",
-       "vector-action-unprotect": "Muudaq kaidsõt",
-       "vector-view-create": "Luuq",
-       "vector-view-edit": "Toimõndaq",
-       "vector-view-history": "Näütäq aoluku",
-       "vector-view-view": "Loeq",
-       "vector-view-viewsource": "Kaeq lätteteksti",
        "actions": "Tallitusõq",
        "namespaces": "Nimeruumiq",
        "variants": "Tõõsõndiq",
        "searchmenu-exists": "'''Lehekülg päälkiräga \"[[:$1]]\" om olõman.''' {{PLURAL:$2|0=|Kaeq ka tõisi otsmistulõmit.}}",
        "searchmenu-new": "'''Luuq leht päälkiräga \"[[:$1]]\".'''",
        "searchprofile-articles": "Sisuleheq",
-       "searchprofile-project": "Abi- ja projektileheq",
        "searchprofile-images": "Multimeediä",
        "searchprofile-everything": "Kõik",
        "searchprofile-advanced": "Täpsämb otsminõ",
        "searchprofile-articles-tooltip": "Otsiq nimeruumist $1",
-       "searchprofile-project-tooltip": "Otsiq nimeruumõst $1",
        "searchprofile-images-tooltip": "Teedüstü otsminõ",
        "searchprofile-everything-tooltip": "Otsiq egält puult (ka arotuslehti päält)",
        "searchprofile-advanced-tooltip": "Otsiq etteannõtuist nimeruumõst",
        "searchrelated": "samasugunõ",
        "searchall": "kõik",
        "showingresults": "{{PLURAL:$1|'''Üts''' tulõmus|'''$1''' tulõmust}} (tulõmusõst '''$2''' pääle).",
-       "showingresultsnum": "Näüdätäs {{PLURAL:$3|'''1''' tulõmus|'''$3''' tulõmust}} tulõmusõst #'''$2''' pääle.",
        "showingresultsheader": "{{PLURAL:$5|'''$1''' '''$3'''-st vastussõst|Vastusõq '''$1–$2''' '''$3'''-st}} perräküsümisele '''$4'''",
        "search-nonefound": "Perräküsümisele löüdä-äs vastust.",
        "powersearch-legend": "Laendõt otsminõ",
        "servertime": "Serveri aig",
        "guesstimezone": "Võtaq aig võrgokaejast",
        "allowemail": "Lupaq tõisil pruukjil mullõ e-posti saataq",
-       "defaultns": "Otsiq vaikimiisi naist nimeruumõst:",
        "default": "vaikimiisi",
        "prefs-files": "Teedüstüq",
        "youremail": "Suq e-posti aadrõs *",
        "username": "Pruukjanimi:",
-       "uid": "Pruukjanummõr:",
        "prefs-memberingroups": "Kuulus {{PLURAL:$1|rühmä|rühmihe}}:",
        "yourrealname": "Peris nimi *",
        "yourlanguage": "Pruukjapalgõ kiil:",
        "logempty": "Muutmisnimekirän olõ-i sääntsit kiräkotussit.",
        "log-title-wildcard": "Otsiq päälkirjo, miä alostasõq taa tekstiga",
        "allpages": "Kõik artikliq",
-       "alphaindexline": "$1 kooniq $2",
        "nextpage": "Järgmäne lehekülg ($1)",
        "prevpage": "Mineväne lehekülg ($1)",
        "allpagesfrom": "Nakkaq näütämä lehekülest:",
        "tooltip-undo": "\"Võtaq tagasi\" tege seo muutmisõ tühäs ja tege lehe kaemisaknõn vallalõ.\nKokkovõttõria pääle või kirotaq tagasivõtmisõ põhjusõ.",
        "tooltip-summary": "Kirodaq lühkü kokkovõtõq",
        "common.css": "/* Taa lehe pääl om tervet taad vikit muutvit kujonduisi */",
-       "monobook.css": "/* Taa lehe pääl om Monobook-vällänägemist muutvit kujonduisi. */",
        "common.js": "/* Taa lehe kuud pandas mano egäle lehelaatmisõlõ */",
-       "monobook.js": "/* Olõi soovitõt; pruugiq [[MediaWiki:common.js]] */",
        "anonymous": "{{SITENAME}} {{PLURAL:$1|nimeldä pruukja|nimeldä pruukjaq}}",
        "siteuser": "{{SITENAME}} pruukja $1",
        "lastmodifiedatby": "Taad lehte toimõnd' viimäte ”$3” $2 kell $1.",
        "spambot_username": "MediaWiki prahihäötäjä",
        "spam_reverting": "Tagasi pööret viimädse kujo pääle, koh olõ-i linke lehele $1",
        "spam_blanking": "Kõigin kujõn oll' linke lehele $1. Leht tühäs tett.",
-       "skinname-cologneblue": "Array",
        "markaspatrolleddiff": "Märgiq ülekaetus",
        "markaspatrolledtext": "Märgiq toimõndus ülekaetus",
        "markedaspatrolled": "Märgit ülekaetus",
index 13ea5e4..6b870e7 100644 (file)
        "qbedit": "Candjî",
        "qbpageoptions": "Cisse pådje ci",
        "qbmyoptions": "Mes pådjes",
-       "vector-action-addsection": "Radjouter on sudjet",
-       "vector-action-delete": "Disfacer",
-       "vector-action-move": "Displaecî",
-       "vector-action-protect": "Protedjî",
-       "vector-action-undelete": "Rapexhî",
-       "vector-action-unprotect": "Candjî l' protedjaedje",
-       "vector-view-create": "Ahiver",
-       "vector-view-edit": "Candjî",
-       "vector-view-history": "Vey l' istwere",
-       "vector-view-view": "Lére",
-       "vector-view-viewsource": "Vey côde sourdant",
        "actions": "Accions",
        "namespaces": "Espåces di lomaedje",
        "variants": "Variantes",
        "searchmenu-exists": "'''Gn a ddja ene pådje lomêye « [[:$1]] » so ç' wiki ci'''",
        "searchmenu-new": "'''Ahiver l' pådje \"[[:$1]]\" so ç' wiki ci!'''",
        "searchprofile-articles": "Pådjes di contnou",
-       "searchprofile-project": "Pådjes d' aidance et do pordjet",
        "searchprofile-images": "Multimedia",
        "searchprofile-everything": "Tote li waibe",
        "searchprofile-advanced": "Sipepieus",
        "searchprofile-articles-tooltip": "Cweri dins $1",
-       "searchprofile-project-tooltip": "Cweri dins $1",
        "searchprofile-images-tooltip": "Cweri après des fitchîs multimedia",
        "searchprofile-everything-tooltip": "Cweri tot avå l' waibe (dins tos les espåces di lomaedje eyet leu pådjes di copene)",
        "searchprofile-advanced-tooltip": "Tchoezixhoz les espåces di lomaedje ki vos vloz rwaitî pol cweraedje",
        "search-interwiki-more": "(dipus)",
        "searchall": "totafwait",
        "showingresults": "Chal pa dzo {{PLURAL:$1|'''1''' rizultat|'''$1''' rizultats}} a pårti do limero '''$2'''.",
-       "showingresultsnum": "Chal pa dzo {{PLURAL:$3|'''1''' rizultat|'''$3''' rizultats}} a pårti do limero '''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Rizultat '''$1'''|Rizultats '''$1 - $2'''}} foû di '''$3'' po '''$4'''",
        "search-nonefound": "N' a rén di çou ki vs cweroz après",
        "powersearch-legend": "Pus spepieus rcweraedjes",
        "allowemail": "Permete di rçure des emiles d' ôtes uzeus",
        "prefs-searchoptions": "Tchuzes di cweraedje",
        "prefs-namespaces": "Espåces di lomaedje",
-       "defaultns": "Oudonbén dins les spåces di nos shuvants:",
        "default": "prémetou",
        "prefs-files": "Fitchîs",
        "prefs-custom-css": "CSS a vosse môde",
        "prefs-emailconfirm-label": "Acertinaedje di l' emile:",
        "youremail": "Vost emile:",
        "username": "No d' elodjaedje:",
-       "uid": "Limero d' l' uzeu:",
        "prefs-memberingroups": "Mimbe {{PLURAL:$1|do groupe|des groupes}}:",
        "prefs-registration": "Date d' edjîstraedje:",
        "yourrealname": "Li vraiy no da vosse:",
        "logempty": "Rén n' corespond dins l' djournå.",
        "log-title-wildcard": "Cweri emey les tites ki cmincèt avou ç' tecse la",
        "allpages": "Totes les pådjes",
-       "alphaindexline": "di $1 a $2",
        "nextpage": "Pådje shuvante ($1)",
        "allpagesfrom": "Håyner les pådjes a pårti di:",
        "allpagesto": "Håyner les pådjes disk' a:",
        "tooltip-undo": "Li loyén «{{int:editundo}}» permete di disfé li candjmint et drouve li boesse di candjmint e môde prévoeyaedje.\nDj' ô bén, ça permete di disfé l' candjmint et d' mete on messaedje dins l' boesse di rascourti.",
        "tooltip-summary": "Dinez on ptit rascourti",
        "common.css": "/* li côde CSS metou chal serè eployî pa totes les peas et tos les uzeus */",
-       "monobook.css": "/* li côde CSS metou chal serè eployî pa tos les uzeus eployant l' pea «monobook» */",
        "anonymous": "{{PLURAL:$1|Uzeu anonime|Uzeus anonimes}} di {{SITENAME}}",
        "siteuser": "$1, {{GENDER:$2|uzeu d'|uzeuse di}} {{SITENAME}}",
        "anonuser": "$1, uzeu anonime di {{SITENAME}}",
index d9a83f7..6b032f6 100644 (file)
        "qbmyoptions": "Akon mga pakli",
        "faq": "AGG",
        "faqpage": "Project:AGG",
-       "vector-action-addsection": "Igdugang hin himangrawon",
-       "vector-action-delete": "Para-a",
-       "vector-action-move": "Balhina",
-       "vector-action-protect": "Panalipda",
-       "vector-action-undelete": "Igbalik an ginpara",
-       "vector-action-unprotect": "Liwani an panalipod",
-       "vector-view-create": "Himo-a",
-       "vector-view-edit": "Igliwat",
-       "vector-view-history": "Kitaa an kaagi",
-       "vector-view-view": "Basaha",
-       "vector-view-viewsource": "Kitaa an ginkuhaan",
        "actions": "Mga buhat",
-       "vector-more-actions": "Damo pa",
        "namespaces": "Mga ngaran-lat'ang",
        "variants": "Mga pagkadirudilain",
        "navigation-heading": "Menu hit nabigasyon",
        "diff-multi-manyusers": "({{PLURAL:$1|Uska sapit-nahiuna nga rebisyon|$1 nga mga sapit-nanhiuna nga rebisyon}} nga may labaw nga $2 {{PLURAL:$2|gumaramit|mga gumaramit}} in diri ginpapakita)",
        "searchresults": "Mga nabilingan han pagbiling",
        "searchresults-title": "Mga nabilngan han pagbiling para han \"$1\"",
-       "toomanymatches": "Sobra kadamo nga mga igo an ginbalik, alayon pagbuhat hin iba nga pakiana",
        "titlematches": "Parehas an titulo han pakli",
        "textmatches": "Parehas an teksto han pakli",
        "notextmatches": "Waray teksto han pakli an parehas",
index 74e59c4..665f693 100644 (file)
        "qbmyoptions": "Samay tànneef",
        "faq": "Laaj yi ëpp",
        "faqpage": "Project:FAQ",
-       "vector-action-addsection": "Yokkuw tëriit",
-       "vector-action-delete": "Far",
-       "vector-action-move": "Tuddewaat",
-       "vector-action-protect": "Aar",
-       "vector-action-undelete": "Delloowaat",
-       "vector-action-unprotect": "Aaradi",
-       "vector-view-create": "Sos",
-       "vector-view-edit": "Soppi",
-       "vector-view-history": "Wone jaar-jaaram",
-       "vector-view-view": "Jàng",
-       "vector-view-viewsource": "Wone gongikuwaayam",
        "actions": "Jëf",
        "namespaces": "Barabu tur",
        "variants": "Wuute",
        "editundo": "neenal",
        "searchresults": "Ngértey ceet gi",
        "searchresults-title": "Ngértey ceet gu \"$1\"",
-       "toomanymatches": "Dafa bari ay yem-yem. Soppil laaj bi.",
        "titlematches": "Koju xët yi ñoo yam",
        "textmatches": "Mbindu jukki yi ñoo yam.",
        "notextmatches": "Amul benn mbindu jukki bu yam ak ceet gi.",
        "searchmenu-exists": "'''wenn xët wu tudd « [[:$1]] » moo am ci bii wiki'''",
        "searchmenu-new": "'''Sosal xët wii di « [[:$1|$1]] » ci bii wiki !'''",
        "searchprofile-articles": "Xëti ëmbiit",
-       "searchprofile-project": "Xëti Ndimbal ak Sémb",
        "searchprofile-images": "Barixibaarukaay",
        "searchprofile-everything": "Lépp",
        "searchprofile-advanced": "Ceet gu xóot",
        "searchprofile-articles-tooltip": "Seet ci $1",
-       "searchprofile-project-tooltip": "Seet ci $1",
        "searchprofile-images-tooltip": "Seeti dencukaay",
        "searchprofile-everything-tooltip": "Seet fépp (ba ci xëti waxtaanuwaay yi)",
        "searchprofile-advanced-tooltip": "Seet ci barabi tur yi",
        "search-interwiki-default": "$1 ngérte :",
        "search-interwiki-more": "(yeneen)",
        "search-relatedarticle": "Yeneeni ngérte",
-       "searcheverything-enable": "Seet ci barabi tur yépp",
        "searchrelated": "yeneeni ngérte",
        "searchall": "yépp",
        "showingresults": "Woneg <b>$1</b> {{PLURAL:$1|ngérte|ciy ngérte}} doore ko ci #<b>$2</b>.",
-       "showingresultsnum": "Woneg <b>$3</b> {{PLURAL:$3|ngérte|ciy ngérte}} doore ko ci #<b>$2</b>.",
        "showingresultsheader": "{{PLURAL:$5|Ngérte '''$1''' bu '''$3'''|Ngértey '''$1 - $2'''}}  ngir '''$4'''",
        "search-nonefound": "Ceet gi jurul dara.",
        "powersearch-legend": "Ceet gu xóot",
        "allowemail": "Joxeel ndigël ngir  yeneeni jëfandikukat man laa yónne bataaxal",
        "prefs-searchoptions": "Tànneefi Ceet",
        "prefs-namespaces": "dig-digalub tur",
-       "defaultns": "Walla nga seet ci barabi tur yi:",
        "default": "wàccaale",
        "prefs-files": "Dencukaay",
        "prefs-custom-css": "CSS yees jëmmal",
        "prefs-emailconfirm-label": "Dëggalug sa m-bataaxal :",
        "youremail": "Sa màkkaanub m-bataaxal :",
        "username": "Turu jëfandikukat :",
-       "uid": "Limu Jëfandikukat :",
        "prefs-memberingroups": "Céru {{PLURAL:$1|mbooloo|mbooloo yu}} :",
        "prefs-registration": "Taariixu sag mbindu :",
        "yourrealname": "Sa tur dëgg*",
        "logempty": "Dara nekkul ci jaar-jaaru xët wii.",
        "log-title-wildcard": "Seet ay koj yu tambalee mii mbind",
        "allpages": "Xët yépp",
-       "alphaindexline": "$1 ba $2",
        "nextpage": "Xët wi toftal ($1)",
        "prevpage": "Xët wi jiitu ($1)",
        "allpagesfrom": "Wone xët yi tambalee ci:",
        "whatlinkshere-filters": "Seggukaay",
        "blockip": "Téyeb jëfandikukat",
        "blockip-legend": "Téye jëfandikukat bi",
-       "ipadressorusername": "Màkkaanu IP walla turu jëfandikukat:",
+       "ipaddressorusername": "Màkkaanu IP walla turu jëfandikukat:",
        "ipbexpiry": "Diiru téye gi",
        "ipbreason": "Ngirte :",
        "ipbreason-dropdown": "* Ngirtey téye yi ëpp\n** Ag caay-caay\n** Dugalub xibaar yu dëgguwul\n** Farug ëmbitu ay xët\n** Dugalub lëkkalekaay ngir yëgle ay dal\n** Dugalub ëmbit yu amul-njariñ\n** Di jéem a xiixaan walla di xuloo ak nit ñi\n** Ëppal ci sosi sàq yu bari\n** Turu jëfandikukat buñu fi nanguwul",
        "tooltip-rollback": "\"Delloowaat\" dafay neenal coppitey cërukat bi mujj ci xët wii ci benn cuq.",
        "tooltip-undo": "\"Neenal\" dafay far coppite yi te ubbi palanteeru coppite bi ci anamug wonendi.\nDafay tax nga man a bind ngirte li ci boyotu tënk bi.",
        "common.css": "/* CSS yiñ def fii dañuy am ay njeexit ci col yépp  */",
-       "cologneblue.css": "/* CSS yiñ def fii dañuy am ay njeexit ci jëfandikukatu col gu Cologne Blue */",
-       "monobook.css": "/* CSS yiñ def fii dañuy am ay njeexit ci jëfandikukatu col gu Monobook. */",
-       "modern.css": "/* CSS yiñ def fii dañuy am ay njeexit ci jëfandikukatu col gu Modern */",
        "common.js": "/* Bépp JavaScript buñ fi duggal, xët yéppa koy yeb ak jëfandikukat bumu manti doon. */",
-       "cologneblue.js": "/* Bépp JavaScript buñ fi duggal jëfandikukat yiy jëfandikoo col gu Cologne Blue keppa koy yeb */",
-       "monobook.js": "/*Bépp JavaScript buñ fi duggal jëfandikukat yiy jëfandikoo col gu Monobook keppa koy yeb. */",
-       "modern.js": "/* Bépp JavaScript buñ fi duggal jëfandikukat yiy jëfandikoo col gu Modern keppa koy yeb */",
        "anonymous": "Benn walla ay jëfandikukat yu binduwul yu {{SITENAME}}",
        "siteuser": "$1, Jëfandikukatu {{SITENAME}}",
        "lastmodifiedatby": "$3 moo mujje soppi xët wi ci $1, ci $2.",
index ed77249..5778823 100644 (file)
@@ -12,7 +12,9 @@
                        "十弌",
                        "아라",
                        "Mywood",
-                       "Cwek"
+                       "Cwek",
+                       "Duolaimi",
+                       "Impersonator 1"
                ]
        },
        "tog-underline": "鏈接下橫線:",
        "viewyourtext": "你侬好望也好畀'''你侬编个'''复制到箇页:",
        "protectedinterface": "箇页为箇维基个软件提供界面文本,锁牢定防乱用。\n加改全部维基个译文,用[//translatewiki.net/ translatewiki.net],MediaWiki软件个本地化计划。",
        "editinginterface": "'''警告:''' 侬来里编写个页面是畀软件用个界面文本。箇页变化会影响各许人个界面样子。假使要畀全部维基翻译,用 [//translatewiki.net/wiki/Main_Page?setlang=zh-hans translatewiki.net],MediaWiki软件个本地化计划。",
-       "cascadeprotected": "箇只页面拨保护拉许,因为箇只页面拨下底已经标注“联锁保护”个{{PLURAL:$1|一只|多只}}被保护页面包含:\n$2",
+       "cascadeprotected": "箇只页面拨保护拉许,因为箇只页面拨下底已经标注“级联保护”个{{PLURAL:$1|一只|多只}}被保护页面包含:\n$2",
        "namespaceprotected": "侬无没编辑'''$1'''名字空间里向页面个权限。",
        "customcssprotected": "箇CSS页你呒处编,箇页有各许用户个私人设置。",
        "customjsprotected": "箇JavaScript页你呒处编,箇页有各许用户个私人设置。",
        "readonlywarning": "'''警告:数据库锁定垃许维护,侬箇歇弗好保存侬个修改。'''侬作兴希望先拿本段文字复制并保存到文本文件,等歇再修改。\n\n管理员有如下解释:$1",
        "protectedpagewarning": "'''警告:此页已经畀保护,只有拥有管理员权限个用户再好修改。'''\n最近个日志垃拉下底提供以便参考:",
        "semiprotectedpagewarning": "'''注意:''' 本页面畀锁定,仅限注册用户编辑。\n最近个日志垃拉下底提供以便参考:",
-       "cascadeprotectedwarning": "警告:本页已经畀保护,只有拥有管理员权限个用户再好修改,因为本页已畀下底眼连锁保护个{{PLURAL:$1|一只|多只}}页面所包含:",
+       "cascadeprotectedwarning": "警告:本页已经畀保护,只有拥有管理员权限个用户再好修改,因为本页已畀下底眼级联保护个{{PLURAL:$1|一只|多只}}页面所包含:",
        "titleprotectedwarning": "'''警告:本页面已畀锁定,需要[[Special:ListGroupRights|指定权限]]方可创建。'''\n最近个日志垃拉下底提供以便参考:",
        "templatesused": "箇页有{{PLURAL:$1|个模板}}:",
        "templatesusedpreview": "{{PLURAL:$1|只模板}}垃拉箇趟预览里向拨使用:",
        "searchrelated": "相关",
        "searchall": "全部",
        "showingresults": "下头显示从第<b>$2</b>条开始个<b>$1</b>条结果:",
-       "showingresultsnum": "下头显示从第<b>$2</b>条开始个<b>$3</b>条结果:",
        "showingresultsheader": "对'''$4'''个{{PLURAL:$5|第'''$1'''至第'''$3'''项结果|第'''$1-$2'''项,共'''$3'''个结果}}",
        "search-nonefound": "查询呒有结果。",
        "powersearch-legend": "高级搜索",
        "prefixindex": "全部带前缀个页面",
        "shortpages": "短页面",
        "longpages": "长页面",
-       "protectedpages": "å·²保护页面",
-       "protectedtitles": "å·²保护个标题",
+       "protectedpages": "å\8f\97保护页面",
+       "protectedtitles": "å\8f\97保护个标题",
        "listusers": "用户列表",
        "listusers-creationsort": "照建個日子排",
        "newpages": "新页",
        "rollbackfailed": "恢复失败",
        "revertpage": "恢复[[Special:Contributions/$2|$2]] ([[User talk:$2|讲张]])个改动;恢复到[[User:$1|$1]]个上一版本",
        "protectlogpage": "保护日志",
-       "protectedarticle": "保护“[[$1]]”",
+       "protectedarticle": "保护“[[$1]]”",
        "modifiedarticleprotection": "“[[$1]]”个保护等级改好哉",
        "prot_1movedto2": "[[$1]]捅到[[$2]]",
        "protectcomment": "理由:",
        "protect-fallback": "需要“$1”个许可",
        "protect-level-autoconfirmed": "弗准新用戶搭還朆註冊個用戶",
        "protect-level-sysop": "只准管理員",
-       "protect-summary-cascade": "联锁",
+       "protect-summary-cascade": "级联",
        "protect-expiring": "终止于$1(UTC)",
-       "protect-cascade": "保护本页里向包含个页面(连锁保护)",
+       "protect-cascade": "保护本页里向包含个页面(级联保护)",
        "protect-cantedit": "侬呒此更改迭只页面个保护等级,因为侬呒没权限编辑渠。",
        "protect-othertime": "各許時間:",
        "protect-othertime-op": "各許時間",
index 0cd9595..596b8d7 100644 (file)
        "qbmyoptions": "Тана халхс",
        "faq": "Юм би",
        "faqpage": "Project:Юм би",
-       "vector-action-addsection": "Төриг немх",
-       "vector-action-delete": "Һарһх",
-       "vector-action-move": "Көндәх",
-       "vector-action-protect": "Харсх",
-       "vector-action-undelete": "Һарһх биш",
-       "vector-action-unprotect": "Харсх биш",
-       "vector-view-create": "Бүтәх",
-       "vector-view-edit": "Чиклх",
-       "vector-view-history": "Тууҗин хәләвр",
-       "vector-view-view": "Умшлһн",
-       "vector-view-viewsource": "Темдгллһнә хәләвр",
        "actions": "Үүлд",
        "namespaces": "Нернә ус",
        "variants": "Суңһлтс",
        "nextn": "дарук {{PLURAL:$1|$1}}",
        "viewprevnext": "Гүүһәд хәләх ($1 {{int:pipe-separator}} $2) ($3)",
        "searchprofile-articles": "Зүүлс",
-       "searchprofile-project": "Цәәлһлһнә болн төсвин халхс",
        "searchprofile-images": "Үзгдл-соңсвр",
        "searchprofile-everything": "Цуһар",
        "searchprofile-articles-tooltip": "$1 гидг зүүлд хәәх",
-       "searchprofile-project-tooltip": "$1 гидг төсвд хәәх",
        "searchprofile-images-tooltip": "Боомг хәәх",
        "search-result-size": "$1 ({{PLURAL:$2|$2 үг|$2 үгмүд|$2 үгмүд}})",
        "search-result-score": "Әдлцән: $1 %",
        "search-interwiki-caption": "Садта проектмуд",
        "search-interwiki-default": "$1 ашуд:",
        "search-interwiki-more": "(дәкәд)",
-       "searcheverything-enable": "Цуг нернә ууд хәәх",
        "searchall": "цуг",
        "powersearch-legend": "Күчн хәәлһн",
        "powersearch-ns": "Эн нернә у дотран хәәх:",
        "prefs-emailconfirm-label": "E-mail батлһн:",
        "youremail": "E-mail хайг:",
        "username": "Демнчна нер:",
-       "uid": "Демнчна тойг (ID):",
        "prefs-memberingroups": "{{PLURAL:$1|1=Багин|Багдудин}} хүв:",
        "prefs-registration": "Темдглҗ  бүртклһнә цаг:",
        "yourrealname": "Үнн нерн:",
        "booksources-go": "Ор",
        "log": "Сеткүлс",
        "allpages": "Цуг халхс",
-       "alphaindexline": "$1 хөөн, $2 күртл",
        "prevpage": "Урдк халх ($1)",
        "allpagesfrom": "Эн эклцта халхс асрх:",
        "allpagesto": "Энд асрлһиг зогсх:",
index ecf364b..c8c247b 100644 (file)
        "qbpageoptions": "თე ხასჷლა",
        "qbmyoptions": "ჩქიმი ხასჷლეფი",
        "faq": "ბხშირი კითხვეფი",
-       "vector-action-addsection": "თემაშ მიშაძინა",
-       "vector-action-delete": "ლასუა",
-       "vector-action-move": "გინოღალა",
-       "vector-action-protect": "თხილუა",
-       "vector-view-create": "დორსხუაფა",
-       "vector-view-edit": "რედაქტირაფა",
-       "vector-view-history": "ისტორიაშ ძირაფა",
-       "vector-view-view": "კითხირი",
-       "vector-view-viewsource": "ქიძირე წყუ",
        "actions": "მოქმედალეფი",
        "namespaces": "ჯოხოეფიშ ოფირჩა",
        "variants": "ვარიანტეფი",
        "searchmenu-exists": "თე ვიკის \"[[:$1]]\" ჯოხოთ ხასჷლა რე",
        "searchmenu-new": "''ქჷდარსხი \"[[:$1]]\" ხასჷლა თე ვიკის'''",
        "searchprofile-articles": "სტატიეფი",
-       "searchprofile-project": "მოხვარაშ დო პროექტიშ ხასჷლეფი",
        "searchprofile-images": "მულტიმედია",
        "searchprofile-everything": "ირფელი",
        "searchprofile-advanced": "გაუჯგუშებული",
        "searchprofile-articles-tooltip": "დოგორი $1-ს",
-       "searchprofile-project-tooltip": "გორუა $1-ის",
        "searchprofile-images-tooltip": "დოგორი ფაილეფი",
        "searchprofile-everything-tooltip": "გორუა არძო ხასილას (ოჩიებელი ხასჷლეფიშ მეკოროცხილო)",
        "searchprofile-advanced-tooltip": "გორუა მახვარებუშ გენჭყილ ჯოხოეფიშ ოფირჩას",
        "log": "ჟურნალეფ",
        "all-logs-page": "ირ ჟურნალ",
        "allpages": "არძა ხასილა",
-       "alphaindexline": "$1-იშე $2-შა",
        "nextpage": "უკულ ხასილა ($1)",
        "prevpage": "წოხლენ ხასილა ($1)",
        "allpagesfrom": "გეგმარჩქინ ხასილეფ დოჭყაფილ:",
index bdbe3de..816bf32 100644 (file)
        "undo-summary-username-hidden": "זײַט מבטל ווערסיע $1 פון א באהאלטענעם באניצער",
        "cantcreateaccounttitle": "מען קען נישט באשאפֿן קאנטע",
        "cantcreateaccount-text": "שאפֿן קאנטעס פון דעם IP אדרעס (<b>$1</b>) איז געווארן בלאקירט דורך [[User:$3|$3]]. די סיבה געגעבן פֿון $3 איז \"$2\".",
+       "cantcreateaccount-range-text": "שאפן קאנטעס פון IP אדרעסן אינעם אפשטאנד '''$1''', וואס נעמט אײַן אײַער IP אדרעס ('''$4'''), איז בלאקירט געווארן דורך [[User:$3|$3]].\n\nדער גרונט געגעבן פון $3 איז ''$2''",
        "viewpagelogs": "װײַזן לאָג-ביכער פֿאַר דעם בלאַט",
        "nohistory": "נישטא קיין ענדערן היסטאריע פאר דעם בלאט.",
        "currentrev": "איצטיגע ווערסיע",
        "revdelete-text-text": "אויסגעמעקטע ווערסיעס וועלן נאך דערשיינען אין דער בלאט־היסטאריע, אבער טייל פון זייער אינהאלט וועט נישט זײַן צוגאנגבאר צום עולם.",
        "revdelete-text-file": "אויסגעמעקטע טעקע ווערסיעס וועלן נאך דערשיינען אין דער בלאט־היסטאריע, אבער טייל פון זייער אינהאלט וועט נישט זײַן צוגאנגבאר צום עולם.",
        "logdelete-text": "אויסגעמעקטע לאגביכער־געשעענישן וועלן נאך דערשיינען אינעם לאגבוך, אבער טייל פון זייער אינהאלט וועט נישט זײַן צוגאנגבאר צום עולם.",
+       "revdelete-text-others": "אנדערע סיסאפן ביי {{SITENAME}} וועלן נאך קענען צוקומען צום באהאלטענעם אינהאלט און קענען אים צוריקשטעלן דורכן זעלבן אייבערפלאך, סײַדן ווען מען שטעלט נאך באשרענקונגען.",
        "revdelete-confirm": "זייט אזוי גוט און באשטעטיקט אז דאס איז טאקע אייער כוונה, אז איר פארשטייט די קאנסעקווענצן, און אז איר טוט דאס לויט  [[{{MediaWiki:Policy-url}}|דער פאליסי]].",
        "revdelete-suppress-text": "אונטערדרוקן זאל בלויז גענוצט ווערן '''נאר''' אין די פאלגנדע פעלער:\n* אינפארמאציע וואס קען זיין מוציא שם רע\n* אויפדעקונג פון פריוואטקייט אינפארמאציע\n*: ''היים אדרעסן, טעלעפאן נומערן, נאציאנאלע אידענטיפיקאציע נומערן, א.א.וו.''",
        "revdelete-legend": "שטעלט ווייזונג באגרענעצונגען",
        "searchrelated": "פארבינדן",
        "searchall": "אלץ",
        "showingresults": "ווייזן ביז {{PLURAL:$1|רעזולטאט '''איינס'''|'''$1''' רעזולטאטן}} אנגעפאנגן פון נומער #'''$2''':",
-       "showingresultsnum": "ווייזן {{PLURAL:$3|רעזולטאט '''איינס'''|'''$3''' רעזולטאטן}} אנגעפאנגן פון נומער #'''$2''':",
+       "showingresultsinrange": "ווײַזן אונטן ביז {{PLURAL:$1|<strong>1</strong> רעזולטאט|<strong>$1</strong> רעזולטאטן}} אין גרייך #<strong>$2</strong> ביז #<strong>$3</strong>.",
        "showingresultsheader": "{{PLURAL:$5|רעזולטאַט '''$1''' פֿון '''$3'''| רעזולטאַטן '''$1 - $2''' פֿון '''$3'''}} פֿאַר '''$4'''",
        "search-nonefound": "נישטא קיין רעזולטאטן פֿאַר דער שאלה.",
        "powersearch-legend": "ווײַטהאלטן זוכן",
        "prefs-tokenwatchlist": "טאקן",
        "prefs-diffs": "צווישנשיידן",
        "prefs-help-prefershttps": "דער פרעפערענץ וועט ארבעטן ביי אײַער נעקסטער ארײַנלאגירונג.",
+       "prefs-tabs-navigation-hint": "טיפ: איר קענט ניצן די רעכטס און לינקס פייל־קלאווישן צו נאוויגירן צווישן די צינגלעך אין דער צינגלעך־ליסטע.",
        "email-address-validity-valid": "ע-פּאָסט אַדרעס זעט אויס גילטיק",
        "email-address-validity-invalid": "לייגט אַרײַן א גילטיקן ע־פאסט אַדרעס",
        "userrights": "באַניצער רעכטן פֿאַרוואַלטערשאפט",
        "recentchanges-feed-description": "גייט נאך די לעצטע ענדערונגען צו דער וויקי אין דעם בלאט.",
        "recentchanges-label-newpage": "די רעדאַקטירונג האט באשאפֿן א נײַעם בלאַט",
        "recentchanges-label-minor": "דאָס איז אַ מינערדיקע רעדאַקטירונג",
-       "recentchanges-label-bot": " די רעדאַקטירונג האט אויסגעפירט א באט",
+       "recentchanges-label-bot": "די רעדאַקטירונג האט אויסגעפירט א באט",
        "recentchanges-label-unpatrolled": "די רעדאקטירונג איז נאך נישט נאכגעקוקט",
        "recentchanges-label-plusminus": "בלאט גרייס געענדערט מיט דער צאל בייטן",
        "recentchanges-legend-heading": "'''לעגענדע:'''",
        "backend-fail-connect": "מ'קען נישט פארבינדן צום שפייכלער־בעקענד \"$1\".",
        "backend-fail-internal": "אן אומבאוואוסטער פֿעלער האט פאסירט אין שפייכלער־בעקענד \"$1\".",
        "backend-fail-contenttype": "מ'קען נישט פעסטשטעלן דעם אינהאלט טיפ פון דער טעקע צו שפייכלערן ביי \"$1\".",
+       "filejournal-fail-dbquery": "נישט געווען מעגלעך צו דערהײַנטיקן די שזור אל־דאטנבאזע פארן אײַנשפײַכלערונג־רעזערוו \"$1\".",
        "lockmanager-notlocked": "מ'קען נישט אויפֿשליסן \"$1\"; ער איז נישט פֿארשלאסן.",
        "lockmanager-fail-closelock": "נישט מעגלעך פארשפארן שלאס טעקע פאר \"$1\".",
        "lockmanager-fail-deletelock": "נישט מעגלעך אויסמעקן שלאס טעקע פאר \"$1\".",
        "uploadstash-errclear": "אוועקנעמען די טעקעס דורכגעפאלן.",
        "uploadstash-refresh": "דערפֿרישן די רשימה פון טעקעס",
        "img-auth-accessdenied": "צוטריט אָפגעזאָגט",
+       "img-auth-notindir": "געשיכטעס שטעג איז נישט אין דער קאנפיגורטער ארויפלאד־דירעקטאריע.",
        "img-auth-badtitle": "קען נישט שאפֿן א גילטיקן טיטל פֿון \"$1\"",
        "img-auth-nologinnWL": "איר זענט נישט ארײַנלאגירט און \"$1\" איז נישט אין דער ווײַסער ליסטע.",
        "img-auth-nofile": "טעקע \"$1\" עקזיסטירט נישט.",
        "double-redirect-fixer": "מתקן ווײַטערפֿירונגען",
        "brokenredirects": "צעבראָכענע ווײַטערפֿירונגען",
        "brokenredirectstext": "די פֿאלגנדע ווײַטערפֿירונגען פֿאַרבינדן צו בלעטער וואס עקזיסטירן נאך נישט:",
-       "brokenredirects-edit": "×¢× ×\93×¢רן",
+       "brokenredirects-edit": "רע×\93×\90ַק×\98×\99רן",
        "brokenredirects-delete": "אויסמעקן",
        "withoutinterwiki": "בלעטער אן שפראך פֿארבינדונגען",
        "withoutinterwiki-summary": "די פֿאלגנדע בלעטער פֿאַרבינדן נישט מיט אַנדערע שפראַך ווערסיעס",
        "creditspage": "בלאט קרעדיטס",
        "nocredits": "נישט פאראן קיין אינפארמאציע פאר דעם בלאט.",
        "spamprotectiontitle": "ספעם באשיצונג פילטער",
+       "spamprotectionmatch": "די פאלגנדער טעקסט האט געלאזט אין גאנג אונזער ספאם־פילטער: $1",
        "spambot_username": "מעדיעוויקי ספאם פוצן",
        "spam_reverting": "צוריקגעשטעלט צו דער לעצטער ווערסיע אן לינקען צו $1",
        "spam_blanking": "אלע רעוויזיעס האבן לינקען צו $1, אויסליידיקן",
        "spam_deleting": "אלע רעוויזיעס האבן לינקען צו $1, אויסמעקן",
+       "simpleantispam-label": "אנטי־ספאם קאנטראלע.\n'''נישט''' אײַנגעבן קיין אײַנגאב דא!",
        "pageinfo-title": "אינפֿאָרמאַציע פֿאַר \"$1\"",
        "pageinfo-not-current": "קען ווייזן אינפארמאציע נאר פאר דער לויפיקער רעוויזיע.",
        "pageinfo-header-basic": "גרונטלעכע אינפֿארמאַציע",
        "exif-giffilecomment": "GIF טעקע הערה",
        "exif-intellectualgenre": "ארט  איינהייט",
        "exif-subjectnewscode": "טעמע קאד",
+       "exif-scenecode": "IPTC סצענע־קאד",
+       "exif-event": "געוויזענער געשעעניש",
        "exif-organisationinimage": "אויסגעשטעלטע ארגאניזאציע",
        "exif-personinimage": "אויסגעשטעלטער מענטש",
+       "exif-originalimageheight": "בילד־הייך פארן צעשנײַדן",
+       "exif-originalimagewidth": "בילד־ברייט פארן צעשנײַדן",
        "exif-compression-1": "אומ-צאמגעקוועטשט",
        "exif-copyrighted-true": "געשיצט מיט קאפירעכט",
        "exif-copyrighted-false": "קאפירעכט סטאטוס נישט געשטעלט",
        "exif-lightsource-9": "פֿייַן וועטער",
        "exif-lightsource-10": "פאַרוואָלקנטער וועטער",
        "exif-lightsource-11": "שאָטן",
+       "exif-lightsource-255": "אנדער ליכטקוואל",
+       "exif-flash-fired-0": "קיין פלאש",
        "exif-flash-mode-3": "אויטא מאדע",
        "exif-flash-function-1": "קיין בליץ־פונקציע",
        "exif-flash-redeye-1": "רויט־אויג רעדוקציע",
        "watchlistedit-raw-done": "אייער אויפֿפאַסונג ליסטע איז געווארן דערהײַנטיקט",
        "watchlistedit-raw-added": "{{PLURAL:$1|1 טיטל איז|$1 טיטלען זענען}} געווען צוגעלייגט:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1 טיטל איז|$1 טיטלען זענען}} געווען אַראָפגענומען:",
+       "watchlistedit-clear-title": "אפגעראמט די אויפפאסן ליסטע",
        "watchlistedit-clear-legend": "ליידיקן די אויפפאסן ליסטע",
+       "watchlistedit-clear-explain": "אלע בלעטער וועט מען אראפנעמען פון אײַער אויפפאסונג־ליסטע",
        "watchlistedit-clear-titles": "טיטלען:",
        "watchlisttools-clear": "ליידיקן די אויפפאסן ליסטע",
        "watchlisttools-view": "ווייזן שייכדיגע ענדערונגען",
        "duplicate-defaultsort": "'''ווארענונג:''' גרונט סארטשליסל \"$2\" פֿאָרט איבערן פֿריערדיגן גרונט סארטשליסל \"$1\".",
        "version": "ווערסיע",
        "version-extensions": "אינסטאלירטע פארברייטערונגען",
+       "version-skins": "אינסטאלירטע באניצער־אייבערפלאכן",
        "version-specialpages": "ספעציעלע בלעטער",
        "version-parserhooks": "פארזער פארברייטונגען",
        "version-variables": "וואַריאַבלען",
        "version-antispam": "ספאם פארמיידן",
-       "version-skins": "באניצער־אייבערפלאכן",
        "version-other": "אנדער",
        "version-hooks": "Hook סטרוקטורן",
        "version-parser-extensiontags": "פארזער פארברייטערן טאַגן",
        "version-hook-name": "נאמען פון hook",
        "version-version": "(ווערסיע $1)",
+       "version-no-ext-name": "[קיין נאמען]",
        "version-license": "מעדיעוויקי ליצענץ",
        "version-ext-license": "ליצענץ",
        "version-ext-colheader-name": "פארברייטערונג",
+       "version-skin-colheader-name": "סקין",
        "version-ext-colheader-version": "ווערסיע",
        "version-ext-colheader-license": "ליצענץ",
        "version-ext-colheader-description": "באַשרײַבונג",
        "version-ext-colheader-credits": "שרייבער",
+       "version-license-title": "ליצענץ פאר $1",
        "version-poweredby-others": "אַנדערע",
        "version-poweredby-translators": "translatewiki.net איבערזעצער",
        "version-credits-summary": "מיר ווילן אנערקענען די פֿאלגנדע מענטשן פֿאר זייער בײַשטײַערוג צו [[Special:Version|מעדיעוויקי]].",
index ff7d7c0..a67e3d9 100644 (file)
        "searchrelated": "tóbáramu",
        "searchall": "gbogbo",
        "showingresults": "Ìfihàn nísàlẹ̀ títí dé {{PLURAL:$1|èsì '''1'''|àwọn èsì '''$1'''}} láti ìbẹ̀rẹ̀ ní #'''$2'''.",
-       "showingresultsnum": "Ìfihàn nísàlẹ̀ {{PLURAL:$3|èsì '''1'''|àwọn èsì '''$3'''}} láti ìbẹ̀rẹ̀ ní #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Èsì '''$1''' nínú ''''$3'''|Àwọn èsì '''$1 - $2''' nínú '''$3'''}} fún '''$4'''",
        "search-nonefound": "Kò sí àwọn èsì kankan tóbáramu mọ́ ìtọrọ.",
        "powersearch-legend": "Àwárí kíkúnrẹ́rẹ́",
index 43d9d42..821f78c 100644 (file)
        "searchrelated": "有關",
        "searchall": "全部",
        "showingresults": "'自#'''$2'''起顯示最多'''$1'''個結果。",
-       "showingresultsnum": "自#'''$2'''起顯示'''$3'''個結果。",
        "showingresultsheader": "對'''$4'''嘅{{PLURAL:$5|第'''$1'''到第'''$3'''項結果|第'''$1 - $2'''項,共'''$3'''項結果}}",
        "search-nonefound": "響個查詢度無結果配合。",
        "powersearch-legend": "進階搵嘢",
        "duplicate-defaultsort": "警告: 預設嘅排序鍵 \"$2\" 覆蓋之前嘅預設排序鍵 \"$1\"。",
        "version": "版本",
        "version-extensions": "裝咗嘅擴展",
+       "version-skins": "畫面",
        "version-specialpages": "特別頁",
        "version-parserhooks": "語法鈎",
        "version-variables": "變數",
        "version-antispam": "垃圾防止",
-       "version-skins": "畫面",
        "version-other": "其他",
        "version-mediahandlers": "媒體處理器",
        "version-hooks": "鈎",
index ff2b119..29bb0b0 100644 (file)
        "qbmyoptions": "Mien opties",
        "faq": "FAQ (veehestelde vraehen)",
        "faqpage": "Project:Veehestelde vraehen",
-       "vector-action-addsection": "Voeg kopje toe",
-       "vector-action-delete": "Wissen",
-       "vector-action-move": "Verschuuf",
-       "vector-action-protect": "Bescherm",
-       "vector-action-undelete": "Plaets truhhe",
-       "vector-action-unprotect": "Beveiligienge anpass'n",
-       "vector-view-create": "Anmaeken",
-       "vector-view-edit": "Bewerk",
-       "vector-view-history": "Geschiedenisse bekiek'n",
-       "vector-view-view": "Lezen",
-       "vector-view-viewsource": "Brontekst bekieken",
        "actions": "Handeliengen",
        "namespaces": "Naemruumtes",
        "variants": "Varianten",
        "editundo": "onedaene maeken",
        "searchresults": "Zoekresultaoten",
        "searchresults-title": "Zuikresultaot'n vò \"$1\"",
-       "toomanymatches": "Der waeren te vee resultaoten. Probeer asjeblieft een aore zoekopdracht.",
        "titlematches": "Overeênkomst mie onderwerp",
        "textmatches": "Overeênkomst mie inoud",
        "notextmatches": "Hin pagina's evon'n",
        "searchmenu-exists": "'''Er is 'n pagina genaemd \"[[:$1]]\" op deêze wiki.'''",
        "searchmenu-new": "'''De pagina \"[[:$1]]\" anmaek'n op deêze wiki.'''",
        "searchprofile-articles": "Inhoudelike pagina's",
-       "searchprofile-project": "Hilp- en projectpagina's",
        "searchprofile-images": "Multimedia",
        "searchprofile-everything": "Alles",
        "searchprofile-advanced": "Uutebreid",
        "searchprofile-articles-tooltip": "Zoek'n in $1",
-       "searchprofile-project-tooltip": "Zoek'n in $1",
        "searchprofile-images-tooltip": "Zoek nae bestand'n",
        "searchprofile-everything-tooltip": "Aolle inhoud dòzoek'n (inclusief overlegbladzies)",
        "searchprofile-advanced-tooltip": "Zoek'n in angegeev'n naemruumtes",
        "searchrelated": "gerelateerd",
        "searchall": "aolle",
        "showingresults": "Ieronder {{PLURAL:$1|sti '''1''' resultaot|staen '''$1''' resultaoten}} vanof #'''$2'''.",
-       "showingresultsnum": "Ieronder {{PLURAL:$3|sti '''1''' resultaot|staen '''$3''' resultaoten}} vanof #'''$2'''.",
        "showingresultsheader": "{{PLURAL:$5|Resultaot '''$1''' von '''$3'''|Resultaot'n '''$1 - $2''' von '''$3'''}} vò '''$4'''",
        "search-nonefound": "Er zin geen resultaot'n vò je zoekopdracht.",
        "powersearch-legend": "Uutebreid zoeken",
        "servertime": "Servertied",
        "guesstimezone": "Vanuut de browser toevoehen",
        "allowemail": "Laet e-mail van aore gebrukers toe.",
-       "defaultns": "Standard in deêze naemruum'n zoeken:",
        "default": "standard",
        "prefs-files": "Bestan'n",
        "youremail": "Jen e-mailadres:",
        "username": "Gebrukersnaem:",
-       "uid": "Gebrukersnummer:",
        "yourrealname": "Jen echen naam:",
        "yourlanguage": "Taele:",
        "yournick": "Tekst voe onderteêkenienge:",
        "log": "Logboek'n",
        "alllogstext": "Saemengesteld overzicht van de wis-, bescherm-, blokkeer- en gebrukerslechtenlogboeken.\nJe kan 't overzicht bepaelen deu 'n soôrte logboek, 'n gebrukersnaem of eên bladzie uut te kiezen.",
        "allpages": "Aolle bladzies",
-       "alphaindexline": "$1 toet $2",
        "nextpage": "Volgende bladzie ($1)",
        "allpagesfrom": "Laet bladzies zieë vanaf:",
        "allarticles": "Aolle artikels",
index 62c3efe..8139cf8 100644 (file)
@@ -75,7 +75,9 @@
                        "阿pp",
                        "Hudafu",
                        "아라",
-                       "Mywood"
+                       "Mywood",
+                       "Impersonator 1",
+                       "Duolaimi"
                ]
        },
        "tog-underline": "链接下划线:",
        "viewyourtext": "您可以查看并复制<strong>您对此页面作出编辑后</strong>的源代码:",
        "protectedinterface": "该页提供此wiki软件的界面文字,它已被保护以防止恶意修改。\n如欲修改所有wiki的翻译,请到[//translatewiki.net/ translatewiki.net]上的MediaWiki本地化计划。",
        "editinginterface": "'''警告:'''您正在编辑的页面是用于提供软件的界面文字。\n改变此页将影响其他在此wiki上的用户界面外观。\n如欲修改所有wiki的翻译,请到[//translatewiki.net/ translatewiki.net]上的MediaWiki本地化计划。",
-       "cascadeprotected": "此页é\9d¢å·²è¢«ä¿\9dæ\8a¤ï¼\8cå\9b ä¸ºè¿\99个页é\9d¢è¢«ä»¥ä¸\8bå·²æ \87注â\80\9cè\81\94é\94\81ä¿\9dæ\8a¤â\80\9dç\9a\84{{PLURAL:$1|ä¸\80个|å¤\9a个}}被ä¿\9dæ\8a¤é¡µé\9d¢å\8c\85å\90«ï¼\9a\n$2",
+       "cascadeprotected": "æ\9c¬é¡µé\9d¢å·²ç»\8få\8f\97å\88°ä¿\9dæ\8a¤ï¼\8cä¸\8dè\83½ç¼\96è¾\91ï¼\8cå\9b ä¸ºå®\83被åµ\8cå\85¥äº\86以ä¸\8bå\90¯ç\94¨â\80\9c级è\81\94â\80\9dé\80\89项ç\9a\84å\8f\97ä¿\9dæ\8a¤{{PLURAL:$1|页é\9d¢}}ï¼\9a$2",
        "namespaceprotected": "您没有权限编辑'''$1'''名字空间内的页面。",
        "customcssprotected": "您没有权限编辑此CSS页面,因为它包含另一位用户的个人设置。",
        "customjsprotected": "您没有权限编辑此JavaScript页面,因为它包含另一位用户的个人设置。",
        "readonlywarning": "警告:数据库被锁定以进行维护,所以您目前将无法保存您的修改。'''您或许希望将本段文字先剪贴并保存到文本文件,并在稍后进行修改。\n\n锁定数据库的管理员有如下解释:$1",
        "protectedpagewarning": "'''警告:本页面已被保护,只有拥有管理员权限的用户可以编辑。'''下面提供最后的日志条目以供参考:",
        "semiprotectedpagewarning": "'''注意:'''本页面已被保护,只有注册用户可以编辑。下面提供最后的日志条目以供参考:",
-       "cascadeprotectedwarning": "'''警告:'''本页面已被保护,只有拥有管理员权限的用户可以编辑,因为其包含于以下受连锁保护的{{PLURAL:$1|页面}}:",
+       "cascadeprotectedwarning": "<strong>警告:</strong>本页面已经被保护,只有拥有管理员权限的用户可以编辑,因为它被嵌入了以下启用级联保护的{{PLURAL:$1|页面}}:",
        "titleprotectedwarning": "'''警告:本页面已被保护,创建本页面需要[[Special:ListGroupRights|特定权限]]。'''下面提供最后的日志条目以供参考:",
        "templatesused": "该页面使用的{{PLURAL:$1|模板}}:",
        "templatesusedpreview": "本预览使用的{{PLURAL:$1|模板}}:",
        "templatesusedsection": "该段落使用的{{PLURAL:$1|模板}}:",
-       "template-protected": "ï¼\88å·²保护)",
-       "template-semiprotected": "(半保护)",
+       "template-protected": "ï¼\88å\8f\97保护)",
+       "template-semiprotected": "ï¼\88å\8f\97å\8d\8aä¿\9dæ\8a¤ï¼\89",
        "hiddencategories": "该页面属于$1个隐藏分类:",
        "edittools": "<!-- 这里的文字将显示在编辑和上传表格下面。 -->",
        "nocreatetext": "{{SITENAME}}已经限制创建新页面功能。你可以返回编辑现有页面或[[Special:UserLogin|登录或创建账户]]。",
        "currentrevisionlink": "最后版本",
        "cur": "当前",
        "next": "后继",
-       "last": "前一",
+       "last": "之前",
        "page_first": "首页",
        "page_last": "末页",
        "histlegend": "差异选择:选中要对比的版本的单选按钮,按Enter键或下方的按钮。<br />\n说明:<strong>({{int:cur}})</strong>=与最后版本之间的差异,<strong>({{int:last}})</strong>=与上一版本之间的差异,<strong>{{int:minoreditletter}}</strong>=小编辑。",
        "searchall": "所有",
        "showingresults": "下面显示从第'''$2'''条结果开始的'''$1'''条结果。",
        "showingresultsinrange": "下面显示区间#<strong>$2</strong>至#<strong>$3</strong>的<strong>$1</strong>条结果。",
-       "showingresultsnum": "下面显示从第'''$2'''条结果开始的'''$3'''条结果。",
        "showingresultsheader": "关于<strong>$4</strong>的{{PLURAL:$5|第<strong>$1</strong>条结果,共<strong>$3</strong>条结果|第<strong>$1 - $2</strong>条结果,共<strong>$3</strong>条结果}}",
        "search-nonefound": "找不到和查询相匹配的结果。",
        "powersearch-legend": "高级搜索",
        "email": "电子邮件",
        "prefs-help-realname": "真实姓名是选填项目。如果你选择提供它,它将会用于贡献署名。",
        "prefs-help-email": "电子邮件地址是选填项,但是当你忘记你的密码要重置密码时,需要该信息。",
-       "prefs-help-email-others": "您也可以选择让其他用户通过您的用户页或讨论页上的链接用电子邮件联系您。其他用户联系您时您的电子邮件地址不会显示。",
+       "prefs-help-email-others": "您也可以选择让其他用户通过您的用户或讨论页面上的链接用电子邮件联系您。其他用户联系您时您的电子邮件地址不会显示。",
        "prefs-help-email-required": "电子邮件地址是必填项目。",
        "prefs-info": "基本信息",
        "prefs-i18n": "语言",
        "right-ipblock-exempt": "绕过IP封禁、自动封禁和段封禁",
        "right-proxyunbannable": "避开代理服务器的自动封禁",
        "right-unblockself": "自我解封",
-       "right-protect": "更改保护级别和编辑受连锁保护的页面",
+       "right-protect": "更改保护级别和编辑受级联保护页面",
        "right-editprotected": "编辑保护级别为“{{int:protect-level-sysop}}”的页面",
        "right-editsemiprotected": "编辑保护级别为“{{int:protect-level-autoconfirmed}}”的页面",
        "right-editinterface": "编辑用户界面",
        "license-nopreview": "(无预览可用)",
        "upload_source_url": "(有效、可以公开访问的URL)",
        "upload_source_file": "(您计算机上的一个文件)",
+       "listfiles-delete": "删除",
        "listfiles-summary": "本特殊页面展示所有上传的文件。",
        "listfiles_search_for": "按媒体名称搜索:",
        "imgfile": "文件",
        "filehist-comment": "备注",
        "imagelinks": "文件用途",
        "linkstoimage": "以下$1个页面链接至本文件:",
-       "linkstoimage-more": "超过$1个页面连接到这个文件。\n此处只列出首$1个链接到该文件的页面。\n您也可以查看[[Special:WhatLinksHere/$2|完整的列表]]。",
+       "linkstoimage-more": "超过$1个{{PLURAL:$1|页面链接至}}本文件。下面的列表只显示链接至本文件的{{PLURAL:$1|首个页面|前$1个页面}}。[[Special:WhatLinksHere/$2|完整列表]]。",
        "nolinkstoimage": "没有页面链接到本文件。",
        "morelinkstoimage": "查看连接到这个文件的[[Special:WhatLinksHere/$1|更多链接]]。",
        "linkstoimage-redirect": "$1(文件重定向)$2",
        "protectedpages": "受保护页面",
        "protectedpages-indef": "仅无限期保护",
        "protectedpages-summary": "本页面列出当前受保护的页面。要浏览受限制创建的标题列表,请参见[[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]]。",
-       "protectedpages-cascade": "仅连锁保护",
+       "protectedpages-cascade": "仅级联保护",
        "protectedpages-noredirect": "隐藏重定向",
        "protectedpagesempty": "在这些参数下没有页面正在保护。",
        "protectedpages-timestamp": "时间戳",
        "protect-locked-blocked": "您不能在被封禁时更改保护级别。以下是页面'''$1'''的当前设置:",
        "protect-locked-dblock": "您不能在数据库锁定时更改保护级别。以下是页面'''$1'''的当前设置:",
        "protect-locked-access": "您的帐户没有足够的权限去更改保护级别。以下是页面'''$1'''的当前设置:",
-       "protect-cascadeon": "以下$1个页面包含本页面的同时,启动了连锁保护,因此此页面也被保护。您可以设置本页面的保护级别,但这并不会对连锁保护有所影响。",
+       "protect-cascadeon": "该页面目前受到保护,因为它被嵌入了以下启用级联保护的{{PLURAL:$1|页面}}。更改该页面的保护级别不会影响级联保护。",
        "protect-default": "允许所有用户",
        "protect-fallback": "仅允许拥有“$1”权限的用户",
        "protect-level-autoconfirmed": "仅允许自动确认用户",
        "protect-level-sysop": "仅允许管理员",
        "protect-summary-desc": "[$1=$2]($3)",
-       "protect-summary-cascade": "联锁",
+       "protect-summary-cascade": "级联",
        "protect-expiring": "终止于$1(UTC)",
        "protect-expiring-local": "终止于$1",
        "protect-expiry-indefinite": "无限期",
-       "protect-cascade": "保护本页中包含的页面(连锁保护)",
+       "protect-cascade": "保护嵌入该页面的页面(级联保护)",
        "protect-cantedit": "您无法更改这个页面的保护等级,因为您没有权限去编辑它。",
        "protect-othertime": "其它时间:",
        "protect-othertime-op": "其它时间",
        "pageinfo-redirectsto-info": "信息",
        "pageinfo-contentpage": "计为内容页面",
        "pageinfo-contentpage-yes": "是",
-       "pageinfo-protect-cascading": "保护连锁自此",
+       "pageinfo-protect-cascading": "保护级联自这里",
        "pageinfo-protect-cascading-yes": "是",
-       "pageinfo-protect-cascading-from": "保护连锁自",
+       "pageinfo-protect-cascading-from": "保护级联自",
        "pageinfo-category-info": "分类信息",
        "pageinfo-category-pages": "页面数",
        "pageinfo-category-subcats": "子分类数",
        "duplicate-defaultsort": "'''警告:'''默认排序关键词“$2”覆盖了之前的默认排序关键词“$1”。",
        "version": "版本",
        "version-extensions": "安装的扩展程序",
+       "version-skins": "已安装皮肤",
        "version-specialpages": "特殊页面",
        "version-parserhooks": "解析器钩",
        "version-variables": "变量",
        "version-antispam": "垃圾阻止",
-       "version-skins": "皮肤",
        "version-other": "其他",
        "version-mediahandlers": "媒体文件处理器",
        "version-hooks": "钩",
        "version-license": "MediaWiki协议",
        "version-ext-license": "许可协议",
        "version-ext-colheader-name": "扩展程序",
+       "version-skin-colheader-name": "皮肤",
        "version-ext-colheader-version": "版本",
        "version-ext-colheader-license": "许可协议",
        "version-ext-colheader-description": "说明",
        "expand_templates_remove_nowiki": "在结果中隐藏<nowiki>标签",
        "expand_templates_generate_xml": "显示XML语法树",
        "expand_templates_generate_rawhtml": "显示原始HTML",
-       "expand_templates_preview": "预览"
+       "expand_templates_preview": "预览",
+       "pagelanguage": "页面语言选择器",
+       "pagelang-name": "页面",
+       "pagelang-language": "语言",
+       "pagelang-use-default": "使用默认语言",
+       "pagelang-select-lang": "选择语言",
+       "right-pagelang": "更改页面语言",
+       "action-pagelang": "更改页面语言",
+       "log-name-pagelang": "更改语言日志",
+       "log-description-pagelang": "这是页面语言更改的日志。",
+       "logentry-pagelang-pagelang": "$1{{GENDER:$2|更改}}$3的页面语言:从$4改为$5。"
 }
index 6af7ecd..2dbb891 100644 (file)
@@ -53,7 +53,9 @@
                        "아라",
                        "Vincent Liu",
                        "Mywood",
-                       "Cwek"
+                       "Cwek",
+                       "Impersonator 1",
+                       "LNDDYL"
                ]
        },
        "tog-underline": "連結底線:",
@@ -73,9 +75,9 @@
        "tog-minordefault": "預設標記所有的編輯為小修訂",
        "tog-previewontop": "顯示預覽於編輯框上方",
        "tog-previewonfirst": "第一次編輯時顯示預覽",
-       "tog-enotifwatchlistpages": "當我的監視清單中的頁面或檔案有變更時,送電子郵件通知我",
-       "tog-enotifusertalkpages": "當我的對話頁面有變更時,送電子郵件通知我",
-       "tog-enotifminoredits": "當頁面與檔案有小修訂時,送電子郵件通知我",
+       "tog-enotifwatchlistpages": "當我的監視清單中的頁面或檔案有變更時,送電子郵件通知我",
+       "tog-enotifusertalkpages": "當我的對話頁面有變更時,送電子郵件通知我",
+       "tog-enotifminoredits": "當頁面與檔案有小修訂時,送電子郵件通知我",
        "tog-enotifrevealaddr": "在通知信件中顯示我的電子郵件位址",
        "tog-shownumberswatching": "顯示正在監視的使用者數",
        "tog-oldsig": "現有簽名:",
@@ -88,7 +90,7 @@
        "tog-watchlisthideliu": "隱藏監視清單中已登入使用者的編輯",
        "tog-watchlisthideanons": "隱藏監視清單中匿名使用者的編輯",
        "tog-watchlisthidepatrolled": "隱藏監視清單中已巡查的編輯",
-       "tog-ccmeonemails": "送郵件給他人時,也送一份副本到我的電子郵件信箱",
+       "tog-ccmeonemails": "送郵件給他人時,也送一份副本到我的電子郵件信箱",
        "tog-diffonly": "比對版本差異時下面不顯示頁面內容",
        "tog-showhiddencats": "顯示隱藏分類",
        "tog-norollbackdiff": "執行還原後略過差異比對",
        "categorypage": "檢視分類頁面",
        "viewtalkpage": "檢視討論頁面",
        "otherlanguages": "其他語言",
-       "redirectedfrom": "(重定向自$1)",
-       "redirectpagesub": "重向頁面",
+       "redirectedfrom": "(已重新導向自 $1)",
+       "redirectpagesub": "重新導向頁面",
        "lastmodifiedat": "此頁面最後修訂於 $1 $2。",
        "viewcount": "此頁面已被檢視過 $1 次。",
        "protectedpage": "受保護頁面",
        "mainpage-description": "首頁",
        "policy-url": "Project:方針",
        "portal": "社群主頁",
-       "portal-url": "Project:社專頁",
+       "portal-url": "Project:社專頁",
        "privacy": "隱私政策",
        "privacypage": "Project:Privacy policy",
        "badaccess": "權限錯誤",
        "createacct-emailoptional": "電子郵件位址 (選填)",
        "createacct-email-ph": "輸入您的電子郵件位址",
        "createacct-another-email-ph": "輸入電子郵件位址",
-       "createaccountmail": "使用臨時的隨機密碼,並將它發送到指定的電子郵件地址",
+       "createaccountmail": "使用臨時的隨機密碼,並將它到指定的電子郵件地址",
        "createacct-realname": "真實姓名 (選填)",
        "createaccountreason": "原因:",
        "createacct-reason": "原因",
        "createacct-captcha": "安全驗證",
        "createacct-imgcaptcha-ph": "輸入您在上方看到的文字",
        "createacct-submit": "建立您的帳號",
-       "createacct-another-submit": "建立另一帳號",
+       "createacct-another-submit": "建ç«\8bå\8f¦ä¸\80å\80\8b帳è\99\9f",
        "createacct-benefit-heading": "{{SITENAME}} 是由像您一樣貢獻的人所建立的。",
        "createacct-benefit-body1": " {{PLURAL:$1|次編輯}}",
        "createacct-benefit-body2": " $1 頁",
        "mailmypassword": "重設密碼",
        "passwordremindertitle": "{{SITENAME}} 的新臨時密碼",
        "passwordremindertext": "不明人士 (可能是您自己,來自 IP 位址 $1) 要求重設在 {{SITENAME}} ($4) 的密碼。\n給使用者 \"$2\" 的臨時密碼設為 \"$3\"。\n如果這個動作是您做的,您需要立即登入並設定一個新的密碼,\n您的臨時密碼將於{{PLURAL:$5|一|$5}}天內過期。\n\n如果不是您要求重設密碼,或您已想起密碼,並不準備修改,\n您可以忽略此訊息並且繼續使用您原本的密碼。",
-       "noemail": "使用者 \"$1\" 未登記電子郵件址。",
-       "noemailcreate": "您需要提供一個有效的電子郵件址。",
-       "passwordsent": "使用者 \"$1\" 的新密碼已寄至當出登記的電子郵件地址,\n請稍後收到信件後再登入。",
+       "noemail": "使用者 \"$1\" 未登記電子郵件址。",
+       "noemailcreate": "您需要提供一個有效的電子郵件址。",
+       "passwordsent": "使用者 \"$1\" 的新密碼已寄至當出登記的電子郵件地址,\n請稍後收到信件後再登入。",
        "blocked-mailpassword": "您的 IP 位址已被封鎖不允許編輯,密碼復原的功能也同樣被禁止使用以防止被濫用。",
-       "eauthentsent": "以發送一封確認信到您所設定的電子郵件地址。\n在未收到其它電子郵件前,您必須先依照信件中的指示,確認這個帳號確實是您本人。",
-       "throttled-mailpassword": "密碼重設的電子郵件已經在最近 $1 小時內送出。\n為防止濫用,$1 小時內只能發送一次密碼重設信件。",
-       "mailerror": "發送郵件錯誤:$1",
-       "acct_creation_throttle_hit": "使用您目前的 IP 位址的參觀者在最近一天建立了 {{PLURAL:$1|1 個帳號|$1 個帳號}},已超出系統允許的上限。\n因此,目前無法讓使用此 IP 位址的參觀者建立帳號。",
+       "eauthentsent": "已寄出一封確認信到您所設定的電子郵件位址。\n在未收到其它電子郵件前,您必須先依照信件中的指示,確認這個帳號確實是您本人。",
+       "throttled-mailpassword": "密碼重設的電子郵件已經在最近 $1 小時內寄出。\n為防止濫用,$1 小時內只能寄出一次密碼重設信件。",
+       "mailerror": "寄出電子郵件錯誤:$1",
+       "acct_creation_throttle_hit": "使用您目前的 IP 位址的訪客在最近一天建立了 {{PLURAL:$1|1 個帳號|$1 個帳號}},已超出系統允許的上限。\n因此,目前無法讓使用此 IP 位址的訪客建立帳號。",
        "emailauthenticated": "您的電子郵件位址已確認於 $2 的 $3。",
-       "emailnotauthenticated": "您的電子郵件地址尚未確認,\n尚不會發送以下功能的電子郵件給您。",
+       "emailnotauthenticated": "您的電子郵件地址尚未確認,\n尚不會寄出以下功能的電子郵件給您。",
        "noemailprefs": "在您的偏好設定中設定電子郵件地址,讓您可以使用這些功能。",
        "emailconfirmlink": "確認您的電子郵件位址",
        "invalidemailaddress": "無法接受格式不正確的電子郵件地址,\n請輸入正確的電子郵件地址格式或略過填寫該欄位。",
        "cannotchangeemail": "此 Wiki 不允許更改帳號的電子郵件位址。",
-       "emaildisabled": "此網站不能發送電子郵件。",
+       "emaildisabled": "此網站不能寄出電子郵件。",
        "accountcreated": "已建立帳號",
        "accountcreatedtext": "使用者帳號 [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|對話]]) 已建立。",
        "createaccount-title": "{{SITENAME}} 的帳號建立",
        "pt-createaccount": "建立帳號",
        "pt-userlogout": "登出",
        "php-mail-error-unknown": "PHP 的 mail() 函數發生不明錯誤。",
-       "user-mail-no-addy": "試圖發送沒有電子郵件地址的電子郵件。",
-       "user-mail-no-body": "試圖發送一個空的或異常簡短的電子郵件。",
+       "user-mail-no-addy": "試圖寄出沒有電子郵件位址的信件。",
+       "user-mail-no-body": "試圖寄出一個空的或異常簡短的電子郵件。",
        "changepassword": "變更密碼",
        "resetpass_announce": "要完成登入,您必須設定一個新密碼。",
        "resetpass_text": "<!-- 在此處加入文字 -->",
        "resetpass-submit-cancel": "取消",
        "resetpass-wrong-oldpass": "無效的臨時或現有密碼。\n您可能早已成功地更改了您的密碼,或者已經請求一個新的臨時密碼。",
        "resetpass-recycled": "請重設您的密碼為一個與目前不同的密碼。",
-       "resetpass-temp-emailed": "您使用臨時電子郵件送的代碼登入。\n要完成登入,您必須在這裡設定一個新密碼:",
+       "resetpass-temp-emailed": "您使用臨時電子郵件送的代碼登入。\n要完成登入,您必須在這裡設定一個新密碼:",
        "resetpass-temp-password": "臨時密碼:",
        "resetpass-abort-generic": "擴充套件已中止了變更密碼的操作。",
        "resetpass-expired": "您的密碼已過期。請設定一個新的密碼以登入。",
        "passwordreset-username": "使用者名稱:",
        "passwordreset-domain": "網域名稱:",
        "passwordreset-capture": "檢視電子郵件內容?",
-       "passwordreset-capture-help": "若您勾選此核選方塊,電子郵件 (包含臨時密碼) 將直接顯示,並發送給使用者。",
+       "passwordreset-capture-help": "若您勾選此核選方塊,電子郵件 (包含臨時密碼) 將直接顯示,並給使用者。",
        "passwordreset-email": "電子郵件位址:",
        "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-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": "使用者名稱:$1\n臨時密碼:$2",
-       "passwordreset-emailsent": "已發送重設密碼的電子郵件。",
-       "passwordreset-emailsent-capture": "已發送重設密碼的電子郵件,並在下面顯示。",
-       "passwordreset-emailerror-capture": "產生的重設密碼的電子郵件如下所示,但送給{{GENDER:$2|使用者}}失敗:$1",
+       "passwordreset-emailsent": "已寄出重設密碼的電子郵件。",
+       "passwordreset-emailsent-capture": "已寄出重設密碼的電子郵件,並在下面顯示。",
+       "passwordreset-emailerror-capture": "產生的重設密碼的電子郵件如下所示,但送給{{GENDER:$2|使用者}}失敗:$1",
        "changeemail": "變更電子郵件位址",
        "changeemail-header": "變更帳號的電子郵件位址",
-       "changeemail-text": "填寫表格以修改您的電子郵件址。您需要輸入密碼以確認此次變更。",
-       "changeemail-no-info": "您必須登入方可直接訪問此頁面。",
+       "changeemail-text": "填寫表格以修改您的電子郵件址。您需要輸入密碼以確認此次變更。",
+       "changeemail-no-info": "您必須登入方可直接存取此頁面。",
        "changeemail-oldemail": "目前的電子郵件位址:",
        "changeemail-newemail": "新的電子郵件位址:",
        "changeemail-none": "(無)",
        "summary-preview": "摘要預覽:",
        "subject-preview": "主旨/標題預覽:",
        "blockedtitle": "使用者已被封鎖",
-       "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,此次封鎖的 ID 爲 #$5。\n請您在詢問時附註以上詳細訊息。",
-       "autoblockedtext": "因先前的另一位使用者被 $1 封鎖,您的 IP 位址已被自動封鎖。\n原因是:\n\n:<em>$2</em>\n\n* 封鎖開始時間:$8\n* 封鎖結束時間:$6\n* 相關封鎖對象:$7\n\n您可以聯繫 $1 或其他的 [[{{MediaWiki:Grouppage-sysop}}|管理員]] 討論封鎖的相關問題。\n若您已在 [[Special:Preferences|偏好設定]] 中設定了一個有效的電子郵件地址,且尚未被封鎖郵件功能,則您可透過 \"送電子郵件給這位使用者\" 的功能來聯絡相關管理員。\n您目刖的 IP 位址是 $3,此次封鎖的 ID 爲 #$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,此次封鎖的 ID 爲 #$5。\n請您在詢問時附註以上詳細訊息。",
+       "autoblockedtext": "因先前的另一位使用者被 $1 封鎖,您的 IP 位址已被自動封鎖。\n原因是:\n\n:<em>$2</em>\n\n* 封鎖開始時間:$8\n* 封鎖結束時間:$6\n* 相關封鎖對象:$7\n\n您可以聯繫 $1 或其他的 [[{{MediaWiki:Grouppage-sysop}}|管理員]] 討論封鎖的相關問題。\n若您已在 [[Special:Preferences|偏好設定]] 中設定了一個有效的電子郵件地址,且尚未被封鎖郵件功能,則您可透過 \"送電子郵件給這位使用者\" 的功能來聯絡相關管理員。\n您目刖的 IP 位址是 $3,此次封鎖的 ID 爲 #$5。\n請您在詢問時附註以上詳細訊息。",
        "blockednoreason": "未說明原因",
        "whitelistedittext": "請先 $1 才可編輯頁面。",
        "confirmedittext": "在編輯此頁之前您必須確認您的電子郵件位址。\n請透過 [[Special:Preferences|偏好設定]] 設定並驗證您的電子郵件位址。",
        "nosuchsectiontitle": "找不到章節",
-       "nosuchsectiontext": "æ\82¨å\98\97試編輯ç\9a\84ç« ç¯\80並ä¸\8då­\98å\9c¨ã\80\82\nå\8f¯è\83½å\9c¨æ\82¨æ\9f¥ç\9c\8b頁面時已經移動或刪除。",
+       "nosuchsectiontext": "æ\82¨å\98\97試編輯ç\9a\84ç« ç¯\80並ä¸\8då­\98å\9c¨ã\80\82\nå\8f¯è\83½å\9c¨æ\82¨æª¢è¦\96頁面時已經移動或刪除。",
        "loginreqtitle": "需要登入",
        "loginreqlink": "登入",
        "loginreqpagetext": "您必須 $1 才能檢視其它頁面。",
        "accmailtext": "[[User talk:$1|$1]] 的隨機密碼已經寄送至 $2,可登入後至 <em>[[Special:ChangePassword|變更密碼]] 頁面更改</em>。",
        "newarticle": "(新)",
        "newarticletext": "您正連結至一頁不存在頁面。\n要建立該頁面,請在下方的編輯框中輸入內容 (詳情請參考 [$1 説明頁面])。\n如果您是不小心來到此頁面,請點選瀏覽器的 <strong>返回</strong> 按鈕。",
-       "anontalkpagetext": "----\n<em>此討論頁面是給尚未建立帳號的匿名使用者使用</em>\n因此我們必須使用 IP 位址來辨識身份,但相同的 IP 位可能由許多不同的使用者所共用。\n如果您是匿名使用者並且覺得評論的內容與您無關,請 [[Special:UserLogin/signup|建立新帳號]] 或 [[Special:UserLogin|登入]] 避免與其他匿名使用者混淆。",
+       "anontalkpagetext": "----\n<em>此討論頁面是給尚未建立帳號的匿名使用者使用</em>\n因此我們必須使用 IP 位址來辨識身份,但相同的 IP 位可能由許多不同的使用者所共用。\n如果您是匿名使用者並且覺得評論的內容與您無關,請 [[Special:UserLogin/signup|建立新帳號]] 或 [[Special:UserLogin|登入]] 避免與其他匿名使用者混淆。",
        "noarticletext": "此頁面目前沒有內容,\n您可以在其它頁面中 [[Special:Search/{{PAGENAME}}|搜尋此頁面標題]],\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搜尋相關日誌],\n或 [{{fullurl:{{FULLPAGENAME}}|action=edit}} 編輯此頁]</span>。",
        "noarticletext-nopermission": "此頁面目前沒有內容,\n您可以在其它頁面中 [[Special:Search/{{PAGENAME}}|搜尋此頁面標題]],或 <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搜尋相關日誌]</span>,但您沒有權限建立此頁面。",
        "missing-revision": "頁面名稱 \"{{FULLPAGENAME}}\" 的 #$1 修訂版本不存在。\n\n通常是因連結到過期的歷史頁面,該頁面已被刪除。\n詳情請參考 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刪除日誌]。",
        "session_fail_preview": "<strong>很抱歉!由於連線階段的資料遺失,我們無法處理您的編輯動作。</strong>\n請再試一次。\n如果仍然失敗,請 [[Special:UserLogout|登出]] 後重新登入。",
        "session_fail_preview_html": "<strong>很抱歉!由於連線階段的資料遺失,我們無法處理您的編輯動作。</strong>\n\n<em>由於 {{SITENAME}} 開啟了原始 HTML 模式,將不會顯示預覽畫面以避免 JavaScript 攻擊。</em>\n\n<strong>若這是符合規範的編輯動作,請再試一次。</strong>\n如果仍然有問題,請 [[Special:UserLogout|登出]] 後再重新登入一次。",
        "token_suffix_mismatch": "<strong>您使用的瀏覽器刪除了編輯資訊中的特殊符號,已拒絕此編輯動作。</strong>\n為了避免破壞頁面內容,已拒絕此編輯動作,\n這通常是因為您使用了有問題的匿名網頁代理伺服器。",
-       "edit_form_incomplete": "<strong>部份編輯的內容未送至伺服器,請檢查您的編輯內容是否完整並再試一次。</strong>",
+       "edit_form_incomplete": "<strong>部份編輯的內容未送至伺服器,請檢查您的編輯內容是否完整並再試一次。</strong>",
        "editing": "正在編輯 $1",
        "creating": "正在建立 $1",
        "editingsection": "正在編輯 $1 (章節)",
        "explainconflict": "在您開始編輯之後已有其他人儲存了此頁面。\n上方的文字框內顯示了目前頁面中的文字內容,\n您所變更的文字內容顯示在下方文字框中。\n您須要將您所變更的文字內容合併到已儲存的文字內容當中。\n若您直接點選 \"{{int:savearticle}}\" <strong>只有</strong> 上方文字框中的內容會被儲存。",
        "yourtext": "您的文字",
        "storedversion": "已儲存修訂",
-       "nonunicodebrowser": "<strong>警告:您的瀏覽器不相容 Unicode。</strong>\n暫時解決的方式是先在您可安全編輯頁面的地方編輯:非 ASCII 字元在編輯框中會以 16 進位編碼顯示。",
+       "nonunicodebrowser": "<strong>警告:您的瀏覽器與 Unicode 不相容。</strong>\n暫時解決的方式是先在您可安全編輯頁面的地方編輯:非 ASCII 字元在編輯框中會以 16 進位編碼顯示。",
        "editingold": "<strong>警告:您目前正編輯頁面的舊修訂版本。</strong>\n若您儲存,在此修訂之後變更的任何內容將會遺失。",
        "yourdiff": "差異",
        "copyrightwarning": "請注意,所有於 {{SITENAME}} 所做的貢獻會依據 $2 授權條款發佈 (詳情請見 $1)。\n若您不希望您的著作被任意修改與散佈,請勿在此發表文章。<br />\n您同時向我們保証在此的著作內容是您自行撰寫,或是取自不受版權保護的公開領域或自由資源。\n<strong>請勿在未經授權的情況下發表文章!</strong>",
        "mergehistory-empty": "沒有可以合併的修訂",
        "mergehistory-success": "[[:$1]] 中 $3 次修訂已經成功地合併至 [[:$2]]。",
        "mergehistory-fail": "不可以進行歷史合併,請重新檢查該頁面以及時間參數。",
+       "mergehistory-fail-toobig": "由於超出$1個合併移動版本的上限,故此無法進行歷史合併。",
        "mergehistory-no-source": "來源頁面 $1 不存在。",
        "mergehistory-no-destination": "目標頁面 $1 不存在。",
        "mergehistory-invalid-source": "來源頁面必須使用有效的標題。",
        "search-result-size": "$1 ($2 個字)",
        "search-result-category-size": "$1 位成員 ($2 個子分類,$3 個檔案)",
        "search-result-score": "相關度:$1%",
-       "search-redirect": "(重定向自 $1)",
+       "search-redirect": "(重新導向 $1)",
        "search-section": "(章節 $1)",
        "search-file-match": "(符合檔案內容)",
        "search-suggest": "您指的是不是:$1",
        "searchall": "全部",
        "showingresults": "以下顯示從第 <strong>$2</strong> 筆開始,共 {{PLURAL:$1|<strong>1</strong> 筆結果|<strong>$1</strong> 筆結果}}:",
        "showingresultsinrange": "以下顯示從第 <strong>$2</strong> 筆至第 <strong>$3</strong> 筆中的 {{PLURAL:$1|<strong>1</strong> 筆結果|<strong>$1</strong> 筆結果}}:",
-       "showingresultsnum": "以下顯示從第 <strong>$2</strong> 筆開始,共 {{PLURAL:$3|<strong>1</strong> 筆結果|<strong>$3</strong> 筆結果}}:",
        "showingresultsheader": "<strong>$4</strong> 的 {{PLURAL:$5|第 <strong>$1</strong> 筆結果,共 <strong>$3</strong> 筆|第 <strong>$1 - $2</strong>,共 <strong>$3</strong> 筆}}",
        "search-nonefound": "無符合查詢條件的結果。",
        "powersearch-legend": "進階搜尋",
        "right-move-rootuserpages": "移動根使用者頁面",
        "right-move-categorypages": "移動分類頁面",
        "right-movefile": "移動檔案",
-       "right-suppressredirect": "移動頁面時不在原頁面建立重定向",
+       "right-suppressredirect": "移動頁面時不在原頁面位置建立重新導向頁面",
        "right-upload": "上傳檔案",
        "right-reupload": "覆蓋現有的檔案",
        "right-reupload-own": "覆蓋自己上傳的檔案",
        "right-suppressrevision": "複查與還原由管理員隱藏的修訂",
        "right-suppressionlog": "檢視非公開日誌",
        "right-block": "封鎖其他使用者的編輯權限",
-       "right-blockemail": "封鎖使用者送電子郵件的權限",
+       "right-blockemail": "封鎖使用者送電子郵件的權限",
        "right-hideuser": "封鎖使用者名稱,避免公開顯示",
        "right-ipblock-exempt": "略過 IP 封鎖、自動封鎖及範圍封鎖檢查",
        "right-proxyunbannable": "略過 Proxy 自動封鎖檢查",
        "right-userrights-interwiki": "編輯使用者在其它 Wiki 上的權限",
        "right-siteadmin": "鎖定和解除鎖定資料庫",
        "right-override-export-depth": "匯出頁面包含連結內容,深度上限為 5 層",
-       "right-sendemail": "送電子郵件給其他使用者",
+       "right-sendemail": "送電子郵件給其他使用者",
        "right-passwordreset": "檢視重設密碼電子郵件",
        "newuserlogpage": "建立使用者日誌",
        "newuserlogpagetext": "此為建立使用者的日誌。",
        "action-userrights": "編輯所有使用者的權限",
        "action-userrights-interwiki": "編輯在其它 Wiki 上的使用者權限",
        "action-siteadmin": "鎖定和解除鎖定資料庫",
-       "action-sendemail": "送電子郵件",
+       "action-sendemail": "送電子郵件",
        "action-editmywatchlist": "編輯您的監視清單",
-       "action-viewmywatchlist": "æ\9f¥ç\9c\8b您的監視清單",
+       "action-viewmywatchlist": "檢è¦\96您的監視清單",
        "action-viewmyprivateinfo": "查看您的個人資料",
        "action-editmyprivateinfo": "編輯您的個人資料",
        "nchanges": "$1 次變更",
        "upload-file-error-text": "嘗試在伺服器上建立臨時檔案時發生內部錯誤。\n請連絡 [[Special:ListUsers/sysop|管理員]]。",
        "upload-misc-error": "不明的上傳錯誤",
        "upload-misc-error-text": "上傳時發生不明錯誤。\n請檢查您的 URL 是否有效且可存取,然後再重試一次。\n如果仍有問題,請聯絡 [[Special:ListUsers/sysop|管理員]]。",
-       "upload-too-many-redirects": "URL 中包含太多重定向",
+       "upload-too-many-redirects": "該 URL 重新導向至太多其他位址",
        "upload-http-error": "發生 HTTP 錯誤:$1",
        "upload-copy-upload-invalid-domain": "此網域不允許複製上傳的檔案。",
        "backend-fail-stream": "無法傳輸檔案 \"$1\"。",
        "linkstoimage-more": "超過$1個頁面連接到這個檔案。\n此處只列出首$1個連接到此檔案的頁面。\n您也可以查看[[Special:WhatLinksHere/$2|完整的清單]]。",
        "nolinkstoimage": "沒有頁面連接到本檔案。",
        "morelinkstoimage": "檢視連接到這個檔案的[[Special:WhatLinksHere/$1|更多連結]]。",
-       "linkstoimage-redirect": "$1(檔案重定向)$2",
+       "linkstoimage-redirect": "$1 (檔案重新導向) $2",
        "duplicatesoffile": "以下 $1 個檔案與此檔案重覆 ([[Special:FileDuplicateSearch/$2|了解詳細資訊]]):",
        "sharedupload": "此檔案來自 $1 且可能被其他專案所使用。",
        "sharedupload-desc-there": "此檔案來自 $1 且可能被其他專案所使用。\n請參考 [$2 檔案描述頁面] 了解進一步資訊。",
        "filedelete-maintenance": "維護期間檔案刪除和還原暫停使用。",
        "filedelete-maintenance-title": "無法刪除檔案",
        "mimesearch": "MIME 搜尋",
-       "mimesearch-summary": "本頁面可搜尋檔案的 MIME 類型。\n輸入格式:內容類型/子類型,如 <code>image/jpeg</code>。",
+       "mimesearch-summary": "本頁面可搜尋檔案的 MIME 類型。\n輸入格式:內容類型/子類型 或 內容類型/*,如 <code>image/jpeg</code>。",
        "mimetype": "MIME 類型:",
        "download": "下載",
        "unwatchedpages": "未監視的頁面",
-       "listredirects": "重向頁面清單",
+       "listredirects": "重新導向頁面清單",
        "listduplicatedfiles": "重複檔案列表",
        "listduplicatedfiles-summary": "以下列表中某檔案之最新版本與其他檔案之最新版本重複。進包含本地檔案",
        "listduplicatedfiles-entry": "[[:File:$1|$1]] 有[[$3|其他 $2 個重複檔案]]。",
        "randomincategory-nopages": "[[:Category:$1]]中沒有頁面。",
        "randomincategory-selectcategory": "從分類中獲取隨機頁面:$1 $2",
        "randomincategory-selectcategory-submit": "執行",
-       "randomredirect": "隨機重向",
-       "randomredirect-nopages": "在命名空間\"$1\"中沒有任何重定向頁面。",
+       "randomredirect": "隨機重新導向",
+       "randomredirect-nopages": "在命名空間 \"$1\" 中沒有任何重新導向頁面。",
        "statistics": "統計",
        "statistics-header-pages": "頁面統計",
        "statistics-header-edits": "編輯統計",
        "statistics-header-hooks": "其它統計",
        "statistics-articles": "內容頁面",
        "statistics-pages": "頁面",
-       "statistics-pages-desc": "在 wiki 上所有的頁面,包括對話頁面、重定向頁面等。",
+       "statistics-pages-desc": "在 Wiki 上所有的頁面,包括對話頁面、重新導向頁面等。",
        "statistics-files": "已經上傳的檔案",
        "statistics-edits": "自 {{SITENAME}} 成立以來的頁面編輯數",
        "statistics-edits-average": "每頁平均編輯數",
        "pageswithprop-submit": "執行",
        "pageswithprop-prophidden-long": "已隱藏過長的屬性值 ($1)",
        "pageswithprop-prophidden-binary": "已隱藏二進位屬性值 ($1)",
-       "doubleredirects": "雙重重定向",
-       "doubleredirectstext": "這一頁列出所有重定向頁面重定向到另一個重定向頁的頁面。每一行都包含到第一和第二個重定向頁面的連結,以及第二個重定向頁面的目標,通常顯示的都會是\"真正\"的目標頁面,也就是第一個重定向頁面應該指向的頁面。\n<del>已劃去</del>的為已經解決之項目。",
-       "double-redirect-fixed-move": "[[$1]] 已完成移動。\n此頁面已自動更新並重向至 [[$2]]。",
-       "double-redirect-fixed-maintenance": "作為維護工作自動修復於[[$1]]至[[$2]]之雙重重定向。",
-       "double-redirect-fixer": "重向修正者",
-       "brokenredirects": "損壞的重定向頁面",
-       "brokenredirectstext": "以下的重定向頁面均指向不存在的頁面:",
+       "doubleredirects": "雙重的重新導向",
+       "doubleredirectstext": "此頁列出所有重新導向頁面連結到另一個重新導向頁面的頁面清單。每一列都包含第一次和第二次重新導向頁面的連結,以及第二次重新導向之後的目標,第二次重新導向之後的目標通常是 \"實際\" 的目標頁面,也是第一個重新導向頁面應該指向的頁面。\n<del>刪節線</del> 代表該項目的問題已經解決。",
+       "double-redirect-fixed-move": "[[$1]] 已完成移動。\n此頁面已自動更新並重新導向至 [[$2]]。",
+       "double-redirect-fixed-maintenance": "在維護作業時自動修正雙重的重新導向自 [[$1]] 至 [[$2]]。",
+       "double-redirect-fixer": "重新導向修正者",
+       "brokenredirects": "損壞的重新導向",
+       "brokenredirectstext": "以下的重新導向頁面連結的頁面不存在:",
        "brokenredirects-edit": "編輯",
        "brokenredirects-delete": "刪除",
        "withoutinterwiki": "未有語言連結的頁面",
        "protectedpages-indef": "只顯示無限期的保護頁面",
        "protectedpages-summary": "此頁面列出目前受保護的頁面。 欲查詢受保護標題清單,請參考 [[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]]。",
        "protectedpages-cascade": "只顯示連鎖的保護頁面",
-       "protectedpages-noredirect": "隱藏重向頁面",
+       "protectedpages-noredirect": "隱藏重新導向頁面",
        "protectedpagesempty": "在這些參數下沒有頁面正在保護。",
        "protectedpages-timestamp": "日期時間",
        "protectedpages-page": "頁面",
        "allpagesprefix": "顯示以此為字首頁面:",
        "allpagesbadtitle": "指定的頁面標題無效、包含內部語言或內部 Wiki 的字首。\n它可能包含一個或多個的不能用於標題的字元。",
        "allpages-bad-ns": "{{SITENAME}} 沒有 \"$1\" 命名空間。",
-       "allpages-hide-redirects": "隱藏重向頁面",
+       "allpages-hide-redirects": "隱藏重新導向頁面",
        "cachedspecial-viewing-cached-ttl": "你正在瀏覽本頁的緩存版本,至多可能存在$1的延遲。",
        "cachedspecial-viewing-cached-ts": "您正在閱讀此頁的緩存版本,這可能不是完整的版本。",
        "cachedspecial-refresh-now": "查看最新。",
        "linksearch-pat": "搜尋網址:",
        "linksearch-ns": "命名空間:",
        "linksearch-ok": "搜尋",
-       "linksearch-text": "可使用通配符,如“*.wikipedia.org”。至少需要一個頂級域名,例如“*.org”。<br />\n支持的{{PLURAL:$2|協議}}:<code>$1</code>(若沒有指定協議,預設為http://)。",
+       "linksearch-text": "可使用萬用字元如 \"*.wikipedia.org\"。\n萬用字元必須使用在最上層網域,例如 \"*.org\".<br />\n支援的{{PLURAL:$2|通訊協定|通訊協定}}有:<code>$1</code> (若未指定則預設使用 http:// 通訊協定)。",
        "linksearch-line": "$1 連自 $2",
        "linksearch-error": "萬用字元僅可在主機名稱的開頭使用。",
        "listusersfrom": "顯示使用者開始自:",
        "listgrouprights-removegroup": "移除的{{PLURAL:$2|一個|多個}}群組: $1",
        "listgrouprights-addgroup-all": "加入所有群組",
        "listgrouprights-removegroup-all": "移除所有群組",
-       "listgrouprights-addgroup-self": "在自己的賬戶中加入的{{PLURAL:$2|一個|多個}}群組: $1",
-       "listgrouprights-removegroup-self": "在自己的賬戶中移除的{{PLURAL:$2|一個|多個}}群組: $1",
-       "listgrouprights-addgroup-self-all": "在自己的賬戶中加入所有群組",
-       "listgrouprights-removegroup-self-all": "在自己的賬戶中移除所有群組",
+       "listgrouprights-addgroup-self": "在自己的帳號中加入的{{PLURAL:$2|一個|多個}}群組: $1",
+       "listgrouprights-removegroup-self": "在自己的帳號中移除的{{PLURAL:$2|一個|多個}}群組: $1",
+       "listgrouprights-addgroup-self-all": "在自己的帳號中加入所有群組",
+       "listgrouprights-removegroup-self-all": "在自己的帳號中移除所有群組",
        "listgrouprights-namespaceprotection-header": "命名空間限制",
        "listgrouprights-namespaceprotection-namespace": "命名空間",
        "listgrouprights-namespaceprotection-restrictedto": "允許使用者編輯的權限",
        "hidden-category-category-desc": "此分類帶有<code><nowiki>__HIDDENCAT__</nowiki></code>,它預設防止於頁面分類連接盒中顯示。",
        "trackingcategories-nodesc": "並無說明。",
        "trackingcategories-disabled": "分類被禁用",
-       "mailnologin": "沒有送位址",
-       "mailnologintext": "您必須先 [[Special:UserLogin|登入]]\n並在 [[Special:Preferences|偏好設定]]\n中設定一個有效的電子郵件地址才可以送信件給其他使用者。",
+       "mailnologin": "沒有送位址",
+       "mailnologintext": "您必須先 [[Special:UserLogin|登入]]\n並在 [[Special:Preferences|偏好設定]]\n中設定一個有效的電子郵件地址才可以送信件給其他使用者。",
        "emailuser": "寄信給此使用者",
        "emailuser-title-target": "寄信給此{{GENDER:$1|使用者}}",
        "emailuser-title-notarget": "寄信給使用者",
        "emailpage": "E-mail 給使用者",
-       "emailpagetext": "您可以使用以下表格送電子郵件給這位 {{Gender:$1|使用者}}。\n您在 [[Special:Preferences|偏好設定]] 中所輸入的電子郵件地址將會作為郵件的 \"寄件人\",因此該使用者可直接回覆您。",
-       "defemailsubject": "來自使用者 \"$1\" 於 {{SITENAME}} 發送的電子郵件",
+       "emailpagetext": "您可以使用以下表格送電子郵件給這位 {{Gender:$1|使用者}}。\n您在 [[Special:Preferences|偏好設定]] 中所輸入的電子郵件地址將會作為郵件的 \"寄件人\",因此該使用者可直接回覆您。",
+       "defemailsubject": "來自使用者 \"$1\" 於 {{SITENAME}} 寄來的電子郵件",
        "usermaildisabled": "使用者電子郵件已停用",
-       "usermaildisabledtext": "您不可送信件到這個 Wiki 上的其他使用者",
-       "noemailtitle": "沒有電子郵件址",
-       "noemailtext": "此使用者尚未指定一個有效的電子郵件址。",
+       "usermaildisabledtext": "您不可送信件到這個 Wiki 上的其他使用者",
+       "noemailtitle": "沒有電子郵件址",
+       "noemailtext": "此使用者尚未指定一個有效的電子郵件址。",
        "nowikiemailtext": "此使用者選擇不接收其他使用者的信件。",
        "emailnotarget": "收件人不存在或無效的使用者名稱。",
        "emailtarget": "輸入收件人使用者名稱",
        "emailusername": "使用者名稱:",
        "emailusernamesubmit": "送出",
-       "email-legend": "送電子郵件給另一位 {{SITENAME}} 使用者",
+       "email-legend": "送電子郵件給另一位 {{SITENAME}} 使用者",
        "emailfrom": "寄件人:",
        "emailto": "收件人:",
        "emailsubject": "主題:",
        "emailmessage": "訊息:",
-       "emailsend": "送",
-       "emailccme": "送一份副本到我的電子郵件信箱。",
-       "emailccsubject": "您發送給 $1 的訊息副本:$2",
-       "emailsent": "電子郵件已發送",
+       "emailsend": "送",
+       "emailccme": "送一份副本到我的電子郵件信箱。",
+       "emailccsubject": "您給 $1 的訊息副本:$2",
+       "emailsent": "電子郵件已送出",
        "emailsenttext": "您的電子郵件訊息已經送出。",
-       "emailuserfooter": "這封電子郵件是由 $1 透過 {{SITENAME}} 的 \"送信件給使用者\" 功能寄給 $2。",
+       "emailuserfooter": "這封電子郵件是由 $1 透過 {{SITENAME}} 的 \"送信件給使用者\" 功能寄給 $2。",
        "usermessage-summary": "留給系統訊息。",
        "usermessage-editor": "系統訊息",
        "watchlist": "監視清單",
        "deletecomment": "原因:",
        "deleteotherreason": "其它/額外的原因:",
        "deletereasonotherlist": "其它理由",
-       "deletereason-dropdown": "* 常見的刪除原因\n** 濫發廣告訊息\n** 破壞\n** 侵犯版權\n** 作者請求\n** 損壞的重定向",
+       "deletereason-dropdown": "* 常見的刪除原因\n** 濫發廣告訊息\n** 破壞\n** 侵犯版權\n** 作者請求\n** 損壞的重新導向連結",
        "delete-edit-reasonlist": "編輯刪除理由",
        "delete-toobig": "這個頁面有一個十分大量的編輯歷史,超過$1次修訂。刪除此類頁面的動作已經被限制,以防止在{{SITENAME}}上的意外擾亂。",
        "delete-warning-toobig": "這個頁面有一個十分大量的編輯歷史,超過$1次修訂。刪除它可能會擾亂{{SITENAME}}的資料庫操作;在繼續此動作前請小心。",
        "linkshere": "以下頁面連結到[[:$1]]:",
        "nolinkshere": "沒有頁面連結到[[:$1]]。",
        "nolinkshere-ns": "已選擇的命名空間中沒有頁面連結到 [[:$1]]。",
-       "isredirect": "重向頁面",
+       "isredirect": "重新導向頁面",
        "istemplate": "引用",
        "isimage": "檔案連結",
        "whatlinkshere-prev": "前 $1 筆",
        "whatlinkshere-next": "後 $1 筆",
        "whatlinkshere-links": "← 連入",
-       "whatlinkshere-hideredirs": "$1 重向頁面",
+       "whatlinkshere-hideredirs": "$1 重新導向頁面",
        "whatlinkshere-hidetrans": "$1 引用",
        "whatlinkshere-hidelinks": "$1 連結",
        "whatlinkshere-hideimages": "$1 檔案連結",
        "ipbreason-dropdown": "*常見的封鎖原因\n** 填寫不實資訊\n** 刪除頁面內容\n** 散佈外部廣告連結\n** 在頁面填寫無意義文字\n** 無禮的行為、攻擊/騷擾別人\n** 濫用多個帳號\n** 使用不受歡迎的使用者名稱",
        "ipb-hardblock": "避免使用此 IP 位址登入的使用者編輯",
        "ipbcreateaccount": "禁止建立帳號",
-       "ipbemailban": "禁止使用者送電子郵件",
-       "ipbenableautoblock": "自動封鎖此使用者最後使用的 IP 位,以及所有之後嘗試編輯使用的 IP 位址",
-       "ipbsubmit": "查封該地址",
+       "ipbemailban": "禁止使用者送電子郵件",
+       "ipbenableautoblock": "自動封鎖此使用者最後使用的 IP 位,以及所有之後嘗試編輯使用的 IP 位址",
+       "ipbsubmit": "封禁該使用者",
        "ipbother": "其它時間:",
        "ipboptions": "2小時:2 hours,1天:1 day,3天:3 days,1周:1 week,2周:2 weeks,1個月:1 month,3個月:3 months,6個月:6 months,1年:1 year,無限期:infinite",
        "ipbhidename": "在編輯及清單中隱藏使用者名稱",
        "unblocklink": "解除封鎖",
        "change-blocklink": "變更封鎖",
        "contribslink": "貢獻",
-       "emaillink": "送電子郵件",
+       "emaillink": "送電子郵件",
        "autoblocker": "您的 IP 位址因最近被 [[User:$1|$1]] 使用過而被自動封鎖。\n封鎖 $1 的原因為 \"$2\"",
        "blocklogpage": "查封日誌",
        "blocklog-showlog": "此使用者先前被封鎖過。\n以下為封鎖紀錄以供參考:",
        "proxyblocker": "代理封鎖器",
        "proxyblockreason": "因您的 IP 位址是開放代理伺服器,已被封鎖。\n請聯繫您的網路服務供應商或您所在組織的技術支援,告知他們此嚴重的安全性問題。",
        "sorbsreason": "您的IP位址在{{SITENAME}}中被 DNSBL列為屬於開放代理服務器。",
-       "sorbs_create_account_reason": "您連線到 {{SITENAME}} 的 IP 位址被 DNSBL 列為開放代理伺服。\n您不能建立帳號。",
+       "sorbs_create_account_reason": "您連線到 {{SITENAME}} 的 IP 位址被 DNSBL 列為開放代理伺服。\n您不能建立帳號。",
        "xffblockreason": "您的 IP 位址使用 X-Forwarded-For 標頭,您或您使用的代理伺服器已被封鎖。\n封鎖的原因為:$1",
        "cant-see-hidden-user": "您欲封鎖的使用者已經被封鎖並且隱藏。\n您沒有隱藏使用者的權限,您無法檢視或編輯該使用者的封鎖狀態。",
        "ipbblocked": "因您已被封鎖,故無法封鎖或解除封鎖其他使用者。",
        "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": "相關的的對話頁面 (如果有的話) 會自動與該頁面一起移動,<strong>除非:</strong>\n*新的名稱已有一個存在的對話頁面,或\n*您未勾選此核選方塊。\n\n在上述情況下,若有必要您必須手動移動或合併已存在的頁面。",
        "movearticle": "移動頁面:",
        "moveuserpage-warning": "<strong>警告:</strong>您正要移動使用者頁面,請注意只有使用者頁面會變更名稱,並<em>不會</em>重新命名使用者。",
        "movepagebtn": "移動頁面",
        "pagemovedsub": "移動成功",
        "movepage-moved": "<strong>已移動 \"$1\" 至 \"$2\"</strong>",
-       "movepage-moved-redirect": "已建立重向頁面。",
-       "movepage-moved-noredirect": "已禁止建立重向頁面。",
+       "movepage-moved-redirect": "已建立重新導向頁面。",
+       "movepage-moved-noredirect": "已禁止建立重新導向頁面。",
        "articleexists": "該頁面名稱已存在,或您選擇的名稱無效。\n請改選擇其他名稱。",
        "cantmove-titleprotected": "您選擇的新標題已被禁止使用,您不可移動頁面到該位置。",
        "movetalk": "移動相關的對話頁面",
        "nonfile-cannot-move-to-file": "不可以移動非檔案到檔案命名空間",
        "imagetypemismatch": "新的檔案副檔名不符合該檔案的類型",
        "imageinvalidfilename": "目標檔案名稱無效",
-       "fix-double-redirects": "更新所有指向原標題的重定向",
-       "move-leave-redirect": "留下重向頁面",
+       "fix-double-redirects": "更新所有指向原標題的重新導向頁面",
+       "move-leave-redirect": "留下重新導向頁面",
        "protectedpagemovewarning": "<strong>警告:</strong>本頁已經被保護,只有擁有管理員權限的使用者才可移動。\n以下提供最近的日誌以便參考:",
        "semiprotectedpagemovewarning": "<strong>注意:</strong>本頁已經被保護,只有已註冊的使用者才可移動。\n以下提供最近的日誌以便參考:",
        "move-over-sharedrepo": "== 檔案已存在 ==\n[[:$1]] 已存在於共用檔案庫,將檔案移動到此標題會覆蓋該共用檔案。",
        "tooltip-feed-rss": "訂閱此頁面的 RSS feed",
        "tooltip-feed-atom": "訂閱此頁面的 Atom feed",
        "tooltip-t-contributions": "此使用者的貢獻清單",
-       "tooltip-t-emailuser": "送電子郵件給這個使用者",
+       "tooltip-t-emailuser": "送電子郵件給這個使用者",
        "tooltip-t-upload": "上傳檔案",
        "tooltip-t-specialpages": "全部特殊頁面的列表",
        "tooltip-t-print": "此頁面的可列印版本",
        "pageinfo-views": "檢視次數",
        "pageinfo-watchers": "頁面監視者數",
        "pageinfo-few-watchers": "少於 $1 名監視者",
-       "pageinfo-redirects-name": "指向此頁面的重定向數量",
+       "pageinfo-redirects-name": "指向此頁面的重新導向頁面數量",
        "pageinfo-subpages-name": "此頁面的子頁面",
-       "pageinfo-subpages-value": "$1($2 個重定向頁面; $3 個非重定向頁面)",
+       "pageinfo-subpages-value": "$1 ($2 個重新導向頁面; $3 個非重新導向頁面)",
        "pageinfo-firstuser": "頁面的建立者",
        "pageinfo-firsttime": "頁面創建日期",
        "pageinfo-lastuser": "最近編輯者",
        "pageinfo-templates": "引用的樣版 ($1)",
        "pageinfo-transclusions": "頁面被引用於 ($1)",
        "pageinfo-toolboxlink": "頁面資訊",
-       "pageinfo-redirectsto": "重向至",
+       "pageinfo-redirectsto": "重新導向至",
        "pageinfo-redirectsto-info": "資訊",
        "pageinfo-contentpage": "作為內容頁面計算",
        "pageinfo-contentpage-yes": "是",
        "table_pager_empty": "沒有結果",
        "autosumm-blank": "清空頁面",
        "autosumm-replace": "使用 \"$1\" 取代內容",
-       "autoredircomment": "頁面已重向至 [[$1]]",
+       "autoredircomment": "頁面已重新導向至 [[$1]]",
        "autosumm-new": "已建立頁面,內容為 \"$1\"",
        "size-bytes": "$1 位元組",
        "lag-warn-normal": "此清單可能不會顯示最近 $1 {{PLURAL:$1|秒}}內的變更。",
        "duplicate-defaultsort": "<strong>警告:</strong>預設的排序鍵 \"$2\" 會覆蓋先前預設的排序鍵 \"$1\"。",
        "version": "版本",
        "version-extensions": "已安裝的擴充套件",
+       "version-skins": "已裝外觀",
        "version-specialpages": "特殊頁面",
        "version-parserhooks": "語法連結(Hook)",
        "version-variables": "變數",
        "version-antispam": "垃圾訊息防止",
-       "version-skins": "外觀",
        "version-other": "其他",
        "version-mediahandlers": "媒體處理器",
        "version-hooks": "連結(Hooks)",
        "version-hook-name": "連結名稱",
        "version-hook-subscribedby": "署名",
        "version-version": "($1)",
+       "version-no-ext-name": "[無名]",
        "version-license": "MediaWiki 授權條款",
        "version-ext-license": "授權條款",
        "version-ext-colheader-name": "擴充套件",
+       "version-skin-colheader-name": "外觀",
        "version-ext-colheader-version": "版本",
        "version-ext-colheader-license": "授權條款",
        "version-ext-colheader-description": "說明",
        "version-entrypoints-header-entrypoint": "入口",
        "version-entrypoints-header-url": "URL",
        "version-entrypoints-articlepath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgArticlePath 條目路徑]",
-       "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": "重新導向至檔案、使用者、頁面或修訂 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-submit": "執行",
        "redirect-lookup": "尋找:",
        "redirect-value": "值:",
        "specialpages-group-pages": "頁面清單",
        "specialpages-group-pagetools": "頁面工具",
        "specialpages-group-wiki": "資料和工具",
-       "specialpages-group-redirects": "重定向到別處的特殊頁面",
+       "specialpages-group-redirects": "重新導向相關特殊頁面",
        "specialpages-group-spam": "反垃圾訊息工具",
        "blankpage": "空白頁面",
        "intentionallyblankpage": "此頁面被故意設為空白。",
        "revdelete-restricted": "已套用對管理員的限制",
        "revdelete-unrestricted": "已移除對管理員的限制",
        "logentry-move-move": "$1 {{GENDER:$2|已移動}}頁面 $3 至 $4",
-       "logentry-move-move-noredirect": "$1 已移動頁面 $3 至 $4,不留重定向",
-       "logentry-move-move_redir": "$1 已移動頁面 $3 至 $4 並覆蓋原有重向",
-       "logentry-move-move_redir-noredirect": "$1 已移動頁面 $3 至 $4 並覆蓋原有重定向,不留重定向",
+       "logentry-move-move-noredirect": "$1 已移動頁面 $3 至 $4,不留重新導向頁面",
+       "logentry-move-move_redir": "$1 已移動頁面 $3 至 $4 並覆蓋原有重新導向",
+       "logentry-move-move_redir-noredirect": "$1 {{GENDER:$2|已移動}}頁面 $3 覆蓋重新導向頁面至 $4,未留重新導向頁面",
        "logentry-patrol-patrol": "$1 {{GENDER:$2|已標記}}頁面 $3 的修訂 $4 為已巡查",
        "logentry-patrol-patrol-auto": "$1 已自動{{GENDER:$2|標記}}頁面 $3 的修訂 $4 為已巡查",
        "logentry-newusers-newusers": "已{{GENDER:$2|建立}}使用者帳號 $1",
        "expand_templates_remove_nowiki": "在結果中禁止顯示 <nowiki> 標籤",
        "expand_templates_generate_xml": "顯示 XML 解析樹",
        "expand_templates_generate_rawhtml": "顯示原始 HTML",
-       "expand_templates_preview": "預覽"
+       "expand_templates_preview": "預覽",
+       "pagelanguage": "頁面語言選擇器",
+       "pagelang-name": "頁面",
+       "pagelang-language": "語言",
+       "pagelang-use-default": "使用預設語言",
+       "pagelang-select-lang": "選擇語言",
+       "right-pagelang": "更改頁面語言",
+       "action-pagelang": "更改頁面語言",
+       "log-name-pagelang": "更改語言日誌",
+       "log-description-pagelang": "這是頁面語言更改日誌。",
+       "logentry-pagelang-pagelang": "$1{{GENDER:$2|更改}}$3頁面語言從$4到$5。"
 }
index 07a0467..6900aeb 100644 (file)
@@ -209,6 +209,7 @@ $magicWords = array(
        'forcetoc'                => array( 0,    '__FORCETOC__' ),
        'toc'                     => array( 0,    '__TOC__' ),
        'noeditsection'           => array( 0,    '__NOEDITSECTION__' ),
+       '!'                       => array( 1,    '!' ),
        'currentmonth'            => array( 1,    'CURRENTMONTH', 'CURRENTMONTH2' ),
        'currentmonth1'           => array( 1,    'CURRENTMONTH1' ),
        'currentmonthname'        => array( 1,    'CURRENTMONTHNAME' ),
@@ -440,6 +441,7 @@ $specialPageAliases = array(
        'Newimages'                 => array( 'NewFiles', 'NewImages' ),
        'Newpages'                  => array( 'NewPages' ),
        'PagesWithProp'             => array( 'PagesWithProp', 'Pageswithprop', 'PagesByProp', 'Pagesbyprop' ),
+       'PageLanguage'              => array( 'PageLanguage' ),
        'PasswordReset'             => array( 'PasswordReset' ),
        'PermanentLink'             => array( 'PermanentLink', 'PermaLink' ),
        'Popularpages'              => array( 'PopularPages' ),
index ec0e973..f31bb06 100644 (file)
@@ -68,7 +68,7 @@ $namespaceAliases = array(
        '특수기능' => NS_SPECIAL,
        'MediaWiki토론' => NS_MEDIAWIKI_TALK,
        '그림' => NS_FILE,
-       'í\8c\8cì\9d¼í\86 ë¡ ' => NS_FILE_TALK,
+       '그림í\86 ë¡ ' => NS_FILE_TALK,
 );
 
 $specialPageAliases = array(
index e316d9e..ffb07eb 100644 (file)
@@ -136,6 +136,13 @@ abstract class Maintenance {
         * @return bool
         */
        public static function shouldExecute() {
+               global $wgCommandLineMode;
+
+               if ( !function_exists( 'debug_backtrace' ) ) {
+                       // If someone has a better idea...
+                       return $wgCommandLineMode;
+               }
+
                $bt = debug_backtrace();
                $count = count( $bt );
                if ( $count < 2 ) {
diff --git a/maintenance/archives/patch-page_lang.sql b/maintenance/archives/patch-page_lang.sql
new file mode 100644 (file)
index 0000000..c792b4a
--- /dev/null
@@ -0,0 +1,2 @@
+ALTER TABLE /*$wgDBprefix*/page
+  ADD page_lang varbinary(35) DEFAULT NULL;
index 33da666..0c0b34a 100644 (file)
@@ -39,6 +39,10 @@ class DeleteArchivedFilesImplementation {
                $count = 0;
                foreach ( $res as $row ) {
                        $key = $row->fa_storage_key;
+                       if ( !strlen( $key ) ) {
+                               $output->handleOutput( "Entry with ID {$row->fa_id} has empty key, skipping\n" );
+                               continue;
+                       }
                        $group = $row->fa_storage_group;
                        $id = $row->fa_id;
                        $path = $repo->getZonePath( 'deleted' ) . '/' . $repo->getDeletedHashPath( $key ) . $key;
index c368c3f..49e0e9d 100644 (file)
@@ -69,21 +69,19 @@ class InitSiteStats extends Maintenance {
                        $this->output( "{$views}\n" );
                }
 
+               if ( $this->hasOption( 'update' ) ) {
+                       $this->output( "\nUpdating site statistics..." );
+                       $counter->refresh();
+                       $this->output( "done.\n" );
+               }
+
                if ( $this->hasOption( 'active' ) ) {
-                       $this->output( "Counting active users..." );
+                       $this->output( "\nCounting and updating active users..." );
                        $active = SiteStatsUpdate::cacheUpdate( wfGetDB( DB_MASTER ) );
                        $this->output( "{$active}\n" );
                }
 
-               $this->output( "\nUpdating site statistics..." );
-
-               if ( $this->hasOption( 'update' ) ) {
-                       $counter->update();
-               } else {
-                       $counter->refresh();
-               }
-
-               $this->output( "done.\n" );
+               $this->output( "\nDone.\n" );
        }
 }
 
index 5a3e00c..fbc5d98 100644 (file)
@@ -85,8 +85,8 @@ class CommandLineInstaller extends Maintenance {
                        true
                );
                $this->addOption( 'confpath', "Path to write LocalSettings.php to ($IP)", false, true );
+               $this->addOption( 'dbschema', 'The schema for the MediaWiki DB in PostgreSQL/Microsoft SQL Server (mediawiki)', false, true );
                /*
-               $this->addOption( 'dbschema', 'The schema for the MediaWiki DB in pg (mediawiki)', false, true );
                $this->addOption( 'namespace', 'The project namespace (same as the "name" argument)', false, true );
                */
                $this->addOption( 'env-checks', "Run environment checks only, don't change anything" );
diff --git a/maintenance/mssql/archives/named_constraints.sql b/maintenance/mssql/archives/named_constraints.sql
new file mode 100644 (file)
index 0000000..94b77ea
--- /dev/null
@@ -0,0 +1,38 @@
+DECLARE @fullyQualifiedTableName nvarchar(max),
+@tableName sysname,
+@fieldName sysname,
+@constr sysname,
+@constrNew sysname,
+@sqlcmd nvarchar(max),
+@sqlcreate nvarchar(max)
+
+SET @fullyQualifiedTableName = '/*_*//*$tableName*/'
+SET @tableName = '/*$tableName*/'
+SET @fieldName = '/*$fieldName*/'
+
+SELECT @constr = CONSTRAINT_NAME
+FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
+WHERE TABLE_NAME = @tableName
+AND CONSTRAINT_CATALOG = '/*$wgDBname*/'
+AND CONSTRAINT_SCHEMA = '/*$wgDBmwschema*/'
+AND CONSTRAINT_TYPE = 'CHECK'
+AND CONSTRAINT_NAME LIKE ('CK__' + left(@tableName,9) + '__' + left(@fieldName,5) + '%')
+
+SELECT @constrNew = CONSTRAINT_NAME
+FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
+WHERE TABLE_NAME = @tableName
+AND CONSTRAINT_CATALOG = '/*$wgDBname*/'
+AND CONSTRAINT_SCHEMA = '/*$wgDBmwschema*/'
+AND CONSTRAINT_TYPE = 'CHECK'
+AND CONSTRAINT_NAME = (@fieldName + '_ckc')
+
+IF @constr IS NOT NULL
+BEGIN
+  SET @sqlcmd =  'ALTER TABLE ' + @fullyQualifiedTableName + ' DROP CONSTRAINT [' + @constr + ']'
+  EXECUTE sp_executesql @sqlcmd
+END
+IF @constrNew IS NULL
+BEGIN
+  SET @sqlcreate =  'ALTER TABLE ' + @fullyQualifiedTableName + ' WITH NOCHECK ADD CONSTRAINT ' + @fieldName + '_ckc CHECK /*$checkConstraint*/;'
+  EXECUTE sp_executesql @sqlcreate
+END
\ No newline at end of file
diff --git a/maintenance/mssql/archives/patch-page_page_lang.sql b/maintenance/mssql/archives/patch-page_page_lang.sql
new file mode 100644 (file)
index 0000000..d2f537b
--- /dev/null
@@ -0,0 +1 @@
+ALTER TABLE /*_*/page ADD page_lang VARBINARY(35) DEFAULT NULL
index bccf366..daaa81e 100644 (file)
@@ -119,7 +119,8 @@ CREATE TABLE /*_*/page (
    page_links_updated varchar(14) DEFAULT NULL,
    page_latest INT, -- FK inserted later
    page_len INT NOT NULL,
-   page_content_model nvarchar(32) default null
+   page_content_model nvarchar(32) default null,
+   page_lang VARBINARY(35) DEFAULT NULL
 );
 CREATE UNIQUE INDEX /*i*/name_title ON /*_*/page (page_namespace,page_title);
 CREATE INDEX /*i*/page_random ON /*_*/page (page_random);
@@ -298,8 +299,9 @@ CREATE TABLE /*_*/categorylinks (
   -- paginate the three categories separately.  This never has to be updated
   -- after the page is created, since none of these page types can be moved to
   -- any other.
+  cl_type varchar(10) NOT NULL default 'page',
   -- SQL server doesn't have enums, so we approximate with this
-  cl_type varchar(10) NOT NULL default 'page' CHECK (cl_type IN('page', 'subcat', 'file'))
+  CONSTRAINT cl_type_ckc CHECK (cl_type IN('page', 'subcat', 'file'))
 );
 
 CREATE UNIQUE INDEX /*i*/cl_from ON /*_*/categorylinks (cl_from,cl_to);
@@ -566,11 +568,11 @@ CREATE TABLE /*_*/image (
   img_bits int NOT NULL default 0,
 
   -- Media type as defined by the MEDIATYPE_xxx constants
-  img_media_type varchar(16) default null check (img_media_type in('UNKNOWN', 'BITMAP', 'DRAWING', 'AUDIO', 'VIDEO', 'MULTIMEDIA', 'OFFICE', 'TEXT', 'EXECUTABLE', 'ARCHIVE')),
+  img_media_type varchar(16) default null,
 
   -- major part of a MIME media type as defined by IANA
   -- see http://www.iana.org/assignments/media-types/
-  img_major_mime varchar(16) not null default 'unknown' check (img_major_mime IN('unknown', 'application', 'audio', 'image', 'text', 'video', 'message', 'model', 'multipart')),
+  img_major_mime varchar(16) not null default 'unknown',
 
   -- minor part of a MIME media type as defined by IANA
   -- the minor parts are not required to adher to any standard
@@ -590,7 +592,10 @@ CREATE TABLE /*_*/image (
   img_timestamp nvarchar(14) NOT NULL default '',
 
   -- SHA-1 content hash in base-36
-  img_sha1 nvarchar(32) NOT NULL default ''
+  img_sha1 nvarchar(32) NOT NULL default '',
+
+  CONSTRAINT img_major_mime_ckc check (img_major_mime IN('unknown', 'application', 'audio', 'image', 'text', 'video', 'message', 'model', 'multipart')),
+  CONSTRAINT img_media_type_ckc check (img_media_type in('UNKNOWN', 'BITMAP', 'DRAWING', 'AUDIO', 'VIDEO', 'MULTIMEDIA', 'OFFICE', 'TEXT', 'EXECUTABLE', 'ARCHIVE'))
 );
 
 CREATE INDEX /*i*/img_usertext_timestamp ON /*_*/image (img_user_text,img_timestamp);
@@ -628,11 +633,14 @@ CREATE TABLE /*_*/oldimage (
   oi_timestamp varchar(14) NOT NULL default '',
 
   oi_metadata nvarchar(max) NOT NULL,
-  oi_media_type varchar(16) default null check (oi_media_type IN('UNKNOWN', 'BITMAP', 'DRAWING', 'AUDIO', 'VIDEO', 'MULTIMEDIA', 'OFFICE', 'TEXT', 'EXECUTABLE', 'ARCHIVE')),
-  oi_major_mime varchar(16) not null default 'unknown' check (oi_major_mime IN('unknown', 'application', 'audio', 'image', 'text', 'video', 'message', 'model', 'multipart')),
+  oi_media_type varchar(16) default null,
+  oi_major_mime varchar(16) not null default 'unknown',
   oi_minor_mime nvarchar(100) NOT NULL default 'unknown',
   oi_deleted tinyint NOT NULL default 0,
-  oi_sha1 nvarchar(32) NOT NULL default ''
+  oi_sha1 nvarchar(32) NOT NULL default '',
+
+  CONSTRAINT oi_major_mime_ckc check (oi_major_mime IN('unknown', 'application', 'audio', 'image', 'text', 'video', 'message', 'model', 'multipart')),
+  CONSTRAINT oi_media_type_ckc check (oi_media_type IN('UNKNOWN', 'BITMAP', 'DRAWING', 'AUDIO', 'VIDEO', 'MULTIMEDIA', 'OFFICE', 'TEXT', 'EXECUTABLE', 'ARCHIVE'))
 );
 
 CREATE INDEX /*i*/oi_usertext_timestamp ON /*_*/oldimage (oi_user_text,oi_timestamp);
@@ -678,8 +686,8 @@ CREATE TABLE /*_*/filearchive (
   fa_height int default 0,
   fa_metadata nvarchar(max),
   fa_bits int default 0,
-  fa_media_type varchar(16) default null check (fa_media_type in('UNKNOWN', 'BITMAP', 'DRAWING', 'AUDIO', 'VIDEO', 'MULTIMEDIA', 'OFFICE', 'TEXT', 'EXECUTABLE', 'ARCHIVE')),
-  fa_major_mime varchar(16) not null default 'unknown' check (fa_major_mime in('unknown', 'application', 'audio', 'image', 'text', 'video', 'message', 'model', 'multipart')),
+  fa_media_type varchar(16) default null,
+  fa_major_mime varchar(16) not null default 'unknown',
   fa_minor_mime nvarchar(100) default 'unknown',
   fa_description nvarchar(255),
   fa_user int default 0 REFERENCES /*_*/mwuser(user_id) ON DELETE SET NULL,
@@ -690,7 +698,10 @@ CREATE TABLE /*_*/filearchive (
   fa_deleted tinyint NOT NULL default 0,
 
   -- sha1 hash of file content
-  fa_sha1 nvarchar(32) NOT NULL default ''
+  fa_sha1 nvarchar(32) NOT NULL default '',
+
+  CONSTRAINT fa_major_mime_ckc check (fa_major_mime in('unknown', 'application', 'audio', 'image', 'text', 'video', 'message', 'model', 'multipart')),
+  CONSTRAINT fa_media_type_ckc check (fa_media_type in('UNKNOWN', 'BITMAP', 'DRAWING', 'AUDIO', 'VIDEO', 'MULTIMEDIA', 'OFFICE', 'TEXT', 'EXECUTABLE', 'ARCHIVE'))
 );
 
 -- pick out by image name
@@ -745,12 +756,13 @@ CREATE TABLE /*_*/uploadstash (
   us_sha1 nvarchar(31) NOT NULL,
   us_mime nvarchar(255),
   -- Media type as defined by the MEDIATYPE_xxx constants, should duplicate definition in the image table
-  us_media_type varchar(16) default null check (us_media_type in('UNKNOWN', 'BITMAP', 'DRAWING', 'AUDIO', 'VIDEO', 'MULTIMEDIA', 'OFFICE', 'TEXT', 'EXECUTABLE', 'ARCHIVE')),
+  us_media_type varchar(16) default null,
   -- image-specific properties
   us_image_width int,
   us_image_height int,
-  us_image_bits smallint
+  us_image_bits smallint,
 
+  CONSTRAINT us_media_type_ckc check (us_media_type in('UNKNOWN', 'BITMAP', 'DRAWING', 'AUDIO', 'VIDEO', 'MULTIMEDIA', 'OFFICE', 'TEXT', 'EXECUTABLE', 'ARCHIVE'))
 );
 
 -- sometimes there's a delete for all of a user's stuff.
diff --git a/maintenance/oracle/archives/patch-page-page_lang.sql b/maintenance/oracle/archives/patch-page-page_lang.sql
new file mode 100644 (file)
index 0000000..cae7cf9
--- /dev/null
@@ -0,0 +1,3 @@
+define mw_prefix='{$wgDBprefix}';
+
+ALTER TABLE &mw_prefix.page ADD page_lang VARCHAR2(35);
index ff84858..1e0fa40 100644 (file)
@@ -77,7 +77,8 @@ CREATE TABLE &mw_prefix.page (
   page_links_updated TIMESTAMP(6) WITH TIME ZONE,
   page_latest        NUMBER        DEFAULT 0 NOT NULL, -- FK?
   page_len           NUMBER        DEFAULT 0 NOT NULL,
-  page_content_model VARCHAR2(32)
+  page_content_model VARCHAR2(32),
+  page_lang VARCHAR2(35) DEFAULT NULL
 );
 ALTER TABLE &mw_prefix.page ADD CONSTRAINT &mw_prefix.page_pk PRIMARY KEY (page_id);
 CREATE UNIQUE INDEX &mw_prefix.page_u01 ON &mw_prefix.page (page_namespace,page_title);
index c4b208a..3bde81e 100644 (file)
@@ -41,7 +41,7 @@ class PageExists extends Maintenance {
                if ( $pageExists ) {
                        $text = "{$title} exists.";
                } else {
-                       $text = "{$title} doesn't exist.";
+                       $text = "{$titleArg} doesn't exist.";
                        $code = 1;
                }
                $this->output( $text );
index be8cbdb..cf35fe8 100644 (file)
@@ -89,7 +89,8 @@ CREATE TABLE page (
   page_links_updated TIMESTAMPTZ    NULL,
   page_latest        INTEGER        NOT NULL, -- FK?
   page_len           INTEGER        NOT NULL,
-  page_content_model TEXT
+  page_content_model TEXT,
+  page_lang          TEXT                     DEFAULT NULL
 );
 CREATE UNIQUE INDEX page_unique_name ON page (page_namespace, page_title);
 CREATE INDEX page_main_title         ON page (page_title text_pattern_ops) WHERE page_namespace = 0;
index cc5988c..ca9572f 100755 (executable)
@@ -63,10 +63,8 @@ then
        exit 0
 fi
 
-# Build the distribution (using grunt-test instead of grunt-build, because we
-# want to run unit tests first, and because grunt-build is for a release build
-# and wouldn't put a git hash in the file headers)
-npm install && grunt test || exit 1
+# Build the distribution
+npm install && grunt git-build || exit 1
 
 # Get the list of changes
 NEWCHANGES=$(git log $OLDHASH.. --oneline --no-merges --reverse --color=never)
diff --git a/maintenance/sqlite/archives/patch-page-page_lang.sql b/maintenance/sqlite/archives/patch-page-page_lang.sql
new file mode 100644 (file)
index 0000000..8de2dc7
--- /dev/null
@@ -0,0 +1,3 @@
+-- Add page_lang column
+
+ALTER TABLE /*$wgDBprefix*/page ADD COLUMN page_lang TEXT default NULL;
index 4f1fbbd..6f200b2 100644 (file)
@@ -275,7 +275,10 @@ CREATE TABLE /*_*/page (
   page_len int unsigned NOT NULL,
 
   -- content model, see CONTENT_MODEL_XXX constants
-  page_content_model varbinary(32) DEFAULT NULL
+  page_content_model varbinary(32) DEFAULT NULL,
+
+  -- Page content language
+  page_lang varbinary(35) DEFAULT NULL
 ) /*$wgDBTableOptions*/;
 
 CREATE UNIQUE INDEX /*i*/name_title ON /*_*/page (page_namespace,page_title);
index fae9063..6164282 100644 (file)
@@ -34,8 +34,8 @@ class UpdateSpecialPages extends Maintenance {
                parent::__construct();
                $this->addOption( 'list', 'List special page names' );
                $this->addOption( 'only', 'Only update "page"; case sensitive, ' .
-                       'check correct case by calling this script with --list or on ' .
-                       'includes/QueryPage.php. Ex: --only=BrokenRedirects', false, true );
+                       'check correct case by calling this script with --list. ' .
+                       'Ex: --only=BrokenRedirects', false, true );
                $this->addOption( 'override', 'Also update pages that have updates disabled' );
        }
 
index d22454f..9e83c54 100644 (file)
  * @file
  */
 
+// Bail if PHP is too low
+if ( !function_exists( 'version_compare' ) || version_compare( phpversion(), '5.3.2' ) < 0 ) {
+       // We need to use dirname( __FILE__ ) here cause __DIR__ is PHP5.3+
+       require dirname( dirname( __FILE__ ) ) . '/includes/PHPVersionError.php';
+       wfPHPVersionError( 'mw-config/index.php' );
+}
+
 define( 'MW_CONFIG_CALLBACK', 'Installer::overrideConfig' );
 define( 'MEDIAWIKI_INSTALL', true );
 
@@ -39,8 +46,7 @@ function wfInstallerMain() {
 
                if( $installer->request->getVal( "css" ) ) {
                        // Do not display errors on css pages
-                       $cssDir = $installer->request->getVal( "css" );
-                       $installer->outputCss( $cssDir );
+                       $installer->outputCss();
                        exit;
                }
 
index fd62910..4f854fb 100644 (file)
@@ -232,7 +232,11 @@ return array(
                'scripts' => 'resources/lib/jquery/jquery.hoverIntent.js',
        ),
        'jquery.json' => array(
-               'scripts' => 'resources/lib/jquery/jquery.json.js',
+               // @deprecated since 1.24: Use the 'json' module and global JSON object instead.
+               'scripts' => array(
+                       'resources/lib/jquery/jquery.json.js',
+                       'resources/src/jquery.json-deprecate.js',
+               ),
                'targets' => array( 'mobile', 'desktop' ),
        ),
        'jquery.localize' => array(
@@ -276,7 +280,7 @@ return array(
        ),
        'jquery.jStorage' => array(
                'scripts' => 'resources/lib/jquery/jquery.jStorage.js',
-               'dependencies' => 'jquery.json',
+               'dependencies' => 'json',
        ),
        'jquery.suggestions' => array(
                'scripts' => 'resources/src/jquery/jquery.suggestions.js',
@@ -676,14 +680,25 @@ return array(
                'group' => 'jquery.ui',
        ),
 
+       /* json2 */
+
+       'json' => array(
+               'scripts' => 'resources/lib/json2/json2.js',
+               'targets' => array( 'desktop', 'mobile' ),
+               'skipFunction' => 'resources/src/json-skip.js',
+       ),
+
        /* Moment.js */
 
        'moment' => array(
                'scripts' => 'resources/lib/moment/moment.js',
                'languageScripts' => array(
-                       'ar-ma' => 'resources/lib/moment/lang/ar-ma.js',
                        'ar' => 'resources/lib/moment/lang/ar.js',
+                       'ar-ma' => 'resources/lib/moment/lang/ar-ma.js',
+                       'ar-sa' => 'resources/lib/moment/lang/ar-sa.js',
+                       'az' => 'resources/lib/moment/lang/az.js',
                        'bg' => 'resources/lib/moment/lang/bg.js',
+                       'bn' => 'resources/lib/moment/lang/bn.js',
                        'br' => 'resources/lib/moment/lang/br.js',
                        'bs' => 'resources/lib/moment/lang/bs.js',
                        'ca' => 'resources/lib/moment/lang/ca.js',
@@ -692,6 +707,7 @@ return array(
                        'cy' => 'resources/lib/moment/lang/cy.js',
                        'da' => 'resources/lib/moment/lang/da.js',
                        'de' => 'resources/lib/moment/lang/de.js',
+                       'de-at' => 'resources/lib/moment/lang/de-at.js',
                        'el' => 'resources/lib/moment/lang/el.js',
                        'en-au' => 'resources/lib/moment/lang/en-au.js',
                        'en-ca' => 'resources/lib/moment/lang/en-ca.js',
@@ -735,15 +751,15 @@ return array(
                        'sk' => 'resources/lib/moment/lang/sk.js',
                        'sl' => 'resources/lib/moment/lang/sl.js',
                        'sq' => 'resources/lib/moment/lang/sq.js',
-                       'sr-el' => 'resources/lib/moment/lang/sr.js',
-                       'sr-ec' => 'resources/lib/moment/lang/sr-cyr.js',
+                       'sr' => 'resources/lib/moment/lang/sr.js',
+                       'sr-ec' => 'resources/lib/moment/lang/sr-cyrl.js',
                        'sv' => 'resources/lib/moment/lang/sv.js',
                        'ta' => 'resources/lib/moment/lang/ta.js',
                        'th' => 'resources/lib/moment/lang/th.js',
                        'tl-ph' => 'resources/lib/moment/lang/tl-ph.js',
                        'tr' => 'resources/lib/moment/lang/tr.js',
-                       'tzm-la' => 'resources/lib/moment/lang/tzm-la.js',
                        'tzm' => 'resources/lib/moment/lang/tzm.js',
+                       'tzm-latn' => 'resources/lib/moment/lang/tzm-latn.js',
                        'uk' => 'resources/lib/moment/lang/uk.js',
                        'uz' => 'resources/lib/moment/lang/uz.js',
                        'vi' => 'resources/lib/moment/lang/vi.js',
@@ -869,7 +885,7 @@ return array(
                'scripts' => 'resources/src/mediawiki/mediawiki.inspect.js',
                'dependencies' => array(
                        'jquery.byteLength',
-                       'jquery.json',
+                       'json',
                ),
                'targets' => array( 'desktop', 'mobile' ),
        ),
@@ -1230,6 +1246,9 @@ return array(
                'scripts' => 'resources/src/mediawiki.special/mediawiki.special.movePage.js',
                'dependencies' => 'jquery.byteLimit',
        ),
+       'mediawiki.special.pageLanguage' => array(
+               'scripts' => 'resources/src/mediawiki.special/mediawiki.special.pageLanguage.js',
+       ),
        'mediawiki.special.pagesWithProp' => array(
                'styles' => 'resources/src/mediawiki.special/mediawiki.special.pagesWithProp.css',
        ),
@@ -1440,15 +1459,30 @@ return array(
                'targets' => array( 'desktop', 'mobile' ),
        ),
 
+       /* es5-shim */
+       'es5-shim' => array(
+               'scripts' => array(
+                       'resources/lib/es5-shim/es5-shim.js',
+               ),
+               'targets' => array( 'desktop', 'mobile' ),
+               'skipFunction' => 'resources/src/es5-skip.js',
+       ),
+
        /* OOjs */
-       // WARNING: OOjs and OOjs-UI are NOT COMPATIBLE with older browsers and
-       // WILL BREAK if loaded in browsers that don't support ES5
        'oojs' => array(
                'scripts' => array(
                        'resources/lib/oojs/oojs.js',
                ),
                'targets' => array( 'desktop', 'mobile' ),
+               'dependencies' => array(
+                       'es5-shim',
+                       'json',
+               ),
        ),
+
+       /* OOjs UI */
+       // WARNING: OOjs-UI is NOT TESTED with older browsers and is likely to break
+       // if loaded in browsers that don't support ES5
        'oojs-ui' => array(
                'scripts' => array(
                        'resources/lib/oojs-ui/oojs-ui.js',
@@ -1472,6 +1506,7 @@ return array(
                        'ooui-dialog-confirm-default-cancel'
                ),
                'dependencies' => array(
+                       'es5-shim',
                        'oojs',
                ),
                'targets' => array( 'desktop', 'mobile' ),
diff --git a/resources/lib/es5-shim/es5-shim.js b/resources/lib/es5-shim/es5-shim.js
new file mode 100644 (file)
index 0000000..02048c0
--- /dev/null
@@ -0,0 +1,1432 @@
+/*!
+ * https://github.com/es-shims/es5-shim
+ * @license es5-shim Copyright 2009-2014 by contributors, MIT License
+ * see https://github.com/es-shims/es5-shim/blob/master/LICENSE
+ */
+
+// vim: ts=4 sts=4 sw=4 expandtab
+
+//Add semicolon to prevent IIFE from being passed as argument to concated code.
+;
+
+// UMD (Universal Module Definition)
+// see https://github.com/umdjs/umd/blob/master/returnExports.js
+(function (root, factory) {
+    if (typeof define === 'function' && define.amd) {
+        // AMD. Register as an anonymous module.
+        define(factory);
+    } else if (typeof exports === 'object') {
+        // Node. Does not work with strict CommonJS, but
+        // only CommonJS-like enviroments that support module.exports,
+        // like Node.
+        module.exports = factory();
+    } else {
+        // Browser globals (root is window)
+        root.returnExports = factory();
+    }
+}(this, function () {
+
+/**
+ * Brings an environment as close to ECMAScript 5 compliance
+ * as is possible with the facilities of erstwhile engines.
+ *
+ * Annotated ES5: http://es5.github.com/ (specific links below)
+ * ES5 Spec: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
+ * Required reading: http://javascriptweblog.wordpress.com/2011/12/05/extending-javascript-natives/
+ */
+
+// Shortcut to an often accessed properties, in order to avoid multiple
+// dereference that costs universally.
+var ArrayPrototype = Array.prototype;
+var ObjectPrototype = Object.prototype;
+var FunctionPrototype = Function.prototype;
+var StringPrototype = String.prototype;
+var NumberPrototype = Number.prototype;
+var _Array_slice_ = ArrayPrototype.slice;
+var array_splice = ArrayPrototype.splice;
+var array_push = ArrayPrototype.push;
+var array_unshift = ArrayPrototype.unshift;
+var call = FunctionPrototype.call;
+
+// Having a toString local variable name breaks in Opera so use _toString.
+var _toString = ObjectPrototype.toString;
+
+var isFunction = function (val) {
+    return ObjectPrototype.toString.call(val) === '[object Function]';
+};
+var isRegex = function (val) {
+    return ObjectPrototype.toString.call(val) === '[object RegExp]';
+};
+var isArray = function isArray(obj) {
+    return _toString.call(obj) === "[object Array]";
+};
+var isString = function isString(obj) {
+    return _toString.call(obj) === "[object String]";
+};
+var isArguments = function isArguments(value) {
+    var str = _toString.call(value);
+    var isArgs = str === '[object Arguments]';
+    if (!isArgs) {
+        isArgs = !isArray(str)
+            && value !== null
+            && typeof value === 'object'
+            && typeof value.length === 'number'
+            && value.length >= 0
+            && isFunction(value.callee);
+    }
+    return isArgs;
+};
+
+var supportsDescriptors = Object.defineProperty && (function () {
+    try {
+        Object.defineProperty({}, 'x', {});
+        return true;
+    } catch (e) { /* this is ES3 */
+        return false;
+    }
+}());
+
+// Define configurable, writable and non-enumerable props
+// if they don't exist.
+var defineProperty;
+if (supportsDescriptors) {
+    defineProperty = function (object, name, method, forceAssign) {
+        if (!forceAssign && (name in object)) { return; }
+        Object.defineProperty(object, name, {
+            configurable: true,
+            enumerable: false,
+            writable: true,
+            value: method
+        });
+    };
+} else {
+    defineProperty = function (object, name, method, forceAssign) {
+        if (!forceAssign && (name in object)) { return; }
+        object[name] = method;
+    };
+}
+var defineProperties = function (object, map, forceAssign) {
+    for (var name in map) {
+        if (ObjectPrototype.hasOwnProperty.call(map, name)) {
+          defineProperty(object, name, map[name], forceAssign);
+        }
+    }
+};
+
+//
+// Util
+// ======
+//
+
+// ES5 9.4
+// http://es5.github.com/#x9.4
+// http://jsperf.com/to-integer
+
+function toInteger(n) {
+    n = +n;
+    if (n !== n) { // isNaN
+        n = 0;
+    } else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) {
+        n = (n > 0 || -1) * Math.floor(Math.abs(n));
+    }
+    return n;
+}
+
+function isPrimitive(input) {
+    var type = typeof input;
+    return (
+        input === null ||
+        type === "undefined" ||
+        type === "boolean" ||
+        type === "number" ||
+        type === "string"
+    );
+}
+
+function toPrimitive(input) {
+    var val, valueOf, toStr;
+    if (isPrimitive(input)) {
+        return input;
+    }
+    valueOf = input.valueOf;
+    if (isFunction(valueOf)) {
+        val = valueOf.call(input);
+        if (isPrimitive(val)) {
+            return val;
+        }
+    }
+    toStr = input.toString;
+    if (isFunction(toStr)) {
+        val = toStr.call(input);
+        if (isPrimitive(val)) {
+            return val;
+        }
+    }
+    throw new TypeError();
+}
+
+// ES5 9.9
+// http://es5.github.com/#x9.9
+var toObject = function (o) {
+    if (o == null) { // this matches both null and undefined
+        throw new TypeError("can't convert " + o + " to object");
+    }
+    return Object(o);
+};
+
+var ToUint32 = function ToUint32(x) {
+    return x >>> 0;
+};
+
+//
+// Function
+// ========
+//
+
+// ES-5 15.3.4.5
+// http://es5.github.com/#x15.3.4.5
+
+function Empty() {}
+
+defineProperties(FunctionPrototype, {
+    bind: function bind(that) { // .length is 1
+        // 1. Let Target be the this value.
+        var target = this;
+        // 2. If IsCallable(Target) is false, throw a TypeError exception.
+        if (!isFunction(target)) {
+            throw new TypeError("Function.prototype.bind called on incompatible " + target);
+        }
+        // 3. Let A be a new (possibly empty) internal list of all of the
+        //   argument values provided after thisArg (arg1, arg2 etc), in order.
+        // XXX slicedArgs will stand in for "A" if used
+        var args = _Array_slice_.call(arguments, 1); // for normal call
+        // 4. Let F be a new native ECMAScript object.
+        // 11. Set the [[Prototype]] internal property of F to the standard
+        //   built-in Function prototype object as specified in 15.3.3.1.
+        // 12. Set the [[Call]] internal property of F as described in
+        //   15.3.4.5.1.
+        // 13. Set the [[Construct]] internal property of F as described in
+        //   15.3.4.5.2.
+        // 14. Set the [[HasInstance]] internal property of F as described in
+        //   15.3.4.5.3.
+        var binder = function () {
+
+            if (this instanceof bound) {
+                // 15.3.4.5.2 [[Construct]]
+                // When the [[Construct]] internal method of a function object,
+                // F that was created using the bind function is called with a
+                // list of arguments ExtraArgs, the following steps are taken:
+                // 1. Let target be the value of F's [[TargetFunction]]
+                //   internal property.
+                // 2. If target has no [[Construct]] internal method, a
+                //   TypeError exception is thrown.
+                // 3. Let boundArgs be the value of F's [[BoundArgs]] internal
+                //   property.
+                // 4. Let args be a new list containing the same values as the
+                //   list boundArgs in the same order followed by the same
+                //   values as the list ExtraArgs in the same order.
+                // 5. Return the result of calling the [[Construct]] internal
+                //   method of target providing args as the arguments.
+
+                var result = target.apply(
+                    this,
+                    args.concat(_Array_slice_.call(arguments))
+                );
+                if (Object(result) === result) {
+                    return result;
+                }
+                return this;
+
+            } else {
+                // 15.3.4.5.1 [[Call]]
+                // When the [[Call]] internal method of a function object, F,
+                // which was created using the bind function is called with a
+                // this value and a list of arguments ExtraArgs, the following
+                // steps are taken:
+                // 1. Let boundArgs be the value of F's [[BoundArgs]] internal
+                //   property.
+                // 2. Let boundThis be the value of F's [[BoundThis]] internal
+                //   property.
+                // 3. Let target be the value of F's [[TargetFunction]] internal
+                //   property.
+                // 4. Let args be a new list containing the same values as the
+                //   list boundArgs in the same order followed by the same
+                //   values as the list ExtraArgs in the same order.
+                // 5. Return the result of calling the [[Call]] internal method
+                //   of target providing boundThis as the this value and
+                //   providing args as the arguments.
+
+                // equiv: target.call(this, ...boundArgs, ...args)
+                return target.apply(
+                    that,
+                    args.concat(_Array_slice_.call(arguments))
+                );
+
+            }
+
+        };
+
+        // 15. If the [[Class]] internal property of Target is "Function", then
+        //     a. Let L be the length property of Target minus the length of A.
+        //     b. Set the length own property of F to either 0 or L, whichever is
+        //       larger.
+        // 16. Else set the length own property of F to 0.
+
+        var boundLength = Math.max(0, target.length - args.length);
+
+        // 17. Set the attributes of the length own property of F to the values
+        //   specified in 15.3.5.1.
+        var boundArgs = [];
+        for (var i = 0; i < boundLength; i++) {
+            boundArgs.push("$" + i);
+        }
+
+        // XXX Build a dynamic function with desired amount of arguments is the only
+        // way to set the length property of a function.
+        // In environments where Content Security Policies enabled (Chrome extensions,
+        // for ex.) all use of eval or Function costructor throws an exception.
+        // However in all of these environments Function.prototype.bind exists
+        // and so this code will never be executed.
+        var bound = Function("binder", "return function (" + boundArgs.join(",") + "){return binder.apply(this,arguments)}")(binder);
+
+        if (target.prototype) {
+            Empty.prototype = target.prototype;
+            bound.prototype = new Empty();
+            // Clean up dangling references.
+            Empty.prototype = null;
+        }
+
+        // TODO
+        // 18. Set the [[Extensible]] internal property of F to true.
+
+        // TODO
+        // 19. Let thrower be the [[ThrowTypeError]] function Object (13.2.3).
+        // 20. Call the [[DefineOwnProperty]] internal method of F with
+        //   arguments "caller", PropertyDescriptor {[[Get]]: thrower, [[Set]]:
+        //   thrower, [[Enumerable]]: false, [[Configurable]]: false}, and
+        //   false.
+        // 21. Call the [[DefineOwnProperty]] internal method of F with
+        //   arguments "arguments", PropertyDescriptor {[[Get]]: thrower,
+        //   [[Set]]: thrower, [[Enumerable]]: false, [[Configurable]]: false},
+        //   and false.
+
+        // TODO
+        // NOTE Function objects created using Function.prototype.bind do not
+        // have a prototype property or the [[Code]], [[FormalParameters]], and
+        // [[Scope]] internal properties.
+        // XXX can't delete prototype in pure-js.
+
+        // 22. Return F.
+        return bound;
+    }
+});
+
+// _Please note: Shortcuts are defined after `Function.prototype.bind` as we
+// us it in defining shortcuts.
+var owns = call.bind(ObjectPrototype.hasOwnProperty);
+
+// If JS engine supports accessors creating shortcuts.
+var defineGetter;
+var defineSetter;
+var lookupGetter;
+var lookupSetter;
+var supportsAccessors;
+if ((supportsAccessors = owns(ObjectPrototype, "__defineGetter__"))) {
+    defineGetter = call.bind(ObjectPrototype.__defineGetter__);
+    defineSetter = call.bind(ObjectPrototype.__defineSetter__);
+    lookupGetter = call.bind(ObjectPrototype.__lookupGetter__);
+    lookupSetter = call.bind(ObjectPrototype.__lookupSetter__);
+}
+
+//
+// Array
+// =====
+//
+
+// ES5 15.4.4.12
+// http://es5.github.com/#x15.4.4.12
+var spliceNoopReturnsEmptyArray = (function () {
+    var a = [1, 2];
+    var result = a.splice();
+    return a.length === 2 && isArray(result) && result.length === 0;
+}());
+defineProperties(ArrayPrototype, {
+    // Safari 5.0 bug where .splice() returns undefined
+    splice: function splice(start, deleteCount) {
+        if (arguments.length === 0) {
+            return [];
+        } else {
+            return array_splice.apply(this, arguments);
+        }
+    }
+}, spliceNoopReturnsEmptyArray);
+
+var spliceWorksWithEmptyObject = (function () {
+    var obj = {};
+    ArrayPrototype.splice.call(obj, 0, 0, 1);
+    return obj.length === 1;
+}());
+var omittingSecondSpliceArgIsNoop = [1].splice(0).length === 0;
+defineProperties(ArrayPrototype, {
+    splice: function splice(start, deleteCount) {
+        if (arguments.length === 0) { return []; }
+        var args = arguments;
+        this.length = Math.max(toInteger(this.length), 0);
+        if (arguments.length > 0 && typeof deleteCount !== 'number') {
+            args = _Array_slice_.call(arguments);
+            if (args.length < 2) {
+                args.push(toInteger(deleteCount));
+            } else {
+                args[1] = toInteger(deleteCount);
+            }
+        }
+        return array_splice.apply(this, args);
+    }
+}, !omittingSecondSpliceArgIsNoop || !spliceWorksWithEmptyObject);
+
+// ES5 15.4.4.12
+// http://es5.github.com/#x15.4.4.13
+// Return len+argCount.
+// [bugfix, ielt8]
+// IE < 8 bug: [].unshift(0) === undefined but should be "1"
+var hasUnshiftReturnValueBug = [].unshift(0) !== 1;
+defineProperties(ArrayPrototype, {
+    unshift: function () {
+        array_unshift.apply(this, arguments);
+        return this.length;
+    }
+}, hasUnshiftReturnValueBug);
+
+// ES5 15.4.3.2
+// http://es5.github.com/#x15.4.3.2
+// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/isArray
+defineProperties(Array, { isArray: isArray });
+
+// The IsCallable() check in the Array functions
+// has been replaced with a strict check on the
+// internal class of the object to trap cases where
+// the provided function was actually a regular
+// expression literal, which in V8 and
+// JavaScriptCore is a typeof "function".  Only in
+// V8 are regular expression literals permitted as
+// reduce parameters, so it is desirable in the
+// general case for the shim to match the more
+// strict and common behavior of rejecting regular
+// expressions.
+
+// ES5 15.4.4.18
+// http://es5.github.com/#x15.4.4.18
+// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/array/forEach
+
+// Check failure of by-index access of string characters (IE < 9)
+// and failure of `0 in boxedString` (Rhino)
+var boxedString = Object("a");
+var splitString = boxedString[0] !== "a" || !(0 in boxedString);
+
+var properlyBoxesContext = function properlyBoxed(method) {
+    // Check node 0.6.21 bug where third parameter is not boxed
+    var properlyBoxesNonStrict = true;
+    var properlyBoxesStrict = true;
+    if (method) {
+        method.call('foo', function (_, __, context) {
+            if (typeof context !== 'object') { properlyBoxesNonStrict = false; }
+        });
+
+        method.call([1], function () {
+            'use strict';
+            properlyBoxesStrict = typeof this === 'string';
+        }, 'x');
+    }
+    return !!method && properlyBoxesNonStrict && properlyBoxesStrict;
+};
+
+defineProperties(ArrayPrototype, {
+    forEach: function forEach(fun /*, thisp*/) {
+        var object = toObject(this),
+            self = splitString && isString(this) ? this.split('') : object,
+            thisp = arguments[1],
+            i = -1,
+            length = self.length >>> 0;
+
+        // If no callback function or if callback is not a callable function
+        if (!isFunction(fun)) {
+            throw new TypeError(); // TODO message
+        }
+
+        while (++i < length) {
+            if (i in self) {
+                // Invoke the callback function with call, passing arguments:
+                // context, property value, property key, thisArg object
+                // context
+                fun.call(thisp, self[i], i, object);
+            }
+        }
+    }
+}, !properlyBoxesContext(ArrayPrototype.forEach));
+
+// ES5 15.4.4.19
+// http://es5.github.com/#x15.4.4.19
+// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/map
+defineProperties(ArrayPrototype, {
+    map: function map(fun /*, thisp*/) {
+        var object = toObject(this),
+            self = splitString && isString(this) ? this.split('') : object,
+            length = self.length >>> 0,
+            result = Array(length),
+            thisp = arguments[1];
+
+        // If no callback function or if callback is not a callable function
+        if (!isFunction(fun)) {
+            throw new TypeError(fun + " is not a function");
+        }
+
+        for (var i = 0; i < length; i++) {
+            if (i in self) {
+                result[i] = fun.call(thisp, self[i], i, object);
+            }
+        }
+        return result;
+    }
+}, !properlyBoxesContext(ArrayPrototype.map));
+
+// ES5 15.4.4.20
+// http://es5.github.com/#x15.4.4.20
+// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/filter
+defineProperties(ArrayPrototype, {
+    filter: function filter(fun /*, thisp */) {
+        var object = toObject(this),
+            self = splitString && isString(this) ? this.split('') : object,
+            length = self.length >>> 0,
+            result = [],
+            value,
+            thisp = arguments[1];
+
+        // If no callback function or if callback is not a callable function
+        if (!isFunction(fun)) {
+            throw new TypeError(fun + " is not a function");
+        }
+
+        for (var i = 0; i < length; i++) {
+            if (i in self) {
+                value = self[i];
+                if (fun.call(thisp, value, i, object)) {
+                    result.push(value);
+                }
+            }
+        }
+        return result;
+    }
+}, !properlyBoxesContext(ArrayPrototype.filter));
+
+// ES5 15.4.4.16
+// http://es5.github.com/#x15.4.4.16
+// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/every
+defineProperties(ArrayPrototype, {
+    every: function every(fun /*, thisp */) {
+        var object = toObject(this),
+            self = splitString && isString(this) ? this.split('') : object,
+            length = self.length >>> 0,
+            thisp = arguments[1];
+
+        // If no callback function or if callback is not a callable function
+        if (!isFunction(fun)) {
+            throw new TypeError(fun + " is not a function");
+        }
+
+        for (var i = 0; i < length; i++) {
+            if (i in self && !fun.call(thisp, self[i], i, object)) {
+                return false;
+            }
+        }
+        return true;
+    }
+}, !properlyBoxesContext(ArrayPrototype.every));
+
+// ES5 15.4.4.17
+// http://es5.github.com/#x15.4.4.17
+// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/some
+defineProperties(ArrayPrototype, {
+    some: function some(fun /*, thisp */) {
+        var object = toObject(this),
+            self = splitString && isString(this) ? this.split('') : object,
+            length = self.length >>> 0,
+            thisp = arguments[1];
+
+        // If no callback function or if callback is not a callable function
+        if (!isFunction(fun)) {
+            throw new TypeError(fun + " is not a function");
+        }
+
+        for (var i = 0; i < length; i++) {
+            if (i in self && fun.call(thisp, self[i], i, object)) {
+                return true;
+            }
+        }
+        return false;
+    }
+}, !properlyBoxesContext(ArrayPrototype.some));
+
+// ES5 15.4.4.21
+// http://es5.github.com/#x15.4.4.21
+// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/reduce
+var reduceCoercesToObject = false;
+if (ArrayPrototype.reduce) {
+    reduceCoercesToObject = typeof ArrayPrototype.reduce.call('es5', function (_, __, ___, list) { return list; }) === 'object';
+}
+defineProperties(ArrayPrototype, {
+    reduce: function reduce(fun /*, initial*/) {
+        var object = toObject(this),
+            self = splitString && isString(this) ? this.split('') : object,
+            length = self.length >>> 0;
+
+        // If no callback function or if callback is not a callable function
+        if (!isFunction(fun)) {
+            throw new TypeError(fun + " is not a function");
+        }
+
+        // no value to return if no initial value and an empty array
+        if (!length && arguments.length === 1) {
+            throw new TypeError("reduce of empty array with no initial value");
+        }
+
+        var i = 0;
+        var result;
+        if (arguments.length >= 2) {
+            result = arguments[1];
+        } else {
+            do {
+                if (i in self) {
+                    result = self[i++];
+                    break;
+                }
+
+                // if array contains no values, no initial value to return
+                if (++i >= length) {
+                    throw new TypeError("reduce of empty array with no initial value");
+                }
+            } while (true);
+        }
+
+        for (; i < length; i++) {
+            if (i in self) {
+                result = fun.call(void 0, result, self[i], i, object);
+            }
+        }
+
+        return result;
+    }
+}, !reduceCoercesToObject);
+
+// ES5 15.4.4.22
+// http://es5.github.com/#x15.4.4.22
+// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/reduceRight
+var reduceRightCoercesToObject = false;
+if (ArrayPrototype.reduceRight) {
+    reduceRightCoercesToObject = typeof ArrayPrototype.reduceRight.call('es5', function (_, __, ___, list) { return list; }) === 'object';
+}
+defineProperties(ArrayPrototype, {
+    reduceRight: function reduceRight(fun /*, initial*/) {
+        var object = toObject(this),
+            self = splitString && isString(this) ? this.split('') : object,
+            length = self.length >>> 0;
+
+        // If no callback function or if callback is not a callable function
+        if (!isFunction(fun)) {
+            throw new TypeError(fun + " is not a function");
+        }
+
+        // no value to return if no initial value, empty array
+        if (!length && arguments.length === 1) {
+            throw new TypeError("reduceRight of empty array with no initial value");
+        }
+
+        var result, i = length - 1;
+        if (arguments.length >= 2) {
+            result = arguments[1];
+        } else {
+            do {
+                if (i in self) {
+                    result = self[i--];
+                    break;
+                }
+
+                // if array contains no values, no initial value to return
+                if (--i < 0) {
+                    throw new TypeError("reduceRight of empty array with no initial value");
+                }
+            } while (true);
+        }
+
+        if (i < 0) {
+            return result;
+        }
+
+        do {
+            if (i in self) {
+                result = fun.call(void 0, result, self[i], i, object);
+            }
+        } while (i--);
+
+        return result;
+    }
+}, !reduceRightCoercesToObject);
+
+// ES5 15.4.4.14
+// http://es5.github.com/#x15.4.4.14
+// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf
+var hasFirefox2IndexOfBug = [0, 1].indexOf(1, 2) !== -1;
+defineProperties(ArrayPrototype, {
+    indexOf: function indexOf(sought /*, fromIndex */ ) {
+        var self = splitString && isString(this) ? this.split('') : toObject(this),
+            length = self.length >>> 0;
+
+        if (!length) {
+            return -1;
+        }
+
+        var i = 0;
+        if (arguments.length > 1) {
+            i = toInteger(arguments[1]);
+        }
+
+        // handle negative indices
+        i = i >= 0 ? i : Math.max(0, length + i);
+        for (; i < length; i++) {
+            if (i in self && self[i] === sought) {
+                return i;
+            }
+        }
+        return -1;
+    }
+}, hasFirefox2IndexOfBug);
+
+// ES5 15.4.4.15
+// http://es5.github.com/#x15.4.4.15
+// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/lastIndexOf
+var hasFirefox2LastIndexOfBug = [0, 1].lastIndexOf(0, -3) !== -1;
+defineProperties(ArrayPrototype, {
+    lastIndexOf: function lastIndexOf(sought /*, fromIndex */) {
+        var self = splitString && isString(this) ? this.split('') : toObject(this),
+            length = self.length >>> 0;
+
+        if (!length) {
+            return -1;
+        }
+        var i = length - 1;
+        if (arguments.length > 1) {
+            i = Math.min(i, toInteger(arguments[1]));
+        }
+        // handle negative indices
+        i = i >= 0 ? i : length - Math.abs(i);
+        for (; i >= 0; i--) {
+            if (i in self && sought === self[i]) {
+                return i;
+            }
+        }
+        return -1;
+    }
+}, hasFirefox2LastIndexOfBug);
+
+//
+// Object
+// ======
+//
+
+// ES5 15.2.3.14
+// http://es5.github.com/#x15.2.3.14
+
+// http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation
+var hasDontEnumBug = !({'toString': null}).propertyIsEnumerable('toString'),
+    hasProtoEnumBug = (function () {}).propertyIsEnumerable('prototype'),
+    dontEnums = [
+        "toString",
+        "toLocaleString",
+        "valueOf",
+        "hasOwnProperty",
+        "isPrototypeOf",
+        "propertyIsEnumerable",
+        "constructor"
+    ],
+    dontEnumsLength = dontEnums.length;
+
+defineProperties(Object, {
+    keys: function keys(object) {
+        var isFn = isFunction(object),
+            isArgs = isArguments(object),
+            isObject = object !== null && typeof object === 'object',
+            isStr = isObject && isString(object);
+
+        if (!isObject && !isFn && !isArgs) {
+            throw new TypeError("Object.keys called on a non-object");
+        }
+
+        var theKeys = [];
+        var skipProto = hasProtoEnumBug && isFn;
+        if (isStr || isArgs) {
+            for (var i = 0; i < object.length; ++i) {
+                theKeys.push(String(i));
+            }
+        } else {
+            for (var name in object) {
+                if (!(skipProto && name === 'prototype') && owns(object, name)) {
+                    theKeys.push(String(name));
+                }
+            }
+        }
+
+        if (hasDontEnumBug) {
+            var ctor = object.constructor,
+                skipConstructor = ctor && ctor.prototype === object;
+            for (var j = 0; j < dontEnumsLength; j++) {
+                var dontEnum = dontEnums[j];
+                if (!(skipConstructor && dontEnum === 'constructor') && owns(object, dontEnum)) {
+                    theKeys.push(dontEnum);
+                }
+            }
+        }
+        return theKeys;
+    }
+});
+
+var keysWorksWithArguments = Object.keys && (function () {
+    // Safari 5.0 bug
+    return Object.keys(arguments).length === 2;
+}(1, 2));
+var originalKeys = Object.keys;
+defineProperties(Object, {
+    keys: function keys(object) {
+        if (isArguments(object)) {
+            return originalKeys(ArrayPrototype.slice.call(object));
+        } else {
+            return originalKeys(object);
+        }
+    }
+}, !keysWorksWithArguments);
+
+//
+// Date
+// ====
+//
+
+// ES5 15.9.5.43
+// http://es5.github.com/#x15.9.5.43
+// This function returns a String value represent the instance in time
+// represented by this Date object. The format of the String is the Date Time
+// string format defined in 15.9.1.15. All fields are present in the String.
+// The time zone is always UTC, denoted by the suffix Z. If the time value of
+// this object is not a finite Number a RangeError exception is thrown.
+var negativeDate = -62198755200000;
+var negativeYearString = "-000001";
+var hasNegativeDateBug = Date.prototype.toISOString && new Date(negativeDate).toISOString().indexOf(negativeYearString) === -1;
+
+defineProperties(Date.prototype, {
+    toISOString: function toISOString() {
+        var result, length, value, year, month;
+        if (!isFinite(this)) {
+            throw new RangeError("Date.prototype.toISOString called on non-finite value.");
+        }
+
+        year = this.getUTCFullYear();
+
+        month = this.getUTCMonth();
+        // see https://github.com/es-shims/es5-shim/issues/111
+        year += Math.floor(month / 12);
+        month = (month % 12 + 12) % 12;
+
+        // the date time string format is specified in 15.9.1.15.
+        result = [month + 1, this.getUTCDate(), this.getUTCHours(), this.getUTCMinutes(), this.getUTCSeconds()];
+        year = (
+            (year < 0 ? "-" : (year > 9999 ? "+" : "")) +
+            ("00000" + Math.abs(year)).slice(0 <= year && year <= 9999 ? -4 : -6)
+        );
+
+        length = result.length;
+        while (length--) {
+            value = result[length];
+            // pad months, days, hours, minutes, and seconds to have two
+            // digits.
+            if (value < 10) {
+                result[length] = "0" + value;
+            }
+        }
+        // pad milliseconds to have three digits.
+        return (
+            year + "-" + result.slice(0, 2).join("-") +
+            "T" + result.slice(2).join(":") + "." +
+            ("000" + this.getUTCMilliseconds()).slice(-3) + "Z"
+        );
+    }
+}, hasNegativeDateBug);
+
+
+// ES5 15.9.5.44
+// http://es5.github.com/#x15.9.5.44
+// This function provides a String representation of a Date object for use by
+// JSON.stringify (15.12.3).
+var dateToJSONIsSupported = false;
+try {
+    dateToJSONIsSupported = (
+        Date.prototype.toJSON &&
+        new Date(NaN).toJSON() === null &&
+        new Date(negativeDate).toJSON().indexOf(negativeYearString) !== -1 &&
+        Date.prototype.toJSON.call({ // generic
+            toISOString: function () {
+                return true;
+            }
+        })
+    );
+} catch (e) {
+}
+if (!dateToJSONIsSupported) {
+    Date.prototype.toJSON = function toJSON(key) {
+        // When the toJSON method is called with argument key, the following
+        // steps are taken:
+
+        // 1.  Let O be the result of calling ToObject, giving it the this
+        // value as its argument.
+        // 2. Let tv be toPrimitive(O, hint Number).
+        var o = Object(this),
+            tv = toPrimitive(o),
+            toISO;
+        // 3. If tv is a Number and is not finite, return null.
+        if (typeof tv === "number" && !isFinite(tv)) {
+            return null;
+        }
+        // 4. Let toISO be the result of calling the [[Get]] internal method of
+        // O with argument "toISOString".
+        toISO = o.toISOString;
+        // 5. If IsCallable(toISO) is false, throw a TypeError exception.
+        if (typeof toISO !== "function") {
+            throw new TypeError("toISOString property is not callable");
+        }
+        // 6. Return the result of calling the [[Call]] internal method of
+        //  toISO with O as the this value and an empty argument list.
+        return toISO.call(o);
+
+        // NOTE 1 The argument is ignored.
+
+        // NOTE 2 The toJSON function is intentionally generic; it does not
+        // require that its this value be a Date object. Therefore, it can be
+        // transferred to other kinds of objects for use as a method. However,
+        // it does require that any such object have a toISOString method. An
+        // object is free to use the argument key to filter its
+        // stringification.
+    };
+}
+
+// ES5 15.9.4.2
+// http://es5.github.com/#x15.9.4.2
+// based on work shared by Daniel Friesen (dantman)
+// http://gist.github.com/303249
+var supportsExtendedYears = Date.parse('+033658-09-27T01:46:40.000Z') === 1e15;
+var acceptsInvalidDates = !isNaN(Date.parse('2012-04-04T24:00:00.500Z')) || !isNaN(Date.parse('2012-11-31T23:59:59.000Z'));
+var doesNotParseY2KNewYear = isNaN(Date.parse("2000-01-01T00:00:00.000Z"));
+if (!Date.parse || doesNotParseY2KNewYear || acceptsInvalidDates || !supportsExtendedYears) {
+    // XXX global assignment won't work in embeddings that use
+    // an alternate object for the context.
+    Date = (function (NativeDate) {
+
+        // Date.length === 7
+        function Date(Y, M, D, h, m, s, ms) {
+            var length = arguments.length;
+            if (this instanceof NativeDate) {
+                var date = length === 1 && String(Y) === Y ? // isString(Y)
+                    // We explicitly pass it through parse:
+                    new NativeDate(Date.parse(Y)) :
+                    // We have to manually make calls depending on argument
+                    // length here
+                    length >= 7 ? new NativeDate(Y, M, D, h, m, s, ms) :
+                    length >= 6 ? new NativeDate(Y, M, D, h, m, s) :
+                    length >= 5 ? new NativeDate(Y, M, D, h, m) :
+                    length >= 4 ? new NativeDate(Y, M, D, h) :
+                    length >= 3 ? new NativeDate(Y, M, D) :
+                    length >= 2 ? new NativeDate(Y, M) :
+                    length >= 1 ? new NativeDate(Y) :
+                                  new NativeDate();
+                // Prevent mixups with unfixed Date object
+                date.constructor = Date;
+                return date;
+            }
+            return NativeDate.apply(this, arguments);
+        }
+
+        // 15.9.1.15 Date Time String Format.
+        var isoDateExpression = new RegExp("^" +
+            "(\\d{4}|[\+\-]\\d{6})" + // four-digit year capture or sign +
+                                      // 6-digit extended year
+            "(?:-(\\d{2})" + // optional month capture
+            "(?:-(\\d{2})" + // optional day capture
+            "(?:" + // capture hours:minutes:seconds.milliseconds
+                "T(\\d{2})" + // hours capture
+                ":(\\d{2})" + // minutes capture
+                "(?:" + // optional :seconds.milliseconds
+                    ":(\\d{2})" + // seconds capture
+                    "(?:(\\.\\d{1,}))?" + // milliseconds capture
+                ")?" +
+            "(" + // capture UTC offset component
+                "Z|" + // UTC capture
+                "(?:" + // offset specifier +/-hours:minutes
+                    "([-+])" + // sign capture
+                    "(\\d{2})" + // hours offset capture
+                    ":(\\d{2})" + // minutes offset capture
+                ")" +
+            ")?)?)?)?" +
+        "$");
+
+        var months = [
+            0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365
+        ];
+
+        function dayFromMonth(year, month) {
+            var t = month > 1 ? 1 : 0;
+            return (
+                months[month] +
+                Math.floor((year - 1969 + t) / 4) -
+                Math.floor((year - 1901 + t) / 100) +
+                Math.floor((year - 1601 + t) / 400) +
+                365 * (year - 1970)
+            );
+        }
+
+        function toUTC(t) {
+            return Number(new NativeDate(1970, 0, 1, 0, 0, 0, t));
+        }
+
+        // Copy any custom methods a 3rd party library may have added
+        for (var key in NativeDate) {
+            Date[key] = NativeDate[key];
+        }
+
+        // Copy "native" methods explicitly; they may be non-enumerable
+        Date.now = NativeDate.now;
+        Date.UTC = NativeDate.UTC;
+        Date.prototype = NativeDate.prototype;
+        Date.prototype.constructor = Date;
+
+        // Upgrade Date.parse to handle simplified ISO 8601 strings
+        Date.parse = function parse(string) {
+            var match = isoDateExpression.exec(string);
+            if (match) {
+                // parse months, days, hours, minutes, seconds, and milliseconds
+                // provide default values if necessary
+                // parse the UTC offset component
+                var year = Number(match[1]),
+                    month = Number(match[2] || 1) - 1,
+                    day = Number(match[3] || 1) - 1,
+                    hour = Number(match[4] || 0),
+                    minute = Number(match[5] || 0),
+                    second = Number(match[6] || 0),
+                    millisecond = Math.floor(Number(match[7] || 0) * 1000),
+                    // When time zone is missed, local offset should be used
+                    // (ES 5.1 bug)
+                    // see https://bugs.ecmascript.org/show_bug.cgi?id=112
+                    isLocalTime = Boolean(match[4] && !match[8]),
+                    signOffset = match[9] === "-" ? 1 : -1,
+                    hourOffset = Number(match[10] || 0),
+                    minuteOffset = Number(match[11] || 0),
+                    result;
+                if (
+                    hour < (
+                        minute > 0 || second > 0 || millisecond > 0 ?
+                        24 : 25
+                    ) &&
+                    minute < 60 && second < 60 && millisecond < 1000 &&
+                    month > -1 && month < 12 && hourOffset < 24 &&
+                    minuteOffset < 60 && // detect invalid offsets
+                    day > -1 &&
+                    day < (
+                        dayFromMonth(year, month + 1) -
+                        dayFromMonth(year, month)
+                    )
+                ) {
+                    result = (
+                        (dayFromMonth(year, month) + day) * 24 +
+                        hour +
+                        hourOffset * signOffset
+                    ) * 60;
+                    result = (
+                        (result + minute + minuteOffset * signOffset) * 60 +
+                        second
+                    ) * 1000 + millisecond;
+                    if (isLocalTime) {
+                        result = toUTC(result);
+                    }
+                    if (-8.64e15 <= result && result <= 8.64e15) {
+                        return result;
+                    }
+                }
+                return NaN;
+            }
+            return NativeDate.parse.apply(this, arguments);
+        };
+
+        return Date;
+    })(Date);
+}
+
+// ES5 15.9.4.4
+// http://es5.github.com/#x15.9.4.4
+if (!Date.now) {
+    Date.now = function now() {
+        return new Date().getTime();
+    };
+}
+
+
+//
+// Number
+// ======
+//
+
+// ES5.1 15.7.4.5
+// http://es5.github.com/#x15.7.4.5
+var hasToFixedBugs = NumberPrototype.toFixed && (
+  (0.00008).toFixed(3) !== '0.000'
+  || (0.9).toFixed(0) === '0'
+  || (1.255).toFixed(2) !== '1.25'
+  || (1000000000000000128).toFixed(0) !== "1000000000000000128"
+);
+
+var toFixedHelpers = {
+  base: 1e7,
+  size: 6,
+  data: [0, 0, 0, 0, 0, 0],
+  multiply: function multiply(n, c) {
+      var i = -1;
+      while (++i < toFixedHelpers.size) {
+          c += n * toFixedHelpers.data[i];
+          toFixedHelpers.data[i] = c % toFixedHelpers.base;
+          c = Math.floor(c / toFixedHelpers.base);
+      }
+  },
+  divide: function divide(n) {
+      var i = toFixedHelpers.size, c = 0;
+      while (--i >= 0) {
+          c += toFixedHelpers.data[i];
+          toFixedHelpers.data[i] = Math.floor(c / n);
+          c = (c % n) * toFixedHelpers.base;
+      }
+  },
+  numToString: function numToString() {
+      var i = toFixedHelpers.size;
+      var s = '';
+      while (--i >= 0) {
+          if (s !== '' || i === 0 || toFixedHelpers.data[i] !== 0) {
+              var t = String(toFixedHelpers.data[i]);
+              if (s === '') {
+                  s = t;
+              } else {
+                  s += '0000000'.slice(0, 7 - t.length) + t;
+              }
+          }
+      }
+      return s;
+  },
+  pow: function pow(x, n, acc) {
+      return (n === 0 ? acc : (n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc)));
+  },
+  log: function log(x) {
+      var n = 0;
+      while (x >= 4096) {
+          n += 12;
+          x /= 4096;
+      }
+      while (x >= 2) {
+          n += 1;
+          x /= 2;
+      }
+      return n;
+  }
+};
+
+defineProperties(NumberPrototype, {
+    toFixed: function toFixed(fractionDigits) {
+        var f, x, s, m, e, z, j, k;
+
+        // Test for NaN and round fractionDigits down
+        f = Number(fractionDigits);
+        f = f !== f ? 0 : Math.floor(f);
+
+        if (f < 0 || f > 20) {
+            throw new RangeError("Number.toFixed called with invalid number of decimals");
+        }
+
+        x = Number(this);
+
+        // Test for NaN
+        if (x !== x) {
+            return "NaN";
+        }
+
+        // If it is too big or small, return the string value of the number
+        if (x <= -1e21 || x >= 1e21) {
+            return String(x);
+        }
+
+        s = "";
+
+        if (x < 0) {
+            s = "-";
+            x = -x;
+        }
+
+        m = "0";
+
+        if (x > 1e-21) {
+            // 1e-21 < x < 1e21
+            // -70 < log2(x) < 70
+            e = toFixedHelpers.log(x * toFixedHelpers.pow(2, 69, 1)) - 69;
+            z = (e < 0 ? x * toFixedHelpers.pow(2, -e, 1) : x / toFixedHelpers.pow(2, e, 1));
+            z *= 0x10000000000000; // Math.pow(2, 52);
+            e = 52 - e;
+
+            // -18 < e < 122
+            // x = z / 2 ^ e
+            if (e > 0) {
+                toFixedHelpers.multiply(0, z);
+                j = f;
+
+                while (j >= 7) {
+                    toFixedHelpers.multiply(1e7, 0);
+                    j -= 7;
+                }
+
+                toFixedHelpers.multiply(toFixedHelpers.pow(10, j, 1), 0);
+                j = e - 1;
+
+                while (j >= 23) {
+                    toFixedHelpers.divide(1 << 23);
+                    j -= 23;
+                }
+
+                toFixedHelpers.divide(1 << j);
+                toFixedHelpers.multiply(1, 1);
+                toFixedHelpers.divide(2);
+                m = toFixedHelpers.numToString();
+            } else {
+                toFixedHelpers.multiply(0, z);
+                toFixedHelpers.multiply(1 << (-e), 0);
+                m = toFixedHelpers.numToString() + '0.00000000000000000000'.slice(2, 2 + f);
+            }
+        }
+
+        if (f > 0) {
+            k = m.length;
+
+            if (k <= f) {
+                m = s + '0.0000000000000000000'.slice(0, f - k + 2) + m;
+            } else {
+                m = s + m.slice(0, k - f) + '.' + m.slice(k - f);
+            }
+        } else {
+            m = s + m;
+        }
+
+        return m;
+    }
+}, hasToFixedBugs);
+
+
+//
+// String
+// ======
+//
+
+// ES5 15.5.4.14
+// http://es5.github.com/#x15.5.4.14
+
+// [bugfix, IE lt 9, firefox 4, Konqueror, Opera, obscure browsers]
+// Many browsers do not split properly with regular expressions or they
+// do not perform the split correctly under obscure conditions.
+// See http://blog.stevenlevithan.com/archives/cross-browser-split
+// I've tested in many browsers and this seems to cover the deviant ones:
+//    'ab'.split(/(?:ab)*/) should be ["", ""], not [""]
+//    '.'.split(/(.?)(.?)/) should be ["", ".", "", ""], not ["", ""]
+//    'tesst'.split(/(s)*/) should be ["t", undefined, "e", "s", "t"], not
+//       [undefined, "t", undefined, "e", ...]
+//    ''.split(/.?/) should be [], not [""]
+//    '.'.split(/()()/) should be ["."], not ["", "", "."]
+
+var string_split = StringPrototype.split;
+if (
+    'ab'.split(/(?:ab)*/).length !== 2 ||
+    '.'.split(/(.?)(.?)/).length !== 4 ||
+    'tesst'.split(/(s)*/)[1] === "t" ||
+    'test'.split(/(?:)/, -1).length !== 4 ||
+    ''.split(/.?/).length ||
+    '.'.split(/()()/).length > 1
+) {
+    (function () {
+        var compliantExecNpcg = /()??/.exec("")[1] === void 0; // NPCG: nonparticipating capturing group
+
+        StringPrototype.split = function (separator, limit) {
+            var string = this;
+            if (separator === void 0 && limit === 0) {
+                return [];
+            }
+
+            // If `separator` is not a regex, use native split
+            if (_toString.call(separator) !== "[object RegExp]") {
+                return string_split.call(this, separator, limit);
+            }
+
+            var output = [],
+                flags = (separator.ignoreCase ? "i" : "") +
+                        (separator.multiline  ? "m" : "") +
+                        (separator.extended   ? "x" : "") + // Proposed for ES6
+                        (separator.sticky     ? "y" : ""), // Firefox 3+
+                lastLastIndex = 0,
+                // Make `global` and avoid `lastIndex` issues by working with a copy
+                separator2, match, lastIndex, lastLength;
+            separator = new RegExp(separator.source, flags + "g");
+            string += ""; // Type-convert
+            if (!compliantExecNpcg) {
+                // Doesn't need flags gy, but they don't hurt
+                separator2 = new RegExp("^" + separator.source + "$(?!\\s)", flags);
+            }
+            /* Values for `limit`, per the spec:
+             * If undefined: 4294967295 // Math.pow(2, 32) - 1
+             * If 0, Infinity, or NaN: 0
+             * If positive number: limit = Math.floor(limit); if (limit > 4294967295) limit -= 4294967296;
+             * If negative number: 4294967296 - Math.floor(Math.abs(limit))
+             * If other: Type-convert, then use the above rules
+             */
+            limit = limit === void 0 ?
+                -1 >>> 0 : // Math.pow(2, 32) - 1
+                ToUint32(limit);
+            while (match = separator.exec(string)) {
+                // `separator.lastIndex` is not reliable cross-browser
+                lastIndex = match.index + match[0].length;
+                if (lastIndex > lastLastIndex) {
+                    output.push(string.slice(lastLastIndex, match.index));
+                    // Fix browsers whose `exec` methods don't consistently return `undefined` for
+                    // nonparticipating capturing groups
+                    if (!compliantExecNpcg && match.length > 1) {
+                        match[0].replace(separator2, function () {
+                            for (var i = 1; i < arguments.length - 2; i++) {
+                                if (arguments[i] === void 0) {
+                                    match[i] = void 0;
+                                }
+                            }
+                        });
+                    }
+                    if (match.length > 1 && match.index < string.length) {
+                        ArrayPrototype.push.apply(output, match.slice(1));
+                    }
+                    lastLength = match[0].length;
+                    lastLastIndex = lastIndex;
+                    if (output.length >= limit) {
+                        break;
+                    }
+                }
+                if (separator.lastIndex === match.index) {
+                    separator.lastIndex++; // Avoid an infinite loop
+                }
+            }
+            if (lastLastIndex === string.length) {
+                if (lastLength || !separator.test("")) {
+                    output.push("");
+                }
+            } else {
+                output.push(string.slice(lastLastIndex));
+            }
+            return output.length > limit ? output.slice(0, limit) : output;
+        };
+    }());
+
+// [bugfix, chrome]
+// If separator is undefined, then the result array contains just one String,
+// which is the this value (converted to a String). If limit is not undefined,
+// then the output array is truncated so that it contains no more than limit
+// elements.
+// "0".split(undefined, 0) -> []
+} else if ("0".split(void 0, 0).length) {
+    StringPrototype.split = function split(separator, limit) {
+        if (separator === void 0 && limit === 0) { return []; }
+        return string_split.call(this, separator, limit);
+    };
+}
+
+var str_replace = StringPrototype.replace;
+var replaceReportsGroupsCorrectly = (function () {
+    var groups = [];
+    'x'.replace(/x(.)?/g, function (match, group) {
+        groups.push(group);
+    });
+    return groups.length === 1 && typeof groups[0] === 'undefined';
+}());
+
+if (!replaceReportsGroupsCorrectly) {
+    StringPrototype.replace = function replace(searchValue, replaceValue) {
+        var isFn = isFunction(replaceValue);
+        var hasCapturingGroups = isRegex(searchValue) && (/\)[*?]/).test(searchValue.source);
+        if (!isFn || !hasCapturingGroups) {
+            return str_replace.call(this, searchValue, replaceValue);
+        } else {
+            var wrappedReplaceValue = function (match) {
+                var length = arguments.length;
+                var originalLastIndex = searchValue.lastIndex;
+                searchValue.lastIndex = 0;
+                var args = searchValue.exec(match);
+                searchValue.lastIndex = originalLastIndex;
+                args.push(arguments[length - 2], arguments[length - 1]);
+                return replaceValue.apply(this, args);
+            };
+            return str_replace.call(this, searchValue, wrappedReplaceValue);
+        }
+    };
+}
+
+// ECMA-262, 3rd B.2.3
+// Not an ECMAScript standard, although ECMAScript 3rd Edition has a
+// non-normative section suggesting uniform semantics and it should be
+// normalized across all browsers
+// [bugfix, IE lt 9] IE < 9 substr() with negative value not working in IE
+var string_substr = StringPrototype.substr;
+var hasNegativeSubstrBug = "".substr && "0b".substr(-1) !== "b";
+defineProperties(StringPrototype, {
+    substr: function substr(start, length) {
+        return string_substr.call(
+            this,
+            start < 0 ? ((start = this.length + start) < 0 ? 0 : start) : start,
+            length
+        );
+    }
+}, hasNegativeSubstrBug);
+
+// ES5 15.5.4.20
+// whitespace from: http://es5.github.io/#x15.5.4.20
+var ws = "\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003" +
+    "\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028" +
+    "\u2029\uFEFF";
+var zeroWidth = '\u200b';
+var wsRegexChars = "[" + ws + "]";
+var trimBeginRegexp = new RegExp("^" + wsRegexChars + wsRegexChars + "*");
+var trimEndRegexp = new RegExp(wsRegexChars + wsRegexChars + "*$");
+var hasTrimWhitespaceBug = StringPrototype.trim && (ws.trim() || !zeroWidth.trim());
+defineProperties(StringPrototype, {
+    // http://blog.stevenlevithan.com/archives/faster-trim-javascript
+    // http://perfectionkills.com/whitespace-deviations/
+    trim: function trim() {
+        if (this === void 0 || this === null) {
+            throw new TypeError("can't convert " + this + " to object");
+        }
+        return String(this).replace(trimBeginRegexp, "").replace(trimEndRegexp, "");
+    }
+}, hasTrimWhitespaceBug);
+
+// ES-5 15.1.2.2
+if (parseInt(ws + '08') !== 8 || parseInt(ws + '0x16') !== 22) {
+    parseInt = (function (origParseInt) {
+        var hexRegex = /^0[xX]/;
+        return function parseIntES5(str, radix) {
+            str = String(str).trim();
+            if (!Number(radix)) {
+                radix = hexRegex.test(str) ? 16 : 10;
+            }
+            return origParseInt(str, radix);
+        };
+    }(parseInt));
+}
+
+}));
index 902a5cc..cc11aed 100644 (file)
@@ -9,12 +9,12 @@
  * Licensed under Unlicense:
  *
  * This is free and unencumbered software released into the public domain.
- * 
+ *
  * Anyone is free to copy, modify, publish, use, compile, sell, or
  * distribute this software, either in source code form or as a compiled
  * binary, for any purpose, commercial or non-commercial, and by any
  * means.
- * 
+ *
  * In jurisdictions that recognize copyright laws, the author or authors
  * of this software dedicate any and all copyright interest in the
  * software to the public domain. We make this dedication for the benefit
  * successors. We intend this dedication to be an overt act of
  * relinquishment in perpetuity of all present and future rights to this
  * software under copyright law.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *
+ * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  * OTHER DEALINGS IN THE SOFTWARE.
- * 
+ *
  * For more information, please refer to <http://unlicense.org/>
  */
 
- (function(){
+(function() {
+    'use strict';
+
     var
-        /* jStorage version */
-        JSTORAGE_VERSION = "0.4.8",
+    /* jStorage version */
+        JSTORAGE_VERSION = '0.4.10',
 
         /* detect a dollar object or create one if not found */
         $ = window.jQuery || window.$ || (window.$ = {}),
 
         /* check for a JSON handling support */
         JSON = {
-            parse:
-                window.JSON && (window.JSON.parse || window.JSON.decode) ||
-                String.prototype.evalJSON && function(str){return String(str).evalJSON();} ||
+            parse: window.JSON && (window.JSON.parse || window.JSON.decode) ||
+                String.prototype.evalJSON && function(str) {
+                    return String(str).evalJSON();
+            } ||
                 $.parseJSON ||
                 $.evalJSON,
-            stringify:
-                Object.toJSON ||
+            stringify: Object.toJSON ||
                 window.JSON && (window.JSON.stringify || window.JSON.encode) ||
                 $.toJSON
         };
 
     // Break if no JSON support was found
-    if(!("parse" in JSON) || !("stringify" in JSON)){
-        throw new Error("No JSON support found, include //cdnjs.cloudflare.com/ajax/libs/json2/20110223/json2.js to page");
+    if (!('parse' in JSON) || !('stringify' in JSON)) {
+        throw new Error('No JSON support found, include //cdnjs.cloudflare.com/ajax/libs/json2/20110223/json2.js to page');
     }
 
     var
-        /* This is the object, that holds the cached values */
-        _storage = {__jstorage_meta:{CRC32:{}}},
+    /* This is the object, that holds the cached values */
+        _storage = {
+            __jstorage_meta: {
+                CRC32: {}
+            }
+        },
 
-        /* Actual browser storage (localStorage or globalStorage["domain"]) */
-        _storage_service = {jStorage:"{}"},
+        /* Actual browser storage (localStorage or globalStorage['domain']) */
+        _storage_service = {
+            jStorage: '{}'
+        },
 
         /* DOM element for older IE versions, holds userData behavior */
         _storage_elm = null,
          * XML nodes are encoded and decoded if the node is the value to be saved
          * but not if it's as a property of another object
          * Eg. -
-         *   $.jStorage.set("key", xmlNode);        // IS OK
-         *   $.jStorage.set("key", {xml: xmlNode}); // NOT OK
+         *   $.jStorage.set('key', xmlNode);        // IS OK
+         *   $.jStorage.set('key', {xml: xmlNode}); // NOT OK
          */
         _XMLService = {
 
              * Validates a XML node to be XML
              * based on jQuery.isXML function
              */
-            isXML: function(elm){
+            isXML: function(elm) {
                 var documentElement = (elm ? elm.ownerDocument || elm : 0).documentElement;
-                return documentElement ? documentElement.nodeName !== "HTML" : false;
+                return documentElement ? documentElement.nodeName !== 'HTML' : false;
             },
 
             /**
              * based on http://www.mercurytide.co.uk/news/article/issues-when-working-ajax/
              */
             encode: function(xmlNode) {
-                if(!this.isXML(xmlNode)){
+                if (!this.isXML(xmlNode)) {
                     return false;
                 }
-                try{ // Mozilla, Webkit, Opera
+                try { // Mozilla, Webkit, Opera
                     return new XMLSerializer().serializeToString(xmlNode);
-                }catch(E1) {
-                    try {  // IE
+                } catch (E1) {
+                    try { // IE
                         return xmlNode.xml;
-                    }catch(E2){}
+                    } catch (E2) {}
                 }
                 return false;
             },
              * Decodes a XML node from string
              * loosely based on http://outwestmedia.com/jquery-plugins/xmldom/
              */
-            decode: function(xmlString){
-                var dom_parser = ("DOMParser" in window && (new DOMParser()).parseFromString) ||
-                        (window.ActiveXObject && function(_xmlString) {
-                    var xml_doc = new ActiveXObject("Microsoft.XMLDOM");
-                    xml_doc.async = "false";
-                    xml_doc.loadXML(_xmlString);
-                    return xml_doc;
-                }),
-                resultXML;
-                if(!dom_parser){
+            decode: function(xmlString) {
+                var dom_parser = ('DOMParser' in window && (new DOMParser()).parseFromString) ||
+                    (window.ActiveXObject && function(_xmlString) {
+                        var xml_doc = new ActiveXObject('Microsoft.XMLDOM');
+                        xml_doc.async = 'false';
+                        xml_doc.loadXML(_xmlString);
+                        return xml_doc;
+                    }),
+                    resultXML;
+                if (!dom_parser) {
                     return false;
                 }
-                resultXML = dom_parser.call("DOMParser" in window && (new DOMParser()) || window, xmlString, "text/xml");
-                return this.isXML(resultXML)?resultXML:false;
+                resultXML = dom_parser.call('DOMParser' in window && (new DOMParser()) || window, xmlString, 'text/xml');
+                return this.isXML(resultXML) ? resultXML : false;
             }
         };
 
      * Initialization function. Detects if the browser supports DOM Storage
      * or userData behavior and behaves accordingly.
      */
-    function _init(){
+    function _init() {
         /* Check if browser supports localStorage */
         var localStorageReallyWorks = false;
-        if("localStorage" in window){
+        if ('localStorage' in window) {
             try {
-                window.localStorage.setItem("_tmptest", "tmpval");
+                window.localStorage.setItem('_tmptest', 'tmpval');
                 localStorageReallyWorks = true;
-                window.localStorage.removeItem("_tmptest");
-            } catch(BogusQuotaExceededErrorOnIos5) {
+                window.localStorage.removeItem('_tmptest');
+            } catch (BogusQuotaExceededErrorOnIos5) {
                 // Thanks be to iOS5 Private Browsing mode which throws
                 // QUOTA_EXCEEDED_ERRROR DOM Exception 22.
             }
         }
 
-        if(localStorageReallyWorks){
+        if (localStorageReallyWorks) {
             try {
-                if(window.localStorage) {
+                if (window.localStorage) {
                     _storage_service = window.localStorage;
-                    _backend = "localStorage";
+                    _backend = 'localStorage';
                     _observer_update = _storage_service.jStorage_update;
                 }
-            } catch(E3) {/* Firefox fails when touching localStorage and cookies are disabled */}
+            } catch (E3) { /* Firefox fails when touching localStorage and cookies are disabled */ }
         }
         /* Check if browser supports globalStorage */
-        else if("globalStorage" in window){
+        else if ('globalStorage' in window) {
             try {
-                if(window.globalStorage) {
-                    if(window.location.hostname == "localhost"){
-                        _storage_service = window.globalStorage["localhost.localdomain"];
-                    }
-                    else{
+                if (window.globalStorage) {
+                    if (window.location.hostname == 'localhost') {
+                        _storage_service = window.globalStorage['localhost.localdomain'];
+                    } else {
                         _storage_service = window.globalStorage[window.location.hostname];
                     }
-                    _backend = "globalStorage";
+                    _backend = 'globalStorage';
                     _observer_update = _storage_service.jStorage_update;
                 }
-            } catch(E4) {/* Firefox fails when touching localStorage and cookies are disabled */}
+            } catch (E4) { /* Firefox fails when touching localStorage and cookies are disabled */ }
         }
         /* Check if browser supports userData behavior */
         else {
-            _storage_elm = document.createElement("link");
-            if(_storage_elm.addBehavior){
+            _storage_elm = document.createElement('link');
+            if (_storage_elm.addBehavior) {
 
                 /* Use a DOM element to act as userData storage */
-                _storage_elm.style.behavior = "url(#default#userData)";
+                _storage_elm.style.behavior = 'url(#default#userData)';
 
                 /* userData element needs to be inserted into the DOM! */
-                document.getElementsByTagName("head")[0].appendChild(_storage_elm);
+                document.getElementsByTagName('head')[0].appendChild(_storage_elm);
 
-                try{
-                    _storage_elm.load("jStorage");
-                }catch(E){
+                try {
+                    _storage_elm.load('jStorage');
+                } catch (E) {
                     // try to reset cache
-                    _storage_elm.setAttribute("jStorage", "{}");
-                    _storage_elm.save("jStorage");
-                    _storage_elm.load("jStorage");
+                    _storage_elm.setAttribute('jStorage', '{}');
+                    _storage_elm.save('jStorage');
+                    _storage_elm.load('jStorage');
                 }
 
-                var data = "{}";
-                try{
-                    data = _storage_elm.getAttribute("jStorage");
-                }catch(E5){}
+                var data = '{}';
+                try {
+                    data = _storage_elm.getAttribute('jStorage');
+                } catch (E5) {}
 
-                try{
-                    _observer_update = _storage_elm.getAttribute("jStorage_update");
-                }catch(E6){}
+                try {
+                    _observer_update = _storage_elm.getAttribute('jStorage_update');
+                } catch (E6) {}
 
                 _storage_service.jStorage = data;
-                _backend = "userDataBehavior";
-            }else{
+                _backend = 'userDataBehavior';
+            } else {
                 _storage_elm = null;
                 return;
             }
         _handlePubSub();
 
         // handle cached navigation
-        if("addEventListener" in window){
-            window.addEventListener("pageshow", function(event){
-                if(event.persisted){
+        if ('addEventListener' in window) {
+            window.addEventListener('pageshow', function(event) {
+                if (event.persisted) {
                     _storageObserver();
                 }
             }, false);
     /**
      * Reload data from storage when needed
      */
-    function _reloadData(){
-        var data = "{}";
+    function _reloadData() {
+        var data = '{}';
 
-        if(_backend == "userDataBehavior"){
-            _storage_elm.load("jStorage");
+        if (_backend == 'userDataBehavior') {
+            _storage_elm.load('jStorage');
 
-            try{
-                data = _storage_elm.getAttribute("jStorage");
-            }catch(E5){}
+            try {
+                data = _storage_elm.getAttribute('jStorage');
+            } catch (E5) {}
 
-            try{
-                _observer_update = _storage_elm.getAttribute("jStorage_update");
-            }catch(E6){}
+            try {
+                _observer_update = _storage_elm.getAttribute('jStorage_update');
+            } catch (E6) {}
 
             _storage_service.jStorage = data;
         }
     /**
      * Sets up a storage change observer
      */
-    function _setupObserver(){
-        if(_backend == "localStorage" || _backend == "globalStorage"){
-            if("addEventListener" in window){
-                window.addEventListener("storage", _storageObserver, false);
-            }else{
-                document.attachEvent("onstorage", _storageObserver);
-            }
-        }else if(_backend == "userDataBehavior"){
+    function _setupObserver() {
+        if (_backend == 'localStorage' || _backend == 'globalStorage') {
+            if ('addEventListener' in window) {
+                window.addEventListener('storage', _storageObserver, false);
+            } else {
+                document.attachEvent('onstorage', _storageObserver);
+            }
+        } else if (_backend == 'userDataBehavior') {
             setInterval(_storageObserver, 1000);
         }
     }
      * Fired on any kind of data change, needs to check if anything has
      * really been changed
      */
-    function _storageObserver(){
+    function _storageObserver() {
         var updateTime;
         // cumulate change notifications with timeout
         clearTimeout(_observer_timeout);
-        _observer_timeout = setTimeout(function(){
+        _observer_timeout = setTimeout(function() {
 
-            if(_backend == "localStorage" || _backend == "globalStorage"){
+            if (_backend == 'localStorage' || _backend == 'globalStorage') {
                 updateTime = _storage_service.jStorage_update;
-            }else if(_backend == "userDataBehavior"){
-                _storage_elm.load("jStorage");
-                try{
-                    updateTime = _storage_elm.getAttribute("jStorage_update");
-                }catch(E5){}
+            } else if (_backend == 'userDataBehavior') {
+                _storage_elm.load('jStorage');
+                try {
+                    updateTime = _storage_elm.getAttribute('jStorage_update');
+                } catch (E5) {}
             }
 
-            if(updateTime && updateTime != _observer_update){
+            if (updateTime && updateTime != _observer_update) {
                 _observer_update = updateTime;
                 _checkUpdatedKeys();
             }
     /**
      * Reloads the data and checks if any keys are changed
      */
-    function _checkUpdatedKeys(){
+    function _checkUpdatedKeys() {
         var oldCrc32List = JSON.parse(JSON.stringify(_storage.__jstorage_meta.CRC32)),
             newCrc32List;
 
             updated = [],
             removed = [];
 
-        for(key in oldCrc32List){
-            if(oldCrc32List.hasOwnProperty(key)){
-                if(!newCrc32List[key]){
+        for (key in oldCrc32List) {
+            if (oldCrc32List.hasOwnProperty(key)) {
+                if (!newCrc32List[key]) {
                     removed.push(key);
                     continue;
                 }
-                if(oldCrc32List[key] != newCrc32List[key] && String(oldCrc32List[key]).substr(0,2) == "2."){
+                if (oldCrc32List[key] != newCrc32List[key] && String(oldCrc32List[key]).substr(0, 2) == '2.') {
                     updated.push(key);
                 }
             }
         }
 
-        for(key in newCrc32List){
-            if(newCrc32List.hasOwnProperty(key)){
-                if(!oldCrc32List[key]){
+        for (key in newCrc32List) {
+            if (newCrc32List.hasOwnProperty(key)) {
+                if (!oldCrc32List[key]) {
                     updated.push(key);
                 }
             }
         }
 
-        _fireObservers(updated, "updated");
-        _fireObservers(removed, "deleted");
+        _fireObservers(updated, 'updated');
+        _fireObservers(removed, 'deleted');
     }
 
     /**
      * @param {Array|String} keys Array of key names or a key
      * @param {String} action What happened with the value (updated, deleted, flushed)
      */
-    function _fireObservers(keys, action){
+    function _fireObservers(keys, action) {
         keys = [].concat(keys || []);
-        if(action == "flushed"){
+
+        var i, j, len, jlen;
+
+        if (action == 'flushed') {
             keys = [];
-            for(var key in _observers){
-                if(_observers.hasOwnProperty(key)){
+            for (var key in _observers) {
+                if (_observers.hasOwnProperty(key)) {
                     keys.push(key);
                 }
             }
-            action = "deleted";
+            action = 'deleted';
         }
-        for(var i=0, len = keys.length; i<len; i++){
-            if(_observers[keys[i]]){
-                for(var j=0, jlen = _observers[keys[i]].length; j<jlen; j++){
+        for (i = 0, len = keys.length; i < len; i++) {
+            if (_observers[keys[i]]) {
+                for (j = 0, jlen = _observers[keys[i]].length; j < jlen; j++) {
                     _observers[keys[i]][j](keys[i], action);
                 }
             }
-            if(_observers["*"]){
-                for(var j=0, jlen = _observers["*"].length; j<jlen; j++){
-                    _observers["*"][j](keys[i], action);
+            if (_observers['*']) {
+                for (j = 0, jlen = _observers['*'].length; j < jlen; j++) {
+                    _observers['*'][j](keys[i], action);
                 }
             }
         }
     /**
      * Publishes key change to listeners
      */
-    function _publishChange(){
+    function _publishChange() {
         var updateTime = (+new Date()).toString();
 
-        if(_backend == "localStorage" || _backend == "globalStorage"){
+        if (_backend == 'localStorage' || _backend == 'globalStorage') {
             try {
                 _storage_service.jStorage_update = updateTime;
             } catch (E8) {
                 // safari private mode has been enabled after the jStorage initialization
                 _backend = false;
             }
-        }else if(_backend == "userDataBehavior"){
-            _storage_elm.setAttribute("jStorage_update", updateTime);
-            _storage_elm.save("jStorage");
+        } else if (_backend == 'userDataBehavior') {
+            _storage_elm.setAttribute('jStorage_update', updateTime);
+            _storage_elm.save('jStorage');
         }
 
         _storageObserver();
     /**
      * Loads the data from the storage based on the supported mechanism
      */
-    function _load_storage(){
+    function _load_storage() {
         /* if jStorage string is retrieved, then decode it */
-        if(_storage_service.jStorage){
-            try{
+        if (_storage_service.jStorage) {
+            try {
                 _storage = JSON.parse(String(_storage_service.jStorage));
-            }catch(E6){_storage_service.jStorage = "{}";}
-        }else{
-            _storage_service.jStorage = "{}";
+            } catch (E6) {
+                _storage_service.jStorage = '{}';
+            }
+        } else {
+            _storage_service.jStorage = '{}';
         }
-        _storage_size = _storage_service.jStorage?String(_storage_service.jStorage).length:0;
+        _storage_size = _storage_service.jStorage ? String(_storage_service.jStorage).length : 0;
 
-        if(!_storage.__jstorage_meta){
+        if (!_storage.__jstorage_meta) {
             _storage.__jstorage_meta = {};
         }
-        if(!_storage.__jstorage_meta.CRC32){
+        if (!_storage.__jstorage_meta.CRC32) {
             _storage.__jstorage_meta.CRC32 = {};
         }
     }
 
     /**
-     * This functions provides the "save" mechanism to store the jStorage object
+     * This functions provides the 'save' mechanism to store the jStorage object
      */
-    function _save(){
+    function _save() {
         _dropOldEvents(); // remove expired events
-        try{
+        try {
             _storage_service.jStorage = JSON.stringify(_storage);
             // If userData is used as the storage engine, additional
-            if(_storage_elm) {
-                _storage_elm.setAttribute("jStorage",_storage_service.jStorage);
-                _storage_elm.save("jStorage");
+            if (_storage_elm) {
+                _storage_elm.setAttribute('jStorage', _storage_service.jStorage);
+                _storage_elm.save('jStorage');
             }
-            _storage_size = _storage_service.jStorage?String(_storage_service.jStorage).length:0;
-        }catch(E7){/* probably cache is full, nothing is saved this way*/}
+            _storage_size = _storage_service.jStorage ? String(_storage_service.jStorage).length : 0;
+        } catch (E7) { /* probably cache is full, nothing is saved this way*/ }
     }
 
     /**
      *
      * @param {String} key Key name
      */
-    function _checkKey(key){
-        if(typeof key != "string" && typeof key != "number"){
-            throw new TypeError("Key name must be string or numeric");
+    function _checkKey(key) {
+        if (typeof key != 'string' && typeof key != 'number') {
+            throw new TypeError('Key name must be string or numeric');
         }
-        if(key == "__jstorage_meta"){
-            throw new TypeError("Reserved key name");
+        if (key == '__jstorage_meta') {
+            throw new TypeError('Reserved key name');
         }
         return true;
     }
     /**
      * Removes expired keys
      */
-    function _handleTTL(){
-        var curtime, i, TTL, CRC32, nextExpire = Infinity, changed = false, deleted = [];
+    function _handleTTL() {
+        var curtime, i, TTL, CRC32, nextExpire = Infinity,
+            changed = false,
+            deleted = [];
 
         clearTimeout(_ttl_timeout);
 
-        if(!_storage.__jstorage_meta || typeof _storage.__jstorage_meta.TTL != "object"){
+        if (!_storage.__jstorage_meta || typeof _storage.__jstorage_meta.TTL != 'object') {
             // nothing to do here
             return;
         }
         TTL = _storage.__jstorage_meta.TTL;
 
         CRC32 = _storage.__jstorage_meta.CRC32;
-        for(i in TTL){
-            if(TTL.hasOwnProperty(i)){
-                if(TTL[i] <= curtime){
+        for (i in TTL) {
+            if (TTL.hasOwnProperty(i)) {
+                if (TTL[i] <= curtime) {
                     delete TTL[i];
                     delete CRC32[i];
                     delete _storage[i];
                     changed = true;
                     deleted.push(i);
-                }else if(TTL[i] < nextExpire){
+                } else if (TTL[i] < nextExpire) {
                     nextExpire = TTL[i];
                 }
             }
         }
 
         // set next check
-        if(nextExpire != Infinity){
-            _ttl_timeout = setTimeout(Math.min(_handleTTL, nextExpire - curtime, 0x7FFFFFFF));
+        if (nextExpire != Infinity) {
+            _ttl_timeout = setTimeout(_handleTTL, Math.min(nextExpire - curtime, 0x7FFFFFFF));
         }
 
         // save changes
-        if(changed){
+        if (changed) {
             _save();
             _publishChange();
-            _fireObservers(deleted, "deleted");
+            _fireObservers(deleted, 'deleted');
         }
     }
 
     /**
      * Checks if there's any events on hold to be fired to listeners
      */
-    function _handlePubSub(){
+    function _handlePubSub() {
         var i, len;
-        if(!_storage.__jstorage_meta.PubSub){
+        if (!_storage.__jstorage_meta.PubSub) {
             return;
         }
         var pubelm,
             _pubsubCurrent = _pubsub_last;
 
-        for(i=len=_storage.__jstorage_meta.PubSub.length-1; i>=0; i--){
+        for (i = len = _storage.__jstorage_meta.PubSub.length - 1; i >= 0; i--) {
             pubelm = _storage.__jstorage_meta.PubSub[i];
-            if(pubelm[0] > _pubsub_last){
+            if (pubelm[0] > _pubsub_last) {
                 _pubsubCurrent = pubelm[0];
                 _fireSubscribers(pubelm[1], pubelm[2]);
             }
      * @param {String} channel Channel name
      * @param {Mixed} payload Payload data to deliver
      */
-    function _fireSubscribers(channel, payload){
-        if(_pubsub_observers[channel]){
-            for(var i=0, len = _pubsub_observers[channel].length; i<len; i++){
+    function _fireSubscribers(channel, payload) {
+        if (_pubsub_observers[channel]) {
+            for (var i = 0, len = _pubsub_observers[channel].length; i < len; i++) {
                 // send immutable data that can't be modified by listeners
-                try{
+                try {
                     _pubsub_observers[channel][i](channel, JSON.parse(JSON.stringify(payload)));
-                }catch(E){};
+                } catch (E) {}
             }
         }
     }
     /**
      * Remove old events from the publish stream (at least 2sec old)
      */
-    function _dropOldEvents(){
-        if(!_storage.__jstorage_meta.PubSub){
+    function _dropOldEvents() {
+        if (!_storage.__jstorage_meta.PubSub) {
             return;
         }
 
         var retire = +new Date() - 2000;
 
-        for(var i=0, len = _storage.__jstorage_meta.PubSub.length; i<len; i++){
-            if(_storage.__jstorage_meta.PubSub[i][0] <= retire){
+        for (var i = 0, len = _storage.__jstorage_meta.PubSub.length; i < len; i++) {
+            if (_storage.__jstorage_meta.PubSub[i][0] <= retire) {
                 // deleteCount is needed for IE6
                 _storage.__jstorage_meta.PubSub.splice(i, _storage.__jstorage_meta.PubSub.length - i);
                 break;
             }
         }
 
-        if(!_storage.__jstorage_meta.PubSub.length){
+        if (!_storage.__jstorage_meta.PubSub.length) {
             delete _storage.__jstorage_meta.PubSub;
         }
 
      * @param {String} channel Channel name
      * @param {Mixed} payload Payload to send to the subscribers
      */
-    function _publish(channel, payload){
-        if(!_storage.__jstorage_meta){
+    function _publish(channel, payload) {
+        if (!_storage.__jstorage_meta) {
             _storage.__jstorage_meta = {};
         }
-        if(!_storage.__jstorage_meta.PubSub){
+        if (!_storage.__jstorage_meta.PubSub) {
             _storage.__jstorage_meta.PubSub = [];
         }
 
-        _storage.__jstorage_meta.PubSub.unshift([+new Date, channel, payload]);
+        _storage.__jstorage_meta.PubSub.unshift([+new Date(), channel, payload]);
 
         _save();
         _publishChange();
      *
      *  SOURCE: https://github.com/garycourt/murmurhash-js (MIT licensed)
      *
-     * @author <a href="mailto:gary.court@gmail.com">Gary Court</a>
+     * @author <a href='mailto:gary.court@gmail.com'>Gary Court</a>
      * @see http://github.com/garycourt/murmurhash-js
-     * @author <a href="mailto:aappleby@gmail.com">Austin Appleby</a>
+     * @author <a href='mailto:aappleby@gmail.com'>Austin Appleby</a>
      * @see http://sites.google.com/site/murmurhash/
      *
      * @param {string} str ASCII only
         }
 
         switch (l) {
-            case 3: h ^= (str.charCodeAt(i + 2) & 0xff) << 16;
-            case 2: h ^= (str.charCodeAt(i + 1) & 0xff) << 8;
-            case 1: h ^= (str.charCodeAt(i) & 0xff);
+            case 3:
+                h ^= (str.charCodeAt(i + 2) & 0xff) << 16;
+            case 2:
+                h ^= (str.charCodeAt(i + 1) & 0xff) << 8;
+            case 1:
+                h ^= (str.charCodeAt(i) & 0xff);
                 h = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16));
         }
 
          * @param {Number} [options.TTL] - optional TTL value, in milliseconds
          * @return {Mixed} the used value
          */
-        set: function(key, value, options){
+        set: function(key, value, options) {
             _checkKey(key);
 
             options = options || {};
 
             // undefined values are deleted automatically
-            if(typeof value == "undefined"){
+            if (typeof value == 'undefined') {
                 this.deleteKey(key);
                 return value;
             }
 
-            if(_XMLService.isXML(value)){
-                value = {_is_xml:true,xml:_XMLService.encode(value)};
-            }else if(typeof value == "function"){
+            if (_XMLService.isXML(value)) {
+                value = {
+                    _is_xml: true,
+                    xml: _XMLService.encode(value)
+                };
+            } else if (typeof value == 'function') {
                 return undefined; // functions can't be saved!
-            }else if(value && typeof value == "object"){
+            } else if (value && typeof value == 'object') {
                 // clone the object before saving to _storage tree
                 value = JSON.parse(JSON.stringify(value));
             }
 
             _storage[key] = value;
 
-            _storage.__jstorage_meta.CRC32[key] = "2." + murmurhash2_32_gc(JSON.stringify(value), 0x9747b28c);
+            _storage.__jstorage_meta.CRC32[key] = '2.' + murmurhash2_32_gc(JSON.stringify(value), 0x9747b28c);
 
             this.setTTL(key, options.TTL || 0); // also handles saving and _publishChange
 
-            _fireObservers(key, "updated");
+            _fireObservers(key, 'updated');
             return value;
         },
 
          * @param {mixed} def - Default value to return, if key didn't exist.
          * @return {Mixed} the key value, default value or null
          */
-        get: function(key, def){
+        get: function(key, def) {
             _checkKey(key);
-            if(key in _storage){
-                if(_storage[key] && typeof _storage[key] == "object" && _storage[key]._is_xml) {
+            if (key in _storage) {
+                if (_storage[key] && typeof _storage[key] == 'object' && _storage[key]._is_xml) {
                     return _XMLService.decode(_storage[key].xml);
-                }else{
+                } else {
                     return _storage[key];
                 }
             }
-            return typeof(def) == "undefined" ? null : def;
+            return typeof(def) == 'undefined' ? null : def;
         },
 
         /**
          * @param {String} key - Key to delete.
          * @return {Boolean} true if key existed or false if it didn't
          */
-        deleteKey: function(key){
+        deleteKey: function(key) {
             _checkKey(key);
-            if(key in _storage){
+            if (key in _storage) {
                 delete _storage[key];
                 // remove from TTL list
-                if(typeof _storage.__jstorage_meta.TTL == "object" &&
-                  key in _storage.__jstorage_meta.TTL){
+                if (typeof _storage.__jstorage_meta.TTL == 'object' &&
+                    key in _storage.__jstorage_meta.TTL) {
                     delete _storage.__jstorage_meta.TTL[key];
                 }
 
 
                 _save();
                 _publishChange();
-                _fireObservers(key, "deleted");
+                _fireObservers(key, 'deleted');
                 return true;
             }
             return false;
          * @param {Number} ttl - TTL timeout in milliseconds
          * @return {Boolean} true if key existed or false if it didn't
          */
-        setTTL: function(key, ttl){
+        setTTL: function(key, ttl) {
             var curtime = +new Date();
             _checkKey(key);
             ttl = Number(ttl) || 0;
-            if(key in _storage){
+            if (key in _storage) {
 
-                if(!_storage.__jstorage_meta.TTL){
+                if (!_storage.__jstorage_meta.TTL) {
                     _storage.__jstorage_meta.TTL = {};
                 }
 
                 // Set TTL value for the key
-                if(ttl>0){
+                if (ttl > 0) {
                     _storage.__jstorage_meta.TTL[key] = curtime + ttl;
-                }else{
+                } else {
                     delete _storage.__jstorage_meta.TTL[key];
                 }
 
          * @param {String} key Key to check
          * @return {Number} Remaining TTL in milliseconds
          */
-        getTTL: function(key){
-            var curtime = +new Date(), ttl;
+        getTTL: function(key) {
+            var curtime = +new Date(),
+                ttl;
             _checkKey(key);
-            if(key in _storage && _storage.__jstorage_meta.TTL && _storage.__jstorage_meta.TTL[key]){
+            if (key in _storage && _storage.__jstorage_meta.TTL && _storage.__jstorage_meta.TTL[key]) {
                 ttl = _storage.__jstorage_meta.TTL[key] - curtime;
                 return ttl || 0;
             }
          *
          * @return {Boolean} Always true
          */
-        flush: function(){
-            _storage = {__jstorage_meta:{CRC32:{}}};
+        flush: function() {
+            _storage = {
+                __jstorage_meta: {
+                    CRC32: {}
+                }
+            };
             _save();
             _publishChange();
-            _fireObservers(null, "flushed");
+            _fireObservers(null, 'flushed');
             return true;
         },
 
          * Returns a read-only copy of _storage
          *
          * @return {Object} Read-only copy of _storage
-        */
-        storageObj: function(){
+         */
+        storageObj: function() {
             function F() {}
             F.prototype = _storage;
             return new F();
 
         /**
          * Returns an index of all used keys as an array
-         * ["key1", "key2",.."keyN"]
+         * ['key1', 'key2',..'keyN']
          *
          * @return {Array} Used keys
-        */
-        index: function(){
-            var index = [], i;
-            for(i in _storage){
-                if(_storage.hasOwnProperty(i) && i != "__jstorage_meta"){
+         */
+        index: function() {
+            var index = [],
+                i;
+            for (i in _storage) {
+                if (_storage.hasOwnProperty(i) && i != '__jstorage_meta') {
                     index.push(i);
                 }
             }
          * @return {Number} Storage size in chars (not the same as in bytes,
          *                  since some chars may take several bytes)
          */
-        storageSize: function(){
+        storageSize: function() {
             return _storage_size;
         },
 
          *
          * @return {String} Backend name
          */
-        currentBackend: function(){
+        currentBackend: function() {
             return _backend;
         },
 
          *
          * @return {Boolean} True if storage can be used
          */
-        storageAvailable: function(){
+        storageAvailable: function() {
             return !!_backend;
         },
 
          * @param {String} key Key name
          * @param {Function} callback Function to run when the key changes
          */
-        listenKeyChange: function(key, callback){
+        listenKeyChange: function(key, callback) {
             _checkKey(key);
-            if(!_observers[key]){
+            if (!_observers[key]) {
                 _observers[key] = [];
             }
             _observers[key].push(callback);
          * @param {String} key Key name to unregister listeners against
          * @param {Function} [callback] If set, unregister the callback, if not - unregister all
          */
-        stopListening: function(key, callback){
+        stopListening: function(key, callback) {
             _checkKey(key);
 
-            if(!_observers[key]){
+            if (!_observers[key]) {
                 return;
             }
 
-            if(!callback){
+            if (!callback) {
                 delete _observers[key];
                 return;
             }
 
-            for(var i = _observers[key].length - 1; i>=0; i--){
-                if(_observers[key][i] == callback){
-                    _observers[key].splice(i,1);
+            for (var i = _observers[key].length - 1; i >= 0; i--) {
+                if (_observers[key][i] == callback) {
+                    _observers[key].splice(i, 1);
                 }
             }
         },
          * @param {String} channel Channel name
          * @param {Function} callback Function to run when the something is published to the channel
          */
-        subscribe: function(channel, callback){
-            channel = (channel || "").toString();
-            if(!channel){
-                throw new TypeError("Channel not defined");
+        subscribe: function(channel, callback) {
+            channel = (channel || '').toString();
+            if (!channel) {
+                throw new TypeError('Channel not defined');
             }
-            if(!_pubsub_observers[channel]){
+            if (!_pubsub_observers[channel]) {
                 _pubsub_observers[channel] = [];
             }
             _pubsub_observers[channel].push(callback);
          * @param {String} channel Channel name
          * @param {Mixed} payload Payload to deliver
          */
-        publish: function(channel, payload){
-            channel = (channel || "").toString();
-            if(!channel){
-                throw new TypeError("Channel not defined");
+        publish: function(channel, payload) {
+            channel = (channel || '').toString();
+            if (!channel) {
+                throw new TypeError('Channel not defined');
             }
 
             _publish(channel, payload);
         /**
          * Reloads the data from browser storage
          */
-        reInit: function(){
+        reInit: function() {
             _reloadData();
         },
 
         /**
          * Removes reference from global objects and saves it as jStorage
          *
-         * @param {Boolean} option if needed to save object as simple "jStorage" in windows context
+         * @param {Boolean} option if needed to save object as simple 'jStorage' in windows context
          */
-         noConflict: function( saveInGlobal ) {
-            delete window.$.jStorage
+        noConflict: function(saveInGlobal) {
+            delete window.$.jStorage;
 
-            if ( saveInGlobal ) {
+            if (saveInGlobal) {
                 window.jStorage = this;
             }
 
             return this;
-         }
+        }
     };
 
     // Initialize jStorage
     _init();
 
-})();
+})();
\ No newline at end of file
diff --git a/resources/lib/json2/json2.js b/resources/lib/json2/json2.js
new file mode 100644 (file)
index 0000000..deb88ec
--- /dev/null
@@ -0,0 +1,489 @@
+/*
+    json2.js
+    2014-02-04
+
+    Public Domain.
+
+    NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
+
+    See http://www.JSON.org/js.html
+
+
+    This code should be minified before deployment.
+    See http://javascript.crockford.com/jsmin.html
+
+    USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
+    NOT CONTROL.
+
+
+    This file creates a global JSON object containing two methods: stringify
+    and parse.
+
+        JSON.stringify(value, replacer, space)
+            value       any JavaScript value, usually an object or array.
+
+            replacer    an optional parameter that determines how object
+                        values are stringified for objects. It can be a
+                        function or an array of strings.
+
+            space       an optional parameter that specifies the indentation
+                        of nested structures. If it is omitted, the text will
+                        be packed without extra whitespace. If it is a number,
+                        it will specify the number of spaces to indent at each
+                        level. If it is a string (such as '\t' or '&nbsp;'),
+                        it contains the characters used to indent at each level.
+
+            This method produces a JSON text from a JavaScript value.
+
+            When an object value is found, if the object contains a toJSON
+            method, its toJSON method will be called and the result will be
+            stringified. A toJSON method does not serialize: it returns the
+            value represented by the name/value pair that should be serialized,
+            or undefined if nothing should be serialized. The toJSON method
+            will be passed the key associated with the value, and this will be
+            bound to the value
+
+            For example, this would serialize Dates as ISO strings.
+
+                Date.prototype.toJSON = function (key) {
+                    function f(n) {
+                        // Format integers to have at least two digits.
+                        return n < 10 ? '0' + n : n;
+                    }
+
+                    return this.getUTCFullYear()   + '-' +
+                         f(this.getUTCMonth() + 1) + '-' +
+                         f(this.getUTCDate())      + 'T' +
+                         f(this.getUTCHours())     + ':' +
+                         f(this.getUTCMinutes())   + ':' +
+                         f(this.getUTCSeconds())   + 'Z';
+                };
+
+            You can provide an optional replacer method. It will be passed the
+            key and value of each member, with this bound to the containing
+            object. The value that is returned from your method will be
+            serialized. If your method returns undefined, then the member will
+            be excluded from the serialization.
+
+            If the replacer parameter is an array of strings, then it will be
+            used to select the members to be serialized. It filters the results
+            such that only members with keys listed in the replacer array are
+            stringified.
+
+            Values that do not have JSON representations, such as undefined or
+            functions, will not be serialized. Such values in objects will be
+            dropped; in arrays they will be replaced with null. You can use
+            a replacer function to replace those with JSON values.
+            JSON.stringify(undefined) returns undefined.
+
+            The optional space parameter produces a stringification of the
+            value that is filled with line breaks and indentation to make it
+            easier to read.
+
+            If the space parameter is a non-empty string, then that string will
+            be used for indentation. If the space parameter is a number, then
+            the indentation will be that many spaces.
+
+            Example:
+
+            text = JSON.stringify(['e', {pluribus: 'unum'}]);
+            // text is '["e",{"pluribus":"unum"}]'
+
+
+            text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');
+            // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'
+
+            text = JSON.stringify([new Date()], function (key, value) {
+                return this[key] instanceof Date ?
+                    'Date(' + this[key] + ')' : value;
+            });
+            // text is '["Date(---current time---)"]'
+
+
+        JSON.parse(text, reviver)
+            This method parses a JSON text to produce an object or array.
+            It can throw a SyntaxError exception.
+
+            The optional reviver parameter is a function that can filter and
+            transform the results. It receives each of the keys and values,
+            and its return value is used instead of the original value.
+            If it returns what it received, then the structure is not modified.
+            If it returns undefined then the member is deleted.
+
+            Example:
+
+            // Parse the text. Values that look like ISO date strings will
+            // be converted to Date objects.
+
+            myData = JSON.parse(text, function (key, value) {
+                var a;
+                if (typeof value === 'string') {
+                    a =
+/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
+                    if (a) {
+                        return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
+                            +a[5], +a[6]));
+                    }
+                }
+                return value;
+            });
+
+            myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
+                var d;
+                if (typeof value === 'string' &&
+                        value.slice(0, 5) === 'Date(' &&
+                        value.slice(-1) === ')') {
+                    d = new Date(value.slice(5, -1));
+                    if (d) {
+                        return d;
+                    }
+                }
+                return value;
+            });
+
+
+    This is a reference implementation. You are free to copy, modify, or
+    redistribute.
+*/
+
+/*jslint evil: true, regexp: true */
+
+/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
+    call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
+    getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
+    lastIndex, length, parse, prototype, push, replace, slice, stringify,
+    test, toJSON, toString, valueOf
+*/
+
+
+// Create a JSON object only if one does not already exist. We create the
+// methods in a closure to avoid creating global variables.
+
+if (typeof JSON !== 'object') {
+    JSON = {};
+}
+
+(function () {
+    'use strict';
+
+    function f(n) {
+        // Format integers to have at least two digits.
+        return n < 10 ? '0' + n : n;
+    }
+
+    if (typeof Date.prototype.toJSON !== 'function') {
+
+        Date.prototype.toJSON = function () {
+
+            return isFinite(this.valueOf())
+                ? this.getUTCFullYear()     + '-' +
+                    f(this.getUTCMonth() + 1) + '-' +
+                    f(this.getUTCDate())      + 'T' +
+                    f(this.getUTCHours())     + ':' +
+                    f(this.getUTCMinutes())   + ':' +
+                    f(this.getUTCSeconds())   + 'Z'
+                : null;
+        };
+
+        String.prototype.toJSON      =
+            Number.prototype.toJSON  =
+            Boolean.prototype.toJSON = function () {
+                return this.valueOf();
+            };
+    }
+
+    var cx,
+        escapable,
+        gap,
+        indent,
+        meta,
+        rep;
+
+
+    function quote(string) {
+
+// If the string contains no control characters, no quote characters, and no
+// backslash characters, then we can safely slap some quotes around it.
+// Otherwise we must also replace the offending characters with safe escape
+// sequences.
+
+        escapable.lastIndex = 0;
+        return escapable.test(string) ? '"' + string.replace(escapable, function (a) {
+            var c = meta[a];
+            return typeof c === 'string'
+                ? c
+                : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+        }) + '"' : '"' + string + '"';
+    }
+
+
+    function str(key, holder) {
+
+// Produce a string from holder[key].
+
+        var i,          // The loop counter.
+            k,          // The member key.
+            v,          // The member value.
+            length,
+            mind = gap,
+            partial,
+            value = holder[key];
+
+// If the value has a toJSON method, call it to obtain a replacement value.
+
+        if (value && typeof value === 'object' &&
+                typeof value.toJSON === 'function') {
+            value = value.toJSON(key);
+        }
+
+// If we were called with a replacer function, then call the replacer to
+// obtain a replacement value.
+
+        if (typeof rep === 'function') {
+            value = rep.call(holder, key, value);
+        }
+
+// What happens next depends on the value's type.
+
+        switch (typeof value) {
+        case 'string':
+            return quote(value);
+
+        case 'number':
+
+// JSON numbers must be finite. Encode non-finite numbers as null.
+
+            return isFinite(value) ? String(value) : 'null';
+
+        case 'boolean':
+        case 'null':
+
+// If the value is a boolean or null, convert it to a string. Note:
+// typeof null does not produce 'null'. The case is included here in
+// the remote chance that this gets fixed someday.
+
+            return String(value);
+
+// If the type is 'object', we might be dealing with an object or an array or
+// null.
+
+        case 'object':
+
+// Due to a specification blunder in ECMAScript, typeof null is 'object',
+// so watch out for that case.
+
+            if (!value) {
+                return 'null';
+            }
+
+// Make an array to hold the partial results of stringifying this object value.
+
+            gap += indent;
+            partial = [];
+
+// Is the value an array?
+
+            if (Object.prototype.toString.apply(value) === '[object Array]') {
+
+// The value is an array. Stringify every element. Use null as a placeholder
+// for non-JSON values.
+
+                length = value.length;
+                for (i = 0; i < length; i += 1) {
+                    partial[i] = str(i, value) || 'null';
+                }
+
+// Join all of the elements together, separated with commas, and wrap them in
+// brackets.
+
+                v = partial.length === 0
+                    ? '[]'
+                    : gap
+                    ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']'
+                    : '[' + partial.join(',') + ']';
+                gap = mind;
+                return v;
+            }
+
+// If the replacer is an array, use it to select the members to be stringified.
+
+            if (rep && typeof rep === 'object') {
+                length = rep.length;
+                for (i = 0; i < length; i += 1) {
+                    if (typeof rep[i] === 'string') {
+                        k = rep[i];
+                        v = str(k, value);
+                        if (v) {
+                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
+                        }
+                    }
+                }
+            } else {
+
+// Otherwise, iterate through all of the keys in the object.
+
+                for (k in value) {
+                    if (Object.prototype.hasOwnProperty.call(value, k)) {
+                        v = str(k, value);
+                        if (v) {
+                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
+                        }
+                    }
+                }
+            }
+
+// Join all of the member texts together, separated with commas,
+// and wrap them in braces.
+
+            v = partial.length === 0
+                ? '{}'
+                : gap
+                ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}'
+                : '{' + partial.join(',') + '}';
+            gap = mind;
+            return v;
+        }
+    }
+
+// If the JSON object does not yet have a stringify method, give it one.
+
+    if (typeof JSON.stringify !== 'function') {
+        escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
+        meta = {    // table of character substitutions
+            '\b': '\\b',
+            '\t': '\\t',
+            '\n': '\\n',
+            '\f': '\\f',
+            '\r': '\\r',
+            '"' : '\\"',
+            '\\': '\\\\'
+        };
+        JSON.stringify = function (value, replacer, space) {
+
+// The stringify method takes a value and an optional replacer, and an optional
+// space parameter, and returns a JSON text. The replacer can be a function
+// that can replace values, or an array of strings that will select the keys.
+// A default replacer method can be provided. Use of the space parameter can
+// produce text that is more easily readable.
+
+            var i;
+            gap = '';
+            indent = '';
+
+// If the space parameter is a number, make an indent string containing that
+// many spaces.
+
+            if (typeof space === 'number') {
+                for (i = 0; i < space; i += 1) {
+                    indent += ' ';
+                }
+
+// If the space parameter is a string, it will be used as the indent string.
+
+            } else if (typeof space === 'string') {
+                indent = space;
+            }
+
+// If there is a replacer, it must be a function or an array.
+// Otherwise, throw an error.
+
+            rep = replacer;
+            if (replacer && typeof replacer !== 'function' &&
+                    (typeof replacer !== 'object' ||
+                    typeof replacer.length !== 'number')) {
+                throw new Error('JSON.stringify');
+            }
+
+// Make a fake root object containing our value under the key of ''.
+// Return the result of stringifying the value.
+
+            return str('', {'': value});
+        };
+    }
+
+
+// If the JSON object does not yet have a parse method, give it one.
+
+    if (typeof JSON.parse !== 'function') {
+        cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
+        JSON.parse = function (text, reviver) {
+
+// The parse method takes a text and an optional reviver function, and returns
+// a JavaScript value if the text is a valid JSON text.
+
+            var j;
+
+            function walk(holder, key) {
+
+// The walk method is used to recursively walk the resulting structure so
+// that modifications can be made.
+
+                var k, v, value = holder[key];
+                if (value && typeof value === 'object') {
+                    for (k in value) {
+                        if (Object.prototype.hasOwnProperty.call(value, k)) {
+                            v = walk(value, k);
+                            if (v !== undefined) {
+                                value[k] = v;
+                            } else {
+                                delete value[k];
+                            }
+                        }
+                    }
+                }
+                return reviver.call(holder, key, value);
+            }
+
+
+// Parsing happens in four stages. In the first stage, we replace certain
+// Unicode characters with escape sequences. JavaScript handles many characters
+// incorrectly, either silently deleting them, or treating them as line endings.
+
+            text = String(text);
+            cx.lastIndex = 0;
+            if (cx.test(text)) {
+                text = text.replace(cx, function (a) {
+                    return '\\u' +
+                        ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+                });
+            }
+
+// In the second stage, we run the text against regular expressions that look
+// for non-JSON patterns. We are especially concerned with '()' and 'new'
+// because they can cause invocation, and '=' because it can cause mutation.
+// But just to be safe, we want to reject all unexpected forms.
+
+// We split the second stage into 4 regexp operations in order to work around
+// crippling inefficiencies in IE's and Safari's regexp engines. First we
+// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
+// replace all simple value tokens with ']' characters. Third, we delete all
+// open brackets that follow a colon or comma or that begin the text. Finally,
+// we look to see that the remaining characters are only whitespace or ']' or
+// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
+
+            if (/^[\],:{}\s]*$/
+                    .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
+                        .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
+                        .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
+
+// In the third stage we use the eval function to compile the text into a
+// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
+// in JavaScript: it can begin a block or an object literal. We wrap the text
+// in parens to eliminate the ambiguity.
+
+                j = eval('(' + text + ')');
+
+// In the optional fourth stage, we recursively walk the new structure, passing
+// each name/value pair to a reviver function for possible transformation.
+
+                return typeof reviver === 'function'
+                    ? walk({'': j}, '')
+                    : j;
+            }
+
+// If the text is not JSON parseable, then a SyntaxError is thrown.
+
+            throw new SyntaxError('JSON.parse');
+        };
+    }
+}());
diff --git a/resources/lib/moment/lang/ar-sa.js b/resources/lib/moment/lang/ar-sa.js
new file mode 100644 (file)
index 0000000..162d386
--- /dev/null
@@ -0,0 +1,96 @@
+// moment.js language configuration
+// language : Arabic Saudi Arabia (ar-sa)
+// author : Suhail Alkowaileet : https://github.com/xsoh
+
+(function (factory) {
+    if (typeof define === 'function' && define.amd) {
+        define(['moment'], factory); // AMD
+    } else if (typeof exports === 'object') {
+        module.exports = factory(require('../moment')); // Node
+    } else {
+        factory(window.moment); // Browser global
+    }
+}(function (moment) {
+    var symbolMap = {
+        '1': '١',
+        '2': '٢',
+        '3': '٣',
+        '4': '٤',
+        '5': '٥',
+        '6': '٦',
+        '7': '٧',
+        '8': '٨',
+        '9': '٩',
+        '0': '٠'
+    }, numberMap = {
+        '١': '1',
+        '٢': '2',
+        '٣': '3',
+        '٤': '4',
+        '٥': '5',
+        '٦': '6',
+        '٧': '7',
+        '٨': '8',
+        '٩': '9',
+        '٠': '0'
+    };
+
+    return moment.lang('ar-sa', {
+        months : "يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),
+        monthsShort : "يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),
+        weekdays : "الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),
+        weekdaysShort : "أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),
+        weekdaysMin : "ح_ن_ث_ر_خ_ج_س".split("_"),
+        longDateFormat : {
+            LT : "HH:mm",
+            L : "DD/MM/YYYY",
+            LL : "D MMMM YYYY",
+            LLL : "D MMMM YYYY LT",
+            LLLL : "dddd D MMMM YYYY LT"
+        },
+        meridiem : function (hour, minute, isLower) {
+            if (hour < 12) {
+                return "ص";
+            } else {
+                return "م";
+            }
+        },
+        calendar : {
+            sameDay: "[اليوم على الساعة] LT",
+            nextDay: '[غدا على الساعة] LT',
+            nextWeek: 'dddd [على الساعة] LT',
+            lastDay: '[أمس على الساعة] LT',
+            lastWeek: 'dddd [على الساعة] LT',
+            sameElse: 'L'
+        },
+        relativeTime : {
+            future : "في %s",
+            past : "منذ %s",
+            s : "ثوان",
+            m : "دقيقة",
+            mm : "%d دقائق",
+            h : "ساعة",
+            hh : "%d ساعات",
+            d : "يوم",
+            dd : "%d أيام",
+            M : "شهر",
+            MM : "%d أشهر",
+            y : "سنة",
+            yy : "%d سنوات"
+        },
+        preparse: function (string) {
+            return string.replace(/[۰-۹]/g, function (match) {
+                return numberMap[match];
+            }).replace(/،/g, ',');
+        },
+        postformat: function (string) {
+            return string.replace(/\d/g, function (match) {
+                return symbolMap[match];
+            }).replace(/,/g, '،');
+        },
+        week : {
+            dow : 6, // Saturday is the first day of the week.
+            doy : 12  // The week that contains Jan 1st is the first week of the year.
+        }
+    });
+}));
index 6e27d29..dd01a42 100644 (file)
         factory(window.moment); // Browser global
     }
 }(function (moment) {
+    var symbolMap = {
+        '1': '١',
+        '2': '٢',
+        '3': '٣',
+        '4': '٤',
+        '5': '٥',
+        '6': '٦',
+        '7': '٧',
+        '8': '٨',
+        '9': '٩',
+        '0': '٠'
+    }, numberMap = {
+        '١': '1',
+        '٢': '2',
+        '٣': '3',
+        '٤': '4',
+        '٥': '5',
+        '٦': '6',
+        '٧': '7',
+        '٨': '8',
+        '٩': '9',
+        '٠': '0'
+    };
+
     return moment.lang('ar', {
         months : "يناير/ كانون الثاني_فبراير/ شباط_مارس/ آذار_أبريل/ نيسان_مايو/ أيار_يونيو/ حزيران_يوليو/ تموز_أغسطس/ آب_سبتمبر/ أيلول_أكتوبر/ تشرين الأول_نوفمبر/ تشرين الثاني_ديسمبر/ كانون الأول".split("_"),
         monthsShort : "يناير/ كانون الثاني_فبراير/ شباط_مارس/ آذار_أبريل/ نيسان_مايو/ أيار_يونيو/ حزيران_يوليو/ تموز_أغسطس/ آب_سبتمبر/ أيلول_أكتوبر/ تشرين الأول_نوفمبر/ تشرين الثاني_ديسمبر/ كانون الأول".split("_"),
         weekdays : "الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),
-        weekdaysShort : "اÙ\84أحد_اÙ\84إثÙ\86Ù\8aÙ\86_اÙ\84Ø«Ù\84اثاء_اÙ\84أربعاء_اÙ\84Ø®Ù\85Ù\8aس_اÙ\84جÙ\85عة_اÙ\84سبت".split("_"),
+        weekdaysShort : "أحد_إثÙ\86Ù\8aÙ\86_Ø«Ù\84اثاء_أربعاء_Ø®Ù\85Ù\8aس_جÙ\85عة_سبت".split("_"),
         weekdaysMin : "ح_ن_ث_ر_خ_ج_س".split("_"),
         longDateFormat : {
             LT : "HH:mm",
             LLL : "D MMMM YYYY LT",
             LLLL : "dddd D MMMM YYYY LT"
         },
+        meridiem : function (hour, minute, isLower) {
+            if (hour < 12) {
+                return "ص";
+            } else {
+                return "م";
+            }
+        },
         calendar : {
             sameDay: "[اليوم على الساعة] LT",
             nextDay: '[غدا على الساعة] LT',
             y : "سنة",
             yy : "%d سنوات"
         },
+        preparse: function (string) {
+            return string.replace(/[۰-۹]/g, function (match) {
+                return numberMap[match];
+            }).replace(/،/g, ',');
+        },
+        postformat: function (string) {
+            return string.replace(/\d/g, function (match) {
+                return symbolMap[match];
+            }).replace(/,/g, '،');
+        },
         week : {
             dow : 6, // Saturday is the first day of the week.
             doy : 12  // The week that contains Jan 1st is the first week of the year.
diff --git a/resources/lib/moment/lang/az.js b/resources/lib/moment/lang/az.js
new file mode 100644 (file)
index 0000000..bee1f9a
--- /dev/null
@@ -0,0 +1,102 @@
+// moment.js language configuration
+// language : azerbaijani (az)
+// author : topchiyev : https://github.com/topchiyev
+
+(function (factory) {
+    if (typeof define === 'function' && define.amd) {
+        define(['moment'], factory); // AMD
+    } else if (typeof exports === 'object') {
+        module.exports = factory(require('../moment')); // Node
+    } else {
+        factory(window.moment); // Browser global
+    }
+}(function (moment) {
+
+    var suffixes = {
+        1: "-inci",
+        5: "-inci",
+        8: "-inci",
+        70: "-inci",
+        80: "-inci",
+
+        2: "-nci",
+        7: "-nci",
+        20: "-nci",
+        50: "-nci",
+
+        3: "-üncü",
+        4: "-üncü",
+        100: "-üncü",
+
+        6: "-ncı",
+
+        9: "-uncu",
+        10: "-uncu",
+        30: "-uncu",
+
+        60: "-ıncı",
+        90: "-ıncı"
+    };
+    return moment.lang('az', {
+        months : "yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),
+        monthsShort : "yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),
+        weekdays : "Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),
+        weekdaysShort : "Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),
+        weekdaysMin : "Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),
+        longDateFormat : {
+            LT : "HH:mm",
+            L : "DD.MM.YYYY",
+            LL : "D MMMM YYYY",
+            LLL : "D MMMM YYYY LT",
+            LLLL : "dddd, D MMMM YYYY LT"
+        },
+        calendar : {
+            sameDay : '[bugün saat] LT',
+            nextDay : '[sabah saat] LT',
+            nextWeek : '[gələn həftə] dddd [saat] LT',
+            lastDay : '[dünən] LT',
+            lastWeek : '[keçən həftə] dddd [saat] LT',
+            sameElse : 'L'
+        },
+        relativeTime : {
+            future : "%s sonra",
+            past : "%s əvvəl",
+            s : "birneçə saniyyə",
+            m : "bir dəqiqə",
+            mm : "%d dəqiqə",
+            h : "bir saat",
+            hh : "%d saat",
+            d : "bir gün",
+            dd : "%d gün",
+            M : "bir ay",
+            MM : "%d ay",
+            y : "bir il",
+            yy : "%d il"
+        },
+        meridiem : function (hour, minute, isLower) {
+            if (hour < 4) {
+                return "gecə";
+            } else if (hour < 12) {
+                return "səhər";
+            } else if (hour < 17) {
+                return "gündüz";
+            } else {
+                return "axşam";
+            }
+        },
+        ordinal : function (number) {
+            if (number === 0) {  // special case for zero
+                return number + "-ıncı";
+            }
+            var a = number % 10,
+                b = number % 100 - a,
+                c = number >= 100 ? 100 : null;
+
+            return number + (suffixes[a] || suffixes[b] || suffixes[c]);
+        },
+        week : {
+            dow : 1, // Monday is the first day of the week.
+            doy : 7  // The week that contains Jan 1st is the first week of the year.
+        }
+    });
+}));
diff --git a/resources/lib/moment/lang/bn.js b/resources/lib/moment/lang/bn.js
new file mode 100644 (file)
index 0000000..fb23bd0
--- /dev/null
@@ -0,0 +1,106 @@
+// moment.js language configuration
+// language : Bengali (bn)
+// author : Kaushik Gandhi : https://github.com/kaushikgandhi
+
+(function (factory) {
+    if (typeof define === 'function' && define.amd) {
+        define(['moment'], factory); // AMD
+    } else if (typeof exports === 'object') {
+        module.exports = factory(require('../moment')); // Node
+    } else {
+        factory(window.moment); // Browser global
+    }
+}(function (moment) {
+    var symbolMap = {
+        '1': '১',
+        '2': '২',
+        '3': '৩',
+        '4': '৪',
+        '5': '৫',
+        '6': '৬',
+        '7': '৭',
+        '8': '৮',
+        '9': '৯',
+        '0': '০'
+    },
+    numberMap = {
+        '১': '1',
+        '২': '2',
+        '৩': '3',
+        '৪': '4',
+        '৫': '5',
+        '৬': '6',
+        '৭': '7',
+        '৮': '8',
+        '৯': '9',
+        '০': '0'
+    };
+
+    return moment.lang('bn', {
+        months : 'জানুয়ারী_ফেবুয়ারী_মার্চ_এপ্রিল_মে_জুন_জুলাই_অগাস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split("_"),
+        monthsShort : 'জানু_ফেব_মার্চ_এপর_মে_জুন_জুল_অগ_সেপ্ট_অক্টো_নভ_ডিসেম্'.split("_"),
+        weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পত্তিবার_শুক্রুবার_শনিবার'.split("_"),
+        weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পত্তি_শুক্রু_শনি'.split("_"),
+        weekdaysMin : 'রব_সম_মঙ্গ_বু_ব্রিহ_শু_শনি'.split("_"),
+        longDateFormat : {
+            LT : "A h:mm সময়",
+            L : "DD/MM/YYYY",
+            LL : "D MMMM YYYY",
+            LLL : "D MMMM YYYY, LT",
+            LLLL : "dddd, D MMMM YYYY, LT"
+        },
+        calendar : {
+            sameDay : '[আজ] LT',
+            nextDay : '[আগামীকাল] LT',
+            nextWeek : 'dddd, LT',
+            lastDay : '[গতকাল] LT',
+            lastWeek : '[গত] dddd, LT',
+            sameElse : 'L'
+        },
+        relativeTime : {
+            future : "%s পরে",
+            past : "%s আগে",
+            s : "কএক সেকেন্ড",
+            m : "এক মিনিট",
+            mm : "%d মিনিট",
+            h : "এক ঘন্টা",
+            hh : "%d ঘন্টা",
+            d : "এক দিন",
+            dd : "%d দিন",
+            M : "এক মাস",
+            MM : "%d মাস",
+            y : "এক বছর",
+            yy : "%d বছর"
+        },
+        preparse: function (string) {
+            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
+                return numberMap[match];
+            });
+        },
+        postformat: function (string) {
+            return string.replace(/\d/g, function (match) {
+                return symbolMap[match];
+            });
+        },
+        //Bengali is a vast language its spoken 
+        //in different forms in various parts of the world.
+        //I have just generalized with most common one used
+        meridiem : function (hour, minute, isLower) {
+            if (hour < 4) {
+                return "রাত";
+            } else if (hour < 10) {
+                return "শকাল";
+            } else if (hour < 17) {
+                return "দুপুর";
+            } else if (hour < 20) {
+                return "বিকেল";
+            } else {
+                return "রাত";
+            }
+        },
+        week : {
+            dow : 0, // Sunday is the first day of the week.
+            doy : 6  // The week that contains Jan 1st is the first week of the year.
+        }
+    });
+}));
index b47d7c2..5cd8476 100644 (file)
@@ -35,7 +35,7 @@
         },
         relativeTime: {
             future: "mewn %s",
-            past: "%s yn Ã l",
+            past: "%s yn Ã´l",
             s: "ychydig eiliadau",
             m: "munud",
             mm: "%d munud",
index 2fa8244..e06f8c3 100644 (file)
@@ -20,9 +20,9 @@
         longDateFormat : {
             LT : "HH:mm",
             L : "DD/MM/YYYY",
-            LL : "D MMMM YYYY",
-            LLL : "D MMMM YYYY LT",
-            LLLL : "dddd D. MMMM, YYYY LT"
+            LL : "D. MMMM YYYY",
+            LLL : "D. MMMM YYYY LT",
+            LLLL : "dddd [d.] D. MMMM YYYY LT"
         },
         calendar : {
             sameDay : '[I dag kl.] LT',
diff --git a/resources/lib/moment/lang/de-at.js b/resources/lib/moment/lang/de-at.js
new file mode 100644 (file)
index 0000000..565c12b
--- /dev/null
@@ -0,0 +1,72 @@
+// moment.js language configuration
+// language : austrian german (de-at)
+// author : lluchs : https://github.com/lluchs
+// author: Menelion Elensúle: https://github.com/Oire
+// author : Martin Groller : https://github.com/MadMG
+
+(function (factory) {
+    if (typeof define === 'function' && define.amd) {
+        define(['moment'], factory); // AMD
+    } else if (typeof exports === 'object') {
+        module.exports = factory(require('../moment')); // Node
+    } else {
+        factory(window.moment); // Browser global
+    }
+}(function (moment) {
+    function processRelativeTime(number, withoutSuffix, key, isFuture) {
+        var format = {
+            'm': ['eine Minute', 'einer Minute'],
+            'h': ['eine Stunde', 'einer Stunde'],
+            'd': ['ein Tag', 'einem Tag'],
+            'dd': [number + ' Tage', number + ' Tagen'],
+            'M': ['ein Monat', 'einem Monat'],
+            'MM': [number + ' Monate', number + ' Monaten'],
+            'y': ['ein Jahr', 'einem Jahr'],
+            'yy': [number + ' Jahre', number + ' Jahren']
+        };
+        return withoutSuffix ? format[key][0] : format[key][1];
+    }
+
+    return moment.lang('de-at', {
+        months : "Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),
+        monthsShort : "Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),
+        weekdays : "Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),
+        weekdaysShort : "So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),
+        weekdaysMin : "So_Mo_Di_Mi_Do_Fr_Sa".split("_"),
+        longDateFormat : {
+            LT: "HH:mm [Uhr]",
+            L : "DD.MM.YYYY",
+            LL : "D. MMMM YYYY",
+            LLL : "D. MMMM YYYY LT",
+            LLLL : "dddd, D. MMMM YYYY LT"
+        },
+        calendar : {
+            sameDay: "[Heute um] LT",
+            sameElse: "L",
+            nextDay: '[Morgen um] LT',
+            nextWeek: 'dddd [um] LT',
+            lastDay: '[Gestern um] LT',
+            lastWeek: '[letzten] dddd [um] LT'
+        },
+        relativeTime : {
+            future : "in %s",
+            past : "vor %s",
+            s : "ein paar Sekunden",
+            m : processRelativeTime,
+            mm : "%d Minuten",
+            h : processRelativeTime,
+            hh : "%d Stunden",
+            d : processRelativeTime,
+            dd : processRelativeTime,
+            M : processRelativeTime,
+            MM : processRelativeTime,
+            y : processRelativeTime,
+            yy : processRelativeTime
+        },
+        ordinal : '%d.',
+        week : {
+            dow : 1, // Monday is the first day of the week.
+            doy : 4  // The week that contains Jan 4th is the first week of the year.
+        }
+    });
+}));
index 9dfea23..e2a38cd 100644 (file)
             nextDay : '[Αύριο {}] LT',
             nextWeek : 'dddd [{}] LT',
             lastDay : '[Χθες {}] LT',
-            lastWeek : '[την προηγούμενη] dddd [{}] LT',
+            lastWeek : function() {
+                switch (this.day()) {
+                    case 6:
+                        return '[το προηγούμενο] dddd [{}] LT';
+                    default:
+                        return '[την προηγούμενη] dddd [{}] LT';
+                }
+            },
             sameElse : 'L'
         },
         calendar : function (key, mom) {
             var output = this._calendarEl[key],
                 hours = mom && mom.hours();
 
+            if (typeof output === 'function') {
+                output = output.apply(mom);
+            }
+
             return output.replace("{}", (hours % 12 === 1 ? "στη" : "στις"));
         },
         relativeTime : {
index 84b7698..9c27f66 100644 (file)
@@ -13,8 +13,8 @@
     }
 }(function (moment) {
     return moment.lang('it', {
-        months : "Gennaio_Febbraio_Marzo_Aprile_Maggio_Giugno_Luglio_Agosto_Settembre_Ottobre_Novembre_Dicembre".split("_"),
-        monthsShort : "Gen_Feb_Mar_Apr_Mag_Giu_Lug_Ago_Set_Ott_Nov_Dic".split("_"),
+        months : "gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),
+        monthsShort : "gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),
         weekdays : "Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato".split("_"),
         weekdaysShort : "Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"),
         weekdaysMin : "D_L_Ma_Me_G_V_S".split("_"),
index 3377375..3c11b89 100644 (file)
@@ -23,7 +23,7 @@
         "y" : "metai_metų_metus",
         "yy": "metai_metų_metus"
     },
-    weekDays = "pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis_sekmadienis".split("_");
+    weekDays = "sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_");
 
     function translateSeconds(number, withoutSuffix, key, isFuture) {
         if (withoutSuffix) {
@@ -62,7 +62,7 @@
 
     function relativeWeekDay(moment, format) {
         var nominative = format.indexOf('dddd HH:mm') === -1,
-            weekDay = weekDays[moment.weekday()];
+            weekDay = weekDays[moment.day()];
 
         return nominative ? weekDay : weekDay.substring(0, weekDay.length - 2) + "į";
     }
index 77e1cad..3042844 100644 (file)
@@ -38,7 +38,7 @@
         },
         relativeTime : {
             future : "em %s",
-            past : "%s atrás",
+            past : "há %s",
             s : "segundos",
             m : "um minuto",
             mm : "%d minutos",
index ac5400d..dc013a7 100644 (file)
             yy : relativeTimeWithPlural
         },
 
-        // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
+        meridiemParse: /ночи|утра|дня|вечера/i,
+        isPM : function (input) {
+            return /^(дня|вечера)$/.test(input);
+        },
 
         meridiem : function (hour, minute, isLower) {
             if (hour < 4) {
diff --git a/resources/lib/moment/lang/sr-cyr.js b/resources/lib/moment/lang/sr-cyr.js
deleted file mode 100644 (file)
index 8d18689..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-// moment.js language configuration
-// language : Serbian-cyrillic (sr-cyr)
-// author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j
-
-(function (factory) {
-    if (typeof define === 'function' && define.amd) {
-        define(['moment'], factory); // AMD
-    } else if (typeof exports === 'object') {
-        module.exports = factory(require('../moment')); // Node
-    } else {
-        factory(window.moment); // Browser global
-    }
-}(function (moment) {
-
-    var translator = {
-        words: { //Different grammatical cases
-            m: ['један минут', 'једне минуте'],
-            mm: ['минут', 'минуте', 'минута'],
-            h: ['један сат', 'једног сата'],
-            hh: ['сат', 'сата', 'сати'],
-            dd: ['дан', 'дана', 'дана'],
-            MM: ['месец', 'месеца', 'месеци'],
-            yy: ['година', 'године', 'година']
-        },
-        correctGrammaticalCase: function (number, wordKey) {
-            return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
-        },
-        translate: function (number, withoutSuffix, key) {
-            var wordKey = translator.words[key];
-            if (key.length === 1) {
-                return withoutSuffix ? wordKey[0] : wordKey[1];
-            } else {
-                return number + ' ' + translator.correctGrammaticalCase(number, wordKey);
-            }
-        }
-    };
-
-    return moment.lang('sr-cyr', {
-        months: ['јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', 'новембар', 'децембар'],
-        monthsShort: ['јан.', 'феб.', 'мар.', 'апр.', 'мај', 'јун', 'јул', 'авг.', 'сеп.', 'окт.', 'нов.', 'дец.'],
-        weekdays: ['недеља', 'понедељак', 'уторак', 'среда', 'четвртак', 'петак', 'субота'],
-        weekdaysShort: ['нед.', 'пон.', 'уто.', 'сре.', 'чет.', 'пет.', 'суб.'],
-        weekdaysMin: ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'],
-        longDateFormat: {
-            LT: "H:mm",
-            L: "DD. MM. YYYY",
-            LL: "D. MMMM YYYY",
-            LLL: "D. MMMM YYYY LT",
-            LLLL: "dddd, D. MMMM YYYY LT"
-        },
-        calendar: {
-            sameDay: '[данас у] LT',
-            nextDay: '[сутра у] LT',
-
-            nextWeek: function () {
-                switch (this.day()) {
-                case 0:
-                    return '[у] [недељу] [у] LT';
-                case 3:
-                    return '[у] [среду] [у] LT';
-                case 6:
-                    return '[у] [суботу] [у] LT';
-                case 1:
-                case 2:
-                case 4:
-                case 5:
-                    return '[у] dddd [у] LT';
-                }
-            },
-            lastDay  : '[јуче у] LT',
-            lastWeek : function () {
-                var lastWeekDays = [
-                    '[прошле] [недеље] [у] LT',
-                    '[прошлог] [понедељка] [у] LT',
-                    '[прошлог] [уторка] [у] LT',
-                    '[прошле] [среде] [у] LT',
-                    '[прошлог] [четвртка] [у] LT',
-                    '[прошлог] [петка] [у] LT',
-                    '[прошле] [суботе] [у] LT'
-                ];
-                return lastWeekDays[this.day()];
-            },
-            sameElse : 'L'
-        },
-        relativeTime : {
-            future : "за %s",
-            past   : "пре %s",
-            s      : "неколико секунди",
-            m      : translator.translate,
-            mm     : translator.translate,
-            h      : translator.translate,
-            hh     : translator.translate,
-            d      : "дан",
-            dd     : translator.translate,
-            M      : "месец",
-            MM     : translator.translate,
-            y      : "годину",
-            yy     : translator.translate
-        },
-        ordinal : '%d.',
-        week : {
-            dow : 1, // Monday is the first day of the week.
-            doy : 7  // The week that contains Jan 1st is the first week of the year.
-        }
-    });
-}));
diff --git a/resources/lib/moment/lang/sr-cyrl.js b/resources/lib/moment/lang/sr-cyrl.js
new file mode 100644 (file)
index 0000000..ae1754b
--- /dev/null
@@ -0,0 +1,106 @@
+// moment.js language configuration
+// language : Serbian-cyrillic (sr-cyrl)
+// author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j
+
+(function (factory) {
+    if (typeof define === 'function' && define.amd) {
+        define(['moment'], factory); // AMD
+    } else if (typeof exports === 'object') {
+        module.exports = factory(require('../moment')); // Node
+    } else {
+        factory(window.moment); // Browser global
+    }
+}(function (moment) {
+
+    var translator = {
+        words: { //Different grammatical cases
+            m: ['један минут', 'једне минуте'],
+            mm: ['минут', 'минуте', 'минута'],
+            h: ['један сат', 'једног сата'],
+            hh: ['сат', 'сата', 'сати'],
+            dd: ['дан', 'дана', 'дана'],
+            MM: ['месец', 'месеца', 'месеци'],
+            yy: ['година', 'године', 'година']
+        },
+        correctGrammaticalCase: function (number, wordKey) {
+            return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
+        },
+        translate: function (number, withoutSuffix, key) {
+            var wordKey = translator.words[key];
+            if (key.length === 1) {
+                return withoutSuffix ? wordKey[0] : wordKey[1];
+            } else {
+                return number + ' ' + translator.correctGrammaticalCase(number, wordKey);
+            }
+        }
+    };
+
+    return moment.lang('sr-cyrl', {
+        months: ['јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', 'новембар', 'децембар'],
+        monthsShort: ['јан.', 'феб.', 'мар.', 'апр.', 'мај', 'јун', 'јул', 'авг.', 'сеп.', 'окт.', 'нов.', 'дец.'],
+        weekdays: ['недеља', 'понедељак', 'уторак', 'среда', 'четвртак', 'петак', 'субота'],
+        weekdaysShort: ['нед.', 'пон.', 'уто.', 'сре.', 'чет.', 'пет.', 'суб.'],
+        weekdaysMin: ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'],
+        longDateFormat: {
+            LT: "H:mm",
+            L: "DD. MM. YYYY",
+            LL: "D. MMMM YYYY",
+            LLL: "D. MMMM YYYY LT",
+            LLLL: "dddd, D. MMMM YYYY LT"
+        },
+        calendar: {
+            sameDay: '[данас у] LT',
+            nextDay: '[сутра у] LT',
+
+            nextWeek: function () {
+                switch (this.day()) {
+                case 0:
+                    return '[у] [недељу] [у] LT';
+                case 3:
+                    return '[у] [среду] [у] LT';
+                case 6:
+                    return '[у] [суботу] [у] LT';
+                case 1:
+                case 2:
+                case 4:
+                case 5:
+                    return '[у] dddd [у] LT';
+                }
+            },
+            lastDay  : '[јуче у] LT',
+            lastWeek : function () {
+                var lastWeekDays = [
+                    '[прошле] [недеље] [у] LT',
+                    '[прошлог] [понедељка] [у] LT',
+                    '[прошлог] [уторка] [у] LT',
+                    '[прошле] [среде] [у] LT',
+                    '[прошлог] [четвртка] [у] LT',
+                    '[прошлог] [петка] [у] LT',
+                    '[прошле] [суботе] [у] LT'
+                ];
+                return lastWeekDays[this.day()];
+            },
+            sameElse : 'L'
+        },
+        relativeTime : {
+            future : "за %s",
+            past   : "пре %s",
+            s      : "неколико секунди",
+            m      : translator.translate,
+            mm     : translator.translate,
+            h      : translator.translate,
+            hh     : translator.translate,
+            d      : "дан",
+            dd     : translator.translate,
+            M      : "месец",
+            MM     : translator.translate,
+            y      : "годину",
+            yy     : translator.translate
+        },
+        ordinal : '%d.',
+        week : {
+            dow : 1, // Monday is the first day of the week.
+            doy : 7  // The week that contains Jan 1st is the first week of the year.
+        }
+    });
+}));
diff --git a/resources/lib/moment/lang/tzm-la.js b/resources/lib/moment/lang/tzm-la.js
deleted file mode 100644 (file)
index be1d878..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-// moment.js language configuration
-// language : Morocco Central Atlas Tamaziɣt in Latin (tzm-la)
-// author : Abdel Said : https://github.com/abdelsaid
-
-(function (factory) {
-    if (typeof define === 'function' && define.amd) {
-        define(['moment'], factory); // AMD
-    } else if (typeof exports === 'object') {
-        module.exports = factory(require('../moment')); // Node
-    } else {
-        factory(window.moment); // Browser global
-    }
-}(function (moment) {
-    return moment.lang('tzm-la', {
-        months : "innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),
-        monthsShort : "innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),
-        weekdays : "asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),
-        weekdaysShort : "asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),
-        weekdaysMin : "asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),
-        longDateFormat : {
-            LT : "HH:mm",
-            L : "DD/MM/YYYY",
-            LL : "D MMMM YYYY",
-            LLL : "D MMMM YYYY LT",
-            LLLL : "dddd D MMMM YYYY LT"
-        },
-        calendar : {
-            sameDay: "[asdkh g] LT",
-            nextDay: '[aska g] LT',
-            nextWeek: 'dddd [g] LT',
-            lastDay: '[assant g] LT',
-            lastWeek: 'dddd [g] LT',
-            sameElse: 'L'
-        },
-        relativeTime : {
-            future : "dadkh s yan %s",
-            past : "yan %s",
-            s : "imik",
-            m : "minuḍ",
-            mm : "%d minuḍ",
-            h : "saɛa",
-            hh : "%d tassaɛin",
-            d : "ass",
-            dd : "%d ossan",
-            M : "ayowr",
-            MM : "%d iyyirn",
-            y : "asgas",
-            yy : "%d isgasn"
-        },
-        week : {
-            dow : 6, // Saturday is the first day of the week.
-            doy : 12  // The week that contains Jan 1st is the first week of the year.
-        }
-    });
-}));
diff --git a/resources/lib/moment/lang/tzm-latn.js b/resources/lib/moment/lang/tzm-latn.js
new file mode 100644 (file)
index 0000000..f7e9089
--- /dev/null
@@ -0,0 +1,55 @@
+// moment.js language configuration
+// language : Morocco Central Atlas Tamaziɣt in Latin (tzm-latn)
+// author : Abdel Said : https://github.com/abdelsaid
+
+(function (factory) {
+    if (typeof define === 'function' && define.amd) {
+        define(['moment'], factory); // AMD
+    } else if (typeof exports === 'object') {
+        module.exports = factory(require('../moment')); // Node
+    } else {
+        factory(window.moment); // Browser global
+    }
+}(function (moment) {
+    return moment.lang('tzm-latn', {
+        months : "innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),
+        monthsShort : "innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),
+        weekdays : "asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),
+        weekdaysShort : "asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),
+        weekdaysMin : "asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),
+        longDateFormat : {
+            LT : "HH:mm",
+            L : "DD/MM/YYYY",
+            LL : "D MMMM YYYY",
+            LLL : "D MMMM YYYY LT",
+            LLLL : "dddd D MMMM YYYY LT"
+        },
+        calendar : {
+            sameDay: "[asdkh g] LT",
+            nextDay: '[aska g] LT',
+            nextWeek: 'dddd [g] LT',
+            lastDay: '[assant g] LT',
+            lastWeek: 'dddd [g] LT',
+            sameElse: 'L'
+        },
+        relativeTime : {
+            future : "dadkh s yan %s",
+            past : "yan %s",
+            s : "imik",
+            m : "minuḍ",
+            mm : "%d minuḍ",
+            h : "saɛa",
+            hh : "%d tassaɛin",
+            d : "ass",
+            dd : "%d ossan",
+            M : "ayowr",
+            MM : "%d iyyirn",
+            y : "asgas",
+            yy : "%d isgasn"
+        },
+        week : {
+            dow : 6, // Saturday is the first day of the week.
+            doy : 12  // The week that contains Jan 1st is the first week of the year.
+        }
+    });
+}));
index 257ee7e..83282c6 100644 (file)
@@ -1,5 +1,5 @@
 //! moment.js
-//! version : 2.6.0
+//! version : 2.7.0
 //! authors : Tim Wood, Iskren Chernev, Moment.js contributors
 //! license : MIT
 //! momentjs.com
@@ -11,7 +11,7 @@
     ************************************/
 
     var moment,
-        VERSION = "2.6.0",
+        VERSION = "2.7.0",
         // the global-scope this is NOT the global object in Node.js
         globalScope = typeof global !== 'undefined' ? global : this,
         oldGlobalMoment,
@@ -36,6 +36,7 @@
             _f : null,
             _l : null,
             _strict : null,
+            _tzm : null,
             _isUTC : null,
             _offset : null,  // optional. Combine with _isUTC
             _pf : null,
         // format function strings
         formatFunctions = {},
 
+        // default relative time thresholds
+        relativeTimeThresholds = {
+          s: 45,   //seconds to minutes
+          m: 45,   //minutes to hours
+          h: 22,   //hours to days
+          dd: 25,  //days to month (month == 1)
+          dm: 45,  //days to months (months > 1)
+          dy: 345  //days to year
+        },
+
         // tokens to ordinalize and pad
         ordinalizeTokens = 'DDD w W M D d'.split(' '),
         paddedTokens = 'M D H h m s w W'.split(' '),
 
         lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin'];
 
+    // Pick the first defined of two or three arguments. dfl comes from
+    // default.
+    function dfl(a, b, c) {
+        switch (arguments.length) {
+            case 2: return a != null ? a : b;
+            case 3: return a != null ? a : b != null ? b : c;
+            default: throw new Error("Implement me");
+        }
+    }
+
     function defaultParsingFlags() {
         // We need to deep clone this object, and es5 standard is not very
         // helpful.
             config._useUTC = true;
             config._tzm = timezoneMinutesFromString(input);
             break;
+        // WEEKDAY - human
+        case 'dd':
+        case 'ddd':
+        case 'dddd':
+            a = getLangDefinition(config._l).weekdaysParse(input);
+            // if we didn't get a weekday name, mark the date as invalid
+            if (a != null) {
+                config._w = config._w || {};
+                config._w['d'] = a;
+            } else {
+                config._pf.invalidWeekday = input;
+            }
+            break;
+        // WEEK, WEEK DAY - numeric
         case 'w':
         case 'ww':
         case 'W':
         case 'WW':
         case 'd':
-        case 'dd':
-        case 'ddd':
-        case 'dddd':
         case 'e':
         case 'E':
             token = token.substr(0, 1);
             /* falls through */
-        case 'gg':
         case 'gggg':
-        case 'GG':
         case 'GGGG':
         case 'GGGGG':
             token = token.substr(0, 2);
             if (input) {
                 config._w = config._w || {};
-                config._w[token] = input;
+                config._w[token] = toInt(input);
             }
             break;
+        case 'gg':
+        case 'GG':
+            config._w = config._w || {};
+            config._w[token] = moment.parseTwoDigitYear(input);
         }
     }
 
+    function dayOfYearFromWeekInfo(config) {
+        var w, weekYear, week, weekday, dow, doy, temp, lang;
+
+        w = config._w;
+        if (w.GG != null || w.W != null || w.E != null) {
+            dow = 1;
+            doy = 4;
+
+            // TODO: We need to take the current isoWeekYear, but that depends on
+            // how we interpret now (local, utc, fixed offset). So create
+            // a now version of current config (take local/utc/offset flags, and
+            // create now).
+            weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year);
+            week = dfl(w.W, 1);
+            weekday = dfl(w.E, 1);
+        } else {
+            lang = getLangDefinition(config._l);
+            dow = lang._week.dow;
+            doy = lang._week.doy;
+
+            weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year);
+            week = dfl(w.w, 1);
+
+            if (w.d != null) {
+                // weekday -- low day numbers are considered next week
+                weekday = w.d;
+                if (weekday < dow) {
+                    ++week;
+                }
+            } else if (w.e != null) {
+                // local weekday -- counting starts from begining of week
+                weekday = w.e + dow;
+            } else {
+                // default to begining of week
+                weekday = dow;
+            }
+        }
+        temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow);
+
+        config._a[YEAR] = temp.year;
+        config._dayOfYear = temp.dayOfYear;
+    }
+
     // convert an array to a date.
     // the array should mirror the parameters below
     // note: all values past the year are optional and will default to the lowest possible value.
     // [year, month, day , hour, minute, second, millisecond]
     function dateFromConfig(config) {
-        var i, date, input = [], currentDate,
-            yearToUse, fixYear, w, temp, lang, weekday, week;
+        var i, date, input = [], currentDate, yearToUse;
 
         if (config._d) {
             return;
 
         //compute day of the year from weeks and weekdays
         if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
-            fixYear = function (val) {
-                var intVal = parseInt(val, 10);
-                return val ?
-                  (val.length < 3 ? (intVal > 68 ? 1900 + intVal : 2000 + intVal) : intVal) :
-                  (config._a[YEAR] == null ? moment().weekYear() : config._a[YEAR]);
-            };
-
-            w = config._w;
-            if (w.GG != null || w.W != null || w.E != null) {
-                temp = dayOfYearFromWeeks(fixYear(w.GG), w.W || 1, w.E, 4, 1);
-            }
-            else {
-                lang = getLangDefinition(config._l);
-                weekday = w.d != null ?  parseWeekday(w.d, lang) :
-                  (w.e != null ?  parseInt(w.e, 10) + lang._week.dow : 0);
-
-                week = parseInt(w.w, 10) || 1;
-
-                //if we're parsing 'd', then the low day numbers may be next week
-                if (w.d != null && weekday < lang._week.dow) {
-                    week++;
-                }
-
-                temp = dayOfYearFromWeeks(fixYear(w.gg), week, weekday, lang._week.doy, lang._week.dow);
-            }
-
-            config._a[YEAR] = temp.year;
-            config._dayOfYear = temp.dayOfYear;
+            dayOfYearFromWeekInfo(config);
         }
 
         //if the day of the year is set, figure out what it is
         if (config._dayOfYear) {
-            yearToUse = config._a[YEAR] == null ? currentDate[YEAR] : config._a[YEAR];
+            yearToUse = dfl(config._a[YEAR], currentDate[YEAR]);
 
             if (config._dayOfYear > daysInYear(yearToUse)) {
                 config._pf._overflowDayOfYear = true;
             config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];
         }
 
-        // add the offsets to the time to be parsed so that we can have a clean array for checking isValid
-        input[HOUR] += toInt((config._tzm || 0) / 60);
-        input[MINUTE] += toInt((config._tzm || 0) % 60);
-
         config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input);
+        // Apply timezone offset from input. The actual zone can be changed
+        // with parseZone.
+        if (config._tzm != null) {
+            config._d.setUTCMinutes(config._d.getUTCMinutes() + config._tzm);
+        }
     }
 
     function dateFromObject(config) {
     // date from string and format string
     function makeDateFromStringAndFormat(config) {
 
+        if (config._f === moment.ISO_8601) {
+            parseISO(config);
+            return;
+        }
+
         config._a = [];
         config._pf.empty = true;
 
     }
 
     // date from iso format
-    function makeDateFromString(config) {
+    function parseISO(config) {
         var i, l,
             string = config._i,
             match = isoRegex.exec(string);
                 config._f += "Z";
             }
             makeDateFromStringAndFormat(config);
+        } else {
+            config._isValid = false;
         }
-        else {
+    }
+
+    // date from iso format or fallback
+    function makeDateFromString(config) {
+        parseISO(config);
+        if (config._isValid === false) {
+            delete config._isValid;
             moment.createFromInputFallback(config);
         }
     }
             hours = round(minutes / 60),
             days = round(hours / 24),
             years = round(days / 365),
-            args = seconds < 45 && ['s', seconds] ||
+            args = seconds < relativeTimeThresholds.s  && ['s', seconds] ||
                 minutes === 1 && ['m'] ||
-                minutes < 45 && ['mm', minutes] ||
+                minutes < relativeTimeThresholds.m && ['mm', minutes] ||
                 hours === 1 && ['h'] ||
-                hours < 22 && ['hh', hours] ||
+                hours < relativeTimeThresholds.h && ['hh', hours] ||
                 days === 1 && ['d'] ||
-                days <= 25 && ['dd', days] ||
-                days <= 45 && ['M'] ||
-                days < 345 && ['MM', round(days / 30)] ||
+                days <= relativeTimeThresholds.dd && ['dd', days] ||
+                days <= relativeTimeThresholds.dm && ['M'] ||
+                days < relativeTimeThresholds.dy && ['MM', round(days / 30)] ||
                 years === 1 && ['y'] || ['yy', years];
         args[2] = withoutSuffix;
         args[3] = milliseconds > 0;
     function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) {
         var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear;
 
+        d = d === 0 ? 7 : d;
         weekday = weekday != null ? weekday : firstDayOfWeek;
         daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0);
         dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1;
         config._d = new Date(config._i);
     });
 
+    // Pick a moment m from moments so that m[fn](other) is true for all
+    // other. This relies on the function fn to be transitive.
+    //
+    // moments should either be an array of moment objects or an array, whose
+    // first element is an array of moment objects.
+    function pickBy(fn, moments) {
+        var res, i;
+        if (moments.length === 1 && isArray(moments[0])) {
+            moments = moments[0];
+        }
+        if (!moments.length) {
+            return moment();
+        }
+        res = moments[0];
+        for (i = 1; i < moments.length; ++i) {
+            if (moments[i][fn](res)) {
+                res = moments[i];
+            }
+        }
+        return res;
+    }
+
+    moment.min = function () {
+        var args = [].slice.call(arguments, 0);
+
+        return pickBy('isBefore', args);
+    };
+
+    moment.max = function () {
+        var args = [].slice.call(arguments, 0);
+
+        return pickBy('isAfter', args);
+    };
+
     // creating with utc
     moment.utc = function (input, format, lang, strict) {
         var c;
     // default format
     moment.defaultFormat = isoFormat;
 
+    // constant that refers to the ISO standard
+    moment.ISO_8601 = function () {};
+
     // Plugins that add properties should also add the key here (null value),
     // so we can properly clone ourselves.
     moment.momentProperties = momentProperties;
     // It is intended to keep the offset in sync with the timezone.
     moment.updateOffset = function () {};
 
+    // This function allows you to set a threshold for relative time strings
+    moment.relativeTimeThreshold = function(threshold, limit) {
+      if (relativeTimeThresholds[threshold] === undefined) {
+        return false;
+      }
+      relativeTimeThresholds[threshold] = limit;
+      return true;
+    };
+
     // This function will load languages and then set the global language.  If
     // no arguments are passed in, it will simply return the current global
     // language key.
         add : function (input, val) {
             var dur;
             // switch args to support add('s', 1) and add(1, 's')
-            if (typeof input === 'string') {
+            if (typeof input === 'string' && typeof val === 'string') {
+                dur = moment.duration(isNaN(+val) ? +input : +val, isNaN(+val) ? val : input);
+            } else if (typeof input === 'string') {
                 dur = moment.duration(+val, input);
             } else {
                 dur = moment.duration(input, val);
         subtract : function (input, val) {
             var dur;
             // switch args to support subtract('s', 1) and subtract(1, 's')
-            if (typeof input === 'string') {
+            if (typeof input === 'string' && typeof val === 'string') {
+                dur = moment.duration(isNaN(+val) ? +input : +val, isNaN(+val) ? val : input);
+            } else if (typeof input === 'string') {
                 dur = moment.duration(+val, input);
             } else {
                 dur = moment.duration(input, val);
             return this.from(moment(), withoutSuffix);
         },
 
-        calendar : function () {
+        calendar : function (time) {
             // We want to compare the start of today, vs this.
             // Getting start-of-today depends on whether we're zone'd or not.
-            var sod = makeAs(moment(), this).startOf('day'),
+            var now = time || moment(),
+                sod = makeAs(now, this).startOf('day'),
                 diff = this.diff(sod, 'days', true),
                 format = diff < -6 ? 'sameElse' :
                     diff < -1 ? 'lastWeek' :
             return +this.clone().startOf(units) === +makeAs(input, this).startOf(units);
         },
 
-        min: function (other) {
-            other = moment.apply(null, arguments);
-            return other < this ? this : other;
-        },
+        min: deprecate(
+                 "moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",
+                 function (other) {
+                     other = moment.apply(null, arguments);
+                     return other < this ? this : other;
+                 }
+         ),
 
-        max: function (other) {
-            other = moment.apply(null, arguments);
-            return other > this ? this : other;
-        },
+        max: deprecate(
+                "moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",
+                function (other) {
+                    other = moment.apply(null, arguments);
+                    return other > this ? this : other;
+                }
+        ),
 
         // keepTime = true means only change the timezone, without affecting
         // the local hour. So 5:31:26 +0300 --[zone(2, true)]--> 5:31:26 +0200
index 8b0bee4..7ad74dc 100644 (file)
@@ -11,5 +11,9 @@
        "ooui-dialog-action-close": "Aizvērt",
        "ooui-outline-control-move-down": "Pārvietot vienumu uz leju",
        "ooui-outline-control-move-up": "Pārvietot vienumu uz augšu",
-       "ooui-toolbar-more": "Vairāk"
+       "ooui-toolbar-more": "Vairāk",
+       "ooui-dialog-confirm-title": "Apstiprināt",
+       "ooui-dialog-confirm-default-prompt": "Vai esat pārliecināts?",
+       "ooui-dialog-confirm-default-ok": "Labi",
+       "ooui-dialog-confirm-default-cancel": "Atcelt"
 }
index df78186..ff52c32 100644 (file)
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="apply" style="opacity:0.75;">
-       <polygon id="check" style="fill-rule:evenodd;clip-rule:evenodd;" points="19.062,5.139 17.418,4 8.867,16.357 5.413,12.903 4,14.316 9.021,19.338"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="apply" opacity=".75">
+        <path id="check" fill-rule="evenodd" clip-rule="evenodd" d="M19.062 5.139l-1.644-1.139-8.551 12.357-3.454-3.454-1.413 1.413 5.021 5.022z"/>
+    </g>
 </svg>
index 2620e76..b25d5b7 100644 (file)
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="apply" style="opacity:0.75;">
-       <path d="M13,8 L11,8 L11,11 L8,11 L8,13 L11,13 L11,16 L13,16 L13,13 L16,13 L16,11 L13,11 z"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="apply" opacity=".75">
+        <path d="M13 8h-2v3h-3v2h3v3h2v-3h3v-2h-3z"/>
+    </g>
 </svg>
index 3e87cab..223b7fc 100644 (file)
@@ -1,17 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="settings" style="opacity:0.75;">
-       <path id="gear" style="fill-rule:evenodd;clip-rule:evenodd;" d="M20.869,13.476C20.948,12.994,21,12.504,21,12
-               s-0.052-0.994-0.131-1.476l-2.463-0.259c-0.149-0.556-0.367-1.082-0.648-1.57l1.558-1.924c-0.576-0.806-1.281-1.511-2.087-2.087
-               l-1.924,1.558c-0.488-0.281-1.015-0.499-1.57-0.648l-0.259-2.463C12.994,3.052,12.504,3,12,3s-0.994,0.052-1.476,0.131
-               l-0.259,2.463C9.71,5.743,9.184,5.961,8.695,6.242L6.771,4.685C5.966,5.261,5.261,5.966,4.685,6.771l1.558,1.924
-               c-0.281,0.488-0.499,1.015-0.648,1.57l-2.463,0.259C3.052,11.006,3,11.496,3,12s0.052,0.994,0.131,1.476l2.463,0.259
-               c0.149,0.556,0.367,1.082,0.648,1.57l-1.558,1.924c0.576,0.806,1.281,1.511,2.087,2.087l1.924-1.558
-               c0.488,0.281,1.015,0.499,1.57,0.648l0.259,2.463C11.006,20.948,11.496,21,12,21s0.994-0.052,1.476-0.131l0.259-2.463
-               c0.556-0.149,1.082-0.367,1.57-0.648l1.924,1.558c0.806-0.576,1.511-1.281,2.087-2.087l-1.558-1.924
-               c0.281-0.488,0.499-1.015,0.648-1.57L20.869,13.476z M12,15.998c-2.209,0-3.998-1.789-3.998-3.998S9.791,8.002,12,8.002
-               S15.998,9.791,15.998,12S14.209,15.998,12,15.998z"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="settings" opacity=".75">
+        <path id="gear" d="M20.869 13.476c.079-.482.131-.972.131-1.476s-.052-.994-.131-1.476l-2.463-.259c-.149-.556-.367-1.082-.648-1.57l1.558-1.924c-.576-.806-1.281-1.511-2.087-2.087l-1.924 1.558c-.488-.281-1.015-.499-1.57-.648l-.259-2.463c-.482-.079-.972-.131-1.476-.131s-.994.052-1.476.131l-.259 2.463c-.555.149-1.081.367-1.57.648l-1.924-1.557c-.805.576-1.51 1.281-2.086 2.086l1.558 1.924c-.281.488-.499 1.015-.648 1.57l-2.463.259c-.08.482-.132.972-.132 1.476s.052.994.131 1.476l2.463.259c.149.556.367 1.082.648 1.57l-1.558 1.924c.576.806 1.281 1.511 2.087 2.087l1.924-1.558c.488.281 1.015.499 1.57.648l.259 2.463c.482.079.972.131 1.476.131s.994-.052 1.476-.131l.259-2.463c.556-.149 1.082-.367 1.57-.648l1.924 1.558c.806-.576 1.511-1.281 2.087-2.087l-1.558-1.924c.281-.488.499-1.015.648-1.57l2.463-.259zm-8.869 2.522c-2.209 0-3.998-1.789-3.998-3.998s1.789-3.998 3.998-3.998 3.998 1.789 3.998 3.998-1.789 3.998-3.998 3.998z" fill-rule="evenodd" clip-rule="evenodd"/>
+    </g>
 </svg>
index 886a7c0..fb25766 100644 (file)
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="alert" style="opacity:0.75;">
-       <rect id="point" x="11" y="16" style="fill-rule:evenodd;clip-rule:evenodd;" width="2" height="2"/>
-       <polygon id="stroke" style="fill-rule:evenodd;clip-rule:evenodd;" points="13.516,10 10.516,10 11,15 13,15"/>
-       <path id="triangle" d="M12.017,5.974L19.536,19H4.496L12.017,5.974 M12.017,3.5c-0.544,0-1.088,0.357-1.5,1.071L2.532,18.402 C1.707,19.831,2.382,21,4.032,21H20c1.65,0,2.325-1.169,1.5-2.599L13.517,4.572C13.104,3.857,12.561,3.5,12.017,3.5L12.017,3.5z"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="alert" opacity=".75">
+        <path id="point" fill-rule="evenodd" clip-rule="evenodd" d="M11 16h2v2h-2z"/>
+        <path id="stroke" fill-rule="evenodd" clip-rule="evenodd" d="M13.516 10h-3l.484 5h2z"/>
+        <path id="triangle" d="M12.017 5.974l7.519 13.026h-15.04l7.521-13.026m0-2.474c-.544 0-1.088.357-1.5 1.071l-7.985 13.831c-.825 1.429-.15 2.598 1.5 2.598h15.968c1.65 0 2.325-1.169 1.5-2.599l-7.983-13.829c-.413-.715-.956-1.072-1.5-1.072z"/>
+    </g>
 </svg>
index 5b343a5..88a6a40 100644 (file)
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="arched-arrow-ltr" style="opacity:0.75;">
-       <path id="arrow" style="fill-rule:evenodd;clip-rule:evenodd;" d="M19.925,14.937l-2.391-6.901l-1.48,2.329 c-0.964-0.845-2.699-1.85-5.513-1.823c-4.887,0.046-6.524,4.244-6.524,4.244s2.753-2.639,6.925-1.949 c1.729,0.286,3.007,1.206,3.675,1.791l-1.474,2.319L19.925,14.937z"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="arched-arrow-ltr" opacity=".75">
+        <path id="arrow" d="M19.925 14.937l-2.391-6.901-1.48 2.329c-.964-.845-2.699-1.85-5.513-1.823-4.887.046-6.524 4.244-6.524 4.244s2.753-2.639 6.925-1.949c1.729.286 3.007 1.206 3.675 1.791l-1.474 2.319 6.782-.01z" fill-rule="evenodd" clip-rule="evenodd"/>
+    </g>
 </svg>
index bb5f10e..50541d2 100644 (file)
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="arched-arrow-rtl" style="opacity:0.75;">
-       <path id="arrow" style="fill-rule:evenodd;clip-rule:evenodd;" d="M13.401,8.542c-2.814-0.027-4.549,0.978-5.513,1.823 l-1.48-2.329l-2.391,6.901l6.782,0.009l-1.474-2.319c0.668-0.584,1.945-1.504,3.675-1.791c4.172-0.69,6.925,1.949,6.925,1.949 S18.288,8.588,13.401,8.542z"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="arched-arrow-rtl" opacity=".75">
+        <path id="arrow" d="M13.401 8.542c-2.814-.027-4.549.978-5.513 1.823l-1.48-2.329-2.391 6.901 6.782.009-1.474-2.319c.668-.584 1.945-1.504 3.675-1.791 4.172-.69 6.925 1.949 6.925 1.949s-1.637-4.197-6.524-4.243z" fill-rule="evenodd" clip-rule="evenodd"/>
+    </g>
 </svg>
index e67cd6c..8d4a1f8 100644 (file)
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24" height="24" viewBox="0, 0, 24, 24">
-  <g id="check">
-    <path d="M7.105,13.473 L8.527,12.05 L10.428,13.952 L15.238,7 L16.895,8.148 L10.635,17 z" fill="#000000"/>
-  </g>
-  <defs/>
+<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.901 1.902 4.81-6.952 1.657 1.148-6.26 8.852z"/>
+    </g>
 </svg>
index d83eb02..484a104 100644 (file)
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="clear" style="opacity:0.75;">
-       <path id="circle_with_strike" style="fill-rule:evenodd;clip-rule:evenodd;" d="M11.999,5.022c-3.853,0-6.977,3.124-6.977,6.978 c0,3.853,3.124,6.978,6.977,6.978c3.854,0,6.979-3.125,6.979-6.978C18.978,8.146,15.853,5.022,11.999,5.022z M6.886,12 c0-1.092,0.572-3.25,0.93-2.929l7.113,7.113c0.488,0.525-1.837,0.931-2.93,0.931C9.174,17.114,6.886,14.824,6.886,12z M16.184,14.929L9.07,7.816c-0.445-0.483,1.837-0.931,2.929-0.931c2.827,0,5.115,2.289,5.115,5.114 C17.114,13.092,16.75,15.542,16.184,14.929z"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="clear" opacity=".75">
+        <path id="circle_with_strike" d="M11.999 5.022c-3.853 0-6.977 3.124-6.977 6.978 0 3.853 3.124 6.978 6.977 6.978 3.854 0 6.979-3.125 6.979-6.978 0-3.854-3.125-6.978-6.979-6.978zm-5.113 6.978c0-1.092.572-3.25.93-2.929l7.113 7.113c.488.525-1.837.931-2.93.931-2.825-.001-5.113-2.291-5.113-5.115zm9.298 2.929l-7.114-7.113c-.445-.483 1.837-.931 2.929-.931 2.827 0 5.115 2.289 5.115 5.114 0 1.093-.364 3.543-.93 2.93z" fill-rule="evenodd" clip-rule="evenodd"/>
+    </g>
 </svg>
index a0118c2..15278e9 100644 (file)
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="close" style="opacity:0.75;">
-       <polygon id="x" style="fill-rule:evenodd;clip-rule:evenodd;" points="18.717,6.697 17.303,5.283 12,10.586 6.697,5.283 5.283,6.697 10.586,12 5.283,17.303 6.697,18.717 12,13.414 17.303,18.717 18.717,17.303 13.414,12            "/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="close" opacity=".75">
+        <path id="x" fill-rule="evenodd" clip-rule="evenodd" d="M18.717 6.697l-1.414-1.414-5.303 5.303-5.303-5.303-1.414 1.414 5.303 5.303-5.303 5.303 1.414 1.414 5.303-5.303 5.303 5.303 1.414-1.414-5.303-5.303z"/>
+    </g>
 </svg>
index 6f1ed53..a45ab1e 100644 (file)
@@ -1,14 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-        width="24px" height="24px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve">
-<g id="code" opacity="0.75">
-       <path id="left-bracket" d="M4,12v-1h1c1,0,1,0,1-1V7.614C6,7.1,6.024,6.718,6.073,6.472C6.127,6.22,6.212,6.009,6.33,5.839
-               C6.534,5.56,6.803,5.364,7.138,5.255C7.473,5.14,8.01,5,8.973,5H10v1H9.248c-0.457,0-0.77,0.191-0.936,0.408
-               C8.145,6.623,8,6.853,8,7.476v1.857c0,0.729-0.041,1.18-0.244,1.493c-0.2,0.307-0.562,0.529-1.09,0.667
-               c0.535,0.155,0.9,0.385,1.096,0.688C7.961,12.484,8,12.938,8,13.665v1.862c0,0.619,0.145,0.848,0.312,1.062
-               c0.166,0.22,0.479,0.407,0.936,0.407L10,17l0,0v1H8.973c-0.963,0-1.5-0.133-1.835-0.248c-0.335-0.109-0.604-0.307-0.808-0.591
-               c-0.118-0.165-0.203-0.374-0.257-0.625C6.024,16.283,6,15.9,6,15.387V13c0-1,0-1-1-1H4z"/>
-       <use transform="matrix(-1,0,0,1,24,0)" id="right-bracket" x="0" y="0" width="24" height="24" xlink:href="#left-bracket" />
-</g>
+<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" opacity=".75">
+        <path id="left-bracket" d="M4 12v-1h1c1 0 1 0 1-1v-2.386c0-.514.024-.896.073-1.142.054-.252.139-.463.257-.633.204-.279.473-.475.808-.584.335-.115.872-.255 1.835-.255h1.027v1h-.752c-.457 0-.77.191-.936.408-.167.215-.312.445-.312 1.068v1.857c0 .729-.041 1.18-.244 1.493-.2.307-.562.529-1.09.667.535.155.9.385 1.096.688.199.303.238.757.238 1.484v1.862c0 .619.145.848.312 1.062.166.22.479.407.936.407l.752.004v1h-1.027c-.963 0-1.5-.133-1.835-.248-.335-.109-.604-.307-.808-.591-.118-.165-.203-.374-.257-.625-.049-.253-.073-.636-.073-1.149v-2.387c0-1 0-1-1-1h-1z"/>
+        <use transform="matrix(-1 0 0 1 24 0)" id="right-bracket" width="24" height="24" xlink:href="#left-bracket"/>
+    </g>
 </svg>
index a89cebf..97bdc50 100644 (file)
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="collapse" style="opacity:0.75;">
-       <polygon id="arrow" style="fill-rule:evenodd;clip-rule:evenodd;" points="6.697,15.714 12,10.412 17.303,15.714 18.717,14.3 12,7.583 5.283,14.3"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="collapse" opacity=".75">
+        <path id="arrow" fill-rule="evenodd" clip-rule="evenodd" d="M6.697 15.714l5.303-5.302 5.303 5.302 1.414-1.414-6.717-6.717-6.717 6.717z"/>
+    </g>
 </svg>
index e052935..ebb038e 100644 (file)
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="comment" style="opacity:0.75;">
-       <path id="speech_bubble" style="fill-rule:evenodd;clip-rule:evenodd;" d="M15,6H9C7.343,6,6,7.344,6,9v4c0,1.656,1.343,3,3,3v3 l3-3h3c1.657,0,3-1.344,3-3V9C18,7.344,16.657,6,15,6z"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="comment" opacity=".75">
+        <path id="speech_bubble" d="M15 6h-6c-1.657 0-3 1.344-3 3v4c0 1.656 1.343 3 3 3v3l3-3h3c1.657 0 3-1.344 3-3v-4c0-1.656-1.343-3-3-3z" fill-rule="evenodd" clip-rule="evenodd"/>
+    </g>
 </svg>
index b542f5f..81c2ec0 100644 (file)
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="expand" style="opacity:0.75;">
-       <polygon id="arrow" style="fill-rule:evenodd;clip-rule:evenodd;" points="17.303,8.283 12,13.586 6.697,8.283 5.283,9.697 12,16.414 18.717,9.697"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="expand" opacity=".75">
+        <path id="arrow" fill-rule="evenodd" clip-rule="evenodd" d="M17.303 8.283l-5.303 5.303-5.303-5.303-1.414 1.414 6.717 6.717 6.717-6.717z"/>
+    </g>
 </svg>
index c68bdda..09117e1 100644 (file)
@@ -1,12 +1,10 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="help" style="opacity:0.75;">
-       <path id="circle" style="fill-rule:evenodd;clip-rule:evenodd;" d="M12.001,2.085c-5.478,0-9.916,4.438-9.916,9.916 c0,5.476,4.438,9.914,9.916,9.914c5.476,0,9.914-4.438,9.914-9.914C21.915,6.523,17.477,2.085,12.001,2.085z M12.002,20.085 c-4.465,0-8.084-3.619-8.084-8.083c0-4.465,3.619-8.084,8.084-8.084c4.464,0,8.083,3.619,8.083,8.084 C20.085,16.466,16.466,20.085,12.002,20.085z"/>
-       <g id="question_mark">
-               <path id="top" style="fill-rule:evenodd;clip-rule:evenodd;" d="M11.766,6.688c-2.5,0-3.219,2.188-3.219,2.188l1.411,0.854 c0,0,0.298-0.791,0.901-1.229c0.516-0.375,1.625-0.625,2.219,0.125c0.701,0.885-0.17,1.587-1.078,2.719 C11.047,12.531,11,15,11,15h1.969c0,0,0.135-2.318,1.041-3.381c0.603-0.707,1.443-1.338,1.443-2.494S14.266,6.688,11.766,6.688z"/>
-               <rect id="bottom" x="11" y="16" style="fill-rule:evenodd;clip-rule:evenodd;" width="2" height="2"/>
-       </g>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="help" opacity=".75" fill-rule="evenodd" clip-rule="evenodd">
+        <path id="circle" d="M12.001 2.085c-5.478 0-9.916 4.438-9.916 9.916 0 5.476 4.438 9.914 9.916 9.914 5.476 0 9.914-4.438 9.914-9.914 0-5.478-4.438-9.916-9.914-9.916zm.001 18c-4.465 0-8.084-3.619-8.084-8.083 0-4.465 3.619-8.084 8.084-8.084 4.464 0 8.083 3.619 8.083 8.084 0 4.464-3.619 8.083-8.083 8.083z"/>
+        <g id="question_mark">
+            <path id="top" d="M11.766 6.688c-2.5 0-3.219 2.188-3.219 2.188l1.411.854s.298-.791.901-1.229c.516-.375 1.625-.625 2.219.125.701.885-.17 1.587-1.078 2.719-.953 1.186-1 3.655-1 3.655h1.969s.135-2.318 1.041-3.381c.603-.707 1.443-1.338 1.443-2.494s-1.187-2.437-3.687-2.437z"/>
+            <path id="bottom" d="M11 16h2v2h-2z"/>
+        </g>
+    </g>
 </svg>
index 40c0ae3..a89e257 100644 (file)
@@ -1,9 +1,7 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="history" style="opacity:0.75;">
-       <path id="clock_hands" style="fill-rule:evenodd;clip-rule:evenodd;" d="M17.26,15.076c0,0-2.385-1.935-4.005-3.062 c0.72-2.397,1.702-6.559,1.702-6.559s-4.35,5.363-4.877,6.699c-0.463,1.168,1.459,2.209,2.346,1.678 C14.326,14.383,17.26,15.076,17.26,15.076z"/>
-       <path id="arrow" style="fill-rule:evenodd;clip-rule:evenodd;" d="M12.086,2.085c-5.478,0-9.916,4.438-9.916,9.916 c0,1.783,0.476,3.454,1.301,4.898l-2.223,2.04h5.688v-5.219l-2.066,1.896c-0.55-1.088-0.866-2.312-0.866-3.615 c0-4.465,3.619-8.084,8.084-8.084c4.464,0,8.083,3.619,8.083,8.084c0,4.464-3.619,8.083-8.083,8.083 c-1.145,0-2.228-0.247-3.213-0.678l-0.833,1.634c1.235,0.557,2.602,0.874,4.045,0.874c5.476,0,9.914-4.438,9.914-9.914 C22,6.523,17.562,2.085,12.086,2.085z"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="history" opacity=".75" fill-rule="evenodd" clip-rule="evenodd">
+        <path id="clock_hands" d="M17.26 15.076s-2.385-1.935-4.005-3.062c.72-2.397 1.702-6.559 1.702-6.559s-4.35 5.363-4.877 6.699c-.463 1.168 1.459 2.209 2.346 1.678 1.9.551 4.834 1.244 4.834 1.244z"/>
+        <path id="arrow" d="M12.086 2.085c-5.478 0-9.916 4.438-9.916 9.916 0 1.783.476 3.454 1.301 4.898l-2.223 2.04h5.688v-5.219l-2.066 1.896c-.55-1.088-.866-2.312-.866-3.615 0-4.465 3.619-8.084 8.084-8.084 4.464 0 8.083 3.619 8.083 8.084 0 4.464-3.619 8.083-8.083 8.083-1.145 0-2.228-.247-3.213-.678l-.833 1.634c1.235.557 2.602.874 4.045.874 5.476 0 9.914-4.438 9.914-9.914-.001-5.477-4.439-9.915-9.915-9.915z"/>
+    </g>
 </svg>
index 8c5672a..22ad9be 100644 (file)
@@ -1,10 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24" height="24" viewBox="0, 0, 24, 24">
-  <g id="help" opacity="0.75">
-    <path d="M11.499,17 C8.463,17 6,14.536 6,11.5 C6,8.463 8.462,6 11.499,6 C14.536,6 17,8.462 17,11.5 C17,14.536 14.536,17 11.499,17 z M11.501,5 C7.91,5 5,7.91 5,11.5 C5,15.09 7.91,18 11.501,18 C15.089,18 18,15.089 18,11.5 C18,7.911 15.089,5 11.501,5 z" fill="#000000"/>
-    <path d="M12,10 L12,14 L13,14 L13,15 L10,15 L10,14 L11,14 L11,11 L10,11 L10,10 z" fill="#000000"/>
-    <path d="M11,8 L12,8 L12,9 L11,9 z" fill="#000000"/>
-  </g>
-  <defs/>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0, 0, 24, 24">
+    <g id="help" opacity=".75">
+        <path d="M11.499 17c-3.036 0-5.499-2.464-5.499-5.5 0-3.037 2.462-5.5 5.499-5.5 3.037 0 5.501 2.462 5.501 5.5 0 3.036-2.464 5.5-5.501 5.5zm.002-12c-3.591 0-6.501 2.91-6.501 6.5s2.91 6.5 6.501 6.5c3.588 0 6.499-2.911 6.499-6.5s-2.911-6.5-6.499-6.5zM12 10v4h1v1h-3v-1h1v-3h-1v-1zM11 8h1v1h-1z"/>
+    </g>
 </svg>
index dadf69c..7d8a1ef 100644 (file)
@@ -1,15 +1,8 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="link" style="opacity:0.75;">
-       <path id="right" d="M19.188,12.001c0,1.1-0.891,2.015-1.988,2.015l-4.195-0.015C13.543,15.089,13.968,16,15.002,16h3
-               C19.658,16,21,13.657,21,12s-1.342-4-2.998-4h-3c-1.034,0-1.459,0.911-1.998,1.999l4.195-0.015
-               C18.297,9.984,19.188,10.901,19.188,12.001z"/>
-       <path id="center" d="M8,12c0,0.535,0.42,1,0.938,1h6.109c0.518,0,0.938-0.465,0.938-1c0-0.534-0.42-1-0.938-1H8.938
-               C8.42,11,8,11.466,8,12z"/>
-       <path id="left" d="M4.816,11.999c0-1.1,0.891-2.015,1.988-2.015L11,9.999C10.461,8.911,10.036,8,9.002,8h-3
-               c-1.656,0-2.998,2.343-2.998,4s1.342,4,2.998,4h3c1.034,0,1.459-0.911,1.998-1.999l-4.195,0.015
-               C5.707,14.016,4.816,13.099,4.816,11.999z"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="link" opacity=".75">
+        <path id="right" d="M19.188 12.001c0 1.1-.891 2.015-1.988 2.015l-4.195-.015c.538 1.088.963 1.999 1.997 1.999h3c1.656 0 2.998-2.343 2.998-4s-1.342-4-2.998-4h-3c-1.034 0-1.459.911-1.998 1.999l4.195-.015c1.098 0 1.989.917 1.989 2.017z"/>
+        <path id="center" d="M8 12c0 .535.42 1 .938 1h6.109c.518 0 .938-.465.938-1 0-.534-.42-1-.938-1h-6.109c-.518 0-.938.466-.938 1z"/>
+        <path id="left" d="M4.816 11.999c0-1.1.891-2.015 1.988-2.015l4.196.015c-.539-1.088-.964-1.999-1.998-1.999h-3c-1.656 0-2.998 2.343-2.998 4s1.342 4 2.998 4h3c1.034 0 1.459-.911 1.998-1.999l-4.195.015c-1.098 0-1.989-.917-1.989-2.017z"/>
+    </g>
 </svg>
index 657fab2..75866f6 100644 (file)
@@ -1,10 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="menu" style="opacity:0.75;">
-       <path id="lines" d="M6,15h12c0.553,0,1,0.447,1,1v1c0,0.553-0.447,1-1,1H6c-0.553,0-1-0.447-1-1v-1C5,15.447,5.447,15,6,15z M5,11v1
-               c0,0.553,0.447,1,1,1h12c0.553,0,1-0.447,1-1v-1c0-0.553-0.447-1-1-1H6C5.447,10,5,10.447,5,11z M5,6v1c0,0.553,0.447,1,1,1h12
-               c0.553,0,1-0.447,1-1V6c0-0.553-0.447-1-1-1H6C5.447,5,5,5.447,5,6z"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="menu" opacity=".75">
+        <path id="lines" d="M6 15h12c.553 0 1 .447 1 1v1c0 .553-.447 1-1 1h-12c-.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-1h-12c-.553 0-1 .447-1 1zm0-5v1c0 .553.447 1 1 1h12c.553 0 1-.447 1-1v-1c0-.553-.447-1-1-1h-12c-.553 0-1 .447-1 1z"/>
+    </g>
 </svg>
index a378a5d..3c19c4f 100644 (file)
@@ -1,9 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="move-ltr" style="opacity:0.75;">
-       <polygon id="arrow" style="fill-rule:evenodd;clip-rule:evenodd;" points="8.935,7.181 14.237,12.483 8.935,17.786
-               10.349,19.2 17.065,12.483 10.349,5.767"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="move-ltr" opacity=".75">
+        <path id="arrow" fill-rule="evenodd" clip-rule="evenodd" d="M8.935 7.181l5.302 5.302-5.302 5.303 1.414 1.414 6.716-6.717-6.716-6.716z"/>
+    </g>
 </svg>
index c0b334b..d9f35c1 100644 (file)
@@ -1,9 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="move-rtl" style="opacity:0.75;">
-       <polygon id="arrow_9_" style="fill-rule:evenodd;clip-rule:evenodd;" points="15.065,17.786 9.763,12.483 15.065,7.181
-               13.651,5.767 6.935,12.483 13.651,19.2"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="move-rtl" opacity=".75">
+        <path id="arrow_9_" fill-rule="evenodd" clip-rule="evenodd" d="M15.065 17.786l-5.302-5.303 5.302-5.302-1.414-1.414-6.716 6.716 6.716 6.717z"/>
+    </g>
 </svg>
index 078ce10..cd4c0f7 100644 (file)
@@ -1,12 +1,8 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="picture" style="opacity:0.75;">
-       <path id="frame" style="fill-rule:evenodd;clip-rule:evenodd;" d="M18,4H6C4,3.993,3,4.993,3,6.993L3.014,16C3,18,4,18.988,6,19h12
-               c2-0.012,2.994-1,3-3.006V6.993C20.994,4.993,20,3.993,18,4z M19,17H5V6h14V17z"/>
-       <polygon id="mountains" style="fill-rule:evenodd;clip-rule:evenodd;" points="6,13.5 9.5,10 11.828,12.312 10.516,13.406
-               11.391,14.438 15.5,11 18,13 18,16 6,16"/>
-       <polygon id="sky" style="fill-rule:evenodd;clip-rule:evenodd;" points="6,12 9.516,7.844 12.562,11.016 15.5,9 18,11 18,7 6,7"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="picture" opacity=".75" fill-rule="evenodd" clip-rule="evenodd">
+        <path id="frame" d="M18 4h-12c-2-.007-3 .993-3 2.993l.014 9.007c-.014 2 .986 2.988 2.986 3h12c2-.012 2.994-1 3-3.006v-9.001c-.006-2-1-3-3-2.993zm1 13h-14v-11h14v11z"/>
+        <path id="mountains" d="M6 13.5l3.5-3.5 2.328 2.312-1.312 1.094.875 1.032 4.109-3.438 2.5 2v3h-12z"/>
+        <path id="sky" d="M6 12l3.516-4.156 3.046 3.172 2.938-2.016 2.5 2v-4h-12z"/>
+    </g>
 </svg>
index b95e7d3..5dd607b 100644 (file)
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24" height="24" viewBox="0, 0, 24, 24">
-  <g id="remove-item">
-    <path d="M8,11 L16,11 L16,13 L8,13 z" fill="#000000"/>
-  </g>
-  <defs/>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0, 0, 24, 24">
+    <g id="remove-item">
+        <path d="M8 11h8v2h-8z"/>
+    </g>
 </svg>
index 17c8d39..06c89d7 100644 (file)
@@ -1,9 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="remove" style="opacity:0.75;">
-       <path id="trash_can" style="fill-rule:evenodd;clip-rule:evenodd;" d="M12,10h-1v6h1V10z M10,10H9v6h1V10z M14,10h-1v6h1V10z
-                M14,6V5H9v1H6v3h1v7.966l1,1.031v-0.074V18h6.984L15,17.982v0.015l1-1.031V9h1V6H14z M15,17H8V9h7V17z M16,8H7V7h9V8z"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="remove" opacity=".75">
+        <path id="trash_can" d="M12 10h-1v6h1v-6zm-2 0h-1v6h1v-6zm4 0h-1v6h1v-6zm0-4v-1h-5v1h-3v3h1v7.966l1 1.031v-.074.077h6.984l.016-.018v.015l1-1.031v-7.966h1v-3h-3zm1 11h-7v-8h7v8zm1-9h-9v-1h9v1z" fill-rule="evenodd" clip-rule="evenodd"/>
+    </g>
 </svg>
index 37feda4..ff7144c 100644 (file)
@@ -1,13 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="search" style="opacity:0.75;">
-       <path id="magnifying_glass" d="M16.021,15.96l-2.374-2.375c-0.048-0.047-0.105-0.079-0.169-0.099c0.403-0.566,0.643-1.26,0.643-2.009
-               C14.12,9.557,12.563,8,10.644,8c-1.921,0-3.478,1.557-3.478,3.478c0,1.92,1.557,3.477,3.478,3.477c0.749,0,1.442-0.239,2.01-0.643
-               c0.019,0.063,0.051,0.121,0.098,0.169l2.375,2.374c0.19,0.189,0.543,0.143,0.79-0.104S16.21,16.15,16.021,15.96z M10.644,13.69
-               c-1.221,0-2.213-0.991-2.213-2.213c0-1.221,0.992-2.213,2.213-2.213c1.222,0,2.213,0.992,2.213,2.213
-               C12.856,12.699,11.865,13.69,10.644,13.69z"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="search" opacity=".75">
+        <path id="magnifying_glass" d="M16.021 15.96l-2.374-2.375-.169-.099c.403-.566.643-1.26.643-2.009-.001-1.92-1.558-3.477-3.477-3.477-1.921 0-3.478 1.557-3.478 3.478 0 1.92 1.557 3.477 3.478 3.477.749 0 1.442-.239 2.01-.643l.098.169 2.375 2.374c.19.189.543.143.79-.104s.293-.601.104-.791zm-5.377-2.27c-1.221 0-2.213-.991-2.213-2.213 0-1.221.992-2.213 2.213-2.213 1.222 0 2.213.992 2.213 2.213-.001 1.222-.992 2.213-2.213 2.213z"/>
+    </g>
 </svg>
index 1464a79..cbc4efc 100644 (file)
@@ -1,16 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24" height="24" viewBox="0, 0, 24, 24">
-  <g id="settings" opacity="0.75">
-    <path d="M3,4 L6,4 L6,6 L3,6 z" fill="#000000"/>
-    <path d="M12,4 L21,4 L21,6 L12,6 z" fill="#000000"/>
-    <path d="M8,3 L10,3 C10.552,3 11,3.448 11,4 L11,6 C11,6.552 10.552,7 10,7 L8,7 C7.448,7 7,6.552 7,6 L7,4 C7,3.448 7.448,3 8,3 z" fill="#000000"/>
-    <path d="M3,11 L12,11 L12,13 L3,13 z" fill="#000000"/>
-    <path d="M18,11 L21,11 L21,13 L18,13 z" fill="#000000"/>
-    <path d="M14,10 L16,10 C16.552,10 17,10.448 17,11 L17,13 C17,13.552 16.552,14 16,14 L14,14 C13.448,14 13,13.552 13,13 L13,11 C13,10.448 13.448,10 14,10 z" fill="#000000"/>
-    <path d="M3,18 L9,18 L9,20 L3,20 z" fill="#000000"/>
-    <path d="M15,18 L21,18 L21,20 L15,20 z" fill="#000000"/>
-    <path d="M11,17 L13,17 C13.552,17 14,17.448 14,18 L14,20 C14,20.552 13.552,21 13,21 L11,21 C10.448,21 10,20.552 10,20 L10,18 C10,17.448 10.448,17 11,17 z" fill="#000000"/>
-  </g>
-  <defs/>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0, 0, 24, 24">
+    <g id="settings" opacity=".75">
+        <path d="M3 4h3v2h-3zM12 4h9v2h-9zM8 3h2c.552 0 1 .448 1 1v2c0 .552-.448 1-1 1h-2c-.552 0-1-.448-1-1v-2c0-.552.448-1 1-1zM3 11h9v2h-9zM18 11h3v2h-3zM14 10h2c.552 0 1 .448 1 1v2c0 .552-.448 1-1 1h-2c-.552 0-1-.448-1-1v-2c0-.552.448-1 1-1zM3 18h6v2h-6zM15 18h6v2h-6zM11 17h2c.552 0 1 .448 1 1v2c0 .552-.448 1-1 1h-2c-.552 0-1-.448-1-1v-2c0-.552.448-1 1-1z"/>
+    </g>
 </svg>
index d21e5e3..496e7fc 100644 (file)
@@ -1,11 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="tag" style="opacity:0.75;">
-       <path d="M18.748,11.717c0.389,0.389,0.389,1.025,0,1.414l-4.949,4.95c-0.389,0.389-1.025,0.389-1.414,0l-6.01-6.01
-               c-0.389-0.389-0.707-1.157-0.707-1.707L5.667,6c0-0.55,0.45-1,1-1h4.364c0.55,0,1.318,0.318,1.707,0.707L18.748,11.717z
-                M8.104,7.456C7.525,8.032,7.526,8.97,8.103,9.549c0.578,0.577,1.516,0.577,2.095,0.001c0.576-0.578,0.576-1.517,0-2.095
-               C9.617,6.879,8.68,6.878,8.104,7.456z"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="tag" opacity=".75">
+        <path d="M18.748 11.717c.389.389.389 1.025 0 1.414l-4.949 4.95c-.389.389-1.025.389-1.414 0l-6.01-6.01c-.389-.389-.707-1.157-.707-1.707l-.001-4.364c0-.55.45-1 1-1h4.364c.55 0 1.318.318 1.707.707l6.01 6.01zm-10.644-4.261c-.579.576-.578 1.514-.001 2.093.578.577 1.516.577 2.095.001.576-.578.576-1.517 0-2.095-.581-.576-1.518-.577-2.094.001z"/>
+    </g>
 </svg>
index 621cf2c..ad12773 100644 (file)
@@ -1,10 +1,7 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
-        height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
-<g id="window" style="opacity:0.75;">
-       <rect id="title" x="7" y="10" width="10" height="1"/>
-       <path id="window" d="M16,19H8c-2.206,0-4-1.794-4-4V9c0-2.206,1.794-4,4-4h8c2.206,0,4,1.794,4,4v6C20,17.206,18.206,19,16,19z
-                M8,7C6.897,7,6,7.897,6,9v6c0,1.103,0.897,2,2,2h8c1.103,0,2-0.897,2-2V9c0-1.103-0.897-2-2-2H8z"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <g id="window" opacity=".75">
+        <path id="title" d="M7 10h10v1h-10z"/>
+        <path id="window" d="M16 19h-8c-2.206 0-4-1.794-4-4v-6c0-2.206 1.794-4 4-4h8c2.206 0 4 1.794 4 4v6c0 2.206-1.794 4-4 4zm-8-12c-1.103 0-2 .897-2 2v6c0 1.103.897 2 2 2h8c1.103 0 2-.897 2-2v-6c0-1.103-.897-2-2-2h-8z"/>
+    </g>
 </svg>
index e549b17..7cfde44 100644 (file)
@@ -1,9 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="12px"
-        height="12px" viewBox="0 0 12 12">
-  <g id="deprecated" opacity="0.75">
-    <path d="M6,12 C2.686,12 -0,9.314 -0,6 C-0,2.686 2.686,-0 6,-0 C9.314,-0 12,2.686 12,6 C12,9.314 9.314,12 6,12 z M5,7 L7,7 L7,2 L5,2 z M5,10 L7,10 L7,8 L5,8 z"/>
-  </g>
-  <defs/>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
+    <g id="deprecated" opacity=".75">
+        <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 6zm-1-5h2v-5h-2zm0 3h2v-2h-2z"/>
+    </g>
 </svg>
index 89c21e3..d345ec0 100644 (file)
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="12px"
-        height="12px" viewBox="0 0 12 12">
-<g id="down" style="opacity:0.75;">
-       <polygon id="arrow" points="2,3 5.5,9 9,3"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
+    <g id="down" opacity=".75">
+        <path id="arrow" d="M2 3l3.5 6 3.5-6z"/>
+    </g>
 </svg>
index ad87640..5092d88 100644 (file)
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="12px"
-        height="12px" viewBox="0 0 12 12">
-<g id="ltr" opacity="0.75">
-       <path id="arrow" d="M3,9 L3,2 L9,5.5 z"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
+    <g id="ltr" opacity=".75">
+        <path id="arrow" d="M3 9v-7l6 3.5z"/>
+    </g>
 </svg>
index 010b24e..8d39de8 100644 (file)
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="12px"
-        height="12px" viewBox="0 0 12 12">
-<g id="rtl" opacity="0.75">
-       <path id="arrow" d="M3,5.5 L9,9 L9,2 z"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
+    <g id="rtl" opacity=".75">
+        <path id="arrow" d="M3 5.5l6 3.5v-7z"/>
+    </g>
 </svg>
index bbc2b3c..78e0115 100644 (file)
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="12px"
-        height="12px" viewBox="0 0 12 12">
-<g id="up" style="opacity:0.75;">
-       <polygon id="arrow" points="5.5,2 2,8 9,8"/>
-</g>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
+    <g id="up" opacity=".75">
+        <path id="arrow" d="M5.5 2l-3.5 6h7z"/>
+    </g>
 </svg>
index d8b36b1..45035f4 100644 (file)
@@ -1,11 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="12px"
-        height="12px" viewBox="0 0 12 12">
-  <g id="required" opacity="0.75">
-    <path d="M5,1 L7,1 L7,11 L5,11 z"/>
-    <path d="M9.83,2.634 L10.83,4.366 L2.17,9.366 L1.17,7.634 z"/>
-    <path d="M1.17,4.366 L2.17,2.634 L10.83,7.634 L9.83,9.366 z"/>
-  </g>
-  <defs/>
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
+    <g id="required" opacity=".75">
+        <path d="M5 1h2v10h-2zM9.83 2.634l1 1.732-8.66 5-1-1.732zM1.17 4.366l1-1.732 8.66 5-1 1.732z"/>
+    </g>
 </svg>
index 47fce7a..dc999cd 100644 (file)
@@ -1,3 +1,13 @@
+/*!
+ * OOjs UI v0.1.0-pre (85cfc2e735)
+ * https://www.mediawiki.org/wiki/OOjs_UI
+ *
+ * Copyright 2011–2014 OOjs Team and other contributors.
+ * Released under the MIT license
+ * http://oojs.mit-license.org
+ *
+ * Date: 2014-07-03T02:33:09Z
+ */
 .oo-ui-dialog-content .oo-ui-window-closeButton {
   position: absolute;
   top: 0;
index 94ebbe3..7018b52 100644 (file)
@@ -1,3 +1,13 @@
+/*!
+ * OOjs UI v0.1.0-pre (85cfc2e735)
+ * https://www.mediawiki.org/wiki/OOjs_UI
+ *
+ * Copyright 2011–2014 OOjs Team and other contributors.
+ * Released under the MIT license
+ * http://oojs.mit-license.org
+ *
+ * Date: 2014-07-03T02:33:09Z
+ */
 .oo-ui-dialog {
   background-color: #fff;
   background-color: rgba(255, 255, 255, 0.5);
index 7e3aadf..f2e3202 100644 (file)
@@ -1,16 +1,17 @@
 /*!
- * OOjs UI v0.1.0-pre (7a0e222a75)
+ * OOjs UI v0.1.0-pre (85cfc2e735)
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2014 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: Wed Jun 18 2014 16:19:15 GMT-0700 (PDT)
+ * Date: 2014-07-03T02:33:09Z
  */
 ( function ( OO ) {
 
 'use strict';
+
 /**
  * Namespace for all classes, static methods and static properties.
  *
@@ -94,84 +95,85 @@ OO.ui.getLocalValue = function ( obj, lang, fallback ) {
 
 ( function () {
 
-/**
- * Message store for the default implementation of OO.ui.msg
- *
- * Environments that provide a localization system should not use this, but should override
- * OO.ui.msg altogether.
- *
- * @private
- */
-var messages = {
-       // Label text for button to exit from dialog
-       'ooui-dialog-action-close': 'Close',
-       // Tool tip for a button that moves items in a list down one place
-       'ooui-outline-control-move-down': 'Move item down',
-       // Tool tip for a button that moves items in a list up one place
-       'ooui-outline-control-move-up': 'Move item up',
-       // Tool tip for a button that removes items from a list
-       'ooui-outline-control-remove': 'Remove item',
-       // Label for the toolbar group that contains a list of all other available tools
-       'ooui-toolbar-more': 'More',
-
-       // Label for the generic dialog used to confirm things
-       'ooui-dialog-confirm-title': 'Confirm',
-       // The default prompt of a confirmation dialog
-       'ooui-dialog-confirm-default-prompt': 'Are you sure?',
-       // The default OK button text on a confirmation dialog
-       'ooui-dialog-confirm-default-ok': 'OK',
-       // The default cancel button text on a confirmation dialog
-       'ooui-dialog-confirm-default-cancel': 'Cancel'
-};
+       /**
       * Message store for the default implementation of OO.ui.msg
       *
       * Environments that provide a localization system should not use this, but should override
       * OO.ui.msg altogether.
       *
       * @private
       */
+       var messages = {
+               // Label text for button to exit from dialog
+               'ooui-dialog-action-close': 'Close',
+               // Tool tip for a button that moves items in a list down one place
+               'ooui-outline-control-move-down': 'Move item down',
+               // Tool tip for a button that moves items in a list up one place
+               'ooui-outline-control-move-up': 'Move item up',
+               // Tool tip for a button that removes items from a list
+               'ooui-outline-control-remove': 'Remove item',
+               // Label for the toolbar group that contains a list of all other available tools
+               'ooui-toolbar-more': 'More',
+
+               // Label for the generic dialog used to confirm things
+               'ooui-dialog-confirm-title': 'Confirm',
+               // The default prompt of a confirmation dialog
+               'ooui-dialog-confirm-default-prompt': 'Are you sure?',
+               // The default OK button text on a confirmation dialog
+               'ooui-dialog-confirm-default-ok': 'OK',
+               // The default cancel button text on a confirmation dialog
+               'ooui-dialog-confirm-default-cancel': 'Cancel'
+       };
 
-/**
- * Get a localized message.
- *
- * In environments that provide a localization system, this function should be overridden to
- * return the message translated in the user's language. The default implementation always returns
- * English messages.
- *
- * After the message key, message parameters may optionally be passed. In the default implementation,
- * any occurrences of $1 are replaced with the first parameter, $2 with the second parameter, etc.
- * Alternative implementations of OO.ui.msg may use any substitution system they like, as long as
- * they support unnamed, ordered message parameters.
- *
- * @abstract
- * @param {string} key Message key
- * @param {Mixed...} [params] Message parameters
- * @return {string} Translated message with parameters substituted
- */
-OO.ui.msg = function ( key ) {
-       var message = messages[key], params = Array.prototype.slice.call( arguments, 1 );
-       if ( typeof message === 'string' ) {
-               // Perform $1 substitution
-               message = message.replace( /\$(\d+)/g, function ( unused, n ) {
-                       var i = parseInt( n, 10 );
-                       return params[i - 1] !== undefined ? params[i - 1] : '$' + n;
-               } );
-       } else {
-               // Return placeholder if message not found
-               message = '[' + key + ']';
-       }
-       return message;
-};
+       /**
       * Get a localized message.
       *
       * In environments that provide a localization system, this function should be overridden to
       * return the message translated in the user's language. The default implementation always returns
       * English messages.
       *
       * After the message key, message parameters may optionally be passed. In the default implementation,
       * any occurrences of $1 are replaced with the first parameter, $2 with the second parameter, etc.
       * Alternative implementations of OO.ui.msg may use any substitution system they like, as long as
       * they support unnamed, ordered message parameters.
       *
       * @abstract
       * @param {string} key Message key
       * @param {Mixed...} [params] Message parameters
       * @return {string} Translated message with parameters substituted
       */
+       OO.ui.msg = function ( key ) {
+               var message = messages[key], params = Array.prototype.slice.call( arguments, 1 );
+               if ( typeof message === 'string' ) {
+                       // Perform $1 substitution
+                       message = message.replace( /\$(\d+)/g, function ( unused, n ) {
+                               var i = parseInt( n, 10 );
+                               return params[i - 1] !== undefined ? params[i - 1] : '$' + n;
+                       } );
+               } else {
+                       // Return placeholder if message not found
+                       message = '[' + key + ']';
+               }
+               return message;
+       };
 
-/** */
-OO.ui.deferMsg = function ( key ) {
-       return function () {
-               return OO.ui.msg( key );
+       /** */
+       OO.ui.deferMsg = function ( key ) {
+               return function () {
+                       return OO.ui.msg( key );
+               };
        };
-};
 
-/** */
-OO.ui.resolveMsg = function ( msg ) {
-       if ( $.isFunction( msg ) ) {
-               return msg();
-       }
-       return msg;
-};
+       /** */
+       OO.ui.resolveMsg = function ( msg ) {
+               if ( $.isFunction( msg ) ) {
+                       return msg();
+               }
+               return msg;
+       };
 
 } )();
+
 /**
  * DOM element abstraction.
  *
@@ -669,6 +671,7 @@ OO.ui.Element.prototype.offDOMEvent = function ( event, callback ) {
                $( el ).off( event, callback );
        };
 }() );
+
 /**
  * Embedded iframe with the same styles as its parent.
  *
@@ -747,6 +750,9 @@ OO.ui.Frame.static.transplantStyles = function ( parentDoc, frameDoc, timeout )
 
        for ( i = 0, numSheets = parentDoc.styleSheets.length; i < numSheets; i++ ) {
                styleNode = parentDoc.styleSheets[i].ownerNode;
+               if ( styleNode.disabled ) {
+                       continue;
+               }
                if ( styleNode.nodeName.toLowerCase() === 'link' ) {
                        // External stylesheet
                        // Create a node with a unique ID that we're going to monitor to see when the CSS
@@ -899,6 +905,7 @@ OO.ui.Frame.prototype.setSize = function ( width, height ) {
        this.$element.css( { 'width': width, 'height': height } );
        return this;
 };
+
 /**
  * Container for elements in a child frame.
  *
@@ -1286,8 +1293,8 @@ OO.ui.Window.prototype.open = function ( data ) {
        // Open the window
        this.opening = $.Deferred();
 
-       // So we can restore focus on closing
-       this.$prevFocus = $( document.activeElement );
+       this.$ariaHidden = $( 'body' ).children().not( this.$element.parentsUntil( 'body' ).last() )
+               .attr( 'aria-hidden', '' );
 
        this.frame.load().done( OO.ui.bind( function () {
                this.$element.show();
@@ -1352,10 +1359,9 @@ OO.ui.Window.prototype.close = function ( data ) {
                        this.opened.resolve();
                }
                this.$element.hide();
-               // Restore focus to whatever was focused before opening
-               if ( this.$prevFocus ) {
-                       this.$prevFocus.focus();
-                       this.$prevFocus = undefined;
+               if ( this.$ariaHidden ) {
+                       this.$ariaHidden.removeAttr( 'aria-hidden' );
+                       this.$ariaHidden = undefined;
                }
                this.visible = false;
                this.closing.resolve();
@@ -1365,6 +1371,7 @@ OO.ui.Window.prototype.close = function ( data ) {
 
        return this.closing.promise();
 };
+
 /**
  * Set of mutually exclusive windows.
  *
@@ -1530,6 +1537,7 @@ OO.ui.WindowSet.prototype.addWindow = function ( win ) {
        } );
        this.$element.append( win.$element );
 };
+
 /**
  * Modal dialog window.
  *
@@ -1762,6 +1770,7 @@ OO.ui.Dialog.prototype.popPending = function () {
 
        return this;
 };
+
 /**
  * Container for elements.
  *
@@ -1791,6 +1800,7 @@ OO.ui.Layout = function OoUiLayout( config ) {
 
 OO.inheritClass( OO.ui.Layout, OO.ui.Element );
 OO.mixinClass( OO.ui.Layout, OO.EventEmitter );
+
 /**
  * User interface control.
  *
@@ -1876,6 +1886,7 @@ OO.ui.Widget.prototype.setDisabled = function ( disabled ) {
        this.wasDisabled = isDisabled;
        return this;
 };
+
 /**
  * A list of functions, called in sequence.
  *
@@ -1992,6 +2003,7 @@ OO.ui.Process.prototype.next = function ( step, context ) {
        this.steps.push( [ step, context || null ] );
        return this;
 };
+
 /**
  * Dialog for showing a confirmation/warning message.
  *
@@ -2052,8 +2064,6 @@ OO.ui.ConfirmationDialog.prototype.initialize = function () {
                this.okButton.$element,
                this.cancelButton.$element
        );
-
-       this.connect( this, { 'teardown': [ 'close', 'cancel' ] } );
 };
 
 /*
@@ -2097,11 +2107,12 @@ OO.ui.ConfirmationDialog.prototype.getTeardownProcess = function ( data ) {
                .first( function () {
                        if ( data === 'ok' ) {
                                this.opened.resolve();
-                       } else if ( data === 'cancel' ) {
+                       } else { // data === 'cancel', or no data
                                this.opened.reject();
                        }
                }, this );
 };
+
 /**
  * Element with a button.
  *
@@ -2128,11 +2139,12 @@ OO.ui.ButtonedElement = function OoUiButtonedElement( $button, config ) {
        this.$button.on( 'mousedown', OO.ui.bind( this.onMouseDown, this ) );
 
        // Initialization
-       this.$element.addClass( 'oo-ui-buttonedElement' );
+       this.$element
+               .addClass( 'oo-ui-buttonedElement' )
+               .prop( 'tabIndex', config.tabIndex || 0 );
        this.$button
                .addClass( 'oo-ui-buttonedElement-button' )
-               .attr( 'role', 'button' )
-               .prop( 'tabIndex', config.tabIndex || 0 );
+               .attr( 'role', 'button' );
        if ( config.frameless ) {
                this.$element.addClass( 'oo-ui-buttonedElement-frameless' );
        } else {
@@ -2209,6 +2221,7 @@ OO.ui.ButtonedElement.prototype.setActive = function ( value ) {
        this.$button.toggleClass( 'oo-ui-buttonedElement-active', !!value );
        return this;
 };
+
 /**
  * Element that can be automatically clipped to visible boundaies.
  *
@@ -2336,18 +2349,23 @@ OO.ui.ClippableElement.prototype.clip = function () {
        if ( clipWidth ) {
                this.$clippable.css( { 'overflow-x': 'auto', 'width': desiredWidth } );
        } else {
-               this.$clippable.css( { 'overflow-x': '', 'width': this.idealWidth || '' } );
+               this.$clippable.css( 'width', this.idealWidth || '' );
+               this.$clippable.width(); // Force reflow for https://code.google.com/p/chromium/issues/detail?id=387290
+               this.$clippable.css( 'overflow-x', '' );
        }
        if ( clipHeight ) {
                this.$clippable.css( { 'overflow-y': 'auto', 'height': desiredHeight } );
        } else {
-               this.$clippable.css( { 'overflow-y': '', 'height': this.idealHeight || '' } );
+               this.$clippable.css( 'height', this.idealHeight || '' );
+               this.$clippable.height(); // Force reflow for https://code.google.com/p/chromium/issues/detail?id=387290
+               this.$clippable.css( 'overflow-y', '' );
        }
 
        this.clipped = clipWidth || clipHeight;
 
        return this;
 };
+
 /**
  * Element with named flags that can be added, removed, listed and checked.
  *
@@ -2447,6 +2465,7 @@ OO.ui.FlaggableElement.prototype.setFlags = function ( flags ) {
        }
        return this;
 };
+
 /**
  * Element containing a sequence of child elements.
  *
@@ -2645,6 +2664,7 @@ OO.ui.GroupElement.prototype.clearItems = function () {
        this.items = [];
        return this;
 };
+
 /**
  * Element containing an icon.
  *
@@ -2732,6 +2752,7 @@ OO.ui.IconedElement.prototype.setIcon = function ( icon ) {
 OO.ui.IconedElement.prototype.getIcon = function () {
        return this.icon;
 };
+
 /**
  * Element containing an indicator.
  *
@@ -2845,6 +2866,7 @@ OO.ui.IndicatedElement.prototype.getIndicator = function () {
 OO.ui.IndicatedElement.prototype.getIndicatorTitle = function () {
        return this.indicatorTitle;
 };
+
 /**
  * Element containing a label.
  *
@@ -2943,6 +2965,7 @@ OO.ui.LabeledElement.prototype.fitLabel = function () {
        }
        return this;
 };
+
 /**
  * Popuppable element.
  *
@@ -2993,6 +3016,7 @@ OO.ui.PopuppableElement.prototype.showPopup = function () {
 OO.ui.PopuppableElement.prototype.hidePopup = function () {
        this.popup.hide();
 };
+
 /**
  * Element with a title.
  *
@@ -3059,6 +3083,7 @@ OO.ui.TitledElement.prototype.setTitle = function ( title ) {
 OO.ui.TitledElement.prototype.getTitle = function () {
        return this.title;
 };
+
 /**
  * Generic toolbar tool.
  *
@@ -3097,7 +3122,9 @@ OO.ui.Tool = function OoUiTool( toolGroup, config ) {
        this.$title.addClass( 'oo-ui-tool-title' );
        this.$link
                .addClass( 'oo-ui-tool-link' )
-               .append( this.$icon, this.$title );
+               .append( this.$icon, this.$title )
+               .prop( 'tabIndex', 0 )
+               .attr( 'role', 'button' );
        this.$element
                .data( 'oo-ui-tool', this )
                .addClass(
@@ -3310,6 +3337,7 @@ OO.ui.Tool.prototype.destroy = function () {
        this.toolbar.disconnect( this );
        this.$element.remove();
 };
+
 /**
  * Collection of tool groups.
  *
@@ -3518,6 +3546,7 @@ OO.ui.Toolbar.prototype.releaseTool = function ( tool ) {
 OO.ui.Toolbar.prototype.getToolAccelerator = function () {
        return undefined;
 };
+
 /**
  * Factory for tools.
  *
@@ -3630,6 +3659,7 @@ OO.ui.ToolFactory.prototype.extract = function ( collection, used ) {
        }
        return names;
 };
+
 /**
  * Collection of tools.
  *
@@ -3948,6 +3978,7 @@ OO.ui.ToolGroup.prototype.destroy = function () {
        }
        this.$element.remove();
 };
+
 /**
  * Factory for tool groups.
  *
@@ -3986,6 +4017,7 @@ OO.ui.ToolGroupFactory.static.getDefaultClasses = function () {
                OO.ui.MenuToolGroup
        ];
 };
+
 /**
  * Layout made of a fieldset and optional legend.
  *
@@ -4033,6 +4065,7 @@ OO.mixinClass( OO.ui.FieldsetLayout, OO.ui.GroupElement );
 /* Static Properties */
 
 OO.ui.FieldsetLayout.static.tagName = 'div';
+
 /**
  * Layout made of a field and optional label.
  *
@@ -4148,6 +4181,7 @@ OO.ui.FieldLayout.prototype.setAlignment = function ( value ) {
 
        return this;
 };
+
 /**
  * Layout made of proportionally sized columns and rows.
  *
@@ -4308,6 +4342,7 @@ OO.ui.GridLayout.prototype.update = function () {
 OO.ui.GridLayout.prototype.getPanel = function ( x, y ) {
        return this.panels[( x * this.widths.length ) + y];
 };
+
 /**
  * Layout containing a series of pages.
  *
@@ -4726,6 +4761,7 @@ OO.ui.BookletLayout.prototype.updateOutlineWidget = function () {
 
        return this;
 };
+
 /**
  * Layout that expands to cover the entire area of its parent, with optional scrolling and padding.
  *
@@ -4758,6 +4794,7 @@ OO.ui.PanelLayout = function OoUiPanelLayout( config ) {
 /* Setup */
 
 OO.inheritClass( OO.ui.PanelLayout, OO.ui.Layout );
+
 /**
  * Page within an booklet layout.
  *
@@ -4851,6 +4888,7 @@ OO.ui.PageLayout.prototype.setActive = function ( active ) {
                this.emit( 'active', this.active );
        }
 };
+
 /**
  * Layout containing a series of mutually exclusive pages.
  *
@@ -5021,6 +5059,7 @@ OO.ui.StackLayout.prototype.setItem = function ( item ) {
 
        return this;
 };
+
 /**
  * Horizontal bar layout of tools as icon buttons.
  *
@@ -5050,6 +5089,7 @@ OO.ui.BarToolGroup.static.titleTooltips = true;
 OO.ui.BarToolGroup.static.accelTooltips = true;
 
 OO.ui.BarToolGroup.static.name = 'bar';
+
 /**
  * Popup list of tools with an icon and optional label.
  *
@@ -5202,6 +5242,7 @@ OO.ui.PopupToolGroup.prototype.setActive = function ( value ) {
                }
        }
 };
+
 /**
  * Drop down list layout of tools as labeled icon buttons.
  *
@@ -5229,6 +5270,7 @@ OO.inheritClass( OO.ui.ListToolGroup, OO.ui.PopupToolGroup );
 OO.ui.ListToolGroup.static.accelTooltips = true;
 
 OO.ui.ListToolGroup.static.name = 'list';
+
 /**
  * Drop down menu layout of tools as selectable menu items.
  *
@@ -5283,6 +5325,7 @@ OO.ui.MenuToolGroup.prototype.onUpdateState = function () {
 
        this.setLabel( labelTexts.join( ', ' ) || ' ' );
 };
+
 /**
  * Tool that shows a popup when selected.
  *
@@ -5340,6 +5383,7 @@ OO.ui.PopupTool.prototype.onSelect = function () {
 OO.ui.PopupTool.prototype.onUpdateState = function () {
        this.setActive( false );
 };
+
 /**
  * Group widget.
  *
@@ -5390,6 +5434,7 @@ OO.ui.GroupWidget.prototype.setDisabled = function ( disabled ) {
 
        return this;
 };
+
 /**
  * Item widget.
  *
@@ -5434,6 +5479,7 @@ OO.ui.ItemWidget.prototype.setElementGroup = function ( group ) {
 
        return this;
 };
+
 /**
  * Icon widget.
  *
@@ -5469,6 +5515,7 @@ OO.mixinClass( OO.ui.IconWidget, OO.ui.TitledElement );
 /* Static Properties */
 
 OO.ui.IconWidget.static.tagName = 'span';
+
 /**
  * Indicator widget.
  *
@@ -5504,6 +5551,7 @@ OO.mixinClass( OO.ui.IndicatorWidget, OO.ui.TitledElement );
 /* Static Properties */
 
 OO.ui.IndicatorWidget.static.tagName = 'span';
+
 /**
  * Container for multiple related buttons.
  *
@@ -5535,6 +5583,7 @@ OO.ui.ButtonGroupWidget = function OoUiButtonGroupWidget( config ) {
 
 OO.inheritClass( OO.ui.ButtonGroupWidget, OO.ui.Widget );
 OO.mixinClass( OO.ui.ButtonGroupWidget, OO.ui.GroupElement );
+
 /**
  * Button widget.
  *
@@ -5635,6 +5684,7 @@ OO.ui.ButtonWidget.prototype.onKeyPress = function ( e ) {
        }
        return false;
 };
+
 /**
  * Input widget.
  *
@@ -5830,6 +5880,7 @@ OO.ui.InputWidget.prototype.focus = function () {
        this.$input.focus();
        return this;
 };
+
 /**
  * Checkbox widget.
  *
@@ -5896,6 +5947,7 @@ OO.ui.CheckboxInputWidget.prototype.onEdit = function () {
                }, this ) );
        }
 };
+
 /**
  * Label widget.
  *
@@ -5948,6 +6000,7 @@ OO.ui.LabelWidget.prototype.onClick = function () {
        this.input.simulateLabelClick();
        return false;
 };
+
 /**
  * Lookup input widget.
  *
@@ -6181,6 +6234,7 @@ OO.ui.LookupInputWidget.prototype.getLookupMenuItemsFromData = function () {
        // Stub, implemented in subclass
        return [];
 };
+
 /**
  * Option widget.
  *
@@ -6398,6 +6452,7 @@ OO.ui.OptionWidget.prototype.flash = function () {
 OO.ui.OptionWidget.prototype.getData = function () {
        return this.data;
 };
+
 /**
  * Selection of options.
  *
@@ -6909,6 +6964,7 @@ OO.ui.SelectWidget.prototype.clearItems = function () {
 
        return this;
 };
+
 /**
  * Menu item widget.
  *
@@ -6935,6 +6991,7 @@ OO.ui.MenuItemWidget = function OoUiMenuItemWidget( data, config ) {
 /* Setup */
 
 OO.inheritClass( OO.ui.MenuItemWidget, OO.ui.OptionWidget );
+
 /**
  * Menu widget.
  *
@@ -7192,6 +7249,7 @@ OO.ui.MenuWidget.prototype.hide = function () {
 
        return this;
 };
+
 /**
  * Inline menu of options.
  *
@@ -7299,6 +7357,7 @@ OO.ui.InlineMenuWidget.prototype.onClick = function ( e ) {
        }
        return false;
 };
+
 /**
  * Menu section item widget.
  *
@@ -7328,6 +7387,7 @@ OO.inheritClass( OO.ui.MenuSectionItemWidget, OO.ui.OptionWidget );
 OO.ui.MenuSectionItemWidget.static.selectable = false;
 
 OO.ui.MenuSectionItemWidget.static.highlightable = false;
+
 /**
  * Create an OO.ui.OutlineWidget object.
  *
@@ -7353,6 +7413,7 @@ OO.ui.OutlineWidget = function OoUiOutlineWidget( config ) {
 /* Setup */
 
 OO.inheritClass( OO.ui.OutlineWidget, OO.ui.SelectWidget );
+
 /**
  * Creates an OO.ui.OutlineControlsWidget object.
  *
@@ -7466,6 +7527,7 @@ OO.ui.OutlineControlsWidget.prototype.onOutlineChange = function () {
        this.downButton.setDisabled( !movable || selectedItem === lastMovable );
        this.removeButton.setDisabled( !removable );
 };
+
 /**
  * Creates an OO.ui.OutlineItemWidget object.
  *
@@ -7592,6 +7654,7 @@ OO.ui.OutlineItemWidget.prototype.setLevel = function ( level ) {
 
        return this;
 };
+
 /**
  * Option widget that looks like a button.
  *
@@ -7645,6 +7708,7 @@ OO.ui.ButtonOptionWidget.prototype.setSelected = function ( state ) {
 
        return this;
 };
+
 /**
  * Select widget containing button options.
  *
@@ -7667,6 +7731,7 @@ OO.ui.ButtonSelectWidget = function OoUiButtonSelectWidget( config ) {
 /* Setup */
 
 OO.inheritClass( OO.ui.ButtonSelectWidget, OO.ui.SelectWidget );
+
 /**
  * Container for content that is overlaid and positioned absolutely.
  *
@@ -7912,6 +7977,7 @@ OO.ui.PopupWidget.prototype.display = function ( width, height, transition ) {
 
        return this;
 };
+
 /**
  * Button that shows and hides a popup.
  *
@@ -7963,6 +8029,7 @@ OO.ui.PopupButtonWidget.prototype.onClick = function ( e ) {
        }
        return false;
 };
+
 /**
  * Search widget.
  *
@@ -8116,6 +8183,7 @@ OO.ui.SearchWidget.prototype.getQuery = function () {
 OO.ui.SearchWidget.prototype.getResults = function () {
        return this.results;
 };
+
 /**
  * Text input widget.
  *
@@ -8328,6 +8396,7 @@ OO.ui.TextInputWidget.prototype.select = function () {
        this.$input.select();
        return this;
 };
+
 /**
  * Menu for a text input widget.
  *
@@ -8428,6 +8497,7 @@ OO.ui.TextInputMenuWidget.prototype.position = function () {
        this.setIdealSize( $container.width() );
        return this;
 };
+
 /**
  * Width with on and off states.
  *
@@ -8487,6 +8557,7 @@ OO.ui.ToggleWidget.prototype.setValue = function ( value ) {
        }
        return this;
 };
+
 /**
  * Button that toggles on and off.
  *
@@ -8545,6 +8616,7 @@ OO.ui.ToggleButtonWidget.prototype.setValue = function ( value ) {
 
        return this;
 };
+
 /**
  * Switch that slides on and off.
  *
@@ -8598,4 +8670,5 @@ OO.ui.ToggleSwitchWidget.prototype.onClick = function ( e ) {
                this.setValue( !this.value );
        }
 };
+
 }( OO ) );
index 76feb5d..a249314 100644 (file)
@@ -1,14 +1,13 @@
 /*!
- * OOjs UI v0.1.0-pre (7a0e222a75)
+ * OOjs UI v0.1.0-pre (85cfc2e735)
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2014 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: Wed Jun 18 2014 16:19:15 GMT-0700 (PDT)
+ * Date: 2014-07-03T02:33:09Z
  */
-
 /* Textures */
 
 .oo-ui-texture-pending {
index 8ca3aed..8ccd50a 100644 (file)
@@ -1,16 +1,17 @@
 /*!
- * OOjs v1.0.9
+ * OOjs v1.0.10
  * https://www.mediawiki.org/wiki/OOjs
  *
  * Copyright 2011-2014 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: Wed Apr 02 2014 14:20:50 GMT-0700 (PDT)
+ * Date: Wed Jun 18 2014 20:03:40 GMT-0700 (PDT)
  */
 ( function ( global ) {
 
 'use strict';
+/*exported toString */
 var
        /**
         * Namespace for all classes, static methods and static properties.
@@ -23,33 +24,6 @@ var
 
 /* Class Methods */
 
-/**
- * Assert whether a value is a plain object or not.
- *
- * @param {Mixed} obj
- * @return {boolean}
- */
-oo.isPlainObject = function ( obj ) {
-       // Any object or value whose internal [[Class]] property is not "[object Object]"
-       if ( toString.call( obj ) !== '[object Object]' ) {
-               return false;
-       }
-
-       // The try/catch suppresses exceptions thrown when attempting to access
-       // the "constructor" property of certain host objects suich as window.location
-       // in Firefox < 20 (https://bugzilla.mozilla.org/814622)
-       try {
-               if ( obj.constructor &&
-                               !hasOwn.call( obj.constructor.prototype, 'isPrototypeOf' ) ) {
-                       return false;
-               }
-       } catch ( e ) {
-               return false;
-       }
-
-       return true;
-};
-
 /**
  * Utility to initialize a class for OO inheritance.
  *
@@ -106,7 +80,12 @@ oo.inheritClass = function ( targetFn, originFn ) {
 
        var targetConstructor = targetFn.prototype.constructor;
 
-       targetFn.super = originFn;
+       // Using ['super'] instead of .super because 'super' is not supported
+       // by IE 8 and below (bug 63303).
+       // Provide .parent as alias for code supporting older browsers which
+       // allows people to comply with their style guide.
+       targetFn['super'] = targetFn.parent = originFn;
+
        targetFn.prototype = Object.create( originFn.prototype, {
                // Restore constructor property of targetFn
                constructor: {
@@ -255,6 +234,12 @@ oo.compare = function ( a, b, asymmetrical ) {
        }
 
        for ( k in a ) {
+               if ( !hasOwn.call( a, k ) ) {
+                       // Support es3-shim: Without this filter, comparing [] to {} will be false in ES3
+                       // because the shimmed "forEach" is enumerable and shows up in Array but not Object.
+                       continue;
+               }
+
                aValue = a[k];
                bValue = b[k];
                aType = typeof aValue;
@@ -457,6 +442,38 @@ oo.simpleArrayIntersection = function ( a, b ) {
 oo.simpleArrayDifference = function ( a, b ) {
        return simpleArrayCombine( a, b, false );
 };
+/*global hasOwn, toString */
+
+/**
+ * Assert whether a value is a plain object or not.
+ *
+ * @param {Mixed} obj
+ * @return {boolean}
+ */
+oo.isPlainObject = function ( obj ) {
+       /*jshint eqnull:true, eqeqeq:false */
+
+       // Any object or value whose internal [[Class]] property is not "[object Object]"
+       // Support IE8: Explicitly filter out DOM nodes
+       // Support IE8: Explicitly filter out Window object (needs loose comparison)
+       if ( !obj || toString.call( obj ) !== '[object Object]' || obj.nodeType || ( obj != null && obj == obj.window ) ) {
+               return false;
+       }
+
+       // The try/catch suppresses exceptions thrown when attempting to access
+       // the "constructor" property of certain host objects suich as window.location
+       // in Firefox < 20 (https://bugzilla.mozilla.org/814622)
+       try {
+               if ( obj.constructor &&
+                               !hasOwn.call( obj.constructor.prototype, 'isPrototypeOf' ) ) {
+                       return false;
+               }
+       } catch ( e ) {
+               return false;
+       }
+
+       return true;
+};
 /**
  * @class OO.EventEmitter
  *
@@ -529,11 +546,12 @@ oo.EventEmitter.prototype.on = function ( event, callback, args, context ) {
  * @chainable
  */
 oo.EventEmitter.prototype.once = function ( event, listener ) {
-       var eventEmitter = this;
-       return this.on( event, function listenerWrapper() {
-               eventEmitter.off( event, listenerWrapper );
-               listener.apply( eventEmitter, Array.prototype.slice.call( arguments, 0 ) );
-       } );
+       var eventEmitter = this,
+               listenerWrapper = function () {
+                       eventEmitter.off( event, listenerWrapper );
+                       listener.apply( eventEmitter, Array.prototype.slice.call( arguments, 0 ) );
+               };
+       return this.on( event, listenerWrapper );
 };
 
 /**
@@ -761,7 +779,7 @@ oo.Registry.prototype.lookup = function ( name ) {
  * @constructor
  */
 oo.Factory = function OoFactory() {
-       oo.Factory.super.call( this );
+       oo.Factory.parent.call( this );
 
        // Properties
        this.entries = [];
@@ -801,7 +819,7 @@ oo.Factory.prototype.register = function ( constructor ) {
        }
        this.entries.push( name );
 
-       oo.Factory.super.prototype.register.call( this, name, constructor );
+       oo.Factory.parent.prototype.register.call( this, name, constructor );
 };
 
 /**
diff --git a/resources/src/es5-skip.js b/resources/src/es5-skip.js
new file mode 100644 (file)
index 0000000..a4039d8
--- /dev/null
@@ -0,0 +1,18 @@
+/*!
+ * Skip function for es5-shim module.
+ *
+ * Test for strict mode as a proxy for full ES5 function support (but not syntax)
+ * Per http://kangax.github.io/compat-table/es5/ this is a reasonable shortcut
+ * that still allows this to be as short as possible (there are no browsers we
+ * support that have strict mode, but lack other features).
+ *
+ * Do explicitly test for Function#bind because of PhantomJS (which implements
+ * strict mode, but lacks Function#bind).
+ *
+ * IE9 supports all features except strict mode, so loading es5-shim should be close to
+ * a no-op but does increase page payload).
+ */
+return ( function () {
+       'use strict';
+       return !this && !!Function.prototype.bind;
+}() );
diff --git a/resources/src/jquery.json-deprecate.js b/resources/src/jquery.json-deprecate.js
new file mode 100644 (file)
index 0000000..915cd85
--- /dev/null
@@ -0,0 +1,6 @@
+( function ( mw, $ ) {
+       mw.log.deprecate( $, 'toJSON', $.toJSON, 'Use JSON.stringify instead (module "json" for polyfill).' );
+       mw.log.deprecate( $, 'evalJSON', $.evalJSON, 'Use JSON.parse instead (module "json" for polyfill).' );
+       mw.log.deprecate( $, 'secureEvalJSON', $.secureEvalJSON, 'Use JSON.parse instead (module "json" for polyfill).' );
+       mw.log.deprecate( $, 'quoteString', $.quoteString, 'Use JSON.stringify instead (module "json" for polyfill).' );
+}( mediaWiki, jQuery ) );
index b3e8193..1931aad 100644 (file)
@@ -7,7 +7,7 @@
 /* Layout helpers
 ----------------------------------*/
 .ui-helper-hidden { display: none; }
-.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
+.ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }
 .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
 .ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
 .ui-helper-clearfix { display: inline-block; }
index d6dfedd..8d38401 100644 (file)
@@ -12,7 +12,7 @@
  *
  * @author Timo Tijhof, 2011-2012
  */
-( function ( $ ) {
+( function ( mw, $ ) {
        'use strict';
 
        var util,
@@ -64,6 +64,8 @@
         *  were not called from that instance.
         */
        function CompletenessTest( masterVariable, ignoreFn ) {
+               var warn,
+                       that = this;
 
                // Keep track in these objects. Keyed by strings with the
                // method names (ie. 'my.foo', 'my.bar', etc.) values are boolean true.
                this.lazyLimit = 2000;
                this.lazyCounter = 0;
 
-               var that = this;
-
                // Bind begin and end to QUnit.
                QUnit.begin( function () {
-                       that.walkTheObject( null, masterVariable, masterVariable, [], CompletenessTest.ACTION_INJECT );
-                       log( 'CompletenessTest/walkTheObject/ACTION_INJECT', that );
+                       // Suppress warnings (e.g. deprecation notices for accessing the properties)
+                       warn = mw.log.warn;
+                       mw.log.warn = $.noop;
+
+                       that.walkTheObject( masterVariable, null, masterVariable, [] );
+                       log( 'CompletenessTest/walkTheObject', that );
+
+                       // Restore warnings
+                       mw.log.warn = warn;
+                       warn = undefined;
                });
 
                QUnit.done( function () {
                return this;
        }
 
-       /* Static members */
-       CompletenessTest.ACTION_INJECT = 500;
-       CompletenessTest.ACTION_CHECK = 501;
-
        /* Public methods */
        CompletenessTest.fn = CompletenessTest.prototype = {
 
                 *  Initially this is the same as currVar.
                 * @param parentPathArray {Array} Array of names that indicate our breadcrumb path starting at
                 *  masterVariable. Not including currName.
-                * @param action {Number} What is this function supposed to do (ACTION_INJECT or ACTION_CHECK)
                 */
-               walkTheObject: function ( currName, currVar, masterVariable, parentPathArray, action ) {
-                       var key, value, currPathArray,
-                               type = util.type( currVar ),
-                               that = this;
+               walkTheObject: function ( currObj, currName, masterVariable, parentPathArray ) {
+                       var key, currVal, type,
+                               ct = this,
+                               currPathArray = parentPathArray;
 
-                       currPathArray = parentPathArray;
                        if ( currName ) {
                                currPathArray.push( currName );
+                               currVal = currObj[currName];
+                       } else {
+                               currName = '(root)';
+                               currVal = currObj;
                        }
 
+                       type = util.type( currVal );
+
                        // Hard ignores
-                       if ( this.ignoreFn( currVar, that, currPathArray ) ) {
+                       if ( this.ignoreFn( currVal, this, currPathArray ) ) {
                                return null;
                        }
 
 
                        // Functions
                        if ( type === 'function' ) {
-
-                               if ( !currVar.prototype || util.isEmptyObject( currVar.prototype ) ) {
-
-                                       if ( action === CompletenessTest.ACTION_INJECT ) {
-
-                                               that.injectionTracker[ currPathArray.join( '.' ) ] = true;
-                                               that.injectCheck( masterVariable, currPathArray, function () {
-                                                       that.methodCallTracker[ currPathArray.join( '.' ) ] = true;
-                                               } );
-                                       }
-
-                               // We don't support checking object constructors yet...
-                               // ...we can check the prototypes fine, though.
-                               } else {
-                                       if ( action === CompletenessTest.ACTION_INJECT ) {
-
-                                               for ( key in currVar.prototype ) {
-                                                       if ( hasOwn.call( currVar.prototype, key ) ) {
-                                                               value = currVar.prototype[key];
-                                                               if ( key === 'constructor' ) {
-                                                                       continue;
-                                                               }
-
-                                                               that.walkTheObject( key, value, masterVariable, currPathArray.concat( 'prototype' ), action );
-                                                       }
-                                               }
-
-                                       }
+                               // Don't put a spy in constructor functions as it messes with
+                               // instanceof etc.
+                               if ( !currVal.prototype || util.isEmptyObject( currVal.prototype ) ) {
+                                       this.injectionTracker[ currPathArray.join( '.' ) ] = true;
+                                       this.injectCheck( currObj, currName, function () {
+                                               ct.methodCallTracker[ currPathArray.join( '.' ) ] = true;
+                                       } );
                                }
-
                        }
 
                        // Recursively. After all, this is the *completeness* test
-                       if ( type === 'function' || type === 'object' ) {
-                               for ( key in currVar ) {
-                                       if ( hasOwn.call( currVar, key ) ) {
-                                               value = currVar[key];
-
-                                               that.walkTheObject( key, value, masterVariable, currPathArray.slice(), action );
+                       // This also traverses static properties and the prototype of a constructor
+                       if ( type === 'object' || type === 'function' ) {
+                               for ( key in currVal ) {
+                                       if ( hasOwn.call( currVal, key ) ) {
+                                               this.walkTheObject( currVal, key, masterVariable, currPathArray.slice() );
                                        }
                                }
                        }
                 * @param objectPathArray {Array}
                 * @param injectFn {Function}
                 */
-               injectCheck: function ( masterVariable, objectPathArray, injectFn ) {
-                       var i, len, prev, memberName, lastMember,
-                               curr = masterVariable;
-
-                       // Get the object in question through the path from the master variable,
-                       // We can't pass the value directly because we need to re-define the object
-                       // member and keep references to the parent object, member name and member
-                       // value at all times.
-                       for ( i = 0, len = objectPathArray.length; i < len; i++ ) {
-                               memberName = objectPathArray[i];
-
-                               prev = curr;
-                               curr = prev[memberName];
-                               lastMember = memberName;
-                       }
+               injectCheck: function ( obj, key, injectFn ) {
+                       var spy,
+                               val = obj[ key ];
 
-                       // Objects are by reference, members (unless objects) are not.
-                       prev[lastMember] = function () {
+                       spy = function () {
                                injectFn();
-                               return curr.apply( this, arguments );
+                               return val.apply( this, arguments );
                        };
+
+                       // Make the spy inherit from the original so that its static methods are also
+                       // visible in the spy (e.g. when we inject a check into mw.log, mw.log.warn
+                       // must remain accessible).
+                       /*jshint proto:true */
+                       spy.__proto__ = val;
+
+                       // Objects are by reference, members (unless objects) are not.
+                       obj[ key ] = spy;
                }
        };
 
        /* Expose */
        window.CompletenessTest = CompletenessTest;
 
-}( jQuery ) );
+}( mediaWiki, jQuery ) );
diff --git a/resources/src/json-skip.js b/resources/src/json-skip.js
new file mode 100644 (file)
index 0000000..0a1e1c2
--- /dev/null
@@ -0,0 +1,4 @@
+/*!
+ * Skip function for json2.js.
+ */
+return !!( window.JSON && JSON.stringify && JSON.parse );
index e66b9cd..b6ba59f 100644 (file)
@@ -25,6 +25,8 @@ mediaWiki.language.convertGrammar = function ( word, form ) {
                                word = word.substr(0, word.length - 2 ) + 'тей';
                        } else if ( word.substr( word.length - 2 ) === 'ды' ) {
                                word = word.substr(0, word.length - 2 ) + 'дов';
+                       } else if ( word.substr( word.length - 1 ) === 'д' ) {
+                               word = word.substr(0, word.length - 1 ) + 'да';
                        } else if ( word.substr( word.length - 3 ) === 'ные' ) {
                                word = word.substr(0, word.length - 3 ) + 'ных';
                        } else if ( word.substr( word.length - 3 ) === 'ник' ) {
@@ -42,6 +44,8 @@ mediaWiki.language.convertGrammar = function ( word, form ) {
                                word = word.substr(0, word.length - 2 ) + 'тях';
                        } else if ( word.substr( word.length - 2 ) === 'ды' ) {
                                word = word.substr(0, word.length - 2 ) + 'дах';
+                       } else if ( word.substr( word.length - 1 ) === 'д' ) {
+                               word = word.substr(0, word.length - 1 ) + 'де';
                        } else if ( word.substr( word.length - 3 ) === 'ные' ) {
                                word = word.substr(0, word.length - 3 ) + 'ных';
                        } else if ( word.substr( word.length - 3 ) === 'ник' ) {
index 67e2f33..b65a62b 100644 (file)
@@ -61,7 +61,6 @@
 }
 
 .transition(@value) {
-       -webkit-backface-visibility: hidden; // fixes Chrome 1px movement bug
        -webkit-transition: @value;
        -moz-transition: @value;
        -o-transition: @value;
index e7c962f..1892967 100644 (file)
@@ -2,7 +2,7 @@
  * Show gallery captions when focused. Copied directly from jquery.mw-jump.js.
  * Also Dynamically resize images to justify them.
  */
-( function ( $, mw ) {
+( function ( $ ) {
        $( function () {
                var isTouchScreen,
                        gettingFocus,
@@ -93,7 +93,6 @@
                                        $imageElm,
                                        imageElm,
                                        $caption,
-                                       hookInfo,
                                        i,
                                        j,
                                        avgZoom,
                                                }
 
                                                if ( curRow[j].aspect === 0 || !isFinite( curRow[j].aspect ) ) {
-                                                       mw.log( 'Skipping item ' + j + ' due to aspect: ' + curRow[j].aspect );
                                                        // One of the dimensions are 0. Probably should
                                                        // not try to resize.
                                                        combinedPadding += curRow[j].width;
                                                // Also on the off chance there is a bug in this
                                                // code, would prevent accidentally expanding to
                                                // be 10 billion pixels wide.
-                                               mw.log( 'mw.page.gallery: Cannot fit row, aspect is ' + preferredHeight / curRowHeight );
                                                if ( i === rows.length - 1 ) {
                                                        // If its the last row, and we can't fit it,
                                                        // don't make the entire row huge.
                                        }
                                        if ( !isFinite( preferredHeight ) ) {
                                                // This *definitely* should not happen.
-                                               mw.log( 'mw.page.gallery: Trying to resize row ' + i + ' to ' + preferredHeight + '?!' );
                                                // Skip this row.
                                                continue;
                                        }
                                        if ( preferredHeight < 5 ) {
                                                // Well something clearly went wrong...
-                                               mw.log( {
-                                                       maxWidth: maxWidth,
-                                                       combinedPadding: combinedPadding,
-                                                       combinedAspect: combinedAspect,
-                                                       wantedWidth: wantedWidth
-                                               } );
-                                               mw.log( 'mw.page.gallery: [BUG!] Fitting row ' + i + ' to too small a size: ' + preferredHeight );
                                                // Skip this row.
                                                continue;
                                        }
 
                                                if ( newWidth < 60 || !isFinite( newWidth ) ) {
                                                        // Making something skinnier than this will mess up captions,
-                                                       mw.log( 'mw.page.gallery: Tried to make image ' + newWidth + 'px wide but too narrow.' );
                                                        if ( newWidth < 1 || !isFinite( newWidth ) ) {
                                                                $innerDiv.height( preferredHeight );
                                                                // Don't even try and touch the image size if it could mean
                                                        $caption.width( curRow[j].captionWidth + ( newWidth - curRow[j].imgWidth ) );
                                                }
 
-                                               hookInfo = {
-                                                       fullWidth: newWidth + padding,
-                                                       imgWidth: newWidth,
-                                                       imgHeight: preferredHeight,
-                                                       $innerDiv: $innerDiv,
-                                                       $imageDiv: $imageDiv,
-                                                       $outerDiv: $outerDiv,
-                                                       // Whether the hook took action
-                                                       resolved: false
-                                               };
-
-                                               /**
-                                                * Gallery resize.
-                                                *
-                                                * If your handler resizes an image, it should also set the resolved
-                                                * property to true. Additionally, because this module only exposes this
-                                                * logic temporarily, you should load your module in position top to
-                                                * ensure it is registered before this runs (FIXME: Don't use mw.hook)
-                                                *
-                                                * See TimedMediaHandler for an example.
-                                                *
-                                                * @event mediawiki_page_gallery_resize
-                                                * @member mw.hook
-                                                * @param {Object} hookInfo
-                                                */
-                                               mw.hook( 'mediawiki.page.gallery.resize' ).fire( hookInfo );
-
-                                               if ( !hookInfo.resolved ) {
-                                                       if ( imageElm ) {
-                                                               // We don't always have an img, e.g. in the case of an invalid file.
-                                                               imageElm.width = newWidth;
-                                                               imageElm.height = preferredHeight;
-                                                       } else {
-                                                               // Not a file box.
-                                                               $imageDiv.height( preferredHeight );
-                                                       }
+                                               if ( imageElm ) {
+                                                       // We don't always have an img, e.g. in the case of an invalid file.
+                                                       imageElm.width = newWidth;
+                                                       imageElm.height = preferredHeight;
+                                               } else {
+                                                       // Not a file box.
+                                                       $imageDiv.height( preferredHeight );
                                                }
                                        }
                                }
                        }() );
                } );
        } );
-}( jQuery, mediaWiki ) );
+}( jQuery ) );
index 775b249..2f1b795 100644 (file)
  */
 span.reference {
        font-size: smaller;
-       line-height: normal;
+       line-height: 1;
        vertical-align: super;
 }
 
+sup, sub {
+       line-height: 1;
+}
+
 /**
  * Block media items
  */
@@ -64,6 +68,12 @@ figure[typeof*='mw:Image'] {
                float: left;
        }
 
+       &.mw-halign-none {
+               margin: 0;
+               clear: none;
+               float: none;
+       }
+
        &.mw-halign-center {
                margin: 0 auto .5em auto;
                display: table;
@@ -95,7 +105,6 @@ figure[typeof~='mw:Image/Frame'] {
        display: table;
        overflow: auto;
        text-align: center;
-       padding: 3px;
        border: 1px solid #ccc;
        border-bottom: 0; // No border to caption
        border-collapse: collapse;
@@ -111,7 +120,7 @@ figure[typeof~='mw:Image/Thumb'] > *:first-child > img,
 figure[typeof~='mw:Image/Frame'] > *:first-child > img,
 .mw-image-border > *:first-child > img {
        border: 1px solid #cccccc;
-       margin: 4px;
+       margin: 3px;
 }
 
 /* Hide the caption for frameless and plain floated images */
index a805f3e..a30a15d 100644 (file)
@@ -5,3 +5,7 @@
 label[for="mw-input-wpConfirm"] {
        font-weight: bold;
 }
+
+tr.mw-block-hideuser {
+       font-weight: bold;
+}
index eb7072c..7ac8154 100644 (file)
@@ -27,11 +27,6 @@ table.mw-allpages-table-form tr {
        vertical-align: top;
 }
 
-/* Special:Block */
-tr.mw-block-hideuser {
-       font-weight: bold;
-}
-
 /* Special:BlockList */
 table.mw-blocklist span.mw-usertoollinks,
 span.mw-blocklist-actions {
@@ -71,173 +66,6 @@ td#mw-prefixindex-nav-form {
        text-align: right;
 }
 
-
-/* Special:Search */
-.searchresults {
-}
-
-.searchresults p {
-       margin-left: 0.4em;
-       margin-top: 1em;
-       margin-bottom: 1.2em;
-}
-div.searchresult {
-       font-size: 95%;
-       width: 38em;
-}
-.mw-search-results {
-       margin-left: 0.4em;
-}
-.mw-search-results li {
-       padding-bottom: 1.2em;
-       list-style: none;
-       list-style-image: none;
-}
-.mw-search-results li a {
-       font-size: 108%;
-}
-.mw-search-result-data {
-       color: green;
-       font-size: 97%;
-}
-.mw-search-formheader {
-       background-color: #f3f3f3;
-       margin-top: 1em;
-       border: 1px solid silver;
-}
-.mw-search-formheader div.search-types {
-       float: left;
-       padding-left: 0.25em;
-}
-.mw-search-formheader div.search-types ul {
-       margin: 0 !important;
-       padding: 0 !important;
-       list-style: none !important;
-}
-.mw-search-formheader div.search-types ul li {
-       float: left;
-       margin: 0;
-       padding: 0;
-}
-.mw-search-formheader div.search-types ul li a {
-       display: block;
-       padding: 0.5em;
-}
-.mw-search-formheader div.search-types ul li.current a {
-       color: #333333;
-       cursor: default;
-}
-.mw-search-formheader div.search-types ul li.current a:hover {
-       text-decoration: none;
-}
-.mw-search-formheader div.results-info {
-       float: right;
-       padding: 0.5em;
-       padding-right: 0.75em;
-}
-.mw-search-formheader div.results-info ul {
-       margin: 0 !important;
-       padding: 0 !important;
-       list-style: none !important;
-}
-.mw-search-formheader div.results-info ul li {
-       float: right;
-       margin: 0;
-       padding: 0;
-}
-fieldset#mw-searchoptions {
-       margin: 0;
-       padding: 0.5em 0.75em 0.75em 0.75em !important;
-       border: none;
-       background-color: #f9f9f9;
-       border: 1px solid silver !important;
-       border-top-width: 0 !important;
-}
-fieldset#mw-searchoptions legend {
-       display: none;
-}
-fieldset#mw-searchoptions h4 {
-       padding: 0;
-       margin: 0;
-       float: left;
-}
-fieldset#mw-searchoptions div#mw-search-togglebox {
-       float: right;
-}
-fieldset#mw-searchoptions div#mw-search-togglebox label {
-       margin-right: 0.25em;
-}
-fieldset#mw-searchoptions div#mw-search-togglebox input {
-       margin-left: 0.25em;
-}
-fieldset#mw-searchoptions table {
-       float: left;
-       margin-right: 3em;
-}
-fieldset#mw-searchoptions table td {
-       padding-right: 1em;
-}
-fieldset#mw-searchoptions div.divider {
-       clear: both;
-       border-bottom: 1px solid #DDDDDD;
-       padding-top: 0.5em;
-       margin-bottom: 0.5em;
-}
-td#mw-search-menu {
-       padding-left:6em;
-       font-size:85%;
-}
-div#mw-search-interwiki {
-       float: right;
-       width: 18em;
-       border: 1px solid #AAAAAA;
-       margin-top: 2ex;
-}
-div#mw-search-interwiki li {
-       font-size: 95%;
-}
-.mw-search-interwiki-more {
-       float: right;
-       font-size: 90%;
-}
-div#mw-search-interwiki-caption {
-       text-align: center;
-       font-weight: bold;
-       font-size: 95%;
-}
-.mw-search-interwiki-project {
-       font-size: 97%;
-       text-align: left;
-       padding: 0.15em 0.15em 0.2em 0.2em;
-       background-color: #ececec;
-       border-top: 1px solid #BBBBBB;
-}
-span.searchalttitle {
-       font-size: 95%;
-}
-div.searchdidyoumean {
-       font-size: 127%;
-       margin-top: 0.8em;
-       /* Note that this color won't affect the link, as desired. */
-       color: #c00;
-}
-div.searchdidyoumean em {
-       font-weight: bold;
-}
-.searchmatch {
-       font-weight: bold;
-}
-/* Advanced PowerSearch box */
-td#mw-search-togglebox {
-       text-align: right;
-}
-table#mw-search-powertable {
-       width: 100%;
-}
-form#powersearch {
-       clear: both;
-}
-
 /* Special:Specialpages */
 .mw-specialpagerestricted {
        font-weight: bold;
diff --git a/resources/src/mediawiki.special/mediawiki.special.pageLanguage.js b/resources/src/mediawiki.special/mediawiki.special.pageLanguage.js
new file mode 100644 (file)
index 0000000..ba7f734
--- /dev/null
@@ -0,0 +1,9 @@
+( function ( $ ) {
+       $( document ).ready( 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 );
+               } );
+       } );
+} ( jQuery ) );
index f6ed82c..ef95507 100644 (file)
@@ -1,3 +1,5 @@
+/* Special:Search */
+
 /*
  * Fixes sister projects box moving down the extract
  * of the first result (bug #16886).
 .searchresult {
        display: inline !ie;
 }
+.searchresults {
+}
+.searchresults p {
+       margin-left: 0.4em;
+       margin-top: 1em;
+       margin-bottom: 1.2em;
+}
+div.searchresult {
+       font-size: 95%;
+       width: 38em;
+}
+.mw-search-results {
+       margin-left: 0.4em;
+}
+.mw-search-results li {
+       padding-bottom: 1.2em;
+       list-style: none;
+       list-style-image: none;
+}
+.mw-search-results li a {
+       font-size: 108%;
+}
+.mw-search-result-data {
+       color: green;
+       font-size: 97%;
+}
+.mw-search-formheader {
+       background-color: #f3f3f3;
+       margin-top: 1em;
+       border: 1px solid silver;
+}
+.mw-search-formheader div.search-types {
+       float: left;
+       padding-left: 0.25em;
+}
+.mw-search-formheader div.search-types ul {
+       margin: 0 !important;
+       padding: 0 !important;
+       list-style: none !important;
+}
+.mw-search-formheader div.search-types ul li {
+       float: left;
+       margin: 0;
+       padding: 0;
+}
+.mw-search-formheader div.search-types ul li a {
+       display: block;
+       padding: 0.5em;
+}
+.mw-search-formheader div.search-types ul li.current a {
+       color: #333333;
+       cursor: default;
+}
+.mw-search-formheader div.search-types ul li.current a:hover {
+       text-decoration: none;
+}
+#mw-search-top-table div.results-info {
+       float: right;
+       padding: 0.5em;
+       padding-right: 0.75em;
+       color: #666;
+       font-size: 95%;
+}
+
+fieldset#mw-searchoptions {
+       margin: 0;
+       padding: 0.5em 0.75em 0.75em 0.75em !important;
+       border: none;
+       background-color: #f9f9f9;
+       border: 1px solid silver !important;
+       border-top-width: 0 !important;
+}
+fieldset#mw-searchoptions legend {
+       display: none;
+}
+fieldset#mw-searchoptions h4 {
+       padding: 0;
+       margin: 0;
+       float: left;
+}
+fieldset#mw-searchoptions div#mw-search-togglebox {
+       float: right;
+}
+fieldset#mw-searchoptions div#mw-search-togglebox label {
+       margin-right: 0.25em;
+}
+fieldset#mw-searchoptions div#mw-search-togglebox input {
+       margin-left: 0.25em;
+}
+fieldset#mw-searchoptions table {
+       float: left;
+       margin-right: 3em;
+}
+fieldset#mw-searchoptions table td {
+       padding-right: 1em;
+       white-space: nowrap;
+}
+fieldset#mw-searchoptions div.divider {
+       clear: both;
+       border-bottom: 1px solid #DDDDDD;
+       padding-top: 0.5em;
+       margin-bottom: 0.5em;
+}
+td#mw-search-menu {
+       padding-left:6em;
+       font-size:85%;
+}
+div#mw-search-interwiki {
+       float: right;
+       width: 18em;
+       border: 1px solid #AAAAAA;
+       margin-top: 2ex;
+}
+div#mw-search-interwiki li {
+       font-size: 95%;
+}
+.mw-search-interwiki-more {
+       float: right;
+       font-size: 90%;
+}
+div#mw-search-interwiki-caption {
+       text-align: center;
+       font-weight: bold;
+       font-size: 95%;
+}
+.mw-search-interwiki-project {
+       font-size: 97%;
+       text-align: left;
+       padding: 0.15em 0.15em 0.2em 0.2em;
+       background-color: #ececec;
+       border-top: 1px solid #BBBBBB;
+}
+span.searchalttitle {
+       font-size: 95%;
+}
+div.searchdidyoumean {
+       font-size: 127%;
+       margin-top: 0.8em;
+       /* Note that this color won't affect the link, as desired. */
+       color: #c00;
+}
+div.searchdidyoumean em {
+       font-weight: bold;
+}
+.searchmatch {
+       font-weight: bold;
+}
+/* Advanced PowerSearch box */
+td#mw-search-togglebox {
+       text-align: right;
+}
+table#mw-search-powertable {
+       width: 100%;
+}
+form#powersearch {
+       clear: both;
+}
index 78b0b33..dce4cd0 100644 (file)
@@ -49,7 +49,6 @@
        // Content styling
        text-align: center;
        font-weight: bold;
-       text-shadow: 0 1px rgba(0, 0, 0, .1);
 
        // Interaction styling
        cursor: pointer;
index ee21932..6c40c26 100644 (file)
 //
 // Markup:
 // <form class="mw-ui-vform">
-//   <div class="mw-ui-vform-div">This is a form example.</div>
-//   <div class="mw-ui-vform-div">
+//   <div class="mw-ui-vform-field">This is a form example.</div>
+//   <div class="mw-ui-vform-field">
 //     <label>Username </label>
 //     <input value="input">
 //   </div>
-//   <div>
+//   <div class="mw-ui-vform-field">
 //     <button class="mw-ui-button mw-ui-constructive">Button in vform</button>
 //   </div>
 // </form>
 
        width: @defaultFormWidth;
 
-       // Immediate divs in a vform are block and spaced-out.
-       // XXX: We shouldn't depend on the tag name here...
-       & > div {
-               display: block;
-               margin: 0 0 15px 0;
-               padding: 0;
-               width: 100%;
-       }
-
        // MW currently doesn't use the type attribute everywhere on inputs.
        input,
        select,
        //   <div class="error">
        //     <ul><li>There are problems with some of your input.</li></ul>
        //   </div>
-       //   <div class="mw-ui-vform-div">
+       //   <div class="mw-ui-vform-field">
        //     <input type="text" value="input" class="mw-ui-input">
        //   </div>
-       //   <div class="mw-ui-vform-div">
+       //   <div class="mw-ui-vform-field">
        //     <select>
        //       <option value="1">Option 1</option>
        //       <option value="2">Option 2</option>
        //     </select>
        //     <span class="error">The value you specified is not a valid option.</span>
        //   </div>
-       //   <div>
+       //   <div class="mw-ui-vform-field">
        //     <button class="mw-ui-button">Button in vform</button>
        //   </div>
        // </form>
        // This specifies styling for individual field validation error messages.
        // Show them below the fields to prevent line break glitches, and leave
        // some space between the field and the error message box.
-       .mw-ui-vform-div .error {
+       .mw-ui-vform-div .error, /* for backwards-compatibility, remove before 1.24 */
+       .mw-ui-vform-field .error {
                display: block;
                margin-top: 5px;
        }
 // Elements
 // --------------------------------------------------------------------------
 
-// Apply this to individual elements to style them.
-// You generally don't need to use this class on divs within an Agora
-// form container such as mw-ui-vform
-// XXX DRY: This repeats earlier styling, use an @include agora-div-styling ?
-// XXX: What is this even for?
-.mw-ui-vform-div {
+// A wrapper for a single form field: the <input> / <select> / <button> element,
+// help text, labels, associated error/warning/success messages, and so on.
+// Elements with this class are generated by HTMLFormField in core MediaWiki.
+//
+// (We use a broad definition of 'field' here: a purely textual information
+// block is also a "field".)
+.mw-ui-vform-div, /* for backwards-compatibility, remove before 1.24 */
+.mw-ui-vform-field {
        display: block;
        margin: 0 0 15px;
        padding: 0;
index 52dbb05..9759f63 100644 (file)
@@ -52,6 +52,7 @@
        border: 1px solid @bgColor;
        border-left: none;
        border-right: none;
+       text-shadow: 0 1px rgba(0, 0, 0, .1);
 
        &:disabled {
                background: @colorGrayLight;
index e160579..6533db1 100644 (file)
 
                        this.displaySubmitting();
 
-                       this.api.newSection( this.title, subject, message, ok, err );
+                       this.api.newSection( this.title, subject, message ).done( ok ).fail( err );
                },
 
                /**
index 62fa410..eda7689 100644 (file)
                                return;
                        } catch ( e ) {}
                        try {
-                               console.log( $.toJSON( data, null, 2 ) );
+                               console.log( JSON.stringify( data, null, 2 ) );
                                return;
                        } catch ( e ) {}
                        mw.log( data );
index c1f1844..12888bd 100644 (file)
                                                } catch ( e ) {
                                                        // A user-defined callback raised an exception.
                                                        // Swallow it to protect our state machine!
-                                                       log( 'Exception thrown by job.error', e );
+                                                       log( 'Exception thrown by user callback', e );
                                                }
                                        }
                                }
index a314dcb..a214cb3 100644 (file)
@@ -22,8 +22,9 @@
                        konqueror: [['>=', '4.11']],
                        docomo: false,
                        blackberry: false,
-                       ipod: false,
-                       iphone: false
+                       // Support for iOS 6 or higher. It has not been tested on iOS 5 or lower
+                       ipod: [['>=', 6]],
+                       iphone: [['>=', 6]]
                };
 
                if ( !$.client.test( map ) ) {
index a35670e..1a9569f 100644 (file)
@@ -1,9 +1,5 @@
-*/
-!common/
-!common/*
-!monobook/
-!monobook/*
-!vector/
-!vector/*
-
-*.php
+/*
+!/common/
+!/MonoBook/
+!/Vector/
+!/.gitignore
diff --git a/skins/MonoBook/i18n/aln.json b/skins/MonoBook/i18n/aln.json
new file mode 100644 (file)
index 0000000..b853dde
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Bresta"
+               ]
+       },
+       "monobook.css": "/* CSS i vednosun këtu ka me i prekë shfrytëzuesit e dukjes Monobook */",
+       "monobook.js": "/* Çdo JavaScript këtu ka me u ngarkue për shfrytëzuesit që përdorin dukjen MonoBook */"
+}
diff --git a/skins/MonoBook/i18n/an.json b/skins/MonoBook/i18n/an.json
new file mode 100644 (file)
index 0000000..f635897
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Juanpabl"
+               ]
+       },
+       "skinname-monobook": "MonoBook",
+       "monobook.css": "/* Os estilos CSS colocaus aquí s'aplicarán ta totz os usuarios que faigan servir l'apariencia Monobook */",
+       "monobook.js": "/* O codigo Javascript que se meta aquí será cargau por os usuarios faigan servir l'apariencia MonoBook */"
+}
diff --git a/skins/MonoBook/i18n/ar.json b/skins/MonoBook/i18n/ar.json
new file mode 100644 (file)
index 0000000..05cad21
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Meno25"
+               ]
+       },
+       "skinname-monobook": "مونوبوك",
+       "monobook.css": "/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة مونوبوك */",
+       "monobook.js": "/* أي جافاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة مونوبوك */"
+}
diff --git a/skins/MonoBook/i18n/arz.json b/skins/MonoBook/i18n/arz.json
new file mode 100644 (file)
index 0000000..a49f003
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Meno25"
+               ]
+       },
+       "skinname-monobook": "مونوبوك",
+       "monobook.css": "/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمى واجهة مونوبوك */",
+       "monobook.js": "/* أى جافاسكريبت هنا ح تتحمل لليوزرز اللى بيستعملو واجهة مونوبوك */"
+}
diff --git a/skins/MonoBook/i18n/ast.json b/skins/MonoBook/i18n/ast.json
new file mode 100644 (file)
index 0000000..d007deb
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Xuacu"
+               ]
+       },
+       "monobook.css": "/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu Monobook */",
+       "monobook.js": "/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu MonoBook */"
+}
diff --git a/skins/MonoBook/i18n/az.json b/skins/MonoBook/i18n/az.json
new file mode 100644 (file)
index 0000000..55b33d8
--- /dev/null
@@ -0,0 +1,11 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Vago",
+                       "Vugar 1981"
+               ]
+       },
+       "skinname-monobook": "MonoBook",
+       "monobook.css": "/* Burada yerləşən CSS Monobook skin istifadəçilərinə tətbiq olunur */",
+       "monobook.js": "/* Burada MonoBook skin istifadəçiləri üçün istənilən JavaScript yüklənəcək */"
+}
diff --git a/skins/MonoBook/i18n/bcc.json b/skins/MonoBook/i18n/bcc.json
new file mode 100644 (file)
index 0000000..9732382
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Mostafadaneshvar"
+               ]
+       },
+       "skinname-monobook": "منوبوک",
+       "monobook.css": "/* CSS که اداننت کابران پوست مونوبوک تاثیر کننت */",
+       "monobook.js": "/* جاوا اسکریپت ادان فقط په کابرانی که چه پوست منوبوک استفاده کننت بار بیت. */"
+}
diff --git a/skins/MonoBook/i18n/bcl.json b/skins/MonoBook/i18n/bcl.json
new file mode 100644 (file)
index 0000000..1ef08f2
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Filipinayzd"
+               ]
+       },
+       "monobook.css": "/* an CSS na pigbugtak digdi makakaapektar sa mga parágamit kan Monobook skin */",
+       "monobook.js": "/* Deprecado; gamiton an [[MediaWiki:common.js]] */"
+}
diff --git a/skins/MonoBook/i18n/be-tarask.json b/skins/MonoBook/i18n/be-tarask.json
new file mode 100644 (file)
index 0000000..7704a41
--- /dev/null
@@ -0,0 +1,3 @@
+{
+       "skinname-monobook": "Монакніга"
+}
diff --git a/skins/MonoBook/i18n/be.json b/skins/MonoBook/i18n/be.json
new file mode 100644 (file)
index 0000000..a3a20e5
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Yury Tarasievich"
+               ]
+       },
+       "skinname-monobook": "Манабук",
+       "monobook.css": "/* CSS, упісаны сюды, будзе дзейнічаць на браўзер кожнага чытача з актыўнай світай Monobook */",
+       "monobook.js": "/* Any JavaScript here will be loaded for users using the MonoBook skin */"
+}
diff --git a/skins/MonoBook/i18n/bg.json b/skins/MonoBook/i18n/bg.json
new file mode 100644 (file)
index 0000000..f3e91dd
--- /dev/null
@@ -0,0 +1,5 @@
+{
+       "skinname-monobook": "Монобук",
+       "monobook.css": "/* Чрез редактиране на този файл можете да промените облика Монобук */",
+       "monobook.js": "/* Остаряла страница; използвайте [[MediaWiki:Common.js]] */"
+}
diff --git a/skins/MonoBook/i18n/bn.json b/skins/MonoBook/i18n/bn.json
new file mode 100644 (file)
index 0000000..d6a4112
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Aftab1995"
+               ]
+       },
+       "skinname-monobook": "মনোবুক"
+}
diff --git a/skins/MonoBook/i18n/br.json b/skins/MonoBook/i18n/br.json
new file mode 100644 (file)
index 0000000..2ba630f
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Fulup"
+               ]
+       },
+       "skinname-monobook": "MonoBook",
+       "monobook.css": "/* Talvezout a raio ar CSS lakaet amañ evit implijerien ar gwiskadur Monobook */",
+       "monobook.js": "/* Kement JavaScript amañ a vo karget evit an implijerien a ra gant ar gwiskadur MonoBook */"
+}
diff --git a/skins/MonoBook/i18n/bs.json b/skins/MonoBook/i18n/bs.json
new file mode 100644 (file)
index 0000000..ddecc4c
--- /dev/null
@@ -0,0 +1,11 @@
+{
+       "@metadata": {
+               "authors": [
+                       "CERminator",
+                       "Kal-El"
+               ]
+       },
+       "skinname-monobook": "MonoKnjiga",
+       "monobook.css": "/* CSS umetnut ovdje uticat će na korisnike koji koriste Monobook skin */",
+       "monobook.js": "/* Bilo koja JavaScript će biti učitana za sve korisnike koji koriste MonoBook skin */"
+}
diff --git a/skins/MonoBook/i18n/ca.json b/skins/MonoBook/i18n/ca.json
new file mode 100644 (file)
index 0000000..8674693
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Martorell"
+               ]
+       },
+       "monobook.css": "/* Editeu aquest fitxer per personalitzar l'aparença del monobook per a tot el lloc sencer */"
+}
diff --git a/skins/MonoBook/i18n/ce.json b/skins/MonoBook/i18n/ce.json
new file mode 100644 (file)
index 0000000..61515a8
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Умар"
+               ]
+       },
+       "monobook.css": "/* Чуйиллина йолу кхузе CSS хир ю лелош масхьа Monobook чохь */",
+       "monobook.js": "/* Кхузе чу язийна йолу JavaScript код, чу ера ю, массо MonoBook хатl лелош болу декъашхошна */"
+}
diff --git a/skins/MonoBook/i18n/ckb.json b/skins/MonoBook/i18n/ckb.json
new file mode 100644 (file)
index 0000000..2c42db2
--- /dev/null
@@ -0,0 +1,3 @@
+{
+       "skinname-monobook": "مۆنۆ"
+}
diff --git a/skins/MonoBook/i18n/crh-cyrl.json b/skins/MonoBook/i18n/crh-cyrl.json
new file mode 100644 (file)
index 0000000..b11125e
--- /dev/null
@@ -0,0 +1,4 @@
+{
+       "skinname-monobook": "MonoBook",
+       "monobook.css": "/* monobook темасынынъ аярларыны (настройкаларыны) денъиштирмек ичюн бу ерини денъиштиринъиз. Бутюн сайтта тесирли олур. */"
+}
diff --git a/skins/MonoBook/i18n/crh-latn.json b/skins/MonoBook/i18n/crh-latn.json
new file mode 100644 (file)
index 0000000..c8f2540
--- /dev/null
@@ -0,0 +1,4 @@
+{
+       "skinname-monobook": "MonoBook",
+       "monobook.css": "/* monobook temasınıñ ayarlarını (nastroykalarını) deñiştirmek içün bu yerini deñiştiriñiz. Bütün saytta tesirli olur. */"
+}
diff --git a/skins/MonoBook/i18n/cs.json b/skins/MonoBook/i18n/cs.json
new file mode 100644 (file)
index 0000000..62fcddd
--- /dev/null
@@ -0,0 +1,12 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Danny B.",
+                       "Li-sung",
+                       "Mormegil"
+               ]
+       },
+       "monobook-desc": "Klasický vzhled MediaWiki od roku 2004, pojmenovaný po černobílé fotografii knihy v pozadí stránky",
+       "monobook.css": "/* Zde uvedené CSS bude ovlivňovat pouze styl „Monobook“ */",
+       "monobook.js": "/* JavaScript pro uživatele používající vzhled MonoBook */"
+}
diff --git a/skins/MonoBook/i18n/da.json b/skins/MonoBook/i18n/da.json
new file mode 100644 (file)
index 0000000..e20dbb6
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Peter Alberti"
+               ]
+       },
+       "skinname-monobook": "MonoBook",
+       "monobook.css": "/** CSS inkluderet her vil være aktivt for brugere af Monobook-temaet . */",
+       "monobook.js": "/* JavaScript i denne fil vil indlæses for brugere af udseendet MonoBook */"
+}
diff --git a/skins/MonoBook/i18n/de.json b/skins/MonoBook/i18n/de.json
new file mode 100644 (file)
index 0000000..047b91d
--- /dev/null
@@ -0,0 +1,12 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Geitost",
+                       "Metalhead64"
+               ]
+       },
+       "skinname-monobook": "MonoBook",
+       "monobook-desc": "Ergänzt die klassische MediaWiki-Benutzeroberfläche seit 2004, benannt nach dem Schwarzweißfoto eines Buches im Seitenhintergrund",
+       "monobook.css": "/* Das folgende CSS wird für Benutzer der MonoBook-Benutzeroberfläche geladen */",
+       "monobook.js": "/* Das folgende JavaScript wird für Benutzer der Monobook-Benutzeroberfläche geladen. */"
+}
diff --git a/skins/MonoBook/i18n/diq.json b/skins/MonoBook/i18n/diq.json
new file mode 100644 (file)
index 0000000..ca9696d
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Erdemaslancan"
+               ]
+       },
+       "skinname-monobook": "MonoBook"
+}
diff --git a/skins/MonoBook/i18n/dsb.json b/skins/MonoBook/i18n/dsb.json
new file mode 100644 (file)
index 0000000..6731b7b
--- /dev/null
@@ -0,0 +1,11 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Michawiki",
+                       "Nepl1"
+               ]
+       },
+       "skinname-monobook": "MonoBook",
+       "monobook.css": "/* How zaměstnjony CSS wustatkujo se na wužywarje monobook-šata */",
+       "monobook.js": "/* Slědujucy JavaScript zacytajo se za wužywarjow, kótarež skin MonoBook wužywaju */"
+}
diff --git a/skins/MonoBook/i18n/el.json b/skins/MonoBook/i18n/el.json
new file mode 100644 (file)
index 0000000..1e7f7b8
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Dead3y3"
+               ]
+       },
+       "monobook.css": "/* Το τοποθετημένο εδώ CSS θα επηρεάσει χρήστες του Monobook skin */",
+       "monobook.js": "/* Οποιοσδήποτε κώδικας JavaScript εδώ θα φορτωθεί για χρήστες που χρησιμοποιούν το MonoBook skin */"
+}
diff --git a/skins/MonoBook/i18n/eo.json b/skins/MonoBook/i18n/eo.json
new file mode 100644 (file)
index 0000000..170286a
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Objectivesea"
+               ]
+       },
+       "skinname-monobook": "Librejo",
+       "monobook.css": "/* La jena CSS influos la paĝaspekton por uzantoj de la Libreja temo. */",
+       "monobook.js": "/* La jena Ĝavaskripto ŝargiĝos por uzantoj de la Libreja temo. */"
+}
diff --git a/skins/MonoBook/i18n/es.json b/skins/MonoBook/i18n/es.json
new file mode 100644 (file)
index 0000000..48d424c
--- /dev/null
@@ -0,0 +1,13 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Sanbec",
+                       "Vivaelcelta",
+                       "Fitoschido"
+               ]
+       },
+       "skinname-monobook": "MonoBook",
+       "monobook-desc": "El tema clásico de MediaWiki desde 2004, cuyo nombre viene de la foto en blanco y negro de un libro en el fondo",
+       "monobook.css": "/* El CSS colocado en esta página afectará a los usuarios que usen la apariencia \"MonoBook\" */",
+       "monobook.js": "/* El código JavaScript que se ponga aquí será cargado por los usuarios de la apariencia MonoBook */"
+}
diff --git a/skins/MonoBook/i18n/et.json b/skins/MonoBook/i18n/et.json
new file mode 100644 (file)
index 0000000..591acff
--- /dev/null
@@ -0,0 +1,3 @@
+{
+       "skinname-monobook": "MonoBook"
+}
diff --git a/skins/MonoBook/i18n/eu.json b/skins/MonoBook/i18n/eu.json
new file mode 100644 (file)
index 0000000..a5f8c39
--- /dev/null
@@ -0,0 +1,3 @@
+{
+       "monobook.css": "/* Hemen idatzitako CSS kodeak Monobook itxuran bakarrik izango du eragina */"
+}
diff --git a/skins/MonoBook/i18n/ext.json b/skins/MonoBook/i18n/ext.json
new file mode 100644 (file)
index 0000000..70d9567
--- /dev/null
@@ -0,0 +1,3 @@
+{
+       "monobook.js": "/* Antigu; gasta [[MediaWiki:common.js]] */"
+}
diff --git a/skins/MonoBook/i18n/fa.json b/skins/MonoBook/i18n/fa.json
new file mode 100644 (file)
index 0000000..02a0185
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Reza1615"
+               ]
+       },
+       "skinname-monobook": "مونوبوک",
+       "monobook-desc": "پوسته کلاسیک مدیاویکی از سال ۲۰۰۴ از عکس سیاه و سفید در زمینه صفحه  کتاب نام گرفت",
+       "monobook.css": "/* دستورات این بخش کاربرانی را که از پوستهٔ مونوبوک استفاده کنند تحت تاثیر قرار می‌دهند. */"
+}
diff --git a/skins/MonoBook/i18n/fi.json b/skins/MonoBook/i18n/fi.json
new file mode 100644 (file)
index 0000000..f516bdd
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Crt"
+               ]
+       },
+       "skinname-monobook": "Monobook",
+       "monobook.css": "/* Tämä sivu sisältää Monobook-ulkoasua muuttavia tyylejä. */",
+       "monobook.js": "/* Tämän sivun JavaScript-koodi liitetään Monobook-tyyliin */"
+}
diff --git a/skins/MonoBook/i18n/fr.json b/skins/MonoBook/i18n/fr.json
new file mode 100644 (file)
index 0000000..cedbebb
--- /dev/null
@@ -0,0 +1,12 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Gomoko",
+                       "Verdy p"
+               ]
+       },
+       "skinname-monobook": "Monobook",
+       "monobook-desc": "L’habillage classique de MédiaWiki depuis 2004, nommé d’après la photo en noir et blanc d’un livre dans l’arrière-plan de la page",
+       "monobook.css": "/* Le CSS placé ici affectera les utilisateurs de l’habillage Monobook. */",
+       "monobook.js": "/* Tout JavaScript ici sera chargé avec les pages accédées par les utilisateurs de l’habillage MonoBook uniquement. */"
+}
diff --git a/skins/MonoBook/i18n/frp.json b/skins/MonoBook/i18n/frp.json
new file mode 100644 (file)
index 0000000..06a705a
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "ChrisPtDe"
+               ]
+       },
+       "skinname-monobook": "MonoBook",
+       "monobook.css": "/* Lo code CSS betâ ique afècterat los usanciérs de l’habelyâjo « MonoBook ». */",
+       "monobook.js": "/* Tot code JavaScript betâ ique serat chargiê per los usanciérs de l’habelyâjo « MonoBook ». */"
+}
diff --git a/skins/MonoBook/i18n/fur.json b/skins/MonoBook/i18n/fur.json
new file mode 100644 (file)
index 0000000..87c1f2c
--- /dev/null
@@ -0,0 +1,3 @@
+{
+       "monobook.css": "/* modifiche chest file par personalizâ la skin monobook par dut il sît */"
+}
diff --git a/skins/MonoBook/i18n/ga.json b/skins/MonoBook/i18n/ga.json
new file mode 100644 (file)
index 0000000..695a952
--- /dev/null
@@ -0,0 +1,4 @@
+{
+       "skinname-monobook": "MonoBook",
+       "monobook.css": "/* athraigh an comhad seo chun an craiceann MonoBook a athrú don suíomh ar fad */"
+}
diff --git a/skins/MonoBook/i18n/gan-hans.json b/skins/MonoBook/i18n/gan-hans.json
new file mode 100644 (file)
index 0000000..bed9f08
--- /dev/null
@@ -0,0 +1,4 @@
+{
+       "monobook.css": "/* 个首𠮶 CSS 会碍到正用Monobook皮肤𠮶用户 */",
+       "monobook.js": "/* 伓再使用;请用[[MediaWiki:common.js]] */"
+}
diff --git a/skins/MonoBook/i18n/gan-hant.json b/skins/MonoBook/i18n/gan-hant.json
new file mode 100644 (file)
index 0000000..4c98663
--- /dev/null
@@ -0,0 +1,4 @@
+{
+       "monobook.css": "/* 箇首嗰 CSS 會礙到正用Monobook皮膚嗰用戶 */",
+       "monobook.js": "/* 伓再使用;請用[[MediaWiki:common.js]] */"
+}
diff --git a/skins/MonoBook/i18n/gd.json b/skins/MonoBook/i18n/gd.json
new file mode 100644 (file)
index 0000000..f5bd154
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "GunChleoc"
+               ]
+       },
+       "monobook-desc": "Craiceann MediaWiki clasaigeach o 2004 a chaidh ainmeachadh a-rèir dealbh de leabhar ann an dubh 's geal air cùlaibh nan duilleagan"
+}
diff --git a/skins/MonoBook/i18n/gl.json b/skins/MonoBook/i18n/gl.json
new file mode 100644 (file)
index 0000000..2e61ad3
--- /dev/null
@@ -0,0 +1,11 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Toliño",
+                       "Xosé"
+               ]
+       },
+       "skinname-monobook": "MonoBook",
+       "monobook.css": "/* O CSS que se coloque aquí afectará a quen use a aparencia Monobook */",
+       "monobook.js": "/* Calquera JavaScript que haxa aquí será cargado para os usuarios que usen a aparencia MonoBook */"
+}
diff --git a/skins/MonoBook/i18n/hak.json b/skins/MonoBook/i18n/hak.json
new file mode 100644 (file)
index 0000000..3253509
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Hakka"
+               ]
+       },
+       "monobook.css": "/* Chhṳ́-chhu ke CSS chiông-voi yáng-hióng sṳ́-yung Monobook mien-pán ke yung-fu */",
+       "monobook.js": "/* Yí-kîn put-chai sṳ́-yung; chhiáng-yung [[MediaWiki:common.js]] */"
+}
diff --git a/skins/MonoBook/i18n/he.json b/skins/MonoBook/i18n/he.json
new file mode 100644 (file)
index 0000000..89bfb40
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Rotemliss"
+               ]
+       },
+       "skinname-monobook": "מונובוק",
+       "monobook.css": "/* הסגנונות הנכתבים כאן ישפיעו על העיצוב MonoBook בלבד */",
+       "monobook.js": "/* כל סקריפט JavaScript שנכתב כאן ירוץ רק עבור המשתמשים בעיצוב Monobook */"
+}
diff --git a/skins/MonoBook/i18n/hi.json b/skins/MonoBook/i18n/hi.json
new file mode 100644 (file)
index 0000000..33e527b
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Kaustubh",
+                       "Siddhartha Ghai"
+               ]
+       },
+       "monobook.css": "/* यहां रखी गई css मोनोबुक त्वचा का इस्तेमाल करने वाले सभी सदस्योंपर असर करेगी */",
+       "monobook.js": "/* यहाँ पर दी गई जावास्क्रिप्ट मोनोबुक त्वचा का प्रयोग कर रहे सदस्यों के लिए लोड होगी */"
+}
diff --git a/skins/MonoBook/i18n/hr.json b/skins/MonoBook/i18n/hr.json
new file mode 100644 (file)
index 0000000..a56acbd
--- /dev/null
@@ -0,0 +1,5 @@
+{
+       "skinname-monobook": "MonoBook",
+       "monobook.css": "/** Ovdje idu izmjene monobook stylesheeta */",
+       "monobook.js": "/* Ne rabi se više; molimo rabite [[MediaWiki:common.js]] */"
+}
diff --git a/skins/MonoBook/i18n/hsb.json b/skins/MonoBook/i18n/hsb.json
new file mode 100644 (file)
index 0000000..2ac24c7
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Michawiki"
+               ]
+       },
+       "skinname-monobook": "MonoBook",
+       "monobook.css": "/* CSS wobdźěłać, zo by so skin „monobook” za wšěčh wužiwarjow tutoho skina priměrił */",
+       "monobook.js": "/* Slědowacy JavaScript začita so za wužiwarjow, kotřiž šat MonoBook wužiwaja */"
+}
diff --git a/skins/MonoBook/i18n/hu.json b/skins/MonoBook/i18n/hu.json
new file mode 100644 (file)
index 0000000..07e3a10
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Dani"
+               ]
+       },
+       "skinname-monobook": "MonoBook",
+       "monobook.css": "/* Az ide elhelyezett CSS hatással lesz a Monobook felület használóira */",
+       "monobook.js": "/* A Monobook felületet használó szerkesztők számára betöltendő JavaScriptek */"
+}
diff --git a/skins/MonoBook/i18n/hy.json b/skins/MonoBook/i18n/hy.json
new file mode 100644 (file)
index 0000000..db1d72e
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Teak"
+               ]
+       },
+       "skinname-monobook": "ՄիաԳիրք",
+       "monobook.css": "/* Այստեղ տեղադրված CSS կոդը կկիրառվի Monobook տեսքի վրա*/",
+       "monobook.js": "/* Հնացած է. օգտագործեք [[MediaWiki:common.js]] */"
+}
diff --git a/skins/MonoBook/i18n/ia.json b/skins/MonoBook/i18n/ia.json
new file mode 100644 (file)
index 0000000..39a703c
--- /dev/null
@@ -0,0 +1,11 @@
+{
+       "@metadata": {
+               "authors": [
+                       "McDutchie"
+               ]
+       },
+       "skinname-monobook": "MonoBook",
+       "monobook-desc": "Le apparentia classic de MediaWiki depost 2004, nominate assi pro le imagine in nigro e blanco (\"mono\") de un libro (\"book\") in le fundo del pagina.",
+       "monobook.css": "/* Le CSS placiate hic afficera le usatores del apparentia MonoBook */",
+       "monobook.js": "/* Omne JavaScript hic se executara pro le usatores del apparentia MonoBook */"
+}
diff --git a/skins/MonoBook/i18n/id.json b/skins/MonoBook/i18n/id.json
new file mode 100644 (file)
index 0000000..83ce352
--- /dev/null
@@ -0,0 +1,11 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Iwan Novirion",
+                       "Rex"
+               ]
+       },
+       "skinname-monobook": "MonoBook",
+       "monobook.css": "/* CSS yang ada di sini akan diterapkan pada kulit Monobook. */",
+       "monobook.js": "/* Semua JavaScript di sini akan dimuatkan untuk para pengguna yang menggunakan kulit MonoBook */"
+}
diff --git a/skins/MonoBook/i18n/is.json b/skins/MonoBook/i18n/is.json
new file mode 100644 (file)
index 0000000..1539ae1
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "@metadata": {
+               "authors": [
+                       "לערי ריינהארט"
+               ]
+       },
+       "skinname-monobook": "EinBók",
+       "monobook.css": "/* Það sem sett er hingað er bætt við Monobook stilsniðið fyrir allan vefinn */"
+}
diff --git a/skins/MonoBook/i18n/it.json b/skins/MonoBook/i18n/it.json
new file mode 100644 (file)
index 0000000..ba87cd9
--- /dev/null
@@ -0,0 +1,11 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Beta16",
+                       "Darth Kule"
+               ]
+       },
+       "monobook-desc": "La skin classica di MediaWiki dal 2004, prende il nome dall'immagine in bianco e nero del libro usata come sfondo della pagina",
+       "monobook.css": "/* Gli stili CSS inseriti qui si applicano agli utenti che usano la skin Monobook */",
+       "monobook.js": "/* Il codice JavaScript inserito qui viene caricato dagli utenti che usano la skin MonoBook */"
+}
diff --git a/skins/MonoBook/i18n/ja.json b/skins/MonoBook/i18n/ja.json
new file mode 100644 (file)
index 0000000..dddc9f8
--- /dev/null
@@ -0,0 +1,11 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Fryed-peach",
+                       "青子守歌"
+               ]
+       },
+       "skinname-monobook": "モノブック",
+       "monobook.css": "/* ここに記述したCSSはモノブック外装の利用者に影響します */",
+       "monobook.js": "/* ここにあるすべてのJavaScriptは、モノブック外装を使用している利用者に対して読み込まれます */"
+}
diff --git a/skins/MonoBook/i18n/ka.json b/skins/MonoBook/i18n/ka.json
new file mode 100644 (file)
index 0000000..0b16b54
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Alsandro",
+                       "David1010"
+               ]
+       },
+       "skinname-monobook": "მონობუკი",
+       "monobook.css": "/* აქ ჩასმული CSS გავლენას იქონიებს Monobook ინტერფეისის მომხმარებლებზე */"
+}
diff --git a/skins/MonoBook/i18n/kk-arab.json b/skins/MonoBook/i18n/kk-arab.json
new file mode 100644 (file)
index 0000000..d37e014
--- /dev/null
@@ -0,0 +1,5 @@
+{
+       "skinname-monobook": "دارا كىتاپ (monobook)",
+       "monobook.css": "/* مىندا ورنالاستىرىلعان CSS تەك «دارا كىتاپ» (monobook) مانەرىن پايدالانۋشىلارىنا ىقپال ەتەدى */",
+       "monobook.js": "/* مىنداعى JavaScript تەك «دارا كىتاپ» (monobook) مانەرىن پايدالانۋشىلار ٴۇشىن جەگىلەدى */"
+}
diff --git a/skins/MonoBook/i18n/kk-cyrl.json b/skins/MonoBook/i18n/kk-cyrl.json
new file mode 100644 (file)
index 0000000..c964423
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Arystanbek"
+               ]
+       },
+       "skinname-monobook": "Жеке кітап (monobook)",
+       "monobook.css": "/* Мында орналастырылған CSS тек «Дара кітап» (monobook) мәнерін пайдаланушыларына ықпал етеді */",
+       "monobook.js": "/* Мындағы JavaScript тек «Дара кітап» (monobook) мәнерін пайдаланушылар үшін жегіледі */"
+}
diff --git a/skins/MonoBook/i18n/kk-latn.json b/skins/MonoBook/i18n/kk-latn.json
new file mode 100644 (file)
index 0000000..1bc6f64
--- /dev/null
@@ -0,0 +1,5 @@
+{
+       "skinname-monobook": "Dara kitap (monobook)",
+       "monobook.css": "/* Mında ornalastırılğan CSS tek «Dara kitap» (monobook) mänerin paýdalanwşılarına ıqpal etedi */",
+       "monobook.js": "/* Mındağı JavaScript tek «Dara kitap» (monobook) mänerin paýdalanwşılar üşin jegiledi */"
+}
diff --git a/skins/MonoBook/i18n/km.json b/skins/MonoBook/i18n/km.json
new file mode 100644 (file)
index 0000000..162e5a8
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "@metadata": {
+               "authors": [
+                       "វ័ណថារិទ្ធ"
+               ]
+       },
+       "skinname-monobook": "សៀវភៅឯក",
+       "monobook.css": "/* CSS បានដាក់ទីនេះនឹងមានអនុភាពលើអ្នកប្រើប្រាស់នៃសំបក Monobook */"
+}
diff --git a/skins/MonoBook/i18n/ko.json b/skins/MonoBook/i18n/ko.json
new file mode 100644 (file)
index 0000000..08886f4
--- /dev/null
@@ -0,0 +1,11 @@
+{
+       "@metadata": {
+               "authors": [
+                       "아라"
+               ]
+       },
+       "skinname-monobook": "모노북",
+       "monobook-desc": "문서 배경에서 책의 흑백 사진을 이른, 2004년 이후의 고전 미디어위키 스킨",
+       "monobook.css": "/* 이 CSS 설정은 모노북 스킨을 사용하는 사용자에게 적용됩니다 */",
+       "monobook.js": "/* 이 자바스크립트 설정은 모노북 스킨을 사용하는 사용자에게 적용됩니다 */"
+}
diff --git a/skins/MonoBook/i18n/krc.json b/skins/MonoBook/i18n/krc.json
new file mode 100644 (file)
index 0000000..2ec1410
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Къарачайлы"
+               ]
+       },
+       "skinname-monobook": "Моно-китаб"
+}
diff --git a/skins/MonoBook/i18n/ksh.json b/skins/MonoBook/i18n/ksh.json
new file mode 100644 (file)
index 0000000..6c8c810
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Purodha"
+               ]
+       },
+       "skinname-monobook": "MonoBoch",
+       "monobook.css": "/* CSS heh aan dä Stell wirrek nur op de Ovverflääsch „Monobooch“ */",
+       "monobook.js": "/* De JavaSkrippte fun hee krijje alle Sigge met de Ovverflääsch \"Monnobooch\" jescheck */"
+}
diff --git a/skins/MonoBook/i18n/ku-latn.json b/skins/MonoBook/i18n/ku-latn.json
new file mode 100644 (file)
index 0000000..7fb824a
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Krinkle"
+               ]
+       },
+       "monobook.css": "/* CSS placed here will affect users of the Monobook skin */"
+}
diff --git a/skins/MonoBook/i18n/lb.json b/skins/MonoBook/i18n/lb.json
new file mode 100644 (file)
index 0000000..95ba71a
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Robby"
+               ]
+       },
+       "skinname-monobook": "MonoBook",
+       "monobook-desc": "De klassesche Look vu MediaWiki zanter 2004, benannt no der Schwaarzwäissfoto vun engem Buch am Hannergrond vun der Säit",
+       "monobook.css": "/* Dës CSS huet nëmmen Afloss op de Skin ''Monobook''  */"
+}
diff --git a/skins/MonoBook/i18n/lt.json b/skins/MonoBook/i18n/lt.json
new file mode 100644 (file)
index 0000000..82ba416
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Garas"
+               ]
+       },
+       "skinname-monobook": "MonoBook",
+       "monobook.css": "/* Čia įdėtas CSS bus rodomas Monobook išvaizdos naudotojams */",
+       "monobook.js": "/* Šis JavaScript bus įkeltas tik „MonoBook“ išvaizdos naudotojams. */"
+}
diff --git a/skins/MonoBook/i18n/lzh.json b/skins/MonoBook/i18n/lzh.json
new file mode 100644 (file)
index 0000000..fd50ed7
--- /dev/null
@@ -0,0 +1,5 @@
+{
+       "skinname-monobook": "單書",
+       "monobook.css": "/* 此之 CSS 用於單書面之簿也 */",
+       "monobook.js": "/* 此之JavaScript將載於用單書面之簿 */"
+}
diff --git a/skins/MonoBook/i18n/mg.json b/skins/MonoBook/i18n/mg.json
new file mode 100644 (file)
index 0000000..ed7db66
--- /dev/null
@@ -0,0 +1,3 @@
+{
+       "monobook.css": "/* Ovay ity rakitra ity raha hampiasa takilan'angaly (stylesheet) anao manokana amin'ny wiki iray manontolo */"
+}
diff --git a/skins/MonoBook/i18n/min.json b/skins/MonoBook/i18n/min.json
new file mode 100644 (file)
index 0000000..2eb9001
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Iwan Novirion"
+               ]
+       },
+       "skinname-monobook": "MonoBook"
+}
diff --git a/skins/MonoBook/i18n/mk.json b/skins/MonoBook/i18n/mk.json
new file mode 100644 (file)
index 0000000..be8e280
--- /dev/null
@@ -0,0 +1,11 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Bjankuloski06"
+               ]
+       },
+       "skinname-monobook": "Монобук",
+       "monobook-desc": "Класичното руво на МедијаВики од 2004 г., наречена по црнобелата слика на книга во позадината",
+       "monobook.css": "/* Тука поставениот CSS ќе се применува врз корисниците на рувото „Монобук“ */",
+       "monobook.js": "/* Тука поставениот JavaScript  ќе им се вчитува на корисниците што го користат рувото „Монобук“ */"
+}
diff --git a/skins/MonoBook/i18n/ml.json b/skins/MonoBook/i18n/ml.json
new file mode 100644 (file)
index 0000000..606cf6c
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Praveenp"
+               ]
+       },
+       "skinname-monobook": "മോണോബുക്ക്",
+       "monobook.css": "/* ഇവിടെ നൽകുന്ന സി.എസ്.എസ്. മോണോബുക്ക് ദൃശ്യരൂപം ഉപയോഗിക്കുന്നവർക്ക് ബാധകമായിരിക്കും */",
+       "monobook.js": "/* ഇവിടെ നൽകുന്ന ജാവാസ്ക്രിപ്റ്റ് മോണോബുക്ക് ദൃശ്യരൂപം ഉപയോഗിക്കുന്നവർക്ക് ബാധകമായിരിക്കും */"
+}
diff --git a/skins/MonoBook/i18n/mr.json b/skins/MonoBook/i18n/mr.json
new file mode 100644 (file)
index 0000000..0700112
--- /dev/null
@@ -0,0 +1,3 @@
+{
+       "skinname-monobook": "मोनोबुक"
+}
diff --git a/skins/MonoBook/i18n/ms.json b/skins/MonoBook/i18n/ms.json
new file mode 100644 (file)
index 0000000..fa975fe
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Anakmalaysia"
+               ]
+       },
+       "skinname-monobook": "MonoBook",
+       "monobook.css": "/* CSS yang terletak di sini akan mempengaruhi pengguna kulit Monobook */"
+}
diff --git a/skins/MonoBook/i18n/mt.json b/skins/MonoBook/i18n/mt.json
new file mode 100644 (file)
index 0000000..3d4a9b0
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Giangian15"
+               ]
+       },
+       "skinname-monobook": "Monobook",
+       "monobook.css": "/* CSS li tpoġġa hawnhekk se jaffetwa dawk l-utenti li jagħmlu użu mill-iskin ''Monobook'' */",
+       "monobook.js": "/* Kull ''JavaScript'' hawnhekk jiġi mniżżel għal dawk l-utenti li qegħdin jagħmlu użu mill-iskin ''Monobook'' */"
+}
diff --git a/skins/MonoBook/i18n/mwl.json b/skins/MonoBook/i18n/mwl.json
new file mode 100644 (file)
index 0000000..533e78a
--- /dev/null
@@ -0,0 +1,3 @@
+{
+       "skinname-monobook": "Lhibro"
+}
diff --git a/skins/MonoBook/i18n/nb.json b/skins/MonoBook/i18n/nb.json
new file mode 100644 (file)
index 0000000..0318b17
--- /dev/null
@@ -0,0 +1,5 @@
+{
+       "skinname-monobook": "Monobook",
+       "monobook.css": "/* CSS i denne fila vil gjelde alle som bruker drakta Monobook */",
+       "monobook.js": "/* Javascript i denne fila vil gjelde for brukere av drakta Monobook */"
+}
diff --git a/skins/MonoBook/i18n/nds-nl.json b/skins/MonoBook/i18n/nds-nl.json
new file mode 100644 (file)
index 0000000..38e52ec
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Servien"
+               ]
+       },
+       "skinname-monobook": "Monobook"
+}
diff --git a/skins/MonoBook/i18n/nds.json b/skins/MonoBook/i18n/nds.json
new file mode 100644 (file)
index 0000000..dddb393
--- /dev/null
@@ -0,0 +1,3 @@
+{
+       "monobook.css": "/* disse Datei ännern üm de Monobook-Stilvörlaag för de ganze Siet antopassen */"
+}
diff --git a/skins/MonoBook/i18n/ne.json b/skins/MonoBook/i18n/ne.json
new file mode 100644 (file)
index 0000000..04516dd
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "@metadata": {
+               "authors": [
+                       "सरोज कुमार ढकाल"
+               ]
+       },
+       "skinname-monobook": "मोनोबुक",
+       "monobook.css": "/* यहाँ राखिएको CSS ले मोनोबुक स्किनको प्रयोगकर्ताहरुलाई प्रभावित गर्ने छ  */"
+}
diff --git a/skins/MonoBook/i18n/new.json b/skins/MonoBook/i18n/new.json
new file mode 100644 (file)
index 0000000..a16deba
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Eukesh"
+               ]
+       },
+       "monobook.css": "/* थन तःगु CSS नं मोनोबुक स्किनया छ्य्‌लामितेत असर याइ */"
+}
diff --git a/skins/MonoBook/i18n/nl.json b/skins/MonoBook/i18n/nl.json
new file mode 100644 (file)
index 0000000..b08e117
--- /dev/null
@@ -0,0 +1,12 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Siebrand",
+                       "Sjoerddebruin"
+               ]
+       },
+       "skinname-monobook": "Monobook",
+       "monobook-desc": "De klassieke MediaWiki-vormgeving sinds 2004, genoemd naar de zwart-witfoto van een boek op de achtergrond van de pagina",
+       "monobook.css": "/* CSS die hier wordt geplaatst heeft alleen invloed op de skin Monobook */",
+       "monobook.js": "/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin Monobook gebruiken */"
+}
diff --git a/skins/MonoBook/i18n/nn.json b/skins/MonoBook/i18n/nn.json
new file mode 100644 (file)
index 0000000..2655c70
--- /dev/null
@@ -0,0 +1,12 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Eirik",
+                       "Frokor",
+                       "Njardarlogar"
+               ]
+       },
+       "skinname-monobook": "MonoBook",
+       "monobook.css": "/* CSS-tekst som vert plassert her, endrar utsjånaden til sidedrakta Monobook */",
+       "monobook.js": "/* Javascript i denne fila vil gjelde for brukarar av drakta Monobook */"
+}
diff --git a/skins/MonoBook/i18n/nv.json b/skins/MonoBook/i18n/nv.json
new file mode 100644 (file)
index 0000000..ede8a6d
--- /dev/null
@@ -0,0 +1,3 @@
+{
+       "skinname-monobook": "NaaltsoosŁáa'ígíí"
+}
diff --git a/skins/MonoBook/i18n/oc.json b/skins/MonoBook/i18n/oc.json
new file mode 100644 (file)
index 0000000..7c1e1f8
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Cedric31"
+               ]
+       },
+       "skinname-monobook": "Monobook",
+       "monobook.css": "/* Lo CSS plaçat aicí afectarà los utilizaires del skin Monobook */",
+       "monobook.js": "/* Tot JavaScript aicí serà cargat amb las paginas accedidas pels utilizaires de l’abilhatge MonoBook unicament. */"
+}
diff --git a/skins/MonoBook/i18n/os.json b/skins/MonoBook/i18n/os.json
new file mode 100644 (file)
index 0000000..86efc7f
--- /dev/null
@@ -0,0 +1,3 @@
+{
+       "skinname-monobook": "Моно-чиныг"
+}
diff --git a/skins/MonoBook/i18n/pa.json b/skins/MonoBook/i18n/pa.json
new file mode 100644 (file)
index 0000000..f9e0833
--- /dev/null
@@ -0,0 +1,3 @@
+{
+       "skinname-monobook": "ਮੋਨੋਬੁੱਕ"
+}
diff --git a/skins/MonoBook/i18n/pam.json b/skins/MonoBook/i18n/pam.json
new file mode 100644 (file)
index 0000000..8b31a7b
--- /dev/null
@@ -0,0 +1,3 @@
+{
+       "monobook.css": "/* CSS a mikabit keni miapectuan la reng gagamit king Monobook a pabalat */"
+}
diff --git a/skins/MonoBook/i18n/pdt.json b/skins/MonoBook/i18n/pdt.json
new file mode 100644 (file)
index 0000000..428d91c
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Wikipeeta"
+               ]
+       },
+       "monobook.css": "/* CSS opp dise Sted wirtjt opp daut Monobook-Skin */",
+       "monobook.js": "/* Daut neachste JavaScript woat fe Brucka mett Monobook-Skin jelode */"
+}
diff --git a/skins/MonoBook/i18n/pl.json b/skins/MonoBook/i18n/pl.json
new file mode 100644 (file)
index 0000000..4c7031a
--- /dev/null
@@ -0,0 +1,12 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Sp5uhe",
+                       "Matma Rex"
+               ]
+       },
+       "skinname-monobook": "Książka",
+       "monobook-desc": "Klasyczna skórka MediaWiki, stworzona w 2004 roku, nazwana od czarno-białego zdjęcia książki w tle strony",
+       "monobook.css": "/* Umieszczony tutaj kod CSS wpłynie na wygląd skórki Książka */",
+       "monobook.js": "/* Umieszczony tutaj kod JavaScript zostanie załadowany wyłącznie przez użytkowników korzystających ze skórki Książka */"
+}
diff --git a/skins/MonoBook/i18n/pms.json b/skins/MonoBook/i18n/pms.json
new file mode 100644 (file)
index 0000000..8910d4c
--- /dev/null
@@ -0,0 +1,4 @@
+{
+       "monobook.css": "/* cangé st'archivi-sì për modifiché la formatassion dël sit antregh */",
+       "monobook.js": "/* Ës messagi-sì as dovrìa pa pì dovrelo; a sò pòst ch'a dòvra [[MediaWiki:common.js]] */"
+}
diff --git a/skins/MonoBook/i18n/ps.json b/skins/MonoBook/i18n/ps.json
new file mode 100644 (file)
index 0000000..d7ee132
--- /dev/null
@@ -0,0 +1,3 @@
+{
+       "skinname-monobook": "مونوبوک"
+}
diff --git a/skins/MonoBook/i18n/pt-br.json b/skins/MonoBook/i18n/pt-br.json
new file mode 100644 (file)
index 0000000..b8f05f4
--- /dev/null
@@ -0,0 +1,5 @@
+{
+       "skinname-monobook": "MonoBook",
+       "monobook.css": "/* o código CSS colocado aqui terá efeito nos usuários do tema Monobook */",
+       "monobook.js": "/* Qualquer JavaScript aqui colocado afetará os usuários do skin MonoBook */"
+}
diff --git a/skins/MonoBook/i18n/pt.json b/skins/MonoBook/i18n/pt.json
new file mode 100644 (file)
index 0000000..0425b83
--- /dev/null
@@ -0,0 +1,12 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Hamilton Abreu",
+                       "Fúlvio"
+               ]
+       },
+       "skinname-monobook": "MonoBook",
+       "monobook-desc": "A clássica skin do MediaWiki desde 2004, tendo este nome devido a uma imagem em preto-e-branco de um livro no plano de fundo da página",
+       "monobook.css": "/* Código CSS colocado aqui afectará os utilizadores do tema Monobook */",
+       "monobook.js": "/* Código Javascript colocado aqui será carregado para utilizadores do tema Monobook */"
+}
index d3058f9..5056ddb 100644 (file)
@@ -1,9 +1,13 @@
 {
        "@metadata": {
-               "authors": []
+               "authors": [
+                       "Meno25",
+                       "Umherirrender",
+                       "Matma Rex"
+               ]
        },
        "skinname-monobook": "{{optional}}",
-       "monobook-desc": "{{desc|name=MonoBook|url=http://www.mediawiki.org/wiki/Skin:MonoBook}}",
+       "monobook-desc": "{{desc|what=skin|name=MonoBook|url=https://www.mediawiki.org/wiki/Skin:MonoBook}}",
        "monobook.css": "{{optional}}\nCSS applied to users using MonoBook skin.",
        "monobook.js": "{{optional}}\nJS for users using MonoBook skin."
 }
diff --git a/skins/MonoBook/i18n/qu.json b/skins/MonoBook/i18n/qu.json
new file mode 100644 (file)
index 0000000..2fdb43c
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "@metadata": {
+               "authors": [
+                       "AlimanRuna"
+               ]
+       },
+       "monobook.css": "/* Kayman churasqa CSS nisqaqa Monobook qaratam hukchanqa tukuy internet tiyanapaq */",
+       "monobook.js": "/* Ima kaypi qillqamusqa JavaScript nisqa wakichi qillqapas MonoBook nisqata llamk'achiq ruraqkunapaq chaqnasqa kanqa */"
+}
diff --git a/skins/MonoBook/i18n/rm.json b/skins/MonoBook/i18n/rm.json
new file mode 100644 (file)
index 0000000..7eb17f7
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Gion-andri"
+               ]
+       },
+       "monobook.css": "/* editescha quest file per adattar il skin momobook per l'entira pagina */",
+       "monobook.js": ""
+}
diff --git a/skins/MonoBook/i18n/ro.json b/skins/MonoBook/i18n/ro.json
new file mode 100644 (file)
index 0000000..2232372
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Firilacroco"
+               ]
+       },
+       "skinname-monobook": "Monobook",
+       "monobook.css": "/* modificați acest fișier pentru a adapta înfățișarea monobook-ului pentru tot situl*/"
+}
diff --git a/skins/MonoBook/i18n/roa-tara.json b/skins/MonoBook/i18n/roa-tara.json
new file mode 100644 (file)
index 0000000..d7b52b0
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Joetaras"
+               ]
+       },
+       "skinname-monobook": "MonoBook",
+       "monobook.css": "/* 'U CSS ca se iacchie aqquà 'u 'ndrucane le utinde d'a masckere Monobook */",
+       "monobook.js": "/* Ogne JavaScript aqquà avène carecate pe le utinde ca ausane 'a masckere MonoBook */"
+}
diff --git a/skins/MonoBook/i18n/ru.json b/skins/MonoBook/i18n/ru.json
new file mode 100644 (file)
index 0000000..c3b1d46
--- /dev/null
@@ -0,0 +1,12 @@
+{
+       "@metadata": {
+               "authors": [
+                       "AlexSm",
+                       "Kaganer",
+                       "Okras"
+               ]
+       },
+       "monobook-desc": "Классическая тема оформления MediaWiki, созданная в 2004 году и названая в честь чёрно-белой фотографии книги с фонового изображения страницы",
+       "monobook.css": "/* Размещённый здесь CSS будет применяться к теме оформления Monobook */",
+       "monobook.js": "/* Размещённый здесь код JavaScript будет загружаться пользователям, использующим тему оформления MonoBook */"
+}
diff --git a/skins/MonoBook/i18n/sa.json b/skins/MonoBook/i18n/sa.json
new file mode 100644 (file)
index 0000000..5f3f966
--- /dev/null
@@ -0,0 +1,3 @@
+{
+       "skinname-monobook": "पुस्तक"
+}
diff --git a/skins/MonoBook/i18n/sah.json b/skins/MonoBook/i18n/sah.json
new file mode 100644 (file)
index 0000000..5f3cbfc
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "@metadata": {
+               "authors": [
+                       "HalanTul"
+               ]
+       },
+       "monobook.css": "/* Манна оҥоһуллубут CSS Monobook диэн скиҥҥа туһаныллыа */",
+       "monobook.js": "/* Эргэрбит; маны туһан:[[MediaWiki:common.js]] */"
+}
diff --git a/skins/MonoBook/i18n/scn.json b/skins/MonoBook/i18n/scn.json
new file mode 100644 (file)
index 0000000..cba6acf
--- /dev/null
@@ -0,0 +1,12 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Santu",
+                       "Sarvaturi",
+                       "Tonyfroio"
+               ]
+       },
+       "skinname-monobook": "MonoBook",
+       "monobook.css": "/* Li stili CSS nziriti ccà s'àpplicanu a l'utenti chi usanu la skin Monobook */",
+       "monobook.js": "/* Lu còdici JavaScript nzirutu ccà veni carricatu di l'utenti c'ùsanu la skin MonoBook */"
+}
diff --git a/skins/MonoBook/i18n/si.json b/skins/MonoBook/i18n/si.json
new file mode 100644 (file)
index 0000000..89a6028
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "@metadata": {
+               "authors": [
+                       "නන්දිමිතුරු"
+               ]
+       },
+       "monobook.css": "/* මෙහි CSS  බහාලීම ඒකායන ඡවිය භාවිතා කරන පරිශීලකයන් හට බලපෑම් සිදු කල හැක */",
+       "monobook.js": "/* මෙහි ඕනෑම ජාවාස්ක්‍රිප්ට් එකක් ඒකායන ඡවිය භාවිතා කරන පරිශීලකයන්හට ප්‍රවේශනය කෙරේ */"
+}
diff --git a/skins/MonoBook/i18n/sk.json b/skins/MonoBook/i18n/sk.json
new file mode 100644 (file)
index 0000000..8865e10
--- /dev/null
@@ -0,0 +1,11 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Helix84",
+                       "Rudko"
+               ]
+       },
+       "skinname-monobook": "MonoBook",
+       "monobook.css": "/* Tu umiestnené CSS bude ovplyvňovať používateľov štýlu Monobook */",
+       "monobook.js": "/* Tu sa nachádzajúci JavaScript sa načíta používateľom vzhľadu Monobook */"
+}
diff --git a/skins/MonoBook/i18n/sq.json b/skins/MonoBook/i18n/sq.json
new file mode 100644 (file)
index 0000000..2a74455
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Dori"
+               ]
+       },
+       "monobook.css": "/* redaktoni këtë faqe për të përshtatur pamjen Monobook për tëra faqet tuaja */"
+}
diff --git a/skins/MonoBook/i18n/sr-ec.json b/skins/MonoBook/i18n/sr-ec.json
new file mode 100644 (file)
index 0000000..0304c03
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Rancher"
+               ]
+       },
+       "skinname-monobook": "Монобук",
+       "monobook.css": "/* CSS постављен овде ће утицати на све кориснике теме „Монобук“ */",
+       "monobook.js": "/* Јаваскрипт постављен овде ће се учитати за све оне који користе тему „Монобук“ */"
+}
diff --git a/skins/MonoBook/i18n/sr-el.json b/skins/MonoBook/i18n/sr-el.json
new file mode 100644 (file)
index 0000000..35398b5
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Rancher"
+               ]
+       },
+       "skinname-monobook": "Monobuk",
+       "monobook.css": "/* CSS postavljen ovde će uticati na sve korisnike teme „Monobuk“ */",
+       "monobook.js": "/* Javaskript postavljen ovde će se učitati za sve one koji koriste temu „Monobuk“ */"
+}
diff --git a/skins/MonoBook/i18n/stq.json b/skins/MonoBook/i18n/stq.json
new file mode 100644 (file)
index 0000000..d21f86d
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Maartenvdbent"
+               ]
+       },
+       "monobook.css": "/* Littikschrieuwen nit twinge */",
+       "monobook.js": "/* Ferallerd; benutsje insteede deerfon [[MediaWiki:common.js]] */"
+}
diff --git a/skins/MonoBook/i18n/su.json b/skins/MonoBook/i18n/su.json
new file mode 100644 (file)
index 0000000..627a97b
--- /dev/null
@@ -0,0 +1,3 @@
+{
+       "monobook.css": "/* édit koropak ieu pikeun nyaluyukeun kulit ''monobook'' pikeun sakabéh situs */"
+}
diff --git a/skins/MonoBook/i18n/sv.json b/skins/MonoBook/i18n/sv.json
new file mode 100644 (file)
index 0000000..4c08fd8
--- /dev/null
@@ -0,0 +1,13 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Lejonel",
+                       "Lokal Profil",
+                       "Skalman"
+               ]
+       },
+       "skinname-monobook": "Monobook",
+       "monobook-desc": "Det klassiska MediaWiki-utseendet sedan 2004, uppkallad efter det svart-vita foto på en bok som syns i bakgrunden på sidan.",
+       "monobook.css": "/* CSS som skrivs här kommer att påverka alla användare av skalet Monobook */",
+       "monobook.js": "/* JavaScript här kommer att laddas för dem som använder skalet Monobook */"
+}
diff --git a/skins/MonoBook/i18n/te.json b/skins/MonoBook/i18n/te.json
new file mode 100644 (file)
index 0000000..71b3dbe
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Veeven"
+               ]
+       },
+       "skinname-monobook": "మోనోబుక్"
+}
diff --git a/skins/MonoBook/i18n/th.json b/skins/MonoBook/i18n/th.json
new file mode 100644 (file)
index 0000000..38be3f9
--- /dev/null
@@ -0,0 +1,11 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Manop",
+                       "Octahedron80"
+               ]
+       },
+       "skinname-monobook": "โมโนบุ๊ก",
+       "monobook.css": "/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ใช้ที่ใช้สกินโมโนบุ๊ก */",
+       "monobook.js": "/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ที่ใช้สกินโมโนบุ๊ก */"
+}
diff --git a/skins/MonoBook/i18n/tl.json b/skins/MonoBook/i18n/tl.json
new file mode 100644 (file)
index 0000000..5d10527
--- /dev/null
@@ -0,0 +1,11 @@
+{
+       "@metadata": {
+               "authors": [
+                       "AnakngAraw",
+                       "Sky Harbor"
+               ]
+       },
+       "skinname-monobook": "MonoBook",
+       "monobook.css": "/* Ang CSS na inilagay dito ay makakaapekto sa mga tagagamit ng pabalat na Monobook */",
+       "monobook.js": "/* Ang anumang JavaScript dito ay ikakarga para sa mga tagagamit na gumagamit ng pabalat na MonoBook */"
+}
diff --git a/skins/MonoBook/i18n/tr.json b/skins/MonoBook/i18n/tr.json
new file mode 100644 (file)
index 0000000..bdb96c8
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Dbl2010"
+               ]
+       },
+       "monobook.css": "/* Buraya konulacak CSS kodu tüm Monobook teması kullanan tüm kullanıcılarda etkin olur */"
+}
diff --git a/skins/MonoBook/i18n/tt-cyrl.json b/skins/MonoBook/i18n/tt-cyrl.json
new file mode 100644 (file)
index 0000000..8f84daf
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Ильнар"
+               ]
+       },
+       "skinname-monobook": "Китап"
+}
diff --git a/skins/MonoBook/i18n/tt-latn.json b/skins/MonoBook/i18n/tt-latn.json
new file mode 100644 (file)
index 0000000..53dfaa0
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Don Alessandro"
+               ]
+       },
+       "skinname-monobook": "Kitap"
+}
diff --git a/skins/MonoBook/i18n/tyv.json b/skins/MonoBook/i18n/tyv.json
new file mode 100644 (file)
index 0000000..26936cf
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Sborsody"
+               ]
+       },
+       "skinname-monobook": "МоноБук"
+}
diff --git a/skins/MonoBook/i18n/ug-arab.json b/skins/MonoBook/i18n/ug-arab.json
new file mode 100644 (file)
index 0000000..73e0776
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Arlin"
+               ]
+       },
+       "skinname-monobook": "MonoBook",
+       "monobook.css": "/* CSS placed here will affect users of the Monobook skin */",
+       "monobook.js": "/* Any JavaScript here will be loaded for users using the MonoBook skin */"
+}
diff --git a/skins/MonoBook/i18n/uk.json b/skins/MonoBook/i18n/uk.json
new file mode 100644 (file)
index 0000000..289f50e
--- /dev/null
@@ -0,0 +1,13 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Dim Grits",
+                       "Matma Rex",
+                       "Ата"
+               ]
+       },
+       "skinname-monobook": "Моно-книга",
+       "monobook-desc": "Класична тема оформлення MediaWiki з 2004 року, названа за чорно-білим фото книги на фоні сторінки",
+       "monobook.css": "/* Розміщений тут CSS буде застосовуватися до всіх тем оформлення Monobook */",
+       "monobook.js": "/* Розміщений тут код JavaScript буде завантажений для всіх користувачів, що використовують тему оформлення Моно-книга */"
+}
diff --git a/skins/MonoBook/i18n/vep.json b/skins/MonoBook/i18n/vep.json
new file mode 100644 (file)
index 0000000..2213e16
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Игорь Бродский"
+               ]
+       },
+       "skinname-monobook": "MonoBook"
+}
diff --git a/skins/MonoBook/i18n/vi.json b/skins/MonoBook/i18n/vi.json
new file mode 100644 (file)
index 0000000..67566f6
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Minh Nguyen"
+               ]
+       },
+       "monobook-desc": "Giao diện MediaWiki cổ điển năm 2004, được đặt tên theo bức hình nền cuốn sách đen trắng",
+       "monobook.css": "/* Mã CSS đặt ở đây sẽ ảnh hưởng đến thành viên sử dụng giao diện MonoBook */",
+       "monobook.js": "/* Mã JavaScript tại đây sẽ được tải khi người dùng sử dụng giao diện MonoBook */"
+}
diff --git a/skins/MonoBook/i18n/vmf.json b/skins/MonoBook/i18n/vmf.json
new file mode 100644 (file)
index 0000000..9b3453b
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Silvicola"
+               ]
+       },
+       "monobook.css": "/* CSS hiir beâjflusd nôr dii Monobook-schelfn. Wen'd ale uf ôômôôl beâjflusn wilsch, muâsch an MediaWiki:Common.css was ändârn. */"
+}
diff --git a/skins/MonoBook/i18n/vo.json b/skins/MonoBook/i18n/vo.json
new file mode 100644 (file)
index 0000000..9e4d0f4
--- /dev/null
@@ -0,0 +1,3 @@
+{
+       "monobook.css": "/* El CSS isio pepladöl otefon gebanis padafomäta: Monobook */"
+}
diff --git a/skins/MonoBook/i18n/vro.json b/skins/MonoBook/i18n/vro.json
new file mode 100644 (file)
index 0000000..9bc1039
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Võrok"
+               ]
+       },
+       "monobook.css": "/* Taa lehe pääl om Monobook-vällänägemist muutvit kujonduisi. */",
+       "monobook.js": "/* Olõi soovitõt; pruugiq [[MediaWiki:common.js]] */"
+}
diff --git a/skins/MonoBook/i18n/wa.json b/skins/MonoBook/i18n/wa.json
new file mode 100644 (file)
index 0000000..8ffba09
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Srtxg"
+               ]
+       },
+       "monobook.css": "/* li côde CSS metou chal serè eployî pa tos les uzeus eployant l' pea «monobook» */"
+}
diff --git a/skins/MonoBook/i18n/wo.json b/skins/MonoBook/i18n/wo.json
new file mode 100644 (file)
index 0000000..a01b87e
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Ibou"
+               ]
+       },
+       "monobook.css": "/* CSS yiñ def fii dañuy am ay njeexit ci jëfandikukatu col gu Monobook. */",
+       "monobook.js": "/*Bépp JavaScript buñ fi duggal jëfandikukat yiy jëfandikoo col gu Monobook keppa koy yeb. */"
+}
diff --git a/skins/MonoBook/i18n/yi.json b/skins/MonoBook/i18n/yi.json
new file mode 100644 (file)
index 0000000..5a7d3e1
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "@metadata": {
+               "authors": [
+                       "פוילישער"
+               ]
+       },
+       "skinname-monobook": "מאנאבוק",
+       "monobook.css": "/* סטייל דא געלייגט וועט באאיינפלוסן דעם Monobook סקין */"
+}
diff --git a/skins/MonoBook/i18n/yue.json b/skins/MonoBook/i18n/yue.json
new file mode 100644 (file)
index 0000000..b450970
--- /dev/null
@@ -0,0 +1,5 @@
+{
+       "skinname-monobook": "MonoBook",
+       "monobook.css": "/* 響呢度放 CSS 碼去改用戶用嘅 Monobook 畫面 */",
+       "monobook.js": "/* 響每一次個頁面載入時,用 Monobook 畫面嘅用戶都會載入呢度任何嘅JavaScript */"
+}
diff --git a/skins/MonoBook/i18n/zh-hans.json b/skins/MonoBook/i18n/zh-hans.json
new file mode 100644 (file)
index 0000000..fc3f368
--- /dev/null
@@ -0,0 +1,12 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Xiaomingyan",
+                       "Cwek",
+                       "Liuxinyu970226"
+               ]
+       },
+       "monobook-desc": "自2004年就出现的经典MediaWiki皮肤,命名依据一本书中某页面的黑白照片背景",
+       "monobook.css": "/* 放置于这里的CSS将影响使用MonoBook皮肤的用户 */",
+       "monobook.js": "/* 这里的任何JavaScript将为使用MonoBook皮肤的用户加载 */"
+}
diff --git a/skins/MonoBook/i18n/zh-hant.json b/skins/MonoBook/i18n/zh-hant.json
new file mode 100644 (file)
index 0000000..7813cc1
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Cwlin0416"
+               ]
+       },
+       "monobook.css": "/* 此 CSS 會影響使用 Monobook 介面外觀的使用者 */",
+       "monobook.js": "/* 此 JavaScript 會用於使用 Monobook 介面外觀使用者 */"
+}
index fae4663..be8719a 100644 (file)
@@ -26,7 +26,7 @@ $wgExtensionCredits['skin'][] = array(
        'path' => __FILE__,
        'name' => 'Vector',
        'namemsg' => 'skinname-vector',
-       'descriptionmsg' => 'vector-desc',
+       'descriptionmsg' => 'vector-skin-desc',
        'url' => 'https://www.mediawiki.org/wiki/Skin:Vector',
        'author' => array( 'Trevor Parscal', 'Roan Kattouw', '...' ),
        'license-name' => 'GPLv2+',
index f70c7a4..33cd230 100644 (file)
@@ -127,8 +127,6 @@ pre, .mw-code {
        vertical-align: text-bottom;
 }
 
-/* TODO: Remove #bodyContent selector (kept for backwards compatibility with cached html) */
-#bodyContent,
 .mw-body-content {
        position: relative;
        line-height: @content-line-height;
diff --git a/skins/Vector/i18n/ab.json b/skins/Vector/i18n/ab.json
new file mode 100644 (file)
index 0000000..d52ed10
--- /dev/null
@@ -0,0 +1,13 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Temuri rajavi"
+               ]
+       },
+       "vector-action-move": "Ахьӡ аҧсахра",
+       "vector-view-create": "Арҿиара",
+       "vector-view-edit": "Ариашамҭа",
+       "vector-view-history": "Аҭоурых",
+       "vector-view-view": "Аҧхьара",
+       "vector-view-viewsource": "Ахәаҧшра"
+}
diff --git a/skins/Vector/i18n/ace.json b/skins/Vector/i18n/ace.json
new file mode 100644 (file)
index 0000000..befc427
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Fadli Idris",
+                       "Si Gam Acèh"
+               ]
+       },
+       "vector-action-addsection": "Tamah bhaih",
+       "vector-action-delete": "Sampôh",
+       "vector-action-move": "Pupinah",
+       "vector-action-protect": "Peulindông",
+       "vector-action-undelete": "Bateuë sampôh",
+       "vector-action-unprotect": "Gantoe neulindông",
+       "vector-view-create": "Peugöt",
+       "vector-view-edit": "Andam",
+       "vector-view-history": "Eu riwayat",
+       "vector-view-view": "Beuët",
+       "vector-view-viewsource": "Eu nè"
+}
diff --git a/skins/Vector/i18n/ady-cyrl.json b/skins/Vector/i18n/ady-cyrl.json
new file mode 100644 (file)
index 0000000..77ea233
--- /dev/null
@@ -0,0 +1,21 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Adamsa123",
+                       "Amire80",
+                       "Celekan",
+                       "Siklawy"
+               ]
+       },
+       "vector-action-addsection": "1офтхьабз",
+       "vector-action-delete": "ЛъэкӀ",
+       "vector-action-move": "Хьы",
+       "vector-action-protect": "Иухъумэ",
+       "vector-action-undelete": "Умылъэк1",
+       "vector-action-unprotect": "Умыухъумэ",
+       "vector-view-create": "Игъэхъу",
+       "vector-view-edit": "Гъэтэрэзыжь",
+       "vector-view-history": "Тарихъым eплъ",
+       "vector-view-view": "Едж",
+       "vector-view-viewsource": "Еплъ лъапсэм"
+}
diff --git a/skins/Vector/i18n/aeb.json b/skins/Vector/i18n/aeb.json
new file mode 100644 (file)
index 0000000..b3c71f9
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Csisc",
+                       "Malekbr"
+               ]
+       },
+       "vector-action-addsection": "أضف موضوعا",
+       "vector-action-delete": "احذف",
+       "vector-action-move": "انقل",
+       "vector-action-protect": "احم",
+       "vector-action-undelete": "استرجع الحذف",
+       "vector-action-unprotect": "غير الحماية",
+       "vector-view-create": "أنشئ",
+       "vector-view-edit": "Baddel",
+       "vector-view-history": "Warri l'historique",
+       "vector-view-view": "Aqra",
+       "vector-view-viewsource": "اعرض المصدر"
+}
diff --git a/skins/Vector/i18n/af.json b/skins/Vector/i18n/af.json
new file mode 100644 (file)
index 0000000..8bd949e
--- /dev/null
@@ -0,0 +1,20 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Byeboer",
+                       "Naudefj"
+               ]
+       },
+       "vector-action-addsection": "Nuwe onderwerp",
+       "vector-action-delete": "Skrap",
+       "vector-action-move": "Skuif",
+       "vector-action-protect": "Beskerm",
+       "vector-action-undelete": "Ontskrap",
+       "vector-action-unprotect": "Wysig beskerming",
+       "vector-view-create": "Skep",
+       "vector-view-edit": "Wysig",
+       "vector-view-history": "Wys geskiedenis",
+       "vector-view-view": "Lees",
+       "vector-view-viewsource": "Wys bronteks",
+       "vector-more-actions": "Meer"
+}
diff --git a/skins/Vector/i18n/aln.json b/skins/Vector/i18n/aln.json
new file mode 100644 (file)
index 0000000..a5cc022
--- /dev/null
@@ -0,0 +1,20 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Bresta"
+               ]
+       },
+       "vector.css": "/* CSSi i vednosun këtu ka me i prekë shfrytëzuesit e dukjes Vector */",
+       "vector.js": "/* Çdo JavaScript këtu ka me u ngarkue për shfrytëzuesit që përdorin dukjen Vector */",
+       "vector-action-addsection": "Shto temë",
+       "vector-action-delete": "Fshij",
+       "vector-action-move": "Zhvendos",
+       "vector-action-protect": "Mbroj",
+       "vector-action-undelete": "Kthe fshimjen mbrapsht",
+       "vector-action-unprotect": "Hiq mbrojtjen",
+       "vector-view-create": "Krijo",
+       "vector-view-edit": "Redakto",
+       "vector-view-history": "Shih historinë",
+       "vector-view-view": "Lexo",
+       "vector-view-viewsource": "Shih kodin"
+}
diff --git a/skins/Vector/i18n/am.json b/skins/Vector/i18n/am.json
new file mode 100644 (file)
index 0000000..55655bb
--- /dev/null
@@ -0,0 +1,22 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Codex Sinaiticus",
+                       "Elfalem",
+                       "Hinstein",
+                       "Teferra"
+               ]
+       },
+       "vector-action-addsection": "ርዕስ ጨምር",
+       "vector-action-delete": "አጥፋ",
+       "vector-action-move": "ለማዛወር",
+       "vector-action-protect": "ለመቆለፍ",
+       "vector-action-undelete": "አታጥፋ",
+       "vector-action-unprotect": "አለመቆለፍ",
+       "vector-view-create": "አዲስ ፍጠር",
+       "vector-view-edit": "አርም",
+       "vector-view-history": "ታሪኩን አሳይ",
+       "vector-view-view": "ለማንበብ",
+       "vector-view-viewsource": "ጥሬ ኮድ ለመመልከት",
+       "vector-more-actions": "ተጨማሪ"
+}
diff --git a/skins/Vector/i18n/an.json b/skins/Vector/i18n/an.json
new file mode 100644 (file)
index 0000000..a4b5f0c
--- /dev/null
@@ -0,0 +1,21 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Juanpabl"
+               ]
+       },
+       "skinname-vector": "Vector",
+       "vector.css": "/* Os estilos CSS colocaus aquí s'aplicarán ta totz os usuarios que faigan servir l'apariencia Vector */",
+       "vector.js": "/* Qualsiquier codigo Javascript escrito aquí se cargará ta totz os usuarios que usen a piel Vector */",
+       "vector-action-addsection": "Adhibir nueva sección",
+       "vector-action-delete": "Borrar",
+       "vector-action-move": "Tresladar",
+       "vector-action-protect": "Protecher",
+       "vector-action-undelete": "Restaurar",
+       "vector-action-unprotect": "Cambiar protección",
+       "vector-view-create": "Creyar",
+       "vector-view-edit": "Editar",
+       "vector-view-history": "Amostrar l'historial",
+       "vector-view-view": "Leyer",
+       "vector-view-viewsource": "Veyer o codigo fuent"
+}
diff --git a/skins/Vector/i18n/ang.json b/skins/Vector/i18n/ang.json
new file mode 100644 (file)
index 0000000..56321dc
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Gott wisst"
+               ]
+       },
+       "vector-action-addsection": "Besettan mearcunge",
+       "vector-action-delete": "Forlēosan",
+       "vector-action-move": "Wegan",
+       "vector-action-protect": "Beorgan",
+       "vector-action-undelete": "Scieppan tramet eft",
+       "vector-action-unprotect": "Andwendan beorgunge",
+       "vector-view-create": "Scieppan",
+       "vector-view-edit": "Adihtan",
+       "vector-view-history": "Stǣr",
+       "vector-view-view": "Rǣdan",
+       "vector-view-viewsource": "Sēon fruman"
+}
diff --git a/skins/Vector/i18n/ar.json b/skins/Vector/i18n/ar.json
new file mode 100644 (file)
index 0000000..9c07d9b
--- /dev/null
@@ -0,0 +1,28 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Abanima",
+                       "Calak",
+                       "Meno25",
+                       "Mido",
+                       "OsamaK",
+                       "أحمد",
+                       "زكريا"
+               ]
+       },
+       "skinname-vector": "فكتور",
+       "vector.css": "/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة فكتور */",
+       "vector.js": "/* أي جافاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة فكتور */",
+       "vector-action-addsection": "أضف موضوعا",
+       "vector-action-delete": "احذف",
+       "vector-action-move": "انقل",
+       "vector-action-protect": "احم",
+       "vector-action-undelete": "ألغ الحذف",
+       "vector-action-unprotect": "غير الحماية",
+       "vector-view-create": "أنشئ",
+       "vector-view-edit": "عدل",
+       "vector-view-history": "اعرض التاريخ",
+       "vector-view-view": "اقرأ",
+       "vector-view-viewsource": "اعرض المصدر",
+       "vector-more-actions": "مزيد"
+}
diff --git a/skins/Vector/i18n/arc.json b/skins/Vector/i18n/arc.json
new file mode 100644 (file)
index 0000000..7bb2372
--- /dev/null
@@ -0,0 +1,20 @@
+{
+       "@metadata": {
+               "authors": [
+                       "334a",
+                       "Basharh",
+                       "Michaelovic"
+               ]
+       },
+       "vector-action-addsection": "ܐܘܣܦ ܡܠܘܐܐ",
+       "vector-action-delete": "ܫܘܦ",
+       "vector-action-move": "ܫܢܝ",
+       "vector-action-protect": "ܛܪ",
+       "vector-action-undelete": "ܠܐ ܫܘܦ",
+       "vector-action-unprotect": "ܫܚܠܦ ܢܛܝܪܘܬܐ",
+       "vector-view-create": "ܒܪܝ",
+       "vector-view-edit": "ܫܚܠܦ",
+       "vector-view-history": "ܚܙܝ ܬܫܥܝܬܐ",
+       "vector-view-view": "ܩܪܝ",
+       "vector-view-viewsource": "ܚܙܝ ܡܒܘܥܐ"
+}
diff --git a/skins/Vector/i18n/arn.json b/skins/Vector/i18n/arn.json
new file mode 100644 (file)
index 0000000..9ff9636
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Clerc",
+                       "Fiestoforo"
+               ]
+       },
+       "vector-action-addsection": "Püñamtun dungu",
+       "vector-action-delete": "Liftun",
+       "vector-action-move": "Wiñamün",
+       "vector-action-protect": "Nürüfkünun",
+       "vector-action-undelete": "Wüñoñamümün",
+       "vector-action-unprotect": "Kalekünun Nürüfkünun",
+       "vector-view-create": "Dewman",
+       "vector-view-edit": "Kümeelün",
+       "vector-view-history": "Pengelün rupañmael",
+       "vector-view-view": "Chillkatun",
+       "vector-view-viewsource": "Kimam chew küpan chi wirin"
+}
diff --git a/skins/Vector/i18n/aro.json b/skins/Vector/i18n/aro.json
new file mode 100644 (file)
index 0000000..77dc6c4
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Ooswesthoesbes"
+               ]
+       },
+       "vector-view-edit": "Imeakie"
+}
diff --git a/skins/Vector/i18n/arq.json b/skins/Vector/i18n/arq.json
new file mode 100644 (file)
index 0000000..740ab9b
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Bachounda",
+                       "Oldstoneage"
+               ]
+       },
+       "vector-action-addsection": "زيد موضوع",
+       "vector-action-delete": "امحي",
+       "vector-action-move": "حول",
+       "vector-action-protect": "بروجي",
+       "vector-action-undelete": "ردّ كيما كان",
+       "vector-action-unprotect": "بدّل الـحماية",
+       "vector-view-create": "أصنع",
+       "vector-view-edit": "بدل",
+       "vector-view-history": "روح للتاريخي",
+       "vector-view-view": "أقرى",
+       "vector-view-viewsource": "شوف المصدر"
+}
diff --git a/skins/Vector/i18n/ary.json b/skins/Vector/i18n/ary.json
new file mode 100644 (file)
index 0000000..db687ea
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Enzoreg",
+                       "Zanatos"
+               ]
+       },
+       "vector-action-addsection": "Zid topic",
+       "vector-action-delete": "Suprimi",
+       "vector-action-move": "Neqel",
+       "vector-action-protect": "Ḫami",
+       "vector-action-undelete": "rja lhadf",
+       "vector-action-unprotect": "Ḫiyed l-ḫimaya",
+       "vector-view-create": "Ĥṫareĝ",
+       "vector-view-edit": "Ĝedel",
+       "vector-view-history": "Ṫariĥ l-fiċyé",
+       "vector-view-view": "Qra",
+       "vector-view-viewsource": "Ċof l-masdar"
+}
diff --git a/skins/Vector/i18n/arz.json b/skins/Vector/i18n/arz.json
new file mode 100644 (file)
index 0000000..3541b15
--- /dev/null
@@ -0,0 +1,22 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Ghaly",
+                       "Meno25",
+                       "Ramsis II"
+               ]
+       },
+       "vector.css": "/* CSS اللى هنا حتأثر على اليوزرز اللى بيستخدموا واجهة فكتور */",
+       "vector.js": "/* اى جافاسكريبت هنا حتتحمل لكل يوزر بيستخدم واجهة فكتور */",
+       "vector-action-addsection": "ضيف موضوع",
+       "vector-action-delete": "مسح",
+       "vector-action-move": "نقل",
+       "vector-action-protect": "حمايه",
+       "vector-action-undelete": "الغى المسح",
+       "vector-action-unprotect": "غير الحمايه",
+       "vector-view-create": "اعمل",
+       "vector-view-edit": "تعديل",
+       "vector-view-history": "استعراض التاريخ",
+       "vector-view-view": "قرايه",
+       "vector-view-viewsource": "استعراض المصدر"
+}
diff --git a/skins/Vector/i18n/as.json b/skins/Vector/i18n/as.json
new file mode 100644 (file)
index 0000000..92efe9f
--- /dev/null
@@ -0,0 +1,21 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Bishnu Saikia",
+                       "Chaipau",
+                       "Gitartha.bordoloi"
+               ]
+       },
+       "vector-action-addsection": "বিষয় যোগ",
+       "vector-action-delete": "বিলোপ কৰক",
+       "vector-action-move": "স্থানান্তৰ কৰক",
+       "vector-action-protect": "সুৰক্ষিত কৰক",
+       "vector-action-undelete": "পুনৰুদ্ধাৰ কৰক",
+       "vector-action-unprotect": "সুৰক্ষা সলনি কৰক",
+       "vector-view-create": "সৃষ্টি কৰক",
+       "vector-view-edit": "সম্পাদনা",
+       "vector-view-history": "ইতিহাস চাওক",
+       "vector-view-view": "পঢ়ক",
+       "vector-view-viewsource": "উৎস চাওক",
+       "vector-more-actions": "অধিক"
+}
diff --git a/skins/Vector/i18n/ase.json b/skins/Vector/i18n/ase.json
new file mode 100644 (file)
index 0000000..97a3500
--- /dev/null
@@ -0,0 +1,23 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Icemandeaf"
+               ]
+       },
+       "skinname-vector": "M509x575S10e20494x425S14a20493x459S16d20492x478S1fb20494x502S17620493x525S11a20493x545",
+       "vector-skin-desc": "M535x520S19a00507x481S19a08465x481S22f14465x506S22f04509x506 M515x598S18d20494x403S17620499x432S11920493x452S17620499x482S14720500x502S17620499x528S17620499x548S14020485x568 M521x508S1f748479x493S1f740501x493 M532x517S15a16505x505S2880f468x484S20e00491x495S1821d503x492 M534x547S2ff00482x483S10001513x517S2e305488x487 S38700463x496 M535x536S20300516x521S20308470x521S26500516x502S26510470x502S14c30511x465S14c38465x465 M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M520x540S37606481x460S15a40508x513S28801499x491S20500488x492",
+       "vector.css": "/* M509x529S16d20492x471S20320493x495S20320493x514 M535x523S14c50508x492S14c58469x492S22520503x477S22520465x477 M525x525S10004510x475S22a04511x510S1000c476x475S22a14477x510 M534x518S2ff00482x483S15a10522x486S2b700514x458 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M521x508S1f748479x493S1f740501x493 M509x575S10e20494x425S14a20493x459S16d20492x478S1fb20494x502S17620493x525S11a20493x545 M517x524S15a02484x477S15a20489x484S21100504x492S22a04504x509 */",
+       "vector.js": "/* M520x523S1f540480x477S2a204497x495 M519x527S19220498x489S2a20c482x473S20320498x512 M525x525S10004510x475S22a04511x510S1000c476x475S22a14477x510 M534x518S2ff00482x483S15a10522x486S2b700514x458 M524x539S14402493x485S1440a486x461S22b00508x509S22b10476x483 M536x521S2ff00482x483S10011515x491S28108515x461 M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M509x575S10e20494x425S14a20493x459S16d20492x478S1fb20494x502S17620493x525S11a20493x545 M517x524S15a02484x477S15a20489x484S21100504x492S22a04504x509 */",
+       "vector-action-addsection": "M532x517S15a16505x505S2880f468x484S20e00491x495S1821d503x492 M522x522S15a37478x479S10041485x492S20600500x492",
+       "vector-action-delete": "M527x532S1ea40473x511S1f540512x478S22a07497x504S2f700512x468",
+       "vector-action-move": "M552x509S18520488x494S18528449x494S26626522x492",
+       "vector-action-protect": "M512x519S15a19488x482S15a11489x482S20600488x508",
+       "vector-action-undelete": "M515x538S15a0a486x463S10050500x467S2330b485x516S20e00491x501 M527x532S1ea40473x511S1f540512x478S22a07497x504S2f700512x468",
+       "vector-action-unprotect": "M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M512x519S15a19488x482S15a11489x482S20600488x508",
+       "vector-view-create": "M532x519S20302493x485S2030a489x502S21100509x504S26900516x482S26910468x501",
+       "vector-view-edit": "M521x532S10609498x496S10621487x512S21100500x483S2df20479x468",
+       "vector-view-history": "M525x524S2ff00482x483S10e00507x494S26500511x474 M514x523S11541487x478S22f04489x509",
+       "vector-view-view": "M513x540S15a06486x459S10e50494x474S22b04493x510",
+       "vector-view-viewsource": "M525x524S2ff00482x483S10e00507x494S26500511x474 M509x545S16d20492x456S17620493x480S10120493x497S14a20494x530",
+       "vector-more-actions": "M526x508S18510501x493S18518475x493"
+}
diff --git a/skins/Vector/i18n/ast.json b/skins/Vector/i18n/ast.json
new file mode 100644 (file)
index 0000000..bd3703f
--- /dev/null
@@ -0,0 +1,21 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Esbardu",
+                       "Xuacu"
+               ]
+       },
+       "vector.css": "/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu Vector */",
+       "vector.js": "/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu Vector */",
+       "vector-action-addsection": "Amestar seición",
+       "vector-action-delete": "Desaniciar",
+       "vector-action-move": "Treslladar",
+       "vector-action-protect": "Protexer",
+       "vector-action-undelete": "Restaurar",
+       "vector-action-unprotect": "Camudar la proteición",
+       "vector-view-create": "Crear",
+       "vector-view-edit": "Editar",
+       "vector-view-history": "Ver historial",
+       "vector-view-view": "Lleer",
+       "vector-view-viewsource": "Ver fonte"
+}
diff --git a/skins/Vector/i18n/av.json b/skins/Vector/i18n/av.json
new file mode 100644 (file)
index 0000000..e7a6452
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Умар"
+               ]
+       },
+       "vector-view-edit": "Хисизабизе"
+}
diff --git a/skins/Vector/i18n/avk.json b/skins/Vector/i18n/avk.json
new file mode 100644 (file)
index 0000000..a0585bd
--- /dev/null
@@ -0,0 +1,16 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Wikimistusik"
+               ]
+       },
+       "vector-action-addsection": "Loplekura va detce",
+       "vector-action-delete": "Sulara",
+       "vector-action-move": "Arrundara",
+       "vector-action-protect": "Nendara",
+       "vector-view-create": "Redura",
+       "vector-view-edit": "Betara",
+       "vector-view-history": "Wira va izvot",
+       "vector-view-view": "Belira",
+       "vector-view-viewsource": "klitawira"
+}
diff --git a/skins/Vector/i18n/az.json b/skins/Vector/i18n/az.json
new file mode 100644 (file)
index 0000000..48d42e5
--- /dev/null
@@ -0,0 +1,28 @@
+{
+       "@metadata": {
+               "authors": [
+                       "AZISS",
+                       "Arystanbek",
+                       "Gulmammad",
+                       "Sortilegus",
+                       "Vago",
+                       "Vugar 1981",
+                       "Wertuose"
+               ]
+       },
+       "skinname-vector": "Vector",
+       "vector.css": "/* Burada yerləşən CSS Vector istifadəçilərinə tətbiq olunur */",
+       "vector.js": "/* Burada Vector skin istifadəçiləri üçün istənilən JavaScript yüklənəcək */",
+       "vector-action-addsection": "Mövzu əlavə et",
+       "vector-action-delete": "Sil",
+       "vector-action-move": "Adını dəyişdir",
+       "vector-action-protect": "Mühafizə et",
+       "vector-action-undelete": "Bərpa et",
+       "vector-action-unprotect": "Mühafizəni kənarlaşdır",
+       "vector-view-create": "Yarat",
+       "vector-view-edit": "Redaktə",
+       "vector-view-history": "Tarixçəyə bax",
+       "vector-view-view": "Oxu",
+       "vector-view-viewsource": "Mənbəyə bax",
+       "vector-more-actions": "Daha"
+}
diff --git a/skins/Vector/i18n/azb.json b/skins/Vector/i18n/azb.json
new file mode 100644 (file)
index 0000000..ae46e1c
--- /dev/null
@@ -0,0 +1,20 @@
+{
+       "@metadata": {
+               "authors": [
+                       "E THP",
+                       "Ebrahimi-amir",
+                       "Mousa"
+               ]
+       },
+       "vector-action-addsection": "قوْنو آرتیر",
+       "vector-action-delete": "سیل",
+       "vector-action-move": "داشی",
+       "vector-action-protect": "قوْرو",
+       "vector-action-undelete": "سیلمگی قایتار",
+       "vector-action-unprotect": "قوْروماغی دَییشدیر",
+       "vector-view-create": "یارات",
+       "vector-view-edit": "دَییشدیر",
+       "vector-view-history": "گئچمیشه باخ",
+       "vector-view-view": "اوْخو",
+       "vector-view-viewsource": "قایناغا باخ"
+}
diff --git a/skins/Vector/i18n/ba.json b/skins/Vector/i18n/ba.json
new file mode 100644 (file)
index 0000000..30969f7
--- /dev/null
@@ -0,0 +1,20 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Assele",
+                       "Haqmar"
+               ]
+       },
+       "skinname-vector": "Векторлы",
+       "vector-action-addsection": "Тема өҫтәргә",
+       "vector-action-delete": "Юйырға",
+       "vector-action-move": "Исемен үҙгәртергә",
+       "vector-action-protect": "Һаҡларға",
+       "vector-action-undelete": "Тергеҙергә",
+       "vector-action-unprotect": "Һаҡлауҙы үҙгәртергә",
+       "vector-view-create": "Яһау",
+       "vector-view-edit": "Үҙгәртергә",
+       "vector-view-history": "Тарихты ҡарау",
+       "vector-view-view": "Уҡыу",
+       "vector-view-viewsource": "Сығанаҡты ҡарарға"
+}
diff --git a/skins/Vector/i18n/ban.json b/skins/Vector/i18n/ban.json
new file mode 100644 (file)
index 0000000..4641011
--- /dev/null
@@ -0,0 +1,17 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Adi Mayndra",
+                       "BASAbali"
+               ]
+       },
+       "vector-action-addsection": "imbuhin indik wacana",
+       "vector-action-delete": "ngapus",
+       "vector-action-move": "kisidang",
+       "vector-action-protect": "nyaga",
+       "vector-view-create": "ngawe",
+       "vector-view-edit": "mecikang",
+       "vector-view-history": "indik sane lintang",
+       "vector-view-view": "Waca",
+       "vector-view-viewsource": "cingak witnyane"
+}
diff --git a/skins/Vector/i18n/bar.json b/skins/Vector/i18n/bar.json
new file mode 100644 (file)
index 0000000..0c085b1
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Bua333",
+                       "Mucalexx"
+               ]
+       },
+       "vector-action-addsection": "An Obschnitt dazua doa",
+       "vector-action-delete": "Leschn",
+       "vector-action-move": "Vaschiabm",
+       "vector-action-protect": "Schitzn",
+       "vector-action-undelete": "Wiederherstön",
+       "vector-action-unprotect": "freigeem",
+       "vector-view-create": "Aufbaun",
+       "vector-view-edit": "Werkln",
+       "vector-view-history": "Gschicht oschaugn",
+       "vector-view-view": "Lesn",
+       "vector-view-viewsource": "Quejtext ozoagn"
+}
diff --git a/skins/Vector/i18n/bbc-latn.json b/skins/Vector/i18n/bbc-latn.json
new file mode 100644 (file)
index 0000000..fe9a284
--- /dev/null
@@ -0,0 +1,21 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Daniel Harahap",
+                       "WBT003Bugari",
+                       "WBT006Hendra",
+                       "WBT009Anju"
+               ]
+       },
+       "vector-action-addsection": "Bagian na imbaru",
+       "vector-action-delete": "Sesa",
+       "vector-action-move": "Pahusor",
+       "vector-action-protect": "Ramoti",
+       "vector-action-undelete": "unang sesa",
+       "vector-action-unprotect": "Uba parlindungan",
+       "vector-view-create": "Tompa",
+       "vector-view-edit": "Paubah",
+       "vector-view-history": "Patudu andorang na",
+       "vector-view-view": "Jaha",
+       "vector-view-viewsource": "Ida haroanna"
+}
diff --git a/skins/Vector/i18n/bcc.json b/skins/Vector/i18n/bcc.json
new file mode 100644 (file)
index 0000000..f6c3c4d
--- /dev/null
@@ -0,0 +1,20 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Mostafadaneshvar",
+                       "RigiMahnoor"
+               ]
+       },
+       "vector-action-addsection": "هور کتن عنوان",
+       "vector-action-delete": "زورگ",
+       "vector-action-move": "جاه په جاه",
+       "vector-action-protect": "حفاظت",
+       "vector-action-undelete": "ترینگ",
+       "vector-action-unprotect": "پروتکشنء ٹگل بدئ",
+       "vector-view-create": "شرکتن",
+       "vector-view-edit": "اصلاح",
+       "vector-view-history": "چارتن تاریح",
+       "vector-view-view": "وانتن",
+       "vector-view-viewsource": "پیشدارگ بن جاه",
+       "vector-more-actions": "گیشتر"
+}
diff --git a/skins/Vector/i18n/bcl.json b/skins/Vector/i18n/bcl.json
new file mode 100644 (file)
index 0000000..7e2d73a
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Filipinayzd",
+                       "Geopoet"
+               ]
+       },
+       "vector-action-addsection": "Idagdag an topic",
+       "vector-action-delete": "puráon",
+       "vector-action-move": "Ibalyó",
+       "vector-action-protect": "Protektaran",
+       "vector-action-undelete": "Bawion sa pagkapara",
+       "vector-action-unprotect": "Ribayan an proteksyon",
+       "vector-view-create": "Magmukna",
+       "vector-view-edit": "Liwatón",
+       "vector-view-history": "Tanawon sa historiya",
+       "vector-view-view": "Basáha",
+       "vector-view-viewsource": "Hilingón an ginikánan"
+}
diff --git a/skins/Vector/i18n/be-tarask.json b/skins/Vector/i18n/be-tarask.json
new file mode 100644 (file)
index 0000000..4bbef69
--- /dev/null
@@ -0,0 +1,22 @@
+{
+       "@metadata": {
+               "authors": [
+                       "EugeneZelenko",
+                       "Red Winged Duck",
+                       "Wizardist"
+               ]
+       },
+       "skinname-vector": "Вэктар",
+       "vector-action-addsection": "Дадаць тэму",
+       "vector-action-delete": "Выдаліць",
+       "vector-action-move": "Перанесьці",
+       "vector-action-protect": "Абараніць",
+       "vector-action-undelete": "Аднавіць",
+       "vector-action-unprotect": "Зьмяніць абарону",
+       "vector-view-create": "Стварыць",
+       "vector-view-edit": "Рэдагаваць",
+       "vector-view-history": "Паказаць гісторыю",
+       "vector-view-view": "Чытаць",
+       "vector-view-viewsource": "Паказаць крыніцу",
+       "vector-more-actions": "Болей"
+}
diff --git a/skins/Vector/i18n/be.json b/skins/Vector/i18n/be.json
new file mode 100644 (file)
index 0000000..b84c18f
--- /dev/null
@@ -0,0 +1,22 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Mikalai Udodau",
+                       "Yury Tarasievich",
+                       "Дзяніс Тутэйшы",
+                       "Хомелка"
+               ]
+       },
+       "vector-action-addsection": "Дадаць тэму",
+       "vector-action-delete": "Сцерці",
+       "vector-action-move": "Перанесці",
+       "vector-action-protect": "Ахова",
+       "vector-action-undelete": "Аднавіць",
+       "vector-action-unprotect": "Змяніць ахову",
+       "vector-view-create": "Стварыць",
+       "vector-view-edit": "Правіць",
+       "vector-view-history": "Паказаць гісторыю",
+       "vector-view-view": "Чытаць",
+       "vector-view-viewsource": "Паказаць зыходны тэкст",
+       "vector-more-actions": "Яшчэ"
+}
diff --git a/skins/Vector/i18n/bew.json b/skins/Vector/i18n/bew.json
new file mode 100644 (file)
index 0000000..ab009b4
--- /dev/null
@@ -0,0 +1,11 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Naval Scene"
+               ]
+       },
+       "vector-action-delete": "Ngapus",
+       "vector-action-move": "Pindahin",
+       "vector-action-undelete": "Balikin nyang keapus",
+       "vector-view-create": "Bikin"
+}
diff --git a/skins/Vector/i18n/bg.json b/skins/Vector/i18n/bg.json
new file mode 100644 (file)
index 0000000..9a2858c
--- /dev/null
@@ -0,0 +1,20 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Borislav",
+                       "DCLXVI",
+                       "Spiritia"
+               ]
+       },
+       "vector-action-addsection": "Добавяне на тема",
+       "vector-action-delete": "Изтриване",
+       "vector-action-move": "Преместване",
+       "vector-action-protect": "Защита",
+       "vector-action-undelete": "Възстановяване",
+       "vector-action-unprotect": "Промяна на защитата",
+       "vector-view-create": "Създаване",
+       "vector-view-edit": "Редактиране",
+       "vector-view-history": "История",
+       "vector-view-view": "Преглед",
+       "vector-view-viewsource": "Преглед на кода"
+}
diff --git a/skins/Vector/i18n/bho.json b/skins/Vector/i18n/bho.json
new file mode 100644 (file)
index 0000000..e41f332
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Ganesh",
+                       "Nepaboy"
+               ]
+       },
+       "vector-action-addsection": "विषय जोड़ीं",
+       "vector-action-delete": "मिटाईं",
+       "vector-action-move": "स्थांतरण",
+       "vector-action-protect": "संरक्षित करीं",
+       "vector-action-undelete": "मत मिटाईं",
+       "vector-action-unprotect": "सुरक्षा बदलीं",
+       "vector-view-create": "बनाईं",
+       "vector-view-edit": "सम्पादन",
+       "vector-view-history": "इतिहास देखीं",
+       "vector-view-view": "पढ़ीं",
+       "vector-view-viewsource": "स्त्रोत देखीं"
+}
diff --git a/skins/Vector/i18n/bi.json b/skins/Vector/i18n/bi.json
new file mode 100644 (file)
index 0000000..a30c41b
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Sotiale"
+               ]
+       },
+       "vector-action-move": "Muv",
+       "vector-view-history": "Lukluk histri",
+       "vector-view-view": "Rid"
+}
diff --git a/skins/Vector/i18n/bjn.json b/skins/Vector/i18n/bjn.json
new file mode 100644 (file)
index 0000000..61cb74e
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Ezagren",
+                       "J Subhi"
+               ]
+       },
+       "vector-action-addsection": "Tambahi tupik",
+       "vector-action-delete": "Hapus",
+       "vector-action-move": "Pindahakan",
+       "vector-action-protect": "Lindungi",
+       "vector-action-undelete": "Pawalangan pahapusan",
+       "vector-action-unprotect": "Palindungan",
+       "vector-view-create": "Ulah",
+       "vector-view-edit": "Babak",
+       "vector-view-history": "Tiringi halam",
+       "vector-view-view": "Baca",
+       "vector-view-viewsource": "Tiringi asal mula"
+}
diff --git a/skins/Vector/i18n/bm.json b/skins/Vector/i18n/bm.json
new file mode 100644 (file)
index 0000000..9164ec8
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Amadouyoro.thiam"
+               ]
+       },
+       "vector-view-view": "Kalan"
+}
diff --git a/skins/Vector/i18n/bn.json b/skins/Vector/i18n/bn.json
new file mode 100644 (file)
index 0000000..a2c37b3
--- /dev/null
@@ -0,0 +1,25 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Aftab1995",
+                       "Bellayet",
+                       "Leemon2010",
+                       "Nasir8891",
+                       "Tauhid16",
+                       "Wikitanvir"
+               ]
+       },
+       "skinname-vector": "ভেক্টর",
+       "vector-action-addsection": "বিষয় যোগ",
+       "vector-action-delete": "অপসারণ",
+       "vector-action-move": "স্থানান্তর",
+       "vector-action-protect": "সুরক্ষা",
+       "vector-action-undelete": "পুনরুদ্ধার",
+       "vector-action-unprotect": "সুরক্ষা পরিবর্তন",
+       "vector-view-create": "তৈরি",
+       "vector-view-edit": "সম্পাদনা",
+       "vector-view-history": "ইতিহাস",
+       "vector-view-view": "পড়ুন",
+       "vector-view-viewsource": "উৎস দেখুন",
+       "vector-more-actions": "আরও"
+}
diff --git a/skins/Vector/i18n/bo.json b/skins/Vector/i18n/bo.json
new file mode 100644 (file)
index 0000000..defe396
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Freeyak",
+                       "Phurbutsering"
+               ]
+       },
+       "vector-action-addsection": "བརྗོད་གཞི་ཁ་སྣོན།",
+       "vector-action-delete": "སུབས།",
+       "vector-action-move": "སྤོར་བ།",
+       "vector-action-protect": "འགོག་སྲུང།",
+       "vector-action-undelete": "མི་བསུབས་",
+       "vector-action-unprotect": "སྲུང་སྐྱོབ་གློད་པ།",
+       "vector-view-create": "གསར་བཟོ།",
+       "vector-view-edit": "རྩོམ་སྒྲིག",
+       "vector-view-history": "ལོ་རྒྱུས་ལ་ལྟ་བ།",
+       "vector-view-view": "ཀློག་པ།",
+       "vector-view-viewsource": "ཁུངས་ལ་ལྟ་བ།"
+}
diff --git a/skins/Vector/i18n/bpy.json b/skins/Vector/i18n/bpy.json
new file mode 100644 (file)
index 0000000..3124363
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Usingha"
+               ]
+       },
+       "vector-action-addsection": "বিষয় তিলকর",
+       "vector-action-delete": "পুসে বেলা",
+       "vector-action-move": "থেইকর",
+       "vector-action-protect": "লুকর",
+       "vector-action-undelete": "নাপুসি",
+       "vector-action-unprotect": "লুকরানিহান সিলকর",
+       "vector-view-create": "হঙকরিক",
+       "vector-view-edit": "পতানি",
+       "vector-view-history": "ইতিহাস চেইক",
+       "vector-view-view": "পাকরিক",
+       "vector-view-viewsource": "সোর্স চেইক"
+}
diff --git a/skins/Vector/i18n/br.json b/skins/Vector/i18n/br.json
new file mode 100644 (file)
index 0000000..9cf579b
--- /dev/null
@@ -0,0 +1,23 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Fulup",
+                       "Y-M D"
+               ]
+       },
+       "skinname-vector": "Vektor",
+       "vector.css": "/* Talvezout a raio ar CSS lakaet amañ evit implijerien ar gwiskadur Vektor */",
+       "vector.js": "/* Kement JavaScript amañ a vo karget evit an implijerien a ra gant ar gwiskadur Vektor */",
+       "vector-action-addsection": "Rannbennad nevez",
+       "vector-action-delete": "Diverkañ",
+       "vector-action-move": "Adenvel",
+       "vector-action-protect": "Gwareziñ",
+       "vector-action-undelete": "Diziverkañ",
+       "vector-action-unprotect": "Cheñch gwarez",
+       "vector-view-create": "Krouiñ",
+       "vector-view-edit": "Kemmañ",
+       "vector-view-history": "Gwelet an istor",
+       "vector-view-view": "Lenn",
+       "vector-view-viewsource": "Sellet ouzh tarzh an destenn",
+       "vector-more-actions": "Muioc'h"
+}
diff --git a/skins/Vector/i18n/brh.json b/skins/Vector/i18n/brh.json
new file mode 100644 (file)
index 0000000..ee435e6
--- /dev/null
@@ -0,0 +1,16 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Imdadb"
+               ]
+       },
+       "vector-action-addsection": "Púskun sarhál",
+       "vector-action-delete": "Mesa",
+       "vector-action-move": "Surif",
+       "vector-action-protect": "Rakk",
+       "vector-view-create": "Biná",
+       "vector-view-edit": "Radbadal",
+       "vector-view-history": "Lekav e ur",
+       "vector-view-view": "Xuán",
+       "vector-view-viewsource": "Bumpad e ur"
+}
diff --git a/skins/Vector/i18n/bs.json b/skins/Vector/i18n/bs.json
new file mode 100644 (file)
index 0000000..f94be4c
--- /dev/null
@@ -0,0 +1,20 @@
+{
+       "@metadata": {
+               "authors": [
+                       "CERminator",
+                       "DzWiki",
+                       "KWiki"
+               ]
+       },
+       "vector-action-addsection": "Dodaj temu",
+       "vector-action-delete": "Izbriši",
+       "vector-action-move": "Preusmjeri",
+       "vector-action-protect": "Zaštiti",
+       "vector-action-undelete": "Vrati obrisano",
+       "vector-action-unprotect": "Promijeni zaštitu",
+       "vector-view-create": "Napravi",
+       "vector-view-edit": "Uredi",
+       "vector-view-history": "Pregled historije",
+       "vector-view-view": "Čitanje",
+       "vector-view-viewsource": "Pogledaj izvor"
+}
diff --git a/skins/Vector/i18n/bug.json b/skins/Vector/i18n/bug.json
new file mode 100644 (file)
index 0000000..b1b0f9e
--- /dev/null
@@ -0,0 +1,12 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Kurniasan"
+               ]
+       },
+       "vector-action-move": "Paléccé'",
+       "vector-view-create": "Ebbu",
+       "vector-view-edit": "Padéccéng",
+       "vector-view-view": "Baca",
+       "vector-view-viewsource": "Ita sumber"
+}
diff --git a/skins/Vector/i18n/bxr.json b/skins/Vector/i18n/bxr.json
new file mode 100644 (file)
index 0000000..64ff413
--- /dev/null
@@ -0,0 +1,16 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Bjargal",
+                       "Elvonudinium"
+               ]
+       },
+       "vector-action-addsection": "Һэдэб нэмэхэ",
+       "vector-action-delete": "Усадхаха",
+       "vector-action-move": "Зөөхэ",
+       "vector-view-create": "Үүдхэхэ",
+       "vector-view-edit": "Заһабарилха",
+       "vector-view-history": "Түүхые хараха",
+       "vector-view-view": "Уншаха",
+       "vector-view-viewsource": "эшэ үндэһэндэнь хандаха"
+}
diff --git a/skins/Vector/i18n/ca.json b/skins/Vector/i18n/ca.json
new file mode 100644 (file)
index 0000000..a371374
--- /dev/null
@@ -0,0 +1,24 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Aleator",
+                       "Anskar",
+                       "Calak",
+                       "Paucabot",
+                       "Ssola",
+                       "Vriullop"
+               ]
+       },
+       "vector-action-addsection": "Nova secció",
+       "vector-action-delete": "Esborra",
+       "vector-action-move": "Reanomena",
+       "vector-action-protect": "Protegeix",
+       "vector-action-undelete": "Restaura",
+       "vector-action-unprotect": "Desprotegeix",
+       "vector-view-create": "Crea",
+       "vector-view-edit": "Modifica",
+       "vector-view-history": "Mostra l'historial",
+       "vector-view-view": "Mostra",
+       "vector-view-viewsource": "Mostra el codi",
+       "vector-more-actions": "Més"
+}
diff --git a/skins/Vector/i18n/cdo.json b/skins/Vector/i18n/cdo.json
new file mode 100644 (file)
index 0000000..2bdcb9f
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Yejianfei"
+               ]
+       },
+       "vector-action-addsection": "加話題",
+       "vector-action-delete": "刪掉咯",
+       "vector-action-move": "移動",
+       "vector-action-protect": "保護",
+       "vector-action-undelete": "取消刪除",
+       "vector-action-unprotect": "改變保護",
+       "vector-view-create": "創建",
+       "vector-view-edit": "修改",
+       "vector-view-history": "看歷史",
+       "vector-view-view": "讀",
+       "vector-view-viewsource": "看源代碼"
+}
diff --git a/skins/Vector/i18n/ce.json b/skins/Vector/i18n/ce.json
new file mode 100644 (file)
index 0000000..75053d7
--- /dev/null
@@ -0,0 +1,21 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Sasan700",
+                       "Умар"
+               ]
+       },
+       "skinname-vector": "Векторан",
+       "vector-action-addsection": "ТӀетоха хьедар",
+       "vector-action-delete": "ДӀаяккха",
+       "vector-action-move": "ЦӀе хийца",
+       "vector-action-protect": "Гlаролла дé",
+       "vector-action-undelete": "МеттахӀоттае",
+       "vector-action-unprotect": "ГӀароллех къаста",
+       "vector-view-create": "Кхоллар",
+       "vector-view-edit": "Нисъе",
+       "vector-view-history": "АгӀона хийцамаш",
+       "vector-view-view": "Éшар",
+       "vector-view-viewsource": "Билглонашка хьажа",
+       "vector-more-actions": "Кхин"
+}
diff --git a/skins/Vector/i18n/ceb.json b/skins/Vector/i18n/ceb.json
new file mode 100644 (file)
index 0000000..e2c631f
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Jordz"
+               ]
+       },
+       "vector-action-addsection": "Pagdugang og topiko",
+       "vector-action-delete": "Papasa",
+       "vector-action-move": "Ibalhin",
+       "vector-action-protect": "Protektahi",
+       "vector-action-undelete": "Ayaw papasa",
+       "vector-action-unprotect": "Ayaw protektahi",
+       "vector-view-create": "Himoa",
+       "vector-view-edit": "Usba",
+       "vector-view-history": "Tan-awa ang kaagi",
+       "vector-view-view": "Basaha",
+       "vector-view-viewsource": "Tan-awa ang ginikanan"
+}
diff --git a/skins/Vector/i18n/ckb.json b/skins/Vector/i18n/ckb.json
new file mode 100644 (file)
index 0000000..0db4670
--- /dev/null
@@ -0,0 +1,21 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Asoxor",
+                       "Calak"
+               ]
+       },
+       "skinname-vector": "ڤێکتۆر",
+       "vector-action-addsection": "بابەت دابنێ",
+       "vector-action-delete": "بیسڕەوە",
+       "vector-action-move": "بیگوازەوە",
+       "vector-action-protect": "بیپارێزە",
+       "vector-action-undelete": "سڕینەوە بگەڕێنەوە",
+       "vector-action-unprotect": "پاراستن بگۆڕە",
+       "vector-view-create": "دروستکردن",
+       "vector-view-edit": "دەستکاریی بکە",
+       "vector-view-history": "مێژووەکەی ببینە",
+       "vector-view-view": "بیخوێنەوە",
+       "vector-view-viewsource": "سەرچاوەکەی ببینە",
+       "vector-more-actions": "زیاتر"
+}
diff --git a/skins/Vector/i18n/co.json b/skins/Vector/i18n/co.json
new file mode 100644 (file)
index 0000000..ad84420
--- /dev/null
@@ -0,0 +1,17 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Paulu"
+               ]
+       },
+       "vector-action-addsection": "Aghjunghje discussione",
+       "vector-action-delete": "Supprimà",
+       "vector-action-move": "Cullucà",
+       "vector-action-protect": "Pruteghje",
+       "vector-action-unprotect": "Cambià a prutezzione",
+       "vector-view-create": "Creà",
+       "vector-view-edit": "Mudificà",
+       "vector-view-history": "Vede a cronolugia",
+       "vector-view-view": "Leghje",
+       "vector-view-viewsource": "Vede a surghjente"
+}
diff --git a/skins/Vector/i18n/cps.json b/skins/Vector/i18n/cps.json
new file mode 100644 (file)
index 0000000..5c40641
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Capisano",
+                       "Oxyzen"
+               ]
+       },
+       "vector-action-addsection": "Magdugang sang topiko",
+       "vector-action-delete": "Panason",
+       "vector-action-move": "Isdogon",
+       "vector-action-protect": "Protektahan",
+       "vector-action-undelete": "Indi pag panason",
+       "vector-action-unprotect": "Islan ang proteksyon",
+       "vector-view-create": "Ubrahon",
+       "vector-view-edit": "Bag-uhon",
+       "vector-view-history": "Ipakita ang kasaysayan",
+       "vector-view-view": "Basahon",
+       "vector-view-viewsource": "Lantawon ang ginhalinan"
+}
diff --git a/skins/Vector/i18n/crh-cyrl.json b/skins/Vector/i18n/crh-cyrl.json
new file mode 100644 (file)
index 0000000..b49a884
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Don Alessandro"
+               ]
+       },
+       "vector-action-addsection": "Мевзу къош",
+       "vector-action-delete": "Ёкъ эт",
+       "vector-action-move": "Адыны денъиштир",
+       "vector-action-protect": "Къорчала",
+       "vector-action-undelete": "Янъыдан ярат",
+       "vector-action-unprotect": "Къорчалавны денъиштир",
+       "vector-view-create": "Ярат",
+       "vector-view-edit": "Денъиштир",
+       "vector-view-history": "Кечмишини косьтер",
+       "vector-view-view": "Окъу",
+       "vector-view-viewsource": "Менба кодуны косьтер"
+}
diff --git a/skins/Vector/i18n/crh-latn.json b/skins/Vector/i18n/crh-latn.json
new file mode 100644 (file)
index 0000000..ad8d58a
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Don Alessandro"
+               ]
+       },
+       "vector-action-addsection": "Mevzu qoş",
+       "vector-action-delete": "Yoq et",
+       "vector-action-move": "Adını deñiştir",
+       "vector-action-protect": "Qorçala",
+       "vector-action-undelete": "Yañıdan yarat",
+       "vector-action-unprotect": "Qorçalavnı deñiştir",
+       "vector-view-create": "Yarat",
+       "vector-view-edit": "Deñiştir",
+       "vector-view-history": "Keçmişini köster",
+       "vector-view-view": "Oqu",
+       "vector-view-viewsource": "Menba kodunı köster"
+}
diff --git a/skins/Vector/i18n/cs.json b/skins/Vector/i18n/cs.json
new file mode 100644 (file)
index 0000000..081783b
--- /dev/null
@@ -0,0 +1,23 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Mormegil"
+               ]
+       },
+       "skinname-vector": "Vektor",
+       "vector-skin-desc": "Moderní verze MonoBooku s novějším vzhledem a vylepšenou použitelností",
+       "vector.css": "/* Zde uvedené CSS bude ovlivňovat pouze styl „Vektor“ */",
+       "vector.js": "/* JavaScript pro uživatele používající vzhled „Vektor“ */",
+       "vector-action-addsection": "Přidat téma",
+       "vector-action-delete": "Smazat",
+       "vector-action-move": "Přesunout",
+       "vector-action-protect": "Zamknout",
+       "vector-action-undelete": "Obnovit",
+       "vector-action-unprotect": "Změnit zámek",
+       "vector-view-create": "Založit",
+       "vector-view-edit": "Editovat",
+       "vector-view-history": "Zobrazit historii",
+       "vector-view-view": "Číst",
+       "vector-view-viewsource": "Zobrazit zdrojový kód",
+       "vector-more-actions": "Další"
+}
diff --git a/skins/Vector/i18n/csb.json b/skins/Vector/i18n/csb.json
new file mode 100644 (file)
index 0000000..56d0930
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Kaszeba",
+                       "Kuvaly"
+               ]
+       },
+       "vector-action-addsection": "Dodôj témã",
+       "vector-action-delete": "Rëmôj",
+       "vector-action-move": "Przeniesë",
+       "vector-action-protect": "Zazychrëjë",
+       "vector-action-undelete": "Doprowôdzë nazôd",
+       "vector-action-unprotect": "Òdzychrëjë",
+       "vector-view-create": "Ùsôdzë",
+       "vector-view-edit": "Edicëjô",
+       "vector-view-history": "Historëjô lopka",
+       "vector-view-view": "Czëtôj",
+       "vector-view-viewsource": "Zdrojowi tekst"
+}
diff --git a/skins/Vector/i18n/cu.json b/skins/Vector/i18n/cu.json
new file mode 100644 (file)
index 0000000..caad73c
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "ОйЛ"
+               ]
+       },
+       "vector-action-addsection": "новꙑ бєсѣдꙑ чѧсти сътворѥниѥ",
+       "vector-action-delete": "поничьжєниѥ",
+       "vector-action-move": "прѣимєнованиѥ",
+       "vector-action-protect": "ꙁабранѥниѥ",
+       "vector-action-unprotect": "иꙁмѣни ꙁабранѥниꙗ обраꙁъ",
+       "vector-view-create": "сътворѥниѥ",
+       "vector-view-edit": "исправи",
+       "vector-view-history": "їсторїꙗ",
+       "vector-view-view": "чьтѥниѥ",
+       "vector-view-viewsource": "страницѧ источьнъ обраꙁъ",
+       "vector-more-actions": "вѧщє"
+}
diff --git a/skins/Vector/i18n/cv.json b/skins/Vector/i18n/cv.json
new file mode 100644 (file)
index 0000000..6206af8
--- /dev/null
@@ -0,0 +1,17 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Chavash",
+                       "FLAGELLVM DEI"
+               ]
+       },
+       "vector-action-addsection": "Тема хуш",
+       "vector-action-delete": "Кăларса пăрах",
+       "vector-action-move": "Ятне улăштар",
+       "vector-action-protect": "Хӳтĕле",
+       "vector-view-create": "Çĕннине ту",
+       "vector-view-edit": "Тӳрлет",
+       "vector-view-history": "Кун-çул",
+       "vector-view-view": "Вула",
+       "vector-view-viewsource": "пуçламăш текста пăх"
+}
diff --git a/skins/Vector/i18n/cy.json b/skins/Vector/i18n/cy.json
new file mode 100644 (file)
index 0000000..99d4dc3
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Lloffiwr"
+               ]
+       },
+       "vector-action-addsection": "Ychwanegu adran",
+       "vector-action-delete": "Dileu",
+       "vector-action-move": "Symud",
+       "vector-action-protect": "Diogelu",
+       "vector-action-undelete": "Adfer",
+       "vector-action-unprotect": "Newid y diogelwch",
+       "vector-view-create": "Dechrau",
+       "vector-view-edit": "Golygu",
+       "vector-view-history": "Gweld yr hanes",
+       "vector-view-view": "Darllen",
+       "vector-view-viewsource": "Dangos côd y dudalen",
+       "vector-more-actions": "Rhagor"
+}
diff --git a/skins/Vector/i18n/da.json b/skins/Vector/i18n/da.json
new file mode 100644 (file)
index 0000000..ad56101
--- /dev/null
@@ -0,0 +1,20 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Byrial",
+                       "Christian List",
+                       "Peter Alberti"
+               ]
+       },
+       "vector-action-addsection": "Nyt emne",
+       "vector-action-delete": "Slet",
+       "vector-action-move": "Flyt",
+       "vector-action-protect": "Beskyt",
+       "vector-action-undelete": "Gendan",
+       "vector-action-unprotect": "Ændr beskyttelse",
+       "vector-view-create": "Opret",
+       "vector-view-edit": "Redigér",
+       "vector-view-history": "Se historik",
+       "vector-view-view": "Læs",
+       "vector-view-viewsource": "Se kilden"
+}
diff --git a/skins/Vector/i18n/de.json b/skins/Vector/i18n/de.json
new file mode 100644 (file)
index 0000000..eefc7ab
--- /dev/null
@@ -0,0 +1,26 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Kghbln",
+                       "Metalhead64",
+                       "The Evil IP address",
+                       "Umherirrender"
+               ]
+       },
+       "skinname-vector": "Vector",
+       "vector-skin-desc": "Moderne Version von Monobook mit frischem Aussehen und vielen Verbesserungen an der Benutzerfreundlichkeit",
+       "vector.css": "/* Das folgende CSS wird für Benutzer der Vector-Benutzeroberfläche geladen. Für allgemeingültige Benutzeroberflächen-Anpassungen bitte [[MediaWiki:Common.css]] bearbeiten. */",
+       "vector.js": "/* Das folgende JavaScript wird für Benutzer der Vector-Benutzeroberfläche geladen. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */",
+       "vector-action-addsection": "Abschnitt hinzufügen",
+       "vector-action-delete": "Löschen",
+       "vector-action-move": "Verschieben",
+       "vector-action-protect": "Schützen",
+       "vector-action-undelete": "Wiederherstellen",
+       "vector-action-unprotect": "Seitenschutz ändern",
+       "vector-view-create": "Erstellen",
+       "vector-view-edit": "Bearbeiten",
+       "vector-view-history": "Versionsgeschichte",
+       "vector-view-view": "Lesen",
+       "vector-view-viewsource": "Quelltext anzeigen",
+       "vector-more-actions": "Mehr"
+}
diff --git a/skins/Vector/i18n/diq.json b/skins/Vector/i18n/diq.json
new file mode 100644 (file)
index 0000000..5ba4455
--- /dev/null
@@ -0,0 +1,23 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Asmen",
+                       "Calak",
+                       "Erdemaslancan",
+                       "Mirzali"
+               ]
+       },
+       "skinname-vector": "Vektor",
+       "vector-action-addsection": "Mewzu vıraze",
+       "vector-action-delete": "Bestere",
+       "vector-action-move": "Bere",
+       "vector-action-protect": "Bışevekne",
+       "vector-action-undelete": "Esterıtışi peyser bıgê",
+       "vector-action-unprotect": "Starkerdışi bıvurne",
+       "vector-view-create": "Vıraze",
+       "vector-view-edit": "Bıvurne",
+       "vector-view-history": "Tarixê pele bıvêne",
+       "vector-view-view": "Bıwane",
+       "vector-view-viewsource": "Çımey bıvêne",
+       "vector-more-actions": "Zêde"
+}
diff --git a/skins/Vector/i18n/dsb.json b/skins/Vector/i18n/dsb.json
new file mode 100644 (file)
index 0000000..7220f36
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Michawiki"
+               ]
+       },
+       "vector-action-addsection": "Temu pśidaś",
+       "vector-action-delete": "Wulašowaś",
+       "vector-action-move": "Pśesunuś",
+       "vector-action-protect": "Šćitaś",
+       "vector-action-undelete": "Wótnowiś",
+       "vector-action-unprotect": "Šćit změniś",
+       "vector-view-create": "Napóraś",
+       "vector-view-edit": "Wobźěłaś",
+       "vector-view-history": "Wersije a awtory",
+       "vector-view-view": "Cytaś",
+       "vector-view-viewsource": "Žrědło se woglědaś"
+}
diff --git a/skins/Vector/i18n/dtp.json b/skins/Vector/i18n/dtp.json
new file mode 100644 (file)
index 0000000..a337040
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "FRANCIS5091",
+                       "FRANELYA"
+               ]
+       },
+       "vector-action-addsection": "Ruhangai piboboroson",
+       "vector-action-delete": "Pugaso",
+       "vector-action-move": "Poundoliho",
+       "vector-action-protect": "Tingoligai",
+       "vector-action-undelete": "Kada pugaso",
+       "vector-action-unprotect": "Alanai tingolig",
+       "vector-view-create": "Pomonsoi",
+       "vector-view-edit": "Idito",
+       "vector-view-history": "Intaai susuyan",
+       "vector-view-view": "Basao",
+       "vector-view-viewsource": "Intaai wowonod"
+}
diff --git a/skins/Vector/i18n/dv.json b/skins/Vector/i18n/dv.json
new file mode 100644 (file)
index 0000000..9e53056
--- /dev/null
@@ -0,0 +1,17 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Ushau97"
+               ]
+       },
+       "vector-action-addsection": "ޚިޔާލެއް އިތުރުކުރައްވާ",
+       "vector-action-delete": "ފޮހެލައްވާ",
+       "vector-action-move": "ތަން ބަދަލުކުރައްވާ",
+       "vector-action-protect": "ދިފާޢުކުރައްވާ",
+       "vector-action-unprotect": "ދިފާޢުކުރުން ބަދަލުކުރައްވާ",
+       "vector-view-create": "ފަށްޓަވާ",
+       "vector-view-edit": "އުނިއިތުރު ގެންނަވާ",
+       "vector-view-history": "ޞަފްޙާގެ ތާރީޚް",
+       "vector-view-view": "ކިޔުއްވާ",
+       "vector-view-viewsource": "މަސްދަރު ބައްލަވާ"
+}
diff --git a/skins/Vector/i18n/ee.json b/skins/Vector/i18n/ee.json
new file mode 100644 (file)
index 0000000..2214755
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Natsubee"
+               ]
+       },
+       "vector-action-delete": "Tutui",
+       "vector-action-move": "Ɖɔli eƒe nɔƒe",
+       "vector-view-create": "Dze egɔme",
+       "vector-view-edit": "Trɔ asi le eŋu",
+       "vector-view-history": "Kpɔ xoxoawo",
+       "vector-view-view": "Xlẽ",
+       "vector-view-viewsource": "Kpɔ alesi woŋlɔe"
+}
diff --git a/skins/Vector/i18n/egl.json b/skins/Vector/i18n/egl.json
new file mode 100644 (file)
index 0000000..a819ab0
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Lévi"
+               ]
+       },
+       "vector-action-addsection": "Zûnta discusiòun",
+       "vector-action-delete": "Scanşèla",
+       "vector-action-move": "Spôsta",
+       "vector-action-protect": "Prutēz",
+       "vector-action-undelete": "Fà al recóper",
+       "vector-action-unprotect": "Câmbia la prutesiòun",
+       "vector-view-create": "Invèinta",
+       "vector-view-edit": "Mudéfica",
+       "vector-view-history": "Guêrda la stôria",
+       "vector-view-view": "Lēş",
+       "vector-view-viewsource": "Guêrda la surzéia",
+       "vector-more-actions": "Êter"
+}
diff --git a/skins/Vector/i18n/el.json b/skins/Vector/i18n/el.json
new file mode 100644 (file)
index 0000000..06fa36b
--- /dev/null
@@ -0,0 +1,26 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Calak",
+                       "Crazymadlover",
+                       "Evropi",
+                       "Omnipaedista",
+                       "Protnet",
+                       "ZaDiak"
+               ]
+       },
+       "vector.css": "/* Το τοποθετημένο εδώ CSS θα επηρεάσει χρήστες του Vector skin */",
+       "vector.js": "/* Οποιοσδήποτε κώδικας JavaScript εδώ θα φορτωθεί για χρήστες που χρησιμοποιούν το Vector skin */",
+       "vector-action-addsection": "Προσθήκη θέματος",
+       "vector-action-delete": "Διαγραφή",
+       "vector-action-move": "Μετακίνηση",
+       "vector-action-protect": "Προστασία",
+       "vector-action-undelete": "Επαναφορά",
+       "vector-action-unprotect": "Αλλαγή προστασίας",
+       "vector-view-create": "Δημιουργία",
+       "vector-view-edit": "Επεξεργασία",
+       "vector-view-history": "Προβολή ιστορικού",
+       "vector-view-view": "Ανάγνωση",
+       "vector-view-viewsource": "Προβολή κώδικα",
+       "vector-more-actions": "Περισσότερα"
+}
index 6742f2a..949218e 100644 (file)
@@ -3,7 +3,7 @@
                "authors": []
        },
        "skinname-vector": "Vector",
-       "vector-desc": "Modern version of MonoBook with fresh look and many usability improvements",
+       "vector-skin-desc": "Modern version of MonoBook with fresh look and many usability improvements",
        "vector.css": "/* CSS placed here will affect users of the Vector skin */",
        "vector.js": "/* Any JavaScript here will be loaded for users using the Vector skin */",
        "vector-action-addsection": "Add topic",
diff --git a/skins/Vector/i18n/eo.json b/skins/Vector/i18n/eo.json
new file mode 100644 (file)
index 0000000..5f92fe8
--- /dev/null
@@ -0,0 +1,24 @@
+{
+       "@metadata": {
+               "authors": [
+                       "KuboF",
+                       "Objectivesea",
+                       "Yekrats"
+               ]
+       },
+       "skinname-vector": "Vektoro",
+       "vector.css": "/* La jena CSS influos la paĝaspekton por uzantoj de la Vektora temo. */",
+       "vector.js": "/* La jena Ĝavaskripto ŝargiĝos por uzantoj de la Vektora temo. */",
+       "vector-action-addsection": "Aldoni temon",
+       "vector-action-delete": "Forigi",
+       "vector-action-move": "Alinomigi",
+       "vector-action-protect": "Protekti",
+       "vector-action-undelete": "Malforigi",
+       "vector-action-unprotect": "Ŝanĝi protektadon",
+       "vector-view-create": "Krei",
+       "vector-view-edit": "Redakti",
+       "vector-view-history": "Vidi historion",
+       "vector-view-view": "Legi",
+       "vector-view-viewsource": "Vidi fonton",
+       "vector-more-actions": "Pli"
+}
diff --git a/skins/Vector/i18n/es-formal.json b/skins/Vector/i18n/es-formal.json
new file mode 100644 (file)
index 0000000..a666c05
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "XanaG"
+               ]
+       },
+       "vector-view-edit": "Editar",
+       "vector-view-history": "Ver historial",
+       "vector-view-view": "Leer"
+}
diff --git a/skins/Vector/i18n/es.json b/skins/Vector/i18n/es.json
new file mode 100644 (file)
index 0000000..75352a5
--- /dev/null
@@ -0,0 +1,32 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Armando-Martin",
+                       "Crazymadlover",
+                       "Dalton2",
+                       "Fitoschido",
+                       "Locos epraix",
+                       "Manuelt15",
+                       "MarcoAurelio",
+                       "Miguel2706",
+                       "Platonides",
+                       "Vivaelcelta"
+               ]
+       },
+       "skinname-vector": "Vector",
+       "vector-skin-desc": "Versión moderna de MonoBook, con un aspecto actualizado y muchas mejoras de usabilidad",
+       "vector.css": "/* El CSS colocado en esta página afectará a los usuarios que usen la apariencia \"Vector\" */",
+       "vector.js": "/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la apariencia Vector */",
+       "vector-action-addsection": "Sección nueva",
+       "vector-action-delete": "Borrar",
+       "vector-action-move": "Trasladar",
+       "vector-action-protect": "Proteger",
+       "vector-action-undelete": "Restaurar",
+       "vector-action-unprotect": "Cambiar protección",
+       "vector-view-create": "Crear",
+       "vector-view-edit": "Editar",
+       "vector-view-history": "Ver historial",
+       "vector-view-view": "Leer",
+       "vector-view-viewsource": "Ver código",
+       "vector-more-actions": "Más"
+}
diff --git a/skins/Vector/i18n/esu.json b/skins/Vector/i18n/esu.json
new file mode 100644 (file)
index 0000000..b32ac1d
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "@metadata": {
+               "authors": [
+                       "82-145"
+               ]
+       },
+       "vector-action-move": "Atra cimirtuq",
+       "vector-view-view": "Naaqe"
+}
diff --git a/skins/Vector/i18n/et.json b/skins/Vector/i18n/et.json
new file mode 100644 (file)
index 0000000..718b93c
--- /dev/null
@@ -0,0 +1,22 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Ker",
+                       "Pikne",
+                       "WikedKentaur"
+               ]
+       },
+       "skinname-vector": "Vektor",
+       "vector-action-addsection": "Lisa teema",
+       "vector-action-delete": "Kustuta",
+       "vector-action-move": "Teisalda",
+       "vector-action-protect": "Kaitse",
+       "vector-action-undelete": "Taasta",
+       "vector-action-unprotect": "Muuda kaitset",
+       "vector-view-create": "Loo",
+       "vector-view-edit": "Muuda",
+       "vector-view-history": "Näita ajalugu",
+       "vector-view-view": "Vaata",
+       "vector-view-viewsource": "Vaata lähteteksti",
+       "vector-more-actions": "Veel"
+}
diff --git a/skins/Vector/i18n/eu.json b/skins/Vector/i18n/eu.json
new file mode 100644 (file)
index 0000000..856742c
--- /dev/null
@@ -0,0 +1,21 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Unai Fdz. de Betoño",
+                       "Xabier Armendaritz",
+                       "Fitoschido"
+               ]
+       },
+       "vector-action-addsection": "Gehitu atala",
+       "vector-action-delete": "Ezabatu",
+       "vector-action-move": "Mugitu",
+       "vector-action-protect": "Babestu",
+       "vector-action-undelete": "Berreskuratu",
+       "vector-action-unprotect": "Babesa aldatu",
+       "vector-view-create": "Sortu",
+       "vector-view-edit": "Aldatu",
+       "vector-view-history": "Ikusi historia",
+       "vector-view-view": "Irakurri",
+       "vector-view-viewsource": "Kodea ikusia",
+       "vector-more-actions": "Gehiago"
+}
diff --git a/skins/Vector/i18n/ext.json b/skins/Vector/i18n/ext.json
new file mode 100644 (file)
index 0000000..1cf9a4f
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Better"
+               ]
+       },
+       "vector-action-addsection": "Añiil tema",
+       "vector-action-delete": "Esborral",
+       "vector-action-move": "Mual",
+       "vector-action-protect": "Protegel",
+       "vector-action-undelete": "Esborral",
+       "vector-action-unprotect": "Esprotegel",
+       "vector-view-create": "Crial",
+       "vector-view-edit": "Eital",
+       "vector-view-history": "Guipal estorial",
+       "vector-view-view": "Leyel",
+       "vector-view-viewsource": "Guipal cóigu"
+}
diff --git a/skins/Vector/i18n/fa.json b/skins/Vector/i18n/fa.json
new file mode 100644 (file)
index 0000000..1d329ff
--- /dev/null
@@ -0,0 +1,25 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Calak",
+                       "Ebraminio",
+                       "Huji",
+                       "Reza1615",
+                       "Zack90"
+               ]
+       },
+       "skinname-vector": "برداری",
+       "vector-skin-desc": "نسخه مدرن منوبوک با نگاه تازه و بهبود قابلیت استفاده",
+       "vector-action-addsection": "افزودن بخش",
+       "vector-action-delete": "حذف",
+       "vector-action-move": "انتقال",
+       "vector-action-protect": "محافظت",
+       "vector-action-undelete": "احیا",
+       "vector-action-unprotect": "تغییر سطح حفاظت",
+       "vector-view-create": "ایجاد",
+       "vector-view-edit": "ویرایش",
+       "vector-view-history": "نمایش تاریخچه",
+       "vector-view-view": "خواندن",
+       "vector-view-viewsource": "نمایش مبدأ",
+       "vector-more-actions": "بیشتر"
+}
diff --git a/skins/Vector/i18n/ff.json b/skins/Vector/i18n/ff.json
new file mode 100644 (file)
index 0000000..ac3ee5b
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Ibrahima"
+               ]
+       },
+       "vector-action-addsection": "Ɓeydi toɓɓere",
+       "vector-action-move": "Dirtin",
+       "vector-view-create": "Sos",
+       "vector-view-edit": "Taƴto",
+       "vector-view-history": "Yiyto aslol",
+       "vector-view-view": "Tar",
+       "vector-view-viewsource": "Yiyto ɗaɗol"
+}
diff --git a/skins/Vector/i18n/fi.json b/skins/Vector/i18n/fi.json
new file mode 100644 (file)
index 0000000..7533689
--- /dev/null
@@ -0,0 +1,24 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Crt",
+                       "Nedergard",
+                       "Nike",
+                       "Pxos"
+               ]
+       },
+       "vector.css": "/* Tämä sivu sisältää Vector-ulkoasua muuttavia tyylejä. */",
+       "vector.js": "/* Tämän sivun JavaScript-koodi liitetään Vector-tyyliin */",
+       "vector-action-addsection": "Lisää aihe",
+       "vector-action-delete": "Poista",
+       "vector-action-move": "Siirrä",
+       "vector-action-protect": "Suojaa",
+       "vector-action-undelete": "Palauta",
+       "vector-action-unprotect": "Muuta suojausta",
+       "vector-view-create": "Luo",
+       "vector-view-edit": "Muokkaa",
+       "vector-view-history": "Näytä historia",
+       "vector-view-view": "Lue",
+       "vector-view-viewsource": "Näytä lähdekoodi",
+       "vector-more-actions": "Muut"
+}
diff --git a/skins/Vector/i18n/fit.json b/skins/Vector/i18n/fit.json
new file mode 100644 (file)
index 0000000..46089ae
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Mestos"
+               ]
+       },
+       "vector-action-addsection": "Lissää aine",
+       "vector-action-delete": "Ota poies",
+       "vector-action-move": "Siirä",
+       "vector-action-protect": "Suojaa",
+       "vector-action-undelete": "Pane takashiin",
+       "vector-action-unprotect": "Muuta suojaa",
+       "vector-view-create": "Luo",
+       "vector-view-edit": "Mookkaa",
+       "vector-view-history": "Näytä histuuria",
+       "vector-view-view": "Lue",
+       "vector-view-viewsource": "Näytä lähekooti"
+}
diff --git a/skins/Vector/i18n/fo.json b/skins/Vector/i18n/fo.json
new file mode 100644 (file)
index 0000000..46f272c
--- /dev/null
@@ -0,0 +1,20 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Diupwijk",
+                       "EileenSanda"
+               ]
+       },
+       "vector-action-addsection": "Nýtt evni",
+       "vector-action-delete": "Strika",
+       "vector-action-move": "Flyt",
+       "vector-action-protect": "Friða",
+       "vector-action-undelete": "Endurstovna",
+       "vector-action-unprotect": "Broyt verju",
+       "vector-view-create": "Stovna",
+       "vector-view-edit": "Rætta",
+       "vector-view-history": "Vís søgu",
+       "vector-view-view": "Les",
+       "vector-view-viewsource": "Vís keldu",
+       "vector-more-actions": "Meira"
+}
diff --git a/skins/Vector/i18n/fr.json b/skins/Vector/i18n/fr.json
new file mode 100644 (file)
index 0000000..623fda8
--- /dev/null
@@ -0,0 +1,28 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Akeron",
+                       "Crochet.david",
+                       "DavidL",
+                       "Gomoko",
+                       "Jean-Frédéric",
+                       "Od1n"
+               ]
+       },
+       "skinname-vector": "Vector",
+       "vector-skin-desc": "Version moderne de MonoBook avec un aspect rajeuni et beaucoup d’améliorations ergonomiques",
+       "vector.css": "/* Le CSS placé ici affectera les utilisateurs de l’habillage Vector. */",
+       "vector.js": "/* Tout code JavaScript placé ici sera chargé pour les utilisateurs de l’habillage Vector */",
+       "vector-action-addsection": "Ajouter un sujet",
+       "vector-action-delete": "Supprimer",
+       "vector-action-move": "Renommer",
+       "vector-action-protect": "Protéger",
+       "vector-action-undelete": "Rétablir",
+       "vector-action-unprotect": "Changer la protection",
+       "vector-view-create": "Créer",
+       "vector-view-edit": "Modifier",
+       "vector-view-history": "Historique",
+       "vector-view-view": "Lire",
+       "vector-view-viewsource": "Voir la source",
+       "vector-more-actions": "Plus"
+}
diff --git a/skins/Vector/i18n/frc.json b/skins/Vector/i18n/frc.json
new file mode 100644 (file)
index 0000000..f13d8ce
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Ebe123"
+               ]
+       },
+       "vector-action-delete": "Supprimer",
+       "vector-action-protect": "Protéger"
+}
diff --git a/skins/Vector/i18n/frp.json b/skins/Vector/i18n/frp.json
new file mode 100644 (file)
index 0000000..4f0c3bc
--- /dev/null
@@ -0,0 +1,21 @@
+{
+       "@metadata": {
+               "authors": [
+                       "ChrisPtDe"
+               ]
+       },
+       "skinname-vector": "Vèctor",
+       "vector.css": "/* Lo code CSS betâ ique afècterat los usanciérs de l’habelyâjo « Vèctor ». */",
+       "vector.js": "/* Tot code JavaScript betâ ique serat chargiê per los usanciérs de l’habelyâjo « Vèctor ». */",
+       "vector-action-addsection": "Apondre na chousa",
+       "vector-action-delete": "Suprimar",
+       "vector-action-move": "Dèplaciér",
+       "vector-action-protect": "Protègiér",
+       "vector-action-undelete": "Refâre",
+       "vector-action-unprotect": "Changiér la protèccion",
+       "vector-view-create": "Fâre",
+       "vector-view-edit": "Changiér",
+       "vector-view-history": "Vêre l’historico",
+       "vector-view-view": "Liére",
+       "vector-view-viewsource": "Vêre lo tèxto sôrsa"
+}
diff --git a/skins/Vector/i18n/frr.json b/skins/Vector/i18n/frr.json
new file mode 100644 (file)
index 0000000..f9ff0a3
--- /dev/null
@@ -0,0 +1,21 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Murma174",
+                       "Pyt"
+               ]
+       },
+       "vector-skin-desc": "Modern werjuun faan Monobook mä frisk skak an föl muar mögelkhaiden",
+       "vector-action-addsection": "Nei kirew began",
+       "vector-action-delete": "Strik",
+       "vector-action-move": "Fersküüw",
+       "vector-action-protect": "Seekre",
+       "vector-action-undelete": "Weder iinstel",
+       "vector-action-unprotect": "Sidjenseekerhaid",
+       "vector-view-create": "Maage",
+       "vector-view-edit": "Bewerke",
+       "vector-view-history": "Ferluup uunluke",
+       "vector-view-view": "Lees",
+       "vector-view-viewsource": "Kweltekst uunluke",
+       "vector-more-actions": "Muar"
+}
diff --git a/skins/Vector/i18n/fur.json b/skins/Vector/i18n/fur.json
new file mode 100644 (file)
index 0000000..9df1846
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Klenje",
+                       "Tocaibon"
+               ]
+       },
+       "vector-action-addsection": "Gnove sezion",
+       "vector-action-delete": "Elimine",
+       "vector-action-move": "Môf",
+       "vector-action-protect": "Protêç",
+       "vector-action-undelete": "Recupere",
+       "vector-action-unprotect": "Gambie la protezion",
+       "vector-view-create": "Cree",
+       "vector-view-edit": "Cambie",
+       "vector-view-history": "Cjale il storic",
+       "vector-view-view": "Lei",
+       "vector-view-viewsource": "Cjale risultive"
+}
diff --git a/skins/Vector/i18n/fy.json b/skins/Vector/i18n/fy.json
new file mode 100644 (file)
index 0000000..328193d
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Kening Aldgilles",
+                       "SK-luuut"
+               ]
+       },
+       "vector-action-delete": "Fuortsmite",
+       "vector-action-move": "Werneam",
+       "vector-action-protect": "Beskermje",
+       "vector-action-undelete": "Tebeksette",
+       "vector-action-unprotect": "Beskerming fuorthelje",
+       "vector-view-create": "Oanmeitsje",
+       "vector-view-edit": "Wizigje",
+       "vector-view-history": "Skiednis sjen litte",
+       "vector-view-view": "Lês",
+       "vector-view-viewsource": "Besjoch de boarne"
+}
diff --git a/skins/Vector/i18n/ga.json b/skins/Vector/i18n/ga.json
new file mode 100644 (file)
index 0000000..81f4caa
--- /dev/null
@@ -0,0 +1,21 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Kscanne",
+                       "Kwekubo",
+                       "Moydow"
+               ]
+       },
+       "skinname-vector": "Veicteoir",
+       "vector-action-addsection": "Cuir topaic leis",
+       "vector-action-delete": "Scrios",
+       "vector-action-move": "Athainmnigh",
+       "vector-action-protect": "Glasáil",
+       "vector-action-undelete": "Díscrios",
+       "vector-action-unprotect": "Díghlasáil",
+       "vector-view-create": "Cruthaigh",
+       "vector-view-edit": "Athraigh an lch seo",
+       "vector-view-history": "Féach ar stair",
+       "vector-view-view": "Léigh",
+       "vector-view-viewsource": "Féach ar fhoinse"
+}
diff --git a/skins/Vector/i18n/gag.json b/skins/Vector/i18n/gag.json
new file mode 100644 (file)
index 0000000..4f45473
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Cuman",
+                       "Emperyan"
+               ]
+       },
+       "vector-view-edit": "Diiştir",
+       "vector-view-view": "Oku"
+}
diff --git a/skins/Vector/i18n/gan-hans.json b/skins/Vector/i18n/gan-hans.json
new file mode 100644 (file)
index 0000000..5c0db67
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Liangent",
+                       "Xiaomingyan"
+               ]
+       },
+       "vector-action-addsection": "添主题",
+       "vector-action-delete": "删吥",
+       "vector-action-move": "移吥",
+       "vector-action-protect": "护到",
+       "vector-action-undelete": "望下删吥𠮶页面",
+       "vector-action-unprotect": "更改保护",
+       "vector-view-create": "创建",
+       "vector-view-edit": "编辑",
+       "vector-view-history": "望下历史",
+       "vector-view-view": "读",
+       "vector-view-viewsource": "望下原始码"
+}
diff --git a/skins/Vector/i18n/gan-hant.json b/skins/Vector/i18n/gan-hant.json
new file mode 100644 (file)
index 0000000..ceb23b5
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Symane"
+               ]
+       },
+       "vector-action-addsection": "添主題",
+       "vector-action-delete": "刪吥",
+       "vector-action-move": "移吥",
+       "vector-action-protect": "護到",
+       "vector-action-undelete": "望下刪吥嗰頁面",
+       "vector-action-unprotect": "解除保護",
+       "vector-view-create": "創建",
+       "vector-view-edit": "編輯",
+       "vector-view-history": "望下歷史",
+       "vector-view-view": "讀",
+       "vector-view-viewsource": "望下原始碼"
+}
diff --git a/skins/Vector/i18n/gd.json b/skins/Vector/i18n/gd.json
new file mode 100644 (file)
index 0000000..04fa42b
--- /dev/null
@@ -0,0 +1,21 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Akerbeltz",
+                       "GunChleoc"
+               ]
+       },
+       "vector-skin-desc": "Tionndadh ùr-nodha de MonoBook le dreach ùr air 's iomadh leasachadh air a sho-chleachdachd",
+       "vector-action-addsection": "Cuir ris cuspair",
+       "vector-action-delete": "Sguab às",
+       "vector-action-move": "Gluais",
+       "vector-action-protect": "Dìon",
+       "vector-action-undelete": "Neo-dhèan an sguabadh às",
+       "vector-action-unprotect": "Atharraich an dìon",
+       "vector-view-create": "Cruthaich",
+       "vector-view-edit": "Deasaich",
+       "vector-view-history": "Seall an eachdraidh",
+       "vector-view-view": "Leugh",
+       "vector-view-viewsource": "Seall an tùs",
+       "vector-more-actions": "Barrachd"
+}
diff --git a/skins/Vector/i18n/gl.json b/skins/Vector/i18n/gl.json
new file mode 100644 (file)
index 0000000..de19c39
--- /dev/null
@@ -0,0 +1,23 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Elisardojm",
+                       "Toliño",
+                       "Vivaelcelta"
+               ]
+       },
+       "vector.css": "/* O CSS que se coloque aquí afectará a quen use a aparencia Vector */",
+       "vector.js": "/* Calquera JavaScript que haxa aquí será cargado para os usuarios que usen a aparencia Vector */",
+       "vector-action-addsection": "Nova sección",
+       "vector-action-delete": "Borrar",
+       "vector-action-move": "Mover",
+       "vector-action-protect": "Protexer",
+       "vector-action-undelete": "Restaurar",
+       "vector-action-unprotect": "Cambiar a protección",
+       "vector-view-create": "Crear",
+       "vector-view-edit": "Editar",
+       "vector-view-history": "Ver o historial",
+       "vector-view-view": "Ler",
+       "vector-view-viewsource": "Ver o código fonte",
+       "vector-more-actions": "Máis"
+}
diff --git a/skins/Vector/i18n/gom-deva.json b/skins/Vector/i18n/gom-deva.json
new file mode 100644 (file)
index 0000000..044d43c
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Darshan kandolkar",
+                       "Pooja tople",
+                       "Sanket.prabhu26",
+                       "Supriya kankumbikar"
+               ]
+       },
+       "vector-action-addsection": "माथाळो दियात",
+       "vector-action-delete": "काडून उडयात",
+       "vector-action-move": "दुसरेकडे व्हरात",
+       "vector-action-protect": "राख",
+       "vector-view-create": "निर्माण कर",
+       "vector-view-edit": "बदल",
+       "vector-view-history": "इतिहास पळेयात",
+       "vector-view-view": "वाचचें",
+       "vector-view-viewsource": "उगम पळेयात"
+}
diff --git a/skins/Vector/i18n/gom-latn.json b/skins/Vector/i18n/gom-latn.json
new file mode 100644 (file)
index 0000000..37a3117
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Isidore Dantas",
+                       "The Discoverer"
+               ]
+       },
+       "vector-action-addsection": "Vixoi zodd",
+       "vector-action-delete": "Kadd",
+       "vector-action-move": "Zago bodol",
+       "vector-action-protect": "Rakh",
+       "vector-view-create": "Roch",
+       "vector-view-edit": "Sudar",
+       "vector-view-history": "Itihas polloi",
+       "vector-view-view": "Vach",
+       "vector-view-viewsource": "Mull polloi",
+       "vector-more-actions": "Anik"
+}
diff --git a/skins/Vector/i18n/grc.json b/skins/Vector/i18n/grc.json
new file mode 100644 (file)
index 0000000..c22ebf1
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Crazymadlover",
+                       "Omnipaedista"
+               ]
+       },
+       "vector-action-addsection": "Θέμα προστιθέναι",
+       "vector-action-delete": "Σβεννύναι",
+       "vector-action-move": "Κινεῖν",
+       "vector-action-protect": "Φυλάττειν",
+       "vector-action-undelete": "Ἀποκαθιστάναι",
+       "vector-action-unprotect": "Ἄλλαξον τὴν φύλαξιν",
+       "vector-view-create": "Ποιεῖν",
+       "vector-view-edit": "Μεταγράφειν",
+       "vector-view-history": "Ἱστορίαν ὁρᾶν",
+       "vector-view-view": "Ἀναγνῶναι",
+       "vector-view-viewsource": "Ὁρᾶν τὴν πηγήν"
+}
diff --git a/skins/Vector/i18n/gsw.json b/skins/Vector/i18n/gsw.json
new file mode 100644 (file)
index 0000000..90b3e73
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Als-Holder"
+               ]
+       },
+       "vector-action-addsection": "Abschnitt zuefiege",
+       "vector-action-delete": "Lesche",
+       "vector-action-move": "Verschiebe",
+       "vector-action-protect": "Schitze",
+       "vector-action-undelete": "Widerhärstelle",
+       "vector-action-unprotect": "Syteschutz ändere",
+       "vector-view-create": "Aalege",
+       "vector-view-edit": "Bearbeite",
+       "vector-view-history": "Versionsgschicht",
+       "vector-view-view": "Läse",
+       "vector-view-viewsource": "Quälltext aaluege"
+}
diff --git a/skins/Vector/i18n/gu.json b/skins/Vector/i18n/gu.json
new file mode 100644 (file)
index 0000000..6d7dc1d
--- /dev/null
@@ -0,0 +1,20 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Aritra",
+                       "Ashok modhvadia",
+                       "Dsvyas"
+               ]
+       },
+       "vector-action-addsection": "નવી ચર્ચા",
+       "vector-action-delete": "રદ કરો",
+       "vector-action-move": "ખસેડો",
+       "vector-action-protect": "સુરક્ષિત કરો",
+       "vector-action-undelete": "રદ કરેલું પાછું વાળો",
+       "vector-action-unprotect": "સુરક્ષા બદલો",
+       "vector-view-create": "બનાવો",
+       "vector-view-edit": "ફેરફાર કરો",
+       "vector-view-history": "ઇતિહાસ જુઓ",
+       "vector-view-view": "વાંચો",
+       "vector-view-viewsource": "સ્રોત જુઓ"
+}
diff --git a/skins/Vector/i18n/guc.json b/skins/Vector/i18n/guc.json
new file mode 100644 (file)
index 0000000..e69fac5
--- /dev/null
@@ -0,0 +1,15 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Maor X"
+               ]
+       },
+       "vector-action-delete": "Ojuichajaa",
+       "vector-action-move": "Ansülaa",
+       "vector-action-protect": "Eisalajaa",
+       "vector-view-create": "Akumajaa",
+       "vector-view-edit": "Anaataa",
+       "vector-view-history": "Achikii a'wanajaayamaajatü",
+       "vector-view-view": "Aashaje'eraa",
+       "vector-view-viewsource": "Anüliaa eejeetülee"
+}
diff --git a/skins/Vector/i18n/gv.json b/skins/Vector/i18n/gv.json
new file mode 100644 (file)
index 0000000..9be429f
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "MacTire02",
+                       "Shimmin Beg"
+               ]
+       },
+       "vector-action-addsection": "Cur cooish noa rish",
+       "vector-action-delete": "Scryss",
+       "vector-action-move": "Scugh",
+       "vector-action-protect": "Coadee",
+       "vector-action-undelete": "Jee-scryss",
+       "vector-action-unprotect": "Caghlaa coadey",
+       "vector-view-create": "Croo",
+       "vector-view-edit": "Reagh",
+       "vector-view-history": "Jeeagh er shennaghys",
+       "vector-view-view": "Lhaih",
+       "vector-view-viewsource": "Jeeagh er bun"
+}
diff --git a/skins/Vector/i18n/ha.json b/skins/Vector/i18n/ha.json
new file mode 100644 (file)
index 0000000..77e4975
--- /dev/null
@@ -0,0 +1,6 @@
+{
+       "vector-action-delete": "Soke",
+       "vector-action-move": "Gusarwa",
+       "vector-action-protect": "A kare",
+       "vector-view-create": "Ƙirƙira"
+}
diff --git a/skins/Vector/i18n/hak.json b/skins/Vector/i18n/hak.json
new file mode 100644 (file)
index 0000000..ed0c0cb
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Anson2812",
+                       "Jetlag"
+               ]
+       },
+       "vector-action-addsection": "加入話題",
+       "vector-action-delete": "刪除",
+       "vector-action-move": "移動",
+       "vector-action-protect": "保護",
+       "vector-action-undelete": "恢復",
+       "vector-action-unprotect": "更改保護",
+       "vector-view-create": "建立",
+       "vector-view-edit": "編寫",
+       "vector-view-history": "查看歷史",
+       "vector-view-view": "閱讀",
+       "vector-view-viewsource": "查看源碼"
+}
diff --git a/skins/Vector/i18n/haw.json b/skins/Vector/i18n/haw.json
new file mode 100644 (file)
index 0000000..98e2919
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Kolonahe"
+               ]
+       },
+       "vector-action-addsection": "Hoʻohui kumuhana",
+       "vector-action-delete": "Holoi",
+       "vector-action-move": "E hoʻoneʻe",
+       "vector-action-protect": "E hoʻomalu",
+       "vector-action-undelete": "Holoiʻole",
+       "vector-action-unprotect": "E hoʻololi i ka hoʻomalu",
+       "vector-view-create": "Haku",
+       "vector-view-edit": "Hoʻololi",
+       "vector-view-history": "Nānā i ka mōʻaukala",
+       "vector-view-view": "Heluhelu",
+       "vector-view-viewsource": "Nānā i ke kumu"
+}
diff --git a/skins/Vector/i18n/he.json b/skins/Vector/i18n/he.json
new file mode 100644 (file)
index 0000000..08a9023
--- /dev/null
@@ -0,0 +1,23 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Amire80",
+                       "Rotemliss"
+               ]
+       },
+       "skinname-vector": "וקטור",
+       "vector.css": "/* הסגנונות הנכתבים כאן ישפיעו על העיצוב Vector בלבד */",
+       "vector.js": "/* כל סקריפט JavaScript שנכתב כאן ירוץ רק עבור המשתמשים בעיצוב Vector */",
+       "vector-action-addsection": "הוספת נושא",
+       "vector-action-delete": "מחיקה",
+       "vector-action-move": "העברה",
+       "vector-action-protect": "הגנה",
+       "vector-action-undelete": "ביטול מחיקה",
+       "vector-action-unprotect": "שינוי הגנה",
+       "vector-view-create": "יצירה",
+       "vector-view-edit": "עריכה",
+       "vector-view-history": "הצגת היסטוריה",
+       "vector-view-view": "קריאה",
+       "vector-view-viewsource": "הצגת מקור",
+       "vector-more-actions": "עוד"
+}
diff --git a/skins/Vector/i18n/hi.json b/skins/Vector/i18n/hi.json
new file mode 100644 (file)
index 0000000..5b5f56b
--- /dev/null
@@ -0,0 +1,20 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Siddhartha Ghai",
+                       "आलोक",
+                       "रोहित रावत"
+               ]
+       },
+       "vector-action-addsection": "विषय जोड़ें",
+       "vector-action-delete": "हटाएँ",
+       "vector-action-move": "स्थानांतरण करें",
+       "vector-action-protect": "सुरक्षित करें",
+       "vector-action-undelete": "हटाना वापस लें",
+       "vector-action-unprotect": "सुरक्षा बदलें",
+       "vector-view-create": "बनाएँ",
+       "vector-view-edit": "सम्पादन",
+       "vector-view-history": "इतिहास देखें",
+       "vector-view-view": "पढ़ें",
+       "vector-view-viewsource": "स्रोत देखें"
+}
diff --git a/skins/Vector/i18n/hif-latn.json b/skins/Vector/i18n/hif-latn.json
new file mode 100644 (file)
index 0000000..df37b3e
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Girmitya",
+                       "Thakurji"
+               ]
+       },
+       "vector-action-addsection": "Topic jorro",
+       "vector-action-delete": "Mitao",
+       "vector-action-move": "Naam badlo",
+       "vector-action-protect": "Bachao",
+       "vector-action-undelete": "Pahile jaise karo",
+       "vector-action-unprotect": "Surakchha ke badlo",
+       "vector-view-create": "Banao",
+       "vector-view-edit": "Badlo",
+       "vector-view-history": "Itihaas dekho",
+       "vector-view-view": "Parrho",
+       "vector-view-viewsource": "Source dekho"
+}
diff --git a/skins/Vector/i18n/hil.json b/skins/Vector/i18n/hil.json
new file mode 100644 (file)
index 0000000..304f8ac
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Anjoeli9806"
+               ]
+       },
+       "vector-action-addsection": "Magdugang sang topiko",
+       "vector-action-delete": "Panason",
+       "vector-action-move": "Saylohon",
+       "vector-action-protect": "Pangapinan",
+       "vector-action-undelete": "Dulaon ang pagpanas",
+       "vector-action-unprotect": "Ilisan ang pagpangapin",
+       "vector-view-create": "Himuon",
+       "vector-view-edit": "Ilisan",
+       "vector-view-history": "Lantawon ang kasaysayan",
+       "vector-view-view": "Magbasa",
+       "vector-view-viewsource": "Lantawon ang ginhalinan"
+}
diff --git a/skins/Vector/i18n/hr.json b/skins/Vector/i18n/hr.json
new file mode 100644 (file)
index 0000000..1887ee5
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Ex13",
+                       "Tivek"
+               ]
+       },
+       "vector-action-addsection": "Dodaj temu",
+       "vector-action-delete": "Izbriši",
+       "vector-action-move": "Premjesti",
+       "vector-action-protect": "Zaštiti",
+       "vector-action-undelete": "Vrati",
+       "vector-action-unprotect": "Promijeni zaštitu",
+       "vector-view-create": "Započni",
+       "vector-view-edit": "Uredi",
+       "vector-view-history": "Vidi stare izmjene",
+       "vector-view-view": "Čitaj",
+       "vector-view-viewsource": "Vidi izvor"
+}
diff --git a/skins/Vector/i18n/hrx.json b/skins/Vector/i18n/hrx.json
new file mode 100644 (file)
index 0000000..0a45056
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Paul Beppler"
+               ]
+       },
+       "vector-action-addsection": "Abschnitt hinzufüche",
+       "vector-action-delete": "Lösche",
+       "vector-action-move": "Verschiebe",
+       "vector-action-protect": "Schütz",
+       "vector-action-undelete": "Wiederherstelle",
+       "vector-action-unprotect": "Seiteschutz ännre",
+       "vector-view-create": "Erstell",
+       "vector-view-edit": "Beoorbeite",
+       "vector-view-history": "Versionsgeschicht",
+       "vector-view-view": "Lese",
+       "vector-view-viewsource": "Quelltext oonzeiche"
+}
diff --git a/skins/Vector/i18n/hsb.json b/skins/Vector/i18n/hsb.json
new file mode 100644 (file)
index 0000000..a46105c
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Michawiki"
+               ]
+       },
+       "vector-action-addsection": "Temu přidać",
+       "vector-action-delete": "wušmórnyć",
+       "vector-action-move": "přesunyć",
+       "vector-action-protect": "škitać",
+       "vector-action-undelete": "Wobnowić",
+       "vector-action-unprotect": "Škit wotstronić",
+       "vector-view-create": "Wutworić",
+       "vector-view-edit": "Wobdźěłać",
+       "vector-view-history": "Stawizny",
+       "vector-view-view": "Čitać",
+       "vector-view-viewsource": "Žórło sej wobhladać",
+       "vector-more-actions": "Wjace"
+}
diff --git a/skins/Vector/i18n/hsn.json b/skins/Vector/i18n/hsn.json
new file mode 100644 (file)
index 0000000..99d8dec
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "YulouCN"
+               ]
+       },
+       "vector-view-edit": "增改",
+       "vector-view-history": "履歷",
+       "vector-view-view": "讀"
+}
diff --git a/skins/Vector/i18n/ht.json b/skins/Vector/i18n/ht.json
new file mode 100644 (file)
index 0000000..f71167a
--- /dev/null
@@ -0,0 +1,20 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Boukman",
+                       "Internoob",
+                       "Masterches"
+               ]
+       },
+       "vector-action-addsection": "Ajoute yon sijè",
+       "vector-action-delete": "Efase",
+       "vector-action-move": "Chanje non",
+       "vector-action-protect": "Pwoteje",
+       "vector-action-undelete": "Retabli",
+       "vector-action-unprotect": "Pa pwoteje",
+       "vector-view-create": "Kreye",
+       "vector-view-edit": "Modifye",
+       "vector-view-history": "Gade istorik",
+       "vector-view-view": "Li",
+       "vector-view-viewsource": "Wè kòd tèks sa a"
+}
diff --git a/skins/Vector/i18n/hu-formal.json b/skins/Vector/i18n/hu-formal.json
new file mode 100644 (file)
index 0000000..4c9fcad
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Tacsipacsi"
+               ]
+       },
+       "vector-action-addsection": "Új téma nyitása",
+       "vector-action-delete": "Törlés",
+       "vector-action-move": "Átnevezés",
+       "vector-action-protect": "Lapvédelem",
+       "vector-action-undelete": "Visszaállítás",
+       "vector-action-unprotect": "Védelem módosítása",
+       "vector-view-create": "Létrehozás",
+       "vector-view-edit": "Szerkesztés",
+       "vector-view-history": "Laptörténet",
+       "vector-view-view": "Olvasás",
+       "vector-view-viewsource": "A lap forrása"
+}
diff --git a/skins/Vector/i18n/hu.json b/skins/Vector/i18n/hu.json
new file mode 100644 (file)
index 0000000..a144ece
--- /dev/null
@@ -0,0 +1,26 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Bdamokos",
+                       "Dani",
+                       "Dj",
+                       "Misibacsi",
+                       "Tacsipacsi",
+                       "Tgr"
+               ]
+       },
+       "vector.css": "/* Az ide elhelyezett CSS hatással lesz a Vector felület használóira */",
+       "vector.js": "/* A Vector felületet használó szerkesztők számára betöltendő JavaScriptek */",
+       "vector-action-addsection": "Új téma nyitása",
+       "vector-action-delete": "Törlés",
+       "vector-action-move": "Átnevezés",
+       "vector-action-protect": "Lapvédelem",
+       "vector-action-undelete": "Visszaállítás",
+       "vector-action-unprotect": "Védelem módosítása",
+       "vector-view-create": "Létrehozás",
+       "vector-view-edit": "Szerkesztés",
+       "vector-view-history": "Laptörténet",
+       "vector-view-view": "Olvasás",
+       "vector-view-viewsource": "A lap forrása",
+       "vector-more-actions": "Több"
+}
diff --git a/skins/Vector/i18n/hy.json b/skins/Vector/i18n/hy.json
new file mode 100644 (file)
index 0000000..f8b322d
--- /dev/null
@@ -0,0 +1,21 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Teak",
+                       "Vadgt",
+                       "Xelgen"
+               ]
+       },
+       "skinname-vector": "Սովորական",
+       "vector-action-addsection": "Ավելացնել քննարկում",
+       "vector-action-delete": "Ջնջել",
+       "vector-action-move": "Տեղափոխել այս էջը",
+       "vector-action-protect": "Պաշտպանել",
+       "vector-action-undelete": "Վերականգնել",
+       "vector-action-unprotect": "Փոխել պաշտպանումը",
+       "vector-view-create": "Ստեղծել",
+       "vector-view-edit": "Խմբագրել",
+       "vector-view-history": "Դիտել պատմությունը",
+       "vector-view-view": "Կարդալ",
+       "vector-view-viewsource": "Դիտել ելատեքստը"
+}
diff --git a/skins/Vector/i18n/ia.json b/skins/Vector/i18n/ia.json
new file mode 100644 (file)
index 0000000..c1281fc
--- /dev/null
@@ -0,0 +1,22 @@
+{
+       "@metadata": {
+               "authors": [
+                       "McDutchie"
+               ]
+       },
+       "vector-skin-desc": "Version moderne de MonoBook con aspecto rejuvenescite e multe meliorationes de usabilitate.",
+       "vector.css": "/* Le CSS placiate hic afficera le usatores del apparentia Vector */",
+       "vector.js": "/* Omne JavaScript hic se executara pro le usatores del apparentia Vector */",
+       "vector-action-addsection": "Adder topico",
+       "vector-action-delete": "Deler",
+       "vector-action-move": "Renominar",
+       "vector-action-protect": "Proteger",
+       "vector-action-undelete": "Restaurar",
+       "vector-action-unprotect": "Cambiar protection",
+       "vector-view-create": "Crear",
+       "vector-view-edit": "Modificar",
+       "vector-view-history": "Vider historia",
+       "vector-view-view": "Leger",
+       "vector-view-viewsource": "Vider texto fonte",
+       "vector-more-actions": "Plus"
+}
diff --git a/skins/Vector/i18n/id.json b/skins/Vector/i18n/id.json
new file mode 100644 (file)
index 0000000..3116632
--- /dev/null
@@ -0,0 +1,26 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Arifin.wijaya",
+                       "Bennylin",
+                       "Farras",
+                       "Iwan Novirion",
+                       "Rex"
+               ]
+       },
+       "skinname-vector": "Vektor",
+       "vector.css": "/* CSS nan ado di siko diterapkan pado kulik Vektor. */",
+       "vector.js": "/* Semua JavaScript di sini akan dimuatkan untuk para pengguna yang menggunakan kulit Vector */",
+       "vector-action-addsection": "Bagian baru",
+       "vector-action-delete": "Hapus",
+       "vector-action-move": "Pindahkan",
+       "vector-action-protect": "Lindungi",
+       "vector-action-undelete": "Pembatalan penghapusan",
+       "vector-action-unprotect": "Ubah perlindungan",
+       "vector-view-create": "Buat",
+       "vector-view-edit": "Sunting",
+       "vector-view-history": "Versi terdahulu",
+       "vector-view-view": "Baca",
+       "vector-view-viewsource": "Lihat sumber",
+       "vector-more-actions": "Lainnya"
+}
diff --git a/skins/Vector/i18n/ie.json b/skins/Vector/i18n/ie.json
new file mode 100644 (file)
index 0000000..259b88b
--- /dev/null
@@ -0,0 +1,21 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Makuba",
+                       "Renan"
+               ]
+       },
+       "vector.css": "/* CSS colocat ci va afectar usatores de pelle Vector */",
+       "vector.js": "/* Alquel JavaScript ci va esser cargat por usatores que usa li pelle Vector */",
+       "vector-action-addsection": "Adjunter tema",
+       "vector-action-delete": "Deleter",
+       "vector-action-move": "Mover",
+       "vector-action-protect": "Gardar",
+       "vector-action-undelete": "Restituer",
+       "vector-action-unprotect": "Desgardar",
+       "vector-view-create": "Crear",
+       "vector-view-edit": "Redacter",
+       "vector-view-history": "Historie de versiones",
+       "vector-view-view": "Leer",
+       "vector-view-viewsource": "Vider fonte"
+}
diff --git a/skins/Vector/i18n/ig.json b/skins/Vector/i18n/ig.json
new file mode 100644 (file)
index 0000000..66e93cc
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Ukabia"
+               ]
+       },
+       "vector-action-addsection": "Tinyé Okwu",
+       "vector-action-delete": "Kàcha",
+       "vector-action-move": "Páfụ",
+       "vector-action-protect": "Cẹdolu",
+       "vector-action-undelete": "Á gbàkashikwà",
+       "vector-action-unprotect": "Nchẹdo mgbanwe",
+       "vector-view-create": "Ké",
+       "vector-view-edit": "Mèzi",
+       "vector-view-history": "Zí ịta",
+       "vector-view-view": "Gụ́",
+       "vector-view-viewsource": "Zi mkpurụ"
+}
diff --git a/skins/Vector/i18n/ike-latn.json b/skins/Vector/i18n/ike-latn.json
new file mode 100644 (file)
index 0000000..ab22a4a
--- /dev/null
@@ -0,0 +1,3 @@
+{
+       "vector-view-edit": "Suqusiqpaa"
+}
diff --git a/skins/Vector/i18n/ilo.json b/skins/Vector/i18n/ilo.json
new file mode 100644 (file)
index 0000000..817c75f
--- /dev/null
@@ -0,0 +1,20 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Lam-ang",
+                       "Saluyot"
+               ]
+       },
+       "vector-action-addsection": "Agnayon ti topiko",
+       "vector-action-delete": "Ikkaten",
+       "vector-action-move": "Iyalis",
+       "vector-action-protect": "Salakniban",
+       "vector-action-undelete": "Isubli ti inikkat",
+       "vector-action-unprotect": "Sukatan ti salaknib",
+       "vector-view-create": "Agaramid",
+       "vector-view-edit": "Urnosen",
+       "vector-view-history": "Kitaen ti pakasaritaan",
+       "vector-view-view": "Basaen",
+       "vector-view-viewsource": "Kitaen ti taudan",
+       "vector-more-actions": "Adu pay"
+}
diff --git a/skins/Vector/i18n/inh.json b/skins/Vector/i18n/inh.json
new file mode 100644 (file)
index 0000000..e50a3ec
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Amire80",
+                       "Sapral Mikail"
+               ]
+       },
+       "vector-action-addsection": "БӀагал тӀатоха",
+       "vector-action-delete": "ДӀадаккха",
+       "vector-action-move": "ЦӀи хувца",
+       "vector-action-protect": "Лораде",
+       "vector-action-undelete": "Юхаоттаде",
+       "vector-action-unprotect": "Лорам хувца",
+       "vector-view-create": "Кхолларле",
+       "vector-view-edit": "Хувцам",
+       "vector-view-history": "Искар",
+       "vector-view-view": "Дешар",
+       "vector-view-viewsource": "Зембакхама бӀаргтассам"
+}
diff --git a/skins/Vector/i18n/io.json b/skins/Vector/i18n/io.json
new file mode 100644 (file)
index 0000000..3bfec4d
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Malafaya"
+               ]
+       },
+       "vector-action-addsection": "Adjuntar topiko",
+       "vector-action-delete": "Efacar",
+       "vector-action-move": "Movar",
+       "vector-action-protect": "Protektar",
+       "vector-action-undelete": "Rekuperar",
+       "vector-action-unprotect": "Desprotektar",
+       "vector-view-create": "Krear",
+       "vector-view-edit": "Redaktar",
+       "vector-view-history": "Vidar versionaro",
+       "vector-view-view": "Lektar",
+       "vector-view-viewsource": "Vidar fonto"
+}
diff --git a/skins/Vector/i18n/is.json b/skins/Vector/i18n/is.json
new file mode 100644 (file)
index 0000000..dc54f1b
--- /dev/null
@@ -0,0 +1,21 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Friðrik Bragi Dýrfjörð",
+                       "Maxí",
+                       "Snævar",
+                       "Ævar Arnfjörð Bjarmason"
+               ]
+       },
+       "vector-action-addsection": "Bæta við umræðu",
+       "vector-action-delete": "Eyða",
+       "vector-action-move": "Færa",
+       "vector-action-protect": "Vernda",
+       "vector-action-undelete": "Hætta við eyðingu",
+       "vector-action-unprotect": "Breyta verndunarstigi",
+       "vector-view-create": "Skapa",
+       "vector-view-edit": "Breyta",
+       "vector-view-history": "Breytingaskrá",
+       "vector-view-view": "Lesa",
+       "vector-view-viewsource": "Sýna frumkóða"
+}
diff --git a/skins/Vector/i18n/it.json b/skins/Vector/i18n/it.json
new file mode 100644 (file)
index 0000000..1598efe
--- /dev/null
@@ -0,0 +1,26 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Beta16",
+                       "Darth Kule",
+                       "Gianfranco",
+                       "Melos",
+                       "Pietrodn"
+               ]
+       },
+       "vector-skin-desc": "Versione moderna del MonoBook con un'aspetto nuovo e molti miglioramenti dell'usabilità",
+       "vector.css": "/* Gli stili CSS inseriti qui si applicano agli utenti che usano la skin Vector */",
+       "vector.js": "/* Il codice JavaScript inserito qui viene caricato dagli utenti che usano la skin Vector */",
+       "vector-action-addsection": "Aggiungi discussione",
+       "vector-action-delete": "Cancella",
+       "vector-action-move": "Sposta",
+       "vector-action-protect": "Proteggi",
+       "vector-action-undelete": "Ripristina",
+       "vector-action-unprotect": "Cambia la protezione",
+       "vector-view-create": "Crea",
+       "vector-view-edit": "Modifica",
+       "vector-view-history": "Cronologia",
+       "vector-view-view": "Leggi",
+       "vector-view-viewsource": "Visualizza sorgente",
+       "vector-more-actions": "Altro"
+}
diff --git a/skins/Vector/i18n/izh.json b/skins/Vector/i18n/izh.json
new file mode 100644 (file)
index 0000000..ab41111
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Aig mest ei varasta"
+               ]
+       },
+       "vector-view-view": "Lukkiia"
+}
diff --git a/skins/Vector/i18n/ja.json b/skins/Vector/i18n/ja.json
new file mode 100644 (file)
index 0000000..7bfa57e
--- /dev/null
@@ -0,0 +1,27 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Fryed-peach",
+                       "Marine-Blue",
+                       "Penn Station",
+                       "Shirayuki",
+                       "Whym",
+                       "青子守歌"
+               ]
+       },
+       "skinname-vector": "ベクター",
+       "vector.css": "/* ここに記述したCSSはベクター外装の利用者に影響します */",
+       "vector.js": "/* ここにあるすべてのJavaScriptは、ベクター外装を使用している利用者に対して読み込まれます */",
+       "vector-action-addsection": "話題追加",
+       "vector-action-delete": "削除",
+       "vector-action-move": "移動",
+       "vector-action-protect": "保護",
+       "vector-action-undelete": "復元",
+       "vector-action-unprotect": "保護再設定",
+       "vector-view-create": "作成",
+       "vector-view-edit": "編集",
+       "vector-view-history": "履歴表示",
+       "vector-view-view": "閲覧",
+       "vector-view-viewsource": "ソースを閲覧",
+       "vector-more-actions": "その他"
+}
diff --git a/skins/Vector/i18n/jam.json b/skins/Vector/i18n/jam.json
new file mode 100644 (file)
index 0000000..cf84305
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Hazard-SJ",
+                       "Yocahuna"
+               ]
+       },
+       "vector-action-addsection": "Ad tapik",
+       "vector-action-delete": "Diliit",
+       "vector-action-move": "Muuv",
+       "vector-action-protect": "Protek",
+       "vector-action-undelete": "Andiliit",
+       "vector-action-unprotect": "Neu protektian",
+       "vector-view-create": "Kriet",
+       "vector-view-edit": "Hedit",
+       "vector-view-history": "Vyuu ischri",
+       "vector-view-view": "Riid",
+       "vector-view-viewsource": "Vyuu Suos"
+}
diff --git a/skins/Vector/i18n/jbo.json b/skins/Vector/i18n/jbo.json
new file mode 100644 (file)
index 0000000..bc1f172
--- /dev/null
@@ -0,0 +1,17 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Gleki"
+               ]
+       },
+       "vector-action-addsection": "jmina la'e se casnu",
+       "vector-action-delete": "vimcu",
+       "vector-action-move": "stika lo cmene",
+       "vector-action-protect": "bandu",
+       "vector-view-create": "zbasu",
+       "vector-view-edit": "stika",
+       "vector-view-history": "lo ckupau citri",
+       "vector-view-view": "tcidu",
+       "vector-view-viewsource": "cpacu lo krasi",
+       "vector-more-actions": "ji'a"
+}
diff --git a/skins/Vector/i18n/jv.json b/skins/Vector/i18n/jv.json
new file mode 100644 (file)
index 0000000..7af6b95
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Pras"
+               ]
+       },
+       "vector-action-addsection": "Tambah topik",
+       "vector-action-delete": "Busak",
+       "vector-action-move": "Pindhahna",
+       "vector-action-protect": "Reksa",
+       "vector-action-undelete": "Batalna pambusakan",
+       "vector-action-unprotect": "Owahi pangreksan",
+       "vector-view-create": "Gawé",
+       "vector-view-edit": "Sunting",
+       "vector-view-history": "Sajarah kaca",
+       "vector-view-view": "Waca",
+       "vector-view-viewsource": "Pirsani sumber"
+}
diff --git a/skins/Vector/i18n/ka.json b/skins/Vector/i18n/ka.json
new file mode 100644 (file)
index 0000000..a08fe71
--- /dev/null
@@ -0,0 +1,23 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Alsandro",
+                       "David1010",
+                       "გიორგიმელა"
+               ]
+       },
+       "skinname-vector": "ვექტორული",
+       "vector.css": "/* აქ ჩასმული CSS გამოყენებული იქნება ვექტორული გაფორმების თემაში */",
+       "vector-action-addsection": "თემის ჩამატება",
+       "vector-action-delete": "წაშლა",
+       "vector-action-move": "გადატანა",
+       "vector-action-protect": "დაცვა",
+       "vector-action-undelete": "აღდგენა",
+       "vector-action-unprotect": "დაცვის შეცვლა",
+       "vector-view-create": "შექმნა",
+       "vector-view-edit": "რედაქტირება",
+       "vector-view-history": "ისტორია",
+       "vector-view-view": "შემოწმებული სტატია",
+       "vector-view-viewsource": "წყაროს ხილვა",
+       "vector-more-actions": "მეტი"
+}
diff --git a/skins/Vector/i18n/kaa.json b/skins/Vector/i18n/kaa.json
new file mode 100644 (file)
index 0000000..1518526
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Atabek"
+               ]
+       },
+       "vector-action-addsection": "Tema qosıw",
+       "vector-action-delete": "O'shiriw",
+       "vector-action-move": "Ko'shiriw",
+       "vector-action-protect": "Qorg'aw",
+       "vector-action-undelete": "Qayta tiklew",
+       "vector-action-unprotect": "Qorg'awdı o'zgertiw",
+       "vector-view-create": "Jaratıw",
+       "vector-view-edit": "O'zgertiw",
+       "vector-view-history": "Tariyxın ko'riw",
+       "vector-view-view": "Oqıw",
+       "vector-view-viewsource": "Deregin ko'riw"
+}
diff --git a/skins/Vector/i18n/kab.json b/skins/Vector/i18n/kab.json
new file mode 100644 (file)
index 0000000..f233083
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Mmistmurt"
+               ]
+       },
+       "vector-action-addsection": "Rnud ameggay",
+       "vector-action-delete": "Mḥu",
+       "vector-action-move": "Smimeḍ",
+       "vector-action-protect": "Mmesten",
+       "vector-action-undelete": "Uɣaled",
+       "vector-action-unprotect": "Beddel amesten",
+       "vector-view-create": "Snulfu",
+       "vector-view-edit": "Ẓẓiẓreg",
+       "vector-view-history": "Ẓeṛ amazray",
+       "vector-view-view": "Ɣer",
+       "vector-view-viewsource": "Ẓer aɣbalu"
+}
diff --git a/skins/Vector/i18n/kbd-cyrl.json b/skins/Vector/i18n/kbd-cyrl.json
new file mode 100644 (file)
index 0000000..efd893e
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Bogups",
+                       "Тамэ Балъкъэрхэ"
+               ]
+       },
+       "vector-action-addsection": "Теухугъуэ щӀэуэ щӀэдзэн",
+       "vector-action-delete": "Ихын",
+       "vector-action-move": "ЦӀэр хъуэжын",
+       "vector-action-protect": "Хъумэн",
+       "vector-action-undelete": "ЗыфӀэгъэувэжын",
+       "vector-action-unprotect": "Хъумэныр техыжын",
+       "vector-view-create": "ЩӀын",
+       "vector-view-edit": "Гъэтэрэзын",
+       "vector-view-history": "Тхыдэм еплъын",
+       "vector-view-view": "Еджэн",
+       "vector-view-viewsource": "КъызхэкӀам еплъын"
+}
diff --git a/skins/Vector/i18n/kg.json b/skins/Vector/i18n/kg.json
new file mode 100644 (file)
index 0000000..f88430a
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Rkupsala"
+               ]
+       },
+       "vector-action-delete": "Kufwa",
+       "vector-action-move": "Nata",
+       "vector-action-protect": "Keba",
+       "vector-view-create": "Tunga",
+       "vector-view-edit": "Soba",
+       "vector-view-history": "Tala bansoba",
+       "vector-view-view": "Tânga"
+}
diff --git a/skins/Vector/i18n/khw.json b/skins/Vector/i18n/khw.json
new file mode 100644 (file)
index 0000000..a0ceaca
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Rachitrali"
+               ]
+       },
+       "vector-action-addsection": "نوغ موضوع",
+       "vector-action-delete": "بوغاوے",
+       "vector-action-move": "منتقل کورے",
+       "vector-action-protect": "محفوظ کورے",
+       "vector-action-undelete": "اچی انگیے",
+       "vector-action-unprotect": "غیر محفوظ",
+       "vector-view-create": "ساوزاوے",
+       "vector-view-edit": "ایڈٹ کورے",
+       "vector-view-history": "تاریخچہ",
+       "vector-view-view": "راوے",
+       "vector-view-viewsource": "مسودہ"
+}
diff --git a/skins/Vector/i18n/ki.json b/skins/Vector/i18n/ki.json
new file mode 100644 (file)
index 0000000..30f6a5f
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Stephenwanjau"
+               ]
+       },
+       "vector-action-delete": "Futa"
+}
diff --git a/skins/Vector/i18n/kiu.json b/skins/Vector/i18n/kiu.json
new file mode 100644 (file)
index 0000000..3d2c3cc
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Mirzali"
+               ]
+       },
+       "vector-action-addsection": "Mewzu ilawe ke",
+       "vector-action-delete": "Bestere",
+       "vector-action-move": "Bere",
+       "vector-action-protect": "Bısevekne",
+       "vector-action-undelete": "Esterıtene peyser bıcê",
+       "vector-action-unprotect": "Rake",
+       "vector-view-create": "Vıraze",
+       "vector-view-edit": "Bıvurne",
+       "vector-view-history": "Tarixi basne",
+       "vector-view-view": "Bıwane",
+       "vector-view-viewsource": "Çımey bıvêne"
+}
diff --git a/skins/Vector/i18n/kk-cyrl.json b/skins/Vector/i18n/kk-cyrl.json
new file mode 100644 (file)
index 0000000..3593350
--- /dev/null
@@ -0,0 +1,22 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Arystanbek",
+                       "Daniyar",
+                       "GaiJin",
+                       "Kaztrans"
+               ]
+       },
+       "vector-action-addsection": "Тақырып қосу",
+       "vector-action-delete": "Жою",
+       "vector-action-move": "Атауын өзгерту",
+       "vector-action-protect": "Қорғау",
+       "vector-action-undelete": "Жоймау",
+       "vector-action-unprotect": "Қорғанысын өзгерту",
+       "vector-view-create": "Бастау",
+       "vector-view-edit": "Өңдеу",
+       "vector-view-history": "Өңделу тарихы",
+       "vector-view-view": "Оқу",
+       "vector-view-viewsource": "Қайнарын қарау",
+       "vector-more-actions": "Тағы"
+}
diff --git a/skins/Vector/i18n/kl.json b/skins/Vector/i18n/kl.json
new file mode 100644 (file)
index 0000000..6a3d7b1
--- /dev/null
@@ -0,0 +1,15 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Iketsi",
+                       "Qaqqalik"
+               ]
+       },
+       "vector-action-addsection": "Imm. nutaaq",
+       "vector-action-move": "Nuuguk",
+       "vector-view-create": "Pilersiguk",
+       "vector-view-edit": "Aaqqissoruk",
+       "vector-view-history": "Oqalutt.",
+       "vector-view-view": "Takuuk",
+       "vector-view-viewsource": "Toqqavia takuuk"
+}
diff --git a/skins/Vector/i18n/km.json b/skins/Vector/i18n/km.json
new file mode 100644 (file)
index 0000000..6827117
--- /dev/null
@@ -0,0 +1,21 @@
+{
+       "@metadata": {
+               "authors": [
+                       "គីមស៊្រុន",
+                       "វ័ណថារិទ្ធ"
+               ]
+       },
+       "skinname-vector": "វ៉ិចទ័រ​​",
+       "vector.css": "/* CSS បានដាក់ទីនេះនឹងមានអនុភាពលើអ្នកប្រើប្រាស់នៃសំបក Vector */",
+       "vector-action-addsection": "បន្ថែម​ប្រធានបទ​",
+       "vector-action-delete": "លុបចោល",
+       "vector-action-move": "ប្តូរទីតាំង",
+       "vector-action-protect": "ការពារ",
+       "vector-action-undelete": "ឈប់លុបចោល",
+       "vector-action-unprotect": "ប្ដូរការការពារ",
+       "vector-view-create": "បង្កើត​",
+       "vector-view-edit": "កែប្រែ​",
+       "vector-view-history": "មើល​ប្រវត្តិ​",
+       "vector-view-view": "អាន",
+       "vector-view-viewsource": "មើល​កូដ"
+}
diff --git a/skins/Vector/i18n/kn.json b/skins/Vector/i18n/kn.json
new file mode 100644 (file)
index 0000000..aae7272
--- /dev/null
@@ -0,0 +1,20 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Ktkaushik",
+                       "Nayvik",
+                       "VASANTH S.N."
+               ]
+       },
+       "vector-action-addsection": "ವಿಷಯ ಸೇರಿಸಿ",
+       "vector-action-delete": "ಅಳಿಸು",
+       "vector-action-move": "ಸ್ಥಳಾಂತರಿಸಿ",
+       "vector-action-protect": "ಸಂರಕ್ಷಿಸು",
+       "vector-action-undelete": "ಅಳಿಸಬೇಡ",
+       "vector-action-unprotect": "ರಕ್ಷಣೆಯನ್ನು ಬದಲಾವಣೆ",
+       "vector-view-create": "ಸೃಷ್ಟಿಸು",
+       "vector-view-edit": "ಸಂಪಾದಿಸಿ",
+       "vector-view-history": "ಇತಿಹಾಸವನ್ನು ನೋಡಿ",
+       "vector-view-view": "ಓದು",
+       "vector-view-viewsource": "ಆಕರ ವೀಕ್ಷಿಸು"
+}
diff --git a/skins/Vector/i18n/ko.json b/skins/Vector/i18n/ko.json
new file mode 100644 (file)
index 0000000..038f342
--- /dev/null
@@ -0,0 +1,25 @@
+{
+       "@metadata": {
+               "authors": [
+                       "ITurtle",
+                       "Kwj2772",
+                       "아라"
+               ]
+       },
+       "skinname-vector": "벡터",
+       "vector-skin-desc": "모노북 스킨을 사용할 때 사용자 인터페이스를 향상합니다",
+       "vector.css": "/* 이 CSS 설정은 벡터 스킨을 사용하는 사용자에게 적용됩니다 */",
+       "vector.js": "/* 이 자바스크립트 설정은 벡터 스킨을 사용하는 사용자에게 적용됩니다 */",
+       "vector-action-addsection": "새 주제",
+       "vector-action-delete": "삭제",
+       "vector-action-move": "옮기기",
+       "vector-action-protect": "보호",
+       "vector-action-undelete": "삭제 취소",
+       "vector-action-unprotect": "보호 설정 바꾸기",
+       "vector-view-create": "만들기",
+       "vector-view-edit": "편집",
+       "vector-view-history": "역사 보기",
+       "vector-view-view": "읽기",
+       "vector-view-viewsource": "원본 보기",
+       "vector-more-actions": "더 보기"
+}
diff --git a/skins/Vector/i18n/koi.json b/skins/Vector/i18n/koi.json
new file mode 100644 (file)
index 0000000..1753f44
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Enye Lav"
+               ]
+       },
+       "vector-action-delete": "Чышкыны",
+       "vector-view-view": "Лыддьöтны"
+}
diff --git a/skins/Vector/i18n/krc.json b/skins/Vector/i18n/krc.json
new file mode 100644 (file)
index 0000000..cdb2f55
--- /dev/null
@@ -0,0 +1,21 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Iltever",
+                       "Къарачайлы"
+               ]
+       },
+       "skinname-vector": "Вектор",
+       "vector-action-addsection": "Джангы тема къош",
+       "vector-action-delete": "Кетер",
+       "vector-action-move": "Атын ауушдур",
+       "vector-action-protect": "Джакъла",
+       "vector-action-undelete": "Къайтар",
+       "vector-action-unprotect": "Джакълауну тюрлендир",
+       "vector-view-create": "Къура",
+       "vector-view-edit": "Тюрлендир",
+       "vector-view-history": "Тарихи",
+       "vector-view-view": "Окъу",
+       "vector-view-viewsource": "Кодха къара",
+       "vector-more-actions": "Энтда"
+}
diff --git a/skins/Vector/i18n/kri.json b/skins/Vector/i18n/kri.json
new file mode 100644 (file)
index 0000000..056a9e5
--- /dev/null
@@ -0,0 +1,16 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Protostar"
+               ]
+       },
+       "vector-action-addsection": "Add tòpik",
+       "vector-action-delete": "Delet",
+       "vector-action-move": "Muf",
+       "vector-action-protect": "Protèkt",
+       "vector-view-create": "Kreat",
+       "vector-view-edit": "Chenj",
+       "vector-view-history": "Luk historia",
+       "vector-view-view": "Rid",
+       "vector-view-viewsource": "Luk dhi sòrs"
+}
diff --git a/skins/Vector/i18n/ks-arab.json b/skins/Vector/i18n/ks-arab.json
new file mode 100644 (file)
index 0000000..68c34ad
--- /dev/null
@@ -0,0 +1,4 @@
+{
+       "vector-view-edit": "تَرتیٖب دِیُن",
+       "vector-view-view": "پَرُن"
+}
diff --git a/skins/Vector/i18n/ksh.json b/skins/Vector/i18n/ksh.json
new file mode 100644 (file)
index 0000000..7d91fae
--- /dev/null
@@ -0,0 +1,21 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Purodha"
+               ]
+       },
+       "skinname-vector": "Vektor",
+       "vector.css": "/* CSS heh aan dä Stell wirrek nur op de Ovverflääsch „Vector“ */",
+       "vector.js": "/* De JavaSkrippte fun hee krijje alle Sigge met de Ovverflääsch \"Vector\" jescheck */",
+       "vector-action-addsection": "Ne neue Afschnet onge draan!",
+       "vector-action-delete": "Fottschmiiße!",
+       "vector-action-move": "Ömnänne!",
+       "vector-action-protect": "Schöze!",
+       "vector-action-undelete": "Zerökholle!",
+       "vector-action-unprotect": "Schoz ändere!",
+       "vector-view-create": "Neu Schriive!",
+       "vector-view-edit": "Ändere!",
+       "vector-view-history": "Versione zeije!",
+       "vector-view-view": "Lesse!",
+       "vector-view-viewsource": "Wikitex aanlooere!"
+}
diff --git a/skins/Vector/i18n/ku-latn.json b/skins/Vector/i18n/ku-latn.json
new file mode 100644 (file)
index 0000000..90e0706
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Ferhengvan",
+                       "Gomada"
+               ]
+       },
+       "vector-action-addsection": "Mijarekê lê zêde bike",
+       "vector-action-delete": "Jê bibe",
+       "vector-action-move": "Nav biguherîne",
+       "vector-action-protect": "Biparêze",
+       "vector-action-undelete": "Jê nebe",
+       "vector-action-unprotect": "Parastinê rake",
+       "vector-view-create": "Çêke",
+       "vector-view-edit": "Biguherîne",
+       "vector-view-history": "Dîrokê bibîne",
+       "vector-view-view": "Bixwîne",
+       "vector-view-viewsource": "Çavkaniyan bibîne"
+}
diff --git a/skins/Vector/i18n/kv.json b/skins/Vector/i18n/kv.json
new file mode 100644 (file)
index 0000000..d3df069
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Comp1089"
+               ]
+       },
+       "vector-action-move": "Ним вежны",
+       "vector-view-edit": "Вежны",
+       "vector-view-view": "Лыддьыны"
+}
diff --git a/skins/Vector/i18n/kw.json b/skins/Vector/i18n/kw.json
new file mode 100644 (file)
index 0000000..4a2975c
--- /dev/null
@@ -0,0 +1,20 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Kernoweger",
+                       "Kw-Moon",
+                       "Nrowe"
+               ]
+       },
+       "vector-action-addsection": "Keworra testen",
+       "vector-action-delete": "Dilea",
+       "vector-action-move": "Gwaya",
+       "vector-action-protect": "Difres",
+       "vector-action-undelete": "Disdhilea",
+       "vector-action-unprotect": "Chanjya difresans",
+       "vector-view-create": "Gwruthyl",
+       "vector-view-edit": "Chanjya",
+       "vector-view-history": "Gweles an istori",
+       "vector-view-view": "Redya",
+       "vector-view-viewsource": "Gweles an bennfenten"
+}
diff --git a/skins/Vector/i18n/ky.json b/skins/Vector/i18n/ky.json
new file mode 100644 (file)
index 0000000..e536d9b
--- /dev/null
@@ -0,0 +1,21 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Chorobek",
+                       "Growingup",
+                       "Ztimur",
+                       "Викиней"
+               ]
+       },
+       "vector-action-addsection": "Тема кошуу",
+       "vector-action-delete": "Өчүрүү",
+       "vector-action-move": "Аталышын өзгөртүү",
+       "vector-action-protect": "Коргоо",
+       "vector-action-undelete": "Калыбына келтирүү",
+       "vector-action-unprotect": "Коргоону өзгөртүү",
+       "vector-view-create": "Түзүү",
+       "vector-view-edit": "Оңдоо",
+       "vector-view-history": "Тарыхын кароо",
+       "vector-view-view": "Окуу",
+       "vector-view-viewsource": "Кайнарын кароо"
+}
diff --git a/skins/Vector/i18n/la.json b/skins/Vector/i18n/la.json
new file mode 100644 (file)
index 0000000..2cc4ad2
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "UV"
+               ]
+       },
+       "vector-action-addsection": "Partem novam addere",
+       "vector-action-delete": "Delere",
+       "vector-action-move": "Movere",
+       "vector-action-protect": "Protegere",
+       "vector-action-undelete": "Restituere",
+       "vector-action-unprotect": "Protectionem mutare",
+       "vector-view-create": "Creare",
+       "vector-view-edit": "Recensere",
+       "vector-view-history": "Historiam inspicere",
+       "vector-view-view": "Legere",
+       "vector-view-viewsource": "Fontem inspicere",
+       "vector-more-actions": "Plus"
+}
diff --git a/skins/Vector/i18n/lad.json b/skins/Vector/i18n/lad.json
new file mode 100644 (file)
index 0000000..729ec48
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Universal Life"
+               ]
+       },
+       "vector-action-addsection": "Ajustar sujeto",
+       "vector-action-delete": "Efassar",
+       "vector-action-move": "Taşirear",
+       "vector-action-protect": "Guadrar",
+       "vector-action-undelete": "Traer atrás",
+       "vector-action-unprotect": "Trocar proteksyon",
+       "vector-view-create": "Criar",
+       "vector-view-edit": "Trocar",
+       "vector-view-history": "Ver la istoria",
+       "vector-view-view": "Meldar",
+       "vector-view-viewsource": "Ver su manadero"
+}
diff --git a/skins/Vector/i18n/lb.json b/skins/Vector/i18n/lb.json
new file mode 100644 (file)
index 0000000..cb26439
--- /dev/null
@@ -0,0 +1,20 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Robby"
+               ]
+       },
+       "vector-skin-desc": "Modern Versioun vu Monobook mat frëschem Look a ville Verbesserunge vun der Benotzerfrëndlechkeet",
+       "vector-action-addsection": "Sujet derbäisetzen",
+       "vector-action-delete": "Läschen",
+       "vector-action-move": "Réckelen",
+       "vector-action-protect": "Spären",
+       "vector-action-undelete": "Restauréieren",
+       "vector-action-unprotect": "Spär änneren",
+       "vector-view-create": "Uleeën",
+       "vector-view-edit": "Änneren",
+       "vector-view-history": "Versioune weisen",
+       "vector-view-view": "Liesen",
+       "vector-view-viewsource": "Quellcode weisen",
+       "vector-more-actions": "Méi"
+}
diff --git a/skins/Vector/i18n/lez.json b/skins/Vector/i18n/lez.json
new file mode 100644 (file)
index 0000000..d132626
--- /dev/null
@@ -0,0 +1,21 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Lezgia",
+                       "Migraghvi",
+                       "Namik",
+                       "Soul Train"
+               ]
+       },
+       "vector-action-addsection": "Тема алава авун",
+       "vector-action-delete": "Алудун",
+       "vector-action-move": "ТӀвар эхцигун",
+       "vector-action-protect": "Хуьн",
+       "vector-action-undelete": "ТуькӀуьр хъувун",
+       "vector-action-unprotect": "Хуьн дегишарун",
+       "vector-view-create": "ТуькӀуьрун",
+       "vector-view-edit": "Дуьзарин",
+       "vector-view-history": "Тарихдиз килигун",
+       "vector-view-view": "КӀелун",
+       "vector-view-viewsource": "Чешме къалурун"
+}
diff --git a/skins/Vector/i18n/lg.json b/skins/Vector/i18n/lg.json
new file mode 100644 (file)
index 0000000..4282900
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Kizito"
+               ]
+       },
+       "vector-action-addsection": "Tandikawo emboozi endala",
+       "vector-action-delete": "Gyawo olupapula luno",
+       "vector-action-move": "Simbuliza",
+       "vector-action-protect": "Ssiba",
+       "vector-action-undelete": "Zawo",
+       "vector-action-unprotect": "Kyusa ebikugizo",
+       "vector-view-create": "Lukolewo",
+       "vector-view-edit": "Kyusa",
+       "vector-view-history": "Ennanda ya fayiro eno",
+       "vector-view-view": "Soma",
+       "vector-view-viewsource": "Kebera obulambike obw'ennono obw'olupapula luno"
+}
diff --git a/skins/Vector/i18n/li.json b/skins/Vector/i18n/li.json
new file mode 100644 (file)
index 0000000..8fe7e26
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Ooswesthoesbes"
+               ]
+       },
+       "vector-action-addsection": "Voog köpke toe",
+       "vector-action-delete": "Ewegsjaffe",
+       "vector-action-move": "Verplaats",
+       "vector-action-protect": "Besjirm",
+       "vector-action-undelete": "Plaats trök",
+       "vector-action-unprotect": "Anger beveiliging",
+       "vector-view-create": "Maak aan",
+       "vector-view-edit": "Bewirk",
+       "vector-view-history": "Bekiek de gesjiedenis",
+       "vector-view-view": "Laes",
+       "vector-view-viewsource": "Bekiek bróntèks"
+}
diff --git a/skins/Vector/i18n/lij.json b/skins/Vector/i18n/lij.json
new file mode 100644 (file)
index 0000000..e73547c
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Gastaz",
+                       "Giromin Cangiaxo"
+               ]
+       },
+       "vector-action-addsection": "Azónzi discusción",
+       "vector-action-delete": "Scancella",
+       "vector-action-move": "Mescia",
+       "vector-action-protect": "Protezi",
+       "vector-action-undelete": "Recuppera",
+       "vector-action-unprotect": "Cangia a proteçion",
+       "vector-view-create": "Crea",
+       "vector-view-edit": "Càngia",
+       "vector-view-history": "Fanni védde a Stöia",
+       "vector-view-view": "Lêzi",
+       "vector-view-viewsource": "Veddi a sorgénte"
+}
diff --git a/skins/Vector/i18n/liv.json b/skins/Vector/i18n/liv.json
new file mode 100644 (file)
index 0000000..68518e5
--- /dev/null
@@ -0,0 +1,16 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Warbola"
+               ]
+       },
+       "vector-action-addsection": "Pangid jūrõ tēma",
+       "vector-action-delete": "Kištāntõgid jarā",
+       "vector-action-move": "Vīž jarā",
+       "vector-action-protect": "Kaitsõmi",
+       "vector-view-create": "Lūo",
+       "vector-view-edit": "Redigīer",
+       "vector-view-history": "Nägţ istōrijõ",
+       "vector-view-view": "Vaņ",
+       "vector-view-viewsource": "Vaņ ovāt tekstõ"
+}
diff --git a/skins/Vector/i18n/lmo.json b/skins/Vector/i18n/lmo.json
new file mode 100644 (file)
index 0000000..a5c8624
--- /dev/null
@@ -0,0 +1,20 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Insübrich",
+                       "Ninonino"
+               ]
+       },
+       "vector-action-addsection": "Giunta argument",
+       "vector-action-delete": "Scancela",
+       "vector-action-move": "Sposta",
+       "vector-action-protect": "Prutegg",
+       "vector-action-undelete": "Recüpera",
+       "vector-action-unprotect": "Càmbia la protesiù",
+       "vector-view-create": "Crea",
+       "vector-view-edit": "Mudifega",
+       "vector-view-history": "Varda la storia",
+       "vector-view-view": "Legg",
+       "vector-view-viewsource": "Varda el codes",
+       "vector-more-actions": "Amò"
+}
diff --git a/skins/Vector/i18n/ln.json b/skins/Vector/i18n/ln.json
new file mode 100644 (file)
index 0000000..5fb4011
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Eruedin",
+                       "Moyogo"
+               ]
+       },
+       "vector-action-addsection": "Kobakisa mpɔ̂",
+       "vector-action-delete": "Kolímwisa",
+       "vector-action-move": "Kobóngola nkómbó",
+       "vector-action-protect": "Kobátela",
+       "vector-action-undelete": "Kolímwisa tɛ̂",
+       "vector-action-unprotect": " Kobátela tɛ̂",
+       "vector-view-create": "Kokela",
+       "vector-view-edit": "Kobɔngisa",
+       "vector-view-history": "Komɔ́nisa mokóló",
+       "vector-view-view": "Kotánga",
+       "vector-view-viewsource": "Komɔ́nisa mosólo"
+}
diff --git a/skins/Vector/i18n/lrc.json b/skins/Vector/i18n/lrc.json
new file mode 100644 (file)
index 0000000..8f6f09a
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Mogoeilor"
+               ]
+       },
+       "vector-action-addsection": "موضوع اضاف بكيد",
+       "vector-action-delete": "حذف بكيد",
+       "vector-action-move": "جاوه جا بوئيت",
+       "vector-action-protect": "حمايت بكيد",
+       "vector-action-undelete": "حذف نبيئني",
+       "vector-action-unprotect": "حمايت آلشت بكيد",
+       "vector-view-create": "راس كردن",
+       "vector-view-edit": "ويرايشت",
+       "vector-view-history": "ديئن ويرگار",
+       "vector-view-view": "حنن",
+       "vector-view-viewsource": "سرچشمه نه بوينيت"
+}
diff --git a/skins/Vector/i18n/lt.json b/skins/Vector/i18n/lt.json
new file mode 100644 (file)
index 0000000..40886a8
--- /dev/null
@@ -0,0 +1,22 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Garas",
+                       "Homo",
+                       "Matasg",
+                       "Perkunas"
+               ]
+       },
+       "skinname-vector": "Vektorinė",
+       "vector-action-addsection": "Pridėti temą",
+       "vector-action-delete": "Ištrinti",
+       "vector-action-move": "Pervardyti",
+       "vector-action-protect": "Užrakinti",
+       "vector-action-undelete": "Atkurti",
+       "vector-action-unprotect": "Keisti apsaugą",
+       "vector-view-create": "Kurti",
+       "vector-view-edit": "Redaguoti",
+       "vector-view-history": "Istorija",
+       "vector-view-view": "Skaityti",
+       "vector-view-viewsource": "Žiūrėti kodą"
+}
diff --git a/skins/Vector/i18n/ltg.json b/skins/Vector/i18n/ltg.json
new file mode 100644 (file)
index 0000000..d89d6df
--- /dev/null
@@ -0,0 +1,15 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Dark Eagle"
+               ]
+       },
+       "vector-action-addsection": "Dalikt padaļu",
+       "vector-action-delete": "Iztreit",
+       "vector-action-move": "Puorceļt",
+       "vector-action-protect": "Apsorguot",
+       "vector-action-unprotect": "Puormeit apsardzeibu",
+       "vector-view-edit": "Pataiseit",
+       "vector-view-history": "Viesture",
+       "vector-view-view": "Vērtīs"
+}
diff --git a/skins/Vector/i18n/lus.json b/skins/Vector/i18n/lus.json
new file mode 100644 (file)
index 0000000..4f270de
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "RMizo"
+               ]
+       },
+       "vector-action-addsection": "Thupui belhna",
+       "vector-action-delete": "Paihna",
+       "vector-action-move": "Sawnna",
+       "vector-action-protect": "Venhimna",
+       "vector-action-undelete": "Lak kir lehna",
+       "vector-action-unprotect": "Venhimna dinhmun tidanglam rawh",
+       "vector-view-create": "Siamna",
+       "vector-view-edit": "Siamţhatna",
+       "vector-view-history": "Hunhlui-chanchin",
+       "vector-view-view": "Chhiarna",
+       "vector-view-viewsource": "A hnar enna"
+}
diff --git a/skins/Vector/i18n/luz.json b/skins/Vector/i18n/luz.json
new file mode 100644 (file)
index 0000000..0670bfd
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "@metadata": {
+               "authors": [
+                       "علی ساکی لرستانی"
+               ]
+       },
+       "vector-view-history": "دیئن تاریخچه",
+       "vector-view-view": "هوندن"
+}
diff --git a/skins/Vector/i18n/lv.json b/skins/Vector/i18n/lv.json
new file mode 100644 (file)
index 0000000..697d1eb
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Marozols",
+                       "Papuass"
+               ]
+       },
+       "vector-action-addsection": "Jauna sadaļa",
+       "vector-action-delete": "Dzēst",
+       "vector-action-move": "Pārvietot",
+       "vector-action-protect": "Aizsargāt",
+       "vector-action-undelete": "Atjaunot",
+       "vector-action-unprotect": "Mainīt aizsardzību",
+       "vector-view-create": "Izveidot",
+       "vector-view-edit": "Labot",
+       "vector-view-history": "Hronoloģija",
+       "vector-view-view": "Skatīt",
+       "vector-view-viewsource": "Aplūkot kodu"
+}
diff --git a/skins/Vector/i18n/lzh.json b/skins/Vector/i18n/lzh.json
new file mode 100644 (file)
index 0000000..6b6ae38
--- /dev/null
@@ -0,0 +1,21 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Justincheng12345"
+               ]
+       },
+       "skinname-vector": "動力",
+       "vector.css": "/* 此之 CSS 用於動力面之簿也 */",
+       "vector.js": "/* 此之JavaScript將載於用動力面之簿 */",
+       "vector-action-addsection": "入題",
+       "vector-action-delete": "刪",
+       "vector-action-move": "遷",
+       "vector-action-protect": "緘",
+       "vector-action-undelete": "覽刪",
+       "vector-action-unprotect": "啟",
+       "vector-view-create": "立",
+       "vector-view-edit": "纂",
+       "vector-view-history": "覽史",
+       "vector-view-view": "閱",
+       "vector-view-viewsource": "覽源"
+}
diff --git a/skins/Vector/i18n/lzz.json b/skins/Vector/i18n/lzz.json
new file mode 100644 (file)
index 0000000..3563816
--- /dev/null
@@ -0,0 +1,15 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Bombola",
+                       "Ceas08",
+                       "Erdemaslancan"
+               ]
+       },
+       "vector-action-delete": "Jili",
+       "vector-action-move": "Tori",
+       "vector-action-protect": "İçvi",
+       "vector-view-create": "dokʼidi",
+       "vector-view-edit": "Doktiri",
+       "vector-view-view": "İǩitxi"
+}
diff --git a/skins/Vector/i18n/mai.json b/skins/Vector/i18n/mai.json
new file mode 100644 (file)
index 0000000..068e67d
--- /dev/null
@@ -0,0 +1,20 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Ggajendra",
+                       "Umeshberma"
+               ]
+       },
+       "skinname-vector": "सदिश",
+       "vector-action-addsection": "विचार-बिन्दु जोड़ू",
+       "vector-action-delete": "मेटाउ",
+       "vector-action-move": "घसकाउ",
+       "vector-action-protect": "रक्षण करू",
+       "vector-action-undelete": "आपस लाउ",
+       "vector-action-unprotect": "सुरक्षा बदलू",
+       "vector-view-create": "बनाउ",
+       "vector-view-edit": "सम्पादन करू",
+       "vector-view-history": "इतिहास देखू",
+       "vector-view-view": "पढ़ू",
+       "vector-view-viewsource": "जड़ि देखू"
+}
diff --git a/skins/Vector/i18n/map-bms.json b/skins/Vector/i18n/map-bms.json
new file mode 100644 (file)
index 0000000..1a08582
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "StefanusRA"
+               ]
+       },
+       "vector-action-addsection": "Nambah topik",
+       "vector-action-delete": "Busek",
+       "vector-action-move": "Pindah",
+       "vector-action-protect": "Reksa",
+       "vector-action-undelete": "Batalna pambusakan",
+       "vector-action-unprotect": "Owahi pangreksan",
+       "vector-view-create": "Gawe",
+       "vector-view-edit": "Sunting",
+       "vector-view-history": "Sajarah kaca",
+       "vector-view-view": "Waca",
+       "vector-view-viewsource": "Deleng sumbere"
+}
diff --git a/skins/Vector/i18n/mdf.json b/skins/Vector/i18n/mdf.json
new file mode 100644 (file)
index 0000000..91787fc
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Numulunj pilgae"
+               ]
+       },
+       "vector-action-addsection": "Поладомс мезень колга корхтамс",
+       "vector-action-delete": "Нардамс",
+       "vector-action-move": "Шашфтомс",
+       "vector-action-protect": "Араламс",
+       "vector-action-undelete": "Мърдафтомс",
+       "vector-action-unprotect": "Араламать полафтомс",
+       "vector-view-create": "Тиемс",
+       "vector-view-edit": "Петнемс",
+       "vector-view-history": "История няфтемс",
+       "vector-view-view": "Морафтомс",
+       "vector-view-viewsource": "Лисьма няфтемс"
+}
diff --git a/skins/Vector/i18n/mg.json b/skins/Vector/i18n/mg.json
new file mode 100644 (file)
index 0000000..5c51602
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Jagwar"
+               ]
+       },
+       "vector-action-addsection": "Hanampy lohahevitra",
+       "vector-action-delete": "Fafana",
+       "vector-action-move": "Hanolo anarana",
+       "vector-action-protect": "Arovy",
+       "vector-action-undelete": "Avereno",
+       "vector-action-unprotect": "Hanala ny fiarovana",
+       "vector-view-create": "Foronona",
+       "vector-view-edit": "Hanova",
+       "vector-view-history": "Hijery ny tantara",
+       "vector-view-view": "Hamaky",
+       "vector-view-viewsource": "Hijery fango"
+}
diff --git a/skins/Vector/i18n/mhr.json b/skins/Vector/i18n/mhr.json
new file mode 100644 (file)
index 0000000..efe9d4b
--- /dev/null
@@ -0,0 +1,21 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Azim",
+                       "Sergey Ivanov",
+                       "Сай",
+                       "Санюн Вадик"
+               ]
+       },
+       "vector-action-addsection": "У ӱжашым тӱҥалаш",
+       "vector-action-delete": "Шӧраш",
+       "vector-action-move": "Лӱмым вашталташ",
+       "vector-action-protect": "Тӧрлатымаш деч аралаш",
+       "vector-action-undelete": "Шӧрымым пӧртылаш",
+       "vector-action-unprotect": "Оролым вашталташ",
+       "vector-view-create": "Ышташ",
+       "vector-view-edit": "Тӧрлаташ",
+       "vector-view-history": "Эртымгорным ончалаш",
+       "vector-view-view": "Лудаш",
+       "vector-view-viewsource": "Тӱҥалтыш текстым ончалаш"
+}
diff --git a/skins/Vector/i18n/mi.json b/skins/Vector/i18n/mi.json
new file mode 100644 (file)
index 0000000..0a59489
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Piwaiwaka"
+               ]
+       },
+       "vector-view-view": "Tirohia"
+}
diff --git a/skins/Vector/i18n/mic.json b/skins/Vector/i18n/mic.json
new file mode 100644 (file)
index 0000000..3079089
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Amqui"
+               ]
+       },
+       "vector-action-move": "Ejigliwsit",
+       "vector-view-create": "Etlitoq",
+       "vector-view-view": "Egiljet"
+}
diff --git a/skins/Vector/i18n/min.json b/skins/Vector/i18n/min.json
new file mode 100644 (file)
index 0000000..bf5a735
--- /dev/null
@@ -0,0 +1,21 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Iwan Novirion",
+                       "Luthfi94",
+                       "VoteITP"
+               ]
+       },
+       "skinname-vector": "Vektor",
+       "vector-action-addsection": "Bagian baru",
+       "vector-action-delete": "Hapuih",
+       "vector-action-move": "Pindahkan",
+       "vector-action-protect": "Linduangkan",
+       "vector-action-undelete": "Pambatalan pangapuihan",
+       "vector-action-unprotect": "Tuka palinduangan",
+       "vector-view-create": "Buek",
+       "vector-view-edit": "Suntiang",
+       "vector-view-history": "Riwayaik",
+       "vector-view-view": "Baco",
+       "vector-view-viewsource": "Caliak sumber"
+}
diff --git a/skins/Vector/i18n/mk.json b/skins/Vector/i18n/mk.json
new file mode 100644 (file)
index 0000000..1f883ae
--- /dev/null
@@ -0,0 +1,24 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Bjankuloski06",
+                       "Brest"
+               ]
+       },
+       "skinname-vector": "Векторско",
+       "vector-skin-desc": "Современа верзија на рувото МоноБук со свеж изглед и многу подобрувања на употребливоста",
+       "vector.css": "/* Тука поставениот CSS се однесува на корисниците на рувото „Векторско“ */",
+       "vector.js": "/* Тука поставениот JavaScript  ќе им се вчитува на корисниците што го користат рувото „Векторско“ */",
+       "vector-action-addsection": "Додај тема",
+       "vector-action-delete": "Избриши",
+       "vector-action-move": "Премести",
+       "vector-action-protect": "Заштити",
+       "vector-action-undelete": "Врати",
+       "vector-action-unprotect": "Измени заштита",
+       "vector-view-create": "Создај",
+       "vector-view-edit": "Уреди",
+       "vector-view-history": "Историја",
+       "vector-view-view": "Читај",
+       "vector-view-viewsource": "Извор",
+       "vector-more-actions": "Повеќе"
+}
diff --git a/skins/Vector/i18n/ml.json b/skins/Vector/i18n/ml.json
new file mode 100644 (file)
index 0000000..6ca34a1
--- /dev/null
@@ -0,0 +1,23 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Anoopan",
+                       "Praveenp"
+               ]
+       },
+       "skinname-vector": "വെക്റ്റർ",
+       "vector.css": "/* ഇവിടെ നൽകുന്ന സി.എസ്.എസ്. വെക്റ്റർ ദൃശ്യരൂപത്തിനു ബാധകമായിരിക്കും*/",
+       "vector.js": "/*ഇവിടെ നൽകുന്ന ജാവാസ്ക്രിപ്റ്റ് വെക്റ്റർ ദൃശ്യരൂപം ഉപയോഗിക്കുന്ന ഉപയോക്താക്കൾക്ക് ബാധകമായിരിക്കും*/",
+       "vector-action-addsection": "വിഷയം ചേർക്കുക",
+       "vector-action-delete": "മായ്ക്കുക",
+       "vector-action-move": "തലക്കെട്ട് മാറ്റുക",
+       "vector-action-protect": "സം‌രക്ഷിക്കുക",
+       "vector-action-undelete": "മായ്ക്കപ്പെട്ടത് പുനഃസ്ഥാപിക്കുക",
+       "vector-action-unprotect": "സംരക്ഷണത്തിൽ മാറ്റംവരുത്തുക",
+       "vector-view-create": "സൃഷ്ടിക്കുക",
+       "vector-view-edit": "തിരുത്തുക",
+       "vector-view-history": "നാൾവഴി കാണുക",
+       "vector-view-view": "വായിക്കുക",
+       "vector-view-viewsource": "മൂലരൂപം കാണുക",
+       "vector-more-actions": "കൂടുതൽ"
+}
diff --git a/skins/Vector/i18n/mn.json b/skins/Vector/i18n/mn.json
new file mode 100644 (file)
index 0000000..ceeafaf
--- /dev/null
@@ -0,0 +1,20 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Chinneeb",
+                       "MongolWiki",
+                       "Wisdom"
+               ]
+       },
+       "vector-action-addsection": "Сэдэв нэмэх",
+       "vector-action-delete": "Устгах",
+       "vector-action-move": "Зөөх",
+       "vector-action-protect": "Хамгаалах",
+       "vector-action-undelete": "Үл устгах",
+       "vector-action-unprotect": "Хамгаалалтаа солих",
+       "vector-view-create": "Үүсгэх",
+       "vector-view-edit": "Засварлах",
+       "vector-view-history": "Түүх",
+       "vector-view-view": "Унших",
+       "vector-view-viewsource": "Кодыг харах"
+}
diff --git a/skins/Vector/i18n/mnc.json b/skins/Vector/i18n/mnc.json
new file mode 100644 (file)
index 0000000..60434d5
--- /dev/null
@@ -0,0 +1,15 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Minggantu"
+               ]
+       },
+       "vector-action-delete": "Dabgire",
+       "vector-action-move": "Guribure",
+       "vector-action-protect": "Karmara",
+       "vector-view-create": "Ilibure",
+       "vector-view-edit": "banjibume arara",
+       "vector-view-history": "ere šu wen i suduri be baicara",
+       "vector-view-view": "hūlara",
+       "vector-view-viewsource": "da šu wen be baicara"
+}
diff --git a/skins/Vector/i18n/mr.json b/skins/Vector/i18n/mr.json
new file mode 100644 (file)
index 0000000..ab7e322
--- /dev/null
@@ -0,0 +1,21 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Kaajawa",
+                       "V.narsikar"
+               ]
+       },
+       "skinname-vector": "सदिश",
+       "vector-action-addsection": "विषय जोडा",
+       "vector-action-delete": "वगळा",
+       "vector-action-move": "स्थानांतरण",
+       "vector-action-protect": "सुरक्षित करा",
+       "vector-action-undelete": "वगळलेले पुनर्स्थापित करा",
+       "vector-action-unprotect": "सुरक्षितता बदला",
+       "vector-view-create": "तयार करा",
+       "vector-view-edit": "संपादन",
+       "vector-view-history": "इतिहास पहा",
+       "vector-view-view": "वाचा",
+       "vector-view-viewsource": "स्रोत पहा",
+       "vector-more-actions": "अधिक"
+}
diff --git a/skins/Vector/i18n/mrj.json b/skins/Vector/i18n/mrj.json
new file mode 100644 (file)
index 0000000..72b93b4
--- /dev/null
@@ -0,0 +1,15 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Amdf"
+               ]
+       },
+       "vector-action-delete": "Карангдаш",
+       "vector-action-move": "Лӹмӹм вашталташ",
+       "vector-action-protect": "Ӹшӹклӓш",
+       "vector-view-create": "Ӹштӓш",
+       "vector-view-edit": "Тӧрлӹмӓш",
+       "vector-view-history": "Историм анжымаш",
+       "vector-view-view": "Лыдмаш",
+       "vector-view-viewsource": "Сек пӹтӓриш кодым анжалаш"
+}
diff --git a/skins/Vector/i18n/ms.json b/skins/Vector/i18n/ms.json
new file mode 100644 (file)
index 0000000..2795e44
--- /dev/null
@@ -0,0 +1,22 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Anakmalaysia",
+                       "Aurora",
+                       "Pizza1016"
+               ]
+       },
+       "skinname-vector": "Vector",
+       "vector.css": "/* CSS yang terletak di sini akan mempengaruhi pengguna kulit Vector */",
+       "vector-action-addsection": "Buka topik",
+       "vector-action-delete": "Hapus",
+       "vector-action-move": "Pindah",
+       "vector-action-protect": "Lindung",
+       "vector-action-undelete": "Nyahhapus",
+       "vector-action-unprotect": "Ubah perlindungan",
+       "vector-view-create": "Cipta",
+       "vector-view-edit": "Sunting",
+       "vector-view-history": "Lihat sejarah",
+       "vector-view-view": "Baca",
+       "vector-view-viewsource": "Lihat sumber"
+}
diff --git a/skins/Vector/i18n/mt.json b/skins/Vector/i18n/mt.json
new file mode 100644 (file)
index 0000000..32c9f1a
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Chrisportelli"
+               ]
+       },
+       "vector-action-addsection": "Żid diskussjoni",
+       "vector-action-delete": "Ħassar",
+       "vector-action-move": "Mexxi",
+       "vector-action-protect": "Ipproteġi",
+       "vector-action-undelete": "Irkupra",
+       "vector-action-unprotect": "Biddel il-protezzjoni",
+       "vector-view-create": "Oħloq",
+       "vector-view-edit": "Editja",
+       "vector-view-history": "Ara l-kronoloġija",
+       "vector-view-view": "Aqra",
+       "vector-view-viewsource": "Ara s-sors"
+}
diff --git a/skins/Vector/i18n/mui.json b/skins/Vector/i18n/mui.json
new file mode 100644 (file)
index 0000000..173eda0
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Mahali syarifuddin"
+               ]
+       },
+       "vector-view-view": "Baco",
+       "vector-view-viewsource": "Jingok sumber"
+}
diff --git a/skins/Vector/i18n/my.json b/skins/Vector/i18n/my.json
new file mode 100644 (file)
index 0000000..5cc7802
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Lionslayer",
+                       "Myanmars"
+               ]
+       },
+       "vector-action-addsection": "အကြောင်းအရာအသစ် ထပ်ထည့်ရန်",
+       "vector-action-delete": "ဖျက်​ပါ​",
+       "vector-action-move": "ရွှေ့ပါ",
+       "vector-action-protect": "ထိမ်း​သိမ်း​ပါ​",
+       "vector-action-undelete": "မဖျက်တော့ရန်",
+       "vector-action-unprotect": "ကာကွယ်ခြင်းကို ပြောင်းလဲရန်",
+       "vector-view-create": "စတင်ရေးသားရန်",
+       "vector-view-edit": "ပြင်ရန်",
+       "vector-view-history": "ရာဇဝင်ကြည့်ရန်",
+       "vector-view-view": "ဖတ်ရန်",
+       "vector-view-viewsource": "ရင်းမြစ်ကို ကြည့်ရန်"
+}
diff --git a/skins/Vector/i18n/myv.json b/skins/Vector/i18n/myv.json
new file mode 100644 (file)
index 0000000..723d5dd
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Botuzhaleny-sodamo"
+               ]
+       },
+       "vector-action-addsection": "Поладомс мезде кортамс",
+       "vector-action-delete": "Нардамс",
+       "vector-action-move": "Печтевтемс",
+       "vector-action-protect": "Аравтомс ванстомас",
+       "vector-action-undelete": "Вельмевтемс нардазенть",
+       "vector-action-unprotect": "Полавтомс ванстоманзо",
+       "vector-view-create": "Теемс-Шкамс",
+       "vector-view-edit": "Витнемс-петнемс",
+       "vector-view-history": "Ваномс юронзо-путовксонзо",
+       "vector-view-view": "Ловномс",
+       "vector-view-viewsource": "Ваномс косто саезь"
+}
diff --git a/skins/Vector/i18n/mzn.json b/skins/Vector/i18n/mzn.json
new file mode 100644 (file)
index 0000000..cf18634
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Mjbmr",
+                       "محک"
+               ]
+       },
+       "vector-action-addsection": "ترنه گپ بزوئن",
+       "vector-action-delete": "پاک هاکردن",
+       "vector-action-move": "دکش هاکردن",
+       "vector-action-protect": "زلفن بزوئن",
+       "vector-action-undelete": "دباره بنویشته بیّن",
+       "vector-action-unprotect": "زلفن عوض هاکردن",
+       "vector-view-create": "بساتن",
+       "vector-view-edit": "دچی‌ین",
+       "vector-view-history": "تاریخچه ره بَدی‌ین",
+       "vector-view-view": "بخوندستن",
+       "vector-view-viewsource": "ونه منبع ره هارشائن"
+}
diff --git a/skins/Vector/i18n/nah.json b/skins/Vector/i18n/nah.json
new file mode 100644 (file)
index 0000000..adf8c21
--- /dev/null
@@ -0,0 +1,15 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Ricardo gs"
+               ]
+       },
+       "vector-action-delete": "Ticpolōz",
+       "vector-action-move": "Ticzacāz",
+       "vector-action-protect": "Ticquīxtīz",
+       "vector-view-create": "Ticchīhuāz",
+       "vector-view-edit": "Ticpatlāz",
+       "vector-view-history": "Tlahcuilōlli tlahcuilōlloh",
+       "vector-view-view": "Tāmapōhuaz",
+       "vector-view-viewsource": "Tiquittāz in mēyalli"
+}
diff --git a/skins/Vector/i18n/nan.json b/skins/Vector/i18n/nan.json
new file mode 100644 (file)
index 0000000..f1b9045
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Ianbu"
+               ]
+       },
+       "vector-action-addsection": "Ke chi̍t-ê toān-lo̍h",
+       "vector-action-delete": "Thâi",
+       "vector-action-move": "Sóa khì",
+       "vector-action-protect": "Pó-hō·",
+       "vector-action-undelete": "chhú-siau thâi tiàu",
+       "vector-action-unprotect": "kái pó-hō·",
+       "vector-view-create": "Khai-sí siá",
+       "vector-view-edit": "Siu-kái",
+       "vector-view-history": "khoàⁿ le̍k-sú",
+       "vector-view-view": "Tha̍k",
+       "vector-view-viewsource": "Khoàⁿ goân-sú lōe-iông",
+       "vector-more-actions": "閣看"
+}
diff --git a/skins/Vector/i18n/nap.json b/skins/Vector/i18n/nap.json
new file mode 100644 (file)
index 0000000..862f197
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Chelin"
+               ]
+       },
+       "vector-action-addsection": "Aggiunge chiacchierata",
+       "vector-action-delete": "Scancèlla",
+       "vector-action-move": "Spusta",
+       "vector-action-protect": "Prutegge",
+       "vector-action-undelete": "Ripristina",
+       "vector-action-unprotect": "Càgna prutezzione",
+       "vector-view-create": "Cria",
+       "vector-view-edit": "Càgna",
+       "vector-view-history": "Vere cronologgia",
+       "vector-view-view": "Legge",
+       "vector-view-viewsource": "Vere sorgente"
+}
diff --git a/skins/Vector/i18n/nb.json b/skins/Vector/i18n/nb.json
new file mode 100644 (file)
index 0000000..0ef82e0
--- /dev/null
@@ -0,0 +1,22 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Danmichaelo",
+                       "Event",
+                       "Nghtwlkr"
+               ]
+       },
+       "vector-skin-desc": "Moderne versjon av MonoBook med et friskt utseende og mange bruksforbedringer",
+       "vector-action-addsection": "Nytt emne",
+       "vector-action-delete": "Slett",
+       "vector-action-move": "Flytt",
+       "vector-action-protect": "Beskytt",
+       "vector-action-undelete": "Gjenopprett",
+       "vector-action-unprotect": "Endre beskyttelse",
+       "vector-view-create": "Opprett",
+       "vector-view-edit": "Rediger",
+       "vector-view-history": "Vis historikk",
+       "vector-view-view": "Les",
+       "vector-view-viewsource": "Vis kilden",
+       "vector-more-actions": "Mer"
+}
diff --git a/skins/Vector/i18n/nds-nl.json b/skins/Vector/i18n/nds-nl.json
new file mode 100644 (file)
index 0000000..be846db
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Servien"
+               ]
+       },
+       "vector-action-addsection": "Niej onderwarp",
+       "vector-action-delete": "Vortdoon",
+       "vector-action-move": "Herneumen",
+       "vector-action-protect": "Beveiligen",
+       "vector-action-undelete": "Weerummeplaotsen",
+       "vector-action-unprotect": "Beveiliging wiezigen",
+       "vector-view-create": "Anmaken",
+       "vector-view-edit": "Bewarken",
+       "vector-view-history": "Geschiedenisse bekieken",
+       "vector-view-view": "Lezen",
+       "vector-view-viewsource": "Brontekste bekieken",
+       "vector-more-actions": "Meer"
+}
diff --git a/skins/Vector/i18n/nds.json b/skins/Vector/i18n/nds.json
new file mode 100644 (file)
index 0000000..99145b0
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Slomox",
+                       "Zylbath"
+               ]
+       },
+       "vector-action-addsection": "Thema tofögen",
+       "vector-action-delete": "Wegdoon",
+       "vector-action-move": "Schuven",
+       "vector-action-protect": "Schulen",
+       "vector-action-undelete": "Wedderhalen",
+       "vector-action-unprotect": "Siedenschuul ännern",
+       "vector-view-create": "Opstellen",
+       "vector-view-edit": "Ännern",
+       "vector-view-history": "Historie bekieken",
+       "vector-view-view": "Lesen",
+       "vector-view-viewsource": "Borntext bekieken"
+}
diff --git a/skins/Vector/i18n/ne.json b/skins/Vector/i18n/ne.json
new file mode 100644 (file)
index 0000000..443becb
--- /dev/null
@@ -0,0 +1,22 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Bhawani Gautam",
+                       "RajeshPandey",
+                       "सरोज कुमार ढकाल"
+               ]
+       },
+       "skinname-vector": "भेक्टर",
+       "vector.css": "/* यहाँ राखिएको CSS ले भेक्टर स्किनको प्रयोगकर्ताहरुलाई प्रभावित गर्ने छ  */",
+       "vector-action-addsection": "विषय थप्नुहोस",
+       "vector-action-delete": "हटाउने",
+       "vector-action-move": "सार्ने",
+       "vector-action-protect": "सुरक्षित गर्ने",
+       "vector-action-undelete": "हटाएको रद्द गर्ने",
+       "vector-action-unprotect": "सुरक्षा परिवर्तन गर्ने",
+       "vector-view-create": "सृजना गर्ने",
+       "vector-view-edit": "सम्पादन",
+       "vector-view-history": "इतिहास हेर्ने",
+       "vector-view-view": "पढ्ने",
+       "vector-view-viewsource": "स्रोत हेर्ने"
+}
diff --git a/skins/Vector/i18n/new.json b/skins/Vector/i18n/new.json
new file mode 100644 (file)
index 0000000..f972066
--- /dev/null
@@ -0,0 +1,12 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Eukesh"
+               ]
+       },
+       "vector-action-move": "संकादिसँ",
+       "vector-view-create": "दयेकादिसँ",
+       "vector-view-edit": "सम्पादन",
+       "vector-view-history": "इतिहास स्वयादिसँ",
+       "vector-view-view": "ब्वनादिसँ"
+}
diff --git a/skins/Vector/i18n/nl.json b/skins/Vector/i18n/nl.json
new file mode 100644 (file)
index 0000000..07c18d9
--- /dev/null
@@ -0,0 +1,28 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Calak",
+                       "Romaine",
+                       "SPQRobin",
+                       "Siebrand",
+                       "Troefkaart",
+                       "Sjoerddebruin"
+               ]
+       },
+       "skinname-vector": "Vector",
+       "vector-skin-desc": "Moderne versie van MonoBook met een fris uiterlijk en verbeteringen op het gebied van gebruiksvriendelijkheid",
+       "vector.css": "/* CSS die hier wordt geplaatst heeft alleen invloed op de skin Vector */",
+       "vector.js": "/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin Vector gebruiken */",
+       "vector-action-addsection": "Kopje toevoegen",
+       "vector-action-delete": "Verwijderen",
+       "vector-action-move": "Hernoemen",
+       "vector-action-protect": "Beveiligen",
+       "vector-action-undelete": "Terugplaatsen",
+       "vector-action-unprotect": "Beveiliging wijzigen",
+       "vector-view-create": "Aanmaken",
+       "vector-view-edit": "Bewerken",
+       "vector-view-history": "Geschiedenis weergeven",
+       "vector-view-view": "Lezen",
+       "vector-view-viewsource": "Brontekst bekijken",
+       "vector-more-actions": "Meer"
+}
diff --git a/skins/Vector/i18n/nn.json b/skins/Vector/i18n/nn.json
new file mode 100644 (file)
index 0000000..6fd99f1
--- /dev/null
@@ -0,0 +1,20 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Gunnernett",
+                       "Njardarlogar"
+               ]
+       },
+       "vector-action-addsection": "Nytt emne",
+       "vector-action-delete": "Slett",
+       "vector-action-move": "Flytt",
+       "vector-action-protect": "Vern",
+       "vector-action-undelete": "Gjenopprett",
+       "vector-action-unprotect": "Endra vern",
+       "vector-view-create": "Opprett",
+       "vector-view-edit": "Endre",
+       "vector-view-history": "Sjå historikken",
+       "vector-view-view": "Les",
+       "vector-view-viewsource": "Sjå kjelda",
+       "vector-more-actions": "Meir"
+}
diff --git a/skins/Vector/i18n/nov.json b/skins/Vector/i18n/nov.json
new file mode 100644 (file)
index 0000000..66ad923
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Malafaya"
+               ]
+       },
+       "vector-action-delete": "Ekarta",
+       "vector-view-edit": "Modifika",
+       "vector-view-view": "Lekte"
+}
diff --git a/skins/Vector/i18n/nrm.json b/skins/Vector/i18n/nrm.json
new file mode 100644 (file)
index 0000000..4c332f2
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "WikiEoFrEn"
+               ]
+       },
+       "vector-view-create": "Criyaer",
+       "vector-view-edit": "Amendaer",
+       "vector-view-view": "Luure"
+}
diff --git a/skins/Vector/i18n/nso.json b/skins/Vector/i18n/nso.json
new file mode 100644 (file)
index 0000000..ea729e7
--- /dev/null
@@ -0,0 +1,16 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Mohau"
+               ]
+       },
+       "vector-action-addsection": "Lokela sererwa",
+       "vector-action-delete": "Phumula",
+       "vector-action-move": "Huduša",
+       "vector-action-protect": "Lota",
+       "vector-view-create": "Hlola",
+       "vector-view-edit": "Fetola",
+       "vector-view-history": "Laetša histori",
+       "vector-view-view": "Bala",
+       "vector-view-viewsource": "Lebelela mothopo"
+}
diff --git a/skins/Vector/i18n/oc.json b/skins/Vector/i18n/oc.json
new file mode 100644 (file)
index 0000000..2aa517e
--- /dev/null
@@ -0,0 +1,21 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Boulaur",
+                       "Cedric31"
+               ]
+       },
+       "vector.css": "/* Lo CSS plaçat aicí afectarà los utilizaires de l’abilhatge Vector */",
+       "vector.js": "/* Tot JavaScript aicí serà cargat amb las paginas accedidas pels utilizaires de l’abilhatge Vector unicament. */",
+       "vector-action-addsection": "Apondre un subjècte",
+       "vector-action-delete": "Suprimir",
+       "vector-action-move": "Tornar nomenar",
+       "vector-action-protect": "Protegir",
+       "vector-action-undelete": "Restablir",
+       "vector-action-unprotect": "Suprimir la proteccion",
+       "vector-view-create": "Crear",
+       "vector-view-edit": "Modificar",
+       "vector-view-history": "Veire l'istoric",
+       "vector-view-view": "Legir",
+       "vector-view-viewsource": "Veire la font"
+}
diff --git a/skins/Vector/i18n/or.json b/skins/Vector/i18n/or.json
new file mode 100644 (file)
index 0000000..289cc3c
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Jnanaranjan Sahu",
+                       "Psubhashish"
+               ]
+       },
+       "vector-action-addsection": "ନୂଆ ଯୋଡ଼ନ୍ତୁ",
+       "vector-action-delete": "ଲିଭାଇବେ",
+       "vector-action-move": "ଘୁଞ୍ଚାଇବେ",
+       "vector-action-protect": "କିଳିବେ",
+       "vector-action-undelete": "ଲିଭାଇବେ ନାହିଁ",
+       "vector-action-unprotect": "କିଳିବେ ନାହିଁ",
+       "vector-view-create": "ତିଆରି କରନ୍ତୁ",
+       "vector-view-edit": "ସମ୍ପାଦନା (Edit)",
+       "vector-view-history": "ଇତିହାସ",
+       "vector-view-view": "ପଢ଼ନ୍ତୁ",
+       "vector-view-viewsource": "ସୋର୍ସ ଦେଖନ୍ତୁ"
+}
diff --git a/skins/Vector/i18n/os.json b/skins/Vector/i18n/os.json
new file mode 100644 (file)
index 0000000..a178289
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Amikeco",
+                       "Bouron"
+               ]
+       },
+       "vector-action-addsection": "Нæуæг ныхас бакæнын",
+       "vector-action-delete": "Схафын",
+       "vector-action-move": "Ном ивын",
+       "vector-action-protect": "Сæхгæнын",
+       "vector-action-undelete": "Рацаразын",
+       "vector-action-unprotect": "Ивын хъахъхъæд",
+       "vector-view-create": "Скæнын",
+       "vector-view-edit": "Ивын",
+       "vector-view-history": "Истори",
+       "vector-view-view": "Кæсын",
+       "vector-view-viewsource": "Код кæсын"
+}
diff --git a/skins/Vector/i18n/pa.json b/skins/Vector/i18n/pa.json
new file mode 100644 (file)
index 0000000..5f15399
--- /dev/null
@@ -0,0 +1,21 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Aalam",
+                       "Babanwalia",
+                       "Raj Singh",
+                       "TariButtar"
+               ]
+       },
+       "vector-action-addsection": "ਵਿਸ਼ਾ ਜੋੜੋ",
+       "vector-action-delete": "ਹਟਾਓ",
+       "vector-action-move": "ਭੇਜੋ",
+       "vector-action-protect": "ਸੁਰੱਖਿਆ",
+       "vector-action-undelete": "ਹਟਾਉਣਾ-ਵਾਪਸ",
+       "vector-action-unprotect": "ਸੁਰੱਖਿਆ ਬਦਲੋ",
+       "vector-view-create": "ਬਣਾਓ",
+       "vector-view-edit": "ਸੋਧੋ",
+       "vector-view-history": "ਅਤੀਤ ਵੇਖੋ",
+       "vector-view-view": "ਪੜ੍ਹੋ",
+       "vector-view-viewsource": "ਸਰੋਤ ਵੇਖੋ"
+}
diff --git a/skins/Vector/i18n/pam.json b/skins/Vector/i18n/pam.json
new file mode 100644 (file)
index 0000000..09afda5
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Katimawan2005",
+                       "Val2397"
+               ]
+       },
+       "vector-action-addsection": "Dagdagan ing pisasabian",
+       "vector-action-delete": "Buran",
+       "vector-action-move": "Iyalis",
+       "vector-action-protect": "Protectan/kambilan",
+       "vector-action-undelete": "Isubli/iurung ya pangabura",
+       "vector-action-unprotect": "Idayu ya panga-protecta",
+       "vector-view-create": "Maglalang",
+       "vector-view-edit": "Alilan",
+       "vector-view-history": "Lawen ya ing amlat",
+       "vector-view-view": "Basan",
+       "vector-view-viewsource": "Lawen ya ing pikuanan"
+}
diff --git a/skins/Vector/i18n/pbb.json b/skins/Vector/i18n/pbb.json
new file mode 100644 (file)
index 0000000..9ddeada
--- /dev/null
@@ -0,0 +1,12 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Sahaquiel9102"
+               ]
+       },
+       "vector-action-delete": "Cjũcj",
+       "vector-action-move": "Quẽese'j",
+       "vector-action-protect": "Pjupj",
+       "vector-view-edit": "Yu'ptjej",
+       "vector-view-view": "Lẽeĩ"
+}
diff --git a/skins/Vector/i18n/pcd.json b/skins/Vector/i18n/pcd.json
new file mode 100644 (file)
index 0000000..57af67e
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Geoleplubo"
+               ]
+       },
+       "vector-action-addsection": "Rajouter un sujeut",
+       "vector-action-delete": "Défacer",
+       "vector-action-move": "Canger ch'nom",
+       "vector-action-protect": "Garantir",
+       "vector-action-undelete": "N'poin défacher",
+       "vector-action-unprotect": "Canger l'garantie",
+       "vector-view-create": "Créer",
+       "vector-view-edit": "Éditer",
+       "vector-view-history": "Vir l'histoère",
+       "vector-view-view": "Lire",
+       "vector-view-viewsource": "Vir l'source"
+}
diff --git a/skins/Vector/i18n/pdc.json b/skins/Vector/i18n/pdc.json
new file mode 100644 (file)
index 0000000..a3903b2
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Xqt"
+               ]
+       },
+       "vector-action-delete": "Verwische",
+       "vector-action-move": "Ziehe",
+       "vector-action-protect": "Schitze",
+       "vector-view-create": "Schtaerte",
+       "vector-view-edit": "Ennere",
+       "vector-view-history": "Gschicht zeige",
+       "vector-view-view": "Lese"
+}
diff --git a/skins/Vector/i18n/pfl.json b/skins/Vector/i18n/pfl.json
new file mode 100644 (file)
index 0000000..419eb4e
--- /dev/null
@@ -0,0 +1,17 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Manuae"
+               ]
+       },
+       "vector-action-addsection": "Abschnidd dzufiesche",
+       "vector-action-delete": "Lesche",
+       "vector-action-move": "Vaschiewe",
+       "vector-action-protect": "Schidze",
+       "vector-action-undelete": "Zriggbringe",
+       "vector-view-create": "Õleesche",
+       "vector-view-edit": "Drõ schaffe",
+       "vector-view-history": "Dadaigschischd",
+       "vector-view-view": "Lese",
+       "vector-view-viewsource": "Gwelltegschd zaische"
+}
diff --git a/skins/Vector/i18n/pi.json b/skins/Vector/i18n/pi.json
new file mode 100644 (file)
index 0000000..cc57f67
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Hemant wikikosh1"
+               ]
+       },
+       "vector-view-create": "रचेतु"
+}
diff --git a/skins/Vector/i18n/pih.json b/skins/Vector/i18n/pih.json
new file mode 100644 (file)
index 0000000..81fb2fc
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "AmaryllisGardener"
+               ]
+       },
+       "vector-view-history": "View histrei"
+}
diff --git a/skins/Vector/i18n/pl.json b/skins/Vector/i18n/pl.json
new file mode 100644 (file)
index 0000000..5cf2082
--- /dev/null
@@ -0,0 +1,24 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Matma Rex",
+                       "Sp5uhe"
+               ]
+       },
+       "skinname-vector": "Wektor",
+       "vector-skin-desc": "Odświeżona wersja skórki Książka, z nowym wyglądem i usprawnieniami",
+       "vector.css": "/* Umieszczony tutaj kod CSS wpłynie na wygląd skórki Wektor */",
+       "vector.js": "/* Umieszczony tutaj kod JavaScript zostanie załadowany wyłącznie przez użytkowników korzystających ze skórki Wektor */",
+       "vector-action-addsection": "Dodaj temat",
+       "vector-action-delete": "Usuń",
+       "vector-action-move": "Przenieś",
+       "vector-action-protect": "Zabezpiecz",
+       "vector-action-undelete": "Odtwórz",
+       "vector-action-unprotect": "Zmień zabezpieczenie",
+       "vector-view-create": "Utwórz",
+       "vector-view-edit": "Edytuj",
+       "vector-view-history": "Wyświetl historię",
+       "vector-view-view": "Czytaj",
+       "vector-view-viewsource": "Tekst źródłowy",
+       "vector-more-actions": "Więcej"
+}
diff --git a/skins/Vector/i18n/pms.json b/skins/Vector/i18n/pms.json
new file mode 100644 (file)
index 0000000..79627b0
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Borichèt"
+               ]
+       },
+       "vector-action-addsection": "Gionté n'argoment",
+       "vector-action-delete": "Scancelé",
+       "vector-action-move": "Tramudé",
+       "vector-action-protect": "Protege",
+       "vector-action-undelete": "Arcuperé",
+       "vector-action-unprotect": "Cangé la protession",
+       "vector-view-create": "Creé",
+       "vector-view-edit": "Modifiché",
+       "vector-view-history": "Smon-e la stòria",
+       "vector-view-view": "Lese",
+       "vector-view-viewsource": "Vëdde la sorgiss"
+}
diff --git a/skins/Vector/i18n/pnb.json b/skins/Vector/i18n/pnb.json
new file mode 100644 (file)
index 0000000..601f513
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Arslan",
+                       "Khalid Mahmood"
+               ]
+       },
+       "vector-action-addsection": "مضمون پاؤ",
+       "vector-action-delete": "مکاؤ",
+       "vector-action-move": "ٹرو",
+       "vector-action-protect": "بچاؤ",
+       "vector-action-undelete": "واپس لیاؤ",
+       "vector-action-unprotect": "تبدیلی بچاؤ",
+       "vector-view-create": "بناؤ",
+       "vector-view-edit": "لکھو",
+       "vector-view-history": "تریخ وکھاؤ",
+       "vector-view-view": "پڑھو",
+       "vector-view-viewsource": "ویکھو"
+}
diff --git a/skins/Vector/i18n/pnt.json b/skins/Vector/i18n/pnt.json
new file mode 100644 (file)
index 0000000..1e5ecad
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Omnipaedista",
+                       "Sinopeus",
+                       "ZaDiak"
+               ]
+       },
+       "vector-action-delete": "Σβήσον",
+       "vector-action-move": "Ετεροχλάεμαν",
+       "vector-action-protect": "Ασπάλιγμαν",
+       "vector-action-undelete": "Κλώσιμον",
+       "vector-action-unprotect": "Άνοιγμαν",
+       "vector-view-create": "Ποίσον",
+       "vector-view-edit": "Άλλαξον",
+       "vector-view-history": "Τερέστεν ιστορίαν",
+       "vector-view-view": "Δεάβασον",
+       "vector-view-viewsource": "Τερέστεν κωδικόν"
+}
diff --git a/skins/Vector/i18n/ppl.json b/skins/Vector/i18n/ppl.json
new file mode 100644 (file)
index 0000000..1c80fd8
--- /dev/null
@@ -0,0 +1,16 @@
+{
+       "@metadata": {
+               "authors": [
+                       "A R King"
+               ]
+       },
+       "vector-action-addsection": "Yankwik temaj",
+       "vector-action-delete": "Shikishti",
+       "vector-action-move": "Shikijkwani",
+       "vector-action-undelete": "Shalkwepa",
+       "vector-view-create": "Shikchiwa",
+       "vector-view-edit": "Shikpata",
+       "vector-view-history": "Ken mupatak",
+       "vector-view-view": "Shiamatachia",
+       "vector-view-viewsource": "Shikita ne codigoj"
+}
diff --git a/skins/Vector/i18n/prg.json b/skins/Vector/i18n/prg.json
new file mode 100644 (file)
index 0000000..dfd71db
--- /dev/null
@@ -0,0 +1,17 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Nertiks",
+                       "Peteris"
+               ]
+       },
+       "vector-action-delete": "Āupausinais",
+       "vector-action-move": "Prapīdais",
+       "vector-action-protect": "Kūnsteis",
+       "vector-action-unprotect": "Etkūnteis",
+       "vector-view-create": "Teīkeis",
+       "vector-view-edit": "Redigīs",
+       "vector-view-history": "Enwaidinnais istōrijan",
+       "vector-view-view": "Skaitāis",
+       "vector-view-viewsource": "Enwaidinnais appun"
+}
diff --git a/skins/Vector/i18n/ps.json b/skins/Vector/i18n/ps.json
new file mode 100644 (file)
index 0000000..2ccb265
--- /dev/null
@@ -0,0 +1,21 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Ahmed-Najib-Biabani-Ibrahimkhel"
+               ]
+       },
+       "skinname-vector": "وېکټور",
+       "vector.css": "/* د CSS هره بڼه چې دلته ځای پر ځای کېږي هغه به د وېکټور د پوښ ټولو کارنانو لپاره کار کوي */",
+       "vector.js": "/* د جاوا هر يو سکرېپټ چې دلته ځای پر ځای کېږي هغه به د وېکټور د پوښ ټولو کارنانو لپاره کار کوي */",
+       "vector-action-addsection": "سرليکونه ورگډول",
+       "vector-action-delete": "ړنگول",
+       "vector-action-move": "لېږدول",
+       "vector-action-protect": "ژغورل",
+       "vector-action-undelete": "ناړنگول",
+       "vector-action-unprotect": "ژغورنه بدلول",
+       "vector-view-create": "جوړول",
+       "vector-view-edit": "سمول",
+       "vector-view-history": "پېښليک کتل",
+       "vector-view-view": "لوستل",
+       "vector-view-viewsource": "سرچينه کتل"
+}
diff --git a/skins/Vector/i18n/pt-br.json b/skins/Vector/i18n/pt-br.json
new file mode 100644 (file)
index 0000000..db47675
--- /dev/null
@@ -0,0 +1,24 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Cainamarques",
+                       "Diego Queiroz",
+                       "Giro720",
+                       "Helder.wiki",
+                       555
+               ]
+       },
+       "vector.js": "/* Qualquer JavaScript aqui colocado afetará os usuários do skin Vector */",
+       "vector-action-addsection": "Adicionar tópico",
+       "vector-action-delete": "Eliminar",
+       "vector-action-move": "Mover",
+       "vector-action-protect": "Proteger",
+       "vector-action-undelete": "Restaurar",
+       "vector-action-unprotect": "Alterar a proteção",
+       "vector-view-create": "Criar",
+       "vector-view-edit": "Editar",
+       "vector-view-history": "Ver histórico",
+       "vector-view-view": "Ler",
+       "vector-view-viewsource": "Ver código-fonte",
+       "vector-more-actions": "Mais"
+}
diff --git a/skins/Vector/i18n/pt.json b/skins/Vector/i18n/pt.json
new file mode 100644 (file)
index 0000000..9882289
--- /dev/null
@@ -0,0 +1,28 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Crazymadlover",
+                       "Giro720",
+                       "Hamilton Abreu",
+                       "Malafaya",
+                       "Vitorvicentevalente",
+                       "Waldir"
+               ]
+       },
+       "skinname-vector": "Vector",
+       "vector-skin-desc": "Versão moderna do MonoBook com um visual fresco e várias melhorias de usabilidade",
+       "vector.css": "/* Código CSS colocado aqui afectará os utilizadores do tema Vector */",
+       "vector.js": "/* Código Javascript colocado aqui será carregado para utilizadores do tema Vector */",
+       "vector-action-addsection": "Adicionar&nbsp;tópico",
+       "vector-action-delete": "Eliminar",
+       "vector-action-move": "Mover",
+       "vector-action-protect": "Proteger",
+       "vector-action-undelete": "Restaurar",
+       "vector-action-unprotect": "Alterar protecção",
+       "vector-view-create": "Criar",
+       "vector-view-edit": "Editar",
+       "vector-view-history": "Ver histórico",
+       "vector-view-view": "Ler",
+       "vector-view-viewsource": "Ver fonte",
+       "vector-more-actions": "Mais"
+}
index 89d1cf0..fea395b 100644 (file)
@@ -1,9 +1,16 @@
 {
        "@metadata": {
-               "authors": []
+               "authors": [
+                       "Darth Kule",
+                       "EugeneZelenko",
+                       "Lloffiwr",
+                       "Shirayuki",
+                       "Umherirrender",
+                       "Matma Rex"
+               ]
        },
        "skinname-vector": "{{optional}}",
-       "vector-desc": "{{desc|name=Vector|url=http://www.mediawiki.org/wiki/Skin:Vector}}",
+       "vector-skin-desc": "{{desc|what=skin|name=Vector|url=https://www.mediawiki.org/wiki/Skin:Vector}}",
        "vector.css": "{{optional}}",
        "vector.js": "{{optional}}",
        "vector-action-addsection": "Used in the Vector skin. See for example {{canonicalurl:Talk:Main_Page|useskin=vector}}",
diff --git a/skins/Vector/i18n/qu.json b/skins/Vector/i18n/qu.json
new file mode 100644 (file)
index 0000000..789fd27
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "AlimanRuna"
+               ]
+       },
+       "vector-action-addsection": "Allwiyta yapay",
+       "vector-action-delete": "Qulluy",
+       "vector-action-move": "Astay",
+       "vector-action-protect": "Amachay",
+       "vector-action-undelete": "Qullusqata paqarichiy",
+       "vector-action-unprotect": "Amachayta wakinchay",
+       "vector-view-create": "Kamariy",
+       "vector-view-edit": "Llamk'apuy",
+       "vector-view-history": "Wiñay kawsayta qhaway",
+       "vector-view-view": "Ñawiriy",
+       "vector-view-viewsource": "Pukyu qillqata qhaway",
+       "vector-more-actions": "Aswan"
+}
diff --git a/skins/Vector/i18n/qug.json b/skins/Vector/i18n/qug.json
new file mode 100644 (file)
index 0000000..306f4ae
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Sylvain2803"
+               ]
+       },
+       "vector-action-addsection": "Shuk mushuk rimanakuyta kallarina",
+       "vector-action-delete": "Pichana",
+       "vector-action-move": "Apakuna",
+       "vector-action-protect": "Harkana",
+       "vector-action-undelete": "Kutin wacharichina",
+       "vector-action-unprotect": "Harkayta shukchina",
+       "vector-view-create": "Kamarina",
+       "vector-view-edit": "Killkana",
+       "vector-view-history": "Wiñay kawsayta rikuna",
+       "vector-view-view": "Killkakatina",
+       "vector-view-viewsource": "Pukyu killkata rikuna"
+}
diff --git a/skins/Vector/i18n/rap.json b/skins/Vector/i18n/rap.json
new file mode 100644 (file)
index 0000000..b1f644c
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Clerc",
+                       "MJohnsson"
+               ]
+       },
+       "vector-action-delete": "horo'i",
+       "vector-view-edit": "Haka titika"
+}
diff --git a/skins/Vector/i18n/rgn.json b/skins/Vector/i18n/rgn.json
new file mode 100644 (file)
index 0000000..784b8c5
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "vector-action-addsection": "Zonta una cjacarèda",
+       "vector-action-delete": "Scanzèla",
+       "vector-action-move": "Chèmbia nòm",
+       "vector-action-protect": "Metti-j una pruteziò",
+       "vector-action-undelete": "Armett a post",
+       "vector-action-unprotect": "Sbloca"
+}
diff --git a/skins/Vector/i18n/rif.json b/skins/Vector/i18n/rif.json
new file mode 100644 (file)
index 0000000..44de1de
--- /dev/null
@@ -0,0 +1,12 @@
+{
+       "@metadata": {
+               "authors": [
+                       "MoubarikBelkasim"
+               ]
+       },
+       "vector-action-move": "Smuṭṭi",
+       "vector-view-create": "Seɣnu",
+       "vector-view-edit": "Ẓṛeg",
+       "vector-view-history": "Ẓeṛ amezruy",
+       "vector-view-view": "Ɣeṛ"
+}
diff --git a/skins/Vector/i18n/rm.json b/skins/Vector/i18n/rm.json
new file mode 100644 (file)
index 0000000..83ce427
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Gion-andri"
+               ]
+       },
+       "vector-action-addsection": "Agiuntar chapitel",
+       "vector-action-delete": "Stizzar",
+       "vector-action-move": "Spustar",
+       "vector-action-protect": "Bloccar",
+       "vector-action-undelete": "Restituir",
+       "vector-action-unprotect": "Midar la protecziun",
+       "vector-view-create": "Crear",
+       "vector-view-edit": "Modifitgar",
+       "vector-view-history": "Cronologia",
+       "vector-view-view": "Leger",
+       "vector-view-viewsource": "Mussar il code"
+}
diff --git a/skins/Vector/i18n/rmf.json b/skins/Vector/i18n/rmf.json
new file mode 100644 (file)
index 0000000..9865a50
--- /dev/null
@@ -0,0 +1,15 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Szonja"
+               ]
+       },
+       "vector-action-addsection": "Tilja topikos",
+       "vector-action-delete": "Tšuu nikki",
+       "vector-action-undelete": "Tšuu paale",
+       "vector-view-create": "Luona",
+       "vector-view-edit": "Muoka",
+       "vector-view-history": "Sik histores",
+       "vector-view-view": "Draba",
+       "vector-view-viewsource": "Sik navasiinako koodos"
+}
diff --git a/skins/Vector/i18n/ro.json b/skins/Vector/i18n/ro.json
new file mode 100644 (file)
index 0000000..96725c0
--- /dev/null
@@ -0,0 +1,25 @@
+{
+       "@metadata": {
+               "authors": [
+                       "AdiJapan",
+                       "Danutz",
+                       "Firilacroco",
+                       "Minisarm",
+                       "Strainu"
+               ]
+       },
+       "skinname-vector": "Vector",
+       "vector.css": "/* CSS plasate aici vor afecta utilizatorii stilului Vector */",
+       "vector-action-addsection": "Mesaj nou",
+       "vector-action-delete": "Ștergere",
+       "vector-action-move": "Redenumire",
+       "vector-action-protect": "Protejare",
+       "vector-action-undelete": "Recuperare",
+       "vector-action-unprotect": "Modificare protecție",
+       "vector-view-create": "Creare",
+       "vector-view-edit": "Modificare",
+       "vector-view-history": "Istoric",
+       "vector-view-view": "Lectură",
+       "vector-view-viewsource": "Sursă pagină",
+       "vector-more-actions": "Mai mult"
+}
diff --git a/skins/Vector/i18n/roa-tara.json b/skins/Vector/i18n/roa-tara.json
new file mode 100644 (file)
index 0000000..c5721e7
--- /dev/null
@@ -0,0 +1,21 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Joetaras"
+               ]
+       },
+       "skinname-vector": "Vettore",
+       "vector.css": "/* 'U CSS ca se iacchie aqquà 'u 'ndrucane le utinde d'a masckere Vettore */",
+       "vector.js": "/* Ogne JavaScript aqquà avène carecate pe le utinde ca ausane 'a masckere Vettore */",
+       "vector-action-addsection": "Aggiunge 'na discussiona",
+       "vector-action-delete": "Scangille",
+       "vector-action-move": "Spuèste",
+       "vector-action-protect": "Protegge",
+       "vector-action-undelete": "Repristine",
+       "vector-action-unprotect": "Cange 'a protezione",
+       "vector-view-create": "Ccreje",
+       "vector-view-edit": "Cange",
+       "vector-view-history": "Vide 'u cunde",
+       "vector-view-view": "Ligge",
+       "vector-view-viewsource": "Vide 'u sorgende"
+}
diff --git a/skins/Vector/i18n/ru.json b/skins/Vector/i18n/ru.json
new file mode 100644 (file)
index 0000000..cd344b9
--- /dev/null
@@ -0,0 +1,28 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Ignatus",
+                       "JenVan",
+                       "Kaganer",
+                       "Nemo bis",
+                       "Okras",
+                       "Александр Сигачёв"
+               ]
+       },
+       "skinname-vector": "Векторное",
+       "vector-skin-desc": "Современная версия MonoBook с обновлённым оформлением и многими улучшениями в юзабилити",
+       "vector.css": "/* Размещённый здесь CSS будет применяться к векторной теме оформления  */",
+       "vector.js": "/* Размещённый здесь код JavaScript будет загружаться пользователям, использующим тему оформления Vector */",
+       "vector-action-addsection": "Добавить тему",
+       "vector-action-delete": "Удалить",
+       "vector-action-move": "Переименовать",
+       "vector-action-protect": "Защитить",
+       "vector-action-undelete": "Восстановить",
+       "vector-action-unprotect": "Изменить защиту",
+       "vector-view-create": "Создание",
+       "vector-view-edit": "Править",
+       "vector-view-history": "История",
+       "vector-view-view": "Читать",
+       "vector-view-viewsource": "Просмотр разметки",
+       "vector-more-actions": "Ещё"
+}
diff --git a/skins/Vector/i18n/rue.json b/skins/Vector/i18n/rue.json
new file mode 100644 (file)
index 0000000..2147f80
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Gazeb"
+               ]
+       },
+       "vector-action-addsection": "Придати тему",
+       "vector-action-delete": "Вымазати",
+       "vector-action-move": "Переменовати",
+       "vector-action-protect": "Всокотити",
+       "vector-action-undelete": "Обновити",
+       "vector-action-unprotect": "Змінити замок",
+       "vector-view-create": "Створити",
+       "vector-view-edit": "Едітовати",
+       "vector-view-history": "Видїти історію",
+       "vector-view-view": "Чітати",
+       "vector-view-viewsource": "Видїти код"
+}
diff --git a/skins/Vector/i18n/rup.json b/skins/Vector/i18n/rup.json
new file mode 100644 (file)
index 0000000..3b0ba68
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "@metadata": {
+               "authors": [
+                       "D'AroemenenZullenNiVergaan"
+               ]
+       },
+       "vector-action-addsection": "Dimândari nauâ",
+       "vector-view-history": "Veḑ istoricu"
+}
diff --git a/skins/Vector/i18n/rw.json b/skins/Vector/i18n/rw.json
new file mode 100644 (file)
index 0000000..d151c2d
--- /dev/null
@@ -0,0 +1,11 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Vogone"
+               ]
+       },
+       "vector-action-move": "Imura",
+       "vector-view-edit": "Hindura",
+       "vector-view-history": "Reba amateka",
+       "vector-view-view": "Soma"
+}
diff --git a/skins/Vector/i18n/ryu.json b/skins/Vector/i18n/ryu.json
new file mode 100644 (file)
index 0000000..ee1d2c1
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Kyoww"
+               ]
+       },
+       "vector-view-edit": "直すん",
+       "vector-view-view": "読むん"
+}
diff --git a/skins/Vector/i18n/sa.json b/skins/Vector/i18n/sa.json
new file mode 100644 (file)
index 0000000..610ba3e
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "NehalDaveND",
+                       "Shubha"
+               ]
+       },
+       "vector-action-addsection": "विषयः योज्यताम्",
+       "vector-action-delete": "अपाक्रियताम्",
+       "vector-action-move": "शीर्षकं परिवर्त्यताम्",
+       "vector-action-protect": "संरक्ष्यताम्",
+       "vector-action-undelete": "नापाकृतं",
+       "vector-action-unprotect": "संरक्षणं परिवर्तयतु",
+       "vector-view-create": "सृज्यताम्",
+       "vector-view-edit": "सम्पाद्यताम्",
+       "vector-view-history": "इतिहासः दृश्यताम्",
+       "vector-view-view": "पठ्यताम्",
+       "vector-view-viewsource": "स्रोतः दृश्यताम्"
+}
diff --git a/skins/Vector/i18n/sah.json b/skins/Vector/i18n/sah.json
new file mode 100644 (file)
index 0000000..9d44db5
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "HalanTul"
+               ]
+       },
+       "vector-action-addsection": "Тиэмэ эбии",
+       "vector-action-delete": "Сот",
+       "vector-action-move": "Аатын уларыт",
+       "vector-action-protect": "Уларыйбат гын",
+       "vector-action-undelete": "Төннөр",
+       "vector-action-unprotect": "Көмүскэлин уларыт",
+       "vector-view-create": "Ай",
+       "vector-view-edit": "Уларыт",
+       "vector-view-history": "Устуоруйатын көрүү",
+       "vector-view-view": "Ааҕыы",
+       "vector-view-viewsource": "Бэлиэлэрин көрүү"
+}
diff --git a/skins/Vector/i18n/sat.json b/skins/Vector/i18n/sat.json
new file mode 100644 (file)
index 0000000..d079721
--- /dev/null
@@ -0,0 +1,20 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Albinus",
+                       "Samar88",
+                       "Srabony90"
+               ]
+       },
+       "vector-action-addsection": "Asol katha joṛaome",
+       "vector-action-delete": "Giḍi",
+       "vector-action-move": "Ocoḱ́me",
+       "vector-action-protect": "Bańcao",
+       "vector-action-undelete": "Bań getgiḍi",
+       "vector-action-unprotect": "Bodol rukhiyạ",
+       "vector-view-create": "Tearme",
+       "vector-view-edit": "So̠mpado̠n",
+       "vector-view-history": "Jạṛ ńelme",
+       "vector-view-view": "Paṛhaḱme",
+       "vector-view-viewsource": "Ńamoḱaḱ ńelme"
+}
diff --git a/skins/Vector/i18n/saz.json b/skins/Vector/i18n/saz.json
new file mode 100644 (file)
index 0000000..a3a6ded
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "MooRePrabu"
+               ]
+       },
+       "vector-view-view": "ꢗꢾꢮ꣄ꢣꢶ"
+}
diff --git a/skins/Vector/i18n/sc.json b/skins/Vector/i18n/sc.json
new file mode 100644 (file)
index 0000000..e7876a6
--- /dev/null
@@ -0,0 +1,20 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Andria",
+                       "Marzedu",
+                       "Via maxima"
+               ]
+       },
+       "vector-action-addsection": "Giunghe cuntierra",
+       "vector-action-delete": "Cantzella",
+       "vector-action-move": "Move",
+       "vector-action-protect": "Ampara",
+       "vector-action-undelete": "Recùpera",
+       "vector-view-create": "Crea",
+       "vector-view-edit": "Acontza",
+       "vector-view-history": "Càstia istòria",
+       "vector-view-view": "Leghe",
+       "vector-view-viewsource": "Càstia mitza",
+       "vector-more-actions": "Prus"
+}
diff --git a/skins/Vector/i18n/scn.json b/skins/Vector/i18n/scn.json
new file mode 100644 (file)
index 0000000..a9483c4
--- /dev/null
@@ -0,0 +1,20 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Gmelfi",
+                       "Melos"
+               ]
+       },
+       "vector-action-addsection": "Agghiunci argumentu",
+       "vector-action-delete": "Elìmina",
+       "vector-action-move": "Sposta",
+       "vector-action-protect": "Pruteggi",
+       "vector-action-undelete": "Riprìstina",
+       "vector-action-unprotect": "Cancia la prutizzioni",
+       "vector-view-create": "Crea",
+       "vector-view-edit": "Cancia",
+       "vector-view-history": "Talìa a storia",
+       "vector-view-view": "Leggi",
+       "vector-view-viewsource": "Talìa la fonti",
+       "vector-more-actions": "Àutri cosi"
+}
diff --git a/skins/Vector/i18n/sco.json b/skins/Vector/i18n/sco.json
new file mode 100644 (file)
index 0000000..acf5387
--- /dev/null
@@ -0,0 +1,20 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Avicennasis",
+                       "John Reid",
+                       "Omnipaedista"
+               ]
+       },
+       "vector-action-addsection": "Eik topic",
+       "vector-action-delete": "Delyte",
+       "vector-action-move": "Muiv",
+       "vector-action-protect": "Fend",
+       "vector-action-undelete": "Ondelyte",
+       "vector-action-unprotect": "Chynge protection",
+       "vector-view-create": "Ceaut",
+       "vector-view-edit": "Eedit",
+       "vector-view-history": "See histerie",
+       "vector-view-view": "Read",
+       "vector-view-viewsource": "See Soorce"
+}
diff --git a/skins/Vector/i18n/sd.json b/skins/Vector/i18n/sd.json
new file mode 100644 (file)
index 0000000..04a5370
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "vector-action-delete": "ڊاھيو",
+       "vector-action-move": "چوريو",
+       "vector-action-protect": "تحفظيو",
+       "vector-action-unprotect": "اڻتحفظيو",
+       "vector-view-create": "سرجيو",
+       "vector-view-edit": "سنواريو",
+       "vector-view-viewsource": "ڪوڊ ڏسو"
+}
diff --git a/skins/Vector/i18n/sdc.json b/skins/Vector/i18n/sdc.json
new file mode 100644 (file)
index 0000000..c843931
--- /dev/null
@@ -0,0 +1,17 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Felis",
+                       "Jun Misugi"
+               ]
+       },
+       "vector-action-addsection": "Aggiungì oggettu",
+       "vector-action-delete": "Canzella",
+       "vector-action-move": "Ippustha",
+       "vector-action-protect": "Pruteggì",
+       "vector-view-create": "Cria",
+       "vector-view-edit": "Mudifigga",
+       "vector-view-history": "Vèdi isthòria",
+       "vector-view-view": "Leggi",
+       "vector-view-viewsource": "Vèdi fonti"
+}
diff --git a/skins/Vector/i18n/sdh.json b/skins/Vector/i18n/sdh.json
new file mode 100644 (file)
index 0000000..2f4523f
--- /dev/null
@@ -0,0 +1,16 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Paraw2"
+               ]
+       },
+       "vector-action-addsection": "بابەت تازە بدە سەری",
+       "vector-action-delete": "بسڕەوە",
+       "vector-action-move": "جیوەجی بکە",
+       "vector-action-protect": "بپیەرێزەێ",
+       "vector-view-create": "درسکردن",
+       "vector-view-edit": "وێراشتەێ بکە",
+       "vector-view-history": "دیرۆکەگەی بۊن",
+       "vector-view-view": "بخوەنە",
+       "vector-view-viewsource": "سەرچاوەگەێ بۊن"
+}
diff --git a/skins/Vector/i18n/se.json b/skins/Vector/i18n/se.json
new file mode 100644 (file)
index 0000000..bb0a900
--- /dev/null
@@ -0,0 +1,20 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Gálaniitoluodda",
+                       "Jeblad",
+                       "Trondtr"
+               ]
+       },
+       "vector-action-addsection": "Lasit fáttá",
+       "vector-action-delete": "Sihko",
+       "vector-action-move": "Sirdde",
+       "vector-action-protect": "Suodjal",
+       "vector-action-undelete": "Máhcat",
+       "vector-action-unprotect": "Rievdat suodjaleami",
+       "vector-view-create": "Álggat",
+       "vector-view-edit": "Rievdat",
+       "vector-view-history": "Geahča historjjá",
+       "vector-view-view": "Loga",
+       "vector-view-viewsource": "Geahča gáldokoda"
+}
diff --git a/skins/Vector/i18n/sg.json b/skins/Vector/i18n/sg.json
new file mode 100644 (file)
index 0000000..2f65834
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Mdkidiri"
+               ]
+       },
+       "vector-action-addsection": "Zîa mbênî lilö daä",
+       "vector-action-delete": "Lungûla",
+       "vector-action-move": "Sanzêe ïrï",
+       "vector-action-protect": "Funga",
+       "vector-action-undelete": "Kîri na nî",
+       "vector-action-unprotect": "Sanzêe fungä",
+       "vector-view-create": "Seka",
+       "vector-view-edit": "Sepe",
+       "vector-view-history": "Tanda mbai nî",
+       "vector-view-view": "Dîko",
+       "vector-view-viewsource": "Fa ligbî nî"
+}
diff --git a/skins/Vector/i18n/sgs.json b/skins/Vector/i18n/sgs.json
new file mode 100644 (file)
index 0000000..7b2591c
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Hugo.arg"
+               ]
+       },
+       "vector-action-addsection": "Pridietė tema",
+       "vector-action-delete": "Trintė",
+       "vector-action-move": "Parvadintė",
+       "vector-action-protect": "Ožrakintė",
+       "vector-action-undelete": "Atkortė",
+       "vector-action-unprotect": "Keistė apsauga",
+       "vector-view-create": "Sokortė",
+       "vector-view-edit": "Taisītė",
+       "vector-view-history": "Veizietė istuorėjė",
+       "vector-view-view": "Skaitītė",
+       "vector-view-viewsource": "Veizietė kuoda"
+}
diff --git a/skins/Vector/i18n/sh.json b/skins/Vector/i18n/sh.json
new file mode 100644 (file)
index 0000000..21e6153
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "OC Ripper"
+               ]
+       },
+       "vector-action-addsection": "Dodaj temu",
+       "vector-action-delete": "Brisanje",
+       "vector-action-move": "Preusmjeri",
+       "vector-action-protect": "Zaštiti",
+       "vector-action-undelete": "Vrati obrisano",
+       "vector-action-unprotect": "Promijeni zaštitu",
+       "vector-view-create": "Napravi",
+       "vector-view-edit": "Uredi",
+       "vector-view-history": "Pregled historije",
+       "vector-view-view": "Čitaj",
+       "vector-view-viewsource": "Vidi izvor (source)"
+}
diff --git a/skins/Vector/i18n/shi.json b/skins/Vector/i18n/shi.json
new file mode 100644 (file)
index 0000000..10f48d8
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Dalinanir"
+               ]
+       },
+       "vector-action-addsection": "Zayd amli",
+       "vector-action-delete": "Ḥiyd",
+       "vector-action-move": "Smmatti",
+       "vector-action-protect": "Ḥbu",
+       "vector-action-undelete": "Rard may mayḥiydn",
+       "vector-action-unprotect": "Ḥiyd aḥbu",
+       "vector-view-create": "Skert",
+       "vector-view-edit": "Ara",
+       "vector-view-history": "Mel amzruy",
+       "vector-view-view": "ɣr",
+       "vector-view-viewsource": "Ẓr asagm"
+}
diff --git a/skins/Vector/i18n/shn.json b/skins/Vector/i18n/shn.json
new file mode 100644 (file)
index 0000000..c2cea6a
--- /dev/null
@@ -0,0 +1,13 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Saiddzone"
+               ]
+       },
+       "vector-action-protect": "ႁေႉၵင်ႈ",
+       "vector-view-create": "သၢင်ႈ",
+       "vector-view-edit": "မူၼ်ႉမႄး",
+       "vector-view-history": "တူၺ်းပိုၼ်း",
+       "vector-view-view": "လူတူၺ်း",
+       "vector-view-viewsource": "တူၺ်း ငဝ်ႈငႃႇ"
+}
diff --git a/skins/Vector/i18n/si.json b/skins/Vector/i18n/si.json
new file mode 100644 (file)
index 0000000..640874f
--- /dev/null
@@ -0,0 +1,22 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Thushara",
+                       "දසනැබළයෝ",
+                       "පසිඳු කාවින්ද",
+                       "සුරනිමල"
+               ]
+       },
+       "vector-action-addsection": "මාතෘකාව එක්කරන්න",
+       "vector-action-delete": "මකන්න",
+       "vector-action-move": "ගෙනයන්න",
+       "vector-action-protect": "ආරක්‍ෂණය",
+       "vector-action-undelete": "මකාදැමීම අවලංගු කරන්න",
+       "vector-action-unprotect": "ආරක්ෂණ තත්වය වෙනස් කරන්න",
+       "vector-view-create": "තනන්න",
+       "vector-view-edit": "සංස්කරණය",
+       "vector-view-history": "ඉතිහාසය නරඹන්න",
+       "vector-view-view": "කියවන්න",
+       "vector-view-viewsource": "මූලාශ්‍රය නරඹන්න",
+       "vector-more-actions": "තවත්"
+}
diff --git a/skins/Vector/i18n/sk.json b/skins/Vector/i18n/sk.json
new file mode 100644 (file)
index 0000000..06bf290
--- /dev/null
@@ -0,0 +1,24 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Helix84",
+                       "Rudko",
+                       "Sudo77(new)"
+               ]
+       },
+       "skinname-vector": "Vector",
+       "vector.css": "/* Tu umiestnené CSS bude ovplyvňovať používateľov štýlu Vector */",
+       "vector.js": "/* Tu sa nachádzajúci JavaScript sa načíta používateľom vzhľadu Vector */",
+       "vector-action-addsection": "Pridať tému",
+       "vector-action-delete": "Zmazať",
+       "vector-action-move": "Presunúť",
+       "vector-action-protect": "Zamknúť",
+       "vector-action-undelete": "Obnoviť",
+       "vector-action-unprotect": "Zmeniť stav ochrany",
+       "vector-view-create": "Vytvoriť",
+       "vector-view-edit": "Upraviť",
+       "vector-view-history": "Zobraziť históriu",
+       "vector-view-view": "Čítať",
+       "vector-view-viewsource": "Zobraziť zdroj",
+       "vector-more-actions": "Viac"
+}
diff --git a/skins/Vector/i18n/sl.json b/skins/Vector/i18n/sl.json
new file mode 100644 (file)
index 0000000..85e8574
--- /dev/null
@@ -0,0 +1,21 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Dbc334",
+                       "Smihael",
+                       "Yerpo"
+               ]
+       },
+       "vector-action-addsection": "Dodaj temo",
+       "vector-action-delete": "Izbriši",
+       "vector-action-move": "Prestavi",
+       "vector-action-protect": "Zaščiti",
+       "vector-action-undelete": "Vrni",
+       "vector-action-unprotect": "Spremeni zaščito",
+       "vector-view-create": "Ustvari",
+       "vector-view-edit": "Uredi",
+       "vector-view-history": "Zgodovina",
+       "vector-view-view": "Preberi",
+       "vector-view-viewsource": "Izvorno besedilo",
+       "vector-more-actions": "Več"
+}
diff --git a/skins/Vector/i18n/sli.json b/skins/Vector/i18n/sli.json
new file mode 100644 (file)
index 0000000..e394c5e
--- /dev/null
@@ -0,0 +1,21 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Przemub",
+                       "Schläsinger",
+                       "Timpul",
+                       "Äberlausitzer"
+               ]
+       },
+       "vector-action-addsection": "Obschnitt hinzufiega",
+       "vector-action-delete": "Läscha",
+       "vector-action-move": "Verschieba",
+       "vector-action-protect": "Schützen",
+       "vector-action-undelete": "Wiederherstella",
+       "vector-action-unprotect": "Freigahn",
+       "vector-view-create": "Erstella",
+       "vector-view-edit": "Bearbeita",
+       "vector-view-history": "Versionsgeschichte",
+       "vector-view-view": "Lessa",
+       "vector-view-viewsource": "Quelltext siehn"
+}
diff --git a/skins/Vector/i18n/sly.json b/skins/Vector/i18n/sly.json
new file mode 100644 (file)
index 0000000..deb6741
--- /dev/null
@@ -0,0 +1,13 @@
+{
+       "@metadata": {
+               "authors": [
+                       "ZQheert"
+               ]
+       },
+       "vector-action-delete": "Lelei",
+       "vector-action-move": "Palettei",
+       "vector-view-create": "Bua'",
+       "vector-view-edit": "edi'",
+       "vector-view-view": "Bacai",
+       "vector-view-viewsource": "Tilingi assala'na"
+}
diff --git a/skins/Vector/i18n/so.json b/skins/Vector/i18n/so.json
new file mode 100644 (file)
index 0000000..1362fd8
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Maax"
+               ]
+       },
+       "vector-action-addsection": "Hadal ku dar",
+       "vector-action-delete": "Tirtir",
+       "vector-action-move": "Wareeji",
+       "vector-action-protect": "Difaac",
+       "vector-action-undelete": "Ha tirtirin",
+       "vector-action-unprotect": "Bedel difaacida",
+       "vector-view-create": "Sameey",
+       "vector-view-edit": "Wax ka bedel",
+       "vector-view-history": "Itusi taariikhda",
+       "vector-view-view": "Akhri",
+       "vector-view-viewsource": "Itusi xogta"
+}
diff --git a/skins/Vector/i18n/sq.json b/skins/Vector/i18n/sq.json
new file mode 100644 (file)
index 0000000..fcc3434
--- /dev/null
@@ -0,0 +1,23 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Dasius",
+                       "GretaDoci",
+                       "MicroBoy",
+                       "Mikullovci11",
+                       "Olsi"
+               ]
+       },
+       "vector-action-addsection": "Shto një temë",
+       "vector-action-delete": "Grise",
+       "vector-action-move": "Zhvendose",
+       "vector-action-protect": "Mbroje",
+       "vector-action-undelete": "Anullo fshirjen",
+       "vector-action-unprotect": "Ndrysho mbrojtjen",
+       "vector-view-create": "Krijo",
+       "vector-view-edit": "Redakto",
+       "vector-view-history": "Shiko historikun",
+       "vector-view-view": "Lexo",
+       "vector-view-viewsource": "Shiko tekstin",
+       "vector-more-actions": "Më tepër..."
+}
diff --git a/skins/Vector/i18n/sr-ec.json b/skins/Vector/i18n/sr-ec.json
new file mode 100644 (file)
index 0000000..e33b69c
--- /dev/null
@@ -0,0 +1,25 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Milicevic01",
+                       "Rancher",
+                       "Жељко Тодоровић",
+                       "Михајло Анђелковић"
+               ]
+       },
+       "skinname-vector": "Векторско",
+       "vector.css": "/* CSS постављен овде ће утицати на све кориснике теме „Векторско“ */",
+       "vector.js": "/* Јаваскрипт постављен овде ће се учитати за све оне који користе тему „Векторско“ */",
+       "vector-action-addsection": "Додај тему",
+       "vector-action-delete": "Обриши",
+       "vector-action-move": "Премести",
+       "vector-action-protect": "Заштити",
+       "vector-action-undelete": "Врати",
+       "vector-action-unprotect": "Промени заштиту",
+       "vector-view-create": "Направи",
+       "vector-view-edit": "Уреди",
+       "vector-view-history": "Историја",
+       "vector-view-view": "Читај",
+       "vector-view-viewsource": "Изворни код",
+       "vector-more-actions": "Више"
+}
diff --git a/skins/Vector/i18n/sr-el.json b/skins/Vector/i18n/sr-el.json
new file mode 100644 (file)
index 0000000..38f17ad
--- /dev/null
@@ -0,0 +1,25 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Michaello",
+                       "Milicevic01",
+                       "Rancher",
+                       "Жељко Тодоровић"
+               ]
+       },
+       "skinname-vector": "Vektorsko",
+       "vector.css": "/* CSS postavljen ovde će uticati na sve korisnike teme „Vektorsko“ */",
+       "vector.js": "/* Javaskript postavljen ovde će se učitati za sve one koji koriste temu „Vektorsko“ */",
+       "vector-action-addsection": "Dodaj temu",
+       "vector-action-delete": "Obriši",
+       "vector-action-move": "Premesti",
+       "vector-action-protect": "Zaštiti",
+       "vector-action-undelete": "Vrati",
+       "vector-action-unprotect": "Promeni zaštitu",
+       "vector-view-create": "Napravi",
+       "vector-view-edit": "Uredi",
+       "vector-view-history": "Istorija",
+       "vector-view-view": "Čitaj",
+       "vector-view-viewsource": "Izvorni kod",
+       "vector-more-actions": "Više"
+}
diff --git a/skins/Vector/i18n/ss.json b/skins/Vector/i18n/ss.json
new file mode 100644 (file)
index 0000000..44a5edf
--- /dev/null
@@ -0,0 +1,13 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Sibande"
+               ]
+       },
+       "vector-action-addsection": "Ngeta sihloko",
+       "vector-action-move": "Khweshisa",
+       "vector-view-create": "Create",
+       "vector-view-edit": "Hlela",
+       "vector-view-history": "Bona umlandvo",
+       "vector-view-view": "Fundza"
+}
diff --git a/skins/Vector/i18n/stq.json b/skins/Vector/i18n/stq.json
new file mode 100644 (file)
index 0000000..1e2da5a
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Pyt"
+               ]
+       },
+       "vector-action-addsection": "Ousnit bietouföigje",
+       "vector-action-delete": "Läskje",
+       "vector-action-move": "Ferskuuwe",
+       "vector-action-protect": "Skutsje",
+       "vector-action-undelete": "Wierhäärstaale",
+       "vector-action-unprotect": "Siedenskuts annerje",
+       "vector-view-create": "Moakje",
+       "vector-view-edit": "Beoarbaidje",
+       "vector-view-history": "Versionsgeskichte",
+       "vector-view-view": "Leese",
+       "vector-view-viewsource": "Wältext bekiekje"
+}
diff --git a/skins/Vector/i18n/su.json b/skins/Vector/i18n/su.json
new file mode 100644 (file)
index 0000000..d8a780a
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Kandar"
+               ]
+       },
+       "vector-action-addsection": "Jieun jejer anyar",
+       "vector-action-delete": "Hapus",
+       "vector-action-move": "Pindahkeun",
+       "vector-action-protect": "Konci",
+       "vector-action-undelete": "Bolaykeun ngahapus",
+       "vector-action-unprotect": "Robah protéksi",
+       "vector-view-create": "Jieun",
+       "vector-view-edit": "Édit",
+       "vector-view-history": "Témbongkeun jujutan",
+       "vector-view-view": "Baca",
+       "vector-view-viewsource": "Témbongkeun sumber"
+}
diff --git a/skins/Vector/i18n/sv.json b/skins/Vector/i18n/sv.json
new file mode 100644 (file)
index 0000000..930bbce
--- /dev/null
@@ -0,0 +1,27 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Martinwiss",
+                       "Najami",
+                       "Skalman",
+                       "WikiPhoenix",
+                       "Lokal Profil"
+               ]
+       },
+       "skinname-vector": "Vector",
+       "vector-skin-desc": "Modern version av MonoBook med ett nytt utseende och flera användarvänlighetsförbättringar",
+       "vector.css": "/* CSS som skrivs här kommer att påverka alla användare av skalet Vector */",
+       "vector.js": "/* JavaScript här kommer att laddas för dem som använder skalet Vector */",
+       "vector-action-addsection": "Nytt ämne",
+       "vector-action-delete": "Radera",
+       "vector-action-move": "Flytta",
+       "vector-action-protect": "Skrivskydda",
+       "vector-action-undelete": "Återställ",
+       "vector-action-unprotect": "Ändra skydd",
+       "vector-view-create": "Skapa",
+       "vector-view-edit": "Redigera",
+       "vector-view-history": "Visa historik",
+       "vector-view-view": "Visa",
+       "vector-view-viewsource": "Visa källa",
+       "vector-more-actions": "Mer"
+}
diff --git a/skins/Vector/i18n/sw.json b/skins/Vector/i18n/sw.json
new file mode 100644 (file)
index 0000000..cb511ba
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Lloffiwr",
+                       "Muddyb Blast Producer"
+               ]
+       },
+       "vector-action-addsection": "Weka mada",
+       "vector-action-delete": "Futa",
+       "vector-action-move": "Hamisha",
+       "vector-action-protect": "Linda",
+       "vector-action-undelete": "Rudisha",
+       "vector-action-unprotect": "Badilisha ulinzi",
+       "vector-view-create": "Anzisha",
+       "vector-view-edit": "Hariri",
+       "vector-view-history": "Fungua historia",
+       "vector-view-view": "Soma",
+       "vector-view-viewsource": "Tazama msimbo"
+}
diff --git a/skins/Vector/i18n/szl.json b/skins/Vector/i18n/szl.json
new file mode 100644 (file)
index 0000000..9e8c106
--- /dev/null
@@ -0,0 +1,20 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Britscher",
+                       "Gaj777",
+                       "Przemub"
+               ]
+       },
+       "vector-action-addsection": "Nowo tajla",
+       "vector-action-delete": "Wyćepej",
+       "vector-action-move": "Przećep",
+       "vector-action-protect": "Zawrzij",
+       "vector-action-undelete": "Wćep",
+       "vector-action-unprotect": "Uodymkńij",
+       "vector-view-create": "Stwůrz",
+       "vector-view-edit": "Sprowjej",
+       "vector-view-history": "Uobocz gyszichta",
+       "vector-view-view": "Czytej",
+       "vector-view-viewsource": "Zdrzůdłowy tekst"
+}
diff --git a/skins/Vector/i18n/ta.json b/skins/Vector/i18n/ta.json
new file mode 100644 (file)
index 0000000..21f8501
--- /dev/null
@@ -0,0 +1,21 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Mayooranathan",
+                       "Shanmugamp7",
+                       "Surya Prakash.S.A.",
+                       "TRYPPN"
+               ]
+       },
+       "vector-action-addsection": "தலைப்பைச் சேர்",
+       "vector-action-delete": "நீக்குக",
+       "vector-action-move": "நகர்த்தவும்",
+       "vector-action-protect": "காக்கவும்",
+       "vector-action-undelete": "நீக்கத்தை நிறுத்து",
+       "vector-action-unprotect": "காப்பை மாற்று",
+       "vector-view-create": "உருவாக்கவும்",
+       "vector-view-edit": "தொகு",
+       "vector-view-history": "வரலாற்றைக் காட்டவும்",
+       "vector-view-view": "படிக்கவும்",
+       "vector-view-viewsource": "மூலத்தைக் காட்டவும்"
+}
diff --git a/skins/Vector/i18n/tcy.json b/skins/Vector/i18n/tcy.json
new file mode 100644 (file)
index 0000000..0001fe5
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "NamwikiTL",
+                       "VASANTH S.N."
+               ]
+       },
+       "vector-action-addsection": "ವಿಷಯ ಸೇರಾಲೆ",
+       "vector-action-delete": "ದೆತ್ತ್ ಪಾಡ್ಲೆ",
+       "vector-action-move": "ಸ್ಥಳಾಂತರ ಮಲ್ಪುಲೆ",
+       "vector-action-protect": "ಸ೦ರಕ್ಷಿಸಾಲೆ",
+       "vector-action-undelete": "ಮಾಜಾವಡೆ",
+       "vector-action-unprotect": "ಬದಲಾವಣೆನ್ ರಕ್ಷಿಸಾಲೆ",
+       "vector-view-create": " ಸುರು ಮಲ್ಪುಲೆ",
+       "vector-view-edit": "ಸಂಪಾದನೆ ಮಲ್ಪುಲೆ",
+       "vector-view-history": "ಇತಿಹಾಸೊನು ತೂಲೆ",
+       "vector-view-view": "ಓದ್ಲೇ",
+       "vector-view-viewsource": "ಮೂಲೊನು ತೂಲೆ"
+}
diff --git a/skins/Vector/i18n/te.json b/skins/Vector/i18n/te.json
new file mode 100644 (file)
index 0000000..f32d90e
--- /dev/null
@@ -0,0 +1,24 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Chaduvari",
+                       "Kiranmayee",
+                       "Praveen Illa",
+                       "Ravichandra",
+                       "Veeven"
+               ]
+       },
+       "skinname-vector": "వెక్టర్",
+       "vector-action-addsection": "విషయాన్ని చేర్చు",
+       "vector-action-delete": "తొలగించు",
+       "vector-action-move": "తరలించు",
+       "vector-action-protect": "సంరక్షించు",
+       "vector-action-undelete": "తొలగింపును రద్దుచెయ్యి",
+       "vector-action-unprotect": "సంరక్షణను మార్చు",
+       "vector-view-create": "సృష్టించు",
+       "vector-view-edit": "సవరించు",
+       "vector-view-history": "చరిత్రను చూడండి",
+       "vector-view-view": "చదువు",
+       "vector-view-viewsource": "మూలాన్ని చూపించు",
+       "vector-more-actions": "మరిన్ని"
+}
diff --git a/skins/Vector/i18n/tet.json b/skins/Vector/i18n/tet.json
new file mode 100644 (file)
index 0000000..0cc9b82
--- /dev/null
@@ -0,0 +1,12 @@
+{
+       "@metadata": {
+               "authors": [
+                       "MF-Warburg"
+               ]
+       },
+       "vector-action-protect": "Proteje",
+       "vector-view-create": "Kria",
+       "vector-view-edit": "Edita",
+       "vector-view-history": "Haree istória",
+       "vector-view-view": "Lee"
+}
diff --git a/skins/Vector/i18n/tg-cyrl.json b/skins/Vector/i18n/tg-cyrl.json
new file mode 100644 (file)
index 0000000..ede0347
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Ibrahim"
+               ]
+       },
+       "vector-action-addsection": "Иловаи унвон",
+       "vector-action-delete": "Ҳазф",
+       "vector-action-move": "Кӯчонидан",
+       "vector-action-protect": "Муҳофизат",
+       "vector-action-undelete": "Эҳё",
+       "vector-action-unprotect": "Тағйири муҳофизат",
+       "vector-view-create": "Эҷод",
+       "vector-view-edit": "Вироиш",
+       "vector-view-history": "Намоиши таърих",
+       "vector-view-view": "Хондан",
+       "vector-view-viewsource": "Намоиши манбаъ"
+}
diff --git a/skins/Vector/i18n/tg-latn.json b/skins/Vector/i18n/tg-latn.json
new file mode 100644 (file)
index 0000000..1ecb038
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Liangent"
+               ]
+       },
+       "vector-action-addsection": "Ilovai unvon",
+       "vector-action-delete": "Hazf",
+       "vector-action-move": "Kūconidan",
+       "vector-action-protect": "Muhofizat",
+       "vector-action-undelete": "Ehjo",
+       "vector-action-unprotect": "Ba dar ovardan az muhofizat",
+       "vector-view-create": "Eçod",
+       "vector-view-edit": "Viroiş",
+       "vector-view-history": "Namoişi ta'rix",
+       "vector-view-view": "Xondan",
+       "vector-view-viewsource": "Namoişi manba'"
+}
diff --git a/skins/Vector/i18n/th.json b/skins/Vector/i18n/th.json
new file mode 100644 (file)
index 0000000..ae4b838
--- /dev/null
@@ -0,0 +1,24 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Horus",
+                       "Octahedron80",
+                       "Woraponboonkerd"
+               ]
+       },
+       "skinname-vector": "เวกเตอร์",
+       "vector.css": "/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ใช้ที่ใช้สกินเวกเตอร์ */",
+       "vector.js": "/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ที่ใช้สกินเวกเตอร์ */",
+       "vector-action-addsection": "เพิ่มหัวข้อ",
+       "vector-action-delete": "ลบ",
+       "vector-action-move": "เปลี่ยนชื่อ",
+       "vector-action-protect": "ล็อก",
+       "vector-action-undelete": "กู้คืน",
+       "vector-action-unprotect": "เปลี่ยนการล็อก",
+       "vector-view-create": "สร้าง",
+       "vector-view-edit": "แก้ไข",
+       "vector-view-history": "ดูประวัติ",
+       "vector-view-view": "อ่าน",
+       "vector-view-viewsource": "ดูโค้ด",
+       "vector-more-actions": "เพิ่มเติม"
+}
diff --git a/skins/Vector/i18n/tk.json b/skins/Vector/i18n/tk.json
new file mode 100644 (file)
index 0000000..f11da23
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Hanberke"
+               ]
+       },
+       "vector-action-addsection": "Tema goş",
+       "vector-action-delete": "Öçür",
+       "vector-action-move": "Adyny üýtget",
+       "vector-action-protect": "Goraga al",
+       "vector-action-undelete": "Öçürmäni yzyna al",
+       "vector-action-unprotect": "Goragy üýtget",
+       "vector-view-create": "Döret",
+       "vector-view-edit": "Üýtget",
+       "vector-view-history": "Taryhy gör",
+       "vector-view-view": "Oka",
+       "vector-view-viewsource": "Çeşmäni gör"
+}
diff --git a/skins/Vector/i18n/tl.json b/skins/Vector/i18n/tl.json
new file mode 100644 (file)
index 0000000..2a0495d
--- /dev/null
@@ -0,0 +1,22 @@
+{
+       "@metadata": {
+               "authors": [
+                       "AnakngAraw",
+                       "Sky Harbor"
+               ]
+       },
+       "skinname-vector": "Vector",
+       "vector.css": "/* Ang inilagay na CSS dito ay makakaapekto sa mga tagagamit ng pabalat na Vector */",
+       "vector.js": "/* Ang anumang JavaScript dito ay ikakarga para sa mga tagagamit na gumagamit ng pabalat na Vector */",
+       "vector-action-addsection": "Magdagdag ng paksa",
+       "vector-action-delete": "Burahin",
+       "vector-action-move": "Ilipat",
+       "vector-action-protect": "Ipagsanggalang",
+       "vector-action-undelete": "Alisin ang pagbubura",
+       "vector-action-unprotect": "Baguhin ang pagsasanggalang",
+       "vector-view-create": "Likhain",
+       "vector-view-edit": "Baguhin",
+       "vector-view-history": "Tingnan ang kasaysayan",
+       "vector-view-view": "Basahin",
+       "vector-view-viewsource": "Tingnan ang pinagmulan"
+}
diff --git a/skins/Vector/i18n/tly.json b/skins/Vector/i18n/tly.json
new file mode 100644 (file)
index 0000000..a809d5e
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Гусейн"
+               ]
+       },
+       "vector-action-addsection": "Мывзу зијод кардеј",
+       "vector-action-delete": "Рәдд кардеј",
+       "vector-action-move": "Номи дәгиш кардеј",
+       "vector-action-protect": "Мыдофијә кардеј",
+       "vector-action-undelete": "Бәрпо кардеј",
+       "vector-action-unprotect": "Мыдофијә дәгиш кардеј",
+       "vector-view-create": "Офәјеј",
+       "vector-view-edit": "Сәрост кардеј",
+       "vector-view-history": "Тарых",
+       "vector-view-view": "Һандемон",
+       "vector-view-viewsource": "Дијә кардеј"
+}
diff --git a/skins/Vector/i18n/tpi.json b/skins/Vector/i18n/tpi.json
new file mode 100644 (file)
index 0000000..182aa9a
--- /dev/null
@@ -0,0 +1,16 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Iketsi",
+                       "Wantok"
+               ]
+       },
+       "vector-action-delete": "Rausim",
+       "vector-action-move": "Surikim",
+       "vector-action-protect": "Tambuim",
+       "vector-view-create": "Kirapim",
+       "vector-view-edit": "Senisim",
+       "vector-view-history": "Ol senis",
+       "vector-view-view": "Rit",
+       "vector-view-viewsource": "Lukim as tok"
+}
diff --git a/skins/Vector/i18n/tr.json b/skins/Vector/i18n/tr.json
new file mode 100644 (file)
index 0000000..da041a9
--- /dev/null
@@ -0,0 +1,23 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Arystanbek",
+                       "Emperyan",
+                       "Joseph",
+                       "Stultiwikia",
+                       "Vito Genovese"
+               ]
+       },
+       "vector-action-addsection": "Konu ekle",
+       "vector-action-delete": "Sil",
+       "vector-action-move": "Taşı",
+       "vector-action-protect": "Koru",
+       "vector-action-undelete": "Silinmeyi geri al",
+       "vector-action-unprotect": "Korumayı değiştir",
+       "vector-view-create": "Oluştur",
+       "vector-view-edit": "Düzenle",
+       "vector-view-history": "Geçmişi gör",
+       "vector-view-view": "Oku",
+       "vector-view-viewsource": "Kaynağı gör",
+       "vector-more-actions": "Diğer"
+}
diff --git a/skins/Vector/i18n/tru.json b/skins/Vector/i18n/tru.json
new file mode 100644 (file)
index 0000000..1949f25
--- /dev/null
@@ -0,0 +1,16 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Ariyo"
+               ]
+       },
+       "vector-action-addsection": "Maḥat Fusoqo ḥaṭo",
+       "vector-action-delete": "Slag",
+       "vector-action-move": "Mtaxar",
+       "vector-action-protect": "Mastar",
+       "vector-view-create": "Xlaq",
+       "vector-view-edit": "Mşaḥlaf",
+       "vector-view-history": "Maktabzabno",
+       "vector-view-view": "Qray",
+       "vector-view-viewsource": "Maḥway li aMabu³e."
+}
diff --git a/skins/Vector/i18n/ts.json b/skins/Vector/i18n/ts.json
new file mode 100644 (file)
index 0000000..c00b029
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Thuvack"
+               ]
+       },
+       "vector-action-addsection": "Veka nholoko ya mhaka",
+       "vector-action-delete": "Sula",
+       "vector-action-move": "Yi sa kunwana",
+       "vector-action-protect": "Sirhelela",
+       "vector-action-undelete": "Cinca kusula",
+       "vector-action-unprotect": "Cinca kusirhelela",
+       "vector-view-create": "Tumbuluxa",
+       "vector-view-edit": "Lulamisa",
+       "vector-view-history": "Languta matimu",
+       "vector-view-view": "Hlaya",
+       "vector-view-viewsource": "Languta xihlovo"
+}
diff --git a/skins/Vector/i18n/tt-cyrl.json b/skins/Vector/i18n/tt-cyrl.json
new file mode 100644 (file)
index 0000000..606fbe3
--- /dev/null
@@ -0,0 +1,22 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Don Alessandro",
+                       "Rinatus",
+                       "Ильнар",
+                       "Рашат Якупов"
+               ]
+       },
+       "skinname-vector": "Сызымлы",
+       "vector-action-addsection": "Яңа тема өстәү",
+       "vector-action-delete": "Бетерү",
+       "vector-action-move": "Күчерү",
+       "vector-action-protect": "Яклау",
+       "vector-action-undelete": "Кайтару",
+       "vector-action-unprotect": "Яклауны үзгәртү",
+       "vector-view-create": "Төзү",
+       "vector-view-edit": "Үзгәртү",
+       "vector-view-history": "Тарихын карау",
+       "vector-view-view": "Уку",
+       "vector-view-viewsource": "Чыганагын карау"
+}
diff --git a/skins/Vector/i18n/tt-latn.json b/skins/Vector/i18n/tt-latn.json
new file mode 100644 (file)
index 0000000..140768b
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Don Alessandro"
+               ]
+       },
+       "skinname-vector": "Sızımlı",
+       "vector-action-addsection": "Yaña tema östäw",
+       "vector-action-delete": "Beterü",
+       "vector-action-move": "Küçerü",
+       "vector-action-protect": "Yaqlaw",
+       "vector-action-undelete": "Qaytaru",
+       "vector-action-unprotect": "Yaqlawnı beterü",
+       "vector-view-create": "Tözü",
+       "vector-view-edit": "Üzgärtü",
+       "vector-view-history": "Tarixın qaraw",
+       "vector-view-view": "Uqu",
+       "vector-view-viewsource": "Çığanağın qaraw"
+}
diff --git a/skins/Vector/i18n/tyv.json b/skins/Vector/i18n/tyv.json
new file mode 100644 (file)
index 0000000..fbfb8e9
--- /dev/null
@@ -0,0 +1,20 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Agilight",
+                       "Sborsody"
+               ]
+       },
+       "skinname-vector": "Вектор",
+       "vector-action-addsection": "Кол сөстү немелээри",
+       "vector-action-delete": "Ырадыры",
+       "vector-action-move": "Шимчээри",
+       "vector-action-protect": "Камгалаары",
+       "vector-action-undelete": "Эгидер",
+       "vector-action-unprotect": "Камгалалды өскертири",
+       "vector-view-create": "Чаяары",
+       "vector-view-edit": "Эдер",
+       "vector-view-history": "Төөгүнү көөрү",
+       "vector-view-view": "Номчуур",
+       "vector-view-viewsource": "Дөзү бижиин көөрү"
+}
diff --git a/skins/Vector/i18n/tzm.json b/skins/Vector/i18n/tzm.json
new file mode 100644 (file)
index 0000000..ed7ef13
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Moha",
+                       "Tifinaghes"
+               ]
+       },
+       "skinname-vector": "Vector",
+       "vector-action-addsection": "ⵔⵏⵓ ⴰⵙⵏⵜⵍ",
+       "vector-action-delete": "ⵓⴽⵓⵙ",
+       "vector-action-move": "ⵙⵎⵓⵜⵜⵉ",
+       "vector-action-undelete": "ⵙⵙⵓⵖⴰⵍ ⵓⴽⵓⵙ",
+       "vector-action-unprotect": "ⴱⴷⴷⴻⵍ ⵜⴰⵙⵜⴰⵏⵜ",
+       "vector-view-create": "ⴰⵔⴰ",
+       "vector-view-edit": "ⴱⴷⴷⴻⵍ",
+       "vector-view-history": "ⵥⵕ ⴰⵎⵣⵔⵓⵢ",
+       "vector-view-view": "ⵖⵔ",
+       "vector-view-viewsource": "ⵥⵕ ⴰⵖⴱⴰⵍⵓ"
+}
diff --git a/skins/Vector/i18n/udm.json b/skins/Vector/i18n/udm.json
new file mode 100644 (file)
index 0000000..a126329
--- /dev/null
@@ -0,0 +1,16 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Andrewboltachev"
+               ]
+       },
+       "vector-action-addsection": "Выль темаез ватсано",
+       "vector-action-delete": "Быдтоно",
+       "vector-action-move": "Мукет интые выжтыны",
+       "vector-action-protect": "Утьыны",
+       "vector-view-create": "Кылдытоно",
+       "vector-view-edit": "Тупатоно",
+       "vector-view-history": "История",
+       "vector-view-view": "Лыдӟоно",
+       "vector-view-viewsource": "Кодзэ учкыны"
+}
diff --git a/skins/Vector/i18n/ug-arab.json b/skins/Vector/i18n/ug-arab.json
new file mode 100644 (file)
index 0000000..00bf7df
--- /dev/null
@@ -0,0 +1,23 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Arlin",
+                       "Sahran",
+                       "Tel'et"
+               ]
+       },
+       "skinname-vector": "Vector",
+       "vector.css": "/* CSS placed here will affect users of the Vector skin */",
+       "vector.js": "/* Any JavaScript here will be loaded for users using the Vector skin */",
+       "vector-action-addsection": "يېڭى تېما قوش",
+       "vector-action-delete": "ئۆچۈر",
+       "vector-action-move": "يۆتكە",
+       "vector-action-protect": "قوغدا",
+       "vector-action-undelete": "ئەسلىگە قايتۇر",
+       "vector-action-unprotect": "قوغداش ئۆزگەرت",
+       "vector-view-create": "قۇر",
+       "vector-view-edit": "تەھرىر",
+       "vector-view-history": "تارىخ كۆرسەت",
+       "vector-view-view": "ئوقۇ",
+       "vector-view-viewsource": "مەنبەنى كۆرسەت"
+}
diff --git a/skins/Vector/i18n/uk.json b/skins/Vector/i18n/uk.json
new file mode 100644 (file)
index 0000000..2bf1407
--- /dev/null
@@ -0,0 +1,31 @@
+{
+       "@metadata": {
+               "authors": [
+                       "AS",
+                       "Ahonc",
+                       "Base",
+                       "Calak",
+                       "Dim Grits",
+                       "NickK",
+                       "Prima klasy4na",
+                       "Тест",
+                       "Ата"
+               ]
+       },
+       "skinname-vector": "Векторне",
+       "vector-skin-desc": "Сучасна версія MonoBook зі свіжим виглядом і багатьма зручними покращеннями",
+       "vector.css": "/* Розміщений тут CSS-код буде використаний в темі оформлення Векторне */",
+       "vector.js": "/* Розміщений тут код JavaScript буде завантажений для всіх користувачів, що використовують векторну тему оформлення */",
+       "vector-action-addsection": "Додати тему",
+       "vector-action-delete": "Вилучити",
+       "vector-action-move": "Перейменувати",
+       "vector-action-protect": "Захистити",
+       "vector-action-undelete": "Відновити",
+       "vector-action-unprotect": "Зміна захисту",
+       "vector-view-create": "Створити",
+       "vector-view-edit": "Редагувати",
+       "vector-view-history": "Переглянути історію",
+       "vector-view-view": "Читати",
+       "vector-view-viewsource": "Переглянути код",
+       "vector-more-actions": "Більше"
+}
diff --git a/skins/Vector/i18n/ur.json b/skins/Vector/i18n/ur.json
new file mode 100644 (file)
index 0000000..595477e
--- /dev/null
@@ -0,0 +1,23 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Calak",
+                       "Istabani",
+                       "Noor2020",
+                       "Tahir mq",
+                       "محبوب عالم"
+               ]
+       },
+       "vector-action-addsection": "نیا موضوع",
+       "vector-action-delete": "حذف کرو",
+       "vector-action-move": "منتقل کرو",
+       "vector-action-protect": "محفوظ کرو",
+       "vector-action-undelete": "بحال",
+       "vector-action-unprotect": "تحفظ میں تبدیلی",
+       "vector-view-create": "تخلیق",
+       "vector-view-edit": "ترمیم",
+       "vector-view-history": "تاریخ",
+       "vector-view-view": "مطالعہ",
+       "vector-view-viewsource": "مسودہ",
+       "vector-more-actions": "زیادہ"
+}
diff --git a/skins/Vector/i18n/uz.json b/skins/Vector/i18n/uz.json
new file mode 100644 (file)
index 0000000..ee75d39
--- /dev/null
@@ -0,0 +1,24 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Abdulla",
+                       "Arystanbek",
+                       "Casual",
+                       "CoderSI",
+                       "Sociologist"
+               ]
+       },
+       "skinname-vector": "Vektor",
+       "vector-action-addsection": "Mavzu qoʻshish",
+       "vector-action-delete": "O‘chirish",
+       "vector-action-move": "Ko‘chirish",
+       "vector-action-protect": "Himoyalash",
+       "vector-action-undelete": "Tiklash",
+       "vector-action-unprotect": "Himoyalashni oʻzgartirish",
+       "vector-view-create": "Yaratish",
+       "vector-view-edit": "Tahrirlash",
+       "vector-view-history": "Tarix",
+       "vector-view-view": "Mutolaa",
+       "vector-view-viewsource": "Manbasini koʻrish",
+       "vector-more-actions": "Yana"
+}
diff --git a/skins/Vector/i18n/vec.json b/skins/Vector/i18n/vec.json
new file mode 100644 (file)
index 0000000..9622828
--- /dev/null
@@ -0,0 +1,22 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Alunardon90",
+                       "Candalua",
+                       "Frigotoni",
+                       "GatoSelvadego",
+                       "Vajotwo"
+               ]
+       },
+       "vector-action-addsection": "Zonta discusion",
+       "vector-action-delete": "Scanseła",
+       "vector-action-move": "Sposta",
+       "vector-action-protect": "Protezi",
+       "vector-action-undelete": "Recupera",
+       "vector-action-unprotect": "Canbia ła protesion",
+       "vector-view-create": "Crea",
+       "vector-view-edit": "Canbia",
+       "vector-view-history": "Varda ła storia",
+       "vector-view-view": "Lezi",
+       "vector-view-viewsource": "Varda el testo"
+}
diff --git a/skins/Vector/i18n/vep.json b/skins/Vector/i18n/vep.json
new file mode 100644 (file)
index 0000000..00f876c
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Игорь Бродский"
+               ]
+       },
+       "vector-action-addsection": "Ližada tem",
+       "vector-action-delete": "Čuta poiš",
+       "vector-action-move": "Udesnimitada",
+       "vector-action-protect": "Kaita",
+       "vector-action-undelete": "Pördutada",
+       "vector-action-unprotect": "Toižetada kaičend",
+       "vector-view-create": "Säta",
+       "vector-view-edit": "Redaktiruida",
+       "vector-view-history": "Kacta istorii",
+       "vector-view-view": "Lugeda",
+       "vector-view-viewsource": "Kacta purtkehe"
+}
diff --git a/skins/Vector/i18n/vi.json b/skins/Vector/i18n/vi.json
new file mode 100644 (file)
index 0000000..a59d9b4
--- /dev/null
@@ -0,0 +1,25 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Minh Nguyen",
+                       "Vinhtantran",
+                       "Withoutaname"
+               ]
+       },
+       "skinname-vector": "Vectơ",
+       "vector-skin-desc": "Giao diện làm lại từ MonoBook có màu tươi và khả dụng hơn",
+       "vector.css": "/* Mã CSS đặt ở đây sẽ ảnh hưởng đến thành viên sử dụng giao diện Vectơ */",
+       "vector.js": "/* Mã JavaScript tại đây sẽ được tải khi người dùng sử dụng giao diện Vectơ */",
+       "vector-action-addsection": "Thêm chủ đề",
+       "vector-action-delete": "Xóa",
+       "vector-action-move": "Di chuyển",
+       "vector-action-protect": "Khóa",
+       "vector-action-undelete": "Phục hồi",
+       "vector-action-unprotect": "Đổi mức khóa",
+       "vector-view-create": "Tạo",
+       "vector-view-edit": "Sửa đổi",
+       "vector-view-history": "Xem lịch sử",
+       "vector-view-view": "Đọc",
+       "vector-view-viewsource": "Xem mã nguồn",
+       "vector-more-actions": "Khác"
+}
diff --git a/skins/Vector/i18n/vls.json b/skins/Vector/i18n/vls.json
new file mode 100644 (file)
index 0000000..c2b841c
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "@metadata": {
+               "authors": [
+                       "DasRakel"
+               ]
+       },
+       "vector-action-delete": "Wegdoen",
+       "vector-action-move": "Ernoemn",
+       "vector-view-create": "Anmoakn",
+       "vector-view-edit": "Bewerkn",
+       "vector-view-history": "Geschiedenisse bekykn",
+       "vector-view-view": "Leezn",
+       "vector-view-viewsource": "Brontekst bekykn"
+}
diff --git a/skins/Vector/i18n/vmf.json b/skins/Vector/i18n/vmf.json
new file mode 100644 (file)
index 0000000..439e93a
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Silvicola"
+               ]
+       },
+       "vector.css": "/* CSS hiir beâjflusd nôr dii Vector-schelfn. Wen'd ale uf ôômôôl beâjflusn wilsch, muâsch an MediaWiki:Common.css was ändârn. */",
+       "vector-action-addsection": "Ân najn abschnid ôôfangn",
+       "vector-action-delete": "Leschn",
+       "vector-action-move": "Umdaafn",
+       "vector-action-protect": "Schidsn",
+       "vector-action-undelete": "Leschn riggängich machn",
+       "vector-action-unprotect": "Schuds ufgeebn",
+       "vector-view-create": "Ôôleechn",
+       "vector-view-edit": "Bearbajdn",
+       "vector-view-history": "Wärsjoonsfolche",
+       "vector-view-view": "Leesn",
+       "vector-view-viewsource": "Gwäl-dhägsd ôôgugn"
+}
diff --git a/skins/Vector/i18n/vo.json b/skins/Vector/i18n/vo.json
new file mode 100644 (file)
index 0000000..1bd3042
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Malafaya"
+               ]
+       },
+       "vector-action-addsection": "Lüükön yegädi",
+       "vector-action-delete": "Moükön",
+       "vector-action-move": "Topätükön",
+       "vector-action-protect": "Jelön",
+       "vector-action-undelete": "Sämoükön",
+       "vector-action-unprotect": "Votükön jeli",
+       "vector-view-create": "Jafön",
+       "vector-view-edit": "Redakön",
+       "vector-view-history": "Logön jenotemi",
+       "vector-view-view": "Reidön",
+       "vector-view-viewsource": "Logön fonäti"
+}
diff --git a/skins/Vector/i18n/vot.json b/skins/Vector/i18n/vot.json
new file mode 100644 (file)
index 0000000..7bdc92d
--- /dev/null
@@ -0,0 +1,16 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Paivud"
+               ]
+       },
+       "vector-action-addsection": "Vassõn teema",
+       "vector-action-delete": "Pühi",
+       "vector-action-move": "Liikut",
+       "vector-action-protect": "Varjaa",
+       "vector-view-create": "Loo cülci",
+       "vector-view-edit": "Muuttaa",
+       "vector-view-history": "Istori",
+       "vector-view-view": "Lukõa",
+       "vector-view-viewsource": "Lähtekoodi"
+}
diff --git a/skins/Vector/i18n/vro.json b/skins/Vector/i18n/vro.json
new file mode 100644 (file)
index 0000000..a6c3c06
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Võrok"
+               ]
+       },
+       "vector-action-addsection": "Vahtsõ teema ülespandminõ",
+       "vector-action-delete": "Kistudaq ärq",
+       "vector-action-move": "Nõstaq ümbre",
+       "vector-action-protect": "Kaidsaq",
+       "vector-action-undelete": "Tiiq tagasi",
+       "vector-action-unprotect": "Muudaq kaidsõt",
+       "vector-view-create": "Luuq",
+       "vector-view-edit": "Toimõndaq",
+       "vector-view-history": "Näütäq aoluku",
+       "vector-view-view": "Loeq",
+       "vector-view-viewsource": "Kaeq lätteteksti"
+}
diff --git a/skins/Vector/i18n/wa.json b/skins/Vector/i18n/wa.json
new file mode 100644 (file)
index 0000000..0401884
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Srtxg"
+               ]
+       },
+       "vector-action-addsection": "Radjouter on sudjet",
+       "vector-action-delete": "Disfacer",
+       "vector-action-move": "Displaecî",
+       "vector-action-protect": "Protedjî",
+       "vector-action-undelete": "Rapexhî",
+       "vector-action-unprotect": "Candjî l' protedjaedje",
+       "vector-view-create": "Ahiver",
+       "vector-view-edit": "Candjî",
+       "vector-view-history": "Vey l' istwere",
+       "vector-view-view": "Lére",
+       "vector-view-viewsource": "Vey côde sourdant"
+}
diff --git a/skins/Vector/i18n/war.json b/skins/Vector/i18n/war.json
new file mode 100644 (file)
index 0000000..8b2f958
--- /dev/null
@@ -0,0 +1,20 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Harvzsf",
+                       "JinJian"
+               ]
+       },
+       "vector-action-addsection": "Igdugang hin himangrawon",
+       "vector-action-delete": "Para-a",
+       "vector-action-move": "Balhina",
+       "vector-action-protect": "Panalipda",
+       "vector-action-undelete": "Igbalik an ginpara",
+       "vector-action-unprotect": "Liwani an panalipod",
+       "vector-view-create": "Himo-a",
+       "vector-view-edit": "Igliwat",
+       "vector-view-history": "Kitaa an kaagi",
+       "vector-view-view": "Basaha",
+       "vector-view-viewsource": "Kitaa an ginkuhaan",
+       "vector-more-actions": "Damo pa"
+}
diff --git a/skins/Vector/i18n/wo.json b/skins/Vector/i18n/wo.json
new file mode 100644 (file)
index 0000000..5d248d1
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Ibou"
+               ]
+       },
+       "vector-action-addsection": "Yokkuw tëriit",
+       "vector-action-delete": "Far",
+       "vector-action-move": "Tuddewaat",
+       "vector-action-protect": "Aar",
+       "vector-action-undelete": "Delloowaat",
+       "vector-action-unprotect": "Aaradi",
+       "vector-view-create": "Sos",
+       "vector-view-edit": "Soppi",
+       "vector-view-history": "Wone jaar-jaaram",
+       "vector-view-view": "Jàng",
+       "vector-view-viewsource": "Wone gongikuwaayam"
+}
diff --git a/skins/Vector/i18n/wuu.json b/skins/Vector/i18n/wuu.json
new file mode 100644 (file)
index 0000000..dade0ff
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Benojan"
+               ]
+       },
+       "vector-action-addsection": "加話題",
+       "vector-action-delete": "刪",
+       "vector-action-move": "移",
+       "vector-action-protect": "保",
+       "vector-action-undelete": "弗刪",
+       "vector-action-unprotect": "换保护状态",
+       "vector-view-create": "建",
+       "vector-view-edit": "编",
+       "vector-view-history": "望页史",
+       "vector-view-view": "读",
+       "vector-view-viewsource": "望源码"
+}
diff --git a/skins/Vector/i18n/xal.json b/skins/Vector/i18n/xal.json
new file mode 100644 (file)
index 0000000..b57aad7
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Huuchin"
+               ]
+       },
+       "vector-action-addsection": "Төриг немх",
+       "vector-action-delete": "Һарһх",
+       "vector-action-move": "Көндәх",
+       "vector-action-protect": "Харсх",
+       "vector-action-undelete": "Һарһх биш",
+       "vector-action-unprotect": "Харсх биш",
+       "vector-view-create": "Бүтәх",
+       "vector-view-edit": "Чиклх",
+       "vector-view-history": "Тууҗин хәләвр",
+       "vector-view-view": "Умшлһн",
+       "vector-view-viewsource": "Темдгллһнә хәләвр"
+}
diff --git a/skins/Vector/i18n/xh.json b/skins/Vector/i18n/xh.json
new file mode 100644 (file)
index 0000000..8cea054
--- /dev/null
@@ -0,0 +1,3 @@
+{
+       "vector-view-edit": "Tshintsha"
+}
diff --git a/skins/Vector/i18n/xmf.json b/skins/Vector/i18n/xmf.json
new file mode 100644 (file)
index 0000000..47cee05
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Kilavagora",
+                       "Lika2672",
+                       "Machirkholi"
+               ]
+       },
+       "vector-action-addsection": "თემაშ მიშაძინა",
+       "vector-action-delete": "ლასუა",
+       "vector-action-move": "გინოღალა",
+       "vector-action-protect": "თხილუა",
+       "vector-view-create": "დორსხუაფა",
+       "vector-view-edit": "რედაქტირაფა",
+       "vector-view-history": "ისტორიაშ ძირაფა",
+       "vector-view-view": "კითხირი",
+       "vector-view-viewsource": "ქიძირე წყუ"
+}
diff --git a/skins/Vector/i18n/yi.json b/skins/Vector/i18n/yi.json
new file mode 100644 (file)
index 0000000..16907ad
--- /dev/null
@@ -0,0 +1,23 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Joystick",
+                       "פוילישער"
+               ]
+       },
+       "skinname-vector": "וועקטאר",
+       "vector-skin-desc": "מאדערנע ווערסיע פון מאנאבוק מיט פרישן אויסזען און א סך באניצער־פריינדלעכקייט פארבעסערונגען",
+       "vector.css": "/* CSS געשטעלט דא ווירקט נאר אויפן וועקטאר סקין */",
+       "vector-action-addsection": "צושטעלן טעמע",
+       "vector-action-delete": "אויסמעקן",
+       "vector-action-move": "באַוועגן",
+       "vector-action-protect": "שיצן",
+       "vector-action-undelete": "מבטל זיין אויסמעקן",
+       "vector-action-unprotect": "ענדערונג באַשיצונג",
+       "vector-view-create": "שאַפֿן",
+       "vector-view-edit": "רעדאַקטירן",
+       "vector-view-history": "ווײַזן היסטאָריע",
+       "vector-view-view": "לייענען",
+       "vector-view-viewsource": "ווײַזן מקור",
+       "vector-more-actions": "נאך"
+}
diff --git a/skins/Vector/i18n/yo.json b/skins/Vector/i18n/yo.json
new file mode 100644 (file)
index 0000000..e26e68b
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Demmy"
+               ]
+       },
+       "vector-action-addsection": "Àfikún orí-ọ̀rọ̀",
+       "vector-action-delete": "Ìparẹ́",
+       "vector-action-move": "Ìyípòdà",
+       "vector-action-protect": "Àbò",
+       "vector-action-undelete": "Ìmúkúrò ìparẹ́",
+       "vector-action-unprotect": "Ìyípadà àbò",
+       "vector-view-create": "Ṣ'èdá",
+       "vector-view-edit": "Àtúnṣe",
+       "vector-view-history": "Wo ìtàn",
+       "vector-view-view": "Àwòkà",
+       "vector-view-viewsource": "Wo àmìọ̀rọ̀"
+}
diff --git a/skins/Vector/i18n/yue.json b/skins/Vector/i18n/yue.json
new file mode 100644 (file)
index 0000000..3aa2309
--- /dev/null
@@ -0,0 +1,23 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Ktchankt",
+                       "Waihorace"
+               ]
+       },
+       "skinname-vector": "Vector",
+       "vector.css": "/* 響呢度放 CSS 碼去改用戶用嘅域達畫面 */",
+       "vector.js": "/* 響每一次個頁面載入時,用域達畫面嘅用戶都會載入呢度任何嘅JavaScript */",
+       "vector-action-addsection": "加主題",
+       "vector-action-delete": "剷走",
+       "vector-action-move": "搬",
+       "vector-action-protect": "保護",
+       "vector-action-undelete": "取消剷走",
+       "vector-action-unprotect": "改保護",
+       "vector-view-create": "開",
+       "vector-view-edit": "改",
+       "vector-view-history": "睇吓歷史",
+       "vector-view-view": "閱",
+       "vector-view-viewsource": "睇吓原始碼",
+       "vector-more-actions": "更多"
+}
diff --git a/skins/Vector/i18n/za.json b/skins/Vector/i18n/za.json
new file mode 100644 (file)
index 0000000..72bd20d
--- /dev/null
@@ -0,0 +1,13 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Biŋhai"
+               ]
+       },
+       "vector-action-delete": "Ca",
+       "vector-action-move": "Daen",
+       "vector-action-protect": "Bauj",
+       "vector-view-create": "Laeb",
+       "vector-view-edit": "gaij",
+       "vector-view-history": "Cazyawj lizsij"
+}
diff --git a/skins/Vector/i18n/zea.json b/skins/Vector/i18n/zea.json
new file mode 100644 (file)
index 0000000..d0f9aab
--- /dev/null
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Ooswesthoesbes"
+               ]
+       },
+       "vector-action-addsection": "Voeg kopje toe",
+       "vector-action-delete": "Wissen",
+       "vector-action-move": "Verschuuf",
+       "vector-action-protect": "Bescherm",
+       "vector-action-undelete": "Plaets truhhe",
+       "vector-action-unprotect": "Beveiligienge anpass'n",
+       "vector-view-create": "Anmaeken",
+       "vector-view-edit": "Bewerk",
+       "vector-view-history": "Geschiedenisse bekiek'n",
+       "vector-view-view": "Lezen",
+       "vector-view-viewsource": "Brontekst bekieken"
+}
diff --git a/skins/Vector/i18n/zh-hans.json b/skins/Vector/i18n/zh-hans.json
new file mode 100644 (file)
index 0000000..8e3536f
--- /dev/null
@@ -0,0 +1,26 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Hydra",
+                       "Liangent",
+                       "Liuxinyu970226",
+                       "Xiaomingyan",
+                       "Cwek"
+               ]
+       },
+       "vector-skin-desc": "提供清新的外观和许多可用性改进的现代版MonoBook",
+       "vector.css": "/* 放置于这里的CSS将影响使用Vector皮肤的用户 */",
+       "vector.js": "/* 这里的任何JavaScript将为使用Vector皮肤的用户加载 */",
+       "vector-action-addsection": "添加话题",
+       "vector-action-delete": "删除",
+       "vector-action-move": "移动",
+       "vector-action-protect": "保护",
+       "vector-action-undelete": "还原",
+       "vector-action-unprotect": "更改保护",
+       "vector-view-create": "创建",
+       "vector-view-edit": "编辑",
+       "vector-view-history": "查看历史",
+       "vector-view-view": "阅读",
+       "vector-view-viewsource": "查看源代码",
+       "vector-more-actions": "更多"
+}
diff --git a/skins/Vector/i18n/zh-hant.json b/skins/Vector/i18n/zh-hant.json
new file mode 100644 (file)
index 0000000..3e67c21
--- /dev/null
@@ -0,0 +1,24 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Cwlin0416",
+                       "Justincheng12345",
+                       "Liuxinyu970226",
+                       "Mark85296341"
+               ]
+       },
+       "vector.css": "/* 此 CSS 會影響使用 Vector 介面外觀的使用者 */",
+       "vector.js": "/* 此 JavaScript 會用於使用 Vector 介面外觀使用者 */",
+       "vector-action-addsection": "加入主題",
+       "vector-action-delete": "刪除",
+       "vector-action-move": "移動",
+       "vector-action-protect": "保護",
+       "vector-action-undelete": "取消刪除",
+       "vector-action-unprotect": "變更保護",
+       "vector-view-create": "建立",
+       "vector-view-edit": "編輯",
+       "vector-view-history": "檢視歷史",
+       "vector-view-view": "閱讀",
+       "vector-view-viewsource": "檢視原始碼",
+       "vector-more-actions": "更多"
+}
diff --git a/skins/common/images/icons/fileicon-xcf.png b/skins/common/images/icons/fileicon-xcf.png
new file mode 100644 (file)
index 0000000..1037b50
Binary files /dev/null and b/skins/common/images/icons/fileicon-xcf.png differ
diff --git a/tests/.gitignore b/tests/.gitignore
new file mode 100644 (file)
index 0000000..eb56bcc
--- /dev/null
@@ -0,0 +1,4 @@
+# Puppet-managed dependencies for browser tests
+.bundle
+.gem
+.ruby-version
diff --git a/tests/browser/Gemfile b/tests/browser/Gemfile
new file mode 100755 (executable)
index 0000000..3be33b7
--- /dev/null
@@ -0,0 +1,7 @@
+#ruby=ruby-2.1.2
+#ruby-gemset=core
+
+source "https://rubygems.org"
+
+gem "mediawiki_api"
+gem "mediawiki_selenium"
diff --git a/tests/browser/Gemfile.lock b/tests/browser/Gemfile.lock
new file mode 100644 (file)
index 0000000..92784bf
--- /dev/null
@@ -0,0 +1,79 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    builder (3.2.2)
+    childprocess (0.5.3)
+      ffi (~> 1.0, >= 1.0.11)
+    cucumber (1.3.15)
+      builder (>= 2.1.2)
+      diff-lcs (>= 1.1.3)
+      gherkin (~> 2.12)
+      multi_json (>= 1.7.5, < 2.0)
+      multi_test (>= 0.1.1)
+    data_magic (0.19)
+      faker (>= 1.1.2)
+      yml_reader (>= 0.3)
+    diff-lcs (1.2.5)
+    domain_name (0.5.19)
+      unf (>= 0.0.5, < 1.0.0)
+    faker (1.3.0)
+      i18n (~> 0.5)
+    faraday (0.9.0)
+      multipart-post (>= 1.2, < 3)
+    faraday-cookie_jar (0.0.6)
+      faraday (>= 0.7.4)
+      http-cookie (~> 1.0.0)
+    ffi (1.9.3)
+    gherkin (2.12.2)
+      multi_json (~> 1.3)
+    headless (1.0.2)
+    http-cookie (1.0.2)
+      domain_name (~> 0.5)
+    i18n (0.6.9)
+    json (1.8.1)
+    mediawiki_api (0.1.3)
+      faraday (~> 0.9, >= 0.9.0)
+      faraday-cookie_jar (~> 0.0, >= 0.0.6)
+    mediawiki_selenium (0.2.25)
+      cucumber (~> 1.3, >= 1.3.10)
+      headless (~> 1.0, >= 1.0.1)
+      json (~> 1.8, >= 1.8.1)
+      page-object (~> 1.0)
+      rest-client (~> 1.6, >= 1.6.7)
+      rspec-expectations (~> 2.14, >= 2.14.4)
+      syntax (~> 1.2, >= 1.2.0)
+    mime-types (2.3)
+    multi_json (1.10.1)
+    multi_test (0.1.1)
+    multipart-post (2.0.0)
+    page-object (1.0)
+      page_navigation (>= 0.9)
+      selenium-webdriver (>= 2.42.0)
+      watir-webdriver (>= 0.6.9)
+    page_navigation (0.9)
+      data_magic (>= 0.14)
+    rest-client (1.6.7)
+      mime-types (>= 1.16)
+    rspec-expectations (2.99.1)
+      diff-lcs (>= 1.1.3, < 2.0)
+    rubyzip (1.1.5)
+    selenium-webdriver (2.42.0)
+      childprocess (>= 0.5.0)
+      multi_json (~> 1.0)
+      rubyzip (~> 1.0)
+      websocket (~> 1.0.4)
+    syntax (1.2.0)
+    unf (0.1.4)
+      unf_ext
+    unf_ext (0.0.6)
+    watir-webdriver (0.6.10)
+      selenium-webdriver (>= 2.18.0)
+    websocket (1.0.7)
+    yml_reader (0.3)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  mediawiki_api
+  mediawiki_selenium
diff --git a/tests/browser/README.mediawiki b/tests/browser/README.mediawiki
new file mode 100644 (file)
index 0000000..8921fb6
--- /dev/null
@@ -0,0 +1,64 @@
+Purpose:
+
+The purpose of these tests is to validate that a newly installed (or updated, or hacked, or whatever) mediawiki instance presents to the user a set of expected features, regardless of what language the wiki is in, or where it is installed, or what extensions it might have.
+
+The tests are based on the basic definition of a wiki, a website where anyone
+
+* can read a page
+* can create a page
+* can edit a page
+* can link one page to another page
+
+Install:
+
+Ruby 1.9.3 or higher is required
+Firefox browser is required
+
+cd /tests/browser
+gem update --system
+gem install bundler
+bundle install
+
+Run the tests:
+
+Edit the environment_variables file with appropriate values for your wiki
+$source environment_variables (example shown in bash shell)
+
+bundle exec cucumber features/
+
+Note that the acceptance tests will create three pages in your wiki entitled "Editing Test Page", "Link Source Test Page", and "Link Target Test Page".  These pages may be deleted at any time.  If you wish to re-run the tests at any time, these test pages will be re-created or reset to their original contents at the time that the tests run.
+
+For more information about running Selenium tests please see
+https://github.com/wikimedia/mediawiki-selenium
+
+Details:
+
+create_account.feature
+* Checks three different ways to arrive on page allowing the user to create an account
+
+create_and_follow_wiki_link.feature:
+* uses the mediawiki API to create a link target page
+* uses the mediawiki API to create a link source page
+* navigates a browser to the link source page
+* clicks the link in that page to the link target page
+* validates that the browser has in fact followed the link to the target page correctly
+
+edit_page.feature:
+* uses the mediawiki API to create an editable page on the wiki
+* navigates a browser to the page
+* clicks the Edit button to invoke the basic editor
+* edits the page with a particular string containing a static part and also a quasi-unique random part
+* saves the edited page
+* checks that the saved page contains the particular string with which the page was edited
+
+main_page.feature:
+* navigates a browser to the default landing page of the wiki
+* checks for the View History link on the landing page
+* checks for the full set of of sidebar links that should exist on every mediawiki wiki
+
+view_history.feature
+* similar to edit_page.feature but checks for an older version of the edited page
+
+Notes:
+
+Tested on beta labs hewiki, dewiki, enwiki, and on a local installation of mediawiki
\ No newline at end of file
diff --git a/tests/browser/environment_variables b/tests/browser/environment_variables
new file mode 100644 (file)
index 0000000..25c4577
--- /dev/null
@@ -0,0 +1,5 @@
+export MEDIAWIKI_URL=http://localhost/wiki/
+export MEDIAWIKI_API_URL=http://localhost/w/api.php
+export MEDIAWIKI_USER=Selenium_user
+export MEDIAWIKI_PASSWORD=Selenium_password
+export BROWSER=firefox
diff --git a/tests/browser/features/create_account.feature b/tests/browser/features/create_account.feature
new file mode 100644 (file)
index 0000000..d6745ad
--- /dev/null
@@ -0,0 +1,12 @@
+@chrome @clean @en.wikipedia.beta.wmflabs.org @firefox @phantomjs @test2.wikipedia.org
+Feature: Create account
+
+  Scenario Outline: Go to Create account page
+    Given I go to Create account page at <path>
+    Then form has Create account button
+
+  Examples:
+    | path                          |
+    | Special:CreateAccount         |
+    | Special:UserLogin/signup      |
+    | Special:UserLogin?type=signup |
diff --git a/tests/browser/features/create_and_follow_wiki_link.feature b/tests/browser/features/create_and_follow_wiki_link.feature
new file mode 100644 (file)
index 0000000..29dd1c1
--- /dev/null
@@ -0,0 +1,9 @@
+@chrome @clean @en.wikipedia.beta.wmflabs.org @firefox @login @phantomjs @test2.wikipedia.org
+Feature: Create Page With Wiki Link
+
+  Scenario: Create Page With Wiki Link
+    Given I create page "Link Target Test Page" with content "Link Target Test Page"
+      And I go to the "Link Source Test Page" page with content "This is a [[Link Target Test Page|link to the test target page]] right here."
+    When I click the Link Target link
+    Then I should be on the Link Target Test Page
+      And the page content should contain "Link Target Test Page"
diff --git a/tests/browser/features/edit_page.feature b/tests/browser/features/edit_page.feature
new file mode 100644 (file)
index 0000000..c190a78
--- /dev/null
@@ -0,0 +1,11 @@
+@chrome @clean @en.wikipedia.beta.wmflabs.org @firefox @login @phantomjs @test2.wikipedia.org
+Feature: Edit Page
+
+  Scenario: Create and edit page
+    Given I go to the "Editing Test Page" page with content "This is a page to test editing"
+    When I click Edit
+      And I edit the page with "Edited and a random string"
+      And I click Preview
+      And I click Show Changes
+      And I save the edit
+    Then the edited page content should contain "Edited and a random string"
diff --git a/tests/browser/features/file.feature b/tests/browser/features/file.feature
new file mode 100644 (file)
index 0000000..2d3b708
--- /dev/null
@@ -0,0 +1,23 @@
+#
+# This file is subject to the license terms in the LICENSE file found in the
+# qa-browsertests top-level directory and at
+# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/LICENSE. No part of
+# qa-browsertests, including this file, may be copied, modified, propagated, or
+# distributed except according to the terms contained in the LICENSE file.
+#
+# Copyright 2012-2014 by the Mediawiki developers. See the CREDITS file in the
+# qa-browsertests top-level directory and at
+# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/CREDITS
+#
+@chrome @en.wikipedia.beta.wmflabs.org @firefox @internet_explorer_6 @internet_explorer_7 @internet_explorer_8 @internet_explorer_9 @internet_explorer_10 @phantomjs @test2.wikipedia.org
+Feature: File
+
+ Scenario: Anonymous goes to file that does not exist
+   Given I am at file that does not exist
+   Then page should show that no such file exists
+
+ @login
+ Scenario: Logged-in user goes to file that does not exist
+   Given I am logged in
+     And I am at file that does not exist
+   Then page should show that no such file exists
\ No newline at end of file
diff --git a/tests/browser/features/login.feature b/tests/browser/features/login.feature
new file mode 100644 (file)
index 0000000..9ff2a2a
--- /dev/null
@@ -0,0 +1,42 @@
+#
+# This file is subject to the license terms in the LICENSE file found in the
+# qa-browsertests top-level directory and at
+# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/LICENSE. No part of
+# qa-browsertests, including this file, may be copied, modified, propagated, or
+# distributed except according to the terms contained in the LICENSE file.
+#
+# Copyright 2012-2014 by the Mediawiki developers. See the CREDITS file in the
+# qa-browsertests top-level directory and at
+# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/CREDITS
+#
+@chrome @en.wikipedia.beta.wmflabs.org @firefox @internet_explorer_6 @internet_explorer_7 @internet_explorer_8 @internet_explorer_9 @internet_explorer_10 @phantomjs @test2.wikipedia.org
+Feature: Log in
+
+  Background:
+    Given I am at Log in page
+
+  Scenario: Go to Log in page
+    Then Username element should be there
+      And Password element should be there
+      And Log in element should be there
+
+  Scenario: Log in without entering credentials
+    When I log in without entering credentials
+    Then error box should be visible
+
+  Scenario: Log in without entering password
+    When I log in without entering password
+    Then error box should be visible
+
+  Scenario: Log in with incorrect username
+    When I log in with incorrect username
+    Then error box should be visible
+
+  Scenario: Log in with incorrect password
+    When I log in with incorrect password
+    Then error box should be visible
+
+  @login
+  Scenario: Log in with valid credentials
+    When I am logged in
+    Then error box should not be visible
\ No newline at end of file
diff --git a/tests/browser/features/main_page_links.feature b/tests/browser/features/main_page_links.feature
new file mode 100644 (file)
index 0000000..561fe53
--- /dev/null
@@ -0,0 +1,19 @@
+@chrome @clean @en.wikipedia.beta.wmflabs.org @firefox @phantomjs @test2.wikipedia.org
+Feature: Main Page View History Links
+
+  Background:
+  Given I open the main wiki URL
+
+  Scenario: Main Page View History links exist
+    Then I should see a link for View History
+
+  Scenario: Main Page Sidebar Links
+    Then I should see a link for Recent changes
+      And I should see a link for Random page
+      And I should see a link for Help
+      And I should see a link for What links here
+      And I should see a link for Related changes
+      And I should see a link for Special pages
+      And I should see a link for Printable version
+      And I should see a link for Permanent link
+      And I should see a link for Page information
\ No newline at end of file
diff --git a/tests/browser/features/preferences.feature b/tests/browser/features/preferences.feature
new file mode 100644 (file)
index 0000000..1a958bb
--- /dev/null
@@ -0,0 +1,60 @@
+#
+# This file is subject to the license terms in the LICENSE file found in the
+# qa-browsertests top-level directory and at
+# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/LICENSE. No part of
+# qa-browsertests, including this file, may be copied, modified, propagated, or
+# distributed except according to the terms contained in the LICENSE file.
+#
+# Copyright 2012-2014 by the Mediawiki developers. See the CREDITS file in the
+# qa-browsertests top-level directory and at
+# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/CREDITS
+#
+@chrome @clean @en.wikipedia.beta.wmflabs.org @firefox @internet_explorer_6 @internet_explorer_7 @internet_explorer_8 @internet_explorer_9 @internet_explorer_10 @login @phantomjs @test2.wikipedia.org
+Feature: Preferences
+
+  Scenario: Preferences Appearance
+    Given I am logged in
+    When I navigate to Preferences
+      And I click Appearance
+    Then I can select skins
+      And I can select image size
+      And I can select thumbnail size
+      And I can select Threshold for stub link
+      And I can select underline preferences
+      And I have advanced options checkboxes
+      And I can click Save
+      And I can restore default settings
+      And I can select date format
+      And I can see time offset section
+      And I can see local time
+      And I can select my time zone
+
+
+  Scenario: Preferences Editing
+    Given I am logged in
+    When I navigate to Preferences
+      And I click Editing
+    Then I can select edit area font style
+      And I can select section editing via edit links
+      And I can select section editing by right clicking
+      And I can select section editing by double clicking
+      And I can select to prompt me when entering a blank edit summary
+      And I can select to warn me when I leave an edit page with unsaved changes
+      And I can select show edit toolbar
+      And I can select show preview on first edit
+      And I can select show preview before edit box
+      And I can select live preview
+
+
+  Scenario: Preferences User profile
+    Given I am logged in
+    When I navigate to Preferences
+      And I click User profile
+    Then I can see my Basic informations
+      And I can change my language
+      And I can change my gender
+      And I can see my signature
+      And I can change my signature
+      And I can see my email
+      And I can click Save
+      And I can restore default settings
diff --git a/tests/browser/features/step_definitions/create_account_steps.rb b/tests/browser/features/step_definitions/create_account_steps.rb
new file mode 100644 (file)
index 0000000..7fa2984
--- /dev/null
@@ -0,0 +1,18 @@
+#
+# This file is subject to the license terms in the LICENSE file found in the
+# qa-browsertests top-level directory and at
+# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/LICENSE. No part of
+# qa-browsertests, including this file, may be copied, modified, propagated, or
+# distributed except according to the terms contained in the LICENSE file.
+#
+# Copyright 2012-2014 by the Mediawiki developers. See the CREDITS file in the
+# qa-browsertests top-level directory and at
+# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/CREDITS
+#
+Given(/^I go to Create account page at (.+)$/) do |path|
+  visit(CreateAccountPage, :using_params => {:page_title => path})
+end
+
+Then(/^form has Create account button$/) do
+  on(CreateAccountPage).create_account_element.should exist
+end
diff --git a/tests/browser/features/step_definitions/create_and_follow_wiki_link_steps.rb b/tests/browser/features/step_definitions/create_and_follow_wiki_link_steps.rb
new file mode 100644 (file)
index 0000000..ba41f7f
--- /dev/null
@@ -0,0 +1,28 @@
+Given(/^I go to the "(.+)" page with content "(.+)"$/) do |page_title, page_content|
+  @wikitext = page_content
+  on(APIPage).create page_title, page_content
+  step "I am on the #{page_title} page"
+end
+
+Given(/^I am on the (.+) page$/) do |article|
+  article = article.gsub(/ /, '_')
+  visit(ZtargetPage, :using_params => {:article_name => article})
+end
+
+Given(/^I create page "(.*?)" with content "(.*?)"$/) do |page_title, page_content|
+  on(APIPage).create page_title, page_content
+end
+
+
+When(/^I click the Link Target link$/) do
+  on(ZtargetPage).link_target_page_link
+end
+
+Then(/^I should be on the Link Target Test Page$/) do
+  @browser.url.should match /Link_Target_Test_Page/
+end
+
+Then(/^the page content should contain "(.*?)"$/) do |content|
+  on(ZtargetPage).page_content.should match content
+end
+
diff --git a/tests/browser/features/step_definitions/edit_page_steps.rb b/tests/browser/features/step_definitions/edit_page_steps.rb
new file mode 100644 (file)
index 0000000..5ab02be
--- /dev/null
@@ -0,0 +1,24 @@
+When(/^I click Edit$/) do
+  on(MainPage).edit_link
+end
+
+When(/^I click Preview$/) do
+  on(EditPage).preview_button
+end
+
+When(/^I click Show Changes$/) do
+  on(EditPage).show_changes_button
+end
+
+When(/^I edit the page with "(.*?)"$/) do |edit_content|
+  on(EditPage).edit_page_content_element.send_keys(edit_content + @random_string)
+end
+
+When(/^I save the edit$/) do
+  on(EditPage).save_button
+end
+
+Then(/^the edited page content should contain "(.*?)"$/) do |content|
+  on(MainPage).page_content.should match(content + @random_string)
+end
+
diff --git a/tests/browser/features/step_definitions/file_steps.rb b/tests/browser/features/step_definitions/file_steps.rb
new file mode 100644 (file)
index 0000000..a2ed1bf
--- /dev/null
@@ -0,0 +1,18 @@
+#
+# This file is subject to the license terms in the LICENSE file found in the
+# qa-browsertests top-level directory and at
+# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/LICENSE. No part of
+# qa-browsertests, including this file, may be copied, modified, propagated, or
+# distributed except according to the terms contained in the LICENSE file.
+#
+# Copyright 2012-2014 by the Mediawiki developers. See the CREDITS file in the
+# qa-browsertests top-level directory and at
+# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/CREDITS
+#
+Given(/^I am at file that does not exist$/) do
+  visit(FileDoesNotExistPage, using_params: {page_name: @random_string})
+end
+
+Then(/^page should show that no such file exists$/) do
+  on(FileDoesNotExistPage).file_does_not_exist_message_element.should be_visible
+end
diff --git a/tests/browser/features/step_definitions/login_steps.rb b/tests/browser/features/step_definitions/login_steps.rb
new file mode 100644 (file)
index 0000000..b654b2d
--- /dev/null
@@ -0,0 +1,65 @@
+#
+# This file is subject to the license terms in the LICENSE file found in the
+# qa-browsertests top-level directory and at
+# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/LICENSE. No part of
+# qa-browsertests, including this file, may be copied, modified, propagated, or
+# distributed except according to the terms contained in the LICENSE file.
+#
+# Copyright 2012-2014 by the Mediawiki developers. See the CREDITS file in the
+# qa-browsertests top-level directory and at
+# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/CREDITS
+#
+Given(/^I am at Log in page$/) do
+  visit LoginPage
+end
+
+When(/^I log in with incorrect password$/) do
+  on(LoginPage).login_with(ENV["MEDIAWIKI_USER"], "incorrect password", false)
+end
+
+When(/^I log in with incorrect username$/) do
+  on(LoginPage).login_with("incorrect username", ENV["MEDIAWIKI_PASSWORD"], false)
+end
+
+When(/^I log in without entering credentials$/) do
+  on(LoginPage).login_with("", "", false)
+end
+
+When(/^I log in without entering password$/) do
+  on(LoginPage).login_with(ENV["MEDIAWIKI_USER"], "", false)
+end
+
+Then(/^error box should be visible$/) do
+  on(LoginErrorPage).error_box_element.should be_visible
+end
+
+Then(/^error box should not be visible$/) do
+  on(LoginErrorPage).error_box_element.should_not be_visible
+end
+
+Then(/^feedback should be (.+)$/) do |feedback|
+  on(LoginPage) do |page|
+    page.feedback_element.when_present.click
+    page.feedback.should match Regexp.escape(feedback)
+  end
+end
+
+Then(/^Log in element should be there$/) do
+  on(LoginPage).login_element.should exist
+end
+
+Then(/^main page should open$/) do
+  @browser.url.should == on(MainPage).class.url
+end
+
+Then(/^Password element should be there$/) do
+  on(LoginPage).password_element.should exist
+end
+
+Then(/^there should be a link to (.+)$/) do |text|
+  on(LoginPage).username_displayed_element.when_present.text.should == text
+end
+
+Then(/^Username element should be there$/) do
+  on(LoginPage).username_element.should exist
+end
diff --git a/tests/browser/features/step_definitions/main_page_links_steps.rb b/tests/browser/features/step_definitions/main_page_links_steps.rb
new file mode 100644 (file)
index 0000000..c76fd2b
--- /dev/null
@@ -0,0 +1,47 @@
+Given(/^I open the main wiki URL$/) do
+  visit(MainPage)
+end
+
+Then(/^I should see a link for View History$/) do
+  on(MainPage).view_history_link_element.should be_visible
+end
+
+Then(/^I should see a link for Edit$/) do
+  on(MainPage).edit_link_element.should be_visible
+end
+
+Then(/^I should see a link for Recent changes$/) do
+  on(MainPage).recent_changes_link_element.should be_visible
+end
+
+Then(/^I should see a link for Random page$/) do
+  on(MainPage).random_page_link_element.should be_visible
+end
+
+Then(/^I should see a link for Help$/) do
+  on(MainPage).help_link_element.should be_visible
+end
+
+Then(/^I should see a link for What links here$/) do
+  on(MainPage).what_links_here_link_element.should be_visible
+end
+
+Then(/^I should see a link for Related changes$/) do
+  on(MainPage).related_changes_link_element.should be_visible
+end
+
+Then(/^I should see a link for Special pages$/) do
+  on(MainPage).special_pages_link_element.should be_visible
+end
+
+Then(/^I should see a link for Printable version$/) do
+  on(MainPage).printable_version_link_element.should be_visible
+end
+
+Then(/^I should see a link for Permanent link$/) do
+  on(MainPage).permanent_link_link_element.should be_visible
+end
+
+Then(/^I should see a link for Page information$/) do
+  on(MainPage).page_information_link_element.should be_visible
+end
diff --git a/tests/browser/features/step_definitions/preferences_appearance_steps.rb b/tests/browser/features/step_definitions/preferences_appearance_steps.rb
new file mode 100644 (file)
index 0000000..0046af6
--- /dev/null
@@ -0,0 +1,85 @@
+#
+# This file is subject to the license terms in the LICENSE file found in the
+# qa-browsertests top-level directory and at
+# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/LICENSE. No part of
+# qa-browsertests, including this file, may be copied, modified, propagated, or
+# distributed except according to the terms contained in the LICENSE file.
+#
+# Copyright 2012-2014 by the Mediawiki developers. See the CREDITS file in the
+# qa-browsertests top-level directory and at
+# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/CREDITS
+#
+When(/^I click Appearance$/) do
+  visit(PreferencesPage).appearance_link_element.when_present.click
+end
+
+When(/^I navigate to Preferences$/) do
+  visit(PreferencesPage)
+end
+
+Then(/^I can click Save$/) do
+  on(PreferencesPage).save_button_element.should exist
+end
+
+Then(/^I can restore default settings$/) do
+  on(PreferencesAppearancePage).restore_default_link_element.should exist
+end
+
+Then(/^I can see local time$/) do
+  on(PreferencesAppearancePage).local_time_span_element.should exist
+end
+
+Then(/^I can see time offset section$/) do
+  on(PreferencesAppearancePage).time_offset_table_element.should be_visible
+end
+
+Then(/^I can select date format$/) do
+  on(PreferencesAppearancePage) do |page|
+    page.no_preference_radio_element.should exist
+    page.mo_day_year_radio_element.should exist
+    page.day_mo_year_radio_element.should exist
+    page.year_mo_day_radio_element.should exist
+    page.iso_8601_radio_element.should exist
+  end
+end
+
+Then(/^I can select image size$/) do
+  on(PreferencesAppearancePage).size_select_element.should exist
+end
+
+Then(/^I can select my time zone$/) do
+  on(PreferencesAppearancePage) do |page|
+    page.time_offset_select_element.should exist
+    page.other_offset_element.should exist
+  end
+end
+
+Then(/^I can select skins$/) do
+  on(PreferencesAppearancePage) do |page|
+    page.cologne_blue_element.should exist
+    page.modern_element.should exist
+    page.monobook_element.should exist
+    page.vector_element.should exist
+  end
+end
+
+Then(/^I can select Threshold for stub link$/) do
+  on(PreferencesAppearancePage).threshold_select_element.should exist
+end
+
+Then(/^I can select thumbnail size$/) do
+  on(PreferencesAppearancePage).thumb_select_element.should exist
+end
+
+Then(/^I can select underline preferences$/) do
+  on(PreferencesAppearancePage).underline_select_element.should exist
+end
+
+Then(/^I have advanced options checkboxes$/) do
+  on(PreferencesAppearancePage) do |page|
+    page.hidden_categories_check_element.should exist
+    page.auto_number_check_element.should exist
+  end
+end
+
+
diff --git a/tests/browser/features/step_definitions/preferences_editing_steps.rb b/tests/browser/features/step_definitions/preferences_editing_steps.rb
new file mode 100644 (file)
index 0000000..ad29a74
--- /dev/null
@@ -0,0 +1,54 @@
+#
+# This file is subject to the license terms in the LICENSE file found in the
+# qa-browsertests top-level directory and at
+# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/LICENSE. No part of
+# qa-browsertests, including this file, may be copied, modified, propagated, or
+# distributed except according to the terms contained in the LICENSE file.
+#
+# Copyright 2012-2014 by the Mediawiki developers. See the CREDITS file in the
+# qa-browsertests top-level directory and at
+# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/CREDITS
+#
+When(/^I click Editing$/) do
+  visit(PreferencesPage).editing_link_element.when_present.click
+end
+
+Then(/^I can select edit area font style$/) do
+  on(PreferencesEditingPage).edit_area_font_style_select_element.when_present.should exist
+end
+
+Then(/^I can select live preview$/) do
+  on(PreferencesEditingPage).live_preview_check_element.when_present.should exist
+end
+
+Then(/^I can select section editing by double clicking$/) do
+  on(PreferencesEditingPage).edit_section_double_click_check_element.when_present.should exist
+end
+
+Then(/^I can select section editing by right clicking$/) do
+  on(PreferencesEditingPage).edit_section_right_click_check_element.when_present.should exist
+end
+
+Then(/^I can select section editing via edit links$/) do
+  on(PreferencesEditingPage).edit_section_edit_link_element.when_present.should exist
+end
+
+Then(/^I can select show edit toolbar$/) do
+  on(PreferencesEditingPage).show_edit_toolbar_check_element.when_present.should exist
+end
+
+Then(/^I can select show preview before edit box$/) do
+  on(PreferencesEditingPage).preview_on_top_check_element.when_present.should exist
+end
+
+Then(/^I can select show preview on first edit$/) do
+  on(PreferencesEditingPage).preview_on_first_check_element.when_present.should exist
+end
+
+Then(/^I can select to prompt me when entering a blank edit summary$/) do
+  on(PreferencesEditingPage).forced_edit_summary_check_element.when_present.should exist
+end
+
+Then(/^I can select to warn me when I leave an edit page with unsaved changes$/) do
+  on(PreferencesEditingPage).unsaved_changes_check_element.when_present.should exist
+end
diff --git a/tests/browser/features/step_definitions/preferences_user_profile_steps.rb b/tests/browser/features/step_definitions/preferences_user_profile_steps.rb
new file mode 100644 (file)
index 0000000..529af66
--- /dev/null
@@ -0,0 +1,43 @@
+#
+# This file is subject to the license terms in the LICENSE file found in the
+# qa-browsertests top-level directory and at
+# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/LICENSE. No part of
+# qa-browsertests, including this file, may be copied, modified, propagated, or
+# distributed except according to the terms contained in the LICENSE file.
+#
+# Copyright 2012-2014 by the Mediawiki developers. See the CREDITS file in the
+# qa-browsertests top-level directory and at
+# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/CREDITS
+#
+When(/^I click User profile$/) do
+  visit(PreferencesPage).user_profile_link_element.when_present.click
+end
+
+Then(/^I can change my gender$/) do
+  on(PreferencesUserProfilePage) do |page|
+    page.gender_undefined_radio_element.should exist
+    page.gender_male_radio_element.should exist
+    page.gender_female_radio_element.should exist
+  end
+end
+
+Then(/^I can change my language$/) do
+  on(PreferencesUserProfilePage).lang_select_element.should exist
+end
+
+Then(/^I can change my signature$/) do
+  on(PreferencesUserProfilePage).signature_field_element.should exist
+end
+
+Then(/^I can see my Basic informations$/) do
+  on(PreferencesUserProfilePage).basic_info_table_element.should exist
+end
+
+Then(/^I can see my email$/) do
+  on(PreferencesUserProfilePage).email_table_element.should exist
+end
+
+Then(/^I can see my signature$/) do
+  on(PreferencesUserProfilePage).signature_table_element.should exist
+end
+
diff --git a/tests/browser/features/step_definitions/view_history_steps.rb b/tests/browser/features/step_definitions/view_history_steps.rb
new file mode 100644 (file)
index 0000000..1ecc008
--- /dev/null
@@ -0,0 +1,8 @@
+When(/^I click View History$/) do
+  on(ViewHistoryPage).view_history_link
+end
+
+Then(/^I should see a link to a previous version of the page$/) do
+  on(ViewHistoryPage).old_version_link_element.should be_visible
+end
+
diff --git a/tests/browser/features/support/env.rb b/tests/browser/features/support/env.rb
new file mode 100644 (file)
index 0000000..7c12236
--- /dev/null
@@ -0,0 +1,2 @@
+require "mediawiki_api"
+require "mediawiki_selenium"
diff --git a/tests/browser/features/support/hooks.rb b/tests/browser/features/support/hooks.rb
new file mode 100644 (file)
index 0000000..85309f3
--- /dev/null
@@ -0,0 +1,2 @@
+# Needed for cucumber --dry-run -f stepdefs
+require 'page-object'
diff --git a/tests/browser/features/support/modules/url_module.rb b/tests/browser/features/support/modules/url_module.rb
new file mode 100644 (file)
index 0000000..6c329e8
--- /dev/null
@@ -0,0 +1,10 @@
+module URL
+  def self.url(name)
+    if ENV["MEDIAWIKI_URL"]
+      mediawiki_url = ENV["MEDIAWIKI_URL"]
+    else
+      mediawiki_url = "http://127.0.0.1:80/w/index.php"
+    end
+    "#{mediawiki_url}#{name}"
+  end
+end
diff --git a/tests/browser/features/support/pages/create_account_page.rb b/tests/browser/features/support/pages/create_account_page.rb
new file mode 100644 (file)
index 0000000..380bccb
--- /dev/null
@@ -0,0 +1,19 @@
+#
+# This file is subject to the license terms in the LICENSE file found in the
+# qa-browsertests top-level directory and at
+# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/LICENSE. No part of
+# qa-browsertests, including this file, may be copied, modified, propagated, or
+# distributed except according to the terms contained in the LICENSE file.
+#
+# Copyright 2012-2014 by the Mediawiki developers. See the CREDITS file in the
+# qa-browsertests top-level directory and at
+# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/CREDITS
+#
+class CreateAccountPage
+  include PageObject
+
+  include URL
+  page_url URL.url("<%=params[:page_title]%>")
+
+  button(:create_account, id: "wpCreateaccount")
+end
diff --git a/tests/browser/features/support/pages/edit_page.rb b/tests/browser/features/support/pages/edit_page.rb
new file mode 100644 (file)
index 0000000..b619c34
--- /dev/null
@@ -0,0 +1,8 @@
+class EditPage
+  include PageObject
+
+  text_area(:edit_page_content, id: "wpTextbox1")
+  button(:preview_button, id: "wpPreview")
+  button(:show_changes_button, id: "wpDiff")
+  button(:save_button, id: "wpSave")
+end
\ No newline at end of file
diff --git a/tests/browser/features/support/pages/file_does_not_exist_page.rb b/tests/browser/features/support/pages/file_does_not_exist_page.rb
new file mode 100644 (file)
index 0000000..c8491f3
--- /dev/null
@@ -0,0 +1,19 @@
+#
+# This file is subject to the license terms in the LICENSE file found in the
+# qa-browsertests top-level directory and at
+# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/LICENSE. No part of
+# qa-browsertests, including this file, may be copied, modified, propagated, or
+# distributed except according to the terms contained in the LICENSE file.
+#
+# Copyright 2012-2014 by the Mediawiki developers. See the CREDITS file in the
+# qa-browsertests top-level directory and at
+# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/CREDITS
+#
+class FileDoesNotExistPage
+  include PageObject
+
+  include URL
+  page_url URL.url("File:<%=params[:page_name]%>")
+
+  div(:file_does_not_exist_message, id: "mw-imagepage-nofile")
+end
diff --git a/tests/browser/features/support/pages/login_error_page.rb b/tests/browser/features/support/pages/login_error_page.rb
new file mode 100644 (file)
index 0000000..4fc9ca7
--- /dev/null
@@ -0,0 +1,5 @@
+class LoginErrorPage
+  include PageObject
+
+  div(:error_box, class: "errorbox")
+end
\ No newline at end of file
diff --git a/tests/browser/features/support/pages/main_page.rb b/tests/browser/features/support/pages/main_page.rb
new file mode 100644 (file)
index 0000000..7d96c2b
--- /dev/null
@@ -0,0 +1,19 @@
+class MainPage
+  include PageObject
+
+  include URL
+  page_url URL.url("")
+
+  a(:edit_link, href: /action=edit/)
+  li(:help_link, id: "n-help")
+  div(:page_content, id: "content")
+  li(:page_information_link, id: "t-info")
+  li(:permanent_link_link, id: "t-permalink")
+  a(:printable_version_link, href: /printable=yes/)
+  li(:random_page_link, id: "n-randompage")
+  li(:recent_changes_link, id: "n-recentchanges")
+  li(:related_changes_link, id: "t-recentchangeslinked")
+  li(:special_pages_link, id: "t-specialpages")
+  a(:view_history_link, href: /action=history/)
+  li(:what_links_here_link, id: "t-whatlinkshere")
+end
\ No newline at end of file
diff --git a/tests/browser/features/support/pages/preferences_appearance_page.rb b/tests/browser/features/support/pages/preferences_appearance_page.rb
new file mode 100644 (file)
index 0000000..e7b64cd
--- /dev/null
@@ -0,0 +1,42 @@
+#
+# This file is subject to the license terms in the LICENSE file found in the
+# qa-browsertests top-level directory and at
+# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/LICENSE. No part of
+# qa-browsertests, including this file, may be copied, modified, propagated, or
+# distributed except according to the terms contained in the LICENSE file.
+#
+# Copyright 2012-2014 by the Mediawiki developers. See the CREDITS file in the
+# qa-browsertests top-level directory and at
+# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/CREDITS
+#
+class PreferencesAppearancePage
+  include PageObject
+
+  include URL
+  page_url URL.url("Special:Preferences#mw-prefsection-rendering")
+
+  checkbox(:auto_number_check, id: "mw-input-wpnumberheadings")
+  checkbox(:collapse_sidebar_vector_check, id: "mw-input-wpvector-collapsiblenav")
+  radio_button(:cologne_blue, id: "mw-input-wpskin-cologneblue")
+  radio_button(:day_mo_year_radio, id: "mw-input-wpdate-dmy")
+  checkbox(:dont_show_aft_check, id: "mw-input-wparticlefeedback-disable")
+  checkbox(:exclude_from_experiments_check, id: "mw-input-wpvector-noexperiments")
+  checkbox(:hidden_categories_check, id: "mw-input-wpshowhiddencats")
+  radio_button(:iso_8601_radio, id: "mw-input-wpdate-ISO_8601")
+  span(:local_time_span, id: "wpLocalTime")
+  radio_button(:mo_day_year_radio, id: "mw-input-wpdate-mdy")
+  radio_button(:modern, id: "mw-input-wpskin-modern")
+  radio_button(:monobook, id: "mw-input-wpskin-monobook")
+  radio_button(:no_preference_radio, id: "mw-input-wpdate-default")
+  text_field(:other_offset, id: "mw-input-wptimecorrection-other")
+  a(:restore_default_link, href: /reset/)
+  select_list(:size_select, id: "mw-input-wpimagesize")
+  select_list(:threshold_select, id: "mw-input-wpstubthreshold")
+  select_list(:time_offset_select, id: "mw-input-wptimecorrection")
+  table(:time_offset_table, id: "mw-htmlform-timeoffset")
+  select_list(:thumb_select, id: "mw-input-wpthumbsize")
+  select_list(:underline_select, id: "mw-input-wpunderline")
+  radio_button(:vector, id: "mw-input-wpskin-vector")
+  radio_button(:year_mo_day_radio, id: "mw-input-wpdate-ymd")
+end
+
diff --git a/tests/browser/features/support/pages/preferences_editing_page.rb b/tests/browser/features/support/pages/preferences_editing_page.rb
new file mode 100644 (file)
index 0000000..aed9c41
--- /dev/null
@@ -0,0 +1,28 @@
+#
+# This file is subject to the license terms in the LICENSE file found in the
+# qa-browsertests top-level directory and at
+# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/LICENSE. No part of
+# qa-browsertests, including this file, may be copied, modified, propagated, or
+# distributed except according to the terms contained in the LICENSE file.
+#
+# Copyright 2012-2014 by the Mediawiki developers. See the CREDITS file in the
+# qa-browsertests top-level directory and at
+# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/CREDITS
+#
+class PreferencesEditingPage
+  include PageObject
+
+  include URL
+  page_url URL.url("Special:Preferences#mw-prefsection-rendering")
+
+  select_list(:edit_area_font_style_select, id: "mw-input-wpeditfont")
+  checkbox(:edit_section_double_click_check, id: "mw-input-wpeditondblclick")
+  checkbox(:edit_section_edit_link, id: "mw-input-wpeditsectiononrightclick")
+  checkbox(:edit_section_right_click_check, id: "mw-input-wpeditsectiononrightclick")
+  checkbox(:forced_edit_summary_check, id: "mw-input-wpforceeditsummary")
+  checkbox(:live_preview_check, id: "mw-input-wpuselivepreview")
+  checkbox(:preview_on_first_check, id: "mw-input-wppreviewonfirst")
+  checkbox(:preview_on_top_check, id: "mw-input-wppreviewontop")
+  checkbox(:show_edit_toolbar_check, id: "mw-input-wpshowtoolbar")
+  checkbox(:unsaved_changes_check, id: "mw-input-wpuseeditwarning")
+end
diff --git a/tests/browser/features/support/pages/preferences_page.rb b/tests/browser/features/support/pages/preferences_page.rb
new file mode 100644 (file)
index 0000000..919ba27
--- /dev/null
@@ -0,0 +1,22 @@
+#
+# This file is subject to the license terms in the LICENSE file found in the
+# qa-browsertests top-level directory and at
+# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/LICENSE. No part of
+# qa-browsertests, including this file, may be copied, modified, propagated, or
+# distributed except according to the terms contained in the LICENSE file.
+#
+# Copyright 2012-2014 by the Mediawiki developers. See the CREDITS file in the
+# qa-browsertests top-level directory and at
+# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/CREDITS
+#
+class PreferencesPage
+  include PageObject
+
+  include URL
+  page_url URL.url("Special:Preferences")
+
+  a(:appearance_link, id: "preftab-rendering")
+  a(:editing_link, id: "preftab-editing")
+  a(:user_profile_link, id: "preftab-personal")
+  button(:save_button, id: "prefcontrol")
+end
diff --git a/tests/browser/features/support/pages/preferences_user_profile_page.rb b/tests/browser/features/support/pages/preferences_user_profile_page.rb
new file mode 100644 (file)
index 0000000..28e10b9
--- /dev/null
@@ -0,0 +1,28 @@
+#
+# This file is subject to the license terms in the LICENSE file found in the
+# qa-browsertests top-level directory and at
+# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/LICENSE. No part of
+# qa-browsertests, including this file, may be copied, modified, propagated, or
+# distributed except according to the terms contained in the LICENSE file.
+#
+# Copyright 2012-2014 by the Mediawiki developers. See the CREDITS file in the
+# qa-browsertests top-level directory and at
+# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/CREDITS
+#
+class PreferencesUserProfilePage
+  include PageObject
+
+  include URL
+  page_url URL.url("Special:Preferences#mw-prefsection-personal")
+
+  table(:basic_info_table, id: "mw-htmlform-info")
+  link(:change_password_link, text: "Change password")
+  table(:email_table, id: "mw-htmlform-email")
+  radio_button(:gender_female_radio, id: "mw-input-wpgender-male")
+  radio_button(:gender_male_radio, id: "mw-input-wpgender-female")
+  radio_button(:gender_undefined_radio, id: "mw-input-wpgender-unknown")
+  select_list(:lang_select, id: "mw-input-wplanguage")
+  checkbox(:remember_password_check, id: "mw-input-wprememberpassword")
+  text_field(:signature_field, id: "mw-input-wpnickname")
+  table(:signature_table, id: "mw-htmlform-signature")
+end
diff --git a/tests/browser/features/support/pages/view_history_page.rb b/tests/browser/features/support/pages/view_history_page.rb
new file mode 100644 (file)
index 0000000..6689598
--- /dev/null
@@ -0,0 +1,7 @@
+class ViewHistoryPage
+  include PageObject
+
+  a(:view_history_link, href: /action=history/)
+  a(:old_version_link, href: /oldid=/)
+
+end
\ No newline at end of file
diff --git a/tests/browser/features/support/pages/ztargetpage.rb b/tests/browser/features/support/pages/ztargetpage.rb
new file mode 100644 (file)
index 0000000..c1f46ec
--- /dev/null
@@ -0,0 +1,7 @@
+class ZtargetPage < MainPage
+  include URL
+  page_url URL.url("<%=params[:article_name]%>")
+  include PageObject
+
+  a(:link_target_page_link, text: "link to the test target page")
+end
\ No newline at end of file
diff --git a/tests/browser/features/view_history.feature b/tests/browser/features/view_history.feature
new file mode 100644 (file)
index 0000000..7b42639
--- /dev/null
@@ -0,0 +1,11 @@
+@chrome @clean @en.wikipedia.beta.wmflabs.org @firefox @phantomjs @test2.wikipedia.org
+Feature: View History
+
+  Scenario: Edit page and view history
+    Given I go to the "History Test Page" page with content "This is a page that will have history"
+    When I click Edit
+      And I edit the page with "Edited and a random string"
+      And I save the edit
+      And the edited page content should contain "Edited and a random string"
+      And I click View History
+    Then I should see a link to a previous version of the page
\ No newline at end of file
index 63c3d01..69fda8d 100644 (file)
@@ -27,7 +27,10 @@ module.exports = function ( grunt ) {
                        all: [
                                '<%= jshint.all %>',
                                // Auto-generated file with JSON (double quotes)
-                               '!tests/qunit/data/mediawiki.jqueryMsg.data.js'
+                               '!tests/qunit/data/mediawiki.jqueryMsg.data.js',
+                               // Skip functions are stored as script files but wrapped in a function when
+                               // executed. node-jscs trips on the would-be "Illegal return statement".
+                               '!resources/src/*-skip.js'
 
                        // Exclude all files ignored by jshint
                        ].concat( grunt.file.read( '.jshintignore' ).split( '\n' ).reduce( function ( patterns, pattern ) {
index 5d52160..6c8a401 100644 (file)
@@ -153,6 +153,7 @@ class ParserTest {
                global $wgParser, $wgParserConf, $IP, $messageMemc, $wgMemc,
                        $wgUser, $wgLang, $wgOut, $wgRequest, $wgStyleDirectory, $wgEnableParserCache,
                        $wgExtraNamespaces, $wgNamespaceAliases, $wgNamespaceProtection, $wgLocalFileRepo,
+                       $wgExtraInterlanguageLinkPrefixes,
                        $parserMemc, $wgThumbnailScriptPath, $wgScriptPath,
                        $wgArticlePath, $wgScript, $wgStylePath, $wgExtensionAssetsPath,
                        $wgMainCacheType, $wgMessageCacheType, $wgParserCacheType, $wgLockManagers;
@@ -223,6 +224,9 @@ class ParserTest {
                if ( $wgStyleDirectory === false ) {
                        $wgStyleDirectory = "$IP/skins";
                }
+               // "extra language links"
+               // see https://gerrit.wikimedia.org/r/111390
+               array_push( $wgExtraInterlanguageLinkPrefixes, 'mul' );
 
                self::setupInterwikis();
        }
@@ -276,6 +280,11 @@ class ParserTest {
                                        'iw_api' => '',
                                        'iw_wikiid' => '',
                                        'iw_local' => 1 ),
+                               'mul' => array(
+                                       'iw_url' => 'http://wikisource.org/wiki/$1',
+                                       'iw_api' => '',
+                                       'iw_wikiid' => '',
+                                       'iw_local' => 1 ),
                        );
                        if ( array_key_exists( $prefix, $testInterwikis ) ) {
                                $iwData = $testInterwikis[$prefix];
index 03e4959..6097370 100644 (file)
@@ -87,12 +87,6 @@ Template:tbl-end
 |}
 !! endarticle
 
-!! article
-Template:!
-!! text
-|
-!! endarticle
-
 !! article
 Template:echo
 !! text
@@ -1093,7 +1087,7 @@ Non-html5 tags should be accepted
 </p>
 !! end
 
-## a,rtc not permitted
+## a not permitted
 ## i,b,br omitted
 !! test
 Text-level semantic html elements in wikitext
@@ -1115,7 +1109,7 @@ Text-level semantic html elements in wikitext
 <sub>text</sub>
 <u>text</u>
 <mark>text</mark>
-<ruby><rb>明日<rp>(</rp><rt>Ashita</rt><rp>)</rp></rb></ruby>
+<ruby><rb>明日</rb><rp>(</rp><rt>Ashita</rt><rp> </rp><rtc>あした</rtc><rp>)</rp></ruby>
 <bdi>text</bdi>
 <bdo>text</bdo>
 <span>text</span>
@@ -1138,7 +1132,7 @@ Text-level semantic html elements in wikitext
 <sub>text</sub>
 <u>text</u>
 <mark>text</mark>
-<ruby><rb>明日<rp>(</rp><rt>Ashita</rt><rp>)</rp></rb></ruby>
+<ruby><rb>明日</rb><rp>(</rp><rt>Ashita</rt><rp> </rp><rtc>あした</rtc><rp>)</rp></ruby>
 <bdi>text</bdi>
 <bdo>text</bdo>
 <span>text</span>
@@ -1146,6 +1140,46 @@ Text-level semantic html elements in wikitext
 </p>
 !! end
 
+# test cases taken from
+# http://www.w3.org/TR/html5/text-level-semantics.html#the-ruby-element
+!! test
+Ruby markup (W3C-style)
+!! wikitext
+; Mono-ruby for individual base characters
+: <ruby>日<rt>に</rt>本<rt>ほん</rt>語<rt>ご</rt></ruby>
+; Group ruby
+: <ruby>今日<rt>きょう</rt></ruby>
+; Jukugo ruby
+: <ruby>法<rb>華</rb><rb>経</rb><rt>ほ</rt><rt>け</rt><rt>きょう</rt></ruby>
+; Inline ruby
+: <ruby>東<rb>京</rb><rp>(</rp><rt>とう</rt><rt>きょう</rt><rp>)</rp></ruby>
+; Double-sided ruby
+: <ruby><rb>旧</rb><rb>金</rb><rb>山</rb><rt>jiù</rt><rt>jīn</rt><rt>shān</rt><rtc>San Francisco</rtc></ruby>
+
+<ruby>
+<rb>♥</rb><rtc><rt>Heart</rt></rtc><rtc lang=fr><rt>Cœur</rt></rtc>
+<rb>☘</rb><rtc><rt>Shamrock</rt></rtc><rtc lang=fr><rt>Trèfle</rt></rtc>
+<rb>✶</rb><rtc><rt>Star</rt></rtc><rtc lang=fr><rt>Étoile</rt></rtc>
+</ruby>
+!! html
+<dl><dt> Mono-ruby for individual base characters</dt>
+<dd> <ruby>日<rt>に</rt>本<rt>ほん</rt>語<rt>ご</rt></ruby></dd>
+<dt> Group ruby</dt>
+<dd> <ruby>今日<rt>きょう</rt></ruby></dd>
+<dt> Jukugo ruby</dt>
+<dd> <ruby>法<rb>華</rb><rb>経</rb><rt>ほ</rt><rt>け</rt><rt>きょう</rt></ruby></dd>
+<dt> Inline ruby</dt>
+<dd> <ruby>東<rb>京</rb><rp>(</rp><rt>とう</rt><rt>きょう</rt><rp>)</rp></ruby></dd>
+<dt> Double-sided ruby</dt>
+<dd> <ruby><rb>旧</rb><rb>金</rb><rb>山</rb><rt>jiù</rt><rt>jīn</rt><rt>shān</rt><rtc>San Francisco</rtc></ruby></dd></dl>
+<p><ruby>
+<rb>♥</rb><rtc><rt>Heart</rt></rtc><rtc lang="fr"><rt>Cœur</rt></rtc>
+<rb>☘</rb><rtc><rt>Shamrock</rt></rtc><rtc lang="fr"><rt>Trèfle</rt></rtc>
+<rb>✶</rb><rtc><rt>Star</rt></rtc><rtc lang="fr"><rt>Étoile</rt></rtc>
+</ruby>
+</p>
+!! end
+
 !! test
 Non-word characters don't terminate tag names (bug 17663, 40670, 52022)
 !! wikitext
@@ -6413,6 +6447,16 @@ Blah blah blah
 </p>
 !! end
 
+!! test
+"Extra" interlanguage links (bug 32189 / gerrit 111390)
+!! wikitext
+Blah blah blah
+[[mul:Multilingual]]
+!! html
+<p>Blah blah blah
+</p>
+!! end
+
 !! test
 Parsoid-specific test: Wikilinks with &nbsp; should RT properly
 !! options
index 53b944d..c9184e8 100644 (file)
@@ -245,6 +245,7 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
                        $GLOBALS[$key] = $value;
                }
                $this->mwGlobals = array();
+               RequestContext::resetMain();
 
                $phpErrorLevel = intval( ini_get( 'error_reporting' ) );
 
index daf4bd9..f316f56 100644 (file)
@@ -43,6 +43,8 @@ class ResourceLoaderTestModule extends ResourceLoaderModule {
        protected $dependencies = array();
        protected $group = null;
        protected $source = 'local';
+       protected $script = '';
+       protected $styles = '';
        protected $skipFunction = null;
        protected $targets = array( 'test' );
 
@@ -52,6 +54,14 @@ class ResourceLoaderTestModule extends ResourceLoaderModule {
                }
        }
 
+       public function getScript( ResourceLoaderContext $context ) {
+               return $this->script;
+       }
+
+       public function getStyles( ResourceLoaderContext $context ) {
+               return array( '' => $this->styles );
+       }
+
        public function getDependencies() {
                return $this->dependencies;
        }
index ca132a4..9913f68 100644 (file)
@@ -55,3 +55,7 @@ Bishzilla_blink.gif
 https://commons.wikimedia.org/wiki/File:Bishzilla_blink.gif
 Public domain
 Bishonen
+
+say-test.ogg
+Public domain
+Brian Wolff
diff --git a/tests/phpunit/data/media/say-test.ogg b/tests/phpunit/data/media/say-test.ogg
new file mode 100644 (file)
index 0000000..5d814fb
Binary files /dev/null and b/tests/phpunit/data/media/say-test.ogg differ
index b07c013..ae069ea 100644 (file)
@@ -76,6 +76,7 @@ class ArticleTest extends MediaWikiTestCase {
         * @covers Article::getAutosummary
         */
        public function testStaticFunctions() {
+               $this->hideDeprecated( 'Article::selectFields' );
                $this->hideDeprecated( 'Article::getAutosummary' );
                $this->hideDeprecated( 'WikiPage::getAutosummary' );
                $this->hideDeprecated( 'CategoryPage::getAutosummary' ); // Inherited from Article
index 7c684d5..e22f505 100644 (file)
@@ -6,7 +6,7 @@ class GitInfoTest extends MediaWikiTestCase {
 
        protected function setUp() {
                parent::setUp();
-               $this->setMwGlobals( 'wgCacheDirectory', __DIR__ . '/../data' );
+               $this->setMwGlobals( 'wgGitInfoCacheDirectory', __DIR__ . '/../data/gitinfo' );
        }
 
        public function testValidJsonData() {
index 06b512d..91b531d 100644 (file)
@@ -369,6 +369,8 @@ class GlobalTest extends MediaWikiTestCase {
         * @covers ::swap
         */
        public function testSwapVarsTest() {
+               $this->hideDeprecated( 'swap' );
+
                $var1 = 1;
                $var2 = 2;
 
index 5032dc1..af834f8 100644 (file)
@@ -28,7 +28,11 @@ class WfParseUrlTest extends MediaWikiTestCase {
                parent::setUp();
 
                $this->setMwGlobals( 'wgUrlProtocols', array(
-                       '//', 'http://', 'file://', 'mailto:',
+                       '//',
+                       'http://',
+                       'https://',
+                       'file://',
+                       'mailto:',
                ) );
        }
 
@@ -36,11 +40,9 @@ class WfParseUrlTest extends MediaWikiTestCase {
         * @dataProvider provideURLs
         */
        public function testWfParseUrl( $url, $parts ) {
-               $partsDump = var_export( $parts, true );
                $this->assertEquals(
                        $parts,
-                       wfParseUrl( $url ),
-                       "Testing $url parses to $partsDump"
+                       wfParseUrl( $url )
                );
        }
 
@@ -67,6 +69,14 @@ class WfParseUrlTest extends MediaWikiTestCase {
                                        'host' => 'example.org',
                                )
                        ),
+                       array(
+                               'https://example.org',
+                               array(
+                                       'scheme' => 'https',
+                                       'delimiter' => '://',
+                                       'host' => 'example.org',
+                               )
+                       ),
                        array(
                                'http://id:key@example.org:123/path?foo=bar#baz',
                                array(
diff --git a/tests/phpunit/includes/ImagePage404Test.php b/tests/phpunit/includes/ImagePage404Test.php
new file mode 100644 (file)
index 0000000..3660456
--- /dev/null
@@ -0,0 +1,53 @@
+<?php
+/**
+ * For doing Image Page tests that rely on 404 thumb handling
+ */
+class ImagePage404Test extends MediaWikiMediaTestCase {
+
+       protected function getRepoOptions() {
+               return parent::getRepoOptions() + array( 'transformVia404' => true );
+       }
+
+       function setUp() {
+               $this->setMwGlobals( 'wgImageLimits', array(
+                       array( 320, 240 ),
+                       array( 640, 480 ),
+                       array( 800, 600 ),
+                       array( 1024, 768 ),
+                       array( 1280, 1024 )
+               ) );
+               parent::setUp();
+       }
+
+       function getImagePage( $filename ) {
+               $title = Title::makeTitleSafe( NS_FILE, $filename );
+               $file = $this->dataFile( $filename );
+               $iPage = new ImagePage( $title );
+               $iPage->setFile( $file );
+               return $iPage;
+       }
+
+       /**
+        * @dataProvider providerGetThumbSizes
+        * @param $filename String
+        * @param $expectedNumberThumbs integer How many thumbnails to show
+        */
+       function testGetThumbSizes( $filename, $expectedNumberThumbs ) {
+               $iPage = $this->getImagePage( $filename );
+               $reflection = new ReflectionClass( $iPage );
+               $reflMethod = $reflection->getMethod( 'getThumbSizes' );
+               $reflMethod->setAccessible( true );
+
+               $actual = $reflMethod->invoke( $iPage, 545, 700 );
+               $this->assertEquals( count( $actual ), $expectedNumberThumbs );
+       }
+
+       function providerGetThumbSizes() {
+               return array(
+                       array( 'animated.gif', 6 ),
+                       array( 'Toll_Texas_1.svg', 6 ),
+                       array( '80x60-Greyscale.xcf', 6 ),
+                       array( 'jpeg-comment-binary.jpg', 6 ),
+               );
+       }
+}
diff --git a/tests/phpunit/includes/ImagePageTest.php b/tests/phpunit/includes/ImagePageTest.php
new file mode 100644 (file)
index 0000000..d5ecb95
--- /dev/null
@@ -0,0 +1,90 @@
+<?php
+class ImagePageTest extends MediaWikiMediaTestCase {
+
+       function setUp() {
+               $this->setMwGlobals( 'wgImageLimits', array(
+                       array( 320, 240 ),
+                       array( 640, 480 ),
+                       array( 800, 600 ),
+                       array( 1024, 768 ),
+                       array( 1280, 1024 )
+               ) );
+               parent::setUp();
+       }
+
+       function getImagePage( $filename ) {
+               $title = Title::makeTitleSafe( NS_FILE, $filename );
+               $file = $this->dataFile( $filename );
+               $iPage = new ImagePage( $title );
+               $iPage->setFile( $file );
+               return $iPage;
+       }
+
+       /**
+        * @dataProvider providerGetDisplayWidthHeight
+        * @param $dimensions Array [maxWidth, maxHeight, width, height]
+        * @param $expected Array [width, height] The width and height we expect to display at
+        */
+       function testGetDisplayWidthHeight( $dim, $expected ) {
+               $iPage = $this->getImagePage( 'animated.gif' );
+               $reflection = new ReflectionClass( $iPage );
+               $reflMethod = $reflection->getMethod( 'getDisplayWidthHeight' );
+               $reflMethod->setAccessible( true );
+
+               $actual = $reflMethod->invoke( $iPage, $dim[0], $dim[1], $dim[2], $dim[3] );
+               $this->assertEquals( $actual, $expected );
+       }
+
+       function providerGetDisplayWidthHeight() {
+               return array(
+                       array(
+                               array( 1024.0, 768.0, 600.0, 600.0 ),
+                               array( 600.0, 600.0 )
+                       ),
+                       array(
+                               array( 1024.0, 768.0, 1600.0, 600.0 ),
+                               array( 1024.0, 384.0 )
+                       ),
+                       array(
+                               array( 1024.0, 768.0, 1024.0, 768.0 ),
+                               array( 1024.0, 768.0 )
+                       ),
+                       array(
+                               array( 1024.0, 768.0, 800.0, 1000.0 ),
+                               array( 614.0, 768.0 )
+                       ),
+                       array(
+                               array( 1024.0, 768.0, 0, 1000 ),
+                               array( 0, 0 )
+                       ),
+                       array(
+                               array( 1024.0, 768.0, 2000, 0 ),
+                               array( 0, 0 )
+                       ),
+               );
+       }
+
+       /**
+        * @dataProvider providerGetThumbSizes
+        * @param $filename String
+        * @param $expectedNumberThumbs integer How many thumbnails to show
+        */
+       function testGetThumbSizes( $filename, $expectedNumberThumbs ) {
+               $iPage = $this->getImagePage( $filename );
+               $reflection = new ReflectionClass( $iPage );
+               $reflMethod = $reflection->getMethod( 'getThumbSizes' );
+               $reflMethod->setAccessible( true );
+
+               $actual = $reflMethod->invoke( $iPage, 545, 700 );
+               $this->assertEquals( count( $actual ), $expectedNumberThumbs );
+       }
+
+       function providerGetThumbSizes() {
+               return array(
+                       array( 'animated.gif', 2 ),
+                       array( 'Toll_Texas_1.svg', 1 ),
+                       array( '80x60-Greyscale.xcf', 1 ),
+                       array( 'jpeg-comment-binary.jpg', 2 ),
+               );
+       }
+}
index 4d62cc7..72114e9 100644 (file)
@@ -94,6 +94,7 @@ class LinkerTest extends MediaWikiLangTestCase {
                        'wgScript' => '/wiki/index.php',
                        'wgArticlePath' => '/wiki/$1',
                        'wgWellFormedXml' => true,
+                       'wgCapitalLinks' => true,
                ) );
 
                if ( $title === false ) {
index 9ff547c..a5dac8d 100644 (file)
@@ -186,6 +186,10 @@ class LinksUpdateTest extends MediaWikiTestCase {
         * @covers ParserOutput::addLanguageLink
         */
        public function testUpdate_langlinks() {
+               $this->setMwGlobals( array(
+                       'wgCapitalLinks' => true,
+               ) );
+
                /** @var ParserOutput $po */
                list( $t, $po ) = $this->makeTitleAndParserOutput( "Testing", 111 );
 
diff --git a/tests/phpunit/includes/MimeMagicTest.php b/tests/phpunit/includes/MimeMagicTest.php
new file mode 100644 (file)
index 0000000..a164ff9
--- /dev/null
@@ -0,0 +1,48 @@
+<?php
+class MimeMagicTest extends MediaWikiTestCase {
+
+       /** @var MimeMagic */
+       private $mimeMagic;
+
+       function setUp() {
+               $this->mimeMagic = MimeMagic::singleton();
+               parent::setUp();
+       }
+
+       /**
+        * @dataProvider providerImproveTypeFromExtension
+        * @param $ext String File extension (no leading dot)
+        * @param $oldMime String Initially detected mime
+        * @param $expectedMime String Mime type after taking extension into account
+        */
+       function testImproveTypeFromExtension( $ext, $oldMime, $expectedMime ) {
+               $actualMime = $this->mimeMagic->improveTypeFromExtension( $oldMime, $ext );
+               $this->assertEquals( $expectedMime, $actualMime );
+       }
+
+       function providerImproveTypeFromExtension() {
+               return array(
+                       array( 'gif', 'image/gif', 'image/gif' ),
+                       array( 'gif', 'unknown/unknown', 'unknown/unknown' ),
+                       array( 'wrl', 'unknown/unknown', 'model/vrml' ),
+                       array( 'txt', 'text/plain', 'text/plain' ),
+                       array( 'csv', 'text/plain', 'text/csv' ),
+                       array( 'tsv', 'text/plain', 'text/tab-separated-values' ),
+                       array( 'json', 'text/plain', 'application/json' ),
+                       array( 'foo', 'application/x-opc+zip', 'application/zip' ),
+                       array( 'docx', 'application/x-opc+zip', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' ),
+                       array( 'djvu', 'image/x-djvu', 'image/vnd.djvu' ),
+                       array( 'wav', 'audio/wav', 'audio/wav' ),
+               );
+       }
+
+       /**
+        * Test to make sure that encoder=ffmpeg2theora doesn't trigger
+        * MEDIATYPE_VIDEO (bug 63584)
+        */
+       function testOggRecognize() {
+               $oggFile = __DIR__ . '/../data/media/say-test.ogg';
+               $actualType = $this->mimeMagic->getMediaType( $oggFile, 'application/ogg' );
+               $this->assertEquals( $actualType, MEDIATYPE_AUDIO );
+       }
+}
index 385cee5..542b3d6 100644 (file)
@@ -135,4 +135,88 @@ class OutputPageTest extends MediaWikiTestCase {
                        'message' => 'On request with handheld querystring and media is screen, returns null'
                ) );
        }
+
+       public static function provideMakeResourceLoaderLink() {
+               return array(
+                       // Load module script only
+                       array(
+                               array( 'test.foo', ResourceLoaderModule::TYPE_SCRIPTS ),
+                               '<script src="http://127.0.0.1:8080/w/load.php?debug=false&amp;lang=en&amp;modules=test.foo&amp;only=scripts&amp;skin=vector&amp;*"></script>
+'
+                       ),
+                       // Load module styles only
+                       // This also tests the order the modules are put into the url
+                       array(
+                               array( array( 'test.baz', 'test.foo', 'test.bar' ), ResourceLoaderModule::TYPE_STYLES ),
+                               '<link rel=stylesheet href="http://127.0.0.1:8080/w/load.php?debug=false&amp;lang=en&amp;modules=test.bar%2Cbaz%2Cfoo&amp;only=styles&amp;skin=vector&amp;*">
+'
+                       ),
+                       // Load private module (combined)
+                       array(
+                               array( 'test.quux', ResourceLoaderModule::TYPE_COMBINED ),
+                               '<script>if(window.mw){
+mw.loader.implement("test.quux",function($,jQuery){mw.test.baz({token:123});},{"css":[".mw-icon{transition:none}\n/* cache key: wiki:resourceloader:filter:minify-css:7:fd8ea20b3336b2bfb230c789d430067a */"]},{});
+/* cache key: wiki:resourceloader:filter:minify-js:7:274ccee17be73cd5f4dda5dc2a819188 */
+}</script>
+'
+                       ),
+                       // Load module script with with ESI
+                       array(
+                               array( 'test.foo', ResourceLoaderModule::TYPE_SCRIPTS, true ),
+                               '<script><esi:include src="http://127.0.0.1:8080/w/load.php?debug=false&amp;lang=en&amp;modules=test.foo&amp;only=scripts&amp;skin=vector&amp;*" /></script>
+'
+                       ),
+                       // Load module styles with with ESI
+                       array(
+                               array( 'test.foo', ResourceLoaderModule::TYPE_STYLES, true ),
+                               '<style><esi:include src="http://127.0.0.1:8080/w/load.php?debug=false&amp;lang=en&amp;modules=test.foo&amp;only=styles&amp;skin=vector&amp;*" /></style>
+',
+                       ),
+               );
+       }
+
+
+       /**
+        * @dataProvider provideMakeResourceLoaderLink
+        * @covers OutputPage::makeResourceLoaderLink
+        */
+       public function testMakeResourceLoaderLink( $args, $expectedHtml) {
+               $this->setMwGlobals( array(
+                       'wgResourceLoaderUseESI' => true,
+                       'wgLoadScript' => 'http://127.0.0.1:8080/w/load.php',
+                       // Affects whether CDATA is inserted
+                       'wgWellFormedXml' => false,
+                       // Cache key is based on database name, and affects output;
+                       // this test should not touch the database anyways.
+                       'wgDBname' => 'wiki',
+                       'wgDBprefix' => '',
+               ) );
+               $class = new ReflectionClass( 'OutputPage' );
+               $method = $class->getMethod( 'makeResourceLoaderLink' );
+               $method->setAccessible( true );
+               $ctx = new RequestContext();
+               $out = new OutputPage( $ctx );
+               $rl = $out->getResourceLoader();
+               $rl->register( array(
+                       'test.foo' => new ResourceLoaderTestModule(array(
+                               'script' => 'mw.test.foo( { a: true } );',
+                               'styles' => '.mw-test-foo { content: "style"; }',
+                       )),
+                       'test.bar' => new ResourceLoaderTestModule(array(
+                               'script' => 'mw.test.bar( { a: true } );',
+                               'styles' => '.mw-test-bar { content: "style"; }',
+                       )),
+                       'test.baz' => new ResourceLoaderTestModule(array(
+                               'script' => 'mw.test.baz( { a: true } );',
+                               'styles' => '.mw-test-baz { content: "style"; }',
+                       )),
+                       'test.quux' => new ResourceLoaderTestModule(array(
+                               'script' => 'mw.test.baz( { token: 123 } );',
+                               'styles' => '/* pref-animate=off */ .mw-icon { transition: none; }',
+                               'group' => 'private',
+                       )),
+               ) );
+               $links = $method->invokeArgs( $out, $args );
+               $this->assertEquals( $expectedHtml, $links['html'] );
+       }
 }
index f595d2d..cae0e52 100644 (file)
@@ -2,6 +2,7 @@
 
 /**
  * @group Database
+ * @group RequestContext
  */
 class RequestContextTest extends MediaWikiTestCase {
 
@@ -53,6 +54,11 @@ class RequestContextTest extends MediaWikiTestCase {
                                'USER-AGENT' => 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:18.0) Gecko/20100101 Firefox/18.0'
                        )
                );
+               // importScopedSession() sets these variables
+               $this->setMwGlobals( array(
+                       'wgUser' => new User,
+                       'wgRequest' => new FauxRequest,
+               ) );
                $sc = RequestContext::importScopedSession( $sinfo ); // load new context
 
                $info = $context->exportSession();
index 758c2e2..6fdc239 100644 (file)
@@ -16,6 +16,7 @@ class TestSample extends MediaWikiLangTestCase {
                $this->setMwGlobals( array(
                        'wgContLang' => Language::factory( 'en' ),
                        'wgLanguageCode' => 'en',
+                       'wgCapitalLinks' => true,
                ) );
        }
 
index ac80a9a..988a4a4 100644 (file)
@@ -41,6 +41,9 @@ class TitlePermissionTest extends MediaWikiLangTestCase {
                                NS_MEDIAWIKI => 'editinterface',
                        ),
                ) );
+               // Without this testUserBlock will use a non-English context on non-English MediaWiki
+               // installations (because of how Title::checkUserBlock is implemented) and fail.
+               RequestContext::resetMain();
 
                $this->userName = 'Useruser';
                $this->altUserName = 'Altuseruser';
index 1c7b662..6871582 100644 (file)
@@ -87,6 +87,7 @@ class TitleTest extends MediaWikiTestCase {
                        str_repeat( 'x', 252 ),
                        // interwiki prefix
                        'localtestiw: #anchor',
+                       'localtestiw:',
                        'localtestiw:foo',
                        'localtestiw: foo # anchor',
                        'localtestiw: Talk: Sandbox # anchor',
@@ -147,7 +148,6 @@ class TitleTest extends MediaWikiTestCase {
                        'Category: ',
                        'Category: #bar',
                        // interwiki prefix
-                       'localtestiw:',
                        'localtestiw: Talk: # anchor',
                        'localtestiw: Talk:'
                ) as $text ) {
index a19d035..36de114 100644 (file)
@@ -125,6 +125,31 @@ class UserTest extends MediaWikiTestCase {
                );
        }
 
+       /**
+        * @dataProvider provideIPs
+        * @covers User::isIP
+        */
+       public function testIsIP( $value, $result, $message ) {
+               $this->assertEquals( $this->user->isIP( $value ), $result, $message );
+       }
+
+       public static function provideIPs() {
+               return array(
+                       array( '', false, 'Empty string' ),
+                       array( ' ', false, 'Blank space' ),
+                       array( '10.0.0.0', true, 'IPv4 private 10/8' ),
+                       array( '10.255.255.255', true, 'IPv4 private 10/8' ),
+                       array( '192.168.1.1', true, 'IPv4 private 192.168/16' ),
+                       array( '203.0.113.0', true, 'IPv4 example' ),
+                       array( '2002:ffff:ffff:ffff:ffff:ffff:ffff:ffff', true, 'IPv6 example' ),
+                       // Not valid IPs but classified as such by MediaWiki for negated asserting
+                       // of whether this might be the identifier of a logged-out user or whether
+                       // to allow usernames like it.
+                       array( '300.300.300.300', true, 'Looks too much like an IPv4 address' ),
+                       array( '203.0.113.xxx', true, 'Assigned by UseMod to cloaked logged-out users' ),
+               );
+       }
+
        /**
         * @dataProvider provideUserNames
         * @covers User::isValidUserName
@@ -148,6 +173,9 @@ class UserTest extends MediaWikiTestCase {
                        array( 'Abcdകഖഗഘ', true, ' Mixed scripts' ),
                        array( 'ജോസ്‌തോമസ്', false, 'ZWNJ- Format control character' ),
                        array( 'Ab cd', false, ' Ideographic space' ),
+                       array( '300.300.300.300', false, 'Looks too much like an IPv4 address' ),
+                       array( '302.113.311.900', false, 'Looks too much like an IPv4 address' ),
+                       array( '203.0.113.xxx', false, 'Reserved for usage by UseMod for cloaked logged-out users' ),
                );
        }
 
@@ -157,7 +185,7 @@ class UserTest extends MediaWikiTestCase {
         * Extensions and core
         */
        public function testAllRightsWithMessage() {
-               //Getting all user rights, for core: User::$mCoreRights, for extensions: $wgAvailableRights
+               // Getting all user rights, for core: User::$mCoreRights, for extensions: $wgAvailableRights
                $allRights = User::getAllRights();
                $allMessageKeys = Language::getMessageKeysFor( 'en' );
 
index 78457d2..7f7945b 100644 (file)
@@ -499,6 +499,10 @@ class WikiPageTest extends MediaWikiLangTestCase {
         * @covers WikiPage::getRedirectTarget
         */
        public function testGetRedirectTarget( $title, $model, $text, $target ) {
+               $this->setMwGlobals( array(
+                       'wgCapitalLinks' => true,
+               ) );
+
                $page = $this->createPage( $title, $text, $model );
 
                # sanity check, because this test seems to fail for no reason for some people.
index e031ce3..5f955bb 100644 (file)
@@ -17,7 +17,7 @@ class ApiOptionsTest extends MediaWikiLangTestCase {
        /** @var DerivativeContext */
        private $mContext;
 
-       private $mOldGetPreferencesHooks = false;
+       private $mOldGetPreferencesHooks;
 
        private static $Success = array( 'options' => 'success' );
 
@@ -61,10 +61,8 @@ class ApiOptionsTest extends MediaWikiLangTestCase {
        protected function tearDown() {
                global $wgHooks;
 
-               if ( $this->mOldGetPreferencesHooks !== false ) {
-                       $wgHooks['GetPreferences'] = $this->mOldGetPreferencesHooks;
-                       $this->mOldGetPreferencesHooks = false;
-               }
+               $wgHooks['GetPreferences'] = $this->mOldGetPreferencesHooks;
+               $this->mOldGetPreferencesHooks = false;
 
                parent::tearDown();
        }
index ea0b323..7b686a3 100644 (file)
@@ -36,9 +36,12 @@ class ApiQueryTest extends ApiTestCase {
        }
 
        public function testTitlesGetNormalized() {
-
                global $wgMetaNamespace;
 
+               $this->setMwGlobals( array(
+                       'wgCapitalLinks' => true,
+               ) );
+
                $data = $this->doApiRequest( array(
                        'action' => 'query',
                        'titles' => 'Project:articleA|article_B' ) );
@@ -97,6 +100,10 @@ class ApiQueryTest extends ApiTestCase {
         * @dataProvider provideTestTitlePartToKey
         */
        function testTitlePartToKey( $titlePart, $namespace, $expected, $expectException ) {
+               $this->setMwGlobals( array(
+                       'wgCapitalLinks' => true,
+               ) );
+
                $api = new MockApiQueryBase();
                $exceptionCaught = false;
                try {
index 03cbbc0..2f81109 100644 (file)
@@ -31,6 +31,7 @@ class TextContentTest extends MediaWikiLangTestCase {
                        ),
                        'wgUseTidy' => false,
                        'wgAlwaysUseTidy' => false,
+                       'wgCapitalLinks' => true,
                ) );
 
                // bypass hooks that force custom rendering
index 91399be..e642177 100644 (file)
@@ -80,4 +80,62 @@ class MWDebugTest extends MediaWikiTestCase {
                        "Only one deprecated warning per function should be kept"
                );
        }
+
+       /**
+        * @covers MWDebug::appendDebugInfoToApiResult
+        */
+       public function testAppendDebugInfoToApiResultXmlFormat() {
+               $request = $this->newApiRequest(
+                       array( 'action' => 'help', 'format' => 'xml' ),
+                       '/api.php?action=help&format=xml'
+               );
+
+               $context = new RequestContext();
+               $context->setRequest( $request );
+
+               $apiMain = new ApiMain( $context );
+
+               $result = new ApiResult( $apiMain );
+               $result->setRawMode( true );
+
+               MWDebug::appendDebugInfoToApiResult( $context, $result );
+
+               $this->assertInstanceOf( 'ApiResult', $result );
+               $data = $result->getData();
+
+               $expectedKeys = array( 'mwVersion', 'phpVersion', 'gitRevision', 'gitBranch',
+                       'gitViewUrl', 'time', 'log', 'debugLog', 'queries', 'request', 'memory',
+                       'memoryPeak', 'includes', 'profile', '_element' );
+
+               foreach( $expectedKeys as $expectedKey ) {
+                       $this->assertArrayHasKey( $expectedKey, $data['debuginfo'], "debuginfo has $expectedKey" );
+               }
+
+               $xml = ApiFormatXml::recXmlPrint( 'help', $data );
+
+               // exception not thrown
+               $this->assertInternalType( 'string', $xml );
+       }
+
+       /**
+        * @param string[] $params
+        * @param string $requestUrl
+        *
+        * @return FauxRequest
+        */
+       private function newApiRequest( array $params, $requestUrl ) {
+               $request = $this->getMockBuilder( 'FauxRequest' )
+                       ->setMethods( array( 'getRequestURL' ) )
+                       ->setConstructorArgs( array(
+                               $params
+                       ) )
+                       ->getMock();
+
+               $request->expects( $this->any() )
+                       ->method( 'getRequestURL' )
+                       ->will( $this->returnValue( $requestUrl ) );
+
+               return $request;
+       }
+
 }
diff --git a/tests/phpunit/includes/filerepo/RepoGroupTest.php b/tests/phpunit/includes/filerepo/RepoGroupTest.php
new file mode 100644 (file)
index 0000000..2c52338
--- /dev/null
@@ -0,0 +1,57 @@
+<?php
+class RepoGroupTest extends MediaWikiTestCase {
+
+       function testHasForeignRepoNegative() {
+               $this->setMWGlobals( 'wgForeignFileRepos', array() );
+               RepoGroup::destroySingleton();
+               FileBackendGroup::destroySingleton();
+               $this->assertFalse( RepoGroup::singleton()->hasForeignRepos() );
+       }
+
+       function testHasForeignRepoPositive() {
+               $this->setUpForeignRepo();
+               $this->assertTrue( RepoGroup::singleton()->hasForeignRepos() );
+       }
+
+       function testForEachForeignRepo() {
+               $this->setUpForeignRepo();
+               $fakeCallback = $this->getMock( 'RepoGroupTestHelper' );
+               $fakeCallback->expects( $this->once() )->method( 'callback' );
+               RepoGroup::singleton()->forEachForeignRepo( array( $fakeCallback, 'callback' ), array( array() ) );
+       }
+
+       function testForEachForeignRepoNone() {
+               $this->setMWGlobals( 'wgForeignFileRepos', array() );
+               RepoGroup::destroySingleton();
+               FileBackendGroup::destroySingleton();
+               $fakeCallback = $this->getMock( 'RepoGroupTestHelper' );
+               $fakeCallback->expects( $this->never() )->method( 'callback' );
+               RepoGroup::singleton()->forEachForeignRepo( array( $fakeCallback, 'callback' ), array( array() ) );
+       }
+
+       private function setUpForeignRepo() {
+               global $wgUploadDirectory;
+               $this->setMWGlobals( 'wgForeignFileRepos', array( array(
+                       'class' => 'ForeignAPIRepo',
+                       'name' => 'wikimediacommons',
+                       'backend' => 'wikimediacommons-backend',
+                       'apibase' => 'https://commons.wikimedia.org/w/api.php',
+                       'hashLevels' => 2,
+                       'fetchDescription' => true,
+                       'descriptionCacheExpiry' => 43200,
+                       'apiThumbCacheExpiry' => 86400,
+                       'directory' => $wgUploadDirectory
+               ) ) );
+               RepoGroup::destroySingleton();
+               FileBackendGroup::destroySingleton();
+       }
+}
+
+/**
+ * Quick helper class to use as a mock callback for RepoGroup::singleton()->forEachForeignRepo.
+ */
+class RepoGroupTestHelper {
+       function callback( FileRepo $repo, array $foo ) {
+               return true;
+       }
+}
diff --git a/tests/phpunit/includes/filerepo/file/FileTest.php b/tests/phpunit/includes/filerepo/file/FileTest.php
new file mode 100644 (file)
index 0000000..9232ce4
--- /dev/null
@@ -0,0 +1,348 @@
+<?php
+
+class FileRepoFileTest extends MediaWikiMediaTestCase {
+       /**
+        * @dataProvider getThumbnailBucketProvider
+        * @covers File::getThumbnailBucket
+        */
+       public function testGetThumbnailBucket( $data ) {
+               $this->setMwGlobals( 'wgThumbnailBuckets', $data['buckets'] );
+               $this->setMwGlobals( 'wgThumbnailMinimumBucketDistance', $data['minimumBucketDistance'] );
+
+               $fileMock = $this->getMockBuilder( 'File' )
+                       ->setConstructorArgs( array( 'fileMock', false ) )
+                       ->setMethods( array( 'getWidth' ) )
+                       ->getMockForAbstractClass();
+
+               $fileMock->expects( $this->any() )->method( 'getWidth' )->will(
+                       $this->returnValue( $data['width'] ) );
+
+               $this->assertEquals(
+                       $data['expectedBucket'],
+                       $fileMock->getThumbnailBucket( $data['requestedWidth'] ),
+                       $data['message'] );
+       }
+
+       public function getThumbnailBucketProvider() {
+               $defaultBuckets = array( 256, 512, 1024, 2048, 4096 );
+
+               return array(
+                       array( array(
+                               'buckets' => $defaultBuckets,
+                               'minimumBucketDistance' => 0,
+                               'width' => 3000,
+                               'requestedWidth' => 120,
+                               'expectedBucket' => 256,
+                               'message' => 'Picking bucket bigger than requested size'
+                       ) ),
+                       array( array(
+                               'buckets' => $defaultBuckets,
+                               'minimumBucketDistance' => 0,
+                               'width' => 3000,
+                               'requestedWidth' => 300,
+                               'expectedBucket' => 512,
+                               'message' => 'Picking bucket bigger than requested size'
+                       ) ),
+                       array( array(
+                               'buckets' => $defaultBuckets,
+                               'minimumBucketDistance' => 0,
+                               'width' => 3000,
+                               'requestedWidth' => 1024,
+                               'expectedBucket' => 2048,
+                               'message' => 'Picking bucket bigger than requested size'
+                       ) ),
+                       array( array(
+                               'buckets' => $defaultBuckets,
+                               'minimumBucketDistance' => 0,
+                               'width' => 3000,
+                               'requestedWidth' => 2048,
+                               'expectedBucket' => false,
+                               'message' => 'Picking no bucket because none is bigger than the requested size'
+                       ) ),
+                       array( array(
+                               'buckets' => $defaultBuckets,
+                               'minimumBucketDistance' => 0,
+                               'width' => 3000,
+                               'requestedWidth' => 3500,
+                               'expectedBucket' => false,
+                               'message' => 'Picking no bucket because requested size is bigger than original'
+                       ) ),
+                       array( array(
+                               'buckets' => array( 1024 ),
+                               'minimumBucketDistance' => 0,
+                               'width' => 3000,
+                               'requestedWidth' => 1024,
+                               'expectedBucket' => false,
+                               'message' => 'Picking no bucket because requested size equals biggest bucket'
+                       ) ),
+                       array( array(
+                               'buckets' => null,
+                               'minimumBucketDistance' => 0,
+                               'width' => 3000,
+                               'requestedWidth' => 1024,
+                               'expectedBucket' => false,
+                               'message' => 'Picking no bucket because no buckets have been specified'
+                       ) ),
+                       array( array(
+                               'buckets' => array( 256, 512 ),
+                               'minimumBucketDistance' => 10,
+                               'width' => 3000,
+                               'requestedWidth' => 245,
+                               'expectedBucket' => 256,
+                               'message' => 'Requested width is distant enough from next bucket for it to be picked'
+                       ) ),
+                       array( array(
+                               'buckets' => array( 256, 512 ),
+                               'minimumBucketDistance' => 10,
+                               'width' => 3000,
+                               'requestedWidth' => 246,
+                               'expectedBucket' => 512,
+                               'message' => 'Requested width is too close to next bucket, picking next one'
+                       ) ),
+               );
+       }
+
+       /**
+        * @dataProvider getThumbnailSourceProvider
+        * @covers File::getThumbnailSource
+        */
+       public function testGetThumbnailSource( $data ) {
+               $backendMock = $this->getMockBuilder( 'FSFileBackend' )
+                       ->setConstructorArgs( array( array( 'name' => 'backendMock', 'wikiId' => wfWikiId() ) ) )
+                       ->getMock();
+
+               $repoMock = $this->getMockBuilder( 'FileRepo' )
+                       ->setConstructorArgs( array( array( 'name' => 'repoMock', 'backend' => $backendMock ) ) )
+                       ->setMethods( array( 'fileExists', 'getLocalReference' ) )
+                       ->getMock();
+
+               $fsFile = new FSFile( 'fsFilePath' );
+
+               $repoMock->expects( $this->any() )->method( 'fileExists' )->will(
+                       $this->returnValue( true ) );
+
+               $repoMock->expects( $this->any() )->method( 'getLocalReference' )->will(
+                       $this->returnValue( $fsFile ) );
+
+               $handlerMock = $this->getMock( 'BitmapHandler', array( 'supportsBucketing' ) );
+               $handlerMock->expects( $this->any() )->method( 'supportsBucketing' )->will(
+                       $this->returnValue( $data['supportsBucketing'] ) );
+
+               $fileMock = $this->getMockBuilder( 'File' )
+                       ->setConstructorArgs( array( 'fileMock', $repoMock ) )
+                       ->setMethods( array( 'getThumbnailBucket', 'getLocalRefPath', 'getHandler' ) )
+                       ->getMockForAbstractClass();
+
+               $fileMock->expects( $this->any() )->method( 'getThumbnailBucket' )->will(
+                       $this->returnValue( $data['thumbnailBucket'] ) );
+
+               $fileMock->expects( $this->any() )->method( 'getLocalRefPath' )->will(
+                       $this->returnValue( 'localRefPath' ) );
+
+               $fileMock->expects( $this->any() )->method( 'getHandler' )->will(
+                       $this->returnValue( $handlerMock ) );
+
+               $reflection = new ReflectionClass( $fileMock );
+               $reflection_property = $reflection->getProperty( 'handler' );
+               $reflection_property->setAccessible( true );
+               $reflection_property->setValue( $fileMock, $handlerMock );
+
+               if ( !is_null( $data['tmpBucketedThumbCache'] ) ) {
+                       $reflection_property = $reflection->getProperty( 'tmpBucketedThumbCache' );
+                       $reflection_property->setAccessible( true );
+                       $reflection_property->setValue( $fileMock, $data['tmpBucketedThumbCache'] );
+               }
+
+               $result = $fileMock->getThumbnailSource(
+                       array( 'physicalWidth' => $data['physicalWidth'] ) );
+
+               $this->assertEquals( $data['expectedPath'], $result['path'], $data['message'] );
+       }
+
+       public function getThumbnailSourceProvider() {
+               return array(
+                       array( array(
+                               'supportsBucketing' => true,
+                               'tmpBucketedThumbCache' => null,
+                               'thumbnailBucket' => 1024,
+                               'physicalWidth' => 2048,
+                               'expectedPath' => 'fsFilePath',
+                               'message' => 'Path downloaded from storage'
+                       ) ),
+                       array( array(
+                               'supportsBucketing' => true,
+                               'tmpBucketedThumbCache' => array( 1024 => '/tmp/shouldnotexist' + rand() ),
+                               'thumbnailBucket' => 1024,
+                               'physicalWidth' => 2048,
+                               'expectedPath' => 'fsFilePath',
+                               'message' => 'Path downloaded from storage because temp file is missing'
+                       ) ),
+                       array( array(
+                               'supportsBucketing' => true,
+                               'tmpBucketedThumbCache' => array( 1024 => '/tmp' ),
+                               'thumbnailBucket' => 1024,
+                               'physicalWidth' => 2048,
+                               'expectedPath' => '/tmp',
+                               'message' => 'Temporary path because temp file was found'
+                       ) ),
+                       array( array(
+                               'supportsBucketing' => false,
+                               'tmpBucketedThumbCache' => null,
+                               'thumbnailBucket' => 1024,
+                               'physicalWidth' => 2048,
+                               'expectedPath' => 'localRefPath',
+                               'message' => 'Original file path because bucketing is unsupported by handler'
+                       ) ),
+                       array( array(
+                               'supportsBucketing' => true,
+                               'tmpBucketedThumbCache' => null,
+                               'thumbnailBucket' => false,
+                               'physicalWidth' => 2048,
+                               'expectedPath' => 'localRefPath',
+                               'message' => 'Original file path because no width provided'
+                       ) ),
+               );
+       }
+
+       /**
+        * @dataProvider generateBucketsIfNeededProvider
+        * @covers File::generateBucketsIfNeeded
+        */
+       public function testGenerateBucketsIfNeeded( $data ) {
+               $this->setMwGlobals( 'wgThumbnailBuckets', $data['buckets'] );
+
+               $backendMock = $this->getMockBuilder( 'FSFileBackend' )
+                       ->setConstructorArgs( array( array( 'name' => 'backendMock', 'wikiId' => wfWikiId() ) ) )
+                       ->getMock();
+
+               $repoMock = $this->getMockBuilder( 'FileRepo' )
+                       ->setConstructorArgs( array( array( 'name' => 'repoMock', 'backend' => $backendMock ) ) )
+                       ->setMethods( array( 'fileExists', 'getLocalReference' ) )
+                       ->getMock();
+
+               $fileMock = $this->getMockBuilder( 'File' )
+                       ->setConstructorArgs( array( 'fileMock', $repoMock ) )
+                       ->setMethods( array( 'getWidth', 'getBucketThumbPath', 'makeTransformTmpFile', 'generateAndSaveThumb', 'getHandler' ) )
+                       ->getMockForAbstractClass();
+
+               $handlerMock = $this->getMock( 'JpegHandler', array( 'supportsBucketing' ) );
+               $handlerMock->expects( $this->any() )->method( 'supportsBucketing' )->will(
+                       $this->returnValue( true ) );
+
+               $fileMock->expects( $this->any() )->method( 'getHandler' )->will(
+                       $this->returnValue( $handlerMock ) );
+
+               $reflectionMethod = new ReflectionMethod( 'File', 'generateBucketsIfNeeded' );
+               $reflectionMethod->setAccessible( true );
+
+               $fileMock->expects( $this->any() )
+                       ->method( 'getWidth' )
+                       ->will( $this->returnValue( $data['width'] ) );
+
+               $fileMock->expects( $data['expectedGetBucketThumbPathCalls'] )
+                       ->method( 'getBucketThumbPath' );
+
+               $repoMock->expects( $data['expectedFileExistsCalls'] )
+                       ->method( 'fileExists' )
+                       ->will( $this->returnValue( $data['fileExistsReturn'] ) );
+
+               $fileMock->expects( $data['expectedMakeTransformTmpFile'] )
+                       ->method( 'makeTransformTmpFile' )
+                       ->will( $this->returnValue( $data['makeTransformTmpFileReturn'] ) );
+
+               $fileMock->expects( $data['expectedGenerateAndSaveThumb'] )
+                       ->method( 'generateAndSaveThumb' )
+                       ->will( $this->returnValue( $data['generateAndSaveThumbReturn'] ) );
+
+               $this->assertEquals( $data['expectedResult'],
+                       $reflectionMethod->invoke(
+                               $fileMock,
+                               array(
+                                       'physicalWidth' => $data['physicalWidth'],
+                                       'physicalHeight' => $data['physicalHeight'] )
+                               ),
+                               $data['message'] );
+       }
+
+       public function generateBucketsIfNeededProvider() {
+               $defaultBuckets = array( 256, 512, 1024, 2048, 4096 );
+
+               return array(
+                       array( array(
+                               'buckets' => $defaultBuckets,
+                               'width' => 256,
+                               'physicalWidth' => 256,
+                               'physicalHeight' => 100,
+                               'expectedGetBucketThumbPathCalls' => $this->never(),
+                               'expectedFileExistsCalls' => $this->never(),
+                               'fileExistsReturn' => null,
+                               'expectedMakeTransformTmpFile' => $this->never(),
+                               'makeTransformTmpFileReturn' => false,
+                               'expectedGenerateAndSaveThumb' => $this->never(),
+                               'generateAndSaveThumbReturn' => false,
+                               'expectedResult' => false,
+                               'message' => 'No bucket found, nothing to generate'
+                       ) ),
+                       array( array(
+                               'buckets' => $defaultBuckets,
+                               'width' => 5000,
+                               'physicalWidth' => 300,
+                               'physicalHeight' => 200,
+                               'expectedGetBucketThumbPathCalls' => $this->once(),
+                               'expectedFileExistsCalls' => $this->once(),
+                               'fileExistsReturn' => true,
+                               'expectedMakeTransformTmpFile' => $this->never(),
+                               'makeTransformTmpFileReturn' => false,
+                               'expectedGenerateAndSaveThumb' => $this->never(),
+                               'generateAndSaveThumbReturn' => false,
+                               'expectedResult' => false,
+                               'message' => 'File already exists, no reason to generate buckets'
+                       ) ),
+                       array( array(
+                               'buckets' => $defaultBuckets,
+                               'width' => 5000,
+                               'physicalWidth' => 300,
+                               'physicalHeight' => 200,
+                               'expectedGetBucketThumbPathCalls' => $this->once(),
+                               'expectedFileExistsCalls' => $this->once(),
+                               'fileExistsReturn' => false,
+                               'expectedMakeTransformTmpFile' => $this->once(),
+                               'makeTransformTmpFileReturn' => false,
+                               'expectedGenerateAndSaveThumb' => $this->never(),
+                               'generateAndSaveThumbReturn' => false,
+                               'expectedResult' => false,
+                               'message' => 'Cannot generate temp file for bucket'
+                       ) ),
+                       array( array(
+                               'buckets' => $defaultBuckets,
+                               'width' => 5000,
+                               'physicalWidth' => 300,
+                               'physicalHeight' => 200,
+                               'expectedGetBucketThumbPathCalls' => $this->once(),
+                               'expectedFileExistsCalls' => $this->once(),
+                               'fileExistsReturn' => false,
+                               'expectedMakeTransformTmpFile' => $this->once(),
+                               'makeTransformTmpFileReturn' => new TempFSFile( '/tmp/foo' ),
+                               'expectedGenerateAndSaveThumb' => $this->once(),
+                               'generateAndSaveThumbReturn' => false,
+                               'expectedResult' => false,
+                               'message' => 'Bucket image could not be generated'
+                       ) ),
+                       array( array(
+                               'buckets' => $defaultBuckets,
+                               'width' => 5000,
+                               'physicalWidth' => 300,
+                               'physicalHeight' => 200,
+                               'expectedGetBucketThumbPathCalls' => $this->once(),
+                               'expectedFileExistsCalls' => $this->once(),
+                               'fileExistsReturn' => false,
+                               'expectedMakeTransformTmpFile' => $this->once(),
+                               'makeTransformTmpFileReturn' => new TempFSFile( '/tmp/foo' ),
+                               'expectedGenerateAndSaveThumb' => $this->once(),
+                               'generateAndSaveThumbReturn' => new ThumbnailImage( false, 'bar', false, false ),
+                               'expectedResult' => true,
+                               'message' => 'Bucket image could not be generated'
+                       ) ),
+               );
+       }
+}
index bb5e398..2b4d60d 100644 (file)
@@ -291,6 +291,41 @@ class CSSMinTest extends MediaWikiTestCase {
                                '@import url(//localhost/styles.css?query=yes)',
                                '@import url(//localhost/styles.css?query=yes)',
                        ),
+                       array(
+                               'Simple case with comments before url',
+                               'foo { prop: /* some {funny;} comment */ url(bar.png); }',
+                               'foo { prop: /* some {funny;} comment */ url(http://localhost/w/bar.png); }',
+                       ),
+                       array(
+                               'Simple case with comments after url',
+                               'foo { prop: url(red.gif)/* some {funny;} comment */ ; }',
+                               'foo { prop: url(http://localhost/w/red.gif?timestamp)/* some {funny;} comment */ ; }',
+                       ),
+                       array(
+                               'Embedded file with comment before url',
+                               'foo { /* @embed */ background: /* some {funny;} comment */ url(red.gif); }',
+                               "foo { background: /* some {funny;} comment */ url($red); background: /* some {funny;} comment */ url(http://localhost/w/red.gif?timestamp)!ie; }",
+                       ),
+                       array(
+                               'Embedded file with comments inside and outside the rule',
+                               'foo { /* @embed */ background: url(red.gif) /* some {foo;} comment */; /* some {bar;} comment */ }',
+                               "foo { background: url($red) /* some {foo;} comment */; background: url(http://localhost/w/red.gif?timestamp) /* some {foo;} comment */!ie; /* some {bar;} comment */ }",
+                       ),
+                       array(
+                               'Embedded file with comment outside the rule',
+                               'foo { /* @embed */ background: url(red.gif); /* some {funny;} comment */ }',
+                               "foo { background: url($red); background: url(http://localhost/w/red.gif?timestamp)!ie; /* some {funny;} comment */ }",
+                       ),
+                       array(
+                               'Rule with two urls, each with comments',
+                               '{ background: /*asd*/ url(something.png); background: /*jkl*/ url(something.png); }',
+                               '{ background: /*asd*/ url(http://localhost/w/something.png); background: /*jkl*/ url(http://localhost/w/something.png); }',
+                       ),
+                       array(
+                               'Sanity check for offending line from jquery.ui.theme.css (bug 60077)',
+                               '.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3/*{borderColorDefault}*/; background: #e6e6e6/*{bgColorDefault}*/ url(images/ui-bg_glass_75_e6e6e6_1x400.png)/*{bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #555555/*{fcDefault}*/; }',
+                               '.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3/*{borderColorDefault}*/; background: #e6e6e6/*{bgColorDefault}*/ url(http://localhost/w/images/ui-bg_glass_75_e6e6e6_1x400.png)/*{bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #555555/*{fcDefault}*/; }',
+                       ),
                );
        }
 
index b99ef86..334d5b5 100644 (file)
@@ -14,7 +14,7 @@ class MWMessagePackTest extends MediaWikiTestCase {
         * serialization function.
         */
        public function provider() {
-               return array(
+               $tests = array(
                        array( 'nil', null, 'c0' ),
                        array( 'bool', true, 'c3' ),
                        array( 'bool', false, 'c2' ),
@@ -25,16 +25,12 @@ class MWMessagePackTest extends MediaWikiTestCase {
                        array( 'uint 8', 128, 'cc80' ),
                        array( 'uint 16', 1000, 'cd03e8' ),
                        array( 'uint 32', 100000, 'ce000186a0' ),
-                       array( 'uint 64', 10000000000, 'cf00000002540be400' ),
                        array( 'negative fixnum', -1, 'ff' ),
                        array( 'negative fixnum', -2, 'fe' ),
                        array( 'int 8', -128, 'd080' ),
                        array( 'int 8', -35, 'd0dd' ),
                        array( 'int 16', -1000, 'd1fc18' ),
                        array( 'int 32', -100000, 'd2fffe7960' ),
-                       array( 'int 64', -10000000000, 'd3fffffffdabf41c00' ),
-                       array( 'int 64', -223372036854775807, 'd3fce66c50e2840001' ),
-                       array( 'int 64', -9223372036854775807, 'd38000000000000001' ),
                        array( 'double', 0.1, 'cb3fb999999999999a' ),
                        array( 'double', 1.1, 'cb3ff199999999999a' ),
                        array( 'double', 123.456, 'cb405edd2f1a9fbe77' ),
@@ -56,6 +52,15 @@ class MWMessagePackTest extends MediaWikiTestCase {
                                '82a36f6e6501a374776f02'
                        ),
                );
+
+               if ( PHP_INT_SIZE > 4 ) {
+                       $tests[] = array( 'uint 64', 10000000000, 'cf00000002540be400' );
+                       $tests[] = array( 'int 64', -10000000000, 'd3fffffffdabf41c00' );
+                       $tests[] = array( 'int 64', -223372036854775807, 'd3fce66c50e2840001' );
+                       $tests[] = array( 'int 64', -9223372036854775807, 'd38000000000000001' );
+               }
+
+               return $tests;
        }
 
        /**
@@ -65,6 +70,6 @@ class MWMessagePackTest extends MediaWikiTestCase {
         */
        public function testPack( $type, $value, $expected ) {
                $actual = bin2hex( MWMessagePack::pack( $value ) );
-               $this->assertEquals( $actual, $expected, $type );
+               $this->assertEquals( $expected, $actual, $type );
        }
 }
index 96347d9..7b64dfd 100644 (file)
@@ -29,11 +29,18 @@ abstract class MediaWikiMediaTestCase extends MediaWikiTestCase {
                        'wikiId' => wfWikiId(),
                        'containerPaths' => $containers
                ) );
-               $this->repo = new FSRepo( array(
+               $this->repo = new FSRepo( $this->getRepoOptions() );
+       }
+
+       /**
+        * @return Array Argument for FSRepo constructor
+        */
+       protected function getRepoOptions() {
+               return array(
                        'name' => 'temp',
                        'url' => 'http://localhost/thumbtest',
                        'backend' => $this->backend
-               ) );
+               );
        }
 
        /**
diff --git a/tests/phpunit/includes/media/XCFTest.php b/tests/phpunit/includes/media/XCFTest.php
new file mode 100644 (file)
index 0000000..ae4fa8b
--- /dev/null
@@ -0,0 +1,74 @@
+<?php
+class XCFHandlerTest extends MediaWikiMediaTestCase {
+
+       /** @var XCFHandler */
+       protected $handler;
+
+       protected function setUp() {
+               parent::setUp();
+               $this->handler = new XCFHandler();
+       }
+
+
+       /**
+        * @param string $filename
+        * @param int $expectedWidth width
+        * @param int $expectedHeigh height
+        * @dataProvider provideGetImageSize
+        * @covers XCFHandler::getImageSize
+        */
+       public function testGetImageSize( $filename, $expectedWidth, $expectedHeight ) {
+               $file = $this->dataFile( $filename, 'image/x-xcf' );
+               $actual = $this->handler->getImageSize( $file, $file->getLocalRefPath() );
+               $this->assertEquals( $expectedWidth, $actual[0] );
+               $this->assertEquals( $expectedHeight, $actual[1] );
+       }
+
+       public static function provideGetImageSize() {
+               return array(
+                       array( '80x60-2layers.xcf', 80, 60 ),
+                       array( '80x60-RGB.xcf', 80, 60 ),
+                       array( '80x60-Greyscale.xcf', 80, 60 ),
+               );
+       }
+
+       /**
+        * @param string $metadata Serialized metadata
+        * @param int $expected One of the class constants of XCFHandler
+        * @dataProvider provideIsMetadataValid
+        * @covers XCFHandler::isMetadataValid
+        */
+       public function testIsMetadataValid( $metadata, $expected ) {
+               $actual = $this->handler->isMetadataValid( null, $metadata );
+               $this->assertEquals( $expected, $actual );
+       }
+
+       public static function provideIsMetadataValid() {
+               return array(
+                       array( '', XCFHandler::METADATA_BAD ),
+                       array( serialize( array( 'error' => true ) ), XCFHandler::METADATA_GOOD ),
+                       array( false, XCFHandler::METADATA_BAD ),
+                       array( serialize( array( 'colorType' => 'greyscale-alpha' ) ), XCFHandler::METADATA_GOOD ),
+               );
+       }
+
+       /**
+        * @param string $filename
+        * @param string $expected Serialized array
+        * @dataProvider provideGetMetadata
+        * @covers XCFHandler::getMetadata
+        */
+       public function testGetMetadata( $filename, $expected ) {
+               $file = $this->dataFile( $filename, 'image/png' );
+               $actual = $this->handler->getMetadata( $file, "$this->filePath/$filename" );
+               $this->assertEquals( $expected, $actual );
+       }
+
+       public static function provideGetMetadata() {
+               return array(
+                       array( '80x60-2layers.xcf', 'a:1:{s:9:"colorType";s:16:"truecolour-alpha";}' ),
+                       array( '80x60-RGB.xcf', 'a:1:{s:9:"colorType";s:16:"truecolour-alpha";}' ),
+                       array( '80x60-Greyscale.xcf', 'a:1:{s:9:"colorType";s:15:"greyscale-alpha";}' ),
+               );
+       }
+}
index dff31c1..97b76fe 100644 (file)
@@ -110,15 +110,20 @@ class CleanUpTest extends MediaWikiTestCase {
        }
 
        /** @todo document */
-       public function testAllBytes() {
-               $this->doTestBytes( '', '' );
-               $this->doTestBytes( 'x', '' );
-               $this->doTestBytes( '', 'x' );
-               $this->doTestBytes( 'x', 'x' );
+       public function provideAllBytes() {
+               return array(
+                       array( '', '' ),
+                       array( 'x', '' ),
+                       array( '', 'x' ),
+                       array( 'x', 'x' ),
+               );
        }
 
-       /** @todo document */
-       function doTestBytes( $head, $tail ) {
+       /**
+        * @dataProvider provideAllBytes
+        * @todo document
+        */
+       function testBytes( $head, $tail ) {
                for ( $i = 0x0; $i < 256; $i++ ) {
                        $char = $head . chr( $i ) . $tail;
                        $clean = UtfNormal::cleanUp( $char );
@@ -149,18 +154,11 @@ class CleanUpTest extends MediaWikiTestCase {
                }
        }
 
-       /** @todo document */
-       public function testDoubleBytes() {
-               $this->doTestDoubleBytes( '', '' );
-               $this->doTestDoubleBytes( 'x', '' );
-               $this->doTestDoubleBytes( '', 'x' );
-               $this->doTestDoubleBytes( 'x', 'x' );
-       }
-
        /**
+        * @dataProvider provideAllBytes
         * @todo document
         */
-       function doTestDoubleBytes( $head, $tail ) {
+       function testDoubleBytes( $head, $tail ) {
                for ( $first = 0xc0; $first < 0x100; $first += 2 ) {
                        for ( $second = 0x80; $second < 0x100; $second += 2 ) {
                                $char = $head . chr( $first ) . chr( $second ) . $tail;
@@ -202,16 +200,11 @@ class CleanUpTest extends MediaWikiTestCase {
                }
        }
 
-       /** @todo document */
-       public function testTripleBytes() {
-               $this->doTestTripleBytes( '', '' );
-               $this->doTestTripleBytes( 'x', '' );
-               $this->doTestTripleBytes( '', 'x' );
-               $this->doTestTripleBytes( 'x', 'x' );
-       }
-
-       /** @todo document */
-       function doTestTripleBytes( $head, $tail ) {
+       /**
+        * @dataProvider provideAllBytes
+        * @todo document
+        */
+       function testTripleBytes( $head, $tail ) {
                for ( $first = 0xc0; $first < 0x100; $first += 2 ) {
                        for ( $second = 0x80; $second < 0x100; $second += 2 ) {
                                #for( $third = 0x80; $third < 0x100; $third++ ) {
index b81c973..d36697e 100644 (file)
@@ -155,26 +155,6 @@ class MagicVariableTest extends MediaWikiTestCase {
                $this->assertUnPadded( 'revisionmonth1', $month );
        }
 
-       /**
-        * Rough tests for {{SERVERNAME}} magic word
-        * Bug 31176
-        * @group Database
-        * @dataProvider provideDataServernameFromDifferentProtocols
-        */
-       public function testServernameFromDifferentProtocols( $server ) {
-               $this->setMwGlobals( 'wgServer', $server );
-
-               $this->assertMagic( 'localhost', 'servername' );
-       }
-
-       public static function provideDataServernameFromDifferentProtocols() {
-               return array(
-                       array( 'http://localhost/' ),
-                       array( 'https://localhost/' ),
-                       array( '//localhost/' ), # bug 31176
-               );
-       }
-
        ############### HELPERS ############################################
 
        /** assertion helper expecting a magic output which is zero padded */
index 5c42fae..4c72d1c 100644 (file)
@@ -148,6 +148,10 @@ class NewParserTest extends MediaWikiTestCase {
                # proper precedence when resolving links. (bug 51680)
                $tmpGlobals['wgExtraNamespaces'] = array( 100 => 'MemoryAlpha' );
 
+               # "extra language links"
+               # see https://gerrit.wikimedia.org/r/111390
+               $tmpGlobals['wgExtraInterlanguageLinkPrefixes'] = array( 'mul' );
+
                //DjVu support
                $this->djVuSupport = new DjVuSupport();
 
index 15b8865..c3fd155 100644 (file)
 class MediaWikiSiteTest extends SiteTest {
 
        public function testNormalizePageTitle() {
+               $this->setMwGlobals( array(
+                       'wgCapitalLinks' => true,
+               ) );
+
                $site = new MediaWikiSite();
                $site->setGlobalId( 'enwiki' );
 
index ea2d28c..4f6c411 100644 (file)
@@ -51,7 +51,7 @@ class SpecialPreferencesTest extends MediaWikiTestCase {
                # Do the call, should not spurt a fatal error.
                $special = new SpecialPreferences();
                $special->setContext( $context );
-               $special->execute( array() );
+               $this->assertNull( $special->execute( array() ) );
        }
 
 }
index 73d7ff9..358b0fe 100644 (file)
  */
 class MediaWikiPageLinkRendererTest extends MediaWikiTestCase {
 
+       protected function setUp() {
+               parent::setUp();
+
+               $this->setMwGlobals( array(
+                       'wgContLang' => Language::factory( 'en' ),
+               ) );
+       }
+
        /**
         * Returns a mock GenderCache that will return "female" always.
         *
index 1e5aca9..2cf8663 100644 (file)
@@ -40,6 +40,7 @@ class MediaWikiTitleCodecTest extends MediaWikiTestCase {
                        'wgAllowUserJs' => false,
                        'wgDefaultLanguageVariant' => false,
                        'wgLocalInterwikis' => array( 'localtestiw' ),
+                       'wgCapitalLinks' => true,
 
                        // NOTE: this is why global state is evil.
                        // TODO: refactor access to the interwiki codes so it can be injected.
index 792cf72..f64fc72 100644 (file)
@@ -95,6 +95,16 @@ class LanguageRuTest extends LanguageClassesTestCase {
                                'Викитека',
                                'prepositional',
                        ),
+                       array(
+                               'Викисклада',
+                               'Викисклад',
+                               'genitive',
+                       ),
+                       array(
+                               'Викискладе',
+                               'Викисклад',
+                               'prepositional',
+                       ),
                        array(
                                'Викиданных',
                                'Викиданные',
index a4ef06d..ef670df 100644 (file)
@@ -573,11 +573,30 @@ class LanguageTest extends LanguageClassesTestCase {
         * @covers Language::sprintfDate
         */
        public function testSprintfDate( $format, $ts, $expected, $msg ) {
+               $ttl = null;
                $this->assertEquals(
                        $expected,
-                       $this->getLang()->sprintfDate( $format, $ts ),
+                       $this->getLang()->sprintfDate( $format, $ts, null, $ttl ),
                        "sprintfDate('$format', '$ts'): $msg"
                );
+               if ( $ttl ) {
+                       $dt = new DateTime( $ts );
+                       $lastValidTS = $dt->add( new DateInterval( 'PT' . ( $ttl - 1 ) . 'S' ) )->format( 'YmdHis' );
+                       $this->assertEquals(
+                               $expected,
+                               $this->getLang()->sprintfDate( $format, $lastValidTS, null ),
+                               "sprintfDate('$format', '$ts'): TTL $ttl too high (output was different at $lastValidTS)"
+                       );
+               } else {
+                       // advance the time enough to make all of the possible outputs different (except possibly L)
+                       $dt = new DateTime( $ts );
+                       $newTS = $dt->add( new DateInterval( 'P1Y1M8DT13H1M1S' ) )->format( 'YmdHis' );
+                       $this->assertEquals(
+                               $expected,
+                               $this->getLang()->sprintfDate( $format, $newTS, null ),
+                               "sprintfDate('$format', '$ts'): Missing TTL (output was different at $newTS)"
+                       );
+               }
        }
 
        /**
index ab9aab1..50e89da 100644 (file)
                                return true;
                        }
 
+                       // Don't iterate over the module registry (the 'script' references would
+                       // be listed as untested methods otherwise)
+                       if ( val === mw.loader.moduleRegistry ) {
+                               return true;
+                       }
+
                        return false;
                };
 
index df800bc..c6dd91c 100644 (file)
@@ -4,7 +4,6 @@
 
        var uacount = 0,
                // Object keyed by userAgent. Value is an array (human-readable name, client-profile object, navigator.platform value)
-               // Info based on results from http://toolserver.org/~krinkle/testswarm/job/174/
                uas = {
                        // Internet Explorer 6
                        // Internet Explorer 7
index 9ca434f..3bfabe4 100644 (file)
                                expected: 'доводах',
                                description: 'Grammar test for prepositional case, доводы -> доводах'
                        },
+                       {
+                               word: 'Викисклад',
+                               grammarForm: 'prepositional',
+                               expected: 'Викискладе',
+                               description: 'Grammar test for prepositional case, Викисклад -> Викискладе'
+                       },
+                       {
+                               word: 'Викисклад',
+                               grammarForm: 'genitive',
+                               expected: 'Викисклада',
+                               description: 'Grammar test for genitive case, Викисклад -> Викисклада'
+                       },
                        {
                                word: 'песчаник',
                                grammarForm: 'prepositional',
index d7bf453..c0042c2 100644 (file)
--- a/thumb.php
+++ b/thumb.php
@@ -367,7 +367,7 @@ function wfGenerateThumbnail( File $file, array $params, $thumbName, $thumbPath
        global $wgMemc, $wgAttemptFailureEpoch;
 
        $key = wfMemcKey( 'attempt-failures', $wgAttemptFailureEpoch,
-               $file->getRepo()->getName(), md5( $file->getName() ), md5( $thumbName ) );
+               $file->getRepo()->getName(), $file->getSha1(), md5( $thumbName ) );
 
        // Check if this file keeps failing to render
        if ( $wgMemc->get( $key ) >= 4 ) {
@@ -387,9 +387,17 @@ function wfGenerateThumbnail( File $file, array $params, $thumbName, $thumbPath
        $thumb = false;
        $errorHtml = false;
 
+       // guard thumbnail rendering with PoolCounter to avoid stampedes
+       // expensive files use a separate PoolCounter config so it is possible to set up a global limit on them
+       if ( $file->isExpensiveToThumbnail() ) {
+               $poolCounterType = 'FileRenderExpensive';
+       } else {
+               $poolCounterType = 'FileRender';
+       }
+
        // Thumbnail isn't already there, so create the new thumbnail...
        try {
-               $work = new PoolCounterWorkViaCallback( 'FileRender', sha1( $file->getName() ),
+               $work = new PoolCounterWorkViaCallback( $poolCounterType, sha1( $file->getName() ),
                        array(
                                'doWork' => function() use ( $file, $params ) {
                                        return $file->transform( $params, File::RENDER_NOW );