Merge "Rephrase tooltip-ca-nstab-special"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Sat, 5 Sep 2015 06:42:04 +0000 (06:42 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Sat, 5 Sep 2015 06:42:04 +0000 (06:42 +0000)
632 files changed:
.jscsrc
CREDITS
Gruntfile.js
RELEASE-NOTES-1.26
autoload.php
composer.json
docs/extension.schema.json
includes/DefaultSettings.php
includes/EditPage.php
includes/GlobalFunctions.php
includes/HttpFunctions.php
includes/MWNamespace.php
includes/MediaWiki.php
includes/Preferences.php
includes/PrefixSearch.php
includes/Sanitizer.php
includes/Setup.php
includes/Title.php
includes/User.php
includes/api/ApiFormatBase.php
includes/api/ApiFormatRaw.php
includes/api/ApiLogin.php
includes/api/ApiOptions.php
includes/api/ApiParse.php
includes/api/ApiResult.php
includes/api/i18n/es.json
includes/api/i18n/fr.json
includes/api/i18n/gl.json
includes/api/i18n/he.json
includes/api/i18n/it.json
includes/api/i18n/ja.json
includes/api/i18n/ko.json
includes/api/i18n/ksh.json
includes/api/i18n/lb.json
includes/api/i18n/pl.json
includes/api/i18n/pt-br.json
includes/api/i18n/pt.json
includes/api/i18n/qqq.json
includes/api/i18n/sq.json [new file with mode: 0644]
includes/api/i18n/uk.json
includes/api/i18n/vi.json
includes/api/i18n/zh-hans.json
includes/cache/BacklinkCache.php
includes/cache/MessageCache.php
includes/compat/IPSetCompat.php [new file with mode: 0644]
includes/content/CssContentHandler.php
includes/db/Database.php
includes/filebackend/SwiftFileBackend.php
includes/htmlform/HTMLButtonField.php
includes/htmlform/HTMLFormField.php
includes/htmlform/HTMLTextField.php
includes/installer/LocalSettingsGenerator.php
includes/installer/MysqlUpdater.php
includes/installer/i18n/de-ch.json
includes/installer/i18n/km.json
includes/installer/i18n/ko.json
includes/installer/i18n/nap.json
includes/installer/i18n/pt.json
includes/installer/i18n/sq.json
includes/installer/i18n/sr-ec.json
includes/installer/i18n/tokipona.json [new file with mode: 0644]
includes/jobqueue/JobRunner.php
includes/libs/IPSet.php [deleted file]
includes/libs/ReplacementArray.php
includes/libs/objectcache/WANObjectCache.php
includes/libs/virtualrest/ParsoidVirtualRESTService.php
includes/libs/virtualrest/RestbaseVirtualRESTService.php
includes/media/XMP.php
includes/objectcache/ObjectCache.php
includes/page/ImagePage.php
includes/page/WikiPage.php
includes/pager/TablePager.php
includes/parser/Parser.php
includes/parser/ParserOptions.php
includes/parser/ParserOutput.php
includes/parser/Preprocessor_Hash.php
includes/poolcounter/PoolCounterRedis.php
includes/poolcounter/PoolWorkArticleView.php
includes/registration/ExtensionProcessor.php
includes/registration/ExtensionRegistry.php
includes/resourceloader/ResourceLoader.php
includes/skins/SkinTemplate.php
includes/specials/SpecialComparePages.php
includes/specials/SpecialConfirmemail.php
includes/specials/SpecialEditWatchlist.php
includes/specials/SpecialMovepage.php
includes/specials/SpecialPreferences.php
includes/specials/SpecialVersion.php
includes/upload/UploadBase.php
includes/utils/IP.php
languages/Language.php
languages/i18n/ady-cyrl.json
languages/i18n/af.json
languages/i18n/ar.json
languages/i18n/arz.json
languages/i18n/as.json
languages/i18n/ast.json
languages/i18n/az.json
languages/i18n/bcl.json
languages/i18n/be-tarask.json
languages/i18n/bg.json
languages/i18n/bn.json
languages/i18n/bs.json
languages/i18n/ce.json
languages/i18n/cs.json
languages/i18n/cv.json
languages/i18n/de.json
languages/i18n/dty.json
languages/i18n/en.json
languages/i18n/eo.json
languages/i18n/es.json
languages/i18n/et.json
languages/i18n/eu.json
languages/i18n/fa.json
languages/i18n/fi.json
languages/i18n/fr.json
languages/i18n/frr.json
languages/i18n/gl.json
languages/i18n/gom-deva.json
languages/i18n/gom-latn.json
languages/i18n/gsw.json
languages/i18n/he.json
languages/i18n/ia.json
languages/i18n/ilo.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/kk-cyrl.json
languages/i18n/km.json
languages/i18n/ko.json
languages/i18n/ksh.json
languages/i18n/lad.json
languages/i18n/lb.json
languages/i18n/lrc.json
languages/i18n/lt.json
languages/i18n/lv.json
languages/i18n/lzh.json
languages/i18n/mk.json
languages/i18n/ml.json
languages/i18n/myv.json
languages/i18n/nap.json
languages/i18n/nl.json
languages/i18n/pl.json
languages/i18n/ps.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/roa-tara.json
languages/i18n/sah.json
languages/i18n/sl.json
languages/i18n/sq.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/sv.json
languages/i18n/tr.json
languages/i18n/tt-cyrl.json
languages/i18n/uk.json
languages/i18n/vec.json
languages/i18n/vi.json
languages/i18n/wo.json
languages/i18n/wuu.json
languages/i18n/yi.json
languages/i18n/zh-hans.json
languages/i18n/zh-tw.json
languages/messages/MessagesAce.php
languages/messages/MessagesAf.php
languages/messages/MessagesAln.php
languages/messages/MessagesAn.php
languages/messages/MessagesAr.php
languages/messages/MessagesArc.php
languages/messages/MessagesArz.php
languages/messages/MessagesAs.php
languages/messages/MessagesAv.php
languages/messages/MessagesAvk.php
languages/messages/MessagesBa.php
languages/messages/MessagesBcc.php
languages/messages/MessagesBe_tarask.php
languages/messages/MessagesBg.php
languages/messages/MessagesBgn.php
languages/messages/MessagesBjn.php
languages/messages/MessagesBr.php
languages/messages/MessagesBs.php
languages/messages/MessagesBxr.php
languages/messages/MessagesCa.php
languages/messages/MessagesCdo.php
languages/messages/MessagesCe.php
languages/messages/MessagesCkb.php
languages/messages/MessagesCs.php
languages/messages/MessagesDa.php
languages/messages/MessagesDe.php
languages/messages/MessagesDiq.php
languages/messages/MessagesDsb.php
languages/messages/MessagesEl.php
languages/messages/MessagesEn.php
languages/messages/MessagesEo.php
languages/messages/MessagesEs.php
languages/messages/MessagesEt.php
languages/messages/MessagesFa.php
languages/messages/MessagesFi.php
languages/messages/MessagesFr.php
languages/messages/MessagesFrp.php
languages/messages/MessagesFur.php
languages/messages/MessagesFy.php
languages/messages/MessagesGag.php
languages/messages/MessagesGl.php
languages/messages/MessagesGsw.php
languages/messages/MessagesGu.php
languages/messages/MessagesHe.php
languages/messages/MessagesHr.php
languages/messages/MessagesHsb.php
languages/messages/MessagesHt.php
languages/messages/MessagesHu.php
languages/messages/MessagesHy.php
languages/messages/MessagesIa.php
languages/messages/MessagesId.php
languages/messages/MessagesIe.php
languages/messages/MessagesIs.php
languages/messages/MessagesIt.php
languages/messages/MessagesJa.php
languages/messages/MessagesKa.php
languages/messages/MessagesKaa.php
languages/messages/MessagesKhw.php
languages/messages/MessagesKk_arab.php
languages/messages/MessagesKk_cyrl.php
languages/messages/MessagesKk_latn.php
languages/messages/MessagesKm.php
languages/messages/MessagesKo.php
languages/messages/MessagesKrc.php
languages/messages/MessagesKsh.php
languages/messages/MessagesKw.php
languages/messages/MessagesLa.php
languages/messages/MessagesLad.php
languages/messages/MessagesLb.php
languages/messages/MessagesLi.php
languages/messages/MessagesLij.php
languages/messages/MessagesLrc.php
languages/messages/MessagesLt.php
languages/messages/MessagesLv.php
languages/messages/MessagesMdf.php
languages/messages/MessagesMg.php
languages/messages/MessagesMin.php
languages/messages/MessagesMk.php
languages/messages/MessagesMl.php
languages/messages/MessagesMr.php
languages/messages/MessagesMs.php
languages/messages/MessagesMt.php
languages/messages/MessagesMyv.php
languages/messages/MessagesNb.php
languages/messages/MessagesNds.php
languages/messages/MessagesNds_nl.php
languages/messages/MessagesNl.php
languages/messages/MessagesNn.php
languages/messages/MessagesOc.php
languages/messages/MessagesOr.php
languages/messages/MessagesOs.php
languages/messages/MessagesPa.php
languages/messages/MessagesPl.php
languages/messages/MessagesPs.php
languages/messages/MessagesPt.php
languages/messages/MessagesPt_br.php
languages/messages/MessagesQu.php
languages/messages/MessagesRo.php
languages/messages/MessagesRu.php
languages/messages/MessagesRue.php
languages/messages/MessagesSa.php
languages/messages/MessagesScn.php
languages/messages/MessagesSd.php
languages/messages/MessagesSdc.php
languages/messages/MessagesSe.php
languages/messages/MessagesSh.php
languages/messages/MessagesSi.php
languages/messages/MessagesSk.php
languages/messages/MessagesSl.php
languages/messages/MessagesSq.php
languages/messages/MessagesSr_ec.php
languages/messages/MessagesSu.php
languages/messages/MessagesSv.php
languages/messages/MessagesSw.php
languages/messages/MessagesTe.php
languages/messages/MessagesTh.php
languages/messages/MessagesTl.php
languages/messages/MessagesTr.php
languages/messages/MessagesTt_cyrl.php
languages/messages/MessagesUk.php
languages/messages/MessagesUr.php
languages/messages/MessagesVec.php
languages/messages/MessagesVi.php
languages/messages/MessagesYi.php
languages/messages/MessagesYue.php
languages/messages/MessagesZh.php
languages/messages/MessagesZh_hans.php
languages/messages/MessagesZh_hant.php
maintenance/deleteEqualMessages.php
maintenance/getConfiguration.php
maintenance/jsduck/categories.json
maintenance/showJobs.php
maintenance/tables.sql
mw-config/config.js
package.json
phpcs.xml
resources/Resources.php
resources/ResourcesOOUI.php
resources/lib/oojs-ui/i18n/de.json
resources/lib/oojs-ui/i18n/en-ca.json [new file with mode: 0644]
resources/lib/oojs-ui/i18n/en.json
resources/lib/oojs-ui/i18n/fa.json
resources/lib/oojs-ui/i18n/fi.json
resources/lib/oojs-ui/i18n/glk.json [new file with mode: 0644]
resources/lib/oojs-ui/i18n/he.json
resources/lib/oojs-ui/i18n/mk.json
resources/lib/oojs-ui/i18n/nap.json
resources/lib/oojs-ui/i18n/pt.json
resources/lib/oojs-ui/i18n/qqq.json
resources/lib/oojs-ui/i18n/sv.json
resources/lib/oojs-ui/i18n/vi.json
resources/lib/oojs-ui/oojs-ui-apex-noimages.css
resources/lib/oojs-ui/oojs-ui-apex.js
resources/lib/oojs-ui/oojs-ui-mediawiki-noimages.css
resources/lib/oojs-ui/oojs-ui-mediawiki.js
resources/lib/oojs-ui/oojs-ui.js
resources/lib/oojs-ui/themes/apex/images/icons/advanced.png
resources/lib/oojs-ui/themes/apex/images/icons/advanced.svg
resources/lib/oojs-ui/themes/apex/images/icons/arched-arrow-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/bold-arab-ain.png
resources/lib/oojs-ui/themes/apex/images/icons/bold-arab-ain.svg
resources/lib/oojs-ui/themes/apex/images/icons/bold-arab-dad.png
resources/lib/oojs-ui/themes/apex/images/icons/bold-arab-dad.svg
resources/lib/oojs-ui/themes/apex/images/icons/bold-armn-to.png
resources/lib/oojs-ui/themes/apex/images/icons/bold-armn-to.svg
resources/lib/oojs-ui/themes/apex/images/icons/bold-cyrl-be.svg
resources/lib/oojs-ui/themes/apex/images/icons/bold-cyrl-zhe.svg
resources/lib/oojs-ui/themes/apex/images/icons/bold-g.png
resources/lib/oojs-ui/themes/apex/images/icons/bold-g.svg
resources/lib/oojs-ui/themes/apex/images/icons/case-sensitive.png
resources/lib/oojs-ui/themes/apex/images/icons/case-sensitive.svg
resources/lib/oojs-ui/themes/apex/images/icons/close.png
resources/lib/oojs-ui/themes/apex/images/icons/close.svg
resources/lib/oojs-ui/themes/apex/images/icons/code.png
resources/lib/oojs-ui/themes/apex/images/icons/code.svg
resources/lib/oojs-ui/themes/apex/images/icons/external-link-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/external-link-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/external-link-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/external-link-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/find-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/find-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/find-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/find-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/help-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/help-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/history.svg
resources/lib/oojs-ui/themes/apex/images/icons/info.svg
resources/lib/oojs-ui/themes/apex/images/icons/italic-arab-keheh-jeem.png
resources/lib/oojs-ui/themes/apex/images/icons/italic-arab-keheh-jeem.svg
resources/lib/oojs-ui/themes/apex/images/icons/italic-arab-meem.png
resources/lib/oojs-ui/themes/apex/images/icons/italic-arab-meem.svg
resources/lib/oojs-ui/themes/apex/images/icons/italic-armn-sha.png
resources/lib/oojs-ui/themes/apex/images/icons/italic-armn-sha.svg
resources/lib/oojs-ui/themes/apex/images/icons/italic-c.png
resources/lib/oojs-ui/themes/apex/images/icons/italic-c.svg
resources/lib/oojs-ui/themes/apex/images/icons/italic-d.svg
resources/lib/oojs-ui/themes/apex/images/icons/italic-geor-kan.png
resources/lib/oojs-ui/themes/apex/images/icons/italic-geor-kan.svg
resources/lib/oojs-ui/themes/apex/images/icons/italic-s.png
resources/lib/oojs-ui/themes/apex/images/icons/italic-s.svg
resources/lib/oojs-ui/themes/apex/images/icons/language.png
resources/lib/oojs-ui/themes/apex/images/icons/language.svg
resources/lib/oojs-ui/themes/apex/images/icons/link.svg
resources/lib/oojs-ui/themes/apex/images/icons/lock.svg
resources/lib/oojs-ui/themes/apex/images/icons/move-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/notice.svg
resources/lib/oojs-ui/themes/apex/images/icons/regular-expression.png
resources/lib/oojs-ui/themes/apex/images/icons/regular-expression.svg
resources/lib/oojs-ui/themes/apex/images/icons/search.svg
resources/lib/oojs-ui/themes/apex/images/icons/secure-link.svg
resources/lib/oojs-ui/themes/apex/images/icons/settings.svg
resources/lib/oojs-ui/themes/apex/images/icons/specialCharacter.png
resources/lib/oojs-ui/themes/apex/images/icons/specialCharacter.svg
resources/lib/oojs-ui/themes/apex/images/icons/strikethrough-s.svg
resources/lib/oojs-ui/themes/apex/images/icons/tag.svg
resources/lib/oojs-ui/themes/apex/images/icons/text-style.svg
resources/lib/oojs-ui/themes/apex/images/icons/unLock-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/unLock-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/underline-u.svg
resources/lib/oojs-ui/themes/apex/images/indicators/alert.svg
resources/lib/oojs-ui/themes/apex/images/indicators/arrow-ltr.svg
resources/lib/oojs-ui/themes/apex/images/indicators/arrow-rtl.svg
resources/lib/oojs-ui/themes/apex/images/indicators/clear.svg
resources/lib/oojs-ui/themes/apex/images/indicators/required.svg
resources/lib/oojs-ui/themes/apex/images/indicators/search-ltr.png
resources/lib/oojs-ui/themes/apex/images/indicators/search-ltr.svg
resources/lib/oojs-ui/themes/apex/images/indicators/search-rtl.png
resources/lib/oojs-ui/themes/apex/images/indicators/search-rtl.svg
resources/lib/oojs-ui/themes/apex/images/textures/transparency.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-be-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-be.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/close-ltr-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/close-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/close-ltr.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/close-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/close-rtl-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/close-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/close-rtl.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/close-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/code-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/code-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/code.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/code.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/help-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/help-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/help-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/help-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/history-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/history.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/language-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/language-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/language.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/language.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/menu-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/menu-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/menu.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/menu.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/notice-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/notice.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-constructive.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-destructive.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-progressive.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-warning.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/tag.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/text-style-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/text-style.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-u-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-u.svg
resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert.svg
resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down.png
resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down.svg
resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-up-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-up.svg
resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear.svg
resources/lib/oojs-ui/themes/mediawiki/images/indicators/required-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/indicators/required.svg
resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr.png
resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl.png
resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/textures/transparency.svg
resources/src/jquery/jquery.byteLimit.js
resources/src/jquery/jquery.color.js
resources/src/jquery/jquery.colorUtil.js
resources/src/jquery/jquery.placeholder.js
resources/src/jquery/jquery.qunit.completenessTest.js
resources/src/jquery/jquery.tablesorter.js
resources/src/mediawiki.action/images/checker.png [new file with mode: 0644]
resources/src/mediawiki.action/mediawiki.action.view.filepage.css [new file with mode: 0644]
resources/src/mediawiki.action/mediawiki.action.view.filepage.print.css [new file with mode: 0644]
resources/src/mediawiki.action/mediawiki.action.view.metadata.css
resources/src/mediawiki.action/mediawiki.action.view.postEdit.js
resources/src/mediawiki.api/mediawiki.ForeignApi.js
resources/src/mediawiki.api/mediawiki.api.upload.js
resources/src/mediawiki.language/languages/la.js
resources/src/mediawiki.language/languages/uk.js
resources/src/mediawiki.language/mediawiki.language.numbers.js
resources/src/mediawiki.legacy/commonPrint.css
resources/src/mediawiki.legacy/images/checker.png [deleted file]
resources/src/mediawiki.legacy/oldshared.css
resources/src/mediawiki.legacy/shared.css
resources/src/mediawiki.legacy/wikibits.js
resources/src/mediawiki.page/mediawiki.page.gallery.css [new file with mode: 0644]
resources/src/mediawiki.page/mediawiki.page.gallery.print.css [new file with mode: 0644]
resources/src/mediawiki.page/mediawiki.page.image.pagination.js
resources/src/mediawiki.special/mediawiki.special.changeslist.enhanced.css
resources/src/mediawiki.special/mediawiki.special.preferences.css
resources/src/mediawiki.special/mediawiki.special.preferences.js
resources/src/mediawiki.special/mediawiki.special.upload.js
resources/src/mediawiki.special/templates/thumbnail.html
resources/src/mediawiki.widgets/mw.widgets.TitleInputWidget.js
resources/src/mediawiki/mediawiki.ForeignStructuredUpload.js [new file with mode: 0644]
resources/src/mediawiki/mediawiki.ForeignUpload.js [new file with mode: 0644]
resources/src/mediawiki/mediawiki.Title.js
resources/src/mediawiki/mediawiki.Upload.js
resources/src/mediawiki/mediawiki.Uri.js
resources/src/mediawiki/mediawiki.Uri.loose.regexp [new file with mode: 0644]
resources/src/mediawiki/mediawiki.Uri.strict.regexp [new file with mode: 0644]
resources/src/mediawiki/mediawiki.experiments.js [new file with mode: 0644]
resources/src/mediawiki/mediawiki.js
resources/src/mediawiki/mediawiki.searchSuggest.js
resources/src/mediawiki/mediawiki.startUp.js [deleted file]
resources/src/mediawiki/mediawiki.template.regexp.js [new file with mode: 0644]
resources/src/startup.js
tests/parser/parserTests.txt
tests/phpunit/Makefile
tests/phpunit/data/less/common/test.common.mixins.less
tests/phpunit/data/less/module/styles.css
tests/phpunit/includes/GlobalFunctions/wfArrayPlus2dTest.php [new file with mode: 0644]
tests/phpunit/includes/OutputPageTest.php
tests/phpunit/includes/api/ApiResultTest.php
tests/phpunit/includes/debug/logger/monolog/LineFormatterTest.php
tests/phpunit/includes/filerepo/MigrateFileRepoLayoutTest.php
tests/phpunit/includes/libs/IEUrlExtensionTest.php
tests/phpunit/includes/libs/IPSetTest.php [deleted file]
tests/phpunit/includes/registration/ExtensionProcessorTest.php
tests/phpunit/includes/resourceloader/ResourceLoaderTest.php
tests/phpunit/includes/upload/UploadStashTest.php
tests/phpunit/languages/LanguageTest.php
tests/qunit/QUnitTestResources.php
tests/qunit/data/testrunner.js
tests/qunit/suites/resources/jquery/jquery.mwExtension.test.js
tests/qunit/suites/resources/jquery/jquery.placeholder.test.js
tests/qunit/suites/resources/jquery/jquery.tablesorter.parsers.test.js
tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.ForeignStructuredUpload.test.js [new file with mode: 0644]
tests/qunit/suites/resources/mediawiki/mediawiki.ForeignUpload.test.js [new file with mode: 0644]
tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.errorLogger.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.experiments.test.js [new file with mode: 0644]
tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.jscompat.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.test.js
thumb.php

diff --git a/.jscsrc b/.jscsrc
index 6a3c564..35465ea 100644 (file)
--- a/.jscsrc
+++ b/.jscsrc
@@ -2,8 +2,12 @@
        "preset": "wikimedia",
 
        "disallowQuotedKeysInObjects": null,
-       "requireSpacesInsideParentheses": null,
        "requireSpacesInsideArrayBrackets": null,
+       "requireVarDeclFirst": null,
+       "requireSpacesInsideBrackets": null,
+       "jsDoc": null,
+
+       "requireDotNotation": { "allExcept": [ "keywords" ] },
 
        "excludeFiles": [
                "docs/**",
diff --git a/CREDITS b/CREDITS
index 5362286..44adc4f 100644 (file)
--- a/CREDITS
+++ b/CREDITS
@@ -230,6 +230,7 @@ following names for their contribution to the product.
 * Simon Walker
 * Solitarius
 * Søren Løvborg
+* Southparkfan
 * Srikanth Lakshmanan
 * Stefano Codari
 * Str4nd
index e1e5e4a..4d713f2 100644 (file)
@@ -87,7 +87,7 @@ module.exports = function ( grunt ) {
                }
                if ( !process.env.MW_SCRIPT_PATH ) {
                        grunt.log.error( 'Environment variable MW_SCRIPT_PATH must be set.\n' +
-                               'Set this like $wgScriptPath, e.g. "/w"');
+                               'Set this like $wgScriptPath, e.g. "/w"' );
                }
                return !!( process.env.MW_SERVER && process.env.MW_SCRIPT_PATH );
        } );
index 2774a27..ff7f884 100644 (file)
@@ -25,6 +25,10 @@ production.
 * $wgResourceLoaderExperimentalAsyncLoading was deprecated and removed.
   This experimental feature was never enabled by default and is obsolete as of
   MediaWiki 1.26, in where ResourceLoader became fully asynchronous.
+* $wgMasterWaitTimeout was removed (deprecated in 1.24).
+* Fields in ParserOptions are now private. Use the accessors instead.
+* Custom LESS functions (defined via $wgResourceLoaderLESSFunctions)
+  have been removed, after being deprecated in 1.24.
 
 === New features in 1.26 ===
 * (T51506) Now action=info gives estimates of actual watchers for a page.
@@ -64,6 +68,10 @@ production.
   for potentially slow POST requests that need to be as atomic as possible.
 * ResourceLoader now loads all scripts asynchronously. The top-queue and
   startup modules are no longer synchronously loaded.
+* 'mediawiki.ui.button' styles are no longer unconditionally loaded on every
+  page. During the deprecation period, the styles will only be loaded on pages
+  which contain 'mw-ui-button' in their HTML. Starting in 1.28, the styles will
+  only be loaded if explicitly required.
 
 ==== External libraries ====
 * Update es5-shim from v4.0.0 to v4.1.5.
@@ -77,6 +85,8 @@ production.
 * (T53283) load.php sometimes sends 304 response without full headers
 * (T65198) Talk page tabs now have a "rel=discussion" attribute
 * (T98841) {{msgnw:}} now preserves comments even when subst: is not used.
+* (T104142) $wgEmergencyContact and $wgPasswordSender now use their default
+  value if set to an empty string.
 
 === Action API changes in 1.26 ===
 * New-style continuation is now the default for action=continue. Clients may
@@ -97,6 +107,8 @@ production.
   information about the relevant block.
 
 === Action API internal changes in 1.26 ===
+* New metadata item ApiResult::META_KVP_MERGE to allow for merging the KVP key
+  into the value when the value is an assoc.
 
 === Languages updated in 1.26 ===
 
index 6bc7238..82a45b4 100644 (file)
@@ -543,7 +543,7 @@ $wgAutoloadLocalClasses = array(
        'IORMRow' => __DIR__ . '/includes/db/IORMRow.php',
        'IORMTable' => __DIR__ . '/includes/db/IORMTable.php',
        'IP' => __DIR__ . '/includes/utils/IP.php',
-       'IPSet' => __DIR__ . '/includes/libs/IPSet.php',
+       'IPSet' => __DIR__ . '/includes/compat/IPSetCompat.php',
        'IPTC' => __DIR__ . '/includes/media/IPTC.php',
        'IRCColourfulRCFeedFormatter' => __DIR__ . '/includes/rcfeed/IRCColourfulRCFeedFormatter.php',
        'IcuCollation' => __DIR__ . '/includes/Collation.php',
index 1eb85fd..fcf0464 100644 (file)
                "leafo/lessphp": "0.5.0",
                "liuggio/statsd-php-client": "1.0.16",
                "mediawiki/at-ease": "1.0.0",
-               "oojs/oojs-ui": "0.12.6",
+               "oojs/oojs-ui": "0.12.7",
                "php": ">=5.3.3",
                "psr/log": "1.0.0",
-               "wikimedia/cdb": "1.0.1",
                "wikimedia/assert": "0.2.2",
+               "wikimedia/cdb": "1.0.1",
                "wikimedia/composer-merge-plugin": "1.2.1",
-               "wikimedia/utfnormal": "1.0.2",
+               "wikimedia/ip-set": "1.0.1",
+               "wikimedia/utfnormal": "1.0.3",
                "wikimedia/wrappedstring": "2.0.0",
                "zordius/lightncandy": "0.21"
        },
index 1d78ecc..d11635d 100644 (file)
                        "type": "object",
                        "description": "ResourceLoader LESS variables"
                },
-               "ResourceLoaderLESSFunctions": {
-                       "type": "object",
-                       "description": "ResourceLoader LESS functions"
-               },
                "ResourceLoaderLESSImportPaths": {
                        "type": "object",
                        "description": "ResourceLoader import paths"
                "config": {
                        "type": "object",
                        "description": "Configuration options for this extension",
+                       "properties": {
+                               "_prefix": {
+                                       "type": "string",
+                                       "default": "wg",
+                                       "description": "Prefix to put in front of configuration settings when exporting them to $GLOBALS"
+                               }
+                       },
                        "patternProperties": {
                                "^[a-zA-Z_\u007f-\u00ff][a-zA-Z0-9_\u007f-\u00ff]*$": {
                                        "type": ["object", "array", "string", "integer", "null", "boolean"],
index f1e8f44..06cd55a 100644 (file)
@@ -211,7 +211,7 @@ $wgLoadScript = false;
 
 /**
  * The URL path of the skins directory.
- * Defaults to "{$wgScriptPath}/skins".
+ * Defaults to "{$wgResourceBasePath}/skins".
  * @since 1.3
  */
 $wgStylePath = false;
@@ -226,7 +226,7 @@ $wgLocalStylePath = false;
 
 /**
  * The URL path of the extensions directory.
- * Defaults to "{$wgScriptPath}/extensions".
+ * Defaults to "{$wgResourceBasePath}/extensions".
  * @since 1.16
  */
 $wgExtensionAssetsPath = false;
@@ -1860,12 +1860,6 @@ $wgDBservers = false;
  */
 $wgLBFactoryConf = array( 'class' => 'LBFactorySimple' );
 
-/**
- * How long to wait for a slave to catch up to the master
- * @deprecated since 1.24
- */
-$wgMasterWaitTimeout = 10;
-
 /**
  * File to log database errors to
  */
@@ -3479,8 +3473,8 @@ $wgResourceModuleSkinStyles = array();
 $wgResourceLoaderSources = array();
 
 /**
- * Default 'remoteBasePath' value for instances of ResourceLoaderFileModule.
- * If not set, then $wgScriptPath will be used as a fallback.
+ * The default 'remoteBasePath' value for instances of ResourceLoaderFileModule.
+ * Defaults to $wgScriptPath.
  */
 $wgResourceBasePath = null;
 
@@ -3642,18 +3636,6 @@ $wgResourceLoaderValidateStaticJS = false;
  */
 $wgResourceLoaderLESSVars = array();
 
-/**
- * Custom LESS functions. An associative array mapping function name to PHP
- * callable.
- *
- * Changes to LESS functions do not trigger cache invalidation.
- *
- * @since 1.22
- * @deprecated since 1.24 Questionable usefulness and problematic to support,
- *     will be removed in the future.
- */
-$wgResourceLoaderLESSFunctions = array();
-
 /**
  * Default import paths for LESS modules. LESS files referenced in @import
  * statements will be looked up here first, and relative to the importing file
@@ -3726,8 +3708,8 @@ $wgMetaNamespaceTalk = false;
  * Additional namespaces. If the namespaces defined in Language.php and
  * Namespace.php are insufficient, you can create new ones here, for example,
  * to import Help files in other languages. You can also override the namespace
- * names of existing namespaces. Extensions developers should use
- * $wgCanonicalNamespaceNames.
+ * names of existing namespaces. Extensions should use the CanonicalNamespaces
+ * hook or extension.json.
  *
  * @warning Once you delete a namespace, the pages in that namespace will
  * no longer be accessible. If you rename it, then you can access them through
@@ -7699,6 +7681,7 @@ $wgUseLinkNamespaceDBFields = true;
  *   $wgVirtualRestConfig['modules']['parsoid'] = array(
  *     'url' => 'http://localhost:8000',
  *     'prefix' => 'enwiki',
+ *     'domain' => 'en.wikipedia.org',
  *   );
  *
  * @var array
@@ -7709,6 +7692,7 @@ $wgVirtualRestConfig = array(
        'global' => array(
                # Timeout in seconds
                'timeout' => 360,
+               # 'domain' is set to $wgCanonicalServer in Setup.php
                'forwardCookies' => false,
                'HTTPProxy' => null
        )
index f3a41c4..05e0ac0 100644 (file)
@@ -527,7 +527,10 @@ class EditPage {
                if ( $permErrors ) {
                        wfDebug( __METHOD__ . ": User can't edit\n" );
                        // Auto-block user's IP if the account was "hard" blocked
-                       $wgUser->spreadAnyEditBlock();
+                       $user = $wgUser;
+                       DeferredUpdates::addCallableUpdate( function() use ( $user ) {
+                               $user->spreadAnyEditBlock();
+                       } );
 
                        $this->displayPermissionsError( $permErrors );
 
@@ -652,6 +655,9 @@ class EditPage {
                        $this->getContextTitle()->getPrefixedText()
                ) );
                $wgOut->addBacklinkSubtitle( $this->getContextTitle() );
+               $wgOut->addHTML( $this->editFormPageTop );
+               $wgOut->addHTML( $this->editFormTextTop );
+
                $wgOut->addWikiText( $wgOut->formatPermissionsErrorMessage( $permErrors, 'edit' ) );
                $wgOut->addHTML( "<hr />\n" );
 
@@ -665,13 +671,16 @@ class EditPage {
                        $wgOut->addWikiMsg( 'viewsourcetext' );
                }
 
+               $wgOut->addHTML( $this->editFormTextBeforeContent );
                $this->showTextbox( $text, 'wpTextbox1', array( 'readonly' ) );
+               $wgOut->addHTML( $this->editFormTextAfterContent );
 
                $wgOut->addHTML( Html::rawElement( 'div', array( 'class' => 'templatesUsed' ),
                        Linker::formatTemplates( $this->getTemplates() ) ) );
 
                $wgOut->addModules( 'mediawiki.action.edit.collapsibleFooter' );
 
+               $wgOut->addHTML( $this->editFormTextBottom );
                if ( $this->mTitle->exists() ) {
                        $wgOut->returnToMain( null, $this->mTitle );
                }
index 9d89633..b853d07 100644 (file)
@@ -4273,3 +4273,28 @@ function wfThumbIsStandard( File $file, array $params ) {
 
        return true;
 }
+
+/**
+ * Merges two (possibly) 2 dimensional arrays into the target array ($baseArray).
+ *
+ * Values that exist in both values will be combined with += (all values of the array
+ * of $newValues will be added to the values of the array of $baseArray, while values,
+ * that exists in both, the value of $baseArray will be used).
+ *
+ * @param array $baseArray The array where you want to add the values of $newValues to
+ * @param array $newValues An array with new values
+ * @return array The combined array
+ * @since 1.26
+ */
+function wfArrayPlus2d( array $baseArray, array $newValues ) {
+       // First merge items that are in both arrays
+       foreach ( $baseArray as $name => &$groupVal ) {
+               if ( isset( $newValues[$name] ) ) {
+                       $groupVal += $newValues[$name];
+               }
+       }
+       // Now add items that didn't exist yet
+       $baseArray += $newValues;
+
+       return $baseArray;
+}
index fec8adc..1c79485 100644 (file)
@@ -917,7 +917,13 @@ class PhpHttpRequest extends MWHttpRequest {
                }
 
                if ( $this->sslVerifyHost ) {
-                       $options['ssl']['CN_match'] = $this->parsedUrl['host'];
+                       // PHP 5.6.0 deprecates CN_match, in favour of peer_name which
+                       // actually checks SubjectAltName properly.
+                       if ( version_compare( PHP_VERSION, '5.6.0', '>=' ) ) {
+                               $options['ssl']['peer_name'] = $this->parsedUrl['host'];
+                       } else {
+                               $options['ssl']['CN_match'] = $this->parsedUrl['host'];
+                       }
                }
 
                if ( is_dir( $this->caInfo ) ) {
@@ -948,6 +954,19 @@ class PhpHttpRequest extends MWHttpRequest {
                        MediaWiki\restoreWarnings();
 
                        if ( !$fh ) {
+                               // HACK for instant commons.
+                               // If we are contacting (commons|upload).wikimedia.org
+                               // try again with CN_match for en.wikipedia.org
+                               // as php does not handle SubjectAltName properly
+                               // prior to "peer_name" option in php 5.6
+                               if ( isset( $options['ssl']['CN_match'] )
+                                       && ( $options['ssl']['CN_match'] === 'commons.wikimedia.org'
+                                               || $options['ssl']['CN_match'] === 'upload.wikimedia.org' )
+                               ) {
+                                       $options['ssl']['CN_match'] = 'en.wikipedia.org';
+                                       $context = stream_context_create( $options );
+                                       continue;
+                               }
                                break;
                        }
 
index 731b62e..8ca205a 100644 (file)
@@ -210,6 +210,8 @@ class MWNamespace {
                if ( $namespaces === null || $rebuild ) {
                        global $wgExtraNamespaces, $wgCanonicalNamespaceNames;
                        $namespaces = array( NS_MAIN => '' ) + $wgCanonicalNamespaceNames;
+                       // Add extension namespaces
+                       $namespaces += ExtensionRegistry::getInstance()->getAttribute( 'ExtensionNamespaces' );
                        if ( is_array( $wgExtraNamespaces ) ) {
                                $namespaces += $wgExtraNamespaces;
                        }
index e9946a8..fbacb25 100644 (file)
@@ -283,9 +283,11 @@ class MediaWiki {
         *   /w/index.php?title=Foo_Bar -> /wiki/Foo_Bar
         * - Don't redirect anything with query parameters other than 'title' or 'action=view'.
         *
+        * @param Title $title
         * @return bool True if a redirect was set.
+        * @throws HttpError
         */
-       private function tryNormaliseRedirect( $title ) {
+       private function tryNormaliseRedirect( Title $title ) {
                $request = $this->context->getRequest();
                $output = $this->context->getOutput();
 
@@ -508,29 +510,26 @@ class MediaWiki {
         * This function does work that can be done *after* the
         * user gets the HTTP response so they don't block on it
         *
+        * This manages deferred updates, job insertion,
+        * final commit, and the logging of profiling data
+        *
         * @param string $mode Use 'fast' to always skip job running
         * @since 1.26
         */
        public function doPostOutputShutdown( $mode = 'normal' ) {
-               // Show profiling data if enabled
+               // Show visible profiling data if enabled (which cannot be post-send)
                Profiler::instance()->logDataPageOutputOnly();
 
                $that = $this;
                $callback = function () use ( $that, $mode ) {
                        try {
-                               // Assure deferred updates are not in the main transaction
-                               wfGetLBFactory()->commitMasterChanges();
-                               // Run jobs occasionally, if enabled
-                               if ( $mode === 'normal' ) {
-                                       $that->triggerJobs();
-                               }
-                               // Do deferred updates and job insertion and final commit
-                               $that->restInPeace();
+                               $that->restInPeace( $mode );
                        } catch ( Exception $e ) {
                                MWExceptionHandler::handleException( $e );
                        }
                };
 
+               // Defer everything else...
                if ( function_exists( 'register_postsend_function' ) ) {
                        // https://github.com/facebook/hhvm/issues/1230
                        register_postsend_function( $callback );
@@ -693,8 +692,12 @@ class MediaWiki {
 
        /**
         * Ends this task peacefully
+        * @param string $mode Use 'fast' to always skip job running
         */
-       public function restInPeace() {
+       public function restInPeace( $mode = 'fast' ) {
+               // Assure deferred updates are not in the main transaction
+               wfGetLBFactory()->commitMasterChanges();
+
                // Ignore things like master queries/connections on GET requests
                // as long as they are in deferred updates (which catch errors).
                Profiler::instance()->getTransactionProfiler()->resetExpectations();
@@ -705,6 +708,12 @@ class MediaWiki {
                // Make sure any lazy jobs are pushed
                JobQueueGroup::pushLazyJobs();
 
+               // Now that everything specific to this request is done,
+               // try to occasionally run jobs (if enabled) from the queues
+               if ( $mode === 'normal' ) {
+                       $this->triggerJobs();
+               }
+
                // Log profiling data, e.g. in the database or UDP
                wfLogProfilingData();
 
index cd675c6..248b308 100644 (file)
@@ -751,7 +751,11 @@ class Preferences {
                        'type' => 'select',
                        'section' => 'rendering/advancedrendering',
                        'options' => $stubThresholdOptions,
-                       'label-raw' => $context->msg( 'stub-threshold' )->text(), // Raw HTML message. Yay?
+                       // This is not a raw HTML message; label-raw is needed for the manual <a></a>
+                       'label-raw' => $context->msg( 'stub-threshold' )->rawParams(
+                               '<a href="#" class="stub">' .
+                               $context->msg( 'stub-threshold-sample-link' )->parse() .
+                               '</a>' )->parse(),
                );
 
                $defaultPreferences['showhiddencats'] = array(
index 55a4f49..430b4b8 100644 (file)
@@ -362,7 +362,11 @@ abstract class PrefixSearch {
                        $ns = NS_MAIN; // if searching on many always default to main
                }
 
-               $t = Title::newFromText( $search, $ns );
+               $t = null;
+               if ( is_string( $search ) ) {
+                       $t = Title::newFromText( $search, $ns );
+               }
+
                $prefix = $t ? $t->getDBkey() : '';
                $dbr = wfGetDB( DB_SLAVE );
                $res = $dbr->select( 'page',
index fbf3234..8179905 100644 (file)
@@ -346,8 +346,8 @@ class Sanitizer {
                                  ($space*=$space*
                                        (?:
                                         # The attribute value: quoted or alone
-                                         \"([^<\"]*)\"
-                                        | '([^<']*)'
+                                         \"([^<\"]*)(?:\"|\$)
+                                        | '([^<']*)(?:'|\$)
                                         |  ([a-zA-Z0-9!#$%&()*,\\-.\\/:;<>?@[\\]^_`{|}~]+)
                                        )
                                )?(?=$space|\$)/sx";
@@ -1809,7 +1809,7 @@ class Sanitizer {
                        $host = preg_replace( $strip, '', $host );
 
                        // IPv6 host names are bracketed with [].  Url-decode these.
-                       if ( substr_compare( "//%5B", $host, 0, 5 ) === 0 && preg_match( '!^//%5B(.*?)%5D((:\d+)?)$!', $host, $matches ) ) {
+                       if ( substr_compare( "//%5B", $host, 0, 5 ) === 0 && preg_match( '!^//%5B([0-9A-Fa-f:.]+)%5D((:\d+)?)$!', $host, $matches ) ) {
                                $host = '//[' . $matches[1] . ']' . $matches[2];
                        }
 
index 4d7428a..479ce8c 100644 (file)
@@ -68,17 +68,18 @@ if ( !empty( $wgActionPaths ) && !isset( $wgActionPaths['view'] ) ) {
        $wgActionPaths['view'] = $wgArticlePath;
 }
 
+if ( $wgResourceBasePath === null ) {
+       $wgResourceBasePath = $wgScriptPath;
+}
 if ( $wgStylePath === false ) {
-       $wgStylePath = "$wgScriptPath/skins";
+       $wgStylePath = "$wgResourceBasePath/skins";
 }
 if ( $wgLocalStylePath === false ) {
+       // Avoid wgResourceBasePath here since that may point to a different domain (e.g. CDN)
        $wgLocalStylePath = "$wgScriptPath/skins";
 }
 if ( $wgExtensionAssetsPath === false ) {
-       $wgExtensionAssetsPath = "$wgScriptPath/extensions";
-}
-if ( $wgResourceBasePath === null ) {
-       $wgResourceBasePath = $wgScriptPath;
+       $wgExtensionAssetsPath = "$wgResourceBasePath/extensions";
 }
 
 if ( $wgLogo === false ) {
@@ -521,11 +522,11 @@ unset( $serverParts );
 
 // Set defaults for configuration variables
 // that are derived from the server name by default
-if ( $wgEmergencyContact === false ) {
+// Note: $wgEmergencyContact and $wgPasswordSender may be false or empty string (T104142)
+if ( !$wgEmergencyContact ) {
        $wgEmergencyContact = 'wikiadmin@' . $wgServerName;
 }
-
-if ( $wgPasswordSender === false ) {
+if ( !$wgPasswordSender ) {
        $wgPasswordSender = 'apache@' . $wgServerName;
 }
 
@@ -535,6 +536,8 @@ if ( $wgSecureLogin && substr( $wgServer, 0, 2 ) !== '//' ) {
                . 'HTTP or HTTPS. Disabling secure login.' );
 }
 
+$wgVirtualRestConfig['global']['domain'] = $wgCanonicalServer;
+
 // Now that GlobalFunctions is loaded, set defaults that depend on it.
 if ( $wgTmpDirectory === false ) {
        $wgTmpDirectory = wfTempDir();
index 8a15b54..b347edb 100644 (file)
@@ -1939,7 +1939,6 @@ class Title {
         *   - quick  : does cheap permission checks from slaves (usable for GUI creation)
         *   - full   : does cheap and expensive checks possibly from a slave
         *   - secure : does cheap and expensive checks, using the master as needed
-        * @param bool $short Set this to true to stop after the first permission error.
         * @param array $ignoreErrors Array of Strings Set this to a list of message keys
         *   whose corresponding errors may be ignored.
         * @return array Array of arguments to wfMessage to explain permissions problems.
index 9b958f4..da8ff79 100644 (file)
@@ -3208,10 +3208,10 @@ class User implements IDBAccessObject {
        /**
         * Check if user is allowed to access a feature / make an action
         *
-        * @param string $permissions,... Permissions to test
+        * @param string ... Permissions to test
         * @return bool True if user is allowed to perform *any* of the given actions
         */
-       public function isAllowedAny( /*...*/ ) {
+       public function isAllowedAny() {
                $permissions = func_get_args();
                foreach ( $permissions as $permission ) {
                        if ( $this->isAllowed( $permission ) ) {
@@ -3223,10 +3223,10 @@ class User implements IDBAccessObject {
 
        /**
         *
-        * @param string $permissions,... Permissions to test
+        * @param string ... Permissions to test
         * @return bool True if the user is allowed to perform *all* of the given actions
         */
-       public function isAllowedAll( /*...*/ ) {
+       public function isAllowedAll() {
                $permissions = func_get_args();
                foreach ( $permissions as $permission ) {
                        if ( !$this->isAllowed( $permission ) ) {
index 4d80163..f54f20f 100644 (file)
@@ -182,7 +182,7 @@ abstract class ApiFormatBase extends ApiBase {
                        $out = new OutputPage( $context );
                        $context->setOutput( $out );
 
-                       $out->addModules( 'mediawiki.apipretty' );
+                       $out->addModuleStyles( 'mediawiki.apipretty' );
                        $out->setPageTitle( $context->msg( 'api-format-title' ) );
 
                        // When the format without suffix 'fm' is defined, there is a non-html version
index 7bb2453..9dbd4a5 100644 (file)
 class ApiFormatRaw extends ApiFormatBase {
 
        private $errorFallback;
+       private $mFailWithHTTPError = false;
+
 
        /**
         * @param ApiMain $main
-        * @param ApiFormatBase $errorFallback Object to fall back on for errors
+        * @param ApiFormatBase |null $errorFallback Object to fall back on for errors
         */
-       public function __construct( ApiMain $main, ApiFormatBase $errorFallback ) {
+       public function __construct( ApiMain $main, ApiFormatBase $errorFallback = null ) {
                parent::__construct( $main, 'raw' );
-               $this->errorFallback = $errorFallback;
+               if ( $errorFallback === null ) {
+                       $this->errorFallback = $main->createPrinterByName( $main->getParameter( 'format' ) );
+               } else {
+                       $this->errorFallback = $errorFallback;
+               }
        }
 
        public function getMimeType() {
@@ -59,6 +65,9 @@ class ApiFormatRaw extends ApiFormatBase {
                $data = $this->getResult()->getResultData();
                if ( isset( $data['error'] ) ) {
                        $this->errorFallback->initPrinter( $unused );
+                       if ( $this->mFailWithHTTPError ) {
+                               $this->getMain()->getRequest()->response()->statusHeader( 400 );
+                       }
                } else {
                        parent::initPrinter( $unused );
                }
@@ -85,4 +94,17 @@ class ApiFormatRaw extends ApiFormatBase {
                }
                $this->printText( $data['text'] );
        }
+
+       /**
+        * Output HTTP error code 400 when if an error is encountered
+        *
+        * The purpose is for output formats where the user-agent will
+        * not be able to interpret the validity of the content in any
+        * other way. For example subtitle files read by browser video players.
+        *
+        * @param bool $fail
+        */
+       public function setFailWithHTTPError( $fail ) {
+               $this->mFailWithHTTPError = $fail;
+       }
 }
index 8c65310..c66e215 100644 (file)
@@ -145,10 +145,10 @@ class ApiLogin extends ApiBase {
                        case LoginForm::CREATE_BLOCKED:
                                $result['result'] = 'CreateBlocked';
                                $result['details'] = 'Your IP address is blocked from account creation';
-                               $result = array_merge(
-                                       $result,
-                                       ApiQueryUserInfo::getBlockInfo( $context->getUser()->getBlock() )
-                               );
+                               $block = $context->getUser()->getBlock();
+                               if ( $block ) {
+                                       $result = array_merge( $result, ApiQueryUserInfo::getBlockInfo( $block ) );
+                               }
                                break;
 
                        case LoginForm::THROTTLED:
@@ -159,10 +159,10 @@ class ApiLogin extends ApiBase {
 
                        case LoginForm::USER_BLOCKED:
                                $result['result'] = 'Blocked';
-                               $result = array_merge(
-                                       $result,
-                                       ApiQueryUserInfo::getBlockInfo( User::newFromName( $params['name'] )->getBlock() )
-                               );
+                               $block = User::newFromName( $params['name'] )->getBlock();
+                               if ( $block ) {
+                                       $result = array_merge( $result, ApiQueryUserInfo::getBlockInfo( $block ) );
+                               }
                                break;
 
                        case LoginForm::ABORTED:
index 436f22a..a62bcb6 100644 (file)
@@ -52,6 +52,14 @@ class ApiOptions extends ApiBase {
                        $this->dieUsageMsg( array( 'missingparam', 'optionname' ) );
                }
 
+               // Load the user from the master to reduce CAS errors on double post (T95839)
+               if ( wfGetLB()->getServerCount() > 1 ) {
+                       $user = User::newFromId( $user->getId() );
+                       if ( !$user->loadFromId( User::READ_LATEST ) ) {
+                               $this->dieUsage( 'Anonymous users cannot change preferences', 'notloggedin' );
+                       }
+               }
+
                if ( $params['reset'] ) {
                        $user->resetOptions( $params['resetkinds'], $this->getContext() );
                        $changed = true;
index d67655b..cce8572 100644 (file)
@@ -171,6 +171,7 @@ class ApiParse extends ApiBase {
 
                                // Don't pollute the parser cache when setting options that aren't
                                // in ParserOptions::optionsHash()
+                               /// @todo: This should be handled closer to the actual cache instead of here, see T110269
                                $suppressCache =
                                        $params['disablepp'] ||
                                        $params['disablelimitreport'] ||
index f0c7430..014ca85 100644 (file)
@@ -108,12 +108,24 @@ class ApiResult implements ApiSerializable {
        const META_TYPE = '_type';
 
        /**
-        * Key (rather than "name" or other default) for when META_TYPE is 'kvp' or
-        * 'BCkvp'. Value is string.
+        * Key for the metadata item whose value specifies the name used for the
+        * kvp key in the alternative output format with META_TYPE 'kvp' or
+        * 'BCkvp', i.e. the "name" in <container><item name="key">value</item></container>.
+        * Value is string.
         * @since 1.25
         */
        const META_KVP_KEY_NAME = '_kvpkeyname';
 
+       /**
+        * Key for the metadata item that indicates that the KVP key should be
+        * added into an assoc value, i.e. {"key":{"val1":"a","val2":"b"}}
+        * transforms to {"name":"key","val1":"a","val2":"b"} rather than
+        * {"name":"key","value":{"val1":"a","val2":"b"}}.
+        * Value is boolean.
+        * @since 1.26
+        */
+       const META_KVP_MERGE = '_kvpmerge';
+
        /**
         * Key for the 'BC bools' metadata item. Value is string[].
         * Note no setter is provided.
@@ -941,19 +953,43 @@ class ApiResult implements ApiSerializable {
                                                : $transformTypes['ArmorKVP'];
                                        $valKey = isset( $transforms['BC'] ) ? '*' : 'value';
                                        $assocAsObject = !empty( $transformTypes['AssocAsObject'] );
+                                       $merge = !empty( $metadata[self::META_KVP_MERGE] );
 
                                        $ret = array();
                                        foreach ( $data as $k => $v ) {
-                                               $item = array(
-                                                       $key => $k,
-                                                       $valKey => $v,
-                                               );
-                                               if ( $strip === 'none' ) {
-                                                       $item += array(
-                                                               self::META_PRESERVE_KEYS => array( $key ),
-                                                               self::META_CONTENT => $valKey,
-                                                               self::META_TYPE => 'assoc',
+                                               if ( $merge && ( is_array( $v ) || is_object( $v ) ) ) {
+                                                       $vArr = (array)$v;
+                                                       if ( isset( $vArr[self::META_TYPE] ) ) {
+                                                               $mergeType = $vArr[self::META_TYPE];
+                                                       } elseif ( is_object( $v ) ) {
+                                                               $mergeType = 'assoc';
+                                                       } else {
+                                                               $keys = array_keys( $vArr );
+                                                               sort( $keys, SORT_NUMERIC );
+                                                               $mergeType = ( $keys === array_keys( $keys ) ) ? 'array' : 'assoc';
+                                                       }
+                                               } else {
+                                                       $mergeType = 'n/a';
+                                               }
+                                               if ( $mergeType === 'assoc' ) {
+                                                       $item = $vArr + array(
+                                                               $key => $k,
+                                                       );
+                                                       if ( $strip === 'none' ) {
+                                                               self::setPreserveKeysList( $item, array( $key ) );
+                                                       }
+                                               } else {
+                                                       $item = array(
+                                                               $key => $k,
+                                                               $valKey => $v,
                                                        );
+                                                       if ( $strip === 'none' ) {
+                                                               $item += array(
+                                                                       self::META_PRESERVE_KEYS => array( $key ),
+                                                                       self::META_CONTENT => $valKey,
+                                                                       self::META_TYPE => 'assoc',
+                                                               );
+                                                       }
                                                }
                                                $ret[] = $assocAsObject ? (object)$item : $item;
                                        }
index 8ad55b3..1d04304 100644 (file)
        "apihelp-parse-paramvalue-prop-iwlinks": "Da los enlaces interwiki del texto analizado.",
        "apihelp-parse-paramvalue-prop-wikitext": "Da el wikitexto original que se había analizado.",
        "apihelp-parse-paramvalue-prop-properties": "Da varias propiedades definidas en el wikitexto analizado.",
-       "apihelp-parse-paramvalue-prop-limitreportdata": "Da el informe del límite de forma estructurada. No da datos si <var>$1disablepp</var> está establecido.",
-       "apihelp-parse-paramvalue-prop-limitreporthtml": "Da la versión HTML del informe del límite. No da datos si <var>$1disablepp</var> está establecido.",
+       "apihelp-parse-paramvalue-prop-limitreportdata": "Da el informe del límite de forma estructurada. No da datos si <var>$1disablelimitreport</var> está establecido.",
+       "apihelp-parse-paramvalue-prop-limitreporthtml": "Da la versión HTML del informe del límite. No da datos si <var>$1disablelimitreport</var> está establecido.",
        "apihelp-parse-param-effectivelanglinks": "Incluye enlaces de idiomas proporcionados por las extensiones (para utilizar con <kbd>$1prop=langlinks</kbd>).",
+       "apihelp-parse-param-disablepp": "Usa <var>$1disablelimitreport</var> en su lugar.",
        "apihelp-parse-param-preview": "Analizar en modo de vista previa.",
        "apihelp-parse-param-sectionpreview": "Analizar sección en modo de vista previa (activa el modo de vista previa).",
        "apihelp-parse-param-disabletoc": "Omitir la tabla de contenidos en la salida.",
        "apihelp-query+allfileusages-param-to": "El título del archivo para detener la enumeración.",
        "apihelp-query+allfileusages-param-prefix": "Buscar todos los títulos de los archivos que comiencen con este valor.",
        "apihelp-query+allfileusages-param-prop": "Qué piezas de información incluir:",
+       "apihelp-query+allfileusages-paramvalue-prop-title": "Agrega el título del archivo.",
        "apihelp-query+allfileusages-param-limit": "Cuántos elementos en total se devolverán.",
        "apihelp-query+allfileusages-param-dir": "La dirección en la que se listará.",
        "apihelp-query+allfileusages-example-B": "Listar títulos de archivos, incluyendo los desaparecidos, con las ID de páginas a las que pertenecen, empezando por la <kbd>B</kbd>.",
        "apihelp-query+alllinks-param-from": "El título del enlace para comenzar la enumeración.",
        "apihelp-query+alllinks-param-to": "El título del enlace para detener la enumeración.",
        "apihelp-query+alllinks-param-prefix": "Buscar todos los títulos vinculados que comiencen con este valor.",
+       "apihelp-query+alllinks-param-prop": "Qué piezas de información incluir:",
        "apihelp-query+alllinks-paramvalue-prop-title": "Añade el título del enlace.",
        "apihelp-query+alllinks-param-namespace": "El espacio de nombres que enumerar.",
        "apihelp-query+alllinks-param-limit": "Cuántos elementos en total se devolverán.",
        "apihelp-query+allpages-example-generator": "Mostrar información acerca de 4 páginas que empiecen por la letra <kbd>T</kbd>.",
        "apihelp-query+allpages-example-generator-revisions": "Mostrar el contenido de las 2 primeras páginas que no redirijan y empiecen por <kbd>Re</kbd>.",
        "apihelp-query+allredirects-param-prefix": "Buscar todas las páginas de destino que empiecen con este valor.",
+       "apihelp-query+allredirects-param-prop": "Qué piezas de información incluir:",
+       "apihelp-query+allredirects-paramvalue-prop-title": "Añade el título de la redirección.",
        "apihelp-query+allredirects-param-limit": "Cuántos elementos se devolverán.",
        "apihelp-query+alltransclusions-param-prefix": "Buscar todos los títulos transcluídos que comiencen con este valor.",
+       "apihelp-query+alltransclusions-param-prop": "Qué piezas de información incluir:",
        "apihelp-query+alltransclusions-example-unique": "Listar títulos transcluidos de forma única.",
        "apihelp-query+alltransclusions-example-unique-generator": "Obtiene todos los títulos transcluídos, marcando los que faltan.",
        "apihelp-query+allusers-description": "Enumerar todos los usuarios registrados.",
        "apihelp-query+allusers-param-prefix": "Buscar todos los usuarios que empiecen con este valor.",
        "apihelp-query+allusers-param-group": "Incluir solo usuarios en los grupos dados.",
+       "apihelp-query+allusers-param-prop": "Qué piezas de información incluir:",
        "apihelp-query+allusers-paramvalue-prop-blockinfo": "Añade información sobre un bloque actual al usuario.",
        "apihelp-query+allusers-paramvalue-prop-groups": "Lista los grupos a los que el usuario pertenece. Esto utiliza más recursos del servidor y puede devolver menos resultados que el límite.",
+       "apihelp-query+allusers-paramvalue-prop-rights": "Lista los permisos que tiene el usuario.",
        "apihelp-query+allusers-param-limit": "Cuántos nombres de usuario se devolverán.",
        "apihelp-query+allusers-param-activeusers": "Solo listar usuarios activos en {{PLURAL:$1|el último día|los $1 últimos días}}.",
        "apihelp-query+allusers-example-Y": "Listar usuarios que empiecen por <kbd>Y</kbd>.",
        "apihelp-query+backlinks-example-simple": "Mostrar enlaces a la <kbd>Portada<kbd>.",
        "apihelp-query+blocks-description": "Listar todos los usuarios y direcciones IP bloqueadas.",
        "apihelp-query+blocks-param-users": "Lista de usuarios a buscar (opcional).",
+       "apihelp-query+blocks-param-prop": "Qué propiedades se obtendrán:",
        "apihelp-query+blocks-paramvalue-prop-userid": "Añade el identificador del usuario bloqueado.",
        "apihelp-query+blocks-paramvalue-prop-timestamp": "Añade la fecha y hora de cuando se aplicó el bloque.",
        "apihelp-query+blocks-example-simple": "Listar bloques.",
+       "apihelp-query+categories-param-prop": "Qué propiedades adicionales obtener para cada categoría:",
        "apihelp-query+categories-param-show": "Qué tipo de categorías mostrar.",
        "apihelp-query+categories-param-limit": "Cuántas categorías se devolverán.",
        "apihelp-query+categories-example-generator": "Obtener información acerca de todas las categorías utilizadas en la página <kbd>Albert Einstein</kbd>.",
        "apihelp-query+categoryinfo-description": "Devuelve información acerca de las categorías dadas.",
        "apihelp-query+categoryinfo-example-simple": "Obtener información acerca de <kbd>Category:Foo</kbd> y <kbd>Category:Bar</kbd>",
+       "apihelp-query+categorymembers-param-prop": "Qué piezas de información incluir:",
+       "apihelp-query+categorymembers-paramvalue-prop-title": "Agrega el título y el identificador del espacio de nombres de la página.",
        "apihelp-query+categorymembers-param-startsortkey": "Utilizar $1starthexsortkey en su lugar.",
        "apihelp-query+categorymembers-param-endsortkey": "Utilizar $1endhexsortkey en su lugar.",
        "apihelp-query+categorymembers-example-simple": "Obtener las primeras 10 páginas de la <kbd>Categoría:Física</kbd>",
        "apihelp-query+extlinks-param-limit": "Cuántos enlaces se devolverán.",
        "apihelp-query+exturlusage-param-prop": "Qué piezas de información incluir:",
        "apihelp-query+exturlusage-paramvalue-prop-ids": "Añade el identificado de la página.",
+       "apihelp-query+exturlusage-paramvalue-prop-title": "Agrega el título y el identificador del espacio de nombres de la página.",
        "apihelp-query+exturlusage-param-protocol": "Protocolo del URL. Si está vacío y se establece <var>$1query</var>, el protocolo es <kbd>http</kbd>. Deja vacío esto y <var>$1query</var> para listar todos los enlaces externos.",
        "apihelp-query+exturlusage-param-limit": "Cuántas páginas se devolverán.",
        "apihelp-query+exturlusage-example-simple": "Mostrar páginas que enlacen con <kbd>http://www.mediawiki.org</kbd>.",
        "apihelp-query+filearchive-param-from": "El título de imagen para comenzar la enumeración",
        "apihelp-query+filearchive-param-to": "El título de imagen para detener la enumeración.",
        "apihelp-query+filearchive-param-prefix": "Buscar todos los títulos de las imágenes que comiencen con este valor.",
+       "apihelp-query+filearchive-param-prop": "Qué información de imagen se obtendrá:",
+       "apihelp-query+filearchive-paramvalue-prop-size": "Agrega el tamaño de la imagen en bytes y la altura, la anchura y el número de páginas (si es aplicable).",
+       "apihelp-query+filearchive-paramvalue-prop-dimensions": "Alias del tamaño.",
+       "apihelp-query+filearchive-paramvalue-prop-description": "Añade la descripción de la versión de la imagen.",
        "apihelp-query+filearchive-paramvalue-prop-parseddescription": "Analizar la descripción de la versión.",
+       "apihelp-query+filearchive-paramvalue-prop-mime": "Añade el MIME de la imagen.",
+       "apihelp-query+filearchive-paramvalue-prop-mediatype": "Añade el tipo multimedia de la imagen.",
        "apihelp-query+filearchive-paramvalue-prop-archivename": "Añade el nombre de archivo de la versión archivada para las versiones que no son las últimas.",
        "apihelp-query+filearchive-example-simple": "Mostrar una lista de todos los archivos eliminados.",
        "apihelp-query+filerepoinfo-example-simple": "Obtener información acerca de los repositorios de archivos.",
+       "apihelp-query+fileusage-param-prop": "Qué propiedades se obtendrán:",
+       "apihelp-query+fileusage-paramvalue-prop-pageid": "Identificador de cada página.",
+       "apihelp-query+fileusage-paramvalue-prop-title": "Título de cada página.",
        "apihelp-query+fileusage-param-limit": "Cuántos se devolverán.",
        "apihelp-query+fileusage-example-simple": "Obtener una lista de páginas que utilicen [[:File:Example.jpg]].",
        "apihelp-query+fileusage-example-generator": "Obtener información acerca de las páginas que utilicen [[:File:Example.jpg]].",
        "apihelp-query+info-example-simple": "Obtener información acerca de la página <kbd>Main Page</kbd>.",
        "apihelp-query+info-example-protection": "Obtén información general y protección acerca de la página <kb>Página principal</kbd>.",
        "apihelp-query+iwbacklinks-param-limit": "Cuántas páginas se devolverán.",
+       "apihelp-query+iwbacklinks-param-prop": "Qué propiedades se obtendrán:",
        "apihelp-query+iwbacklinks-example-simple": "Obtener las páginas enlazadas a [[wikibooks:Test]]",
+       "apihelp-query+iwlinks-param-prop": "Qué propiedades adicionales obtener para cada enlace interlingüe:",
        "apihelp-query+iwlinks-paramvalue-prop-url": "Añade el URL completo.",
        "apihelp-query+langbacklinks-param-lang": "Idioma del enlace de idioma.",
        "apihelp-query+langbacklinks-param-limit": "Cuántas páginas en total se devolverán.",
        "apihelp-query+langbacklinks-param-prop": "Qué propiedades se obtendrán:",
+       "apihelp-query+langbacklinks-paramvalue-prop-lllang": "Agrega el código de idioma del enlace de idioma.",
+       "apihelp-query+langbacklinks-paramvalue-prop-lltitle": "Añade el título del enlace de idioma.",
        "apihelp-query+langbacklinks-example-simple": "Obtener las páginas enlazadas a [[:fr:Test]]",
        "apihelp-query+langbacklinks-example-generator": "Obtener información acerca de las páginas enlazadas a [[:fr:Test]].",
        "apihelp-query+langlinks-param-prop": "Qué propiedades adicionales obtener para cada enlace interlingüe:",
+       "apihelp-query+langlinks-paramvalue-prop-url": "Añade el URL completo.",
+       "apihelp-query+langlinks-paramvalue-prop-autonym": "Añade el nombre del idioma nativo.",
        "apihelp-query+langlinks-param-lang": "Devolver solo enlaces de idioma con este código de idioma.",
        "apihelp-query+links-param-limit": "Cuántos enlaces se devolverán.",
+       "apihelp-query+linkshere-param-prop": "Qué propiedades se obtendrán:",
        "apihelp-query+linkshere-paramvalue-prop-pageid": "Identificador de cada página.",
        "apihelp-query+linkshere-paramvalue-prop-title": "Título de cada página.",
        "apihelp-query+linkshere-paramvalue-prop-redirect": "Indicar si la página es una redirección.",
        "apihelp-query+linkshere-param-limit": "Cuántos se devolverán.",
        "apihelp-query+linkshere-example-simple": "Obtener una lista de páginas que enlacen a la [[Main Page]].",
        "apihelp-query+linkshere-example-generator": "Obtener información acerca de las páginas enlazadas a la [[Main Page|Portada]].",
+       "apihelp-query+logevents-param-prop": "Qué propiedades se obtendrán:",
+       "apihelp-query+logevents-paramvalue-prop-ids": "Agrega el identificador del evento de registro.",
        "apihelp-query+logevents-paramvalue-prop-type": "Añade el tipo del evento de registro.",
        "apihelp-query+logevents-paramvalue-prop-parsedcomment": "Añade el comentario analizado del evento de registro.",
+       "apihelp-query+pageswithprop-param-prop": "Qué piezas de información incluir:",
        "apihelp-query+pageswithprop-paramvalue-prop-ids": "Añade el identificador de página.",
+       "apihelp-query+pageswithprop-paramvalue-prop-title": "Agrega el título y el identificador del espacio de nombres de la página.",
        "apihelp-query+pageswithprop-param-limit": "El máximo número de páginas que se devolverán.",
        "apihelp-query+pageswithprop-example-simple": "Listar las 10 primeras páginas que utilicen <code>&#123;&#123;DISPLAYTITLE:&#125;&#125;</code>.",
        "apihelp-query+pageswithprop-example-generator": "Obtener información adicional acerca de las 10 primeras páginas que utilicen <code>_&#95;NOTOC_&#95;</code>.",
        "apihelp-query+protectedtitles-param-namespace": "Listar solo los títulos en estos espacios de nombres.",
        "apihelp-query+protectedtitles-param-level": "Listar solo títulos con estos niveles de protección.",
        "apihelp-query+protectedtitles-param-limit": "Cuántas páginas se devolverán.",
+       "apihelp-query+protectedtitles-param-prop": "Qué propiedades se obtendrán:",
+       "apihelp-query+protectedtitles-paramvalue-prop-user": "Agrega el usuario que agregó la protección.",
+       "apihelp-query+protectedtitles-paramvalue-prop-userid": "Agrega el identificador de usuario que agregó la protección.",
        "apihelp-query+protectedtitles-paramvalue-prop-expiry": "Añade la fecha y hora de cuando se levantará la protección.",
+       "apihelp-query+protectedtitles-paramvalue-prop-level": "Agrega el nivel de protección.",
        "apihelp-query+protectedtitles-example-simple": "Listar títulos protegidos.",
        "apihelp-query+protectedtitles-example-generator": "Encuentra enlaces a títulos protegidos en el espacio de nombres principal.",
        "apihelp-query+querypage-param-page": "El nombre de la página especial. Recuerda, es sensible a mayúsculas y minúsculas.",
        "apihelp-query+recentchanges-param-user": "Listar solo los cambios de este usuario.",
        "apihelp-query+recentchanges-param-excludeuser": "No listar cambios de este usuario.",
        "apihelp-query+recentchanges-param-tag": "Listar solo los cambios con esta etiqueta.",
+       "apihelp-query+recentchanges-param-prop": "Incluir piezas adicionales de información:",
+       "apihelp-query+recentchanges-paramvalue-prop-parsedcomment": "Añade el comentario analizado para la edición.",
        "apihelp-query+recentchanges-paramvalue-prop-flags": "Añade marcas para la edición.",
        "apihelp-query+recentchanges-paramvalue-prop-patrolled": "Etiqueta ediciones patrullables como patrulladas o no patrulladas.",
        "apihelp-query+recentchanges-param-token": "Usa <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd> en su lugar.",
        "apihelp-query+recentchanges-param-type": "Cuántos tipos de cambios se mostrarán.",
        "apihelp-query+recentchanges-example-simple": "Lista de cambios recientes.",
        "apihelp-query+redirects-param-prop": "Qué propiedades se obtendrán:",
+       "apihelp-query+redirects-paramvalue-prop-pageid": "Identificador de página de cada redirección.",
        "apihelp-query+redirects-paramvalue-prop-title": "Título de cada redirección.",
        "apihelp-query+redirects-paramvalue-prop-fragment": "Fragmento de cada redirección, si los hubiere.",
        "apihelp-query+redirects-param-limit": "Cuántas redirecciones se devolverán.",
        "apihelp-query+search-param-info": "Qué metadatos devolver.",
        "apihelp-query+search-param-prop": "Qué propiedades se devolverán:",
        "apihelp-query+search-paramvalue-prop-redirecttitle": "Añade el título de la redirección coincidente.",
+       "apihelp-query+search-paramvalue-prop-score": "<span class=\"apihelp-deprecated\">Desaconsejado e ignorado.</span>",
+       "apihelp-query+search-paramvalue-prop-hasrelated": "<span class=\"apihelp-deprecated\">Desaconsejado e ignorado.</span>",
        "apihelp-query+search-param-limit": "Cuántas páginas en total se devolverán.",
        "apihelp-query+search-param-interwiki": "Incluir resultados interwiki en la búsqueda, si es posible.",
        "apihelp-query+search-example-simple": "Buscar <kbd>significado</kbd>.",
        "apihelp-query+search-example-text": "Buscar <kbd>meaning</kbd> en los textos.",
        "apihelp-query+search-example-generator": "Obtener información acerca de las páginas devueltas por una búsqueda de <kbd>meaning</kbd>.",
        "apihelp-query+siteinfo-description": "Devolver información general acerca de la página web.",
+       "apihelp-query+siteinfo-param-prop": "Qué información se obtendrá:",
+       "apihelp-query+siteinfo-paramvalue-prop-general": "Información global del sistema.",
+       "apihelp-query+siteinfo-paramvalue-prop-namespaces": "Lista de espacios de nombres registrados y sus nombres canónicos.",
        "apihelp-query+siteinfo-paramvalue-prop-namespacealiases": "Lista de alias registrados de espacios de nombres",
+       "apihelp-query+siteinfo-paramvalue-prop-specialpagealiases": "Lista de alias de páginas especiales.",
+       "apihelp-query+siteinfo-paramvalue-prop-magicwords": "Lista de palabras mágicas y sus alias.",
+       "apihelp-query+siteinfo-paramvalue-prop-statistics": "Devuelve las estadísticas del sitio.",
        "apihelp-query+siteinfo-paramvalue-prop-interwikimap": "Devuelve el mapa interwiki (opcionalmente filtrado, opcionalmente localizado mediante el uso de <var>$1inlanguagecode</var>).",
+       "apihelp-query+siteinfo-paramvalue-prop-dbrepllag": "Devuelve el servidor de base de datos con el retraso de replicación más grande.",
        "apihelp-query+siteinfo-paramvalue-prop-usergroups": "Devuelve los grupos de usuarios y los permisos asociados.",
+       "apihelp-query+siteinfo-paramvalue-prop-libraries": "Devuelve las bibliotecas instaladas en el wiki.",
+       "apihelp-query+siteinfo-paramvalue-prop-extensions": "Devuelve las extensiones instaladas en el wiki.",
+       "apihelp-query+siteinfo-paramvalue-prop-fileextensions": "Devuelve una lista de extensiones de archivo permitidas para cargadarse.",
+       "apihelp-query+siteinfo-paramvalue-prop-rightsinfo": "Devuelve información de permisos (licencia) del wiki, si está disponible.",
+       "apihelp-query+siteinfo-paramvalue-prop-restrictions": "Devuelve información sobre tipos de restricciones (protección) disponible.",
+       "apihelp-query+siteinfo-paramvalue-prop-languages": "Devuelve una lista de los idiomas que admite MediaWiki (opcionalmente localizada mediante el uso de <var>$1inlanguagecode</var>).",
+       "apihelp-query+siteinfo-paramvalue-prop-skins": "Devuelve una lista de todos las apariencias habilitadas (opcionalmente localizada mediante el uso de <var>$1inlanguagecode</var>, de lo contrario en el idioma del contenido).",
+       "apihelp-query+siteinfo-paramvalue-prop-variables": "Devuelve una lista de identificadores variables.",
+       "apihelp-query+siteinfo-paramvalue-prop-protocols": "Devuelve una lista de los protocolos que se permiten en los enlaces externos.",
+       "apihelp-query+siteinfo-paramvalue-prop-defaultoptions": "Devuelve los valores predeterminados de las preferencias del usuario.",
        "apihelp-query+siteinfo-example-simple": "Obtener información del sitio.",
        "apihelp-query+stashimageinfo-description": "Devuelve información del archivo para archivos escondidos.",
        "apihelp-query+stashimageinfo-param-sessionkey": "Alias de $1filekey, para retrocompatibilidad.",
        "apihelp-query+stashimageinfo-example-simple": "Devuelve información para un archivo escondido.",
        "apihelp-query+stashimageinfo-example-params": "Devuelve las miniaturas de dos archivos escondidos.",
        "apihelp-query+tags-param-limit": "El número máximo de etiquetas para enumerar.",
+       "apihelp-query+tags-param-prop": "Qué propiedades se obtendrán:",
+       "apihelp-query+tags-paramvalue-prop-displayname": "Agrega el mensaje de sistema para la etiqueta.",
        "apihelp-query+tags-paramvalue-prop-source": "Obtiene las fuentes de la etiqueta, que pueden incluir <samp>extension</samp> para etiquetas definidas por extensiones y <samp>manual</samp> para etiquetas que pueden aplicarse manualmente por los usuarios.",
        "apihelp-query+tags-paramvalue-prop-active": "Si la etiqueta aún se sigue aplicando.",
        "apihelp-query+templates-description": "Devuelve todas las páginas transcluídas en las páginas dadas.",
        "apihelp-query+templates-param-limit": "Cuántas plantillas se devolverán.",
        "apihelp-query+transcludedin-description": "Encuentra todas las páginas que transcluyan las páginas dadas.",
+       "apihelp-query+transcludedin-param-prop": "Qué propiedades se obtendrán:",
+       "apihelp-query+transcludedin-paramvalue-prop-pageid": "Identificador de cada página.",
        "apihelp-query+transcludedin-paramvalue-prop-title": "Título de cada página.",
+       "apihelp-query+transcludedin-param-namespace": "Incluir solo las páginas en estos espacios de nombres.",
        "apihelp-query+transcludedin-param-limit": "Cuántos se devolverán.",
        "apihelp-query+transcludedin-example-simple": "Obtener una lista de páginas transcluyendo <kbd>Main Page</kbd>.",
        "apihelp-query+usercontribs-param-limit": "Número máximo de contribuciones que se devolverán.",
        "apihelp-query+usercontribs-param-prop": "Incluir piezas adicionales de información:",
        "apihelp-query+usercontribs-paramvalue-prop-ids": "Añade el identificador de página y el de revisión.",
+       "apihelp-query+usercontribs-paramvalue-prop-title": "Agrega el título y el identificador del espacio de nombres de la página.",
        "apihelp-query+usercontribs-paramvalue-prop-comment": "Añade el comentario de la edición.",
        "apihelp-query+usercontribs-paramvalue-prop-tags": "Lista las etiquetas para la edición.",
        "apihelp-query+usercontribs-example-user": "Mostrar contribuciones del usuario <kbd>Ejemplo</kbd>.",
        "apihelp-query+usercontribs-example-ipprefix": "Mostrar las contribuciones de todas las direcciones IP con el prefijo <kbd>192.0.2.</kbd>.",
        "apihelp-query+userinfo-description": "Obtener información sobre el usuario actual.",
        "apihelp-query+userinfo-param-prop": "Qué piezas de información incluir:",
+       "apihelp-query+userinfo-paramvalue-prop-groups": "Lista todos los grupos al que pertenece el usuario actual.",
+       "apihelp-query+userinfo-paramvalue-prop-rights": "Lista todos los permisos que tiene el usuario actual.",
        "apihelp-query+userinfo-paramvalue-prop-options": "Lista todas las preferencias que haya establecido el usuario actual.",
        "apihelp-query+userinfo-paramvalue-prop-editcount": "Añade el número de ediciones del usuario actual.",
        "apihelp-query+userinfo-paramvalue-prop-ratelimits": "Lista todos los límites de velocidad aplicados al usuario actual.",
        "apihelp-query+userinfo-example-simple": "Obtener información sobre el usuario actual.",
        "apihelp-query+userinfo-example-data": "Obtener información adicional sobre el usuario actual.",
        "apihelp-query+users-description": "Obtener información sobre una lista de usuarios.",
+       "apihelp-query+users-param-prop": "Qué piezas de información incluir:",
        "apihelp-query+users-paramvalue-prop-blockinfo": "Etiqueta si el usuario está bloqueado, por quién y por qué razón.",
+       "apihelp-query+users-paramvalue-prop-groups": "Lista todos los grupos a los que pertenece cada usuario.",
+       "apihelp-query+users-paramvalue-prop-editcount": "Añade el número de ediciones del usuario.",
        "apihelp-query+users-paramvalue-prop-gender": "Etiqueta el género del usuario. Devuelve \"masculino\", \"femenino\" o \"desconocido\".",
        "apihelp-query+users-example-simple": "Devolver información del usuario <kbd>Ejemplo</kbd>.",
        "apihelp-query+watchlist-param-start": "El sello de tiempo para comenzar la enumeración",
        "apihelp-query+watchlist-paramvalue-prop-notificationtimestamp": "Añade fecha y hora de cuando el usuario fue notificado por última vez acerca de la edición.",
        "apihelp-query+watchlist-paramvalue-prop-loginfo": "Añade información del registro cuando corresponda.",
        "apihelp-query+watchlist-param-type": "Qué tipos de cambios mostrar:\n;edit:ediciones comunes a páginas.\n;external:cambios externos.\n;new:creaciones de páginas.\n;log:entradas del registro.",
+       "apihelp-query+watchlistraw-param-prop": "Qué propiedades adicionales se obtendrán:",
        "apihelp-query+watchlistraw-param-show": "Sólo listar los elementos que cumplen estos criterios.",
        "apihelp-query+watchlistraw-param-fromtitle": "Título (con el prefijo de espacio de nombres) desde el que se empezará a enumerar.",
        "apihelp-query+watchlistraw-param-totitle": "Título (con el prefijo de espacio de nombres) desde el que se dejará de enumerar.",
index 70cc0e4..5aec2c6 100644 (file)
        "apihelp-parse-paramvalue-prop-iwlinks": "Fournit les liens interwikis dans le wikitexte analysé.",
        "apihelp-parse-paramvalue-prop-wikitext": "Fournit le wikitexte d’origine qui a été analysé.",
        "apihelp-parse-paramvalue-prop-properties": "Fournit les diverses propriétés définies dans le wikitexte analysé.",
-       "apihelp-parse-paramvalue-prop-limitreportdata": "Fournit le rapport de limite d’une manière structurée. Ne fournit aucune donnée, si <var>$1disablepp</var> est positionné.",
-       "apihelp-parse-paramvalue-prop-limitreporthtml": "Fournit la version HTML du rapport de limite. Ne fournit aucune donnée, si <var>$1disablepp</var> est positionné.",
+       "apihelp-parse-paramvalue-prop-limitreportdata": "Fournit le rapport de limite d’une manière structurée. Ne fournit aucune donnée, si <var>$1disablelimitreport</var> est positionné.",
+       "apihelp-parse-paramvalue-prop-limitreporthtml": "Fournit la version HTML du rapport de limite. Ne fournit aucune donnée, si <var>$1disablelimitreport</var> est positionné.",
        "apihelp-parse-paramvalue-prop-parsetree": "L’arbre d’analyse XML du contenu de la révision (nécessite le modèle de contenu <code>$1</code>)",
        "apihelp-parse-param-pst": "Faire une transformation avant enregistrement de l’entrée avant de l’analyser. Valide uniquement quand utilisé avec du texte.",
        "apihelp-parse-param-onlypst": "Faire une transformation avant enregistrement (PST) de l’entrée, mais ne pas l’analyser. Renvoie le même wikitexte, après que la PST a été appliquée. Valide uniquement quand utilisé avec <var>$1text</var>.",
        "apihelp-parse-param-effectivelanglinks": "Inclut les liens de langue fournis par les extensions (à utiliser avec <kbd>$1prop=langlinks</kbd>).",
        "apihelp-parse-param-section": "Récupérer uniquement le contenu de ce numéro de section ou quand <kbd>nouveau</kbd> génère une nouvelle section.\n\nLa <kbd>nouvelle</kbd> section est mise à l’honneur uniquement quand <var>text</var> est spécifié.",
        "apihelp-parse-param-sectiontitle": "Nouveau titre de section quand <var>section</var> vaut <kbd>nouveau</kbd>.\n\nÀ la différence de la modification de page, cela ne revient pas à <var>summary</var> quand il est omis ou vide.",
-       "apihelp-parse-param-disablepp": "Omettre le rapport du préprocesseur (« rapport de limite du nouveau PP ») de la sortie de l’analyseur.",
+       "apihelp-parse-param-disablelimitreport": "Omettre le rapport de limite (« rapport de limite du nouveau PP ») de la sortie de l’analyseur.",
+       "apihelp-parse-param-disablepp": "Utiliser <var>$1disablelimitreport</var> à la place.",
        "apihelp-parse-param-disableeditsection": "Omettre les liens de modification de section de la sortie de l’analyseur.",
+       "apihelp-parse-param-disabletidy": "Ne pas exécuter de nettoyage du code HTML (par exemple,  réagencer) sur la sortie de l'analyseur.",
        "apihelp-parse-param-generatexml": "Générer un arbre d’analyse XML (nécessite le modèle de contenu <code>$1</code> ; remplacé par <kbd>$2prop=parsetree</kbd>).",
        "apihelp-parse-param-preview": "Analyser en mode aperçu.",
        "apihelp-parse-param-sectionpreview": "Analyser en mode aperçu de section (active aussi le mode aperçu).",
        "apihelp-query+protectedtitles-paramvalue-prop-timestamp": "Ajoute l’horodatage de l’ajout de la protection.",
        "apihelp-query+protectedtitles-paramvalue-prop-user": "Ajoute l’utilisateur ayant ajouté la protection.",
        "apihelp-query+protectedtitles-paramvalue-prop-userid": "Ajoute l’ID de l’utilisateur ayant ajouté la protection.",
-       "apihelp-query+protectedtitles-paramvalue-prop-comment": "Ajoute le commentaire de la protection.",
+       "apihelp-query+protectedtitles-paramvalue-prop-comment": "Ajoute le commentaire pour la protection.",
        "apihelp-query+protectedtitles-paramvalue-prop-parsedcomment": "Ajoute le commentaire analysé de la protection.",
        "apihelp-query+protectedtitles-paramvalue-prop-expiry": "Ajoute l’horodatage de levée de la protection.",
        "apihelp-query+protectedtitles-paramvalue-prop-level": "Ajoute le niveau de protection.",
        "apihelp-query+userinfo-paramvalue-prop-rights": "Liste tous les droits qu’a l’utilisateur actuel.",
        "apihelp-query+userinfo-paramvalue-prop-changeablegroups": "Liste les groupes pour lesquels l’utilisateur actuel peut ajouter ou supprimer.",
        "apihelp-query+userinfo-paramvalue-prop-options": "Liste toutes les préférences qu’a défini l’utilisateur actuel.",
-       "apihelp-query+userinfo-paramvalue-prop-preferencestoken": "<span class=\"apihelp-deprecated\">Obsolete.</span> Obtient un jeton pour modifier les préférences de l’utilisateur actuel.",
+       "apihelp-query+userinfo-paramvalue-prop-preferencestoken": "<span class=\"apihelp-deprecated\">Obsolete.</span> Obtenir un jeton pour modifier les préférences de l’utilisateur actuel.",
        "apihelp-query+userinfo-paramvalue-prop-editcount": "Ajoute le compteur de modifications de l’utilisateur actuel.",
        "apihelp-query+userinfo-paramvalue-prop-ratelimits": "Liste toutes les limites de débit s’appliquant à l’utilisateur actuel.",
        "apihelp-query+userinfo-paramvalue-prop-realname": "Ajoute le vrai nom de l’utilisateur actuel.",
index 6051872..0657fd7 100644 (file)
        "apihelp-parse-paramvalue-prop-iwlinks": "Devolve as ligazóns interwiki do texto wiki analizado.",
        "apihelp-parse-paramvalue-prop-wikitext": "Devolve o texto wiki orixinal que foi analizado.",
        "apihelp-parse-paramvalue-prop-properties": "Obter varias propiedades definidas no texto wiki analizado.",
-       "apihelp-parse-paramvalue-prop-limitreportdata": "Devolve o informe de límite de forma estruturada. Non devolve datos cando <var>$1disablepp</var> está fixado.",
-       "apihelp-parse-paramvalue-prop-limitreporthtml": "Devolve a versión HTML do informe de límite. Non devolve datos cando <var>$1disablepp</var> está fixado.",
+       "apihelp-parse-paramvalue-prop-limitreportdata": "Devolve o informe de límite de forma estruturada. Non devolve datos cando <var>$1disablelimitreport</var> está fixado.",
+       "apihelp-parse-paramvalue-prop-limitreporthtml": "Devolve a versión HTML do informe de límite. Non devolve datos cando <var>$1disablelimitreport</var> está fixado.",
        "apihelp-parse-paramvalue-prop-parsetree": "Árbores de análise XML do contido da revisión (precisa o modelo de contido <code>$1</code>)",
        "apihelp-parse-param-pst": "Fai unha transformación antes de gardar a entrada antes de analizala. Válida unicamente para usar con texto.",
        "apihelp-parse-param-onlypst": "Facer unha transformación antes de gardar (PST) a entrada, pero sen analizala. Devolve o mesmo wikitexto, despois de que a PST foi aplicada. Só válida cando se usa con <var>$1text</var>.",
        "apihelp-parse-param-effectivelanglinks": "Inclúe ligazóns de idioma proporcionadas polas extensións (para usar con <kbd>$1prop=langlinks</kbd>).",
        "apihelp-parse-param-section": "Recuperar unicamente o contido deste número de sección ou cando <kbd>new</kbd> xera unha nova sección.\n\nA sección <kbd>new</kbd> só é atendida cando se especifica <var>text</var>.",
        "apihelp-parse-param-sectiontitle": "Novo título de sección cando <var>section</var> é <kbd>new</kbd>.\n\nA diferenza da edición de páxinas, non se oculta no <var>summary</var> cando se omite ou está baleiro.",
-       "apihelp-parse-param-disablepp": "Omitir o informe de preprocesador (\"Informe de límite NewPP\") da saída do analizador.",
+       "apihelp-parse-param-disablelimitreport": "Omitir o informe de límite (\"Informe de límite NewPP\") da saída do analizador.",
+       "apihelp-parse-param-disablepp": "Use <var>$1disablelimitreport</var> no seu lugar.",
        "apihelp-parse-param-disableeditsection": "Omitir as ligazóns de edición de sección da saída do analizador.",
+       "apihelp-parse-param-disabletidy": "Non executar limpeza de HTML no retorno da análise.",
        "apihelp-parse-param-generatexml": "Xenerar unha árbore de análise XML (necesita o modelo de contido <code>$1</code>; substituído por <kbd>$2prop=parsetree</kbd>).",
        "apihelp-parse-param-preview": "Analizar en modo vista previa.",
        "apihelp-parse-param-sectionpreview": "Analizar en modo vista previa de sección (activa tamén o modo de vista previa).",
index 677fa98..de8e83d 100644 (file)
        "apihelp-parse-paramvalue-prop-iwlinks": "מתן קישורי בינוויקי בקוד הוויקי המפוענח.",
        "apihelp-parse-paramvalue-prop-wikitext": "מתן קוד הוויקי המקורי שפוענח.",
        "apihelp-parse-paramvalue-prop-properties": "נותן מאפיינים שונים שמוגדרים בקוד הוויקי המפוענח.",
-       "apihelp-parse-paramvalue-prop-limitreportdata": "נותן דו\"ח הגבלות בדרך מובנית. לא נותן שום נתונים כאשר מוגדר <var>$1disablepp</var>.",
-       "apihelp-parse-paramvalue-prop-limitreporthtml": "נותן את גרסת ה־HTML של דו\"ח ההגבלות. לא נותן שום נתונים כאשר מוגדר <var>$1disablepp</var>.",
+       "apihelp-parse-paramvalue-prop-limitreportdata": "נותן דו\"ח הגבלות בדרך מובנית. לא נותן שום נתונים כאשר מוגדר <var>$1disablelimitreport</var>.",
+       "apihelp-parse-paramvalue-prop-limitreporthtml": "נותן את גרסת ה־HTML של דו\"ח ההגבלות. לא נותן שום נתונים כאשר מוגדר <var>$1disablelimitreport</var>.",
        "apihelp-parse-paramvalue-prop-parsetree": "עץ פענוח XML של תוכן הגרסה (דורש מודל תוכן <code>$1</code>)",
        "apihelp-parse-param-pst": "לעשות התמרה לפני שמירה על הקלט לפני פענוחו. תקין רק בשימוש עם טקסט.",
        "apihelp-parse-param-onlypst": "לעשות התמרה לפני שמירה (pre-save transform‏, PST) על הקלט, אבל לא לפענח אותו. מחזיר את אותו קוד הוויקי אחרי החלת PST. תקף רק בשימוש עם <var>$1text</var>.",
        "apihelp-parse-param-effectivelanglinks": "כולל קישור שפה שמספקות הרחבות (לשימוש עם <kbd>$1prop=langlinks</kbd>).",
        "apihelp-parse-param-section": "לאחזר את התוכן של הפסקה עם המספר הזה, או, אם זה <kbd>new</kbd>, ליצור פסקה חדשה.\n\n<kbd>new</kbd> יכובד רק בעת ציון <var>text</var>.",
        "apihelp-parse-param-sectiontitle": "כותרת פסקה חדשה כאשר <var>section</var> הוא <kbd>new</kbd>.\n\nבניגוד לעריכת דף, זה לא מתגבה ל־<var>summary</var> כשזה מושמט אם ריק.",
-       "apihelp-parse-param-disablepp": "להשמיט את דו\"ח הקדם־מעבד (\"NewPP limit report\") מפלט המפענח.",
+       "apihelp-parse-param-disablelimitreport": "להשמיט את דו\"ח הקדם־מעבד (\"NewPP limit report\") מפלט המפענח.",
+       "apihelp-parse-param-disablepp": "יש להשתמש ב־<var>$1disablelimitreport</var> במקום.",
        "apihelp-parse-param-disableeditsection": "להשמיט את קישורי עריכת הפסקאות מפלט המפענח.",
+       "apihelp-parse-param-disabletidy": "לא להריץ ניקוי HTML (למשל tidy) על פלט המפענח.",
        "apihelp-parse-param-generatexml": "יצירת עץ פענוח של XML (נדרש מודל תוכן <code>$1</code>; מוחלף ב־<kbd>$2prop=parsetree</kbd>).",
        "apihelp-parse-param-preview": "לפענח במצב תצוגה מקדימה.",
        "apihelp-parse-param-sectionpreview": "לפענח במצב תצוגה מקדימה של פסקה (מדליק גם את מצב תצוגה מקדימה).",
index 190de54..5c4c55e 100644 (file)
@@ -6,7 +6,8 @@
                        "Toadino2",
                        "Gianfranco",
                        "Alexmar983",
-                       "Ricordisamoa"
+                       "Ricordisamoa",
+                       "Valepert"
                ]
        },
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Documentazione (in inglese)]]\n* [[mw:API:FAQ|FAQ (in inglese)]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Mailing list]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Annunci sull'API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Bug & richieste]\n</div>\n<strong>Stato:</strong> Tutte le funzioni e caratteristiche mostrate su questa pagina dovrebbero funzionare, ma l'API è ancora in fase d'attivo sviluppo, e potrebbe cambiare in qualsiasi momenento. Iscriviti alla [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ the mediawiki-api-announce mailing list] per essere informato sugli aggiornamenti.\n\n<strong>Istruzioni sbagliate:</strong> quando vengono impartite all'API delle istruzioni sbagliate, un'intestazione HTTP verrà inviata col messaggio \"MediaWiki-API-Error\" e sia al valore dell'intestazione sia al codice d'errore verrà impostato lo stesso valore. Per maggiori informazioni leggi [[mw:API:Errors_and_warnings|API:Errori ed avvertimenti (in inglese)]].",
@@ -14,6 +15,7 @@
        "apihelp-main-param-format": "Formato dell'output.",
        "apihelp-main-param-assert": "Verifica che l'utente sia loggato se si è impostato <kbd>utente</kbd>, o che abbia i permessi di bot se si è impostato <kbd>bot</kbd>.",
        "apihelp-main-param-requestid": "Tutti i valori forniti saranno implementati nella risposta. Potrebbero venir utilizzati per distinguere le richieste.",
+       "apihelp-main-param-servedby": "Includi nei risultati il nome dell'host che ha servito la richiesta.",
        "apihelp-main-param-curtimestamp": "Includere il timestamp corrente nel risultato.",
        "apihelp-block-description": "Blocca  un utente.",
        "apihelp-block-param-user": "Nome utente, indirizzo IP o range di IP da bloccare.",
        "apihelp-expandtemplates-param-prop": "Quale informazione ottenere.\n\nNota che se non è selezionato alcun valore, il risultato conterrà il codice wiki, ma l'output sarà in un formato obsoleto.",
        "apihelp-expandtemplates-paramvalue-prop-wikitext": "Il wikitext espanso.",
        "apihelp-expandtemplates-paramvalue-prop-volatile": "Se l'output sia volatile e non debba essere riutilizzato altrove all'interno della pagina.",
+       "apihelp-feedcontributions-param-year": "Dall'anno (e precedenti).",
+       "apihelp-feedcontributions-param-month": "Dal mese (e precedenti).",
+       "apihelp-feedcontributions-param-deletedonly": "Mostra solo i contribuiti cancellati.",
+       "apihelp-feedcontributions-param-toponly": "Mostra solo i contributi che sono le ultime versioni per la pagina.",
+       "apihelp-feedcontributions-param-newonly": "Visualizza solo le modifiche che sono creazioni di pagina.",
+       "apihelp-feedrecentchanges-param-hideminor": "Nascondi le modifiche minori.",
+       "apihelp-feedrecentchanges-param-hidebots": "Nascondi le modifiche apportate da bot.",
+       "apihelp-feedrecentchanges-param-hideanons": "Nascondi le modifiche fatte da utenti anonimi.",
+       "apihelp-feedrecentchanges-param-hideliu": "Nascondi le modifiche apportate dagli utenti registrati.",
+       "apihelp-feedrecentchanges-param-showlinkedto": "Mostra solo le modifiche alle pagine collegate a quella specificata.",
+       "apihelp-login-param-name": "Nome utente.",
+       "apihelp-login-param-password": "Password.",
        "apihelp-move-description": "Sposta una pagina.",
+       "apihelp-move-param-ignorewarnings": "Ignora i messaggi di avvertimento del sistema.",
        "apihelp-options-example-reset": "Reimposta tutte le preferenze.",
        "apihelp-query+blocks-example-simple": "Elenca i blocchi.",
        "apihelp-query+recentchanges-example-simple": "Elenco modifiche recenti.",
index 267f1d6..83a25fd 100644 (file)
@@ -85,6 +85,7 @@
        "apihelp-edit-param-appendtext": "このテキストをページの末尾に追加する。$1textを上書きします。\n\n新しい節を追加するにはこのパラメータではなく $1section=newを使用してください。",
        "apihelp-edit-param-undo": "この版を取り消します。$1text, $1prependtext および $1appendtext をオーバーライドします。",
        "apihelp-edit-param-undoafter": "$1undo からこの版までのすべての版を取り消します。設定しない場合、ひとつの版のみ取り消されます。",
+       "apihelp-edit-param-redirect": "自動的にリダイレクトを解決します。",
        "apihelp-edit-param-token": "このトークンは常に最後のパラメーターとして、または少なくとも $1text パラメーターより後に送信されるべきです。",
        "apihelp-edit-example-edit": "ページを編集",
        "apihelp-edit-example-prepend": "<kbd>_&#95;NOTOC_&#95;</kbd> をページの先頭に挿入する。",
        "apihelp-paraminfo-description": "API モジュールに関する情報を取得します。",
        "apihelp-paraminfo-param-modules": "モジュールの名前のリスト (<var>action</var> および <var>format</var> パラメーターの値, または <kbd>main</kbd>). <kbd>+</kbd> を使用して下位モジュールを指定できます。",
        "apihelp-paraminfo-example-1": "<kbd>[[Special:ApiHelp/parse|action=parse]]</kbd>, <kbd>[[Special:ApiHelp/jsonfm|format=jsonfm]]</kbd>, <kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd>, and <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd> に関する情報を表示する。",
+       "apihelp-parse-param-disablepp": "<var>$1disablelimitreport</var> を代わりに使用してください。",
        "apihelp-parse-param-preview": "プレビューモードでのパース",
        "apihelp-parse-example-page": "ページをパース",
        "apihelp-parse-example-text": "ウィキテキストをパース",
index ddaecde..ab018c9 100644 (file)
@@ -11,7 +11,7 @@
                        "Kurousagi"
                ]
        },
-       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [https://www.mediawiki.org/wiki/API:Main_page 설명문서]\n* [https://www.mediawiki.org/wiki/API:FAQ FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api 메일링 리스트]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API 공지 사항] * [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R 버그 및 요청] </div>\n<strong>상태:</strong> 이 페이지에 표시된 모든 기능은 정상 작동할 것이지만, API는 여전히 활발하게 개발되고 있으며, 언제든지 바뀔 수 있습니다. 업데이트 정보를 받아보려면 [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ the mediawiki-api-announce 메일링 리스트]를 구독하십시오.\n\n<strong>잘못된 요청:</strong> API에 잘못된 요청이 전송되면 HTTP 헤더에서 \"MediaWiki-API-Error\" 키를 보내고, 헤더 값과 오류 코드가 같게 설정됩니다. 자세한 정보에 대해서는 https://www.mediawiki.org/wiki/API:Errors_and_warnings 를 참고하십시오.",
+       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|설명문서]]\n* [[mw:API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api 메일링 리스트]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API 공지 사항] * [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R 버그 및 요청] </div>\n<strong>상태:</strong> 이 페이지에 표시된 모든 기능은 정상 작동할 것이지만, API는 여전히 활발하게 개발되고 있으며, 언제든지 바뀔 수 있습니다. 업데이트 정보를 받아보려면 [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ the mediawiki-api-announce 메일링 리스트]를 구독하십시오.\n\n<strong>잘못된 요청:</strong> API에 잘못된 요청이 전송되면 HTTP 헤더에서 \"MediaWiki-API-Error\" 키를 보내고, 헤더 값과 오류 코드가 같게 설정됩니다. 자세한 정보에 대해서는 [[mw:API:Errors_and_warnings|API:오류 및 경고]]를 참조하십시오.",
        "apihelp-main-param-action": "수행할 동작",
        "apihelp-main-param-format": "출력값의 형식.",
        "apihelp-block-description": "사용자를 차단합니다.",
index 44324cc..438cd64 100644 (file)
        "apihelp-parse-paramvalue-prop-properties": "Jitt devärse Eijeschafte uß, di em jepahßde Wikkitäx faßjelaat woode sen.",
        "apihelp-parse-param-section": "Holl blohß dann der Ennhalld vun däm Affschnett met dä Nommer, udder wann „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">new</kbd>“ enjejovve es, maach ene neu Affschnett derbei.",
        "apihelp-parse-param-sectiontitle": "De Övverschreff för dä neuje Afschnet, wann <var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">section</var> = <kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">new</kbd> es.\n\nAnders wi beim Beärbeide vun dä Sigg weed dä Parramehter nit dorsch de <var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">summary</var> ußjetuusch, wann hä fottjelohße udder läddesch es.",
+       "apihelp-parse-param-disablelimitreport": "Jiff keine Bereesch vum Vüürbereijde zom Paase (der „<i lang=\"en\" xml:lang=\"en\" dir=\"ltr\">NewPP limit report</i>“) mem Paaser singe Dahte zosamme uß.",
        "apihelp-parse-param-disableeditsection": "Donn de Lenks för Affschnedde ze änndere en de Ußjahbe vum Paaser eruß lohße.",
        "apihelp-parse-param-disabletoc": "Donn et Ennhaldsverzeijscheneß en de Ußjahbe vottlohße.",
        "apihelp-parse-example-page": "Donn en Sigg pahse.",
        "apihelp-query+backlinks-param-namespace": "Dat Appachtemang zom opzälle.",
        "apihelp-query+backlinks-param-dir": "En wälsche Reijefollsch?",
        "apihelp-query+backlinks-param-limit": "Wi vill Sigge ensjesamp ußjävve. Wann „<var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1redirect</var>“ ennjeschalld es, weed di Beschrängkong op jehden Nivoh äxtra aanjwandt, wat bedügg, dat bes op 2 * „<var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1limit</var> ußjejovve wähde künne.",
+       "apihelp-query+backlinks-param-redirect": "Wann de Sigg emt dämm Lengk dren en Ömlijdong änthält, fengk derzoh och alle Sigge, di doh drop lengke. De Bovverjränz för de Aanzahl Sigge för opzeleßte weed hallbehrt.",
        "apihelp-query+backlinks-example-simple": "Zeijsch Lengks op de Sigg <kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Main page<kbd>.",
        "apihelp-query+backlinks-example-generator": "Holl Ennfommazjuhne övver Sigge, di op de Sigg „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Main Page</code>“ lengke donn.",
        "apihelp-query+blocks-description": "Donn alle jeschpächte Metmaacher un <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Internet Protocol\">IP</i>-Adräße opleßte.",
        "apihelp-query+watchlist-paramvalue-prop-user": "Deiht dä Metmaacher derbei, dä di Änderong jemaat hät.",
        "apihelp-query+watchlist-paramvalue-prop-userid": "Deiht de kännong vn äm Metmaacher derbei, dä di Änderong jemaat hät.",
        "apihelp-query+watchlist-paramvalue-prop-timestamp": "Deihd et Dattom un de Uhrzigg vun dä Änderong derbei.",
+       "apihelp-query+watchlist-param-type": "Wat för en Änderonge aanzeije:\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">edit</code>:Jewöhnlejje Änderonge aan Sigge.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">external</code>:Änderonge vun Ußerhallef.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">new</code>:Neu aanjelahte Sigge.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">log</code>:Enndrähsch em Logbohch.",
        "apihelp-query+watchlistraw-description": "Donn alle Sigge uß dem aktälle Metmaacher sing Oppaßleß holle.",
        "apihelp-query+watchlistraw-param-namespace": "Donn blohß Sigge en heh däm Appachtemang opleßte.",
        "apihelp-query+watchlistraw-example-simple": "Donn alle Sigge uß dem aktälle Metmaacher sing Oppaßleß opleßte.",
index b81c440..5b7b2a1 100644 (file)
@@ -54,6 +54,7 @@
        "apihelp-options-description": "Astellunge fir den aktuelle Benotzer änneren.\n\nNëmmen Optiounen aus dem Haaptdeel (core) oder aus enger vun den installéierten Erweiderunge, oder Optioune mat Schlësselen déi viragestallt si mat <code>userjs-</code> (geduecht fir mat Benotzer-Scripte benotzt ze ginn), kënnen agestallt ginn.",
        "apihelp-options-param-optionname": "Den Numm vun der Optioun deen op de Wäert vun <var>$1optionvalue</var> gesat gi muss",
        "apihelp-options-example-reset": "All Astellungen zrécksetzen",
+       "apihelp-parse-param-disablepp": "Benotzt an där Plaz <var>$1disablelimitreport</var>.",
        "apihelp-patrol-example-rcid": "Eng rezent Ännerung nokucken.",
        "apihelp-patrol-example-revid": "Eng Versioun nokucken.",
        "apihelp-protect-example-protect": "Eng Säit spären",
@@ -64,6 +65,7 @@
        "apihelp-query+allfileusages-paramvalue-prop-title": "Setzt den Titel vum Fichier derbäi.",
        "apihelp-query+alllinks-paramvalue-prop-title": "Setzt den Titel vum Link derbäi.",
        "apihelp-query+allusers-description": "All registréiert Benotzer opzielen.",
+       "apihelp-query+allusers-paramvalue-prop-implicitgroups": "Lëscht vun alle Gruppen an deenen de Benotzer automatesch dran ass.",
        "apihelp-query+allusers-param-activeusers": "Nëmme Benotzer opzielen déi an de leschten $1 {{PLURAL:$1|Dag|Deeg}} aktiv waren.",
        "apihelp-query+blocks-description": "Lëscht vun de gespaarte Benotzer an IP-Adressen.",
        "apihelp-query+blocks-paramvalue-prop-range": "Setzt de Beräich vun den IP-Adressen derbäi déi vun der Spär betraff sinn.",
@@ -95,7 +97,9 @@
        "apihelp-query+protectedtitles-param-namespace": "Nëmmen Titelen aus dësen Nummraim opzielen.",
        "apihelp-query+random-param-redirect": "Eng zoufälleg Viruleedung lueden aplaz vun enger zoufälleger Säit.",
        "apihelp-query+recentchanges-param-user": "Nëmmen Ännerunge vun dësem Benotzer opzielen.",
+       "apihelp-query+recentchanges-paramvalue-prop-comment": "Setzt d'Bemierkung vun der Ännerung derbäi.",
        "apihelp-query+recentchanges-example-simple": "Rezent Ännerunge weisen",
+       "apihelp-query+redirects-paramvalue-prop-title": "Titel vun all Viruleedung.",
        "apihelp-query+revisions-example-last5": "Déi lescht 5 Versioune vun der <kbd>Haaptsäit</kbd> kréien.",
        "apihelp-query+revisions+base-paramvalue-prop-ids": "D'Nummer vun der Versioun.",
        "apihelp-query+revisions+base-paramvalue-prop-timestamp": "Den Zäitstempel vun der Versioun.",
        "apihelp-query+revisions+base-paramvalue-prop-comment": "Bemierkung vum Benotzer fir dës Versioun.",
        "apihelp-query+revisions+base-paramvalue-prop-content": "Text vun der Versioun.",
        "apihelp-query+search-param-namespace": "Nëmmen an dësen Nummräim sichen.",
+       "apihelp-query+search-paramvalue-prop-wordcount": "Setzt d'Zuel vun de Wierder vun der Säit derbäi.",
        "apihelp-query+search-paramvalue-prop-timestamp": "Setzt den Zäitstempel vun der leschter Ännerung vun der Säit derbäi.",
        "apihelp-query+transcludedin-paramvalue-prop-title": "Titel vun all Säit.",
        "apihelp-query+usercontribs-description": "All Ännerunge vun engem Benotzer kréien.",
        "apihelp-query+usercontribs-paramvalue-prop-timestamp": "Setzt den Zäitstempel vun derÄnnerung derbäi.",
        "apihelp-query+usercontribs-paramvalue-prop-comment": "Setzt d'Bemierkung vun der Ännerung derbäi.",
        "apihelp-query+userinfo-paramvalue-prop-options": "Lëscht vun allen Astellungen déi den aktuelle Benotzer gemaach huet.",
+       "apihelp-query+userinfo-paramvalue-prop-editcount": "Setzt d'Gesamtzuel vun den Ännerunge vum aktuelle Benotzer derbäi.",
        "apihelp-query+userinfo-paramvalue-prop-realname": "Setzt dem Benotzer säi richtegen Numm derbäi.",
        "apihelp-query+users-paramvalue-prop-rights": "Weist all Rechter déi all Benotzer huet.",
        "apihelp-query+watchlist-param-user": "Nëmmen Ännerunge vun dësem Benotzer opzielen.",
index a91fb9d..e6aab1e 100644 (file)
        "apihelp-query+info-paramvalue-prop-readable": "Czy użytkownik może przeczytać tę stronę.",
        "apihelp-query+iwbacklinks-param-prefix": "Prefix interwiki.",
        "apihelp-query+iwbacklinks-param-limit": "Łączna ilość stron do zwrócenia.",
+       "apihelp-query+iwlinks-paramvalue-prop-url": "Dodaje pełny adres URL.",
        "apihelp-query+links-param-limit": "Ilość linków do zwrócenia.",
        "apihelp-query+linkshere-paramvalue-prop-title": "Nazwa każdej strony.",
        "apihelp-query+linkshere-param-limit": "Ilość do zwrócenia.",
index 82e05ff..a476b7a 100644 (file)
        "apihelp-parse-paramvalue-prop-iwlinks": "Fornece links interwiki no wikitexto analisado.",
        "apihelp-parse-paramvalue-prop-wikitext": "Fornece o wikitexto original que foi analisado.",
        "apihelp-parse-paramvalue-prop-properties": "Fornece várias propriedades definidas no wikitexto analisado.",
-       "apihelp-parse-paramvalue-prop-limitreportdata": "Fornece o relatório limite de uma forma estruturada. Não informa dado, quando<var>$1disablepp</var> se definido.",
+       "apihelp-parse-paramvalue-prop-limitreportdata": "Fornece o relatório limite de uma forma estruturada. Não informa dado, quando<var>$1disablelimitreport</var> se definido.",
        "apihelp-parse-example-page": "Analisa uma página.",
        "apihelp-parse-example-text": "Analisa wikitexto.",
        "apihelp-parse-example-texttitle": "Analisa wikitexto, especificando o título da página.",
index 4325c14..150ad8e 100644 (file)
@@ -18,8 +18,8 @@
        "apihelp-createaccount-param-email": "Endereço de correio eletrónico do utilizador (opcional).",
        "apihelp-createaccount-param-realname": "Nome verdadeiro do utilizador (opcional).",
        "apihelp-delete-description": "Eliminar uma página.",
-       "apihelp-delete-param-watch": "Adicionar esta página à lista de vigiadas.",
-       "apihelp-delete-param-unwatch": "Remover esta página da lista de vigiadas.",
+       "apihelp-delete-param-watch": "Adicionar a página à lista de vigiadas do utilizador actual.",
+       "apihelp-delete-param-unwatch": "Remover a página da lista de vigiadas do utilizador actual.",
        "apihelp-delete-example-simple": "Eliminar <kbd>Página Principal</kbd>.",
        "apihelp-disabled-description": "O módulo foi desativado.",
        "apihelp-edit-description": "Criar e editar páginas.",
@@ -41,7 +41,7 @@
        "apihelp-feedrecentchanges-param-hideminor": "Ocultar edições menores.",
        "apihelp-feedrecentchanges-param-hidebots": "Ocultar alterações feitas por robôs.",
        "apihelp-feedrecentchanges-param-hidepatrolled": "Ocultar alterações patrulhadas.",
-       "apihelp-feedrecentchanges-param-hidemyself": "Ocultar alterações feitas por mim.",
+       "apihelp-feedrecentchanges-param-hidemyself": "Ocultar alterações feitas pelo utilizador actual.",
        "apihelp-feedrecentchanges-param-target": "Mostrar apenas mudanças em páginas afluentes a esta.",
        "apihelp-feedrecentchanges-example-simple": "Mostrar mudanças recentes",
        "apihelp-help-example-main": "Ajuda para o módulo principal",
index ef803f5..921cc58 100644 (file)
        "apihelp-query+backlinks-param-dir": "{{doc-apihelp-param|query+backlinks|dir}}",
        "apihelp-query+backlinks-param-filterredir": "{{doc-apihelp-param|query+backlinks|filterredir}}",
        "apihelp-query+backlinks-param-limit": "{{doc-apihelp-param|query+backlinks|limit}}",
-       "apihelp-query+backlinks-param-redirect": "{{doc-apihelp-param|query+backlinks|redirect}}",
+       "apihelp-query+backlinks-param-redirect": "\"Is halved\" means that the limits are half of the usual ones.\n----\n{{doc-apihelp-param|query+backlinks|redirect}}",
        "apihelp-query+backlinks-example-simple": "{{doc-apihelp-example|query+backlinks}}",
        "apihelp-query+backlinks-example-generator": "{{doc-apihelp-example|query+backlinks}}",
        "apihelp-query+blocks-description": "{{doc-apihelp-description|query+blocks}}",
diff --git a/includes/api/i18n/sq.json b/includes/api/i18n/sq.json
new file mode 100644 (file)
index 0000000..cac12c2
--- /dev/null
@@ -0,0 +1,11 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Ammartivari"
+               ]
+       },
+       "apihelp-block-param-reason": "Arsyeja për bllokim.",
+       "apihelp-move-param-reason": "Arsyeja për riemërim.",
+       "apihelp-tag-param-reason": "Arsyeja për ndërrimin.",
+       "apihelp-unblock-description": "Zhblloko një përdorues."
+}
index 2189d75..194e10f 100644 (file)
        "apihelp-parse-paramvalue-prop-iwlinks": "Дає інтервікі-посилання в аналізованому вікітексті.",
        "apihelp-parse-paramvalue-prop-wikitext": "Дає вихідний вікітекст, який було аналізовано.",
        "apihelp-parse-paramvalue-prop-properties": "Дає різні властивості, визначені в аналізованому вікітексті.",
-       "apihelp-parse-paramvalue-prop-limitreportdata": "Дає звіт по обмеженнях у структурованому вигляді. Не видає даних, якщо встановлено <var>$1disablepp</var>.",
-       "apihelp-parse-paramvalue-prop-limitreporthtml": "Дає HTML-версію звіту по обмеженнях. Не видає даних, якщо встановлено <var>$1disablepp</var>.",
+       "apihelp-parse-paramvalue-prop-limitreportdata": "Дає звіт по обмеженнях у структурованому вигляді. Не видає даних, якщо встановлено <var>$1disablelimitreport</var>.",
+       "apihelp-parse-paramvalue-prop-limitreporthtml": "Дає HTML-версію звіту по обмеженнях. Не видає даних, якщо встановлено <var>$1disablelimitreport</var>.",
        "apihelp-parse-paramvalue-prop-parsetree": "Синтаксичне дерево XML вмісту версії (передбачає модель вмісту <code>$1</code>)",
        "apihelp-parse-param-pst": "Зробіть трансформацію вхідних даних перед збереженням і аналізом. Дійсне лише при використанні з текстом.",
        "apihelp-parse-param-onlypst": "Зробіть трансформацію вхідних даних перед збереженням (PST), але не аналізуйте. Видає той самий вікітекст, після застосування PST. Дійсне лише у разі використання з <var>$1text</var>.",
        "apihelp-parse-param-effectivelanglinks": "Включає мовні посилання, додані розширеннями (для використання з <kbd>$1prop=langlinks</kbd>).",
        "apihelp-parse-param-section": "Видає вміст лише розділу з цим номером або при <kbd>new</kbd> створенні нового розділу.\n\n<kbd>new</kbd> розділ відзначається лише при вказанні тексту <var>text</var>.",
        "apihelp-parse-param-sectiontitle": "Заголовок нового розділу, коли <var>section</var> має значення <kbd>new</kbd>.\n\nНа відміну від редагування сторінки, це не повертається до <var>summary</var>, якщо пропустити чи лишити порожнім.",
-       "apihelp-parse-param-disablepp": "Пропустити звіт препроцесора («NewPP limit report») на виході аналізу.",
+       "apihelp-parse-param-disablelimitreport": "Пропустити звіт препроцесора («NewPP limit report») на виході аналізу.",
        "apihelp-parse-param-disableeditsection": "Пропустити посилання на редагування розділів на виході аналізу.",
        "apihelp-parse-param-generatexml": "Генерувати синтаксичне дерево XML (передбачає модель вмісту <code>$1</code>; замінено на <kbd>$2prop=parsetree</kbd>).",
        "apihelp-parse-param-preview": "Аналізувати у режимі попереднього перегляду.",
index 3ffc792..53bc4e8 100644 (file)
        "apihelp-paraminfo-param-helpformat": "Định dạng chuỗi trợ giúp.",
        "apihelp-parse-param-summary": "Lời tóm lược để phân tích.",
        "apihelp-parse-param-section": "Chỉ truy xuất nội dung của số phần này; nếu có <kbd>new</kbd> thì tạo phần mới.\n\nPhần <kbd>new</kbd> chỉ được chấp nhận khi định rõ <var>text</var>.",
-       "apihelp-parse-param-disablepp": "Bỏ qua thông báo bộ tiền xử lý (“NewPP limit report”) khi cho ra kết quả bộ xử lý.",
+       "apihelp-parse-param-disablelimitreport": "Bỏ qua thông báo bộ tiền xử lý (“NewPP limit report”) khi cho ra kết quả bộ xử lý.",
        "apihelp-parse-example-page": "Phân tích trang.",
        "apihelp-parse-example-text": "Phân tích văn bản wiki.",
        "apihelp-parse-example-texttitle": "Phân tích văn bản wiki theo tên trang.",
index e905c7b..9458fb2 100644 (file)
        "apihelp-parse-paramvalue-prop-indicators": "提供页面上使用的页面状态指示器的HTML。",
        "apihelp-parse-paramvalue-prop-iwlinks": "在被解析的wiki文本中提供跨wiki链接。",
        "apihelp-parse-paramvalue-prop-wikitext": "提供被解析的原始wiki文本。",
-       "apihelp-parse-paramvalue-prop-limitreportdata": "以结构化的方式提供限制报告。如果<var>$1disablepp</var>被设定则不提供数据。",
-       "apihelp-parse-paramvalue-prop-limitreporthtml": "提供限制报告的HTML版本。当<var>$1disablepp</var>被设置时不会提供数据。",
+       "apihelp-parse-paramvalue-prop-limitreportdata": "以结构化的方式提供限制报告。如果<var>$1disablelimitreport</var>被设定则不提供数据。",
+       "apihelp-parse-paramvalue-prop-limitreporthtml": "提供限制报告的HTML版本。当<var>$1disablelimitreport</var>被设置时不会提供数据。",
        "apihelp-parse-paramvalue-prop-parsetree": "修订内容的XML解析树(需要内容模型<code>$1</code>)",
        "apihelp-parse-param-pst": "在解析输入前,对输入做一次保存前变换处理。仅当使用文本时有效。",
        "apihelp-parse-param-effectivelanglinks": "包含由扩展提供的语言链接(用于与<kbd>$1prop=langlinks</kbd>一起使用)。",
        "apihelp-parse-param-section": "只检索此段数的内容,或只当<kbd>new</kbd>生成新的段落时检索。\n\n<kbd>new</kbd>段落只当指定<var>text</var>时受尊重。",
        "apihelp-parse-param-sectiontitle": "当<var>section</var>为<kbd>new</kbd>时新段落标题。\n\n不像页面编辑,当省略或为空时将不会备选为<var>summary</var>。",
-       "apihelp-parse-param-disablepp": "从解析器输出中省略预处理器报告(“NewPP limit report”)。",
+       "apihelp-parse-param-disablelimitreport": "从解析器输出中省略限制报告(“NewPP limit report”)。",
+       "apihelp-parse-param-disablepp": "请改用<var>$1disablelimitreport</var>。",
        "apihelp-parse-param-disableeditsection": "从解析器输出中省略编辑段落链接。",
+       "apihelp-parse-param-disabletidy": "不要在解析器输出中运行HTML清理(例如tidy)。",
        "apihelp-parse-param-generatexml": "生成XML解析树(需要内容模型<code>$1</code>;被<kbd>$2prop=parsetree</kbd>所取代)。",
        "apihelp-parse-param-preview": "在预览模式下解析。",
        "apihelp-parse-param-sectionpreview": "在小节预览模式下解析 (同时要启用预览模式)。",
        "apihelp-query+alltransclusions-param-namespace": "要列举的名字空间。",
        "apihelp-query+alltransclusions-param-limit": "要返回的总计项目。",
        "apihelp-query+alltransclusions-param-dir": "罗列所采用的方向。",
+       "apihelp-query+alltransclusions-example-B": "列出嵌入的标题,包括丢失的,带有来自的页面ID,从<kbd>B</kbd>开始。",
        "apihelp-query+alltransclusions-example-unique": "列出孤立嵌入标题",
        "apihelp-query+alltransclusions-example-unique-generator": "获取所有嵌入的标题,并标记缺失的。",
        "apihelp-query+alltransclusions-example-generator": "获得包含嵌入内容的页面。",
        "apihelp-query+categorymembers-param-end": "列举的结尾时间戳。只能与<kbd>$1sort=timestamp</kbd>一起使用。",
        "apihelp-query+categorymembers-param-starthexsortkey": "开始列举的关键词,由<kbd>$1prop=sortkey</kbd>返回。不能与<kbd>$1sort=sortkey</kbd>一起使用。",
        "apihelp-query+categorymembers-param-endhexsortkey": "结束列举的关键词,由<kbd>$1prop=sortkey</kbd>返回。不能与<kbd>$1sort=sortkey</kbd>一起使用。",
+       "apihelp-query+categorymembers-param-startsortkeyprefix": "要开始列举的排序关键词前缀。只能与<kbd>$1sort=sortkey</kbd>一起使用。覆盖<var>$1starthexsortkey</var>。",
        "apihelp-query+categorymembers-param-startsortkey": "请改用$1starthexsortkey。",
        "apihelp-query+categorymembers-param-endsortkey": "请改用$1endhexsortkey。",
        "apihelp-query+categorymembers-example-simple": "获取<kbd>Category:Physics</kbd>中的前10个页面。",
        "apihelp-query+filearchive-paramvalue-prop-sha1": "为文件加入SHA-1哈希值。",
        "apihelp-query+filearchive-paramvalue-prop-timestamp": "为已上传版本添加时间戳。",
        "apihelp-query+filearchive-paramvalue-prop-user": "添加上传了图片版本的用户。",
+       "apihelp-query+filearchive-paramvalue-prop-size": "添加图片大小(字节)及其高度、宽度和页面计数(如果可以)。",
        "apihelp-query+filearchive-paramvalue-prop-dimensions": "用于大小的别名。",
        "apihelp-query+filearchive-paramvalue-prop-description": "添加图片版本的说明。",
        "apihelp-query+filearchive-paramvalue-prop-parseddescription": "解析版本的描述。",
        "apihelp-query+fileusage-paramvalue-prop-redirect": "标记作为重定向的页面。",
        "apihelp-query+fileusage-param-namespace": "只包括这些名字空间的页面。",
        "apihelp-query+fileusage-param-limit": "返回多少。",
+       "apihelp-query+fileusage-param-show": "只显示符合以下标准的项:\n;redirect:只显示重定向。\n;!redirect:只显示非重定向。",
        "apihelp-query+fileusage-example-simple": "获取使用[[:File:Example.jpg]]的页面列表。",
        "apihelp-query+fileusage-example-generator": "获取有关使用[[:File:Example.jpg]]的页面的信息。",
        "apihelp-query+imageinfo-description": "返回文件信息和上传历史。",
        "apihelp-query+info-paramvalue-prop-subjectid": "每个讨论页的母页面的页面ID。",
        "apihelp-query+info-paramvalue-prop-readable": "用户是否可以阅读此页面。",
        "apihelp-query+info-paramvalue-prop-preload": "提供由EditFormPreloadText返回的文本。",
+       "apihelp-query+info-paramvalue-prop-displaytitle": "在页面标题实际显示的地方提供方式。",
        "apihelp-query+info-param-testactions": "测试当前用户是否可以在页面上执行某种操作。",
        "apihelp-query+info-param-token": "请改用[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]。",
        "apihelp-query+info-example-simple": "获取有关页面<kbd>Main Page</kbd>的信息。",
        "apihelp-query+logevents-paramvalue-prop-title": "为日志事件添加页面标题。",
        "apihelp-query+logevents-paramvalue-prop-type": "添加日志活动的类型。",
        "apihelp-query+logevents-paramvalue-prop-user": "为日志事件添加用户责任。",
+       "apihelp-query+logevents-paramvalue-prop-userid": "为日志事件添加对此负责的用户ID。",
        "apihelp-query+logevents-paramvalue-prop-timestamp": "为日志活动添加时间戳。",
        "apihelp-query+logevents-paramvalue-prop-comment": "添加日志活动的摘要。",
        "apihelp-query+logevents-paramvalue-prop-parsedcomment": "添加被解析的日志活动的摘要。",
        "apihelp-query+protectedtitles-paramvalue-prop-userid": "添加对页面添加保护的用户ID。",
        "apihelp-query+protectedtitles-paramvalue-prop-comment": "为保护添加摘要。",
        "apihelp-query+protectedtitles-paramvalue-prop-parsedcomment": "为保护添加解析的摘要。",
+       "apihelp-query+protectedtitles-paramvalue-prop-expiry": "添加保护将被提升时的时间戳。",
        "apihelp-query+protectedtitles-paramvalue-prop-level": "添加保护级别。",
        "apihelp-query+protectedtitles-example-simple": "受保护标题列表。",
        "apihelp-query+protectedtitles-example-generator": "找到主命名空间中已保护的标题的链接。",
index 10b4fb0..1296c13 100644 (file)
@@ -157,7 +157,7 @@ class BacklinkCache {
         * @param string $table
         * @param int|bool $startId
         * @param int|bool $endId
-        * @param int|INF $max
+        * @param int $max
         * @return TitleArrayFromResult
         */
        public function getLinks( $table, $startId = false, $endId = false, $max = INF ) {
@@ -169,7 +169,7 @@ class BacklinkCache {
         * @param string $table
         * @param int|bool $startId
         * @param int|bool $endId
-        * @param int|INF $max
+        * @param int $max
         * @param string $select 'all' or 'ids'
         * @return ResultWrapper
         */
@@ -319,7 +319,7 @@ class BacklinkCache {
        /**
         * Get the approximate number of backlinks
         * @param string $table
-        * @param int|INF $max Only count up to this many backlinks
+        * @param int $max Only count up to this many backlinks
         * @return int
         */
        public function getNumLinks( $table, $max = INF ) {
index 9aac37a..f22c860 100644 (file)
  */
 define( 'MSG_CACHE_VERSION', 2 );
 
-/**
- * Memcached timeout when loading a key.
- * See MessageCache::load()
- */
-define( 'MSG_LOAD_TIMEOUT', 60 );
-
 /**
  * Message cache
  * Performs various MediaWiki namespace-related functions
@@ -41,9 +35,9 @@ define( 'MSG_LOAD_TIMEOUT', 60 );
 class MessageCache {
        const FOR_UPDATE = 1; // force message reload
 
-       /** How long memcached locks last */
-       const WAIT_SEC = 30;
        /** How long to wait for memcached locks */
+       const WAIT_SEC = 15;
+       /** How long memcached locks last */
        const LOCK_TTL = 30;
 
        /**
@@ -190,6 +184,7 @@ class MessageCache {
         */
        protected function getLocalCache( $code ) {
                $cacheKey = wfMemcKey( __CLASS__, $code );
+
                return $this->localCache->get( $cacheKey );
        }
 
@@ -226,8 +221,6 @@ class MessageCache {
         * @return bool
         */
        function load( $code = false, $mode = null ) {
-               global $wgUseLocalMessageCache;
-
                if ( !is_string( $code ) ) {
                        # This isn't really nice, so at least make a note about it and try to
                        # fall back
@@ -260,25 +253,23 @@ class MessageCache {
                # or local cache goes out of date (e.g. due to replace() on some other server)
                list( $hash, $hashVolatile ) = $this->getValidationHash( $code );
 
-               if ( $wgUseLocalMessageCache && $hash ) {
-                       # Try the local cache and check against the cluster hash key...
-                       $cache = $this->getLocalCache( $code );
-                       if ( !$cache ) {
-                               $where[] = 'local cache is empty';
-                       } elseif ( !isset( $cache['HASH'] ) || $cache['HASH'] !== $hash ) {
-                               $where[] = 'local cache has the wrong hash';
-                               $staleCache = $cache;
-                       } elseif ( $this->isCacheExpired( $cache ) ) {
-                               $where[] = 'local cache is expired';
-                               $staleCache = $cache;
-                       } elseif ( $hashVolatile ) {
-                               $where[] = 'local cache validation key is expired/volatile';
-                               $staleCache = $cache;
-                       } else {
-                               $where[] = 'got from local cache';
-                               $success = true;
-                               $this->mCache[$code] = $cache;
-                       }
+               # Try the local cache and check against the cluster hash key...
+               $cache = $this->getLocalCache( $code );
+               if ( !$cache ) {
+                       $where[] = 'local cache is empty';
+               } elseif ( !isset( $cache['HASH'] ) || $cache['HASH'] !== $hash ) {
+                       $where[] = 'local cache has the wrong hash';
+                       $staleCache = $cache;
+               } elseif ( $this->isCacheExpired( $cache ) ) {
+                       $where[] = 'local cache is expired';
+                       $staleCache = $cache;
+               } elseif ( $hashVolatile ) {
+                       $where[] = 'local cache validation key is expired/volatile';
+                       $staleCache = $cache;
+               } else {
+                       $where[] = 'got from local cache';
+                       $success = true;
+                       $this->mCache[$code] = $cache;
                }
 
                if ( !$success ) {
@@ -286,7 +277,7 @@ class MessageCache {
                        # Try the global cache. If it is empty, try to acquire a lock. If
                        # the lock can't be acquired, wait for the other thread to finish
                        # and then try the global cache a second time.
-                       for ( $failedAttempts = 0; $failedAttempts < 2; $failedAttempts++ ) {
+                       for ( $failedAttempts = 0; $failedAttempts <= 1; $failedAttempts++ ) {
                                if ( $hashVolatile && $staleCache ) {
                                        # Do not bother fetching the whole cache blob to avoid I/O.
                                        # Instead, just try to get the non-blocking $statusKey lock
@@ -320,8 +311,9 @@ class MessageCache {
 
                                # We need to call loadFromDB. Limit the concurrency to one process.
                                # This prevents the site from going down when the cache expires.
-                               # Note that the slam-protection lock here is non-blocking.
-                               if ( $this->loadFromDBWithLock( $code, $where ) ) {
+                               # Note that the DB slam protection lock here is non-blocking.
+                               $loadStatus = $this->loadFromDBWithLock( $code, $where, $mode );
+                               if ( $loadStatus === true ) {
                                        $success = true;
                                        break;
                                } elseif ( $staleCache ) {
@@ -331,23 +323,19 @@ class MessageCache {
                                        $success = true;
                                        break;
                                } elseif ( $failedAttempts > 0 ) {
-                                       # Already retried once, still failed, so don't do another lock/unlock cycle
+                                       # Already blocked once, so avoid another lock/unlock cycle.
                                        # This case will typically be hit if memcached is down, or if
-                                       # loadFromDB() takes longer than MSG_WAIT_TIMEOUT
+                                       # loadFromDB() takes longer than LOCK_WAIT.
                                        $where[] = "could not acquire status key.";
                                        break;
+                               } elseif ( $loadStatus === 'cantacquire' ) {
+                                       # Wait for the other thread to finish, then retry. Normally,
+                                       # the memcached get() will then yeild the other thread's result.
+                                       $where[] = 'waited for other thread to complete';
+                                       $this->getReentrantScopedLock( $cacheKey );
                                } else {
-                                       $statusKey = wfMemcKey( 'messages', $code, 'status' );
-                                       $status = $this->mMemc->get( $statusKey );
-                                       if ( $status === 'error' ) {
-                                               # Disable cache
-                                               break;
-                                       } else {
-                                               # Wait for the other thread to finish, then retry. Normally,
-                                               # the memcached get() will then yeild the other thread's result.
-                                               $where[] = 'waited for other thread to complete';
-                                               $this->getReentrantScopedLock( $cacheKey );
-                                       }
+                                       # Disable cache; $loadStatus is 'disabled'
+                                       break;
                                }
                        }
                }
@@ -372,47 +360,39 @@ class MessageCache {
        /**
         * @param string $code
         * @param array $where List of wfDebug() comments
-        * @return bool Lock acquired and loadFromDB() called
+        * @param integer $mode Use MessageCache::FOR_UPDATE to use DB_MASTER
+        * @return bool|string True on success or one of ("cantacquire", "disabled")
         */
-       protected function loadFromDBWithLock( $code, array &$where ) {
+       protected function loadFromDBWithLock( $code, array &$where, $mode = null ) {
                global $wgUseLocalMessageCache;
 
-               $memCache = $this->mMemc;
-
-               # Get the non-blocking status key lock. This lets the caller quickly know
-               # to use any stale cache lying around. Otherwise, it may do a blocking
-               # lock to try to obtain the messages.
+               # If cache updates on all levels fail, give up on message overrides.
+               # This is to avoid easy site outages; see $saveSuccess comments below.
                $statusKey = wfMemcKey( 'messages', $code, 'status' );
-               if ( !$memCache->add( $statusKey, 'loading', MSG_LOAD_TIMEOUT ) ) {
-                       return false; // could not acquire lock
+               $status = $this->mMemc->get( $statusKey );
+               if ( $status === 'error' ) {
+                       $where[] = "could not load; method is still globally disabled";
+                       return 'disabled';
                }
 
-               # Unlock the status key if there is an exception
-               $statusUnlocker = new ScopedCallback( function () use ( $memCache, $statusKey ) {
-                       $memCache->delete( $statusKey );
-               } );
-
                # Now let's regenerate
                $where[] = 'loading from database';
 
+               # Lock the cache to prevent conflicting writes.
+               # This lock is non-blocking so stale cache can quickly be used.
+               # Note that load() will call a blocking getReentrantScopedLock()
+               # after this if it really need to wait for any current thread.
                $cacheKey = wfMemcKey( 'messages', $code );
-               # Lock the cache to prevent conflicting writes
-               # If this lock fails, it doesn't really matter, it just means the
-               # write is potentially non-atomic, e.g. the results of a replace()
-               # may be discarded.
-               $mainUnlocker = $this->getReentrantScopedLock( $cacheKey );
-               if ( !$mainUnlocker ) {
+               $scopedLock = $this->getReentrantScopedLock( $cacheKey, 0 );
+               if ( !$scopedLock ) {
                        $where[] = 'could not acquire main lock';
+                       return 'cantacquire';
                }
 
-               $cache = $this->loadFromDB( $code );
+               $cache = $this->loadFromDB( $code, $mode );
                $this->mCache[$code] = $cache;
                $saveSuccess = $this->saveToCaches( $cache, 'all', $code );
 
-               # Unlock
-               ScopedCallback::consume( $mainUnlocker );
-               ScopedCallback::consume( $statusUnlocker );
-
                if ( !$saveSuccess ) {
                        # Cache save has failed.
                        # There are two main scenarios where this could be a problem:
@@ -430,7 +410,7 @@ class MessageCache {
                        # overhead on every request, and thus saves the wiki from
                        # complete downtime under moderate traffic conditions.
                        if ( !$wgUseLocalMessageCache ) {
-                               $memCache->set( $statusKey, 'error', 60 * 5 );
+                               $this->mMemc->set( $statusKey, 'error', 60 * 5 );
                                $where[] = 'could not save cache, disabled globally for 5 minutes';
                        } else {
                                $where[] = "could not save global cache";
@@ -445,13 +425,15 @@ class MessageCache {
         * $wgMaxMsgCacheEntrySize are assigned a special value, and are loaded
         * on-demand from the database later.
         *
-        * @param string $code Language code.
-        * @return array Loaded messages for storing in caches.
+        * @param string $code Language code
+        * @param integer $mode Use MessageCache::FOR_UPDATE to skip process cache
+        * @return array Loaded messages for storing in caches
         */
-       function loadFromDB( $code ) {
+       function loadFromDB( $code, $mode = null ) {
                global $wgMaxMsgCacheEntrySize, $wgLanguageCode, $wgAdaptiveMessageCache;
 
-               $dbr = wfGetDB( DB_SLAVE );
+               $dbr = wfGetDB( ( $mode == self::FOR_UPDATE ) ? DB_MASTER : DB_SLAVE );
+
                $cache = array();
 
                # Common conditions
@@ -532,7 +514,7 @@ class MessageCache {
        /**
         * Updates cache as necessary when message page is changed
         *
-        * @param string $title Name of the page changed.
+        * @param string|bool $title Name of the page changed (false if deleted)
         * @param mixed $text New contents of the page.
         */
        public function replace( $title, $text ) {
@@ -544,37 +526,44 @@ class MessageCache {
 
                list( $msg, $code ) = $this->figureMessage( $title );
                if ( strpos( $title, '/' ) !== false && $code === $wgLanguageCode ) {
-                       # Content language overrides do not use the /<code> suffix
+                       // Content language overrides do not use the /<code> suffix
                        return;
                }
 
-               # Note that if the cache is volatile, load() may trigger a DB fetch.
-               # In that case we reenter/reuse the existing cache key lock to avoid
-               # a self-deadlock. This is safe as no reads happen *directly* in this
-               # method between getReentrantScopedLock() and load() below. There is
-               # no risk of data "changing under our feet" for replace().
+               // Note that if the cache is volatile, load() may trigger a DB fetch.
+               // In that case we reenter/reuse the existing cache key lock to avoid
+               // a self-deadlock. This is safe as no reads happen *directly* in this
+               // method between getReentrantScopedLock() and load() below. There is
+               // no risk of data "changing under our feet" for replace().
                $cacheKey = wfMemcKey( 'messages', $code );
                $scopedLock = $this->getReentrantScopedLock( $cacheKey );
                $this->load( $code, self::FOR_UPDATE );
 
                $titleKey = wfMemcKey( 'messages', 'individual', $title );
-
                if ( $text === false ) {
-                       # Article was deleted
+                       // Article was deleted
                        $this->mCache[$code][$title] = '!NONEXISTENT';
-                       $this->mMemc->delete( $titleKey );
+                       $this->wanCache->delete( $titleKey );
                } elseif ( strlen( $text ) > $wgMaxMsgCacheEntrySize ) {
-                       # Check for size
+                       // Check for size
                        $this->mCache[$code][$title] = '!TOO BIG';
-                       $this->mMemc->set( $titleKey, ' ' . $text, $this->mExpiry );
+                       $this->wanCache->set( $titleKey, ' ' . $text, $this->mExpiry );
                } else {
                        $this->mCache[$code][$title] = ' ' . $text;
-                       $this->mMemc->delete( $titleKey );
+                       $this->wanCache->delete( $titleKey );
+               }
+
+               // Mark this cache as definitely "latest" (non-volatile) so
+               // load() calls do try to refresh the cache with slave data
+               $this->mCache[$code]['LATEST'] = time();
+
+               // Update caches if the lock was acquired
+               if ( $scopedLock ) {
+                       $this->saveToCaches( $this->mCache[$code], 'all', $code );
                }
 
-               # Update caches
-               $this->saveToCaches( $this->mCache[$code], 'all', $code );
                ScopedCallback::consume( $scopedLock );
+               // Relay the purge to APC and other DCs
                $this->wanCache->touchCheckKey( wfMemcKey( 'messages', $code ) );
 
                // Also delete cached sidebar... just in case it is affected
@@ -626,9 +615,7 @@ class MessageCache {
         * @param string|bool $code Language code (default: false)
         * @return bool
         */
-       protected function saveToCaches( $cache, $dest, $code = false ) {
-               global $wgUseLocalMessageCache;
-
+       protected function saveToCaches( array $cache, $dest, $code = false ) {
                if ( $dest === 'all' ) {
                        $cacheKey = wfMemcKey( 'messages', $code );
                        $success = $this->mMemc->set( $cacheKey, $cache );
@@ -636,18 +623,14 @@ class MessageCache {
                        $success = true;
                }
 
-               $this->setValidationHash( $code, $cache['HASH'] );
-
-               # Save to local cache
-               if ( $wgUseLocalMessageCache ) {
-                       $this->saveToLocalCache( $code, $cache );
-               }
+               $this->setValidationHash( $code, $cache );
+               $this->saveToLocalCache( $code, $cache );
 
                return $success;
        }
 
        /**
-        * Get the md5 used to validate the local disk cache
+        * Get the md5 used to validate the local APC cache
         *
         * @param string $code
         * @return array (hash or false, bool expiry/volatility status)
@@ -655,35 +638,56 @@ class MessageCache {
        protected function getValidationHash( $code ) {
                $curTTL = null;
                $value = $this->wanCache->get(
-                       wfMemcKey( 'messages', $code, 'hash' ),
+                       wfMemcKey( 'messages', $code, 'hash', 'v1' ),
                        $curTTL,
                        array( wfMemcKey( 'messages', $code ) )
                );
-               $expired = ( $curTTL === null || $curTTL < 0 );
 
-               return array( $value, $expired );
+               if ( !$value ) {
+                       // No hash found at all; cache must regenerate to be safe
+                       $hash = false;
+                       $expired = true;
+               } else {
+                       $hash = $value['hash'];
+                       if ( ( time() - $value['latest'] ) < WANObjectCache::HOLDOFF_TTL ) {
+                               // Cache was recently updated via replace() and should be up-to-date
+                               $expired = false;
+                       } else {
+                               // See if the "check" key was bumped after the hash was generated
+                               $expired = ( $curTTL < 0 );
+                       }
+               }
+
+               return array( $hash, $expired );
        }
 
        /**
         * Set the md5 used to validate the local disk cache
         *
+        * If $cache has a 'LATEST' UNIX timestamp key, then the hash will not
+        * be treated as "volatile" by getValidationHash() for the next few seconds
+        *
         * @param string $code
-        * @param string $hash
+        * @param array $cache Cached messages with a version
         */
-       protected function setValidationHash( $code, $hash ) {
+       protected function setValidationHash( $code, array $cache ) {
                $this->wanCache->set(
-                       wfMemcKey( 'messages', $code, 'hash' ),
-                       $hash,
+                       wfMemcKey( 'messages', $code, 'hash', 'v1' ),
+                       array(
+                               'hash' => $cache['HASH'],
+                               'latest' => isset( $cache['LATEST'] ) ? $cache['LATEST'] : 0
+                       ),
                        WANObjectCache::TTL_NONE
                );
        }
 
        /**
         * @param string $key A language message cache key that stores blobs
+        * @param integer $timeout Wait timeout in seconds
         * @return null|ScopedCallback
         */
-       protected function getReentrantScopedLock( $key ) {
-               return $this->mMemc->getScopedLock( $key, self::WAIT_SEC, self::LOCK_TTL, __METHOD__ );
+       protected function getReentrantScopedLock( $key, $timeout = self::WAIT_SEC ) {
+               return $this->mMemc->getScopedLock( $key, $timeout, self::LOCK_TTL, __METHOD__ );
        }
 
        /**
@@ -927,7 +931,7 @@ class MessageCache {
 
                # Try the individual message cache
                $titleKey = wfMemcKey( 'messages', 'individual', $title );
-               $entry = $this->mMemc->get( $titleKey );
+               $entry = $this->wanCache->get( $titleKey );
                if ( $entry ) {
                        if ( substr( $entry, 0, 1 ) === ' ' ) {
                                $this->mCache[$code][$title] = $entry;
@@ -941,14 +945,12 @@ class MessageCache {
                                return false;
                        } else {
                                # Corrupt/obsolete entry, delete it
-                               $this->mMemc->delete( $titleKey );
+                               $this->wanCache->delete( $titleKey );
                        }
                }
 
                # Try loading it from the database
-               $revision = Revision::newFromTitle(
-                       Title::makeTitle( NS_MEDIAWIKI, $title ), false, Revision::READ_LATEST
-               );
+               $revision = Revision::newFromTitle( Title::makeTitle( NS_MEDIAWIKI, $title ) );
                if ( $revision ) {
                        $content = $revision->getContent();
                        if ( !$content ) {
@@ -969,13 +971,13 @@ class MessageCache {
                                        wfDebugLog(
                                                'MessageCache',
                                                __METHOD__ . ": message content doesn't provide wikitext "
-                                                       . "(content model: " . $content->getContentHandler() . ")"
+                                                       . "(content model: " . $content->getModel() . ")"
                                        );
 
                                        $message = false; // negative caching
                                } else {
                                        $this->mCache[$code][$title] = ' ' . $message;
-                                       $this->mMemc->set( $titleKey, ' ' . $message, $this->mExpiry );
+                                       $this->wanCache->set( $titleKey, ' ' . $message, $this->mExpiry );
                                }
                        }
                } else {
@@ -984,7 +986,7 @@ class MessageCache {
 
                if ( $message === false ) { // negative caching
                        $this->mCache[$code][$title] = '!NONEXISTENT';
-                       $this->mMemc->set( $titleKey, '!NONEXISTENT', $this->mExpiry );
+                       $this->wanCache->set( $titleKey, '!NONEXISTENT', $this->mExpiry );
                }
 
                return $message;
diff --git a/includes/compat/IPSetCompat.php b/includes/compat/IPSetCompat.php
new file mode 100644 (file)
index 0000000..79c6000
--- /dev/null
@@ -0,0 +1,28 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+/**
+ * Backward-compatibility alias for IPSet, which was moved out
+ * into an external library and namespaced.
+ *
+ * @deprecated since 1.26 use IPSet\IPSet directly
+ */
+class IPSet extends IPSet\IPSet {
+}
index dfa01e2..ae5f742 100644 (file)
@@ -49,7 +49,7 @@ class CssContentHandler extends CodeContentHandler {
         *
         * @param Title $destination
         * @param string $text ignored
-        * @return JavaScriptContent
+        * @return CssContent
         */
        public function makeRedirectContent( Title $destination, $text = '' ) {
                // The parameters are passed as a string so the / is not url-encoded by wfArrayToCgi
index aa8e2a0..4d1b1c0 100644 (file)
@@ -1901,9 +1901,6 @@ abstract class DatabaseBase implements IDatabase {
         *     This causes a multi-row INSERT on DBMSs that support it. The keys in
         *     each subarray must be identical to each other, and in the same order.
         *
-        * Usually throws a DBQueryError on failure. If errors are explicitly ignored,
-        * returns success.
-        *
         * $options is an array of options, with boolean options encoded as values
         * with numeric keys, in the same style as $options in
         * DatabaseBase::select(). Supported options are:
@@ -1919,6 +1916,9 @@ abstract class DatabaseBase implements IDatabase {
         * @param string $fname Calling function name (use __METHOD__) for logs/profiling
         * @param array $options Array of options
         *
+        * @throws DBQueryError Usually throws a DBQueryError on failure. If errors are explicitly ignored,
+        * returns success.
+        *
         * @return bool
         */
        public function insert( $table, $a, $fname = __METHOD__, $options = array() ) {
index e0a08b2..408194f 100644 (file)
@@ -715,6 +715,11 @@ class SwiftFileBackend extends FileBackendStore {
                        return $objHdrs; // failed
                }
 
+               // Find prior custom HTTP headers
+               $postHeaders = $this->getCustomHeaders( $objHdrs );
+               // Find prior metadata headers
+               $postHeaders += $this->getMetadataHeaders( $objHdrs );
+
                $status = Status::newGood();
                /** @noinspection PhpUnusedLocalVariableInspection */
                $scopeLockS = $this->getScopedFileLocks( array( $path ), LockManager::LOCK_UW, $status );
@@ -724,11 +729,13 @@ class SwiftFileBackend extends FileBackendStore {
                                $hash = $tmpFile->getSha1Base36();
                                if ( $hash !== false ) {
                                        $objHdrs['x-object-meta-sha1base36'] = $hash;
+                                       // Merge new SHA1 header into the old ones
+                                       $postHeaders['x-object-meta-sha1base36'] = $hash;
                                        list( $srcCont, $srcRel ) = $this->resolveStoragePathReal( $path );
-                                       list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $this->http->run( array(
+                                       list( $rcode ) = $this->http->run( array(
                                                'method' => 'POST',
                                                'url' => $this->storageUrl( $auth, $srcCont, $srcRel ),
-                                               'headers' => $this->authTokenHeaders( $auth ) + $objHdrs
+                                               'headers' => $this->authTokenHeaders( $auth ) + $postHeaders
                                        ) );
                                        if ( $rcode >= 200 && $rcode <= 299 ) {
                                                $this->deleteFileCache( $path );
index b0b08a6..56a23ad 100644 (file)
@@ -28,7 +28,7 @@ class HTMLButtonField extends HTMLFormField {
                ) {
                        $prefix = 'mw-ui-';
                        // add mw-ui-button separately, so the descriptor doesn't need to set it
-                       $flags .= $prefix.'button';
+                       $flags .= ' ' . $prefix.'button';
                }
                foreach ( $this->mFlags as $flag ) {
                        $flags .= ' ' . $prefix . $flag;
index 0fab033..13756e3 100644 (file)
@@ -920,7 +920,7 @@ abstract class HTMLFormField {
         * @return array Attributes
         */
        public function getAttributes( array $list, array $mappings = null ) {
-               static $boolAttribs = array( 'disabled', 'required', 'multiple', 'readonly' );
+               static $boolAttribs = array( 'disabled', 'required', 'autofocus', 'multiple', 'readonly' );
 
                $ret = array();
                foreach ( $list as $key ) {
@@ -928,7 +928,7 @@ abstract class HTMLFormField {
 
                        if ( in_array( $key, $boolAttribs ) ) {
                                if ( !empty( $this->mParams[$key] ) ) {
-                                       $ret[$mappedKey] = '';
+                                       $ret[$mappedKey] = $mappedKey;
                                }
                        } elseif ( isset( $this->mParams[$key] ) ) {
                                $ret[$mappedKey] = $this->mParams[$key];
index 40cff47..157116d 100644 (file)
@@ -113,11 +113,6 @@ class HTMLTextField extends HTMLFormField {
                        'tabindex' => 'tabIndex',
                ) );
 
-               if ( isset( $attribs['readOnly'] ) ) {
-                       // This needs to be set to a boolean value
-                       $attribs['readOnly'] = true;
-               }
-
                $type = $this->getType( $attribs );
 
                return $this->getInputWidget( array(
index 7b1cfdc..09b5929 100644 (file)
@@ -332,9 +332,6 @@ if ( !defined( 'MEDIAWIKI' ) ) {
 ## https://www.mediawiki.org/wiki/Manual:Short_URL
 \$wgScriptPath = \"{$this->values['wgScriptPath']}\";
 ${serverSetting}
-## The relative URL path to the skins directory
-\$wgStylePath = \"\$wgScriptPath/skins\";
-\$wgResourceBasePath = \$wgScriptPath;
 
 ## The relative URL path to the logo.  Make sure you change this from the default,
 ## or else you'll overwrite your logo when you upgrade!
index 36d2c1d..aa60c01 100644 (file)
@@ -267,12 +267,14 @@ class MysqlUpdater extends DatabaseUpdater {
                                'patch-fa_major_mime-chemical.sql' ),
 
                        // 1.25
-                       array( 'dropTable', 'hitcounter' ),
-                       array( 'dropField', 'site_stats', 'ss_total_views', 'patch-drop-ss_total_views.sql' ),
-                       array( 'dropField', 'page', 'page_counter', 'patch-drop-page_counter.sql' ),
                        array( 'doUserNewTalkUseridUnsigned' ),
                        // note this patch covers other _comment and _description fields too
                        array( 'modifyField', 'recentchanges', 'rc_comment', 'patch-editsummary-length.sql' ),
+
+                       // 1.26
+                       array( 'dropTable', 'hitcounter' ),
+                       array( 'dropField', 'site_stats', 'ss_total_views', 'patch-drop-ss_total_views.sql' ),
+                       array( 'dropField', 'page', 'page_counter', 'patch-drop-page_counter.sql' ),
                );
        }
 
index 3a73c3e..b28a40d 100644 (file)
@@ -1,8 +1,12 @@
 {
        "@metadata": {
                "authors": [
-                       "Geitost"
+                       "Geitost",
+                       "Das Schäfchen"
                ]
        },
+       "config-copyright": "=== Lizenz und Nutzungsbedingungen ===\n\n$1\n\nDieses Programm ist freie Software, d. h. es kann, gemäss den Bedingungen der von der Free Software Foundation veröffentlichten ''GNU General Public License'', weiterverteilt und/oder modifiziert werden. Dabei kann die Version 2, oder nach eigenem Ermessen, jede neuere Version der Lizenz verwendet werden.\n\nDieses Programm wird in der Hoffnung verteilt, dass es nützlich sein wird, allerdings '''ohne jegliche Garantie''' und sogar ohne die implizierte Garantie einer '''Marktgängigkeit''' oder '''Eignung für einen bestimmten Zweck'''. Hierzu sind weitere Hinweise in der ''GNU General Public License'' enthalten.\n\nEine <doclink href=Copying>Kopie der GNU General Public License</doclink> sollte zusammen mit diesem Programm verteilt worden sein. Sofern dies nicht der Fall war, kann eine Kopie bei der Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, schriftlich angefordert oder auf deren Website [http://www.gnu.org/copyleft/gpl.html online gelesen] werden.",
+       "config-unicode-pure-php-warning": "'''Warnung:''' Die [http://pecl.php.net/intl PECL-Erweiterung intl] ist für die Unicode-Normalisierung nicht verfügbar, so dass stattdessen die langsame pure-PHP-Implementierung genutzt wird.\nSofern eine Website mit grosser Benutzeranzahl betrieben wird, sollten weitere Informationen auf der Webseite [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations Unicode-Normalisierung (en)] gelesen werden.",
+       "config-uploads-not-safe": "'''Warnung:''' Das Standardverzeichnis für hochgeladene Dateien <code>$1</code> ist für die willkürliche Ausführung von Skripten anfällig.\nObwohl MediaWiki die hochgeladenen Dateien auf Sicherheitsrisiken überprüft, wird dennoch dringend empfohlen, diese [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security#Upload_security Sicherheitslücke] zu schliessen, bevor das Hochladen von Dateien aktiviert wird.",
        "config-license-help": "Viele öffentliche Wikis publizieren alle Beiträge unter einer [http://freedomdefined.org/Definition/De freien Lizenz.]\nDies trägt dazu bei, ein Gefühl von Gemeinschaft zu schaffen, und ermutigt zu längerfristiger Mitarbeit.\nHingegen ist im Allgemeinen eine freie Lizenz auf geschlossenen Wikis nicht notwendig.\n\nSofern man Texte aus der Wikipedia verwenden möchte und umgekehrt, sollte die ''Creative-Commons''-Lizenz „Namensnennung – Weitergabe unter gleichen Bedingungen“ gewählt werden.\n\nDie Wikipedia nutzte vormals die GNU-Lizenz für freie Dokumentation (GFDL).\nDie GFDL ist eine gültige Lizenz, die allerdings schwer zu verstehen ist.\nEs ist zudem schwierig, gemäss dieser Lizenz lizenzierte Inhalte wiederzuverwenden."
 }
index 8318e9c..f5dff47 100644 (file)
        "config-page-install": "តំលើង",
        "config-page-complete": "បញ្ចប់!",
        "config-page-restart": "តំលើងឡើងវិញ",
+       "config-install-sysop": "កំពុងបង្កើតគណនីអភិបាល",
        "config-help": "ជំនួយ",
+       "config-help-tooltip": "ចុចដើម្បីពន្លាត",
+       "config-nofile": "រកមិនឃើញឯកសារ \"$1\" ទេ។ វាប្រហែលជាត្រូវបានលុបចោលហើយ។",
        "mainpagetext": "'''មេឌាវិគីត្រូវបានដំឡើងសំរេចហើយ​។'''",
        "mainpagedocfooter": "សូមពិនិត្យមើល [//meta.wikimedia.org/wiki/Help:Contents ខ្លឹមសារ​ណែនាំ​ប្រើប្រាស់]សម្រាប់​ព័ត៌មាន​​បន្ថែមអំពី​ការប្រើប្រាស់សូហ្វវែរវិគី​។\n\n== ការចាប់ផ្ដើម ==\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings បញ្ជីការកំណត់នានា]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ/km សំណួរញឹកញាប់​ក្នុងមេឌាវិគី]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce បញ្ជី​អ៊ីមែលផ្សព្វផ្សាយ​របស់​មេឌាវិគី]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources ការប្រែសម្រួលមេឌាវិគីសម្រាប់ភាសារបស់អ្នក]"
 }
index 69da6d3..573172d 100644 (file)
@@ -47,7 +47,7 @@
        "config-help-restart": "입력한 모든 저장된 데이터를 지우고 설치 과정을 다시 시작하겠습니까?",
        "config-restart": "예, 다시 시작합니다",
        "config-welcome": "=== 사용 환경 검사 ===\n기본 검사는 지금 이 환경이 미디어위키 설치에 적합한지 수행합니다.\n설치를 완료하는 방법에 대한 지원을 찾는다면 이 정보를 포함해야 하는 것을 기억하세요.",
-       "config-copyright": "=== 저작권 및 약관 ===\n\n$1\n\n이 프로그램은 자유 소프트웨어입니다. 당신은 자유 소프트웨어 재단이 발표한 GNU 일반 공중 사용 허가서 버전 2나 그 이후 버전에 따라 이 프로그램을 재배포하거나 수정할 수 있습니다.\n\n이 프로그램이 유용하게 사용될 수 있기를 바라지만 <strong>상용으로 사용</strong>되거나 <strong>특정 목적에 맞을 것</strong>이라는 것을 <strong>보증하지 않습니다</strong>.\n자세한 내용은 GNU 일반 공중 사용 허가서를 참하십시오.\n\n당신은 이 프로그램을 통해 <doclink href=Copying>GNU 일반 공중 사용 허가서 전문</doclink>을 받았습니다. 그렇지 않다면, Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA로 편지를 보내주시거나 [http://www.gnu.org/copyleft/gpl.html 온라인으로 읽어보시기] 바랍니다.",
+       "config-copyright": "=== 저작권 및 약관 ===\n\n$1\n\n이 프로그램은 자유 소프트웨어입니다. 당신은 자유 소프트웨어 재단이 발표한 GNU 일반 공중 사용 허가서 버전 2나 그 이후 버전에 따라 이 프로그램을 재배포하거나 수정할 수 있습니다.\n\n이 프로그램이 유용하게 사용될 수 있기를 바라지만 <strong>상용으로 사용</strong>되거나 <strong>특정 목적에 맞을 것</strong>이라는 것을 <strong>보증하지 않습니다</strong>.\n자세한 내용은 GNU 일반 공중 사용 허가서를 참하십시오.\n\n당신은 이 프로그램을 통해 <doclink href=Copying>GNU 일반 공중 사용 허가서 전문</doclink>을 받았습니다. 그렇지 않다면, Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA로 편지를 보내주시거나 [http://www.gnu.org/copyleft/gpl.html 온라인으로 읽어보시기] 바랍니다.",
        "config-sidebar": "* [//www.mediawiki.org 미디어위키 홈]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents 사용자 가이드]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents 관리자 가이드]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ FAQ]\n----\n* <doclink href=Readme>읽어보기</doclink>\n* <doclink href=ReleaseNotes>릴리스 노트</doclink>\n* <doclink href=Copying>전문</doclink>\n* <doclink href=UpgradeDoc>업그레이드하기</doclink>",
        "config-env-good": "환경이 확인되었습니다.\n미디어위키를 설치할 수 있습니다.",
        "config-env-bad": "환경이 확인되었습니다.\n미디어위키를 설치할 수 없습니다.",
index f94b70a..3058130 100644 (file)
@@ -51,7 +51,7 @@
        "config-unicode-using-intl": "Aúsa [http://pecl.php.net/intl l'estensione PECL intl] pe' ne fà 'a normalizzazione Unicode.",
        "config-unicode-pure-php-warning": "<strong>Attenziò:</strong> L' [http://pecl.php.net/intl estensione intl PECL] nun è a disposizione pe' gestire 'a normalizzazione Unicode, accussì se ausasse n'imprementazziona llenta 'n puro PHP.\nSi state a gestire nu pizzo ad alto traffico, avisseve a lieggere cocche considerazione ncopp' 'a [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations normalizzaziona Unicode].",
        "config-unicode-update-warning": "<strong>Attenziò:</strong> 'A verziona installata 'e normalizzazione Unicode aùsa 'a verziona viecchia d' 'o [http://site.icu-project.org/ pruggetto ICU].\nV'avite 'a [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations agghiurnà] si state a penzà ncopp' 'o fatto d'ausà Unicode.",
-       "config-no-db": "Nun se può truvà nu driver adatto p' 'o database! È necessario installare nu driver p' 'o PHP.\n{{PLURAL:$2|'O furmatto suppurtato|'E furmatte suppurtate}} 'e database ccà annanze: $1.\n\nSi cumpilate PHP autonomamente, riaccunciatevello attivando nu client database, p'esempio ausannoo <code>./configure --with-mysqli</code>.\nQuanno fosse installato PHP pe' bbìa 'e nu pacchetto Debian o Ubuntu, allora avite 'a installà pure 'o pacchetto <code>php5-mysql</code>.",
+       "config-no-db": "Nun se può truvà nu driver adatto p' 'o database! È necessario installare nu driver p' 'o PHP.\n{{PLURAL:$2|'O furmato suppurtato|'E furmate suppurtate}} 'e database ccà annanze: $1.\n\nSi cumpilate PHP autonomamente, riaccunciatevello attivando nu client database, p'esempio ausannoo <code>./configure --with-mysqli</code>.\nQuanno fosse installato PHP pe' bbìa 'e nu pacchetto Debian o Ubuntu, allora avite 'a installà pure 'o pacchetto <code>php5-mysql</code>.",
        "config-outdated-sqlite": "'''Attenziò''': tenite 'o SQLite $1 pe' tramente ca ce vulesse 'a verziona $2, SQLite nun sarrà a disposizione.",
        "config-no-fts3": "'''Attenziò''': SQLite è cumpilato senza 'o [//sqlite.org/fts3.html modulo FTS3], 'e funziune 'e p'ascià dinto nun sarranno a disposizione ncopp'a stu backend.",
        "config-register-globals-error": "<strong>Errore: l'opzione PHP <code>[http://php.net/register_globals register_globals]</code> è apicciata.\nS'avesse 'a stutà pe' cuntinuà c' 'a installazione.</strong>\nVide [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals] pe' n'avé n'aiuto ncopp'a comme s'avess'a ffà.",
index b63905b..ffb4fb6 100644 (file)
@@ -60,7 +60,6 @@
        "config-env-bad": "O ambiente foi verificado.\nNão pode instalar o MediaWiki.",
        "config-env-php": "O PHP $1 está instalado.",
        "config-env-hhvm": "HHVM $1 está instalado.",
-       "config-unicode-using-utf8": "A usar o utf8_normalize.so, por Brion Vibber, para a normalização Unicode.",
        "config-unicode-using-intl": "A usar a [http://pecl.php.net/intl extensão intl PECL] para a normalização Unicode.",
        "config-unicode-pure-php-warning": "'''Aviso''': A [http://pecl.php.net/intl extensão intl PECL] não está disponível para efetuar a normalização Unicode. Irá recorrer-se à implementação em PHP puro, que é mais lenta.\nSe o seu site tem alto volume de tráfego, devia informar-se um pouco sobre a [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations/pt normalização Unicode].",
        "config-unicode-update-warning": "'''Aviso''': A versão instalada do wrapper de normalização Unicode usa uma versão mais antiga da biblioteca do [http://site.icu-project.org/ projeto ICU].\nDevia [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations atualizá-la] se tem quaisquer preocupações sobre o uso do Unicode.",
        "config-magic-quotes-sybase": "'''Erro fatal: A opção [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] está ativa!'''\nEsta opção causa corrupção dos dados de entrada, de uma forma imprevisível.\nNão pode instalar ou usar o MediaWiki a menos que esta opção seja desativada.",
        "config-mbstring": "'''Erro fatal: A opção [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] está ativa!'''\nEsta opção causa erros e pode corromper os dados de uma forma imprevisível.\nNão pode instalar ou usar o MediaWiki a menos que esta opção seja desativada.",
        "config-safe-mode": "'''Aviso:''' O [http://www.php.net/features.safe-mode safe mode] do PHP está ativo.\nEste modo pode causar problemas, especialmente no upload de ficheiros e no suporte a <code>math</code>.",
-       "config-xml-bad": "Falta o módulo XML do PHP.\nO MediaWiki necessita de funções deste módulo e não funcionará com esta configuração.\nSe está a executar o Mandrake, instale o pacote php-xml.",
+       "config-xml-bad": "Falta o módulo XML do PHP.\nO MediaWiki necessita de funções deste módulo e não funcionará com esta configuração.\nPode precisar de instalar o pacote RPM chamado php-xml.",
        "config-pcre-old": "<strong>Erro fatal:</strong> É necessário o PCRE $1 ou versão posterior.\nO <i>link</i> do seu binário PHP foi feito com o PCRE $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE Mais informações].",
        "config-pcre-no-utf8": "'''Erro fatal''': O módulo PCRE do PHP parece ter sido compilado sem suporte PCRE_UTF8.\nO MediaWiki necessita do suporte UTF-8 para funcionar corretamente.",
        "config-memory-raised": "A configuração <code>memory_limit</code> do PHP era $1; foi aumentada para $2.",
        "config-memory-bad": "'''Aviso:''' A configuração <code>memory_limit</code> do PHP é $1.\nIsto é provavelmente demasiado baixo.\nA instalação poderá falhar!",
        "config-ctype": "'''Erro fatal''': O PHP tem de ser compilado com suporte para a [http://www.php.net/manual/en/ctype.installation.php extensão Ctype].",
+       "config-iconv": "<strong>Fatal:</strong> PHP deve ser compilado com suporte à [http://www.php.net/manual/en/iconv.installation.php extensão iconv].",
        "config-json": "<strong>Erro fatal:</strong> O PHP foi compilado sem suporte de JSON.\nTem de instalar a extensão JSON do PHP (incluída no PHP 5.2 ou posterior) ou a extensão [http://pecl.php.net/package/jsonc PECL jsonc] antes de instalar o MediaWiki.\n* A extensão JSON do PHP está incluída nas distribuções 5 e 6 do Red Hat Enterprise Linux (CentOS), mas tem de estar ativa nos ficheiros <code>/etc/php.ini</code> ou <code>/etc/php.d/json.ini</code>.\n* Algumas distribuições do Linux posteriores a maio de 2013 omitem a extensão JSON do PHP e substituem-na pela extensão PECL chamando-lhe <code>php5-json</code> ou <code>php-pecl-jsonc</code>.",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] instalada",
        "config-apc": "[http://www.php.net/apc APC] instalada",
        "config-db-install-account": "Conta do utilizador para a instalação",
        "config-db-username": "Nome do utilizador da base de dados:",
        "config-db-password": "Palavra-chave do utilizador da base de dados:",
-       "config-db-password-empty": "Introduza a palavra-chave do novo utilizador da base de dados: $1.\nEmbora seja possível criar utilizadores sem palavra-chave, fazê-lo não é seguro.",
-       "config-db-username-empty": "Tem de introduzir um valor para \"{{int:config-db-username}}\"",
        "config-db-install-username": "Introduza o nome de utilizador que será usado para aceder à base de dados durante o processo de instalação. Este utilizador não é o do MediaWiki; é o utilizador da base de dados.",
        "config-db-install-password": "Introduza a palavra-chave do utilizador que será usado para aceder à base de dados durante o processo de instalação. Esta palavra-chave não é a do utilizador do MediaWiki; é a palavra-chave do utilizador da base de dados.",
        "config-db-install-help": "Introduza o nome de utilizador e a palavra-chave que serão usados para aceder à base de dados durante o processo de instalação.",
index f3bb6dd..ee68882 100644 (file)
@@ -1,5 +1,12 @@
 {
-       "@metadata": [],
+       "@metadata": {
+               "authors": [
+                       "Ammartivari"
+               ]
+       },
+       "config-admin-box": "Llogari administruesi",
+       "config-admin-name-blank": "Shkruani nofkën e një administruesi.",
+       "config-admin-password-blank": "Shkruani një fjalëkalim për llogarinë e administruesit.",
        "mainpagetext": "'''MediaWiki software u instalua me sukses.'''",
        "mainpagedocfooter": "Për më shumë informata rreth përdorimit të softwerit wiki , ju lutem shikoni [//meta.wikimedia.org/wiki/Help:Contents dokumentacionin përkatës].\n\n== Sa për fillim==\n* [//www.mediawiki.org/wiki/Help:Configuration_settings Parazgjedhjet e MediaWiki-t]\n* [//www.mediawiki.org/wiki/Help:FAQ Pyetjet e shpeshta rreth MediaWiki-t]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Njoftime rreth MediaWiki-t]"
 }
index c63ac00..95dad25 100644 (file)
@@ -4,7 +4,8 @@
                        "Rancher",
                        "Михајло Анђелковић",
                        "Milicevic01",
-                       "Aktron"
+                       "Aktron",
+                       "Сербијана"
                ]
        },
        "config-desc": "Инсталација за Медијавики",
@@ -37,6 +38,7 @@
        "config-help-restart": "Желите ли да обришете све сачуване податке које сте унели и поново покренете инсталацију?",
        "config-restart": "Да, покрени поново",
        "config-env-php": "PHP $1 је инсталиран.",
+       "config-env-hhvm": "HHVM $1 је инсталиран.",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] је инсталиран",
        "config-apc": "[http://www.php.net/apc APC] је инсталиран",
        "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] је инсталиран",
@@ -44,7 +46,6 @@
        "config-db-host": "Хост базе података",
        "config-db-name": "Назив базе података:",
        "config-db-password": "Лозинка за базу података:",
-       "config-db-password-empty": "Унесите лозинку за новог корисника базе података: ($1).\n\nМада је могуће отворити налоге без лозинки, то се не препоручује.",
        "config-type-mysql": "MySQL (или компактибилан)",
        "config-type-postgres": "PostgreSQL",
        "config-type-sqlite": "SQLite",
diff --git a/includes/installer/i18n/tokipona.json b/includes/installer/i18n/tokipona.json
new file mode 100644 (file)
index 0000000..348380f
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Robin0van0der0vliet"
+               ]
+       },
+       "config-page-language": "toki"
+}
index 700a63d..1304362 100644 (file)
@@ -195,13 +195,20 @@ class JobRunner implements LoggerAwareInterface {
                                $timeMs = intval( ( microtime( true ) - $jobStartTime ) * 1000 );
                                $timeMsTotal += $timeMs;
 
+                               // Record how long jobs wait before getting popped
                                $readyTs = $job->getReadyTimestamp();
                                if ( $readyTs ) {
-                                       // Record time to run for the job type
                                        $pickupDelay = $popTime - $readyTs;
                                        $stats->timing( 'jobqueue.pickup_delay.all', 1000 * $pickupDelay );
                                        $stats->timing( "jobqueue.pickup_delay.$jType", 1000 * $pickupDelay );
                                }
+                               // Record root job age for jobs being run
+                               $root = $job->getRootJobParams();
+                               if ( $root['rootJobTimestamp'] ) {
+                                       $age = $popTime - wfTimestamp( TS_UNIX, $root['rootJobTimestamp'] );
+                                       $stats->timing( "jobqueue.pickup_root_age.$jType", 1000 * $age );
+                               }
+                               // Track the execution time for jobs
                                $stats->timing( "jobqueue.run.$jType", $timeMs );
 
                                // Mark the job as done on success or when the job cannot be retried
diff --git a/includes/libs/IPSet.php b/includes/libs/IPSet.php
deleted file mode 100644 (file)
index c1c841e..0000000
+++ /dev/null
@@ -1,276 +0,0 @@
-<?php
-/**
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @author Brandon Black <blblack@gmail.com>
- */
-
-/**
- * Matches IP addresses against a set of CIDR specifications
- *
- * Usage:
- *   // At startup, calculate the optimized data structure for the set:
- *   $ipset = new IPSet( $wgSquidServersNoPurge );
- *   // runtime check against cached set (returns bool):
- *   $allowme = $ipset->match( $ip );
- *
- * In rough benchmarking, this takes about 80% more time than
- * in_array() checks on a short (a couple hundred at most) array
- * of addresses.  It's fast either way at those levels, though,
- * and IPSet would scale better than in_array if the array were
- * much larger.
- *
- * For mixed-family CIDR sets, however, this code gives well over
- * 100x speedup vs iterating IP::isInRange() over an array
- * of CIDR specs.
- *
- * The basic implementation is two separate binary trees
- * (IPv4 and IPv6) as nested php arrays with keys named 0 and 1.
- * The values false and true are terminal match-fail and match-success,
- * otherwise the value is a deeper node in the tree.
- *
- * A simple depth-compression scheme is also implemented: whole-byte
- * tree compression at whole-byte boundaries only, where no branching
- * occurs during that whole byte of depth.  A compressed node has
- * keys 'comp' (the byte to compare) and 'next' (the next node to
- * recurse into if 'comp' matched successfully).
- *
- * For example, given these inputs:
- * 25.0.0.0/9
- * 25.192.0.0/10
- *
- * The v4 tree would look like:
- * root4 => array(
- *     'comp' => 25,
- *     'next' => array(
- *         0 => true,
- *         1 => array(
- *             0 => false,
- *             1 => true,
- *         ),
- *     ),
- * );
- *
- * (multi-byte compression nodes were attempted as well, but were
- * a net loss in my test scenarios due to additional match complexity)
- *
- * @since 1.24
- */
-class IPSet {
-       /** @var array $root4: the root of the IPv4 matching tree */
-       private $root4 = array( false, false );
-
-       /** @var array $root6: the root of the IPv6 matching tree */
-       private $root6 = array( false, false );
-
-       /**
-        * __construct() instantiate the object from an array of CIDR specs
-        *
-        * @param array $cfg array of IPv[46] CIDR specs as strings
-        * @return IPSet new IPSet object
-        *
-        * Invalid input network/mask values in $cfg will result in issuing
-        * E_WARNING and/or E_USER_WARNING and the bad values being ignored.
-        */
-       public function __construct( array $cfg ) {
-               foreach ( $cfg as $cidr ) {
-                       $this->addCidr( $cidr );
-               }
-
-               self::recOptimize( $this->root4 );
-               self::recCompress( $this->root4, 0, 24 );
-               self::recOptimize( $this->root6 );
-               self::recCompress( $this->root6, 0, 120 );
-       }
-
-       /**
-        * Add a single CIDR spec to the internal matching trees
-        *
-        * @param string $cidr string CIDR spec, IPv[46], optional /mask (def all-1's)
-        */
-       private function addCidr( $cidr ) {
-               // v4 or v6 check
-               if ( strpos( $cidr, ':' ) === false ) {
-                       $node =& $this->root4;
-                       $defMask = '32';
-               } else {
-                       $node =& $this->root6;
-                       $defMask = '128';
-               }
-
-               // Default to all-1's mask if no netmask in the input
-               if ( strpos( $cidr, '/' ) === false ) {
-                       $net = $cidr;
-                       $mask = $defMask;
-               } else {
-                       list( $net, $mask ) = explode( '/', $cidr, 2 );
-                       if ( !ctype_digit( $mask ) || intval( $mask ) > $defMask ) {
-                               trigger_error( "IPSet: Bad mask '$mask' from '$cidr', ignored", E_USER_WARNING );
-                               return;
-                       }
-               }
-               $mask = intval( $mask ); // explicit integer convert, checked above
-
-               // convert $net to an array of integer bytes, length 4 or 16:
-               $raw = inet_pton( $net );
-               if ( $raw === false ) {
-                       return; // inet_pton() sends an E_WARNING for us
-               }
-               $rawOrd = array_map( 'ord', str_split( $raw ) );
-
-               // special-case: zero mask overwrites the whole tree with a pair of terminal successes
-               if ( $mask == 0 ) {
-                       $node = array( true, true );
-                       return;
-               }
-
-               // iterate the bits of the address while walking the tree structure for inserts
-               $curBit = 0;
-               while ( 1 ) {
-                       $maskShift = 7 - ( $curBit & 7 );
-                       $node =& $node[( $rawOrd[$curBit >> 3] & ( 1 << $maskShift ) ) >> $maskShift];
-                       ++$curBit;
-                       if ( $node === true ) {
-                               // already added a larger supernet, no need to go deeper
-                               return;
-                       } elseif ( $curBit == $mask ) {
-                               // this may wipe out deeper subnets from earlier
-                               $node = true;
-                               return;
-                       } elseif ( $node === false ) {
-                               // create new subarray to go deeper
-                               $node = array( false, false );
-                       }
-               }
-       }
-
-       /**
-        * Match an IP address against the set
-        *
-        * @param string $ip string IPv[46] address
-        * @return bool true is match success, false is match failure
-        *
-        * If $ip is unparseable, inet_pton may issue an E_WARNING to that effect
-        */
-       public function match( $ip ) {
-               $raw = inet_pton( $ip );
-               if ( $raw === false ) {
-                       return false; // inet_pton() sends an E_WARNING for us
-               }
-
-               $rawOrd = array_map( 'ord', str_split( $raw ) );
-               if ( count( $rawOrd ) == 4 ) {
-                       $node =& $this->root4;
-               } else {
-                       $node =& $this->root6;
-               }
-
-               $curBit = 0;
-               while ( 1 ) {
-                       if ( isset( $node['comp'] ) ) {
-                               // compressed node, matches 1 whole byte on a byte boundary
-                               if ( $rawOrd[$curBit >> 3] != $node['comp'] ) {
-                                       return false;
-                               }
-                               $curBit += 8;
-                               $node =& $node['next'];
-                       } else {
-                               // uncompressed node, walk in the correct direction for the current bit-value
-                               $maskShift = 7 - ( $curBit & 7 );
-                               $node =& $node[( $rawOrd[$curBit >> 3] & ( 1 << $maskShift ) ) >> $maskShift];
-                               ++$curBit;
-                       }
-
-                       if ( $node === true || $node === false ) {
-                               return $node;
-                       }
-               }
-       }
-
-       /**
-        * Recursively merges adjacent nets into larger supernets
-        *
-        * @param array &$node Tree node to optimize, by-reference
-        *
-        *  e.g.: 8.0.0.0/8 + 9.0.0.0/8 -> 8.0.0.0/7
-        */
-       private static function recOptimize( &$node ) {
-               if ( $node[0] !== false && $node[0] !== true && self::recOptimize( $node[0] ) ) {
-                       $node[0] = true;
-               }
-               if ( $node[1] !== false && $node[1] !== true && self::recOptimize( $node[1] ) ) {
-                       $node[1] = true;
-               }
-               if ( $node[0] === true && $node[1] === true ) {
-                       return true;
-               }
-               return false;
-       }
-
-       /**
-        * Recursively compresses a tree
-        *
-        * @param array &$node Tree node to compress, by-reference
-        * @param integer $curBit current depth in the tree
-        * @param integer $maxCompStart maximum depth at which compression can start, family-specific
-        *
-        * This is a very simplistic compression scheme: if we go through a whole
-        * byte of address starting at a byte boundary with no real branching
-        * other than immediate false-vs-(node|true), compress that subtree down to a single
-        * byte-matching node.
-        * The $maxCompStart check elides recursing the final 7 levels of depth (family-dependent)
-        */
-       private static function recCompress( &$node, $curBit, $maxCompStart ) {
-               if ( !( $curBit & 7 ) ) { // byte boundary, check for depth-8 single path(s)
-                       $byte = 0;
-                       $cnode =& $node;
-                       $i = 8;
-                       while ( $i-- ) {
-                               if ( $cnode[0] === false ) {
-                                       $byte |= 1 << $i;
-                                       $cnode =& $cnode[1];
-                               } elseif ( $cnode[1] === false ) {
-                                       $cnode =& $cnode[0];
-                               } else {
-                                       // partial-byte branching, give up
-                                       break;
-                               }
-                       }
-                       if ( $i == -1 ) { // means we did not exit the while() via break
-                               $node = array(
-                                       'comp' => $byte,
-                                       'next' => &$cnode,
-                               );
-                               $curBit += 8;
-                               if ( $cnode !== true ) {
-                                       self::recCompress( $cnode, $curBit, $maxCompStart );
-                               }
-                               return;
-                       }
-               }
-
-               ++$curBit;
-               if ( $curBit <= $maxCompStart ) {
-                       if ( $node[0] !== false && $node[0] !== true ) {
-                               self::recCompress( $node[0], $curBit, $maxCompStart );
-                       }
-                       if ( $node[1] !== false && $node[1] !== true ) {
-                               self::recCompress( $node[1], $curBit, $maxCompStart );
-                       }
-               }
-       }
-}
index 185914c..b6faa37 100644 (file)
@@ -111,7 +111,10 @@ class ReplacementArray {
         * @return string
         */
        public function replace( $subject ) {
-               if ( function_exists( 'fss_prep_replace' ) ) {
+               if (
+                       function_exists( 'fss_prep_replace' )  &&
+                       version_compare( PHP_VERSION, '5.5.0' ) < 0
+               ) {
                        if ( $this->fss === false ) {
                                $this->fss = fss_prep_replace( $this->data );
                        }
index a3bd531..dcd413d 100644 (file)
@@ -256,11 +256,19 @@ class WANObjectCache {
        /**
         * Purge a key from all clusters
         *
-        * This instantiates a hold-off period where the key cannot be
-        * written to avoid race conditions where dependent keys get updated
-        * with a stale value (e.g. from a DB slave). This is implemented by
-        * storing a special "tombstone" value at the cache key that this
-        * class recognizes; get() calls will return false for the key.
+        * This deletes the key and instantiates a hold-off period where the key
+        * cannot be written to for the next few seconds (HOLDOFF_TTL). This is to
+        * avoid the following race condition:
+        *   a) Some DB data changes and delete() is called on a corresponding key
+        *   b) A request refills the key with a stale value from a lagged DB
+        *   c) The stale value is stuck there until the key is expired/evicted
+        *
+        * This is implemented by storing a special "tombstone" value at the cache
+        * key that this class recognizes; get() calls will return false for the key
+        * and any set() calls will refuse to replace tombstone values at the key.
+        * For this to always avoid writing stale values, the following must hold:
+        *   a) Replication lag is bounded to being less than HOLDOFF_TTL; or
+        *   b) If lag is higher, the DB will have gone into read-only mode already
         *
         * This should only be called when the underlying data (being cached)
         * changes in a significant way. If called twice on the same key, then
@@ -457,10 +465,9 @@ class WANObjectCache {
         *               Other threads will try to use stale values if possible.
         *               If, on miss, the time since expiration is low, the assumption
         *               is that the key is hot and that a stampede is worth avoiding.
-        *   - tempTTL : when 'lockTSE' is set, this determines the TTL of the temp
-        *               key used to cache values while a key is tombstoned.
-        *               This avoids excessive regeneration of hot keys on delete() but
-        *               may result in stale values.
+        *   - tempTTL : TTL of the temp key used to cache values while a key is tombstoned.
+        *               This avoids excessive regeneration of hot keys on delete() but may
+        *               result in stale values.
         * @return mixed Value to use for the key
         */
        final public function getWithSetCallback(
index 32a27f7..2a179be 100644 (file)
  */
 class ParsoidVirtualRESTService extends VirtualRESTService {
        /**
-        * Example requests:
-        *  GET /local/v1/page/$title/html/$oldid
-        *   * $oldid is optional
-        *  POST /local/v1/transform/html/to/wikitext/$title/$oldid
+        * Example Parsoid v3 requests:
+        *  GET /local/v3/page/html/$title/{$revision}
+        *   * $revision is optional
+        *  POST /local/v3/transform/html/to/wikitext/{$title}{/$revision}
         *   * body: array( 'html' => ... )
-        *   * $title and $oldid are optional
-        *  POST /local/v1/transform/wikitext/to/html/$title
-        *   * body: array( 'wikitext' => ... ) or array( 'wikitext' => ..., 'body' => true/false )
+        *   * $title and $revision are optional
+        *  POST /local/v3/transform/wikitext/to/html/{$title}{/$revision}
+        *   * body: array( 'wikitext' => ... ) or array( 'wikitext' => ..., 'bodyOnly' => true/false )
         *   * $title is optional
+        *   * $revision is optional
+     *
+        * There are also deprecated "v1" requests; see onParsoid1Request
+        * for details.
         * @param array $params Key/value map
         *   - url            : Parsoid server URL
-        *   - prefix         : Parsoid prefix for this wiki
+        *   - domain         : Wiki domain to use
         *   - timeout        : Parsoid timeout (optional)
         *   - forwardCookies : Cookies to forward to Parsoid, or false. (optional)
         *   - HTTPProxy      : Parsoid HTTP proxy (optional)
+        *   - restbaseCompat : whether to parse URL as if they were meant for RESTBase
+        *                       boolean (optional)
         */
        public function __construct( array $params ) {
                // for backwards compatibility:
@@ -46,7 +52,29 @@ class ParsoidVirtualRESTService extends VirtualRESTService {
                        $params['url'] = $params['URL'];
                        unset( $params['URL'] );
                }
-               parent::__construct( $params );
+               // set up defaults and merge them with the given params
+               $mparams = array_merge( array(
+                       'url' => 'http://localhost:8000/',
+                       'prefix' => 'localhost',
+                       'domain' => 'localhost',
+                       'forwardCookies' => false,
+                       'HTTPProxy' => null,
+               ), $params );
+               // Ensure that the url parameter has a trailing slash.
+               $mparams['url'] = preg_replace(
+                       '#/?$#',
+                       '/',
+                       $mparams['url']
+               );
+               // Ensure the correct domain format: strip protocol, port,
+               // and trailing slash if present.  This lets us use
+               // $wgCanonicalServer as a default value, which is very convenient.
+               $mparams['domain'] = preg_replace(
+                       '/^(https?:\/\/)?([^\/:]+?)(:\d+)?\/?$/',
+                       '$2',
+                       $mparams['domain']
+               );
+               parent::__construct( $mparams );
        }
 
        public function onRequests( array $reqs, Closure $idGeneratorFunc ) {
@@ -56,71 +84,143 @@ class ParsoidVirtualRESTService extends VirtualRESTService {
 
                        list(
                                $targetWiki, // 'local'
-                               $version, // 'v1'
-                               $reqType // 'page' or 'transform'
+                               $version, // 'v3' ('v1' for restbase compatibility)
+                               $reqType, // 'page' or 'transform'
+                               $format, // 'html' or 'wikitext'
+                               // $title (optional)
+                               // $revision (optional)
                        ) = $parts;
 
+                       if ( isset( $this->params['restbaseCompat'] ) && $this->params['restbaseCompat'] ) {
+                               if ( $version !== 'v1' ) {
+                                       throw new Exception( "Only RESTBase v1 API is supported." );
+                               }
+                               # Map RESTBase v1 API to Parsoid v3 API (pretty easy)
+                               $req['url'] = preg_replace( '#^local/v1/#', 'local/v3/', $req['url'] );
+                       } elseif ( $version !== 'v3' ) {
+                               $result[$key] = $this->onParsoid1Request( $req, $idGeneratorFunc );
+                               continue;
+                       }
                        if ( $targetWiki !== 'local' ) {
+
                                throw new Exception( "Only 'local' target wiki is currently supported" );
-                       } elseif ( $version !== 'v1' ) {
-                               throw new Exception( "Only version 1 exists" );
-                       } elseif ( $reqType !== 'page' && $reqType !== 'transform' ) {
-                               throw new Exception( "Request type must be either 'page' or 'transform'" );
                        }
-
-                       $req['url'] = $this->params['url'] . '/' . urlencode( $this->params['prefix'] ) . '/';
-
-                       if ( $reqType === 'page' ) {
-                               $title = $parts[3];
-                               if ( $parts[4] !== 'html' ) {
-                                       throw new Exception( "Only 'html' output format is currently supported" );
-                               }
-                               if ( isset( $parts[5] ) ) {
-                                       $req['url'] .= $title . '?oldid=' . $parts[5];
-                               } else {
-                                       $req['url'] .= $title;
-                               }
-                       } elseif ( $reqType === 'transform' ) {
-                               if ( $parts[4] !== 'to' ) {
-                                       throw new Exception( "Part index 4 is not 'to'" );
-                               }
-
-                               if ( isset( $parts[6] ) ) {
-                                       $req['url'] .= $parts[6];
-                               }
-
-                               if ( $parts[3] === 'html' & $parts[5] === 'wikitext' ) {
-                                       if ( !isset( $req['body']['html'] ) ) {
-                                               throw new Exception( "You must set an 'html' body key for this request" );
-                                       }
-                                       if ( isset( $parts[7] ) ) {
-                                               $req['body']['oldid'] = $parts[7];
-                                       }
-                               } elseif ( $parts[3] == 'wikitext' && $parts[5] == 'html' ) {
-                                       if ( !isset( $req['body']['wikitext'] ) ) {
-                                               throw new Exception( "You must set a 'wikitext' body key for this request" );
-                                       }
-                                       $req['body']['wt'] = $req['body']['wikitext'];
-                                       unset( $req['body']['wikitext'] );
-                               } else {
-                                       throw new Exception( "Transformation unsupported" );
-                               }
+                       if ( $reqType !== 'page' && $reqType !== 'transform' ) {
+                               throw new Exception( "Request action must be either 'page' or 'transform'" );
                        }
-
-                       if ( isset( $this->params['HTTPProxy'] ) && $this->params['HTTPProxy'] ) {
+                       if ( $format !== 'html' && $format !== 'wikitext' ) {
+                               throw new Exception( "Request format must be either 'html' or 'wt'" );
+                       }
+                       // replace /local/ with the current domain
+                       $req['url'] = preg_replace( '#^local/#', $this->params['domain'] . '/', $req['url'] );
+                       // and prefix it with the service URL
+                       $req['url'] = $this->params['url'] . $req['url'];
+                       // set the appropriate proxy, timeout and headers
+                       if ( $this->params['HTTPProxy'] ) {
                                $req['proxy'] = $this->params['HTTPProxy'];
                        }
-                       if ( isset( $this->params['timeout'] ) ) {
+                       if ( $this->params['timeout'] != null ) {
                                $req['reqTimeout'] = $this->params['timeout'];
                        }
-
-                       // Forward cookies
-                       if ( isset( $this->params['forwardCookies'] ) ) {
+                       if ( $this->params['forwardCookies'] ) {
                                $req['headers']['Cookie'] = $this->params['forwardCookies'];
                        }
-
                        $result[$key] = $req;
                }
                return $result;
        }
+
+       /**
+        * Remap a Parsoid v1 request to a Parsoid v3 request.
+        *
+        * Example Parsoid v1 requests:
+        *  GET /local/v1/page/$title/html/$oldid
+        *   * $oldid is optional
+        *  POST /local/v1/transform/html/to/wikitext/$title/$oldid
+        *   * body: array( 'html' => ... )
+        *   * $title and $oldid are optional
+        *  POST /local/v1/transform/wikitext/to/html/$title
+        *   * body: array( 'wikitext' => ... ) or array( 'wikitext' => ..., 'body' => true/false )
+        *   * $title is optional
+        *
+        * NOTE: the POST APIs aren't "real" Parsoid v1 APIs, they are just what
+        * Visual Editor "pretends" the V1 API is like.  A previous version of
+        * ParsoidVirtualRESTService translated these to the "real" Parsoid v1
+        * API.  We now translate these to the "real" Parsoid v3 API.
+        */
+       public function onParsoid1Request( array $req, Closure $idGeneratorFunc ) {
+
+               $parts = explode( '/', $req['url'] );
+               list(
+                       $targetWiki, // 'local'
+                       $version, // 'v1'
+                       $reqType // 'page' or 'transform'
+               ) = $parts;
+               if ( $targetWiki !== 'local' ) {
+                       throw new Exception( "Only 'local' target wiki is currently supported" );
+               } elseif ( $version !== 'v1' ) {
+                       throw new Exception( "Only v1 and v3 are supported." );
+               } elseif ( $reqType !== 'page' && $reqType !== 'transform' ) {
+                       throw new Exception( "Request type must be either 'page' or 'transform'" );
+               }
+               $req['url'] = $this->params['url'] . $this->params['domain'] . '/v3/';
+               if ( $reqType === 'page' ) {
+                       $title = $parts[3];
+                       if ( $parts[4] !== 'html' ) {
+                               throw new Exception( "Only 'html' output format is currently supported" );
+                       }
+                       $req['url'] .= 'page/html/' . $title;
+                       if ( isset( $parts[5] ) ) {
+                               $req['url'] .= '/' . $parts[5];
+                       } elseif ( isset( $req['query']['oldid'] ) && $req['query']['oldid'] ) {
+                               $req['url'] .= '/' . $req['query']['oldid'];
+                               unset( $req['query']['oldid'] );
+                       }
+               } elseif ( $reqType === 'transform' ) {
+                       $req['url'] .= 'transform/'. $parts[3] . '/to/' . $parts[5];
+                       // the title
+                       if ( isset( $parts[6] ) ) {
+                               $req['url'] .= '/' . $parts[6];
+                       }
+                       // revision id
+                       if ( isset( $parts[7] ) ) {
+                               $req['url'] .= '/' . $parts[7];
+                       } elseif ( isset( $req['body']['oldid'] ) && $req['body']['oldid'] ) {
+                               $req['url'] .= '/' . $req['body']['oldid'];
+                               unset( $req['body']['oldid'] );
+                       }
+                       if ( $parts[4] !== 'to' ) {
+                               throw new Exception( "Part index 4 is not 'to'" );
+                       }
+                       if ( $parts[3] === 'html' && $parts[5] === 'wikitext' ) {
+                               if ( !isset( $req['body']['html'] ) ) {
+                                       throw new Exception( "You must set an 'html' body key for this request" );
+                               }
+                       } elseif ( $parts[3] == 'wikitext' && $parts[5] == 'html' ) {
+                               if ( !isset( $req['body']['wikitext'] ) ) {
+                                       throw new Exception( "You must set a 'wikitext' body key for this request" );
+                               }
+                               if ( isset( $req['body']['body'] ) ) {
+                                       $req['body']['bodyOnly'] = $req['body']['body'];
+                                       unset( $req['body']['body'] );
+                               }
+                       } else {
+                               throw new Exception( "Transformation unsupported" );
+                       }
+               }
+               // set the appropriate proxy, timeout and headers
+               if ( $this->params['HTTPProxy'] ) {
+                       $req['proxy'] = $this->params['HTTPProxy'];
+               }
+               if ( $this->params['timeout'] != null ) {
+                       $req['reqTimeout'] = $this->params['timeout'];
+               }
+               if ( $this->params['forwardCookies'] ) {
+                       $req['headers']['Cookie'] = $this->params['forwardCookies'];
+               }
+
+               return $req;
+
+       }
+
 }
index 8fe5b92..bc520aa 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * Virtual HTTP service client for Restbase
+ * Virtual HTTP service client for RESTBase
  *
  * 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
  */
 
 /**
- * Virtual REST service for Restbase
+ * Virtual REST service for RESTBase
  * @since 1.25
  */
 class RestbaseVirtualRESTService extends VirtualRESTService {
        /**
-        * Example requests:
-        *  GET /local/v1/page/{title}/html{/revision}
+        * Example RESTBase v1 requests:
+        *  GET /local/v1/page/html/{title}{/revision}
         *  POST /local/v1/transform/html/to/wikitext{/title}{/revision}
         *   * body: array( 'html' => ... )
         *  POST /local/v1/transform/wikitext/to/html{/title}{/revision}
         *   * body: array( 'wikitext' => ... ) or array( 'wikitext' => ..., 'bodyOnly' => true/false )
         *
         * @param array $params Key/value map
-        *   - url            : Restbase server URL
+        *   - url            : RESTBase server URL
         *   - domain         : Wiki domain to use
         *   - timeout        : request timeout in seconds (optional)
-        *   - forwardCookies : cookies to forward to Restbase/Parsoid (as a Cookie
+        *   - forwardCookies : cookies to forward to RESTBase/Parsoid (as a Cookie
         *                       header string) or false (optional)
         *                       Note: forwardCookies will in the future be a boolean
         *                       only, signifing request cookies should be forwarded
@@ -48,18 +48,26 @@ class RestbaseVirtualRESTService extends VirtualRESTService {
        public function __construct( array $params ) {
                // set up defaults and merge them with the given params
                $mparams = array_merge( array(
-                       'url' => 'http://localhost:7231',
+                       'url' => 'http://localhost:7231/',
                        'domain' => 'localhost',
                        'timeout' => 100,
                        'forwardCookies' => false,
                        'HTTPProxy' => null,
                        'parsoidCompat' => false
                ), $params );
-               // ensure the correct domain format
+               // Ensure that the url parameter has a trailing slash.
+               $mparams['url'] = preg_replace(
+                       '#/?$#',
+                       '/',
+                       $mparams['url']
+               );
+               // Ensure the correct domain format: strip protocol, port,
+               // and trailing slash if present.  This lets us use
+               // $wgCanonicalServer as a default value, which is very convenient.
                $mparams['domain'] = preg_replace(
-                               '/^(https?:\/\/)?([^\/:]+?)(\/|:\d+\/?)?$/',
-                               '$2',
-                               $mparams['domain']
+                       '/^(https?:\/\/)?([^\/:]+?)(:\d+)?\/?$/',
+                       '$2',
+                       $mparams['domain']
                );
                parent::__construct( $mparams );
        }
@@ -73,7 +81,7 @@ class RestbaseVirtualRESTService extends VirtualRESTService {
                $result = array();
                foreach ( $reqs as $key => $req ) {
                        // replace /local/ with the current domain
-                       $req['url'] = preg_replace( '/^\/local\//', '/' . $this->params['domain'] . '/', $req['url'] );
+                       $req['url'] = preg_replace( '#^local/#', $this->params['domain'] . '/', $req['url'] );
                        // and prefix it with the service URL
                        $req['url'] = $this->params['url'] . $req['url'];
                        // set the appropriate proxy, timeout and headers
@@ -94,83 +102,164 @@ class RestbaseVirtualRESTService extends VirtualRESTService {
        }
 
        /**
-        * Remaps Parsoid requests to Restbase paths
+        * Remaps Parsoid v1/v3 requests to RESTBase v1 requests.
         */
        public function onParsoidRequests( array $reqs, Closure $idGeneratorFunc ) {
 
                $result = array();
                foreach ( $reqs as $key => $req ) {
                        $parts = explode( '/', $req['url'] );
-                       list(
-                               $targetWiki, // 'local'
-                               $version, // 'v1'
-                               $reqType // 'page' or 'transform'
-                       ) = $parts;
-                       if ( $targetWiki !== 'local' ) {
-                               throw new Exception( "Only 'local' target wiki is currently supported" );
-                       } elseif ( $reqType !== 'page' && $reqType !== 'transform' ) {
-                               throw new Exception( "Request type must be either 'page' or 'transform'" );
+                       if ( $parts[1] === 'v3' ) {
+                               $result[$key] = $this->onParsoid3Request( $req, $idGeneratorFunc );
+                       } elseif ( $parts[1] === 'v1' ) {
+                               $result[$key] = $this->onParsoid1Request( $req, $idGeneratorFunc );
+                       } else {
+                               throw new Exception( "Only v1 and v3 are supported." );
                        }
-                       $req['url'] = $this->params['url'] . '/' . $this->params['domain'] . '/v1/' . $reqType . '/';
-                       if ( $reqType === 'page' ) {
-                               $title = $parts[3];
-                               if ( $parts[4] !== 'html' ) {
-                                       throw new Exception( "Only 'html' output format is currently supported" );
-                               }
-                               $req['url'] .= 'html/' . $title;
-                               if ( isset( $parts[5] ) ) {
-                                       $req['url'] .= '/' . $parts[5];
-                               } elseif ( isset( $req['query']['oldid'] ) && $req['query']['oldid'] ) {
-                                       $req['url'] .= '/' . $req['query']['oldid'];
-                                       unset( $req['query']['oldid'] );
-                               }
-                       } elseif ( $reqType === 'transform' ) {
-                               // from / to transform
-                               $req['url'] .= $parts[3] . '/to/' . $parts[5];
-                               // the title
-                               if ( isset( $parts[6] ) ) {
-                                       $req['url'] .= '/' . $parts[6];
-                               }
-                               // revision id
-                               if ( isset( $parts[7] ) ) {
-                                       $req['url'] .= '/' . $parts[7];
-                               } elseif ( isset( $req['body']['oldid'] ) && $req['body']['oldid'] ) {
-                                       $req['url'] .= '/' . $req['body']['oldid'];
-                                       unset( $req['body']['oldid'] );
-                               }
-                               if ( $parts[4] !== 'to' ) {
-                                       throw new Exception( "Part index 4 is not 'to'" );
-                               }
-                               if ( $parts[3] === 'html' & $parts[5] === 'wikitext' ) {
-                                       if ( !isset( $req['body']['html'] ) ) {
-                                               throw new Exception( "You must set an 'html' body key for this request" );
-                                       }
-                               } elseif ( $parts[3] == 'wikitext' && $parts[5] == 'html' ) {
-                                       if ( !isset( $req['body']['wikitext'] ) ) {
-                                               throw new Exception( "You must set a 'wikitext' body key for this request" );
-                                       }
-                                       if ( isset( $req['body']['body'] ) ) {
-                                               $req['body']['bodyOnly'] = $req['body']['body'];
-                                               unset( $req['body']['body'] );
-                                       }
-                               } else {
-                                       throw new Exception( "Transformation unsupported" );
-                               }
+               }
+
+               return $result;
+
+       }
+
+       /**
+        * Remap a Parsoid v1 request to a RESTBase v1 request.
+        *
+        * Example Parsoid v1 requests:
+        *  GET /local/v1/page/$title/html/$oldid
+        *   * $oldid is optional
+        *  POST /local/v1/transform/html/to/wikitext/$title/$oldid
+        *   * body: array( 'html' => ... )
+        *   * $title and $oldid are optional
+        *  POST /local/v1/transform/wikitext/to/html/$title
+        *   * body: array( 'wikitext' => ... ) or array( 'wikitext' => ..., 'body' => true/false )
+        *   * $title is optional
+        *
+        * NOTE: the POST APIs aren't "real" Parsoid v1 APIs, they are just what
+        * Visual Editor "pretends" the V1 API is like.  (See
+        * ParsoidVirtualRESTService.)
+        */
+       public function onParsoid1Request( array $req, Closure $idGeneratorFunc ) {
+               $parts = explode( '/', $req['url'] );
+               list(
+                       $targetWiki, // 'local'
+                       $version, // 'v1'
+                       $reqType // 'page' or 'transform'
+               ) = $parts;
+               if ( $targetWiki !== 'local' ) {
+                       throw new Exception( "Only 'local' target wiki is currently supported" );
+               } elseif ( $version !== 'v1' ) {
+                       throw new Exception( "Version mismatch: should not happen." );
+               } elseif ( $reqType !== 'page' && $reqType !== 'transform' ) {
+                       throw new Exception( "Request type must be either 'page' or 'transform'" );
+               }
+               $req['url'] = $this->params['url'] . $this->params['domain'] . '/v1/' . $reqType . '/';
+               if ( $reqType === 'page' ) {
+                       $title = $parts[3];
+                       if ( $parts[4] !== 'html' ) {
+                               throw new Exception( "Only 'html' output format is currently supported" );
                        }
-                       // set the appropriate proxy, timeout and headers
-                       if ( $this->params['HTTPProxy'] ) {
-                               $req['proxy'] = $this->params['HTTPProxy'];
+                       $req['url'] .= 'html/' . $title;
+                       if ( isset( $parts[5] ) ) {
+                               $req['url'] .= '/' . $parts[5];
+                       } elseif ( isset( $req['query']['oldid'] ) && $req['query']['oldid'] ) {
+                               $req['url'] .= '/' . $req['query']['oldid'];
+                               unset( $req['query']['oldid'] );
                        }
-                       if ( $this->params['timeout'] != null ) {
-                               $req['reqTimeout'] = $this->params['timeout'];
+               } elseif ( $reqType === 'transform' ) {
+                       // from / to transform
+                       $req['url'] .= $parts[3] . '/to/' . $parts[5];
+                       // the title
+                       if ( isset( $parts[6] ) ) {
+                               $req['url'] .= '/' . $parts[6];
                        }
-                       if ( $this->params['forwardCookies'] ) {
-                               $req['headers']['Cookie'] = $this->params['forwardCookies'];
+                       // revision id
+                       if ( isset( $parts[7] ) ) {
+                               $req['url'] .= '/' . $parts[7];
+                       } elseif ( isset( $req['body']['oldid'] ) && $req['body']['oldid'] ) {
+                               $req['url'] .= '/' . $req['body']['oldid'];
+                               unset( $req['body']['oldid'] );
+                       }
+                       if ( $parts[4] !== 'to' ) {
+                               throw new Exception( "Part index 4 is not 'to'" );
+                       }
+                       if ( $parts[3] === 'html' && $parts[5] === 'wikitext' ) {
+                               if ( !isset( $req['body']['html'] ) ) {
+                                       throw new Exception( "You must set an 'html' body key for this request" );
+                               }
+                       } elseif ( $parts[3] == 'wikitext' && $parts[5] == 'html' ) {
+                               if ( !isset( $req['body']['wikitext'] ) ) {
+                                       throw new Exception( "You must set a 'wikitext' body key for this request" );
+                               }
+                               if ( isset( $req['body']['body'] ) ) {
+                                       $req['body']['bodyOnly'] = $req['body']['body'];
+                                       unset( $req['body']['body'] );
+                               }
+                       } else {
+                               throw new Exception( "Transformation unsupported" );
                        }
-                       $result[$key] = $req;
+               }
+               // set the appropriate proxy, timeout and headers
+               if ( $this->params['HTTPProxy'] ) {
+                       $req['proxy'] = $this->params['HTTPProxy'];
+               }
+               if ( $this->params['timeout'] != null ) {
+                       $req['reqTimeout'] = $this->params['timeout'];
+               }
+               if ( $this->params['forwardCookies'] ) {
+                       $req['headers']['Cookie'] = $this->params['forwardCookies'];
                }
 
-               return $result;
+               return $req;
+
+       }
+
+       /**
+        * Remap a Parsoid v3 request to a RESTBase v1 request.
+        *
+        * Example Parsoid v3 requests:
+        *  GET /local/v3/page/html/$title/{$revision}
+        *   * $revision is optional
+        *  POST /local/v3/transform/html/to/wikitext/{$title}{/$revision}
+        *   * body: array( 'html' => ... )
+        *   * $title and $revision are optional
+        *  POST /local/v3/transform/wikitext/to/html/{$title}{/$revision}
+        *   * body: array( 'wikitext' => ... ) or array( 'wikitext' => ..., 'bodyOnly' => true/false )
+        *   * $title is optional
+        *   * $revision is optional
+        */
+       public function onParsoid3Request( array $req, Closure $idGeneratorFunc ) {
+
+               $parts = explode( '/', $req['url'] );
+               list(
+                       $targetWiki, // 'local'
+                       $version, // 'v3'
+                       $action, // 'transform' or 'page'
+                       $format, // 'html' or 'wikitext'
+                       // $title, // optional
+                       // $revision, // optional
+               ) = $parts;
+               if ( $targetWiki !== 'local' ) {
+                       throw new Exception( "Only 'local' target wiki is currently supported" );
+               } elseif ( $version !== 'v3' ) {
+                       throw new Exception( "Version mismatch: should not happen." );
+               }
+               // replace /local/ with the current domain, change v3 to v1,
+               $req['url'] = preg_replace( '#^local/v3/#', $this->params['domain'] . '/v1/', $req['url'] );
+               // and prefix it with the service URL
+               $req['url'] = $this->params['url'] . $req['url'];
+               // set the appropriate proxy, timeout and headers
+               if ( $this->params['HTTPProxy'] ) {
+                       $req['proxy'] = $this->params['HTTPProxy'];
+               }
+               if ( $this->params['timeout'] != null ) {
+                       $req['reqTimeout'] = $this->params['timeout'];
+               }
+               if ( $this->params['forwardCookies'] ) {
+                       $req['headers']['Cookie'] = $this->params['forwardCookies'];
+               }
+
+               return $req;
 
        }
 
index 12550a5..64a7e8a 100644 (file)
@@ -348,7 +348,7 @@ class XMPReader implements LoggerAwareInterface {
                        // could declare entities unsafe to parse with xml_parse (T85848/T71210).
                        if ( $this->parsable !== self::PARSABLE_OK ) {
                                if ( $this->parsable === self::PARSABLE_NO ) {
-                                       throw new Exception( 'Unsafe doctype declaration in XML.' );
+                                       throw new RuntimeException( 'Unsafe doctype declaration in XML.' );
                                }
 
                                $content = $this->xmlParsableBuffer . $content;
@@ -361,29 +361,44 @@ class XMPReader implements LoggerAwareInterface {
                                        $msg = ( $this->parsable === self::PARSABLE_NO ) ?
                                                'Unsafe doctype declaration in XML.' :
                                                'No root element found in XML.';
-                                       throw new Exception( $msg );
+                                       throw new RuntimeException( $msg );
                                }
                        }
 
                        $ok = xml_parse( $this->xmlParser, $content, $allOfIt );
                        if ( !$ok ) {
-                               $error = xml_error_string( xml_get_error_code( $this->xmlParser ) );
-                               $where = 'line: ' . xml_get_current_line_number( $this->xmlParser )
-                                       . ' column: ' . xml_get_current_column_number( $this->xmlParser )
-                                       . ' byte offset: ' . xml_get_current_byte_index( $this->xmlParser );
-
-                               $this->logger->info( "XMPReader::parse : Error reading XMP content: $error ($where)" );
+                               $code = xml_get_error_code( $this->xmlParser );
+                               $error = xml_error_string( $code );
+                               $line = xml_get_current_line_number( $this->xmlParser );
+                               $col = xml_get_current_column_number( $this->xmlParser );
+                               $offset = xml_get_current_byte_index( $this->xmlParser );
+
+                               $this->logger->warning(
+                                       '{method} : Error reading XMP content: {error} ' .
+                                       '(line: {line} column: {column} byte offset: {offset})',
+                                       array(
+                                               'method' => __METHOD__,
+                                               'error_code' => $code,
+                                               'error' => $error,
+                                               'line' => $line,
+                                               'column' => $col,
+                                               'offset' => $offset,
+                                               'content' => $content,
+                               ) );
                                $this->results = array(); // blank if error.
                                $this->destroyXMLParser();
                                return false;
                        }
                } catch ( Exception $e ) {
-                       $this->logger->info( 'XMP parse error: ' . $e );
+                       $this->logger->warning(
+                               '{method} Exception caught while parsing: ' . $e->getMessage(),
+                               array(
+                                       'method' => __METHOD__,
+                                       'exception' => $e,
+                                       'content' => $content,
+                               )
+                       );
                        $this->results = array();
-
-                       if ( $allOfIt ) {
-                               $this->destroyXMLParser();
-                       }
                        return false;
                }
                if ( $allOfIt ) {
index 069cd95..6019105 100644 (file)
@@ -59,10 +59,11 @@ use MediaWiki\Logger\LoggerFactory;
  *   Delete events are broadcasted to other DCs. See WANObjectCache for details.
  *
  * - ObjectCache::getMainStashInstance()
- *   Purpose: Storage.
+ *   Purpose: Ephemeral storage.
  *   Stored centrally within the local data-center.
  *   Changes are replicated to other DCs (eventually consistent).
  *   To retrieve the latest value (e.g. not from a slave), use BagOStuff:READ_LATEST.
+ *   This store may be subject to LRU style evictions.
  *
  * - wfGetCache( $cacheType )
  *   Get a specific cache type by key in $wgObjectCaches.
index 4ec377a..62dd1e3 100644 (file)
@@ -219,6 +219,9 @@ class ImagePage extends Article {
                }
                // always show the local local Filepage.css, bug 29277
                $out->addModuleStyles( 'filepage' );
+
+               // Add MediaWiki styles for a file page
+               $out->addModuleStyles( 'mediawiki.action.view.filepage' );
        }
 
        /**
index b129bd2..657c4d0 100644 (file)
@@ -1199,10 +1199,9 @@ class WikiPage implements Page, IDBAccessObject {
         * Best if all done inside a transaction.
         *
         * @param DatabaseBase $dbw
-        * @return int The newly created page_id key, or false if the title already existed
+        * @return int|bool The newly created page_id key; false if the title already existed
         */
        public function insertOn( $dbw ) {
-
                $page_id = $dbw->nextSequenceValue( 'page_page_id_seq' );
                $dbw->insert( 'page', array(
                        'page_id'           => $page_id,
@@ -1223,9 +1222,11 @@ class WikiPage implements Page, IDBAccessObject {
                        $newid = $dbw->insertId();
                        $this->mId = $newid;
                        $this->mTitle->resetArticleID( $newid );
-               }
 
-               return $affected ? $newid : false;
+                       return $newid;
+               } else {
+                       return false;
+               }
        }
 
        /**
@@ -3224,10 +3225,10 @@ class WikiPage implements Page, IDBAccessObject {
 
                // Purge squid for this page only
                $title->purgeSquid();
-
-               $revid = $revision ? $revision->getId() : null;
                // Clear file cache for this page only
                HTMLFileCache::clearFileCache( $title );
+
+               $revid = $revision ? $revision->getId() : null;
                DeferredUpdates::addCallableUpdate( function() use ( $title, $revid ) {
                        InfoAction::invalidateCache( $title, $revid );
                } );
index 8095539..ea619f1 100644 (file)
@@ -233,6 +233,13 @@ abstract class TablePager extends IndexPager {
                }
        }
 
+       /**
+        * @return stdClass
+        */
+       protected function getCurrentRow() {
+               return $this->mCurrentRow;
+       }
+
        /**
         * Get any extra attributes to be applied to the given cell. Don't
         * take this as an excuse to hardcode styles; use classes and
index 3d5d23e..664f0a4 100644 (file)
@@ -509,6 +509,9 @@ class Parser {
                        if ( $wgShowHostnames ) {
                                $limitReport .= 'Parsed by ' . wfHostname() . "\n";
                        }
+                       $limitReport .= 'Cached time: ' . $this->mOutput->getCacheTime() . "\n";
+                       $limitReport .= 'Cache expiry: ' . $this->mOutput->getCacheExpiry() . "\n";
+                       $limitReport .= 'Dynamic content: ' . ( $this->mOutput->hasDynamicContent() ? 'true' : 'false' ) . "\n";
                        foreach ( $this->mOutput->getLimitReportData() as $key => $value ) {
                                if ( Hooks::run( 'ParserLimitReportFormat',
                                        array( $key, &$value, &$limitReport, false, false )
@@ -5324,6 +5327,7 @@ class Parser {
                $ig->setParser( $this );
                $ig->setHideBadImages();
                $ig->setAttributes( Sanitizer::validateTagAttributes( $params, 'table' ) );
+               $this->getOutput()->addModuleStyles( 'mediawiki.page.gallery.styles' );
 
                if ( isset( $params['showfilename'] ) ) {
                        $ig->setShowFilename( true );
index 100656d..4459047 100644 (file)
@@ -34,145 +34,145 @@ class ParserOptions {
        /**
         * Interlanguage links are removed and returned in an array
         */
-       public $mInterwikiMagic;
+       private $mInterwikiMagic;
 
        /**
         * Allow external images inline?
         */
-       public $mAllowExternalImages;
+       private $mAllowExternalImages;
 
        /**
         * If not, any exception?
         */
-       public $mAllowExternalImagesFrom;
+       private $mAllowExternalImagesFrom;
 
        /**
         * If not or it doesn't match, should we check an on-wiki whitelist?
         */
-       public $mEnableImageWhitelist;
+       private $mEnableImageWhitelist;
 
        /**
         * Date format index
         */
-       public $mDateFormat = null;
+       private $mDateFormat = null;
 
        /**
         * Create "edit section" links?
         */
-       public $mEditSection = true;
+       private $mEditSection = true;
 
        /**
         * Allow inclusion of special pages?
         */
-       public $mAllowSpecialInclusion;
+       private $mAllowSpecialInclusion;
 
        /**
         * Use tidy to cleanup output HTML?
         */
-       public $mTidy = false;
+       private $mTidy = false;
 
        /**
         * Which lang to call for PLURAL and GRAMMAR
         */
-       public $mInterfaceMessage = false;
+       private $mInterfaceMessage = false;
 
        /**
         * Overrides $mInterfaceMessage with arbitrary language
         */
-       public $mTargetLanguage = null;
+       private $mTargetLanguage = null;
 
        /**
         * Maximum size of template expansions, in bytes
         */
-       public $mMaxIncludeSize;
+       private $mMaxIncludeSize;
 
        /**
         * Maximum number of nodes touched by PPFrame::expand()
         */
-       public $mMaxPPNodeCount;
+       private $mMaxPPNodeCount;
 
        /**
         * Maximum number of nodes generated by Preprocessor::preprocessToObj()
         */
-       public $mMaxGeneratedPPNodeCount;
+       private $mMaxGeneratedPPNodeCount;
 
        /**
         * Maximum recursion depth in PPFrame::expand()
         */
-       public $mMaxPPExpandDepth;
+       private $mMaxPPExpandDepth;
 
        /**
         * Maximum recursion depth for templates within templates
         */
-       public $mMaxTemplateDepth;
+       private $mMaxTemplateDepth;
 
        /**
         * Maximum number of calls per parse to expensive parser functions
         */
-       public $mExpensiveParserFunctionLimit;
+       private $mExpensiveParserFunctionLimit;
 
        /**
         * Remove HTML comments. ONLY APPLIES TO PREPROCESS OPERATIONS
         */
-       public $mRemoveComments = true;
+       private $mRemoveComments = true;
 
        /**
         * Callback for current revision fetching. Used as first argument to call_user_func().
         */
-       public $mCurrentRevisionCallback =
+       private $mCurrentRevisionCallback =
                array( 'Parser', 'statelessFetchRevision' );
 
        /**
         * Callback for template fetching. Used as first argument to call_user_func().
         */
-       public $mTemplateCallback =
+       private $mTemplateCallback =
                array( 'Parser', 'statelessFetchTemplate' );
 
        /**
         * Enable limit report in an HTML comment on output
         */
-       public $mEnableLimitReport = false;
+       private $mEnableLimitReport = false;
 
        /**
         * Timestamp used for {{CURRENTDAY}} etc.
         */
-       public $mTimestamp;
+       private $mTimestamp;
 
        /**
         * Target attribute for external links
         */
-       public $mExternalLinkTarget;
+       private $mExternalLinkTarget;
 
        /**
         * Clean up signature texts?
         * @see Parser::cleanSig
         */
-       public $mCleanSignatures;
+       private $mCleanSignatures;
 
        /**
         * Transform wiki markup when saving the page?
         */
-       public $mPreSaveTransform = true;
+       private $mPreSaveTransform = true;
 
        /**
         * Whether content conversion should be disabled
         */
-       public $mDisableContentConversion;
+       private $mDisableContentConversion;
 
        /**
         * Whether title conversion should be disabled
         */
-       public $mDisableTitleConversion;
+       private $mDisableTitleConversion;
 
        /**
         * Automatically number headings?
         */
-       public $mNumberHeadings;
+       private $mNumberHeadings;
 
        /**
         * Thumb size preferred by the user.
         */
-       public $mThumbSize;
+       private $mThumbSize;
 
        /**
         * Maximum article size of an article to be marked as "stub"
@@ -182,38 +182,38 @@ class ParserOptions {
        /**
         * Language object of the User language.
         */
-       public $mUserLang;
+       private $mUserLang;
 
        /**
         * @var User
         * Stored user object
         */
-       public $mUser;
+       private $mUser;
 
        /**
         * Parsing the page for a "preview" operation?
         */
-       public $mIsPreview = false;
+       private $mIsPreview = false;
 
        /**
         * Parsing the page for a "preview" operation on a single section?
         */
-       public $mIsSectionPreview = false;
+       private $mIsSectionPreview = false;
 
        /**
         * Parsing the printable version of the page?
         */
-       public $mIsPrintable = false;
+       private $mIsPrintable = false;
 
        /**
         * Extra key that should be present in the caching key.
         */
-       public $mExtraKey = '';
+       private $mExtraKey = '';
 
        /**
         * Function to be called when an option is accessed.
         */
-       protected $onAccessCallback = null;
+       private $onAccessCallback = null;
 
        /**
         * If the page being parsed is a redirect, this should hold the redirect
@@ -372,16 +372,17 @@ class ParserOptions {
        }
 
        /**
-        * Get the user language used by the parser for this page.
+        * Get the user language used by the parser for this page and split the parser cache.
         *
-        * You shouldn't use this. Really. $parser->getFunctionLang() is all you need.
+        * @warning: Calling this causes the parser cache to be fragmented by user language!
+        * To avoid cache fragmentation, output should not depend on the user language.
+        * Use Parser::getFunctionLang() or Parser::getTargetLanguage() instead!
         *
-        * To avoid side-effects where the page will be rendered based on the language
-        * of the user who last saved, this function will triger a cache fragmentation.
-        * Usage of this method is discouraged for that reason.
-        *
-        * When saving, this will return the default language instead of the user's.
+        * @note This function will trigger a cache fragmentation by recording the
+        * 'userlang' option, see optionUsed(). This is done to avoid cache pollution
+        * when the page is rendered based on the language of the user.
         *
+        * @note When saving, this will return the default language instead of the user's.
         * {{int: }} uses this which used to produce inconsistent link tables (bug 14404).
         *
         * @return Language
@@ -395,6 +396,12 @@ class ParserOptions {
        /**
         * Same as getUserLangObj() but returns a string instead.
         *
+        * @warning: Calling this causes the parser cache to be fragmented by user language!
+        * To avoid cache fragmentation, output should not depend on the user language.
+        * Use Parser::getFunctionLang() or Parser::getTargetLanguage() instead!
+        *
+        * @see getUserLangObj()
+        *
         * @return string Language code
         * @since 1.17
         */
@@ -700,6 +707,10 @@ class ParserOptions {
 
        /**
         * Called when an option is accessed.
+        * Calls the watcher that was set using registerWatcher().
+        * Typically, the watcher callback is ParserOutput::registerOption().
+        * The information registered that way will be used by ParserCache::save().
+        *
         * @param string $optionName Name of the option
         */
        public function optionUsed( $optionName ) {
index 15321c2..2eb1dc9 100644 (file)
@@ -686,6 +686,8 @@ class ParserOutput extends CacheTime {
        /**
         * Tags a parser option for use in the cache key for this parser output.
         * Registered as a watcher at ParserOptions::registerWatcher() by Parser::clearState().
+        * The information gathered here is available via getUsedOptions(),
+        * and is used by ParserCache::save().
         *
         * @see ParserCache::getKey
         * @see ParserCache::save
index 8ddb401..9429e44 100644 (file)
@@ -734,8 +734,12 @@ class Preprocessor_Hash implements Preprocessor {
                // Cache
                if ( $cacheable ) {
                        $cacheValue = sprintf( "%08d", self::CACHE_VERSION ) . serialize( $rootNode );
-                       $wgMemc->set( $cacheKey, $cacheValue, 86400 );
-                       wfDebugLog( "Preprocessor", "Saved preprocessor Hash to memcached (key $cacheKey)" );
+
+                       // T111289: Cache values should not exceed 1 Mb, but they do.
+                       if ( strlen( $cacheValue ) <= 1e6 ) {
+                               $wgMemc->set( $cacheKey, $cacheValue, 86400 );
+                               wfDebugLog( "Preprocessor", "Saved preprocessor Hash to memcached (key $cacheKey)" );
+                       }
                }
 
                return $rootNode;
index 98797a3..d7357cf 100644 (file)
@@ -76,7 +76,7 @@ class PoolCounterRedis extends PoolCounter {
        const AWAKE_ONE = 1; // wake-up if when a slot can be taken from an existing process
        const AWAKE_ALL = 2; // wake-up if an existing process finishes and wake up such others
 
-       /** @var array List of active PoolCounterRedis objects in this script */
+       /** @var PoolCounterRedis[] List of active PoolCounterRedis objects in this script */
        protected static $active = null;
 
        function __construct( $conf, $type, $key ) {
@@ -121,7 +121,6 @@ class PoolCounterRedis extends PoolCounter {
        }
 
        function acquireForMe() {
-
                $status = $this->precheckAcquire();
                if ( !$status->isGood() ) {
                        return $status;
@@ -131,7 +130,6 @@ class PoolCounterRedis extends PoolCounter {
        }
 
        function acquireForAnyone() {
-
                $status = $this->precheckAcquire();
                if ( !$status->isGood() ) {
                        return $status;
@@ -141,7 +139,6 @@ class PoolCounterRedis extends PoolCounter {
        }
 
        function release() {
-
                if ( $this->slot === null ) {
                        return Status::newGood( PoolCounter::NOT_LOCKED ); // not locked
                }
@@ -190,7 +187,7 @@ class PoolCounterRedis extends PoolCounter {
                return 1
 LUA;
                try {
-                       $res = $conn->luaEval( $script,
+                       $conn->luaEval( $script,
                                array(
                                        $this->getSlotListKey(),
                                        $this->getSlotRTimeSetKey(),
index a702d2e..d601467 100644 (file)
@@ -142,8 +142,12 @@ class PoolWorkArticleView extends PoolCounterWork {
 
                // Timing hack
                if ( $time > 3 ) {
-                       wfDebugLog( 'slow-parse', sprintf( "%-5.2f %s", $time,
-                               $this->page->getTitle()->getPrefixedDBkey() ) );
+                       // TODO: Use Parser's logger (once it has one)
+                       $logger = MediaWiki\Logger\LoggerFactory::getInstance( 'slow-parse' );
+                       $logger->info( '{time} {title}', array(
+                               'time' => number_format( $time, 2 ),
+                               'title' => $this->page->getTitle()->getPrefixedDBkey(),
+                       ) );
                }
 
                if ( $this->cacheable && $this->parserOutput->isCacheable() && $isCurrent ) {
index 68e5a17..ca84a51 100644 (file)
@@ -59,7 +59,6 @@ class ExtensionProcessor implements Processor {
                'wgHooks' => 'array_merge_recursive',
                // credits are handled in the ExtensionRegistry
                //'wgExtensionCredits' => 'array_merge_recursive',
-               'wgExtraNamespaces' => 'array_plus',
                'wgExtraGenderNamespaces' => 'array_plus',
                'wgNamespacesWithSubpages' => 'array_plus',
                'wgNamespaceContentModels' => 'array_plus',
@@ -213,7 +212,7 @@ class ExtensionProcessor implements Processor {
                        foreach ( $info['namespaces'] as $ns ) {
                                $id = $ns['id'];
                                $this->defines[$ns['constant']] = $id;
-                               $this->globals['wgExtraNamespaces'][$id] = $ns['name'];
+                               $this->attributes['ExtensionNamespaces'][$id] = $ns['name'];
                                if ( isset( $ns['gender'] ) ) {
                                        $this->globals['wgExtraGenderNamespaces'][$id] = $ns['gender'];
                                }
@@ -306,9 +305,15 @@ class ExtensionProcessor implements Processor {
         */
        protected function extractConfig( array $info ) {
                if ( isset( $info['config'] ) ) {
+                       if ( isset( $info['config']['_prefix'] ) ) {
+                               $prefix = $info['config']['_prefix'];
+                               unset( $info['config']['_prefix'] );
+                       } else {
+                               $prefix = 'wg';
+                       }
                        foreach ( $info['config'] as $key => $val ) {
                                if ( $key[0] !== '@' ) {
-                                       $this->globals["wg$key"] = $val;
+                                       $this->globals["$prefix$key"] = $val;
                                }
                        }
                }
index b89518a..f838103 100644 (file)
@@ -222,14 +222,7 @@ class ExtensionRegistry {
                                        $GLOBALS[$key] = array_merge_recursive( $GLOBALS[$key], $val );
                                        break;
                                case 'array_plus_2d':
-                                       // First merge items that are in both arrays
-                                       foreach ( $GLOBALS[$key] as $name => &$groupVal ) {
-                                               if ( isset( $val[$name] ) ) {
-                                                       $groupVal += $val[$name];
-                                               }
-                                       }
-                                       // Now add items that didn't exist yet
-                                       $GLOBALS[$key] += $val;
+                                       $GLOBALS[$key] = wfArrayPlus2d( $GLOBALS[$key], $val );
                                        break;
                                case 'array_plus':
                                        $GLOBALS[$key] = $val + $GLOBALS[$key];
index cecb6a2..b8ec63b 100644 (file)
@@ -191,6 +191,7 @@ class ResourceLoader implements LoggerAwareInterface {
                }
                // Defaults
                $options += array( 'cache' => true, 'cacheReport' => false );
+               $stats = RequestContext::getMain()->getStats();
 
                // Don't filter empty content
                if ( trim( $data ) === '' ) {
@@ -211,18 +212,16 @@ class ResourceLoader implements LoggerAwareInterface {
                        $cache = wfGetCache( wfIsHHVM() ? CACHE_ACCEL : CACHE_ANYTHING );
                        $cacheEntry = $cache->get( $key );
                        if ( is_string( $cacheEntry ) ) {
-                               wfIncrStats( "resourceloader_cache.$filter.hit" );
+                               $stats->increment( "resourceloader_cache.$filter.hit" );
                                return $cacheEntry;
                        }
                        $result = '';
                        try {
-                               $stats = RequestContext::getMain()->getStats();
                                $statStart = microtime( true );
-
                                $result = self::applyFilter( $filter, $data, $this->config );
-
                                $statTiming = microtime( true ) - $statStart;
-                               $stats->timing( "resourceloader_cache.$filter.miss", 1000 * $statTiming );
+                               $stats->increment( "resourceloader_cache.$filter.miss" );
+                               $stats->timing( "resourceloader_cache.$filter.timing", 1000 * $statTiming );
                                if ( $options['cacheReport'] ) {
                                        $result .= "\n/* cache key: $key */";
                                }
@@ -1486,9 +1485,7 @@ MESSAGE;
                $query = self::createLoaderQuery( $context, $extraQuery );
                $script = $this->getLoadScript( $source );
 
-               // Prevent the IE6 extension check from being triggered (bug 28840)
-               // by appending a character that's invalid in Windows extensions ('*')
-               return wfExpandUrl( wfAppendQuery( $script, $query ) . '&*', PROTO_RELATIVE );
+               return wfExpandUrl( wfAppendQuery( $script, $query ), PROTO_RELATIVE );
        }
 
        /**
@@ -1516,9 +1513,7 @@ MESSAGE;
                        $only, $printable, $handheld, $extraQuery
                );
 
-               // Prevent the IE6 extension check from being triggered (bug 28840)
-               // by appending a character that's invalid in Windows extensions ('*')
-               return wfExpandUrl( wfAppendQuery( $wgLoadScript, $query ) . '&*', PROTO_RELATIVE );
+               return wfExpandUrl( wfAppendQuery( $wgLoadScript, $query ), PROTO_RELATIVE );
        }
 
        /**
@@ -1630,9 +1625,6 @@ MESSAGE;
                $less->setPreserveComments( true );
                $less->setVariables( self::getLessVars( $config ) );
                $less->setImportDir( $config->get( 'ResourceLoaderLESSImportPaths' ) );
-               foreach ( $config->get( 'ResourceLoaderLESSFunctions' ) as $name => $func ) {
-                       $less->registerFunction( $name, $func );
-               }
                return $less;
        }
 
index a1844a8..baf9d95 100644 (file)
@@ -54,12 +54,18 @@ class SkinTemplate extends Skin {
                $moduleStyles = array(
                        'mediawiki.legacy.shared',
                        'mediawiki.legacy.commonPrint',
-                       'mediawiki.ui.button',
                        'mediawiki.sectionAnchor'
                );
                if ( $out->isSyndicated() ) {
                        $moduleStyles[] = 'mediawiki.feedlink';
                }
+
+               // Deprecated since 1.26: Unconditional loading of mediawiki.ui.button
+               // on every page is deprecated. Express a dependency instead.
+               if ( strpos( $out->getHTML(), 'mw-ui-button' ) !== false ) {
+                       $moduleStyles[] = 'mediawiki.ui.button';
+               }
+
                $out->addModuleStyles( $moduleStyles );
        }
 
index da1a54c..0f8b729 100644 (file)
@@ -50,10 +50,12 @@ class SpecialComparePages extends SpecialPage {
                $this->setHeaders();
                $this->outputHeader();
 
+               # Form (.mw-searchInput enables suggestions)
                $form = new HTMLForm( array(
                        'Page1' => array(
                                'type' => 'text',
                                'name' => 'page1',
+                               'cssclass' => 'mw-searchInput',
                                'label-message' => 'compare-page1',
                                'size' => '40',
                                'section' => 'page1',
@@ -70,6 +72,7 @@ class SpecialComparePages extends SpecialPage {
                        'Page2' => array(
                                'type' => 'text',
                                'name' => 'page2',
+                               'cssclass' => 'mw-searchInput',
                                'label-message' => 'compare-page2',
                                'size' => '40',
                                'section' => 'page2',
index 6356155..147f67e 100644 (file)
@@ -43,6 +43,10 @@ class EmailConfirmation extends UnlistedSpecialPage {
         * @throws UserNotLoggedIn
         */
        function execute( $code ) {
+               // Ignore things like master queries/connections on GET requests.
+               // It's very convenient to just allow formless link usage.
+               Profiler::instance()->getTransactionProfiler()->resetExpectations();
+
                $this->setHeaders();
 
                $this->checkReadOnly();
@@ -151,6 +155,10 @@ class EmailInvalidation extends UnlistedSpecialPage {
        }
 
        function execute( $code ) {
+               // Ignore things like master queries/connections on GET requests.
+               // It's very convenient to just allow formless link usage.
+               Profiler::instance()->getTransactionProfiler()->resetExpectations();
+
                $this->setHeaders();
                $this->checkReadOnly();
                $this->checkPermissions();
index 3d68813..74662ae 100644 (file)
@@ -299,7 +299,9 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
         */
        private function getWatchlist() {
                $list = array();
-               $dbr = wfGetDB( DB_MASTER );
+
+               $index = $this->getRequest()->wasPosted() ? DB_MASTER : DB_SLAVE;
+               $dbr = wfGetDB( $index );
 
                $res = $dbr->select(
                        'watchlist',
@@ -312,6 +314,7 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
                );
 
                if ( $res->numRows() > 0 ) {
+                       /** @var Title[] $titles */
                        $titles = array();
                        foreach ( $res as $row ) {
                                $title = Title::makeTitleSafe( $row->wl_namespace, $row->wl_title );
index e77479f..eb8a274 100644 (file)
@@ -104,7 +104,9 @@ class MovePageForm extends UnlistedSpecialPage {
                $permErrors = $this->oldTitle->getUserPermissionsErrors( 'move', $user );
                if ( count( $permErrors ) ) {
                        // Auto-block user's IP if the account was "hard" blocked
-                       $user->spreadAnyEditBlock();
+                       DeferredUpdates::addCallableUpdate( function() use ( $user ) {
+                               $user->spreadAnyEditBlock();
+                       } );
                        throw new PermissionsError( 'move', $permErrors );
                }
 
index f2a315e..4b75e5f 100644 (file)
@@ -50,10 +50,13 @@ class SpecialPreferences extends SpecialPage {
 
                if ( $this->getRequest()->getCheck( 'success' ) ) {
                        $out->wrapWikiMsg(
-                               Xml::tags(
+                               Html::rawElement(
                                        'div',
-                                       array( 'class' => 'successbox', 'id' => 'mw-preferences-success' ),
-                                       '$1'
+                                       array(
+                                               'class' => 'mw-preferences-messagebox successbox',
+                                               'id' => 'mw-preferences-success'
+                                       ),
+                                       Html::element( 'p', array(), '$1' )
                                ),
                                'savedprefs'
                        );
index 500a931..38baf5b 100644 (file)
@@ -92,7 +92,14 @@ class SpecialVersion extends SpecialPage {
                                        if ( $file ) {
                                                $wikiText = file_get_contents( $file );
                                                if ( substr( $file, -4 ) === '.txt' ) {
-                                                       $wikiText = Html::element( 'pre', array(), $wikiText );
+                                                       $wikiText = Html::element(
+                                                               'pre',
+                                                               array(
+                                                                       'lang' => 'en',
+                                                                       'dir' => 'ltr',
+                                                               ),
+                                                               $wikiText
+                                                       );
                                                }
                                        }
                                }
@@ -109,7 +116,14 @@ class SpecialVersion extends SpecialPage {
                                        $file = $this->getExtLicenseFileName( dirname( $extNode['path'] ) );
                                        if ( $file ) {
                                                $wikiText = file_get_contents( $file );
-                                               $wikiText = "<pre>$wikiText</pre>";
+                                               $wikiText = Html::element(
+                                                       'pre',
+                                                       array(
+                                                               'lang' => 'en',
+                                                               'dir' => 'ltr',
+                                                       ),
+                                                       $wikiText
+                                               );
                                        }
                                }
 
index 493df2e..b06b91e 100644 (file)
@@ -752,6 +752,12 @@ abstract class UploadBase {
                if ( $this->mTitle !== false ) {
                        return $this->mTitle;
                }
+               if ( !is_string( $this->mDesiredDestName ) ) {
+                       $this->mTitleError = self::ILLEGAL_FILENAME;
+                       $this->mTitle = null;
+
+                       return $this->mTitle;
+               }
                /* Assume that if a user specified File:Something.jpg, this is an error
                 * and that the namespace prefix needs to be stripped of.
                 */
index ae3736a..666660a 100644 (file)
@@ -21,6 +21,8 @@
  * @author Antoine Musso "<hashar at free dot fr>", Aaron Schulz
  */
 
+use IPSet\IPSet;
+
 // Some regex definition to "play" with IP address and IP address blocks
 
 // An IPv4 address is made of 4 bytes from x00 to xFF which is d0 to d255
index 370e2ed..b47442d 100644 (file)
@@ -2270,30 +2270,33 @@ class Language {
 
        /**
         * Get a format string for a given type and preference
-        * @param string $type May be date, time or both
-        * @param string $pref The format name as it appears in Messages*.php
+        * @param string $type May be 'date', 'time', 'both', or 'pretty'.
+        * @param string $pref The format name as it appears in Messages*.php under
+        *  $datePreferences.
         *
         * @since 1.22 New type 'pretty' that provides a more readable timestamp format
         *
         * @return string
         */
        function getDateFormatString( $type, $pref ) {
+               $wasDefault = false;
+               if ( $pref == 'default' ) {
+                       $wasDefault = true;
+                       $pref = $this->getDefaultDateFormat();
+               }
+
                if ( !isset( $this->dateFormatStrings[$type][$pref] ) ) {
-                       if ( $pref == 'default' ) {
-                               $pref = $this->getDefaultDateFormat();
-                               $df = self::$dataCache->getSubitem( $this->mCode, 'dateFormats', "$pref $type" );
-                       } else {
-                               $df = self::$dataCache->getSubitem( $this->mCode, 'dateFormats', "$pref $type" );
+                       $df = self::$dataCache->getSubitem( $this->mCode, 'dateFormats', "$pref $type" );
 
-                               if ( $type === 'pretty' && $df === null ) {
-                                       $df = $this->getDateFormatString( 'date', $pref );
-                               }
+                       if ( $type === 'pretty' && $df === null ) {
+                               $df = $this->getDateFormatString( 'date', $pref );
+                       }
 
-                               if ( $df === null ) {
-                                       $pref = $this->getDefaultDateFormat();
-                                       $df = self::$dataCache->getSubitem( $this->mCode, 'dateFormats', "$pref $type" );
-                               }
+                       if ( !$wasDefault && $df === null ) {
+                               $pref = $this->getDefaultDateFormat();
+                               $df = self::$dataCache->getSubitem( $this->mCode, 'dateFormats', "$pref $type" );
                        }
+
                        $this->dateFormatStrings[$type][$pref] = $df;
                }
                return $this->dateFormatStrings[$type][$pref];
index d230f35..8cf83e5 100644 (file)
        "databaseerror-error": "Хэукъоныгъэ: $1",
        "laggedslavemode": "<strong>Сакъ:</strong> НэкIубгъом имылъын лъэкIыщт хэIэзэныкIэмэ ащыщ.",
        "readonly": "Датэбазэр гъэпытагъэ",
-       "missingarticle-diff": "(Зэгъпш: $1, $2)",
+       "missingarticle-rev": "(версиеу № $1)",
+       "missingarticle-diff": "(Зэгъапш: $1, $2)",
        "internalerror": "ЫкIоцI хэукъоныгъэ",
-       "internalerror_info": "ЫкIоÑ\86I Ñ\85Ñ\8dÑ\83кÑ\8aонÑ\8bгъэ: $1",
+       "internalerror_info": "ЫкIоÑ\86I Ñ\84Ñ\8bкÑ\8aÑ\83агъэ: $1",
        "filecopyerror": "\"$1\"-файлыр \"$2\"-м копи шIын лъэкIыгъэп.",
        "filerenameerror": "Файлэу \"$1\" ыц1э \"$2\" фэдэу хъожьын лъэкIырэп.",
        "filedeleteerror": "Файлэу \"$1\" тегъэкIын лъэкIырэп.",
        "userlogin-yourname": "НэбгырацӀэр",
        "userlogin-yourname-ph": "Итх уи нэбгырацIэ",
        "createacct-another-username-ph": "Итх уи нэбгырацӀэр",
-       "yourpassword": "Шъэфыгъэ:",
+       "yourpassword": "ШъэфгущыI:",
        "userlogin-yourpassword": "ШъэфгущыI",
        "userlogin-yourpassword-ph": "Уи шъэфгущыIэ итх",
        "createacct-yourpassword-ph": "Къэтх шъэфгущыIэ горэ",
        "gotaccount": "Аккаунт уиӏаха? $1.",
        "gotaccountlink": "Системэм хахь",
        "userlogin-resetlink": "Уи хэхьан датэхэр пщыгъупшагъа?",
-       "userlogin-resetpassword-link": "Уипаролыр пщыгъупшагъа?",
+       "userlogin-resetpassword-link": "УишъэфгущыIэр пщыгъупшагъа?",
        "userlogin-helplink2": "Системэм сыхэхьанэу къыздеӏ",
        "userlogin-createanother": "НэмыкI аккаунт къэубл",
        "createacct-emailrequired": "Емэйл адрес",
        "createacct-benefit-body1": "{{PLURAL:$1|еӀэзэныгъэ|еӀэзэныгъ}}",
        "createacct-benefit-body2": "{{PLURAL:$1|нэкӀубгъо|нэкӀубгъу}}",
        "createacct-benefit-body3": "бэмышӀэу {{PLURAL:$1|хэлэжьакӀу|хэлэжьакӀо}}",
+       "badretype": "ШъэфгущыIэу ибгъэхьагъэхэр зэтефэрэп.",
        "userexists": "Ибгъэхьэгъэ нэбгырацIэр агъэфедэ.\nНэмыкI цIэ горэ къыхэхба.",
        "loginerror": "Системэ хэхьаныгъэр къуанчэ",
        "createacct-error": "Аккаунт къэублэныгъэ къончагъ",
        "nouserspecified": "НэбгырацIэр птхын фае.",
        "wrongpassword": "ШъэфгущыIэр тэрэзэп.\nДжыри зэ еплъ.",
        "wrongpasswordempty": "ШъэфгущыIэр нэкIы.\nДжыри зэ еплъ.",
+       "passwordtooshort": "ШъэфгущыIэр мыхъуми {{PLURAL:$1|1 символ |символ $1}} хъун фае.",
        "password-name-match": "Уи шъэфгущыIэр уи нэбгырацIэм фэдапэ хъущтэп.",
        "mailmypassword": "Зэтедз шъэфгущыIэр",
        "noemailcreate": "Емэйл тэрэз птхын фае.",
        "user-mail-no-addy": "Емэйл адрес имыIэу емэйл аригъэхьынэу фэягъ.",
        "user-mail-no-body": "Емэйл ебгъэхьынэу уфаягъ, нэкIэу е мэхьанэнчъэ кIакоу.",
        "changepassword": "ШъэфгущыIэр зэблэхъу",
+       "resetpass_announce": "Системэ хэхьаныр зэшIобгъэкIынэу, шъэфгущыIакIэ бгъэпсын фае.",
        "resetpass_header": "Аккаунтым и шъэфгущыIэр зэблэхъу",
        "oldpassword": "ШъэфгущыIэжъыр:",
        "newpassword": "ШъэфгущыIакIэр:",
        "resetpass-no-info": "Мы нэкIубгъом занкIэу укIонэу уфаемэ, системэм ухэхьэгъэн фае.",
        "resetpass-submit-loggedin": "ШъэфгущыIэр зэблэхъу",
        "resetpass-submit-cancel": "Ыуж икӀ",
+       "resetpass-recycled": "УишъэфгущыIэр зэтедзба джырэм фэмыдэу.",
        "resetpass-expired": "ШъэфгущыIэм и зэман икIыгъ. ШъэфгущыIакIэ горэ гъэпсба.",
-       "passwordreset": "Зэтедз паролыр",
+       "passwordreset": "Зэтедз шъэфгущыIэр",
        "passwordreset-disabled": "Мы виким шъэфгущыIэр щызэтебдзэшъущтэп.",
        "passwordreset-emaildisabled": "Мы виким емэйл-Iофыгъохэр щылажьэхэрэп.",
        "passwordreset-username": "НэбгырацIэ:",
        "passwordreset-emailtitle": "Аккаунт и гъэпсыкIэхэр, мий щыI {{SITENAME}}",
        "passwordreset-emailelement": "НэбгырацIэ: $1\nTemporary password: $2",
        "passwordreset-emailsent": "ШъэфгущыIэм и зэтедзым пае емэйл агъэхьыгъ.",
+       "passwordreset-emailsent-capture": "ШъэфгущыIэм изэтедз фэгъэхьыгъэ емэйлыр гъахьыгъэ, ычIэгъкIэ ар олъэгъу.",
        "changeemail": "Зэблэхъу емэйл адресыр",
        "changeemail-oldemail": "Джырэ емэйл адрес:",
        "changeemail-newemail": "Емэйл адресыкIэр:",
        "preview": "Ыпэтеплъ",
        "showpreview": "Итеплъэ къэгъэлъагъу",
        "showdiff": "ЗэхъокӀыныгъэхэр къэгъэлъагъу",
+       "anoneditwarning": "<strong>Сакъ:</strong>Системэм ухэхьагъэп. Уи IP-адресыр зэкIэми алъэгъушъущт зыгорэм ухэIазэмэ. <strong>[$1 ухахьэмэ]</strong> е <strong>[$2 аккаунт уублэмэ]</strong>, уи еIэзэнхэр уи нэбгырацIэм пышIэгъэщтых, нэмыкI шIуагъэхэм анэмыкIэу.",
        "missingcommenttext": "ТегущыIэн горэ кIэтхэжьба ычIэгъ.",
        "summary-preview": "Къэбарым и ыпэтеплъ:",
        "previewerrortext": "Уи ыпэтеплъэмэ я къэгъэлъэгъон игъо зы къончагъэ горэ хъугъэ.",
        "loginreqlink": "системэм хахь",
        "accmailtitle": "ШъэфгущыIэр агъэхьыгъ",
        "newarticle": "(КIэ)",
+       "noarticletext": "Текст пари итыгоп мы нэкIубгъом.\n[[Special:Search/{{PAGENAME}}|Мы нэкIубгъом ыцIэ улъыхъун]] плъэкIыщт нэмыкI нэкIубгъомэ,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ехьылIэгъэ журналхэм къащыбгъотын],\nе [{{fullurl:{{FULLPAGENAME}}|action=edit}} мы нэкIубгъом уеIэзэн]</span>.",
+       "noarticletext-nopermission": "Текст пари итыгоп мы нэкIубгъом.\n[[Special:Search/{{PAGENAME}}|Мы нэкIубгъом ыцIэ улъыхъун]] плъэкIыщт нэмыкI нэкIубгъомэ, е\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ехьылIэгъэ журналхэм къащыбгъотын]</span>. Ау мы нэкIубгъор уублэнэу фитыныгъэ уиIэп.",
        "userpage-userdoesnotexist-view": "Аккаунтэу \"$1\" регистрацие ыкIугъэп.",
        "note": "<strong>Еплъ:</strong>",
        "previewnote": "<strong>Зыщымыгъэгъупш, мыр ыпэтеплъэ къодый.</strong>\nУи еIэзэнхэр джыри дэгъэпытыхьагъэхэп.",
        "revdelete-hide-user": "ЕIэзакIом и нэбгырацI/IP-адрес",
        "revdelete-radio-same": "(зэблэмыхъу)",
        "revdelete-radio-set": "(гъэбылъыгъэ)",
+       "revdelete-radio-unset": "Плъэгъушъунэу",
        "revdelete-log": "ЗыпкъырыкIырэр:",
        "revdel-restore": "плъэгъушъущтыр зэблэхъу",
        "pagehist": "НэкIубгъом и тарихъ",
        "deletedhist": "ТегъэкIыгъэмэ я тарихъ",
        "revdelete-reasonotherlist": "ПэмыкI къызпкъырыкIрэр",
        "revdelete-offender": "Версием и аутор:",
+       "mergehistory": "НэкIубгъомэ ятарихъхэр зэпыдз",
+       "mergehistory-box": "НэкIубгъуитIум ятарихъхэр зэпыдзэх:",
        "mergehistory-from": "Лъапсэ нэкIубгъор:",
        "mergehistory-into": "ЗыдакIорэ нэкIубгъор:",
        "mergehistory-go": "Зэпыбдзэшъурэ еIэзэнхэр къэгъэлъагъу",
        "nextn-title": "КIэлъыкIорэ $1 {{PLURAL:$1|резултат|резултатхэр}}",
        "shown-title": "Зы нэкӀубгъом $1{{PLURAL:$1|гъотыгъэ|гъотыгъэхэр}} къыщыгъэлъагъу",
        "viewprevnext": "Еплъ ($1 {{int:pipe-separator}} $2) ($3)",
+       "searchmenu-new": "<strong>НэкIубгъор щыублэ \"[[:$1]]\" мы вики-проектым!</strong> {{PLURAL:$2|0=|Узщылъыхъугъэм ирезултат-нэкIубгъоми еплъ.|Узщылъыхъугъэм ирезултат-нэкIубгъохэми яплъ.}}",
        "searchprofile-articles": "НэкӀубгъо шъхьаӀхэр",
        "searchprofile-images": "Мултимедие",
        "searchprofile-everything": "ЗэкӀэ",
        "search-relatedarticle": "ЕхьылIагъ",
        "searchrelated": "ехьылIагъ",
        "searchall": "зэкӀэ",
+       "search-showingresults": "{{PLURAL:$4|Резултат <strong>$1</strong> мыщ щыщэу <strong>$3</strong>|Резултатхэр <strong>$1 - $2</strong> мыщ щыщхэу <strong>$3</strong>}}",
        "search-nonefound": "Узлъыхъугъэм пари ехьылӀагъэ щыӀэп.",
        "powersearch-legend": "Зэхэщыгъэ лъыхъун",
        "powersearch-ns": "ЦIэчIыпIэмэ ащылъыхъу:",
        "prefs-tokenwatchlist": "Токен",
        "email-address-validity-valid": "Емэйл адресыр тэрэзым фэд",
        "email-address-validity-invalid": "Емэйл адрес тэрэз итх",
+       "userrights-lookup-user": "Нэбгырэмэ якупхэр гъэпс",
        "userrights-user-editname": "Итх уи нэбгырацӀэр:",
        "editusergroup": "Нэбгырэмэ я купмэ яIаз",
        "userrights-editusergroup": "Нэбгырэмэ я купмэ яIаз",
+       "userrights-groupsmember": "Мы купмэ ахахьэ:",
        "userrights-reason": "ЗыпкъырыкIырэр:",
+       "userrights-nodatabase": "Датэбазэу $1 щыIэп е хьанэгъунэу щытэп.",
        "userrights-changeable-col": "Купхэу узхэIэзыхьашъущтхэр",
        "userrights-unchangeable-col": "Купхэу узхэМыIэзыхьашъущтхэр",
        "group": "Куп:",
        "right-createtalk": "ТегущыIэнэ нэкIубгъохэр шIы",
        "right-createaccount": "Нэбгырэмэ я аккаунт кIэхэр шIы",
        "right-minoredit": "ЕIэзэнхэр цIыкIухэу гъэнафэх",
-       "right-move": "Ð¥Ñ\8cÑ\8bÑ\85 Ð½Ñ\8dкIÑ\83бгÑ\8aоÑ\85Ñ\8dÑ\80",
+       "right-move": "Ð\9dÑ\8dкIÑ\83бгÑ\8aомÑ\8d Ð°Ñ\86\8dÑ\85Ñ\8dÑ\80 Ñ\85Ñ\8aожÑ\8c",
        "right-move-subpages": "Хьых нэкIубгъохэмрэ кIэтнэкIубгъохэмрэ",
        "right-move-categorypages": "Хьы категорием и нэкIубгъохэр",
-       "right-movefile": "Ð¥Ñ\8cÑ\8b Ñ\84айлÑ\85Ñ\8dÑ\80",
+       "right-movefile": "ФайлÑ\8dмÑ\8d Ð°Ñ\86\8dÑ\85Ñ\8dÑ\80 Ñ\85Ñ\8aожÑ\8c",
        "right-upload": "Файлыр илъхь",
        "right-reupload": "ЩыIэ файлхэм ашъхьэтетхэн",
+       "right-upload_by_url": "URL-м файлэхэр къищых",
        "right-writeapi": "Итхэным пае API игъэфедэн",
        "right-delete": "ТегъэкI нэкIбгъохэр",
        "right-bigdelete": "ТегъэкI нэкIубгъохэр тарихъ кIахь зиIэ",
+       "right-browsearchive": "ТегъэкIыжьыгъэ нэкIубгъомэ алъыхъу",
        "right-undelete": "ТемыгъэкI нэкIубгъор",
+       "right-viewsuppressed": "ЗэкIэмэ ашIогъэбылъыгъэ версиемэ яплъ",
        "right-editcontentmodel": "НэкIубгъом и кIоцIырытым и модел зэблэхъун",
        "right-editinterface": "Нэбгырэ-интерфейсым еIэзэн",
        "right-editusercssjs": "НэмыкI нэбгырэмэ я CSS, JavaScript файлэмэ яIэзэн",
        "right-editmyusercss": "Уи CSS файлэмэ яIэзэн",
        "right-editmyuserjs": "Уи JavaScript файлэмэ яIэзэн",
        "right-viewmywatchlist": "Уи лъыплъэ купым еплъ",
+       "right-editmyoptions": "УигъэпсыкIэмэ яIаз",
+       "right-unwatchedpages": "Зылъымыплъэрэ нэкIубгъо купым еплъ",
+       "right-mergehistory": "НэкIубгъомэ ятарихъхэр зэпыдзэх",
+       "right-sendemail": "НэмыкIмэ емэйл афегъэхь",
+       "right-passwordreset": "ШъэфгущыIэм фэгъэхьыгъэ емэйлхэм яплъ",
        "newuserlogpage": "ХэлэжьакӀомэ яублэн лог",
        "action-read": "едж мы нэкIубгъом",
        "action-edit": "мы нэкIубгъом еIаз",
        "action-createaccount": "мы нэбгырэм и аккаунт ублэн",
        "action-history": "мы нэкIубгъом и тарихъым еплъын",
        "action-minoredit": "мы еIэзэныгъэр цIыкIоу гъэнаф",
-       "action-move": "хьы мы нэкӀубгъор",
+       "action-move": "мы нэкIубгъом ыцIэ хъожь",
        "action-move-subpages": "хьы мы нэкIубгъори, кIэтнэкIубгъохэри",
        "action-move-categorypages": "хьы категорием и нэкIубгъохэр",
        "action-movefile": "хьы мы файлыр",
        "recentchangeslinked-feed": "ЕхьылӀэгъэ зэхъокӀыныгъэхэр",
        "recentchangeslinked-toolbox": "ЕхьылӀэгъэ зэблэхъуныгъэхэр",
        "recentchangeslinked-title": "\"$1\"-м ехьылӀэгъэ зэхъокӀыныгъэхэр",
+       "recentchangeslinked-summary": "НэкIубгъо гъэнэфагъэ горэм зыщэрэ (е категорие гъэнэфагъэм итхэм зыщэрэ) нэкIубгъомэ яеIэзэнмэ ябэмышIэ куп.\n\n[[Special:Watchlist|Уилъыплъэ купым]] хахьэрэ нэкIубгъохэр <strong>хэунэфыкIыгъэх</strong>.",
        "recentchangeslinked-page": "НэкӀубгъом ыцӀэр:",
        "recentchangeslinked-to": "Пхэнджэу, зигугъу шIыгъэ нэкIубгъом къэзыщэрэ нэкIубгъомэ язэхъокIыныгъэхэр къэгъэлъагъу",
        "upload": "Файлыр илъхь",
        "minlength1": "ФайлэцIэр зы буквэу щытын фае мыхъуми.",
        "filename-toolong": "ФайлыцIэр байт 240 нахьыбэ хъун лъэкIыщтэп.",
        "badfilename": "ФайлыцIэр хъожьыгъэ мыщкIэ \"$1\".",
+       "filetype-missing": "Мы файлым зэхэщьыгъэ пари еIэп (\".jpg\" фэдэу).",
        "empty-file": "Ебгъэхьыгъэ файлыр нэкIы.",
        "file-too-large": "Ебгъэхьыгъэ файлыр иныщэ.",
        "filename-tooshort": "ФайлыцIэр кIэкуащэ.",
        "sourcefilename": "Лъэпсэ файлым ыцI:",
        "sourceurl": "Лъэпсэ URL:",
        "destfilename": "ЗдакIорэ файлым цыI:",
+       "upload-maxfilesize": "Файлым иинагъэ максимум: $1",
        "upload-description": "Файлым и къэбар",
        "upload-options": "Илъхьан гъэпсыкIэхэр",
        "watchthisupload": "Мы файлым лъыплъ",
        "license-nopreview": "(Ыпэтеплъэр гъэпсыгъэп)",
        "upload_source_file": "(къыхэпхыгъэ файлыр уи компьютер щыщ)",
        "listfiles-delete": "ТегъэкI",
+       "listfiles_search_for": "ФайлыцIэмкIэ лыхъу:",
        "imgfile": "файл",
        "file-anchor-link": "Файл",
        "filehist": "Файл тарихъ",
        "nolinkstoimage": "Мыщ къэзыщэу нэкӀубгъо пари щыӀэп.",
        "sharedupload-desc-here": "Мы файлыр мыщ къикIыгъ $1 ыкIи нэмыкI проектхэм ащыгъэфедэн лъэкIыщт.\nИнформациеу [$2 файлым и гурыIон-тхыгъэм] щыщыр ычIэгъкIэ щыт.",
        "upload-disallowed-here": "Мы файлым ухэӀэзахьыжьын уфитэп.",
+       "mimesearch": "MIME лъыхъун",
+       "mimetype": "MIME-тип",
+       "unwatchedpages": "Пари лымыплъэрэ нэкIубгъохэр",
+       "unusedtemplateswlh": "нэмыкI зэпыщэхэр",
        "randompage": "ОшӀэдэмышӀэ нэкӀубгъу",
+       "randomincategory-category": "Категорие:",
+       "randomincategory-legend": "Категорием щыщэу ошIэдэмышIэ нэкIубгъу",
+       "randomincategory-submit": "КӀо",
+       "statistics": "Статистикэ",
+       "statistics-header-pages": "Нэк1убгъо статистикэ",
+       "statistics-header-edits": "ЕIэзэнхэм ястатистикэ",
+       "statistics-header-users": "Нэбгырэмэ ястатистикэ",
+       "statistics-header-hooks": "НэмыкI статистикэ",
+       "statistics-pages": "НэкӀубгъохэр",
        "statistics-files": "Илъхьэгъэ файлэхэр",
+       "pageswithprop-submit": "КӀо",
+       "brokenredirects-edit": "еӀаз",
+       "brokenredirects-delete": "тегъэкI",
+       "withoutinterwiki": "Бзэ зэпыщэ зимыIэ нэкIубгъохэр",
+       "withoutinterwiki-summary": "Мы нэкIубгъомэ нэмыкI бзэ версиехэм ащэрэп.",
+       "withoutinterwiki-submit": "Къэгъэлъагъу",
        "nbytes": "$1{{PLURAL:$1|байт|байтхэр}}",
        "nmembers": "$1 {{PLURAL:$1|объект|объектхэр}}",
+       "uncategorizedcategories": "Категорие мыхьыгъэ категориехэр",
+       "uncategorizedimages": "Категорие мыхьыгъэ файлхэр",
+       "uncategorizedtemplates": "Категорие мыхьыгъэ шапхъэхэр",
+       "unusedcategories": "Мыгъэсэбэпыгъэ категориехэр",
+       "unusedimages": "Мыгъэсэбэпыгъэ файлхэр",
+       "wantedcategories": "ИщыкIэгъэ категориехэр",
+       "wantedpages": "ИщыкIэгъэ нэкIубгъохэр",
+       "wantedfiles": "ИщыкIэгъэ файлхэр",
+       "wantedtemplates": "ИщыкIэгъэ шапхъэхэр",
+       "mostlinked": "Нахьыбэу зыдащэрэ нэкIубгъохэр",
+       "mostlinkedcategories": "Нахьыбэу зыдащэрэ категориехэр",
+       "mostcategories": "Категорие нахьыбэ зиIэ нэкIубгъохэр",
+       "mostimages": "Нахьыбэу зыдащэрэ файлхэр",
+       "shortpages": "НэкIубгъо кIакIохэр",
+       "longpages": "НэкIубгъо кIахьхэр",
+       "protectedpages-page": "НэкӀубгъо",
+       "protectedpages-reason": "ЗыпкъырыкIырэр",
+       "protectedpages-unknown-timestamp": "ЗэхэмышIыкIыгъэ",
        "newpages": "НэкӀубгъуакӀэхэр",
+       "newpages-username": "НэбгырацIэ:",
+       "ancientpages": "Жъыдэдэ нэкIубгъохэр",
        "move": "Хьы",
+       "movethispage": "ЫцIэ зэблэхъу мы нэкIубгъом",
        "pager-older-n": "{{PLURAL:$1|нахьыжъэу 1|нахьыжъхэу $1}}",
        "booksources": "Тхылъхэр къыздикӀыгъэхэр",
        "booksources-search-legend": "Тхылъ лъапсэхэм алъыхъу",
        "booksources-search": "Лъыхъу",
        "log": "Логхэр",
+       "log-title-wildcard": "Мы символхэмкIэ къежьэрэ нэкIубгъуацIэмэ алъыхъу",
        "allpages": "НэкIубгъо пстэур",
+       "nextpage": "КIэлъыкIорэ нэкIубгъор ($1)",
        "prevpage": "Ыпэит нэкубгъор ($1)",
        "allarticles": "НэкӀубгъо пстэур",
+       "allinnamespace": "НэкIубгъо пстэур ($1 цIэчIыпIэр)",
        "allpagessubmit": "KӀо",
+       "cachedspecial-refresh-now": "Ыуждэдэм еплъын.",
        "categories": "Категориехэр",
+       "special-categories-sort-count": "гъэзаф пчъагъэкIэ",
+       "special-categories-sort-abc": "гъэзаф алфыбэкIэ",
+       "sp-deletedcontributions-contribs": "лэжьыгъэ",
+       "linksearch-pat": "Лъыхъун шапхъ:",
+       "linksearch-ns": "ЦӀэчӀыпӀ:",
+       "linksearch-ok": "Лъыхъу",
+       "listusers-submit": "Къэгъэлъагъу",
+       "listusers-noresult": "Нэбгырэ пари гъотыгъэп.",
+       "activeusers-hidebots": "Ботхэр гъэбылъ",
+       "activeusers-hidesysops": "Администраторхэр гъэбылъ",
+       "activeusers-noresult": "Нэбгырэ пари гъотыгъэп.",
+       "listgrouprights": "Нэбгырэмэ якупмэ яфитыныгъэхэр",
+       "listgrouprights-group": "Куп",
+       "listgrouprights-rights": "Фитыныгъэхэр",
+       "listgrouprights-helppage": "Help:Купхэм яфитыныгъэхэр",
+       "listgrouprights-members": "(хэлэжьэкIо пстэур)",
+       "listgrouprights-addgroup-all": "Куп пстэум хэгъахъу",
+       "listgrouprights-removegroup-all": "Куп пстэур тегъэкI",
+       "listgrouprights-namespaceprotection-namespace": "ЦӀэчӀыпӀ",
+       "trackingcategories": "Лъыплъэрэ категориехэр",
+       "trackingcategories-msg": "Лъыплъэрэ категорие",
+       "trackingcategories-name": "Мессаджым ыцIэ",
+       "mailnologin": "Гъахьыным пае адрес щыIэп",
+       "emailuser": "Нэбгырэм емэйл фегъэхь",
+       "emailuser-title-notarget": "Нэбгырэм емэйл фегъэхьын",
+       "noemailtitle": "Емэйл адресыр щыIэп",
+       "emailusername": "НэбгырацIэ:",
+       "emailusernamesubmit": "Егъэхь",
+       "emailmessage": "Мессадж:",
+       "emailsend": "Егъэхь",
+       "emailccme": "Симессаджым икопие къысфегъэхь.",
+       "emailsent": "Емэйлыр гъахьыгъэ",
+       "emailsenttext": "Уиемэйлыр моу джы гъахьыгъэ.",
+       "usermessage-summary": "Системэ мессадж къэгъан.",
+       "watchlist": "Лъыплъэ куп",
        "mywatchlist": "Лъыплъэ куп",
+       "watchlistfor2": "$1 $2 пае",
+       "watchnologin": "Системэм хэхьагъэп",
+       "addwatch": "Лъыплъэ купым хэгъахъу",
+       "removewatch": "Лъыплъэ купым хэгъэкI",
+       "removedwatchtext-short": "НэкIубгъоу \"$1\" лъыплъэ купым хэгъэкIыгъэ.",
        "watch": "Лъыплъ",
+       "watchthispage": "Мы нэкӀубгъом лъыплъ",
        "unwatch": "Лъымыплъэжь",
+       "unwatchthispage": "Лъыплъэныр щыгъэт",
        "watching": "Лъыплъ...",
        "unwatching": "Лъымплъэжь...",
-       "enotif_impersonal_salutation": "{{SITENAME}} хэлэжьакIо",
+       "enotif_impersonal_salutation": "{{SITENAME}} инэбгырэ",
        "enotif_anon_editor": "ТымышӀэрэ нэбгыр $1",
        "created": "къагъэхъуыгъ",
        "changed": "зэблэхъугъэ",
-       "deletepage": "ТегъэкI нэкIбгъор",
+       "deletepage": "ТегъэкI нэкIубгъор",
        "confirm": "Теубыт",
        "excontent": "дэтхэгъагъэр: \"$1\"",
        "excontentauthor": "дэтхэгъагъэр: \"$1\" (хэлэжьэкIо закъоэр \"[[Special:Contributions/$2|$2]]\")",
        "undelete-show-file-submit": "Ары",
        "namespace": "ЦӀэчӀыпӀ:",
        "invert": "Зэшъхьатегъэуцу хэгъэщыгъэр",
+       "tooltip-invert": "Мы плIэмыер гъэнаф, хэхыгъэ цIэчIыпIэм щыщ нэкIубгъомэ яеIэзэнхэр бгъэбылъынэу (ыкIи ехьылIэгъэ цIэчIыпIэр, гъэнэфагъэмэ)",
        "namespace_association": "ЕхьылӀэгъэ цӀэчӀыпӀэр",
+       "tooltip-namespace_association": "Мы плIэмыер гъэнаф, хэхыгъэ цIэчIыпIэм ехьылIэгъэ тегущыIэн-нэкIубгъор е субъект цIэчIыпIэр пыбгъэхъонэу уфаемэ.",
        "blanknamespace": "(ШъхьаӀ)",
        "contributions": "{{GENDER:$1|ХэлэжьакIом}} и лэжьыгъэ Iахь",
        "contributions-title": "$1 нэбгырэм и лэжьыгъэ",
        "sp-contributions-newbies": "Аккаунт кШэ закъомэ я лэжьыгъэр къэгъэлъагъу",
        "sp-contributions-newbies-sub": "Аккаунт кIэмэ апай",
        "sp-contributions-logs": "Логхэр",
-       "sp-contributions-talk": "гущыIэ",
+       "sp-contributions-talk": "тегущыI",
        "sp-contributions-username": "IP-адрес е нэбгырацIэ:",
        "sp-contributions-submit": "Лъыхъу",
        "whatlinkshere": "Мы нэкӀубгъом къэзыщэрэ зэпыщэхэр",
        "whatlinkshere-hideredirs": "$1 гъэкӀожьын",
        "whatlinkshere-hidelinks": "$1 зэпыщ",
        "whatlinkshere-filters": "Филтрэхэр",
+       "ipaddressorusername": "IP-адрес е нэбгырацIэ:",
+       "ipbreason": "ЗыпкъырыкIырэр:",
+       "ipbemailban": "Нэбгырэм емэйл ымыгъэхьышъунэу шIы",
        "ipboptions": "сыхьатитIу:2 hours, зымаф:1 day,мэфищ:3 days, зытхьамаф:1 week, тхьамафитӀу:2 weeks, зымаз:1 month, мэзищ:3 months, мэзих:6 months, зыилъэс:1 year, ренэу:infinite",
+       "badipaddress": "IP адрес фыкъуагъэ",
+       "blocklist-reason": "ЗыпкъырыкIырэр",
+       "ipblocklist-submit": "Лъыхъу",
        "ipblocklist-empty": "Блок купыр нэкIы.",
        "blocklink": "егъэт",
        "unblocklink": "Ӏухъотещ",
        "movelogpage": "Кощхэм я лог",
        "revertmove": "зэкIэгъэкIон",
        "export": "НэкӀубгъохэр къыхэщын",
+       "export-addcattext": "Хэгъахъу нэкIубгъохэр категорием щыщэу:",
+       "export-addcat": "Хэгъахъу",
+       "export-addnstext": "Хэгъахъу нэкIубгъохэр цIэчIыпIэм щыщэу:",
+       "export-addns": "Хэгъахъу",
+       "allmessages": "Системэ мессаджхэр",
        "allmessagesname": "ЦIэ",
+       "allmessagescurrent": "Джырэ мессаджым итекст",
+       "allmessages-filter-legend": "Филтр",
+       "allmessages-filter-unmodified": "ЗэмыхъакIыгъэ",
+       "allmessages-filter-all": "ЗэкIэ",
+       "allmessages-filter-modified": "ЗэхъокIыгъэ",
+       "allmessages-language": "Бзэ:",
+       "allmessages-filter-submit": "КӀо",
+       "allmessages-filter-translate": "ЗэдзэкI",
        "thumbnail-more": "Джадэ къэшӀ",
+       "filemissing": "Файлыр щэкIэ",
+       "thumbnail_error_remote": "Къончагъэм имессадж, зиер $1: $2",
+       "import-interwiki-sourcewiki": "Лъапсэм и вики:",
+       "import-interwiki-sourcepage": "Лъапсэ нэкIубгъор:",
        "import-interwiki-submit": "Къих",
        "import-mapping-namespace": "Къихи цIэчIыпIэм къилъхь:",
+       "import-upload-filename": "ФайлыцIэ:",
+       "import-comment": "ПыIухьажь:",
        "tooltip-pt-userpage": "Ситхьапэ",
        "tooltip-pt-mytalk": "Уи гущыӀэ нэкӀубгъу",
        "tooltip-pt-preferences": "Сызыфаехэр",
        "tooltip-ca-nstab-special": "Мы нэкӀубгъор шъхьафы, зыцэ хэптхэжьынэу щытэп",
        "tooltip-ca-nstab-project": "Проектым и нэкӀубгъу",
        "tooltip-ca-nstab-image": "Тхьапэм и файл еплъ",
+       "tooltip-ca-nstab-mediawiki": "Систем мессаджым еплъ",
        "tooltip-ca-nstab-template": "Шапхъэ къэгъэлъагъу",
        "tooltip-ca-nstab-category": "Категорие тхьапэм еплъ",
        "tooltip-minoredit": "Мэхьанэ зимыIэ хэIэзэныгъэу къэгъэлъагъу",
        "tooltip-undo": "«КӀэгъэкӀожьын»-ым мы зэхъокӀыныгъэр зэкӀегъэкӀожьы ыкӀи еӀэзэкӀо формэр утеплъэшъунэу къызэӀуехы. ЗыфызэкӀэбгъэкӀожьыгъэри пыптхэжьышъущт.",
        "tooltip-summary": "Къэбар тӀэкӀу горэ итх",
        "simpleantispam-label": "Спам-ебэнрэ уплъэкӀун.\nМыщ зи хаптхэ <strong>хъущтэп</strong>!",
+       "pageinfo-language": "НэкIубгъом ыбз",
        "pageinfo-toolboxlink": "НэкӀубгъом и информацие",
        "previousdiff": "← ЫпэкъэкӀорэ еӀэзэн",
        "nextdiff": "Нахь еӀэзэныгъакӀ →",
        "show-big-image-preview": "Мыщ и ыпэтеплъэм иинагъэр: $1.",
        "show-big-image-other": "НэпэмыкI {{PLURAL:$2|зэхэщыкIэ|зэхэщыкIэхэр}}: $1.",
        "show-big-image-size": "Пиксел $1 × $2",
+       "ilsubmit": "Лъыхъу",
        "bad_image_list": "Форматыр зэрщытыр:\n\nГулытэ зиӀэныр тхылъым и тамыгъэхэм (сатыр тамыгъэ * къежьэхэр).\nСатырым и техьэпӀэ япэрем сурэт иплъхьэ мыхъуным и техьэпӀэ иӀэн фай.\nЯужы ит техьэпӀэхэр хэгъэкӀа фэдэу къилъытэну, сурэтыр здиплъэ хъуну тхыгъэхэр.",
        "metadata": "Метадатэр",
+       "metadata-help": "Мы файлым нэмыкI информацие илъ, диджитал камерэм сканнерым къикIыгъэу, шIыным е и диджитацие пае.\nМы файлыр иублэ щытыкIэ елъытыгъэу еIэзагъэхэмэ, детал горэхэр щыкIэщтхэнкIи мэхъу.",
+       "metadata-fields": "Сурэтым иметадатэ ишъофхэр мы мессаджым къыщыгъэлъэгъуагъэхэр сурэтым инэкIубгъо щыIэщтых, метадатэм инэкIубгъо щыхьагъэу щытэу.\nАдрэхэр гъэбылъыгъэу щытыщтых.\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",
        "exif-orientation": "Кадрым и ориентацие",
        "exif-xresolution": "Шъомбгъуагъ зэхэщыкIэ",
        "exif-yresolution": "Iатыгъагъ зэхэщыкIэ",
        "exif-colorspace": "Теплъэшъо чӀыпӀэ",
        "exif-datetimeoriginal": "Датэм и къежьэпӀэ мафэрэ уахътэрэ",
        "exif-datetimedigitized": "ЦифрэшӀыным и мафэрэ, и уахътэрэ",
+       "exif-languagecode": "Бзэ",
        "exif-orientation-1": "Тэрэз",
        "namespacesall": "зэкӀэ",
        "monthsall": "зэкӀэ",
+       "fileduplicatesearch-submit": "Лъыхъу",
        "specialpages": "ЯӀамышӀыкӀ нэкӀубгъохэр",
+       "specialpages-group-login": "Къыхахь / аккаунт къэубл",
        "tag-filter": "[[Special:Tags|Tag]] филтрэр:",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Гъэнэфалъ|Гъэнэфалъэхэр}}]]: $2)",
        "logentry-delete-delete": "$3 нэкӀубгъор $1 {{GENDER:$2|Ӏыгъ}}",
        "logentry-move-move": "$1 {{GENDER:$2|ыгъэкощыгъэ}} нэкIубгъоу $3-р $4-м",
        "logentry-newusers-create": "ХэлэжьэкIо аккаунтэу $1 {{GENDER:$2|ублагъэ}}",
        "logentry-upload-upload": "$1 {{GENDER:$2|къырищыгъ}} $3",
+       "feedback-message": "Мессадж:",
        "searchsuggest-search": "Лъыхъу",
        "api-error-badtoken": "ЫкIоцI фыкъуагъэ: Токен дэй.",
        "api-error-empty-file": "Ебгъэхьыгъэ файлыр нэкIы.",
index 2565a07..d2faa93 100644 (file)
        "navigation-heading": "Navigasie-keuseskerm",
        "errorpagetitle": "Fout",
        "returnto": "Keer terug na $1.",
-       "tagline": "in {{SITENAME}}",
+       "tagline": "Vanaf {{SITENAME}}",
        "help": "Hulp",
        "search": "Soek",
        "searchbutton": "Soek",
        "go": "Wys",
        "searcharticle": "Wys",
-       "history": "Ouer weergawes",
+       "history": "Bladsygeskiedenis",
        "history_short": "Geskiedenis",
        "updatedmarker": "opgedateer sedert my laaste besoek",
        "printableversion": "Drukbare weergawe",
        "aboutsite": "Inligting oor {{SITENAME}}",
        "aboutpage": "Project:Omtrent",
        "copyright": "Inhoud is onderhewig aan $1, tensy anders vermeld",
-       "copyrightpage": "{{ns:project}}:kopiereg",
+       "copyrightpage": "{{ns:project}}:Kopieregte",
        "currentevents": "Huidige gebeure",
        "currentevents-url": "Project:Huidige gebeure",
        "disclaimers": "Voorbehoud",
        "feed-invalid": "Voertipe word nie ondersteun nie.",
        "feed-unavailable": "Sindikasievoer is nie beskikbaar",
        "site-rss-feed": "$1 RSS-voer",
-       "site-atom-feed": "$1 Atom-voer",
+       "site-atom-feed": "$1 Atoomvoer",
        "page-rss-feed": "\"$1\" RSS-voer",
-       "page-atom-feed": "\"$1\" Atom-voer",
+       "page-atom-feed": "\"$1\" Atoomvoer",
        "red-link-title": "$1 (bladsy bestaan nie)",
        "sort-descending": "Sorteer aflopend",
        "sort-ascending": "Sorteer oplopend",
        "changeemail-password": "U wagwoord vir {{SITENAME}}:",
        "changeemail-submit": "Wysig E-posadres",
        "resettokens-token-label": "$1 (huidige waarde: $2)",
-       "bold_sample": "Vetgedrukte teks",
+       "bold_sample": "Vetdruk",
        "bold_tip": "Vetdruk",
        "italic_sample": "Skuinsgedrukte teks",
        "italic_tip": "Skuinsdruk",
        "nowiki_sample": "Plaas ongeformatteerde teks hier",
        "nowiki_tip": "Ignoreer wiki-formattering",
        "image_sample": "Voorbeeld.jpg",
-       "image_tip": "Beeld/prentjie/diagram",
+       "image_tip": "Medialêer",
        "media_sample": "Voorbeeld.ogg",
-       "media_tip": "Skakel na ander tipe medialêer",
+       "media_tip": "Lêerskakel",
        "sig_tip": "Handtekening met datum",
        "hr_tip": "Horisontale streep (selde nodig)",
        "summary": "Opsomming:",
        "updated": "(Gewysig)",
        "note": "'''Nota:'''",
        "previewnote": "'''Onthou dat hierdie slegs 'n voorskou is.'''\nU teks is nog nie gestoor nie!",
-       "continue-editing": "Wysig verder",
+       "continue-editing": "Gaan na redigeerarea",
        "previewconflict": "Hierdie voorskou vertoon die teks in die boonste teksarea soos dit sou lyk as u die bladsy stoor.",
        "session_fail_preview": "'''Jammer! Weens verlies aan sessie-inligting is die wysiging nie verwerk nie.\nProbeer asseblief weer. As dit steeds nie werk nie, probeer om [[Special:UserLogout|af te teken]] en dan weer aan te meld.'''",
        "session_fail_preview_html": "'''Jammer! U wysigings is nie verwerk nie omdat sessie-data verlore gegaan het.'''\n\n''Omrede rou HTML hier by {{SITENAME}} ingevoer kan word, kan die voorskou nie gesien word nie ter beskerming teen aanvalle met JavaScript.''\n\n'''As dit 'n regmatige wysiging is, probeer asseblief weer. As dit daarna nog nie werk nie, [[Special:UserLogout|teken dan af]] en weer aan.'''",
        "viewpagelogs": "Bekyk logboeke vir hierdie bladsy",
        "nohistory": "Daar is geen wysigingsgeskiedenis vir hierdie bladsy nie.",
        "currentrev": "Huidige wysiging",
-       "currentrev-asof": "Huidige wysiging per $1",
+       "currentrev-asof": "Huidige wysiging sedert $1",
        "revisionasof": "Wysiging soos op $1",
-       "revision-info": "Weergawe deur {{GENDER:$6|$2}} op $4 om $5$7",
+       "revision-info": "Weergawe deur {{GENDER:$6|$2}} op $1$7",
        "previousrevision": "← Ouer weergawe",
        "nextrevision": "Nuwer weergawe →",
        "currentrevisionlink": "Huidige weergawe",
        "mergelog": "Versmeltingslogboek",
        "revertmerge": "Samesmelting ongedaan maak",
        "mergelogpagetext": "Hieronder is 'n lys van die mees onlangse versmeltings van een bladsy se geskiedenis na 'n ander.",
-       "history-title": "$1: weergawegeskiedenis",
-       "difference-title": "$1: verskil tussen weergawes",
+       "history-title": "Weergawegeskiedenis van \"$1\"",
+       "difference-title": "Verskil tussen weergawes van \"$1\"",
        "difference-title-multipage": "$1 en $2: verskil tussen bladsye",
        "difference-multipage": "(Verskil tussen bladsye)",
        "lineno": "Lyn $1:",
        "showhideselectedversions": "Wys/versteek gekose weergawes",
        "editundo": "maak ongedaan",
        "diff-empty": "(Geen verskil)",
+       "diff-multi-sameuser": "({{PLURAL:$1|Een tussenin wysiging|$1 tussenin wysigings}} deur dieselfde gebruiker nie gewys nie)",
        "diff-multi-manyusers": "({{PLURAL:$1|Een tussenin wysiging|$1 tussenin wysigings}} deur meer as $2 {{PLURAL:$2|gebruiker|gebruikers}} nie gewys nie)",
        "difference-missing-revision": "{{PLURAL:$2|'n Weergawe|$2 weergawes}} van die verskil ($1) {{PLURAL:$2|is|is}} nie gevind nie.\n\nDit word meestal veroorsaak deur die volg van 'n verouderde verwysing na 'n bladsy wat verwyder is.\nDetails kan in die [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} skraplogboek] gevind word.",
        "searchresults": "Soekresultate",
        "next-page": "volgende bladsy",
        "prevn-title": "Vorige {{PLURAL:$1|resultaat|$1 resultate}}",
        "nextn-title": "Volgende {{PLURAL:$1|resultaat|$1 resultate}}",
-       "shown-title": "$1 {{PLURAL:$1|resultaat|resultate}} per bladsy",
+       "shown-title": "Wys $1 {{PLURAL:$1|resultaat|resultate}} per bladsy",
        "viewprevnext": "Wys ($1 {{int:pipe-separator}} $2) ($3).",
        "searchmenu-exists": "'''Daar is reeds 'n bladsy genaamd \"[[:$1]]\" op die wiki'''",
        "searchmenu-new": "<strong>Skep die bladsy \"[[:$1]]\" op hierdie wiki</strong> {{PLURAL:$2|0=|Sien ook die bladsy wat in u soektog gevind is.|Sien ook die soekresultate wat gevind is.}}",
        "searchall": "alle",
        "showingresults": "Hier volg {{PLURAL:$1|'''1''' resultaat|'''$1''' resultate}} vanaf #'''$2'''.",
        "search-showingresults": "{{PLURAL:$4|Resultaat <strong>$1</strong> van <strong>$2</strong>|Resultate <strong>$1 - $2</strong> van <strong>$3</strong>}}",
-       "search-nonefound": "Daar is geen resultate vir u soekopdrag nie.",
+       "search-nonefound": "Daar is geen resultate vir die navraag nie.",
        "powersearch-legend": "Gevorderde soektog",
        "powersearch-ns": "Soek in naamruimtes:",
        "powersearch-togglelabel": "Kies:",
        "recentchanges-feed-description": "Hierdie voer laat u toe om die mees onlangse wysigings aan die wiki te volg.",
        "recentchanges-label-newpage": "Met die wysiging is 'n nuwe bladsy geskep.",
        "recentchanges-label-minor": "Hierdie is 'n klein wysiging",
-       "recentchanges-label-bot": "Hierdie wysiging is deur 'n bot uitgevoer",
+       "recentchanges-label-bot": "Hierdie wysiging is deur 'n bot gemaak",
        "recentchanges-label-unpatrolled": "Die wysiging is nog nie gekontroleer nie",
        "recentchanges-label-plusminus": "Bladsy is met die aantal grepe gewysig",
        "recentchanges-legend-heading": "'''Sleutel:'''",
        "imagelinks": "Lêergebruik",
        "linkstoimage": "Die volgende {{PLURAL:$1|bladsy|$1 bladsye}} gebruik hierdie prent:",
        "linkstoimage-more": "Daar is meer as $1 {{PLURAL:$1|skakel|skakels}} na hierdie lêer.\nDie volgende lys vertoon slegs die eerste {{PLURAL:$1|skakel|$1 skakels}} wat na die lêer verwys.\n'n [[Special:WhatLinksHere/$2|Volledige lys]] is ook beskikbaar.",
-       "nolinkstoimage": "Daar is geen bladsye wat hierdie prent gebruik nie.",
+       "nolinkstoimage": "Daar is geen bladsye wat skakel na hierdie lêer nie.",
        "morelinkstoimage": "Wys [[Special:WhatLinksHere/$1|meer skakels]] na die lêer.",
        "linkstoimage-redirect": "$1 (lêeraanstuur) $2",
        "duplicatesoffile": "Die volgende {{PLURAL:$1|lêer is 'n duplikaat|$1 lêers is duplikate}} van die lêer ([[Special:FileDuplicateSearch/$2|meer details]]):",
        "delete-toobig": "Die bladsy het 'n lang wysigingsgeskiedenis, meer as $1 {{PLURAL:$1|weergawe|weergawes}}.\nVerwydering van die soort blaaie is beperk om ontwrigting van {{SITENAME}} te voorkom.",
        "delete-warning-toobig": "Hierdie bladsy het 'n lang wysigingsgeskiedenis; meer as $1 {{PLURAL:$1|wysiging|wysigings}}.\nDeur weg te doen met hierdie bladsy mag dalk die werking van {{SITENAME}} versteur;\nTree asseblief versigtig op.",
        "rollback": "Rol veranderinge terug",
-       "rollbacklink": "Rol terug",
+       "rollbacklink": "rol terug",
        "rollbacklinkcount": "rol {{PLURAL:$1|een wysiging|$1 wysigings}} terug",
        "rollbacklinkcount-morethan": "rol meer as {{PLURAL:$1|een wysiging|$1 wysigings}} terug",
        "rollbackfailed": "Terugrol onsuksesvol",
        "rollback-success": "Wysigings deur $1 is teruggerol.\nDie laaste weergawe van $2 is teruggeplaas.",
        "sessionfailure-title": "Sessie het gefaal",
        "sessionfailure": "Dit lyk of daar 'n probleem met u sessie is.\nHierdie aksie is gekanselleer omdat dit 'n veiligheidsrisiko is (moontlike kaping van u sessie).\nGaan een bladsy terug, herlaai die bladsy en probeer dan weer.",
-       "protectlogpage": "Beskermlogboek",
+       "protectlogpage": "Beskermingboekstaaf",
        "protectlogtext": "Hieronder is 'n lys van veranderinge wat aan die beveilig van bladsye aangebring is.\nSien die [[Special:ProtectedPages|lys van beveiligde bladsye]] vir alle bladsye wat tans operasioneel beveilig is.",
        "protectedarticle": "het [[$1]] beskerm",
        "modifiedarticleprotection": "Die beskermingsvlak vir \"[[$1]]\" is gewysig",
        "tooltip-pt-watchlist": "Die lys bladsye wat u vir veranderinge dophou",
        "tooltip-pt-mycontris": "Lys van my bydraes",
        "tooltip-pt-login": "U word aangemoedig om aan te meld. Dit is egter nie verpligtend nie.",
-       "tooltip-pt-logout": "Teken uit",
+       "tooltip-pt-logout": "Meld af",
        "tooltip-pt-createaccount": "U word aangemoedig om 'n gebruiker te skep en aan te meld, hoewel dit nie verpligtend is nie.",
        "tooltip-ca-talk": "Bespreking oor die inhoudbladsy",
-       "tooltip-ca-edit": "U kan hierdie bladsy wysig. Gebruik asseblief die voorskoufunksie vóór u dit stoor.",
+       "tooltip-ca-edit": "Wysig hierdie bladsy",
        "tooltip-ca-addsection": "Begin 'n nuwe bespreking",
        "tooltip-ca-viewsource": "Hierdie bladsy is beskerm. U kan die bronteks besigtig.",
        "tooltip-ca-history": "Ouer weergawes van hierdie bladsy",
        "tooltip-n-mainpage": "Besoek die Tuisblad",
        "tooltip-n-mainpage-description": "Gaan na die tuisblad",
        "tooltip-n-portal": "Meer oor die projek, wat jy kan doen, nuttige skakels",
-       "tooltip-n-currentevents": "'n Plek waar almal gesellig kan verkeer",
+       "tooltip-n-currentevents": "Agtergrondinligting oor aktuele sake",
        "tooltip-n-recentchanges": "'n Lys van onlangse wysigings",
        "tooltip-n-randompage": "Laai 'n lukrake bladsye",
        "tooltip-n-help": "Vind meer uit oor iets",
        "tooltip-t-whatlinkshere": "'n Lys bladsye wat hierheen skakel",
        "tooltip-t-recentchangeslinked": "Onlangse wysigings aan bladsye wat vanaf hierdie bladsy geskakel is",
        "tooltip-feed-rss": "RSS-voed vir hierdie bladsy",
-       "tooltip-feed-atom": "Atom-voed vir hierdie bladsy",
+       "tooltip-feed-atom": "Atoomvoer vir hierdie bladsy",
        "tooltip-t-contributions": "Bekyk 'n lys van bydraes deur hierdie gebruiker",
        "tooltip-t-emailuser": "Stuur 'n e-pos aan hierdie gebruiker",
-       "tooltip-t-upload": "Laai beelde of ander medialêers op",
+       "tooltip-t-upload": "Laai lêers op",
        "tooltip-t-specialpages": "'n Lys van al die spesiale bladsye",
        "tooltip-t-print": "Drukbare weergawe van hierdie bladsy",
        "tooltip-t-permalink": "'n Permanente skakel na hierdie weergawe van die bladsy",
        "tooltip-ca-nstab-media": "Bekyk die mediabladsy",
        "tooltip-ca-nstab-special": "Hierdie is 'n spesiale bladsy; u kan dit nie wysig nie",
        "tooltip-ca-nstab-project": "Bekyk die projekbladsy",
-       "tooltip-ca-nstab-image": "Bekyk die lrbladsy",
+       "tooltip-ca-nstab-image": "Bekyk die lêerbladsy",
        "tooltip-ca-nstab-mediawiki": "Bekyk die stelselboodskap",
        "tooltip-ca-nstab-template": "Bekyk die sjabloon",
        "tooltip-ca-nstab-help": "Bekyk die hulpbladsy",
        "tooltip-watchlistedit-raw-submit": "Opdateer dophoulys",
        "tooltip-recreate": "Herskep hierdie bladsy al is dit voorheen geskrap",
        "tooltip-upload": "Begin oplaai",
-       "tooltip-rollback": "Rol met een kliek die laaste gebruiker se wysiging(s) van aan hierdie bladsy terug.",
-       "tooltip-undo": "Met \"ongedaan maak\" maak u hierdie wysiging ongedaan en land u in die wysigingsvenster.\nU kan daar 'n wysigingsopsomming byvoeg.",
+       "tooltip-rollback": "Rol met een kliek die laaste gebruiker se wysiging(s) aan hierdie bladsy terug.",
+       "tooltip-undo": "\"Maak ongedaan\" keer die wysiging om wys die wysigingsbladsy met 'n voorskou. U kan daar 'n wysigingsopsomming byvoeg.",
        "tooltip-preferences-save": "Stoor voorkeure",
        "tooltip-summary": "Verskaf 'n kort opsomming",
        "interlanguage-link-title": "$1 – $2",
        "spam_reverting": "Besig met terugrol na die laaste weergawe wat nie skakels na $1 bevat nie",
        "spam_blanking": "Alle weergawes met 'n skakel na $1 word verwyder",
        "spam_deleting": "Alle weergawes bevat verwysings na $1. Bladsy verwyder",
-       "simpleantispam-label": "Antispam-kontrole.\n<strong>Moenie</strong> die veld invul nie!",
+       "simpleantispam-label": "<strong>Moenie</strong> die veld invul nie!",
        "pageinfo-title": "Inligting oor \"$1\"",
        "pageinfo-not-current": "Hierdie gegewens is slegs vir die huidige weergawe beskikbaar.",
        "pageinfo-header-basic": "Basiese inligting",
        "yesterday-at": "Gister om $1",
        "bad_image_list": "Die formaat is as volg:\n\nSlegs lys-items (lyne wat met * begin) word verwerk.\nDie eerste skakel op 'n lyn moet na 'n ongewenste lêer skakel.\nEnige opeenvolgende skakels op dieselfde lyn word as uitsonderings beskou, bv. blaaie waar die lêer inlyn kan voorkom.",
        "metadata": "Metadata",
-       "metadata-help": "Die lêer bevat aanvullende inligting wat moontlik deur 'n digitale kamera of skandeerder bygevoeg is.\nAs die lêer verander is, mag sekere inligting nie meer ooreenkom met die van die gewysigde lêer nie.",
+       "metadata-help": "Die lêer bevat aanvullende inligting wat moontlik deur 'n digitale kamera of skandeerder bygevoeg is.\nAs die lêer verander is, sal sekere inligting dalk nie meer ooreenkom met dié van die gewysigde lêer nie.",
        "metadata-expand": "Wys uitgebreide gegewens",
        "metadata-collapse": "Versteek uitgebreide gegewens",
        "metadata-fields": "Die velde in die boodskap word ook gewys op 'n beeldbladsy as die metadatatabel toegevou is.\nAnder velde sal versteek wees.\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",
        "exif-referenceblackwhite": "Paar swart en wit verwysingswaardes",
        "exif-datetime": "Tydstip laaste lêerwysiging",
        "exif-imagedescription": "Beeldtitel",
-       "exif-make": "Kamera vervaardiger:",
-       "exif-model": "Kamera model",
+       "exif-make": "Kameravervaardiger:",
+       "exif-model": "Kameramodel",
        "exif-software": "Sagteware gebruik",
        "exif-artist": "Outeur",
        "exif-copyright": "Kopiereghouer",
-       "exif-exifversion": "Exif weergawe",
+       "exif-exifversion": "Exif-weergawe",
        "exif-flashpixversion": "Ondersteunde Flashpix-weergawe",
        "exif-colorspace": "Kleurruimte",
        "exif-componentsconfiguration": "Betekenis van elke komponent",
index 94c021e..66847a3 100644 (file)
        "rows": "صفوف:",
        "columns": "أعمدة:",
        "searchresultshead": "بحث",
-       "stub-threshold": "الحد لتنسيق <a href=\"#\" class=\"stub\">وصلة البذرة</a>:",
+       "stub-threshold": "الحد لتنسيق وصلة البذرة ($1):",
+       "stub-threshold-sample-link": "عينة",
        "stub-threshold-disabled": "معطل",
        "recentchangesdays": "عدد الأيام المعروضة في أحدث التغييرات:",
        "recentchangesdays-max": "الحد الأقصى {{PLURAL:$1|أقل من يوم|يوم واحد|يومان|$1 أيام|$1 يوما|$1 يوم}}",
        "newpageletter": "ج‌",
        "boteditletter": "ب",
        "number_of_watching_users_pageview": "[{{PLURAL:$1|لا مستخدمون يراقبون|مستخدم واحد يراقب|مستخدمان يراقبان|$1 مستخدمين يراقبون|$1 مستخدما يراقب|$1 مستخدم يراقب}}]",
-       "rc_categories": "حصر لتصنيفات (مفرقة برمز \"|\")",
-       "rc_categories_any": "أي",
+       "rc_categories": "حصر لتصنيفات (مفرقة برمز \"|\"):",
+       "rc_categories_any": "أي من المختار",
        "rc-change-size-new": "$1 {{PLURAL:$1|بايت|بايت}} بعد التغيير",
        "newsectionsummary": "/* $1 */ قسم جديد",
        "rc-enhanced-expand": "عرض التفاصيل",
        "upload-too-many-redirects": "احتوى المسار تحويلات كثيرة جدا",
        "upload-http-error": "صودف خطأ HTTP: $1",
        "upload-copy-upload-invalid-domain": "رفع النسخ غير متاح من هذا الموقع",
+       "upload-dialog-title": "رفع الملف",
+       "upload-dialog-error": "حدث خطأ",
+       "upload-dialog-warning": "حدث تنبيه",
+       "upload-dialog-button-cancel": "إلغاء",
+       "upload-dialog-button-done": "تم",
+       "upload-dialog-button-save": "احفظ",
+       "upload-dialog-button-upload": "رفع",
+       "upload-dialog-label-select-file": "اختر ملفا",
+       "upload-dialog-label-infoform-title": "التفاصيل",
+       "upload-dialog-label-infoform-name": "الاسم",
+       "upload-dialog-label-infoform-description": "الوصف",
+       "upload-dialog-label-usage-title": "الاستخدام",
+       "upload-dialog-label-usage-filename": "اسم الملف",
        "backend-fail-stream": "لا يمكن عرض الملف $1.",
        "backend-fail-backup": "لا يمكن صنع نسخة أحتياطية للملف $1.",
        "backend-fail-notexists": "الملف $1 غير موجود.",
        "undeletepagetext": "حُذفت {{PLURAL:$1||الصفحة التالية|الصفحتان التاليتان|$1 الصفحات التالية|ال$1 صفحة التالية}} ولكنها مازالت في الأرشيف ويمكن استرجاعها.\nقد يمسح الأرشيف دوريا.",
        "undelete-fieldset-title": "استرجاع المراجعات",
        "undeleteextrahelp": "لاسترجاع تاريخ الصفحة كاملا، اترك جميع الصناديق فارغة واضغط '''''{{int:undeletebtn}}'''''..\nللاسترجاع بشكل انتقائي، ضع علامة في الصناديق أمام المراجعات التي تريد استرجاعها، واضغط '''''{{int:undeletebtn}}'''''.",
-       "undeleterevisions": "{{PLURAL:$1|Ù\84Ù\85 ØªØ¤Ø±Ø´Ù\81 Ø£Ù\8a Ù\85راجعة|أرشÙ\81ت Ù\85راجعة Ù\88احدة|أرشÙ\81ت Ù\85راجعتاÙ\86|أرشÙ\81ت $1 Ù\85راجعات|أرشفت $1 مراجعة}}",
+       "undeleterevisions": "{{PLURAL:$1|Ù\84Ù\85 ØªØ­Ø°Ù\81 Ø£Ù\8a Ù\85راجعة|حذÙ\81ت Ù\85راجعة Ù\88احدة|حذÙ\81ت Ù\85راجعتاÙ\86|حذÙ\81ت $1 Ù\85راجعات|حذفت $1 مراجعة}}",
        "undeletehistory": "لو استرجعت الصفحة، كل المراجعات سيتم استرجاعها إلى التاريخ.\nلو كان قد تم إنشاء صفحة جديدة بالاسم نفسه بعد الحذف، المراجعات المسترجعة ستظهر في التاريخ السابق.",
        "undeleterevdel": "الاسترجاع لن يتم إذا كان سينتج عنه أن تكون المراجعة أعلى الصفحة أو الملف محذوفة جزئيا.\nفي مثل هذه الحالات، يجب عليك إظهار أحدث المراجعات المحذوفة.",
        "undeletehistorynoadmin": "هذه الصفحة تم حذفها.\nالسبب للحذف معروض في الملخص بالأسفل، إلى جانب تفاصيل المستخدمين الذين قاموا بالتعديل على هذه الصفحة قبل حذفها.\nنص المراجعات المحذوفة هذه متوفر فقط للإداريين.",
        "spam_reverting": "استرجاع آخر نسخة ليس بها وصلات إلى $1",
        "spam_blanking": "كل النسخ احتوت على وصلات ل $1، إفراغ",
        "spam_deleting": "جميع النسخ تحوي رابطا إلى $1، يتم الحذف",
-       "simpleantispam-label": "اختبار ضد السبام.\n'''لا''' تملأ هذا!",
+       "simpleantispam-label": "اختبار ضد السبام.\n<strong>لا</strong> تملأ هذا!",
        "pageinfo-title": "المعلومات عن «$1»",
        "pageinfo-not-current": "عذرا، لا يمكن عرض تلك المعلومات للنسخ القديمة.",
        "pageinfo-header-basic": "المعلومات الأساسية",
index af56180..6bbfe2d 100644 (file)
        "hidden-category-category": "تصنيفات مستخبية",
        "category-subcat-count": "{{PLURAL:$2| التصنيف دا فيه  التصنيف الفرعى الجاى بس.|التصنيف دا فيه {{PLURAL:$1|تصنيف فرعى|$1 تصنيف فرعى}}، من إجمالى $2.}}",
        "category-subcat-count-limited": " التصنيف دا فيه {{PLURAL:$1|تصنيف فرعي|$1 تصنيف فرعي}} كدا.",
-       "category-article-count": "{{PLURAL:$2| التصنيف دا فيه  الصفحة دى بس.|تحت {{PLURAL:$1|ملف|$1 ملف}} فى  التصنيف دا ، من إجمالى $2.}}",
+       "category-article-count": "{{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 ملف}} فى التصنيف الحالى.",
        "welcomecreation-msg": "اتفتحلك حساب.\nلو تحب ممكن تغير [[Special:Preferences|تفضيلاتك ف {{SITENAME}}]].",
        "yourname": "اليوزرنيم:",
        "userlogin-yourname": "اسم اليوزر",
+       "userlogin-yourname-ph": "إكتب اسم اليوزر بتاعك:",
        "createacct-another-username-ph": "إكتب اسم يوزر:",
        "yourpassword": "الباسوورد:",
+       "userlogin-yourpassword": "الباسورد:",
        "yourpasswordagain": "اكتب الباسورد تاني:",
        "remembermypassword": " (لمدة   $1 {{PLURAL:$1|يوم|يوم}})خليك فاكر دخولى على الكمبيوتر دا",
        "yourdomainname": "النطاق بتاعك:",
        "logout": "خروج",
        "userlogout": "خروج",
        "notloggedin": "انت مش مسجل دخولك",
+       "userlogin-noaccount": "معندكش حساب؟",
+       "userlogin-joinproject": "انضم ل {{SITENAME}}",
        "nologin": "معندكش حساب؟ '''$1'''.",
        "nologinlink": "افتح حساب",
        "createaccount": "افتح حساب",
        "gotaccount": "عندك حساب؟ '''$1'''.",
        "gotaccountlink": "دخول",
        "userlogin-resetlink": "نسيت تفاصيل الدخول؟",
+       "createacct-email-ph": "أكتب عنوان الإيميل بتاعك",
        "createaccountmail": "استخدم باسورد مؤقته و إبعتها ع الايميل المحدد ده",
        "createaccountreason": "السبب:",
+       "createacct-submit": "افتح حسابك",
+       "createacct-benefit-body1": "$1 {{PLURAL:$1|تعديل|تعديلات}}",
+       "createacct-benefit-body2": "{{PLURAL:$1|صفحه|صفحات}}",
        "badretype": "كلمتين السر اللى  كتبتهم مش  زى بعضهم",
        "userexists": "اسم اليوزر اللى كتبته بيستعمله يوزر غيرك.\nاكتت اسم يوزر تانى.",
        "loginerror": "غلط فى الدخول",
        "login-throttled": "انت عملت  محاولات لوجين كتيره  ع الحساب ده.\nمن فضلك استنى $1 قبل المحاولة مرة تانيه.",
        "loginlanguagelabel": "اللغة: $1",
        "pt-login": "دخول",
+       "pt-login-button": "دخول",
        "pt-createaccount": "افتح حساب",
+       "pt-userlogout": "خروج",
        "changepassword": "غير الباسورد",
        "resetpass_announce": "اتسجل دخولك دلوقتى بالكود اللى اتبعتلك فى الايميل. علشان تخلص عملية الدخول ،لازم تعملك باسورد جديدة هنا:",
        "resetpass_text": "<!-- أضف نصا هنا -->",
        "preview": "بروفه",
        "showpreview": "عرض البروفه",
        "showdiff": "بيين التعديلات",
-       "anoneditwarning": "'''تحذير:''' انت ما عملتش لوجين.\nعنوان الاى  بى  بتاعك هايتسجل فى تاريخ الصفحه .",
+       "anoneditwarning": "<strong>تحذير:'</strong> انت ما عملتش لوجين. عنوان الاى  بى  بتاعك هايتسجل ف تاريخ الصفحه. لو  <strong>[$1 عملت لوجين ]</strong> او <strong>[$2 فتحت حساب ]</strong>,   اليوزرنيم بتاعك هايتسجل ف تاريخ الصفحه.",
        "missingsummary": "'''خد بالك:''' انت ما كتبتش ملخص للتعديل.\nلو دوست على سييڤ الصفحه مرة تانية التعديل بتاعك ح يتحفظ من غير ملخص.",
        "missingcommenttext": "لو سمحت اكتب تعليق تحت.",
        "missingcommentheader": "'''.خد بالك:''' انت ما كتبتش عنوان\\موضوع للتعليق دا\nلو دوست على {{int:savearticle}} مرة تانيه، تعليقك ح يتحفظ من غير عنوان.",
        "session_fail_preview_html": "'''ماقدرناش نعالج تعديلك بسبب ضياع بيانات الجلسة.'''\n\n''لأن {{SITENAME}} بها HTML هل الخام شغاله، البروفه مخفيه كاحتياط ضد هجمات الجافا سكريبت.''\n\n'''إذا كانت دى محاولة تعديل صادقه، من فضلك حاول مرة تانيه. إذا كانت لسه مش شغاله، حاول [[Special:UserLogout|تسجيل الخروج]] و تسجيل الدخول من جديد.'''",
        "token_suffix_mismatch": "'''تعديلك اترفض لأن عميلك غلط فى علامات الترقيم\nفى نص التعديل. التعديل اترفض علشان ما يبوظش نص المقالة.\nدا ساعات بيحصل لما تستعمل خدمة بروكسى مجهولة بايظة أساسها الويب.'''",
        "editing": "تعديل $1",
+       "creating": "إنشاء «$1»",
        "editingsection": "تعديل $1 (جزء)",
        "editingcomment": "تعديل $1 (قسم جديد)",
        "editconflict": "تضارب فى التحرير: $1",
        "currentrev": "النسخه دلوقتى",
        "currentrev-asof": "المراجعة الحالية بتاريخ $1",
        "revisionasof": "تعديلات من $1",
-       "revision-info": "نسخه $1 بواسطة $2",
+       "revision-info": "نسخة $1 ل {{GENDER:$6|$2}}$7",
        "previousrevision": "←نسخه اقدم",
        "nextrevision": "نسخه احدث→",
        "currentrevisionlink": "النسخه دلوقتى",
        "revertmerge": "استرجاع الدمج",
        "mergelogpagetext": "فى تحت لستة بأحدث عمليات الدمج لتاريخ صفحة فى التانية.",
        "history-title": " «$1»: تاريخ التعديل",
+       "difference-title": "«$1»: الفرق بين النسختين",
        "difference-multipage": "(الفرق بين الصفحتين)",
        "lineno": "سطر $1:",
        "compareselectedversions": "قارن بين النسختين المختارتين",
        "showhideselectedversions": "عرض/تخبية المراجعات المختاره.",
        "editundo": "استرجاع",
+       "diff-multi-sameuser": "({{PLURAL:$1|نسخه واحده متوسطه|$1 نسخ متوسطه}}  بواسطة {{PLURAL:|يوزر واحد |يوزرات}}  مش معروضه)",
        "diff-multi-manyusers": "({{PLURAL:$1|نسخه واحده متوسطه|$1 نسخ متوسطه}} by {{PLURAL:$2|يوزر واحد |$2 يوزرات}}  مش معروضه)",
        "searchresults": "نتايج التدوير",
        "searchresults-title": "نتايج التدوير على \"$1\"",
        "shown-title": "اعرض $1 {{PLURAL:$1|نتيجه|نتايج}} فى كل صفحه",
        "viewprevnext": "شوف ($1 {{int:pipe-separator}} $2) ($3)",
        "searchmenu-exists": "'''فيه صفحه اسمها \"[[:$1]]\" على الويكى ده.''' {{PLURAL:$2|0=|بص كمان على نتايج البحث التانيه.}}",
-       "searchmenu-new": "'''ابتدى الصفحه \"[[:$1]]\" ع الويكى دا!''' {{PLURAL:$2|0=|بص كمان على الصفحه اللى لقيناها من بحثك.|بص كمان على نتايج البحث اللى لقيناها.}}",
+       "searchmenu-new": "<strong>ابتدى الصفحه \"[[:$1]]\" ع الويكى دا!</strong>  {{PLURAL:$2|0=|بص كمان على الصفحه اللى لقيناها من تدويرك.|بص كمان على نتايج التدوير.}}",
        "searchprofile-articles": "صفحات محتوى",
        "searchprofile-images": "مالتيميديا",
        "searchprofile-everything": "كل شىء",
        "searchrelated": "مرتبطه",
        "searchall": "الكل",
        "showingresults": "القائمة دى بتعرض {{PLURAL:$1|'''1''' نتيجة|'''$1''' نتيجة}} من أول  رقم '''$2'''.",
+       "search-showingresults": "{{PLURAL:$4|النتايج <strong>$1</strong> من <strong>$3</strong>|النتايج <strong>$1 - $2</strong> من أصل <strong>$3</strong>}}",
        "search-nonefound": "لا توجد نتائج تطابق الاستعلام.",
        "powersearch-legend": "تدوير متقدم",
        "powersearch-ns": "تدوير فى اسم المساحه:",
        "action-userrights-interwiki": "تعديل صلاحيات اليوزر لليوزرز فى الويكيات التانية",
        "action-siteadmin": "غلق أو رفع غلق قاعدة البيانات",
        "nchanges": "{{PLURAL:$1|تعديل|تعديلين|$1 تعديلات|$1 تعديل|$1 تعديل}}",
+       "enhancedrc-history": "تاريخ",
        "recentchanges": "اخر التعديلات",
        "recentchanges-legend": "اختيارات اخر التعديلات",
        "recentchanges-summary": "تابع آخر التغييرات فى الويكى على الصفحة دى.",
        "recentchanges-label-minor": "ده تعديل صغير",
        "recentchanges-label-bot": "التعديل ده عمله بوت",
        "recentchanges-label-unpatrolled": "التعديل ده مإتراجعش لسه",
+       "recentchanges-legend-heading": "شرح",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (بص كمان على [[Special:NewPages|قايمه الصفحات الجديده]])",
        "rcnotefrom": "دى التعديلات من '''$2''' (ل '''$1''' معروضه).",
        "rclistfrom": "اظهر التعديلات بدايه من $3 $2",
        "rcshowhideminor": "$1 تعديلات صغيره",
+       "rcshowhideminor-show": "اعرض",
+       "rcshowhideminor-hide": "تخبية",
        "rcshowhidebots": "$1 البوتات",
+       "rcshowhidebots-show": "عرض",
+       "rcshowhidebots-hide": "تخبية",
        "rcshowhideliu": "$1 اليوزرز المتسجلين",
+       "rcshowhideliu-hide": "تخبية",
        "rcshowhideanons": "$1 اليوزرز المجهولين",
+       "rcshowhideanons-show": "عرض",
+       "rcshowhideanons-hide": "تخبية",
        "rcshowhidepatr": "$1 التعديلات المتراجعه",
        "rcshowhidemine": "$1 تعديلاتى",
+       "rcshowhidemine-show": "اعرض",
+       "rcshowhidemine-hide": "تخبية",
        "rclinks": "بيين اخر $1 تعديل فى اخر $2 يوم، $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-hide": "إخفاء التفاصيل",
        "suppress": "أوفرسايت",
        "booksources": "مصادر من كتب",
        "booksources-search-legend": "التدوير على مصادر الكتب",
+       "booksources-search": "تدوير",
        "booksources-text": "فى تحت لستة بوصلات لمواقع تانية بتبيع الكتب الجديدة والمستعملة، كمان ممكن تلاقى معلومات إضافية عن الكتب اللى يتدور عليها :",
        "booksources-invalid-isbn": "رقم الـ ISBN اللى كتبته شكله مش صحيح؛ اتإكد من الغلطات بتاعة النسخ من المصدر الاصلى.",
        "specialloguserlabel": "اليوزر:",
        "delete-warning-toobig": "الصفحة دى ليها تاريخ تعديل كبير، أكتر من $1 {{PLURAL:$1|مراجعة|مراجعة}}.\nممكن مسحها يعمل اضطراب  فى عمليات قاعدة البيانات فى {{SITENAME}}؛\nاستمر بس خد بالك.",
        "rollback": "إرجع فى التعديلات",
        "rollbacklink": "ترجيع",
+       "rollbacklinkcount": "استرجع {{PLURAL:$1|لا تعديلات|تعديل واحد|تعديلين|$1 تعديلات|$1 تعديل|تعديل}}",
        "rollbackfailed": "الترجيع ما نفعش",
        "cantrollback": "ماقدرناش نرجع فى التعديل؛ آخر مساهم هوه الوحيد اللى ساهم فى الصفحة دي.",
        "alreadyrolled": "ماقدرناش نرجع التعديل الاخير لـ [[:$1]] بتاع [[User:$2|$2]] ([[User talk:$2|نقاش]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);\nفى واحد تانى عدل الصفحه او عمل استرجاع قبل كده.\n\nاخر تعديل للصفحه دى عمله [[User:$3|$3]] ([[User talk:$3|نقاش]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
        "tooltip-pt-mycontris": "ليستة تعديلاتك",
        "tooltip-pt-login": "يستحسن تسجل دخولك; لكن, ده مش اجبارى",
        "tooltip-pt-logout": "خروج",
+       "tooltip-pt-createaccount": "نشجعك على عمل حساب وتسجيل دخولك; لكنه مش  ضروري",
        "tooltip-ca-talk": "مناقشة صفحة الموضوع",
        "tooltip-ca-edit": "عدل الصفحه دى",
        "tooltip-ca-addsection": "ابتدى قسم جديد",
        "spambot_username": "تنظيف سبام ميدياويكى",
        "spam_reverting": "ترجيع آخر نسخة مافيهاش لينكات لـ $1",
        "spam_blanking": "كل النسخ فيها لينكات ل $1، فضيها",
-       "simpleantispam-label": "اختبار انتي-سبام.\n'''ماتعبيش''' دا!",
+       "simpleantispam-label": "اختبار انتيسبام.\nاكتب <strong>ماتكتبش</strong> دا!",
        "pageinfo-toolboxlink": "معلومات عن الصفحه",
        "markaspatrolleddiff": "علم عليها انها متراجعة",
        "markaspatrolledtext": "علم على المقاله دى إنها متراجعة",
        "file-nohires": "مافيش  ريزوليوشن اعلى متوفر.",
        "svg-long-desc": "ملف SVG، اساسا $1 × $2 بكسل، حجم الملف: $3",
        "show-big-image": "الصوره الاصليه",
+       "show-big-image-size": "$1 × $2 بكسل",
        "file-info-gif-looped": "ملفوف",
        "file-info-gif-frames": "$1 {{PLURAL:$1|برواز|براويز}}",
        "newimages": "جاليرى الصور الجديده",
        "tags": "وسوم التغيير الصحيحة",
        "tag-filter": "فلتر [[Special:Tags|الوسم]]:",
        "tag-filter-submit": "فلتر",
+       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1||وسم|وسمين|وسوم}}]]: $2)",
        "tags-title": "وسوم",
        "tags-intro": "الصفحه دى فيها ليستة الوسوم اللى ممكن البرنامج يعلم عى التعديل بيها، و معانيهم",
        "tags-tag": "اسم الوسم",
        "htmlform-selectorother-other": "تانيين",
        "revdelete-restricted": "طبق التعليمات على السيسوبات",
        "revdelete-unrestricted": "شيل الضوابط من على السيسوبات",
+       "logentry-upload-upload": " {{GENDER:$2|رفع|اترفعت}} $1 $3",
        "rightsnone": "(فاضى)",
        "revdelete-summary": "ملخص التعديل",
        "searchsuggest-search": "تدوير",
index b70f13f..ec213a1 100644 (file)
@@ -87,8 +87,8 @@
        "march": "মাৰ্চ",
        "april": "এপ্ৰিল",
        "may_long": "মে'",
-       "june": "june",
-       "july": "july",
+       "june": "জুন",
+       "july": "জুলাই",
        "august": "আগষ্ট",
        "september": "ছেপ্টেম্বৰ",
        "october": "অক্টোবৰ",
        "april-gen": "এপ্ৰিল",
        "may-gen": "মে’",
        "june-gen": "জুন",
-       "july-gen": "july",
+       "july-gen": "জুলাই",
        "august-gen": "আগষ্ট",
        "september-gen": "ছেপ্টেম্বৰ",
        "october-gen": "অক্টোবৰ",
        "jun": "জুন",
        "jul": "জুলাই",
        "aug": "আগষ্ট",
-       "sep": "ছেপ্টেম্বৰ:",
-       "oct": "অক্টোবৰ:",
+       "sep": "ছেপ্টেম্বৰ",
+       "oct": "অক্টোবৰ",
        "nov": "নৱেম্বৰ:",
-       "dec": "ডিচেম্বৰ:",
+       "dec": "ডিচেম্বৰ",
        "january-date": "জানুৱাৰী $1",
        "february-date": "ফেব্ৰুৱাৰী $1",
        "march-date": "মাৰ্চ $1",
        "hidden-category-category": "অদৃশ্য শ্ৰেণীসমূহ",
        "category-subcat-count": "{{PLURAL:$2|এই শ্ৰেণীত নিম্নলিখিত উপশ্ৰেণীসমূহ আছে। মুঠ $2টা উপশ্ৰেণীৰ ভিতৰত এই শ্ৰেণীত নিম্নলিখিত {{PLURAL:$1|এটা উপশ্ৰেণী|$1 টা উপশ্ৰেণী}} আছে।}}",
        "category-subcat-count-limited": "এই শ্ৰেণীত নিম্নলিখিত {{PLURAL:$1|টা উপশ্ৰেণী আছে|$1টা উপশ্ৰেণী আছে}}।",
-       "category-article-count": "{{PLURAL:$2|à¦\8fà¦\87 à¦¶à§\8dৰà§\87ণà§\80à¦\9fà§\8bত à¦\95à§\87ৱল à¦¤à¦²à¦¤ à¦¦à¦¿à¦¯à¦¼à¦¾ à¦ªà§\83ষà§\8dঠাহà§\87 à¦\86à¦\9bà§\87। à¦®à§\81ঠ $2 à¦\96নৰ à¦­à¦¿à¦¤à§°à¦¤ à¦\8fà¦\87 à¦¶à§\8dৰà§\87ণà§\80à¦\9fà§\8bত à¦¤à¦²à§° {{PLURAL:$1|à¦\8fà¦\9fা à¦ªà§\83ষà§\8dঠা à¦\86à¦\9bà§\87|$1 à¦\9fা à¦ªà§\83ষà§\8dঠা à¦\86à¦\9bà§\87}}।}}",
+       "category-article-count": "{{PLURAL:$2|à¦\8fà¦\87 à¦¶à§\8dৰà§\87ণà§\80à¦\9fà§\8bত à¦\95à§\87ৱল à¦¤à¦²à¦¤ à¦¦à§\87à¦\96à§\81à¦\93ৱা à¦ªà§\83ষà§\8dঠাহà§\87 à¦\86à¦\9bà§\87।| à¦®à§\81ঠ $2 à¦\9fাৰ à¦­à¦¿à¦¤à§°à¦¤ à¦\8fà¦\87 à¦¶à§\8dৰà§\87ণà§\80à¦\9fà§\8bত à¦¤à¦²à§° {{PLURAL:$1|à¦\8fà¦\9fা à¦ªà§\83ষà§\8dঠা à¦\86à¦\9bà§\87|$1 à¦\9fা à¦ªà§\83ষà§\8dঠা à¦\86à¦\9bà§\87।}}}}",
        "category-article-count-limited": "এই {{PLURAL:$1|পৃষ্ঠা|$1 পৃষ্ঠাসমূহ}} সাম্প্ৰতিক শ্ৰেণীত আছে ।",
-       "category-file-count": "{{PLURAL:$2|à¦\8fà¦\87 à¦¶à§\8dৰà§\87ণà§\80à¦\9fà§\8bত à¦\95à§\87বল তলত দিয়া ফাইলটোহে আছে। মুঠ $2টাৰ ভিতৰত এই শ্ৰেণীটোত তলৰ {{PLURAL:$1|এটা ফাইল|$1 টা ফাইল}} আছে।}}",
+       "category-file-count": "{{PLURAL:$2|à¦\8fà¦\87 à¦¶à§\8dৰà§\87ণà§\80à¦\9fà§\8bত à¦\95à§\87ৱল তলত দিয়া ফাইলটোহে আছে। মুঠ $2টাৰ ভিতৰত এই শ্ৰেণীটোত তলৰ {{PLURAL:$1|এটা ফাইল|$1 টা ফাইল}} আছে।}}",
        "category-file-count-limited": "তলৰ {{PLURAL:$1|ফাইলটো|$1 ফাইলসমূহ}} সাম্প্ৰতিক শ্ৰেণীত আছে।",
        "listingcontinuesabbrev": "আগলৈ",
        "index-category": "সূচীকৃত পৃষ্ঠাসমূহ",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|জন সদস্যই|জন সদস্যই}} এই পৃষ্ঠা নিৰীক্ষণ কৰিছে]",
        "rc_categories": "শ্ৰেণীসমূহৰ সীমাবদ্ধতা (\"|\" দি পৃথক কৰক):",
        "rc_categories_any": "বাছনি কৰাৰ মাজত যিকোনো",
-       "rc-change-size-new": "সালসলনিৰ পিছত $1 {{PLURAL:$1|বাইট|বাইট}}",
+       "rc-change-size-new": "$1 {{PLURAL:$1|বাইট}} যোগ দিয়া হ’ল",
        "newsectionsummary": "/* $1 */ নতুন অনুচ্ছেদ",
        "rc-enhanced-expand": "সবিশেষ দেখুৱাওক",
        "rc-enhanced-hide": "সবিশেষ  লুকুৱাওক",
        "tooltip-pt-logout": "প্ৰস্থান",
        "tooltip-pt-createaccount": "আপোনাক এটা একাউণ্ট সৃষ্টি কৰি প্ৰৱেশ কৰিবলৈ অনুৰোধ জনোৱা হৈছে, কিন্তু এয়া বাধ্যতামূলক নহয়",
        "tooltip-ca-talk": "সংশ্লিষ্ট প্ৰবন্ধ সম্পৰ্কীয় আলোচনা",
-       "tooltip-ca-edit": "à¦\86পà§\81নি à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b à¦¸à¦¾à¦²à¦¸à¦²à¦¨à¦¿ à¦\95ৰিব à¦ªà¦¾à§°à§\87, à¦\85নà§\81à¦\97à§\8dৰহ à¦\95ৰি à¦¸à¦¾à¦²à¦¸à¦²à¦¨à¦¿ à¦¸à¦¾à¦\9aà§\80 à¦¥à§\8bৱাৰ à¦\86à¦\97তà§\87 à¦\96à¦\9aৰা à¦\9aাà¦\87 à¦²à¦¬",
+       "tooltip-ca-edit": "à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦¸à¦®à§\8dপাদনা à¦\95ৰà¦\95",
        "tooltip-ca-addsection": "নতুন অনুচ্ছেদ আৰম্ভ কৰক",
        "tooltip-ca-viewsource": "এই পৃষ্ঠাটো সুৰক্ষিত কৰা হৈছে, আপুনি ইয়াৰ উৎস চাব পাৰে।",
        "tooltip-ca-history": "এই পৃষ্ঠাৰ যোৱা সংস্কৰণসমূহ",
        "spam_reverting": "$1লৈ সংযোগ নথকা সৰ্বশেষ পুনৰীক্ষনলে উভতাই নিয়া হৈছে",
        "spam_blanking": "সকলো পুনৰীক্ষনৰ $1লৈ সংযোগ আছিল, ৰিক্ত কৰা হৈছে",
        "spam_deleting": "সকলো পুনৰীক্ষণৰ $1লৈ সংযোগ আছিল, বিলোপ কৰা হৈছে",
-       "simpleantispam-label": "এণ্টি-স্পাম পৰীক্ষা।\nএইখন পূৰণ '''নকৰিব'''!",
+       "simpleantispam-label": "এণ্টি-স্পাম পৰীক্ষা।\nএইখন পূৰণ <strong>নকৰিব</strong>!",
        "pageinfo-title": "\"$1\" ৰ তথ্য",
        "pageinfo-not-current": "ক্ষমা কৰিব, পুৰণা সংশোধনৰ বাবে এই তথ্য মুকলি কৰাটো সম্ভৱ নহয়।",
        "pageinfo-header-basic": "প্ৰাথমিক তথ্য",
        "exif-subjectarea": "বিষয়বস্তুৰ ক্ষেত্ৰফল",
        "exif-flashenergy": "ফ্লেছ শক্তি",
        "exif-focalplanexresolution": "X ফোকাচ তলৰ ৰিজলিউশ্যন",
-       "exif-focalplaneyresolution": "Y ফকাচ তলৰ ৰিজলিউশ্যন",
+       "exif-focalplaneyresolution": "Y ফ'কাচ তলৰ ৰিজলিউশ্যন",
        "exif-focalplaneresolutionunit": "ফ'কেল তল ৰিজলিউশ্যন একক",
        "exif-subjectlocation": "বিষয়বস্তুৰ স্থান",
        "exif-exposureindex": "উন্মুক্ত সূচী",
index 03001da..6a50141 100644 (file)
        "rows": "Fileres:",
        "columns": "Columnes:",
        "searchresultshead": "Buscar",
-       "stub-threshold": "Llímite superior pa considerar como <a href=\"#\" class=\"stub\">enllaz a entamu</a> (bytes):",
+       "stub-threshold": "Llende superior pa dar formatu d'entamu a un enllaz ($1):",
+       "stub-threshold-sample-link": "exemplu",
        "stub-threshold-disabled": "Desactivao",
        "recentchangesdays": "Díes que s'amuesen nos cambios recientes:",
        "recentchangesdays-max": "(máximo $1 {{PLURAL:$1|día|díes}})",
index c00cf1d..cca3b29 100644 (file)
        "recentchangesdays-max": "Maksimum $1 {{PLURAL:$1|gün|gün}}",
        "recentchangescount": "Son dəyişikliklərdə başlıq sayı:",
        "prefs-help-recentchangescount": "Buraya yeni dəyişikliklər, səhifələrin və jurnalların tarixçəsi daxildir.",
-       "savedprefs": "Seçiminiz qeyd edildi.",
+       "savedprefs": "Seçiminiz qəbul edildi.",
        "timezonelegend": "Vaxt zonası:",
        "localtime": "Yerli vaxt:",
        "timezoneuseserverdefault": "Susmaya görə serverdən istifadə ($1)",
        "emailmessage": "Mesaj:",
        "emailsend": "Göndər",
        "emailccme": "Məktubun surətini elektron ünvanıma göndər.",
-       "emailccsubject": " $1: $2-yə olan ismarıclarınızın surəti",
+       "emailccsubject": "$1 adlı istifadəçiyə olan ismarıcınızın surəti: $2",
        "emailsent": "E-məktub göndərildi",
        "emailsenttext": "E-məktub mesajınız göndərildi.",
        "usermessage-summary": "Sistem mesajı qoyun.",
index 1b0e2ed..308e1d7 100644 (file)
        "preview": "Tànawón",
        "showpreview": "Ipahiling an patanaw",
        "showdiff": "Ipahiling an mga kaliwatan",
-       "anoneditwarning": "'''Patanid:''' Ika dae nakapaglaog. An saimong estada kan IP maisusurat sa laog kan historiya nin pagliliwat sa pahinang ini.",
+       "anoneditwarning": "<strong>Patanid:</strong> Ika dae nakalaog. An saimong estada kan IP mahihiling kan publiko kun ika makahimo nin arinman na mga pagliliwat. Kun ika <strong>[$1 naglaog]</strong> o <strong>[$2 magmukna nin panindog]</strong>, an saimong mga pagliliwat ipagpapanungod sa saimong ngaran-paragamit, kaiba an iba pang mga benepisyo.",
        "anonpreviewwarning": "Dae ka tabi nakalaog. An pagtatagama matala kan saimong IP address sa historya nin pagliwat sa pahinang ini.",
        "missingsummary": "<strong>Pagiromdom:</strong>Ika dae pa nakapagtao nin sumaryo sa pagliwat. Kun i-klik mo an \"{{int:savearticle}}\" giraray, an saimong pagliwat ipagtatagama na mayo kaiyan.",
        "missingcommenttext": "Pakikaag nin sarong komento sa ibaba.",
        "emailuser": "E-suratan ining paragamit",
        "emailuser-title-target": "E-surat kaining {{GENDER:$1|paragamit}}",
        "emailuser-title-notarget": "E-surat na paragamit",
-       "emailpage": "E-suratan an parágamit",
        "emailpagetext": "Ika makakagamit kan porma na yaon sa ibaba sa pagpadara nin mensahe na e-surat sa {{GENDER:$1|paragamit}}.\nAn e-surat na estada sa saimong pinaglaog sa [[Special:Preferences|saimong paragamit na mga kamuyahan]] ipapahiling bilang iyo an \"Gikan sa\" estada kan e-surat, kaya an resipiyente makakapagsimbag direkta mismo saimo.",
        "defemailsubject": "{{SITENAME}} e-surat gikan sa paragamit \"$1\"",
        "usermaildisabled": "Paragamit na e-surat pinagpundo",
        "tooltip-pt-login": "Ika inaagyat na maglaog; alagad, bako tabi ining piriritan",
        "tooltip-pt-logout": "Magluwas",
        "tooltip-ca-talk": "Orolayan dapit sa laog kan pahina",
-       "tooltip-ca-edit": "Ika makakaliwat kaining pahina. Tabi man gamiton an pindutan nin patanaw bago itatagama",
+       "tooltip-ca-edit": "Liwata ining pahina",
        "tooltip-ca-addsection": "Magpoon nin sarong baguhon na seksyon",
        "tooltip-ca-viewsource": "Ining pahina protektado.\nIka makakatanaw kan pinaggikanan",
        "tooltip-ca-history": "Mga nakaaging rebisyon kaining pahina",
        "spam_reverting": "Mabalik sa huring bersion na mayong takod sa $1",
        "spam_blanking": "An gabos na mga pahirá na may takod sa $1, pigblablanko",
        "spam_deleting": "An gabos na mga rebisyon na igwang mga kasugpunan sa $1, pinupura",
-       "simpleantispam-label": "Rikisa nin Kontra-Ispam.\nGiboha na '''DAE''' paglaogan digde!",
+       "simpleantispam-label": "Rikisa nin Kontra-Ispam.\nGiboha na <strong>dae</strong> paglaogan ini!",
        "pageinfo-title": "Impormasyon para sa \"$1\"",
        "pageinfo-not-current": "Sori, imposible baya na maitao ining impormasyon para sa lumaon nang mga rebisyon.",
        "pageinfo-header-basic": "Panuntungang impormasyon",
index 1660aa7..dda6e08 100644 (file)
        "searchprofile-advanced": "Пашыраны",
        "searchprofile-articles-tooltip": "Пошук у $1",
        "searchprofile-images-tooltip": "Пошук файлаў",
-       "searchprofile-everything-tooltip": "Шукаць усюды (уключна са старонкамі абмеркаваньня)",
+       "searchprofile-everything-tooltip": "Шукаць усюды (у тым ліку на старонках абмеркаваньня)",
        "searchprofile-advanced-tooltip": "Шукаць у дадатковых прасторах назваў",
        "search-result-size": "$1 ($2 {{PLURAL:$2|слова|словы|словаў}})",
        "search-result-category-size": "$1 {{PLURAL:$1|элемэнт|элемэнты|элемэнтаў}} ($2 {{PLURAL:$2|падкатэгорыя|падкатэгорыі|падкатэгорыяў}}, $3 {{PLURAL:|файл|файлы|файлаў}})",
        "rows": "Радкоў:",
        "columns": "Слупкоў:",
        "searchresultshead": "Пошук",
-       "stub-threshold": "Максымальны памер старонкі для паказу спасылак <a href=\"#\" class=\"stub\">як на накід</a> (у байтах):",
+       "stub-threshold": "Максымальны памер старонкі для паказу спасылак як на накід ($1):",
+       "stub-threshold-sample-link": "прыклад",
        "stub-threshold-disabled": "Выключаны",
        "recentchangesdays": "Колькасьць дзён для паказу ў апошніх зьменах:",
        "recentchangesdays-max": "(максымальна $1 {{PLURAL:$1|дзень|дні|дзён}})",
        "right-minoredit": "пазначэньне рэдагаваньняў як дробныя",
        "right-move": "перанос старонак",
        "right-move-subpages": "перанос старонак разам зь іх падстаронкамі",
-       "right-move-rootuserpages": "Ð\9fеранос карэнных старонак удзельнікаў",
+       "right-move-rootuserpages": "перанос карэнных старонак удзельнікаў",
        "right-move-categorypages": "перанос старонак катэгорыяў",
        "right-movefile": "перайменаваньне файлаў",
        "right-suppressredirect": "не ствараць перанакіраваньне са старой назвы пасьля пераносу старонкі",
        "upload-dialog-button-done": "Зроблена",
        "upload-dialog-button-save": "Захаваць",
        "upload-dialog-button-upload": "Загрузіць",
+       "upload-dialog-label-select-file": "Абраць файл",
+       "upload-dialog-label-infoform-title": "Падрабязнасьці",
+       "upload-dialog-label-infoform-name": "Назва",
+       "upload-dialog-label-infoform-description": "Апісаньне",
+       "upload-dialog-label-usage-title": "Выкарыстаньне",
+       "upload-dialog-label-usage-filename": "Назва файлу",
        "backend-fail-stream": "Немагчыма накіраваць файл $1.",
        "backend-fail-backup": "Немагчыма зрабіць рэзэрвовую копію файла $1.",
        "backend-fail-notexists": "Файл $1 не існуе.",
index 5f71422..45d6601 100644 (file)
@@ -27,7 +27,8 @@
                        "Vodnokon4e",
                        "ShadeOfGrey",
                        "PetaRZ",
-                       "Macofe"
+                       "Macofe",
+                       "V111P"
                ]
        },
        "tog-underline": "Подчертаване на препратките:",
        "nouserspecified": "Необходимо е да се посочи потребителско име.",
        "login-userblocked": "Този потребител е блокиран. Влизането в системата не е позволено.",
        "wrongpassword": "Въведената парола е невалидна. Опитайте отново.",
-       "wrongpasswordempty": "Ð\92Ñ\8aведенаÑ\82а Ð¿Ð°Ñ\80ола Ðµ Ð¿Ñ\80азна. Опитайте отново.",
+       "wrongpasswordempty": "Ð\9dе Ðµ Ð²Ñ\8aведена Ð¿Ð°Ñ\80ола. Опитайте отново.",
        "passwordtooshort": "Необходимо е паролата да съдържа поне {{PLURAL:$1|1 знак|$1 знака}}.",
        "password-name-match": "Паролата ви трябва да се различава от потребителското ви име.",
        "password-login-forbidden": "Използването на това потребителско име и парола е забранено.",
        "revdelete-show-file-confirm": "Необходимо е потвърждение, че желаете да прегледате изтритата версия на файла „<nowiki>$1</nowiki>“ от $2 $3.",
        "revdelete-show-file-submit": "Да",
        "logdelete-selected": "{{PLURAL:$1|Избрано събитие|Избрани събития}}:",
-       "revdelete-confirm": "Ð\9dеобÑ\85одимо Ðµ Ð´Ð° Ð¿Ð¾Ñ\82вÑ\8aÑ\80диÑ\82е, Ñ\87е Ð²елаете да извършите действието, разбирате последствията и го правите според [[{{MediaWiki:Policy-url}}|политиката]].",
+       "revdelete-confirm": "Ð\9dеобÑ\85одимо Ðµ Ð´Ð° Ð¿Ð¾Ñ\82вÑ\8aÑ\80диÑ\82е, Ñ\87е Ðелаете да извършите действието, разбирате последствията и го правите според [[{{MediaWiki:Policy-url}}|политиката]].",
        "revdelete-suppress-text": "Премахването трябва да се използва '''само''' при следните случаи:\n*Неподходяща или неприемлива лична информация\n*: ''домашни адреси и телефонни номера, номера за социално осигуряване и др.''",
        "revdelete-legend": "Задаване на ограничения:",
        "revdelete-hide-text": "Текст на версията",
        "emailuser": "Писмо до потребителя",
        "emailuser-title-target": "Изпращане на е-писмо на този {{GENDER:$1|потребител}}",
        "emailuser-title-notarget": "Изпращане на е-писмо на потребител",
-       "emailpage": "Пращане писмо на потребител",
        "emailpagetext": "Можете да използвате формуляра по-долу, за да изпратите електронно писмо на {{GENDER:$1|този потребител}}.\nАдресът, който се въвели в [[Special:Preferences|настройките си]], ще се появи в полето „От“ на писмото, така че получателят ще е в състояние да ви отговори директно.",
        "defemailsubject": "Писмо от потребител $1 в {{SITENAME}}",
        "usermaildisabled": "Потребителят не е разрешил да получава електронна поща",
        "viewdeletedpage": "Преглед на изтрити страници",
        "undeletepagetext": "{{PLURAL:$1|Следната страница беше изтрита, но все още се намира в архива и може да бъде възстановена|Следните $1 страници бяха изтрити, но все още се намират в архива и могат да бъдат възстановени}}. Архивът може да се почиства от време на време.",
        "undelete-fieldset-title": "Възстановяване на версии",
-       "undeleteextrahelp": "За възстановяване на пълната история на страницата не се слагат отметки и се натиска '''''{{int:undeletebtn}}'''''.\nЗа частично възстановяване се поставят отметки тези версии на страницата, които трябва да бъдат въстановени, след което се натиска ''''{{int:undeletebtn}}'''''.",
+       "undeleteextrahelp": "За възстановяване на пълната история на страницата не се слагат отметки и се натиска '''''{{int:undeletebtn}}'''''.\nЗа частично възстановяване се поставят отметки на тези версии на страницата, които трябва да бъдат възстановени, след което се натиска '''''{{int:undeletebtn}}'''''.",
        "undeleterevisions": "{{PLURAL:$1|Една версия беше архивирана|$1 версии бяха архивирани}}",
        "undeletehistory": "Ако възстановите страницата, всички версии ще бъдат върнати в историята.\nАко след изтриването е създадена страница със същото име, възстановените версии ще се появят като по-ранна история, а текущата версия на страницата няма да бъде заменена автоматично. Също така обърнете внимание, че ограниченията, приложени върху версиите, ще се загубят след възстановяването.",
        "undeleterevdel": "Възстановяването няма да бъде изпълнено, ако би довело до частично изтриване на актуалната версия. В такъв случай актуалната версия не трябва да бъде избирана или пък състоянието й трябва да бъде променено на нормална (нескрита) версия. Версиите на файлове, които нямате право да преглеждате, няма да бъдат възстановени.",
index 4a409ca..e04beca 100644 (file)
        "template-protected": "(সুরক্ষিত)",
        "template-semiprotected": "(অর্ধ-সুরক্ষিত)",
        "hiddencategories": "এই পাতাটি {{PLURAL:$1|১টি লুকায়িত বিষয়শ্রেণীর|$1টি লুকায়িত বিষয়শ্রেণীর}} সদস্য:",
+       "edittools": "<!-- সম্পাদনা এবং আপলোড ফরমের নীচে এখানের লেখা দেখানো হবে। -->",
        "edittools-upload": "-",
        "nocreatetext": "{{SITENAME}}-এ নতুন পাতা সৃষ্টি করার ক্ষমতা সীমাবদ্ধ করা হয়েছে।\nআপনি ফিরে গিয়ে ইতিমধ্যে বিদ্যমান কোন পাতা সম্পাদনা করতে পারেন, অথবা [[Special:UserLogin|অ্যাকাউন্টে প্রবেশ কিংবা অ্যাকাউন্ট সৃষ্টি করতে পারেন]]।",
        "nocreate-loggedin": "নতুন পাতা তৈরিতে আপনাকে অনুমোতি দেওয়া হয়নি।",
        "mypreferences": "পছন্দসমূহ",
        "prefs-edits": "সম্পাদনা সংখ্যা:",
        "prefsnologintext2": "আপনার পছন্দসমূহ পরিবর্তন করতে প্রবেশ করুন।",
-       "prefs-skin": "আবরণ (Skin)",
+       "prefs-skin": "আবরণ",
        "skin-preview": "প্রাকদর্শন",
        "datedefault": "কোন পছন্দ নেই",
        "prefs-labs": "পরীক্ষাগার বৈশিষ্টসমূহ",
        "autoredircomment": "[[$1]]-এ পুনর্নির্দেশ করা হল",
        "autosumm-new": "\"$1\" দিয়ে পাতা তৈরি",
        "autosumm-newblank": "খালি পাতা তৈরি হয়েছে",
-       "size-bytes": "$1 বাইট",
+       "size-bytes": "$1 {{PLURAL:$1|বাইট}}",
        "size-kilobytes": "$1 কিলোবাইট",
        "size-megabytes": "$1 মেগাবাইট",
        "size-gigabytes": "$1 গিগাবাইট",
+       "size-pixel": "$1 {{PLURAL:$1|পিক্সেল}}",
        "bitrate-kilobits": "$1 কেবিপিএস",
        "bitrate-megabits": "$1 এমবিপিএস",
        "bitrate-gigabits": "$1 জিবিপিএস",
        "version-entrypoints": "শুরুর ইউআরএল",
        "version-entrypoints-header-entrypoint": "শুরু",
        "version-entrypoints-header-url": "ইউআরএল",
+       "version-entrypoints-articlepath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgArticlePath নিবন্ধের পথ]",
        "version-libraries": "ইনস্টল লাইব্রেরি",
        "version-libraries-library": "লাইব্রেরী",
        "version-libraries-version": "সংস্করণ",
index f49965f..f54fe35 100644 (file)
        "revdelete-concurrent-change": "Greška pri mijenjanju stavke od $2, $1: njen status je izmijenjen od strane nekog drugog dok ste je pokušavali mijenjati.\nMolimo provjerite zapise.",
        "revdelete-only-restricted": "Greška pri sakrivanju stavke od dana $2, $1: ne možete ukloniti stavke od pregledavanja administratora bez da odaberete neku od drugih opcija za uklanjanje.",
        "revdelete-reason-dropdown": "*Uobičajeni razlozi brisanja\n** Kršenje autorskih prava\n** Neprikladan komentar ili lični podac\n** Neprikladno korisničko ime\n** Uvredljivi podaci",
-       "revdelete-otherreason": "Ostali/dodatni razlog:",
+       "revdelete-otherreason": "Drugi/dodatni razlog:",
        "revdelete-reasonotherlist": "Ostali razlozi",
        "revdelete-edit-reasonlist": "Uredi razloge brisanja",
        "revdelete-offender": "Autor revizije:",
        "group-user-member": "{{GENDER:$1|korisnik|korisnica}}",
        "group-autoconfirmed-member": "Potvrđeni korisnik",
        "group-bot-member": "bot",
-       "group-sysop-member": "Administrator",
-       "group-bureaucrat-member": "Birokrat",
+       "group-sysop-member": "{{GENDER:$1|administrator|administratorica}}",
+       "group-bureaucrat-member": "{{GENDER:$1|birokrat|birokratica}}",
        "group-suppress-member": "Nadzornik",
        "grouppage-user": "{{ns:project}}:Korisnici",
        "grouppage-autoconfirmed": "{{ns:project}}:Potvrđeni korisnici",
        "filedelete-success-old": "Verzija datoteke '''[[Media:$1|$1]]''' od $3, $2 je obrisana.",
        "filedelete-nofile": "'''$1''' ne postoji.",
        "filedelete-nofile-old": "Ne postoji arhivirana verzija '''$1''' sa navedenim atributima.",
-       "filedelete-otherreason": "Ostali/dodatni razlozi:",
+       "filedelete-otherreason": "Drugi/dodatni razlog:",
        "filedelete-reason-otherlist": "Ostali razlozi",
        "filedelete-reason-dropdown": "*Uobičajeni razlozi brisanja\n** Kršenje autorskih prava\n** Datoteka dvojnik",
        "filedelete-edit-reasonlist": "Uredi razloge brisanja",
        "deletionlog": "zapisnik brisanja",
        "reverted": "Vraćeno na raniju verziju",
        "deletecomment": "Razlog:",
-       "deleteotherreason": "Ostali/dodatni razlozi:",
+       "deleteotherreason": "Drugi/dodatni razlog:",
        "deletereasonotherlist": "Ostali razlozi",
        "deletereason-dropdown": "*Uobičajeni razlozi brisanja\n** Spam\n** Vandalizam\n** Kršenje autorskih prava\n** Zahtjev autora\n** Pokvareno preusmjerenje",
        "delete-edit-reasonlist": "Uredi razloge brisanja",
        "logentry-contentmodel-change-revert": "vrati",
        "protectlogpage": "Zapisnik zaključavanja",
        "protectlogtext": "Ispod je spisak promjena zaštićenja stranice.\nPogledajte [[Special:ProtectedPages|spisak zaštićenih stranica]] za pregled trenutno zaštićenih stranica.",
-       "protectedarticle": "stranica \"[[$1]]\" je zaštićena",
-       "modifiedarticleprotection": "promijenjen stepen zaštite za \"[[$1]]\"",
+       "protectedarticle": "{{GENDER:|zaštitio|zaštitila}} je stranicu \"[[$1]]\"",
+       "modifiedarticleprotection": "{{GENDER:|promijenio|promijenila}} je stepen zaštite stranice \"[[$1]]\"",
        "unprotectedarticle": "uklonjena zaštita sa stranice \"[[$1]]\"",
        "movedarticleprotection": "podešavanja zaštite premještena sa \"[[$2]]\" na \"[[$1]]\"",
-       "protect-title": "Zaštićuje se \"$1\"",
+       "protect-title": "Mijenjate nivo zašite za \"$1\"",
        "protect-title-notallowed": "Pregled stepena zaštite za \"$1\"",
        "prot_1movedto2": "članak [[$1]] premješten na [[$2]]",
        "protect-badnamespace-title": "Nezaštitljiv imenski prostor",
        "protect-badnamespace-text": "Stranice u ovom imenskom prostoru ne mogu se zaštititi.",
        "protect-norestrictiontypes-text": "Ova stranica se ne može zaštititi jer nema dostupnih oblika ograničenja.",
        "protect-norestrictiontypes-title": "Nezaštitljiva strana",
-       "protect-legend": "Potvrdite zaštitu",
+       "protect-legend": "Potvrda zaštite",
        "protectcomment": "Razlog:",
        "protectexpiry": "Ističe:",
        "protect_expiry_invalid": "Upisani vremenski rok nije valjan.",
        "protect_expiry_old": "Upisani vremenski rok je u prošlosti.",
        "protect-unchain-permissions": "Otključaj daljnje opcije zaštite",
-       "protect-text": "Ovdje možete gledati i izmjeniti level zaštite za stranicu '''$1'''.",
+       "protect-text": "Ovdje možete pregledati i promijeniti nivo zaštite za stranicu <strong>$1</strong>.",
        "protect-locked-blocked": "Ne možete promijeniti nivo zaštite dok ste blokirani.\nOvo su trenutne postavke za stranicu '''$1''':",
        "protect-locked-dblock": "Nivoi zaštite ne mogu se mijenjati jer je aktivna baza podataka zaključana.\nTrenutna postavka za stranicu '''$1''' jest:",
        "protect-locked-access": "Nemate ovlasti za mijenjanje stepena zaštite.\nSlijede trenutne postavke stranice '''$1''':",
        "protect-expiring": "ističe $1 (UTC)",
        "protect-expiring-local": "ističe $1",
        "protect-expiry-indefinite": "neograničeno",
-       "protect-cascade": "Prenosiva zaštita - zaštiti sve stranice koje su uključene u ovu.",
+       "protect-cascade": "Zaštiti sve stranice koje su uključene u ovu (prenosiva zaštita)",
        "protect-cantedit": "Ne možete mijenjati nivo zaštite ove stranice, jer nemate prava da je uređujete.",
-       "protect-othertime": "Ostali period:",
-       "protect-othertime-op": "ostali period",
+       "protect-othertime": "Drugo vrijeme:",
+       "protect-othertime-op": "drugo vrijeme",
        "protect-existing-expiry": "Postojeće vrijeme isticanja: $3, $2",
        "protect-existing-expiry-infinity": "Postojeće vrijeme isteka: trajno",
-       "protect-otherreason": "Ostali/dodatni razlozi:",
+       "protect-otherreason": "Drugi/dodatni razlog:",
        "protect-otherreason-op": "Ostali razlozi",
        "protect-dropdown": "*Uobičajeni razlozi zaštite\n** Prekomjerni vandalizam\n** Prekomjerno spamovanje\n** Ne produktivni rat izmjena\n** Stranica velikog prometa",
-       "protect-edit-reasonlist": "Uredi razloge zaštićavanja",
-       "protect-expiry-options": "1 sat:1 hour,1 dan:1 day,1 sedmica:1 week,2 sedmice:2 weeks,1 mjesec:1 month,3 mjeseca:3 months,6 mjeseci:6 months,1 godine:1 year,zauvijek:infinite",
+       "protect-edit-reasonlist": "Uredi razloge zaštićivanja",
+       "protect-expiry-options": "1 sat:1 hour,1 dan:1 day,1 sedmica:1 week,2 sedmice:2 weeks,1 mjesec:1 month,3 mjeseca:3 months,6 mjeseci:6 months,1 godine:1 year,beskonačno:infinite",
        "restriction-type": "Dopuštenje:",
        "restriction-level": "Stepen ograničenja:",
        "minimum-size": "Najmanja veličina",
        "ipbcreateaccount": "Spriječi pravljenje računa",
        "ipbemailban": "Onemogući korisnika da šalje e-mail",
        "ipbenableautoblock": "Automatski blokiraj posljednju IP-adresu koju je koristio ovaj korisnik i sve druge IP-adrese s kojih je pokušao uređivati",
-       "ipbsubmit": "Blokirajte ovog korisnika",
-       "ipbother": "Ostali period:",
-       "ipboptions": "2 sata:2 hours,1 dan:1 day,3 dana:3 days,1 sedmica:1 week,2 sedmice:2 weeks,1 mjesec:1 month,3 mjeseca:3 months,6 mjeseci:6 months,1 godine:1 year,zauvijek:infinite",
+       "ipbsubmit": "Blokiraj ovog korisnika",
+       "ipbother": "Drugo vrijeme:",
+       "ipboptions": "2 sata:2 hours,1 dan:1 day,3 dana:3 days,1 sedmica:1 week,2 sedmice:2 weeks,1 mjesec:1 month,3 mjeseca:3 months,6 mjeseci:6 months,1 godine:1 year,beskonačno:infinite",
        "ipbhidename": "Sakrij korisničko ime iz uređivanja i spiskova",
        "ipbwatchuser": "Prati korisničku stranicu i stranicu za razgovor ovog korisnika",
        "ipb-disableusertalk": "Onemogući ovog korisnika da uređuje svoju stranicu za razgovor dok je blokiran",
        "ipblocklist-submit": "Traži",
        "ipblocklist-localblock": "Lokalna blokada",
        "ipblocklist-otherblocks": "Ostale {{PLURAL:$1|blokada|blokade}}",
-       "infiniteblock": "neograničeno",
+       "infiniteblock": "beskonačno",
        "expiringblock": "ističe dana $1 u $2",
        "anononlyblock": "samo anonimni korisnici",
        "noautoblockblock": "automatsko blokiranje onemogućeno",
        "blocklist-nousertalk": "ne može uređivati vlastitu stranicu za razgovor",
        "ipblocklist-empty": "Spisak blokiranja je prazan.",
        "ipblocklist-no-results": "Tražena IP adresa ili korisničko ime nisu blokirani.",
-       "blocklink": "blokirajte",
+       "blocklink": "blokiraj",
        "unblocklink": "deblokiraj",
        "change-blocklink": "promijeni blokadu",
        "contribslink": "doprinosi",
        "block-log-flags-anononly": "samo anonimni korisnici",
        "block-log-flags-nocreate": "onemogućeno pravljenje računa",
        "block-log-flags-noautoblock": "automatsko blokiranje onemogućeno",
-       "block-log-flags-noemail": "e-mail je blokiran",
+       "block-log-flags-noemail": "e-pošta blokirana",
        "block-log-flags-nousertalk": "ne može uređivati vlastitu stranicu za razgovor",
-       "block-log-flags-angry-autoblock": "omogućeno napredno autoblokiranje",
+       "block-log-flags-angry-autoblock": "uključeno poboljšano automatsko blokiranje",
        "block-log-flags-hiddenname": "korisničko ime sakriveno",
        "range_block_disabled": "Administratorska mogućnost da blokira grupe je isključena.",
        "ipb_expiry_invalid": "Neispravno vrijeme isteka.",
        "img-lang-go": "Idi",
        "ascending_abbrev": "rast",
        "descending_abbrev": "opad",
-       "table_pager_next": "Slijedeća stranica",
+       "table_pager_next": "Sljedeća stranica",
        "table_pager_prev": "Prethodna stranica",
        "table_pager_first": "Prva stranica",
        "table_pager_last": "Posljednja stranica",
        "logentry-move-move_redir": "$1 {{GENDER:$2|premjestio|premjestila}} je stranicu $3 na $4 preko preusmjeravanja",
        "logentry-move-move_redir-noredirect": "$1 {{GENDER:$2|premjestio|premjestila}} je stranicu $3 na $4 preko preusmjeravanja bez ostavljanja preusmjeravanja",
        "logentry-patrol-patrol": "$1 je {{GENDER:$2|označio|označila}} izmjenu $4 stranice $3 pregledanim",
-       "logentry-patrol-patrol-auto": "$1 je automatski {{GENDER:$2|označio|označila}} izmjenu $4 stranice $3 pregledanim",
+       "logentry-patrol-patrol-auto": "$1 automatski je {{GENDER:$2|označio|označila}} verziju $4 stranice $3 pregledanom",
        "logentry-newusers-newusers": "Korisnički račun $1 je {{GENDER:$2|napravljen}}",
        "logentry-newusers-create": "Korisnički račun $1 je {{GENDER:$2|napravljen}}",
        "logentry-newusers-create2": "$1 je {{GENDER:$2|napravio|napravila}} korisnički račun $3",
        "logentry-newusers-byemail": "Korisnički račun $3 je {{GENDER:$2|napravio|napravila}} $1 i lozinka/šifra je poslana putem e-maila",
-       "logentry-newusers-autocreate": "Korisnički račun $1 je automatski {{GENDER:$2|napravljen}}",
-       "logentry-rights-rights": "$1 je {{GENDER:$2|promijenio|promijenila|promijenio}} članstvo grupe za $3 iz $4 u $5",
+       "logentry-newusers-autocreate": "Korisnički račun $1 automatski je {{GENDER:$2|napravljen}}",
+       "logentry-protect-move_prot": "$1 {{GENDER:$2|premjestio|premjestila}} je postavke zaštite sa $4 na $3",
+       "logentry-rights-rights": "$1 {{GENDER:$2|promijenio|promijenila}} je članstvo grupe za $3 iz $4 u $5",
        "logentry-rights-rights-legacy": "$1 je {{GENDER:$2|promijenio|promijenila|promijenio}} članstvo grupe za $3",
        "logentry-rights-autopromote": "$1 {{GENDER:$1|je automatski promijenjeno članstvo|su automatski promijenjena članstva}} iz $4 u $5",
        "logentry-upload-upload": "$1 {{GENDER:$2|postavio|postavila}} je $3",
index 2ad45a8..217863f 100644 (file)
        "protectthispage": "Ларъе хӀара агӀо",
        "unprotect": "ГӀароллех къаста",
        "unprotectthispage": "ГӀароллех къаста",
-       "newpage": "Керла агӀо",
+       "newpage": "Керла агӀонаш",
        "talkpage": "Дийцаре йила хӀара агӀо",
        "talkpagelinktext": "Дийцаре",
        "specialpage": "Белхан агӀо",
        "viewdeleted": "Хьожий $1?",
        "restorelink": "{{PLURAL:$1|1=$1 дӀадаьккхина нийсдар|$1 дӀадяхна нийсдарш}}",
        "feedlinks": "Тайпанехь:",
-       "feed-invalid": "Тайпан нийсадоцу талол оцу куьгтаlорна.",
+       "feed-invalid": "Тайпан нийса доцу талол оцу куьгтаlорна.",
        "feed-unavailable": "Хаитарца йолу асанаш тlекхочучехь яц",
        "site-rss-feed": "$1 — RSS-аса",
        "site-atom-feed": "$1 — Atom-аса",
        "storedversion": "Ӏалашйина верси",
        "editingold": "'''ДӀахьедар. Ахьа таеш ю хӀокху агӀона шира елла верси.'''\nАгӀо Ӏалаш йинчул тӀехьа хьалхо бина хийцамаш дӀабяра бу.",
        "yourdiff": "Башхаллаш",
-       "copyrightwarning": "Тергаме хьажа, массо яззаман чутухуш долу йозан хийцам хьажарехь бу, арахоьцушсанна оцу лицензи хьоляхь $2 (хьаж. $1).\nНагахь хьо лууш вацахь хьайн йозанаш маьрша даржа а кхечаьрга хийцам байта, мадаха уьш кху чу.<br />\nИшта чӀагӀо йой ахьа, айхьа далош долучуьн хьо куьг да ву аьлла, я хьаэцна цхьан\nхьостера, хийцам ба а дӀаса даржада а чулацам болуш.<br />\n'''МАТОХИЙШ БАКЪО ЙОЦУ ГӀИРСАШ КХУ ЧУ, КУЬГ ДЕ БАКЪО ЛАР ЙЕШ ЙОЛУ!'''",
+       "copyrightwarning": "Тергаме хьажа, массо яззаман чутухуш долу йозан хийцам хьажарехь бу, арахоьцуш санна оцу лицензи хьолехь.\nНагахь хьо лууш вацахь хьайн йозанаш маьрша даржа а кхечаьрга хийцам байта, мадаха уьш кху чу.<br />\nИштта чӀагӀо йой ахьа, айхьа далош долучуьнна хьо куьг да ву аьлла, я хьаэцна цхьан\nхьостера, хийцам ба а дӀаса даржада а чулацам болуш.<br />\n'''МА-КХИССА БАКЪО ЙОЦУ ГӀИРСАШ КХУ ЧУ, КУЬЙГАЛХОЧУЬННА БАКЪО ЛАРЪЕШ ЙОЛУ!'''",
        "readonlywarning": "'''ДӀАХЬЕДО. ГӀирса бух блоктоьхна оьшуш долучу хьаштан, цундера хӀинц хьоьга дӀа ца йазло хийцам.\nХила мега, ахьа Ӏалаш дан дезаш хьайн йоза, юха тӀаьхьо леладан иза йоза.'''\n\nКуьйгалхочо блоктоьхна гӀирса бух, цо битина кхетош хӀара хаам: $1",
        "protectedpagewarning": "'''ДӀахьедар. ХӀара агӀо ларйина ю хийцам цабайта, иза хийца я нисъян а бакъо йолуш куьйгалла лелош болу декъашхой бе бац.'''\nЛахахьа гойту хаамаш тӀаьххьара бина болу хийцамна тептар чура:",
        "semiprotectedpagewarning": "'''ДӀахьедо.''' ХӀара агӀо ларйина ю; дӀабазбиначу декъашхошка бе цӀе хийцалуш яц.\nЛахахьа тептаро балийна тӀаьххьаралера дӀаязбина хаам:",
        "pageswithprop-prophidden-binary": "шалха маьӀна долу хӀума хьулйина ($1)",
        "doubleredirects": "Шалха дIасахьажийнарш",
        "doubleredirectstext": "ХӀокху агӀонехь ю дӀасахьажорашан тӀе хьажийна йолу дӀасахьажораш.\n<del>ТӀехула сиз хаькхна </del>нисйина чарна.",
-       "double-redirect-fixed-move": "АгӀон [[$1]] цӀе хийцина, хӀинца иза дӀахьажийна оцу [[$2]]",
+       "double-redirect-fixed-move": "[[$1]] агӀонан цӀе хийцина.\nХӀинца иза авто-карлаяьккхина а [[$2]] агӀона тӀехьажийна.",
        "double-redirect-fixed-maintenance": "Шалха дӀасахьажинарг нисъяр [[$1]] → [[$2]].",
        "double-redirect-fixer": "ДӀасахьажинарш нисерг",
-       "brokenredirects": "ДIахаьдна долу дIасахьажораш",
+       "brokenredirects": "ДIадаьхна долу дIасахьажораш",
        "brokenredirectstext": "Лахара дӀасахьажийнарш ю йоцучу агӀонийн тӀе хьажийна:",
        "brokenredirects-edit": "нисъе",
        "brokenredirects-delete": "дӀаяккха",
        "protect-expiring": "чакхйолу $1 (UTC)",
        "protect-expiring-local": "чекхйолу $1",
        "protect-expiry-indefinite": "хан чаккхе йоцуш",
-       "protect-cascade": "Ð\9bаÑ\80Ñ\8aе Ð°Ð³Ó\80онаÑ\88, Ñ\85Ó\80окÑ\85Ñ\83 Ð°Ð³Ó\80онÑ\86а Ñ\85Ó\80оÑ\82Ñ\82айеллаÑ\80Ñ\88 (Ñ\87аÑ\85Ñ\87аÑ\80é Ð»Ð°Ñ\80Ñ\8fÑ\8aр)",
+       "protect-cascade": "Ð\90гÓ\80онаÑ\88 Ð»Ð°Ñ\80Ñ\8aÑ\8fÑ\80, Ñ\85Ó\80окÑ\85Ñ\83 Ð°Ð³Ó\80онÑ\86а Ñ\85Ó\80оÑ\82Ñ\82айеллаÑ\80Ñ\88 (Ñ\87аÑ\85Ñ\87аÑ\80é Ð»Ð°Ñ\80Ñ\8aÑ\8fр)",
        "protect-cantedit": "Хьéга хийцам цабало хӀокху агӀон гlаролли локхалан, хӀуд аьлча хьан бакъо яц оцунна тадар дан.",
        "protect-othertime": "Кхин хан:",
        "protect-othertime-op": "кхин хан",
        "protect-existing-expiry-infinity": "Карара чекхйолу хан: чаккхе йоцу",
        "protect-otherreason": "Кхин бахьана/тӀетохар:",
        "protect-otherreason-op": "Кхин бахьана",
-       "protect-dropdown": "* Ð\9bаÑ\8aÑ\80Ñ\8aÑ\8fÑ\80ан Ð±Ð°Ñ\8cÑ\85Ñ\8cаÑ\88 \n** Ñ\81иÑ\85\81иÑ\85а Ð·Ñ\83лам Ð´Ð°Ñ\80 \n** Ð´Ñ\83ккÑ\85а Ñ\81пам Ñ\85илаÑ\80\n** Ð½Ð¸Ñ\81даÑ\80ийн Ñ\82Ó\80ом \n** Ð³Ó\80аÑ\80аÑ\8fлл агӀо",
+       "protect-dropdown": "* Ð\9bаÑ\8aÑ\80Ñ\8aÑ\8fÑ\80ан Ð±Ð°Ñ\85Ñ\8cанаÑ\88 \n** Ñ\81иÑ\85\81иÑ\85а Ð·Ñ\83лам Ð´Ð°Ñ\80 \n** Ð´Ñ\83ккÑ\85а Ñ\81пам Ñ\85илаÑ\80\n** Ð½Ð¸Ñ\81даÑ\80ийн Ñ\82Ó\80ом \n** Ð³Ó\80аÑ\80аÑ\8fÑ\8cлла агӀо",
        "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": "Бакъонаш:",
        "tooltip-ca-talk": "Дийцаре агlон чулацам",
        "tooltip-ca-edit": "Тае хӀара агӀо",
        "tooltip-ca-addsection": "Кхолла керла дакъа",
-       "tooltip-ca-viewsource": "Хlара агlо хийцам цабайта гароллехь ю, хьоьга далундерг хьажар а дезахь чура йоза хьаэцар",
+       "tooltip-ca-viewsource": "ХӀара агӀо ларъеш ю, хийцамаш ца-байта, амма хьо хьажа а, копи яккхан а мегар ду",
        "tooltip-ca-history": "ХӀокху агӀона хийцамаш болу тептар",
        "tooltip-ca-protect": "Ларъе агӀо хийцамаш цабайта",
        "tooltip-ca-unprotect": "Дlадаккха хlокху агlонна долу гаролла",
        "tooltip-n-randompage": "Хьажа цахууш нисйеллачу агlоне",
        "tooltip-n-help": "ГӀоде меттиг",
        "tooltip-t-whatlinkshere": "Массо агӀон могӀам, хӀокху агӀонтӀе хьажийна йолу",
-       "tooltip-t-recentchangeslinked": "Тlаьхьарлера хийцамаш хlокху агlонашкахь, мичхьа хьажийна хlара агlо",
+       "tooltip-t-recentchangeslinked": "ТӀаьххьарлера хийцамаш хӀокху агӀонашкахь, хьажийна хӀара агӀо болу",
        "tooltip-feed-rss": "ХӀокху агӀона трансляци RSS-рца",
        "tooltip-feed-atom": "Хьагайтар оцу Atom цани хlокху агlон",
        "tooltip-t-contributions": "ХӀокху декъашхочо хийцина йолу агӀонийн могӀам",
        "autosumm-blank": "Агӏон чулацам дӏабяккхина",
        "autosumm-replace": "АгӀона чуьраниг хийцина → «$1»",
        "autoredircomment": "[[$1]] тӀе хьажийна",
-       "autosumm-new": "Керла агlо: «$1»",
+       "autosumm-new": "Керла агӀо: «$1»",
        "autosumm-newblank": "Кхоьллина еса агӀо",
        "lag-warn-normal": "{{PLURAL:$1|$1 Секунд}} хьалха бина хийцамаш хӀокху могӀамехь гуш ца хилла мега.",
        "lag-warn-high": "Сервераш синхронизаци еш тӀехьайисарна, {{PLURAL:$1|$1 секунд}} хьалха бина хийцамаш хӀокху могӀамехь гуш ца хилла мега.",
index 51c0571..66df60b 100644 (file)
        "rows": "Řádky",
        "columns": "Sloupce",
        "searchresultshead": "Vyhledávání",
-       "stub-threshold": "Limit pro formátování odkazu jako <a href=\"#\" class=\"stub\">pahýl</a> (v bajtech):",
+       "stub-threshold": "Limit pro formátování odkazu jako pahýl ($1):",
+       "stub-threshold-sample-link": "příklad",
        "stub-threshold-disabled": "Vypnuto",
        "recentchangesdays": "Počet dní zobrazených v posledních změnách:",
        "recentchangesdays-max": "Maximálně $1 {{PLURAL:$1|den|dny|dní}}",
index 47bd2c8..dba2662 100644 (file)
        "table_pager_limit": "Страница çинче $1 кăтарт",
        "table_pager_limit_submit": "Ту",
        "table_pager_empty": "Тупăнмарĕ",
-       "autosumm-blank": "Статьяна тĕппипех кăларса пăрахнă",
+       "autosumm-blank": "Статьяна йăлтах пушатрĕ",
        "autosumm-replace": "Страницăн ăшлăхне «$1» çине улăштарнă",
        "autoredircomment": "[[$1]] çине куçарни",
        "autosumm-new": "Çĕнĕ страница \"$1\"",
index 5a52a76..d7a06b6 100644 (file)
@@ -80,7 +80,8 @@
                        "Andreasburmeister",
                        "Tiin",
                        "Freddy2001",
-                       "Luke081515"
+                       "Luke081515",
+                       "J. 'mach' wust"
                ]
        },
        "tog-underline": "Links unterstreichen:",
        "rows": "Zeilen:",
        "columns": "Spalten:",
        "searchresultshead": "Suche",
-       "stub-threshold": "Linkformatierung <a href=\"#\" class=\"stub\">kleiner Seiten</a> (in Bytes):",
+       "stub-threshold": "Linkformatierung kleiner Seiten ($1):",
+       "stub-threshold-sample-link": "Beispiel",
        "stub-threshold-disabled": "Deaktiviert",
        "recentchangesdays": "Anzahl der standardmäßig einbezogenen Tage:",
        "recentchangesdays-max": "Maximal $1 {{PLURAL:$1|Tag|Tage}}",
        "prefs-help-signature": "Beiträge auf Diskussionsseiten sollten mit „<nowiki>~~~~</nowiki>“ signiert werden, was dann in die Signatur mit Zeitstempel umgewandelt wird.",
        "badsig": "Die Syntax der Signatur ist ungültig; bitte HTML überprüfen.",
        "badsiglength": "Die Signatur darf maximal $1 {{PLURAL:$1|Zeichen}} lang sein.",
-       "yourgender": "Welches Geschlecht hast du?",
-       "gender-unknown": "Ich möchte hierzu keine Angabe machen – geschlechtsneutrale Anrede.",
-       "gender-male": "Ich bin männlich",
-       "gender-female": "Ich bin weiblich",
-       "prefs-help-gender": "Dies ist eine freiwillige Angabe.\nDie Software nutzt sie, um dich anzureden sowie als Hinweis für andere durch Verwendung des zutreffenden grammatikalischen Geschlechts.\nDiese Information ist öffentlich zugänglich.",
+       "yourgender": "Wie möchtest du angesprochen werden?",
+       "gender-unknown": "„Der Benutzer“, „seine Diskussion“, „er bearbeitet“ usw. – generisches Maskulinum oder geschlechtsneutral",
+       "gender-male": "„Der Benutzer“, „seine Diskussion“, „er bearbeitet“ usw. (Maskulinum)",
+       "gender-female": "„Die Benutzerin“, „ihre Diskussion“, „sie bearbeitet“ usw. (Femininum)",
+       "prefs-help-gender": "Dies ist eine freiwillige Angabe.\nDie Software nutzt sie, um dich anzureden sowie als Hinweis für andere durch Verwendung des zutreffenden grammatikalischen Geschlechts.\nDiese Information ist öffentlich zugänglich.\nDie erste Option verwendet in den meisten Fällen das generische Maskulinum, so dass sie dasselbe Resultat ergibt wie die zweite Option.",
        "email": "E-Mail",
        "prefs-help-realname": "Der bürgerliche Name ist optional.\nFalls angegeben, kann er verwendet werden, um dir eine Zuordnung für deine Beiträge zu geben.",
        "prefs-help-email": "Die Angabe einer E-Mail-Adresse ist optional, ermöglicht aber die Zusendung eines Ersatzpasswortes, sofern du dein Passwort vergessen hast.",
        "linksearch-pat": "Suchmuster:",
        "linksearch-ns": "Namensraum:",
        "linksearch-ok": "Suchen",
-       "linksearch-text": "Diese Spezialseite ermöglicht die Suche nach Seiten, in denen bestimmte Weblinks enthalten sind. Dabei können Platzhalter wie beispielsweise <code>*.beispiel.de</code> benutzt werden. Es muss mindestens eine Top-Level-Domain, z. B. „*.org“. angegeben werden. <br />{{PLURAL:$2|Unterstütztes Protokoll|Unterstützte Protokolle}}: $1 (Standard ist http, falls kein Protokoll angegeben ist.)",
+       "linksearch-text": "Diese Spezialseite ermöglicht die Suche nach Seiten, in denen bestimmte Weblinks enthalten sind. Dabei können Platzhalter, wie beispielsweise <code>*.beispiel.de</code>, benutzt werden. Es muss mindestens eine Top-Level-Domain, z. B. „*.org“, angegeben werden. <br />{{PLURAL:$2|Unterstütztes Protokoll|Unterstützte Protokolle}}: $1 (Standard ist http, falls kein Protokoll angegeben ist.)",
        "linksearch-line": "$1 ist verlinkt von $2",
        "linksearch-error": "Wildcards können nur am Anfang der URL verwendet werden.",
        "listusersfrom": "Zeige Benutzer ab:",
index 5367162..6eedb8c 100644 (file)
        "watchlistedit-clear-explain": "तमरा ध्यान सूचीबठे सम्पूर्ण पाना हटाइया",
        "watchlistedit-clear-done": "तमरो ध्यान सूची खाली गरीयाको छ।",
        "watchlisttools-view": "आधारित फेरबदलीहरू हेर",
-       "signature": "[[{{ns:प्रयोगकर्ता}}:$1|$2]]([[{{ns:प्रयोगकर्ता_कुरडी}}:$1|कुरडी]])",
+       "signature": "[[{{ns:प्रयोगकर्ता}}:$1|$2]][[{{ns:प्रयोगकर्ता_कुरडी}}:$1|कुरडी]]",
        "specialpages": "खास पानो",
        "specialpages-note": "* साधारण खास पानाहरू।\n* <span class=\"mw-specialpagerestricted\">निषेधित खास पानाहरू।</span>",
        "specialpages-group-changes": "अल्लैका परिवर्तन लगहरू",
index d2d966f..7580dea 100644 (file)
        "rows": "Rows:",
        "columns": "Columns:",
        "searchresultshead": "Search",
-       "stub-threshold": "Threshold for <a href=\"#\" class=\"stub\">stub link</a> formatting (bytes):",
+       "stub-threshold": "Threshold for stub link formatting ($1):",
+       "stub-threshold-sample-link": "sample",
        "stub-threshold-disabled": "Disabled",
        "recentchangesdays": "Days to show in recent changes:",
        "recentchangesdays-max": "Maximum $1 {{PLURAL:$1|day|days}}",
        "tooltip-t-recentchangeslinked": "Recent changes in pages linked from this page",
        "tooltip-feed-rss": "RSS feed for this page",
        "tooltip-feed-atom": "Atom feed for this page",
-       "tooltip-t-contributions": "A list of contributions of this user",
+       "tooltip-t-contributions": "A list of contributions by this user",
        "tooltip-t-emailuser": "Send an email to this user",
        "tooltip-t-info": "More information about this page",
        "tooltip-t-upload": "Upload files",
        "autosumm-new": "Created page with \"$1\"",
        "autosumm-newblank": "Created blank page",
        "autoblock_whitelist": "AOL http://webmaster.info.aol.com/proxyinfo.html\n*64.12.96.0/19\n*149.174.160.0/20\n*152.163.240.0/21\n*152.163.248.0/22\n*152.163.252.0/23\n*152.163.96.0/22\n*152.163.100.0/23\n*195.93.32.0/22\n*195.93.48.0/22\n*195.93.64.0/19\n*195.93.96.0/19\n*195.93.16.0/20\n*198.81.0.0/22\n*198.81.16.0/20\n*198.81.8.0/23\n*202.67.64.128/25\n*205.188.192.0/20\n*205.188.208.0/23\n*205.188.112.0/20\n*205.188.146.144/30\n*207.200.112.0/21",
-       "size-bytes": "$1 B",
+       "size-bytes": "$1 {{PLURAL:$1|byte|bytes}}",
        "size-kilobytes": "$1 KB",
        "size-megabytes": "$1 MB",
        "size-gigabytes": "$1 GB",
        "size-exabytes": "$1 EB",
        "size-zetabytes": "$1 ZB",
        "size-yottabytes": "$1 YB",
-       "size-pixel": "$1 P",
+       "size-pixel": "$1 {{PLURAL:$1|pixel|pixels}}",
        "size-kilopixel": "$1 KP",
        "size-megapixel": "$1 MP",
        "size-gigapixel": "$1 GP",
index 7f1e39f..e89a289 100644 (file)
        "changeemail-oldemail": "Aktuala retpoŝtadreso:",
        "changeemail-newemail": "Nova retpoŝtadreso:",
        "changeemail-none": "(nenio)",
-       "changeemail-password": "Via {{SITENAME}}-ensalutado:",
+       "changeemail-password": "Via pasvorto por {{SITENAME}}:",
        "changeemail-submit": "Ŝanĝi retpoŝtadreson",
        "changeemail-throttled": "Vi tro ofte provis alsaluti.\nBonvolu atendi $1, antaŭ ol vi provos denove.",
        "resettokens": "Renovigi ŝlosilojn",
        "userrights-reason": "Kialo:",
        "userrights-no-interwiki": "Vi ne rajtas redakti uzanto-rajtojn en aliaj vikioj.",
        "userrights-nodatabase": "Datumbazo $1 ne ekzistas aŭ ne estas loka.",
-       "userrights-nologin": "Vi nepre [[Special:UserLogin|ensalutu]] kun administranto-konto doni uzanto-rajtojn.",
+       "userrights-nologin": "Vi devas [[Special:UserLogin|ensaluti]] per administranto-konto por doni uzanto-rajtojn.",
        "userrights-notallowed": "Via konto ne rajtas doni aŭ forigi uzanto-rajtojn.",
        "userrights-changeable-col": "Grupoj kiujn vi povas ŝanĝi",
        "userrights-unchangeable-col": "Grupoj kiujn vi ne povas ŝanĝi",
        "tooltip-pt-logout": "Elsaluti",
        "tooltip-pt-createaccount": "Ni rekomendas al vi kreon de uzantokonto kaj ensaluto; tamen, tio ne estas deviga",
        "tooltip-ca-talk": "Diskuto pri la artikolo",
-       "tooltip-ca-edit": "Vi povas redakti tiun ĉi paĝon. Bv uzi la antaŭvidbutonon antaŭ ol konservi.",
+       "tooltip-ca-edit": "Redakti tiun ĉi paĝon",
        "tooltip-ca-addsection": "Starti novan sekcion",
        "tooltip-ca-viewsource": "Tiu paĝo estas protektita. Vi povas nur rigardi ties fonton.",
        "tooltip-ca-history": "Antaŭaj versioj de tiu ĉi paĝo.",
        "spam_reverting": "Restarigo de lasta versio ne entenante ligilojn al $1",
        "spam_blanking": "Forviŝo de ĉiuj versioj entenantaj ligilojn al $1",
        "spam_deleting": "Ĉiuj versioj enhavis ligilojn al $1 - forigante",
-       "simpleantispam-label": "Kontrolo kontraŭ spamo.\n'''NE ENIGU''' ion ajn!",
+       "simpleantispam-label": "Kontrolo kontraŭ spamo.\n<strong>Ne entajpu</strong> ion ajn!",
        "pageinfo-title": "Informoj por \"$1\"",
        "pageinfo-not-current": "Informoj povas esti montritaj nur por la nuna versio",
        "pageinfo-header-basic": "Baza informo",
        "pageinfo-category-subcats": "Nombro de subkategorioj",
        "pageinfo-category-files": "Nombro de dosieroj",
        "markaspatrolleddiff": "Marki kiel patrolitan",
-       "markaspatrolledtext": "Marki ĉi tiun paĝon kiel patrolitan",
+       "markaspatrolledtext": "Marki ĉi tiun paĝon patrolita",
        "markedaspatrolled": "Markita kiel patrolita",
        "markedaspatrolledtext": "La elektita versio [[:$1]] estas markita kiel patrolita.",
        "rcpatroldisabled": "Patrolado de lastaj ŝanĝoj malaktivigita",
index 49b8b7b..90e96d3 100644 (file)
        "tog-prefershttps": "Utilizar siempre conexiones seguras en mis sesiones",
        "underline-always": "Siempre",
        "underline-never": "Nunca",
-       "underline-default": "Configuración predeterminada del tema o el navegador",
+       "underline-default": "Configuración predeterminada de la apariencia o el navegador",
        "editfont-style": "Tipo de letra del área de edición:",
        "editfont-default": "Predeterminado del navegador",
        "editfont-monospace": "Tipo de letra monoespaciado",
        "content-model-css": "CSS",
        "content-json-empty-object": "Objeto vacío",
        "content-json-empty-array": "Matriz vacía",
-       "duplicate-args-warning": "<strong>Aviso:</strong> [[:$1]] convoca a [[:$2]] con más de un valor para el parámetro «$3». Se usará solo el último valor proporcionado.",
+       "duplicate-args-warning": "<strong>Aviso:</strong> [[:$1]] llama a [[:$2]] con más de un valor para el parámetro «$3». Se usará solo el último valor proporcionado.",
        "duplicate-args-category": "Páginas que usan argumentos duplicados en invocaciones de plantillas",
        "duplicate-args-category-desc": "La página contiene invocaciones de plantillas que utilizan argumentos duplicados, como <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> o <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "expensive-parserfunction-warning": "<strong>Advertencia:</strong> esta página contiene demasiadas llamadas a funciones sintácticas costosas.\n\nTiene {{PLURAL:$1|una llamada|$1 llamadas}}, pero debería tener menos de {{PLURAL:$2|una|$2}}.",
        "rows": "Filas:",
        "columns": "Columnas:",
        "searchresultshead": "Búsquedas",
-       "stub-threshold": "Límite para cambiar a formato de <a href=\"#\" class=\"stub\">enlace a esbozo</a> (en bytes):",
+       "stub-threshold": "Límite para cambiar a formato de enlace a esbozo ($1):",
+       "stub-threshold-sample-link": "muestra",
        "stub-threshold-disabled": "Desactivado",
        "recentchangesdays": "Días que mostrar en los cambios recientes:",
        "recentchangesdays-max": "Máximo {{PLURAL:$1|un día|$1 días}}",
        "userrights-removed-self": "Has eliminado con éxito tus propios permisos. Por tanto, ya no podrás volver a acceder a esta página.",
        "group": "Grupo:",
        "group-user": "Usuarios",
-       "group-autoconfirmed": "Usuarios autoconfirmados",
+       "group-autoconfirmed": "Autoconfirmados",
        "group-bot": "Bots",
        "group-sysop": "Administradores",
        "group-bureaucrat": "Burócratas",
        "group-suppress": "Supresores",
        "group-all": "(todos)",
        "group-user-member": "{{GENDER:$1|usuario|usuaria}}",
-       "group-autoconfirmed-member": "{{GENDER:$1|usuario autoconfirmado|usuaria autoconfirmada}}",
+       "group-autoconfirmed-member": "{{GENDER:$1|autoconfirmado|autoconfirmada}}",
        "group-bot-member": "{{GENDER:$1|bot}}",
        "group-sysop-member": "{{GENDER:$1|administrador|administradora}}",
        "group-bureaucrat-member": "{{GENDER:$1|burócrata}}",
        "group-suppress-member": "{{GENDER:$1|supresor|supresora}}",
        "grouppage-user": "{{ns:project}}:Usuarios",
-       "grouppage-autoconfirmed": "{{ns:project}}:Usuarios autoconfirmados",
+       "grouppage-autoconfirmed": "{{ns:project}}:Autoconfirmados",
        "grouppage-bot": "{{ns:project}}:Bots",
        "grouppage-sysop": "{{ns:project}}:Administradores",
        "grouppage-bureaucrat": "{{ns:project}}:Burócratas",
        "filetype-banned-type": "{{PLURAL:$4|El tipo de archivo|Los tipos de archivo}} <strong>\".$1\"</strong> no {{PLURAL:$4|está permitido|están permitidos}}.\n{{PLURAL:$3|El único tipo de archivo permitido es|Los tipos de archivos permitidos son}} $2.",
        "filetype-missing": "El archivo no tiene extensión (como «.jpg»).",
        "empty-file": "El archivo que enviaste estaba vacío.",
-       "file-too-large": "El archivo que enviste era demasiado grande.",
-       "filename-tooshort": "El nombre de archivo es demasiado corto.",
+       "file-too-large": "El archivo que enviaste era demasiado grande.",
+       "filename-tooshort": "El nombre del archivo es demasiado corto.",
        "filetype-banned": "El tipo de archivo está prohibido.",
        "verification-error": "Este archivo no superó la verificación de archivos.",
        "hookaborted": "Una extensión ha impedido la modificación que intentaste realizar.",
-       "illegal-filename": "El nombre de archivo no está permitido.",
-       "overwrite": "Sobrescribir un archivo existente no está permitido.",
+       "illegal-filename": "El nombre del archivo no está permitido.",
+       "overwrite": "No está permitido sobrescribir un archivo existente.",
        "unknown-error": "Ocurrió un error desconocido.",
        "tmp-create-error": "No se pudo crear archivo temporal.",
-       "tmp-write-error": "Error al escribir archivo temporal.",
+       "tmp-write-error": "Error al escribir el archivo temporal.",
        "large-file": "Se recomienda que los archivos no sean mayores de $1; este archivo ocupa $2.",
        "largefileserver": "El tamaño de este archivo es mayor del que este servidor admite por configuración.",
        "emptyfile": "El archivo que has intentado subir parece estar vacío; por favor, verifica que realmente se trate del archivo que intentabas subir.",
        "upload-misc-error-text": "Ha ocurrido un error durante la subida.\nVerifica que la URL es válida y accesible e inténtalo de nuevo.\nSi el problema persiste, contacta con un [[Special:ListUsers/sysop|administrador]].",
        "upload-too-many-redirects": "La URL contenía demasiadas redirecciones",
        "upload-http-error": "Ha ocurrido un error HTTP: $1",
-       "upload-copy-upload-invalid-domain": "No se pueden realizar cargas remotas desde este dominio.",
+       "upload-copy-upload-invalid-domain": "No se pueden realizar subidas remotas desde este dominio.",
        "upload-dialog-title": "Subir archivo",
        "upload-dialog-error": "Ha ocurrido un error",
        "upload-dialog-warning": "Ha ocurrido una advertencia",
        "filedelete-nofile": "<strong>$1</strong> no existe.",
        "filedelete-nofile-old": "No existe una versión guardada de <strong>$1</strong> con los atributos especificados.",
        "filedelete-otherreason": "Otra razón:",
-       "filedelete-reason-otherlist": "Otra razón",
+       "filedelete-reason-otherlist": "Otro motivo",
        "filedelete-reason-dropdown": "*Razones habituales de borrado\n** Violación de derechos de autor\n** Archivo duplicado",
        "filedelete-edit-reasonlist": "Edita los motivos del borrado",
        "filedelete-maintenance": "Borrado y restauración de archivos temporalmente deshabilitados durante el mantenimiento.",
        "ancientpages": "Artículos más antiguos",
        "move": "Trasladar",
        "movethispage": "Trasladar esta página",
-       "unusedimagestext": "Los siguientes archivos existen pero no están insertados en ninguna página.\nPor favor note que otros sitios web pueden vincular a un archivo con un URL directo, y por tanto pueden ser listados aquí a pesar de estar en uso activo.",
+       "unusedimagestext": "Los siguientes archivos existen pero no están insertados en ninguna página.\nTen en cuenta que otros sitios web pueden enlazar un archivo directamente por la URL, y por tanto pueden estar listados aquí a pesar de estar siendo usados de forma activa.",
        "unusedcategoriestext": "Las siguientes categorías han sido creadas, pero ningún artículo o categoría las utiliza.",
        "notargettitle": "No hay página objetivo",
        "notargettext": "No has especificado sobre qué página deseas llevar a cabo esta acción.",
        "protect-existing-expiry": "Fecha de caducidad actual: $2 a las $3",
        "protect-existing-expiry-infinity": "Tiempo de caducidad existente: infinito",
        "protect-otherreason": "Otra razón:",
-       "protect-otherreason-op": "Otra razón",
+       "protect-otherreason-op": "Otro motivo",
        "protect-dropdown": "*Razones de protección habituales\n**Vandalismo excesivo\n**Spam excesivo\n**Guerra de ediciones\n**Página muy visitada",
        "protect-edit-reasonlist": "Editar las razones de protección",
        "protect-expiry-options": "1 hora:1 hour,1 día:1 day,1 semana:1 week,2 semanas:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 año:1 year,para siempre:infinite",
        "export-submit": "Exportar",
        "export-addcattext": "Añadir páginas desde la categoría:",
        "export-addcat": "Añadir",
-       "export-addnstext": "Agregar páginas del nombre del sitio:",
+       "export-addnstext": "Agregar páginas desde el espacio de nombres:",
        "export-addns": "Agregar",
        "export-download": "Guardar como archivo",
        "export-templates": "Incluir plantillas",
        "importstart": "Importando páginas...",
        "import-revision-count": "$1 {{PLURAL:$1|revisión|revisiones}}",
        "importnopages": "No hay páginas que importar.",
-       "imported-log-entries": "Importados $1 {{PLURAL:$1|entradas de registro|entradas de registro}}.",
+       "imported-log-entries": "{{PLURAL:$1|Se importó|Se importaron}} $1 {{PLURAL:$1|entrada|entradas}} de registro.",
        "importfailed": "La importación ha fallado: $1",
        "importunknownsource": "Tipo de fuente de importación desconocida",
        "importcantopen": "No se pudo importar el archivo",
        "group-sysop.js": "/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios del grupo Administradores */",
        "group-bureaucrat.js": "/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios del grupo Burócratas */",
        "anonymous": "{{PLURAL:$1|Usuario anónimo|Usuarios anónimos}} de {{SITENAME}}",
-       "siteuser": "{{GENDER:$1|Usuario|Usuaria}} $1 de {{SITENAME}}",
-       "anonuser": "{{SITENAME}} usuario anónimo $1",
-       "lastmodifiedatby": "Esta página fue modificada por última vez en $2, $1 por $3.",
+       "siteuser": "{{GENDER:$1|el usuario|la usuaria}} $1 de {{SITENAME}}",
+       "anonuser": "el usuario anónimo $1 de {{SITENAME}}",
+       "lastmodifiedatby": "Esta página fue modificada por última vez el $1 a las $2 por $3.",
        "othercontribs": "Basado en el trabajo de $1.",
        "others": "otros",
-       "siteusers": "{{PLURAL:$2|Usuario|Usuarios}} $1 de {{SITENAME}}",
-       "anonusers": "{{SITENAME}} {{PLURAL:$2|usuario|usuarios}} anónimos $1",
+       "siteusers": "{{PLURAL:$2|el usuario|los usuarios}} $1 de {{SITENAME}}",
+       "anonusers": "{{PLURAL:$2|el usuario anónimo|los usuarios anónimos}} $1 de {{SITENAME}}",
        "creditspage": "Créditos de la página",
        "nocredits": "No hay información de créditos para esta página.",
        "spamprotectiontitle": "Filtro de protección contra spam",
        "invalid-indicator-name": "<strong>Error:</strong> el atributo <code>name</code> de los indicadores de estado de página no debe estar vacío.",
        "version": "Versión",
        "version-extensions": "Extensiones instaladas",
-       "version-skins": "Temas instalados",
+       "version-skins": "Apariencias instaladas",
        "version-specialpages": "Páginas especiales",
        "version-parserhooks": "Extensiones del analizador sintáctico",
        "version-variables": "Variables",
        "htmlform-user-not-valid": "<strong>$1</strong> no es un nombre de usuario válido.",
        "sqlite-has-fts": "$1 con soporte para búsqueda de texto completo",
        "sqlite-no-fts": "$1 sin soporte para búsqueda de texto completo",
-       "logentry-delete-delete": "$1 {{GENDER:$2|borró}} la página «$3»",
+       "logentry-delete-delete": "$1 {{GENDER:$2|borró}} la página $3",
        "logentry-delete-restore": "$1 restauró la página «$3»",
        "logentry-delete-event": "$1 {{GENDER:$2|modificó}} la visibilidad de {{PLURAL:$5|un evento|$5 eventos}} del registro en $3: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|modificó}} la visibilidad de {{PLURAL:$5|una revisión |$5 revisiones}} en la página  $3: $4",
        "logentry-delete-event-legacy": "$1 ha {{GENDER:$2|cambiado}} la visibilidad de registro de eventos en $3",
        "logentry-delete-revision-legacy": "$1 ha {{GENDER:$2|cambiado}} la visibilidad de las revisiones en la página $3",
-       "logentry-suppress-delete": "$1 {{GENDER:$2|borró}}, con restricciones para administradores aplicadas, la página $3",
+       "logentry-suppress-delete": "$1 {{GENDER:$2|borró}} la página $3",
        "logentry-suppress-event": "$1 {{GENDER:$2|modificó}} secretamente la visibilidad de {{PLURAL:$5|una edición|$5 ediciones}} en la página $3: $4",
        "logentry-suppress-revision": "$1 {{GENDER:$2|modificó}} secretamente la visibilidad de {{PLURAL:$5|una edición|$5 ediciones}} en la página $3: $4",
        "logentry-suppress-event-legacy": "$1 {{GENDER:$2|modificó}} secretamente la visibilidad de los eventos del registro en $3",
        "expand_templates_generate_xml": "Mostrar el árbol XML.",
        "expand_templates_generate_rawhtml": "Mostrar HTML en crudo",
        "expand_templates_preview": "Previsualización",
-       "expand_templates_preview_fail_html": "<em>Se ha ocultado la previsualización como precaución frente a ataques JavaScript. Esto se debe a que {{SITENAME}} tiene habilitada la característica de código HTML en bruto, y se perdieron los datos de la sesión.</em>\n\n<strong>Si se trata de un intento de previsualización legítimo, por favor inténtelo de nuevo.</strong>\nSi aun así no funciona, pruebe a [[Special:UserLogout|cerrar sesión]] y volver a acceder.",
-       "expand_templates_preview_fail_html_anon": "<em>Se ha ocultado la previsualización como precaución frente a ataques JavaScript. Esto se debe a que {{SITENAME}} tiene habilitada la característica de código HTML en bruto, y usted no ha iniciado sesión.</em>\n\n<strong>Si se trata de un intento de previsualización legítimo, por favor [[Special:UserLogin|inicie sesión]] e inténtelo de nuevo.</strong>",
+       "expand_templates_preview_fail_html": "<em>Se ha ocultado la previsualización como precaución frente a ataques JavaScript. Esto se debe a que {{SITENAME}} tiene habilitada la característica de código HTML en bruto, y se perdieron los datos de la sesión.</em>\n\n<strong>Si se trata de un intento de previsualización legítimo, inténtalo de nuevo.</strong>\nSi aun así no funciona, intenta [[Special:UserLogout|cerrar sesión]] y volver a acceder.",
+       "expand_templates_preview_fail_html_anon": "<em>Se ha ocultado la previsualización como precaución frente a ataques JavaScript. Esto se debe a que {{SITENAME}} tiene habilitada la característica de código HTML en bruto, y no has iniciado sesión.</em>\n\n<strong>Si se trata de un intento de previsualización legítimo, [[Special:UserLogin|inicia sesión]] e inténtalo de nuevo.</strong>",
        "pagelanguage": "Selector de idioma de página",
        "pagelang-name": "Página",
        "pagelang-language": "Idioma",
index 3b48a1a..e8cb188 100644 (file)
        "accmailtitle": "Parool saadetud",
        "accmailtext": "Kasutajale [[User talk:$1|$1]] genereeritud juhuslik parool saadeti aadressile $2.\n\nSeda saab pärast sisselogimist muuta ''[[Special:ChangePassword|parooli muutmise]]'' leheküljel.",
        "newarticle": "(Uus)",
-       "newarticletext": "Lehekülge, kuhu link sind suunas, pole veel.\nLehekülje loomiseks alusta allolevasse kasti kirjutamist (lisateave [$1 juhendist]).\nKui sattusid siia kogemata, klõpsa võrgulehitseja ''tagasi''-nupule.",
+       "newarticletext": "Lehekülge, kuhu link sind suunas, pole veel.\nEt lehekülg luua, alusta allolevas kastis kirjutamist (lisateave [$1 juhendist]).\nKui sattusid siia kogemata, klõpsa veebilehitseja ''tagasi''-nupule.",
        "anontalkpagetext": "----''See on anonüümse kasutaja arutelulehekülg. See kasutaja pole kontot loonud või ei kasuta seda. Sellepärast tuleb meil kasutaja tuvastamiseks kasutada tema IP-aadressi. Sellist IP-aadressi võib kasutada mitu kasutajat. Kui oled osutatud IP-aadressi kasutaja ning leiad, et siinsed kommentaarid ei puutu kuidagi sinusse, [[Special:UserLogin/signup|loo palun kasutajakonto]] või [[Special:UserLogin|logi sisse]], et sind edaspidi teiste anonüümsete kasutajatega segi ei aetaks.''",
        "noarticletext": "Käesoleval leheküljel hetkel teksti ei ole.\nVõid [[Special:Search/{{PAGENAME}}|otsida pealkirjaks olevat fraasi]] teistelt lehtedelt,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} uurida asjassepuutuvaid logisid] või [{{fullurl:{{FULLPAGENAME}}|action=edit}} puuduva lehekülje ise luua]</span>.",
        "noarticletext-nopermission": "Sellel leheküljel pole praegu teksti.\nSaad [[Special:Search/{{PAGENAME}}|otsida selle lehekülje pealkirja]] teistelt lehekülgedelt või <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} otsida seonduvatest logidest]</span>, aga sul pole õigust seda lehekülge alustada.",
        "confirmemail_success": "Sinu e-posti aadress on kinnitatud\nVõid nüüd [[Special:UserLogin|sisse logida]].",
        "confirmemail_loggedin": "Sinu e-posti aadress on nüüd kinnitatud.",
        "confirmemail_subject": "{{GRAMMAR:genitive|{{SITENAME}}}} e-posti aadressi kinnitamine",
-       "confirmemail_body": "Keegi IP-aadressilt $1, ilmselt sa ise, registreeris selle e-posti aadressiga {{GRAMMAR:inessive|{{SITENAME}}}} konto \"$2\".\n\nKinnitamaks, et see kasutajakonto tõepoolest kuulub sulle ning e-posti teenuste aktiveerimiseks, ava oma võrgulehitsejas järgmine link:\n\n$3\n\nKui see *pole* sinu loodud konto, ava järgmine link kinnituse tühistamiseks:\n\n$5\n\nKinnituskood aegub kuupäeval $4.",
+       "confirmemail_body": "Keegi IP-aadressilt $1, ilmselt sa ise, registreeris selle e-posti aadressiga {{GRAMMAR:inessive|{{SITENAME}}}} konto \"$2\".\n\nKinnitamaks, et kasutajakonto tõepoolest kuulub sulle ning et aktiveerida e-posti teenused, ava veebilehitsejas järgmine link:\n\n$3\n\nKui sa *pole* kontot registreerinud, ava järgmine link kinnituse tühistamiseks:\n\n$5\n\nKinnituskoodi aegumistähtaeg: $4.",
        "confirmemail_body_changed": "Keegi IP-aadressilt $1, ilmselt sa ise,\nmuutis {{GRAMMAR:inessive|{{SITENAME}}}} konto \"$2\" e-posti aadressiks selle aadressi.\n\nKinnitamaks, et see konto tõepoolest kuulub sulle ja e-posti teenuste taasaktiveerimiseks, ava oma veebilehitsejas järgmine link:\n\n$3\n\nKui see *pole* sinu konto, ava järgmine link\nkinnituse tühistamiseks:\n\n$5\n\nKinnituskood aegub kuupäeval $4.",
-       "confirmemail_body_set": "Keegi, arvatavasti sina ise, IP-aadressilt $1 on {{GRAMMAR:genitive|{{SITENAME}}}} konto \"$2\" e-posti aadressiks määranud selle aadressi.\n\nKinnitamaks, et see konto kuulub tõesti sulle ja {{GRAMMAR:genitive|{{SITENAME}}}} e-posti funktsioonide aktiveerimiseks ava võrgulehitsejas järgmine link:\n\n$3\n\nKui konto *ei* kuulu sulle, kasuta e-posti aadressi kinnituse tühistamiseks järgmist linki:\n\n$5\n\nSelle kinnituskoodi aegumistähtaeg on $4.",
+       "confirmemail_body_set": "Keegi IP-aadressilt $1, arvatavasti sina ise, on {{GRAMMAR:genitive|{{SITENAME}}}} konto \"$2\" e-posti aadressiks määranud selle aadressi.\n\nKinnitamaks, et see konto kuulub tõesti sulle ja et aktiveerida e-posti teenused, ava võrgulehitsejas järgmine link:\n\n$3\n\nKui konto *ei* kuulu sulle, kasuta e-posti aadressi kinnituse tühistamiseks järgmist linki:\n\n$5\n\nSelle kinnituskoodi aegumistähtaeg on $4.",
        "confirmemail_invalidated": "E-posti aadressi kinnitamine tühistati",
        "invalidateemail": "E-posti aadressi kinnituse tühistamine",
        "scarytranscludedisabled": "[Vikidevaheline mallina kasutamine on keelatud]",
        "autoredircomment": "Ümbersuunamine lehele [[$1]]",
        "autosumm-new": "Uus lehekülg: '$1'",
        "autosumm-newblank": "Alustatud tühja leheküljega",
+       "size-bytes": "$1 {{PLURAL:$1|bait|baiti}}",
+       "size-pixel": "$1 {{PLURAL:$1|piksel|pikslit}}",
        "lag-warn-normal": "Viimase {{PLURAL:$1|ühe sekundi|$1 sekundi}} jooksul tehtud muudatused ei pruugi selles loendis näha olla.",
        "lag-warn-high": "Andmebaasiserveri töö viivituste tõttu ei pruugi viimase {{PLURAL:$1|ühe sekundi|$1 sekundi}} jooksul tehtud muudatused selles loendis näha olla.",
        "watchlistedit-normal-title": "Jälgimisloendi redigeerimine",
        "feedback-back": "Tagasi",
        "feedback-bugcheck": "Hästi! Kontrolli vaid, ega tegu pole juba [$1 teada oleva veaga].",
        "feedback-bugnew": "Kontrollisin. Teata uuest veast",
-       "feedback-bugornote": "Kui arvad, et oskad tehnilist probleemi üksikasjalikult kirjeldada, [$1 teata veast].\nKui ei, kasuta allolevat lihtsat vormi. Sinu kommentaar lisatakse koos kasutajanime ja teabega kasutatava võrgulehitsejaga kohta leheküljele \"[$3 $2]\".",
+       "feedback-bugornote": "Kui arvad, et oskad tehnilist probleemi üksikasjalikult kirjeldada, [$1 teata veast].\nKui ei, kasuta allolevat lihtsat vormi. Sinu kommentaar lisatakse koos kasutajanimega leheküljele \"[$3 $2]\".",
        "feedback-cancel": "Loobu",
        "feedback-close": "Valmis",
        "feedback-external-bug-report-button": "Koosta tehniline tööülesanne",
index eb2e660..e0b0ee9 100644 (file)
        "shown-title": "Erakutsi {{PLURAL:$1|emaitza $1|$1 emaitza}} orrialdeko",
        "viewprevnext": "Ikusi ($1 {{int:pipe-separator}} $2) ($3).",
        "searchmenu-exists": "'''«[[:$1]]» izena duen orri bat bada wiki honetan.''' {{PLURAL:$2|0=|Ikus, gainera, aurkitutako beste bilaketa emaitzak.}}",
-       "searchmenu-new": "'''Sortu «[[:$1]]» orria wiki honetan!''' {{PLURAL:$2|0=|Ikus, gainera, zure bilaketarekin aurkitutako orria.|Ikus, gainera, bilaketaren emaitzak.}}",
+       "searchmenu-new": "<strong>Sortu «[[:$1]]» orria wiki honetan!<strong> {{PLURAL:$2|0=|Ikus, gainera, zure bilaketarekin aurkitutako orria.|Ikus, gainera, bilaketaren emaitzak.}}",
        "searchprofile-articles": "Eduki-orriak",
        "searchprofile-images": "Multimedia",
        "searchprofile-everything": "Guztia",
index 8a19223..02cea8e 100644 (file)
        "actionthrottledtext": "به منظور جلوگیری از انتشار اسپم، اجازه ندارید که چنین عملی را بیش از چند بار در یک مدت زمان کوتاه انجام بدهید.\nلطفاً پس از چند دقیقه دوباره تلاش کنید.",
        "protectedpagetext": "این صفحه برای جلوگیری از ویرایش یا فعالیت دیگر محافظت شده‌است.",
        "viewsourcetext": "می‌توانید متن مبدأ این صفحه را مشاهده کنید یا از آن نسخه بردارید:",
-       "viewyourtext": "می‌توانید کد مبدأ '''ویرایش‌هایتان''' در این صفحه را ببینید و کپی کنید:",
+       "viewyourtext": "می‌توانید کد مبدأ <strong>ویرایش‌هایتان</strong> در این صفحه را ببینید و کپی کنید.",
        "protectedinterface": "این صفحه ارائه‌دهندهٔ متنی برای واسط کاربر این نرم‌افزار در این ویکی است و به منظور پیشگیری از خرابکاری محافظت شده‌است.\nبرای افزودن یا تغییر دادن ترجمه برای همهٔ ویکی‌ها، لطفاً از [//translatewiki.net/ translatewiki.net]، پروژهٔ محلی‌سازی مدیاویکی، استفاده کنید.",
        "editinginterface": "<strong>هشدار:</strong> صفحه‌ای که ویرایش می‌کنید شامل متنی است که در واسط کاربر این نرم‌افزار به کار رفته‌است.\nتغییر این صفحه منجر به تغییر ظاهر واسط کاربر این نرم‌افزار برای دیگر کاربران خواهد شد.",
        "translateinterface": "برای افزودن یا تغییر دادن ترجمه برای همهٔ ویکی‌ها، لطفاً از [//translatewiki.net/ translatewiki.net]، پروژهٔ محلی‌سازی مدیاویکی، استفاده کنید.",
        "search-category": "(رده  $1)",
        "search-file-match": "(تشابه محتوی پرونده)",
        "search-suggest": "آیا منظورتان این بود: $1",
+       "search-rewritten": "نمایش نتایج $1. جستجوی به جای $2.",
        "search-interwiki-caption": "پروژه‌های خواهر",
        "search-interwiki-default": "نتایج از $1 :",
        "search-interwiki-more": "(بیشتر)",
        "columns": "تعداد ستون‌ها:",
        "searchresultshead": "جستجو",
        "stub-threshold": "آستانهٔ ویرایش پیوندهای <a href=\"#\" class=\"stub\">ناقص</a> (بایت):",
+       "stub-threshold-sample-link": "نمونه",
        "stub-threshold-disabled": "غیرفعال",
        "recentchangesdays": "تعداد روزهای نمایش داده‌شده در تغییرات اخیر:",
        "recentchangesdays-max": "حداکثر $1 {{PLURAL:$1|روز}}",
        "newpageletter": "نو",
        "boteditletter": "ر",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|کاربر}} پی‌گیرنده]",
-       "rc_categories": "محدود به این رده‌ها (رده‌ها را با «|» جدا کنید)",
+       "rc_categories": "محدود به این رده‌ها (رده‌ها را با «|» جدا کنید):",
        "rc_categories_any": "هر کدام از منتخب‌ها",
        "rc-change-size-new": "$1 {{PLURAL:$1|بایت}} پس از تغییر",
        "newsectionsummary": "/* $1 */ بخش جدید",
        "upload-http-error": "یک خطای اچ‌تی‌تی‌پی رخ داد: $1",
        "upload-copy-upload-invalid-domain": "بارگذاری کپی پرونده‌ها از این دامنه امکان‌پذیر نیست.",
        "upload-dialog-title": "بارگذاری پرونده",
+       "upload-dialog-error": "يک خطا اتفاق افتاد",
        "upload-dialog-warning": "یک هشدار رخ‌داد",
        "upload-dialog-button-cancel": "لغو",
        "upload-dialog-button-done": "انجام شد",
        "watchlistanontext": "برای مشاهده و ویرایش فهرست پی‌گیری‌های خود از $1 استفاده کنید.",
        "watchnologin": "به سامانه وارد نشده‌اید",
        "addwatch": "افزودن به فهرست پی‌گیری",
-       "addedwatchtext": "صفحهٔ «[[:$1]]» به [[Special:Watchlist|فهرست پی‌گیری‌های]] شما اضافه شد.\nتغییرات این صفحه و صفحهٔ بحث متناظرش در آینده در اینجا فهرست خواهد شد.",
+       "addedwatchtext": "«[[:$1]]» و صفحهٔ بحث آن به [[Special:Watchlist|فهرست پی‌گیری‌های]] شما اضافه شد.",
        "addedwatchtext-short": "صفحه \" $1 \" به فهرست پیگیریهای خود اضافه شده است.",
        "removewatch": "حذف از فهرست پی‌گیری",
-       "removedwatchtext": "صفحهٔ «[[:$1]]» از [[Special:Watchlist|فهرست پی‌گیری‌های شما]] برداشته شد.",
+       "removedwatchtext": "صفحهٔ «[[:$1]]» و صفحهٔ بحث آن از [[Special:Watchlist|فهرست پی‌گیری‌های شما]] برداشته شد.",
        "removedwatchtext-short": "صفحهٔ \"$1\" از فهرست پیگیری‌های شما حذف شده‌است.",
        "watch": "پی‌گیری",
        "watchthispage": "پی‌گیری این صفحه",
        "undeletepagetext": "{{PLURAL:$1|صفحهٔ زیر حدف شده|صفحه‌های زیر حذف شده‌اند}} ولی هنوز در بایگانی {{PLURAL:$1|هست|هستند}} و {{PLURAL:$1|می‌تواند احیا شود|می‌توانند احیا شوند}}.\nاین بایگانی ممکن است هر چند وقت تمیز شود.",
        "undelete-fieldset-title": "احیای نسخه‌ها",
        "undeleteextrahelp": "برای احیای تمام تاریخچهٔ صفحه، همهٔ جعبه‌ها را خالی رها کرده و دکمهٔ '''''{{int:undeletebtn}}''''' را کلیک کنید.\nبرای انجام احیای انتخابی، جعبه‌های متناظر با نسخه‌های مورد نظر برای احیا را علامت زده و دکمهٔ '''''{{int:undeletebtn}}''''' را کلیک کنید.",
-       "undeleterevisions": "$1 Ù\86سخÙ\87 Ø¨Ø§Û\8cگاÙ\86Û\8c {{PLURAL:$1|شده‌است|شده‌اند}}",
+       "undeleterevisions": "$1 Ù\86سخÙ\87 Ø­Ø°Ù\81 {{PLURAL:$1|شده‌است|شده‌اند}}",
        "undeletehistory": "اگر این صفحه را احیا کنید، همهٔ نسخه‌های آن در تاریخچه احیا خواهند شد.\nاگر صفحهٔ جدیدی با نام یکسان از زمان حذف ایجاد شده باشد، نسخه‌های احیاشده در تاریخچهٔ قبلی خواهند آمد.",
        "undeleterevdel": "احیای صفحه‌های در حالتی که باعث حذف شدن بخشی از آخرین نسخهٔ صفحه یا پرونده بشود مقدور نیست.\nدر این حالت شما باید جدیدترین نسخهٔ حذف شده را نیز احیا کنید.",
        "undeletehistorynoadmin": "این مقاله حذف شده‌است.\nدلیل حذف این مقاله به همراه مشخصات کاربرانی که قبل از حذف این صفحه را ویرایش کرده‌اند، در خلاصهٔ زیر آمده‌است.\nمتن واقعی این ویرایش‌های حذف شده فقط در دسترس مدیران است.",
        "spam_reverting": "واگردانی به آخرین نسخه‌ای که پیوندی به $1 ندارد.",
        "spam_blanking": "تمام نسخه‌ها حاوی پیوند به $1 بود، در حال خالی کردن",
        "spam_deleting": "تمام نسخه‌ها حاوی پیوند به $1 بود، در حال حذف",
-       "simpleantispam-label": "بررسی ضدهرزنگاری.\nاین قسمت را پر '''نکنید'''!",
+       "simpleantispam-label": "بررسی ضدهرزنگاری.\nاین قسمت را پر <strong>نکنید</strong>!",
        "pageinfo-title": "اطلاعات در مورد «$1»",
        "pageinfo-not-current": "متأسفانه تهیه اطلاعات ویرایش‌های قدیمی غیرممکن است.",
        "pageinfo-header-basic": "اطلاعات اولیه",
        "logentry-newusers-create2": "حساب کاربری $3 توسط $1 {{GENDER:$2|ایجاد شد}}",
        "logentry-newusers-byemail": "حساب کاربری $3 توسط $1 {{GENDER:$2|ایجاد شد}} و رمز عبور به وسیلهٔ ایمیل ارسال شد",
        "logentry-newusers-autocreate": "حساب $1  به شکل خودکار {{GENDER:$2|ایجاد شد}}",
+       "logentry-protect-move_prot": "$1 تنظیمات محافظت را از $4 به $3 {{GENDER:$2|منتقل کرد}}",
        "logentry-rights-rights": "$1 عضویت $3 را از گروه $4 به $5 {{GENDER:$2|تغییر داد}}",
        "logentry-rights-rights-legacy": "$1 گروه عضویت $3 را {{GENDER:$2|تغییر داد}}",
        "logentry-rights-autopromote": "$1 به طور خودکار از $4 به $5 {{GENDER:$2|ارتقاء داد}}",
index 6b81891..f7c712e 100644 (file)
        "createacct-benefit-body2": "{{PLURAL:$1|sivu|sivua}}",
        "createacct-benefit-body3": "{{PLURAL:$1|viimeikainen muokkaaja|viimeaikaista muokkaajaa}}",
        "badretype": "Syöttämäsi salasanat ovat keskenään erilaiset.",
+       "usernameinprogress": "Tunnuksen luominen tälle käyttäjänimelle on parhaillaan käynnissä.\nOle hyvä ja odota.",
        "userexists": "Pyytämäsi käyttäjänimi on jo käytössä. Valitse toinen käyttäjänimi.",
        "loginerror": "Sisäänkirjautumisvirhe",
        "createacct-error": "Virhe tunnuksen luomisessa",
        "rows": "Rivejä",
        "columns": "Sarakkeita",
        "searchresultshead": "Haku",
-       "stub-threshold": "<a href=\"#\" class=\"stub\">Tynkäsivun</a> osoituskynnys",
+       "stub-threshold": "Tynkälinkkien muotoilun kynnysarvo ($1):",
+       "stub-threshold-sample-link": "näyte",
        "stub-threshold-disabled": "Ei käytössä",
        "recentchangesdays": "Näytettävien päivien määrä tuoreissa&nbsp;muutoksissa",
        "recentchangesdays-max": "Enintään $1 {{PLURAL:$1|päivä|päivää}}",
        "upload-dialog-button-cancel": "Peru",
        "upload-dialog-button-done": "Valmis",
        "upload-dialog-button-save": "Tallenna",
+       "upload-dialog-button-upload": "Tallenna",
        "upload-dialog-label-select-file": "Valitse tiedosto",
        "upload-dialog-label-infoform-title": "Yksityiskohdat",
        "upload-dialog-label-infoform-name": "Nimi",
        "upload-dialog-label-infoform-description": "Kuvaus",
+       "upload-dialog-label-usage-title": "Käyttö",
        "upload-dialog-label-usage-filename": "Tiedostonimi",
        "backend-fail-stream": "Tiedoston $1 virtauttaminen epäonnistui.",
        "backend-fail-backup": "Tiedostoa $1 ei voitu varmuuskopioida.",
        "spam_reverting": "Palautettu viimeisimpään versioon, joka ei sisällä linkkejä kohteeseen $1.",
        "spam_blanking": "Kaikki versiot sisälsivät linkkejä kohteeseen $1. Sivu tyhjennetty.",
        "spam_deleting": "Kaikki versiot sisälsivät linkkejä kohteeseen $1, poistetaan",
-       "simpleantispam-label": "Mainostenvastainen varmistus.\n'''ÄLÄ''' täytä tätä!",
+       "simpleantispam-label": "Mainosroskan tarkastus.\n<strong>Älä</strong> täytä tätä!",
        "pageinfo-title": "Tietoja sivusta $1",
        "pageinfo-not-current": "Valitettavasti ei ole mahdollista antaa tätä tietoa, joka liittyy vanhoihin versioihin.",
        "pageinfo-header-basic": "Perustiedot",
        "logentry-newusers-create2": "$1 {{GENDER:$2|loi}} käyttäjätunnuksen $3",
        "logentry-newusers-byemail": "$1 {{GENDER:$2|loi}} käyttäjätunnuksen $3 ja salasana lähetettiin sähköpostitse",
        "logentry-newusers-autocreate": "Käyttäjätunnus $1 {{GENDER:$2|luotiin}} automaattisesti",
+       "logentry-protect-move_prot": "$1 {{GENDER:$2|siirsi}} suojauksen asetukset sivulta $4 sivulle $3",
        "logentry-rights-rights": "$1 {{GENDER:$2|muutti}} käyttäjän $3 oikeudet ryhmistä $4 ryhmiin $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|muutti}} käyttäjän $3 jäsenyyttä ryhmässä",
        "logentry-rights-autopromote": "Käyttäjän $1 oikeudet {{GENDER:$2|muuttuivat}} automaattisesti ryhmistä $4 ryhmiin $5",
index 315e8f0..04e3623 100644 (file)
        "tog-watchlisthidebots": "Masquer les modifications faites par des robots dans la liste de suivi",
        "tog-watchlisthideminor": "Masquer les modifications mineures dans la liste de suivi",
        "tog-watchlisthideliu": "Masquer les modifications faites par des utilisateurs inscrits dans la liste de suivi",
-       "tog-watchlisthideanons": "Masquer les modifications anonymes dans la liste de suivi",
+       "tog-watchlisthideanons": "Masquer les modifications d'utilisateurs anonymes dans la liste de suivi",
        "tog-watchlisthidepatrolled": "Masquer les modifications surveillées dans la liste de suivi",
        "tog-ccmeonemails": "M'envoyer une copie des courriels que j'envoie aux autres utilisateurs",
        "tog-diffonly": "Ne pas afficher le contenu des pages sous les diffs",
        "tog-showhiddencats": "Afficher les catégories cachées",
-       "tog-norollbackdiff": "Ne pas afficher le diff lors d'une révocation",
+       "tog-norollbackdiff": "Ne pas afficher le diff après avoir révoqué",
        "tog-useeditwarning": "M'avertir quand je quitte une page de modification sans publier les changements",
        "tog-prefershttps": "Toujours utiliser une connexion sécurisée en étant connecté(e)",
        "underline-always": "Toujours",
        "hidden-category-category": "Catégories cachées",
        "category-subcat-count": "Cette catégorie comprend {{PLURAL:$2|la sous-catégorie|$2 sous-catégories, dont {{PLURAL:$1|celle|les $1}}}} ci-dessous.",
        "category-subcat-count-limited": "Cette catégorie comprend {{PLURAL:$1|la sous-catégorie|les $1 sous-catégories}} ci-dessous.",
-       "category-article-count": "Cette catégorie contient {{PLURAL:$2|la page suivante|$2 pages, dont {{PLURAL:$1|celle|les $1}} ci-dessous}}.",
+       "category-article-count": "Cette catégorie contient {{PLURAL:$2|seulement la page suivante|$2 pages, dont {{PLURAL:$1|celle|les $1}} ci-dessous}}.",
        "category-article-count-limited": "{{PLURAL:$1|La page suivante figure|Les $1 pages suivantes figurent}} dans la présente catégorie.",
        "category-file-count": "Cette catégorie contient {{PLURAL:$2|le fichier suivant|$2 fichiers, dont {{PLURAL:$1|celui|les $1}} ci-dessous}}.",
        "category-file-count-limited": "{{PLURAL:$1|Le fichier suivant figure|Les $1 fichiers suivants figurent}} dans la présente catégorie.",
        "toc": "Sommaire",
        "showtoc": "afficher",
        "hidetoc": "masquer",
-       "collapsible-collapse": "masquer",
-       "collapsible-expand": "afficher",
+       "collapsible-collapse": "Replier",
+       "collapsible-expand": "Développer",
        "confirmable-confirm": "Êtes-vous sûr{{GENDER:$1||e}} ?",
        "confirmable-yes": "Oui",
        "confirmable-no": "Non",
        "rows": "Rangées :",
        "columns": "Colonnes :",
        "searchresultshead": "Filtrer avec cette valeur",
-       "stub-threshold": "Limite supérieure pour les <a href=\"#\" class=\"stub\">liens vers les ébauches</a> (octets) :",
+       "stub-threshold": "Seuil pour le formatage des liens bouchons ($1) :",
+       "stub-threshold-sample-link": "exemple",
        "stub-threshold-disabled": "Désactivé",
        "recentchangesdays": "Nombre de jours à afficher dans les modifications récentes :",
        "recentchangesdays-max": "(maximum $1 jour{{PLURAL:$1||s}})",
index 6caa44d..d367e8a 100644 (file)
        "searchprofile-advanced": "Ütjwidjet",
        "searchprofile-articles-tooltip": "Schük uun $1",
        "searchprofile-images-tooltip": "Bilen schük",
-       "searchprofile-everything-tooltip": "Schük aueraal (uk diskusjuunssidjen)",
+       "searchprofile-everything-tooltip": "Schük aueraal (uk diskuschuunsidjen)",
        "searchprofile-advanced-tooltip": "Uun ööder nöömrümer schük",
        "search-result-size": "$1 ({{PLURAL:$2|1 wurd|$2 wurden}})",
        "search-result-category-size": "{{PLURAL:$1|1 sidj|$1 sidjen}} ({{PLURAL:$2|1 onerkategorii|$2 onerkategoriin}}, {{PLURAL:$3|1 datei|$3 datein}})",
        "yourvariant": "Spriak:",
        "prefs-help-variant": "Uun hün skriiwwiis skel a sidjen uunwiset wurd:",
        "yournick": "Nei signatuur:",
-       "prefs-help-signature": "Wees so gud an onerskriiw üüb diskusjuunssidjen mä „<nowiki>~~~~</nowiki>“. Diar komt do dan brükernööm an det klooktidj bi ütj.",
+       "prefs-help-signature": "Wees so gud an onerskriiw üüb diskuschuunsidjen mä „<nowiki>~~~~</nowiki>“. Diar komt do dan brükernööm an det klooktidj bi ütj.",
        "badsig": "Diar stemet wat ei mä't signatuur. Preewe at HTML.",
        "badsiglength": "Din signatuur mut ei muar üs $1 {{PLURAL:$1|tiaken|tiakens}} haa.",
        "yourgender": "Hü wel dü betiakent wurd?",
        "grouppage-suppress": "{{ns:project}}:Oversighter",
        "right-read": "Sidjen lees",
        "right-edit": "Sidjen bewerke",
-       "right-createpage": "Sidjen maage (saner diskusjuunssidjen)",
-       "right-createtalk": "Diskusjuunssidjen maage",
+       "right-createpage": "Sidjen maage (saner diskuschuunsidjen)",
+       "right-createtalk": "Diskuschuunsidjen maage",
        "right-createaccount": "Brükerkonto iinracht",
        "right-minoredit": "Feranrangen üs letj kääntiakne",
        "right-move": "Sidjen fersküüw",
        "right-purge": "Sidjen-cache leesag maage saner efterfraagin",
        "right-autoconfirmed": "Ei troch IP-limits beskäären",
        "right-bot": "Automatisiaret bewerke",
-       "right-nominornewtalk": "Letj feranrangen üüb diskusjuunssidjen wurd ei üs „nei noorachten“ uunwiset.",
+       "right-nominornewtalk": "Letj feranrangen üüb diskuschuunsidjen wurd ei üs „nei bööd“ uunwiset.",
        "right-apihighlimits": "Huuger taalen für API-uunfraagen brük",
        "right-writeapi": "Write-API brük",
        "right-delete": "Sidjen strik",
        "action-read": "jüdeer sid leese",
        "action-edit": "detdiar sidj tu bewerkin",
        "action-createpage": "nei sidjen tu maagin",
-       "action-createtalk": "diskusjuunssidjen maage",
+       "action-createtalk": "diskuschuunsidjen 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",
        "statistics-header-hooks": "Ööder statistiken",
        "statistics-articles": "Artiikler",
        "statistics-pages": "Sidjen",
-       "statistics-pages-desc": "Aal a sidjen uun det wiki, mä diskusjuunssidjen, widjerfeerangen asw.",
+       "statistics-pages-desc": "Aal a sidjen uun det wiki, mä diskuschuunsidjen, widjerfeerangen ...",
        "statistics-files": "Huuchschüürd datein",
        "statistics-edits": "Feranrangen, sant {{SITENAME}} maaget wurden as",
        "statistics-edits-average": "Feranrangen per sidj uun't madel",
        "move-page-legend": "Sidj fersküüw",
        "movepagetext": "Mä detdiar formulaar könst dü en sidj mä aal sin werjuunen amnääm.\nDi ual tiitel woort üüb di nei widjerfeerd.\nDü könst widjerfeerangen, diar üüb di ual tiitel wise, automaatisk üüb di nei tiitel widjerfeer läät.\nWan dü det oober ei dääst, paase üüb, dat dü aal a [[Special:DoubleRedirects|dobelt]] of [[Special:BrokenRedirects|breegen]] widjerfeerangen noch ans efterlukest.\nBluas dü könst diarför surge, dat ferwisangen widjerhen rocht werke.\n\nDet sidj woort '''ei''' fersköwen, wan't al en sidj mä di nei nööm jaft. Det loket bluas do, wan di nei nööm salew en widjerfeerang as. Det ment, dat dü det amnäämen turagsaat könst, wan dü niks ferkiard maaget heest. Dü könst oober nian sidj, diar't al jaft, auerskriiw.\n\n'''Paase üüb!'''\nDet fersküüwen hää widjloftag fulgen för ööder sidjen. Dü skulst begreben haa, wat dü diar maage wel.",
        "movepagetext-noredirectfixer": "Mä detdiar formulaar könst dü en sidj mä aal sin werjuunen amnääm.\nDi ual tiitel woort üüb di nei widjerfeerd.\nDü könst widjerfeerangen, diar üüb di ual tiitel wise, automaatisk üüb di nei tiitel widjer feer läät.\nWan dü det oober ei dääst, paase üüb, dat dü aal a [[Special:DoubleRedirects|dobelt]] of [[Special:BrokenRedirects|breegen]] widjerfeerangen noch ans efterlukest.\nBluas dü könst diarför surge, dat ferwisangen widjerhen rocht werke.\n\nDet sidj woort '''ei''' fersköwen, wan't al en sidj mä di nei nööm jaft. Det loket bluas do, wan di nei nööm salew en widjerfeerang as. Det ment, dat dü det amnäämen turagsaat könst, wan dü niks ferkiard maaget heest. Dü könst oober nian sidj, diar't al jaft, auerskriiw.\n\n'''Paase üüb!'''\nDet fersküüwen hää widjloftag fulgen för ööder sidjen. Dü skulst begreben haa, wat dü diar maage wel.",
-       "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.",
+       "movepagetalktext": "Uk det diskuschuunsidj woort fersköwen, wan det diar as, <strong>oober ei, wan:</strong>\n*Diar al en diskuschuunsidj mä didiar nööm as, of\n*Dü detdiar mögelkhaid ütjslotst.\n\nUun didiar faal skel dü a diskuschuunsidjen faan hun tuupfeer.",
        "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.",
        "tags-deactivate-reason": "Grünj:",
        "tags-deactivate-not-allowed": "Dü könst det markiarang \"$1\" ei de-aktiwiare.",
        "tags-deactivate-submit": "De-aktiwiare",
+       "tags-edit-title": "Markiarangen bewerke",
+       "tags-edit-manage-link": "Markiarangen ferwalte",
+       "tags-edit-existing-tags": "Markiarangen:",
+       "tags-edit-existing-tags-none": "\"Nianen\"",
+       "tags-edit-new-tags": "Nei markiarangen:",
+       "tags-edit-add": "Jodiar markiarangen diartusaat:",
+       "tags-edit-remove": "Jodiar markiarangen wechnem:",
+       "tags-edit-remove-all-tags": "(aal a markiarangen wechnem)",
+       "tags-edit-chosen-placeholder": "Enkelt markiarangen ütjschük",
+       "tags-edit-chosen-no-results": "Sok markiarangen ei fünjen",
+       "tags-edit-reason": "Grünj:",
+       "tags-edit-nooldid-title": "Nian werjuun uunden",
        "comparepages": "Sidjen ferglik",
        "compare-page1": "Sidj 1",
        "compare-page2": "Sidj 2",
        "htmlform-cloner-create": "Muar diartudu",
        "htmlform-cloner-delete": "Wechnem",
        "htmlform-cloner-required": "Dü skel tumanst ään wäärs uundu.",
+       "htmlform-title-not-exists": "[[:$1]] jaft at ei.",
+       "htmlform-user-not-exists": "<strong>$1</strong> jaft at ei.",
+       "htmlform-user-not-valid": "<strong>$1</strong> as nään tuläät brükernööm",
        "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",
        "special-characters-group-khmer": "Khmer",
        "special-characters-title-endash": "seenkstreg",
        "special-characters-title-emdash": "speegelstreg",
-       "special-characters-title-minus": "minus tiaken"
+       "special-characters-title-minus": "minus tiaken",
+       "mw-widgets-dateinput-no-date": "Nian dootem ütjsoocht",
+       "mw-widgets-titleinput-description-new-page": "sidj jaft at noch ei",
+       "mw-widgets-titleinput-description-redirect": "widjerfeerang tu $1"
 }
index c37746b..5757455 100644 (file)
        "blocked-notice-logextract": "Este usuario está bloqueado.\nVelaquí está a última entrada do rexistro de bloqueos, por se quere consultala:",
        "clearyourcache": "'''Nota:''' Despois de gardar, cómpre limpar a memoria caché do seu navegador para ver os cambios.\n* '''Firefox/Safari:''' Prema ''Maiúsculas'' á vez que en ''Recargar'', ou prema en ''Ctrl-F5'' ou ''Ctrl-R'' (''⌘-R'' nos Mac)\n* '''Google Chrome:''' Prema en ''Ctrl-Maiús-R'' (''⌘-Maiús-R'' nos Mac)\n* '''Internet Explorer:''' Prema ''Ctrl'' ao tempo que fai clic en ''Refrescar'', ou prema en ''Ctrl-F5''\n* '''Opera:''' Limpe a súa memoria caché en ''Ferramentas → Preferencias''",
        "usercssyoucanpreview": "'''Nota:''' Use o botón \"{{int:showpreview}}\" para verificar o novo CSS antes de gardalo.",
-       "userjsyoucanpreview": "'''Nota:''' Use o botón \"{{int:showpreview}}\" para verificar o novo JS antes de gardalo.",
+       "userjsyoucanpreview": "<strong>Nota:</strong> Use o botón \"{{int:showpreview}}\" para verificar o novo JavaScript antes de gardalo.",
        "usercsspreview": "'''Lembre que só está vendo a vista previa do seu CSS de usuario.'''\n'''Este aínda non foi gardado!'''",
        "userjspreview": "'''Lembre que só está probando/previsualizando o seu JavaScript de usuario.'''\n'''Este aínda non foi gardado!'''",
        "sitecsspreview": "'''Lembre que só está vendo a vista previa deste CSS.'''\n'''Este aínda non foi gardado!'''",
        "sitejspreview": "'''Lembre que só está vendo a vista previa deste código JavaScript.'''\n'''Este aínda non foi gardado!'''",
-       "userinvalidcssjstitle": "'''Aviso:''' Non hai ningunha aparencia chamada \"$1\".\nLembre que as páxinas .css e .js personalizadas utilizan un título en minúsculas, como por exemplo \"{{ns:user}}:Foo/vector.css\" no canto de \"{{ns:user}}:Foo/Vector.css\".",
+       "userinvalidcssjstitle": "<strong>Aviso:</strong> Non hai ningunha aparencia chamada \"$1\".\nLembre que as páxinas .css e .js personalizadas utilizan un título en minúsculas, como por exemplo \"{{ns:user}}:Exemplo/vector.css\" no canto de \"{{ns:user}}:Exemplo/Vector.css\".",
        "updated": "(Actualizado)",
        "note": "'''Nota:'''",
        "previewnote": "'''Lembre que esta é só unha vista previa e que aínda non gardou os seus cambios!'''",
        "rows": "Filas:",
        "columns": "Columnas:",
        "searchresultshead": "Procurar",
-       "stub-threshold": "Límite superior para o formato de <a href=\"#\" class=\"stub\">ligazóns de bosquexo</a> (bytes):",
+       "stub-threshold": "Límite superior para o formato de ligazóns de bosquexo($1):",
+       "stub-threshold-sample-link": "exemplo",
        "stub-threshold-disabled": "Desactivado",
        "recentchangesdays": "Número de días a mostrar nos cambios recentes:",
        "recentchangesdays-max": "Máximo: $1 {{PLURAL:$1|día|días}}",
        "default": "predeterminado",
        "prefs-files": "Ficheiros",
        "prefs-custom-css": "CSS personalizado",
-       "prefs-custom-js": "JS personalizado",
-       "prefs-common-css-js": "CSS/JS compartido por todas as aparencias:",
+       "prefs-custom-js": "JavaScript personalizado",
+       "prefs-common-css-js": "CSS/JavaScript compartido por todas as aparencias:",
        "prefs-reset-intro": "Pode usar esta páxina para restablecer as súas preferencias ás que veñen dadas por defecto.\nEste cambio non se poderá desfacer.",
        "prefs-emailconfirm-label": "Confirmación do correo:",
        "youremail": "Correo electrónico:",
        "noindex-category-desc": "A páxina non está indexada polos bots porque contén a palabra máxica <code><nowiki>__NOINDEX__</nowiki></code> e está nun espazo de nomes no que esa marca está permitida.",
        "index-category-desc": "A páxina contén a palabra máxica <code><nowiki>__INDEX__</nowiki></code> (e está nun espazo de nomes no que esa marca está permitida) e, polo tanto, será indexada polos bots cando non debera selo normalmente.",
        "post-expand-template-inclusion-category-desc": "O tamaño da páxina é maior que <code>$wgMaxArticleSize</code> despois de expandir todos os modelos; algúns modelos non se expandiron.",
-       "post-expand-template-argument-category-desc": "A páxina é maior que <code>$wgMaxArticleSize</code> despois de expandir o argumento dun modelo (algo entre chaves triples, como <code>{{{Proba}}}</code>).",
+       "post-expand-template-argument-category-desc": "A páxina é maior que <code>$wgMaxArticleSize</code> despois de expandir o argumento dun modelo (algo entre chaves triples, como <code>{{{Exemplo}}}</code>).",
        "expensive-parserfunction-category-desc": "A páxina utiliza demasiadas funcións analíticas custosas (como <code>#ifexist</code>). Consulte [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
        "broken-file-category-desc": "A páxina contén unha ligazón de ficheiro rota (unha ligazón para incorporar un ficheiro que non existe).",
        "hidden-category-category-desc": "A categoría contén a palabra máxica <code><nowiki>__HIDDENCAT__</nowiki></code>, que impide que se mostre por defecto na caixa de categorías das páxinas.",
        "json-warn-trailing-comma": "{{PLURAL:$1|Eliminouse $1 coma final|Elimináronse $1 comas finais}} do JSON.",
        "json-error-unknown": "Houbo un problema co JSON. Erro: $1",
        "json-error-depth": "Superouse o número máximo de ficheiros apartados.",
-       "json-error-state-mismatch": "O JSON non é válido.",
+       "json-error-state-mismatch": "O JSON non é válido ou ten un formato incorrecto",
        "json-error-ctrl-char": "Produciuse un erro de carácter de control, trátase probablemente dun problema de codificación.",
        "json-error-syntax": "Erro de sintaxe",
        "json-error-utf8": "Hai caracteres UTF-8 incorrectos, trátase probablemente dun problema de codificación.",
index 279fab5..54a2975 100644 (file)
        "userlogin-signwithsecure": "सुरक्षित कनेक्शन वापर",
        "yourdomainname": "तुमचो डोमेन:",
        "password-change-forbidden": "ह्या विकीचेर गुपीत उतरां बदलूंक शकनात",
-       "login": "सतà¥\8dरारà¤\82भ à¤\95रात",
+       "login": "सत्ररंभ करात",
        "nav-login-createaccount": "सत्रारंब/खातें उगडात",
-       "userlogin": "सतà¥\8dरारà¤\82भ à¤\95रात/à¤\96ातà¥\87à¤\82 à¤\89à¤\97डात",
+       "userlogin": "सत्ररंभ करात/खातें उगडात",
        "userloginnocreate": "लॉग इन",
        "logout": "सत्र शेवट",
        "userlogout": "सत्र शेवट",
        "gotaccountlink": "लॉग इन",
        "userlogin-resetlink": "तुजो लॉग इन तपशील विसरलें?",
        "userlogin-resetpassword-link": "गुपितउतर विसरला?",
-       "userlogin-helplink2": "सतà¥\8dरारà¤\82भ à¤\95रपाà¤\95 à¤\86दार à¤\95र",
+       "userlogin-helplink2": "सत्ररंभ करपाक आदार कर",
        "userlogin-createanother": "दुसरें खातें तयार कर",
        "createacct-emailrequired": "ईमेल नामो",
        "createacct-emailoptional": "ईमेल पत्तो (सोकती ना)",
        "login-abort-generic": "तुमचें लॉग इन अपेशी थारलां - निश्फलीत",
        "login-migrated-generic": "तुमचें खातें स्थलांतरीत जालां आनी तुजें वापरप्याचें नांव ह्या विकीचेर उपस्थीत ना.",
        "loginlanguagelabel": "भास:$1",
-       "pt-login": "सतà¥\8dरारà¤\82भ à¤\95रात",
-       "pt-login-button": "सतà¥\8dरारà¤\82भ à¤\95रात",
+       "pt-login": "सतà¥\8dररà¤\82भ",
+       "pt-login-button": "सत्ररंभ करात",
        "pt-createaccount": "खातें रोचात",
        "pt-userlogout": "सत्र शेवट",
        "changepassword": "गुपीत उतर",
        "preview": "पूर्वनियाळ",
        "showpreview": "पूर्वनियाळ दाखय",
        "showdiff": "बदल दाखयात",
-       "anoneditwarning": "'''शिà¤\9fà¤\95ावणà¥\80:''' à¤¤à¥\82à¤\82वà¥\87à¤\82 à¤¸à¤¤à¥\8dरारà¤\82भ à¤\95रà¥\82à¤\82à¤\95 à¤¨à¤¾.\nतà¥\81à¤\9cà¥\8b IP à¤ªà¤¤à¥\8dतà¥\8b à¤¹à¥\8dया à¤ªà¤¾à¤¨à¤¾à¤\9aà¥\8dया à¤¸à¤\82पादन à¤\87तिहासाà¤\82त à¤¨à¥\8bà¤\82द à¤\9cातलà¥\8b.à¤\9cर à¤¤à¥\81मà¥\80 <strong>[$1 à¤¸à¤¤à¥\8dरारंभ]</strong> करता वा <strong>[$2 खातें उगडटा]</strong> जाल्यार हेर सुविधांसयत तुमच्या संपादनाचें श्रेय तुमच्या सदस्य नांवाचेर दितलें.",
+       "anoneditwarning": "'''शिà¤\9fà¤\95ावणà¥\80:''' à¤¤à¥\82à¤\82वà¥\87à¤\82 à¤¸à¤¤à¥\8dररà¤\82भ à¤\95रà¥\82à¤\82à¤\95 à¤¨à¤¾.\nतà¥\81à¤\9cà¥\8b IP à¤ªà¤¤à¥\8dतà¥\8b à¤¹à¥\8dया à¤ªà¤¾à¤¨à¤¾à¤\9aà¥\8dया à¤¸à¤\82पादन à¤\87तिहासाà¤\82त à¤¨à¥\8bà¤\82द à¤\9cातलà¥\8b.à¤\9cर à¤¤à¥\81मà¥\80 <strong>[$1 à¤¸à¤¤à¥\8dररंभ]</strong> करता वा <strong>[$2 खातें उगडटा]</strong> जाल्यार हेर सुविधांसयत तुमच्या संपादनाचें श्रेय तुमच्या सदस्य नांवाचेर दितलें.",
        "missingcommenttext": "उपकार करून तुमच्यो शिरो सकयल घाल.",
        "blockedtitle": "वापरप्याक बंद केला",
        "blockednoreason": "कांयच कारण दिवंक ना",
        "loginreqtitle": "लॉग इन जाय",
-       "loginreqlink": "सतà¥\8dरारà¤\82भ à¤\95रात",
+       "loginreqlink": "सत्ररंभ करात",
        "accmailtitle": "गुपीत उतर धाडलां",
        "newarticle": "(नवें)",
        "newarticletext": "जें पान अजून अस्तित्वांत ना अशा पानाचे जोडणे फाटल्यान तुमी आसात. पान रचपाक सकयले चौकटींत टायप करपाक सुरु करात (चड म्हायती खातीर [$1 मजत पान] पळेयात) जर ह्या पानार तुमी चुकून पावल्यात तर ब्रावजराचो बॅक (<strong>फटीं</strong>) हो बटन दामात",
        "tooltip-pt-preferences": "तुमची पसंती",
        "tooltip-pt-watchlist": "तुमी बदल करपा खातीर देखरेख करतात त्या पानांची वळेरी",
        "tooltip-pt-mycontris": "तुमच्या योगदानांची वळेरी",
-       "tooltip-pt-login": "सतà¥\8dरारà¤\82भ à¤\95रप à¤¬à¤°à¥\87à¤\82, à¤ªà¥\82ण à¤¤à¤¶à¥\80 à¤¸à¤\95à¥\8dतà¥\80 à¤¨à¤¾.",
+       "tooltip-pt-login": "सत्ररंभ करप बरें, पूण तशी सक्ती ना.",
        "tooltip-pt-logout": "सत्र शेवट",
-       "tooltip-pt-createaccount": "तà¥\81मà¥\80 à¤\96ातà¥\87à¤\82 à¤\89à¤\97डà¥\82न à¤¸à¤¤à¥\8dरारà¤\82भ à¤\95रà¤\9aà¥\87à¤\82 à¤\85शà¥\87à¤\82 à¤¸à¥\81à¤\9aयतात, à¤ªà¥\82ण à¤¤à¥\87à¤\82 à¤¸à¤\95à¥\8dतà¥\80à¤\9aà¥\87 à¤¨à¤¾.",
+       "tooltip-pt-createaccount": "तुमी खातें उगडून सत्ररंभ करचें अशें सुचयतात, पूण तें सक्तीचे ना.",
        "tooltip-ca-talk": "मजकूराच्या पाना संबंदान भासाभास",
        "tooltip-ca-edit": "हें पान बदल",
        "tooltip-ca-addsection": "नवीं विभाग सुरु करात",
index 3857a53..2c90716 100644 (file)
        "login-abort-generic": "Tujem sotrorombh opexi tharlam - Nixfolit",
        "login-migrated-generic": "Tujem khatem stholontrit zalam ani vapurpeachem nanv hea wikicher anink upostit na.",
        "loginlanguagelabel": "Bhas: $1",
-       "pt-login": "Sotrorombh kor",
+       "pt-login": "Sotrorombh",
        "pt-login-button": "Sotrorombh kor",
        "pt-createaccount": "Khatem roch",
        "pt-userlogout": "Sotr xevott",
index c7006d3..64ebe0b 100644 (file)
@@ -45,8 +45,8 @@
        "tog-enotifminoredits": "Au bi chlaine Änderige an Syte oder Dateie ne Mail schicke",
        "tog-enotifrevealaddr": "Dyni E-Mail-Adrässe wird i Benachrichtigungsmails zeigt",
        "tog-shownumberswatching": "Aazahl Benutzer aazeige, wo ne Syten am Aaluege sy (i den Artikelsyte, i de «letschten Änderigen» und i der Beobachtigslischte)",
-       "tog-oldsig": "Vorschau vu dr Unterschrift:",
-       "tog-fancysig": "Signatur as Wikitext behandle (ohni automatischi Vergleichig)",
+       "tog-oldsig": "Aktuelli Unterschrift:",
+       "tog-fancysig": "Unterschrift as Wikitext behandle (ohni automatischi Verlinkig)",
        "tog-uselivepreview": "Vorschau sofort aazeige",
        "tog-forceeditsummary": "Sag mer s, wänn i s Zämmefassigsfeld läär loss",
        "tog-watchlisthideown": "Eigeni Änderige uf d Beobachtigslischt usblände",
        "savearticle": "Syte spychere",
        "preview": "Vorschou",
        "showpreview": "Vorschau aaluege",
-       "showdiff": "Zeig Änderige",
+       "showdiff": "Änderige zeige",
        "blankarticle": "<strong>Warnig:</strong> D Syte, wu Du aalaisch, isch läär.\nWänn Du nomol uf „{{int:savearticle}}“ klicksch, wird d Syte ohni Inhalt aaglait.",
        "anoneditwarning": "<strong>Warnig:</strong> Du bisch nit aagmäldet. Dy IP-Adräss wird effetli sichtbar, wänn Du Bearbeitige machsch. Wänn di <strong>[$1 aamälde duesch]</strong> oder <strong>[$2 e Benutzerkonto aalaisch]</strong>, wäre Bearbeitige zämme mit andere Bytreg Dym Nenutzername zuegordnet.",
        "anonpreviewwarning": "''Du bisch nit aagmäldet. Bim Spychere wird Dyy IP-Adräss yydrait in d Versionsgschicht vu däre Syte.''",
        "missingsummary": "'''Obacht:''' Du hesch kei Zämefassig aagee. Wenn du nomol uf Spychere drucksch, wird d Änderung ohni gspychert.",
+       "selfredirect": "<strong>Obacht:</strong> Du bisch die Syten uf sech sälber am Wyterleite.\nVilech hesch für d Wyterleitig ds falsche Zil y’gä, oder vilech bisch di falschi Syten am bearbeite.\nWe d’ nomal «{{int:savearticle}}» kliksch, de wird d Wyterleitig einewäg agleit.",
        "missingcommenttext": "Bitte gib Dyy Kommentar unte yy.",
        "missingcommentheader": "'''ACHTIG:''' Du hesch kei Iberschrift im Fäld „Betreff:“ yygee. Wänn nomol uf „{{int:savearticle}}“ drucksch, wird Dyyni Bearbeitig ohni Iberschrift gspicheret.",
        "summary-preview": "Vorschou vor Zämefassig:",
        "subject-preview": "Vorschau vum Betreff:",
+       "previewerrortext": "Es het e Fähler ’gä bim Versuech, e Vorschou vo dynen Änderige z zeige.",
        "blockedtitle": "Benutzer isch gsperrt.",
        "blockedtext": "'''Dyy Benutzername oder Dyyni IP-Adräss isch gsperrt wore.'''\n\nD Sperrig isch vu $1 uusgfiert wore.\nAs Grund isch ''$2'' aagee wore.\n\n* Aafang vu dr Sperrig: $8\n* Ändi vu dr Sperrig: $6\n* Sperrig betrifft: $7\n\nDu chasch $1 oder e andere [[{{MediaWiki:Grouppage-sysop}}|Ammann]] kontaktiere go dischpetiere iber die Sperrig.\nDu chasch d „E-Mail an dää Benutzer“-Funktion nit bruche, solang kei giltigi E-Mail-Adräss in Dyyne [[Special:Preferences|Benutzerkonto-Yystellige]] yydrait isch, oder solang die Funktion fir Di gsperrt isch.\nDyy aktuälli IP-Adräss isch $3, un d Sperr-ID isch #$5.\nBitte fieg in jedi Aafrog, wu du stellsch, alli Information yy.",
        "autoblockedtext": "Dyyni IP-Adräss isch automatisch gsperrt wore, wel si vu me andere Benutzer brucht woren isch, wu dur $1 gsperrt woren isch.\nAs Grund isch aagee wore:\n\n:''$2''\n\n* Aafang vu dr Sperri: $8\n* Änd vu dr Sperri: $6\n* Sperre betrifft: $7\n\nDu chasch $1 oder ein vu dr andre [[{{MediaWiki:Grouppage-sysop}}|Ammanne]] kontaktiere, zum iber die Sperri z diskutiere.\n\nDu chasch d „E-Mail an dää Benutzer“-Funktion nit nutze, solange kei giltigi E-Mail-Adräss in Dyne  [[Special:Preferences|Benutzerkonto-Yystellige]] yytrait isch oder die Funktion fir di gsperrt woren isch.\n\nDyy aktuäll IP-Adräss isch $3, un d Sperr-ID isch $5.\nBitte fieg alli Informatione jedere Aafrog zue, wu Du stellsch.",
        "yourdiff": "Unterschid",
        "copyrightwarning": "'''Bitte <big>kopier kener Internetsyte</big>, wo nid dyner eigete sy, bruuch <big>kener urhäberrächtlech gschützte Wärch</big> ohni Erloubnis vor Copyright-Inhaberschaft!'''<br />\nHiemit gisch du zue, das du dä Tekscht '''sälber gschribe''' hesch, das der Tekscht Allgmeinguet ('''public domain''') isch, oder das der '''Copyright-Inhaberschaft''' iri '''Zuestimmig''' het 'gä. Falls dä Tekscht scho nöumen anders isch veröffentlecht worde, de schryb das bitte uf d Diskussionssyte.\n<i>Bis dir bewusst, dass alli {{SITENAME}}-Byträg outomatisch under der „$2“ stöh (für Details vgl. $1). We du nid wosch, das anderi dy Bytrag chöu veränderen u wyterverbreite, de drück nid uf „Syte spychere“.</i>",
        "copyrightwarning2": "Dängge Si dra, dass alli Änderige {{GRAMMAR:dativ {{SITENAME}}}} vo andere Benutzer wider gänderet oder glöscht chönne wärde. Wenn Si nit wänn, dass ander Lüt an Ihrem Tekscht ummedoktere denn schicke Si ihn jetz nit ab.<br />\nSi verspräche uns usserdäm, dass Si des alles selber gschribe oder vo nere Quälle kopiert hen, wo Public Domain odr sunscht frei isch (lueg $1 für Details).\n'''SETZE SI DO OHNI ERLAUBNIS KEINI URHEBERRÄCHTLICH GSCHÜTZTI WÄRK INE!'''",
+       "editpage-cannot-use-custom-model": "Ds Inhaltsmodäll vo dere Syte lat sech nid la ändere.",
        "longpageerror": "'''Fähler: Dä Täxt, wu Du spychere wit, isch {{PLURAL:$1|ei Kilobyte|$1 Kilobyte}} groß. Des isch greßer wie s erlaubt Maximum vu {{PLURAL:$2|eim Kilobyte|$2 Kilobyte}}.''' S Spychere isch nit megli.",
        "readonlywarning": "'''Achtig: D Datebank isch fir Wartigsarbete gesperrt. Wäge däm chenne Dyyni Änderige im Momänt nit gspycheret wäre.\nSichere de Täxt bitte lokal uf Dyynem Computer un versuech speter nomol, d Änderige z ibertrage.'''\n\nGrund fir d Sperri: $1",
        "protectedpagewarning": "'''WARNIG: Die Syten isch gsperrt wore, ass si nume Benutzer mit Administrator-Rächt chenne verändere.'''\nAs Referänz wird do dr letscht Logbuechyytrag aagee:",
        "semiprotectedpagewarning": "'''Obacht''': Die Syte isch halb gsperrt, ass si nume vu aagmäldete Benutzer cha bearbeitet wäre.\nAs Referänz wird do dr letscht Logbuechyytrag aagee:",
-       "cascadeprotectedwarning": "'''ACHTIG: Die Syte isch gsperrt. Wäg däm cha si nume vu Benutzer mit Ammannerächt bearbeitet wäre. Si isch in die {{PLURAL:$1|Syte|Syte}} yybunde, wu mit ere Kaskadesperroption gschitzt {{PLURAL:$1|isch|sin}}:'''",
+       "cascadeprotectedwarning": "<strong>Obacht:</strong> Die Syten isch gschützt. Nume Lüt mit Administrationsrächt (Ammannen oder -froue) chöü sen ändere. Der Grund derfür isch, das si i di {{PLURAL:$1|folgendi|folgende}} Syten isch y’bunde, wo mit ere Kaskadesperroption gschützt {{PLURAL:$1|isch|sy}}:",
        "titleprotectedwarning": "'''Obacht: S Aalege vu däre Syte isch gsperrt. Wäg däm bruucht mer [[Special:ListGroupRights|bstimmti Rächt]] go si aalege.'''\nAs Referänz wird do dr letscht Logbuechyytrag aagee:",
        "templatesused": "{{PLURAL:$1|Vorlag, wu in däm Artikel brucht wird|Vorlage, wu in däm Artikel brucht wäre}}:",
        "templatesusedpreview": "{{PLURAL:$1|Vorlag, wu in däre Vorschau brucht wird|Vorlage, wu in däre Vorschau brucht wäre}}:",
        "content-model-text": "Klartext",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
+       "content-json-empty-object": "Läärs Objekt",
+       "content-json-empty-array": "Läären Array",
+       "duplicate-args-warning": "<strong>Obacht:</strong> D Syte [[:$1]] rüefft [[:$2]] ab. Im Abrueff het der Parameter «$3» meh weder ei Wärt. Nume der letst Wärt chunt zum Zug.",
        "duplicate-args-category": "Syte, wu doppleti Argumänt in Vorlagenufruef verwände",
        "duplicate-args-category-desc": "Uf dr Syte het s Vorlagenufruef, wu Duplikat vu Argumänt verwände, wie <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> oder <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "expensive-parserfunction-warning": "Achtig: In däre Syte het s z vyyl Ufruef vu ufwändige Parserfunktione.\n\nS {{PLURAL:$2|derf nid meh wie ein Ufruef|derfe nid meh wie $1 Ufruef}} gee.",
        "history-feed-description": "Versionsgschicht fir die Syte in {{SITENAME}}",
        "history-feed-item-nocomment": "$1 um $2",
        "history-feed-empty": "Di aagforderet Syte git s nid. Villicht isch si glescht oder verschobe wore. [[Special:Search|Suech]] {{SITENAME}} fir neji Syte, wu passe.",
+       "history-edit-tags": "Markierige vo usgwählte Versionen ändere",
        "rev-deleted-comment": "(Zämmefassig uusegnuh)",
        "rev-deleted-user": "(Benutzername uusegnuh)",
-       "rev-deleted-event": "(Logbuechaktion uusegnuh)",
+       "rev-deleted-event": "(Logbuechdetails uusegnuh)",
        "rev-deleted-user-contribs": "[Benutzername oder IP-Adräss uusegnuu - Bearbeitig in dr Byytragslischt versteckt]",
        "rev-deleted-text-permission": "Die Version isch '''glescht''' wore.\nInformation zue dr Leschig un e Begrindig het s im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Lesch-Logbuech].",
        "rev-suppressed-text-permission": "Die Version isch <strong>unterdruckt</strong> wore.\nEinzelheite het s im [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Oversight-Logbuech].",
        "rev-showdeleted": "zeig",
        "revisiondelete": "Versione lesche/widerherstelle",
        "revdelete-nooldid-title": "Kei Version aagee",
-       "revdelete-nooldid-text": "Du hesch entwäder kei Version aagee, wu die Aktion soll usgfiert wäre, die usgwehlt Version git s nid oder Du versuechsch di aktuäll Version z verstecke.",
+       "revdelete-nooldid-text": "Entweder hesch kei Zilversion usgwählt, für die Funktion drann uszfüere, oder di usgwählti Zilversion git’s nid oder du probiersch, di aktuelli Version z verstecke.",
        "revdelete-no-file": "D Datei, wu Du aagee hesch, git s nit.",
        "revdelete-show-file-confirm": "Bisch sicher, ass Du di glescht Version vu dr Datei „<nowiki>$1</nowiki>“ vum $2 am $3 witt aaluege?",
        "revdelete-show-file-submit": "Jo",
        "revdelete-legend": "Setze vu dr Sichtbarkeits-Yyschränkige",
        "revdelete-hide-text": "Täxt vu dr Version versteckle",
        "revdelete-hide-image": "Bildinhalt versteckle",
-       "revdelete-hide-name": "Logbuech-Aktion versteckle",
+       "revdelete-hide-name": "Zil u Parameter verstecke",
        "revdelete-hide-comment": "Bearbeitigskommentar versteckle",
        "revdelete-hide-user": "Benutzername/d IP vum Bearbeiter versteckle",
        "revdelete-hide-restricted": "Date vu Ammanne glyych unterdrucke wie vu andere",
        "mergehistory-empty": "S chenne kei Versione zämegfierd wäre.",
        "mergehistory-success": "{{PLURAL:$3|1 Version|$3 Versione}} vu „[[:$1]]“ isch no „[[:$2]]“ zämegfierd.",
        "mergehistory-fail": "Zämefierig vu dr Versione nid megli, bitte prief d Syte un d Zytaagobe.",
+       "mergehistory-fail-toobig": "D Versionsgschichte lö sech nid la zämefüere, wil me meh weder ds Limit {{PLURAL:$1|eire Version|$1 Versione}} müesst verschiebe.",
        "mergehistory-no-source": "Ursprungssyte „$1“ isch nit vorhande.",
        "mergehistory-no-destination": "Ziilsyte „$1“ isch nit vorhande.",
        "mergehistory-invalid-source": "Ursprungssyte muess e giltige Sytename syy.",
        "editundo": "rückgängig",
        "diff-empty": "(kei Unterschid)",
        "diff-multi-sameuser": "({{PLURAL:$1|E Version vum nämlige Benutzer, wu derzwische lyt, wird|$1 Versione vum nämlige Benutzer, wu derzwische lige, wäre}} nit aazeigt)",
+       "diff-multi-otherusers": "({{PLURAL:$1|Ei Version|$1 Versione}} derzwüsche vo {{PLURAL:$2|öpper anderem|$2 andernen}} isch nid azeigt)",
        "diff-multi-manyusers": "({{PLURAL:$1|Ei Version|$1 Versione}} vu meh {{PLURAL:$2|eim Benutzer|$2 Benutzer}}, {{PLURAL:$1|wu derzwische lyt un nit aazeigt wird|wu derzwische lige un nit aazeigt wäre}})",
        "difference-missing-revision": "{{PLURAL:$2|Ei Version|$2 Versione}} vui däre Unterschidsaazeig ($1) {{PLURAL:$2|isch|sin}} nit gfunde wore.\n\nDää Fähler chunnt normalerwyys dur e veraltete Link zue dr Versionsgschicht vun ere Syte, wu in dr Zwischezyt glescht woren isch.\nEinzelheite chasch im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Lesch-Logbuech] bschaue.",
        "searchresults": "Suech-Ergäbnis",
        "notextmatches": "Kei Iberyystimmige mit Inhalte",
        "prevn": "{{PLURAL:$1|vorige|vorigi $1}}",
        "nextn": "{{PLURAL:$1|nächschte|nächschti $1}}",
+       "prev-page": "vorderi Syte",
+       "next-page": "nächsti Syte",
        "prevn-title": "{{PLURAL:$1|Vorig Ergebnis|Vorigi $1 Ergebnis}}",
        "nextn-title": "{{PLURAL:$1|Negscht Ergebnis|Negschti $1 Ergebnis}}",
        "shown-title": "Zeig $1 {{PLURAL:$1|Ergebnis|Ergebnis}} pro Syte",
        "search-result-category-size": "{{PLURAL:$1|1 Kategorii|$1 Kategorie}} ({{PLURAL:$2|1 Unterkategorii|$2 Unterkategorie}}, {{PLURAL:$3|1 Datei|$3 Dateie}})",
        "search-redirect": "(Wyterleitig $1)",
        "search-section": "(Abschnitt $1)",
+       "search-category": "(Kategorie $1)",
+       "search-file-match": "(Resultat us em Inhalt vo Dateie)",
        "search-suggest": "Hesch „$1“ gmeint?",
+       "search-rewritten": "Resultat für $1 sy azeigt. Würklech nach $2 sueche.",
        "search-interwiki-caption": "Schweschterprojäkt",
-       "search-interwiki-default": "$1 Ergebniss:",
+       "search-interwiki-default": "Ergäbnis us $1:",
        "search-interwiki-more": "(meh)",
        "search-relatedarticle": "Verwandti",
        "searchrelated": "verwandt",
        "searchall": "alli",
        "showingresults": "Do {{PLURAL:$1|isch '''1''' Ergebnis|sin '''$1''' Ergebniss}}, s fangt aa mit dr Nummerer '''$2.'''",
+       "showingresultsinrange": "Uf der Liste {{PLURAL:$1|isch <strong>ei</strong> Kategorie|sy <strong>$1</stong> Kategorië}} vo Nummere <strong>$2</strong> bis <strong>$3</strong>.",
        "search-showingresults": "{{PLURAL:$4|Ergebnis <strong>$1</strong> vu <strong>$3</strong>|Ergebnis <strong>$1 bis $2</strong> vu <strong>$3</strong>}}",
        "search-nonefound": "Fir Dyyni Suechaafrog sin keini Ergebniss gfunde wore.",
        "powersearch-legend": "Erwytereti Suech",
        "powersearch-togglelabel": "Wehl uus:",
        "powersearch-toggleall": "Alli",
        "powersearch-togglenone": "Keini",
+       "powersearch-remember": "Uswahl für zuekünftigi Suechine merke",
        "search-external": "Externi Suech",
        "searchdisabled": "D {{SITENAME}}-Suech isch deaktiviert. Du chasch mit Google sueche, s cha aber syy ass dr Suechindex vu Google fir {{SITENAME}} veraltet isch.",
        "search-error": "Bi dr Suechi het s e Fähler gee: $1",
        "preferences": "Yystellige",
        "mypreferences": "Yystellige",
        "prefs-edits": "Aazahl vu dr Bearbeitige:",
+       "prefsnologintext2": "Bitte mäld di a, für Ystellige z ändere.",
        "prefs-skin": "Benutzeroberflechi",
        "skin-preview": "Vorschou",
        "datedefault": "kei Aagab",
        "prefs-personal": "Benutzerdate",
        "prefs-rc": "Letschti Änderige",
        "prefs-watchlist": "Beobachtigslischte",
+       "prefs-editwatchlist": "Beobachtigslisten ändere",
+       "prefs-editwatchlist-label": "Yträg uf dyre Beobachtigslisten ändere:",
+       "prefs-editwatchlist-edit": "Normal bearbeite",
+       "prefs-editwatchlist-raw": "Imene groosse Textfäld bearbeite",
+       "prefs-editwatchlist-clear": "Beobachtigsliste lääre",
        "prefs-watchlist-days": "Aazahl vu dr Täg, wu d Beobchtigslischt standardmässig soll umfasse:",
        "prefs-watchlist-days-max": "Maximal {{PLURAL:$1|ei Tag|$1 Täg}}",
        "prefs-watchlist-edits": "Maximali Zahl vu dr Yyträg:",
        "rows": "Zylene",
        "columns": "Spaltene",
        "searchresultshead": "Suech-Ergäbnis",
-       "stub-threshold": "Gleichformatierig <a href=\"#\" class=\"stub\">vu chleine Syte</a> (in Byte):",
+       "stub-threshold": "Spezielli Darstellig ($1) für Links uf chlyni Syte bis zu’re bestimmte Gröössi (i Bytes):",
+       "stub-threshold-sample-link": "Byspil",
        "stub-threshold-disabled": "Deaktiviert",
        "recentchangesdays": "Aazahl vu dr Täg, wu d Lischt vu dr  „Letschte Änderige“ standardmässig soll umfasse:",
        "recentchangesdays-max": "(Maximal $1 {{PLURAL:$1|Tag|Täg}})",
        "prefs-help-signature": "Byyträg uf Diskussionssyte sotte mit „<nowiki>~~~~</nowiki>“ unterschribe wäre, was derno in d Unterschrift mit eme Zytstämpfel umgwandlet wird.",
        "badsig": "Dr Syntax vu dr Signatur isch nid giltig; bitte d HTML iberpriefe.",
        "badsiglength": "Dyyni Unterschrift isch z lang. Si derf hegschtens $1 {{PLURAL:$1|Zeiche|Zeiche}} lang syy.",
-       "yourgender": "Wie witt gärn bschribe wäre?",
-       "gender-unknown": "Ich wett doderzue kei Aagab mache",
-       "gender-male": "Är schafft an Syte",
-       "gender-female": "Si schafft an Syte",
-       "prefs-help-gender": "Optional: bruucht fir gschlächtsspezifischi Adrässierig dur d Software. Die Information isch effentlig.\n\nDes isch e frejwilligi Aagab. D Software brucht si go Di aarede un as Hiiwys fir anderi dur d Verwändig vum grammatische Gschlächt. Die Information isch effetli.",
+       "yourgender": "Wie sölle Systemmäldigen über di brichte?",
+       "gender-unknown": "«Der Benutzer», «der {dy Name}», «syni Bearbeitig», «är schrybt» etc. – gschlächtsneutral bzw. generischs Maskulinum",
+       "gender-male": "«Der Benutzer», «der {dy Name}», «syni Bearbeitig», «är schrybt» etc. (Maskulinum)",
+       "gender-female": "«D Benutzerin», «d {dy Name}», «iri Bearbeitig», «si schrybt» etc. (Femininum)",
+       "prefs-help-gender": "Die Agab isch freiwillig.\nD Software bruucht se, für im korräkte grammatische Genus vo dir z rede.\nDas isch öffetlech z gseh.\nBy der ersten Option wird normalerwys ds generische Maskulinum azeigt. Es chunt also uf ds glychen use, wi we me di zwöüti Option wählt.",
        "email": "E-Mail",
-       "prefs-help-realname": "* <strong>Dyy ächte Name</strong> (optional): Wänn du wetsch, ass Dyyni Änderige uf Dii chenne zruckgfierd wäre.",
+       "prefs-help-realname": "Der ächt Namen isch optional.\nWe d’nen agisch, de lö sech dyni Byträg uf di la zrüggfüere.",
        "prefs-help-email": "D Aagab vun ere E-Mail isch optional, macht aber s Zueschicke vun eme Ersatzpasswort meglig, wänn Du dyy Passwort vergässe hesch.",
-       "prefs-help-email-others": "Mit andere Benutzer chasch au iber d Benutzerdiskussionssyte Kontakt ufneh, ohne dass Du dyy Identitet muesch uffelege.",
+       "prefs-help-email-others": "Ussertdäm chasch es zuela, das anderi dir über’ne Link uf dym Wikipedia-Konto (Benutzersyte) es E-Mail chöü schicke.\nDyni E-Mail-Adrässen überchöme si derby nid z gseh.",
        "prefs-help-email-required": "S brucht e giltigi E-Mail-Adräss.",
        "prefs-info": "Basisinformatione",
        "prefs-i18n": "Internationalisierig",
        "prefs-dateformat": "Datumsformat",
        "prefs-timeoffset": "Zytunterschid",
        "prefs-advancedediting": "Allgmeini Optione",
+       "prefs-editor": "Bearbeitigsfänster",
+       "prefs-preview": "Vorschou",
        "prefs-advancedrc": "Erwytereti Optione",
        "prefs-advancedrendering": "Erwytereti Optione",
        "prefs-advancedsearchoptions": "Erwytereti Optione",
        "prefs-advancedwatchlist": "Erwytereti Optione",
        "prefs-displayrc": "Aazeigoptione",
        "prefs-displaywatchlist": "Aazeigoptione",
+       "prefs-tokenwatchlist": "Schlüssel für persönleche Webfeed",
        "prefs-diffs": "Versionsverglych",
+       "prefs-help-prefershttps": "Die Ystellig würkt sech uus, we du di ds nächste Mal amäldisch.",
+       "prefswarning-warning": "Du hesch Ystellige g’änderet wo no nid gspycheret sy.\nWe du die Syte verlasch, ohni uf «$1» z drücke, de gö die Änderige verlore.",
+       "prefs-tabs-navigation-hint": "Tipp: Mit der linggen u der rächte Pfyltaste chasch zwüsche de Tabs wächsle.",
        "email-address-validity-valid": "Siht giltig uus",
        "email-address-validity-invalid": "S brucht e giltigi Adräss!",
        "userrights": "Benutzerrächtsverwaltig",
        "userrights-lookup-user": "Verwalt d Gruppezuegherigkeit",
        "userrights-user-editname": "Benutzername:",
        "editusergroup": "Ändere vo Benutzerrächt",
-       "editinguser": "Am Ändere vu dr Benutzerrächt vu '''[[User:$1|$1]]''' $2",
-       "userrights-editusergroup": "Bearbeit d Gruppezuegherigkeit vum Benutzer",
-       "saveusergroups": "Spychere d Gruppezuegherigkeit",
+       "editinguser": "{{GENDER:$1|Em <strong>[[User:$1|$1]]</strong> $2 syni Rächt|Der <strong>[[User:$1|$1]]</strong> $2 iri Rächt|Rächt vo <strong>[[User:$1|$1]]</strong> $2}} bearbeite",
+       "userrights-editusergroup": "Gruppezuegherigkeit bearbeite",
+       "saveusergroups": "Gruppezuegherigkeit spychere",
        "userrights-groupsmember": "Mitgliid vu:",
        "userrights-groupsmember-auto": "Automatisch Mitglid vu:",
-       "userrights-groups-help": "Du chasch d Gruppezuegherigkeit fir dää Benutzer ändere:\n* E markiert Chäschtli bedytet, ass dr Benutzer Mitgliid vu däre Gruppe isch\n* E * bedytet, ass Du s Benutzerrächt nit wider chasch zruckneh, wänn s erteilt isch (oder umgchehrt).",
+       "userrights-groups-help": "Du chasch {{GENDER:$1|däm Benutzer syni|dere Benutzerin iri|dere Person iri}} Gruppezueghörigkeit ändere:\n* Es markierts Chästli bedütet, das {{GENDER:$1|der Benutzer|d Benutzerin|d Person}} zur Gruppe ghört.\n* Es nid markierts Chästli bedütet, das {{GENDER:$1|der Benutzer|d Benutzerin|d Person}} nid zur Gruppe ghört.\n* Es Stärnli «*» nach emne Gruppename zeigt a, das du die Gruppezueghörigkeit zwar chasch ändere, aber das du ein Änderig nümm chasch rückgängig mache.",
        "userrights-reason": "Grund:",
        "userrights-no-interwiki": "Du hesch nit d Berächtigung, Benutzerrächt in andere Wiki z ändere.",
        "userrights-nodatabase": "D Datebank $1 git s nit oder si isch nit lokal.",
        "userrights-notallowed": "Du hesch nit d Berächtigung zum Benutzerrächt vergee oder ewägnee.",
        "userrights-changeable-col": "Gruppezuegherigkeit, wu Du chasch ändere",
        "userrights-unchangeable-col": "Gruppezuegherigkeit, wu Du nit chasch ändere",
+       "userrights-conflict": "Di veränderete Rächt göh nid uuf! Bitte lueg d Änderige düren u tue se nomal spychere.",
+       "userrights-removed-self": "Du hesch dir di eigete Rächt erfolgrych furtgnoh. Drum hesch kei Zuegriff meh uf die Syte.",
        "group": "Grupp:",
        "group-user": "Benutzer",
        "group-autoconfirmed": "Bstetigti Benutzer",
        "right-move": "Syte verschiebe",
        "right-move-subpages": "Syte verschiebe mitsamt dr Untersyte",
        "right-move-rootuserpages": "Haupt-Benutzersyte verschiebe",
+       "right-move-categorypages": "Kategoriesyte verschiebe",
        "right-movefile": "Dateie verschiebe",
        "right-suppressredirect": "Bim Verschiebe s Aalege vun ere Wyterleitig unterdrucke",
        "right-upload": "Dateie uffelade",
        "right-deletedtext": "Gleschti Text un Versionsunterschid zwische gleschte Versionen aaluege",
        "right-browsearchive": "Gleschti Syte sueche",
        "right-undelete": "Syte widerherstelle",
-       "right-suppressrevision": "Versione, wu au vor Ammanne verborge sin, aaluege un widerherstelle",
+       "right-suppressrevision": "Bestimmti Versione vor allne Lüt verstecke, wider füre holen oder aluege.",
+       "right-viewsuppressed": "Vor allne Lüt versteckti Versionen aluege",
        "right-suppressionlog": "Privati Logbiecher aaluege",
        "right-block": "Benutzer sperre (Schrybrächt)",
        "right-blockemail": "Benutzer am Verschicke vu E-Mail hindere",
        "right-proxyunbannable": "Uusnahm vu automatische Proxysperrine",
        "right-unblockself": "Sich sälber entsperre",
        "right-protect": "Syteschutzstatus änderen un kaskadegschitzti Syte bearbeite",
-       "right-editprotected": "Gschitzti Syte bearbeite (ohni Kaskadeschutz)",
+       "right-editprotected": "Mit «{{int:protect-level-sysop}}» gschützti Syten ändere",
+       "right-editsemiprotected": "Mit «{{protect-level-autoconfirmed}}» gschützti Syten ändere",
+       "right-editcontentmodel": "Inhaltsmodäll vo’re Syten ändere",
        "right-editinterface": "Benutzerinterface bearbeite",
        "right-editusercssjs": "Bearbeite vu CSS- und JS-Dateie vu andere Benutzer",
        "right-editusercss": "Bearbeite vu CSS-Dateie vu andere Benutzer",
        "right-edituserjs": "Bearbeite vu JS-Dateie vu andere Benutzer",
+       "right-editmyusercss": "Dyni eigete CSS-Dateien ändere",
+       "right-editmyuserjs": "Eigeti JavaScript-Dateie bearbeite",
+       "right-viewmywatchlist": "Eigeti Beobachtigslisten aluege",
+       "right-editmywatchlist": "Eigeti Beobachtigslisten ändere. Ou ohni das Rächt chöme dür’nes paar Aktione Syten uf d Beobachtigsliste.",
+       "right-viewmyprivateinfo": "Eigeti privati Daten aluege (byspilswys E-Mail-Adrässe, ächte Name)",
+       "right-editmyprivateinfo": "Eigeti privati Daten ändere (byspilswys E-Mail-Adrässe, ächte Name)",
+       "right-editmyoptions": "Eigeti Ystelligen ändere",
        "right-rollback": "D Bearbeitige vum letschte Benutzer, wu ne einzelni Syte bearbeitet het, schnell zrucksetze",
        "right-markbotedits": "Schnell zruckgsetzti Bearbeitige as Bot-Bearbeitig markiere",
        "right-noratelimit": "Kei Bschränkig dur Limit",
        "right-override-export-depth": "Exportier Syte mitsamt dr vergleichte Syte bis zuen ere Tiefi vu 5",
        "right-sendemail": "E-Mail an anderi Benutzer schicke",
        "right-passwordreset": "Passwort vun eme Benutzer zruggsetze",
+       "right-managechangetags": "[[Special:Tags|Markierigen]] ir Datebank schaffen oder lösche",
+       "right-applychangetags": "Zäme mit den eigeten Änderige [[Special:Tags|Markierigen]] abringe",
+       "right-changetags": "Beliebigi [[Special:Tags|Markierige]] by einzelne Versionen oder Logbuechyträg derzuetue oder lösche",
        "newuserlogpage": "Nejaamäldigs-Logbuech",
        "newuserlogpagetext": "Des isch e Logbuech fir nej aagleiti Benutzerchonte.",
        "rightslog": "Benutzerrächt-Logbuech",
        "action-createpage": "Syten aazlege",
        "action-createtalk": "Diskussionssyten aazlege",
        "action-createaccount": "e Benutzerkonto aazlege",
+       "action-history": "d Versionegschicht vo dere Syten azluege",
        "action-minoredit": "die Bearbeitig as chlei z markiere",
        "action-move": "die Syte z verschiebe",
        "action-move-subpages": "die Syte un di zuegherige Untersyte z verschiebe",
        "action-move-rootuserpages": "Haupt-Benutzersyte z verschiebe",
+       "action-move-categorypages": "Kategoriesyte z verschiebe",
        "action-movefile": "Die Datei verschiebe",
        "action-upload": "Dateie uffezlade",
        "action-reupload": "die vorhandene Datei z iberschryybe",
        "action-userrights-interwiki": "d Rächt vu Benutzer in andere Wiki z ändere",
        "action-siteadmin": "d Datebank z sperre oder frejzgee",
        "action-sendemail": "E-Mail z schicke",
+       "action-editmywatchlist": "dyni Beobachtigsliste z ändere",
+       "action-viewmywatchlist": "dyni Beobachtigslisten azluege",
+       "action-viewmyprivateinfo": "dyni privati Information azluege",
+       "action-editmyprivateinfo": "dyni privati Information z ändere",
+       "action-editcontentmodel": "ds Inhaltsmodäll vo dere Syte z ändere",
+       "action-managechangetags": "Marierigen ir Databank z schaffen oder z lösche",
+       "action-applychangetags": "zäme mit dynen Änderige Markierigen azbringe",
+       "action-changetags": "beliebigi Markierige by einzelne Versionen oder Logbuechyträg derzueztue oder z lösche",
        "nchanges": "$1 {{PLURAL:$1|Änderig|Änderige}}",
+       "enhancedrc-since-last-visit": "{{PLURAL:$1|$1}} syt em letste Bsuech",
        "enhancedrc-history": "Versionsgschicht",
        "recentchanges": "Letschti Änderige",
        "recentchanges-legend": "Optione vu dr Aazeig",
        "recentchanges-summary": "Uf däre Syte chasch di letschte Änderige in däm Wiki aaluege.",
+       "recentchanges-noresult": "Im usgwählte Zytruum het’s kener Änderige ’gä.",
        "recentchanges-feed-description": "Di letschten Änderige vo {{SITENAME}} i däm Feed abonniere.",
        "recentchanges-label-newpage": "Mit däre Bearbeitig isch e neji Syte aagleit wore",
        "recentchanges-label-minor": "Des isch e chleini Änderig",
        "recentchanges-label-plusminus": "Di gänderet Sytegreßi (Aazahl in Byte)",
        "recentchanges-legend-heading": "'''Legänd:'''",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (lueg au d [[Special:NewPages|Lischt vu neie Syte]])",
-       "rcnotefrom": "Des sin d Ändrige syter <b>$2</b> (bis zem <b>$1</b> zeigt).",
+       "rcnotefrom": "Azeigt {{PLURAL:$5|isch d Änderig|sy maximal <strong>$1</strong> Änderige}} syt <strong>$3, $4</strong>.",
        "rclistfrom": "Nume Änderige syt $3, $2 Uhr zeige.",
        "rcshowhideminor": "Chlynigkeite $1",
        "rcshowhideminor-show": "aazeige",
        "boteditletter": "B",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|Benutzer, wu beobachtet|Benutzer, wu beobachte}}]",
        "rc_categories": "Nume Syten us dr Kategorie (trennt mit „|“):",
-       "rc_categories_any": "Alli",
+       "rc_categories_any": "Beliebigi vo den usgwählte",
        "rc-change-size-new": "$1 {{PLURAL:$1|Byte|Byte}} no dr Änderig",
        "newsectionsummary": "Neje Abschnitt /* $1 */",
        "rc-enhanced-expand": "Detail aazeige",
        "reuploaddesc": "Abbrächen un zrugg zue dr Syte \"Uffelade\"",
        "upload-tryagain": "Gändereti Dateibschryybig abschicke",
        "uploadnologin": "Nit aagmäldet",
-       "uploadnologintext": "Si mien [[Special:UserLogin|aagmäldet syy]], zum Dateie uffelade z chenne.",
+       "uploadnologintext": "Für Dateien ufezlade, muesch di $1.",
        "upload_directory_missing": "S Upload-Verzeichnis ($1) fählt un het au dur dr Netzserver nit chenne aagleit wäre.",
        "upload_directory_read_only": "Dr Netzserver het kei Schryybrächt fir s Upload-Verzeichnis ($1).",
        "uploaderror": "Fähler bim Uffelade",
        "upload-recreate-warning": "'''Warnig: E Datei mit däm Name isch scho mol glescht oder verschobe wore.'''\n\nDo het s e Uuszug us em Lesch- un eme Verschiebigslogbuech:",
        "uploadtext": "Verwänd des Formular unte zum Dateie uffelade.\nZum friejer uffegladeni Dateie aazluege oder z sueche lueg uf dr [[Special:FileList|Lischt vu uffegladene Dateie]],\nWeli Dateie uffeglade sin, sihsch im [[Special:Log/upload|Logbuech vu dr uffegladene Dateie]], weli glescht sin im [[Special:Log/delete|Lesch-Logbuech]]\n\nZum e Datei oder e Bild in ere Syte yyzböue, schryybsch eifach:\n* '''<nowiki>[[</nowiki>{{ns:file}}<nowiki>:file.jpg]]</nowiki>''' fir di voll Version vu dr Datei\n* '''<nowiki>[[</nowiki>{{ns:file}}<nowiki>:file.png|al text]]</nowiki>''' fir e 200 Pixel grossi Version im e Chaschte mit 'alt text' as Bschrybig\n* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>''' fir e diräkt Link zuer dr Datei ohni ass si aazeigt wird",
-       "upload-permitted": "Dateitype, wu erlaubt sin: $1.",
-       "upload-preferred": "Dateitype, wu bevorzugt sin: $1.",
-       "upload-prohibited": "Dateitype, wu nit erlaubt sin: $1.",
+       "upload-permitted": "{{PLURAL:$2|Dateityp, wu erlaubt isch|Dateitype, wu erlaubt sin}}: $1.",
+       "upload-preferred": "{{PLURAL:$2|Dateityp, wu bevorzugt isch|Dateitype, wu bevorzugt sin}}: $1.",
+       "upload-prohibited": "{{PLURAL:$2|Dateityp, wu nit erlaubt isch|Dateitype, wu nit erlaubt sin}}: $1.",
        "uploadlogpage": "Dateie-Logbuech",
        "uploadlogpagetext": "Des isch s Logbuech vu dr uffegladene Dateie.\nLueg au d [[Special:NewFiles|Galerii vu neije Dateie]] fir e visuälle Iberblick.",
        "filename": "Dateiname",
        "largefileserver": "Die Datei isch gresser wie die vum Server yygstellti Maximalgressi.",
        "emptyfile": "Di uffeglade Datei isch schyyns läär. Dr Grund cha ne Tippfähler im Dateiname syy. Bitte iberprief, eb du die Datei wirkli wit uffelade.",
        "windows-nonascii-filename": "Des Wiki unterstitzt kei Dateinäme mit Sonderzeiche.",
-       "fileexists": "S git scho ne Datei mit däm Name.\nWänn Du uf \"Datei spichere\" drucksch, no wird die Datei iberschribe.\nBitte prief <strong>[[:$1]]</strong>, wänn Der nit sicher bisch.\n[[$1|thumb]]",
+       "fileexists": "Es git scho’ne Datei mit däm Name. Bitte prüeff <strong>[[:$1]]</strong>, we d’ nid sicher bisch, öb {{GENDER:|d’}} se wosch ändere.\n[[$1|thumb]]",
        "filepageexists": "E Bschryybigssyte isch scho as <strong>[[:$1]]</strong> aagleit wore, s git aber kei Datei mit däm Name.\nDie Zämmefassig, wu Du yygee hesch, wird nit uf d Bschryybigssyte ibernuh.\nDu muesch d Bschryybigssyte noch em Uffelade vu dr Datei no manuäll bearbeite.\n[[$1|thumb]]",
-       "fileexists-extension": "S git scho ne Datei mit eme ähnlige Name: [[$2|thumb]]\n* Name vu Datei, wu soll uffeglade were: <strong>[[:$1]]</strong>\n* Name vu dr Datei, wu s scho git: <strong>[[:$2]]</strong>\nBitte wehl e andre Name.",
+       "fileexists-extension": "S git scho ne Datei mit eme ähnlige Name: [[$2|thumb]]\n* Name vu Datei, wu soll uffeglade were: <strong>[[:$1]]</strong>\n* Name vu dr Datei, wu s scho git: <strong>[[:$2]]</strong>\nVilech wosch en eidütigere Name bruuche?",
        "fileexists-thumbnail-yes": "Die Datei isch schyyns e Bild mit ere verringerte Gressi ''(thumbnail)''. [[$1|thumb]]\nBitte prief d Datei <strong>[[:$1]]</strong>.\nWänn s Bild in dr Originalgressi isch, no isch s nit netig, ass e extra Vorschaubild uffeglade wird.",
        "file-thumbnail-no": "Dr Dateiname fangt mit <strong>$1</strong> aa. Des wyyst uf e Bild mit ere verringerte Gressi ''(thumbnail)'' hi.\nBitte prief, eb D s Bild in voller Uflesig vorlige hesch un lad derno des unter em Originalname uffe.",
        "fileexists-forbidden": "S git scho ne Datei mit däm Name. Si cha nit iberschribe wäre. Bitte gang zruck un lad die Datei unter eme andere Name uffe. [[File:$1|thumb|center|$1]]",
        "fileexists-shared-forbidden": "S git scho ne Datei mit däm Name im Zentrale Mediearchiv.\nWänn Du die Datei einewäg wit uffelade, gang bitte zruck un ändere dr Name.\n[[File:$1|thumb|center|$1]]",
        "file-exists-duplicate": "Die Datei isch e Duplikat vu {{PLURAL:$1|däre Datei|däne $1 Dateie}}:",
        "file-deleted-duplicate": "E identischi Version vu däre Datei ([[:$1]]) isch friejer scho mol glescht wore. Iberprief s Leschlogbuech, voreb Du si uffeladesch.",
+       "file-deleted-duplicate-notitle": "En idäntischi Datei isch chürzlech glöscht u der Titel underdrückt worde.\nFür d Situation vor em Wider-Ufelade z prüeffe, söttsch öpper frage, wo di underdrückte Dateidate cha aluege.",
        "uploadwarning": "Warnig",
        "uploadwarning-text": "Bitte tue unte d Dateibsschryybig ändere un versuech s nomol.",
        "savefile": "Datei spychere",
        "uploaddisabledtext": "S Uffelade vu Dateie isch deaktiviert.",
        "php-uploaddisabledtext": "S Uffelade vu PHP-Dateie isch deaktiviert wore. Bitte iberprief d file_uploads-Yystellig.",
        "uploadscripted": "In däre Datei git s HTML- oder Scriptcode, wu fälschligerwyys vun eme Webbrowser usgfiert chennt were.",
+       "upload-scripted-pi-callback": "E Datei mit Verarbeitigsbefählen imnen XML-Stylesheet cha me nid ufelade.",
+       "uploaded-script-svg": "Ir ufegladnigen SVG-Datei het’s ds Skript-Elemänt «$1».",
+       "uploaded-hostile-svg": "Im Style-Elemänt vor ufegladnigen SVG-Datei het’s unsichers CSS.",
+       "uploaded-event-handler-on-svg": "I SVG-Dateien isch ds Event-Handler-Attribut <code>$1=\"$2\"</code> nid erloubt.",
+       "uploaded-href-attribute-svg": "I SVG-Dateien isch ds href-Attribut <code>&lt;$1 $2=\"$3\"&gt;</code> mit emne nid-lokale Zil (byspilswys http://, javascript: etc.) nid erloubt.",
+       "uploaded-href-unsafe-target-svg": "Ir ufegladnige SVG-Datei het’s es href uf ds unsichere Zil <code>&lt;$1 $2=\"$3\"&gt;</code>.",
+       "uploaded-animate-svg": "Ir ufegladnigen SVG-Datei het’s en «animate»-Tag, wo über ds «from»-Attribut <code>&lt;$1 $2=\"$3\"&gt;</code> chönnt href ändere.",
+       "uploaded-setting-event-handler-svg": "Ir ufegladnigen SVG-Datei het’s ds Event-Handler-Attribut <code>&lt;$1 $2=\"$3\"&gt;</code>. Event-Handler-Attribut sy nid erloubt.",
+       "uploaded-setting-href-svg": "Es isch nid erloubt, mit emne «set»-Tag es «href»-Attribut zumenen übergordneten Elemänt derzue z tue.",
+       "uploaded-wrong-setting-svg": "Ir ufegladnigen SVG-Datei git e «set»-Tag emnen Attribut es externs Zil oder es Daten- oder Script-Zil: <code>&lt;set to=\"$1\"&gt;</code>. Das isch nid erloubt.",
+       "uploaded-setting-handler-svg": "Ir ufegladnigen SVG-Datei het’s es «handler»-Attribut mit Externem/Date/Script: <code>$1=\"$2\"</code>. Das isch nid erloubt.",
+       "uploaded-remote-url-svg": "Ir ufegladnigen SVG-Datei het’s es Style-Attribut mit emnen externen URL: <code>$1=\"$2\"</code>. Das isch nid erloubt.",
+       "uploaded-image-filter-svg": "Ir ufegladnigen SVG-Datei het’s e Bildfilter mit emnen URL: <code>&lt;$1 $2=\"$3\"&gt;</code>.",
+       "uploadscriptednamespace": "I deren SVG-Datei het’s der illegal Namensruum «$1».",
        "uploadinvalidxml": "S XML in dr uffegladene Datei het nit chenne parst wäre.",
        "uploadvirus": "In däre Datei het s e Virus! Detail: $1",
        "uploadjava": "Des isch e ZIP-Datei, wu s e CLASS-Datei vu Java din het.\nS Uffelade vu Java-Dateien isch nit gstattet, wel si s Umgoh vu Sicherheitsyyschränkige chennte megli mache.",
        "upload-too-many-redirects": "In dr URL het s zvyl Wyterleitige",
        "upload-http-error": "E HTTP-Fähler isch ufträtte: $1",
        "upload-copy-upload-invalid-domain": "As Kopi uffeladbari Dateie sin iber die Domain nit verfiegbar.",
+       "upload-dialog-title": "Datei ufelade",
+       "upload-dialog-error": "Es het e Fähler ’gä",
+       "upload-dialog-warning": "Es het e Warnig ’gä",
+       "upload-dialog-button-cancel": "Abbräche",
+       "upload-dialog-button-done": "Fertig",
+       "upload-dialog-button-save": "Spychere",
+       "upload-dialog-button-upload": "Ufelade",
+       "upload-dialog-label-select-file": "Datei ussueche",
+       "upload-dialog-label-infoform-title": "Details",
+       "upload-dialog-label-infoform-name": "Name",
+       "upload-dialog-label-infoform-description": "Beschrybig",
+       "upload-dialog-label-usage-title": "Verwändig",
+       "upload-dialog-label-usage-filename": "Dateiname",
        "backend-fail-stream": "D Datei $1 het nit chenne ibertrait wäre.",
        "backend-fail-backup": "D Datei $1 het nit chenne gsicheret wäre.",
        "backend-fail-notexists": "D Datei $1 git s nit.",
        "license": "Lizänz:",
        "license-header": "Lizänzierig",
        "nolicense": "kei Voruswahl",
+       "licenses-edit": "Linzänzoptionen ändere",
        "license-nopreview": "(s isch kei Vorschau verfiegbar)",
-       "upload_source_url": " (giltige, effentli zuegänglig URL)",
-       "upload_source_file": " (e Datei uf Dyynem Computer)",
+       "upload_source_url": " (usgsuechti Datei vomne gültige, öffetlech zuegänglechen URL)",
+       "upload_source_file": "(dyni usgsuechti Datei vo dym Computer)",
+       "listfiles-delete": "lösche",
        "listfiles-summary": "Die Spezialsyte lischtet alli uffegladene Dateie uf.",
        "listfiles_search_for": "Suech noch Datei:",
+       "listfiles-userdoesnotexist": "Ds Konto «$1» isch nid registriert.",
        "imgfile": "Datei",
        "listfiles": "Lischte vo Bilder",
        "listfiles_thumb": "Vorschaubilder",
        "listfiles_size": "Gressi",
        "listfiles_description": "Bschryybig",
        "listfiles_count": "Versione",
+       "listfiles-show-all": "Alti Versione vom Bild yschliesse",
+       "listfiles-latestversion": "Aktuelli Version",
+       "listfiles-latestversion-yes": "Ja",
+       "listfiles-latestversion-no": "Nei",
        "file-anchor-link": "Bildli",
        "filehist": "Dateiversione",
        "filehist-help": "Klick uf e Zytpunkt zu aazeige, wie s dert usgsäh het.",
        "filedelete-maintenance": "S Leschen un Widerhärstelle vu Dateie isch wäge Wartigsarbete e Zytlang deaktiviert.",
        "filedelete-maintenance-title": "D Datei cha nit glescht wäre.",
        "mimesearch": "MIME-Suechi",
-       "mimesearch-summary": "Uf däre Spezialsyte chenne d Dateie noch em MIME-Typ gfilteret wäre. In dr Yygob muess es alliwyl dr Medie- un Subtyp din haa: <code>image/jpeg</code> (lueg Bildbschryybigssyte).",
+       "mimesearch-summary": "Uf däre Spezialsyte chenne d Dateie noch em MIME-Typ gfilteret wäre. In dr Yygob muess es alliwyl dr Medie- un Subtyp din haa, byspilswys <code>image/jpeg</code> oder <code>image/*</code> (lueg Bildbschryybigssyte).",
        "mimetype": "MIME-Typ:",
        "download": "Abelade",
        "unwatchedpages": "Unbeobachteti Sytene",
        "listredirects": "Lischte vo Wyterleitige (Redirects)",
+       "listduplicatedfiles": "Liste vo Dateie mit Duplikat",
+       "listduplicatedfiles-summary": "Das isch e Liste vo Dateie, wo di aktuelli Version idäntisch isch mit der aktuelle Version von eren andere Datei. Nume lokali Dateie sy berücksichtiget.",
+       "listduplicatedfiles-entry": "[[:File:$1|$1]] het [[$3|{{PLURAL:$2|eis|$2}} Duplikat]]",
        "unusedtemplates": "Nid bruuchti Vorlage",
        "unusedtemplatestext": "Die Syte lischtet alli Syten im {{ns:template}}-Namensruum uf, wu nit in andere Syte yybunden sin.\nIberprief anderi Link zue dr Vorlage, voreb Du die leschesch.",
        "unusedtemplateswlh": "Anderi Link",
        "randompage": "Zuefalls-Artikel",
        "randompage-nopages": "S het kei Syte in {{PLURAL:$2|däm Namensruum|däne Namensryym}}:  $1.",
+       "randomincategory": "Zuefälligi Syten us ere Kategorie",
+       "randomincategory-invalidcategory": "«$1» isch ke gültigi Kategoriename.",
+       "randomincategory-nopages": "Ir Kategorie [[:Category:$1|$1]] het’s kener Syte.",
+       "randomincategory-category": "Kategorie:",
+       "randomincategory-legend": "Zuefälligi Syten us ere Kategorie",
        "randomincategory-submit": "Gang",
        "randomredirect": "Zuefälligi Wyterleitig",
        "randomredirect-nopages": "Im Namensruum „$1“ sin kei Wyterleitige vorhande.",
        "pageswithprop-text": "Die Spezialsyte lischet Syten auf, wu ne bstimmti Syteneigeschaft bruche.",
        "pageswithprop-prop": "Eigeschaftsname:",
        "pageswithprop-submit": "Gang ane",
+       "pageswithprop-prophidden-long": "Syteneigeschaften über $1 kB sy nid azeigt",
+       "pageswithprop-prophidden-binary": "Syteneigeschafte mit Binär-Date sy nid azeigt",
        "doubleredirects": "Doppleti Wyterleitige (Redirects)",
        "doubleredirectstext": "Die Lischt zeigt Wyterleitige, wu uf anderi Wyterleitige verwyyse.\nIn jedere Zyylete het s Link zue dr erschte un dr zwote Wyterleitig un s Ziil vu dr zwote Wyterleitig, wu normalerwys di gwinscht Ziilsyten isch. Do sott eigetli scho di erscht Wyterleitig druf zeige.\n<del>Durgstricheni</del> Yytreg sin scho erledigt wore.",
-       "double-redirect-fixed-move": "doppleti Wyterleitig ufglest: [[$1]] → [[$2]]",
-       "double-redirect-fixed-maintenance": "Di dopplet Wyterleitig vu [[$1]] no [[$2]] isch ufglest wore.",
+       "double-redirect-fixed-move": "D Syte [[$1]] isch verschobe.\nUnder irem Namen isch automatisch e Wyterleitig uf [[$2]] agleit worde.",
+       "double-redirect-fixed-maintenance": "Doppleti Wyterleitig vo [[$1]] uf [[$2]] automatisch in ere Wartigsarbeit gflickt.",
        "double-redirect-fixer": "DoubleRedirectBot",
        "brokenredirects": "Kaputti Wyterleitige",
        "brokenredirectstext": "Die Spezialsyte lischtet Wyterleitige uf, wu zue Artikel fiere, wu s gar nid git:",
        "ninterwikis": "{{PLURAL:$1|Ei Interwikilink|$1 Interwikilink}}",
        "nlinks": "$1 {{PLURAL:$1|Link|Links}}",
        "nmembers": "$1 {{PLURAL:$1|Syte|Sytene}}",
+       "nmemberschanged": "$1 → $2 {{PLURAL:$2|Syte}}",
        "nrevisions": "$1 {{PLURAL:$1|Revision|Revisione}}",
        "nimagelinks": "Brucht uf $1 {{PLURAL:$1|Syte|Syte}}",
        "ntransclusions": "brucht uf $1 {{PLURAL:$1|Syte|Syte}}",
        "unusedimages": "Verwaiste Bilder",
        "wantedcategories": "Bruuchti Kategorie, wo s no nid git",
        "wantedpages": "Artikel, wo fähle",
+       "wantedpages-summary": "Liste vo de meist-verlinkte Syte, wo’s nid git. Nid derby sy Syte, wo nume Wyterleitige druf verlinke. Syte, wo’s nid git u wo Wyterleitige druf verlinke, sy i der [[{{#special:BrokenRedirects}}|Liste vo kabutte Wyterleitige]] z finde.",
        "wantedpages-badtitle": "Nit giltige Titel im Ergebnis: $1",
        "wantedfiles": "Dateie, wu fähle",
        "wantedfiletext-cat": "Die Dateie wäre brucht, s git si aber nit. Dateie us främde Repositorie chenne einewäg do ufglischtet syy un wäre <del>durgstriche</del> dargstellt. Zuesätzli wäre Syte, wu s die nit vorhande Datei dinne het, in d [[:$1]] yygordnet.",
-       "wantedfiletext-nocat": "Die Dateie wäre brucht, s git si aber nit. Vorhandeni Dateie us främde Repositorie chenne dp einewäg ufglischtet syy un wäre <del>durgstriche</del> dargstellt.",
+       "wantedfiletext-cat-noforeign": "Die Dateie sy y’bunde, aber es git se nid. Syte, wo nid vorhandnigi Dateien ybinde, sy under [[:$1]] z finde.",
+       "wantedfiletext-nocat": "Die Dateie wäre brucht, s git si aber nit. Vorhandeni Dateie us främde Repositorie chenne do einewäg ufglischtet syy un wäre <del>durgstriche</del> dargstellt.",
+       "wantedfiletext-nocat-noforeign": "Die Dateie sy y’bunde, aber es git se nid.",
        "wantedtemplates": "Vorlage, wu fähle",
        "mostlinked": "Syte, wo am meischte druff verwyyse wird",
        "mostlinkedcategories": "Am meischte verlinkti Kategorië",
-       "mostlinkedtemplates": "Am meischten yybouti Vorlage",
+       "mostlinkedtemplates": "Meist-y’bundnigi Syte",
        "mostcategories": "Sytene mit de meischte Kategorië",
        "mostimages": "Am meischte verlinkti Dateie",
        "mostinterwikis": "Syte mit de meischte Interwikilink",
        "mostrevisions": "Syte mit de meischte Bearbeitige",
        "prefixindex": "Alli Syte (mit Präfix)",
        "prefixindex-namespace": "Alli Syte mit Präfix (Nameruum $1)",
+       "prefixindex-strip": "Präfix ir Listen abschnyde",
        "shortpages": "Churzi Artikel",
        "longpages": "Langi Artikel",
        "deadendpages": "Artikel ohni Links («Sackgasse»)",
        "deadendpagestext": "Die Syte verwyyse nit zue anderi Syte in {{SITENAME}}.",
        "protectedpages": "Gschützti Sytene",
        "protectedpages-indef": "Nume uubschränkt gschitzti Syte zeige",
+       "protectedpages-summary": "Die Liste zeigt Syte, wo momentan gschützt sy. Under «[[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]]» isch e Liste vo Title, wo’s nid erloubt isch, e Syte dermit azlege.",
        "protectedpages-cascade": "Nume Syte mit Kaskadeschutz",
+       "protectedpages-noredirect": "Wyterleitigen usblände",
        "protectedpagesempty": "Aktuäll sin kei Syte mit däne Parameter gschitzt.",
+       "protectedpages-timestamp": "Zytstämpel",
+       "protectedpages-page": "Syte",
+       "protectedpages-expiry": "Gschützt bis",
+       "protectedpages-performer": "Gschützt vo",
+       "protectedpages-params": "Schutzparameter",
+       "protectedpages-reason": "Grund",
+       "protectedpages-unknown-timestamp": "Unbekannt",
+       "protectedpages-unknown-performer": "Unbekannt",
        "protectedtitles": "Gsperrti Titel",
+       "protectedtitles-summary": "Die Liste zeigt Title, wo’s momentan nid erloubt isch, e Syte dermit azlege. Under «[[{{#special:ProtectedPages}}|{{int:protectedpages}}]]» isch e Liste vo gschützte Syte z finde.",
        "protectedtitlesempty": "Im Momänt sin kei Syte fir s Nejaalege gsperrt mit däne Parameter.",
        "listusers": "Lischte vo Benutzer",
        "listusers-editsonly": "Zeig nume Benutzer mit Byytreg",
        "listusers-creationsort": "Sortiert noch em Datum",
+       "listusers-desc": "Reihefolg umchehre",
        "usereditcount": "$1 {{PLURAL:$1|Bearbeitig|Bearbeitige}}",
        "usercreated": "{{GENDER:$3|Aagleit}} uf $1 am $2",
        "newpages": "Nöji Artikel",
        "pager-older-n": "{{PLURAL:$1|vorige|vorige $1}}",
        "suppress": "Oversight",
        "querypage-disabled": "Die Spezialsyte isch deaktiviert wore us Leischtigserhaltigs-Grind.",
+       "apihelp": "API-Hilff",
+       "apihelp-no-such-module": "Ds Modul «$1» lat sech nid la finde.",
        "booksources": "ISBN-Suech",
        "booksources-search-legend": "Suech no Bezugsquälle fir Biecher",
        "booksources-search": "Sueche",
        "logempty": "Kei Yyträg gfunde, wu passe.",
        "log-title-wildcard": "Titel fangt aa mit",
        "showhideselectedlogentries": "Uusgwehlti Logbuechyytreg aazeige/verstecke",
+       "log-edit-tags": "Markierige vo den usgwählte Logbuechyträg ändere",
        "allpages": "alli Sytene",
        "nextpage": "Nächscht Syte ($1)",
        "prevpage": "Vorderi Syte ($1)",
        "listgrouprights-removegroup-self": "Cha {{PLURAL:$2|e Gruppe|Gruppe}} us em eigene Benutzerkonto useneh: $1",
        "listgrouprights-addgroup-self-all": "Cha alli Gruppe zum eigene Benutzerkonto zuefiege",
        "listgrouprights-removegroup-self-all": "Cha alli Gruppe us em eigene Benutzerkonto useneh",
+       "listgrouprights-namespaceprotection-header": "Yschränkige nach Namensruum",
+       "listgrouprights-namespaceprotection-namespace": "Namensruum",
+       "listgrouprights-namespaceprotection-restrictedto": "Rächt zum Bearbeite",
+       "trackingcategories": "Tracking-Kategorië",
        "mailnologin": "Du bisch nid aagmäldet oder hesch keis Mail aaggä",
        "mailnologintext": "Du muesch [[Special:UserLogin|aagmäldet syy]] un e bstätigti E-Mail-Adräss in Dyyne [[Special:Preferences|Yystellige]] aagee ha, fir dass epper anderem es E-Mail chasch schicke.",
        "emailuser": "Es Mail schrybe",
        "protect-existing-expiry": "Aktuälls Syteschutzänd: $2, $3 Uhr",
        "protect-otherreason": "Andere/zuesätzlige Grund:",
        "protect-otherreason-op": "Andere Grund",
-       "protect-dropdown": "*Allgmeini Schutzgrind\n** Netzgleich-Spam\n** Editwar\n** Vylmol yybundeni Vorlag\n** Syte mit ere hoche Bsuecherzahl",
+       "protect-dropdown": "*Allgmeini Schutzgrind\n** Link-Spam\n** Editwar\n** Vylmol yybundeni Vorlag\n** Syte mit ere hoche Bsuecherzahl",
        "protect-edit-reasonlist": "Schutzgrind bearbeite",
        "protect-expiry-options": "1 Stund:1 hour,1 Tag:1 day,1 Wuche:1 week,2 Wuche:2 weeks,1 Monet:1 month,3 Monet:3 months,6 Monet:6 months,1 Johr:1 year,Fir immer:infinite",
        "restriction-type": "Schutzstatus",
        "ipaddressorusername": "IP-Adräss oder Benutzername:",
        "ipbexpiry": "Sperrduur:",
        "ipbreason": "Grund:",
-       "ipbreason-dropdown": "* Allgmeini Sperrgrind\n** Lesche vu Syte\n** Aalege vu bledsinnige Syte\n** Vylfachi Verstess gege d Richtlinie fir Netzgleicher\n** Verstoss gege dr Grundsatz „Kei persenligi Aagriff“\n* Benutzerspezifischi Sperrgrind\n** Uugeignete Benutzername\n** Neijaamäldig vun eme uubschränkt gsperrte Benutzer\n* IP-spezifischi Sperrgrind\n** Proxy, wäge Vandalismus vu einzelne Benutzer lengerfrischtig gsperrt",
+       "ipbreason-dropdown": "* Allgmeini Sperrgrind\n** Lesche vu Syte\n** Aalege vu bledsinnige Syte\n** Vylfachi Verstess gege d Richtlinie fir Weblink\n** Verstoss gege dr Grundsatz „Kei persenligi Aagriff“\n* Benutzerspezifischi Sperrgrind\n** Uugeignete Benutzername\n** Neijaamäldig vun eme uubschränkt gsperrte Benutzer\n* IP-spezifischi Sperrgrind\n** Proxy, wäge Vandalismus vu einzelne Benutzer lengerfrischtig gsperrt",
        "ipb-hardblock": "Aagmäldeti Benutzer dra hindere, Bearbeitige unter däre IP-Adräss vorzneh",
        "ipbcreateaccount": "Aalege vu Benutzerchonte verhindere",
        "ipbemailban": "E-Mail-Versand sperre",
index 6873f85..51d1103 100644 (file)
@@ -29,7 +29,8 @@
                        "Matanya",
                        "GilCahana",
                        "Ldorfman",
-                       "LaG roiL"
+                       "LaG roiL",
+                       "Eraab"
                ]
        },
        "tog-underline": "סימון קישורים בקו תחתי:",
        "tog-numberheadings": "מספור כותרות אוטומטי",
        "tog-showtoolbar": "הצגת סרגל העריכה",
        "tog-editondblclick": "עריכת דפים בלחיצה כפולה",
-       "tog-editsectiononrightclick": "עריכת פסקאות באמצעות לחיצה ימנית על כותרות הפסקאות",
-       "tog-watchcreations": "×\9eעק×\91 ×\90×\97ר×\99 ×\93פ×\99×\9d ×©×\99צרת×\99 ×\95ק×\91צ×\99×\9d ×©×\94×¢×\9c×\99תי",
-       "tog-watchdefault": "×\9eעק×\91 ×\90×\97ר×\99 ×\93פ×\99×\9d ×\95ק×\91צ×\99×\9d ×©×¢×¨×\9bתי",
-       "tog-watchmoves": "×\9eעק×\91 ×\90×\97ר×\99 ×\93פ×\99×\9d ×\95ק×\91צ×\99×\9d ×©×\94×¢×\91רתי",
-       "tog-watchdeletion": "×\9eעק×\91 ×\90×\97ר×\99 ×\93פ×\99×\9d ×\95ק×\91צ×\99×\9d ×©×\9e×\97קתי",
-       "tog-watchrollback": "×\9eעק×\91 ×\90×\97ר×\99 ×\93פ×\99×\9d ×©×\91×\94×\9d ×\91×\99צעת×\99 ×©×\97×\96×\95ר ×\9e×\94×\99ר",
-       "tog-minordefault": "×\94×\92×\93רת ×\9b×\9c ×¤×¢×\95×\9cת ×¢×¨×\99×\9b×\94 ×\9b×\9eשנ×\99ת ×\90×\9d ×\9c×\90 ×¦×\95×\99×\9f ×\90×\97רת",
+       "tog-editsectiononrightclick": "×\94פע×\9cת ×¢×¨×\99×\9bת ×¤×¡×§×\90×\95ת ×\91×\90×\9eצע×\95ת ×\9c×\97×\99צ×\94 ×\99×\9e× ×\99ת ×¢×\9c ×\9b×\95תר×\95ת ×\94פסק×\90×\95ת",
+       "tog-watchcreations": "×\94×\95ספת ×\93פ×\99×\9d ×©×\99צרת×\99 ×\95ק×\91צ×\99×\9d ×©×\94×¢×\9c×\99ת×\99 ×\9cרש×\99×\9eת ×\94×\9eעק×\91 ×©×\9cי",
+       "tog-watchdefault": "×\94×\95ספת ×\93פ×\99×\9d ×\95ק×\91צ×\99×\9d ×©×¢×¨×\9bת×\99 ×\9cרש×\99×\9eת ×\94×\9eעק×\91 ×©×\9cי",
+       "tog-watchmoves": "×\94×\95ספת ×\93פ×\99×\9d ×\95ק×\91צ×\99×\9d ×©×\94×¢×\91רת×\99 ×\9cרש×\99×\9eת ×\94×\9eעק×\91 ×©×\9cי",
+       "tog-watchdeletion": "×\94×\95ספת ×\93פ×\99×\9d ×\95ק×\91צ×\99×\9d ×©×\9e×\97קת×\99 ×\9cרש×\99×\9eת ×\94×\9eעק×\91 ×©×\9cי",
+       "tog-watchrollback": "×\94×\95ספת ×\93פ×\99×\9d ×©×\91×\94×\9d ×\91×\99צעת×\99 ×©×\97×\96×\95ר ×\9c×\92רס×\94 ×§×\95×\93×\9eת ×\9cרש×\99×\9eת ×\94×\9eעק×\91 ×©×\9c×\99",
+       "tog-minordefault": "ס×\99×\9e×\95×\9f ×\9b×\9c ×¤×¢×\95×\9cת ×¢×¨×\99×\9b×\94 ×\9b×\9eשנ×\99ת ×\9b×\91ר×\99רת ×\9e×\97×\93×\9c",
        "tog-previewontop": "הצגת תצוגה מקדימה לפני תיבת העריכה",
        "tog-previewonfirst": "הצגת תצוגה מקדימה בעריכה ראשונה",
-       "tog-enotifwatchlistpages": "לשלוח אליי דואר אלקטרוני כאשר משתנה דף או קובץ ברשימת המעקב שלי",
-       "tog-enotifusertalkpages": "לשלוח אליי דואר אלקטרוני כאשר נעשה שינוי בדף שיחת המשתמש שלי",
-       "tog-enotifminoredits": "לשלוח אליי דואר אלקטרוני גם על עריכות משניות של דפים וקבצים",
-       "tog-enotifrevealaddr": "×\97ש×\99פת ×\9bת×\95×\91ת ×\94×\93×\95×\90\"×\9c ×©×\9c×\9a ×\91×\94×\95×\93×¢ות דוא\"ל",
+       "tog-enotifwatchlistpages": "לשלוח אליי דוא\"ל כאשר משתנה דף או קובץ ברשימת המעקב שלי",
+       "tog-enotifusertalkpages": "לשלוח אליי דוא\"ל כאשר נעשה שינוי בדף שיחת המשתמש שלי",
+       "tog-enotifminoredits": "לשלוח אליי דוא\"ל גם על עריכות משניות של דפים וקבצים",
+       "tog-enotifrevealaddr": "×\97ש×\99פת ×\9bת×\95×\91ת ×\94×\93×\95×\90\"×\9c ×©×\9c×\99 ×\91×\94תר×\90ות דוא\"ל",
        "tog-shownumberswatching": "הצגת מספר המשתמשים העוקבים",
        "tog-oldsig": "החתימה הנוכחית:",
        "tog-fancysig": "התייחסות לחתימה כקוד ויקי (ללא קישור אוטומטי)",
-       "tog-uselivepreview": "ש×\99×\9e×\95ש ×\91תצ×\95×\92×\94 ×\9eק×\93×\99×\9e×\94 ×\9e×\94×\99רה",
+       "tog-uselivepreview": "ש×\99×\9e×\95ש ×\91תצ×\95×\92×\94 ×\9eק×\93×\99×\9e×\94 ×\97×\99ה",
        "tog-forceeditsummary": "הצגת אזהרה בעת הכנסת תקציר עריכה ריק",
        "tog-watchlisthideown": "הסתרת העריכות שלי ברשימת המעקב",
        "tog-watchlisthidebots": "הסתרת עריכות של בוטים ברשימת המעקב",
        "prefs-watchlist-days": "מספר הימים המרבי שיוצגו ברשימת המעקב:",
        "prefs-watchlist-days-max": "לכל היותר {{PLURAL:$1|יום אחד|יומיים|$1 ימים}}",
        "prefs-watchlist-edits": "מספר העריכות המרבי שיוצגו ברשימת המעקב המורחבת:",
-       "prefs-watchlist-edits-max": "×\9eספר ×\9e×\99ר×\91×\99: 1000",
+       "prefs-watchlist-edits-max": "מספר מרבי: 1000",
        "prefs-watchlist-token": "אסימון לרשימת המעקב:",
        "prefs-misc": "שונות",
        "prefs-resetpass": "שינוי סיסמה",
        "rows": "שורות:",
        "columns": "עמודות:",
        "searchresultshead": "חיפוש",
-       "stub-threshold": "סף לעיצוב <a href=\"#\" class=\"stub\">קישורים</a> לקצרמרים (בתים):",
+       "stub-threshold": "סף לעיצוב קישורים לקצרמרים ($1):",
+       "stub-threshold-sample-link": "דוגמה",
        "stub-threshold-disabled": "מבוטל",
        "recentchangesdays": "מספר הימים שיוצגו בדף השינויים האחרונים:",
        "recentchangesdays-max": "לכל היותר {{PLURAL:$1|יום אחד|יומיים|$1 ימים}}",
        "autoredircomment": "הפניה לדף [[$1]]",
        "autosumm-new": "יצירת דף עם התוכן \"$1\"",
        "autosumm-newblank": "יצירת דף ריק",
-       "size-bytes": "$1 בייט",
+       "size-bytes": "{{PLURAL:$1|בייט אחד|$1 בייט}}",
        "size-kilobytes": "$1 קילו־בייט",
        "size-megabytes": "$1 מגה־בייט",
        "size-gigabytes": "$1 ג'יגה־בייט",
        "size-exabytes": "$1 אקסה־בייט",
        "size-zetabytes": "$1 זטה־בייט",
        "size-yottabytes": "$1 יוטה־בייט",
+       "size-pixel": "{{PLURAL:$1|פיקסל אחד|$1 פיקסלים}}",
        "lag-warn-normal": "שינויים שבוצעו לפני פחות מ{{PLURAL:$1|שנייה אחת|־$1 שניות}} אינם מוצגים ברשימה זו.",
        "lag-warn-high": "בגלל עיכוב בעדכון בסיס הנתונים, שינויים שבוצעו לפני פחות מ{{PLURAL:$1|שנייה אחת|־$1 שניות}} אינם מוצגים ברשימה זו.",
        "watchlistedit-normal-title": "עריכת רשימת המעקב",
index b6391d8..bf277d3 100644 (file)
        "createacct-benefit-body2": "{{PLURAL:$1|pagina|paginas}}",
        "createacct-benefit-body3": "{{PLURAL:$1|contributor|contributores}} recente",
        "badretype": "Le duo contrasignos que tu scribeva non es identic.",
+       "usernameinprogress": "Le creation de un conto con iste nomine de usator es jam in curso.\nPer favor, attende.",
        "userexists": "Iste nomine de usator es jam in uso.\nSelige un altere nomine.",
        "loginerror": "Error in le apertura del session",
        "createacct-error": "Error de creation de conto",
        "rows": "Lineas:",
        "columns": "Columnas:",
        "searchresultshead": "Recerca",
-       "stub-threshold": "Limite pro formatar le ligamines in <a href=\"#\" class=\"stub\">stilo de peciettas</a> (bytes):",
+       "stub-threshold": "Limite pro formatar ligamines a peciettas ($1):",
+       "stub-threshold-sample-link": "exemplo",
        "stub-threshold-disabled": "Disactivate",
        "recentchangesdays": "Numero de dies a monstrar in modificationes recente:",
        "recentchangesdays-max": "(non plus de $1 {{PLURAL:$1|die|dies}})",
        "logentry-newusers-create2": "Le conto de usator $3 ha essite {{GENDER:$2|create}} per $1",
        "logentry-newusers-byemail": "Le conto de usator $3 ha essite {{GENDER:$2|create}} per $1 e le contrasigno ha essite inviate per e-mail",
        "logentry-newusers-autocreate": "Le conto $1 ha essite {{GENDER:$2|create}} automaticamente",
+       "logentry-protect-move_prot": "$1 {{GENDER:$2|displaciava}} le parametros de protection de $4 a $3",
        "logentry-rights-rights": "$1 {{GENDER:$2|cambiava}} le appertinentia a gruppos pro $3 de $4 a $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|cambiava}} le appertinentia a gruppos pro $3",
        "logentry-rights-autopromote": "$1 ha essite automaticamente {{GENDER:$2|promovite}} de $4 a $5",
index 089ca43..41d53e0 100644 (file)
        "newarticle": "(Baro)",
        "newarticletext": "Nasurotmo ti silpo ti awan pay a panid. \nTi mangpartuat ti panid, rugiamon ti agmakinilia iti kahon dita baba (kitaen ti [$1 panid ti tulong] para iti adu pay a pakaammo). \nNo addaka ditoy babaen ti biddut, pindutem ti buton ti <strong>back</strong> ti pagbasabasam.",
        "anontalkpagetext": "----\n<em>Daytoy ti pakitungtungan a panid para iti di ammo nga agar-aramat a saan pay a nakapartuat iti pakabilangan, wenno saanna nga us-usaren.</em>\nIsu nga agusarkami ti numero nga IP a pagtaengan tapno mailasin isuda a lalaki/babai.\nTi kastoy nga IP a pagtaengan ket us-usaren a bingayan babaen ti nadumaduma nga agar-aramat.\nNo sika ket maysa a di ammo nga agar-aramat ken dagiti awan ti pategna a komentario ket napaitudo kenka, pangngaasi nga [[Special:UserLogin/signup|agpartuatka iti pakabilangam]] wenno [[Special:UserLogin|sumrekka]] \ntapno maliklikan ti pannakaiyallilaw kadagiti sabali a di ammo nga agar-aramat.",
-       "noarticletext": "Awan ti agdama a testo daytoy a panid.\nMabalinmo ti [[Special:Search/{{PAGENAME}}|agbiruk iti kastoy a titulo ti panid]] kadagiti sabali a panid,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} agbiruk kadagiti mainaig a listaan],\nwenno [{{fullurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} urnosem daytoy a panid]</span>.",
+       "noarticletext": "Awan ti agdama a teksto iti daytoy a panid.\nMabalinmo ti [[Special:Search/{{PAGENAME}}|agbiruk iti kastoy a titulo ti panid]] kadagiti sabali a panid,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} agbiruk kadagiti mainaig a listaan],\nwenno [{{fullurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} urnosem daytoy a panid]</span>.",
        "noarticletext-nopermission": "Awan ti agdama  a linaon daytoy a panid.\nMabalinmo ti [[Special:Search/{{PAGENAME}}|agbiruk para iti titulo ti daytoy a panid]] kadagiti sabali a panid, wenno <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} agbiruk kadagiti mainaig a listaan]</span>, ngem awan ti pammalubosmo a mangpartuat iti daytoy a panid.",
        "missing-revision": "Ti panagbalbaliw ti #$1 iti daytoy a panid a nanaganan ti \"{{FULLPAGENAME}}\" ket awan.\n\nDaytoy ket kadawyan a gapuanan babaen ti sumaganad a silpo ti baak a pakasaritaan iti maysa a naikkaten a panid.\nDagiti salaysay ket mabalin a mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti panagikkat].",
        "userpage-userdoesnotexist": "Ti pakabilangan ti agar-aramat ni \"$1\" ket saan a nakarehistro. \nPangngaasi a kitaem no kayatmo ti agpartuat/agurnos iti daytoy a panid.",
        "tooltip-pt-createaccount": "Maaw-awis nga agpartuatka iti pakabilangan ken sumrek; nupay kasta, daytoy ket saan a nasken",
        "tooltip-ca-talk": "Pagtungtungan a maipapan ti linaon ti panid",
        "tooltip-ca-edit": "Urnosen daytoy a panid",
-       "tooltip-ca-addsection": "Mangirugi ti baro a paset",
+       "tooltip-ca-addsection": "Mangirugi iti baro a seksion",
        "tooltip-ca-viewsource": "Nasalakniban daytoy a panid.\nMabalinmo a kitaen ti taudanna.",
        "tooltip-ca-history": "Dagiti napalabas a rebision iti daytoy a panid.",
        "tooltip-ca-protect": "Salakniban daytoy a panid",
index 93a136b..bc8ce8f 100644 (file)
        "rows": "Righe:",
        "columns": "Colonne:",
        "searchresultshead": "Ricerca",
-       "stub-threshold": "Valore minimo per i <a href=\"#\" class=\"stub\">collegamenti agli stub</a>, in byte:",
+       "stub-threshold": "Valore minimo per i <a href=\"#\" class=\"stub\">collegamenti agli abbozzi</a> (in byte):",
        "stub-threshold-disabled": "Disattivato",
        "recentchangesdays": "Numero di giorni da mostrare nelle ultime modifiche:",
        "recentchangesdays-max": "(massimo $1 {{PLURAL:$1|giorno|giorni}})",
        "prefs-tabs-navigation-hint": "Suggerimento: è possibile utilizzare i tasti freccia sinistra e destra per spostarsi tra le schede nell'elenco delle schede.",
        "email-address-validity-valid": "L'indirizzo e-mail sembra valido",
        "email-address-validity-invalid": "Inserisci un indirizzo e-mail valido",
-       "userrights": "Gestione dei permessi relativi agli utenti",
+       "userrights": "Gestione dei permessi degli utenti",
        "userrights-lookup-user": "Gestione dei gruppi utente",
        "userrights-user-editname": "Inserire il nome utente:",
        "editusergroup": "Modifica gruppi utente",
index acbffe3..6663ba0 100644 (file)
                ]
        },
        "tog-underline": "リンクの下線:",
-       "tog-hideminor": "最近の更新に細部の編集を表示しない",
-       "tog-hidepatrolled": "最近の更新に巡回済みの編集を表示しない",
-       "tog-newpageshidepatrolled": "新しいページの一覧に巡回済みのページを表示しない",
+       "tog-hideminor": "最近の更新に細部の編集を表示しない",
+       "tog-hidepatrolled": "最近の更新に巡回済みの編集を表示しない",
+       "tog-newpageshidepatrolled": "新しいページの一覧に巡回済みのページを表示しない",
        "tog-extendwatchlist": "ウォッチリストを拡張し、最新のものだけではなくすべての変更を表示",
-       "tog-usenewrc": "最近の更新とウォッチリストで複数の変更をページごとにまとめる",
+       "tog-usenewrc": "最近の更新とウォッチリストで複数の変更をページごとにまとめる",
        "tog-numberheadings": "見出しに番号を自動的に振る",
        "tog-showtoolbar": "編集用のツールバーを表示",
        "tog-editondblclick": "ダブルクリックでページを編集",
        "tog-editsectiononrightclick": "節見出しの右クリックで節を編集できるようにする",
-       "tog-watchcreations": "自分が作成したページやアップロードしたファイルをウォッチリストに追加",
-       "tog-watchdefault": "自分が編集したページやファイルをウォッチリストに追加",
-       "tog-watchmoves": "自分が移動したページやファイルをウォッチリストに追加",
-       "tog-watchdeletion": "自分が削除したページやファイルをウォッチリストに追加",
-       "tog-watchrollback": "ロールバックしたページをウォッチリストに追加",
-       "tog-minordefault": "ç´°é\83¨ã\81®ç·¨é\9b\86ã\81«既定でチェックを入れる",
+       "tog-watchcreations": "è\87ªå\88\86ã\81\8cä½\9cæ\88\90ã\81\97ã\81\9fã\83\9aã\83¼ã\82¸ã\82\84ã\82¢ã\83\83ã\83\97ã\83­ã\83¼ã\83\89ã\81\97ã\81\9fã\83\95ã\82¡ã\82¤ã\83«ã\82\92ã\80\81ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\81«è¿½å\8a ",
+       "tog-watchdefault": "è\87ªå\88\86ã\81\8cç·¨é\9b\86ã\81\97ã\81\9fã\83\9aã\83¼ã\82¸ã\82\84ã\83\95ã\82¡ã\82¤ã\83«ã\82\92ã\80\81ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\81«è¿½å\8a ",
+       "tog-watchmoves": "è\87ªå\88\86ã\81\8c移å\8b\95ã\81\97ã\81\9fã\83\9aã\83¼ã\82¸ã\82\84ã\83\95ã\82¡ã\82¤ã\83«ã\82\92ã\80\81ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\81«è¿½å\8a ",
+       "tog-watchdeletion": "è\87ªå\88\86ã\81\8cå\89\8aé\99¤ã\81\97ã\81\9fã\83\9aã\83¼ã\82¸ã\82\84ã\83\95ã\82¡ã\82¤ã\83«ã\82\92ã\80\81ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\81«è¿½å\8a ",
+       "tog-watchrollback": "ã\83­ã\83¼ã\83«ã\83\90ã\83\83ã\82¯ã\81\97ã\81\9fã\83\9aã\83¼ã\82¸ã\82\92ã\80\81ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\81«è¿½å\8a ",
+       "tog-minordefault": "ç´°é\83¨ã\81®ç·¨é\9b\86ã\81\99ã\81¹ã\81¦ã\81«ã\80\81既定でチェックを入れる",
        "tog-previewontop": "プレビューを編集ボックスの前に配置",
        "tog-previewonfirst": "編集開始時にもプレビューを表示",
-       "tog-enotifwatchlistpages": "ウォッチリストにあるページやファイルが更新されたらメールを受け取る",
-       "tog-enotifusertalkpages": "自分のトークページが更新されたらメールを受け取る",
+       "tog-enotifwatchlistpages": "ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\81«ã\81\82ã\82\8bã\83\9aã\83¼ã\82¸ã\82\84ã\83\95ã\82¡ã\82¤ã\83«ã\81\8cæ\9b´æ\96°ã\81\95ã\82\8cã\81\9fã\82\89ã\80\81ã\83¡ã\83¼ã\83«ã\82\92å\8f\97ã\81\91å\8f\96ã\82\8b",
+       "tog-enotifusertalkpages": "è\87ªå\88\86ã\81®ã\83\88ã\83¼ã\82¯ã\83\9aã\83¼ã\82¸ã\81\8cæ\9b´æ\96°ã\81\95ã\82\8cã\81\9fã\82\89ã\80\81ã\83¡ã\83¼ã\83«ã\82\92å\8f\97ã\81\91å\8f\96ã\82\8b",
        "tog-enotifminoredits": "ページやファイルへの細部の編集でもメールを受け取る",
        "tog-enotifrevealaddr": "通知メールで自分のメールアドレスを明示",
        "tog-shownumberswatching": "ページをウォッチしている利用者数を表示",
        "tog-oldsig": "既存の署名:",
        "tog-fancysig": "署名をウィキ文として扱う (自動リンクなし)",
        "tog-uselivepreview": "ライブプレビューを使用",
-       "tog-forceeditsummary": "要約欄が空欄の場合に確認をす",
+       "tog-forceeditsummary": "要約欄が空欄の場合に確認をうながす",
        "tog-watchlisthideown": "自分の編集をウォッチリストに表示しない",
        "tog-watchlisthidebots": "ボットによる編集をウォッチリストに表示しない",
        "tog-watchlisthideminor": "細部の編集をウォッチリストに表示しない",
        "underline-always": "常に付ける",
        "underline-never": "常に付けない",
        "underline-default": "外装またはブラウザーの既定値を使用",
-       "editfont-style": "編集エリアのフォント:",
+       "editfont-style": "編集エリアのフォント形式:",
        "editfont-default": "ブラウザーの設定を使用",
        "editfont-monospace": "等幅フォント",
        "editfont-sansserif": "サンセリフ体のフォント",
        "about": "解説",
        "article": "本文",
        "newwindow": "(新しいウィンドウで開きます)",
-       "cancel": "中止",
+       "cancel": "取り消し",
        "moredotdotdot": "続き...",
        "morenotlisted": "この一覧は完全ではありません。",
        "mypage": "ページ",
        "lastmodifiedat": "このページの最終更新日時は $1 $2 です。",
        "viewcount": "このページは {{PLURAL:$1|$1 回}}アクセスされました。",
        "protectedpage": "保護されたページ",
-       "jumpto": "移動:",
+       "jumpto": "移動:",
        "jumptonavigation": "案内",
        "jumptosearch": "検索",
        "view-pool-error": "申し訳ありませんが、現在サーバーに過大な負荷がかかっています。\nこのページを閲覧しようとする利用者が多すぎます。\nしばらく時間を置いてから、もう一度このページにアクセスしてみてください。\n\n$1",
        "nstab-image": "ファイル",
        "nstab-mediawiki": "メッセージ",
        "nstab-template": "テンプレート",
-       "nstab-help": "ヘルプ",
+       "nstab-help": "ヘルプページ",
        "nstab-category": "カテゴリ",
        "nosuchaction": "そのような操作はありません",
        "nosuchactiontext": "この URL で指定された操作は正しくありません。\nURL を間違って入力したか、正しくないリンクをたどった可能性があります。\n{{SITENAME}}が利用するソフトウェアのバグの可能性もあります。",
        "databaseerror-error": "エラー: $1",
        "laggedslavemode": "<strong>警告:</strong> ページに最新の編集が反映されていない可能性があります。",
        "readonly": "データベースがロックされています",
-       "enterlockreason": "ã\83­ã\83\83ã\82¯ã\81®ç\90\86ç\94±ã\81¨ã\83­ã\83\83ã\82¯è§£é\99¤ã\81®äº\88å®\9aã\82\92入力してください",
+       "enterlockreason": "ã\83­ã\83\83ã\82¯ã\81®ç\90\86ç\94±ã\81®å\85¥å\8a\9bã\81¨ã\80\81ã\83­ã\83\83ã\82¯è§£é\99¤ã\81®äº\88å®\9aã\82\92ã\80\81入力してください",
        "readonlytext": "データベースは現在、新しいページの追加や編集を受け付けない「ロック状態」になっています。これはおそらくデータベースの定期メンテナンスのためで、メンテナンス終了後は正常な状態に復帰します。\n\nデータベースをロックした管理者による説明は以下の通りです: $1",
        "missing-article": "指定されたページ「$1」$2 の本文がデータベース内で見つかりませんでした。\n\n通常、削除されたページの版への古い差分表示や固定リンクをたどった際に、このようなことが起きます。\n\nそれ以外の操作でこのメッセージが表示された場合、ソフトウェアのバグである可能性があります。\n[[Special:ListUsers/sysop|管理者]]までその URL を添えてお知らせください。",
        "missingarticle-rev": "(版番号: $1)",
        "directoryreadonlyerror": "ディレクトリー「$1」は読み取り専用です。",
        "directorynotreadableerror": "ディレクトリー「$1」は読み取りできません。",
        "filenotfound": "ファイル「$1」が見つかりませんでした。",
-       "unexpected": "äº\88æ\9c\9fã\81\97ã\81ªã\81\84å\80¤ã\80\8c$1ã\80\8d\80\8c$2ã\80\8dã\81§ã\81\99ã\80\82",
+       "unexpected": "äº\88æ\9c\9fã\81\97ã\81ªã\81\84å\80¤ã\81§ã\81\99ã\80\82\80\8c$1ã\80\8d\80\8c$2ã\80\8d",
        "formerror": "エラー: フォームを送信できませんでした。",
        "badarticleerror": "このページでは要求された操作を行えません。",
        "cannotdelete": "ページまたはファイル「$1」を削除できませんでした。\n他の人が既に削除した可能性があります。",
        "no-null-revision": "ページ「$1」に新しい空編集の版を作成できませんでした。",
        "badtitle": "正しくないページ名",
        "badtitletext": "無効または空のページ名が指定されたか、言語間/ウィキ間リンクの方法に誤りがあります。\nページ名に使用できない文字が含まれている可能性があります。",
-       "title-invalid-empty": "指定されたページ名は空もしくは名前空間しか含んでいません。",
+       "title-invalid-empty": "æ\8c\87å®\9aã\81\95ã\82\8cã\81\9fã\83\9aã\83¼ã\82¸å\90\8dã\81¯ç©ºã\81§ã\81\82ã\82\8bã\81\8bã\80\81ã\82\82ã\81\97ã\81\8fã\81¯å\90\8då\89\8d空é\96\93ã\81\97ã\81\8bå\90«ã\82\93ã\81§ã\81\84ã\81¾ã\81\9bã\82\93ã\80\82",
        "title-invalid-utf8": "指定されたページ名が無効なUTF-8シーケンスを含んでいます。",
-       "title-invalid-interwiki": "指定されたページ名がページ名として使用できないウィキ間リンクを含んでいます。",
+       "title-invalid-interwiki": "æ\8c\87å®\9aã\81\95ã\82\8cã\81\9fã\83\9aã\83¼ã\82¸å\90\8dã\81\8cã\80\81ã\83\9aã\83¼ã\82¸å\90\8dã\81¨ã\81\97ã\81¦ä½¿ç\94¨ã\81§ã\81\8dã\81ªã\81\84ã\82¦ã\82£ã\82­é\96\93ã\83ªã\83³ã\82¯ã\82\92å\90«ã\82\93ã\81§ã\81\84ã\81¾ã\81\99ã\80\82",
        "title-invalid-talk-namespace": "指定されたページは存在し得ないトークページです。",
        "title-invalid-characters": "指定されたページ名が無効な文字 \"$1\" を含んでいます。",
        "title-invalid-relative": "タイトルは相対パスを持っています。相対ページタイトル(./, ../)は無効であり、なぜならば利用者のブラウザでは多くの場合に到達不能だからです。",
        "title-invalid-magic-tilde": "指定されたページ名は無効なチルダ文字列 (<nowiki>~~~</nowiki>) を含んでいます。",
        "title-invalid-too-long": "指定されたページ名が長すぎます。UTF-8エンコードで $1 バイト以下でなければなりません。",
-       "title-invalid-leading-colon": "指定されたページ名の先頭に無効なコロンが含まれています。",
+       "title-invalid-leading-colon": "指定されたページ名の先頭に無効なコロンが含まれています。",
        "perfcached": "以下のデータはキャッシュされており、最新ではない可能性があります。最大 $1 {{PLURAL:$1|件の結果}}がキャッシュされます。",
        "perfcachedts": "以下のデータはキャッシュされており、最終更新日時は $1 です。最大 $4 {{PLURAL:$4|件の結果}}がキャッシュされます。",
        "querypage-no-updates": "ページの更新は無効になっています。\n以下のデータの更新は現在行われていません。",
        "createacct-yourpasswordagain-ph": "パスワードを再入力",
        "remembermypassword": "このブラウザーにログイン情報を保存 (最長 $1 {{PLURAL:$1|日|日間}})",
        "userlogin-remembermypassword": "ログイン状態を保持",
-       "userlogin-signwithsecure": "SSL (https) 接続を使用",
-       "yourdomainname": "ドメイン:",
+       "userlogin-signwithsecure": "安全な接続の使用",
+       "yourdomainname": "ã\81\82ã\81ªã\81\9fã\81®ã\83\89ã\83¡ã\82¤ã\83³:",
        "password-change-forbidden": "このウィキではパスワードを変更できません。",
-       "externaldberror": "認証データベースでエラーが発生した、または外部アカウントの更新が許可されていません。",
+       "externaldberror": "èª\8d証ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81§ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\97ã\81\9fã\81\8bã\80\81ã\81¾ã\81\9fã\81¯å¤\96é\83¨ã\82¢ã\82«ã\82¦ã\83³ã\83\88ã\81®æ\9b´æ\96°ã\81\8c許å\8f¯ã\81\95ã\82\8cã\81¦ã\81\84ã\81¾ã\81\9bã\82\93ã\80\82",
        "login": "ログイン",
        "nav-login-createaccount": "ログインまたはアカウント作成",
        "userlogin": "ログインまたはアカウント作成",
        "nocookieslogin": "{{SITENAME}}ではログインに Cookie を使用します。\nCookie を無効にしているようです。\nCookie を有効にしてから、もう一度試してください。",
        "nocookiesfornew": "発信元を確認できなかったため、アカウントは作成されませんでした。\nCookieを有効にしていることを確認して、このページを再読込してもう一度試してください。",
        "nocookiesforlogin": "{{int:nocookieslogin}}",
-       "noname": "利用者名を正しく指定していません。",
+       "noname": "有効な利用者名が指定されていません。",
        "loginsuccesstitle": "ログイン成功",
        "loginsuccess": "<strong>{{SITENAME}}に「$1」としてログインしました。</strong>",
        "nosuchuser": "「$1」という名前の利用者は見当たりません。\n利用者名では大文字と小文字を区別します。\n綴りが正しいことを確認するか、[[Special:UserLogin/signup|新たにアカウントを作成]]してください。",
        "changeemail-none": "(なし)",
        "changeemail-password": "{{SITENAME}}のパスワード:",
        "changeemail-submit": "メールアドレスを変更",
-       "changeemail-throttled": "ログインの試行回数が多すぎます。\n$1待ってから再度試してください。",
+       "changeemail-throttled": "ログインの試行回数が多すぎます。\n$1待ってから再度試してください。",
        "resettokens": "トークンの再設定",
        "resettokens-text": "ここでは、アカウントに関連付けられた特定の非公開データにアクセスするためのトークンを再設定できます。\n\nトークンを誤って他人に教えてしまった場合やあなたのアカウントが侵害された場合は、必ず再設定してください。",
        "resettokens-no-tokens": "再設定できるトークンはありません。",
        "savearticle": "ページを保存",
        "preview": "プレビュー",
        "showpreview": "プレビューを表示",
-       "showdiff": "å·®å\88\86を表示",
+       "showdiff": "å¤\89æ\9b´を表示",
        "blankarticle": "<strong>警告:</strong>作成しようとしているページの内容がありません。{{Int:savearticle}}\"をもう一度クリックすると、中身の無いページが作成されます。",
        "anoneditwarning": "<strong>警告:</strong> ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。<strong>[$1 ログイン]</strong>または<strong>[$2 アカウントを作成]</strong>すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。",
        "anonpreviewwarning": "<em>ログインしていません。投稿を保存すると、ご使用中のIPアドレスがこのページの履歴に記録されます。</em>",
        "missingcommentheader": "<strong>注意:</strong> このコメントに対する題名/見出しが空欄です。\n「{{int:savearticle}}」ボタンをもう一度押すと、空のまま編集が保存されます。",
        "summary-preview": "要約のプレビュー:",
        "subject-preview": "題名/見出しのプレビュー:",
-       "previewerrortext": "変更のプレビューを処理中にエラーが発生しました。",
+       "previewerrortext": "å¤\89æ\9b´ã\81®ã\83\97ã\83¬ã\83\93ã\83¥ã\83¼ã\82\92å\87¦ç\90\86中ã\81«ã\80\81ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\97ã\81¾ã\81\97ã\81\9fã\80\82",
        "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": "このIPアドレスは、$1によりブロックされた利用者によって使用されたため、自動的にブロックされています。\n理由は次の通りです。\n\n:<em>$2</em>\n\n* ブロック開始日時: $8\n* ブロック解除予定: $6\n* ブロック対象: $7\n\n$1または他の[[{{MediaWiki:Grouppage-sysop}}|管理者]]にこのブロックについて問い合わせることができます。\n\nただし、[[Special:Preferences|個人設定]]に正しいメールアドレスが登録されていない場合、またはメール送信がブロックされている場合、「この利用者にメールを送信」機能を使用できないことに注意してください。\n\n現在ご使用中のIPアドレスは$3 、このブロックIDは#$5です。\nお問い合わせの際は、上記の情報を必ず書いてください。",
        "currentrev-asof": "$1時点における最新版",
        "revisionasof": "$1時点における版",
        "revision-info": "$1時点における{{GENDER:$6|$2}}による版$7",
-       "previousrevision": "←前の版",
-       "nextrevision": "次ã\81®ç\89\88→",
+       "previousrevision": "← 古い版",
+       "nextrevision": "æ\96°ã\81\97ã\81\84ç\89\88 →",
        "currentrevisionlink": "最新版",
        "cur": "最新",
        "next": "次",
        "histlast": "最新",
        "historysize": "({{PLURAL:$1|$1バイト}})",
        "historyempty": "(空)",
-       "history-feed-title": "変更履歴",
+       "history-feed-title": "版の履歴",
        "history-feed-description": "このウィキのこのページに関する変更履歴",
        "history-feed-item-nocomment": "$2に$1による",
        "history-feed-empty": "要求されたページは存在しません。\nこのウィキから既に削除されたか、名前が変更された可能性があります。\n[[Special:Search|このウィキの検索]]で関連する新しいページを探してみてください。",
        "history-edit-tags": "選択した版のタグを編集",
        "rev-deleted-comment": "(要約は除去されています)",
        "rev-deleted-user": "(利用者名は除去されています)",
-       "rev-deleted-event": "(記録の詳細は除去されています)",
+       "rev-deleted-event": "(ログの詳細は除去されています)",
        "rev-deleted-user-contribs": "[利用者名またはIPアドレスは除去されました - その編集は投稿記録で非表示にされています]",
        "rev-deleted-text-permission": "この版は<strong>削除されています</strong>。\n[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。",
        "rev-suppressed-text-permission": "この版は<strong>秘匿されています</strong>。[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]に詳細情報があるかもしれません。",
        "rev-suppressed-unhide-diff": "この差分の一方の版は<strong>秘匿されています</strong>。\n[{{fullurl:{{#Special:Log}}/suppress|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}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]に詳細情報があるかもしれません。",
-       "rev-delundel": "表示/非表示",
+       "rev-delundel": "表示/非表示 の変更",
        "rev-showdeleted": "表示",
        "revisiondelete": "版の削除と復元",
-       "revdelete-nooldid-title": "無効な対象版",
+       "revdelete-nooldid-title": "無効な対象版",
        "revdelete-nooldid-text": "この操作の対象となる版を指定していないか、指定した版が存在しないか、または最新版を非表示にしようとしています。",
        "revdelete-no-file": "指定されたファイルは存在しません。",
        "revdelete-show-file-confirm": "ファイル「<nowiki>$1</nowiki>」の削除された$2$3の版を本当に閲覧しますか?",
        "revdelete-hide-user": "投稿者の利用者名/IPアドレス",
        "revdelete-hide-restricted": "他の利用者と同様に管理者からもデータを隠す",
        "revdelete-radio-same": "(変更しない)",
-       "revdelete-radio-set": "é\9d\9eå\85¬é\96\8b",
+       "revdelete-radio-set": "é\9a ã\81\99",
        "revdelete-radio-unset": "閲覧可能",
        "revdelete-suppress": "他の利用者と同様に管理者からもデータを隠す",
        "revdelete-unsuppress": "復元版に対する制限を除去",
        "search-category": "(カテゴリ $1)",
        "search-file-match": "(ファイルの内容との一致)",
        "search-suggest": "もしかして: $1",
+       "search-rewritten": "$1 の結果を表示しています。これは $2 の代わりに検索したものです。",
        "search-interwiki-caption": "姉妹プロジェクト",
        "search-interwiki-default": "$1からの結果:",
        "search-interwiki-more": "(続き)",
        "rows": "行数:",
        "columns": "列数:",
        "searchresultshead": "検索",
-       "stub-threshold": "<a href=\"#\" class=\"stub\">スタブリンク</a>として表示する閾値 (バイト):",
+       "stub-threshold": "スタブリンク形式 ($1)として表示する閾値 :",
+       "stub-threshold-sample-link": "サンプル",
        "stub-threshold-disabled": "無効",
        "recentchangesdays": "最近の更新に表示する日数:",
        "recentchangesdays-max": "(最大 $1 {{PLURAL:$1|日|日間}})",
        "prefs-help-watchlist-token2": "これはあなたのウォッチリスト フィードの秘密のコードです。\nこのトークンを知っている人は誰でもあなたのウォッチリストを読めてしまうため、他の人に教えないでください。\n[[Special:ResetTokens|トークンを再設定する必要がある場合はここをクリックしてください]]。",
        "savedprefs": "個人設定を保存しました。",
        "timezonelegend": "タイムゾーン:",
-       "localtime": "ローカルの時刻:",
+       "localtime": "地域の時刻:",
        "timezoneuseserverdefault": "ウィキの既定を使用 ($1)",
        "timezoneuseoffset": "その他 (時差を指定)",
        "servertime": "サーバーの時刻:",
        "default": "既定",
        "prefs-files": "ファイル",
        "prefs-custom-css": "カスタムCSS",
-       "prefs-custom-js": "カスタムJS",
+       "prefs-custom-js": "カスタムJavaScript",
        "prefs-common-css-js": "すべての外装に共通のCSSとJavaScript:",
        "prefs-reset-intro": "このページを使用すると、自分の個人設定をこのサイトの初期設定に戻せます。\nこの操作は取り消せません。",
        "prefs-emailconfirm-label": "メールアドレスの確認:",
        "prefs-advancedediting": "全般オプション",
        "prefs-editor": "エディター",
        "prefs-preview": "プレビュー",
-       "prefs-advancedrc": "詳細設定",
-       "prefs-advancedrendering": "詳細設定",
+       "prefs-advancedrc": "詳細設定",
+       "prefs-advancedrendering": "詳細設定",
        "prefs-advancedsearchoptions": "詳細設定",
-       "prefs-advancedwatchlist": "詳細設定",
+       "prefs-advancedwatchlist": "詳細設定",
        "prefs-displayrc": "表示の設定",
        "prefs-displaywatchlist": "表示の設定",
        "prefs-tokenwatchlist": "トークン",
        "userrights-groupsmember-type": "$1",
        "userrights-groups-help": "この利用者が属するグループを変更できます。\n* チェックが入っているボックスは、この利用者がそのグループに属していることを意味します。\n* チェックが入っていないボックスは、この利用者がそのグループに属していないことを意味します。\n* 「*」はグループに一旦追加した場合に除去 (あるいはその逆) ができないことを示しています。",
        "userrights-reason": "理由:",
-       "userrights-no-interwiki": "他ウィキ上における利用者権限の編集権限はありません。",
+       "userrights-no-interwiki": "ä»\96ã\82¦ã\82£ã\82­ä¸\8aã\81«ã\81\8aã\81\91ã\82\8bå\88©ç\94¨è\80\85権é\99\90ã\81®ç·¨é\9b\86権é\99\90ã\81¯ã\80\81ã\81\82ã\82\8aã\81¾ã\81\9bã\82\93ã\80\82",
        "userrights-nodatabase": "データベース$1は存在しないか、ローカル上にありません。",
        "userrights-nologin": "利用者権限を付与するには、管理者アカウントで[[Special:UserLogin|ログイン]]する必要があります。",
        "userrights-notallowed": "あなたには利用者権限を追加/除去する権限がありません。",
        "uploaded-script-svg": "アップロードされたSVGファイルにスクリプト可能な要素「$1」が見つかりました。",
        "uploaded-hostile-svg": "アップロードされたSVGファイルのスタイル要素に安全ではないCSSが見つかりました。",
        "uploaded-event-handler-on-svg": "イベントハンドラをセットする属性 <code>$1=\"$2\"</code> は、SVGファイルを許可されていません。",
+       "uploaded-href-attribute-svg": "ローカル以外のターゲット(http://、javascript: など) と href 属性の <code>&lt;$1 $2=\"$3\"&gt;</code> は、SVGファイルで許可されません。",
+       "uploaded-href-unsafe-target-svg": "アップロードされたSVGファイルに、安全ではないターゲット <code>&lt;$1 $2=\"$3\"&gt;</code> の href が見つかりました。",
+       "uploaded-animate-svg": "アップロードされたSVGファイルに、「from」属性 <code>&lt;$1 $2=\"$3\"&gt;</code> を使用した、href を変更させる可能性がある「animate」タグが見つかりました。",
+       "uploaded-setting-event-handler-svg": "アップロードされたSVGファイルに、ブロックされているイベントハンドラ属性が設定された <code>&lt;$1 $2=\"$3\"&gt;</code> が見つかりました。",
+       "uploaded-setting-href-svg": "親要素に「href」属性を追加する「set」タグの使用がブロックされています。",
+       "uploaded-wrong-setting-svg": "リモート/データ/スクリプトのターゲットを任意の属性に追加する「set」タグの使用がブロックされています。アップロードされたSVGファイルに <code>&lt;set to=\"$1\"&gt;</code> が見つかりました。",
+       "uploaded-setting-handler-svg": "リモート/データ/スクリプトの「handler」属性を設定するSVGがブロックされています。アップロードされたSVGファイルに <code>$1=\"$2\"</code> が見つかりました。",
+       "uploaded-remote-url-svg": "リモート URL の任意のスタイルを設定するSVGがブロックされています。アップロードされたSVGファイルに <code>$1=\"$2\"</code> が見つかりました。",
+       "uploaded-image-filter-svg": "URL に画像フィルターが見つかりました: アップロードされたSVGファイルの <code>&lt;$1 $2=\"$3\"&gt;</code>。",
        "uploadscriptednamespace": "この SVG ファイルは無効な名前空間「$1」を含んでいます。",
        "uploadinvalidxml": "アップロードされたファイルに含まれる XML が構文解析できませんでした。",
        "uploadvirus": "このファイルはウイルスを含んでいます!\n詳細: $1",
        "unusedimages": "使われていないファイル",
        "wantedcategories": "カテゴリページが存在しないカテゴリ",
        "wantedpages": "ページが存在しないリンク",
+       "wantedpages-summary": "そのページのみへのリダイレクトリンクを含むページを除いた、ほとんどリンクが存在しないページの一覧です。そのページへのリダイレクトリンクを含む存在しないページの一覧は、[[{{#special:BrokenRedirects}}|迷子のリダイレクトの一覧]]を参照してください。",
        "wantedpages-badtitle": "結果が、無効なページ名を含んでいます: $1",
        "wantedfiles": "ファイル情報ページが存在しないファイル",
        "wantedfiletext-cat": "以下のファイルは使用されていますが存在しません。外部リポジトリ由来のファイルは、存在していてもここに列挙される場合があります。その場合は<del>取り消し線</del>が付きます。さらに、存在しないファイルを埋め込んでいるページは[[:$1]]に列挙されます。",
        "tags-edit-success": "変更が正常に適用されました。",
        "tags-edit-failure": "変更は適用できませんでした: $1",
        "tags-edit-nooldid-title": "無効な対象版",
+       "tags-edit-nooldid-text": "この関数を実行しましたが、対象の版が指定されていない、あるいは指定された版が存在しません。",
        "tags-edit-none-selected": "追加または削除するには、少なくとも1つ以上のタグを選択してください。",
        "comparepages": "ページの比較",
        "compare-page1": "ページ 1",
        "logentry-newusers-create2": "利用者アカウント $3 が $1 により{{GENDER:$2|作成されました}}",
        "logentry-newusers-byemail": "利用者アカウント $3 が $1 によって{{GENDER:$2|作成され}}、そのパスワードがメールで送信されました",
        "logentry-newusers-autocreate": "利用者アカウント $1 が自動的に{{GENDER:$2|作成されました}}",
+       "logentry-protect-move_prot": "$1 が保護設定を $4 から $3 に{{GENDER:$2|移動しました}}",
        "logentry-rights-rights": "$1 が $3 の所属グループを $4 から $5 に{{GENDER:$2|変更しました}}",
        "logentry-rights-rights-legacy": "$1 が $3 の所属グループを{{GENDER:$2|変更しました}}",
        "logentry-rights-autopromote": "$1 が $4 から $5 に自動的に{{GENDER:$2|昇格しました}}",
        "logentry-managetags-activate": "$1 がタグ \"$4\" の利用者およびボットによる使用を{{GENDER:$2|有効化しました}}。",
        "logentry-managetags-deactivate": "$1 がタグ \"$4\" の利用者およびボットによる使用を{{GENDER:$2|無効化しました}}。",
        "log-name-tag": "タグ記録",
+       "log-description-tag": "このページには、個々の版またはエントリーの記録から、利用者を追加または削除した[[Special:Tags|タグ]]が表示されます。編集の一部、削除、同様の操作として発生したときの操作はタグ付けされず、記録には表示されません。",
        "logentry-tag-update-add-revision": "$1 がページ $3 の版 $4 に{{PLURAL:$7|タグ}} $6 を{{GENDER:$2|追加しました}}",
        "logentry-tag-update-add-logentry": "$1 がページ $3 の記録項目 $5 に{{PLURAL:$7|タグ}} $6 を{{GENDER:$2|追加しました}}",
        "logentry-tag-update-remove-revision": "$1 がページ $3 の版 $4 から{{PLURAL:$9|タグ}} $8 を{{GENDER:$2|除去しました}}",
        "logentry-tag-update-remove-logentry": "$1 がページ $3 の記録項目 $5 から{{PLURAL:$9|タグ}} $8 を{{GENDER:$2|除去しました}}",
+       "logentry-tag-update-revision": "$1 がページ「$3」の版 $4 でのタグを{{GENDER:$2|更新しました}} ($6 が{{PLURAL:$7|追加}}、$8 が{{PLURAL:$9|削除}})",
+       "logentry-tag-update-logentry": "$1 がページ「$3」のエントリー $5 での記録のタグを{{GENDER:$2|更新しました}} ($6 が{{PLURAL:$7|追加}}、$8 が{{PLURAL:$9|削除}})",
        "rightsnone": "(なし)",
        "revdelete-summary": "編集内容の要約",
        "feedback-adding": "ページへのフィードバックの追加...",
        "api-error-stashfailed": "内部エラー: サーバーは一時ファイルを格納できませんでした。",
        "api-error-publishfailed": "内部エラー: サーバーは一時ファイルを発行できませんでした。",
        "api-error-stasherror": "ファイルを未公開アップロードする際にエラーが発生しました。",
+       "api-error-stashedfilenotfound": "未公開場所からアップロードしようとしましたが、隠しファイルが見つかりませんでした。",
+       "api-error-stashpathinvalid": "隠しファイルのパスが無効です。",
        "api-error-stashfilestorage": "未公開ファイルを格納する際にエラーが発生しました。",
+       "api-error-stashzerolength": "長さが0であるため、サーバーはファイルを隠しておくことができませんでした。",
        "api-error-stashnotloggedin": "未公開ファイルを保存するにはログインが必要です。",
+       "api-error-stashwrongowner": "未公開場所にアクセスしようとしていたファイルは、あなたに属していません。",
+       "api-error-stashnosuchfilekey": "未公開場所にアクセスしようとしていたファイルのキーが存在しません。",
        "api-error-timeout": "サーバーが決められた時間内に応答しませんでした。",
        "api-error-unclassified": "不明なエラーが発生しました。",
        "api-error-unknown-code": "不明なエラー:「$1」",
        "expand_templates_generate_xml": "XML 構文解析ツリーを表示",
        "expand_templates_generate_rawhtml": "HTML ソースを表示",
        "expand_templates_preview": "プレビュー",
+       "expand_templates_preview_fail_html": "<em>{{SITENAME}} ではHTMLソースが有効になっており、セッションデータの損失が生じているので、JavaScript の攻撃に対する予防措置としてプレビューは表示されません。</em>\n\n<strong>これが合法的なプレビューの試みである場合には、もう一度試してください。</strong>\nそれでも動作しない場合は、[[Special:UserLogout|ログアウト]]して再度ログインしてみてください。",
+       "expand_templates_preview_fail_html_anon": "<em>{{SITENAME}} ではHTMLソースが有効になっており、ログインしていないため、JavaScript の攻撃に対する予防措置としてプレビューは表示されません。</em>\n\n<strong>これが合法的なプレビューの試みである場合には、[[Special:UserLogin|ログイン]]してもう一度試してください。</strong>",
        "pagelanguage": "ページ言語選択",
        "pagelang-name": "ページ",
        "pagelang-language": "言語",
index 12848c4..2a748b4 100644 (file)
        "jumpto": "Мұнда ауысу:",
        "jumptonavigation": "шарлау",
        "jumptosearch": "іздеу",
-       "view-pool-error": "Кешіріңіз, қазір серверлер шектен тыс жүктелуде.\nОсы бетті қарауға өте көп сұраныс жасалды.\nӨтініш, күте тұрыңыз және осы бетке кіруге қайта әрекет жасаңыз.\n\n$1",
+       "view-pool-error": "Кешіріңіз, қазір серверлер шектен тыс жүктелуде.\nОсы бетті қарауға өте көп сұраныс жасалды.\nКүте тұрып осы бетке қайта қатынауға қайта әрекет жасаңыз.\n\n$1",
        "generic-pool-error": "Кешіріңіз, қазір серверлер шектен тыс жүктелуде.\nОсы бетті қарауға өте көп сұраныс жасалды.\nӨтініш, күте тұрыңыз және осы бетке кіруге қайта әрекет жасаңыз.",
        "pool-timeout": "Құлыпталу уақытын күту мерзімі өтті",
        "pool-queuefull": "Сұранымдар жинақтауышысы толық",
        "createacct-benefit-body2": "{{PLURAL:$1|бет|бет}}",
        "createacct-benefit-body3": "жуықтағы {{PLURAL:$1|қатысушы|қатысушы}}",
        "badretype": "Енгізген құпия сөздеріңіз бір-біріне сәйкес емес.",
+       "usernameinprogress": "Бұл қатысушы есіміне тіркелгі жасау әлдеқашан басталды. Күте тұрыңыз.",
        "userexists": "Енгізген қатысушы атыңыз әлдеқашан пайдалануда.\nӨзге атауды таңдаңыз.",
        "loginerror": "Кіру қатесі",
        "createacct-error": "Тіркелгі жасауада қате кетті",
        "search-category": "(Санат:$1)",
        "search-file-match": "(файлдың мазмұны сәйкес келеді)",
        "search-suggest": "Мүмкін осы болар: $1",
+       "search-rewritten": "$1 дегенге қатысты нәтижелер көрсетілуде. $2 дегенмен бірге іздеу.",
        "search-interwiki-caption": "Бауырлас жобалар",
        "search-interwiki-default": "$1 дегеннен нәтиже:",
        "search-interwiki-more": "(көбірек)",
        "newpageletter": "Ж",
        "boteditletter": "б",
        "number_of_watching_users_pageview": "[бақылаған $1 қатысушы]",
-       "rc_categories": "Санаттарға шектеу (\"|\" белгісімен бөліктеңіз)",
-       "rc_categories_any": "Ð\9aез ÐºÐµÐ»Ð³ÐµÐ½",
+       "rc_categories": "Санаттарға шектеу («|» белгісімен бөлектеңіз):",
+       "rc_categories_any": "ТаңдалÒ\93аннÑ\8bÒ£ ÐºÐµÐ· ÐºÐµÐ»Ð³ÐµÐ½Ñ\96",
        "rc-change-size-new": "Өңдеуден кейінгі көлемі: $1 {{PLURAL:$1|байт|байт}}",
        "newsectionsummary": "/* $1 */ жаңа бөлім",
        "rc-enhanced-expand": "Толық ақпаратты көрсету",
        "upload-too-many-redirects": "URL шектен тыс жылжытуларға ие",
        "upload-http-error": "HTTP қатесі кездесті: $1",
        "upload-copy-upload-invalid-domain": "Бұл домейннен еселеп жүктеу қолжетімді емес.",
+       "upload-dialog-title": "Файл жүктеу",
+       "upload-dialog-error": "Белгісіз қате кездесті",
+       "upload-dialog-warning": "Ескерту кездесті",
+       "upload-dialog-button-cancel": "Қажет емес",
+       "upload-dialog-button-done": "Бітті",
+       "upload-dialog-button-save": "Сақтау",
+       "upload-dialog-button-upload": "Жүктеу",
+       "upload-dialog-label-select-file": "Файлды таңдау",
+       "upload-dialog-label-infoform-title": "Егжей-тегжейі",
+       "upload-dialog-label-infoform-name": "Атауы",
+       "upload-dialog-label-infoform-description": "Сипаттамасы",
+       "upload-dialog-label-usage-title": "Қолданылуы",
+       "upload-dialog-label-usage-filename": "Файл атауы",
        "backend-fail-stream": "«$1» файлы ақпады.",
        "backend-fail-backup": "«$1» файлының сақтық есесі жасалмады.",
        "backend-fail-notexists": "$1 файлы бар емес.",
        "undeletepagetext": "Келесі {{PLURAL:$1|бет жойылған бірақ|$1 бет жойылған бірақ}} мағлұматы мұрағатта бар\nжәне қалпына келтіруге болады. Мұрағат ұдайы тазаланып тұруы мүмкін.",
        "undelete-fieldset-title": "Нұсқаларды қалпына келтіру",
        "undeleteextrahelp": "Толық бет тарихын қалпына келтіру үшін барлық құсбелгі көздерді босатып <strong><em>{{int:undeletebtn}}</em></strong> батырмасын нұқыңыз.\nБөлектеумен қалпына келтіруді орындау үшін қалпына келтіру керек түзетулеріне сәйкес көздерге құсбелгімен белгілеп <strong><em>{{int:undeletebtn}}</em></strong> батырмасын басыңыз.",
-       "undeleterevisions": "$1 түзету мұрағатталды",
+       "undeleterevisions": "$1 {{PLURAL:$1|нұсқа|нұсқа}} жойылды",
        "undeletehistory": "Егер бетті қалпына келтірсеңіз тарихындағы барлық түзетулер де қалпына келтіріледі. Егер жоюдан соң дәл солай атауымен жаңа бет басталса қалпына келтірілген түзетулер бұрынғы өңделу тарихында көрсетіледі.",
        "undeleterevdel": "Егер бұл үстіңгі бетте аяқталса, не файл түзетуі жарым-жартылай жойылған болса, жою болдырмауы орындалмайды.\nОсындай жағдайларда, ең жаңа жойылған түзетуін алып тастауыңыз не жасыруын болдырмауыңыз жөн.",
        "undeletehistorynoadmin": "Бұл бет жойылған.\nЖою себебі алдындағы өңдеген қатысушылар егжей-тегжейлерімен бірге төмендегі қысқаша мазмұндамасында көрсетілген.\nМына жойылған түзетулерін көкейкесті мәтіні тек әкімшілерге жетімді.",
        "anonymous": "{{SITENAME}} тіркелгісіз {{PLURAL:$1|қатысушысы|қатысушылары}}",
        "siteuser": "{{SITENAME}} қатысушы $1",
        "anonuser": "{{SITENAME}} анонимді қатысушы: $1",
-       "lastmodifiedatby": "Бұл бетті $3 қатысушы соңғы өзгерткен кезі: $2, $1.",
+       "lastmodifiedatby": "Бұл бетті $3 есімді қатысушы соңғы өзгерткен кезі: $2, $1.",
        "othercontribs": "Шығарма негізін $1 жазған.",
        "others": "басқалар",
        "siteusers": "{{SITENAME}} {{PLURAL:$2|қатысушысы|қатысушылары}} $1",
        "revdelete-unrestricted": "әкімшілерден тиымдарды аластады",
        "logentry-block-block": "$1 {{GENDER:$4|$3}} дегенді $5 $6 мерзімге {{GENDER:$2|бұғаттады}}",
        "logentry-block-unblock": "$1 {{GENDER:$4|$3}} деген қатысушыны {{GENDER:$2|бұғатынан босатты}}",
-       "logentry-block-reblock": "$1 {{GENDER:$4|$3}} дегеннің бұғаттау параметрлерін біту уақытын $5 $6 мерзіміне {{GENDER:$2|өзгерті}}",
+       "logentry-block-reblock": "$1 {{GENDER:$4|$3}} Ð´ÐµÐ³ÐµÐ½Ð½Ñ\96Ò£ Ð±Ò±Ò\93аÑ\82Ñ\82аÑ\83 Ð¿Ð°Ñ\80амеÑ\82Ñ\80леÑ\80Ñ\96н Ð±Ñ\96Ñ\82Ñ\83 Ñ\83аÒ\9bÑ\8bÑ\82Ñ\8bн $5 $6 Ð¼ÐµÑ\80зÑ\96мÑ\96не {{GENDER:$2|өзгеÑ\80Ñ\82Ñ\82Ñ\96}}",
        "logentry-suppress-block": "$1 {{GENDER:$4|$3}} дегенді $5 $6 мерзімге {{GENDER:$2|бұғаттады}}",
        "logentry-suppress-reblock": "$1 {{GENDER:$4|$3}} есімді қатысушының бұғаттау параметрлерінің біту уақытын $5 $6 мерзіміне {{GENDER:$2|өзгертті}}",
        "logentry-import-upload": "$1 $3 файл жүктемесі арқылы {{GENDER:$2|импорттады}}",
        "logentry-newusers-create2": "$1 $3 деген аккаунт {{GENDER:$2|тіркеді}}",
        "logentry-newusers-byemail": "$1 $3 деген аккаунт {{GENDER:$2|тіркеді}} және құпия сөзі е-пошта арқылы жіберілді",
        "logentry-newusers-autocreate": "$1 қатысушы аккаунтын автоматты түрде {{GENDER:$2|тіркеді}}",
+       "logentry-protect-move_prot": "$1 protection settings from $4 дегеннен $3 дегенге қорғалу баптауларын {{GENDER:$2|жылжытты}}",
        "logentry-rights-rights": "$1 $3 үшін топ мүшелігін $4 дегеннен $5 дегенге {{GENDER:$2|өзгертті}}",
-       "logentry-rights-rights-legacy": "$1 $3 үшін топ мүшелігін {{GENDER:$2|өзгерті}}",
+       "logentry-rights-rights-legacy": "$1 $3 Ò¯Ñ\88Ñ\96н Ñ\82оп Ð¼Ò¯Ñ\88елÑ\96гÑ\96н {{GENDER:$2|өзгеÑ\80Ñ\82Ñ\82Ñ\96}}",
        "logentry-rights-autopromote": "$1 $4 дегенен $5 дегенге автоматты түрде {{GENDER:$2|деңгейі көтерілген}}",
        "logentry-upload-upload": "$1 $3 файлын {{GENDER:$2|жүктеді}}",
        "logentry-upload-overwrite": "$1 $3 дегеннің жаңа нұсқасын {{GENDER:$2|жүктеді}}",
        "special-characters-title-endash": "дефис",
        "special-characters-title-emdash": "сызықша",
        "special-characters-title-minus": "минус белгісі",
+       "mw-widgets-dateinput-no-date": "Ай-күн таңдалмаған",
        "mw-widgets-dateinput-placeholder-day": "ЖЖЖЖ-АА-КК",
        "mw-widgets-dateinput-placeholder-month": "ЖЖЖЖ-АА",
        "mw-widgets-titleinput-description-new-page": "бет жоқ екен",
index 666aac4..6acf87f 100644 (file)
        "markaspatrolleddiff": "ចំណាំថាបានល្បាត",
        "markaspatrolledtext": "ចំណាំទំព័រនេះថាបានល្បាត",
        "markedaspatrolled": "បានចំណាំថាបានល្បាត",
-       "rcpatroldisabled": "á\9e\94á\9f\86លាស់ប្តូរថ្មីៗនៃការតាមដានមិនត្រូវបានអនុញ្ញាតទេ",
+       "rcpatroldisabled": "á\9e\94á\9e\93á\9f\92លាស់ប្តូរថ្មីៗនៃការតាមដានមិនត្រូវបានអនុញ្ញាតទេ",
        "markedaspatrollederror": "មិនអាចគូសចំណាំថាបានល្បាត",
        "patrol-log-page": "កំណត់ហេតុនៃការតាមដាន",
        "patrol-log-header": "នេះជាកំណត់ហេតុនៃកំណែ​ប្រែ​ដែល​បាន​តាមដាន",
        "size-kilobytes": "$1គីឡូបៃ",
        "size-megabytes": "$1មេកាបៃ",
        "size-gigabytes": "$1ជីកាបៃ",
-       "lag-warn-normal": "á\9e\94á\9f\86á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8fá\9e¼á\9e\9aá\9e\90á\9f\92á\9e\98á\9e¸á\9e\87á\9e¶á\9e\84 {{PLURAL:$1|second|á\9e\9cá\9e·á\9e\93á\9e¶á\9e\91á\9e¸}}អាចមិនត្រូវបានបង្ហាញក្នុងបញ្ជីនេះ​។",
+       "lag-warn-normal": "á\9e\94á\9e\93á\9f\92á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8fá\9e¼á\9e\9aá\9e\80á\9f\92á\9e\9aá\9f\84á\9e\99 {{PLURAL:$1|á\9e\98á\9e½á\9e\99á\9e\9cá\9e·á\9e\93á\9e¶á\9e\91á\9e¸|á\9e\9cá\9e·á\9e\93á\9e¶á\9e\91á\9e¸}}á\9e\98á\9e»á\9e\93 អាចមិនត្រូវបានបង្ហាញក្នុងបញ្ជីនេះ​។",
        "lag-warn-high": "ដោយសារប្រព័ន្ធបំរើការមូលដ្ឋានទិន្នន័យមានភាពយឺតយ៉ាវខ្លាំង បន្លាស់ប្ដូរដែលថ្មីជាង $1 វិនាទីមិនអាចបង្ហាញនៅក្នុងបញ្ជីនេះបានទេ។",
        "watchlistedit-normal-title": "កែប្រែបញ្ជីតាមដាន",
        "watchlistedit-normal-legend": "ដកចំណងជើងចេញពីបញ្ជីតាមដាន",
        "specialpages-group-maintenance": "របាយការណ៍នានាអំពីតំហែទាំ",
        "specialpages-group-other": "ទំព័រពិសេសៗផ្សេងៗទៀត",
        "specialpages-group-login": "កត់ឈ្មោះចូល / បង្កើតគណនី",
-       "specialpages-group-changes": "á\9e\94á\9f\86លាស់ប្តូរថ្មីៗនិងកំណត់ហេតុ",
+       "specialpages-group-changes": "á\9e\94á\9e\93á\9f\92លាស់ប្តូរថ្មីៗនិងកំណត់ហេតុ",
        "specialpages-group-media": "របាយការណ៍មេឌានិងការផ្ទុកឯកសារ",
        "specialpages-group-users": "អ្នកប្រើប្រាស់និងសិទ្ធិ",
        "specialpages-group-highuse": "ទំព័រដែលត្រូវបានប្រើច្រើន",
        "expand_templates_ok": "យល់ព្រម",
        "expand_templates_remove_comments": "ដកចេញ វិចារនានា",
        "expand_templates_preview": "បង្ហាញការមើលជាមុន",
+       "pagelanguage": "ឧបករណ៍ជ្រើសរើសភាសាទំព័រ",
+       "pagelang-language": "ភាសា",
+       "pagelang-use-default": "ប្រើភាសាតាមលំនាំដើម",
+       "right-pagelang": "ប្ដូរភាសាទំព័រ",
+       "log-name-pagelang": "កំណត់ហេតុបន្លាស់ប្ដូរភាសា",
+       "log-description-pagelang": "នេះជាកំណត់ហេតុបន្លាស់ប្ដូរភាសាទំព័រ។",
        "special-characters-group-latin": "អក្សរឡាតាំង",
        "special-characters-group-latinextended": "អក្សរឡាតាំងផ្សេងទៀត",
        "special-characters-group-ipa": "អក្ខរក្រមសំលេងអន្តរជាតិ",
index 35d5b26..50d183a 100644 (file)
        "loginreqlink": "로그인",
        "loginreqpagetext": "다른 문서를 보기 위해서는 $1해야 합니다.",
        "accmailtitle": "비밀번호를 보냈습니다",
-       "accmailtext": "[[User talk:$1|$1]] 사용자의 비밀번호를 임의로 만들어 $2(으)로 보냈습니다. 로그인하고 나서 [[Special:ChangePassword|비밀번호를 바꿀]] 수 있습니다.",
+       "accmailtext": "[[User talk:$1|$1]] 사용자의 비밀번호를 임의로 만들어 $2(으)로 보냈습니다. 로그인하고 나서 <em>[[Special:ChangePassword|비밀번호를 바꿀]]</em> 수 있습니다.",
        "newarticle": "(새 문서)",
        "newarticletext": "아직 없는 문서의 링크를 따라왔습니다.\n새 문서를 만들려면 아래 상자에 내용을 입력하면 됩니다. (자세한 내용은 [$1 도움말 문서]를 참조하세요)\n만약 잘못 찾아왔다면, 브라우저의 '''뒤로''' 버튼을 눌러 주세요.",
        "anontalkpagetext": "----\n여기는 계정을 만들지 않았거나 사용하고 있지 않은 익명 사용자를 위한 토론 문서입니다.\n익명 사용자를 구별하기 위해서는 숫자로 된 IP 주소를 사용해야만 합니다.\nIP 주소는 여러 사용자가 공유할 수 있습니다.\n자신과 관계없는 의견이 자신에게 남겨져 있어 불쾌하다고 생각하는 익명 사용자는 [[Special:UserLogin/signup|계정을 만들고]] [[Special:UserLogin|로그인해서]] 나중에 다른 익명 사용자에게 줄 혼란을 줄일 수 있습니다.",
        "missing-revision": "\"{{FULLPAGENAME}}\"이라는 문서의 #$1판이 존재하지 않습니다.\n\n이 문제는 주로 삭제된 문서를 가리키는 오래된 문서 역사 링크로 인해 발생합니다.\n자세한 내용은 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 삭제 기록]에서 확인할 수 있습니다.",
        "userpage-userdoesnotexist": "\"$1\" 사용자 계정은 등록되어 있지 않습니다.\n이 문서를 만들거나 편집하려면 계정이 존재하는지 확인해주세요.",
        "userpage-userdoesnotexist-view": "\"$1\" 사용자 계정은 등록되어 있지 않습니다.",
-       "blocked-notice-logextract": "이 사용자는 현재 차단되어 있습니다.\n해당 사용자의 최근 차단 기록을 참하십시오:",
+       "blocked-notice-logextract": "이 사용자는 현재 차단되어 있습니다.\n해당 사용자의 최근 차단 기록을 참하십시오:",
        "clearyourcache": "<strong>참고:</strong> 설정을 저장한 후에 바뀐 점을 확인하기 위해서는 브라우저의 캐시를 새로 고쳐야 합니다.\n* <strong>Firefox / Safari</strong>: <em>Shift</em> 키를 누르면서 새로 고침을 클릭하거나, <em>Ctrl-F5</em> 또는 <em>Ctrl-R</em> 을 입력 (Mac에서는 <em>⌘-R</em>)\n* <strong>Google Chrome</strong>: <em>Ctrl-Shift-R</em>키를 입력 (Mac에서는 <em>⌘-Shift-R</em>)\n* <strong>Internet Explorer</strong>: <em>Ctrl</em> 키를 누르면서 새로 고침을 클릭하거나, <em>Ctrl-F5</em>를 입력.\n* <strong>Opera</strong>: <em>도구→설정</em>에서 캐시를 비움",
        "usercssyoucanpreview": "'''안내''': CSS 문서를 저장하기 전에 \"{{int:showpreview}}\" 기능을 통해 작동을 확인해주세요.",
        "userjsyoucanpreview": "'''안내''': 자바스크립트 문서를 저장하기 전에 \"{{int:showpreview}}\" 기능을 통해 작동을 확인해주세요.",
        "longpageerror": "'''오류: 문서의 크기가 {{PLURAL:$1|$1킬로바이트}}로 최대 크기인 {{PLURAL:$2|$2킬로바이트}}보다 큽니다.'''\n저장할 수 없습니다.",
        "readonlywarning": "'''경고: 데이터베이스가 관리를 위해 잠겨 있습니다. 따라서 문서를 편집한 내용을 지금 저장할 수 없습니다.'''\n편집 내용을 복사하여 붙여넣기 등을 사용하여 일단 다른 곳에 저장한 후, 나중에 다시 시도해 주세요.\n\n잠근 관리자가 남긴 설명은 다음과 같습니다: $1",
        "protectedpagewarning": "<strong>경고: 이 문서는 관리자 권한이 있는 사용자만 편집할 수 있도록 보호되어 있습니다.</strong>\n이 문서의 최근 기록을 참조하십시오:",
-       "semiprotectedpagewarning": "<strong>참고:</strong> 이 문서는 계정을 등록한 사용자만이 편집할 수 있도록 잠겨 있습니다.\n이 문서의 최근 기록을 참하십시오:",
+       "semiprotectedpagewarning": "<strong>참고:</strong> 이 문서는 계정을 등록한 사용자만이 편집할 수 있도록 잠겨 있습니다.\n이 문서의 최근 기록을 참하십시오:",
        "cascadeprotectedwarning": "<strong>경고:</strong> 이 문서는 잠겨 있어 관리자만 편집할 수 있습니다. 연쇄적 보호가 걸린 다음 {{PLURAL:$1|문서}}에서 이 문서를 사용하고 있습니다:",
        "titleprotectedwarning": "<strong>경고: 이 문서는 잠겨 있어, 문서를 만드려면 [[Special:ListGroupRights|특정 권한]]이 필요합니다.</strong>\n아래 문서의 최근 기록을 참조하십시오:",
        "templatesused": "이 문서에서 사용한 {{PLURAL:$1|틀}}:",
        "uploadstash-refresh": "파일 목록을 새로 고침",
        "invalid-chunk-offset": "청크 오프셋이 잘못되었습니다.",
        "img-auth-accessdenied": "접근이 거부됨",
-       "img-auth-nopathinfo": "PATH_INFO를 잃었습니다.\n서버가 이 정보를 받을 수 있도록 설정되어 있지 않습니다.\n이러한 경우는 서버가 CGI 기반이고 img_auth를 지원하지 않을 때 나타날 수 있습니다.\nhttps://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization 을 참하십시오.",
+       "img-auth-nopathinfo": "PATH_INFO를 잃었습니다.\n서버가 이 정보를 받을 수 있도록 설정되어 있지 않습니다.\n이러한 경우는 서버가 CGI 기반이고 img_auth를 지원하지 않을 때 나타날 수 있습니다.\nhttps://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization 을 참하십시오.",
        "img-auth-notindir": "요청한 경로가 설정한 올리기 디렉터리에 없습니다.",
        "img-auth-badtitle": "\"$1\"에서 올바른 제목을 만들 수 없습니다.",
        "img-auth-nologinnWL": "로그인하지 않았으며 \"$1\" 파일은 화이트리스트에 존재하지 않습니다.",
        "filehist-user": "사용자",
        "filehist-dimensions": "크기",
        "filehist-filesize": "파일 크기",
-       "filehist-comment": "ë\8d§글",
+       "filehist-comment": "ë\8c\93글",
        "imagelinks": "이 파일을 사용하는 문서",
        "linkstoimage": "다음 {{PLURAL:$1|문서 $1개}}가 이 파일을 가리키고 있습니다:",
        "linkstoimage-more": "$1개 이상의 {{PLURAL:$1|문서}}가 이 파일을 가리키고 있습니다.\n다음 목록은 이 파일을 {{PLURAL:$1|가리키는 처음 문서 $1개}}만 보여주고 있습니다.\n이 파일을 가리키는 [[Special:WhatLinksHere/$2|모든 문서 목록]]을 볼 수 있습니다.",
        "newpages": "새 문서 목록",
        "newpages-username": "사용자 이름:",
        "ancientpages": "오래된 문서 목록",
-       "move": "ì\98®ê¸°ê¸°",
+       "move": "ì\9d´ë\8f\99",
        "movethispage": "이 문서 옮기기",
        "unusedimagestext": "다음은 어떠한 문서도 사용하지 않는 파일의 목록입니다.\n다른 사이트에서 URL 접근을 통해 파일을 사용할 수 있기 때문에, 아래 목록에 있는 파일도 실제로 사용 중일 가능성이 있다는 점을 주의해주세요.",
        "unusedcategoriestext": "사용하지 않는 분류 문서의 목록입니다.",
        "version-poweredby-others": "그 외 다른 개발자",
        "version-poweredby-translators": "translatewiki.net 번역자",
        "version-credits-summary": "[[Special:Version|미디어위키]]에 기여한 다음 사람에게 감사드립니다.",
-       "version-license-info": "미디어위키는 자유 소프트웨어입니다. 당신은 자유 소프트웨어 재단이 발표한 GNU 일반 공중 사용 허가서 버전 2나 그 이후 버전에 따라 이 파일을 재배포하거나 수정할 수 있습니다.\n\n미디어위키가 유용하게 사용될 수 있기를 바라지만 '''상용으로 사용'''되거나 '''특정 목적에 맞을 것'''이라는 것을 '''보증하지 않습니다'''. 자세한 내용은 GNU 일반 공중 사용 허가서 전문을 참하십시오.\n\n당신은 이 프로그램을 통해 [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU 일반 공중 사용 허가서 전문]을 받았습니다. 그렇지 않다면, Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA로 편지를 보내주시거나 [//www.gnu.org/licenses/old-licenses/gpl-2.0.html 온라인으로 읽어보시기] 바랍니다.",
+       "version-license-info": "미디어위키는 자유 소프트웨어입니다. 당신은 자유 소프트웨어 재단이 발표한 GNU 일반 공중 사용 허가서 버전 2나 그 이후 버전에 따라 이 파일을 재배포하거나 수정할 수 있습니다.\n\n미디어위키가 유용하게 사용될 수 있기를 바라지만 '''상용으로 사용'''되거나 '''특정 목적에 맞을 것'''이라는 것을 '''보증하지 않습니다'''. 자세한 내용은 GNU 일반 공중 사용 허가서 전문을 참하십시오.\n\n당신은 이 프로그램을 통해 [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU 일반 공중 사용 허가서 전문]을 받았습니다. 그렇지 않다면, Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA로 편지를 보내주시거나 [//www.gnu.org/licenses/old-licenses/gpl-2.0.html 온라인으로 읽어보시기] 바랍니다.",
        "version-software": "설치된 소프트웨어",
        "version-software-product": "제품",
        "version-software-version": "버전",
index f108e80..9dd6cc8 100644 (file)
        "versionrequiredtext": "De Väsjohn $1 vum MehdijaWikki sing Projramme es nühdich, öm di Sigg heh bruche ze künne. Süsch op [[Special:Version|de Väsjohns_Sigg]], wat mer heh för ene Schtand han.",
        "ok": "Jot!",
        "pagetitle": "$1 — {{SITENAME}}",
+       "pagetitle-view-mainpage": "{{SITENAME}}",
        "backlinksubtitle": "←&nbsp;$1",
        "retrievedfrom": "Di Sigg heh stamp vun „$1“.",
        "youhavenewmessages": "Do häs $1 ($2).",
        "createacct-benefit-body2": "{{PLURAL:$1|Sigg|Sigge|Sigge }}",
        "createacct-benefit-body3": "{{PLURAL:$1|aktive Metmaacher}}",
        "badretype": "Ding zwëij ennjejovve Paßßwööter sinn nit ejaal. Do muss De Dich för ein entscheide.",
+       "usernameinprogress": "En Zohjang för heh dä Nahme för ene Metmaacher es ald ongewähß. Donn noch jät wahde.",
        "userexists": "Ene Metmaacher met däm Name jidd et ald.\nDo muss Der ene andere Name usdenke.",
        "loginerror": "Fähler beim Enlogge",
        "createacct-error": "Fähler beim Zohjang-Aanlääje",
        "content-model-json": "<i lang=\"en\" xml:lang=\"en\" title=\"JavaScript Object Notation\">JSON</i>",
        "content-json-empty-object": "Nix dren",
        "content-json-empty-array": "Nix dren",
-       "duplicate-args-warning": "<strong>Opjepaß:</strong> [[:$1]] röhf [[:$2]] met mih wi eijnem Wäät för der Parramehter „$3“ op. Blohß der läzde wäät vun dänne weed opjenumme un jebruch.",
+       "duplicate-args-warning": "<strong>Opjepaß:</strong> [[:$1]] röhf [[:$2]] met mih wi eijnem Wäät för der Parramehter „$3“ op. Blohß der läzde Wäät vun dänne weed opjenumme un jebruch.",
        "duplicate-args-category": "Sigge met dubbelt aanjejovve Parramehtere för Schablohne.",
        "duplicate-args-category-desc": "Sigge met Oprohve vun Schablohne met dubbelt aanjejovve Parramehtere dren, alsu esu jät wi <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> un <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "expensive-parserfunction-warning": "<strong>Opjepaß:</strong> Di Sigg heh määt zovill Opwand met Paaser-Funkßjohne.\n\n{{PLURAL:$2|Eine Oproof|Beß $2 Oproofe|Keine Oproof}} es älaup, {{PLURAL:$1|un eine Oproof|ävver $1 Oproofe|un keine Oproof}} määt di Sigg em Momang.",
        "expansion-depth-exceeded-category": "Sigge, woh de \"expansion depth\" övverschredde es",
        "expansion-depth-exceeded-category-desc": "Dat heh es de Saachjropp för Sigge, woh de \"expansion depth\" övverschreddde es.",
        "expansion-depth-exceeded-warning": "Heh di Sigg hät de \"expansion depth\" övverschredde",
-       "parser-unstrip-loop-warning": "Ene Befähl em Täx betrick sesch op sesch sellef.",
+       "parser-unstrip-loop-warning": "Ene Befähl em Täx betrek sesch op sesch sällefs.",
        "parser-unstrip-recursion-limit": "Ene Befähl em Täx es mieh wi {{PLURAL:$1|eijmohl|$1 Mohl|jaa nit}} met  sesch sellef verschachtelt.",
        "converter-manual-rule-error": "Doh es ene Fähler en ene händesche Önwandelongsrääjel zwesche de Schprohche.",
        "undo-success": "De Änderong könnte mer zeröck nämme. Belohr Der de Ungerscheide un dann donn di Sigg avspeijschere, wann De dängks, et es en Ohdenong esu.",
        "rows": "Reihe:",
        "columns": "Spalte:",
        "searchresultshead": "Beim Söhke",
-       "stub-threshold": "Lengks zopaß för <a href=\"#\" class=\"stub\">klein Sigge</a> fomatehre av esu vill <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Bytes</i>:",
+       "stub-threshold": "Lengks zopaß för klein Sigge ($1) fomatehre av esu vill <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Bytes</i>:",
+       "stub-threshold-sample-link": "Beijschpell_Lengk",
        "stub-threshold-disabled": "Ußjeschalldt",
        "recentchangesdays": "de Aanzahl Dähsch en de Leß met de „Neuste Änderonge“ — als Standatt:",
        "recentchangesdays-max": "(Nit mih wie {{PLURAL:$1|eine Daach|$1 Dääsh|keine Daach}})",
        "action-history": "de Leß met de fröhjere Väsohne vun heh dä Sigg ze belohre",
        "action-minoredit": "heh di Änderong als klein „mini“ ze makkehre",
        "action-move": "di Sigg ömzebenänne",
-       "action-move-subpages": "hee di Sigg un ier Ongersigge ömzebenänne",
+       "action-move-subpages": "heh di Sigg un ier Ongersigge ömzebenänne",
        "action-move-rootuserpages": "enem Metmaacher sing (Houp)-Metmaacher-Sigg ömzenänne",
        "action-move-categorypages": "Sigge vun Saachjroppe ömzebenänne",
        "action-movefile": "Di Dattei ömnänne",
        "upload-copy-upload-invalid-domain": "Fun dä Domain künne mer nix noh heh huh laade. Di es nit zohjelohße.",
        "upload-dialog-title": "Dateij huhlahde",
        "upload-dialog-error": "Ene Fähler es opjetrodde",
+       "upload-dialog-warning": "En Warnong wood ußjejovve.",
        "upload-dialog-button-cancel": "Ophühre!",
        "upload-dialog-button-done": "Jedonn",
        "upload-dialog-button-save": "Faßhalde",
        "upload-dialog-label-select-file": "De ußjesöhk Dattei",
        "upload-dialog-label-infoform-title": "Eijnzelheijte",
        "upload-dialog-label-infoform-name": "Nahme",
+       "upload-dialog-label-infoform-description": "Äkliehrong",
+       "upload-dialog-label-usage-title": "Der Jebruch",
        "upload-dialog-label-usage-filename": "Dä Dattei iehre Nahme",
        "backend-fail-stream": "Mer kunnte di Dattei $1 nit övverdraare.",
        "backend-fail-backup": "Mer kunnte kein Sescherongskopih vun dä Dattei $1 maache.",
        "common.js": "/* Jedes JavaScrip hee kütt för jede Metmaacher in jede Sigg erinn */",
        "group-autoconfirmed.js": "/* De JavaSkreppte fun hee krijje bloß de autemattesch beshtääteschte Metmaacher jescheck */",
        "group-user.js": "/* De JavaSkreppte heh aan dä Schtäll wirrek sesch nur op de enjeloggte Metmaacher uß */",
-       "group-bot.js": "/* De JavaSkreppte fun hee krijje bloß de Bots jescheck */",
+       "group-bot.js": "/* De JavaSkreppte fun heh krijje bloß de Bots jescheck */",
        "group-sysop.js": "/* De JavaSkreppte fun hee krijje bloß de Wiki_Köbeße jescheck */",
        "group-bureaucrat.js": "/* De JavaSkreppte fun hee krijje bloß de Bürrokrahde jescheck */",
        "anonymous": "Namelose {{PLURAL:$1|Metmaacher|Metmaacher|Metmaacher}} vun {{GRAMMAR:Dat|{{SITENAME}}}}",
        "confirmemail_success": "Ding E-Mail Adress es jetz bestätich.\nJetz künns De och noch enlogge. Vill Spass!",
        "confirmemail_loggedin": "Ding Addräß fö de <i lang=\"en\">e-mail</i> es jäz beschtäätesch!",
        "confirmemail_subject": "Don Ding e-mail-Adräß för {{GRAMMAR:Akkusativ|{{SITENAME}}}} beschtähteje.",
-       "confirmemail_body": "Künnt jod sin, Do wors et selver, vun de IP_Adress $1 hät sich\njedenfalls einer jemeldt, un well dä Metmaacher \"$2\" {{GRAMMAR:vun|{{SITENAME}}}}\nsin, un hät en E-Mail Adress aanjejovve.\n\nÖm jetz klor ze krije, dat di e-mail Adräß un dä neue Metmaacher och\nzosamme jehüre, muss dä Neue en singem Brauser dä Link:\n\n$3\n\nopmaache. Noch för em $6 öm $7 Uhr. Alsu dun dat, wann de et selver bes.\n\nWann nit Do, sondern söns wä Ding e-mail Adräß aanjejovve hät, do bruchs de\njar nix ze don. De e-mail Adräß kann nit jebruch wääde, ih dat se nit\nbestätich es. Do kanns ävver och op he dä Lengk jon:\n\n$5\n\nDomet deiß De tirek sare, dat De di Adräß nit bestätije wells.",
+       "confirmemail_body": "Künnt johd sin, Do wors et selver. Vun dä IP_Adräß $1 hät sich\njedenfalls einer jemäldt, un well dä Metmaacher \"$2\" {{GRAMMAR:vun|{{SITENAME}}}}\nsin, un hät en e-mail-Adräss aanjejovve.\n\nÖm jetz klor ze krije, dat di e-mail Adräß un dä neue Metmaacher och\nzosamme jehüre, muss dä Neue en singem Brauser dä Link:\n\n$3\n\nopmaache. Noch för em $6 öm $7 Uhr. Alsu dun dat, wann De et bes.\n\nWann nit Do, sondern söns wä Ding e-mail-Adräß aanjejovve hät, do bruchs de\njar nix ze don. De e-mail-Adräß kann nit jebruch wähde, ih dat se\nbeschtähtesch es. Do kanns ävver och op heh dä Lengk jon:\n\n$5\n\nDomet deiß De tirek sahre, dat De di Adräß nit beschtähteje wells.",
        "confirmemail_body_changed": "Künnt jod sin, Do wors et selver. Vun de IP_Adräß $1 hät sich\njedenfalls einer jemeldt, un well dä Metmaacher \"$2\" op {{GRAMMAR:Akk bet|{{SITENAME}}}}\nsin, un hät en neu Adress för sing e-mail aanjejovve.\n\nÖm jetz klor ze krije, dat di neu Adräß un dä Metmaacher och\nzosamme jehüre, un öm de e-mail op {{GRAMMAR:Akk bet|{{SITENAME}}}}\nwidder aanzschallde, moss dä Metmaacher en singem Brauser dä Lengk:\n\n$3\n\nopmaache. Noch för em $6 öm $7 Uhr. Alsu dun dat, wann de et selver bes.\n\nWann nit Do, sondern söns wä Ding E-Mail Adress aanjejovve hät, bruchs\nDe jar nix ze don. Di Adräß weed nit jebruch, wann se nit bestätich es.\nDo kanns ävver och op heh dä Link jon:\n\n$5\n\nDomet deiß De tirek sare, dat De di Adress nit bestätije wells.",
        "confirmemail_body_set": "Künnt johd sin, Do wors et sällver. Vun dä IP-Adräß $1 hät op\njede Fall einer för dä Metmaacher \"$2\" op {{GRAMMAR:Akk bet|{{SITENAME}}}}\nheh di Adräß för däm sing e-mail aanjejovve.\n\nÖm jäz kloh ze kreje, dat di neu Adräß un dä Metmaacher och\nzosamme jehühre, un öm de e-mail op {{GRAMMAR:Akk bet|{{SITENAME}}}}\naanzschallde, moß dä Metmaacher en singem Brauser dä Lengk:\n\n$3\n\nopmaache. Noch för em $6 öm $7 Uhr. Alsu dun dat, wann dat sing\nReeschteschkeijt hät.\n\nWann nit Doh, sönders söns wä Ding Addräß för de e-Mail aanjejovve hät, bruchs\nDe jar nix ze don. Di Adräß weed nit jebruch, wann se nit beschtähtesch es.\nDo kanns ävver och op heh dä Lengk jon:\n\n$5\n\nDomet deiß De tirek vermällde, dat De di Adräß nit beschtähteje wells.",
        "confirmemail_invalidated": "Et Beschtähtejje för di <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i>-Adräß es afjebroche wohde, un di Adräß es '''nit''' beschtähtesch.",
        "autoredircomment": "Leit öm op „[[$1]]“",
        "autosumm-new": "De Sigg wood neu aanjelaat met däm Aanfang: $1",
        "autosumm-newblank": "En läddijje Sigg wood aanjelaat",
-       "size-bytes": "$1&nbsp;Bytes",
+       "size-bytes": "{{PLURAL:$1|$1&nbsp;<i lang=\"en\" xml:lang=\"en\" dir=\"ltr\">{{PLURAL:$1|Byte|Bytes|Bytes}}</i>",
        "size-kilobytes": "$1&nbsp;KB",
        "size-megabytes": "$1&nbsp;MB",
        "size-gigabytes": "$1&nbsp;GB",
        "size-exabytes": "$1&nbsp;EB",
        "size-zetabytes": "$1&nbsp;ZB",
        "size-yottabytes": "$1&nbsp;YB",
-       "size-pixel": "$1&nbsp;Pixelle",
+       "size-pixel": "$1&nbsp;{{PLURAL:$1|Pixel|Pixelle|Pixel}}",
        "size-kilopixel": "$1&nbsp;Killopixelle",
        "size-megapixel": "$1&nbsp;Mejapixelle",
        "size-gigapixel": "$1&nbsp;Jijapixelle",
        "logentry-newusers-create2": "{{GENDER:$4|Dä|Dat|Dä Metmaacher|De|Dat}} $3 wood {{GENDER:$2|vum|vum|vumm Metmaacher|vun dä|vum}} $1 aanjelaat.",
        "logentry-newusers-byemail": "{{GENDER:$4|Dä|Dat|Dä Metmaacher|De|Dat}} $1 wood {{GENDER:$4|als Metmaacher|als Metmaacher||als Metmaacher|als Metmaacher}} aanjelaat un {{GENDER:$4|sing|em sing|däm sing|dä iehr|däm sing}} Paßwoot met der <i lang=\"en>e-mail</i> verscheck.",
        "logentry-newusers-autocreate": "{{GENDER:$4|Dä|Dat|Dä Metmaacher|De|Dat}} $1 wood automattesch {{GENDER:$4|als Metmaacher|als Metmaacher||als Metmaacher|als Metmaacher}} {{GENDER:$2|vum|vum|vumm Metmaacher|vun dä|vum}} $1 aanjelaat.",
+       "logentry-protect-move_prot": "{{GENDER:$2|Dä|Dat|Dä Metmaacher|De|Dat}} $1 hät de Enschtällong vum schoz vun dä Sigg „$4“ noh dä Sigg „$3“ övvenumme",
        "logentry-rights-rights": "{{GENDER:$2|Dä|Dat|Dä Metmaacher|De|Dat}} „$1“ hät däm Metmaacher „$3“ sing Jroppe-Räächde vun „$4“ op „$5“ ömjestallt.",
        "logentry-rights-rights-legacy": "{{GENDER:$1|Dä|Et|Dä Metmaacher|De|Dat}} $1 hät däm Metmaacher $3 sing Räääschte-Jroppe verändert.",
        "logentry-rights-autopromote": "{{GENDER:$1|Dä|Et|Dä Metmaacher|De|Dat}} $1 wood automattesch vum $4 zom $5 jemaat.",
        "limitreport-postexpandincludesize-value": "{{PLURAL:$1|ein|$1|kein}} vun {{PLURAL:$2|einem Byte|$2 Bytes|keinem Byte}}",
        "limitreport-templateargumentsize": "Der Ömvang vun de Parrameeterre vun Schablohne",
        "limitreport-templateargumentsize-value": "{{PLURAL:$1|ein|$1|kein}} vun {{PLURAL:$2|einem Byte|$2 Bytes|keinem Byte}}",
+       "limitreport-expansiondepth": "Deefste Ußdehnong beim Öplühse",
        "limitreport-expansiondepth-value": "$1 vun $2",
        "limitreport-expensivefunctioncount": "Oproofe vun „düüre“ Fonxjuhne em Paaser",
        "limitreport-expensivefunctioncount-value": "$1 vun $2",
index a5e8183..535804e 100644 (file)
@@ -60,7 +60,7 @@
        "editfont-monospace": "Tipografía que cuvre lugar fikso",
        "editfont-sansserif": "Tipografía sans-serif",
        "editfont-serif": "Tipografía serif",
-       "sunday": "Alḥad",
+       "sunday": "Alḥadh",
        "monday": "Lunes",
        "tuesday": "Martes",
        "wednesday": "Miércoles",
@@ -79,7 +79,7 @@
        "march": "Março",
        "april": "Abril",
        "may_long": "Mayo",
-       "june": "Juño",
+       "june": "Junio",
        "july": "Julio",
        "august": "Agosto",
        "september": "Setiembre",
        "emailuser": "Embia korreo elektroniko a este usuario",
        "emailuser-title-target": "Embiar un korreo elektroniko a {{Gender:$1|este usuario|esta usuaria}}",
        "emailuser-title-notarget": "Embiar un korreo elektroniko a un usuario",
-       "emailpage": "Embiar un korreo elektroniko a un usuario",
        "defemailsubject": "Korreo elektroniko del usuario \"$1\" de {{SITENAME}}",
        "emailusername": "Nombre de usuario:",
        "emailfrom": "De:",
        "watchlisttools-view": "Ver los trocamientos",
        "watchlisttools-edit": "Ver i trocar tu lista de escogidas",
        "watchlisttools-raw": "Troca tu lista de escogidas en crudo",
-       "hebrew-calendar-m1": "Tishre",
-       "hebrew-calendar-m2": "Ḥeshvan",
+       "hebrew-calendar-m1": "Tishri",
+       "hebrew-calendar-m2": "Ḥeshván",
+       "hebrew-calendar-m4": "Teveth",
+       "hebrew-calendar-m6": "Adhar",
+       "hebrew-calendar-m6a": "Adhar I",
+       "hebrew-calendar-m6b": "Adhar II",
+       "hebrew-calendar-m7": "Nissán",
+       "hebrew-calendar-m8": "Iyyar",
+       "hebrew-calendar-m9": "Siván",
+       "hebrew-calendar-m10": "Tammuz",
        "hebrew-calendar-m1-gen": "Tishre",
        "hebrew-calendar-m2-gen": "Ḥeshvan",
        "duplicate-defaultsort": "'''Aviso:''' la klave primaria para ordenamiento \"$2\" anula la primera \"$1\"",
index be5d028..32c6992 100644 (file)
        "columns": "Kolonnen",
        "searchresultshead": "Sichen",
        "stub-threshold": "Maximum (a Byte) bei deem e Link nach ëmmer am <a href=\"#\" class=\"stub\">Skizze-Format</a> gewise gëtt:",
+       "stub-threshold-sample-link": "Beispill",
        "stub-threshold-disabled": "Desaktivéiert",
        "recentchangesdays": "Deeg déi an de Rezenten Ännerungen ugewise ginn:",
        "recentchangesdays-max": "(Maximal $1 {{PLURAL:$1|Dag|Deeg}})",
index 33bd086..88b9970 100644 (file)
        "editingsection": "د حال و بال ڤیرایئشت $1 (بأرجا$1)",
        "editingcomment": "د حال و بال ڤیرایئشت $1 (بأرجا تازە)",
        "editconflict": "ری ڤئ ری کاری د ڤیرایئشت: $1",
-       "explainconflict": "داوسه که شما شرو د ویرایشت ای بلگه کردیته، یه نفر هنی ای بلگه نه آلشت دئه.\nراساگه وارو نیسسه بلگه نیسسه نه چی یه که وجود داشتوه د ور میئره.\nآلشتیا شما د نیسسه هاری نشو دئه هئ.\nشما با آلشتیاتونه د نیسسه که هئش یکی بکید.\nفقط متنی که ها د رو د گاتی که شما\"{{رقم:اماییه کاری گوتار}}\" نه گزارشت می کید اماییه بوئه",
+       "explainconflict": "د گاتی کئ شوما شوروٙ د ڤیرایئشت کاری د بألگە کئردیتە، یئ کأس ھأنی ئی بألگە نئ آلئشت دئە.\nراساگە ڤارو نیسئسە بألگە، نیسئسە نە چی یە کئ ڤوجوٙد داشتوٙە د ڤأر گئرئتە.\nآلئشتکاریا شوم د نیسئسە ھاری دیاری میکە.\nشوما بایأد آلئشت کاریاتوٙنە د نیسئسە یی کئ ھیش سأریأک بأکیت.\nفأقأط نیسئسە یی کئ ھا د ڤارو د گاتی کئ شوما\"{{int:savearticle}}\" نە گوزارئشت میکیت ئمایە بوٙە.",
        "yourtext": "نیسئسە شوما",
        "storedversion": "ڤانئیأری ئمایە بییە",
-       "nonunicodebrowser": "<strong>زئÙ\86ار:دÙ\88Ù\88ارتÙ\87 Ù\86ئر Ø´Ù\85ا Ù\88ا Ù\86Û\8cسسÙ\87 Û\8cا Û\8cÙ\88Ù\86Û\8cکد Ø³Ø§Ø²Ú¯Ø§Ø±Û\8c Ù\86ارÙ\87.</strong>\nÛ\8cÙ\87 Ú¯Ù\84 Ø±Ø§Ø­Ù\84 Ù\88Ù\87 Ú©Ø§Ø± Ú¯Ø±ØªÙ\87 Ø¨Û\8cÙ\87 Ø³Û\8c Û\8cÙ\87 Ú©Ù\87 Ø´Ù\85ا Ø¨Ù\84Ú¯Ù\87 Û\8cا Ù\86Ù\87 Ù\88ا Ø§Ù\85Ù\86Û\8cت Ù\88Û\8cراÛ\8cشت Ø¨Ú©Û\8cت:\nÙ\86Û\8cسÙ\87 Û\8cا ØºÛ\8cر-ASCII  Ø¯ Ù¾Ø§Û\8cÙ\87 Ø±Ø§Ø²Û\8cÙ\86Ù\87 Û\8cا 16 ØªØ§Û\8cÛ\8c Ø¯ØªÙ\88 Ù\86Ø´Ù\88 Ø¯Ø¦Ù\87 Ø¨Ù\88ئÙ\87.",
-       "editingold": "<strong>زئÙ\86ار:Ø´Ù\85ا Ø¯Ø§Ø±Û\8cت Û\8cÙ\87 Ú¯Ù\84 Ù\88اÙ\86ئرÛ\8c Ù\86ا Ø¨Ù\87 Ù\87Ù\86Ú¯Ù\88Ù\85 Ø¨Û\8cÙ\87 Ù\86Ù\87 Ø³Û\8c Ø§Û\8c Ø¨Ù\84Ú¯Ù\87 Ù\88Û\8cراÛ\8cشت Ù\85Û\8c Ú©Û\8cد</strong>\nار Ø´Ù\85ا Ù\88Ù\86Ù\87 Ø§Ù\85اÛ\8cÛ\8cÙ\87 Ø¨Ú©Û\8cتØ\8cÙ\87ر Ø¢Ù\84شتÛ\8c Ú©Ù\87 Ø¯ Ø§Ù\88Ù\84 Ø³Û\8c Ø§Û\8c Ù\88اÙ\86ئرÛ\8c Ø§Ù\86جÙ\88Ù\85 Ø¨Û\8cÙ\87 Ú¯Ù\85 Ø¨Ù\88ئÙ\87.",
+       "nonunicodebrowser": "<strong>د Ú¤Û\8cرئتÙ\88Ù\99با:دÙ\88ڤارتÛ\95 Ù\86Û\8cأر Ø´Ù\88Ù\85ا Ú¤Ø§ Ù\86Û\8cسئسÛ\95 Û\8cا Û\8cÙ\88Ù\99Ù\86Û\8cÚ©Ù\88د Ø³Ø§Ø²Ø¦Ú¯Ø§Ø±Û\8c Ù\86ارÛ\95.</strong>\nÛ\8cئ Ú¯Ø¦Ù\84 Ø±Ø§ Ø­Ø£Ù\84 Ú¤Ø¦ Ú©Ø§Ø± Ú¯Ø¦Ø±Ø¦ØªØ¦ Ø¨Û\8cÛ\8cÛ\95 Ø³Û\8c Û\8cÛ\95 Ú©Ø¦ Ø´Ù\88Ù\85ا Ø¨Ø£Ù\84Ú¯Û\95 Û\8cا Ù\86Û\95 Ú¤Ø§ Ø£Ù\85Ù\86Û\8cأت Ú¤Û\8cراÛ\8cئشت Ø¨Ø£Ú©Û\8cت:\nÙ\86Û\8cسئسÛ\95 Û\8cا ØºØ¦Ø±-ASCII  Ø¯ Ù¾Ø§Û\8cÛ\95 Ø±Ø§Ø²Û\8cÙ\86Û\95 Û\8cا 16 ØªØ§Û\8cÛ\8c Ø³Û\8c ØªÙ\88Ù\99 Ø¯Û\8cارÛ\8c Ù\85Û\8cÚ©Û\95.",
+       "editingold": "<strong>د Ú¤Û\8cرئتÙ\88Ù\99 Ø¨Ø§:Ø´Ù\88Ù\85ا Ø¯Ø§Ø±Û\8cت Û\8cئ Ú¯Ø¦Ù\84 Ú¤Ø§Ù\86ئÛ\8cأرÛ\8c Ú¤Ø¦ Ú¾Ø¦Ù\86Ú¯Ù\88Ù\85 Ù\86أبÛ\8cÛ\8cÛ\95 Ù\86Û\95 Ø³Û\8c Ø¦Û\8c Ø¨Ø£Ù\84Ú¯Û\95 Ú¤Û\8cراÛ\8cئشت Ú©Ø§Ø±Û\8c Ù\85Û\8cÚ©Û\8cد.</strong>\nأر Ø´Ù\88Ù\85ا Ú¤Ø¦Ù\86Û\95 Ø¦Ù\85اÛ\8cÛ\95 Ø¨Ø£Ú©Û\8cتØ\8c Ú¾Ø£Ø± Ø¢Ù\84ئشت Ú©Ø§Ø±Û\8c Ú©Ø¦ Ø¯ Ø£Ú¤Ø£Ù\84 Ø³Û\8c Ø¦Û\8c Ú¤Ø§Ù\86ئÛ\8cأرÛ\8c Ø£Ù\86جÙ\88Ù\85 Ø¨Û\8cÛ\8cÛ\95 Ù\86ادÛ\8cار Ù\85Ù\88Ù\99Û\95.",
        "yourdiff": "فأرخیا",
-       "copyrightwarning": "لطفن د ویرتو با که ایچه فرض بوئه که همه هومیاریا شما وا{{SITENAME}} د شکل «$2» درتیچ بوئن(سی چیا تر روئیت وه $1).\nار نمیهایت که که نیسسه یاتو که فره ویرایشت بینه و دلحا درتیچ بان، د ایچه کلشو نکیت.<br />\nهمچنو شما داریت وه ایما قول میئیت که خوتو ونونن نویسنیته، یا ونه د یه گل سرچشمه آزاد وا بئرکرد همگونی یا چی وه ؤرداشتیته.\n'''کاریایی که حق درتیچسن (copyright) دارن بی صلا کل نکیت!'''",
-       "copyrightwarning2": "لطفن د ویرتو با که ایچه فرض بوئه که همه هومیاریا شما وا{{SITENAME}} د شکل «$2» درتیچ بوئن(سی چیا تر روئیت وه $1).\nار نمیهایت که که نیسسه یاتو که فره ویرایشت بینه و دلحا درتیچ بان، د ایچه کلشو نکیت.<br />\nهمچنو شما داریت وه ایما قول میئیت که خوتو ونونن نویسنیته، یا ونه د یه گل سرچشمه آزاد وا بئرکرد همگونی یا چی وه ؤرداشتیته.\n'''کاریایی که حق درتیچسن (copyright) دارن بی صلا کل نکیت!'''",
+       "copyrightwarning": "لوطف بأکیت د ڤیر داشتوٙئیت کئ ئیچئ فأرض یأنە کئ ھأمە ھومیاریا شوما ڤا{{SITENAME}} د حال و بال «$2» دأرتیچ بوٙە(سی چیا تئر روئیت د $1).\nأر نئمیھایت کئ نیسئسە یا توٙ کئ فئرە ڤیرایئشت کاری بیینە و دئلحا دأرتیچ بان، د ئیچئ کئلئشوٙ نأکیت.<br />\nھأمچئنی شوما داریت ڤئ ئیما قول مئیت کئ خوتوٙ ڤئنوٙنە نیسأنیتە، یا ڤئنە د ڤئنوٙنە د یئ گئل سأرچئشمە آزاد ڤا بأرکئرد ھأمأگوٙنی یا چیایی چی ڤئ گئرتیتە.\n'''آرئنگیایی کئ صئلا دأرتیچئسئن (copyright) ھا دئشوٙ بی صئلا کئل نأکیت!'''",
+       "copyrightwarning2": "لوطف بأکیت د ڤیر داشتوٙئیت کئ ئیچئ فأرض یأنە کئ ھأمە ھومیاریا شوما ڤا{{SITENAME}} د حال و بال «$2» دأرتیچ بوٙە(سی چیا تئر روئیت د $1).\nأر نئمیھایت کئ نیسئسە یا توٙ کئ فئرە ڤیرایئشت کاری بیینە و دئلحا دأرتیچ بان، د ئیچئ کئلئشوٙ نأکیت.<br />\nھأمچئنی شوما داریت ڤئ ئیما قول مئیت کئ خوتوٙ ڤئنوٙنە نیسأنیتە، یا ڤئنە د ڤئنوٙنە د یئ گئل سأرچئشمە آزاد ڤا بأرکئرد ھأمأگوٙنی یا چیایی چی ڤئ گئرتیتە.\n'''آرئنگیایی کئ صئلا دأرتیچئسئن (copyright) ھا دئشوٙ بی صئلا کئل نأکیت!'''",
        "longpageerror": "<strong>خطا:نیسسه شما  {{PLURAL:$1|یه کلوبایت|$1 کلوبایت}}  درازی نه دئه، که ونو د بیشرونه انازه{{PLURAL:$2|یه کلوبایت|$2 کلوبایت}} گپترن.</strong>\nنبوئه وه اماییه با.",
        "readonlywarning": "<strong>زئنار:رسینه گا سی واداشت قلف بیه، سی یه نه که شما ایسه نمی تونیت ویرایشتیاتونه اماییه بکیت.</strong>\nشات شما بحایت که نیسسه خوتونه د جانیا نیسسه ای وردار بدیس بکیت و ونه سی نهاتر اماییه بکیت.\n\nدیوونداری که ونه قلف کرده چنی گوته:$1",
        "protectedpagewarning": "<strong>زئنار:ای بلگه سی یه پر و پیم بیه که کاریاریایی که دسرسی دیوونداری دارن فقط بتونن دش ویرایشت بکن.</strong>\nآخرین سیائه سی سرچشمه یا د هار اماییه کاری بیه:",
        "cantcreateaccounttitle": "نبوئه حساو راس بکید",
        "cantcreateaccount-text": "حساو دروس بیه و ا ای تیرنشون آی پی(<strong>$1</strong>) وه دس ای [[کاریار:$3|$3]] قلف بیه.\n\n\nدلیل دئه بیه وا $3 ها د<em>$2</em>",
        "cantcreateaccount-range-text": "حساو دروس بیه وا تیرنشون آی پی که د پوشینه '''$1''' ، که وه ئم مینونه دار تیرنشون آی پی شما ئم هئ('''$4''')، وه دس [[کاریار:$3|$3]]قلف بیه.\n\nدلیل دئه بیه وا $3، \"$2\" ئه.",
-       "viewpagelogs": "سی ای بلگه بوینتو.",
+       "viewpagelogs": "سئیل پئرئستنوٙمە یا ئی بألگە بأکیت",
        "nohistory": "هیچ ویرگار ویرایشتی د ای بلگه نئ.",
        "currentrev": "آخرین دوواره دیئن",
        "currentrev-asof": "آخري وانئری چی $1",
index 4fd8b2b..5544747 100644 (file)
        "rows": "Eilutės:",
        "columns": "Stulpeliai:",
        "searchresultshead": "Paieškos nustatymai",
-       "stub-threshold": "Puslapį žymėti <a href=\"#\" class=\"stub\">nebaigtu</a>, jei mažesnis nei:",
+       "stub-threshold": "Ribinė reikšmė nepilnų puslapių nuorodų formatavimui ($1):",
+       "stub-threshold-sample-link": "pavyzdys",
        "stub-threshold-disabled": "Išjungtas",
        "recentchangesdays": "Rodomos dienos paskutinių keitimų sąraše:",
        "recentchangesdays-max": "(daugiausiai $1 {{PLURAL:$1|diena|dienos|dienų}})",
index b29271e..e32ff4a 100644 (file)
        "thu": "Ce",
        "fri": "Pk",
        "sat": "Se",
-       "january": "janvārī,",
-       "february": "februārī,",
-       "march": "martā,",
-       "april": "aprīlī,",
-       "may_long": "maijā,",
-       "june": "jūnijā,",
-       "july": "jūlijā,",
-       "august": "augustā,",
-       "september": "septembrī,",
-       "october": "oktobrī,",
-       "november": "novembrī,",
-       "december": "decembrī,",
-       "january-gen": "Janvāra",
-       "february-gen": "Februāra",
-       "march-gen": "Marta",
-       "april-gen": "Aprīļa",
-       "may-gen": "Maija",
-       "june-gen": "Jūnija",
-       "july-gen": "Jūlija",
-       "august-gen": "Augusta",
-       "september-gen": "Septembra",
-       "october-gen": "Oktobra",
-       "november-gen": "Novembra",
-       "december-gen": "Decembra",
-       "jan": "janvārī,",
-       "feb": "februārī,",
-       "mar": "martā,",
-       "apr": "aprīlī,",
-       "may": "maijā,",
-       "jun": "jūnijā,",
-       "jul": "jūlijā,",
-       "aug": "augustā,",
-       "sep": "septembrī,",
-       "oct": "oktobrī,",
-       "nov": "novembrī,",
-       "dec": "decembrī,",
+       "january": "janvāris",
+       "february": "februāris",
+       "march": "marts",
+       "april": "aprīlis",
+       "may_long": "maijs",
+       "june": "jūnijs",
+       "july": "jūlijs",
+       "august": "augusts",
+       "september": "septembris",
+       "october": "oktobris",
+       "november": "novembris",
+       "december": "decembris",
+       "january-gen": "janvāra",
+       "february-gen": "februāra",
+       "march-gen": "marta",
+       "april-gen": "aprīļa",
+       "may-gen": "maija",
+       "june-gen": "jūnija",
+       "july-gen": "jūlija",
+       "august-gen": "augusta",
+       "september-gen": "septembra",
+       "october-gen": "oktobra",
+       "november-gen": "novembra",
+       "december-gen": "decembra",
+       "jan": "janvāris",
+       "feb": "februāris",
+       "mar": "marts",
+       "apr": "aprīlis",
+       "may": "maijs",
+       "jun": "jūnijs",
+       "jul": "jūlijs",
+       "aug": "augusts",
+       "sep": "septembris",
+       "oct": "oktobris",
+       "nov": "novembris",
+       "dec": "decembris",
        "january-date": "$1. janvāris",
        "february-date": "$1. februāris",
        "march-date": "$1. marts",
        "redirectedfrom": "(Pāradresēts no $1)",
        "redirectpagesub": "Pāradresācijas lapa",
        "redirectto": "Pāradresēt uz:",
-       "lastmodifiedat": "Šajā lapā pēdējās izmaiņas izdarītas $2, $1.",
+       "lastmodifiedat": "Šajā lapā pēdējo izmaiņu izdarīšanas brīdis: $2, $1.",
        "viewcount": "Šī lapa ir tikusi apskatīta $1 {{PLURAL:$1|reizes|reizi|reizes}}.",
        "protectedpage": "Aizsargāta lapa",
        "jumpto": "Pārlēkt uz:",
        "accmailtitle": "Parole nosūtīta.",
        "accmailtext": "Nejauši ģenerēta parole lietotājam [[User talk:$1|$1]] tika nosūtīta uz $2.\n\nŠī konta paroli pēc ielogošanās varēs nomainīt ''[[Special:ChangePassword|šeit]]''.",
        "newarticle": "(Jauns raksts)",
-       "newarticletext": "Tu šeit nonāci sekojot saitei uz, pagaidām vēl neuzrakstītu, lapu.\nLai izveidotu lapu, sāc rakstīt teksta logā apakšā (par teksta formatēšanu un sīkākai informācija skatīt [$1 palīdzības lapu]).\nJa tu šeit nonāci kļūdas pēc, vienkārši uzspied '''back''' pogu pārlūkprogrammā.",
+       "newarticletext": "Šajā projektā vēl nav lapas ar šādu nosaukumu.\nLai izveidotu lapu, sāc rakstīt teksta logā apakšā (par teksta formatēšanu un sīkākai informācija skatīt [$1 palīdzības lapu]).\nJa tu šeit nonāci kļūdas pēc, vienkārši uzspied <strong>back</strong> pogu pārlūkprogrammā.",
        "anontalkpagetext": "----''Šī ir diskusiju lapa anonīmam lietotājam, kurš vēl nav kļuvis par reģistrētu lietotāju vai arī neizmanto savu lietotājvārdu. Tādēļ mums ir jāizmanto skaitliskā IP adrese, lai viņu identificētu.\nŠāda IP adrese var būt vairākiem lietotājiem.\nJa tu esi anonīms lietotājs un uzskati, ka tev ir adresēti neatbilstoši komentāri, lūdzu, [[Special:UserLogin/signup|kļūsti par lietotāju]] vai arī [[Special:UserLogin|izmanto jau izveidotu lietotājvārdu]], lai izvairītos no turpmākām neskaidrībām un tu netiktu sajaukts ar citiem anonīmiem lietotājiem.''",
        "noarticletext": "Šajā lapā šobrīd nav nekāda teksta, tu vari [[Special:Search/{{PAGENAME}}|meklēt citās lapās pēc šīs lapas nosaukuma]], <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} meklēt saistītos reģistru ierakstos] vai arī [{{fullurl:{{FULLPAGENAME}}|action=edit}} sākt rediģēt šo lapu]</span>.",
        "noarticletext-nopermission": "Šajā lapā pašlaik nav nekāda teksta.\nTu vari [[Special:Search/{{PAGENAME}}|meklēt šīs lapas nosaukumu]] citās lapās,\nvai <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} meklēt saistītus reģistru ierakstus]</span>, bet jums nav atļauja izveidot si lapu.",
index 6d892f1..9f85bf7 100644 (file)
        "tog-hidepatrolled": "隱近巡",
        "tog-newpageshidepatrolled": "隱新巡",
        "tog-extendwatchlist": "展列見變",
-       "tog-usenewrc": "出近易",
+       "tog-usenewrc": "出近易",
        "tog-numberheadings": "生章數",
        "tog-showtoolbar": "多寶列見",
-       "tog-editondblclick": "雙擊以纂",
-       "tog-editsectiononrightclick": "纂段右擊標",
+       "tog-editondblclick": "雙擊以纂",
+       "tog-editsectiononrightclick": "右擊標以纂段",
        "tog-watchcreations": "哨己撰",
        "tog-watchdefault": "哨己纂",
-       "tog-watchmoves": "派哨予吾遷之頁",
-       "tog-watchdeletion": "派哨至吾除之頁",
+       "tog-watchmoves": "派哨於頁吾遷者",
+       "tog-watchdeletion": "派哨於頁吾除者",
        "tog-minordefault": "慣為校",
        "tog-previewontop": "頂草覽",
        "tog-previewonfirst": "覽首修",
        "viewcount": "此頁$1閱矣",
        "protectedpage": "此頁錮矣",
        "jumpto": "往:",
-       "jumptonavigation": "å\9a®",
+       "jumptonavigation": "å°\8e",
        "jumptosearch": "尋",
-       "view-pool-error": "歉也,伺服器超負矣。\n多簿查頁。\n欲試候之。\n\n$1",
+       "view-pool-error": "甚歉!伺服器超負矣。\n尋頁之人也眾矣。\n若欲再試請稍候。\n\n$1",
        "pool-timeout": "待鎖超時",
        "pool-queuefull": "池隊滿之",
-       "pool-errorunknown": "未明之錯",
+       "pool-errorunknown": "未知之誤",
        "aboutsite": "述{{SITENAME}}",
        "aboutpage": "Project:述",
        "copyright": "文奉$1行。",
        "nstab-help": "助",
        "nstab-category": "類",
        "nosuchaction": "無可為",
-       "nosuchactiontext": "無此址",
+       "nosuchactiontext": "此址也無",
        "nosuchspecialpage": "無此特查",
        "nospecialpagetext": "<strong>無此特查。</strong>\n\n見[[Special:SpecialPages|{{int:specialpages}}]]。",
        "error": "有誤",
-       "databaseerror": "庫藏誤然",
+       "databaseerror": "庫藏也誤",
        "databaseerror-query": "尋:$1",
        "databaseerror-error": "錯:$1",
-       "laggedslavemode": "警示,此頁不新",
+       "laggedslavemode": "警告:此頁不新。",
        "readonly": "鎖庫藏",
        "enterlockreason": "何以鎖之?何日啟之?",
        "readonlytext": "鎖者曰:「$1」,庫藏鎖矣,撰纂謝焉。",
        "filenotfound": "\"$1\"未見。",
        "unexpected": "異數,\"$1\"=\"$2\"。",
        "formerror": "有誤:表不可呈",
-       "badarticleerror": "此頁為之",
+       "badarticleerror": "此頁不可為之",
        "cannotdelete": "頁或檔\"$1\"刪矣,不復為之。",
-       "cannotdelete-title": "å\88ªã\80\8c$1ã\80\8dä¸\8dè\83½ä¹\9f。",
+       "cannotdelete-title": "å\88ªã\80\8c$1ã\80\8dä¹\9fä¸\8dè\83½。",
        "delete-hook-aborted": "鈎纂消矣。\n無解也。",
        "badtitle": "無此題",
        "badtitletext": "或別、或缺、或違、或他山謬鏈,此題不存也。",
        "viewsource-title": "查$1之案",
        "actionthrottled": "無為",
        "actionthrottledtext": "基反垃圾之量,於短時中限欲,爾之上限已過。數分後再試之。",
-       "protectedpagetext": "該頁被錮無纂也。",
+       "protectedpagetext": "此頁見錮以避纂也。",
        "viewsourcetext": "爾可視及複之本頁之原始碼。",
        "protectedinterface": "此頁司版,錮之以遠濫。",
        "editinginterface": "'''警示:'''此頁司版,一髮牽身,惠慎之。如譯之,可慮[//translatewiki.net/wiki/Main_Page?setlang=zh-hant translatewiki.net]也,為MediaWiki軟件本地化之計劃也。",
        "cascadeprotected": "此頁\"迭緘\"矣。$1頁牽連如下:\n$2",
        "namespaceprotected": "子權未逮,莫能纂'''$1'''。",
-       "ns-specialprotected": "奇頁禁纂。",
-       "titleprotected": "緘焉自[[User:$1|$1]]防建也。因''$2''也。",
+       "ns-specialprotected": "奇頁禁纂。",
+       "titleprotected": "緘焉自[[User:$1|$1]]防建。以''$2''之故也。",
        "invalidtitle-knownnamespace": "無效卷題,含名域\"$2\"與文本\"$3\"",
        "exception-nologin": "尚未登簿",
        "virus-badscanner": "壞設:不明之病掃:''$1''",
        "virus-unknownscanner": "不明之反毒:",
        "logouttext": "'''子去簿矣'''\n\n子可匿名還覽{{SITENAME}},或<span class='plainlinks'>[$1 復登]</span>同簿、異簿。\n未清謄本,覽器文舊,且慎之。",
        "welcomeuser": "$1居,惠迎!",
-       "welcomecreation-msg": "子簿建矣。\n\n請更簿註乎[[Special:Preferences|此]]。",
+       "welcomecreation-msg": "汝簿建矣。\n\n請更汝「{{SITENAME}}」[[Special:Preferences|焉]]。",
        "yourname": "名",
        "userlogin-yourname": "簿名",
-       "userlogin-yourname-ph": "簿名",
-       "createacct-another-username-ph": "簿名",
+       "userlogin-yourname-ph": "簿名",
+       "createacct-another-username-ph": "簿名",
        "yourpassword": "符節",
        "userlogin-yourpassword": "符節",
-       "userlogin-yourpassword-ph": "輸子符節",
-       "createacct-yourpassword-ph": "一符節",
+       "userlogin-yourpassword-ph": "告汝符節",
+       "createacct-yourpassword-ph": "一符節",
        "yourpasswordagain": "復核節",
        "createacct-yourpasswordagain": "訂子符節",
-       "createacct-yourpasswordagain-ph": "復符節",
+       "createacct-yourpasswordagain-ph": "復符節",
        "remembermypassword": "吾之簿通越(達至$1日)",
-       "userlogin-remembermypassword": "記吾",
+       "userlogin-remembermypassword": "保我簿登",
        "userlogin-signwithsecure": "以安全伺服登簿",
-       "yourdomainname": "之網域",
+       "yourdomainname": "之網域",
        "password-change-forbidden": "符節不能改乎此維基也。",
-       "externaldberror": "認庫之錯或禁更爾之外簿。",
+       "externaldberror": "認庫之錯,或禁更汝之外簿。",
        "login": "登簿",
        "nav-login-createaccount": "登簿、增簿",
        "userlogin": "登簿、增簿",
        "logout": "去簿",
        "userlogout": "去簿",
        "notloggedin": "尚未登簿",
-       "userlogin-noaccount": "無簿乎?",
+       "userlogin-noaccount": "無簿乎?",
        "userlogin-joinproject": "入{{SITENAME}}",
-       "nologin": "無簿乎?往$1。",
+       "nologin": "尚無簿乎?惠往$1。",
        "nologinlink": "增簿",
        "createaccount": "增簿",
-       "gotaccount": "有簿矣哉?往$1。",
+       "gotaccount": "已有簿矣?惠往$1。",
        "gotaccountlink": "登簿",
-       "userlogin-resetlink": "君忘登簿所需爾?",
+       "userlogin-resetlink": "汝忘登簿所需?",
        "userlogin-resetpassword-link": "輸子符節",
-       "userlogin-helplink2": "助登簿",
+       "userlogin-helplink2": "助登簿",
        "createacct-emailrequired": "電郵",
-       "createacct-emailoptional": "電郵 (可選)",
+       "createacct-emailoptional": "電郵(可選)",
        "createaccountmail": "同郵",
-       "createacct-realname": "實名(選)",
+       "createacct-realname": "實名(選)",
        "createaccountreason": "因:",
        "createacct-reason": "因:",
-       "createacct-reason-ph": "何為子另立一簿乎?",
+       "createacct-reason-ph": "汝另立一簿者何哉?",
        "createacct-captcha": "安檢",
-       "createacct-imgcaptcha-ph": "輸上文字",
+       "createacct-imgcaptcha-ph": "輸上文字",
        "createacct-submit": "增簿",
-       "createacct-another-submit": "å\86\8d立一簿",
+       "createacct-another-submit": "復立一簿",
        "createacct-benefit-heading": "吾等立{{SITENAME}}者,或黔首,或專戶。",
        "createacct-benefit-body1": "纂",
        "createacct-benefit-body2": "頁",
        "createacct-benefit-body3": "是月纂者",
        "badretype": "符節不合也。",
-       "userexists": "簿名矣,惠更之。",
-       "loginerror": "登簿誤然",
+       "userexists": "簿名見用矣,惠更之。",
+       "loginerror": "登簿生誤",
        "createacct-error": "建簿未成",
        "createaccounterror": "無增簿:$1",
-       "nocookiesnew": "{{SITENAME}}簿增而未登,惠准cookies後再登之。",
-       "nocookieslogin": "登簿{{SITENAME}}須cookies,惠准之後登。",
-       "nocookiesfornew": "簿未建,眾乃未定源之。\n爾乃開之,重載再乃一試。",
+       "nocookiesnew": "{{SITENAME}}簿增而未登,惠准存 cookies ,方可登之。",
+       "nocookieslogin": "欲登簿{{SITENAME}},需允 cookies 之存,惠准後方可登。",
+       "nocookiesfornew": "簿未建,眾乃未定源之。\n汝其啟之,重載,繼而予一試。",
        "noname": "缺簿名,或不格也。",
        "loginsuccesstitle": "登簿成矣",
        "loginsuccess": "'''$1'''登{{SITENAME}}矣",
        "nosuchuser": "查無此人。惠請更名,查大小寫或立此簿。",
        "nosuchusershort": "查無\"$1\",惠核之。",
-       "nouserspecified": "簿名須也",
-       "login-userblocked": "此簿已被封。登無簿也。",
+       "nouserspecified": "簿名必須",
+       "login-userblocked": "此簿見錮矣。是之登未見許可。",
        "wrongpassword": "符節不合,惠核之。",
        "wrongpasswordempty": "缺符節,惠補之。",
        "passwordtooshort": "符節莫逾$1字。",
-       "password-name-match": "符節與簿名異也。",
-       "password-login-forbidden": "此簿與符節之用乃禁之。",
+       "password-name-match": "符ç¯\80è\88\87ç°¿å\90\8dç\9b¸ç\95°ä¹\9fã\80\82",
+       "password-login-forbidden": "此簿共符節之用見禁矣。",
        "mailmypassword": "遣吾符節",
        "passwordremindertitle": "新臨符節自{{SITENAME}}",
-       "passwordremindertext": "$1æ±\82é\81£{{SITENAME}}ï¼\88$4ï¼\89ï¼\9a\"$2\"ä¹\8bè\87¨ç¬¦ç¯\80ç\82º\"$3\"ã\80\82æ\97¥å\88°æ\9c\89$5ã\80\82\n\nå­\90è\8b¥ç½\94é \88æ\88\96ç\9c\81æ\9b´ä¹\8bï¼\8cå¦\82è\88\8aå\8d³可。",
+       "passwordremindertext": "$1æ±\82é\81£{{SITENAME}}ï¼\88$4ï¼\89ï¼\9a\"$2\"ä¹\8bè\87¨ç¬¦ç¯\80ç\82º\"$3\"ã\80\82æ\97¥å\88°æ\9c\89$5ã\80\82\n\nå­\90è\8b¥ç½\94é \88æ\88\96ç\9c\81æ\9b´ä¹\8bï¼\8cå¦\82è\88\8aå\89\87可。",
        "noemail": "\"$1\"無存郵也。",
-       "noemailcreate": "爾需乙郵也",
+       "noemailcreate": "汝需乙郵",
        "passwordsent": "新節已遣$1\",惠鑒復登之。",
-       "blocked-mailpassword": "爾之IP已錮,密復無用之,以之濫也。",
+       "blocked-mailpassword": "汝 IP 已錮,密復無用之,以之濫也。",
        "eauthentsent": "核文遣矣。惠循核之,簿方活也。",
-       "throttled-mailpassword": "密記已寄之於$1時前。\n防濫,單一密記短至$1時寄之。",
-       "mailerror": "信失遣如下:$1",
+       "throttled-mailpassword": "符節見寄於$1時前矣。\n防濫用故,單一密記短至$1時寄之。",
+       "mailerror": "信失遣。斯文如下:$1",
        "acct_creation_throttle_hit": "一日之內,於一址但許一人增簿。",
        "emailauthenticated": "$2 $3郵驛證矣",
        "emailnotauthenticated": "郵驛未證,下不遺書。",
        "noemailprefs": "郵驛設而用之。",
        "emailconfirmlink": "惠考郵驛",
        "invalidemailaddress": "驛址不格,惠正略之。",
-       "cannotchangeemail": "é\9b»é\83µå\9c°å\9d\80ä¸\8då\8f¯æ\94¹äº\8e此wiki",
+       "cannotchangeemail": "é\83µå\9d\80ä¸\8då\8f¯æ\9b´æ\96¼此wiki",
        "emaildisabled": "是站不可遣函也。",
        "accountcreated": "簿增矣",
        "accountcreatedtext": "[[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|書]])簿增矣。",
        "createaccount-title": "於{{SITENAME}}增簿",
-       "createaccount-text": "有人於{{SITENAME}}用爾之電郵增名為 \"$2\" 之簿 ($4),符節為 \"$3\" 。汝應登,再改符節也。\n\n如簿誤增,爾可略之。",
-       "login-throttled": "爾嘗登簿甚矣。\n請候 $1 再試之。",
+       "createaccount-text": "有人以汝電郵於{{SITENAME}}增簿。簿名為 \"$2\" ($4)。符節為 \"$3\" 。汝應登而更符節。\n\n如簿誤增,汝可略之。",
+       "login-throttled": "汝嘗登簿甚矣。\n請候 $1 而試之。",
        "login-abort-generic": "登簿未成——棄",
        "loginlanguagelabel": "語:$1",
        "suspicious-userlogout": "爾欲無離也,可由壞瀏覽器或快枝代理呈送之。",
        "newpassword": "新符節:",
        "retypenew": "重察新符節:",
        "resetpass_submit": "設符再登",
-       "changepassword-success": "之符節已改!",
+       "changepassword-success": "之符節已改!",
        "changepassword-throttled": "爾嘗登簿甚矣。\n請候 $1 再試之。",
-       "resetpass_forbidden": "ç\84¡æ\94¹ç¬¦ç¯\80",
-       "resetpass-no-info": "爾須登簿後方進此頁。",
+       "resetpass_forbidden": "符ç¯\80ä¹\8bæ\9b´ä¹\9fä¸\8då\8f¯ã\80\82",
+       "resetpass-no-info": "欲入此頁,爾須登簿。",
        "resetpass-submit-loggedin": "改符節",
        "resetpass-submit-cancel": "消",
        "resetpass-wrong-oldpass": "無效之臨符或現符。\n爾或改符,或求新臨符。",
-       "resetpass-temp-password": "臨符節:",
+       "resetpass-temp-password": "臨符節:",
        "resetpass-abort-generic": "符節不可更",
        "passwordreset": "重設符節",
        "passwordreset-text-one": "慾更符節,填此佇列",
        "passwordreset-email": "電郵址",
        "changeemail": "更郵址",
        "changeemail-oldemail": "當前郵驛:",
-       "changeemail-newemail": "新郵驛:",
+       "changeemail-newemail": "æ·»æ\96°é\83µé©\9bï¼\9a",
        "changeemail-none": "(無)",
        "changeemail-password": "汝 {{SITENAME}} 之符節",
-       "changeemail-throttled": "爾嘗登簿甚矣。\n請候 $1 再試之。",
+       "changeemail-throttled": "汝嘗登簿甚矣。\n請候 $1 而試之。",
        "bold_sample": "粗體",
        "bold_tip": "粗體",
        "italic_sample": "斜體",
        "link_sample": "鏈",
        "link_tip": "鏈內",
        "extlink_sample": "http://www.example.com 鍵 題",
-       "extlink_tip": "冠http://以鏈外",
+       "extlink_tip": "冠 http:// 以外鏈",
        "headline_sample": "題",
        "headline_tip": "二題",
        "nowiki_sample": "此不排版",
        "watchthis": "派哨",
        "savearticle": "存儲",
        "preview": "草覽",
-       "showpreview": "覽",
+       "showpreview": "覽",
        "showdiff": "示異",
        "anoneditwarning": "'''警示:'''子未登簿,IP將誌。",
        "anonpreviewwarning": "''子未登簿,IP將誌。''",
        "missingcommentheader": "'''醒示:'''子未概標之,復「{{int:savearticle}}」則文倍焉。",
        "summary-preview": "覽概:",
        "subject-preview": "覽題:",
-       "blockedtitle": "子見禁",
+       "blockedtitle": "汝見禁矣",
        "blockedtext": "'''子名、IP見禁。'''禁者$1也,因''$2''故。\n\n* 始之時為:$8\n* 終之時為:$6\n* 見禁之人:$7\n\n存惑可詢$1,或[[{{MediaWiki:Grouppage-sysop}}|有秩]],[[Special:Preferences|簿註]]無驛則信不遣。另,子IP為$3,其禁號為#$5。詢時切附之。",
        "autoblockedtext": "爾之IP或簿自禁,因簿先用,禁者$1也。因故::\\'\\'$2\\'\\'\n\n* 始之時為:$8\n* 終之時為:$6\n* 見禁之人:$7\n\n存惑可詢$1,或[[{{MediaWiki:Grouppage-sysop}}|有秩]],[[Special:Preferences|簿註]]無驛則信不遣。另,子用IP $3,禁號為#$5。詢時切附之。",
        "blockednoreason": "無由",
        "mailnologin": "無驛",
        "mailnologintext": "[[Special:UserLogin|登簿]]置郵,方可捎書。",
        "emailuser": "捎君",
-       "emailpage": "捎書",
        "emailpagetext": "表下捎焉,以郵制君。\n署[[Special:Preferences|子簿郵]]以候往返。",
        "defemailsubject": "{{SITENAME}}來書",
        "usermaildisabled": "無他人之郵",
index 5033ace..3ec3268 100644 (file)
        "rows": "Редови:",
        "columns": "Колони:",
        "searchresultshead": "Пребарување",
-       "stub-threshold": "Праг за <a href=\"#\" class=\"stub\">никулци</a> (бајти):",
+       "stub-threshold": "Праг за форматирање на врска за никулци ($1):",
+       "stub-threshold-sample-link": "примерок",
        "stub-threshold-disabled": "Оневозможено",
        "recentchangesdays": "Денови за приказ во скорешните промени:",
        "recentchangesdays-max": "(највеќе {{PLURAL:$1|еден ден|$1 дена}})",
index 210ede0..2835270 100644 (file)
        "createacct-benefit-body2": "{{PLURAL:$1|താൾ|താളുകൾ}}",
        "createacct-benefit-body3": "സമീപകാലത്ത് സംഭാവന {{PLURAL:$1|ചെയ്തയാൾ|ചെയ്തവർ}}",
        "badretype": "താങ്കൾ നൽകിയ രഹസ്യവാക്കുകൾ ഒത്തുപോകുന്നില്ല.",
+       "usernameinprogress": "ഈ ഉപയോക്തൃനാമത്തിലുള്ള അംഗത്വ നിർമ്മിതി നടന്നുകൊണ്ടിരിക്കുന്നു.\nദയവായി കാത്തിരിക്കുക.",
        "userexists": "നൽകിയ ഉപയോക്തൃനാമം മുമ്പേ നിലവിലുണ്ട്.\nദയവായി മറ്റൊരു ഉപയോക്തൃനാമം തിരഞ്ഞെടുക്കുക.",
        "loginerror": "പ്രവേശനം സാധിച്ചില്ല",
        "createacct-error": "അംഗത്വസൃഷ്ടിക്കിടെ പിഴവുണ്ടായി",
        "rows": "വരി:",
        "columns": "നിര:",
        "searchresultshead": "തിരയൂ",
-       "stub-threshold": "<a href=\"#\" class=\"stub\">അപൂർണ്ണമായ കണ്ണിയെന്നു</a> സ്ഥാപിക്കാനുള്ള ത്വരകം (ബൈറ്റുകൾ):",
+       "stub-threshold": "അപൂർണ്ണമായ കണ്ണിയെന്നു സ്ഥാപിക്കാനുള്ള ത്വരകം ($1):",
+       "stub-threshold-sample-link": "സാമ്പിൾ",
        "stub-threshold-disabled": "നിർജ്ജീവമാക്കപ്പെട്ടിരിക്കുന്നു",
        "recentchangesdays": "പുതിയ മാറ്റങ്ങളിൽ കാണിക്കേണ്ട ദിവസങ്ങളുടെ എണ്ണം:",
        "recentchangesdays-max": "പരമാവധി {{PLURAL:$1|ഒരു ദിവസം|$1 ദിവസങ്ങൾ}}",
        "logentry-newusers-create2": "$3 എന്ന ഉപയോക്തൃ അംഗത്വം $1 {{GENDER:$2|സൃഷ്ടിച്ചിരിക്കുന്നു}}",
        "logentry-newusers-byemail": "$3 എന്ന ഉപയോക്തൃ അംഗത്വം $1 {{GENDER:$2|സൃഷ്ടിച്ചിരിക്കുന്നു}}, രഹസ്യവാക്ക് ഇമെയിൽ വഴി അയച്ചു",
        "logentry-newusers-autocreate": "$1 എന്ന ഉപയോക്തൃ അംഗത്വം സ്വയം {{GENDER:$2|സൃഷ്ടിക്കപ്പെട്ടിരിക്കുന്നു}}",
+       "logentry-protect-move_prot": "സംരക്ഷണ സജ്ജീകരണങ്ങൾ $4  എന്നതിൽ നിന്ന് $3 എന്നതിലേക്ക് $1 {{GENDER:$2|മാറ്റി}}",
        "logentry-rights-rights": "$3 എന്ന ഉപയോക്താവിന്റെ സംഘ അംഗത്വം, $4 എന്നതിൽ നിന്നു $5 എന്നതിലേക്ക്, $1 {{GENDER:$2|മാറ്റിയിരിക്കുന്നു}}",
        "logentry-rights-rights-legacy": "$3 എന്ന ഉപയോക്താവിന്റെ സംഘ അംഗത്വം $1 {{GENDER:$2|മാറ്റിയിരിക്കുന്നു}}",
        "logentry-rights-autopromote": "$1 എന്ന ഉപയോക്താവ് $4 എന്നതിൽ നിന്നും $5 എന്നതിലേയ്ക്ക് സ്വയമേവ {{GENDER:$2|ഉയർത്തപ്പെട്ടിരിക്കുന്നു}}",
index 79140a7..71ff9d3 100644 (file)
@@ -11,7 +11,8 @@
                        "Tupikovs",
                        "Urhixidur",
                        "Игорь Бродский",
-                       "아라"
+                       "아라",
+                       "Denö"
                ]
        },
        "tog-underline": "Сюлмавома петнень алга черькстамс:",
        "rcshowhideminor-hide": "Кекшемс",
        "rcshowhidebots": "$1 ботт",
        "rcshowhidebots-show": "Невтемс",
+       "rcshowhidebots-hide": "Кекшемс",
        "rcshowhideliu": "$1 совавтозь теицят",
        "rcshowhideliu-hide": "Кекшемс",
        "rcshowhideanons": "$1 лемтеме теицят",
        "listgrouprights-removegroup-all": "Весе куротнень нардамс",
        "mailnologin": "Кучомс сёрма парго арась",
        "emailuser": "Кучомс е-сёрма те теицянтень",
-       "emailpage": "Кучт э-сёрма теицянтень",
        "defemailsubject": "{{SITENAME}} е-сёрма \"$1\"-нь пельде",
        "usermaildisabled": "Теицянь е-сёрмась пекстазь",
        "noemailtitle": "Е-сёрма парго арась",
index 2dc5a97..6dc6910 100644 (file)
@@ -16,7 +16,7 @@
        },
        "tog-underline": "Sottolinia 'e jonte:",
        "tog-hideminor": "Annascunne 'e cagne piccirille  'int'a ll'úrdeme cagne",
-       "tog-hidepatrolled": "Annascunne 'e cagne 'verificate' 'int'a ll'úrdeme cagne",
+       "tog-hidepatrolled": "Annascunne 'e cagne 'verificate' 'a ll'úrdeme cagnamiente",
        "tog-newpageshidepatrolled": "Annascunne 'e paggene cuntrullate 'a ll'elenco 'e ppaggene",
        "tog-extendwatchlist": "Spanne ll'asservate speciale pe fà vedé tutte 'e cagnàmiente, nun solo l'ultimo",
        "tog-usenewrc": "Urdeme càgnamiente avanzate (JavaScript)",
        "emailnotauthenticated": "'O ndirizzo 'e posta elettronica nun è stat'ancora cunfermato.\nNun se mannarranno mmasciate e-mail p' ' funzione ccà abbascio.",
        "noemailprefs": "Avite 'a specificà nu ndirizzo e-mail pe ll'attivà sti funzione.",
        "emailconfirmlink": "Cunferma 'o nderizzo mail d' 'o tujo.",
-       "invalidemailaddress": "'O nderizzo e-mail scritto nun se può accettà pecché nun tene nu furmatto buono.\nScrivite n'ata vota nu nderizzo bbuono o abbacantate 'a casciulella.",
+       "invalidemailaddress": "'O nderizzo e-mail scritto nun se può accettà pecché nun tene nu furmato buono.\nScrivite n'ata vota nu nderizzo bbuono o abbacantate 'a casciulella.",
        "cannotchangeemail": "'E ccunte mail nun se ponno cagnà dint'a sta wiki.",
        "emaildisabled": "Chistu sito nun può mannà mmasciate e-mail.",
        "accountcreated": "Cunto criato",
        "invalid-content-data": "Date cuntenute nun buone",
        "content-not-allowed-here": "'O cuntenuto \"$1\" nun è permesso dint'a paggena [[$2]]",
        "editwarning-warning": "Ascenno 'e sta paggena putisse ffà sperdere 'e cagnamiente fatte.\nSi sì trasuto, allora può stutà st'avviso dint'a sezziona \"{{int:prefs-editing}}\" d' 'e preferenze.",
-       "editpage-notsupportedcontentformat-title": "Furmatto d' 'o cuntenuto nun suppurtato",
-       "editpage-notsupportedcontentformat-text": "'O furmatto d' 'o cuntenuto $1 nun è suppurtato d' 'o mudello 'e cuntenuto $2.",
+       "editpage-notsupportedcontentformat-title": "Furmato d' 'o cuntenuto nun suppurtato",
+       "editpage-notsupportedcontentformat-text": "'O furmato d' 'o cuntenuto $1 nun è suppurtato d' 'o mudello 'e cuntenuto $2.",
        "content-model-wikitext": "wikitesto",
        "content-model-text": "testo nurmale",
        "content-model-javascript": "JavaScript",
        "columns": "Culonne:",
        "searchresultshead": "Truova",
        "stub-threshold": "Valore minimo p' 'e <a href=\"#\" class=\"stub\">cullegamiente a 'e stub</a>, 'n byte:",
+       "stub-threshold-sample-link": "mostra",
        "stub-threshold-disabled": "Stutato",
        "recentchangesdays": "Nummero 'e juorne a mmustà dint'a l'urdeme cagnamiente:",
        "recentchangesdays-max": "Massimo $1 {{PLURAL:$1|juorno|juorne}}",
index bdcd614..4438a4f 100644 (file)
        "upload-too-many-redirects": "De URL bevatte te veel doorverwijzingen",
        "upload-http-error": "Er is een HTTP-fout opgetreden: $1",
        "upload-copy-upload-invalid-domain": "Uploaden per kopie is niet beschikbaar vanuit dit domein.",
-       "backend-fail-stream": "Het was niet mogelijk het bestand $1 te streamen.",
+       "upload-dialog-title": "Bestand uploaden",
+       "upload-dialog-error": "Er is een fout opgetreden",
+       "upload-dialog-warning": "Een waarschuwing is opgetreden",
+       "upload-dialog-button-cancel": "Annuleren",
+       "upload-dialog-button-done": "Afgerond",
+       "upload-dialog-button-save": "Opslaan",
+       "upload-dialog-button-upload": "Upload",
+       "upload-dialog-label-select-file": "Selecteer bestand",
+       "upload-dialog-label-infoform-title": "Details",
+       "upload-dialog-label-infoform-name": "Naam",
+       "upload-dialog-label-infoform-description": "Beschrijving",
+       "upload-dialog-label-usage-title": "Gebruik",
+       "upload-dialog-label-usage-filename": "Bestandsnaam",
+       "backend-fail-stream": "Het was niet mogelijk het bestand \"$1\" te streamen.",
        "backend-fail-backup": "Het was niet mogelijk een reservekopie van het bestand $1 te maken.",
        "backend-fail-notexists": "Het bestand $1 bestaat niet.",
        "backend-fail-hashes": "Het was niet mogelijk de hashes voor het bestand op te halen om ze te vergelijken.",
        "unusedimages": "Ongebruikte bestanden",
        "wantedcategories": "Niet-bestaande categorieën met de meeste koppelingen",
        "wantedpages": "Niet-bestaande pagina's met koppelingen",
-       "wantedpages-summary": "Lijst van niet-bestaande pagina 's met de meeste schakels naar hen, met uitsluiting van pagina' s die slechts omleidingen linken naar hen. Voor een lijst van niet-bestaande pagina ' s die omleidingen linken naar hen, zie [[{{#special:BrokenRedirects}}|de lijst van gebroken redirects]].",
+       "wantedpages-summary": "Lijst van niet-bestaande pagina's met de meeste koppelingen naar hen, met uitsluiting van pagina's waarheen enkel doorverwijzingen linken. Voor een lijst van niet-bestaande pagina's waar doorverwijzingen naar linken, zie [[{{#special:BrokenRedirects}}|de lijst van gebroken doorverwijzingen]].",
        "wantedpages-badtitle": "Ongeldige paginanaam in resultaat: $1",
        "wantedfiles": "Niet-bestaande bestanden met koppelingen",
        "wantedfiletext-cat": "De volgende bestanden worden gebruikt maar bestaan niet. Bestanden van externe repositories kunnen zijn opgenomen in de lijst, ondanks dat ze bestaan. Dergelijke vals positieven worden <del>doorgehaald weergegeven</del>. Pagina's die niet-bestaande bestanden insluiten staan op de pagina [[:$1]].",
index 9051f4c..a5a6e47 100644 (file)
        "columns": "Kolumny:",
        "searchresultshead": "Wyszukiwanie",
        "stub-threshold": "Maksymalny (w bajtach) rozmiar strony oznaczanej jako <a href=\"#\" class=\"stub\">zalążek (stub)</a>:",
+       "stub-threshold-sample-link": "przykład",
        "stub-threshold-disabled": "Wyłączone",
        "recentchangesdays": "Liczba dni prezentowanych w ostatnich zmianach:",
        "recentchangesdays-max": "(maksymalnie $1 {{PLURAL:$1|dzień|dni}})",
        "logentry-newusers-create2": "$1 {{GENDER:$2|utworzył|utworzyła}} konto użytkownika $3",
        "logentry-newusers-byemail": "Konto $3 zostało utworzone przez użytkownika $1, hasło wysłano e-mailem",
        "logentry-newusers-autocreate": "$1 automatycznie {{GENDER:$2|utworzył|utworzyła|utworzył}} konto użytkownika",
+       "logentry-protect-move_prot": "$1 {{GENDER:$2|przeniósł|przeniosła}} ustawienia zabezpieczeń z $4 do $3",
        "logentry-rights-rights": "$1 {{GENDER:$2|zmienił|zmieniła}} przynależność $3 do grup ($4 → $5)",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|zmienił|zmieniła}} przynależność $3 do grup",
        "logentry-rights-autopromote": "$1 automatycznie {{GENDER:$2|zmienił|zmieniła}} przynależność ($4 → $5)",
index c37ec0e..26c0380 100644 (file)
        "rows": "ليکې:",
        "columns": "ستنې:",
        "searchresultshead": "پلټل",
+       "stub-threshold-sample-link": "مخبېلگه",
        "stub-threshold-disabled": "ناچارن",
        "recentchangesdays": "د هغو ورځو شمېر وټاکی چې په وروستي بدلونو کې يې ليدل غواړی:",
        "recentchangesdays-max": "حد اکثر $1 {{PLURAL:$1|ورځ|ورځې}}",
        "upload-file-error": "کورنۍ ستونزه",
        "upload-misc-error": "د پورته کېدنې نامالومه تېروتنه",
        "upload-http-error": "د HTTP يوه ستونزه رامېنځ ته شوې: $1",
+       "upload-dialog-title": "دوتنه پورته کول",
+       "upload-dialog-error": "يوه ستونزه پېښه شوې",
+       "upload-dialog-warning": "يوه گواښنه رامېنځ ته شوه",
+       "upload-dialog-button-cancel": "ناگارل",
+       "upload-dialog-button-done": "ترسره شو",
+       "upload-dialog-button-save": "خوندي کول",
+       "upload-dialog-button-upload": "پورته کول",
+       "upload-dialog-label-select-file": "دوتنه ټاکل",
+       "upload-dialog-label-infoform-title": "ځانگړنې",
+       "upload-dialog-label-infoform-name": "نوم",
+       "upload-dialog-label-infoform-description": "څرگندونه",
+       "upload-dialog-label-usage-title": "کارېدنې",
+       "upload-dialog-label-usage-filename": "د دوتنې نوم",
        "backend-fail-notexists": "د $1 په نوم دوتنه نشته.",
        "backend-fail-delete": "د \"$1\" دوتنه ړنګه نه شوه.",
        "backend-fail-alreadyexists": "د $1 دوتنه له پخوا نه شته.",
index 17ede96..aa7aae5 100644 (file)
        "faq": "FAQ",
        "faqpage": "Project:FAQ",
        "actions": "Ações",
-       "namespaces": "Espaços nominais",
+       "namespaces": "Domínios",
        "variants": "Variantes",
        "navigation-heading": "Menu de navegação",
        "errorpagetitle": "Erro",
        "returnto": "Retornar para $1.",
        "tagline": "De {{SITENAME}}",
        "help": "Ajuda",
-       "search": "Pesquisar",
+       "search": "Pesquisa",
        "searchbutton": "Pesquisar",
        "go": "Ir",
        "searcharticle": "Ir",
        "history_short": "Histórico",
        "updatedmarker": "atualizado desde a minha última visita",
        "printableversion": "Versão para impressão",
-       "permalink": "Link permanente",
+       "permalink": "Ligação permanente",
        "print": "Imprimir",
        "view": "Ver",
        "view-foreign": "Ver no $1",
        "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",
        "articlepage": "Ver página de conteúdo",
        "copyrightpage": "{{ns:project}}:Direitos_de_autor",
        "currentevents": "Eventos atuais",
        "currentevents-url": "Project:Eventos atuais",
-       "disclaimers": "Exoneração de responsabilidade",
-       "disclaimerpage": "Project:Aviso_geral",
+       "disclaimers": "Termo de responsabilidade",
+       "disclaimerpage": "Project:Aviso geral",
        "edithelp": "Ajuda de edição",
        "helppage-top-gethelp": "Ajuda",
        "mainpage": "Página principal",
        "portal": "Portal comunitário",
        "portal-url": "Project:Portal comunitário",
        "privacy": "Política de privacidade",
-       "privacypage": "Project:Política_de_privacidade",
+       "privacypage": "Project:Política de privacidade",
        "badaccess": "Erro de permissão",
        "badaccess-group0": "Você não está autorizado a executar a ação requisitada.",
        "badaccess-groups": "A ação que você tentou executar está limitada a usuários {{PLURAL:$2|do grupo|de um dos seguintes grupos}}: $1.",
        "nstab-user": "Página d{{GENDER:{{BASEPAGENAME}}|o usuário|a usuária|e usuário(a)}}",
        "nstab-media": "Página de mídia",
        "nstab-special": "Página especial",
-       "nstab-project": "Página do projeto",
+       "nstab-project": "Página de projeto",
        "nstab-image": "Arquivo",
        "nstab-mediawiki": "Mensagem",
        "nstab-template": "Predefinição",
        "actionthrottled": "Ação controlada",
        "actionthrottledtext": "Como medida \"anti-spam\", você se encontra impedido de realizar esta operação muitas vezes em um curto espaço de tempo; você já excedeu esse limite.\nTente novamente em alguns minutos.",
        "protectedpagetext": "Esta página foi protegida contra novas edições ou ações relacionadas.",
-       "viewsourcetext": "Você pode ver e copiar o código desta página:",
-       "viewyourtext": "Pode ver e copiar o código fonte '''das suas edições''' nesta página:",
+       "viewsourcetext": "Você pode ver e copiar o código desta página.",
+       "viewyourtext": "Você pode ver e copiar o código fonte '''das suas edições''' a esta página.",
        "protectedinterface": "Esta página fornece texto de interface ao software deste wiki, se encontrando protegida para prevenir abusos.\n\nPara adicionar ou alterar traduções em todos os wikis, utilize o [//translatewiki.net/ translatewiki.net], projeto de traduções do MediaWiki.",
        "editinginterface": "'''Aviso:''' Você se encontra prestes a editar uma página que é utilizada para fornecer texto de interface ao software.\nAlterações nesta página irão afetar a aparência da interface de usuário para outros usuários deste wiki.\nPara alterar ou adicionar traduções, considere utilizar a [//translatewiki.net/wiki/Main_Page?setlang=pt-br translatewiki.net], um projeto destinado para a tradução do MediaWiki.",
        "translateinterface": "Para adicionar ou modificar traduções para todas as wikis, por favor use  [//translatewiki.net/ translatewiki.net], o projeto de localização do MediaWiki.",
        "search-section": "(seção $1)",
        "search-category": "(categoria $1)",
        "search-file-match": "(coincide com o conteúdo do arquivo)",
-       "search-suggest": "Você quis dizer: $1",
+       "search-suggest": "Você quis dizer: $1?",
        "search-interwiki-caption": "Projetos irmãos",
        "search-interwiki-default": "Resultados de $1:",
        "search-interwiki-more": "(mais)",
        "log": "Registros",
        "all-logs-page": "Todos os registros públicos",
        "alllogstext": "Exibição combinada de todos registros disponíveis para o {{SITENAME}}.\nVocê pode diminuir a lista escolhendo um tipo de registro, um nome de usuário (sensível a maiúsculas e minúsculas), ou uma página afetada (também sensível a maiúsculas e minúsculas).",
-       "logempty": "Nenhum item idêntico no registro.",
+       "logempty": "Nenhum item correspondente no registro.",
        "log-title-wildcard": "Procurar por títulos que sejam iniciados com o seguinte texto",
        "showhideselectedlogentries": "Exibir/ocultar os itens de registros selecionados",
        "log-edit-tags": "Editar etiquetas das entradas selecionadas",
        "tooltip-pt-preferences": "Suas configurações",
        "tooltip-pt-watchlist": "Lista de alterações nas páginas que você está monitorando",
        "tooltip-pt-mycontris": "Listagem de suas contribuições",
-       "tooltip-pt-login": "Você é encorajado a autenticar-se, apesar disso não ser obrigatório.",
+       "tooltip-pt-login": "Você é encorajado a autenticar-se; no entanto, não é obrigatório",
        "tooltip-pt-logout": "Sair",
        "tooltip-pt-createaccount": "É recomendado que você crie uma conta e inicie uma seção; todavia, isto não é obrigatório",
        "tooltip-ca-talk": "Discussão sobre o conteúdo da página",
        "tooltip-n-mainpage-description": "Acessar a página principal",
        "tooltip-n-portal": "Sobre o projeto, o que se pode fazer e onde achar as coisas",
        "tooltip-n-currentevents": "Encontre informações sobre acontecimentos atuais",
-       "tooltip-n-recentchanges": "A lista de mudanças recentes desta wiki.",
+       "tooltip-n-recentchanges": "Uma lista de mudanças recentes nesta wiki",
        "tooltip-n-randompage": "Acessar uma página de forma aleatória",
-       "tooltip-n-help": "Lugar específico para obter ajuda quanto ao ambiente.",
+       "tooltip-n-help": "O lugar para informar-se",
        "tooltip-t-whatlinkshere": "Lista de todas as páginas que possuem links para esta",
        "tooltip-t-recentchangeslinked": "Mudanças recentes nas páginas para as quais esta possui links",
        "tooltip-feed-rss": "Feed RSS desta página",
        "spam_reverting": "Revertendo para a última versão que não contém links para $1",
        "spam_blanking": "Todas revisões contendo links para $1, limpando",
        "spam_deleting": "Eliminada por todas as suas edições conterem links para $1",
-       "simpleantispam-label": "Verificação contra spam\n'''NÃO''' preencha isto!",
+       "simpleantispam-label": "Verificação contra spam.\n<strong>Não</strong>  preencha isto!",
        "pageinfo-title": "Informações sobre \"$1\"",
        "pageinfo-not-current": "Desculpe-nos, não é possível fornecer esses dados para edições antigas.",
        "pageinfo-header-basic": "Informação básica",
index e2a6219..9093a52 100644 (file)
        "createacct-benefit-body2": "{{PLURAL:$1|página|páginas}}",
        "createacct-benefit-body3": "{{PLURAL:$1|contribuidor|contribuidores}} recentes",
        "badretype": "As palavras-passe que introduziu não coincidem.",
+       "usernameinprogress": "Uma conta para este nome de utilizador já está a ser criada.\nPor favor, aguarde.",
        "userexists": "O nome de utilizador introduzido já existe.\nPor favor escolha um nome diferente.",
        "loginerror": "Erro ao iniciar sessão",
        "createacct-error": "Erro na criação da conta",
        "yourdiff": "Diferenças",
        "copyrightwarning": "Note, por favor, que todas as suas contribuições na {{SITENAME}} são consideradas publicadas nos termos da licença $2 (consulte $1 para mais detalhes).\nSe não deseja que o seu texto possa ser inexoravelmente editado e redistribuído, não o envie.\nGarante-nos também que isto é algo escrito por si, ou copiado do domínio público ou de outra fonte de teor livre.<br />\n'''Não envie conteúdos cujos direitos de autor estão protegidos, sem ter a devida permissão!'''",
        "copyrightwarning2": "Note, por favor, que todas as suas contribuições na {{SITENAME}} podem ser editadas, alteradas ou removidas por outros utilizadores.\nSe não deseja que o seu texto seja inexoravelmente editado, não o envie.<br />\nGarante-nos também que isto é algo escrito por si, ou copiado do domínio público ou de outra fonte de teor livre (consulte $1 para mais detalhes).<br />\n'''Não envie conteúdos cujos direitos de autor estão protegidos, sem ter a devida permissão!'''",
+       "editpage-cannot-use-custom-model": "O modelo de conteúdo desta página não pode ser alterado.",
        "longpageerror": "'''Erro: O texto que submeteu ocupa {{PLURAL:$1|um kilobyte|$1 kilobytes}}, que excede o máximo de {{PLURAL:$2|um kilobyte|$2 kilobytes}}.'''\nA página não pode ser gravada.",
        "readonlywarning": "'''Aviso: A base de dados foi bloqueada para manutenção, pelo que não poderá gravar a sua edição neste momento.'''\nPode, no entanto, copiar e colar o seu texto num ficheiro de texto e guardá-lo para mais tarde.\n\nO administrador que bloqueou a base de dados forneceu a seguinte explicação: $1",
        "protectedpagewarning": "'''Aviso: Esta página foi protegida para só poder ser editada por administradores.'''\nO último registo é apresentado abaixo para referência:",
        "boteditletter": "b",
        "number_of_watching_users_pageview": "[{{PLURAL:$1|$1 utilizador|$1 utilizadores}} a vigiar]",
        "rc_categories": "Limitar às categorias (separar com \"|\"):",
-       "rc_categories_any": "Qualquer",
+       "rc_categories_any": "Qualquer dos escolhidos",
        "rc-change-size-new": "$1 {{PLURAL:$1|byte|bytes}} após mudança",
        "newsectionsummary": "/* $1 */ nova secção",
        "rc-enhanced-expand": "Mostrar detalhes",
        "upload-copy-upload-invalid-domain": "Não é possível realizar carregamentos remotos neste domínio.",
        "upload-dialog-title": "Carregar ficheiro",
        "upload-dialog-error": "Ocorreu um erro",
+       "upload-dialog-warning": "Ocorreu um aviso",
        "upload-dialog-button-cancel": "Cancelar",
        "upload-dialog-button-done": "Feito",
        "upload-dialog-button-save": "Gravar",
        "unusedimages": "Ficheiros não utilizados",
        "wantedcategories": "Categorias desejadas",
        "wantedpages": "Páginas desejadas",
+       "wantedpages-summary": "Lista de páginas inexistentes com o maior número de ligações à elas, excluindo páginas que possuem apenas redirecionamentos à elas. Para obter uma lista de páginas inexistentes que possuam redirecionamento à elas, veja [[{{#special:BrokenRedirects}}|a lista de redirecionamentos quebrados]].",
        "wantedpages-badtitle": "Título inválido no conjunto de resultados: $1",
        "wantedfiles": "Ficheiros desejados",
        "wantedfiletext-cat": "Os seguintes ficheiros são usados, mas não existem. Ficheiros de repositórios externos podem ser listados apesar de existirem. Tais falsos positivos aparecerão <del>riscados</del>. Adicionalmente, as páginas que incorporam ficheiros que não existem estão listadas em [[:$1]].",
        "log": "Registos",
        "all-logs-page": "Todos os registos públicos",
        "alllogstext": "Apresentação combinada de todos os registos disponíveis na wiki {{SITENAME}}.\nPode reduzir a lista escolhendo um tipo de registo, um nome de utilizador ou um título de página. Respeite maiúsculas e minúsculas.",
-       "logempty": "Não há dados a apresentar.",
+       "logempty": "Nenhum item correspondente no registo.",
        "log-title-wildcard": "Procurar títulos iniciados por este texto",
        "showhideselectedlogentries": "Mostrar ou ocultar as entradas selecionadas",
        "log-edit-tags": "Editar etiquetas das entradas de registo selecionadas",
        "undeletepagetext": "{{PLURAL:$1|A seguinte página foi eliminada|As seguintes páginas foram eliminadas}}, mas ainda {{PLURAL:$1|permanece|permanecem}} em arquivo e podem ser restauradas. O arquivo pode ser limpo periodicamente.",
        "undelete-fieldset-title": "Restaurar edições",
        "undeleteextrahelp": "Para restaurar o histórico de edições completo desta página, desmarque todas as caixas de seleção e clique '''''{{int:undeletebtn}}'''''.\nPara efetuar uma restauração seletiva, marque as caixas correspondentes às edições que pretende restaurar e clique '''''{{int:undeletebtn}}'''''.",
-       "undeleterevisions": "$1 {{PLURAL:$1|edição disponível|edições disponíveis}}",
+       "undeleterevisions": "$1 {{PLURAL:$1|revisão eliminada|revisões eliminadas}}",
        "undeletehistory": "Se restaurar uma página, todas as edições serão restauradas para o histórico.\nSe uma nova página foi criada com o mesmo nome desde a eliminação, as edições restauradas aparecerão no histórico anterior.",
        "undeleterevdel": "O restauro não será efetuado se resulta na remoção parcial da versão mais recente da página ou ficheiro.\nNestes casos, deverá desmarcar ou revelar a versão eliminada mais recente.",
        "undeletehistorynoadmin": "Esta página foi eliminada. O motivo de eliminação é apresentado no sumário abaixo, junto dos detalhes do utilizador que editou esta página antes de eliminar. O texto atual destas edições eliminadas encontra-se agora apenas disponível para administradores.",
        "importcantopen": "Não foi possível abrir o ficheiro a importar",
        "importbadinterwiki": "Ligação interlíngua incorreta",
        "importsuccess": "Importação completa!",
-       "importnosources": "Não foram definidas fontes de importação transwikis e o carregamento direto de históricos encontra-se desativado.",
+       "importnosources": "Não foram definidas as wikis das quais importar e o carregamento direto de históricos encontra-se desativado.",
        "importnofile": "Nenhum ficheiro de importação foi carregado.",
        "importuploaderrorsize": "O carregamento do ficheiro importado falhou.\nO ficheiro é maior do que o tamanho máximo permitido.",
        "importuploaderrorpartial": "O carregamento do ficheiro importado falhou.\nO ficheiro foi recebido parcialmente.",
        "tooltip-n-mainpage-description": "Visitar a página principal",
        "tooltip-n-portal": "Sobre o projeto, o que se pode fazer e onde encontrar as coisas",
        "tooltip-n-currentevents": "Informação temática sobre acontecimentos atuais",
-       "tooltip-n-recentchanges": "A lista de mudanças recentes nesta wiki.",
+       "tooltip-n-recentchanges": "Uma lista de mudanças recentes nesta wiki",
        "tooltip-n-randompage": "Carregar página aleatória",
        "tooltip-n-help": "Um local reservado para auxílio.",
        "tooltip-t-whatlinkshere": "Lista de todas as páginas que contêm ligações para esta",
        "spam_reverting": "A reverter para a última revisão que não contém ligação para $1",
        "spam_blanking": "Todas as revisões continham ligações para $1; a esvaziar",
        "spam_deleting": "Todas as revisões continham ligações para $1; a eliminar",
-       "simpleantispam-label": "Verificação contra spam.\n<strong>NÃ\83O</strong> preencha isto!",
+       "simpleantispam-label": "Verificação contra spam.\n<strong>Não</strong> preencha isto!",
        "pageinfo-title": "Informações sobre \"$1\"",
        "pageinfo-not-current": "Desculpe, é impossível fornecer esta informação para revisões antigas.",
        "pageinfo-header-basic": "Informação básica",
        "pageinfo-watchers": "Número de vigilantes da página",
        "pageinfo-visiting-watchers": "Número de vigilantes que consultaram as edições recentes da página",
        "pageinfo-few-watchers": "Menos do que $1 {{PLURAL:$1|vigilante|vigilantes}}",
+       "pageinfo-few-visiting-watchers": "Pode ou não pode haver editores a vigiar as edições recentes",
        "pageinfo-redirects-name": "Número de redirecionamentos para esta página",
        "pageinfo-subpages-name": "Subpáginas desta página",
        "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|redirecionamento|redirecionamentos}}; $3 {{PLURAL:$3|não-redirecionamento|não-redirecionamentos}})",
        "tags-edit-success": "As alterações foram aplicadas com sucesso.",
        "tags-edit-failure": "As alterações não puderam ser aplicadas:\n$1",
        "tags-edit-nooldid-title": "Revisão de página inválida",
+       "tags-edit-nooldid-text": "Não foi especificada nenhuma revisão na qual será realizada esta acção, ou a revisão especificada não existe.",
        "tags-edit-none-selected": "Por favor, selecione pelo menos uma etiqueta para adicionar ou remover.",
        "comparepages": "Comparar páginas",
        "compare-page1": "Página 1",
        "htmlform-title-not-creatable": "\"$1\" não é um título que possa ser atribuído a uma página",
        "htmlform-title-not-exists": "[[:$1]] não existe.",
        "htmlform-user-not-exists": "<strong>$1</strong> não existe.",
+       "htmlform-user-not-valid": "<strong>$1</strong> não é um nome de utilizador válido.",
        "sqlite-has-fts": "$1 com suporte de pesquisa de texto completo",
        "sqlite-no-fts": "$1 sem suporte de pesquisa de texto completo",
        "logentry-delete-delete": "$1 apagou a página $3",
        "logentry-newusers-create2": "A conta de utilizador $3 foi criada por $1",
        "logentry-newusers-byemail": "A conta de utilizador $3 foi criada por $1 e a palavra-passe foi enviada por correio eletrónico",
        "logentry-newusers-autocreate": "A conta de utilizador $1 foi criada automaticamente",
+       "logentry-protect-move_prot": "$1 {{GENDER:$2|moveu}} as preferências de protecção de $4 para $3",
        "logentry-rights-rights": "$1 modificou os privilégios do utilizador $3 de $4 para $5",
        "logentry-rights-rights-legacy": "$1 alterou os grupos de $3",
        "logentry-rights-autopromote": "$1 foi automaticamente {{GENDER:$2|promovido|promovida}} de $4 a $5",
        "feedback-message": "Mensagem:",
        "feedback-subject": "Assunto:",
        "feedback-submit": "Enviar",
+       "feedback-terms": "Entendo que as informações de meu agente de utilizador inclui a informação acerca da versão exata de meu navegador e sistema operacional e que serão partilhadas publicamente juntamente aos meus comentários.",
        "feedback-termsofuse": "Concordo em fornecer comentários de acordo com as Condições de Uso.",
        "feedback-thanks": "Obrigado! O seu comentário foi adicionado à página \"[$2 $1]\".",
        "feedback-thanks-title": "Obrigado!",
+       "feedback-useragent": "Agente de utilizador:",
        "searchsuggest-search": "Pesquisa",
        "searchsuggest-containing": "contendo...",
        "api-error-badaccess-groups": "Não tem permissão para enviar ficheiros para esta wiki.",
        "mediastatistics-header-drawing": "Desenhos (imagens vetoriais)",
        "mediastatistics-header-audio": "Áudio",
        "mediastatistics-header-video": "Vídeo",
+       "mediastatistics-header-multimedia": "Rich media",
        "mediastatistics-header-office": "Documentos",
        "mediastatistics-header-text": "Textuais",
        "mediastatistics-header-executable": "Executáveis",
index 0cf37cd..fad6182 100644 (file)
                        "Macofe",
                        "FRacco",
                        "Robin0van0der0vliet",
-                       "TTO"
+                       "TTO",
+                       "J. 'mach' wust"
                ]
        },
        "sidebar": "{{notranslate}}",
        "rows": "Used on [[Special:Preferences]], \"Editing\" section in the \"Size of editing window\" fieldset.\n{{Identical|Row}}",
        "columns": "Used on [[Special:Preferences]], \"Editing\" section in the \"Size of editing window\" fieldset.\n{{Identical|Column}}",
        "searchresultshead": "Replaced by {{msg-mw|prefs-searchoptions}}, though may still be used in some extensions. DEPRECATED.\n\n{{Identical|Search}}",
-       "stub-threshold": "Used in [[Special:Preferences]], tab \"Misc\".",
+       "stub-threshold": "Used in [[Special:Preferences]], \"Advanced options\" section. The setting allows the user to select a threshold value, in bytes, from a predefined list of options. Any links that lead to pages smaller than the threshold (\"stub links\") will be styled differently.\n\nParameters:\n* $1: the text of {{msg-mw|stub-threshold-sample-link}}, styled as a stub link",
+       "stub-threshold-sample-link": "Passed as a parameter to the {{msg-mw|stub-threshold}} message.",
        "stub-threshold-disabled": "Used in [[Special:Preferences]].\n{{Identical|Disabled}}",
        "recentchangesdays": "Used in [[Special:Preferences]], tab \"Recent changes\".",
        "recentchangesdays-max": "Shown as hint in [[Special:Preferences]], tab \"Recent changes\". Parameters:\n* $1 - number of days\nSee also:\n* {{msg-mw|Prefs-watchlist-days-max}}",
        "upload-dialog-label-infoform-title": "Title for the information form\n{{Identical|Detail}}",
        "upload-dialog-label-infoform-name": "Label for the file name input\n{{Identical|Name}}",
        "upload-dialog-label-infoform-description": "Label for the file description input\n{{Identical|Description}}",
-       "upload-dialog-label-usage-title": "Title for the usage form\n{{Identical|Usage}}",
+       "upload-dialog-label-usage-title": "Title for the insert form showing how to use the uploaded item.\n{{Identical|Usage}}",
        "upload-dialog-label-usage-filename": "Label for the file name input\n{{Identical|Filename}}",
        "backend-fail-stream": "Parameters:\n* $1 - a filename",
        "backend-fail-backup": "Parameters:\n* $1 - a filename",
        "listusers-summary": "{{notranslate}}\nThe summary displayed at the top of [[Special:Listusers]]. [[mw:Manual:Interface/Special pages summary|mw manual]].",
        "listusers-editsonly": "Option in [[Special:ListUsers]].",
        "listusers-creationsort": "Option in [[Special:ListUsers]].",
-       "listusers-desc": "Used as label for the checkbox.",
+       "listusers-desc": "Used as label for the checkbox on [[Special:ListUsers]].",
        "usereditcount": "Shown behind every username on [[Special:ListUsers]]. Parameters:\n* $1 - number of edits",
        "usercreated": "Used in [[Special:ListUsers]]. Parameters:\n* $1 - a date\n* $2 - a time\n* $3 - the name of the user, for use in GENDER",
        "newpages": "{{doc-special|NewPages}}\n{{Identical|New page}}",
        "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-hooks": "Shown in [[Special:Version]]",
+       "version-hooks": "Shown in [[Special:Version]]\n{{Identical|Hook}}",
        "version-parser-extensiontags": "Part of [[Special:Version]].\nThis message is followed by the list of parser extension tags like <code><nowiki><charinsert></nowiki></code>, <code><nowiki><coordinates></nowiki></code>, etc.",
        "version-parser-function-hooks": "Shown in [[Special:Version]]",
        "version-hook-name": "Shown in [[Special:Version]].\n\nFor meaning of hook see [[mw:Special:MyLanguage/Manual:Hooks|mw:Manual:Hooks]] and [[w:Hooking]].",
        "limitreport-postexpandincludesize-value": "Format for the \"Post-expand include size\" row in the limit report table. Parameters:\n* $1 - the usage (in bytes)\n* $2 - the maximum (in bytes)",
        "limitreport-templateargumentsize": "Label for the \"Template argument size\" row in the limit report table",
        "limitreport-templateargumentsize-value": "Format for the \"Template argument size\" row in the limit report table.\n\nParameters:\n* $1 - the usage (in bytes)\n* $2 - the maximum (in bytes)",
-       "limitreport-expansiondepth": "Label for the \"Highest expansion depth\" row in the limit report table",
+       "limitreport-expansiondepth": "Label for the \"Highest expansion depth\" row in the limit report table.\n\nIf \"highest depth\" is an oxymoron in your language, use \"deepest (depth)\" instead.",
        "limitreport-expansiondepth-value": "{{optional}}\nFormat for the \"Highest expansion depth\" row in the limit report table.\n\nParameters:\n* $1 - the depth\n* $2 - the maximum",
        "limitreport-expensivefunctioncount": "Label for the \"Expensive parser function count\" row in the limit report table",
        "limitreport-expensivefunctioncount-value": "{{optional}}\nFormat for the \"Expensive parser function count\" row in the limit report table.\n\nParameters:\n* $1 - the usage\n* $2 - the maximum",
index 9f60825..640e093 100644 (file)
        "rows": "Righe:",
        "columns": "Culonne:",
        "searchresultshead": "Cirche",
-       "stub-threshold": "Soglie pe <a href=\"#\" class=\"stub\">collegamende stub</a> de formattazione (byte):",
+       "stub-threshold": "Soglie pe collegamende stub de formattazione ($1):",
+       "stub-threshold-sample-link": "esembie",
        "stub-threshold-disabled": "Disabbilitate",
        "recentchangesdays": "Sciurne da fà vedè jndr'à le cangiaminde recende:",
        "recentchangesdays-max": "(massime $1 {{PLURAL:$1|sciurne|sciurne}})",
index ee7c91b..305250b 100644 (file)
        "createacct-benefit-body2": "{{PLURAL:$1|сирэй|сирэй}}",
        "createacct-benefit-body3": "кэнники {{PLURAL:$1|кыттааччы|кыттааччы}}",
        "badretype": "Киирии тылларыҥ сөп түбэспэтилэр.",
+       "usernameinprogress": "Бу аатынан бэлиэтэнии бара турар.\nБука диэн кэтэһэ түс.",
        "userexists": "Суруйбут аатыҥ бэлиэр баар.\nБука диэн, атын аатта тал.",
        "loginerror": "Ааккын система билбэтэ",
        "createacct-error": "Бэлиэтэнии кэмигэр алҕас таҕыста",
        "uploaded-href-unsafe-target-svg": "Хачайдаммыт SVG-билэҕэ кутталлаах сигэ көһүннэ <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploaded-animate-svg": "«Animate» тиэк көһүннэ, кини «from»-атрибут көмөтүнэн  <code>&lt;$1 $2=\"$3\"&gt;</code> хачайдаммыт SVG-билэҕэ сигэни уларытыан сөп.",
        "uploaded-setting-href-svg": "Төрүт элэмиэҥҥэ «href» атрибуту киллэрэр «set» тиэги туһанар бобуулаах.",
+       "uploaded-wrong-setting-svg": "«Set» тиэги аадырыс/дааннай/сценарий быһыытынан ханнык баҕарар атрибуукка эбии хааччахтаммыт. Угуллубут SVG-билэҕэ <code>&lt;set to=\"$1\"&gt;</code> конструкция көстүбүт.",
+       "uploaded-setting-handler-svg": "«Handler» атрибууту аадырыс/дааннай/скрипт көмөтүнэн быһаарар SVG хааччахтаммыт. Угуллубут SVG-билэҕэ <code>$1=\"$2\"</code> конструкция көстүбүт.",
        "uploaded-image-filter-svg": "Хачайдаммыт SVG-билэҕэ маннык URL-аадырыстаах ойуу сиидэтэ көстүбүт <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploadscriptednamespace": "Бу SVG-билэ алҕастаах аат даллаах эбит: '$1'",
        "uploadinvalidxml": "Хачайдаммит билэҕэ XML анаалыстанар кыаҕа суох.",
index 555db1a..bb6ec5e 100644 (file)
@@ -10,7 +10,8 @@
                        "Yerpo",
                        "아라",
                        "MaGa",
-                       "Skalcaa"
+                       "Skalcaa",
+                       "Janezdrilc"
                ]
        },
        "tog-underline": "Podčrtavanje povezav:",
        "rows": "Vrstic:",
        "columns": "Stolpcev:",
        "searchresultshead": "Nastavitve poizvedovanja",
-       "stub-threshold": "Prag označevanja <a href=\"#\" class=\"stub\">škrbin</a> (v bajtih):",
+       "stub-threshold": "Prag označevanja škrbin ($1):",
+       "stub-threshold-sample-link": "primer",
        "stub-threshold-disabled": "Onemogočeno",
        "recentchangesdays": "Število dni, prikazanih v zadnjih spremembah:",
        "recentchangesdays-max": "Največ $1 {{PLURAL:$1|dan|dneva|dnevi|dni}}",
        "newpages": "Nove strani",
        "newpages-username": "Uporabniško ime:",
        "ancientpages": "Najdlje nespremenjeni članki",
-       "move": "Prestavi",
+       "move": "Preimenuj",
        "movethispage": "Prestavi stran",
        "unusedimagestext": "Spodnje datoteke obstajajo, vendar niso vključene v nobeno stran.\nProsimo, upoštevajte, da se lahko druge spletne strani povezujejo na datoteko z neposrednim URL in je zato morda še vedno navedena tukaj, čeprav se aktivno uporablja.",
        "unusedcategoriestext": "Naslednje strani kategorij obstajajo, vendar jih ne uporablja noben članek ali druga kategorija.",
        "lockfilenotwritable": "Datoteka zaklepanja zbirke podatkov ni zapisljiva.\nZa zaklepanje in odklepanje zbirke podatkov mora biti ta datoteka zapisljiva s strani spletnega strežnika.",
        "databasenotlocked": "Zbirka podatkov ni zaklenjena.",
        "lockedbyandtime": "($1 dne $2 ob $3)",
-       "move-page": "Prestavi $1",
+       "move-page": "Preimenuj $1",
        "move-page-legend": "Prestavitev strani",
        "movepagetext": "Z naslednjim obrazcem lahko stran preimenujete in hkrati prestavite tudi vso njeno zgodovino.\nDosedanja stran se bo spremenila v preusmeritev na prihodnje mesto.\nSamodejno lahko posodobite preusmeritve, ki kažejo na dosedanji naslov.\nČe se za to ne odločite, ne pozabite preveriti vseh [[Special:DoubleRedirects|dvojnih]] ali [[Special:BrokenRedirects|pretrganih preusmeritev]].\nOdgovorni ste, da bodo povezave še naprej kazale na prava mesta.\n\nKjer stran z izbranim novim imenom že obstaja, dejanje '''ne''' bo izvedeno, razen če je sedanja stran preusmeritev in brez zgodovine urejanj.\nTo pomeni, da lahko, če se zmotite, strani vrnete prvotno ime, ne morete pa prepisati že obstoječe strani.\n\n'''Opozorilo!'''\nPrestavitev strani je lahko za priljubljeno stran velika in nepričakovana sprememba, zato pred izbiro ukaza dobro premislite.",
        "movepagetext-noredirectfixer": "Z uporabo spodnjega obrazca lahko preimenujete stran tako, da prestavite vso njeno zgodovino na novo ime.\nStar naslov bo postal preusmeritvena stran na nov naslov.\nNe pozabite preveriti [[Special:DoubleRedirects|dvojnih]] ali [[Special:BrokenRedirects|pretrganih preusmeritev]].\nVi ste odgovorni, da vse povezave še naprej kažejo tja, kamor naj bi.\n\nUpoštevajte, da stran '''ne''' bo prestavljena, če že obstaja stran z novim naslovom, razen če je prazna ali preusmeritev brez pretekle zgodovine urejanj.\nTo pomeni, da lahko stran preimenujete nazaj, če ste naredili napako, vendar ne morete prepisati obstoječe strani.\n\n'''Opozorilo!'''\nTo je lahko velika in nepričakovana sprememba za priljubljeno stran;\nprosimo, pred nadaljevanjem se prepričajte, da razumete posledice tega dejanja.",
        "movepagetalktext": "Če obstaja, bo samodejno prestavljena tudi pripadajoča pogovorna stran, '''razen kadar'''\n*pod novim imenom že obstaja neprazna pogovorna stran ali\n*ste odkljukali spodnji okvirček.\n\nČe je tako, boste morali pogovorno stran, če želite, prestaviti ali povezati ročno.",
-       "movearticle": "Prestavi stran:",
+       "movearticle": "Preimenuj stran:",
        "moveuserpage-warning": "'''Opozorilo:''' Premikate uporabniško stran. To pomeni, da bo premaknjena samo stran in uporabnik ''ne'' bo preimenovan.",
        "movecategorypage-warning": "<strong>Opozorilo:</strong> Prestavili boste stran kategorije. Pomnite, da boste prestavili samo stran; vse strani v stari kategoriji <em>ne</em> bomo prekategorizirali v novo kategorijo.",
        "movenologintext": "Za prestavljanje strani morate biti registrirani in [[Special:UserLogin|prijavljeni]].",
        "tooltip-ca-unprotect": "Spremenite zaščito strani",
        "tooltip-ca-delete": "Brišite stran",
        "tooltip-ca-undelete": "Obnovite pred izbrisom napravljena urejanja strani.",
-       "tooltip-ca-move": "Preimenujte stran",
+       "tooltip-ca-move": "Preimenuj stran",
        "tooltip-ca-watch": "Dodajte stran na spisek nadzorov",
        "tooltip-ca-unwatch": "Odstranite stran s spiska nadzorov",
        "tooltip-search": "Preiščite wiki",
index d26b052..edc5c9a 100644 (file)
@@ -27,7 +27,9 @@
                        "아라",
                        "Gertakapllani",
                        "OrvenBregu",
-                       "Macofe"
+                       "Macofe",
+                       "Liridon",
+                       "Ammartivari"
                ]
        },
        "tog-underline": "Nënvizo lidhjet:",
@@ -94,7 +96,7 @@
        "february": "shkurt",
        "march": "mars",
        "april": "prill",
-       "may_long": "Maj",
+       "may_long": "maj",
        "june": "qershor",
        "july": "korrik",
        "august": "gusht",
        "feb": "Shku",
        "mar": "Mar",
        "apr": "Pri",
-       "may": "maj",
+       "may": "Maj",
        "jun": "Qer",
        "jul": "Korr",
        "aug": "Gush",
        "pagecategories": "{{PLURAL:$1|Kategoria|Kategoritë}}",
        "category_header": "Artikuj në kategorinë \"$1\"",
        "subcategories": "Nën-kategori",
-       "category-media-header": "Skeda në kategori \"$1\"",
+       "category-media-header": "Skeda në kategori \"$1\"",
        "category-empty": "''Kjo kategori aktualisht nuk përmban asnjë faqe apo media.''",
        "hidden-categories": "{{PLURAL:$1|Kategori e fshehur|Kategori të fshehura}}",
        "hidden-category-category": "Kategori të fshehura",
        "sort-descending": "Radhit në zbritje",
        "sort-ascending": "Radhit në ngjitje",
        "nstab-main": "Artikulli",
-       "nstab-user": "Faqja e përdoruesit",
+       "nstab-user": "{{GENDER:{{ROOTPAGENAME}}|Faqja e përdoruesit|Faqja e përdorueses}}",
        "nstab-media": "Media-faqe",
        "nstab-special": "Faqe speciale",
        "nstab-project": "Projekt-faqe",
        "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ë",
+       "content-model-javascript": "JavaScript",
        "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",
        "post-expand-template-inclusion-warning": "'''Kujdes''': Numri i shablloneve që perfshihen është shumë i madh.\nDisa shabllone nuk do të përfshihen.",
        "currentrev": "Versioni i tanishëm",
        "currentrev-asof": "Versioni momental që nga $1",
        "revisionasof": "Versioni i $1",
-       "revision-info": "Versioni më $1 nga $2",
+       "revision-info": "Versioni i datës $1 nga {{GENDER:$6|$2}}$7",
        "previousrevision": "← Version më i vjetër",
        "nextrevision": "Version më i ri →",
        "currentrevisionlink": "shikoni versionin e tanishëm",
        "histlegend": "Legjenda: (tani) = ndryshimet me versionin e tanishëm,\n(fund) = ndryshimet me versionin e parardhshëm, V = redaktim i vogël",
        "history-fieldset-title": "Shfleto historikun",
        "history-show-deleted": "Vetëm versionet të grisur",
-       "histfirst": "Së pari",
-       "histlast": "Së fundmi",
+       "histfirst": "më të vjetër",
+       "histlast": "më të rinj",
        "historysize": "({{PLURAL:$1|1 B|$1 B}})",
        "historyempty": "(bosh)",
        "history-feed-title": "Historiku i versioneve",
        "revdelete-hide-image": "Fshih përmbajtjen skedës",
        "revdelete-hide-name": "Fshihe veprimin dhe shënjestrën",
        "revdelete-hide-comment": "fshih komentin e redaktimit",
-       "revdelete-hide-user": "Fshihe emrin/IP-në të redaktuesit",
+       "revdelete-hide-user": "Nofta e redaktuesit/Adresa IP",
        "revdelete-hide-restricted": "Ndalo të dhëna nga administrues si dhe të tjerë",
        "revdelete-radio-same": "(Mos ndryshoni)",
-       "revdelete-radio-set": "Po",
-       "revdelete-radio-unset": "Jo",
+       "revdelete-radio-set": "Fshehur",
+       "revdelete-radio-unset": "Dukshëm",
        "revdelete-suppress": "Ndalo të dhëna nga administrues si dhe të tjerë",
        "revdelete-unsuppress": "Hiq kufizimet nga versionet e restauruara",
        "revdelete-log": "Arsyeja:",
        "revdelete-no-change": "'''Kujdes:''' artikulli i datës $2, $1 e ka kërkesën e parametrit të dukshmërisë.",
        "revdelete-concurrent-change": "Gabim gjatë modifikimit të artikullit të datës $2, $1: statusi i tij duket të jetë ndryshuar nga dikush tjetër kur ju po provonit ta modifikonit.\nJu lutemi kontrolloni regjistrat.",
        "revdelete-only-restricted": "Gabim gjatë fshehjes së artikullit të datës $2, $1: ju nuk mund të fshihni artikuj nga pamja e administratorëve pa zgjedhur gjithashtu një nga opsionet e tjera të dukshmërisë.",
-       "revdelete-reason-dropdown": "* Arsye grisjeje e përbashkët\n** Shkelje të të drejtave të autorit\n** Informacion pa  kriter personal\n** Potencialisht informacion shfipës",
+       "revdelete-reason-dropdown": "* Arsye të zakonshme të grisjes\n** Shkelje të të drejtave të autorit\n** Komente ose të dhëna personale të papërshtatshme\n** Emër i papërshtatshëm i përdoruesit\n** Të dhëna potencialisht shpifëse",
        "revdelete-otherreason": "Arsye tjetër/shtesë:",
        "revdelete-reasonotherlist": "Arsye tjetër",
        "revdelete-edit-reasonlist": "Arsye grisjeje për redaktimet",
        "compareselectedversions": "Krahasoni versionet e zgjedhura",
        "showhideselectedversions": "Shfaq/fshih versionet e zgjedhura",
        "editundo": "zhbëje",
+       "diff-empty": "(Pa ndryshime)",
+       "diff-multi-sameuser": "({{PLURAL:$1|Një versioni i ndërmjetëm|$1 versione të ndërmjetme}} nga i njëjti përdorues nuk {{PLURAL:$1|është|janë}} paraqitur)",
        "diff-multi-manyusers": "({{PLURAL:$1|Një versioni i ndërmjetshëm|$1 versione të ndërmjetshme}} nga më shumë se $2 {{PLURAL:$2|përdorues|përdorues}} i/të pashfaqur)",
        "searchresults": "Rezultatet e kërkimit",
        "searchresults-title": "Rezultatet e kërkimit për \"$1\"",
        "notextmatches": "Nuk ka asnjë tekst faqeje që përputhet",
        "prevn": "{{PLURAL:$1|$1}} më para",
        "nextn": "{{PLURAL:$1|$1}} më pas",
+       "prev-page": "faqja paraardhëse",
+       "next-page": "faqja pasardhëse",
        "prevn-title": "$1 i mëparshëm {{PLURAL:$1|rezultat|rezultate}}",
        "nextn-title": "$1 në vazhdim {{PLURAL:$1|rezultat|rezultate}}",
        "shown-title": "Trego $1 {{PLURAL:$1|rezultat|rezultate}} për faqe",
        "viewprevnext": "Shikoni ($1 {{int:pipe-separator}} $2) ($3).",
        "searchmenu-exists": "'''Në këtë wiki kjo faqe është emëruar \"[[:$1]]\"'''",
-       "searchmenu-new": "'''Hapë faqen \"[[:$1]]\" në këtë wiki!'''",
+       "searchmenu-new": "<strong>Krijo faqen \"[[:$1]]\" në këtë wiki!</strong> {{PLURAL:$2|0=|Shih gjithashtu faqen e gjetur në kërkimin tuaj.|Shih gjithashtu rezultatet e gjetura nga kërkimi.}}",
        "searchprofile-articles": "Përmbajtja e faqeve",
        "searchprofile-images": "Multimedia",
        "searchprofile-everything": "Gjithçka",
        "search-result-category-size": "{{PLURAL:$1|1 anëtar|$1 anëtarë}} ({{PLURAL:$2|1 nën-kategori|$2 nën-kategori}}, {{PLURAL:$3|1 skedë|$3 skeda}})",
        "search-redirect": "(përcjellim $1)",
        "search-section": "(seksioni $1)",
+       "search-category": "(kategoria $1)",
        "search-suggest": "Mos kishit në mendje: $1",
        "search-interwiki-caption": "Projekte simotra",
        "search-interwiki-default": "$1 përfundime:",
        "searchrelated": "të ngjashme",
        "searchall": "të gjitha",
        "showingresults": "Më poshtë tregohen {{PLURAL:$1|'''1''' përfundim|'''$1''' përfundime}} duke filluar nga #'''$2'''.",
+       "search-showingresults": "{{PLURAL:$4|Rezultati <strong>$1</strong> nga <strong>$3</strong>|Rezultatet <strong>$1 - $2</strong> nga <strong>$3</strong>}}",
        "search-nonefound": "Nuk ka rezultate që përputhen me kërkesën.",
        "powersearch-legend": "Kërkim i përparuar",
        "powersearch-ns": "Kërkim në hapësira:",
        "prefs-personal": "Përdoruesi",
        "prefs-rc": "Ndryshime së fundmi",
        "prefs-watchlist": "Lista mbikqyrëse",
+       "prefs-editwatchlist": "Redakto listën mbikqyrëse",
        "prefs-watchlist-days": "Numri i ditëve të treguara tek lista mbikqyrëse:",
        "prefs-watchlist-days-max": "Maksimumi $1 ditë",
        "prefs-watchlist-edits": "Numri i redaktimeve të treguara tek lista mbikqyrëse e zgjeruar:",
        "timezoneregion-indian": "Oqeani Indian",
        "timezoneregion-pacific": "Oqeani Paqësor",
        "allowemail": "Lejo përdoruesit të më dërgojnë email",
-       "prefs-searchoptions": "Mundësi kërkimi",
+       "prefs-searchoptions": "Kërko",
        "prefs-namespaces": "Hapësirat",
        "default": "parazgjedhje",
        "prefs-files": "Figura",
        "badsiglength": "Nënshkrimi është tepër i gjatë.\nNuk duhet të jetë më i gjatë se $1 {{PLURAL:$1|karakter|karaktere}}.",
        "yourgender": "Gjinia:",
        "gender-unknown": "e pacaktuar",
-       "gender-male": "Mashkull",
-       "gender-female": "Femër",
+       "gender-male": "Ai redakton faqet wiki",
+       "gender-female": "Ajo redakton faqet wiki",
        "prefs-help-gender": "Sipas dëshirës: përdoret për adresim korrekt në relacion me gjininë nga software-i.\nKjo informatë është publike.",
        "email": "Email",
        "prefs-help-realname": "* Emri i vërtetë nuk është i domosdoshëm: Nëse e jipni do të përmendeni si kontribues për punën që ke bërë.",
        "prefs-dateformat": "Data i formatit",
        "prefs-timeoffset": "Kohë të kompensuar",
        "prefs-advancedediting": "Opsionet e avancuar",
+       "prefs-editor": "redaktor",
+       "prefs-preview": "Parapamje",
        "prefs-advancedrc": "Opsionet e avancuar",
        "prefs-advancedrendering": "Opsionet e avancuar",
        "prefs-advancedsearchoptions": "Opsionet e avancuar",
        "right-importupload": "Importo faqet nga një ngarkim skede",
        "right-patrol": "Shëno redaktimin e tjerëve si të patrulluar",
        "right-autopatrol": "A e vet redaktimet e shënuar automatikisht patrulluar",
-       "right-patrolmarks": "Shiko ndryshimet e fundit shënon patrullë",
+       "right-patrolmarks": "Shiko shënimet patrulluese tek ndryshimet e fundit",
        "right-unwatchedpages": "Shiko listën e faqeve të pa vëzhguara",
        "right-mergehistory": "Bashko historinë e faqeve",
        "right-userrights": "Redakto të gjitha të drejtat e përdoruesit",
        "action-siteadmin": "mbyll ose hap bazën e të dhënave",
        "action-sendemail": "dërgo e-maile",
        "nchanges": "$1 {{PLURAL:$1|ndryshim|ndryshime}}",
+       "enhancedrc-history": "historia",
        "recentchanges": "Ndryshimet e fundit",
        "recentchanges-legend": "Zgjedhjet e ndryshimeve momentale",
        "recentchanges-summary": "Ndiqni ndryshime së fundmi tek kjo faqe.",
        "recentchanges-feed-description": "Ndjek ndryshimet më të fundit në wiki tek kjo fushë.",
        "recentchanges-label-newpage": "Ky redaktim krijoi një faqe të re",
        "recentchanges-label-minor": "Ky është një editim i vogël",
-       "recentchanges-label-bot": "Ky editim është kryer nga një bot",
+       "recentchanges-label-bot": "Ky redaktim u krye nga një robot",
        "recentchanges-label-unpatrolled": "Ky editim ende nuk është patrolluar",
-       "recentchanges-legend-newpage": "$1 - faqe të re",
+       "recentchanges-label-plusminus": "Madhësia e faqes ndryshoi me këtë numër bajtësh",
+       "recentchanges-legend-heading": "'''Legjenda:'''",
+       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (shiko gjithashtu [[Special:NewPages|listën e faqeve të reja]])",
        "rcnotefrom": "Më poshtë janë ndryshime së fundmi nga <b>$2</b> (treguar deri në <b>$1</b>).",
        "rclistfrom": "Tregon ndryshime së fundmi duke filluar nga $3 $2",
        "rcshowhideminor": "$1 redaktimet e vogla",
+       "rcshowhideminor-show": "Shfaq",
+       "rcshowhideminor-hide": "Fshih",
        "rcshowhidebots": "$1 robotët",
-       "rcshowhideliu": "$1 përdoruesit e regjistruar",
+       "rcshowhidebots-show": "Shfaq",
+       "rcshowhidebots-hide": "Fshih",
+       "rcshowhideliu": "$1 përdorues të regjistruar",
+       "rcshowhideliu-hide": "Fshih",
        "rcshowhideanons": "$1 përdoruesit anonim",
+       "rcshowhideanons-show": "Shfaq",
+       "rcshowhideanons-hide": "Fshih",
        "rcshowhidepatr": "$1 redaktime të patrulluara",
        "rcshowhidemine": "$1 redaktimet e mia",
+       "rcshowhidemine-show": "Shfaq",
+       "rcshowhidemine-hide": "Fshih",
        "rclinks": "Trego $1 ndryshime gjatë $2 ditëve<br />$3",
        "diff": "ndrysh",
        "hist": "hist",
        "uploadnewversion-linktext": "Ngarkoni një version të ri për këtë skedë",
        "shared-repo-from": "nga $1",
        "shared-repo": "një magazinë e përbashkët",
+       "upload-disallowed-here": "Ju nuk mund mbishkruani këtë skedë.",
        "filerevert": "Rikthe $1",
        "filerevert-legend": "Rikthe skedën",
        "filerevert-intro": "Po ktheni '''[[Media:$1|$1]]''' tek [versioni $4 i $3, $2].",
        "protectedpages-indef": "Vetëm mbrojtjet pa afat",
        "protectedpages-cascade": "Vetëm mbrojtjet",
        "protectedpagesempty": "Nuk ka faqe të mbrojtura me të dhënat e kërkuara.",
+       "protectedpages-reason": "Arsyeja",
        "protectedtitles": "Titujt e mbrojtur",
        "protectedtitlesempty": "Asnjë titull i mbrojtur nuk u gjet në këtë hapësirë.",
        "listusers": "Lista e përdoruesve",
        "pager-older-n": "{{PLURAL:$1|1 më i vjetër|$1 më të vjetra}}",
        "suppress": "Kujdestari",
        "querypage-disabled": "Kjo faqe speciale është çaktivizuar për arsye të performancës.",
+       "apihelp-no-such-module": "Moduli \"$1\" nuk u gjet.",
        "booksources": "Burime librash",
        "booksources-search-legend": "Kërkim burimor librash",
+       "booksources-search": "Kërko",
        "booksources-text": "Më posht është një listë me lidhje të cilët shesin ose përdorin libra dhe munden të kenë informacione për librat që kërkoni ju:",
        "booksources-invalid-isbn": "ISBN-ja e dhënë nuk duket të jetë e vlefshme; kontrolloni oër gabime gjatë kopjimit nga burimi origjinal.",
        "specialloguserlabel": "Performuesi:",
        "listgrouprights-removegroup-self-all": "Hiq të gjitha grupet nga llogaria",
        "mailnologin": "S'ka adresë dërgimi",
        "mailnologintext": "Duhet të keni [[Special:UserLogin|hyrë brenda]] dhe të keni një adresë të saktë në [[Special:Preferences|parapëlqimet]] tuaja për tu dërguar email përdoruesve të tjerë.",
-       "emailuser": "Email përdoruesit",
-       "emailpage": "Dërgo email përdoruesve",
+       "emailuser": "Email {{GENDER:{{PAGENAME}}|përdoruesit|përdorueses}}",
        "emailpagetext": "Mund të përdorni formularin e mëposhtëm për të dërguar e-mail tek ky përdorues.\nAdresa e email-it që shkruat tek [[Special:Preferences|preferencat tuaja]] do të duket si \"Nga\" adresa e email-it, pra marrësi do të ketë mundësinë t'ju përgjigjet direkt.",
        "defemailsubject": "{{SITENAME}} posta elektronike nga përdoruesi \"$1\"",
        "usermaildisabled": "Email-i i përdoruesit çaktivizua",
        "deletecomment": "Arsyeja:",
        "deleteotherreason": "Arsye tjetër:",
        "deletereasonotherlist": "Arsyeja tjetër",
-       "deletereason-dropdown": "*Arsye për grisje:\n** Pa të drejtë autori\n** Kërkesë nga autori\n** Vandalizëm",
+       "deletereason-dropdown": "*Arsye të zakonshme të grisjes\n** Spam\n** Vandalizëm\n** Shkelje e të drejtave të autorit\n** Kërkesë e autorit\n** Faqe përcjellëse e thyer",
        "delete-edit-reasonlist": "Ndrysho arsyet e grisjes",
        "delete-toobig": "Kjo faqe ka një historik të madh redaktimesh, më shumë se $1 {{PLURAL:$1|version|versione}}.\nGrisja e faqeve të tilla ka qenë kufizuar për të parandaluar përçarjen aksidentale të {{SITENAME}}.",
        "delete-warning-toobig": "Kjo faqe ka një historik të madh redaktimesh, më shumë se $1 {{PLURAL:$1|version|versione}}.\nGrisja e saj mund të ndërpresë operacionet e bazës së të dhënave të {{SITENAME}};\nvazhdoni me kujdes.",
        "rollback-success": "Ndryshimet e $1 u kthyen mbrapsh; artikulli ndodhet tek verzioni i $2.",
        "sessionfailure-title": "Dështim sesioni",
        "sessionfailure": "Duket se ka një problem me seancën tuaj hyrëse; ky veprim është anuluar për tu mbrojtur nga ndonjë veprim dashakeq kundrejt shfletimit tuaj. Ju lutemi kthehuni mbrapsh, rifreskoni faqen prej nga erdhët dhe provojeni përsëri veprimin.",
+       "changecontentmodel-reason-label": "Arsyeja:",
        "protectlogpage": "Regjistri i mbrojtjeve",
        "protectlogtext": "Më poshtë është lista e kyçjeve dhe çkyçjeve të faqes.\nShih listën e [[Special:ProtectedPages|faqeve të mbrojtura]] nga lista e mbrojtjeve të faqeve tani në veprim.",
        "protectedarticle": "mbrojti [[$1]]",
        "protect-existing-expiry": "Koha ekzistuese e skadimit: $3, $2",
        "protect-otherreason": "Arsye tjera/shtesë:",
        "protect-otherreason-op": "Arsyeja tjetër",
-       "protect-dropdown": "*Arsyet e përbashkëta të mbrojtjes\n**Vandalizëm i tepërt\n**Spam i tepërt\n**Counter-productive edit warning\n**Faqe e lartë trafiku",
+       "protect-dropdown": "*Arsye të zakonshme të mbrojtjes\n**Vandalizëm i tepërt\n**Spam i tepërt\n**Paralajmërim i redaktimeve joprodukive\n**Faqe e trafikut të lartë",
        "protect-edit-reasonlist": "Redakto arsyet e mbrojtjes",
        "protect-expiry-options": "1 Orë:1 hour,1 Ditë:1 day,1 Javë:1 week,2 Javë:2 weeks,1 Muaj:1 month,3 Muaj:3 months,6 Muaj:6 months,1 Vjet:1 year,Pa kufi:infinite",
        "restriction-type": "Lejet:",
        "ipaddressorusername": "Adresë IP ose emër përdoruesi",
        "ipbexpiry": "Afati",
        "ipbreason": "Arsyeja:",
-       "ipbreason-dropdown": "*Arsyet më të shpeshta të bllokimit\n** Postimi i informacioneve të rreme\n** Largimi i përmbajtjes së faqes\n** Futja e lidhjeve \"spam\"\n** Futja e informatave pa kuptim në faqe\n** Sjellje arrogante/perverze\n** Përdorimi i më shumë llogarive të përdoruesve\n** Nofkë të papranueshme",
+       "ipbreason-dropdown": "*Arsye të zakonshme të bllokimit\n** Vendosja e të dhënave të rreme\n** Largimi i përmbajtjeve të faqeve\n** Vendosja e lidhjeve spam \n** Vendosja e të dhënave të pakuptimta\n** Sjellje arrogante dhe/ose ngacmuese\n** Përdorimi i më shumë llogarive\n** Nofkë e papranueshme",
        "ipb-hardblock": "Parandalo përdoruesit e kyçur për të redaktuar nga kjo IP adresë",
        "ipbcreateaccount": "Mbroje krijimin e llogarive",
        "ipbemailban": "Pa mundëso dërgimin  e porosive elektronike nga përdoruesit",
        "ipb-blockingself": "Ju jeni duke bllokuar vetëveten ! Jeni te sigurte qe doni te bëni këtë?",
        "ipb-confirmhideuser": "Ju jeni gati për të bllokuar një përdorues me \"përdorues të fshehur\" të aktivizuar. Kjo do të shtypur emrin e përdoruesit në të gjitha listat dhe aktivitetet hyrëse. Jeni te sigurte qe doni ta bëni këtë ?",
        "ipb-edit-dropdown": "Redakto arsyet e bllokimit",
-       "ipb-unblock-addr": "Çblloko $1",
+       "ipb-unblock-addr": "Zhblloko $1",
        "ipb-unblock": "Çblloko përdorues dhe IP të bllokuara",
        "ipb-blocklist": "Përdorues dhe IP adresa të bllokuara",
        "ipb-blocklist-contribs": "Kontributet për $1",
-       "unblockip": "Çblloko përdoruesin",
+       "unblockip": "Zhblloko përdoruesin",
        "unblockiptext": "Përdor formularin e më poshtëm për t'i ridhënë leje shkrimi\nnjë përdoruesi ose IP adreseje të bllokuar.",
        "ipusubmit": "Hiqni këtë bllokim",
-       "unblocked": "[[User:$1|$1]] është çbllokuar",
+       "unblocked": "[[User:$1|$1]] është zhbllokuar.",
        "unblocked-range": "$1 është zhbllokuar",
        "unblocked-id": "Bllokimi $1 është hequr",
+       "unblocked-ip": "[[Special:Contributions/$1|$1]] është zhbllokuar.",
        "blocklist": "Përdorues i Bllokuar",
        "ipblocklist": "Përdorues i Bllokuar",
        "ipblocklist-legend": "Gjej një përdorues të bllokuar",
        "ipblocklist-empty": "Lista e të bllokimeve është e zbrazët.",
        "ipblocklist-no-results": "Adresa IP ose përdoruesi i kërkuar nuk është i bllokuar.",
        "blocklink": "blloko",
-       "unblocklink": "çblloko",
+       "unblocklink": "zhblloko",
        "change-blocklink": "ndryshoje bllokun",
        "contribslink": "kontribute",
        "emaillink": "dërgo e-mail",
        "blocklog-showsuppresslog": "Ky përdorues ka qenë i bllokuar dhe i fshehur më parë.\nRegjistri i bllokimeve është poshtë për referncë:",
        "blocklogentry": "bllokoi [[$1]] për një kohë prej: $2 $3",
        "reblock-logentry": "ndryshoi parametrat e bllokimit për [[$1]] me një kohë prej $2 $3",
-       "blocklogtext": "Ky është një regjistër bllokimesh dhe çbllokimesh të përdoruesve. IP-të e bllokuara automatikisht nuk janë të dhëna. Shikoni dhe [[Special:BlockList|listën e IP-ve të bllokuara]] për një listë të bllokimeve të tanishme.",
+       "blocklogtext": "Ky është një regjistër i veprimeve bllokuese dhe zhbllokuese të përdoruesit.\n\nAdresat I të bllokuara automatikisht nuk janë të paraqitura. \n\nShikoni dhe [[Special:BlockList|listën e të bllokuarve]] për një listë të bllokimeve dhe ndalimeve vepruese të tanishme.",
        "unblocklogentry": "çbllokoi \"$1\"",
        "block-log-flags-anononly": "vetëm anonimët",
        "block-log-flags-nocreate": "krijimi i llogarive është pamundësuar",
        "ipb_already_blocked": "\"$1\" është i bllokuar",
        "ipb-needreblock": "$1 është i bllokuar.\nDëshironi t'i ndryshoni parametrat?",
        "ipb-otherblocks-header": "{{PLURAL:$1|Bllokim tjetër|Bllokime të tjera}}",
-       "unblock-hideuser": "Ju nuk mund të zhbllokoni këtë përdorues, përderisa nofka e tij është fshehur.",
-       "ipb_cant_unblock": "Gabim: Bllokimi ID $1 nuk u gjet.\nMund të jetë zhbllokuar.",
+       "unblock-hideuser": "Ju nuk mund të zhbllokoni këtë përdorues, përderisa nofka e tij është fshehur.",
+       "ipb_cant_unblock": "Gabim: Bllokimi ID $1 nuk u gjet.\n\nMund të jetë zhbllokuar deri tani.",
        "ipb_blocked_as_range": "Gabim: Adresa IP $1 nuk është bllokuar direkt dhe nuk mund të zhbllokohet.\nAjo është, megjithatë, e bllokuar si pjesë e rangut $2, që nuk mund të zhbllokohet.",
        "ip_range_invalid": "Shtrirje IP gabim.",
        "ip_range_toolarge": "Radhitja e bllokimeve më të mëdha se /$1 nuk lejohet.",
        "tooltip-pt-mycontris": "Lista e kontributeve tuaja",
        "tooltip-pt-login": "Identifikimi nuk është i detyrueshëm, megjithatë ne jua rekomandojmë.",
        "tooltip-pt-logout": "Dalje",
+       "tooltip-pt-createaccount": "Ju rekomandojmë të krijoni një llogari dhe të kyqeni; megjithatë,  nuk është e detyrueshme",
        "tooltip-ca-talk": "Diskutim për përmbajtjen e faqes",
        "tooltip-ca-edit": "Redakto këtë faqe",
        "tooltip-ca-addsection": "Fillo një temë të re diskutimi.",
        "tooltip-feed-rss": "Burimi ushqyes \"RSS\" për këtë faqe",
        "tooltip-feed-atom": "Burimi ushqyes \"Atom\" për këtë faqe",
        "tooltip-t-contributions": "Shiko listën e kontributeve për përdoruesin në fjalë",
-       "tooltip-t-emailuser": "Dërgoni një email përdoruesit",
+       "tooltip-t-emailuser": "Dërgoni një email {{GENDER:{{PAGENAME}}|përdoruesit|përdorueses}}",
        "tooltip-t-upload": "Ngarko skeda",
        "tooltip-t-specialpages": "Lista e të gjitha faqeve speciale.",
        "tooltip-t-print": "Version i shtypshëm i kësaj faqeje",
        "spam_reverting": "U kthye tek versioni i fundit që s'ka lidhje tek $1",
        "spam_blanking": "U boshatis sepse të gjitha versionet kanë lidhje tek $1",
        "spam_deleting": "Të gjitha inspektimet përmbanin lidhje në $1, duke fshirë",
-       "simpleantispam-label": "Kontroll anti-spam.\n'''MOS''' e plotësoni këtë!",
+       "simpleantispam-label": "Kontrolli anti-spam.\n<strong>Mos</strong> e plotëso këtë!",
        "pageinfo-title": "Informacion për \" $1 \"",
        "pageinfo-header-edits": "Redaktimet",
        "pageinfo-watchers": "Numri i mbikqyrësve",
        "pageinfo-edits": "Numri i redaktimeve",
        "pageinfo-authors": "Numri i autorëve të veçantë",
+       "pageinfo-toolboxlink": "Informacioni i faqes",
        "markaspatrolleddiff": "Shënoje si të patrulluar",
        "markaspatrolledtext": "Shënoje këtë artikull të patrulluar",
        "markedaspatrolled": "Shënoje të patrulluar",
        "file-info-size-pages": "$1 × $2 pixel, madhësia e dokumentit: $3 , MIME tipi: $4 , $5 {{PLURAL:$5| faqe | faqet}}",
        "file-nohires": "Nuk ka rezolucion më të madh.",
        "svg-long-desc": "skedë SVG, fillimisht $1 × $2 pixel, madhësia e skedës: $3",
-       "show-big-image": "Rezolucion i plotë",
+       "show-big-image": "Dokument origjinal",
        "show-big-image-preview": "Madhësia e këtij shikimi: $1.",
        "show-big-image-other": "{{PLURAL:$2|Rezolucion tjetër|Rezolucione të tjera}}: $1.",
        "show-big-image-size": "$1 × $2 pixel",
        "hours": "{{PLURAL:$1|$1 orë|$1 orë}}",
        "days": "{{PLURAL:$1|$1 ditë|$1 ditë}}",
        "ago": "$1 më parë",
+       "monday-at": "Të hënën në $1",
+       "tuesday-at": "Të martën në $1",
+       "wednesday-at": "Të mërkurën në $1",
+       "thursday-at": "Të enjten në $1",
+       "friday-at": "Të premten në $1",
+       "saturday-at": "Të shtunën në $1",
+       "sunday-at": "Të dielën në $1",
+       "yesterday-at": "Dje në $1",
        "bad_image_list": "Formati është si vijon:\n\nVetëm elementët listë ( rreshtat duhet të fillojnë me * ) merren parasysh.\nLidhja e parë në një rresht duhet të lidhet me një skedë të prishur.\nÇdo lidhje pasuese në rreshtin e njëjtë konsiderohet si përjashtim, p.sh. faqe në të cilat skeda mund të shfaqet në të njëjtin rresht.",
        "metadata": "Metadata",
        "metadata-help": "Kjo skedë përmban hollësira të tjera të cilat mund të jenë shtuar nga kamera ose skaneri dixhital që është përdorur për ta krijuar.\nNë qoftë se skeda është ndryshuar nga gjendja origjinale, disa hollësira mund të mos pasqyrojnë versionin e tanishëm.",
        "autosumm-replace": "Faqja u zëvendësua me '$1'",
        "autoredircomment": "Përcjellim te [[$1]]",
        "autosumm-new": "Krijoi faqen me \"$1\"",
+       "autosumm-newblank": "Krijoi faqe të zbrazët",
        "lag-warn-normal": "Ndryshimet më të reja se $1 {{PLURAL:$1|sekond|sekonda}} mund të mos tregohen në këtë listë.",
        "lag-warn-high": "Për shkak të vonesës së regjistrit ndryshimet më të reja se $1 {{PLURAL:$1|sekond|sekonda}} mund të mos tregohen në këtë listë.",
        "watchlistedit-normal-title": "Redakto listën mbikqyrëse",
        "tags": "Etiketat e ndryshimeve të pavlefshme",
        "tag-filter": "[[Special:Tags|Etiketa]] filter:",
        "tag-filter-submit": "Filtër",
+       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Etiketa|Etiketat}}]]: $2)",
        "tags-title": "Etiketat",
        "tags-intro": "Kjo faqe liston etiketat që softueri mund t'i shënojë me një redaktim, dhe kuptimin e tyre.",
        "tags-tag": "Emri i etiketës",
        "tags-hitcount-header": "Ndrzshimet e etikuara",
        "tags-edit": "redakto",
        "tags-hitcount": "$1 {{PLURAL:$1|ndryshim|ndryshime}}",
+       "tags-create-reason": "Arsyeja:",
+       "tags-delete-reason": "Arsyeja:",
+       "tags-activate-reason": "Arsyeja:",
+       "tags-deactivate-reason": "Arsyeja:",
+       "tags-edit-reason": "Arsyeja:",
        "comparepages": "Krahasoni faqet",
        "compare-page1": "Faqe 1",
        "compare-page2": "Faqe 2",
        "htmlform-selectorother-other": "Gjitha",
        "sqlite-has-fts": "$1 me mbështetje të kërkimit me teskt të plotë",
        "sqlite-no-fts": "$1 pa mbështetje të kërkimit me teskt të plotë",
-       "logentry-delete-delete": "$1 grisi faqen $3",
+       "logentry-delete-delete": "$1 {{GENDER:$2|grisi}} faqen $3",
        "logentry-delete-restore": "$1 riktheu faqen $3",
        "logentry-delete-event": "$1 ndryshoi dukshmërinë e {{PLURAL:$5|një ngjarje regjistri|$5 ngjarjeve regjistri}} në $3: $4",
        "logentry-delete-revision": "$1 ndryshoi dukshmërinë e {{PLURAL:$5|një versioni|$5 versioneve}} në $3: $4",
        "revdelete-uname-unhid": "emri i përdoruesit jo i fshehur",
        "revdelete-restricted": "u vendosën kufizime për administruesit",
        "revdelete-unrestricted": "u hoqën kufizimet për administruesit",
-       "logentry-move-move": "$1 zhvendosi faqen $3 te $4",
+       "logentry-block-block": "$1 {{GENDER:$2|bllokoi}} {{GENDER:$4|$3}} me një kohë të skadimit $5 $6",
+       "logentry-block-unblock": "$1 {{GENDER:$2|zhbllokoi}} {{GENDER:$4|$3}}",
+       "logentry-block-reblock": "$1 {{GENDER:$2|changed}} bllokoi cilësimet për {{GENDER:$4|$3}} me një kohë të skadimit $5 $6",
+       "logentry-suppress-block": "$1 {{GENDER:$2|bllokoi}} {{GENDER:$4|$3}} me një kohë të skadimit $5 $6",
+       "logentry-suppress-reblock": "$1 {{GENDER:$2|changed}} bllokoi cilësimet për {{GENDER:$4|$3}} me një kohë të skadimit $5 $6",
+       "logentry-move-move": "$1 {{GENDER:$2|zhvendosi}} faqen $3 tek $4",
        "logentry-move-move-noredirect": "$1 zhvendosi faqen $3 te $4 pa lënë një përcjellim",
        "logentry-move-move_redir": "$1 zhvendosi faqen $3 te $4 nëpërmjet përcjellimit",
        "logentry-move-move_redir-noredirect": "$1 zhvendosi faqen $3 te $4 nëpërmjet një përcjellimi pa lënë një përcjellim",
        "logentry-patrol-patrol": "$1 shënoi versionin $4 të faqes $3 të patrolluar",
        "logentry-patrol-patrol-auto": "$1 automatikisht shënoi versionin $4 të faqes $3 të patrolluar",
        "logentry-newusers-newusers": "$1 krijoi një llogari",
-       "logentry-newusers-create": "$1 krijoi një llogari",
+       "logentry-newusers-create": "Llogaria e {{GENDER:$2|përdoruesit|përdorueses}} $1 u krijua.",
        "logentry-newusers-create2": "$1 krijoi një llogari $3",
        "logentry-newusers-autocreate": "Llogaria $1 u krijua automatikisht",
+       "logentry-upload-upload": "$1 {{GENDER:$2|ngarkoi}} $3",
        "rightsnone": "(asgjë)",
        "revdelete-summary": "përmbledhja redaktimit",
        "feedback-adding": "Duke shtuar përshtypjen te faqja...",
index b18cc6b..f2d71b2 100644 (file)
        "databaseerror-query": "Упит: $1",
        "databaseerror-function": "Функција: $1",
        "databaseerror-error": "Грешка: $1",
-       "laggedslavemode": "'''Упозорење:''' страница је можда застарела.",
+       "laggedslavemode": "<strong>Упозорење:</strong> страница је можда застарела.",
        "readonly": "База података је закључана",
        "enterlockreason": "Унесите разлог за закључавање, укључујући и време откључавања",
        "readonlytext": "База података је тренутно закључана, што значи да је није могуће мењати.\n\nРазлог: $1",
        "editinginterface": "<strong>Упозорење:</strong> уређујете страницу која се користи за приказивање текста корисничког окружења.\nИзмене на овој страници ће утицати на све кориснике овог викија.",
        "translateinterface": "Да додате или промените преводе за све викије, посетите [//translatewiki.net/ Транслејтвики], пројекат за локализацију Медијавикија.",
        "cascadeprotected": "Ова страница је закључана јер садржи {{PLURAL:$1|следећу страницу која је заштићена|следеће странице које су заштићене}} „преносивом“ заштитом:\n$2",
-       "namespaceprotected": "Немате дозволу да уређујете странице у именском простору '''$1'''.",
+       "namespaceprotected": "Немате дозволу да уређујете странице у именском простору <strong>$1</strong>.",
        "customcssprotected": "Немате дозволу да мењате ову CSS страницу јер садржи личне поставке другог корисника.",
        "customjsprotected": "Немате дозволу да мењате ову страницу јаваскрипта јер садржи личне поставке другог корисника.",
        "mycustomcssprotected": "Немате дозволу за мењање ове CSS странице.",
        "virus-badscanner": "Неисправна поставка: непознати скенер за вирусе: ''$1''",
        "virus-scanfailed": "неуспешно скенирање (код $1)",
        "virus-unknownscanner": "непознати антивирус:",
-       "logouttext": "'''Одјављени сте.'''\n\nИмајте на уму да неке странице могу наставити да се приказују као да сте још пријављени, све док не очистите привремену меморију свог прегледача.",
+       "logouttext": "<strong>Одјављени сте.</strong>\n\nИмајте на уму да неке странице могу наставити да се приказују као да сте још пријављени, све док не очистите привремену меморију свог прегледача.",
        "welcomeuser": "Добро дошли, $1!",
        "welcomecreation-msg": "Ваш налог је отворен.\nНе заборавите да промените своја [[Special:Preferences|подешавања]].",
        "yourname": "Корисничко име:",
        "resetpass-submit-loggedin": "Промени лозинку",
        "resetpass-submit-cancel": "Откажи",
        "resetpass-wrong-oldpass": "Неисправна привремена или текућа лозинка.\nМожда сте већ променили лозинку или сте затражили нову привремену лозинку.",
-       "resetpass-recycled": "Унели сте садашњу лозинку, да би сте ресетовали лозинку морате унети нову.",
+       "resetpass-recycled": "Унели сте садашњу лозинку, да бисте ресетовали лозинку морате унети нову.",
        "resetpass-temp-emailed": "Пријавили сте се са привременим кодом из е-поште.\nДа бисте завршили пријављивање морате поставити нову лозинку овде:",
        "resetpass-temp-password": "Привремена лозинка:",
        "resetpass-abort-generic": "Промену лозинке је спречио додатак.",
        "resetpass-validity-soft": "Ваша лозинка није ваљана: $1\n\nМолимо изаберите нову или кликните „{{int:resetpass-submit-cancel}}“ да ресетујете касније.",
        "passwordreset": "Обнављање лозинке",
        "passwordreset-text-one": "Попуните овај образац да бисте добили привремену лозинку на е-пошту.",
-       "passwordreset-text-many": "{{PLURAL:$1|Испуните једно од поља како би сте добили привремену лозинку на е-пошту.}}",
+       "passwordreset-text-many": "{{PLURAL:$1|Испуните једно од поља како бисте добили привремену лозинку на е-пошту.}}",
        "passwordreset-disabled": "Обнављање лозинке је онемогућено на овом викију.",
        "passwordreset-emaildisabled": "Е-пошта је онемогућена на овом викију.",
        "passwordreset-username": "Корисничко име:",
        "userjspreview": "'''Ово је само преглед јаваскрипта.'''\n'''Страница још није сачувана!'''",
        "sitecsspreview": "'''Ово је само преглед CSS-а.'''\n'''Страница још није сачувана!'''",
        "sitejspreview": "'''Ово је само преглед јаваскрипта.'''\n'''Страница још није сачувана!'''",
-       "userinvalidcssjstitle": "'''Упозорење:''' не постоји тема „$1“.\nПрилагођене странице CSS и јаваскрипт почињу малим словом, нпр. {{ns:user}}:Foo/vector.css, а не {{ns:user}}:Foo/Vector.css.",
+       "userinvalidcssjstitle": "<strong>Упозорење:</strong> не постоји тема „$1“.\nПрилагођене странице CSS и јаваскрипт почињу малим словом, нпр. {{ns:user}}:Foo/vector.css, а не {{ns:user}}:Foo/Vector.css.",
        "updated": "(Ажурирано)",
-       "note": "'''Напомена:'''",
+       "note": "<strong>Напомена:</strong>",
        "previewnote": "<strong>Ово је претпреглед.</strong>\nВаше измене још нису сачуване!",
        "continue-editing": "Иди на уређивачки оквир",
        "previewconflict": "Овај преглед осликава како ће текст у текстуалном оквиру изгледати.",
        "rows": "Редова:",
        "columns": "Колона",
        "searchresultshead": "Претрага",
-       "stub-threshold": "Праг за обликовање <a href=\"#\" class=\"stub\">везе као клице</a>:",
+       "stub-threshold": "Праг за обликовање везе као клице ($1):",
        "stub-threshold-disabled": "Онемогућено",
        "recentchangesdays": "Број дана у скорашњим изменама:",
        "recentchangesdays-max": "Највише $1 {{PLURAL:$1|дан|дана}}",
        "watchlistanontext": "Морате бити пријављени да бисте гледали и уређивали ставке на вашем списку надгледања.",
        "watchnologin": "Нисте пријављени",
        "addwatch": "Додај на списак надгледања",
-       "addedwatchtext": "СÑ\82Ñ\80аниÑ\86а â\80\9e[[:$1]]â\80\9c Ð¸ Ñ\9aена Ñ\81Ñ\82Ñ\80аниÑ\86а Ð·Ð° Ñ\80азговоÑ\80 Ñ\98е Ð´Ð¾Ð´Ð°Ñ\82а Ð½Ð° Ð²аш [[Special:Watchlist|списак надгледања]].",
-       "addedwatchtext-short": "СÑ\82Ñ\80аниÑ\86а â\80\9e$1â\80\9c Ñ\98е Ð´Ð¾Ð´Ð°Ñ\82а Ð½Ð° Ð²аш списак надгледања.",
+       "addedwatchtext": "СÑ\82Ñ\80аниÑ\86а â\80\9e[[:$1]]â\80\9c Ð¸ Ñ\9aена Ñ\81Ñ\82Ñ\80аниÑ\86а Ð·Ð° Ñ\80азговоÑ\80 Ñ\98е Ð´Ð¾Ð´Ð°Ñ\82а Ð½Ð° Ð\92аш [[Special:Watchlist|списак надгледања]].",
+       "addedwatchtext-short": "СÑ\82Ñ\80аниÑ\86а â\80\9e$1â\80\9c Ñ\98е Ð´Ð¾Ð´Ð°Ñ\82а Ð½Ð° Ð\92аш списак надгледања.",
        "removewatch": "Уклони са списка надгледања",
        "removedwatchtext": "Страница „[[:$1]]“ и њена страница за разговор је уклоњена с вашег [[Special:Watchlist|списка надгледања]].",
        "removedwatchtext-short": "Страница „$1“ је уклоњена с вашег списка надгледања.",
        "watchlist-details": "Имате {{PLURAL:$1|$1 страница|$1 странице|$1 страница}} на вашем списку надгледања, не рачунајући странице за разговор.",
        "wlheader-enotif": "Обавештење е-поруком је омогућено.",
        "wlheader-showupdated": "Странице које су измењене откад сте их последњи пут посетили су '''подебљане'''.",
-       "wlnote": "Испод {{PLURAL:$1|је последња измена|су последње '''$1''' измене|је последњих '''$1''' измена}} у {{PLURAL:$2|претходном сату|претходна '''$2''' сата|претходних '''$2''' сати}}, закључно са $3, $4.",
+       "wlnote": "Испод {{PLURAL:$1|је последња измена|су последње <strong>$1</strong> измене|је последњих <strong>$1</strong> измена}} у {{PLURAL:$2|претходном сату|претходна <strong>$2</strong> сата|претходних <strong>$2</strong> сати}}, закључно са $3, $4.",
        "wlshowlast": "Прикажи последњих $1 сати, $2 дана",
        "watchlist-options": "Поставке списка надгледања",
        "watching": "Надгледање…",
        "enotif_subject_restored": "Страницу $1 на {{SITENAME}} {{GENDER:$2|вратио је|вратила је|вратио је}} $2",
        "enotif_subject_changed": "Страницу $1 на {{SITENAME}} {{GENDER:$2|променио је|променила је|променио је}} $2",
        "enotif_body_intro_deleted": "Страницу $1 на {{SITENAME}} {{GENDER:$2|обрисао је|обрисала је|обрисао је}} $2 дана $PAGEEDITDATE. Погледајте $3.",
-       "enotif_body_intro_created": "Страницу $1 на {{SITENAME}} {{GENDER:$2|направио је|направила је|направио је}} $2 дана $PAGEEDITDATE. Тренутна измена налази се на $3.",
-       "enotif_body_intro_moved": "Страницу $1 на {{SITENAME}} {{GENDER:$2|преместио је|преместила је}} $2 дана $PAGEEDITDATE. Тренутна измена налази се на  $3.",
-       "enotif_body_intro_restored": "Страницу $1 на {{SITENAME}} {{GENDER:$2|вратио је|вратила је|вратио је}} $2 дана $PAGEEDITDATE. Тренутна измена налази се на $3.",
-       "enotif_body_intro_changed": "Страницу $1 на {{SITENAME}} {{GENDER:$2|променио је|променила је|променио је}} $2 дана $PAGEEDITDATE. Тренутна измена налази се на $3.",
+       "enotif_body_intro_created": "Страницу $1 на {{SITENAME}} {{GENDER:$2|направио|направила}} је $2 дана $PAGEEDITDATE Тренутна измена налази се на $3.",
+       "enotif_body_intro_moved": "Страницу $1 на {{SITENAME}} {{GENDER:$2|преместио|преместила}} је $2 дана $PAGEEDITDATE Тренутна измена налази се на  $3.",
+       "enotif_body_intro_restored": "Страницу $1 на {{SITENAME}} {{GENDER:$2|вратио|вратила}} је $2 дана $PAGEEDITDATE Тренутна измена налази се на $3.",
+       "enotif_body_intro_changed": "Страницу $1 на {{SITENAME}} {{GENDER:$2|променио|променила}} је $2 дана $PAGEEDITDATE Тренутна измена налази се на $3.",
        "enotif_lastvisited": "Погледајте $1 за све измене од ваше последње посете.",
        "enotif_lastdiff": "Погледајте $1 да видите ову измену.",
        "enotif_anon_editor": "анониман корисник $1",
        "undeletepagetext": "{{PLURAL:$1|Следећа страница је обрисана, али је још у архиви и може бити враћена|Следеће $1 странице су обрисане, али су још у архиви и могу бити враћене|Следећих $1 страница је обрисано, али су још у архиви и могу бити враћене}}.\nАрхива се повремено чисти од оваквих страница.",
        "undelete-fieldset-title": "Враћање измена",
        "undeleteextrahelp": "Да бисте вратили целу историју странице, оставите све кућице неозначене и кликните на дугме '''''{{int:undeletebtn}}'''''.\nАко желите да вратите одређене измене, означите их и кликните на '''''{{int:undeletebtn}}'''''.",
-       "undeleterevisions": "$1 {{PLURAL:$1|измена је архивирана|измене су архивиране|измена је архивирано}}",
+       "undeleterevisions": "{{PLURAL:$1|Измена}} обрисано: $1",
        "undeletehistory": "Ако вратите страницу, све ревизије ће бити враћене њеној историји.\nАко је у међувремену направљена нова страница с истим називом, враћене измене ће се појавити у њеној ранијој историји.",
        "undeleterevdel": "Враћање неће бити извршено ако је резултат тога делимично брисање последње измене.\nУ таквим случајевима морате искључити или открити најновије обрисане измене.",
        "undeletehistorynoadmin": "Ова страница је обрисана.\nРазлог за брисање се налази испод, заједно с детаљима о кориснику који је изменио ову страницу пре брисања.\nТекст обрисаних измена је доступан само администраторима.",
        "undeleteviewlink": "погледај",
        "undeleteinvert": "Обрни избор",
        "undeletecomment": "Разлог:",
-       "undeletedrevisions": "{{PLURAL:$1|Ð\98змена Ñ\98е Ð²Ñ\80аÑ\9bена|$1 Ð¸Ð·Ð¼ÐµÐ½Ðµ Ñ\81Ñ\83 Ð²Ñ\80аÑ\9bене|$1 Ð¸Ð·Ð¼ÐµÐ½Ð° Ñ\98е Ð²Ñ\80аÑ\9bено}}",
+       "undeletedrevisions": "{{PLURAL:$1|измена Ð²Ñ\80аÑ\9bено}} $1",
        "undeletedrevisions-files": "$1 {{PLURAL:$1|измена|измене|измена}} и $2 {{PLURAL:$2|датотека је враћена|датотеке су враћене|датотека је враћено}}",
-       "undeletedfiles": "{{PLURAL:$1|Ð\94аÑ\82оÑ\82ека Ñ\98е Ð²Ñ\80аÑ\9bена|$1 Ð´Ð°Ñ\82оÑ\82еке Ñ\81Ñ\83 Ð²Ñ\80аÑ\9bене|$1 Ð´Ð°Ñ\82оÑ\82ека Ñ\98е Ð²Ñ\80аÑ\9bено}}",
+       "undeletedfiles": "{{PLURAL:$1|даÑ\82оÑ\82ека Ð²Ñ\80аÑ\9bено}} $1",
        "cannotundelete": "Враћање није успело:\n$1",
        "undeletedpage": "<strong>Страница $1 је враћена</strong>\n\nПогледајте [[Special:Log/delete|дневник брисања]] за записе о скорашњим брисањима и враћањима.",
        "undelete-header": "Погледајте [[Special:Log/delete|историјат брисања]] за недавно обрисане странице.",
        "sp-contributions-newbies-sub": "За нове кориснике",
        "sp-contributions-newbies-title": "Доприноси нових корисника",
        "sp-contributions-blocklog": "дневник блокирања",
-       "sp-contributions-deleted": "обÑ\80иÑ\81ани ÐºÐ¾Ñ\80иÑ\81ниÑ\87ки Ð´Ð¾Ð¿Ñ\80иноÑ\81и",
+       "sp-contributions-deleted": "обрисани доприноси",
        "sp-contributions-uploads": "отпремања",
        "sp-contributions-logs": "дневници",
        "sp-contributions-talk": "разговор",
        "filedelete-archive-read-only": "Сервер не може да пише по складишној фасцикли ($1).",
        "previousdiff": "← Старија измена",
        "nextdiff": "Новија измена →",
-       "mediawarning": "'''Упозорење''': ова врста датотеке може садржати штетан код.\nАко га покренете, ваш рачунар може бити угрожен.",
+       "mediawarning": "<strong>Упозорење:</strong> ова врста датотеке може садржати штетан код.\nАко га покренете, Ваш рачунар може бити угрожен.",
        "imagemaxsize": "Ограничење величине слике:<br />''(на страницама за опис датотека)''",
        "thumbsize": "Величина минијатуре:",
        "widthheight": "$1 × $2",
        "tags-deactivate-reason": "Разлог:",
        "tags-deactivate-not-allowed": "Није могуће деактивирати ознаку „$1“.",
        "tags-deactivate-submit": "Декативирај",
+       "tags-edit-title": "Уреди ознаке",
        "tags-edit-existing-tags": "Постојеће ознаке:",
        "tags-edit-new-tags": "Нове ознаке:",
        "tags-edit-reason": "Разлог:",
index d3f4458..c75c894 100644 (file)
        "databaseerror-query": "Upit: $1",
        "databaseerror-function": "Funkcija: $1",
        "databaseerror-error": "Greška: $1",
-       "laggedslavemode": "'''Upozorenje:''' stranica je možda zastarela.",
+       "laggedslavemode": "<strong>Upozorenje:</strong> stranica je možda zastarela.",
        "readonly": "Baza podataka je zaključana",
        "enterlockreason": "Unesite razlog za zaključavanje, uključujući i vreme otključavanja",
        "readonlytext": "Baza podataka je trenutno zaključana, što znači da je nije moguće menjati.\n\nRazlog: $1",
        "editinginterface": "<strong>Upozorenje:</strong> uređujete stranicu koja se koristi za prikazivanje teksta korisničkog okruženja.\nIzmene na ovoj stranici će uticati na sve korisnike ovog vikija.",
        "translateinterface": "Da dodate ili promenite prevode za sve vikije, posetite [//translatewiki.net/ Translejtviki], projekat za lokalizaciju Medijavikija.",
        "cascadeprotected": "Ova stranica je zaključana jer sadrži {{PLURAL:$1|sledeću stranicu koja je zaštićena|sledeće stranice koje su zaštićene}} „prenosivom“ zaštitom:\n$2",
-       "namespaceprotected": "Nemate dozvolu da uređujete stranice u imenskom prostoru '''$1'''.",
+       "namespaceprotected": "Nemate dozvolu da uređujete stranice u imenskom prostoru <strong>$1</strong>.",
        "customcssprotected": "Nemate dozvolu da menjate ovu CSS stranicu jer sadrži lične postavke drugog korisnika.",
        "customjsprotected": "Nemate dozvolu da menjate ovu stranicu javaskripta jer sadrži lične postavke drugog korisnika.",
        "mycustomcssprotected": "Nemate dozvolu za menjanje ove CSS stranice.",
        "virus-badscanner": "Neispravna postavka: nepoznati skener za viruse: ''$1''",
        "virus-scanfailed": "neuspešno skeniranje (kod $1)",
        "virus-unknownscanner": "nepoznati antivirus:",
-       "logouttext": "'''Odjavljeni ste.'''\n\nImajte na umu da neke stranice mogu nastaviti da se prikazuju kao da ste još prijavljeni, sve dok ne očistite privremenu memoriju svog pregledača.",
+       "logouttext": "<strong>Odjavljeni ste.</strong>\n\nImajte na umu da neke stranice mogu nastaviti da se prikazuju kao da ste još prijavljeni, sve dok ne očistite privremenu memoriju svog pregledača.",
        "welcomeuser": "Dobrodošli, $1!",
        "welcomecreation-msg": "Vaš nalog je otvoren.\nNe zaboravite da promenite svoja [[Special:Preferences|podešavanja]].",
        "yourname": "Korisničko ime:",
        "resetpass-submit-loggedin": "Promeni lozinku",
        "resetpass-submit-cancel": "Otkaži",
        "resetpass-wrong-oldpass": "Neispravna privremena ili tekuća lozinka.\nMožda ste već promenili lozinku ili ste zatražili novu privremenu lozinku.",
-       "resetpass-recycled": "Uneli ste sadašnju lozinku, da bi ste resetovali lozinku morate uneti novu.",
+       "resetpass-recycled": "Uneli ste sadašnju lozinku, da biste resetovali lozinku morate uneti novu.",
        "resetpass-temp-emailed": "Prijavili ste se sa privremenim kodom iz e-pošte.\nDa biste završili prijavljivanje morate postaviti novu lozinku ovde:",
        "resetpass-temp-password": "Privremena lozinka:",
        "resetpass-abort-generic": "Promenu lozinke je sprečio dodatak.",
        "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 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-text-many": "{{PLURAL:$1|Ispunite jedno od polja kako biste dobili privremenu lozinku na e-poštu.}}",
        "passwordreset-disabled": "Obnavljanje lozinke je onemogućeno na ovom vikiju.",
        "passwordreset-emaildisabled": "E-pošta je onemogućena na ovom vikiju.",
        "passwordreset-username": "Korisničko ime:",
        "userjspreview": "'''Ovo je samo pregled javaskripta.'''\n'''Stranica još nije sačuvana!'''",
        "sitecsspreview": "'''Ovo je samo pregled CSS-a.'''\n'''Stranica još nije sačuvana!'''",
        "sitejspreview": "'''Ovo je samo pregled javaskripta.'''\n'''Stranica još nije sačuvana!'''",
-       "userinvalidcssjstitle": "'''Upozorenje:''' ne postoji tema „$1“.\nPrilagođene stranice CSS i javaskript počinju malim slovom, npr. {{ns:user}}:Foo/vector.css, a ne {{ns:user}}:Foo/Vector.css.",
+       "userinvalidcssjstitle": "<strong>Upozorenje:</strong> ne postoji tema „$1“.\nPrilagođene stranice CSS i javaskript počinju malim slovom, npr. {{ns:user}}:Foo/vector.css, a ne {{ns:user}}:Foo/Vector.css.",
        "updated": "(Ažurirano)",
-       "note": "'''Napomena:'''",
+       "note": "<strong>Napomena:</strong>",
        "previewnote": "<strong>Ovo je pretpregled.</strong>\nVaše izmene još nisu sačuvane!",
        "continue-editing": "Idi na uređivački okvir",
        "previewconflict": "Ovaj pregled oslikava kako će tekst u tekstualnom okviru izgledati.",
        "rows": "Redova:",
        "columns": "Kolona",
        "searchresultshead": "Pretraga",
-       "stub-threshold": "Prag za oblikovanje <a href=\"#\" class=\"stub\">veze kao klice</a>:",
+       "stub-threshold": "Prag za oblikovanje veze kao klice ($1):",
        "stub-threshold-disabled": "Onemogućeno",
        "recentchangesdays": "Broj dana u skorašnjim izmenama:",
        "recentchangesdays-max": "Najviše $1 {{PLURAL:$1|dan|dana}}",
        "watchlistanontext": "Morate biti $1 da biste gledali i uređivali stavke na vašem spisku nadgledanja.",
        "watchnologin": "Niste prijavljeni",
        "addwatch": "Dodaj na spisak nadgledanja",
-       "addedwatchtext": "Stranica „[[:$1]]“ i njena stranica za razgovor je dodata na vaš [[Special:Watchlist|spisak nadgledanja]].",
-       "addedwatchtext-short": "Stranica „$1“ je dodata na vaš spisak nadgledanja.",
+       "addedwatchtext": "Stranica „[[:$1]]“ i njena stranica za razgovor je dodata na Vaš [[Special:Watchlist|spisak nadgledanja]].",
+       "addedwatchtext-short": "Stranica „$1“ je dodata na Vaš spisak nadgledanja.",
        "removewatch": "Ukloni sa spiska nadgledanja",
        "removedwatchtext": "Stranica „[[:$1]]“ i njena stranica za razgovor je uklonjena s vašeg [[Special:Watchlist|spiska nadgledanja]].",
        "removedwatchtext-short": "Stranica „$1“ je uklonjena s vašeg spiska nadgledanja.",
        "watchlist-details": "Imate {{PLURAL:$1|$1 stranica|$1 stranice|$1 stranica}} na vašem spisku nadgledanja, ne računajući stranice za razgovor.",
        "wlheader-enotif": "Obaveštenje e-porukom je omogućeno.",
        "wlheader-showupdated": "Stranice koje su izmenjene otkad ste ih poslednji put posetili su '''podebljane'''.",
-       "wlnote": "Ispod {{PLURAL:$1|je poslednja izmena|su poslednje '''$1''' izmene|je poslednjih '''$1''' izmena}} u {{PLURAL:$2|prethodnom satu|prethodna '''$2''' sata|prethodnih '''$2''' sati}}, zaključno sa $3, $4.",
+       "wlnote": "Ispod {{PLURAL:$1|je poslednja izmena|su poslednje <strong>$1</strong> izmene|je poslednjih <strong>$1</strong> izmena}} u {{PLURAL:$2|prethodnom satu|prethodna <strong>$2</strong> sata|prethodnih <strong>$2</strong> sati}}, zaključno sa $3, $4.",
        "wlshowlast": "Prikaži poslednjih $1 sati, $2 dana",
        "watchlist-options": "Postavke spiska nadgledanja",
        "watching": "Nadgledanje…",
        "enotif_subject_restored": "Stranicu $1 na {{SITENAME}} {{GENDER:$2|vratio je|vratila je}} $2",
        "enotif_subject_changed": "Stranicu $1 na {{SITENAME}} {{GENDER:$2|promenio je|promenila je}} $2",
        "enotif_body_intro_deleted": "Stranicu $1 na {{SITENAME}} {{GENDER:$2|obrisao je|obrisala je}} $2 dana $PAGEEDITDATE. Pogledajte $3.",
-       "enotif_body_intro_created": "Stranicu $1 na {{SITENAME}} {{GENDER:$2|napravio je|napravila je|napravio je}} $2 dana $PAGEEDITDATE. Trenutna izmena nalazi se na $3.",
-       "enotif_body_intro_moved": "Stranicu $1 na {{SITENAME}} {{GENDER:$2|premestio je|premestila je}} $2 dana $PAGEEDITDATE. Trenutna izmena nalazi se na  $3.",
-       "enotif_body_intro_restored": "Stranicu $1 na {{SITENAME}} {{GENDER:$2|vratio je|vratila je|vratio je}} $2 dana $PAGEEDITDATE. Trenutna izmena nalazi se na $3.",
-       "enotif_body_intro_changed": "Stranicu $1 na {{SITENAME}} {{GENDER:$2|promenio je|promenila je|promenio je}} $2 dana $PAGEEDITDATE. Trenutna izmena nalazi se na $3.",
+       "enotif_body_intro_created": "Stranicu $1 na {{SITENAME}} {{GENDER:$2|napravio|napravila}} je $2 dana $PAGEEDITDATE Trenutna izmena nalazi se na $3.",
+       "enotif_body_intro_moved": "Stranicu $1 na {{SITENAME}} {{GENDER:$2|premestio|premestila}} je $2 dana $PAGEEDITDATE Trenutna izmena nalazi se na  $3.",
+       "enotif_body_intro_restored": "Stranicu $1 na {{SITENAME}} {{GENDER:$2|vratio|vratila}} je $2 dana $PAGEEDITDATE Trenutna izmena nalazi se na $3.",
+       "enotif_body_intro_changed": "Stranicu $1 na {{SITENAME}} {{GENDER:$2|promenio|promenila}} je $2 dana $PAGEEDITDATE Trenutna izmena nalazi se na $3.",
        "enotif_lastvisited": "Pogledajte $1 za sve izmene od vaše poslednje posete.",
        "enotif_lastdiff": "Pogledajte $1 da vidite ovu izmenu.",
        "enotif_anon_editor": "anoniman korisnik $1",
        "undeleteviewlink": "pogledaj",
        "undeleteinvert": "Obrni izbor",
        "undeletecomment": "Razlog:",
-       "undeletedrevisions": "{{PLURAL:$1|Izmena je vraćena|$1 izmene su vraćene|$1 izmena je vraćeno}}",
+       "undeletedrevisions": "{{PLURAL:$1|izmena vraćeno}} $1",
        "undeletedrevisions-files": "$1 {{PLURAL:$1|izmena|izmene|izmena}} i $2 {{PLURAL:$2|datoteka je vraćena|datoteke su vraćene|datoteka je vraćeno}}",
-       "undeletedfiles": "{{PLURAL:$1|Datoteka je vraćena|$1 datoteke su vraćene|$1 datoteka je vraćeno}}",
+       "undeletedfiles": "{{PLURAL:$1|datoteka vraćeno}} $1",
        "cannotundelete": "Vraćanje nije uspelo:\n$1",
        "undeletedpage": "<strong>Stranica $1 je vraćena</strong>\n\nPogledajte [[Special:Log/delete|dnevnik brisanja]] za zapise o skorašnjim brisanjima i vraćanjima.",
        "undelete-header": "Pogledajte [[Special:Log/delete|istorijat brisanja]] za nedavno obrisane stranice.",
        "sp-contributions-newbies-sub": "Za nove korisnike",
        "sp-contributions-newbies-title": "Doprinosi novih korisnika",
        "sp-contributions-blocklog": "dnevnik blokiranja",
-       "sp-contributions-deleted": "obrisani korisnički doprinosi",
+       "sp-contributions-deleted": "obrisani doprinosi",
        "sp-contributions-uploads": "otpremanja",
        "sp-contributions-logs": "dnevnici",
        "sp-contributions-talk": "razgovor",
        "filedelete-archive-read-only": "Server ne može da piše po skladišnoj fascikli ($1).",
        "previousdiff": "← Starija izmena",
        "nextdiff": "Novija izmena →",
-       "mediawarning": "'''Upozorenje''': ova vrsta datoteke može sadržati štetan kod.\nAko ga pokrenete, vaš računar može biti ugrožen.",
+       "mediawarning": "<strong>Upozorenje:</strong> ova vrsta datoteke može sadržati štetan kod.\nAko ga pokrenete, Vaš računar može biti ugrožen.",
        "imagemaxsize": "Ograničenje veličine slike:<br />''(na stranicama za opis datoteka)''",
        "thumbsize": "Veličina minijature:",
        "widthheight": "$1 × $2",
index af99a41..7146c65 100644 (file)
        "rows": "Rader:",
        "columns": "Kolumner:",
        "searchresultshead": "Sökning",
-       "stub-threshold": "Gräns för <a href=\"#\" class=\"stub\">stubblänk</a>-formatering (byte):",
+       "stub-threshold": "Gräns för formatering av stubblänk ($1):",
        "stub-threshold-disabled": "Avaktiverat",
        "recentchangesdays": "Antal dygn som skall visas i \"senaste ändringarna\":",
        "recentchangesdays-max": "Maximalt $1 {{PLURAL:$1|dygn}}",
        "logentry-newusers-create2": "Användarkonto $3 har {{GENDER:$2|skapats}} av $1",
        "logentry-newusers-byemail": "Användarkontot $3 har {{GENDER:$2|skapats}} av $1 och lösenordet skickades via e-post",
        "logentry-newusers-autocreate": "Användarkontot $1 {{GENDER:$2|skapades}} automatiskt",
+       "logentry-protect-move_prot": "$1 {{GENDER:$2|flyttade}} skyddsinställningarna från $4 till $3",
        "logentry-rights-rights": "$1 {{GENDER:$2|ändrade}} gruppmedlemskapet för $3 från $4 till $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|ändrade}} gruppmedlemskapet för $3",
        "logentry-rights-autopromote": "$1 {{GENDER:$2|befordrades}} automatiskt från $4 till $5",
index 0b9c883..4406660 100644 (file)
        "tooltip-ca-watch": "Bu sayfayı izleme listenize ekleyin",
        "tooltip-ca-unwatch": "Bu sayfayı izleme listenizden çıkarın",
        "tooltip-search": "{{SITENAME}} içinde ara",
-       "tooltip-search-go": "Eğer varsa, tam bu addaki bir sayfaya git",
+       "tooltip-search-go": "Eğer varsa, aynı isimli sayfaya gidin",
        "tooltip-search-fulltext": "Sayfalarda bu metni ara",
        "tooltip-p-logo": "Ana sayfayı ziyaret edin",
        "tooltip-n-mainpage": "Ana sayfaya git",
index 99a6fd0..fe9ec13 100644 (file)
@@ -23,7 +23,8 @@
                        "아라",
                        "Derslek",
                        "Macofe",
-                       "Selimcan"
+                       "Selimcan",
+                       "Исмаил Садуев"
                ]
        },
        "tog-underline": "Сылтамаларның астына сызу:",
        "qbfind": "Эзләү",
        "qbbrowse": "Карау",
        "qbedit": "Үзгәртү",
-       "qbpageoptions": "Ð\91Ñ\83 Ð±Ð¸Ñ\82",
+       "qbpageoptions": "Ð\90гÓ\80онан Ñ\82одаÑ\80Ñ\88",
        "qbmyoptions": "Битләрем",
        "faq": "ЕБС",
        "faqpage": "Project:ЕБС",
        "emailuser": "Бу кулланучыга хат",
        "emailuser-title-target": "{{GENDER:$1|Кулланучыга}} электрон хат язу",
        "emailuser-title-notarget": "Кулланучыга хат җибәрү",
-       "emailpage": "Кулланучыга хат җибәрү",
        "emailpagetext": "Әлеге форма ярдәмендә {{GENDER:$1|кулланучының}} электрон почта адресына хат җибәрергә мөмкин. Җибәрелгән адрес исемендә Сезнең [[Special:Preferences|көйләнмәләрдә]] күрсәтелгән адресыгыз күрсәтеләчәк, шуның ярдәмендә Сез ул кулланучы белән турыдан-туры сөйләшә аласыз.",
        "defemailsubject": "{{SITENAME}}: хат",
        "noemailtitle": "Электрон почта адресы юк",
index 348ff17..8c86f8f 100644 (file)
        "reuploaddesc": "Повернутися до форми завантаження",
        "upload-tryagain": "Зберегти змінений опис файлу",
        "uploadnologin": "Ви не ввійшли в систему",
-       "uploadnologintext": "Ð\92и Ð¿Ð¾Ð²Ð¸Ð½Ð½Ñ\96 $1, щоб завантажувати файли.",
+       "uploadnologintext": "Ð\91Ñ\83дÑ\8c Ð»Ð°Ñ\81ка, $1, щоб завантажувати файли.",
        "upload_directory_missing": "Директорія для завантажень ($1) відсутня і не може бути створена веб-сервером.",
        "upload_directory_read_only": "Веб-сервер не має прав запису в папку ($1), в якій планується зберігати завантажувані файли.",
        "uploaderror": "Помилка завантаження файлу",
index cfa12e9..a823cbc 100644 (file)
@@ -45,7 +45,7 @@
        "tog-shownumberswatching": "Mostra el numaro de utenti che i ga ła pajina en oservasion",
        "tog-oldsig": "Anteprima de ła firma:",
        "tog-fancysig": "Interpreta i comandi wiki in te la firma (sensa colegamento automatego)",
-       "tog-uselivepreview": "Ativa ƚa funsion \"Live preview\" (sperimentaƚe)",
+       "tog-uselivepreview": "Intaca l'anteprima dal vivo",
        "tog-forceeditsummary": "Chiedi conferma se l'ozeto de ła modifega el xé vodo",
        "tog-watchlisthideown": "Scondi łe me modifeghe ne i oservai spesałi",
        "tog-watchlisthidebots": "Scondi łe modifeghe de i bot ne i oservai spesałi",
        "view-foreign": "Varda su $1",
        "edit": "Canbia",
        "create": "Crea",
+       "create-local": "Xonta na descrision local",
        "editthispage": "Canbia sta pagina",
        "create-this-page": "Crea sta pagina",
        "delete": "Scansela",
        "disclaimers": "Avertense",
        "disclaimerpage": "Project:Avertense xenerali",
        "edithelp": "Guida",
+       "helppage-top-gethelp": "Ajuto",
        "mainpage": "Pajina prinsipałe",
        "mainpage-description": "Pajina prinsipałe",
        "policy-url": "Project:Policy",
        "hidetoc": "scondi",
        "collapsible-collapse": "Conprimi",
        "collapsible-expand": "Espandi",
+       "confirmable-confirm": "Sito {{GENDER:$1|seguro|segura}}?",
+       "confirmable-yes": "Sì",
+       "confirmable-no": "No",
        "thisisdeleted": "Varda o ripristina $1?",
        "viewdeleted": "Varda $1?",
        "restorelink": "{{PLURAL:$1|un canbiamento scanselà|$1 canbiamenti scanselà}}",
        "gotaccountlink": "Entra",
        "userlogin-resetlink": "Desmentegà i to dati d'aceso?",
        "userlogin-resetpassword-link": "Te gheto desmentegà ła paroła d'ordine?",
+       "userlogin-helplink2": "Ajuto par 'ndar drento",
        "createacct-emailrequired": "Indirisso e-mail",
        "createacct-emailoptional": "Indiriso e-mail (opsionałe)",
        "createacct-email-ph": "Inserissi el to indirizo de e-mail",
        "loginlanguagelabel": "Lengua: $1",
        "suspicious-userlogout": "Ła to richiesta de disconesion xè sta negà parché e a senbra invià da on browser non funsionante o on proxy de caching.",
        "pt-login": "Va drento",
+       "pt-login-button": "Va drento",
+       "pt-createaccount": "Crea utensa",
        "pt-userlogout": "Và fora",
        "php-mail-error-unknown": "Erore sconosudo nte'l funsionamento deła posta ełetronega PHP",
        "user-mail-no-addy": "Te ghe provà spedire un mesajo de posta ełetronega sensa un indiriso.",
        "preview": "Anteprima",
        "showpreview": "Varda anteprima",
        "showdiff": "Mostra canbiamenti",
-       "anoneditwarning": "'''Ocio:''' Nò te sì entrà co' un nome utente.\nIn te ła storia de ła pajina restarà el to indiriso IP.",
+       "anoneditwarning": "<strong>Ocio:</strong> Nò te sì entrà co' un nome utente.\nSe te fè calche canbiamento, el to indiriso IP el sarà visibile a tuti.\nSe te <strong>[$1 entri col to nome utente]</strong> o te te <strong>[$2 crei un utente]</strong>, i to contributi i vegnarà assegnà al nome utente che te te sì messo, oltre ad altri vantaji.",
        "anonpreviewwarning": "\"No te ghe eseguio el login. Salvando el to indiriso IP sarà rejistrà ne ła cronołosia de sta voxe.\"",
        "missingsummary": "'''Ocio:''' No te ghè indicà l'ogeto de la modifica. Macando de novo 'Salva la pagina' la modifica la vegnerà con l'ogeto vodo.",
        "missingcommenttext": "Inserissi un comento qua soto.",
        "currentrev": "Ultima version",
        "currentrev-asof": "Ultima version de le $1",
        "revisionasof": "Version de le $1",
-       "revision-info": "Version del $1, autor: $2",
+       "revision-info": "Version del $1 de {{GENDER:$6|$2}}$7",
        "previousrevision": "← Version pi vecia",
        "nextrevision": "Version pì nova →",
        "currentrevisionlink": "Ultima version",
        "showhideselectedversions": "Mostra/scondi version selessionà",
        "editundo": "tira indrìo",
        "diff-empty": "(Nissuna difarensa)",
+       "diff-multi-sameuser": "({{PLURAL:$1|Una revision intermedia|$1 revision intermedie}} del stesso utente mia mostrà)",
        "diff-multi-manyusers": "({{PLURAL:$1|Una revision intermedia|$1 revision intermedie}} de pi de {{PLURAL:$2|un utente|$2 utenti}} mia mostrà)",
        "difference-missing-revision": "{{PLURAL:$2|Na version|$2 version}} de sta difarensa ($1) {{PLURAL:$2|nó ła xe sta trovà|nó łe xe stae trovae}}.\n\nCuesto se verifega de sołito seguendo un ligamente vecio de un dif a na pàjina scansełà.\nI detaji i pol esar catai inte'l [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de łe scansełasion].",
        "searchresults": "Risultati de la riserca",
        "shown-title": "Fà védar {{PLURAL:$1|un risultato|$1 risultati}} par pagina",
        "viewprevnext": "Varda ($1 {{int:pipe-separator}} $2) ($3).",
        "searchmenu-exists": "Su sto sito ghe xe na pagina che se ciama \"[[:$1]]\"",
-       "searchmenu-new": "'''Crèa la pagina \"[[:$1]]\" su sta wiki!'''",
+       "searchmenu-new": "<strong>Crèa la pagina \"[[:$1]]\" su sta wiki!</strong> Varda anca {{PLURAL:$2|0=|la pagina|le pagine}} catà co la riserca.",
        "searchprofile-articles": "Pagine de contenuti",
        "searchprofile-images": "File",
        "searchprofile-everything": "Tuto quanto",
        "search-result-category-size": "{{PLURAL:$1|1 utente|$1 utenti}} ({{PLURAL:$2|1 sotocategoria|$2 sotocategorie}}, {{PLURAL:$3|1 file|$3 file}})",
        "search-redirect": "(redirect $1)",
        "search-section": "(sesion $1)",
+       "search-category": "(categoria $1)",
        "search-suggest": "Sercavito forsi: $1",
        "search-interwiki-caption": "Projeti fradei",
        "search-interwiki-default": "Risultati da $1:",
        "searchrelated": "ligà",
        "searchall": "tuti",
        "showingresults": "Qua de soto vien mostrà al massimo {{PLURAL:$1|'''1''' risultato|'''$1''' risultati}} a partir dal nùmaro '''$2'''.",
+       "search-showingresults": "{{PLURAL:$4|Risultato <strong>$1</strong> de <strong>$3</strong>|Risultati <strong>$1 - $2</strong> de <strong>$3</strong>}}",
        "search-nonefound": "La riserca no la gà catà gnente.",
        "powersearch-legend": "Riserca avansà",
        "powersearch-ns": "Serca ne i namespace:",
        "prefs-timeoffset": "Ore de difarensa",
        "prefs-advancedediting": "Preferense avansade",
        "prefs-editor": "Contributor",
+       "prefs-preview": "Anteprima",
        "prefs-advancedrc": "Preferense avansade",
        "prefs-advancedrendering": "Preferense avansade",
        "prefs-advancedsearchoptions": "Preferense avansade",
        "prefs-advancedwatchlist": "Preferense avansade",
        "prefs-displayrc": "Preferense de visualixassion",
        "prefs-displaywatchlist": "Opzioni de visualixassion",
+       "prefs-tokenwatchlist": "Geton",
        "prefs-diffs": "Difarense",
        "email-address-validity-valid": "L'indiriso de posta eletronega pararìa vałido",
        "email-address-validity-invalid": "Inserisi un indiriso de posta eletronega vałido",
-       "userrights": "Gestion dei parmessi relativi ai utenti",
+       "userrights": "Gestion dei parmessi dei utenti",
        "userrights-lookup-user": "Gestion de i gruppi utente",
        "userrights-user-editname": "Inserir el nome utente:",
        "editusergroup": "Modifica grupi utente",
        "rcshowhidebots-show": "Mostra",
        "rcshowhidebots-hide": "Scondi",
        "rcshowhideliu": "$1 i utenti registrài",
+       "rcshowhideliu-show": "Mostra",
        "rcshowhideliu-hide": "Scondi",
        "rcshowhideanons": "$1 i utenti anonimi",
        "rcshowhideanons-show": "Mostra",
        "rcshowhideanons-hide": "Scondi",
        "rcshowhidepatr": "$1 łe modifeghe controłae",
+       "rcshowhidepatr-show": "Mostra",
+       "rcshowhidepatr-hide": "Scondi",
        "rcshowhidemine": "$1 i me canbiamenti",
        "rcshowhidemine-show": "Mostra",
        "rcshowhidemine-hide": "Scondi",
        "upload-too-many-redirects": "In te l'URL ghe jera massa rimandi",
        "upload-http-error": "Se gà verificà un eròr HTTP: $1",
        "upload-copy-upload-invalid-domain": "No xe consentìo cargare copie da sto dominio.",
+       "upload-dialog-title": "Carga un file",
+       "upload-dialog-button-cancel": "Łasa star",
+       "upload-dialog-button-done": "Fato",
+       "upload-dialog-button-save": "Salva",
+       "upload-dialog-button-upload": "Carga",
+       "upload-dialog-label-select-file": "Siegli el file",
+       "upload-dialog-label-infoform-name": "Nome",
+       "upload-dialog-label-infoform-description": "Descrision",
+       "upload-dialog-label-usage-title": "Uso",
+       "upload-dialog-label-usage-filename": "Nome del file",
        "backend-fail-stream": "Inposibiłe traxmetare el file $1.",
        "backend-fail-backup": "Inposibiłe fare el backup del file $1.",
        "backend-fail-notexists": "El file $1 no existe.",
        "license-nopreview": "(Anteprima mìa disponibile)",
        "upload_source_url": " (na URL coreta e acessibile)",
        "upload_source_file": " (un file sul to computer)",
+       "listfiles-delete": "scancela",
        "listfiles-summary": "Sta pajina speciałe ła fa vedare tuti i file caricadi.\nSe l'utente modifega l'ordenamento, vien mostradi soło i file caricadi pi de recente da l'utente.",
        "listfiles_search_for": "Serca file par nome:",
        "imgfile": "file",
        "randomincategory": "Pagina a ocio in te na categoria",
        "randomincategory-invalidcategory": "\"$1\" no'l và mia ben come nome de categoria.",
        "randomincategory-nopages": "No ghe xe mia pagine in [[:Category:$1]].",
+       "randomincategory-category": "Categoria:",
+       "randomincategory-submit": "Và",
        "randomredirect": "Un redirect a caso",
        "randomredirect-nopages": "No ghe xe nissun rimando in tel namespace \"$1\".",
        "statistics": "Statisteghe",
        "ninterwikis": "$1 {{PLURAL:$1|interwiki}}",
        "nlinks": "$1 {{PLURAL:$1|colegamento|colegamenti}}",
        "nmembers": "$1 {{PLURAL:$1|elemento|elementi}}",
+       "nmemberschanged": "$1 → $2 {{PLURAL:$2|elemento|elementi}}",
        "nrevisions": "$1 {{PLURAL:$1|revision}}",
        "nimagelinks": "Doparà su $1 {{PLURAL:$1|pagina|pagine}}",
        "ntransclusions": "doparà su $1 {{PLURAL:$1|pagina|pagine}}",
        "protectedpages-cascade": "Solo protezion ricorsive",
        "protectedpages-noredirect": "Scondi rimandi",
        "protectedpagesempty": "Al momento no ghe xe pagine protete",
+       "protectedpages-timestamp": "Data e ora",
+       "protectedpages-reason": "Motivo",
+       "protectedpages-unknown-timestamp": "Sconossùa",
+       "protectedpages-unknown-performer": "Utente sconossùo",
        "protectedtitles": "Titoli proteti",
        "protectedtitlesempty": "Al momento no ghe xe titoli proteti coi parametri specificà.",
        "listusers": "Elenco dei utenti",
        "listgrouprights-removegroup-self": "Pol cavarse da {{PLURAL:$2|un grupo|dei grupi}}: $1",
        "listgrouprights-addgroup-self-all": "Pol xontarse a tuti i grupi",
        "listgrouprights-removegroup-self-all": "Pol cavarse da tuti i grupi",
+       "listgrouprights-namespaceprotection-namespace": "Namespace",
        "mailnologin": "Nissun indirizo a cui mandarghe el messagio",
        "mailnologintext": "Par inviare messagi e-mail ad altri utenti bisogna [[Special:UserLogin|acedere al sito]] e aver registrà un indirisso vałido ne łe proprie [[Special:Preferences|preferense]].",
        "emailuser": "Scrìveghe a sto utente",
        "rollback-success": "Anułàe łe modifighe de $1; riportà a ła version de prima de $2.",
        "sessionfailure-title": "Eròr de session",
        "sessionfailure": "Se gà verificà un problema ne la session che identifica l'acesso; el sistema, par precauzion, no'l gà mìa eseguìo el comando che te ghè dato. Torna a la pagina precedente col boton 'Indrìo' del to browser, ricarica la pagina e ripróa da novo.",
+       "changecontentmodel-reason-label": "Motivo:",
        "protectlogpage": "Protesion",
        "protectlogtext": "De seguito xe elencade łe modifeghe ałe protesion dełe pajine.\nVedi ła [[Special:ProtectedPages|lista dełe pajine protete]] pa l'elenco de łe protesion de pajina atualmente ative.",
        "protectedarticle": "ga proteto \"[[$1]]\"",
        "allmessages-prefix": "Filtra par prefisso:",
        "allmessages-language": "Lengua:",
        "allmessages-filter-submit": "Và",
+       "allmessages-filter-translate": "Tradusi",
        "thumbnail-more": "Ingrandissi",
        "filemissing": "File mancante",
        "thumbnail_error": "Eror ne la creazion de la miniatura: $1",
        "tooltip-pt-mycontris": "Elenco de i to contributi",
        "tooltip-pt-login": "Te consiliemo de registrarte, ma no te ghè da farlo par forsa.",
        "tooltip-pt-logout": "Và fora",
+       "tooltip-pt-createaccount": "Te incorajemo de farte un utente e 'ndar drento co quelo; comunque no te toca farlo pa' forsa.",
        "tooltip-ca-talk": "Discussion sul contenuto de sta pagina",
-       "tooltip-ca-edit": "Te poli canbiar sta pagina. Par piaser dòpara el boton de anteprima, prima de salvar.",
+       "tooltip-ca-edit": "Modifega sta pagina",
        "tooltip-ca-addsection": "Scumisia na nova sesion",
        "tooltip-ca-viewsource": "Sta pagina la xe proteta, ma te poli vardar el so testo",
        "tooltip-ca-history": "Version vece de sta pagina",
        "pageinfo-article-id": "ID de la pagina",
        "pageinfo-language": "Lengua del contenuto de la pagina",
        "pageinfo-robot-policy": "Stato par i motori de riserca",
-       "pageinfo-robot-index": "Indicizabile",
-       "pageinfo-robot-noindex": "Mia indicizabile",
+       "pageinfo-robot-index": "Parmesso",
+       "pageinfo-robot-noindex": "Vietà",
        "pageinfo-watchers": "Nùmaro de utenti che tien d'ocio sta pagina",
        "pageinfo-few-watchers": "Manco de $1 {{PLURAL:$1|oservador|oservadori}}",
        "pageinfo-redirects-name": "Rimandi verso sta pagina",
        "confirm-watch-top": "Xonto sta pàjina a ła to lista de łe tegnùe d'ocio?",
        "confirm-unwatch-button": "Va ben",
        "confirm-unwatch-top": "Cavo sta pàjina da ła to lista de łe tegnùe d'ocio?",
+       "quotation-marks": "\"$1\"",
        "imgmultipageprev": "← la pagina prima",
        "imgmultipagenext": "la pagina dopo →",
        "imgmultigo": "Và",
        "imgmultigoto": "Và a la pagina $1",
        "img-lang-default": "(lengua predefinìa)",
+       "img-lang-go": "Và",
        "ascending_abbrev": "cresc",
        "descending_abbrev": "decresc",
        "table_pager_next": "Pagina sucessiva",
        "watchlistedit-raw-done": "La lista dei osservati speciali la xe stà agiornà.",
        "watchlistedit-raw-added": "Xe stà zontà {{PLURAL:$1|una pagina|$1 pagine}}:",
        "watchlistedit-raw-removed": "Xe stà eliminà {{PLURAL:$1|una pagina|$1 pagine}}:",
+       "watchlistedit-clear-titles": "Pagine:",
        "watchlisttools-view": "Varda i canbiamenti",
        "watchlisttools-edit": "Varda e canbia le pagine tegnùe d'ocio",
        "watchlisttools-raw": "Canbia la lista in formato testo",
        "version-hook-name": "Nome de l'hook",
        "version-hook-subscribedby": "Sotoscrizioni",
        "version-version": "($1)",
+       "version-no-ext-name": "[nissun nome]",
        "version-license": "Licensa MediaWiki",
        "version-ext-license": "Licensa",
        "version-ext-colheader-name": "Estension",
        "version-ext-colheader-version": "Version",
        "version-ext-colheader-license": "Licensa",
        "version-ext-colheader-description": "Descrission",
+       "version-ext-colheader-credits": "Autori",
        "version-license-title": "Licensa par $1",
        "version-poweredby-credits": "Sta wiki la va con '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
        "version-poweredby-others": "altri",
        "version-entrypoints": "URL de aceso",
        "version-entrypoints-header-entrypoint": "Punti de aceso",
        "version-entrypoints-header-url": "URL",
-       "redirect": "Rimando par file, utente, o ID de revision.",
+       "version-libraries-library": "Libraria",
+       "version-libraries-version": "Version",
+       "version-libraries-license": "Licensa",
+       "version-libraries-description": "Descrision",
+       "version-libraries-authors": "Autori",
+       "redirect": "Rimando par file, utente, pagina o ID de version.",
        "redirect-legend": "Rimandar a un file o na pagina",
        "redirect-summary": "Sta pagina speciale la rimanda a un file (dato el nome del file), a na pagina (dato l'ID de la revision), o a na pagina utente (dato l'ID de l'utente).",
        "redirect-submit": "Và",
        "fileduplicatesearch-result-n": "Ghe xe {{PLURAL:$2|un duplicato conpagno|$2 duplicati conpagni}} al file \"$1\".",
        "fileduplicatesearch-noresults": "Nisun file de nome \"$1\" trovà.",
        "specialpages": "Pagine speciali",
+       "specialpages-note-top": "Legenda",
        "specialpages-note": "* Pàjine speciałi normałi.\n* <span class=\"mw-specialpagerestricted\">Pàjine speciałi a aceso limità.</span>",
        "specialpages-group-maintenance": "Resoconti de manutenzion",
        "specialpages-group-other": "Altre pagine speciali",
        "tags-tag": "Nome del tag",
        "tags-display-header": "Aspetto ne la lista de le modifiche",
        "tags-description-header": "Descrission conpleta del significado",
+       "tags-source-header": "Fonte",
        "tags-active-header": "Ativo?",
        "tags-hitcount-header": "Modifiche che gà dei tag",
+       "tags-actions-header": "Asion",
+       "tags-active-yes": "Sì",
+       "tags-active-no": "No",
        "tags-edit": "modìfega",
+       "tags-delete": "scancela",
+       "tags-activate": "intaca",
+       "tags-deactivate": "destaca",
        "tags-hitcount": "$1 {{PLURAL:$1|modìfega|modìfeghe}}",
+       "tags-create-reason": "Motivo:",
+       "tags-create-submit": "Crea",
+       "tags-delete-reason": "Motivo:",
+       "tags-activate-reason": "Motivo:",
+       "tags-activate-submit": "Intaca",
+       "tags-deactivate-reason": "Motivo:",
+       "tags-edit-reason": "Motivo:",
        "comparepages": "Confronta le pagine",
        "compare-page1": "Pagina 1",
        "compare-page2": "Pagina 2",
index a8cb6ba..471fda9 100644 (file)
        "autosumm-newblank": "Đã tạo trang trống",
        "size-kilobytes": "$1 kB",
        "size-kilopixel": "$1 kP",
-       "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-bits": "$1 bit/s",
+       "bitrate-kilobits": "$1 kbit/s",
+       "bitrate-megabits": "$1 Mbit/s",
+       "bitrate-gigabits": "$1 Gbit/s",
+       "bitrate-terabits": "$1 Tbit/s",
+       "bitrate-petabits": "$1 Pbit/s",
        "bitrate-exabits": "$1 Ebps",
-       "bitrate-zetabits": "$1 Zbps",
-       "bitrate-yottabits": "$1 Ybps",
+       "bitrate-zetabits": "$1 Zbit/s",
+       "bitrate-yottabits": "$1 Ybit/s",
        "lag-warn-normal": "Những thay đổi trong vòng $1 {{PLURAL:||}}giây trở lại đây có thể chưa xuất hiện trong danh sách.",
        "lag-warn-high": "Do độ trễ của máy chủ cơ sở dữ liệu, những thay đổi trong vòng $1 {{PLURAL:$1||}}giây trở lại đây có thể chưa xuất hiện trong danh sách.",
        "watchlistedit-normal-title": "Sửa các trang tôi theo dõi",
index 48db359..bdd8d9a 100644 (file)
        "actions": "Jëf",
        "namespaces": "Barabu tur",
        "variants": "Wuute",
+       "navigation-heading": "Njëlul joowiin",
        "errorpagetitle": "Njuumte",
        "returnto": "Dellu ci wii xët $1.",
        "tagline": "Jóge  {{SITENAME}}.",
        "printableversion": "Sumb bu móolu",
        "permalink": "Lëkkalekaay yu sax",
        "print": "Móol",
+       "view": "Xool",
        "edit": "Soppi",
        "create": "Sos",
        "editthispage": "Soppi xët wii",
        "createaccount-text": "Kenn ku sos am sàq ci {{SITENAME}} te tudd $2 ($4).\nBaatujàll bu « $2 » mooy « $3 ». Li gën mooy nga dugg ci teel te soppi baatujàll bi.\n\nJéelaleel bataaxal bii su fekkee ci njuumte nga sosee mii sàq.",
        "login-throttled": "Jéem ngaa dugg ay yoon te jàllul.\n\nNgalla néggandikul ab diir door a jéemaat.",
        "loginlanguagelabel": "Làkk : $1",
+       "pt-login": "Dugg",
+       "pt-createaccount": "Sos am sàq",
        "changepassword": "Coppiteg baatujàll bi",
        "resetpass_announce": "Danga dugg ak ab baatujàll bu saxul-dakk, buñ la yónne cib bataaxal. Ngir matal mbindu mi, faaw nga roof ab baatujàll bu bees fii:",
        "resetpass_text": "<!-- Bindal fii -->",
        "rc_categories": "Digalub wàll yi (xaajale leen ak « \"|\" »)",
        "rc_categories_any": "Yépp",
        "rc-change-size": "$1",
+       "rc-change-size-new": "$1 {{PLURAL:$1|byte|bytes}} ginnaaw coppite gi",
        "newsectionsummary": "/* $1 */ xaaj bu bees",
        "rc-enhanced-expand": "Xool faramfacce yi (laaj na JavaScript)",
        "rc-enhanced-hide": "nëbb faramfacce yi",
        "filehist-dimensions": "Dayoo",
        "filehist-filesize": "Dayoo ŋara wi",
        "filehist-comment": "Saraa",
-       "imagelinks": "Xët yi am bii dencukaay",
+       "imagelinks": "Njëfandikug dencukaay bi",
        "linkstoimage": "{{PLURAL:$1|Xët wii ci suuf ëmb na|$1 xët yii ci suuf ëmb nañu}} bii dencukaay:",
        "linkstoimage-more": "Lu ëpp $1 {{PLURAL:$1|xët lëkkale nañu leen|xët lëkkale nañu leen}} ak bii dencukaay.\nLim bii di toftal moo lay won {{PLURAL:$1|xët wi ñu njëkk a|xët yi ñu njëkk a}} lëkkale ak wii.\nAb [[Special:WhatLinksHere/$2|lim bu mat]] jàppandi na.",
        "nolinkstoimage": "Amul wenn xët wu ëmb bii dencukaay.",
        "nlinks": "$1 {{PLURAL:$1|lëkkalekaay|ciy lëkkalekaay}}",
        "nmembers": "$1 {{PLURAL:$1|xët|ciy xët}} ci biir",
        "nrevisions": "$1 {{PLURAL:$1|sumb|sumb}}",
-       "nviews": "$1 {{PLURAL:$1|nemmeeku|nemmeeku}}",
        "specialpage-empty": "Xët wii amul dara",
        "lonelypages": "Xëti jiriim",
        "lonelypagestext": "Xët yiy toftal amuñuy lëkkalekaay yu ne ci yeneen xët yu leen di ubbi te ëmbuwuñu itam ci benn xëtu {{SITENAME}}.",
        "mailnologin": "Amul benn mákkaan boo man a yónne bataaxal bi",
        "mailnologintext": "Ngir man a yónney bataaxal laaj na nga [[Special:UserLogin|dugg]] te it am ab màkkaanub m-bataaxal bu baax ci say [[Special:Preferences|tànneef]].",
        "emailuser": "Bind bii jëfandikukat",
-       "emailpage": "Yónne ab m-bataaxal bii jëfandikukat",
        "defemailsubject": "M-bataaxalu {{SITENAME}}",
        "noemailtitle": "Amul mákkaanub m-bataaxal",
        "noemailtext": "Bii jëfandikukat joxewul ab màkkaanub m-bataaxal bu baax.",
        "delete-toobig": "Xët wii dafa am jaar-jaar bu bari, bu weesu $1 {{PLURAL:$1|sumb|sumb}}. Farteg yooyule xët dañu koo digal ngir bañ ay jafe-jafe yu mana am ci doxinu {{SITENAME}}.",
        "delete-warning-toobig": "Xët wii dafa am jaar-jaar bu bari, bu weesu $1 {{PLURAL:$1|sumb|sumb}}. Seenug farte man naa jur ag jaxasoo ci dáttub njoxeeb {{SITENAME}} ; def ko ak teey.",
        "rollback": "Loppanti coppite yi",
-       "rollback_short": "Loppanti",
        "rollbacklink": "delloowaat",
        "rollbackfailed": "Loppanti gi antuwul",
        "cantrollback": "Neenal coppite gi manula nekk;\nKi def coppite gi mooy Kenn ki masa cëru ci xët wii.",
        "tooltip-pt-mycontris": "Limu say cëru",
        "tooltip-pt-login": "Woo nan la ngir nga xammeku, waaye doonul lu manuta ñakk.",
        "tooltip-pt-logout": "Génn",
+       "tooltip-pt-createaccount": "Dees na la digal nga bindu te dugg, donte doonul lu manul-ñàkk",
        "tooltip-ca-talk": "Waxtaan yi ñeel xët wii",
-       "tooltip-ca-edit": "Man ngaa soppi xët wi. Ngir yàlla wonendil laataa ngay denc.",
+       "tooltip-ca-edit": "Soppi xët wii",
        "tooltip-ca-addsection": "Tambali xaaj bu bees",
        "tooltip-ca-viewsource": "Xët wii dañ koo aar. Waaye man ngaa xool ëmbitam.",
        "tooltip-ca-history": "Sumb yi weesu yu xët wi.",
        "spamprotectiontitle": "Seggukaay lank-spam",
        "spam_reverting": "Loppantib sumb mu mujj mu amul lëkkalekaay buy jëme $1",
        "spam_blanking": "Setal nañ wecc sumb yi amoon lëkkalekaay buy jëme $1",
+       "pageinfo-toolboxlink": "Xibaar ci xëtu wi",
        "previousdiff": "← Coppite yi gën a yàgg",
        "nextdiff": "Coppite yi mujj →",
        "file-info": "Réyaayu file bi : $1, type MIME : $2",
        "file-nohires": "Amul kem bu ëpp bii bu jàppandi.",
        "svg-long-desc": "Dencukaay SVG, kem bu jaadu  $1 × $2 pixel, dayoo dencukaay bi: $3",
        "show-big-image": "Ngandalal nataal gii",
+       "show-big-image-size": "$1 × $2 pixel",
        "ilsubmit": "Seet",
        "bydate": "ci diir",
        "bad_image_list": "Limu  cër yi nekk ci rëdd yi tàmbalee * rekk lees di faale.\nLëkkalekaay bu njëkk bu aw rëdd dafa war a nekk bu ab dencukaay bu baaxul.\nLëkkalekaay yiy toftal, ci wenn rëdd wi, dees leen di jàppee nikiy sette, maanaam xët yi dencukaay bi man a feeñ.",
        "watchlisttools-edit": "Xool te soppi limu toppte gi",
        "watchlisttools-raw": "Soppi lim gi",
        "specialpages": "Xëti jagleel",
+       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tag|Tag}}]]: $2)",
        "revdelete-restricted": "doxalub digal ngir yorkat yi",
        "revdelete-unrestricted": "digal ngir yorkat yi deñ na",
        "rightsnone": "(menn)",
-       "revdelete-summary": "soppi tënk gi"
+       "revdelete-summary": "soppi tënk gi",
+       "searchsuggest-search": "Seet"
 }
index 5f06880..ae6928f 100644 (file)
@@ -19,7 +19,8 @@
                        "TheChampionMan1234",
                        "Fitoschido",
                        "Poiuyt",
-                       "反共复国"
+                       "反共复国",
+                       "姑苏小恐龙"
                ]
        },
        "tog-underline": "鏈接下橫線:",
        "jumptonavigation": "导航",
        "jumptosearch": "搜寻",
        "view-pool-error": "對弗住,服務器能界超載。\n望箇頁個人忒多哉。\n相勞爾等瑲起再試試相趒箇頁來。\n\n$1",
+       "generic-pool-error": "對弗住,服務器能界超載。\n望箇頁個人忒多哉。\n相勞爾等瑲起再試試相趒箇頁來。",
        "pool-timeout": "等锁过时",
        "pool-queuefull": "池队列满哉",
        "pool-errorunknown": "弗识个错误",
+       "pool-servererror": "池计数器服务现在弗好用($1)",
        "poolcounter-usage-error": "用法出错:$1",
        "aboutsite": "有关{{SITENAME}}",
        "aboutpage": "Project:关于",
        "ok": "好",
        "retrievedfrom": "取自“$1”",
        "youhavenewmessages": "你侬有$1($2)。",
+       "youhavenewmessagesfromusers": "侬有来自{{PLURAL:$3|其他用户|$3个用户}}的$1($2)。",
        "newmessageslinkplural": "{{PLURAL:$1|新消息|999=新消息}}",
        "newmessagesdifflinkplural": "此垡̺{{PLURAL:$1|变化|999=变化}}",
        "youhavenewmessagesmulti": "爾徠$1裏有新信息",
        "no-null-revision": "\"$1\"页呒处建新个修改",
        "badtitle": "坏标题",
        "badtitletext": "所请求页面个标题是无效个、弗存在,跨语言或跨wiki链接个标题错误。渠作兴包含一只或多只弗好用拉标题里向字符。",
+       "title-invalid-empty": "请求个页面标题是空个,或着只包括名字空间个名称。",
+       "title-invalid-utf8": "请求个页面标题包括一只无效个UTF-8序列。",
+       "title-invalid-interwiki": "请求个页面标题包含跨wiki个链接,伊弗好用于标题。",
+       "title-invalid-talk-namespace": "请求个页面标题引用子一只弗好存在个讨论页面。",
        "title-invalid-characters": "请求个页面标题包括无效字符:“$1”。",
+       "title-invalid-relative": "标题有相对个路径。相关个页面标题(./, ../)呒没效果,因为用户浏览器经常呒没办法到达这些页面。",
+       "title-invalid-magic-tilde": "请求个页面标题包含呒没效果个连续波浪线(<nowiki>~~~</nowiki>)。",
        "title-invalid-too-long": "请求个页面标题忒长。作为UTF-8编码,它弗好超过$1个{{PLURAL:$1|字节}}。",
+       "title-invalid-leading-colon": "请求个页面标题开头包括一只呒没效果个冒号。",
        "perfcached": "下向是缓存数据,呒数弗是最新个。 A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.",
        "perfcachedts": "下头是缓存数据,阿末一趟更新辰光是$1。缓存里最多有{{PLURAL:$4|$4条结果}}。",
        "querypage-no-updates": "当前禁止对此页面进行更新。箇搭个数据弗好立即刷新。",
        "actionthrottled": "动作已压制",
        "actionthrottledtext": "基于反垃圾链接个考量,限制垃拉短时间内多趟重复箇只操作。请过脱几分钟再试试看。",
        "protectedpagetext": "箇页锁牢定,防编搭各许操作。",
-       "viewsourcetext": "侬可以查看搭仔复制箇只页面个源码",
+       "viewsourcetext": "侬可以查看搭仔复制箇只页面个源码",
        "viewyourtext": "你侬好望也好畀'''你侬编个'''复制到箇页:",
        "protectedinterface": "箇页为箇维基个软件提供界面文本,锁牢定防乱用。\n加改全部维基个译文,用[//translatewiki.net/ translatewiki.net],MediaWiki软件个本地化计划。",
        "editinginterface": "<strong>警告:</strong>侬来里编写个页面是畀软件用个界面文本。箇页变化会影响各许人个界面样子。",
+       "translateinterface": "要加入或着更改所有个wiki个翻译,请侬访问MediaWiki本地化项目个网站[//translatewiki.net/ translatewiki.net]。",
        "cascadeprotected": "箇只页面拨保护拉许,因为箇只页面拨下底已经标注“级联保护”个{{PLURAL:$1|一只|多只}}被保护页面包含:\n$2",
        "namespaceprotected": "侬无没编辑'''$1'''名字空间里向页面个权限。",
        "customcssprotected": "箇CSS页你呒处编,箇页有各许用户个私人设置。",
        "createacct-benefit-body2": "{{PLURAL:$1|页}}",
        "createacct-benefit-body3": "此垡 {{PLURAL:$1|出力个人}}",
        "badretype": "倷输入个密码搭倪个档案弗配。",
+       "usernameinprogress": "迭个用户名个账户创建已经勒了进行。请侬等一等。",
        "userexists": "用戶名有人用哉。相勞爾揀別樣名字。",
        "loginerror": "登录错误",
        "createacct-error": "建账号出错",
        "login-migrated-generic": "侬个账号已经畀移脱哉,并且侬个用户名来箇wiki弗再存在。",
        "loginlanguagelabel": "语言:$1",
        "suspicious-userlogout": "侬登出个要求已经拨回头脱,因为渠可能是由已损坏个浏览器或者缓存代理传送个。",
+       "createacct-another-realname-tip": "真实姓名是选填个项目。\n假使侬选择提供伊,伊会得用勒了贡献署名方面高头。",
        "pt-login": "登录",
        "pt-login-button": "登录",
        "pt-createaccount": "建账号",
        "pt-userlogout": "登出",
+       "user-mail-no-addy": "尝试发送邮件而弗附带电子邮件个地址。",
+       "user-mail-no-body": "试图发送空个或者主体短的一点也弗合理个电子邮件",
        "changepassword": "改密码",
        "resetpass_announce": "要完成登录,侬必须设定一只新密码。",
        "resetpass_header": "更改密码",
        "resetpass-submit-loggedin": "更改密码",
        "resetpass-submit-cancel": "取消",
        "resetpass-wrong-oldpass": "无效个临时或者现有密码。\n侬作兴已经成功拿密码改脱,或者已经请求一个新个临时密码。",
+       "resetpass-recycled": "请重置侬个密码是忒侬当前密码不同个密码。",
        "resetpass-temp-password": "临时密码:",
        "passwordreset": "重置密码",
        "passwordreset-username": "用戶名",
        "listgrouprights-members": "(成员列表)",
        "emailuser": "发电子信畀箇个用户",
        "emailuser-title-notarget": "郵箱用戶",
-       "emailpage": "郵箱用戶",
        "emailfrom": "從",
        "emailto": "發畀",
        "emailsubject": "主題",
index 5646814..5149a64 100644 (file)
        "title-invalid-interwiki": "דער געזונט ער בלאט־קעפל אנטהאלט אן אינטערוויקי־לינק, וואס מ'קען נישט ניצן אין א קעפל.",
        "title-invalid-talk-namespace": "דער געזוכטער בלאט־קעפל באציט זיך צו א שמועס־בלאט וואס קען נישט עקזעסטירן.",
        "title-invalid-characters": "דער געזוכטער בלאט־קעפל אנטהאלט אומגילטיקע צייכענען: \"$1\".",
+       "title-invalid-relative": "דער טיטל האט א רעלאטיוון שטעג. . רעלאטיווע בלאט טיטלען  (./, ../) זענען אומגילטיג, ווייל אפט זענען זיי אומגרייכבאר דורכן בלעטערער פונעם באניצער.",
+       "title-invalid-magic-tilde": "דער געבעטענער בלאט־טיטל אנטהאלט אן אומגילטיגן מאגישן טילדה־סעקווענץ (<nowiki>~~~</nowiki>).",
        "title-invalid-leading-colon": "דער געבעטענער בלאט־טיטל הייבט אן מיט אן אומגילטיגן צווייפינטל.",
        "perfcached": "די פאלגנדע דאטן זענען גענומען פונעם 'זאַפאַס' און מעגלעך נישט אקטועל. מאקסימום {{PLURAL:$1|איין רעזולטאט איז|$1 רעזולטאטן זענען}} פאראן אין זאפאס.",
        "perfcachedts": "די פאלגנדע דאטן זענען פונעם זאַפאַס, וואס איז לעצט געווארן דערהײַנטיגט $1. מאקסימום {{PLURAL:$4|איין רעזולטאט איז|$4 רעזולטאטן זענען}} פאראן אין זאפאס",
        "rows": "שורות:",
        "columns": "עמודים:",
        "searchresultshead": "זוכן",
-       "stub-threshold": "שוועל פֿאַר <a href=\"#\" class=\"stub\">שטומף לינק</a> פֿאָרמאַטירונג (בייטן):",
+       "stub-threshold": "שוועל פֿאַר שטומף לינק פֿאָרמאַטירונג ($1):",
+       "stub-threshold-sample-link": "ביישפיל",
        "stub-threshold-disabled": "אַנולירט",
        "recentchangesdays": "צאל פון טעג צו ווייזן אין די לעצטע ענדערונגן:",
        "recentchangesdays-max": "מאַקסימום $1 {{PLURAL:$1|טאָג|טעג}}",
        "action-editmyprivateinfo": "רעדאקטירן אײַער פריוואטע אינפארמאציע",
        "action-editcontentmodel": "רעדאקטירן אינהאלט־מאדעל פון א בלאט",
        "action-managechangetags": "שאפן און אויסמעקן טאגן פון דער דאטנבאזע",
+       "action-applychangetags": "אנווענדן טאגן צוזאמען מיט אייערע ענדערונגען",
        "nchanges": "{{PLURAL:$1|ענדערונג|$1 ענדערונגען}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|זײַט לעצטן וויזיט}}",
        "enhancedrc-history": "היסטאריע",
        "upload-too-many-redirects": "דער URL אַנטהאַלט צופֿיל ווײַטערפֿירונגען.",
        "upload-http-error": "א HTTP גרײַז האט פאַסירט: $1",
        "upload-copy-upload-invalid-domain": "ארויפלאדן טעקעס פון דעם דאמיין נישט מעגלעך.",
+       "upload-dialog-title": "אַרױפֿלאָדן טעקע",
+       "upload-dialog-error": "א גרײַז האט פאסירט",
+       "upload-dialog-warning": "א ווארענונג האט פאסירט",
+       "upload-dialog-button-cancel": "אַנולירן",
+       "upload-dialog-button-done": "ערליידיקט",
+       "upload-dialog-button-save": "אויפֿהיטן",
+       "upload-dialog-button-upload": "אַרויפֿלאָדן",
+       "upload-dialog-label-select-file": "קלויבן טעקע",
+       "upload-dialog-label-infoform-title": "פרטים",
+       "upload-dialog-label-infoform-name": "נאָמען",
+       "upload-dialog-label-infoform-description": "באַשרײבונג",
+       "upload-dialog-label-usage-title": "באניץ",
+       "upload-dialog-label-usage-filename": "טעקע נאמען",
        "backend-fail-stream": "קען נישט מאכן שטראמען טעקע $1.",
        "backend-fail-notexists": "נישט פֿאראן די טעקע $1.",
        "backend-fail-notsame": "א נישט־אידענטישע טעקע עקזיסטירט שוין ביי \"$1\".",
        "uploadstash-nofiles": "איר האט נישט קיין טעקעס אין זאפאס.",
        "uploadstash-errclear": "אוועקנעמען די טעקעס דורכגעפאלן.",
        "uploadstash-refresh": "דערפֿרישן די רשימה פון טעקעס",
+       "invalid-chunk-offset": "אומגילטיקער סטארטפונקט",
        "img-auth-accessdenied": "צוטריט אָפגעזאָגט",
        "img-auth-notindir": "געשיכטעס שטעג איז נישט אין דער קאנפיגורטער ארויפלאד־דירעקטאריע.",
        "img-auth-badtitle": "קען נישט שאפֿן א גילטיקן טיטל פֿון \"$1\"",
index cb33de4..a875f5c 100644 (file)
        "rows": "行数:",
        "columns": "列数:",
        "searchresultshead": "搜索",
-       "stub-threshold": "<a href=\"#\" class=\"stub\">短链接</a>格式阈值(字节):",
+       "stub-threshold": "短链接格式阈值($1):",
+       "stub-threshold-sample-link": "样例",
        "stub-threshold-disabled": "停用",
        "recentchangesdays": "最近更改中显示的天数:",
        "recentchangesdays-max": "最多$1天",
        "javascripttest-pagetext-frameworks": "请选择以下的框架之一:$1",
        "javascripttest-pagetext-skins": "选择外观来运行测试:",
        "javascripttest-qunit-intro": "请见mediawiki.org的[$1 测试说明文件]。",
-       "tooltip-pt-userpage": "你的用户页面",
+       "tooltip-pt-userpage": "您的用户页",
        "tooltip-pt-anonuserpage": "你用于编辑的IP地址的用户页面",
        "tooltip-pt-mytalk": "你的讨论页面",
        "tooltip-pt-anontalk": "有关本IP地址的编辑的讨论",
        "tooltip-t-recentchangeslinked": "链自本页的页面的最近更改",
        "tooltip-feed-rss": "本页面的RSS源",
        "tooltip-feed-atom": "本页面的Atom源",
-       "tooltip-t-contributions": "该用户的贡献的列表",
+       "tooltip-t-contributions": "由此用户做出的贡献列表",
        "tooltip-t-emailuser": "给该用户发送电子邮件",
        "tooltip-t-info": "关于此页面的更多信息",
        "tooltip-t-upload": "上传文件",
index 74a4542..81e0605 100644 (file)
     "lonelypagestext": "以下頁面尚未被這個wiki中的其它頁面連結。",
     "uncategorizedimages": "待分類圖片",
     "unusedimages": "未使用圖片",
-    "popularpages": "熱門頁面",
     "mostimages": "最多連結圖片",
     "prefixindex": "所有頁面之前綴",
     "deadendpagestext": "以下頁面沒有連結到這個wiki中的其它頁面。",
index 40627a2..4f7638a 100644 (file)
@@ -116,7 +116,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'Peugah_haba_lon' ),
        'Newimages'                 => array( 'Beureukaih_baro' ),
        'Newpages'                  => array( 'On_baro' ),
-       'Popularpages'              => array( 'On_meuceuhu' ),
        'Preferences'               => array( 'Geunalak' ),
        'Prefixindex'               => array( 'Dapeuta_neuaway' ),
        'Protectedpages'            => array( 'On_nyang_geupeulindong' ),
index 7482841..320efa3 100644 (file)
@@ -151,7 +151,6 @@ $specialPageAliases = array(
        'Newimages'                 => array( 'Nuwe_beelde', 'Nuwebeelde', 'Nuwe_lêers', 'Nuwelêers' ),
        'Newpages'                  => array( 'Nuwe_bladsye', 'Nuwebladsye' ),
        'PasswordReset'             => array( 'WagwoordHerstel' ),
-       'Popularpages'              => array( 'PopulêreBladsye' ),
        'Preferences'               => array( 'Voorkeure' ),
        'Prefixindex'               => array( 'VoorvoegselIndeks' ),
        'Protectedpages'            => array( 'BeskermdeBladsye' ),
index 588cf34..98b8b66 100644 (file)
@@ -44,7 +44,6 @@ $namespaceGenderAliases = array(
 );
 
 $specialPageAliases = array(
-       'Popularpages'              => array( 'Faqe të famshme' ),
        'Search'                    => array( 'Kërko' ),
 );
 
index 7ec924e..4f84bfb 100644 (file)
@@ -88,7 +88,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'A_mía_descusión', 'A_mía_pachina_de_descusión' ),
        'Newimages'                 => array( 'Nuevos_fichers', 'Nuevas_imáchens', 'Nuevas_imachens', 'Nuebas_imachens' ),
        'Newpages'                  => array( 'Pachinas_nuevas', 'Pachinas_recients', 'Pachinas_nuebas', 'Pachinas_más_nuebas', 'Pachinas_más_rezients', 'Pachinas_rezients' ),
-       'Popularpages'              => array( 'Pachinas_populars', 'Pachinas_más_populars' ),
        'Preferences'               => array( 'Preferencias' ),
        'Prefixindex'               => array( 'Pachinas_por_prefixo', 'Mirar_por_prefixo' ),
        'Protectedpages'            => array( 'Pachinas_protechitas', 'Pachinas_protechidas' ),
index 7817990..5441237 100644 (file)
@@ -373,7 +373,6 @@ $specialPageAliases = array(
        'PageLanguage'              => array( 'لغة_الصفحة' ),
        'PasswordReset'             => array( 'إعادة_ضبط_كلمة_السر' ),
        'PermanentLink'             => array( 'وصلة_دائمة', 'رابط_دائم' ),
-       'Popularpages'              => array( 'صفحات_مشهورة' ),
        'Preferences'               => array( 'تفضيلات' ),
        'Prefixindex'               => array( 'فهرس_بادئة' ),
        'Protectedpages'            => array( 'صفحات_محمية' ),
index f88650b..c833b02 100644 (file)
@@ -70,7 +70,6 @@ $specialPageAliases = array(
        'Newimages'                 => array( 'ܠܦܦ̈ܐ_ܚܕ̈ܬܐ', 'ܨܘܪ̈ܬܐ_ܚܕ̈ܬܬܐ' ),
        'Newpages'                  => array( 'ܦܐܬܬ̈ܐ_ܚܕ̈ܬܬܐ' ),
        'PermanentLink'             => array( 'ܐܣܘܪܐ_ܦܝܘܫܐ' ),
-       'Popularpages'              => array( 'ܦܐܬܬ̈ܐ_ܡܫܡܗ̈ܐ' ),
        'Preferences'               => array( 'ܨܒܝܢܝܘ̈ܬܐ' ),
        'Protectedpages'            => array( 'ܦܐܬܬ̈ܐ_ܢܛܝܪ̈ܬܐ' ),
        'Protectedtitles'           => array( 'ܟܘܢܝ̈ܐ_ܢܛܝܪ̈ܐ' ),
index 4d0b3db..e2078ad 100644 (file)
@@ -102,7 +102,6 @@ $specialPageAliases = array(
        'PageLanguage'              => array( 'لغه_الصفحه' ),
        'PasswordReset'             => array( 'ضبط_الباسوورد' ),
        'PermanentLink'             => array( 'وصله_دايمه' ),
-       'Popularpages'              => array( 'صفح_مشهوره' ),
        'Preferences'               => array( 'تفضيلات' ),
        'Prefixindex'               => array( 'فهرس_بدايه' ),
        'Protectedpages'            => array( 'صفح_محميه' ),
index f9f1b5b..e173661 100644 (file)
@@ -106,7 +106,6 @@ $specialPageAliases = array(
        'Newpages'                  => array( 'পৰৱৰ্তী_পৃষ্ঠা' ),
        'PasswordReset'             => array( 'গুপ্তশব্দ_ঘূৰাই_আনক' ),
        'PermanentLink'             => array( 'স্থায়ী_সংযোগ' ),
-       'Popularpages'              => array( 'জনপ্ৰিয়_পৃষ্ঠাসমূহ' ),
        'Preferences'               => array( 'পচন্দ' ),
        'Protectedpages'            => array( 'সুৰক্ষিত_পৃষ্ঠাসমূহ' ),
        'Protectedtitles'           => array( 'সুৰক্ষিত_শিৰোনামসমূহ' ),
index ea64271..34b2ba0 100644 (file)
@@ -72,7 +72,6 @@ $specialPageAliases = array(
        'Newpages'                  => array( 'ЦІиял_гьумерал' ),
        'PasswordReset'             => array( 'Сброс_пароля' ),
        'PermanentLink'             => array( 'Даимаб_ссылка' ),
-       'Popularpages'              => array( 'Машгьурал_гьумерал' ),
        'Preferences'               => array( 'Рекъезабиял' ),
        'Prefixindex'               => array( 'ЦІаразул_бетІералде_бихьизаби' ),
        'Protectedpages'            => array( 'ЦІунарал_гьумерал' ),
index 0892ec9..0c8b1e6 100644 (file)
@@ -62,7 +62,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'JinafaPrilara' ),
        'Newimages'                 => array( 'WarzafEwaveem' ),
        'Newpages'                  => array( 'WarzafBueem' ),
-       'Popularpages'              => array( 'LorupenBueem' ),
        'Preferences'               => array( 'Lodamaceem' ),
        'Protectedpages'            => array( 'NendanBueem' ),
        'Protectedtitles'           => array( 'NendanVergumvelteem' ),
index aaf6c2b..50ed217 100644 (file)
@@ -91,7 +91,6 @@ $specialPageAliases = array(
        'Newpages'                  => array( 'Яңы_биттәр' ),
        'PasswordReset'             => array( 'Паролде_яңыртыу' ),
        'PermanentLink'             => array( 'Даими_һылтанма' ),
-       'Popularpages'              => array( 'Популяр_биттәр' ),
        'Preferences'               => array( 'Көйләүҙәр' ),
        'Protectedpages'            => array( 'Һаҡланған_биттәр' ),
        'Protectedtitles'           => array( 'Һаҡланған_исемдәр' ),
index f9ee1be..b32067c 100644 (file)
@@ -97,7 +97,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'منی گپ' ),
        'Newimages'                 => array( 'نوکین عکسان' ),
        'Newpages'                  => array( 'نوکین صفحات' ),
-       'Popularpages'              => array( 'مردمی صفحات' ),
        'Preferences'               => array( 'ترجیحات' ),
        'Prefixindex'               => array( 'ایندکس پیشوند' ),
        'Protectedpages'            => array( 'صفحات محافظتی' ),
index 5a2a7a0..2309d79 100644 (file)
@@ -72,7 +72,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'Мае_размовы' ),
        'Newimages'                 => array( 'Новыя_файлы' ),
        'Newpages'                  => array( 'Новыя_старонкі' ),
-       'Popularpages'              => array( 'Папулярныя_старонкі' ),
        'Protectedpages'            => array( 'Абароненыя_старонкі' ),
        'Protectedtitles'           => array( 'Забароненыя_старонкі' ),
        'Randompage'                => array( 'Выпадковая_старонка' ),
index 2425817..322255f 100644 (file)
@@ -85,7 +85,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'Моята_беседа' ),
        'Newimages'                 => array( 'Нови_файлове' ),
        'Newpages'                  => array( 'Нови_страници' ),
-       'Popularpages'              => array( 'Най-посещавани_страници' ),
        'Preferences'               => array( 'Настройки' ),
        'Prefixindex'               => array( 'Всички_страници_с_представка', 'Представка' ),
        'Protectedpages'            => array( 'Защитени_страници' ),
index 0c9fa26..45a13bf 100644 (file)
@@ -106,7 +106,6 @@ $specialPageAliases = array(
        'PageLanguage'              => array( 'وّرق_ئی_زبان' ),
        'PasswordReset'             => array( 'چیهرگالی_نادینتین' ),
        'PermanentLink'             => array( 'دایمین_لینک' ),
-       'Popularpages'              => array( 'مشهورین_وّرق_ئان' ),
        'Preferences'               => array( 'تنزیمات' ),
        'Prefixindex'               => array( 'دیمۆندین_نمایگ' ),
        'Protectedpages'            => array( 'قُلپ_بوته_ئین_ورق_ئان' ),
index 07246a4..4cd2022 100644 (file)
@@ -99,7 +99,6 @@ $specialPageAliases = array(
        'Newimages'                 => array( 'Barakas_hanyar' ),
        'Newpages'                  => array( 'Tungkaran_hanyar' ),
        'PermanentLink'             => array( 'Tautan_tatap' ),
-       'Popularpages'              => array( 'Tungkaran_popular' ),
        'Preferences'               => array( 'Kakatujuan' ),
        'Protectedpages'            => array( 'Tungkaran_nang_dilindungi' ),
        'Protectedtitles'           => array( 'Judul_nang_dilindungi' ),
index 66cef9e..040beda 100644 (file)
@@ -71,7 +71,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'MaC\'haozeadennoù' ),
        'Newimages'                 => array( 'RestroùNevez', 'SkeudennoùNevez' ),
        'Newpages'                  => array( 'PajennoùNevez' ),
-       'Popularpages'              => array( 'PajennoùPoblek' ),
        'Preferences'               => array( 'Penndibaboù' ),
        'Protectedpages'            => array( 'PajennoùGwarezet' ),
        'Protectedtitles'           => array( 'TitloùGwarezet' ),
index e553b7f..a5f33fe 100644 (file)
@@ -90,7 +90,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'MojRazgovor' ),
        'Newimages'                 => array( 'Nove_datoteke', 'Nove_slike' ),
        'Newpages'                  => array( 'NoveStranice' ),
-       'Popularpages'              => array( 'PopularneStranice' ),
        'Preferences'               => array( 'Postavke' ),
        'Prefixindex'               => array( 'IndeksPrefiksa' ),
        'Protectedpages'            => array( 'ZasticeneStranice' ),
index f9a58ca..8ae5e4c 100644 (file)
@@ -60,7 +60,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'Минии_хэлэлсэл' ),
        'Myuploads'                 => array( 'Минии_ашаалһан_зүйл' ),
        'Newpages'                  => array( 'Шэнэ_хуудаһан' ),
-       'Popularpages'              => array( 'Оло_уншагдаһан_хуудаһан' ),
        'Protectedpages'            => array( 'Хамгаалалтатай_хуудаһан' ),
        'Protectedtitles'           => array( 'Хамгаалалтатай_гаршаг' ),
        'Recentchanges'             => array( 'Сайтдахи_хубилалтанууд' ),
index 29c9a16..9169f97 100644 (file)
@@ -82,7 +82,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'Discussió_personal' ),
        'Newimages'                 => array( 'Imatges_noves', 'Fitxers_nous' ),
        'Newpages'                  => array( 'Pàgines_noves' ),
-       'Popularpages'              => array( 'Pàgines_populars' ),
        'Preferences'               => array( 'Preferències' ),
        'Prefixindex'               => array( 'Cerca_per_prefix' ),
        'Protectedpages'            => array( 'Pàgines_protegides' ),
index 1bc4385..f175246 100644 (file)
@@ -88,7 +88,6 @@ $specialPageAliases = array(
        'Newpages'                  => array( '新其頁面' ),
        'PasswordReset'             => array( '密碼重置' ),
        'PermanentLink'             => array( '永久鏈接' ),
-       'Popularpages'              => array( '受歡迎其頁面' ),
        'Preferences'               => array( '喜好' ),
        'Prefixindex'               => array( '前綴索引' ),
        'Protectedpages'            => array( '受保護其頁面' ),
index 514ec17..f146a86 100644 (file)
@@ -126,7 +126,6 @@ $specialPageAliases = array(
        'Newpages'                  => array( 'Керла_агӀонаш' ),
        'PasswordReset'             => array( 'Пароль_кхоссар' ),
        'PermanentLink'             => array( 'Гуттарлера_хьажорг' ),
-       'Popularpages'              => array( 'ГӀараяьлла_агӀонаш' ),
        'Preferences'               => array( 'ГӀирсаш' ),
        'Prefixindex'               => array( 'Хьалха_агӀонийн_цӀераш_хӀотто_еза' ),
        'Protectedpages'            => array( 'ГӀаролла_дина_агӀонаш' ),
index 027161f..cdde53a 100644 (file)
@@ -81,7 +81,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'لێدوانەکەم' ),
        'Newimages'                 => array( 'پەڕگە_نوێکان' ),
        'Newpages'                  => array( 'پەڕە_نوێکان' ),
-       'Popularpages'              => array( 'پەڕە_ناودارەکان' ),
        'Preferences'               => array( 'ھەڵبژاردەکان' ),
        'Protectedpages'            => array( 'پەڕە_پارێزراوەکان' ),
        'Protectedtitles'           => array( 'بابەتە_پارێزراوەکان' ),
index b796aca..609629f 100644 (file)
@@ -98,7 +98,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'Moje_diskuse' ),
        'Newimages'                 => array( 'Nové_obrázky', 'Galerie_nových_obrázků', 'Nove_obrazky' ),
        'Newpages'                  => array( 'Nové_stránky', 'Nove_stranky', 'Nejnovější_stránky', 'Nejnovejsi_stranky' ),
-       'Popularpages'              => array( 'Nejnavštěvovanější_stránky', 'Nejnavstevovanejsi_stranky' ),
        'Preferences'               => array( 'Nastavení', 'Nastaveni' ),
        'Protectedpages'            => array( 'Zamčené_stránky', 'Zamcene_stranky' ),
        'Protectedtitles'           => array( 'Zamčené_názvy', 'Zamcene_nazvy', 'Stránky_které_nelze_vytvořit' ),
index 075369e..d2096e9 100644 (file)
@@ -87,7 +87,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'Min_diskussionsside' ),
        'Newimages'                 => array( 'Nye_filer' ),
        'Newpages'                  => array( 'Nye_sider' ),
-       'Popularpages'              => array( 'Populære_sider' ),
        'Preferences'               => array( 'Indstillinger' ),
        'Prefixindex'               => array( 'Præfiksindeks' ),
        'Protectedpages'            => array( 'Beskyttede_sider' ),
index c9994e2..b5c1475 100644 (file)
@@ -105,7 +105,6 @@ $specialPageAliases = array(
        'PageLanguage'              => array( 'Seitensprache' ),
        'PasswordReset'             => array( 'Passwort_neu_vergeben' ),
        'PermanentLink'             => array( 'Permanenter_Link', 'Permalink' ),
-       'Popularpages'              => array( 'Beliebteste_Seiten' ),
        'Preferences'               => array( 'Einstellungen' ),
        'Prefixindex'               => array( 'Präfixindex' ),
        'Protectedpages'            => array( 'Geschützte_Seiten' ),
index 445aba0..6adf6f1 100644 (file)
@@ -118,7 +118,6 @@ $specialPageAliases = array(
        'PageLanguage'              => array( 'Zıwanê_Pele' ),
        'PasswordReset'             => array( 'ParolaPeysereştış' ),
        'PermanentLink'             => array( 'GıreyoDaimi' ),
-       'Popularpages'              => array( 'PelêPopuleri' ),
        'Preferences'               => array( 'Tercihi' ),
        'Prefixindex'               => array( 'VerbendZerrek' ),
        'Protectedpages'            => array( 'PelêKeŞevekiyayiyé' ),
index f291a1d..06b90f3 100644 (file)
@@ -89,7 +89,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'Mója_diskusija' ),
        'Newimages'                 => array( 'Nowe_dataje' ),
        'Newpages'                  => array( 'Nowe_boki' ),
-       'Popularpages'              => array( 'Woblubowane_boki' ),
        'Preferences'               => array( 'Nastajenja' ),
        'Prefixindex'               => array( 'Indeks_prefiksow' ),
        'Protectedpages'            => array( 'Šćitane_boki' ),
index 0334344..5f239fb 100644 (file)
@@ -117,7 +117,6 @@ $specialPageAliases = array(
        'Myuploads'                 => array( 'ΤαΑρχείαΜου', 'ΤαΑνεβάσματάΜου', 'ΟιΕπιφορτώσειςΜου' ),
        'Newimages'                 => array( 'ΝέαΑρχεία', 'ΝέεςΕικόνες' ),
        'Newpages'                  => array( 'ΝέεςΣελίδες' ),
-       'Popularpages'              => array( 'ΔημοφιλείςΣελίδες' ),
        'Preferences'               => array( 'Προτιμήσεις' ),
        'Prefixindex'               => array( 'ΕυρετήριοΠροθεμάτων' ),
        'Protectedpages'            => array( 'ΠροστατευμένεςΣελίδες' ),
index 57a79bc..4e6f12b 100644 (file)
@@ -644,4 +644,3 @@ $preloadedMessages = array(
        'whatlinkshere',
        'word-separator',
 );
-
index e31710b..958fa6f 100644 (file)
@@ -109,7 +109,6 @@ $specialPageAliases = array(
        'Newpages'                  => array( 'Novaj_paĝoj' ),
        'PasswordReset'             => array( 'Ŝanĝo_de_pasvorto' ),
        'PermanentLink'             => array( 'Daŭra_ligilo' ),
-       'Popularpages'              => array( 'Popularaj_paĝoj' ),
        'Preferences'               => array( 'Preferoj' ),
        'Prefixindex'               => array( 'Indekso_de_prefiksoj' ),
        'Protectedpages'            => array( 'Protektitaj_paĝoj' ),
index 52e363c..dfd97f5 100644 (file)
@@ -99,7 +99,6 @@ $specialPageAliases = array(
        'Newpages'                  => array( 'PáginasNuevas', 'Páginas_nuevas' ),
        'PasswordReset'             => array( 'RestablecerContraseña' ),
        'PermanentLink'             => array( 'EnlacePermanente' ),
-       'Popularpages'              => array( 'PáginasMásVisitadas', 'PáginasPopulares', 'Páginas_más_visitadas' ),
        'Preferences'               => array( 'Preferencias' ),
        'Prefixindex'               => array( 'PáginasPorPrefijo', 'Páginas_por_prefijo' ),
        'Protectedpages'            => array( 'PáginasProtegidas', 'Páginas_protegidas' ),
index 1aaabd6..b8ef360 100644 (file)
@@ -94,7 +94,6 @@ $specialPageAliases = array(
        'PagesWithProp'             => array( 'Atribuudiga_leheküljed' ),
        'PasswordReset'             => array( 'Parooli_lähtestamine' ),
        'PermanentLink'             => array( 'Püsilink' ),
-       'Popularpages'              => array( 'Loetumad_leheküljed' ),
        'Preferences'               => array( 'Eelistused' ),
        'Prefixindex'               => array( 'Kõik_pealkirjad_eesliitega' ),
        'Protectedpages'            => array( 'Kaitstud_leheküljed' ),
index dd1cc55..fa359fc 100644 (file)
@@ -105,7 +105,6 @@ $specialPageAliases = array(
        'PageLanguage'              => array( 'زبان_صفحه' ),
        'PasswordReset'             => array( 'بازنشاندن_گذرواژه' ),
        'PermanentLink'             => array( 'پیوند_دائمی' ),
-       'Popularpages'              => array( 'صفحه‌های_محبوب' ),
        'Preferences'               => array( 'ترجیحات' ),
        'Prefixindex'               => array( 'نمایه_پیشوندی' ),
        'Protectedpages'            => array( 'صفحه‌های_محافظت‌شده' ),
index 1219911..fd5db32 100644 (file)
@@ -98,7 +98,6 @@ $specialPageAliases = array(
        'PageLanguage'              => array( 'Sivun_kieli' ),
        'PasswordReset'             => array( 'Unohtuneen_salasanan_vaihto' ),
        'PermanentLink'             => array( 'Ikilinkki' ),
-       'Popularpages'              => array( 'Suositut_sivut' ),
        'Preferences'               => array( 'Asetukset' ),
        'Prefixindex'               => array( 'Etuliiteluettelo' ),
        'Protectedpages'            => array( 'Suojatut_sivut' ),
index b9e8b54..b64922e 100644 (file)
@@ -100,7 +100,6 @@ $specialPageAliases = array(
        'PagesWithProp'             => array( 'Pages_avec_la_propriété' ),
        'PasswordReset'             => array( 'Réinitialisation_du_mot_de_passe', 'RéinitialisationDuMotDePasse' ),
        'PermanentLink'             => array( 'LienPermanent', 'Lien_permanent' ),
-       'Popularpages'              => array( 'Pages_les_plus_visitées', 'Pages_les_plus_visitees', 'Pageslesplusvisitées', 'Pageslesplusvisitees' ),
        'Preferences'               => array( 'Préférences' ),
        'Prefixindex'               => array( 'Index', 'Préfixes', 'Prefixes' ),
        'Protectedpages'            => array( 'Pages_protégées', 'PagesProtégées', 'Pages_protegees', 'PagesProtegees' ),
index 51a0e13..6c25ae9 100644 (file)
@@ -102,7 +102,6 @@ $specialPageAliases = array(
        'Newimages'                 => array( 'Novéls_fichiérs', 'NovélsFichiérs', 'Émâges_novèles', 'ÉmâgesNovèles' ),
        'Newpages'                  => array( 'Pâges_novèles', 'PâgesNovèles' ),
        'PermanentLink'             => array( 'Lim_fixo', 'LimFixo' ),
-       'Popularpages'              => array( 'Pâges_les_ples_consultâs', 'PâgesLesPlesConsultâs' ),
        'Preferences'               => array( 'Prèferences' ),
        'Prefixindex'               => array( 'Endèxe_des_prèfixos', 'EndèxeDesPrèfixos' ),
        'Protectedpages'            => array( 'Pâges_protègiês', 'PâgesProtègiês' ),
index 52fdee8..03ac8e5 100644 (file)
@@ -64,7 +64,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'MêsDiscussions' ),
        'Newimages'                 => array( 'GnovisFiguris' ),
        'Newpages'                  => array( 'GnovisPagjinis' ),
-       'Popularpages'              => array( 'PagjinisPopolârs' ),
        'Preferences'               => array( 'Preferencis' ),
        'Prefixindex'               => array( 'Prefìs' ),
        'Protectedpages'            => array( 'PagjinisProtezudis' ),
index e02baf0..473e212 100644 (file)
@@ -94,7 +94,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'Myn oerlis' ),
        'Newimages'                 => array( 'Nije ôfbylden', 'Nije ôfbyldings', 'Nije ôfbyldingen', 'List mei nije ôfbylden', 'Nije Ofbylden' ),
        'Newpages'                  => array( 'Nije siden' ),
-       'Popularpages'              => array( 'Populêre siden', 'Grage siden' ),
        'Preferences'               => array( 'Ynstellings', 'Ynsteld' ),
        'Prefixindex'               => array( 'Alle siden neffens foarheaksel' ),
        'Protectedpages'            => array( 'Befeilige siden', 'Skoattele siden' ),
index 390e658..059b8a0 100644 (file)
@@ -66,7 +66,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'SözleşmäkSayfam', 'SözleşmäkYapraım' ),
        'Newimages'                 => array( 'EniDosyeler', 'EniPätretler' ),
        'Newpages'                  => array( 'EniYazılar', 'EniSayfalar', 'EniYapraklar' ),
-       'Popularpages'              => array( 'EnAnılmışSayfalar', 'EnAnılmışYazılar' ),
        'Preferences'               => array( 'Seçimner' ),
        'Prefixindex'               => array( 'Prefiksİndeksi' ),
        'Randompage'                => array( 'Razgele', 'RazgeleYazı', 'RazgeleSayfa', 'RazgeleYaprak' ),
index 8ab5bcc..e00988c 100644 (file)
@@ -113,7 +113,6 @@ $specialPageAliases = array(
        'PagesWithProp'             => array( 'Páxinas_con_propiedades' ),
        'PasswordReset'             => array( 'Restablecer_o_contrasinal', 'Restablecer_contrasinal' ),
        'PermanentLink'             => array( 'Ligazón_permanente' ),
-       'Popularpages'              => array( 'Páxinas_populares' ),
        'Preferences'               => array( 'Preferencias' ),
        'Prefixindex'               => array( 'Índice_de_prefixos' ),
        'Protectedpages'            => array( 'Páxinas_protexidas' ),
index d165495..52833cb 100644 (file)
@@ -68,7 +68,6 @@ $specialPageAliases = array(
        'Newpages'                  => array( 'Neji_Syte' ),
        'PasswordReset'             => array( 'Passwort_zruggsetze' ),
        'PermanentLink'             => array( 'Permalink' ),
-       'Popularpages'              => array( 'Beliebteschti_Syte' ),
        'Preferences'               => array( 'Ystellige' ),
        'Prefixindex'               => array( 'Vorsilbeverzeichnis' ),
        'Protectedpages'            => array( 'Gschitzti_Syte' ),
index 3fc9f6b..937b50d 100644 (file)
@@ -74,7 +74,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'મારીચર્ચા' ),
        'Newimages'                 => array( 'નવીફાઇલો', 'નવાંચિત્રો' ),
        'Newpages'                  => array( 'નવાપાનાં' ),
-       'Popularpages'              => array( 'લોકપ્રિયપાનાં' ),
        'Preferences'               => array( 'પસંદ' ),
        'Prefixindex'               => array( 'ઉપસર્ગ' ),
        'Protectedpages'            => array( 'સંરક્ષિતપાનાં' ),
index 3d7fc43..e806118 100644 (file)
@@ -108,7 +108,6 @@ $specialPageAliases = array(
        'PageLanguage'              => array( 'שפת_הדף' ),
        'PasswordReset'             => array( 'איפוס_סיסמה' ),
        'PermanentLink'             => array( 'קישור_קבוע' ),
-       'Popularpages'              => array( 'הדפים_הנצפים_ביותר', 'דפים_פופולריים' ),
        'Preferences'               => array( 'העדפות', 'ההעדפות_שלי' ),
        'Prefixindex'               => array( 'דפים_המתחילים_ב' ),
        'Protectedpages'            => array( 'דפים_מוגנים' ),
index 65077c1..6452b00 100644 (file)
@@ -88,7 +88,6 @@ $specialPageAliases = array(
        'Myuploads'                 => array( 'Moje_datoteke' ),
        'Newimages'                 => array( 'Nove_datoteke', 'Nove_slike' ),
        'Newpages'                  => array( 'Nove_stranice' ),
-       'Popularpages'              => array( 'Popularne_stranice' ),
        'Preferences'               => array( 'Postavke' ),
        'Prefixindex'               => array( 'Prefiks_indeks', 'Stranice_po_prefiksu' ),
        'Protectedpages'            => array( 'Zaštićene_stranice' ),
index fb8fdb3..e06512b 100644 (file)
@@ -106,7 +106,6 @@ $specialPageAliases = array(
        'Newimages'                 => array( 'Nowe_dataje' ),
        'Newpages'                  => array( 'Nowe_strony' ),
        'PermanentLink'             => array( 'Trajny_wotkaz' ),
-       'Popularpages'              => array( 'Najwoblubowaniše_strony' ),
        'Preferences'               => array( 'Nastajenja' ),
        'Prefixindex'               => array( 'Prefiksindeks' ),
        'Protectedpages'            => array( 'Škitane_strony' ),
index 18e4a2d..d345fab 100644 (file)
@@ -94,7 +94,6 @@ $specialPageAliases = array(
        'Newpages'                  => array( 'PajNouvo' ),
        'PasswordReset'             => array( 'ResètMopas2' ),
        'PermanentLink'             => array( 'LyenPouToutTan' ),
-       'Popularpages'              => array( 'PajPopilè' ),
        'Preferences'               => array( 'Preferans' ),
        'Prefixindex'               => array( 'EndèksPrefiks' ),
        'Protectedpages'            => array( 'PajPwoteje' ),
index 0019a4b..3309314 100644 (file)
@@ -98,7 +98,6 @@ $specialPageAliases = array(
        'Newimages'                 => array( 'Új_fájlok', 'Új_képek', 'Új_képek_galériája' ),
        'Newpages'                  => array( 'Új_lapok' ),
        'PasswordReset'             => array( 'Jelszó_helyreállítása' ),
-       'Popularpages'              => array( 'Népszerű_lapok', 'Népszerű_oldalak' ),
        'Preferences'               => array( 'Beállításaim' ),
        'Prefixindex'               => array( 'Keresés_előtag_szerint' ),
        'Protectedpages'            => array( 'Védett_lapok' ),
index ea23ef0..1b95c78 100644 (file)
@@ -223,7 +223,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'Իմքննարկումները' ),
        'Newimages'                 => array( 'Նորպատկերներ' ),
        'Newpages'                  => array( 'Նորէջերը' ),
-       'Popularpages'              => array( 'Հանրաճանաչէջերը' ),
        'Preferences'               => array( 'Նախընտրությունները' ),
        'Prefixindex'               => array( 'Որոնումնախածանցով' ),
        'Randompage'                => array( 'Պատահականէջ' ),
index 0d4fd18..41f9fdf 100644 (file)
@@ -93,7 +93,6 @@ $specialPageAliases = array(
        'Newpages'                  => array( 'Paginas_nove', 'Nove_paginas' ),
        'PasswordReset'             => array( 'Reinitialisar_contrasigno' ),
        'PermanentLink'             => array( 'Ligamine_permanente' ),
-       'Popularpages'              => array( 'Paginas_popular' ),
        'Preferences'               => array( 'Preferentias' ),
        'Prefixindex'               => array( 'Indice_de_prefixos' ),
        'Protectedpages'            => array( 'Paginas_protegite' ),
index 3510931..1fcfa7e 100644 (file)
@@ -252,7 +252,6 @@ $specialPageAliases = array(
        'Newpages'                  => array( 'Halaman_baru', 'HalamanBaru' ),
        'PasswordReset'             => array( 'Reset_sandi', 'ResetSandi' ),
        'PermanentLink'             => array( 'Pranala_permanen' ),
-       'Popularpages'              => array( 'Halaman_populer', 'HalamanPopuler' ),
        'Preferences'               => array( 'Preferensi' ),
        'Prefixindex'               => array( 'Indeks_awalan', 'IndeksAwalan' ),
        'Protectedpages'            => array( 'Halaman_yang_dilindungi', 'HalamanDilindungi' ),
index 748f82b..699da88 100644 (file)
@@ -81,7 +81,6 @@ $specialPageAliases = array(
        'Newpages'                  => array( 'Nov_págines' ),
        'PasswordReset'             => array( 'Recomensar_parol-clave' ),
        'PermanentLink'             => array( 'Catenun_permanen' ),
-       'Popularpages'              => array( 'Págines_populari' ),
        'Preferences'               => array( 'Preferenties' ),
        'Prefixindex'               => array( 'Index_de_prefixe' ),
        'Protectedpages'            => array( 'Págines_gardat' ),
index effce71..7500a23 100644 (file)
@@ -169,7 +169,6 @@ $specialPageAliases = array(
        'Newimages'                 => array( 'Nýjar_myndir' ),
        'Newpages'                  => array( 'Nýjustu_greinar' ),
        'PasswordReset'             => array( 'Endursetja_lykilorð' ),
-       'Popularpages'              => array( 'Vinsælar_síður' ),
        'Preferences'               => array( 'Stillingar' ),
        'Prefixindex'               => array( 'Forskeyti' ),
        'Protectedpages'            => array( 'Verndaðar_síður' ),
index a369d1d..c072a42 100644 (file)
@@ -111,7 +111,6 @@ $specialPageAliases = array(
        'PagesWithProp'             => array( 'PagineConProprietà' ),
        'PasswordReset'             => array( 'ReimpostaPassword' ),
        'PermanentLink'             => array( 'LinkPermanente' ),
-       'Popularpages'              => array( 'PaginePiùVisitate' ),
        'Preferences'               => array( 'Preferenze' ),
        'Prefixindex'               => array( 'Prefissi' ),
        'Protectedpages'            => array( 'PagineProtette' ),
index caca23d..ecf64ab 100644 (file)
@@ -125,7 +125,6 @@ $specialPageAliases = array(
        'PageLanguage'              => array( 'ページ言語' ),
        'PasswordReset'             => array( 'パスワード再設定', 'パスワードの再設定', 'パスワードのリセット', 'パスワードリセット' ),
        'PermanentLink'             => array( '固定リンク', 'パーマリンク' ),
-       'Popularpages'              => array( '人気ページ' ),
        'Preferences'               => array( '個人設定', 'オプション' ),
        'Prefixindex'               => array( '前方一致ページ一覧', '始点指定ページ一覧' ),
        'Protectedpages'            => array( '保護されているページ' ),
index 598f101..01a2b66 100644 (file)
@@ -79,7 +79,6 @@ $specialPageAliases = array(
        'Myuploads'                 => array( 'ჩემი_ატვირთვები' ),
        'Newimages'                 => array( 'ახალი_ფაილები' ),
        'Newpages'                  => array( 'ახალი_გვერდები' ),
-       'Popularpages'              => array( 'პოპგვერდები' ),
        'Preferences'               => array( 'კონფიგურაცია' ),
        'Protectedpages'            => array( 'დაცული_გვერდები' ),
        'Protectedtitles'           => array( 'დაცული_სათაურები' ),
index 44b7224..af1be4f 100644 (file)
@@ -70,7 +70,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'Menin\' sa\'wbetim' ),
        'Newimages'                 => array( 'Taza su\'wretler' ),
        'Newpages'                  => array( 'Taza betler' ),
-       'Popularpages'              => array( 'Ko\'p ko\'rilgen betler' ),
        'Preferences'               => array( 'Sazlawlar' ),
        'Protectedpages'            => array( 'Qorg\'alg\'an betler' ),
        'Randompage'                => array( 'Qa\'legen', 'Qa\'legen bet' ),
index bcc8328..b11e03e 100644 (file)
@@ -6,6 +6,7 @@
  * @ingroup Language
  * @file
  *
+ * @author Rachitrali
  */
 
 $fallback = 'ur';
@@ -14,7 +15,19 @@ $rtl = true;
 $namespaceNames = array(
        NS_MEDIA            => 'میڈیا',
        NS_SPECIAL          => 'خاص',
-       NS_TALK             => 'مشقولگی',
-       NS_USER             => 'ممبار/یوزر',
+       NS_TALK             => 'تبادلۂ_خیال',
+       NS_USER             => 'صارف',
+       NS_USER_TALK        => 'تبادلۂ_خیال_صارف',
+       NS_PROJECT_TALK     => 'تبادلۂ_خیال_$1',
+       NS_FILE             => 'فائل',
+       NS_FILE_TALK        => 'تبادلۂ_خیال_فائل',
+       NS_MEDIAWIKI        => 'میڈیاویکی',
+       NS_MEDIAWIKI_TALK   => 'تبادلۂ_خیال_میڈیاویکی',
+       NS_TEMPLATE         => 'سانچہ',
+       NS_TEMPLATE_TALK    => 'تبادلۂ_خیال_سانچہ',
+       NS_HELP             => 'مدد',
+       NS_HELP_TALK        => 'تبادلۂ_خیال_مدد',
+       NS_CATEGORY         => 'زمرہ',
+       NS_CATEGORY_TALK    => 'تبادلۂ_خیال_زمرہ',
 );
 
index 8749ccb..516da1d 100644 (file)
@@ -348,7 +348,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'تالقىلاۋىم' ),
        'Newimages'                 => array( 'جاڭا_سۋرەتتەر' ),
        'Newpages'                  => array( 'جاڭا_بەتتەر' ),
-       'Popularpages'              => array( 'ەڭ_كوپ_قارالعان_بەتتەر', 'ايگىلى_بەتتەر' ),
        'Preferences'               => array( 'باپتالىمدار', 'باپتاۋ' ),
        'Prefixindex'               => array( 'ٴباستاۋىش_ٴتىزىمى' ),
        'Protectedpages'            => array( 'قورعالعان_بەتتەر' ),
index 680c2ea..01aaab9 100644 (file)
@@ -322,7 +322,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'Талқылауым' ),
        'Newimages'                 => array( 'Жаңа_суреттер' ),
        'Newpages'                  => array( 'Жаңа_беттер' ),
-       'Popularpages'              => array( 'Ең_көп_қаралған_беттер', 'Әйгілі_беттер' ),
        'Preferences'               => array( 'Бапталымдар', 'Баптау' ),
        'Prefixindex'               => array( 'Бастауыш_тізімі' ),
        'Protectedpages'            => array( 'Қорғалған_беттер' ),
index b7f8c6f..7a9cbaa 100644 (file)
@@ -316,7 +316,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'Talqılawım' ),
        'Newimages'                 => array( 'Jaña_swretter' ),
        'Newpages'                  => array( 'Jaña_better' ),
-       'Popularpages'              => array( 'Eñ_köp_qaralğan_better', 'Äýgili_better' ),
        'Preferences'               => array( 'Baptalımdar', 'Baptaw' ),
        'Prefixindex'               => array( 'Bastawış_tizimi' ),
        'Protectedpages'            => array( 'Qorğalğan_better' ),
index 289e5c2..4c41209 100644 (file)
@@ -147,7 +147,6 @@ $specialPageAliases = array(
        'Newpages'                  => array( 'ទំព័រថ្មីៗ' ),
        'PasswordReset'             => array( 'កំណត់ពាក្យសំងាត់ឡើងវិញ' ),
        'PermanentLink'             => array( 'តំណភ្ជាប់អចិន្ត្រែយ៍' ),
-       'Popularpages'              => array( 'ទំព័រដែលមានប្រជាប្រិយ' ),
        'Preferences'               => array( 'ចំណង់ចំណូលចិត្ត' ),
        'Prefixindex'               => array( 'លិបិក្រមបុព្វបទ' ),
        'Protectedpages'            => array( 'ទំព័របានការពារ' ),
index d34e249..abe287a 100644 (file)
@@ -139,7 +139,6 @@ $specialPageAliases = array(
        'PageLanguage'              => array( '문서언어' ),
        'PasswordReset'             => array( '비밀번호재설정', '비밀번호초기화' ),
        'PermanentLink'             => array( '고유링크', '영구링크' ),
-       'Popularpages'              => array( '인기있는문서' ),
        'Preferences'               => array( '환경설정' ),
        'Prefixindex'               => array( '접두어찾기' ),
        'Protectedpages'            => array( '보호된문서' ),
index 6b62160..659f97f 100644 (file)
@@ -87,7 +87,6 @@ $specialPageAliases = array(
        'Newpages'                  => array( 'Джангы_бетле' ),
        'PasswordReset'             => array( 'Паролну_ийиу' ),
        'PermanentLink'             => array( 'Дайым_джибериу' ),
-       'Popularpages'              => array( 'Популяр_бетле' ),
        'Preferences'               => array( 'Джарашдырыула' ),
        'Protectedpages'            => array( 'Джакъланнган_бетле' ),
        'Protectedtitles'           => array( 'Джакъланнган_атла' ),
index b1c9d3b..11c1a49 100644 (file)
@@ -158,7 +158,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'Ming_Klaafsigg', 'Klaaf' ),
        'Newimages'                 => array( 'Neu_Dateie' ),
        'Newpages'                  => array( 'Neu_Atikelle' ),
-       'Popularpages'              => array( 'Miehts_affjeroofe_Sigge' ),
        'Preferences'               => array( 'Ming_Enstellunge', 'Enstellunge' ),
        'Prefixindex'               => array( 'Sigge_met_Aanfang' ),
        'Protectedpages'            => array( 'Siggeschotz' ),
index b093b58..fc4dbd0 100644 (file)
@@ -118,7 +118,6 @@ $specialPageAliases = array(
        'Newpages'                  => array( 'FolennowNowyth' ),
        'PasswordReset'             => array( 'DassetyaGerTremena' ),
        'PermanentLink'             => array( 'KevrenFast' ),
-       'Popularpages'              => array( 'FolennowGerysDa' ),
        'Preferences'               => array( 'Dewisyansow' ),
        'Prefixindex'               => array( 'MenegvaRagerow' ),
        'Protectedpages'            => array( 'FolennowDifresys' ),
index 9f3d904..8ea1978 100644 (file)
@@ -120,7 +120,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'Disputatio_mea' ),
        'Newimages'                 => array( 'Fasciculi_novi', 'Imagines_novae' ),
        'Newpages'                  => array( 'Paginae_novae' ),
-       'Popularpages'              => array( 'Paginae_saepe_monstratae' ),
        'Preferences'               => array( 'Praeferentiae' ),
        'Prefixindex'               => array( 'Praefixa', 'Quaerere_per_praefixa' ),
        'Protectedpages'            => array( 'Paginae_protectae' ),
index cbeb69e..96d11ae 100644 (file)
@@ -129,7 +129,6 @@ $specialPageAliases = array(
        'Newpages'                  => array( 'HojasMuevas' ),
        'PasswordReset'             => array( 'Meter_á_zero_el_kóddiche' ),
        'PermanentLink'             => array( 'AtamientoPermanente' ),
-       'Popularpages'              => array( 'HojasMásVisitadas' ),
        'Preferences'               => array( 'Preferencias' ),
        'Prefixindex'               => array( 'Fijhrist_de_prefiksos' ),
        'Protectedpages'            => array( 'HojasGuardadas' ),
index 203788c..45cde70 100644 (file)
@@ -116,7 +116,6 @@ $specialPageAliases = array(
        'PageLanguage'              => array( 'Sprooch_vun_der_Säit' ),
        'PasswordReset'             => array( 'Zrécksetze_vum_Passwuert' ),
        'PermanentLink'             => array( 'Permanente_Link' ),
-       'Popularpages'              => array( 'Beléifst_Säiten' ),
        'Preferences'               => array( 'Astellungen' ),
        'Prefixindex'               => array( 'Indexsich' ),
        'Protectedpages'            => array( 'Protegéiert_Säiten' ),
index 4efd38c..babd32b 100644 (file)
@@ -100,7 +100,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'Mien_euverlèk' ),
        'Newimages'                 => array( 'Nuuj_plaetjes' ),
        'Newpages'                  => array( 'Nuuj_pagina\'s' ),
-       'Popularpages'              => array( 'Populair_pagina\'s' ),
        'Preferences'               => array( 'Veurkäöre' ),
        'Prefixindex'               => array( 'Alle_artikele' ),
        'Protectedpages'            => array( 'Beveiligde_pagina\'s' ),
index 8cc1a21..b5de509 100644 (file)
@@ -87,7 +87,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'Mæ Discûscioîn' ),
        'Newimages'                 => array( 'Immaggini reçenti' ),
        'Newpages'                  => array( 'Paggine ciû reçenti' ),
-       'Popularpages'              => array( 'Paggine ciû viscitæ' ),
        'Preferences'               => array( 'Preferense' ),
        'Prefixindex'               => array( 'Prefisci' ),
        'Protectedpages'            => array( 'Paggine protezûe' ),
index 94a7a39..8b706d7 100644 (file)
@@ -106,7 +106,6 @@ $specialPageAliases = array(
        'PageLanguage'              => array( 'بألگە_زوٙن' ),
        'PasswordReset'             => array( 'د_نۊ_زئنە_کئردئن_رازینە_گوڤاردئن' ),
        'PermanentLink'             => array( 'ھوم_پئیڤأند_دایئمی' ),
-       'Popularpages'              => array( 'بألگە_یا_حاستئنی' ),
        'Preferences'               => array( 'میزوٙنکاریا' ),
        'Prefixindex'               => array( 'دئماڤأن_سیاأ' ),
        'Protectedpages'            => array( 'بألگە_یا_پور_و_پیم_بیە' ),
index a2ce260..fdaeecd 100644 (file)
@@ -107,7 +107,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'Mano_aptarimas' ),
        'Newimages'                 => array( 'Nauji_paveikslėliai' ),
        'Newpages'                  => array( 'Naujausi_puslapiai' ),
-       'Popularpages'              => array( 'Populiarūs_puslapiai' ),
        'Preferences'               => array( 'Nustatymai' ),
        'Prefixindex'               => array( 'Prasidedantys' ),
        'Protectedpages'            => array( 'Užrakinti_puslapiai' ),
index 865ebb3..6408c4d 100644 (file)
@@ -38,8 +38,8 @@ $namespaceNames = array(
        NS_MEDIA            => 'Media',
        NS_SPECIAL          => 'Special',
        NS_TALK             => 'Diskusija',
-       NS_USER             => 'Lietotājs',
-       NS_USER_TALK        => 'Lietotāja_diskusija',
+       NS_USER             => 'Dalībnieks',
+       NS_USER_TALK        => 'Dalībnieka_diskusija',
        NS_PROJECT_TALK     => '{{grammar:ģenitīvs|$1}}_diskusija',
        NS_FILE             => 'Attēls',
        NS_FILE_TALK        => 'Attēla_diskusija',
@@ -52,5 +52,92 @@ $namespaceNames = array(
        NS_CATEGORY         => 'Kategorija',
        NS_CATEGORY_TALK    => 'Kategorijas_diskusija',
 );
+
+$namespaceAliases = array(
+       'Lietotājs' => NS_USER,
+       'Lietotāja_diskusija' => NS_USER_TALK,
+);
+
+$wgExtraGenderNamespaces = array(
+       NS_USER => array( 'male' => 'Dalībnieks', 'female' => 'Dalībniece' ),
+       NS_USER_TALK => array( 'male' => 'Dalībnieka_diskusija', 'female' => 'Dalībnieces_diskusija' )
+);
+
 $separatorTransformTable = array( ',' => "\xc2\xa0", '.' => ',' );
 
+/**
+ * A list of date format preference keys, which can be selected in user
+ * preferences. New preference keys can be added, provided they are supported
+ * by the language class's timeanddate(). Only the 5 keys listed below are
+ * supported by the wikitext converter (parser/DateFormatter.php).
+ *
+ * The special key "default" is an alias for either dmy or mdy depending on
+ * $wgAmericanDates
+ */
+$datePreferences = array(
+       'default',
+       'ydm',
+       'mdy',
+       'dmy',
+       'ymd',
+       'ISO 8601',
+);
+
+/**
+ * The date format to use for generated dates in the user interface.
+ * This may be one of the above date preferences, or the special value
+ * "dmy or mdy", which uses mdy if $wgAmericanDates is true, and dmy
+ * if $wgAmericanDates is false.
+ */
+$defaultDateFormat = 'ydm';
+
+/**
+ * Associative array mapping old numeric date formats, which may still be
+ * stored in user preferences, to the new string formats.
+ */
+$datePreferenceMigrationMap = array(
+       'default',
+       'mdy',
+       'dmy',
+       'ymd'
+);
+
+/**
+ * These are formats for dates generated by MediaWiki (as opposed to the wikitext
+ * DateFormatter). Documentation for the format string can be found in
+ * Language.php, search for sprintfDate.
+ *
+ * This array is automatically inherited by all subclasses. Individual keys can be
+ * overridden.
+ */
+$dateFormats = array(
+       'ydm time' => 'H.i',
+       'ydm date' => 'Y". gada" j. F',
+       'ydm monthonly' => 'Y". gada" F',
+       'ydm both' => 'Y". gada" j. F", plkst." H.i',
+       'ydm pretty' => 'j F',
+
+       'mdy time' => 'H:i',
+       'mdy date' => 'F j, Y',
+       'mdy monthonly' => 'F Y',
+       'mdy both' => 'H:i, F j, Y',
+       'mdy pretty' => 'F j',
+
+       'dmy time' => 'H:i',
+       'dmy date' => 'j F Y',
+       'dmy monthonly' => 'F Y',
+       'dmy both' => 'H:i, j F Y',
+       'dmy pretty' => 'j F',
+
+       'ymd time' => 'H:i',
+       'ymd date' => 'Y F j',
+       'ymd monthonly' => 'Y F',
+       'ymd both' => 'H:i, Y F j',
+       'ymd pretty' => 'F j',
+
+       'ISO 8601 time' => 'xnH:xni:xns',
+       'ISO 8601 date' => 'xnY-xnm-xnd',
+       'ISO 8601 monthonly' => 'xnY-xnm',
+       'ISO 8601 both' => 'xnY-xnm-xnd"T"xnH:xni:xns',
+       'ISO 8601 pretty' => 'xnm-xnd'
+);
index 274b724..874dfb3 100644 (file)
@@ -101,7 +101,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'МоньКорхнемазе' ),
        'Newimages'                 => array( 'ОдНяйфне' ),
        'Newpages'                  => array( 'ОдЛопат' ),
-       'Popularpages'              => array( 'СидестаЛопатне' ),
        'Preferences'               => array( 'Латцематне' ),
        'Prefixindex'               => array( 'ВалынгольксИндекс' ),
        'Protectedpages'            => array( 'АралафЛопат' ),
index 4c962ad..3e4bfd5 100644 (file)
@@ -187,7 +187,6 @@ $specialPageAliases = array(
        'PageLanguage'              => array( 'Fitenim-pejy', 'Fitenimpejy' ),
        'PasswordReset'             => array( 'Famerenan-tenimiafina', 'Famerenantenimiafina' ),
        'PermanentLink'             => array( 'Rohy_maharitra', 'RohyMaharitra' ),
-       'Popularpages'              => array( 'Pejy_be_mpitsidika_indrindra' ),
        'Preferences'               => array( 'Safidy' ),
        'Prefixindex'               => array( 'Index' ),
        'Protectedpages'            => array( 'Pejy_voaaro' ),
index 451e373..cbe9a8f 100644 (file)
@@ -116,7 +116,6 @@ $specialPageAliases = array(
        'PagesWithProp'             => array( 'LamanJoProperti', 'Laman_jo_properti' ),
        'PasswordReset'             => array( 'TukaSandi', 'Tuka_baliak_sandi' ),
        'PermanentLink'             => array( 'PautanPamanen', 'Pautan_pamanen' ),
-       'Popularpages'              => array( 'LamanPopuler', 'Laman_populer' ),
        'Preferences'               => array( 'Rujuakan' ),
        'Prefixindex'               => array( 'DaptaAwalan' ),
        'Protectedpages'            => array( 'LamanTalinduang', 'Laman_nan_dilinduang' ),
index 9f74d16..3c7b31d 100644 (file)
@@ -159,7 +159,6 @@ $specialPageAliases = array(
        'PageLanguage'              => array( 'ЈазикНаСтраницата' ),
        'PasswordReset'             => array( 'ПроменаНаЛозинка' ),
        'PermanentLink'             => array( 'ПостојанаВрска' ),
-       'Popularpages'              => array( 'ПопуларниСтраници' ),
        'Preferences'               => array( 'Нагодувања' ),
        'Prefixindex'               => array( 'ИндексНаПретставки' ),
        'Protectedpages'            => array( 'ЗаштитениСтраници' ),
index d23e47f..4de1f31 100644 (file)
@@ -148,7 +148,6 @@ $specialPageAliases = array(
        'PageLanguage'              => array( 'താളിന്റെഭാഷ' ),
        'PasswordReset'             => array( 'രഹസ്യവാക്ക്‌‌പുനക്രമീകരണം' ),
        'PermanentLink'             => array( 'സ്ഥിരംകണ്ണി' ),
-       'Popularpages'              => array( 'ജനപ്രിയതാളുകൾ' ),
        'Preferences'               => array( 'ക്രമീകരണങ്ങൾ' ),
        'Prefixindex'               => array( 'പൂർവ്വപദസൂചിക' ),
        'Protectedpages'            => array( 'സംരക്ഷിത_താളുകൾ' ),
index 5cdb35f..8c284e4 100644 (file)
@@ -128,7 +128,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'माझ्या_चर्चा' ),
        'Newimages'                 => array( 'नवीन_संचिका', 'नवीन_चित्रे' ),
        'Newpages'                  => array( 'नवीन_पाने' ),
-       'Popularpages'              => array( 'प्रसिद्ध_पाने' ),
        'Preferences'               => array( 'पसंती' ),
        'Prefixindex'               => array( 'उपसर्गसुची' ),
        'Protectedpages'            => array( 'सुरक्षित_पाने' ),
index fb972b0..69d5652 100644 (file)
@@ -170,7 +170,6 @@ $specialPageAliases = array(
        'PageLanguage'              => array( 'Bahasa_laman' ),
        'PasswordReset'             => array( 'Tetap_semula_kata_kunci' ),
        'PermanentLink'             => array( 'Pautan_kekal' ),
-       'Popularpages'              => array( 'Laman_popular' ),
        'Preferences'               => array( 'Keutamaan' ),
        'Prefixindex'               => array( 'Indeks_awalan' ),
        'Protectedpages'            => array( 'Laman_dilindungi' ),
index 2529cc9..a043864 100644 (file)
@@ -100,7 +100,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'DiskussjonijietTiegħi' ),
        'Newimages'                 => array( 'StampiĠodda', 'FajlsĠodda' ),
        'Newpages'                  => array( 'PaġniĠodda' ),
-       'Popularpages'              => array( 'PaġniPopolari' ),
        'Preferences'               => array( 'Preferenzi' ),
        'Prefixindex'               => array( 'IndiċiPrefiss' ),
        'Protectedpages'            => array( 'PaġniProtetti' ),
index ac3342b..fe3db11 100644 (file)
@@ -79,7 +79,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'МоньКортамом' ),
        'Newimages'                 => array( 'ОдАртовкст' ),
        'Newpages'                  => array( 'ОдЛопат' ),
-       'Popularpages'              => array( 'ЛисийСовийМартоЛопат' ),
        'Protectedpages'            => array( 'ВанстоньЛопат' ),
        'Protectedtitles'           => array( 'ВанстоньКонякст' ),
        'Randompage'                => array( 'КодамоПонгсьЛопа' ),
index 6f9cf1f..08d3e93 100644 (file)
@@ -160,7 +160,6 @@ $specialPageAliases = array(
        'PagesWithProp'             => array( 'Sider_med_egenskap' ),
        'PasswordReset'             => array( 'Nullstill_passord' ),
        'PermanentLink'             => array( 'Permanent_lenke' ),
-       'Popularpages'              => array( 'Populære_sider' ),
        'Preferences'               => array( 'Innstillinger' ),
        'Prefixindex'               => array( 'Prefiksindeks' ),
        'Protectedpages'            => array( 'Beskyttede_sider' ),
index f87d770..87f460f 100644 (file)
@@ -179,7 +179,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'Miene Diskuschoonssiet' ),
        'Newimages'                 => array( 'Nee Datein' ),
        'Newpages'                  => array( 'Nee Sieden' ),
-       'Popularpages'              => array( 'Veel besöchte Sieden' ),
        'Preferences'               => array( 'Instellungen' ),
        'Prefixindex'               => array( 'Sieden de anfangt mit' ),
        'Protectedpages'            => array( 'Schuulte Sieden' ),
index 5e82e82..7625fef 100644 (file)
@@ -278,7 +278,6 @@ $specialPageAliases = array(
        'PagesWithProp'             => array( 'Ziejen_mit_eigenschap' ),
        'PasswordReset'             => array( 'Wachtwoord_opniej_instellen' ),
        'PermanentLink'             => array( 'Vaste_verwiezing' ),
-       'Popularpages'              => array( 'Populaere_artikels' ),
        'Preferences'               => array( 'Veurkeuren' ),
        'Prefixindex'               => array( 'Veurvoegselindex' ),
        'Protectedpages'            => array( 'Beveiligden_ziejen' ),
index 7d7fa05..27af255 100644 (file)
@@ -335,7 +335,6 @@ $specialPageAliases = array(
        'PageLanguage'              => array( 'Paginataal' ),
        'PasswordReset'             => array( 'WachtwoordOpnieuwInstellen' ),
        'PermanentLink'             => array( 'PermanenteVerwijzing' ),
-       'Popularpages'              => array( 'PopulairePaginas', 'PopulairePagina’s', 'PopulairePagina\'s' ),
        'Preferences'               => array( 'Voorkeuren' ),
        'Prefixindex'               => array( 'Voorvoegselindex' ),
        'Protectedpages'            => array( 'BeveiligdePaginas', 'BeveiligdePagina\'s', 'BeschermdePaginas', 'BeschermdePagina’s', 'BeschermdePagina\'s' ),
index 606f720..4cdb3d7 100644 (file)
@@ -274,7 +274,6 @@ $specialPageAliases = array(
        'Newimages'                 => array( 'Nye_filer' ),
        'Newpages'                  => array( 'Nye_sider' ),
        'PermanentLink'             => array( 'Permanent_lenkje', 'Permanent_lenke' ),
-       'Popularpages'              => array( 'Populære_sider' ),
        'Preferences'               => array( 'Innstillingar' ),
        'Prefixindex'               => array( 'Prefiksindeks' ),
        'Protectedpages'            => array( 'Verna_sider' ),
index 64220d8..443cd90 100644 (file)
@@ -106,7 +106,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'Mas_discussions', 'Masdiscussions' ),
        'Newimages'                 => array( 'Imatges_novèls', 'ImatgesNovèls' ),
        'Newpages'                  => array( 'Paginas_novèlas' ),
-       'Popularpages'              => array( 'Paginas_mai_visitadas', 'Paginas_las_mai_visitadas', 'Paginasmaivisitadas' ),
        'Preferences'               => array( 'Preferéncias' ),
        'Prefixindex'               => array( 'Indèx' ),
        'Protectedpages'            => array( 'Paginas_protegidas' ),
index f3bea17..5df9cdf 100644 (file)
@@ -131,7 +131,6 @@ $specialPageAliases = array(
        'Newimages'                 => array( 'ନୂଆଫାଇଲ' ),
        'Newpages'                  => array( 'ନୂଆପୃଷ୍ଠା' ),
        'PermanentLink'             => array( 'ଚିରକାଳଲିଙ୍କ' ),
-       'Popularpages'              => array( 'ଜଣାଶୁଣାପୃଷ୍ଠା' ),
        'Preferences'               => array( 'ପସନ୍ଦ' ),
        'Prefixindex'               => array( 'ଆଗରେଯୋଡ଼ାହେବାଇଣ୍ଡେକ୍ସ' ),
        'Protectedpages'            => array( 'କିଳାଯାଇଥିବାପୃଷ୍ଠା' ),
index 3c65610..1790209 100644 (file)
@@ -109,7 +109,6 @@ $specialPageAliases = array(
        'Newpages'                  => array( 'НогФæрстæ' ),
        'PasswordReset'             => array( 'ПарольНогКæнын' ),
        'PermanentLink'             => array( 'УдгасÆрвитæн' ),
-       'Popularpages'              => array( 'АрæхФæрстæ' ),
        'Preferences'               => array( 'Уагæвæрдтæ' ),
        'Prefixindex'               => array( 'РазæфтуантыИндекс' ),
        'Protectedpages'            => array( 'ÆхгæдФæрстæ' ),
index 3e3090c..988e0b0 100644 (file)
@@ -128,7 +128,6 @@ $specialPageAliases = array(
        'PageLanguage'              => array( 'ਸਫ਼ੇ_ਦੀ_ਭਾਸ਼ਾ' ),
        'PasswordReset'             => array( 'ਪਾਸਵਰਡ_ਰੀਸੈੱਟ' ),
        'PermanentLink'             => array( 'ਪੱਕਾ_ਲਿੰਕ', 'ਪੱਕੀ_ਕੜੀ' ),
-       'Popularpages'              => array( 'ਮਸ਼ਹੂਰ_ਸਫ਼ੇ' ),
        'Preferences'               => array( 'ਪਸੰਦਾਂ' ),
        'Prefixindex'               => array( 'ਅਗੇਤਰ_ਤਤਕਰਾ' ),
        'Protectedpages'            => array( 'ਸੁਰੱਖਿਅਤ_ਸਫ਼ੇ' ),
index 4c82276..8f1fbf4 100644 (file)
@@ -187,7 +187,6 @@ $specialPageAliases = array(
        'PagesWithProp'             => array( 'Strony_z_własnością' ),
        'PasswordReset'             => array( 'Wyczyść_hasło' ),
        'PermanentLink'             => array( 'Niezmienny_link' ),
-       'Popularpages'              => array( 'Popularne_strony' ),
        'Preferences'               => array( 'Preferencje' ),
        'Prefixindex'               => array( 'Strony_według_prefiksu' ),
        'Protectedpages'            => array( 'Zabezpieczone_strony' ),
index fbc9419..df393a6 100644 (file)
@@ -64,7 +64,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'زما_خبرې_اترې' ),
        'Newimages'                 => array( 'نوي_انځورونه' ),
        'Newpages'                  => array( 'نوي_مخونه' ),
-       'Popularpages'              => array( 'نامتومخونه' ),
        'Preferences'               => array( 'غوره_توبونه' ),
        'Prefixindex'               => array( 'د_مختاړيو_ليکلړ' ),
        'Protectedpages'            => array( 'ژغورلي_مخونه' ),
index 7a293f6..814a7f4 100644 (file)
@@ -174,7 +174,6 @@ $specialPageAliases = array(
        'PagesWithProp'             => array( 'Propriedades_de_página' ),
        'PasswordReset'             => array( 'Redefinir_autenticação' ),
        'PermanentLink'             => array( 'Ligação_permanente', 'Link_permanente' ),
-       'Popularpages'              => array( 'Páginas_populares', 'Artigos_populares' ),
        'Preferences'               => array( 'Preferências' ),
        'Prefixindex'               => array( 'Índice_por_prefixo', 'Índice_de_prefixo' ),
        'Protectedpages'            => array( 'Páginas_protegidas', 'Artigos_protegidos' ),
index 8a63470..cc69fd4 100644 (file)
@@ -177,7 +177,6 @@ $specialPageAliases = array(
        'Newimages'                 => array( 'Arquivos_novos', 'Imagens_novas', 'Ficheiros_novos' ),
        'Newpages'                  => array( 'Páginas_novas', 'Artigos_novos' ),
        'PermanentLink'             => array( 'Ligação_permanente', 'Link_permanente' ),
-       'Popularpages'              => array( 'Páginas_populares', 'Artigos_populares' ),
        'Preferences'               => array( 'Preferências' ),
        'Prefixindex'               => array( 'Índice_de_prefixo', 'Índice_por_prefixo' ),
        'Protectedpages'            => array( 'Páginas_protegidas', 'Artigos_protegidos' ),
index 97afe6b..9a3b57e 100644 (file)
@@ -100,7 +100,6 @@ $specialPageAliases = array(
        'Newpages'                  => array( 'MusuqPanqa' ),
        'PasswordReset'             => array( 'YaykunaRimaKutichina' ),
        'PermanentLink'             => array( 'KakuqTinki' ),
-       'Popularpages'              => array( 'WatukuqsapaPanqa', 'RikuqsapaPanqa', 'QhawaqsapaPanqa' ),
        'Preferences'               => array( 'Allinkachina', 'Allinkachinakuna' ),
        'Prefixindex'               => array( 'QallarinaKaskaSutisuyu' ),
        'Protectedpages'            => array( 'AmachasqaPanqa' ),
index 3d62d43..b13be7b 100644 (file)
@@ -243,7 +243,6 @@ $specialPageAliases = array(
        'Newimages'                 => array( 'Imagini_noi' ),
        'Newpages'                  => array( 'Pagini_noi' ),
        'PasswordReset'             => array( 'Resetare_parolă' ),
-       'Popularpages'              => array( 'Pagini_populare' ),
        'Preferences'               => array( 'Preferințe' ),
        'Prefixindex'               => array( 'Index' ),
        'Protectedpages'            => array( 'Pagini_protejate' ),
index a74c9db..1c5e371 100644 (file)
@@ -194,7 +194,6 @@ $specialPageAliases = array(
        'Newpages'                  => array( 'Новые_страницы' ),
        'PasswordReset'             => array( 'Сброс_пароля' ),
        'PermanentLink'             => array( 'Постоянная_ссылка' ),
-       'Popularpages'              => array( 'Популярные_страницы' ),
        'Preferences'               => array( 'Настройки' ),
        'Prefixindex'               => array( 'Указатель_по_началу_названия' ),
        'Protectedpages'            => array( 'Защищённые_страницы' ),
index cb23741..255ed66 100644 (file)
@@ -100,7 +100,6 @@ $specialPageAliases = array(
        'Newpages'                  => array( 'Новы_сторінкы' ),
        'PasswordReset'             => array( 'Ресет_гесла' ),
        'PermanentLink'             => array( 'Тырвалый_одказ' ),
-       'Popularpages'              => array( 'Популарны_сторінкы' ),
        'Preferences'               => array( 'Наставлїня' ),
        'Protectedpages'            => array( 'Замкнуты_сторінкы' ),
        'Protectedtitles'           => array( 'Замкнуты_назвы' ),
index 9968066..35bc37a 100644 (file)
@@ -46,19 +46,19 @@ $linkPrefixExtension = false;
 
 $namespaceNames = array(
        NS_MEDIA            => 'माध्यमम्',
-       NS_SPECIAL          => 'विशà¥\87षमà¥\8d',
+       NS_SPECIAL          => 'विशà¥\87षà¤\83',
        NS_TALK             => 'सम्भाषणम्',
-       NS_USER             => 'यà¥\8bà¤\9cà¤\95ः',
-       NS_USER_TALK        => 'यà¥\8bà¤\9cà¤\95सम्भाषणम्',
+       NS_USER             => 'सदसà¥\8dयः',
+       NS_USER_TALK        => 'सदसà¥\8dयसम्भाषणम्',
        NS_PROJECT_TALK     => '$1सम्भाषणम्',
-       NS_FILE             => 'à¤\9aितà¥\8dरमà¥\8d',
-       NS_FILE_TALK        => 'à¤\9aितà¥\8dरसम्भाषणम्',
-       NS_MEDIAWIKI        => 'मिडà¥\80याविà¤\95à¥\80',
-       NS_MEDIAWIKI_TALK   => 'मिडियाविà¤\95à¥\80सम्भाषणम्',
+       NS_FILE             => 'सà¤\9eà¥\8dà¤\9aिà¤\95ा',
+       NS_FILE_TALK        => 'सà¤\9eà¥\8dà¤\9aिà¤\95ासम्भाषणम्',
+       NS_MEDIAWIKI        => 'मà¥\80डियाविà¤\95ि',
+       NS_MEDIAWIKI_TALK   => 'मà¥\80डियाविà¤\95िसम्भाषणम्',
        NS_TEMPLATE         => 'फलकम्',
-       NS_TEMPLATE_TALK    => 'फलà¤\95सà¥\8dय_समà¥\8dभाषणमà¥\8d',
-       NS_HELP             => 'सहाय्यम्',
-       NS_HELP_TALK        => 'सहायà¥\8dयसà¥\8dय_सम्भाषणम्',
+       NS_TEMPLATE_TALK    => 'फलकसम्भाषणम्',
+       NS_HELP             => 'साहायà¥\8dयमà¥\8d',
+       NS_HELP_TALK        => 'साहायà¥\8dयसम्भाषणम्',
        NS_CATEGORY         => 'वर्गः',
        NS_CATEGORY_TALK    => 'वर्गसम्भाषणम्',
 );
@@ -66,19 +66,29 @@ $namespaceNames = array(
 $namespaceAliases = array(
        'माध्यम'             => NS_MEDIA,
        'विशेष'              => NS_SPECIAL,
+       'विशेषम्'            => NS_SPECIAL,
        'संभाषणं'            => NS_TALK,
+       'योजकः'              => NS_USER,
        'योजकसंभाषणं'        => NS_USER_TALK,
-       '$1संभाषणं'         => NS_PROJECT_TALK,
+       'योजकसम्भाषणम्'      => NS_USER_TALK,
+       '$1संभाषणं'          => NS_PROJECT_TALK,
        'चित्रं'             => NS_FILE,
+       'चित्रम्'           => NS_FILE,
        'चित्रसंभाषणं'       => NS_FILE_TALK,
-       'मिडियाविकीसंभाषणं' => NS_MEDIAWIKI_TALK,
+       'चित्रसम्भाषणम्'     => NS_FILE_TALK,
+       'मिडीयाविकी'         => NS_MEDIAWIKI,
+       'मिडियाविकीसंभाषणं'  => NS_MEDIAWIKI_TALK,
+       'मिडियाविकीसम्भाषणम्' => NS_MEDIAWIKI_TALK,
        'बिंबधर'             => NS_TEMPLATE,
-       'बिंबधर_संभाषणं'      => NS_TEMPLATE_TALK,
+       'बिंबधर_संभाषणं'     => NS_TEMPLATE_TALK,
+       'फलकस्य_सम्भाषणम्'   => NS_TEMPLATE_TALK,
        'सहाय्य'             => NS_HELP,
+       'सहाय्यम्'           => NS_HELP,
        'सहाय्यसंभाषणं'      => NS_HELP_TALK,
+       'सहाय्यस्य_सम्भाषणम्' => NS_HELP_TALK,
        'उपकारः'             => NS_HELP,
-       'उपकारसंभाषणं'        => NS_HELP_TALK,
-       'वर्गसंभाषणं'         => NS_CATEGORY_TALK,
+       'उपकारसंभाषणं'       => NS_HELP_TALK,
+       'वर्गसंभाषणं'        => NS_CATEGORY_TALK,
 );
 
 $specialPageAliases = array(
@@ -132,7 +142,6 @@ $specialPageAliases = array(
        'Newimages'                 => array( 'नूतनसंचिका', 'नूतनचित्रानि' ),
        'Newpages'                  => array( 'नूतनपृष्टानि' ),
        'PasswordReset'             => array( 'सङ्केतशब्दपुन:प्रयु्क्ता' ),
-       'Popularpages'              => array( 'लोकप्रियपृष्टानि' ),
        'Preferences'               => array( 'इष्टतमानि' ),
        'Prefixindex'               => array( 'उपसर्गअनुक्रमणी' ),
        'Protectedpages'            => array( 'सुरक्षितपृष्टानि' ),
index 6cc09a9..9016a0b 100644 (file)
@@ -110,7 +110,6 @@ $specialPageAliases = array(
        'Newpages'                  => array( 'PaginePiùRecenti' ),
        'PasswordReset'             => array( 'ReimpostaPassword' ),
        'PermanentLink'             => array( 'LinkPermanente' ),
-       'Popularpages'              => array( 'PaginePiùVisitate' ),
        'Preferences'               => array( 'Preferenze' ),
        'Prefixindex'               => array( 'Prefissi' ),
        'Protectedpages'            => array( 'PagineProtette' ),
index adfc05e..2339c07 100644 (file)
@@ -66,7 +66,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'مون سان ڳالهه' ),
        'Newimages'                 => array( 'نوان عڪس' ),
        'Newpages'                  => array( 'نوان صفحا' ),
-       'Popularpages'              => array( 'مقبول صفحا' ),
        'Preferences'               => array( 'ترجيحات' ),
        'Prefixindex'               => array( 'اڳياڙي ڏسڻي' ),
        'Protectedpages'            => array( 'تحفظيل صفحا' ),
index 4ab9c11..fe98236 100644 (file)
@@ -68,7 +68,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'MéDischussioni' ),
        'Newimages'                 => array( 'ImmaginiRizzenti' ),
        'Newpages'                  => array( 'PàginiPiùRizzenti' ),
-       'Popularpages'              => array( 'PàginiPiùVisitaddi' ),
        'Preferences'               => array( 'Prifirènzi' ),
        'Prefixindex'               => array( 'Prefissi' ),
        'Protectedpages'            => array( 'PàginiPrutiggiddi' ),
index 1917f32..66fa2e4 100644 (file)
@@ -80,7 +80,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'Mu_ságastallan' ),
        'Newimages'                 => array( 'Ođđa_govat', 'Ođđa_fiillat' ),
        'Newpages'                  => array( 'Ođđa_siiddut' ),
-       'Popularpages'              => array( 'Bivnnuhis_siiddut' ),
        'Preferences'               => array( 'Válljemat', 'Ásahusat' ),
        'Protectedpages'            => array( 'Suodjaluvvon_siiddut' ),
        'Protectedtitles'           => array( 'Suodjaluvvon_bajilčállagat', 'Suodjaluvvon_siidonamat' ),
index f8aa19f..9fb137a 100644 (file)
@@ -76,7 +76,6 @@ $specialPageAliases = array(
        'Myuploads'                 => array( 'Moje_postavljene_datoteke' ),
        'Newimages'                 => array( 'Nove_datoteke', 'Nove_slike' ),
        'Newpages'                  => array( 'Nove_stranice' ),
-       'Popularpages'              => array( 'Popularne_stranice' ),
        'Preferences'               => array( 'Postavke' ),
        'Prefixindex'               => array( 'Prefiks_indeks', 'Stranice_po_prefiksu' ),
        'Protectedpages'            => array( 'Zaštićene_stranice' ),
index 1ac48a0..e13e014 100644 (file)
@@ -107,7 +107,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'මගේ_සාකච්ඡාව' ),
        'Newimages'                 => array( 'නව_ගොනු', 'නව_රූප' ),
        'Newpages'                  => array( 'නව_පිටුව' ),
-       'Popularpages'              => array( 'ජනප්‍රිය_පිටු' ),
        'Preferences'               => array( 'අභිරුචියන්' ),
        'Prefixindex'               => array( 'උපසර්ග_සූචිය' ),
        'Protectedpages'            => array( 'ආරක්‍ෂිත_පිටුව' ),
index 83155da..26d474f 100644 (file)
@@ -81,7 +81,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'MojaDiskusia' ),
        'Newimages'                 => array( 'NovéSúbory' ),
        'Newpages'                  => array( 'NovéStránky' ),
-       'Popularpages'              => array( 'PopulárneStránky' ),
        'Preferences'               => array( 'Nastavenia' ),
        'Prefixindex'               => array( 'IndexPredpon' ),
        'Protectedpages'            => array( 'ZamknutéStránky' ),
index ea6b569..bc7afb9 100644 (file)
@@ -81,7 +81,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'MojPogovor' ),
        'Newimages'                 => array( 'NoveDatoteke', 'NoveSlike' ),
        'Newpages'                  => array( 'NoveStrani' ),
-       'Popularpages'              => array( 'PriljubljeneStrani' ),
        'Preferences'               => array( 'Nastavitve' ),
        'Protectedpages'            => array( 'ZaščiteneStrani' ),
        'Protectedtitles'           => array( 'ZaščiteniNaslovi' ),
index 71180c3..c647010 100644 (file)
@@ -96,7 +96,6 @@ $specialPageAliases = array(
        'Myuploads'                 => array( 'NgarkimeteMia' ),
        'Newimages'                 => array( 'SkedaTëReja' ),
        'Newpages'                  => array( 'FaqeteReja' ),
-       'Popularpages'              => array( 'FaqetëFamshme' ),
        'Preferences'               => array( 'Preferencat' ),
        'Protectedpages'            => array( 'FaqeteMbrojtura' ),
        'Protectedtitles'           => array( 'TitujteMbrojtur' ),
index 0f89cca..a325067 100644 (file)
@@ -143,7 +143,6 @@ $specialPageAliases = array(
        'Newimages'                 => array( 'НовеДатотеке', 'НовиФајлови', 'НовеСлике' ),
        'Newpages'                  => array( 'НовеСтране' ),
        'PermanentLink'             => array( 'Привремена_веза' ),
-       'Popularpages'              => array( 'Популарне_странице' ),
        'Preferences'               => array( 'Подешавања', 'Поставке' ),
        'Protectedpages'            => array( 'ЗаштићенеСтранице', 'Заштићене_странице' ),
        'Protectedtitles'           => array( 'ЗаштићениНаслови', 'Заштићени_наслови' ),
index 9092e9e..b4643f0 100644 (file)
@@ -88,7 +88,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'ObrolanKuring' ),
        'Newimages'                 => array( 'GambarAnyar' ),
        'Newpages'                  => array( 'KacaAnyar' ),
-       'Popularpages'              => array( 'KacaPayu' ),
        'Preferences'               => array( 'Preferensi' ),
        'Prefixindex'               => array( 'IndeksAwalan' ),
        'Protectedpages'            => array( 'KacaDikonci' ),
index 48e3511..f85659f 100644 (file)
@@ -156,7 +156,6 @@ $specialPageAliases = array(
        'PageLanguage'              => array( 'Sidspråk' ),
        'PasswordReset'             => array( 'Återställ_lösenord' ),
        'PermanentLink'             => array( 'Permanent_länk' ),
-       'Popularpages'              => array( 'Populära_sidor' ),
        'Preferences'               => array( 'Inställningar' ),
        'Protectedpages'            => array( 'Skyddade_sidor' ),
        'Protectedtitles'           => array( 'Skyddade_titlar' ),
index c653de3..311b6cc 100644 (file)
@@ -89,7 +89,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'MajadilianoYangu' ),
        'Newimages'                 => array( 'FailiMpya', 'FailimpyazaPicha' ),
        'Newpages'                  => array( 'KurasaMpya' ),
-       'Popularpages'              => array( 'KurasaMaarufu' ),
        'Preferences'               => array( 'Mapendekezo' ),
        'Prefixindex'               => array( 'KurasaKuu' ),
        'Protectedpages'            => array( 'KurasaZilizolindwa' ),
index 5a5e44b..808df08 100644 (file)
@@ -101,7 +101,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'నాచర్చ' ),
        'Newimages'                 => array( 'కొత్తఫైళ్లు', 'కొత్తబొమ్మలు' ),
        'Newpages'                  => array( 'కొత్తపేజీలు' ),
-       'Popularpages'              => array( 'ప్రాచుర్యంపొందినపేజీలు' ),
        'Preferences'               => array( 'అభిరుచులు' ),
        'Protectedpages'            => array( 'సంరక్షితపేజీలు' ),
        'Randompage'                => array( 'యాదృచ్చికపేజీ' ),
index 140073a..99b2ab4 100644 (file)
@@ -110,7 +110,6 @@ $specialPageAliases = array(
        'Newpages'                  => array( 'หน้าใหม่' ),
        'PasswordReset'             => array( 'ตั้งรหัสผ่านใหม่' ),
        'PermanentLink'             => array( 'ลิงก์ถาวร' ),
-       'Popularpages'              => array( 'หน้าที่ได้รับความนิยม' ),
        'Preferences'               => array( 'การตั้งค่า', 'ตั้งค่า' ),
        'Prefixindex'               => array( 'ดัชนีตามคำขึ้นต้น' ),
        'Protectedpages'            => array( 'หน้าที่ถูกป้องกัน' ),
index 799dc34..c111a02 100644 (file)
@@ -104,7 +104,6 @@ $specialPageAliases = array(
        'Newpages'                  => array( 'Bagong_mga_pahina' ),
        'PasswordReset'             => array( 'Muling_Pagtatakda_ng_Hudyat' ),
        'PermanentLink'             => array( 'Pamalagiang_Kawing' ),
-       'Popularpages'              => array( 'Sikat_na_mga_pahina' ),
        'Preferences'               => array( 'Mga_nais' ),
        'Prefixindex'               => array( 'Talatuntunan_ng_unlapi' ),
        'Protectedpages'            => array( 'Mga_pahinang_nakasanggalang' ),
index 0f61a96..ffd23f7 100644 (file)
@@ -153,7 +153,6 @@ $specialPageAliases = array(
        'Newpages'                  => array( 'YeniSayfalar' ),
        'PasswordReset'             => array( 'ParolaSıfırlama' ),
        'PermanentLink'             => array( 'KalıcıBağ' ),
-       'Popularpages'              => array( 'PopülerSayfalar' ),
        'Preferences'               => array( 'Tercihler', 'Ayarlar' ),
        'Prefixindex'               => array( 'ÖnekDizini' ),
        'Protectedpages'            => array( 'KorunanSayfalar' ),
index 0487c8f..8a61e33 100644 (file)
@@ -145,7 +145,6 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'Бәхәсем' ),
        'Newimages'                 => array( 'Яңа_файл' ),
        'Newpages'                  => array( 'Яңа_бит' ),
-       'Popularpages'              => array( 'Популяр_битләр' ),
        'Preferences'               => array( 'Көйләнмәләр' ),
        'Protectedpages'            => array( 'Якланган_битләр' ),
        'Protectedtitles'           => array( 'Якланган_башлыклар' ),
index 2caaefa..4cc1859 100644 (file)
@@ -176,7 +176,6 @@ $specialPageAliases = array(
        'Newpages'                  => array( 'Нові_сторінки' ),
        'PasswordReset'             => array( 'Скинути_пароль' ),
        'PermanentLink'             => array( 'Постійне_посилання' ),
-       'Popularpages'              => array( 'Популярні_сторінки' ),
        'Preferences'               => array( 'Налаштування' ),
        'Prefixindex'               => array( 'Покажчик_за_початком_назви' ),
        'Protectedpages'            => array( 'Захищені_сторінки' ),
index 81a6d2f..1de001a 100644 (file)
@@ -104,7 +104,6 @@ $specialPageAliases = array(
        'Newimages'                 => array( 'جدید_املاف', 'جدید_تصاویر' ),
        'Newpages'                  => array( 'جدید_صفحات' ),
        'PermanentLink'             => array( 'مستقل_ربط' ),
-       'Popularpages'              => array( 'مقبول_صفحات' ),
        'Preferences'               => array( 'ترجیحات' ),
        'Prefixindex'               => array( 'اشاریہ_سابقہ' ),
        'Protectedpages'            => array( 'محفوظ_صفحات' ),
index 9242d83..ebfc64a 100644 (file)
@@ -117,7 +117,6 @@ $specialPageAliases = array(
        'Newpages'                  => array( 'PagineNove' ),
        'PasswordReset'             => array( 'ReinpostaPassword' ),
        'PermanentLink'             => array( 'LinkParmanente' ),
-       'Popularpages'              => array( 'PaginePiassèVisità' ),
        'Preferences'               => array( 'Preferense' ),
        'Prefixindex'               => array( 'Prefissi' ),
        'Protectedpages'            => array( 'PagineProtete' ),
index 2724a60..56ee88c 100644 (file)
@@ -125,7 +125,6 @@ $specialPageAliases = array(
        'PageLanguage'              => array( 'Ngôn_ngữ_trang' ),
        'PasswordReset'             => array( 'Tái_tạo_mật_khẩu', 'Đặt_lại_mật_khẩu' ),
        'PermanentLink'             => array( 'Liên_kết_thường_trực' ),
-       'Popularpages'              => array( 'Trang_phổ_biến' ),
        'Preferences'               => array( 'Tùy_chọn', 'Tuỳ_chọn' ),
        'Prefixindex'               => array( 'Tiền_tố' ),
        'Protectedpages'            => array( 'Trang_khóa', 'Trang_khoá' ),
index ed61df4..37d7015 100644 (file)
@@ -110,7 +110,6 @@ $specialPageAliases = array(
        'Myuploads'                 => array( 'מיינע_ארויפלאדונגען' ),
        'Newimages'                 => array( 'נייע_בילדער' ),
        'Newpages'                  => array( 'נייע_בלעטער' ),
-       'Popularpages'              => array( 'פאפולערע_בלעטער' ),
        'Preferences'               => array( 'פרעפערענצן' ),
        'Prefixindex'               => array( 'בלעטער_וואס_הייבן_אן_מיט' ),
        'Protectedpages'            => array( 'געשיצטע_בלעטער' ),
index 8c4c93f..e1bb672 100644 (file)
@@ -151,7 +151,6 @@ $specialPageAliases = array(
        'Newpages'                  => array( '新版' ),
        'PasswordReset'             => array( '重設密碼' ),
        'PermanentLink'             => array( '永久鏈' ),
-       'Popularpages'              => array( '最歡迎頁' ),
        'Preferences'               => array( '喜好設定' ),
        'Prefixindex'               => array( '全部頁嘅前綴' ),
        'Protectedpages'            => array( '保護頁' ),
index 8ee87f0..617dd46 100644 (file)
@@ -144,7 +144,6 @@ $specialPageAliases = array(
        'Newimages'                 => array( '新建文件', '新建檔案' ),
        'Newpages'                  => array( '最新页面', '最新頁面' ),
        'PasswordReset'             => array( '重置密码', '重設密碼' ),
-       'Popularpages'              => array( '热点页面', '熱點頁面' ),
        'Preferences'               => array( '参数设置', '偏好設定', '參數設置' ),
        'Prefixindex'               => array( '前缀索引', '前綴索引', '字首索引' ),
        'Protectedpages'            => array( '已保护页面', '已保護頁面' ),
index 84d4373..57c9a61 100644 (file)
@@ -199,7 +199,6 @@ $specialPageAliases = array(
        'PageLanguage'              => array( '页面语言' ),
        'PasswordReset'             => array( '重设密码' ),
        'PermanentLink'             => array( '固定链接', '永久链接' ),
-       'Popularpages'              => array( '热点页面' ),
        'Preferences'               => array( '参数设置', '设置' ),
        'Prefixindex'               => array( '前缀索引' ),
        'Protectedpages'            => array( '已保护页面' ),
index 6e5dea1..1f6bcfa 100644 (file)
@@ -183,7 +183,6 @@ $specialPageAliases = array(
        'PageLanguage'              => array( '頁面語言' ),
        'PasswordReset'             => array( '重設密碼' ),
        'PermanentLink'             => array( '靜態連結', '永久連結' ),
-       'Popularpages'              => array( '熱門頁面', '熱點頁面' ),
        'Preferences'               => array( '偏好設定' ),
        'Prefixindex'               => array( '字首索引', '前綴索引' ),
        'Protectedpages'            => array( '受保護頁面', '已保護頁面' ),
index 73e65dc..478e0d7 100644 (file)
@@ -182,15 +182,20 @@ class DeleteEqualMessages extends Maintenance {
                        $this->output( "\n* [[$title]]" );
                        $page = WikiPage::factory( $title );
                        $error = ''; // Passed by ref
-                       // FIXME: Deletion failures should be reported, not silently ignored.
-                       $page->doDeleteArticle( 'No longer required', false, 0, true, $error, $user );
+                       $success = $page->doDeleteArticle( 'No longer required', false, 0, true, $error, $user );
+                       if ( !$success ) {
+                               $this->output( " (Failed!)" );
+                       }
                        if ( $result['hasTalk'] && $doDeleteTalk ) {
                                $title = Title::makeTitle( NS_MEDIAWIKI_TALK, $result['title'] );
                                $this->output( "\n* [[$title]]" );
                                $page = WikiPage::factory( $title );
                                $error = ''; // Passed by ref
-                               $page->doDeleteArticle( 'Orphaned talk page of no longer required message',
+                               $success = $page->doDeleteArticle( 'Orphaned talk page of no longer required message',
                                        false, 0, true, $error, $user );
+                               if ( !$success ) {
+                                       $this->output( " (Failed!)" );
+                               }
                        }
                }
                $this->output( "\n\ndone!\n" );
index d5f6834..5838201 100644 (file)
@@ -184,7 +184,7 @@ class GetConfiguration extends Maintenance {
                        }
 
                        return true;
-               } elseif ( is_scalar( $value ) ) {
+               } elseif ( is_scalar( $value ) || $value === null ) {
                        return true;
                }
 
index d547b7b..d142556 100644 (file)
@@ -31,7 +31,8 @@
                                        "mw.user",
                                        "mw.util",
                                        "mw.plugin.*",
-                                       "mw.cookie"
+                                       "mw.cookie",
+                                       "mw.experiments"
                                ]
                        },
                        {
@@ -60,7 +61,9 @@
                                "name": "Interfaces",
                                "classes": [
                                        "mw.Feedback*",
-                                       "mw.Upload*"
+                                       "mw.Upload*",
+                                       "mw.ForeignUpload",
+                                       "mw.ForeignStructuredUpload"
                                ]
                        },
                        {
index a989aef..25a096c 100644 (file)
@@ -34,42 +34,53 @@ require_once __DIR__ . '/Maintenance.php';
  * @ingroup Maintenance
  */
 class ShowJobs extends Maintenance {
+       protected static $stateMethods = array(
+               'unclaimed' => 'getAllQueuedJobs',
+               'delayed'   => 'getAllDelayedJobs',
+               'claimed'   => 'getAllAcquiredJobs',
+               'abandoned' => 'getAllAbandonedJobs',
+       );
+
        public function __construct() {
                parent::__construct();
                $this->mDescription = "Show number of jobs waiting in master database";
                $this->addOption( 'group', 'Show number of jobs per job type' );
-               $this->addOption( 'list',
-                       'Show a list of all jobs in a machine-readable format, instead of statistics' );
+               $this->addOption( 'list', 'Show a list of all jobs instead of counts' );
                $this->addOption( 'type', 'Only show/count jobs of a given type', false, true );
+               $this->addOption( 'status', 'Filter list by state (unclaimed,delayed,claimed,abandoned)' );
+               $this->addOption( 'limit', 'Limit of jobs listed' );
        }
 
        public function execute() {
-               $filterType = $this->getOption( 'type', '' );
+               $typeFilter = $this->getOption( 'type', '' );
+               $stateFilter = $this->getOption( 'status', '' );
+               $stateLimit = (float)$this->getOption( 'limit', INF );
+
                $group = JobQueueGroup::singleton();
+
+               $filteredTypes = $typeFilter
+                       ? array( $typeFilter )
+                       : $group->getQueueTypes();
+               $filteredStates = $stateFilter
+                       ? array_intersect_key( self::$stateMethods, array( $stateFilter => 1 ) )
+                       : self::$stateMethods;
+
                if ( $this->hasOption( 'list' ) ) {
-                       foreach ( $group->getQueueTypes() as $type ) {
-                               if ( $filterType != '' && $type != $filterType ) {
-                                       continue;
-                               }
+                       $count = 0;
+                       foreach ( $filteredTypes as $type ) {
                                $queue = $group->get( $type );
-                               foreach ( $queue->getAllQueuedJobs() as $job ) {
-                                       $this->output( $job->toString() . " status=unclaimed\n" );
-                               }
-                               foreach ( $queue->getAllDelayedJobs() as $job ) {
-                                       $this->output( $job->toString() . " status=delayed\n" );
-                               }
-                               foreach ( $queue->getAllAcquiredJobs() as $job ) {
-                                       $this->output( $job->toString() . " status=claimed\n" );
-                               }
-                               foreach ( $queue->getAllAbandonedJobs() as $job ) {
-                                       $this->output( $job->toString() . " status=abandoned\n" );
+                               foreach ( $filteredStates as $state => $method ) {
+                                       foreach ( $queue->$method() as $job ) {
+                                               /** @var Job $job */
+                                               $this->output( $job->toString() . " status=$state\n" );
+                                               if ( ++$count >= $stateLimit ) {
+                                                       return;
+                                               }
+                                       }
                                }
                        }
                } elseif ( $this->hasOption( 'group' ) ) {
-                       foreach ( $group->getQueueTypes() as $type ) {
-                               if ( $filterType != '' && $type != $filterType ) {
-                                       continue;
-                               }
+                       foreach ( $filteredTypes as $type ) {
                                $queue = $group->get( $type );
                                $delayed = $queue->getDelayedCount();
                                $pending = $queue->getSize();
@@ -86,10 +97,7 @@ class ShowJobs extends Maintenance {
                        }
                } else {
                        $count = 0;
-                       foreach ( $group->getQueueTypes() as $type ) {
-                               if ( $filterType != '' && $type != $filterType ) {
-                                       continue;
-                               }
+                       foreach ( $filteredTypes as $type ) {
                                $count += $group->get( $type )->getSize();
                        }
                        $this->output( "$count\n" );
index de36d26..aa0c7ea 100644 (file)
@@ -3,7 +3,9 @@
 -- not have to run it by itself unless doing a manual install.
 
 -- This is a shared schema file used for both MySQL and SQLite installs.
-
+--
+-- For more documentation on the database schema, see
+-- https://www.mediawiki.org/wiki/Manual:Database_layout
 --
 -- General notes:
 --
index cf17aef..d2dc213 100644 (file)
@@ -3,7 +3,7 @@
                var $label, labelText;
 
                function syncText() {
-                       var value = $(this).val()
+                       var value = $( this ).val()
                                .replace( /[\[\]\{\}|#<>%+? ]/g, '_' )
                                .replace( /&/, '&amp;' )
                                .replace( /__+/g, '_' )
@@ -20,7 +20,7 @@
                                .find( '.mw-help-field-hint' )
                                        .show()
                                        .click( function () {
-                                               $(this)
+                                               $( this )
                                                        .closest( '.mw-help-field-container' )
                                                                .find( '.mw-help-field-data' )
                                                                        .slideToggle( 'fast' );
@@ -29,7 +29,7 @@
                // Show/hide code for DB-specific options
                // FIXME: Do we want slow, fast, or even non-animated (instantaneous) showing/hiding here?
                $( '.dbRadio' ).each( function () {
-                       $( document.getElementById( $(this).attr( 'rel' ) ) ).hide();
+                       $( document.getElementById( $( this ).attr( 'rel' ) ) ).hide();
                } );
                $( document.getElementById( $( '.dbRadio:checked' ).attr( 'rel' ) ) ).show();
                $( '.dbRadio' ).click( function () {
 
                // Show/hide random stuff (email, upload)
                $( '.showHideRadio' ).click( function () {
-                       var $wrapper = $( '#' + $(this).attr( 'rel' ) );
-                       if ( $(this).is( ':checked' ) ) {
+                       var $wrapper = $( '#' + $( this ).attr( 'rel' ) );
+                       if ( $( this ).is( ':checked' ) ) {
                                $wrapper.show( 'slow' );
                        } else {
                                $wrapper.hide( 'slow' );
                        }
                } );
                $( '.hideShowRadio' ).click( function () {
-                       var $wrapper = $( '#' + $(this).attr( 'rel' ) );
-                       if ( $(this).is( ':checked' ) ) {
+                       var $wrapper = $( '#' + $( this ).attr( 'rel' ) );
+                       if ( $( this ).is( ':checked' ) ) {
                                $wrapper.hide( 'slow' );
                        } else {
                                $wrapper.show( 'slow' );
@@ -80,9 +80,9 @@
 
                // Enable/disable "other" textboxes
                $( '.enableForOther' ).click( function () {
-                       var $textbox = $( document.getElementById( $(this).attr( 'rel' ) ) );
+                       var $textbox = $( document.getElementById( $( this ).attr( 'rel' ) ) );
                        // FIXME: Ugh, this is ugly
-                       if ( $(this).val() === 'other' ) {
+                       if ( $( this ).val() === 'other' ) {
                                $textbox.removeProp( 'readonly' ).closest( '.config-block' ).slideDown( 'fast' );
                        } else {
                                $textbox.prop( 'readonly', true ).closest( '.config-block' ).slideUp( 'fast' );
index e28aef4..7b70048 100644 (file)
@@ -11,9 +11,9 @@
     "grunt-cli": "0.1.13",
     "grunt-banana-checker": "0.2.2",
     "grunt-contrib-copy": "0.8.0",
-    "grunt-contrib-jshint": "0.11.2",
+    "grunt-contrib-jshint": "0.11.3",
     "grunt-contrib-watch": "0.6.1",
-    "grunt-jscs": "1.8.0",
+    "grunt-jscs": "2.1.0",
     "grunt-jsonlint": "1.0.4",
     "grunt-karma": "0.11.0",
     "karma": "0.12.36",
index 7f1bced..36ad394 100644 (file)
--- a/phpcs.xml
+++ b/phpcs.xml
@@ -4,6 +4,9 @@
        <file>.</file>
        <arg name="encoding" value="utf8"/>
        <arg name="extensions" value="php,php5,inc,sample"/>
+       <rule ref="Generic.Files.LineLength">
+               <exclude-pattern>*/languages/messages/Messages*.php</exclude-pattern>
+       </rule>
        <exclude-pattern>node_modules</exclude-pattern>
        <exclude-pattern>vendor</exclude-pattern>
        <exclude-pattern>extensions</exclude-pattern>
index 8e7e368..5ad349a 100644 (file)
@@ -827,7 +827,6 @@ return array(
                        'resources/lib/phpjs-sha1/sha1.js',
                        'resources/src/mediawiki/mediawiki.js',
                        'resources/src/mediawiki/mediawiki.errorLogger.js',
-                       'resources/src/mediawiki/mediawiki.startUp.js',
                ),
                'debugScripts' => 'resources/src/mediawiki/mediawiki.log.js',
                'targets' => array( 'desktop', 'mobile' ),
@@ -848,6 +847,12 @@ return array(
                        'resources/src/mediawiki/mediawiki.template.mustache.js',
                ),
                'targets' => array( 'desktop', 'mobile' ),
+               'dependencies' => 'mediawiki.template',
+       ),
+       'mediawiki.template.regexp' => array(
+               'scripts' => 'resources/src/mediawiki/mediawiki.template.regexp.js',
+               'targets' => array( 'desktop', 'mobile' ),
+               'dependencies' => 'mediawiki.template',
        ),
        'mediawiki.apipretty' => array(
                'styles' => 'resources/src/mediawiki/mediawiki.apipretty.css',
@@ -1127,6 +1132,20 @@ return array(
                        'mediawiki.api.upload',
                ),
        ),
+       'mediawiki.ForeignUpload' => array(
+               'scripts' => 'resources/src/mediawiki/mediawiki.ForeignUpload.js',
+               'dependencies' => array(
+                       'mediawiki.ForeignApi',
+                       'mediawiki.Upload',
+                       'oojs',
+               ),
+       ),
+       'mediawiki.ForeignStructuredUpload' => array(
+               'scripts' => 'resources/src/mediawiki/mediawiki.ForeignStructuredUpload.js',
+               'dependencies' => array(
+                       'mediawiki.ForeignUpload',
+               ),
+       ),
        'mediawiki.Upload.Dialog' => array(
                'scripts' => 'resources/src/mediawiki/mediawiki.Upload.Dialog.js',
                'dependencies' => array(
@@ -1157,6 +1176,10 @@ return array(
        ),
        'mediawiki.Uri' => array(
                'scripts' => 'resources/src/mediawiki/mediawiki.Uri.js',
+               'templates' => array(
+                       'strict.regexp' => 'resources/src/mediawiki/mediawiki.Uri.strict.regexp',
+                       'loose.regexp' => 'resources/src/mediawiki/mediawiki.Uri.loose.regexp',
+               ),
                'dependencies' => 'mediawiki.util',
                'targets' => array( 'desktop', 'mobile' ),
        ),
@@ -1198,6 +1221,10 @@ return array(
                'styles' => 'resources/src/mediawiki.toolbar/toolbar.less',
                'position' => 'top',
        ),
+       'mediawiki.experiments' => array(
+               'scripts' => 'resources/src/mediawiki/mediawiki.experiments.js',
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
 
        /* MediaWiki Action */
 
@@ -1336,6 +1363,13 @@ return array(
                        'prefs-editing'
                ),
        ),
+       'mediawiki.action.view.filepage' => array(
+               'styles' => array(
+                       'resources/src/mediawiki.action/mediawiki.action.view.filepage.print.css' => array( 'media' => 'print' ),
+                       'resources/src/mediawiki.action/mediawiki.action.view.filepage.css',
+               ),
+               'position' => 'top',
+       ),
 
        /* MediaWiki Language */
 
@@ -1430,9 +1464,18 @@ return array(
        'mediawiki.page.gallery' => array(
                'scripts' => 'resources/src/mediawiki.page/mediawiki.page.gallery.js',
                'dependencies' => array(
+                       'mediawiki.page.gallery.styles',
                        'jquery.throttle-debounce',
                )
        ),
+       'mediawiki.page.gallery.styles' => array(
+               'styles' => array(
+                       'resources/src/mediawiki.page/mediawiki.page.gallery.print.css' => array( 'media' => 'print' ),
+                       'resources/src/mediawiki.page/mediawiki.page.gallery.css',
+               ),
+               'position' => 'top',
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
        'mediawiki.page.ready' => array(
                'scripts' => 'resources/src/mediawiki.page/mediawiki.page.ready.js',
                'dependencies' => array(
@@ -1714,6 +1757,10 @@ return array(
        'mediawiki.legacy.commonPrint' => array(
                'position' => 'top',
                'styles' => array(
+                       // @todo: Remove mediawiki.page.gallery when cache has cleared
+                       'resources/src/mediawiki.page/mediawiki.page.gallery.print.css' => array( 'media' => 'print' ),
+                       // @todo: Remove mediawiki.action.view.filepage.print.css when cache has cleared
+                       'resources/src/mediawiki.action/mediawiki.action.view.filepage.print.css' => array( 'media' => 'print' ),
                        'resources/src/mediawiki.legacy/commonPrint.css' => array( 'media' => 'print' )
                ),
                'group' => 'print',
@@ -1727,6 +1774,11 @@ return array(
        'mediawiki.legacy.shared' => array(
                'position' => 'top',
                'styles' => array(
+                       // @todo: Remove when mediawiki.page.gallery in cached html.
+                       'resources/src/mediawiki.page/mediawiki.page.gallery.css',
+                       // @todo: Remove mediawiki.action.view.filepage.css
+                       // and mediawiki.legacy/images/checker.png when cache has cleared
+                       'resources/src/mediawiki.action/mediawiki.action.view.filepage.css',
                        'resources/src/mediawiki.legacy/shared.css' => array( 'media' => 'screen' )
                ),
        ),
index 8c3d091..ad905c6 100644 (file)
@@ -114,8 +114,9 @@ return call_user_func( function () {
 
                if ( substr( $name, 0, 5 ) === 'icons' ) {
                        $module['selectorWithoutVariant'] = '.oo-ui-icon-{name}, .mw-ui-icon-{name}:before';
-                       $module['selectorWithVariant'] = '.oo-ui-image-{variant} .oo-ui-icon-{name},
+                       $module['selectorWithVariant'] = '
                                .oo-ui-image-{variant}.oo-ui-icon-{name}, .mw-ui-icon-{name}-{variant}:before,
+                               /* Hack for Flow, see T110051 */
                                .mw-ui-hovericon:hover .mw-ui-icon-{name}-{variant}-hover:before,
                                .mw-ui-hovericon.mw-ui-icon-{name}-{variant}-hover:hover:before';
                }
index ee735ce..b48dfb5 100644 (file)
@@ -25,7 +25,8 @@
        "ooui-dialog-process-dismiss": "Ausblenden",
        "ooui-dialog-process-retry": "Erneut versuchen",
        "ooui-dialog-process-continue": "Fortfahren",
+       "ooui-selectfile-button-select": "Eine Datei auswählen",
        "ooui-selectfile-not-supported": "Die Dateiauswahl wird nicht unterstützt",
        "ooui-selectfile-placeholder": "Keine Datei ausgewählt",
-       "ooui-selectfile-dragdrop-placeholder": "Dateien hier ablegen (oder klicken zum Durchsuchen)"
+       "ooui-selectfile-dragdrop-placeholder": "Dateien hier ablegen"
 }
diff --git a/resources/lib/oojs-ui/i18n/en-ca.json b/resources/lib/oojs-ui/i18n/en-ca.json
new file mode 100644 (file)
index 0000000..218ece2
--- /dev/null
@@ -0,0 +1,23 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Skyllful"
+               ]
+       },
+       "ooui-outline-control-move-down": "Move item down",
+       "ooui-outline-control-move-up": "Move item up",
+       "ooui-outline-control-remove": "Remove item",
+       "ooui-toolbar-more": "More",
+       "ooui-toolgroup-expand": "More",
+       "ooui-toolgroup-collapse": "Less",
+       "ooui-dialog-message-accept": "OK",
+       "ooui-dialog-message-reject": "Cancel",
+       "ooui-dialog-process-error": "Something went wrong",
+       "ooui-dialog-process-dismiss": "Dismiss",
+       "ooui-dialog-process-retry": "Try again",
+       "ooui-dialog-process-continue": "Continue",
+       "ooui-selectfile-not-supported": "File(s) not supported",
+       "ooui-selectfile-placeholder": "No file selected",
+       "ooui-selectfile-dragdrop-placeholder": "Drop file here (or click to browse your computer)",
+       "ooui-semicolon-separator": ";"
+}
index db2399f..7cf2eb1 100644 (file)
@@ -28,8 +28,9 @@
        "ooui-dialog-process-dismiss": "Dismiss",
        "ooui-dialog-process-retry": "Try again",
        "ooui-dialog-process-continue": "Continue",
+       "ooui-selectfile-button-select": "Select a file",
        "ooui-selectfile-not-supported": "File selection is not supported",
        "ooui-selectfile-placeholder": "No file is selected",
-       "ooui-selectfile-dragdrop-placeholder": "Drop file here (or click to browse)",
+       "ooui-selectfile-dragdrop-placeholder": "Drop file here",
        "ooui-semicolon-separator": "; "
 }
index e20997a..11bd4b8 100644 (file)
@@ -13,7 +13,8 @@
                        "Armin1392",
                        "Alirezaaa",
                        "Leyth",
-                       "الناز"
+                       "الناز",
+                       "فلورانس"
                ]
        },
        "ooui-outline-control-move-down": "انتقال مورد به پایین",
@@ -29,5 +30,6 @@
        "ooui-dialog-process-retry": "دوباره امتحان کنید",
        "ooui-dialog-process-continue": "ادامه",
        "ooui-selectfile-not-supported": "انتخاب پرونده پشتیبانی نمی‌شود",
-       "ooui-selectfile-placeholder": "هیچ پرونده‌ای انتخاب نشده است"
+       "ooui-selectfile-placeholder": "هیچ پرونده‌ای انتخاب نشده است",
+       "ooui-selectfile-dragdrop-placeholder": "رها کردن فایل در اینجا (و یا کلیک کنید به فهرست)"
 }
index c96a74e..bdf015f 100644 (file)
@@ -30,5 +30,6 @@
        "ooui-dialog-process-retry": "Yritä uudelleen",
        "ooui-dialog-process-continue": "Jatka",
        "ooui-selectfile-not-supported": "Tiedoston valitsemista ei tueta",
-       "ooui-selectfile-placeholder": "Tiedostoa ei ole valittu"
+       "ooui-selectfile-placeholder": "Tiedostoa ei ole valittu",
+       "ooui-selectfile-dragdrop-placeholder": "Pudota tiedosto (tai selaa tiedostoja napsauttamalla)"
 }
diff --git a/resources/lib/oojs-ui/i18n/glk.json b/resources/lib/oojs-ui/i18n/glk.json
new file mode 100644 (file)
index 0000000..9b15046
--- /dev/null
@@ -0,0 +1,23 @@
+{
+       "@metadata": {
+               "authors": [
+                       "V6rg"
+               ]
+       },
+       "ooui-outline-control-move-down": "مأسمکه جابجا بۊکۊن جير",
+       "ooui-outline-control-move-up": "مأسمکه جابجا بۊکۊن جؤر",
+       "ooui-outline-control-remove": "مأسمکه حذفأکۊن",
+       "ooui-toolbar-more": "ويشتر",
+       "ooui-toolgroup-expand": "ويشتر",
+       "ooui-toolgroup-collapse": "کمتر",
+       "ooui-dialog-message-accept": "خؤ",
+       "ooui-dialog-message-reject": "لغو",
+       "ooui-dialog-process-error": "ىک مؤشکلي هنأ",
+       "ooui-dialog-process-dismiss": "وأبدي",
+       "ooui-dialog-process-retry": "هنده حقسأى بۊکۊنين",
+       "ooui-dialog-process-continue": "سره",
+       "ooui-selectfile-button-select": "ىکته فاىله دؤجين بۊکۊنين",
+       "ooui-selectfile-not-supported": "نشأنهىکته فاىله دؤجين گۊدن",
+       "ooui-selectfile-placeholder": "هيچ فاىلي دؤجين نۊبؤ",
+       "ooui-selectfile-dragdrop-placeholder": "فاىله ائره فدي"
+}
index b652d63..650d67d 100644 (file)
@@ -27,7 +27,8 @@
        "ooui-dialog-process-dismiss": "לוותר",
        "ooui-dialog-process-retry": "לנסות שוב",
        "ooui-dialog-process-continue": "המשך",
+       "ooui-selectfile-button-select": "נא לבחור קובץ",
        "ooui-selectfile-not-supported": "בחירת קבצים אינה נתמכת",
        "ooui-selectfile-placeholder": "לא נבחר שום קובץ",
-       "ooui-selectfile-dragdrop-placeholder": "נא לשחרר את הקובץ כאן (או ללחוץ לעיון)"
+       "ooui-selectfile-dragdrop-placeholder": "נא לשחרר את הקובץ כאן"
 }
index dd55db4..46f37fe 100644 (file)
@@ -18,7 +18,8 @@
        "ooui-dialog-process-dismiss": "Тргни",
        "ooui-dialog-process-retry": "Обиди се пак",
        "ooui-dialog-process-continue": "Продолжи",
+       "ooui-selectfile-button-select": "Одберете податотека",
        "ooui-selectfile-not-supported": "Изборот на податотеки не е поддржан",
        "ooui-selectfile-placeholder": "Немате одбрано податотека",
-       "ooui-selectfile-dragdrop-placeholder": "Тука пуштете ја податотеката (или стиснете за да прелистате)"
+       "ooui-selectfile-dragdrop-placeholder": "Тука пуштете ја податотеката"
 }
index 9c07f41..b7e37b4 100644 (file)
@@ -4,7 +4,8 @@
                        "Chelin",
                        "Chrisportelli",
                        "PiRSquared17",
-                       "C.R."
+                       "C.R.",
+                       "Candalua"
                ]
        },
        "ooui-outline-control-move-down": "Mòve abbascio",
@@ -19,6 +20,8 @@
        "ooui-dialog-process-dismiss": "Passa 'a vacca",
        "ooui-dialog-process-retry": "Prova n'ata vota",
        "ooui-dialog-process-continue": "Continua",
+       "ooui-selectfile-button-select": "Sceglie nu file",
        "ooui-selectfile-not-supported": "Filtro 'e selezione nun suppurtato",
-       "ooui-selectfile-placeholder": "Nun s'è scigliuto nisciuno file"
+       "ooui-selectfile-placeholder": "Nun s'è scigliuto nisciuno file",
+       "ooui-selectfile-dragdrop-placeholder": "Lassa 'o file ccà"
 }
index aab0aed..8379cac 100644 (file)
@@ -26,5 +26,6 @@
        "ooui-dialog-process-retry": "Tentar novamente",
        "ooui-dialog-process-continue": "Continuar",
        "ooui-selectfile-not-supported": "A seleção de ficheiros não é suportada",
-       "ooui-selectfile-placeholder": "Nenhum ficheiro selecionado"
+       "ooui-selectfile-placeholder": "Nenhum ficheiro selecionado",
+       "ooui-selectfile-dragdrop-placeholder": "Soltar ficheiro aqui (ou clicar para navegar)"
 }
index 607229d..cd9c0c2 100644 (file)
@@ -32,8 +32,9 @@
        "ooui-dialog-process-dismiss": "Label for process dialog dismiss error button, visible when describing errors\n{{Identical|Dismiss}}",
        "ooui-dialog-process-retry": "Label for process dialog retry action button, visible when describing recoverable errors\n{{Identical|Try again}}",
        "ooui-dialog-process-continue": "Label for process dialog retry action button, visible when describing only warnings\n{{Identical|Continue}}",
-       "ooui-selectfile-not-supported": "Label for the file selection dialog if file selection is not supported",
-       "ooui-selectfile-placeholder": "Label for the file selection dialog when no file is currently selected",
-       "ooui-selectfile-dragdrop-placeholder": "Label for the file selection dialog when no file is currently selected in the drag drop UI. Suggests clicking to open the browse dialog.",
+       "ooui-selectfile-button-select": "Label for the file selection widget's select file button",
+       "ooui-selectfile-not-supported": "Label for the file selection widget if file selection is not supported",
+       "ooui-selectfile-placeholder": "Label for the file selection widget when no file is currently selected",
+       "ooui-selectfile-dragdrop-placeholder": "Label for the file selection widget's drop target",
        "ooui-semicolon-separator": "{{optional}} Semicolon used as a separator"
 }
index 9cd8ea3..41c2646 100644 (file)
@@ -28,5 +28,6 @@
        "ooui-dialog-process-retry": "Försök igen",
        "ooui-dialog-process-continue": "Fortsätt",
        "ooui-selectfile-not-supported": "Filval stöds inte",
-       "ooui-selectfile-placeholder": "Ingen fil är vald"
+       "ooui-selectfile-placeholder": "Ingen fil är vald",
+       "ooui-selectfile-dragdrop-placeholder": "Släpp filen här (eller klicka för att bläddra)"
 }
index 7d4252d..ff14801 100644 (file)
@@ -21,5 +21,6 @@
        "ooui-dialog-process-retry": "Thử lại",
        "ooui-dialog-process-continue": "Tiếp tục",
        "ooui-selectfile-not-supported": "Không hỗ trợ việc chọn tập tin",
-       "ooui-selectfile-placeholder": "Không có tập tin nào được chọn"
+       "ooui-selectfile-placeholder": "Không có tập tin nào được chọn",
+       "ooui-selectfile-dragdrop-placeholder": "Thả tập tin vào đây (hoặc nhấn chuột để duyệt)"
 }
index 1d07fe9..880648e 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.12.6
+ * OOjs UI v0.12.7
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-08-26T00:14:44Z
+ * Date: 2015-09-01T23:25:39Z
  */
 @-webkit-keyframes oo-ui-progressBarWidget-slide {
        from {
 }
 .oo-ui-selectFileWidget {
        display: inline-block;
-       position: relative;
        vertical-align: middle;
        width: 100%;
        max-width: 50em;
        margin-right: 0.5em;
 }
-.oo-ui-selectFileWidget-handle {
-       width: 100%;
-       display: inline-block;
-       cursor: pointer;
-       overflow: hidden;
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-          -moz-user-select: none;
-           -ms-user-select: none;
-               user-select: none;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
+.oo-ui-selectFileWidget-selectButton {
+       display: table-cell;
+       vertical-align: middle;
 }
-.oo-ui-selectFileWidget-handle > .oo-ui-indicatorElement-indicator,
-.oo-ui-selectFileWidget-handle > .oo-ui-iconElement-icon,
-.oo-ui-selectFileWidget-handle > .oo-ui-selectFileWidget-clearButton {
-       position: absolute;
+.oo-ui-selectFileWidget-selectButton > .oo-ui-buttonElement-button {
+       position: relative;
+       overflow: hidden;
 }
-.oo-ui-selectFileWidget-handle > input[type="file"] {
+.oo-ui-selectFileWidget-selectButton > .oo-ui-buttonElement-button > input[type="file"] {
        position: absolute;
        margin: 0;
        top: 0;
        opacity: 0;
        z-index: 1;
        cursor: pointer;
+       /* Push the button part of the native control out of view, as it changes the cursor */
+       padding-top: 100px;
+}
+.oo-ui-selectFileWidget-selectButton.oo-ui-widget-disabled > .oo-ui-buttonElement-button > input[type="file"] {
+       display: none;
+}
+.oo-ui-selectFileWidget-info {
+       width: 100%;
+       display: table-cell;
+       vertical-align: middle;
+       position: relative;
+       overflow: hidden;
+       -webkit-box-sizing: border-box;
+          -moz-box-sizing: border-box;
+               box-sizing: border-box;
+}
+.oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator,
+.oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon,
+.oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-clearButton {
+       position: absolute;
 }
-.oo-ui-selectFileWidget-handle > .oo-ui-selectFileWidget-clearButton {
+.oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-clearButton {
        z-index: 2;
 }
-.oo-ui-selectFileWidget.oo-ui-widget-disabled .oo-ui-selectFileWidget-handle,
-.oo-ui-selectFileWidget-notsupported .oo-ui-selectFileWidget-handle {
+.oo-ui-selectFileWidget-dropTarget {
        cursor: default;
 }
-.oo-ui-selectFileWidget.oo-ui-widget-disabled .oo-ui-selectFileWidget-handle > input[type="file"],
-.oo-ui-selectFileWidget-notsupported .oo-ui-selectFileWidget-handle > input[type="file"] {
-       display: none;
+.oo-ui-selectFileWidget-supported.oo-ui-widget-enabled .oo-ui-selectFileWidget-dropTarget {
+       cursor: pointer;
 }
 .oo-ui-selectFileWidget-empty .oo-ui-selectFileWidget-clearButton,
 .oo-ui-selectFileWidget-notsupported .oo-ui-selectFileWidget-clearButton {
 .oo-ui-selectFileWidget:last-child {
        margin-right: 0;
 }
-.oo-ui-selectFileWidget-handle {
-       height: 2.5em;
+.oo-ui-selectFileWidget-selectButton > .oo-ui-buttonElement-button {
+       margin: 0 0 0 0.5em;
+}
+.oo-ui-selectFileWidget-info {
+       height: 2.4em;
        border: 1px solid rgba(0, 0, 0, 0.1);
        border-radius: 0.25em;
        padding: 0 0.5em;
 }
-.oo-ui-selectFileWidget-handle > .oo-ui-indicatorElement-indicator {
+.oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator {
        right: 0;
 }
-.oo-ui-selectFileWidget-handle > .oo-ui-iconElement-icon {
+.oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon {
        left: 0.25em;
 }
-.oo-ui-selectFileWidget-handle .oo-ui-selectFileWidget-label {
-       line-height: 2.5em;
+.oo-ui-selectFileWidget-info .oo-ui-selectFileWidget-label {
+       line-height: 2.3em;
        margin: 0;
-       display: inline-block;
        overflow: hidden;
        width: 100%;
        white-space: nowrap;
                box-sizing: border-box;
        text-overflow: ellipsis;
 }
-.oo-ui-selectFileWidget-handle .oo-ui-selectFileWidget-clearButton {
+.oo-ui-selectFileWidget-info .oo-ui-selectFileWidget-clearButton {
        top: 0;
        width: 1.875em;
        height: 1.875em;
        margin: 0.3em;
 }
-.oo-ui-selectFileWidget-handle > .oo-ui-indicatorElement-indicator {
+.oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator {
        top: 0;
        width: 0.9375em;
        height: 0.9375em;
        margin: 0.775em;
 }
-.oo-ui-selectFileWidget-handle > .oo-ui-iconElement-icon {
+.oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon {
        top: 0;
        width: 1.875em;
        height: 1.875em;
        margin: 0.3em;
 }
-.oo-ui-selectFileWidget:hover .oo-ui-selectFileWidget-handle {
-       border-color: #aaaaaa;
-}
-.oo-ui-selectFileWidget.oo-ui-widget-disabled .oo-ui-selectFileWidget-handle {
+.oo-ui-selectFileWidget.oo-ui-widget-disabled .oo-ui-selectFileWidget-info {
        color: #cccccc;
        text-shadow: 0 1px 1px #ffffff;
        border-color: #dddddd;
        background-color: #f3f3f3;
 }
-.oo-ui-selectFileWidget.oo-ui-widget-disabled .oo-ui-selectFileWidget-handle > .oo-ui-iconElement-icon,
-.oo-ui-selectFileWidget.oo-ui-widget-disabled .oo-ui-selectFileWidget-handle > .oo-ui-indicatorElement-indicator {
+.oo-ui-selectFileWidget.oo-ui-widget-disabled .oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon,
+.oo-ui-selectFileWidget.oo-ui-widget-disabled .oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator {
        opacity: 0.2;
 }
 .oo-ui-selectFileWidget-empty .oo-ui-selectFileWidget-label {
        color: #cccccc;
 }
-.oo-ui-selectFileWidget.oo-ui-iconElement .oo-ui-selectFileWidget-handle {
+.oo-ui-selectFileWidget.oo-ui-iconElement .oo-ui-selectFileWidget-info {
        padding-left: 3em;
 }
-.oo-ui-selectFileWidget .oo-ui-selectFileWidget-handle {
+.oo-ui-selectFileWidget .oo-ui-selectFileWidget-info {
        padding-right: 3em;
 }
-.oo-ui-selectFileWidget .oo-ui-selectFileWidget-handle .oo-ui-selectFileWidget-clearButton {
+.oo-ui-selectFileWidget .oo-ui-selectFileWidget-info .oo-ui-selectFileWidget-clearButton {
        right: 0;
 }
-.oo-ui-selectFileWidget.oo-ui-indicatorElement .oo-ui-selectFileWidget-handle {
+.oo-ui-selectFileWidget.oo-ui-indicatorElement .oo-ui-selectFileWidget-info {
        padding-right: 5em;
 }
-.oo-ui-selectFileWidget.oo-ui-indicatorElement .oo-ui-selectFileWidget-handle .oo-ui-selectFileWidget-clearButton {
+.oo-ui-selectFileWidget.oo-ui-indicatorElement .oo-ui-selectFileWidget-info .oo-ui-selectFileWidget-clearButton {
        right: 2em;
 }
-.oo-ui-selectFileWidget-empty .oo-ui-selectFileWidget-handle,
-.oo-ui-selectFileWidget-notsupported .oo-ui-selectFileWidget-handle {
+.oo-ui-selectFileWidget-empty .oo-ui-selectFileWidget-info,
+.oo-ui-selectFileWidget-notsupported .oo-ui-selectFileWidget-info {
        padding-right: 1em;
 }
-.oo-ui-selectFileWidget-empty.oo-ui-indicatorElement .oo-ui-selectFileWidget-handle,
-.oo-ui-selectFileWidget-notsupported.oo-ui-indicatorElement .oo-ui-selectFileWidget-handle {
+.oo-ui-selectFileWidget-empty.oo-ui-indicatorElement .oo-ui-selectFileWidget-info,
+.oo-ui-selectFileWidget-notsupported.oo-ui-indicatorElement .oo-ui-selectFileWidget-info {
        padding-right: 2em;
 }
-.oo-ui-selectFileWidget.oo-ui-selectFileWidget-dragdrop-ui .oo-ui-selectFileWidget-handle {
-       height: 3.5em;
+.oo-ui-selectFileWidget-dropTarget {
+       line-height: 3.5em;
        border: 1px dashed #aaaaaa;
        padding: 0.5em 1em;
+       margin-bottom: 0.5em;
        background: #ffffff;
        text-align: center;
        vertical-align: middle;
 }
-.oo-ui-selectFileWidget.oo-ui-selectFileWidget-dragdrop-ui .oo-ui-selectFileWidget-handle .oo-ui-iconElement-icon {
-       margin: 0.6em 0;
-}
-.oo-ui-selectFileWidget.oo-ui-selectFileWidget-dragdrop-ui .oo-ui-selectFileWidget-handle .oo-ui-selectFileWidget-label {
-       color: #000000;
+.oo-ui-selectFileWidget-supported.oo-ui-widget-enabled .oo-ui-selectFileWidget-dropTarget:hover,
+.oo-ui-selectFileWidget-supported.oo-ui-widget-enabled.oo-ui-selectFileWidget-canDrop oo-ui-selectfilewidget-droptarget {
+       background-color: #e1f3ff;
 }
-.oo-ui-selectFileWidget.oo-ui-selectFileWidget-dragdrop-ui .oo-ui-selectFileWidget-handle:hover,
-.oo-ui-selectFileWidget.oo-ui-selectFileWidget-dragdrop-ui.oo-ui-selectFileWidget-canDrop .oo-ui-selectFileWidget-handle {
-       background-color: #eeeeee;
+.oo-ui-selectFileWidget.oo-ui-widget-disabled .oo-ui-selectFileWidget-dropTarget,
+.oo-ui-selectFileWidget-notsupported .oo-ui-selectFileWidget-dropTarget {
+       color: #cccccc;
+       text-shadow: 0 1px 1px #ffffff;
+       border-color: #dddddd;
+       background-color: #f3f3f3;
 }
 .oo-ui-outlineOptionWidget {
        position: relative;
index 6d6d46a..dc0103e 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.12.6
+ * OOjs UI v0.12.7
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-08-26T00:14:36Z
+ * Date: 2015-09-01T23:25:30Z
  */
 /**
  * @class
index f23902a..b2e5813 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.12.6
+ * OOjs UI v0.12.7
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-08-26T00:14:44Z
+ * Date: 2015-09-01T23:25:39Z
  */
 @-webkit-keyframes oo-ui-progressBarWidget-slide {
        from {
 .oo-ui-horizontalLayout > .oo-ui-widget:last-child {
        margin-right: 0;
 }
+.oo-ui-horizontalLayout .oo-ui-fieldLayout {
+       margin-bottom: 0;
+}
 .oo-ui-popupTool .oo-ui-popupWidget-popup,
 .oo-ui-popupTool .oo-ui-popupWidget-anchor {
        z-index: 4;
 }
 .oo-ui-selectFileWidget {
        display: inline-block;
-       position: relative;
        vertical-align: middle;
        width: 100%;
        max-width: 50em;
        margin-right: 0.5em;
 }
-.oo-ui-selectFileWidget-handle {
-       width: 100%;
-       display: inline-block;
-       cursor: pointer;
-       overflow: hidden;
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-          -moz-user-select: none;
-           -ms-user-select: none;
-               user-select: none;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
+.oo-ui-selectFileWidget-selectButton {
+       display: table-cell;
+       vertical-align: middle;
 }
-.oo-ui-selectFileWidget-handle > .oo-ui-indicatorElement-indicator,
-.oo-ui-selectFileWidget-handle > .oo-ui-iconElement-icon,
-.oo-ui-selectFileWidget-handle > .oo-ui-selectFileWidget-clearButton {
-       position: absolute;
+.oo-ui-selectFileWidget-selectButton > .oo-ui-buttonElement-button {
+       position: relative;
+       overflow: hidden;
 }
-.oo-ui-selectFileWidget-handle > input[type="file"] {
+.oo-ui-selectFileWidget-selectButton > .oo-ui-buttonElement-button > input[type="file"] {
        position: absolute;
        margin: 0;
        top: 0;
        opacity: 0;
        z-index: 1;
        cursor: pointer;
+       /* Push the button part of the native control out of view, as it changes the cursor */
+       padding-top: 100px;
 }
-.oo-ui-selectFileWidget-handle > .oo-ui-selectFileWidget-clearButton {
+.oo-ui-selectFileWidget-selectButton.oo-ui-widget-disabled > .oo-ui-buttonElement-button > input[type="file"] {
+       display: none;
+}
+.oo-ui-selectFileWidget-info {
+       width: 100%;
+       display: table-cell;
+       vertical-align: middle;
+       position: relative;
+       overflow: hidden;
+       -webkit-box-sizing: border-box;
+          -moz-box-sizing: border-box;
+               box-sizing: border-box;
+}
+.oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator,
+.oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon,
+.oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-clearButton {
+       position: absolute;
+}
+.oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-clearButton {
        z-index: 2;
 }
-.oo-ui-selectFileWidget.oo-ui-widget-disabled .oo-ui-selectFileWidget-handle,
-.oo-ui-selectFileWidget-notsupported .oo-ui-selectFileWidget-handle {
+.oo-ui-selectFileWidget-dropTarget {
        cursor: default;
 }
-.oo-ui-selectFileWidget.oo-ui-widget-disabled .oo-ui-selectFileWidget-handle > input[type="file"],
-.oo-ui-selectFileWidget-notsupported .oo-ui-selectFileWidget-handle > input[type="file"] {
-       display: none;
+.oo-ui-selectFileWidget-supported.oo-ui-widget-enabled .oo-ui-selectFileWidget-dropTarget {
+       cursor: pointer;
 }
 .oo-ui-selectFileWidget-empty .oo-ui-selectFileWidget-clearButton,
 .oo-ui-selectFileWidget-notsupported .oo-ui-selectFileWidget-clearButton {
 .oo-ui-selectFileWidget:last-child {
        margin-right: 0;
 }
-.oo-ui-selectFileWidget-handle {
-       height: 2.5em;
+.oo-ui-selectFileWidget-selectButton > .oo-ui-buttonElement-button {
+       margin: 0 0 0 0.5em;
+}
+.oo-ui-selectFileWidget-info {
+       height: 2.4em;
        border: 1px solid #cccccc;
        border-radius: 0.1em;
        padding: 0 1em;
-       background: #ffffff;
 }
-.oo-ui-selectFileWidget-handle > .oo-ui-indicatorElement-indicator {
+.oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator {
        right: 0;
 }
-.oo-ui-selectFileWidget-handle > .oo-ui-iconElement-icon {
+.oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon {
        left: 0.25em;
 }
-.oo-ui-selectFileWidget-handle .oo-ui-selectFileWidget-label {
-       line-height: 2.5em;
+.oo-ui-selectFileWidget-info .oo-ui-selectFileWidget-label {
+       line-height: 2.3em;
        margin: 0;
-       display: inline-block;
        overflow: hidden;
        width: 100%;
        white-space: nowrap;
                box-sizing: border-box;
        text-overflow: ellipsis;
 }
-.oo-ui-selectFileWidget-handle .oo-ui-selectFileWidget-clearButton {
+.oo-ui-selectFileWidget-info .oo-ui-selectFileWidget-clearButton {
        top: 0;
        width: 1.875em;
        height: 1.875em;
        margin: 0.3em;
 }
-.oo-ui-selectFileWidget-handle > .oo-ui-indicatorElement-indicator {
+.oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator {
        top: 0;
        width: 0.9375em;
        height: 0.9375em;
        margin: 0.775em;
 }
-.oo-ui-selectFileWidget-handle > .oo-ui-iconElement-icon {
+.oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon {
        top: 0;
        width: 1.875em;
        height: 1.875em;
        margin: 0.3em;
 }
-.oo-ui-selectFileWidget:hover .oo-ui-selectFileWidget-handle {
-       border-color: #aaaaaa;
-}
-.oo-ui-selectFileWidget.oo-ui-widget-disabled .oo-ui-selectFileWidget-handle {
+.oo-ui-selectFileWidget.oo-ui-widget-disabled .oo-ui-selectFileWidget-info {
        color: #cccccc;
        text-shadow: 0 1px 1px #ffffff;
        border-color: #dddddd;
        background-color: #f3f3f3;
 }
-.oo-ui-selectFileWidget.oo-ui-widget-disabled .oo-ui-selectFileWidget-handle > .oo-ui-iconElement-icon,
-.oo-ui-selectFileWidget.oo-ui-widget-disabled .oo-ui-selectFileWidget-handle > .oo-ui-indicatorElement-indicator {
+.oo-ui-selectFileWidget.oo-ui-widget-disabled .oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon,
+.oo-ui-selectFileWidget.oo-ui-widget-disabled .oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator {
        opacity: 0.2;
 }
 .oo-ui-selectFileWidget-empty .oo-ui-selectFileWidget-label {
        color: #cccccc;
 }
-.oo-ui-selectFileWidget.oo-ui-iconElement .oo-ui-selectFileWidget-handle {
+.oo-ui-selectFileWidget.oo-ui-iconElement .oo-ui-selectFileWidget-info {
        padding-left: 3em;
 }
-.oo-ui-selectFileWidget .oo-ui-selectFileWidget-handle {
+.oo-ui-selectFileWidget .oo-ui-selectFileWidget-info {
        padding-right: 3em;
 }
-.oo-ui-selectFileWidget .oo-ui-selectFileWidget-handle .oo-ui-selectFileWidget-clearButton {
+.oo-ui-selectFileWidget .oo-ui-selectFileWidget-info .oo-ui-selectFileWidget-clearButton {
        right: 0;
 }
-.oo-ui-selectFileWidget.oo-ui-indicatorElement .oo-ui-selectFileWidget-handle {
+.oo-ui-selectFileWidget.oo-ui-indicatorElement .oo-ui-selectFileWidget-info {
        padding-right: 5em;
 }
-.oo-ui-selectFileWidget.oo-ui-indicatorElement .oo-ui-selectFileWidget-handle .oo-ui-selectFileWidget-clearButton {
+.oo-ui-selectFileWidget.oo-ui-indicatorElement .oo-ui-selectFileWidget-info .oo-ui-selectFileWidget-clearButton {
        right: 2em;
 }
-.oo-ui-selectFileWidget-empty .oo-ui-selectFileWidget-handle,
-.oo-ui-selectFileWidget-notsupported .oo-ui-selectFileWidget-handle {
+.oo-ui-selectFileWidget-empty .oo-ui-selectFileWidget-info,
+.oo-ui-selectFileWidget-notsupported .oo-ui-selectFileWidget-info {
        padding-right: 1em;
 }
-.oo-ui-selectFileWidget-empty.oo-ui-indicatorElement .oo-ui-selectFileWidget-handle,
-.oo-ui-selectFileWidget-notsupported.oo-ui-indicatorElement .oo-ui-selectFileWidget-handle {
+.oo-ui-selectFileWidget-empty.oo-ui-indicatorElement .oo-ui-selectFileWidget-info,
+.oo-ui-selectFileWidget-notsupported.oo-ui-indicatorElement .oo-ui-selectFileWidget-info {
        padding-right: 2em;
 }
-.oo-ui-selectFileWidget.oo-ui-selectFileWidget-dragdrop-ui .oo-ui-selectFileWidget-handle {
-       height: 3.5em;
+.oo-ui-selectFileWidget-dropTarget {
+       line-height: 3.5em;
        border: 1px dashed #cccccc;
-       border-radius: 0;
        padding: 0.5em 1em;
+       margin-bottom: 0.5em;
        background: #ffffff;
        text-align: center;
        vertical-align: middle;
 }
-.oo-ui-selectFileWidget.oo-ui-selectFileWidget-dragdrop-ui .oo-ui-selectFileWidget-handle .oo-ui-iconElement-icon {
-       margin: 0.6em 0;
+.oo-ui-selectFileWidget-supported.oo-ui-widget-enabled .oo-ui-selectFileWidget-dropTarget:hover {
+       background-color: #eeeeee;
 }
-.oo-ui-selectFileWidget.oo-ui-selectFileWidget-dragdrop-ui .oo-ui-selectFileWidget-handle .oo-ui-selectFileWidget-label {
-       color: #000000;
+.oo-ui-selectFileWidget-supported.oo-ui-widget-enabled.oo-ui-selectFileWidget-canDrop .oo-ui-selectFileWidget-dropTarget {
+       background: rgba(52, 123, 255, 0.1);
 }
-.oo-ui-selectFileWidget.oo-ui-selectFileWidget-dragdrop-ui .oo-ui-selectFileWidget-handle:hover,
-.oo-ui-selectFileWidget.oo-ui-selectFileWidget-dragdrop-ui.oo-ui-selectFileWidget-canDrop .oo-ui-selectFileWidget-handle {
-       background-color: #eeeeee;
+.oo-ui-selectFileWidget.oo-ui-widget-disabled .oo-ui-selectFileWidget-dropTarget,
+.oo-ui-selectFileWidget-notsupported .oo-ui-selectFileWidget-dropTarget {
+       color: #cccccc;
+       text-shadow: 0 1px 1px #ffffff;
+       border-color: #dddddd;
+       background-color: #f3f3f3;
 }
 .oo-ui-outlineOptionWidget {
        position: relative;
index ecb210a..669fcf9 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.12.6
+ * OOjs UI v0.12.7
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-08-26T00:14:36Z
+ * Date: 2015-09-01T23:25:30Z
  */
 /**
  * @class
@@ -57,12 +57,6 @@ OO.ui.MediaWikiTheme.prototype.getElementClasses = function ( element ) {
                }
        }
 
-       if ( element instanceof OO.ui.SelectFileWidget ) {
-               if ( !element.isDisabled() && element.active ) {
-                       variants.invert = true;
-               }
-       }
-
        for ( variant in variants ) {
                classes[ variants[ variant ] ? 'on' : 'off' ].push( 'oo-ui-image-' + variant );
        }
index e5f54fc..df68873 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.12.6
+ * OOjs UI v0.12.7
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-08-26T00:14:36Z
+ * Date: 2015-09-01T23:25:30Z
  */
 ( function ( OO ) {
 
@@ -279,12 +279,14 @@ OO.ui.infuse = function ( idOrNode ) {
                'ooui-dialog-process-retry': 'Try again',
                // Label for process dialog retry action button, visible when describing only warnings
                'ooui-dialog-process-continue': 'Continue',
-               // Default placeholder for file selection widgets
+               // Label for the file selection widget's select file button
+               'ooui-selectfile-button-select': 'Select a file',
+               // Label for the file selection widget if file selection is not supported
                'ooui-selectfile-not-supported': 'File selection is not supported',
-               // Default placeholder for file selection widgets
+               // Label for the file selection widget when no file is currently selected
                'ooui-selectfile-placeholder': 'No file is selected',
-               // Default placeholder for file selection widgets when using drag drop UI
-               'ooui-selectfile-dragdrop-placeholder': 'Drop file here (or click to browse)',
+               // Label for the file selection widget's drop target
+               'ooui-selectfile-dragdrop-placeholder': 'Drop file here',
                // Semicolon separator
                'ooui-semicolon-separator': '; '
        };
@@ -5976,7 +5978,7 @@ OO.ui.mixin.LookupElement.prototype.populateLookupMenu = function () {
        var widget = this,
                value = this.getValue();
 
-       if ( this.lookupsDisabled ) {
+       if ( this.lookupsDisabled || this.isReadOnly() ) {
                return;
        }
 
@@ -6142,9 +6144,8 @@ OO.ui.mixin.LookupElement.prototype.setReadOnly = function ( readOnly ) {
        // Note: Calling #setReadOnly this way assumes this is mixed into an OO.ui.TextInputWidget
        OO.ui.TextInputWidget.prototype.setReadOnly.call( this, readOnly );
 
-       this.setLookupsDisabled( readOnly );
        // During construction, #setReadOnly is called before the OO.ui.mixin.LookupElement constructor
-       if ( readOnly && this.lookupMenu ) {
+       if ( this.isReadOnly() && this.lookupMenu ) {
                this.closeLookupMenu();
        }
 
@@ -13697,7 +13698,6 @@ OO.ui.DropdownWidget.prototype.onKeyPress = function ( e ) {
  * @mixins OO.ui.mixin.IndicatorElement
  * @mixins OO.ui.mixin.PendingElement
  * @mixins OO.ui.mixin.LabelElement
- * @mixins OO.ui.mixin.TabIndexedElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
@@ -13705,39 +13705,40 @@ OO.ui.DropdownWidget.prototype.onKeyPress = function ( e ) {
  * @cfg {string} [placeholder] Text to display when no file is selected.
  * @cfg {string} [notsupported] Text to display when file support is missing in the browser.
  * @cfg {boolean} [droppable=true] Whether to accept files by drag and drop.
- * @cfg {boolean} [dragDropUI=false] Whether to render the drag and drop UI.
+ * @cfg {boolean} [showDropTarget=false] Whether to show a drop target. Requires droppable to be true.
+ * @cfg {boolean} [dragDropUI=false] Deprecated alias for showDropTarget
  */
 OO.ui.SelectFileWidget = function OoUiSelectFileWidget( config ) {
-       var dragHandler,
-               placeholderMsg = ( config && config.dragDropUI ) ?
-                       'ooui-selectfile-dragdrop-placeholder' :
-                       'ooui-selectfile-placeholder';
+       var dragHandler;
+
+       // TODO: Remove in next release
+       if ( config && config.dragDropUI ) {
+               config.showDropTarget = true;
+       }
 
        // Configuration initialization
        config = $.extend( {
                accept: null,
-               placeholder: OO.ui.msg( placeholderMsg ),
+               placeholder: OO.ui.msg( 'ooui-selectfile-placeholder' ),
                notsupported: OO.ui.msg( 'ooui-selectfile-not-supported' ),
                droppable: true,
-               dragDropUI: false
+               showDropTarget: false
        }, config );
 
        // Parent constructor
        OO.ui.SelectFileWidget.parent.call( this, config );
 
-       // Properties (must be set before TabIndexedElement constructor call)
-       this.$handle = $( '<span>' );
-
        // Mixin constructors
        OO.ui.mixin.IconElement.call( this, config );
        OO.ui.mixin.IndicatorElement.call( this, config );
-       OO.ui.mixin.PendingElement.call( this, $.extend( {}, config, { $pending: this.$handle } ) );
+       OO.ui.mixin.PendingElement.call( this, $.extend( {}, config, { $pending: this.$info } ) );
        OO.ui.mixin.LabelElement.call( this, $.extend( {}, config, { autoFitLabel: true } ) );
-       OO.ui.mixin.TabIndexedElement.call( this, $.extend( {}, config, { $tabIndexed: this.$handle } ) );
 
        // Properties
-       this.active = false;
-       this.dragDropUI = config.dragDropUI;
+       this.$info = $( '<span>' );
+
+       // Properties
+       this.showDropTarget = config.showDropTarget;
        this.isSupported = this.constructor.static.isSupported();
        this.currentFile = null;
        if ( Array.isArray( config.accept ) ) {
@@ -13749,6 +13750,12 @@ OO.ui.SelectFileWidget = function OoUiSelectFileWidget( config ) {
        this.notsupported = config.notsupported;
        this.onFileSelectedHandler = this.onFileSelected.bind( this );
 
+       this.selectButton = new OO.ui.ButtonWidget( {
+               classes: [ 'oo-ui-selectFileWidget-selectButton' ],
+               label: 'Select a file',
+               disabled: this.disabled || !this.isSupported
+       } );
+
        this.clearButton = new OO.ui.ButtonWidget( {
                classes: [ 'oo-ui-selectFileWidget-clearButton' ],
                framed: false,
@@ -13757,7 +13764,7 @@ OO.ui.SelectFileWidget = function OoUiSelectFileWidget( config ) {
        } );
 
        // Events
-       this.$handle.on( {
+       this.selectButton.$button.on( {
                keypress: this.onKeyPress.bind( this )
        } );
        this.clearButton.connect( this, {
@@ -13765,7 +13772,7 @@ OO.ui.SelectFileWidget = function OoUiSelectFileWidget( config ) {
        } );
        if ( config.droppable ) {
                dragHandler = this.onDragEnterOrOver.bind( this );
-               this.$handle.on( {
+               this.$element.on( {
                        dragenter: dragHandler,
                        dragover: dragHandler,
                        dragleave: this.onDragLeave.bind( this ),
@@ -13777,22 +13784,20 @@ OO.ui.SelectFileWidget = function OoUiSelectFileWidget( config ) {
        this.addInput();
        this.updateUI();
        this.$label.addClass( 'oo-ui-selectFileWidget-label' );
-       this.$handle
-               .addClass( 'oo-ui-selectFileWidget-handle' )
+       this.$info
+               .addClass( 'oo-ui-selectFileWidget-info' )
                .append( this.$icon, this.$label, this.clearButton.$element, this.$indicator );
        this.$element
                .addClass( 'oo-ui-selectFileWidget' )
-               .append( this.$handle );
-       if ( config.droppable ) {
-               if ( config.dragDropUI ) {
-                       this.$element.addClass( 'oo-ui-selectFileWidget-dragdrop-ui' );
-                       this.$element.on( {
-                               mouseover: this.onMouseOver.bind( this ),
-                               mouseleave: this.onMouseLeave.bind( this )
+               .append( this.$info, this.selectButton.$element );
+       if ( config.droppable && config.showDropTarget ) {
+               this.$dropTarget = $( '<div>' )
+                       .addClass( 'oo-ui-selectFileWidget-dropTarget' )
+                       .text( OO.ui.msg( 'ooui-selectfile-dragdrop-placeholder' ) )
+                       .on( {
+                               click: this.onDropTargetClick.bind( this )
                        } );
-               } else {
-                       this.$element.addClass( 'oo-ui-selectFileWidget-droppable' );
-               }
+               this.$element.prepend( this.$dropTarget );
        }
 };
 
@@ -13803,7 +13808,6 @@ OO.mixinClass( OO.ui.SelectFileWidget, OO.ui.mixin.IconElement );
 OO.mixinClass( OO.ui.SelectFileWidget, OO.ui.mixin.IndicatorElement );
 OO.mixinClass( OO.ui.SelectFileWidget, OO.ui.mixin.PendingElement );
 OO.mixinClass( OO.ui.SelectFileWidget, OO.ui.mixin.LabelElement );
-OO.mixinClass( OO.ui.SelectFileWidget, OO.ui.mixin.TabIndexedElement );
 
 /* Static Properties */
 
@@ -13868,14 +13872,17 @@ OO.ui.SelectFileWidget.prototype.updateUI = function () {
                this.$element.addClass( 'oo-ui-selectFileWidget-notsupported' );
                this.$element.removeClass( 'oo-ui-selectFileWidget-empty' );
                this.setLabel( this.notsupported );
-       } else if ( this.currentFile ) {
-               this.$element.removeClass( 'oo-ui-selectFileWidget-empty' );
-               this.setLabel( this.currentFile.name +
-                       ( this.currentFile.type !== '' ? OO.ui.msg( 'ooui-semicolon-separator' ) + this.currentFile.type : '' )
-               );
        } else {
-               this.$element.addClass( 'oo-ui-selectFileWidget-empty' );
-               this.setLabel( this.placeholder );
+               this.$element.addClass( 'oo-ui-selectFileWidget-supported' );
+               if ( this.currentFile ) {
+                       this.$element.removeClass( 'oo-ui-selectFileWidget-empty' );
+                       this.setLabel( this.currentFile.name +
+                               ( this.currentFile.type !== '' ? OO.ui.msg( 'ooui-semicolon-separator' ) + this.currentFile.type : '' )
+                       );
+               } else {
+                       this.$element.addClass( 'oo-ui-selectFileWidget-empty' );
+                       this.setLabel( this.placeholder );
+               }
        }
 
        if ( this.$input ) {
@@ -13884,7 +13891,7 @@ OO.ui.SelectFileWidget.prototype.updateUI = function () {
 };
 
 /**
- * Add the input to the handle
+ * Add the input to the widget
  *
  * @private
  */
@@ -13907,31 +13914,30 @@ OO.ui.SelectFileWidget.prototype.addInput = function () {
        if ( this.accept ) {
                this.$input.attr( 'accept', this.accept.join( ', ' ) );
        }
-       this.$handle.append( this.$input );
+       this.selectButton.$button.append( this.$input );
 };
 
 /**
  * Determine if we should accept this file
  *
  * @private
- * @param {File} file
+ * @param {string} File MIME type
  * @return {boolean}
  */
-OO.ui.SelectFileWidget.prototype.isFileAcceptable = function ( file ) {
-       var i, mime, mimeTest;
+OO.ui.SelectFileWidget.prototype.isAllowedType = function ( mimeType ) {
+       var i, mimeTest;
 
-       if ( !this.accept || file.type === '' ) {
+       if ( !this.accept || !mimeType ) {
                return true;
        }
 
-       mime = file.type;
        for ( i = 0; i < this.accept.length; i++ ) {
                mimeTest = this.accept[ i ];
-               if ( mimeTest === mime ) {
+               if ( mimeTest === mimeType ) {
                        return true;
                } else if ( mimeTest.substr( -2 ) === '/*' ) {
                        mimeTest = mimeTest.substr( 0, mimeTest.length - 1 );
-                       if ( mime.substr( 0, mimeTest.length ) === mimeTest ) {
+                       if ( mimeType.substr( 0, mimeTest.length ) === mimeTest ) {
                                return true;
                        }
                }
@@ -13947,13 +13953,10 @@ OO.ui.SelectFileWidget.prototype.isFileAcceptable = function ( file ) {
  * @param {jQuery.Event} e
  */
 OO.ui.SelectFileWidget.prototype.onFileSelected = function ( e ) {
-       var file = null;
+       var file = OO.getProp( e.target, 'files', 0 ) || null;
 
-       if ( e.target.files && e.target.files[ 0 ] ) {
-               file = e.target.files[ 0 ];
-               if ( !this.isFileAcceptable( file ) ) {
-                       file = null;
-               }
+       if ( file && !this.isAllowedType( file.type ) ) {
+               file = null;
        }
 
        this.setValue( file );
@@ -13985,6 +13988,19 @@ OO.ui.SelectFileWidget.prototype.onKeyPress = function ( e ) {
        }
 };
 
+/**
+ * Handle drop target click events.
+ *
+ * @private
+ * @param {jQuery.Event} e Key press event
+ */
+OO.ui.SelectFileWidget.prototype.onDropTargetClick = function () {
+       if ( this.isSupported && !this.isDisabled() && this.$input ) {
+               this.$input.click();
+               return false;
+       }
+};
+
 /**
  * Handle drag enter and over events
  *
@@ -13992,7 +14008,8 @@ OO.ui.SelectFileWidget.prototype.onKeyPress = function ( e ) {
  * @param {jQuery.Event} e Drag event
  */
 OO.ui.SelectFileWidget.prototype.onDragEnterOrOver = function ( e ) {
-       var file = null,
+       var itemOrFile,
+               droppableFile = false,
                dt = e.originalEvent.dataTransfer;
 
        e.preventDefault();
@@ -14000,28 +14017,27 @@ OO.ui.SelectFileWidget.prototype.onDragEnterOrOver = function ( e ) {
 
        if ( this.isDisabled() || !this.isSupported ) {
                this.$element.removeClass( 'oo-ui-selectFileWidget-canDrop' );
-               this.setActive( false );
                dt.dropEffect = 'none';
                return false;
        }
 
-       if ( dt && dt.files && dt.files[ 0 ] ) {
-               file = dt.files[ 0 ];
-               if ( !this.isFileAcceptable( file ) ) {
-                       file = null;
+       // DataTransferItem and File both have a type property, but in Chrome files
+       // have no information at this point.
+       itemOrFile = OO.getProp( dt, 'items', 0 ) || OO.getProp( dt, 'files', 0 );
+       if ( itemOrFile ) {
+               if ( this.isAllowedType( itemOrFile.type ) ) {
+                       droppableFile = true;
                }
-       } else if ( dt && dt.types && dt.types.indexOf( 'Files' ) !== -1 ) {
-               // We know we have files so set 'file' to something truthy, we just
-               // can't know any details about them.
-               // * https://bugzilla.mozilla.org/show_bug.cgi?id=640534
-               file = 'Files exist, but details are unknown';
+       // dt.types is Array-like, but not an Array
+       } else if ( Array.prototype.indexOf.call( OO.getProp( dt, 'types' ) || [], 'Files' ) !== -1 ) {
+               // File information is not available at this point for security so just assume
+               // it is acceptable for now.
+               // https://bugzilla.mozilla.org/show_bug.cgi?id=640534
+               droppableFile = true;
        }
-       if ( file ) {
-               this.$element.addClass( 'oo-ui-selectFileWidget-canDrop' );
-               this.setActive( true );
-       } else {
-               this.$element.removeClass( 'oo-ui-selectFileWidget-canDrop' );
-               this.setActive( false );
+
+       this.$element.toggleClass( 'oo-ui-selectFileWidget-canDrop', droppableFile );
+       if ( !droppableFile ) {
                dt.dropEffect = 'none';
        }
 
@@ -14036,7 +14052,6 @@ OO.ui.SelectFileWidget.prototype.onDragEnterOrOver = function ( e ) {
  */
 OO.ui.SelectFileWidget.prototype.onDragLeave = function () {
        this.$element.removeClass( 'oo-ui-selectFileWidget-canDrop' );
-       this.setActive( false );
 };
 
 /**
@@ -14052,17 +14067,14 @@ OO.ui.SelectFileWidget.prototype.onDrop = function ( e ) {
        e.preventDefault();
        e.stopPropagation();
        this.$element.removeClass( 'oo-ui-selectFileWidget-canDrop' );
-       this.setActive( false );
 
        if ( this.isDisabled() || !this.isSupported ) {
                return false;
        }
 
-       if ( dt && dt.files && dt.files[ 0 ] ) {
-               file = dt.files[ 0 ];
-               if ( !this.isFileAcceptable( file ) ) {
-                       file = null;
-               }
+       file = OO.getProp( dt, 'files', 0 );
+       if ( file && !this.isAllowedType( file.type ) ) {
+               file = null;
        }
        if ( file ) {
                this.setValue( file );
@@ -14071,47 +14083,16 @@ OO.ui.SelectFileWidget.prototype.onDrop = function ( e ) {
        return false;
 };
 
-/**
- * Handle mouse over events.
- *
- * @private
- * @param {jQuery.Event} e Mouse over event
- */
-OO.ui.SelectFileWidget.prototype.onMouseOver = function () {
-       this.setActive( true );
-};
-
-/**
- * Handle mouse leave events.
- *
- * @private
- * @param {jQuery.Event} e Mouse over event
- */
-OO.ui.SelectFileWidget.prototype.onMouseLeave = function () {
-       this.setActive( false );
-};
-
 /**
  * @inheritdoc
  */
-OO.ui.SelectFileWidget.prototype.setDisabled = function ( state ) {
-       OO.ui.SelectFileWidget.parent.prototype.setDisabled.call( this, state );
-       if ( this.clearButton ) {
-               this.clearButton.setDisabled( state );
+OO.ui.SelectFileWidget.prototype.setDisabled = function ( disabled ) {
+       OO.ui.SelectFileWidget.parent.prototype.setDisabled.call( this, disabled );
+       if ( this.selectButton ) {
+               this.selectButton.setDisabled( disabled );
        }
-       return this;
-};
-
-/**
- * Set 'active' (hover) state, only matters for widgets with `dragDropUI: true`.
- *
- * @param {boolean} value Whether widget is active
- * @chainable
- */
-OO.ui.SelectFileWidget.prototype.setActive = function ( value ) {
-       if ( this.dragDropUI ) {
-               this.active = value;
-               this.updateThemeClasses();
+       if ( this.clearButton ) {
+               this.clearButton.setDisabled( disabled );
        }
        return this;
 };
index 9769e03..3709f21 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/advanced.png and b/resources/lib/oojs-ui/themes/apex/images/icons/advanced.png differ
index 4922543..8d96876 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="settings">
-        <path id="gear" d="M20.87 13.476c.078-.482.13-.972.13-1.476s-.052-.994-.13-1.476l-2.464-.26c-.15-.555-.367-1.08-.648-1.57l1.558-1.923c-.576-.803-1.28-1.51-2.087-2.084l-1.927 1.558c-.488-.28-1.015-.5-1.57-.648l-.26-2.463C12.996 3.053 12.506 3 12 3s-.994.052-1.476.13l-.26 2.464c-.554.15-1.08.367-1.57.648L6.772 4.685c-.804.576-1.51 1.28-2.085 2.086l1.558 1.927c-.28.488-.5 1.015-.648 1.57l-2.463.26c-.08.48-.132.97-.132 1.475s.052.995.13 1.477l2.464.26c.15.554.367 1.08.648 1.57l-1.558 1.92c.576.805 1.28 1.51 2.087 2.086l1.925-1.558c.488.28 1.015.5 1.57.648l.26 2.463c.48.076.97.13 1.475.13s.994-.054 1.476-.13l.26-2.466c.553-.15 1.08-.367 1.57-.648l1.92 1.558c.806-.576 1.51-1.28 2.087-2.087l-1.558-1.925c.28-.488.5-1.015.647-1.57l2.463-.26zM12 15.998c-2.21 0-3.998-1.79-3.998-3.998S9.792 8.002 12 8.002s3.998 1.79 3.998 3.998-1.79 3.998-3.998 3.998z"/>
+        <path id="gear" d="M20.87 13.476c.078-.482.13-.972.13-1.476s-.052-.994-.13-1.476l-2.464-.26c-.15-.555-.367-1.08-.648-1.57l1.558-1.923c-.576-.802-1.28-1.51-2.087-2.083L15.3 6.245c-.488-.28-1.015-.5-1.57-.648l-.26-2.463C12.996 3.054 12.506 3 12 3s-.994.052-1.476.13l-.26 2.464c-.554.15-1.08.367-1.57.648L6.772 4.685c-.804.576-1.51 1.28-2.085 2.086L6.245 8.7c-.28.488-.5 1.015-.648 1.57l-2.463.26c-.08.48-.132.97-.132 1.475s.052.995.13 1.477l2.464.26c.15.554.367 1.08.648 1.57l-1.558 1.92c.576.805 1.28 1.51 2.087 2.086l1.925-1.558c.488.28 1.015.5 1.57.648l.26 2.463c.48.075.97.13 1.475.13s.994-.055 1.476-.13l.26-2.467c.552-.15 1.08-.367 1.57-.648l1.92 1.558c.805-.576 1.51-1.28 2.086-2.087L17.758 15.3c.28-.487.5-1.014.647-1.57l2.463-.26zM12 15.998c-2.21 0-3.998-1.79-3.998-3.998S9.792 8.002 12 8.002s3.998 1.79 3.998 3.998-1.79 3.998-3.998 3.998z"/>
     </g>
 </svg>
index 918c5b6..1c2abb7 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="arched-arrow-ltr">
-        <path id="arrow" d="M19.925 14.937l-2.39-6.9-1.48 2.328c-.965-.845-2.7-1.85-5.514-1.823-4.884.046-6.52 4.244-6.52 4.244s2.752-2.64 6.924-1.95c1.73.287 3.007 1.207 3.675 1.792l-1.475 2.32 6.782-.01z"/>
+        <path id="arrow" d="M19.925 14.937l-2.39-6.9-1.48 2.328c-.965-.845-2.7-1.85-5.514-1.823-4.883.046-6.52 4.244-6.52 4.244s2.753-2.64 6.925-1.95c1.73.287 3.007 1.207 3.675 1.792l-1.475 2.32 6.782-.01z"/>
     </g>
 </svg>
index ad07634..e9dce68 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/bold-arab-ain.png and b/resources/lib/oojs-ui/themes/apex/images/icons/bold-arab-ain.png differ
index 2f0edb7..23ed091 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="bold-arab-ain">
-        <path id="arab-ain" d="M9.337 13.616c0 1.35 1.386 2.1 4.16 2.258l2.186-.03.318.045c-.03.124-.25.342-.662.65l-.09.065c-1.235.93-2.422 1.393-3.56 1.393-1.142 0-2.045-.33-2.71-.99-.65-.66-.975-1.56-.975-2.7.006-1.353.567-2.572 1.685-3.657v-.043l-.606-.55c-.15-.18-.222-.39-.222-.63 0-.49.24-1.11.717-1.863.65-1.046 1.303-1.566 1.958-1.56.886.004 1.618.42 2.194 1.245.324.48-.03.55-1.065.22-.842-.328-1.527-.05-2.054.827l.015.074 1.123.866.052.005c1.403-.497 2.417-.74 3.042-.725-.058.116-.14.36-.243.732-.105.357-.206.684-.305.982l-.126.373-.385.05c-1.743.24-2.992.716-3.745 1.43-.463.463-.697.972-.702 1.524"/>
+        <path id="arab-ain" d="M9.337 13.616c0 1.35 1.386 2.1 4.16 2.258l2.186-.03.318.045c-.03.123-.25.34-.66.65l-.09.064c-1.236.93-2.423 1.393-3.56 1.393-1.143 0-2.046-.33-2.71-.99-.65-.66-.976-1.56-.976-2.7.006-1.353.567-2.572 1.685-3.657v-.043l-.607-.55c-.15-.18-.222-.39-.222-.63 0-.49.24-1.11.718-1.863.65-1.046 1.303-1.566 1.958-1.56.886.004 1.618.42 2.194 1.245.324.48-.03.55-1.065.22-.842-.33-1.527-.05-2.054.826l.016.074 1.123.866.05.005c1.404-.496 2.418-.74 3.043-.724-.058.116-.14.36-.243.732-.105.357-.206.684-.305.982l-.126.373-.386.05c-1.743.24-2.992.716-3.745 1.43-.464.463-.698.972-.703 1.524"/>
     </g>
 </svg>
index 0ade40c..46d579b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/bold-arab-dad.png and b/resources/lib/oojs-ui/themes/apex/images/icons/bold-arab-dad.png differ
index ba7ffe1..7e6769d 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="bold-arab-dad">
-        <path id="arab-dad" d="M16.41 8.232l-1.675-.665L15.43 6l1.687.64-.707 1.592m.775 3.078c-.51-.286-1-.427-1.476-.423-.474 0-.985.205-1.535.616l-.506.38.006.024c1.084.066 1.934.1 2.55.1h.314c.57-.022.994-.065 1.278-.132-.067-.17-.275-.36-.625-.566h-.006m-6.803 3.293c-.017-.904-.33-1.87-.938-2.898l1.294-1.73.118.15c.267.336.504.924.713 1.766l.066.05c.496-.007.942-.17 1.338-.484v-.006l1.732-1.53c.68-.6 1.282-.9 1.807-.9.384.003.85.194 1.395.57.55.378.884.697 1 .96.063.15.094.385.094.71 0 .694-.11 1.227-.33 1.596-.193.31-.474.555-.845.734-.438.208-1.55.312-3.333.312-.8 0-1.794-.02-2.982-.062l-.144.43c-.254.67-.463 1.112-.625 1.323-.725.937-1.786 1.405-3.183 1.405C5.85 16.99 5 16.076 5 14.256c.003-.94.278-1.814.824-2.618.15-.216.298-.367.444-.454.225-.133.288-.09.188.124-.396.862-.596 1.548-.6 2.058.008 1.177.752 1.768 2.232 1.772 1.038-.004 1.803-.182 2.295-.535"/>
+        <path id="arab-dad" d="M16.41 8.232l-1.675-.665L15.43 6l1.687.64-.707 1.592m.775 3.078c-.51-.286-1-.427-1.476-.423-.475 0-.986.205-1.536.616l-.506.38.006.024c1.084.066 1.934.1 2.55.1h.314c.57-.022.994-.065 1.278-.132-.067-.17-.275-.36-.625-.566h-.005M10.382 14.6c-.017-.904-.33-1.87-.938-2.898l1.294-1.73.118.15c.267.336.504.924.713 1.766l.065.05c.496-.007.942-.17 1.338-.484v-.006l1.732-1.53c.68-.6 1.282-.9 1.807-.9.384.003.85.194 1.395.57.55.378.884.697 1 .96.063.15.094.385.094.71 0 .694-.11 1.227-.33 1.596-.192.31-.473.555-.844.734-.438.208-1.55.312-3.333.312-.8 0-1.794-.02-2.982-.062l-.143.43c-.254.67-.463 1.112-.625 1.323-.725.937-1.786 1.405-3.183 1.405C5.85 16.99 5 16.076 5 14.256c.003-.94.278-1.814.824-2.618.15-.216.298-.367.444-.454.225-.133.288-.09.188.124-.396.862-.596 1.548-.6 2.058.008 1.177.752 1.768 2.232 1.772 1.038-.004 1.803-.182 2.295-.535"/>
     </g>
 </svg>
index 0a16f8c..5e16e38 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/bold-armn-to.png and b/resources/lib/oojs-ui/themes/apex/images/icons/bold-armn-to.png differ
index 0dc8b52..7471d1a 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="bold-armn-to">
-        <path id="armn-to" d="M13.86 16.257c.124 0 .254-.026.39-.078.135-.06.257-.15.367-.277.114-.13.205-.302.273-.516.073-.214.11-.48.11-.798V13h-1.14c-.14 0-.284.026-.43.078-.14.047-.27.133-.383.258-.11.125-.2.294-.274.508-.067.213-.1.487-.1.82 0 .34.035.47.108.695.08.215.178.392.29.53.12.133.25.23.386.29.14.05.276.074.406.074m-2.97-7.84c-.37.082-.694.247-.975.45-.28.198-.505.47-.672.813-.16.342-.242.78-.242 1.31V18H6v-7.188c0-.776.15-1.455.453-2.04.302-.587.714-1.077 1.234-1.467.52-.39 1.13-.685 1.83-.883.697-.198 1.44-.297 2.225-.297.526 0 1.04.044 1.54.133.504.088.98.22 1.43.398.447.172.858.388 1.233.65.375.26.698.564.97.913.275.345.49.735.64 1.17.15.43.226 1.09.226 1.61h1.356v2.04H17.78v1.6c0 .58-.103 1.09-.31 1.54-.21.44-.49.812-.845 1.114-.35.302-.834.53-1.297.687-.464.15-.953.227-1.47.227-.51 0-.996-.08-1.46-.235-.464-.156-.87-.39-1.22-.703-.348-.314-.626-.704-.835-1.173-.203-.473-.304-1.028-.304-1.663s.102-1.182.32-1.64c.21-.46.494-.685.85-.977.352-.297.76-.513 1.22-.648.455-.14.932-.21 1.43-.21h1.13c-.01-.49-.04-1.044-.24-1.36-.2-.324-.456-.58-.77-.767-.31-.193-.597-.332-.983-.426-.375-.09-.578-.094-1.1-.094-.52 0-.64.02-1.01.102z"/>
+        <path id="armn-to" d="M13.86 16.257c.124 0 .254-.026.39-.078.135-.06.257-.15.367-.278.114-.13.205-.302.273-.516.073-.214.11-.48.11-.798V13h-1.14c-.14 0-.284.026-.43.078-.14.047-.27.133-.383.258-.11.125-.2.294-.274.508-.067.213-.1.487-.1.82 0 .34.035.47.108.695.08.214.18.39.29.53.12.132.25.23.387.29.14.05.276.073.406.073m-2.97-7.84c-.37.082-.694.247-.975.45-.28.198-.505.47-.672.813-.16.342-.242.78-.242 1.31V18H6v-7.188c0-.776.15-1.455.453-2.04.302-.587.714-1.077 1.234-1.467.52-.39 1.13-.685 1.83-.883.697-.198 1.44-.297 2.225-.297.526 0 1.04.044 1.54.133.504.088.98.22 1.43.398.447.172.858.388 1.233.65.375.26.698.564.97.913.275.344.49.734.64 1.17.15.43.226 1.09.226 1.61h1.357v2.04H17.78v1.6c0 .58-.103 1.09-.31 1.54-.21.44-.49.81-.845 1.113-.35.302-.834.53-1.297.687-.464.15-.953.227-1.47.227-.51 0-.996-.08-1.46-.235-.464-.156-.87-.39-1.22-.703-.348-.315-.626-.705-.835-1.174-.203-.473-.304-1.028-.304-1.663s.1-1.182.32-1.64c.21-.46.493-.685.85-.977.35-.297.76-.513 1.22-.648.454-.14.93-.21 1.43-.21h1.13c-.01-.49-.04-1.044-.24-1.36-.2-.324-.457-.58-.77-.767-.31-.192-.598-.33-.984-.425-.375-.09-.578-.094-1.1-.094-.52 0-.64.02-1.01.103z"/>
     </g>
 </svg>
index d87d0fc..383ef32 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="bold-cyrl-be">
-        <path id="cyrl-be" d="M7 6h9v2h-6v3h2.65c.892 0 1.632.11 2.22.327.587.218 1.087.622 1.5 1.21.42.59.63 1.188.63 1.98 0 .812-.21 1.397-.63 1.976-.418.578-.897.974-1.436 1.187-.533.213-1.295.32-2.286.32h-5.65m4.768-2c.75 0 1.28-.05 1.584-.12.305-.077.57-.247.792-.51.23-.26.343-.472.343-.854 0-.557-.2-.868-.596-1.12-.395-.255-1.067-.397-2.02-.397H10v3"/>
+        <path id="cyrl-be" d="M7 6h9v2h-6v3h2.65c.892 0 1.632.11 2.22.327.587.218 1.087.622 1.5 1.21.42.59.63 1.188.63 1.98 0 .812-.21 1.397-.63 1.976-.418.578-.897.974-1.436 1.187-.533.213-1.295.32-2.286.32h-5.65m4.768-2c.75 0 1.28-.05 1.584-.12.305-.077.57-.247.792-.51.23-.26.343-.472.343-.854 0-.557-.2-.868-.596-1.12-.396-.255-1.068-.397-2.02-.397H10v3"/>
     </g>
 </svg>
index 3c0a879..e349905 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="bold-cyrl-zhe">
-        <path id="cyrl-zhe" d="M13 6v5.154c.328-.033.537-.18.705-.447.168-.266.4-.873.698-1.82.39-1.242.79-2.034 1.197-2.375.403-.336 1.075-.504 2.014-.504L18 6v1.78l-.386-.008c-.4 0-.69.062-.878.187-.186.116-.337.3-.452.55-.115.25-.286.762-.512 1.537-.12.41-.25.755-.392 1.032-.137.275-.383.536-.738.78.44.156.8.465 1.084.926.288.454.603 1.102.944 1.942L18 18h-2.314l-1.17-3.08-.113-.253-.24-.56c-.247-.57-.45-.933-.61-1.09-.16-.157-.318-.236-.553-.236V18h-2v-5.22c-.226 0-.382.077-.546.23-.164.15-.368.517-.612 1.097l-.246.56-.113.253L8.313 18H6l1.33-3.267c.327-.808.635-1.447.923-1.92.293-.476.663-.793 1.11-.95-.355-.244-.603-.5-.745-.772-.137-.273-.268-.62-.392-1.04-.222-.76-.39-1.264-.505-1.52-.11-.253-.26-.442-.45-.57-.185-.122-.49-.184-.916-.184L6 7.782v-1.78l.386.008c.953 0 1.63.17 2.034.512.4.347.79 1.136 1.177 2.366.3.954.534 1.564.698 1.83.168.26.377.405.705.438V6.002"/>
+        <path id="cyrl-zhe" d="M13 6v5.154c.328-.033.537-.18.705-.447.168-.266.4-.873.698-1.82.39-1.242.79-2.034 1.197-2.375.403-.336 1.075-.504 2.014-.504L18 6v1.78l-.386-.008c-.4 0-.69.062-.878.187-.186.115-.337.3-.452.55-.115.25-.286.76-.512 1.536-.12.41-.25.755-.392 1.032-.137.275-.383.536-.738.78.44.156.8.465 1.084.926.288.454.603 1.102.944 1.942L18 18h-2.314l-1.17-3.08-.113-.253-.24-.56c-.247-.57-.45-.933-.61-1.09-.16-.157-.318-.236-.553-.236V18h-2v-5.22c-.226 0-.382.077-.546.23-.164.15-.368.517-.612 1.097l-.246.56-.113.253L8.313 18H6l1.33-3.267c.327-.808.635-1.447.923-1.92.293-.476.663-.793 1.11-.95-.355-.244-.603-.5-.745-.772-.137-.272-.268-.62-.392-1.04-.222-.76-.39-1.263-.505-1.52-.11-.252-.26-.44-.45-.57-.184-.12-.49-.183-.915-.183L6 7.782v-1.78l.386.008c.953 0 1.63.17 2.034.512.4.347.79 1.136 1.177 2.366.3.954.534 1.564.698 1.83.168.26.377.405.705.438V6.002"/>
     </g>
 </svg>
index e809453..cc4be63 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/bold-g.png and b/resources/lib/oojs-ui/themes/apex/images/icons/bold-g.png differ
index 277f17e..05b46e2 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="bold-g">
-        <path id="g" d="M12 14v-2h5v4.203c-.497.475-1.22.894-2.166 1.26-.94.358-1.896.537-2.864.537-1.23 0-2.303-.253-3.217-.76-.915-.512-1.602-1.24-2.062-2.185-.46-.95-.69-1.982-.69-3.095 0-1.208.26-2.282.77-3.222.516-.94 1.268-1.66 2.258-2.16.754-.386 1.693-.58 2.816-.58 1.46 0 2.6.304 3.418.91.825.603 1.354 1.436 1.59 2.502l-2.36.435c-.165-.57-.48-1.018-.94-1.346-.453-.335-1.022-.5-1.707-.5-1.038 0-1.864.323-2.48.972-.61.65-.914 1.612-.914 2.89 0 1.376.31 2.41.93 3.102.62.686 1.434 1.03 2.44 1.03.497 0 .995-.096 1.49-.286.505-.196 1.334-.57 1.69-.846v-.867"/>
+        <path id="g" d="M12 14v-2h5v4.203c-.497.475-1.22.894-2.166 1.26-.94.358-1.896.537-2.864.537-1.23 0-2.303-.253-3.217-.76-.915-.512-1.602-1.24-2.062-2.185-.46-.95-.69-1.982-.69-3.095 0-1.208.26-2.282.77-3.222.517-.94 1.27-1.66 2.26-2.16.753-.386 1.692-.58 2.815-.58 1.46 0 2.6.304 3.418.91.825.603 1.354 1.436 1.59 2.502l-2.36.435c-.165-.57-.48-1.018-.94-1.346-.453-.336-1.022-.5-1.707-.5-1.038 0-1.864.322-2.48.97-.61.65-.914 1.613-.914 2.89 0 1.377.31 2.41.93 3.103.62.686 1.434 1.03 2.44 1.03.497 0 .995-.096 1.49-.286.505-.196 1.334-.57 1.69-.846v-.866"/>
     </g>
 </svg>
index 1b0a659..f36e52c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/case-sensitive.png and b/resources/lib/oojs-ui/themes/apex/images/icons/case-sensitive.png differ
index 8de2583..2f0e406 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="regular-expression">
-        <path id="upper-case" d="M7.53 7L4 17h2.063l.72-2.406h3.624l.72 2.406h2.062L9.655 7H7.533zm1.064 1.53L9.938 13H7.25l1.344-4.47z"/>
-        <path id="lower-case" d="M18.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.444.25-.564 0-.955-.208-1.377-.625-.42-.418-.628-1.012-.628-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.322-.04v-.335c0-.772-.395-1.158-1.186-1.158-.61 0-1.325.18-2.147.55l-.688-1.4c.877-.46 1.85-.69 2.916-.69 1.024 0 1.59.22 2.134.666.545.445.818 1.12.818 2.03V17h-1.45m-.394-3.527l-.803.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .583.336.875 1.008.875.48 0 .865-.138 1.152-.415.29-.276.436-.644.436-1.102v-.627"/>
+        <path id="upper-case" d="M7.53 7L4 17h2.063l.72-2.406h3.624l.72 2.406h2.062L9.654 7H7.533zm1.064 1.53L9.938 13H7.25l1.344-4.47z"/>
+        <path id="lower-case" d="M18.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.443.25-.564 0-.955-.208-1.377-.625-.42-.418-.628-1.012-.628-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.322-.04v-.335c0-.772-.395-1.158-1.186-1.158-.61 0-1.325.18-2.147.55l-.688-1.4c.877-.46 1.85-.69 2.916-.69 1.024 0 1.59.22 2.134.665.545.445.818 1.12.818 2.03V17h-1.45m-.394-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .582.336.874 1.008.874.48 0 .865-.138 1.152-.415.29-.277.436-.645.436-1.103v-.627"/>
     </g>
 </svg>
index 4eedfbc..86dc8b3 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/close.png and b/resources/lib/oojs-ui/themes/apex/images/icons/close.png differ
index f05a965..d058d65 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="close">
-        <path id="x" d="M18.717 6.697l-1.414-1.414L12 10.586 6.697 5.283 5.283 6.697 10.586 12l-5.303 5.303 1.414 1.414L12 13.414l5.303 5.303 1.414-1.414L13.414 12z"/>
+        <path id="cross" d="M17.717 7.697l-1.414-1.414L12 10.586 7.697 6.283 6.283 7.697 10.586 12l-4.303 4.303 1.414 1.414L12 13.414l4.303 4.303 1.414-1.414L13.414 12z"/>
     </g>
 </svg>
index ee58c9a..6e678e2 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/code.png and b/resources/lib/oojs-ui/themes/apex/images/icons/code.png differ
index fe5309d..d3893b0 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24">
     <g id="code">
-        <path id="left-bracket" d="M4 12v-1h1c1 0 1 0 1-1V7.614c0-.514.024-.896.073-1.142.054-.252.14-.463.257-.633.204-.28.473-.478.808-.587C7.473 5.14 8.01 5 8.973 5H10v1h-.752c-.457 0-.77.19-.936.408C8.145 6.623 8 6.853 8 7.476v1.857c0 .73-.04 1.18-.244 1.493-.2.307-.562.53-1.09.667.535.155.9.385 1.096.688.2.306.238.76.238 1.487v1.862c0 .62.145.847.312 1.06.166.22.48.407.936.407L10 17v1H8.973c-.963 0-1.5-.133-1.835-.248-.335-.11-.604-.307-.808-.59-.118-.166-.203-.375-.257-.626-.05-.253-.073-.636-.073-1.15V13c0-1 0-1-1-1H4z"/>
+        <path id="left-bracket" d="M4 12v-1h1c1 0 1 0 1-1V7.614c0-.514.024-.896.073-1.142.054-.252.14-.463.257-.633.204-.28.473-.48.808-.588C7.473 5.14 8.01 5 8.973 5H10v1h-.752c-.457 0-.77.19-.936.408C8.145 6.623 8 6.853 8 7.476v1.857c0 .73-.04 1.18-.244 1.493-.2.307-.562.53-1.09.667.535.155.9.385 1.096.688.2.307.238.76.238 1.488v1.862c0 .62.145.847.312 1.06.166.22.48.407.936.407L10 17v1H8.973c-.963 0-1.5-.133-1.835-.248-.335-.11-.604-.307-.808-.59-.118-.166-.203-.375-.257-.626-.05-.253-.073-.636-.073-1.15V13c0-1 0-1-1-1H4z"/>
         <use transform="matrix(-1 0 0 1 24 0)" id="right-bracket" width="24" height="24" xlink:href="#left-bracket"/>
     </g>
 </svg>
index 10927e1..4b59b2a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/external-link-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/external-link-ltr.png differ
index e836361..1d7980d 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="external">
-        <path id="box" d="M2 2h3v1H3v6h6V7h1v3H2z"/>
-        <path id="arrow" d="M6.21 2H10v3.79L8.58 4.367 6.446 6.5 5.5 5.553 7.632 3.42z"/>
+        <path id="box" d="M4 4h6v2H6v12h12v-4h2v6H4z"/>
+        <path id="arrow" d="M12.42 4H20v7.58l-2.84-2.846L12.892 13 11 11.106l4.264-4.266z"/>
     </g>
 </svg>
index 7a3454e..2978654 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/external-link-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/external-link-rtl.png differ
index 9fdc8ca..7e25d03 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="external">
-        <path id="box" d="M7 3h2v6H3V7H2v3h8V2H7z"/>
-        <path id="arrow" d="M2 5.79l1.42-1.422L5.554 6.5l.947-.947L4.37 3.42 5.788 2H2z"/>
+        <path id="box" d="M20 4h-6v2h4v12H6v-4H4v6h16z"/>
+        <path id="arrow" d="M11.58 4H4v7.58l2.84-2.846L11.108 13 13 11.106 8.736 6.84z"/>
     </g>
 </svg>
index 5c66688..9f418b8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/find-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/find-ltr.png differ
index bbfdaa0..67e6943 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="find">
-        <path id="magnifying-glass" d="M13.656 11c-1.92 0-3.5 1.548-3.5 3.47 0 1.92 1.58 3.5 3.5 3.5.75 0 1.432-.253 2-.657l.094.156 2.375 2.372c.19.19.534.153.78-.094s.315-.59.126-.78L16.66 16.59l-.188-.093c.402-.567.655-1.283.655-2.03 0-1.92-1.55-3.47-3.47-3.47zm0 1.656c1.01 0 1.813.8 1.813 1.813 0 1.01-.804 1.84-1.816 1.84-1.01 0-1.844-.83-1.844-1.843s.833-1.814 1.845-1.814z"/>
+        <path id="magnifying-glass" d="M13.656 11c-1.92 0-3.5 1.548-3.5 3.47 0 1.92 1.58 3.5 3.5 3.5.75 0 1.432-.253 2-.657l.094.156 2.375 2.37c.19.19.534.154.78-.093s.315-.59.126-.78l-2.37-2.377-.188-.093c.402-.567.655-1.283.655-2.03 0-1.92-1.55-3.47-3.47-3.47zm0 1.656c1.01 0 1.813.8 1.813 1.813 0 1.01-.805 1.84-1.817 1.84-1.01 0-1.844-.83-1.844-1.844s.832-1.814 1.844-1.814z"/>
         <path id="text" d="M6 5v2h10V5H6zm0 3v2h11V8H6zm0 3v2h3.53c.284-.797.787-1.486 1.44-2H6zm0 3v2h3.53c-.177-.48-.28-.99-.28-1.53 0-.16.046-.315.063-.47H6z"/>
     </g>
 </svg>
index 28aab68..b63eb84 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/find-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/find-rtl.png differ
index e70ae48..962165d 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="find">
-        <path id="magnifying-glass" d="M11.344 11c1.92 0 3.5 1.548 3.5 3.47 0 1.92-1.58 3.5-3.5 3.5-.75 0-1.432-.253-2-.657l-.094.156-2.375 2.372c-.19.19-.534.153-.78-.094s-.315-.59-.126-.78L8.34 16.59l.188-.093c-.402-.567-.655-1.283-.655-2.03 0-1.92 1.55-3.47 3.47-3.47zm0 1.656c-1.01 0-1.813.8-1.813 1.813 0 1.01.804 1.84 1.816 1.84 1.01 0 1.844-.83 1.844-1.843s-.833-1.814-1.845-1.814z"/>
+        <path id="magnifying-glass" d="M11.344 11c1.92 0 3.5 1.548 3.5 3.47 0 1.92-1.58 3.5-3.5 3.5-.75 0-1.432-.253-2-.657l-.094.156-2.375 2.37c-.19.19-.534.154-.78-.093s-.315-.59-.126-.78l2.37-2.377.188-.093c-.402-.567-.655-1.283-.655-2.03 0-1.92 1.55-3.47 3.47-3.47zm0 1.656c-1.01 0-1.813.8-1.813 1.813 0 1.01.805 1.84 1.817 1.84 1.01 0 1.844-.83 1.844-1.844s-.832-1.814-1.844-1.814z"/>
         <path id="text" d="M19 5v2H9V5zm0 3v2H8V8zm0 3v2h-3.53c-.284-.797-.787-1.486-1.44-2zm0 3v2h-3.53c.177-.48.28-.99.28-1.53 0-.16-.046-.315-.063-.47z"/>
     </g>
 </svg>
index a9a0ebb..825435d 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="help">
-        <path id="circle" d="M12 2.085c-5.477 0-9.915 4.438-9.915 9.916 0 5.48 4.438 9.917 9.916 9.917 5.48 0 9.917-4.438 9.917-9.914 0-5.477-4.438-9.915-9.914-9.915zm.002 18c-4.465 0-8.084-3.62-8.084-8.083 0-4.465 3.62-8.084 8.084-8.084 4.464 0 8.083 3.62 8.083 8.084 0 4.464-3.62 8.083-8.083 8.083z"/>
+        <path id="circle" d="M12 2.085c-5.477 0-9.915 4.438-9.915 9.916 0 5.48 4.438 9.918 9.916 9.918 5.48 0 9.918-4.438 9.918-9.914 0-5.477-4.438-9.915-9.914-9.915zm.002 18c-4.465 0-8.084-3.62-8.084-8.083 0-4.465 3.62-8.084 8.084-8.084 4.464 0 8.083 3.62 8.083 8.084 0 4.464-3.62 8.083-8.083 8.083z"/>
         <g id="question-mark">
             <path id="top" d="M11.766 6.688c-2.5 0-3.22 2.188-3.22 2.188l1.412.854s.298-.79.9-1.23c.517-.374 1.626-.624 2.22.126.7.885-.17 1.587-1.078 2.72C11.047 12.53 11 15 11 15h1.97s.134-2.318 1.04-3.38c.603-.708 1.443-1.34 1.443-2.495s-1.187-2.437-3.687-2.437z"/>
             <path id="bottom" d="M11 16h2v2h-2z"/>
index 1b513d0..0d8052f 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="help">
-        <path id="circle" d="M12 2.085c5.477 0 9.915 4.438 9.915 9.916 0 5.48-4.438 9.917-9.916 9.917-5.48 0-9.917-4.438-9.917-9.914 0-5.477 4.438-9.915 9.914-9.915zm-.002 18c4.465 0 8.084-3.62 8.084-8.083 0-4.465-3.62-8.084-8.084-8.084-4.464 0-8.083 3.62-8.083 8.084 0 4.464 3.62 8.083 8.083 8.083z"/>
+        <path id="circle" d="M12 2.085c5.477 0 9.915 4.438 9.915 9.916 0 5.48-4.438 9.918-9.916 9.918-5.48 0-9.918-4.438-9.918-9.914 0-5.477 4.438-9.915 9.914-9.915zm-.002 18c4.465 0 8.084-3.62 8.084-8.083 0-4.465-3.62-8.084-8.084-8.084-4.464 0-8.083 3.62-8.083 8.084 0 4.464 3.62 8.083 8.083 8.083z"/>
         <g id="question-mark">
             <path id="top" d="M12.234 6.688c2.5 0 3.22 2.188 3.22 2.188l-1.412.854s-.298-.79-.9-1.23c-.517-.374-1.626-.624-2.22.126-.7.885.17 1.587 1.078 2.72C12.953 12.53 13 15 13 15h-1.97s-.134-2.318-1.04-3.38c-.603-.708-1.443-1.34-1.443-2.495 0-1.156 1.187-2.437 3.687-2.437z"/>
             <path id="bottom" d="M13 16h-2v2h2z"/>
index 9375751..10d1b81 100644 (file)
@@ -2,6 +2,6 @@
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="history">
         <path id="clock-hands" d="M17.26 15.076s-2.385-1.935-4.005-3.062c.72-2.397 1.702-6.56 1.702-6.56s-4.35 5.364-4.877 6.7c-.463 1.168 1.46 2.21 2.346 1.678 1.9.55 4.834 1.244 4.834 1.244z"/>
-        <path id="arrow" d="M12.086 2.085C6.608 2.085 2.17 6.523 2.17 12c0 1.784.476 3.455 1.3 4.9l-2.22 2.04h5.688v-5.22L4.87 15.616c-.55-1.088-.866-2.312-.866-3.615 0-4.462 3.62-8.08 8.084-8.08 4.464 0 8.083 3.62 8.083 8.083 0 4.465-3.616 8.084-8.08 8.084-1.145 0-2.23-.247-3.213-.678l-.833 1.633c1.235.557 2.602.874 4.045.874C17.562 21.914 22 17.477 22 12c0-5.477-4.438-9.915-9.914-9.915z"/>
+        <path id="arrow" d="M12.086 2.085C6.608 2.085 2.17 6.523 2.17 12c0 1.784.476 3.455 1.3 4.9l-2.22 2.04h5.688v-5.22L4.87 15.616c-.55-1.088-.866-2.312-.866-3.615 0-4.46 3.62-8.08 8.084-8.08 4.464 0 8.083 3.62 8.083 8.084 0 4.465-3.615 8.084-8.08 8.084-1.144 0-2.23-.247-3.212-.678l-.833 1.633c1.235.557 2.602.874 4.045.874C17.562 21.914 22 17.477 22 12c0-5.477-4.438-9.915-9.914-9.915z"/>
     </g>
 </svg>
index 3147340..6cff2ff 100644 (file)
@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0, 0, 24, 24">
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="info">
         <path id="circled-i" d="M11.5 17C8.462 17 6 14.536 6 11.5 6 8.463 8.462 6 11.5 6c3.036 0 5.5 2.462 5.5 5.5 0 3.036-2.464 5.5-5.5 5.5zm0-12C7.91 5 5 7.91 5 11.5S7.91 18 11.5 18s6.5-2.91 6.5-6.5S15.09 5 11.5 5zm.5 5v4h1v1h-3v-1h1v-3h-1v-1zm-1-2h1v1h-1z"/>
     </g>
index 3285ad9..9f603ea 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/italic-arab-keheh-jeem.png and b/resources/lib/oojs-ui/themes/apex/images/icons/italic-arab-keheh-jeem.png differ
index 04cdebb..99980c0 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="italic-arab-keheh-jeem">
-        <path id="arab-keheh-jeem" d="M18.125 5.844c-1.695.555-3.297 1.162-4.594 1.938-.49.3-.77.712-.872 1.125-.064.263-.035.572.063.78.19.406.54.575.844.814l.094-.122.53.625c.14.165.344.514.47.94.137.462.08.724 0 1.124H11.22c-.34 0-.593.007-.767-.02-.34-.053-.256-.208-.234-.34.33-.127.56-.173.935-.14.29-.495.593-.886.906-1.314-.98.037-1.877.015-2.687-.094-.346-.048-.698-.187-1.094-.157-.357.026-.768.24-1.03.72-.247.447-.435.838-.657 1.28l.75-.47c.23-.14.484-.226.72-.218.156.005.274.054.405.094-.233.204-.51.4-.72.562-.3.26-.703.688-.907 1-.402.615-.693 1.084-.874 1.78-.18.69.003 1.34.468 1.75.426.377.846.52 1.28.564.65.065 1.206.093 2-.188.658-.23 1.022-.553 1.5-.97-.882.11-1.816.09-2.53.032-.87-.07-1.268-.384-1.47-.594-.27-.283-.306-.64-.155-1.22.036-.14.097-.322.25-.53.17-.228.364-.435.594-.656.45-.436 1.01-.737 1.46-.938-.044.205-.106.442-.054.687.05.23.25.38.44.47.26.12.506.153.69.154 1.42.01 2.86 0 4.28 0 .246 0 .45-.163.593-.375.14-.21.25-.48.344-.845.13-.5.094-1.062-.094-1.625-.182-.543-.418-1.01-.72-1.406-.334-.443-.673-.83-1-1.22 1.258-.814 2.717-1.238 3.97-1.687.12-.452.224-.926.313-1.313zm-9.47 8.438c-.26.394-.583.69-.874 1 .378.286.75.556 1.097.813.335-.303.626-.674.875-.97-.39-.267-.77-.587-1.093-.843z"/>
+        <path id="arab-keheh-jeem" d="M18.125 5.844c-1.695.555-3.297 1.162-4.594 1.938-.49.3-.77.712-.87 1.125-.065.263-.036.572.062.78.19.406.54.575.844.814l.094-.12.53.624c.14.165.344.514.47.94.137.462.08.724 0 1.124h-3.44c-.34 0-.593.007-.767-.02-.34-.053-.256-.208-.234-.34.33-.127.56-.173.934-.14.29-.495.593-.886.906-1.314-.98.037-1.877.015-2.687-.094-.346-.048-.698-.187-1.094-.157-.358.026-.77.24-1.03.72-.248.447-.436.838-.658 1.28l.75-.47c.23-.14.484-.226.72-.218.156.005.274.054.405.094-.233.203-.51.4-.72.56-.3.26-.703.69-.907 1-.402.616-.693 1.085-.874 1.78-.18.69.003 1.34.468 1.75.426.378.846.52 1.28.565.65.065 1.206.093 2-.188.658-.23 1.022-.553 1.5-.97-.882.11-1.816.09-2.53.032-.87-.07-1.268-.385-1.47-.595-.27-.283-.306-.64-.155-1.22.035-.14.096-.322.25-.53.17-.228.363-.435.593-.656.45-.437 1.01-.738 1.46-.94-.044.206-.106.443-.054.688.05.23.25.38.44.47.26.12.505.153.69.154 1.42.01 2.86 0 4.28 0 .245 0 .45-.163.592-.375.14-.21.25-.48.344-.845.13-.5.094-1.062-.094-1.625-.182-.543-.418-1.01-.72-1.406-.334-.442-.673-.83-1-1.22 1.258-.813 2.717-1.237 3.97-1.686.12-.452.224-.926.313-1.313zm-9.47 8.438c-.26.394-.583.69-.874 1 .38.286.75.556 1.098.813.335-.303.626-.674.875-.97-.39-.267-.77-.587-1.093-.843z"/>
     </g>
 </svg>
index 3c5adc3..03493be 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/italic-arab-meem.png and b/resources/lib/oojs-ui/themes/apex/images/icons/italic-arab-meem.png differ
index f315377..a9c7def 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="italic-arab-meem">
-        <path id="arab-meem" d="M16 9.73l-.93 2.19h-4.663c-.48 0-.857.12-1.135.366l-.06.11c-.185 2.016-.503 3.558-.956 4.627-.272.64-.633 1.252-1.082 1.833-.177.226-.22.186-.126-.12l.142-.503.17-.67.234-.87.002-.008.202-1.045.258-1.41.353-1.907c.19-.312.42-.638.696-.98.276-.342.59-.706.94-1.09.13-.092.697-.18 1.705-.266 1.05-.086 1.64-.183 1.766-.293l.065-.128c.008-.11-.01-.24-.053-.394-.044-.153-.12-.327-.232-.522-.22-.428-.438-.64-.654-.64-.293 0-.914.268-1.863.805-.36.208-.376.125-.05-.247 1.557-1.71 2.707-2.566 3.45-2.566.382 0 .67.13.862.394.134.195.25.6.343 1.21l.203 1.2c.105.586.24.895.408.925"/>
+        <path id="arab-meem" d="M16 9.73l-.93 2.19h-4.663c-.48 0-.857.12-1.135.366l-.06.11c-.185 2.016-.503 3.558-.956 4.627-.272.64-.633 1.252-1.082 1.833-.177.226-.22.186-.126-.12l.142-.503.17-.67.234-.87.002-.008.202-1.045.258-1.41.353-1.907c.19-.312.42-.638.695-.98.276-.342.59-.706.94-1.09.13-.092.697-.18 1.705-.266 1.05-.086 1.64-.183 1.766-.293l.065-.128c.01-.11-.01-.24-.052-.394-.044-.153-.12-.327-.232-.522-.22-.428-.438-.64-.654-.64-.293 0-.914.268-1.863.805-.36.208-.377.125-.05-.247 1.556-1.71 2.706-2.566 3.45-2.566.38 0 .67.13.86.394.135.195.25.6.344 1.21l.203 1.2c.105.586.24.895.408.925"/>
     </g>
 </svg>
index 15795c5..b5e55cc 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/italic-armn-sha.png and b/resources/lib/oojs-ui/themes/apex/images/icons/italic-armn-sha.png differ
index f0d10d9..a653a27 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="italic-armn-sha">
-        <path id="armn-sha" d="M11.564 7.678c-.268-.13-.578-.22-.93-.268-.35-.047-.75-.07-1.197-.07h-1.11L8.587 6h1.723c.558 0 1.042.032 1.45.095.416.063.794.173 1.136.33l4.483 2.033-.327 1.67-2.624-1.165c-.126-.058-.27-.103-.433-.134-.164-.04-.356-.06-.576-.06-.582 0-1.136.095-1.662.284-.526.19-1 .46-1.427.812-.42.35-.776.78-1.07 1.283-.294.504-.504 1.074-.63 1.71-.24 1.255-.15 2.21.27 2.87.424.65 1.19.976 2.292.976.55 0 1.045-.08 1.48-.237.437-.157.815-.378 1.136-.66.325-.29.59-.634.795-1.034.21-.4.362-.84.457-1.323l.11-.56h1.6l-.12.59c-.13.674-.356 1.288-.676 1.845-.32.55-.725 1.024-1.214 1.423-.488.395-1.053.7-1.694.923-.643.215-1.344.323-2.106.323-.767 0-1.434-.114-2-.34-.568-.226-1.025-.554-1.372-.985-.347-.435-.573-.97-.678-1.606-.105-.637-.078-1.364.08-2.184.125-.66.346-1.273.66-1.835.316-.568.697-1.067 1.144-1.497.445-.436.944-.794 1.496-1.072.55-.283 1.13-.474 1.733-.574l-.466-.23"/>
+        <path id="armn-sha" d="M11.564 7.678c-.268-.13-.578-.22-.93-.268-.35-.047-.75-.07-1.197-.07h-1.11L8.587 6h1.723c.558 0 1.042.032 1.45.095.416.063.794.173 1.136.33l4.483 2.033-.328 1.67-2.624-1.165c-.126-.058-.27-.103-.433-.134-.164-.04-.356-.06-.576-.06-.583 0-1.137.094-1.663.283-.526.19-1 .46-1.427.812-.42.35-.776.78-1.07 1.283-.294.504-.504 1.074-.63 1.71-.24 1.255-.15 2.21.27 2.87.424.65 1.19.976 2.292.976.55 0 1.045-.08 1.48-.237.437-.157.815-.378 1.136-.66.325-.29.59-.634.795-1.034.21-.4.362-.84.457-1.323l.11-.56h1.6l-.12.59c-.13.674-.356 1.288-.676 1.845-.32.55-.725 1.024-1.214 1.423-.488.395-1.053.7-1.694.923-.643.216-1.344.324-2.106.324-.767 0-1.434-.114-2-.34-.568-.226-1.025-.554-1.372-.985-.347-.436-.573-.97-.678-1.607-.105-.637-.078-1.364.08-2.184.125-.66.346-1.274.66-1.836.316-.568.697-1.067 1.144-1.497.445-.436.944-.794 1.496-1.072.55-.283 1.13-.474 1.733-.574l-.466-.23"/>
     </g>
 </svg>
index 2b8b6e4..f46dea5 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/italic-c.png and b/resources/lib/oojs-ui/themes/apex/images/icons/italic-c.png differ
index 2018e60..0a0d110 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="italic-c">
-        <path id="c" d="M15.008 13.718l1.48.214c-.467 1.34-1.15 2.354-2.045 3.04-.896.686-1.9 1.03-3.015 1.03-1.36 0-2.438-.43-3.237-1.29C7.4 15.85 7 14.618 7 13.012c0-2.09.606-3.817 1.817-5.184C9.897 6.61 11.237 6 12.84 6c1.186 0 2.145.33 2.878.99.738.66 1.165 1.546 1.282 2.66l-1.397.135c-.148-.84-.453-1.464-.916-1.876-.458-.42-1.05-.628-1.78-.628-1.368 0-2.475.63-3.32 1.892-.733 1.087-1.1 2.377-1.1 3.87 0 1.194.283 2.104.848 2.732.565.628 1.3.942 2.206.942.777 0 1.476-.26 2.1-.785.628-.522 1.08-1.26 1.368-2.216"/>
+        <path id="c" d="M15.008 13.718l1.48.214c-.467 1.34-1.15 2.354-2.045 3.04-.896.686-1.9 1.03-3.015 1.03-1.36 0-2.438-.43-3.237-1.29C7.4 15.85 7 14.618 7 13.012c0-2.09.606-3.817 1.817-5.184C9.897 6.61 11.237 6 12.84 6c1.186 0 2.145.33 2.878.99.738.66 1.165 1.546 1.282 2.66l-1.397.135c-.148-.84-.453-1.464-.916-1.876-.458-.42-1.05-.63-1.78-.63-1.368 0-2.475.63-3.32 1.893-.733 1.087-1.1 2.377-1.1 3.87 0 1.194.283 2.104.848 2.732.565.628 1.3.942 2.206.942.778 0 1.477-.26 2.1-.785.63-.522 1.08-1.26 1.37-2.216"/>
     </g>
 </svg>
index c044c86..feadca0 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="italic-d">
-        <path id="d" d="M7 18L9.462 6h3.557c.85 0 1.502.063 1.952.188.644.17 1.194.472 1.65.91.456.43.8.97 1.03 1.62.23.65.346 1.378.346 2.186 0 .966-.146 1.847-.436 2.644-.284.79-.66 1.49-1.127 2.095-.46.6-.947 1.072-1.456 1.416-.504.335-1.1.586-1.794.75-.526.126-1.172.19-1.94.19H7m1.86-1.36h1.866c.842 0 1.59-.08 2.245-.238.41-.098.76-.243 1.05-.434.38-.247.726-.57 1.037-.975.408-.535.732-1.143.974-1.825.247-.687.37-1.467.37-2.34 0-.97-.166-1.716-.5-2.235-.332-.524-.755-.87-1.27-1.04-.38-.126-.974-.188-1.78-.188H11L9.095 16.64"/>
+        <path id="d" d="M7 18L9.462 6h3.557c.85 0 1.5.063 1.95.188.645.17 1.195.472 1.65.91.457.43.8.97 1.03 1.62.23.65.347 1.378.347 2.186 0 .966-.146 1.847-.436 2.644-.283.79-.66 1.49-1.126 2.095-.46.6-.947 1.072-1.456 1.416-.504.334-1.1.585-1.794.75-.526.125-1.172.19-1.94.19H7m1.86-1.36h1.866c.842 0 1.59-.08 2.245-.24.41-.097.76-.242 1.05-.433.38-.247.727-.57 1.038-.975.408-.535.732-1.143.974-1.825.247-.687.37-1.467.37-2.34 0-.97-.166-1.716-.5-2.235-.332-.524-.755-.87-1.27-1.04-.38-.126-.974-.188-1.78-.188H11L9.095 16.64"/>
     </g>
 </svg>
index 7f2512e..7f9da2a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/italic-geor-kan.png and b/resources/lib/oojs-ui/themes/apex/images/icons/italic-geor-kan.png differ
index 867f458..65670ef 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="italic-geor-kan">
-        <path id="geor-kan" d="M15.057 14.663C14.617 16.888 13.223 18 10.88 18 8.96 18 8 17.213 8 15.64c0-.298.036-.624.108-.977.083-.43.245-.836.488-1.217l1.24.605-.206.616c-.055.26-.083.497-.083.712 0 .972.52 1.458 1.564 1.458 1.31 0 2.104-.723 2.386-2.17l.058-.33c.044-.222.066-.426.066-.614 0-.927-.547-1.39-1.64-1.39h-1.116l.248-1.26h1.118c1.202-.004 1.908-.55 2.118-1.64.04-.18.058-.355.058-.52 0-1.144-.9-1.715-2.697-1.715L11.94 6C14.646 6 16 6.877 16 8.627c0 .248-.027.516-.082.803-.204 1.092-1.05 1.824-2.54 2.194l-.033.166c1.23.2 1.845.823 1.845 1.872 0 .21-.025.433-.074.67l-.058.332"/>
+        <path id="geor-kan" d="M15.057 14.663C14.617 16.888 13.223 18 10.88 18 8.96 18 8 17.213 8 15.64c0-.298.036-.624.108-.977.083-.43.245-.836.488-1.217l1.24.605-.206.617c-.055.26-.083.497-.083.712 0 .97.52 1.457 1.564 1.457 1.31 0 2.105-.723 2.387-2.17l.058-.33c.044-.222.066-.426.066-.614 0-.927-.546-1.39-1.64-1.39h-1.115l.248-1.26h1.118c1.203-.004 1.91-.55 2.12-1.64.04-.18.057-.355.057-.52 0-1.144-.9-1.715-2.697-1.715L11.94 6C14.646 6 16 6.877 16 8.627c0 .248-.027.516-.082.803-.204 1.092-1.05 1.824-2.54 2.194l-.033.166c1.23.2 1.845.823 1.845 1.872 0 .21-.025.433-.074.67l-.058.332"/>
     </g>
 </svg>
index c3b1e6e..4a7b1fc 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/italic-s.png and b/resources/lib/oojs-ui/themes/apex/images/icons/italic-s.png differ
index 1c5a4ca..615e5f2 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="italic-s">
-        <path id="s" d="M16.474 6.59l-.302 1.525c-.522-.28-1.04-.488-1.557-.628-.51-.145-1.007-.217-1.487-.217-.935 0-1.68.204-2.23.612-.554.408-.83.95-.83 1.627 0 .37.1.655.302.86.207.193.733.405 1.58.632l.937.232c1.06.274 1.795.622 2.208 1.046.413.42.62 1.008.62 1.767 0 1.167-.46 2.117-1.38 2.85-.913.734-2.12 1.1-3.617 1.1-.615 0-1.232-.06-1.852-.185-.62-.12-1.242-.302-1.867-.55l.315-1.61c.573.355 1.147.624 1.72.805.578.18 1.154.27 1.728.27.976 0 1.76-.216 2.347-.65.59-.434.884-1 .884-1.697 0-.464-.12-.815-.356-1.053-.233-.243-.737-.462-1.512-.658l-.937-.24c-1.07-.28-1.8-.6-2.19-.964-.39-.367-.584-.878-.584-1.534 0-1.152.442-2.094 1.325-2.828.89-.74 2.044-1.108 3.464-1.108.553 0 1.1.05 1.642.147.542.098 1.085.245 1.627.442"/>
+        <path id="s" d="M16.474 6.59l-.302 1.525c-.522-.28-1.04-.488-1.557-.628-.51-.145-1.007-.217-1.487-.217-.935 0-1.68.204-2.23.612-.554.408-.83.95-.83 1.627 0 .37.1.654.302.86.207.192.733.404 1.58.63l.937.233c1.06.274 1.795.622 2.208 1.046.413.42.62 1.007.62 1.766 0 1.167-.46 2.117-1.38 2.85-.913.734-2.12 1.1-3.617 1.1-.615 0-1.232-.06-1.852-.185-.62-.12-1.242-.3-1.867-.55l.314-1.61c.573.356 1.147.625 1.72.806.578.18 1.154.27 1.728.27.976 0 1.76-.216 2.347-.65.59-.434.883-1 .883-1.697 0-.465-.12-.816-.356-1.054-.233-.243-.737-.462-1.512-.658l-.937-.24c-1.07-.28-1.8-.6-2.19-.964-.39-.367-.584-.878-.584-1.534 0-1.152.442-2.094 1.325-2.828.89-.74 2.043-1.108 3.463-1.108.553 0 1.1.05 1.642.147.542.1 1.085.246 1.627.443"/>
     </g>
 </svg>
index cae0e77..b4f0875 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/language.png and b/resources/lib/oojs-ui/themes/apex/images/icons/language.png differ
index 694d225..956aba1 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="language">
-        <path id="japanese" d="M17.533 9.81l.27-.59 1.042.407-.18.363c.66.27 1.1.468 1.312.59.33.21.618.513.86.904.21.393.316.846.316 1.358 0 .786-.302 1.48-.905 2.083-.604.634-1.66 1.057-3.17 1.268-.12-.36-.257-.68-.407-.95.968-.15 1.648-.333 2.04-.545.454-.21.785-.48.998-.813.21-.303.314-.663.314-1.087 0-.482-.135-.905-.406-1.27-.33-.33-.8-.588-1.402-.77-.332.635-.648 1.118-.95 1.45-.242.332-.694.906-1.358 1.72.09.394.18.71.272.952l-1.042.362-.09-.498c-.424.36-.802.617-1.134.77-.36.15-.664.226-.905.226-.303 0-.574-.136-.814-.407-.243-.3-.362-.68-.362-1.132 0-.6.137-1.144.408-1.63.24-.45.603-.89 1.086-1.31.273-.24.726-.53 1.36-.86 0-.27.03-.8.09-1.585-.514.03-.92.045-1.222.045-.393 0-.71-.016-.95-.046l-.047-1.04c.726.09 1.495.134 2.31.134 0-.15.076-.738.228-1.766l1.177.184c-.15.542-.256 1.04-.316 1.493.24-.03.542-.077.905-.138.36-.06.572-.09.633-.09s.647-.15 1.765-.453l.046 1.04c-.966.243-2.144.44-3.53.59-.063.663-.093 1.086-.093 1.266.664-.15 1.285-.225 1.858-.225zm-2.672 3.893c-.06-.48-.133-1.252-.224-2.31-.573.424-1.04.86-1.403 1.313-.302.423-.45.875-.45 1.358 0 .24.043.438.135.588.09.092.195.137.316.137.364 0 .908-.364 1.63-1.09zm.774-2.763c0 .483.03 1.088.09 1.81.604-.904 1.057-1.598 1.36-2.08-.575.06-1.06.15-1.45.27z"/>
+        <path id="japanese" d="M17.533 9.81l.27-.59 1.042.407-.18.363c.66.27 1.1.468 1.312.59.33.21.618.513.86.904.21.393.316.846.316 1.358 0 .786-.302 1.48-.905 2.083-.604.634-1.66 1.057-3.17 1.268-.12-.36-.257-.68-.407-.95.97-.15 1.65-.333 2.04-.545.455-.21.786-.48 1-.813.21-.303.313-.663.313-1.087 0-.482-.135-.905-.406-1.27-.33-.33-.8-.588-1.402-.77-.332.635-.648 1.118-.95 1.45-.242.332-.694.906-1.358 1.72.09.394.18.71.272.952l-1.043.362-.09-.498c-.424.36-.802.617-1.134.77-.36.15-.664.226-.905.226-.303 0-.574-.136-.814-.407-.243-.3-.362-.68-.362-1.132 0-.6.137-1.143.408-1.63.24-.45.603-.89 1.086-1.31.273-.24.726-.53 1.36-.86 0-.27.03-.8.09-1.584-.514.03-.92.045-1.222.045-.393 0-.71-.015-.95-.045l-.047-1.04c.726.09 1.495.134 2.31.134 0-.15.076-.74.228-1.767l1.177.184c-.15.542-.256 1.04-.316 1.493.24-.03.542-.077.905-.138.36-.06.573-.09.634-.09s.647-.15 1.765-.453l.045 1.04c-.966.242-2.144.44-3.53.59-.063.662-.093 1.085-.093 1.265.664-.15 1.285-.225 1.858-.225zm-2.672 3.893c-.06-.48-.132-1.252-.223-2.31-.573.424-1.04.86-1.403 1.313-.302.423-.45.875-.45 1.358 0 .24.043.438.135.588.09.092.194.137.315.137.364 0 .908-.365 1.63-1.09zm.775-2.763c0 .483.03 1.088.09 1.81.604-.904 1.057-1.598 1.36-2.08-.575.06-1.06.15-1.45.27z"/>
         <path id="english" d="M9.497 15.98h1.85L8.265 7.033h-1.85l-3.08 8.95h1.85L5.74 14h3.21l.547 1.98zm-3.49-3.376L7.34 8.822l1.343 3.782H6.008z"/>
     </g>
 </svg>
index 710872b..23c9539 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="link">
-        <path id="right" d="M19.188 12c0 1.1-.89 2.016-1.988 2.016L13.005 14c.538 1.09.963 2 1.997 2h3C19.658 16 21 13.657 21 12s-1.342-4-2.998-4h-3c-1.034 0-1.46.91-1.998 2l4.195-.016c1.095 0 1.986.917 1.986 2.017z"/>
+        <path id="right" d="M19.188 12c0 1.1-.89 2.016-1.988 2.016L13.005 14c.538 1.09.963 2 1.997 2h3C19.658 16 21 13.657 21 12s-1.342-4-2.998-4h-3c-1.034 0-1.46.91-1.998 2l4.195-.016c1.094 0 1.985.917 1.985 2.017z"/>
         <path id="center" d="M8 12c0 .535.42 1 .938 1h6.11c.517 0 .937-.465.937-1 0-.534-.42-1-.938-1h-6.11C8.42 11 8 11.466 8 12z"/>
         <path id="left" d="M4.816 12c0-1.1.89-2.016 1.988-2.016L11 10c-.54-1.09-.964-2-1.998-2h-3c-1.656 0-2.998 2.343-2.998 4s1.342 4 2.998 4h3c1.034 0 1.46-.91 1.998-2l-4.195.016c-1.098 0-1.99-.917-1.99-2.017z"/>
     </g>
index a7b7ae8..85baad2 100644 (file)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="lock">
         <path d="M12 6c-2.21 0-4 1.79-4 4v1H7v7h10v-7h-1v-1c0-2.21-1.79-4-4-4zm0 2c1.105 0 2 .895 2 2v1h-4v-1c0-1.105.895-2 2-2z"/>
index 48d2c7e..35b6375 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="move-rtl">
-        <path id="arrow" d="M15.065 17.786l-5.302-5.303 5.302-5.302-1.415-1.41-6.714 6.716L13.65 19.2z"/>
+        <path id="arrow" d="M15.065 17.786l-5.302-5.303 5.302-5.302-1.415-1.41-6.714 6.717L13.65 19.2z"/>
     </g>
 </svg>
index b7fb2e7..9334b50 100644 (file)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" id="svg3116">
     <g id="alert">
         <path d="M12 18c-3.314 0-6-2.686-6-6s2.686-6 6-6 6 2.686 6 6-2.686 6-6 6zm-1-5h2V8h-2zm0 3h2v-2h-2z" id="path3119"/>
index b8736a0..00ace19 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/regular-expression.png and b/resources/lib/oojs-ui/themes/apex/images/icons/regular-expression.png differ
index 5f10d4d..844013d 100644 (file)
@@ -3,7 +3,7 @@
     <g id="regular-expression">
         <path id="left-bracket" d="M3 12.045c0-.99.15-1.915.45-2.777.306-.862.743-1.618 1.314-2.268H6.23c-.552.72-.968 1.512-1.25 2.374-.28.862-.42 1.75-.42 2.66 0 .915.142 1.8.427 2.654.29.85.7 1.622 1.23 2.312h-1.45c-.575-.635-1.013-1.376-1.314-2.223-.3-.847-.45-1.758-.45-2.732"/>
         <path id="dot" d="M10 16c0 .552-.448 1-1 1s-1-.448-1-1 .448-1 1-1 1 .448 1 1z"/>
-        <path id="star" d="M14.25 7.013l-.24 2.156 2.187-.61.193 1.475-1.992.14 1.307 1.74-1.33.71-.914-1.834-.8 1.823-1.383-.697 1.295-1.74-1.98-.152.23-1.465 2.14.61-.24-2.157h1.534"/>
-        <path id="right-bracket" d="M21 12.045c0 .982-.152 1.896-.457 2.744-.3.844-.737 1.582-1.307 2.21h-1.453c.527-.688.936-1.457 1.225-2.308.29-.855.434-1.74.434-2.66 0-.91-.14-1.797-.422-2.66-.28-.862-.697-1.654-1.248-2.374h1.465c.574.652 1.012 1.412 1.313 2.28.3.86.45 1.782.45 2.764"/>
+        <path id="star" d="M14.25 7.013l-.24 2.156 2.187-.61.193 1.474-1.992.14 1.307 1.74-1.33.71-.914-1.834-.8 1.823-1.382-.697 1.295-1.74-1.98-.152.23-1.465 2.14.61-.24-2.158h1.534"/>
+        <path id="right-bracket" d="M21 12.045c0 .982-.152 1.896-.457 2.744-.3.843-.737 1.58-1.307 2.21h-1.453c.527-.69.936-1.458 1.225-2.31.29-.854.434-1.74.434-2.66 0-.91-.14-1.796-.422-2.66-.28-.86-.697-1.653-1.248-2.373h1.465c.574.652 1.012 1.412 1.313 2.28.3.86.45 1.782.45 2.764"/>
     </g>
 </svg>
index 070e4bf..137150b 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="search">
-        <path id="search" d="M16.02 15.96l-2.373-2.375-.17-.1c.404-.565.644-1.26.644-2.008C14.12 9.557 12.566 8 10.647 8c-1.92 0-3.478 1.557-3.478 3.478 0 1.92 1.557 3.477 3.478 3.477.75 0 1.442-.24 2.01-.643l.098.17 2.375 2.373c.19.19.542.143.79-.104s.292-.6.103-.79zm-5.376-2.27c-1.22 0-2.213-.99-2.213-2.213 0-1.22.995-2.213 2.216-2.213 1.222 0 2.213.992 2.213 2.213 0 1.222-.993 2.213-2.214 2.213z"/>
+        <path id="search" d="M16.02 15.96l-2.373-2.375-.17-.1c.404-.565.644-1.26.644-2.008C14.12 9.557 12.567 8 10.648 8 8.727 8 7.17 9.557 7.17 11.478c0 1.92 1.556 3.477 3.477 3.477.75 0 1.442-.24 2.01-.643l.098.17 2.375 2.373c.19.19.542.143.79-.104s.292-.6.103-.79zm-5.376-2.27c-1.22 0-2.213-.99-2.213-2.213 0-1.22.996-2.213 2.217-2.213 1.222 0 2.213.992 2.213 2.213 0 1.222-.993 2.213-2.214 2.213z"/>
     </g>
 </svg>
index 6eefe90..e064672 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
     <g id="secure">
-        <path id="lock" d="M8 5h.02v-.997c0-.057.003-1.41-.833-2.255-.434-.438-.998-.66-1.68-.66s-1.244.222-1.677.66c-.837.846-.833 2.198-.832 2.25V5H3c-.553 0-1 .447-1 1v3c0 .553.447 1 1 1h5c.553 0 1-.447 1-1V6c0-.553-.447-1-1-1zM3.998 5V3.993c0-.01.005-1 .543-1.543.485-.485 1.45-.487 1.935-.002.544.546.546 1.536.546 1.55V5H3.998z"/>
+        <path id="lock" d="M8 5h.02v-.997c0-.057.003-1.41-.833-2.255-.434-.438-.998-.66-1.68-.66s-1.244.222-1.677.66c-.837.846-.833 2.198-.832 2.25V5H3c-.553 0-1 .447-1 1v3c0 .553.447 1 1 1h5c.553 0 1-.447 1-1V6c0-.553-.447-1-1-1zM3.998 5V3.993c0-.01.005-1 .543-1.543.486-.485 1.45-.487 1.936-.002.544.546.546 1.536.546 1.55V5H3.998z"/>
     </g>
 </svg>
index 7ec6263..3799767 100644 (file)
@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0, 0, 24, 24">
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="settings">
         <path id="gear" d="M3 4h3v2H3zm9 0h9v2h-9zM8 3h2c.552 0 1 .448 1 1v2c0 .552-.448 1-1 1H8c-.552 0-1-.448-1-1V4c0-.552.448-1 1-1zm-5 8h9v2H3zm15 0h3v2h-3zm-4-1h2c.552 0 1 .448 1 1v2c0 .552-.448 1-1 1h-2c-.552 0-1-.448-1-1v-2c0-.552.448-1 1-1zM3 18h6v2H3zm12 0h6v2h-6zm-4-1h2c.552 0 1 .448 1 1v2c0 .552-.448 1-1 1h-2c-.552 0-1-.448-1-1v-2c0-.552.448-1 1-1z"/>
     </g>
index e632f8a..7f65881 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/specialCharacter.png and b/resources/lib/oojs-ui/themes/apex/images/icons/specialCharacter.png differ
index bb81880..dbf6ed5 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="special-character">
-        <path id="omega" d="M12 6.708c-.794 0-1.368.103-1.894.31-.525.207-.944.496-1.255.867-.31.366-.53.808-.66 1.327-.125.513-.19 1.08-.19 1.7 0 .512.06 1 .175 1.46.122.46.31.87.568 1.23.63.862 1.156 1.138 2.012 1.362L11 18H6v-3h.604l.53 1.353.395.053.602.044.75.035.457.01H10l-.09-.895c-.63-.094-.812-.268-1.337-.522-.525-.26-.98-.59-1.365-.99-.38-.402-.675-.868-.89-1.4-.213-.536-.32-1.13-.32-1.778 0-.82.13-1.537.394-2.15.27-.62.656-1.133 1.163-1.54.507-.407 1.133-.71 1.878-.912.745-.206 1.6-.31 2.565-.31.96 0 1.81.103 2.556.31.75.2 1.38.504 1.887.912.51.407.895.92 1.157 1.54.27.614.403 1.33.403 2.15 0 .65-.108 1.242-.32 1.78-.216.53-.515.996-.9 1.397-.38.4-.83.732-1.356.99-.525.255-.707.43-1.336.523l-.092.894h.66l.447-.01.75-.034.606-.044.4-.053.533-1.354H18v3h-5l.246-3.038c1.066-.11 1.337-.696 2.002-1.363.263-.36.452-.77.568-1.23.122-.46.183-.947.183-1.46 0-.62-.066-1.186-.194-1.7-.128-.52-.348-.96-.66-1.326-.31-.372-.73-.66-1.255-.867-.524-.206-1.1-.31-1.893-.31"/>
+        <path id="omega" d="M12 6.708c-.794 0-1.368.103-1.894.31-.525.207-.944.496-1.255.867-.31.366-.53.808-.66 1.327-.124.513-.19 1.08-.19 1.7 0 .512.06 1 .176 1.46.122.46.31.87.568 1.23.63.862 1.156 1.138 2.012 1.362L11 18H6v-3h.604l.53 1.353.395.053.6.044.75.035.458.01H10l-.09-.895c-.63-.094-.812-.268-1.337-.522-.525-.26-.98-.59-1.365-.99-.38-.402-.675-.868-.89-1.4-.213-.536-.32-1.13-.32-1.778 0-.82.13-1.537.394-2.15.27-.62.656-1.133 1.163-1.54.507-.407 1.133-.71 1.878-.912.745-.206 1.6-.31 2.565-.31.96 0 1.81.103 2.556.31.75.2 1.38.504 1.887.912.51.407.896.92 1.158 1.54.27.614.403 1.33.403 2.15 0 .65-.107 1.242-.32 1.78-.215.53-.514.996-.9 1.397-.38.4-.83.732-1.355.99-.525.255-.707.43-1.336.523l-.093.894h.66l.447-.01.75-.034.606-.044.4-.053.533-1.354H18v3h-5l.246-3.04c1.066-.11 1.337-.695 2.002-1.362.263-.36.452-.77.568-1.23.122-.46.183-.947.183-1.46 0-.62-.067-1.186-.195-1.7-.128-.52-.348-.96-.66-1.326-.31-.372-.73-.66-1.255-.867-.524-.206-1.1-.31-1.893-.31"/>
     </g>
 </svg>
index 71fa960..46092a6 100644 (file)
@@ -2,6 +2,6 @@
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="strikethrough-s">
         <path id="strikethrough" d="M6 12h12v1H6v-1z"/>
-        <path id="s" d="M12.094 6c-1.133 0-2.076.287-2.75.9-.67.613-1 1.49-1 2.52 0 .89.22 1.602.72 2.13.497.528 1.278.91 2.31 1.14l.813.182v-.03c.656.147 1.128.375 1.375.63.252.256.375.607.375 1.11 0 .573-.172.97-.53 1.26-.36.29-.895.45-1.626.45-.474 0-.966-.074-1.466-.24-.502-.166-1.03-.417-1.562-.75l-.374-.238v2.158l.156.062c.58.237 1.144.417 1.69.54.548.12 1.07.18 1.56.18 1.287 0 2.298-.293 3-.9.71-.605 1.063-1.486 1.063-2.608 0-.943-.256-1.726-.78-2.312-.522-.592-1.306-1-2.345-1.23l-.812-.18c-.716-.148-1.204-.352-1.406-.54-.205-.202-.312-.484-.312-.934 0-.533.162-.9.5-1.17.342-.27.836-.42 1.53-.42.396 0 .82.052 1.25.18.434.128.91.334 1.407.6l.374.18V6.63s-1.188-.383-1.688-.48c-.5-.097-.984-.15-1.468-.15z"/>
+        <path id="s" d="M12.094 6c-1.133 0-2.076.287-2.75.9-.67.613-1 1.49-1 2.52 0 .89.22 1.602.72 2.13.497.528 1.278.91 2.31 1.14l.813.182v-.03c.656.147 1.128.375 1.375.63.252.256.375.607.375 1.11 0 .573-.172.97-.53 1.26-.36.29-.895.45-1.626.45-.473 0-.965-.074-1.465-.24-.502-.166-1.03-.417-1.562-.75l-.374-.238v2.158l.155.062c.58.237 1.144.417 1.69.54.548.12 1.07.18 1.56.18 1.287 0 2.298-.293 3-.9.71-.605 1.063-1.486 1.063-2.608 0-.943-.256-1.726-.78-2.312-.522-.592-1.306-1-2.345-1.23l-.812-.18c-.715-.148-1.203-.352-1.405-.54-.205-.202-.312-.484-.312-.934 0-.533.162-.9.5-1.17.342-.27.836-.42 1.53-.42.396 0 .82.052 1.25.18.434.128.91.334 1.407.6l.374.18V6.63s-1.188-.383-1.688-.48c-.5-.097-.984-.15-1.468-.15z"/>
     </g>
 </svg>
index 71671c0..5265e04 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="tag">
-        <path d="M18.748 11.717c.39.39.39 1.025 0 1.414l-4.95 4.95c-.388.39-1.024.39-1.413 0l-6.01-6.01c-.39-.386-.707-1.154-.707-1.704V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457c-.58.575-.578 1.513 0 2.092.577.574 1.515.574 2.094 0 .576-.58.576-1.52 0-2.097-.58-.576-1.518-.577-2.094 0z"/>
+        <path d="M18.748 11.717c.39.39.39 1.025 0 1.414l-4.95 4.95c-.388.39-1.024.39-1.413 0l-6.01-6.01c-.39-.385-.707-1.153-.707-1.703V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457c-.58.575-.578 1.513 0 2.092.577.573 1.515.573 2.094 0 .576-.58.576-1.52 0-2.098-.58-.576-1.518-.577-2.094 0z"/>
     </g>
 </svg>
index 77c66a0..466672e 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="text-style">
-        <path id="a" d="M15.296 18h2.79l-1.14-12h-2.79L6 18h2.79l2.038-3h4.183l.288 3zm-3.11-5L14.5 9.6l.323 3.4H12.19z"/>
+        <path id="a" d="M15.296 18h2.79l-1.14-12h-2.79L6 18h2.79l2.038-3h4.183l.29 3zm-3.11-5L14.5 9.6l.323 3.4H12.19z"/>
         <path id="underline" d="M6 19h12v1H6v-1z"/>
     </g>
 </svg>
index 6f3da1e..f443f84 100644 (file)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="unLock">
         <path d="M8 6c-2.21 0-4 1.79-4 4v1h2v-1c0-1.105.895-2 2-2s2 .895 2 2v1H9v7h10v-7h-7v-1c0-2.21-1.79-4-4-4z"/>
index 96305a6..1aabf8b 100644 (file)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="unLock">
         <path d="M15 6c2.21 0 4 1.79 4 4v1h-2v-1c0-1.105-.895-2-2-2s-2 .895-2 2v1h1v7H4v-7h7v-1c0-2.21 1.79-4 4-4z"/>
index 7378298..f5aaf5d 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="underline-u">
-        <path id="u" d="M8 6h2v5.96c-.104 1.706.695 2 2 2.04 1.777.062 2.002-.88 2-2.04V6h2v6.123c0 1.28-.338 2.245-1.016 2.898-.672.654-1.666.98-2.98.98-1.32 0-2.32-.324-2.996-.98C8.336 14.37 8 13.405 8 12.126V6"/>
+        <path id="u" d="M8 6h2v5.96c-.104 1.706.695 2 2 2.04 1.777.062 2.002-.88 2-2.04V6h2v6.123c0 1.28-.338 2.245-1.016 2.898-.672.655-1.666.98-2.98.98-1.32 0-2.32-.323-2.996-.98C8.336 14.37 8 13.406 8 12.127V6"/>
         <path id="underline" d="M7 17h10v1H7v-1z"/>
     </g>
 </svg>
index cddc0db..868bcc9 100644 (file)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
     <g id="alert">
         <path d="M6 12c-3.314 0-6-2.686-6-6s2.686-6 6-6 6 2.686 6 6-2.686 6-6 6zM5 7h2V2H5zm0 3h2V8H5z"/>
index c4f7998..e0f13e6 100644 (file)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
     <g id="ltr">
         <path id="arrow" d="M3 9V2l6 3.5z"/>
index b49613e..c88c364 100644 (file)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
     <g id="rtl">
         <path id="arrow" d="M3 5.5L9 9V2z"/>
index b18405d..3c010c1 100644 (file)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
     <g id="clear">
         <path id="circle-with-cross" d="M6 0C2.7 0 0 2.7 0 6s2.7 6 6 6 6-2.7 6-6-2.7-6-6-6zM3.5 2.5L6 5l2.5-2.5 1 1L7 6l2.5 2.5-1 1L6 7 3.5 9.5l-1-1L5 6 2.5 3.5z"/>
index 051ed5f..d1e0cba 100644 (file)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
     <g id="required">
         <path d="M5 1h2v10H5zm4.83 1.634l1 1.732-8.66 5-1-1.732zM1.17 4.366l1-1.732 8.66 5-1 1.732z"/>
index 985e602..2718a9b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/indicators/search-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/indicators/search-ltr.png differ
index e5c4010..9b3c199 100644 (file)
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
     <g id="search">
-        <path id="path3051" d="M10.37 9.474L7.994 7.1l-.17-.1c.404-.566.644-1.26.644-2.01-.002-1.92-1.56-3.476-3.478-3.476-1.92 0-3.478 1.557-3.478 3.478 0 1.92 1.557 3.477 3.478 3.477.75 0 1.442-.24 2.01-.646l.098.17 2.375 2.373c.19.188.543.142.79-.105s.293-.6.104-.79zm-5.38-2.27c-1.22 0-2.213-.99-2.213-2.213 0-1.22.99-2.21 2.212-2.21 1.22 0 2.21.99 2.21 2.213S6.21 7.207 4.99 7.207z"/>
+        <path id="path3051" d="M10.37 9.474L7.994 7.1l-.17-.1c.404-.566.644-1.26.644-2.01-.002-1.92-1.56-3.476-3.478-3.476-1.92 0-3.478 1.557-3.478 3.478 0 1.92 1.557 3.477 3.478 3.477.75 0 1.442-.24 2.01-.647l.098.17 2.375 2.373c.19.188.543.142.79-.105s.293-.6.104-.79zm-5.38-2.27c-1.22 0-2.213-.99-2.213-2.213 0-1.22.99-2.21 2.212-2.21 1.22 0 2.21.99 2.21 2.214s-.99 2.213-2.21 2.213z"/>
     </g>
 </svg>
index 4213d67..b7a8d22 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/indicators/search-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/indicators/search-rtl.png differ
index 759f57e..3201301 100644 (file)
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
     <g id="search">
-        <path id="path3051" d="M1.63 9.474L4.006 7.1l.17-.1c-.404-.566-.644-1.26-.644-2.01.002-1.92 1.56-3.476 3.478-3.476 1.92 0 3.478 1.557 3.478 3.478 0 1.92-1.557 3.477-3.478 3.477-.75 0-1.442-.24-2.01-.646l-.098.17-2.375 2.373c-.19.188-.543.142-.79-.105s-.293-.6-.104-.79zm5.378-2.27c1.22 0 2.213-.99 2.213-2.213 0-1.22-.99-2.21-2.21-2.21-1.222 0-2.213.99-2.213 2.213S5.79 7.207 7.01 7.207z"/>
+        <path id="path3051" d="M1.63 9.474L4.006 7.1l.17-.1c-.404-.566-.644-1.26-.644-2.01.002-1.92 1.56-3.476 3.478-3.476 1.92 0 3.478 1.557 3.478 3.478 0 1.92-1.557 3.477-3.478 3.477-.75 0-1.442-.24-2.01-.647l-.098.17-2.375 2.373c-.19.188-.543.142-.79-.105s-.293-.6-.104-.79zm5.378-2.27c1.22 0 2.213-.99 2.213-2.213 0-1.22-.99-2.21-2.21-2.21S4.8 3.77 4.8 4.995 5.79 7.207 7.01 7.207z"/>
     </g>
 </svg>
index e413e75..cadec2a 100644 (file)
@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0, 0, 16, 16">
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
     <g id="transparency">
         <path d="M0 0h8v8H0zm8 8h8v8H8z" fill="#ccc"/>
         <path d="M8 0h8v8H8zM0 8h8v8H0z" fill="#fff"/>
index 4f786c5..ba0b477 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced-invert.png differ
index a0f0670..7813622 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M20 13.44v-2.88l-1.8-.3c-.1-.397-.3-.794-.6-1.39l1.1-1.49-2.1-2.088-1.5 1.093c-.5-.298-1-.497-1.4-.596L13.5 4h-2.9l-.3 1.79c-.5.098-.9.297-1.4.595L7.4 5.292 5.3 7.38l1 1.49c-.3.496-.4.894-.6 1.39l-1.7.2v2.882l1.8.298c.1.497.3.894.6 1.39l-1 1.492 2.1 2.087 1.5-.997c.4.2.9.397 1.4.596l.3 1.79h3l.3-1.79c.5-.1.9-.298 1.4-.596l1.5 1.093L19 16.62l-1.1-1.49c.3-.496.5-.993.6-1.39l1.5-.3zm-8 1.492c-1.7 0-3-1.292-3-2.982 0-1.69 1.3-2.98 3-2.98s3 1.29 3 2.98-1.3 2.982-3 2.982z"/>
+    <path d="M20 13.44v-2.88l-1.8-.3c-.1-.397-.3-.794-.6-1.39l1.1-1.49-2.1-2.088-1.5 1.093c-.5-.298-1-.497-1.4-.596L13.5 4h-2.9l-.3 1.79c-.5.098-.9.297-1.4.595L7.4 5.292 5.3 7.38l1 1.49c-.3.496-.4.894-.6 1.39l-1.7.2v2.882l1.8.298c.1.497.3.894.6 1.39l-1 1.492 2.1 2.087L9 17.61c.4.2.9.397 1.4.596l.3 1.79h3l.3-1.79c.5-.1.9-.298 1.4-.596l1.5 1.093L19 16.62l-1.1-1.49c.3-.496.5-.993.6-1.39l1.5-.3zm-8 1.492c-1.7 0-3-1.292-3-2.982 0-1.69 1.3-2.98 3-2.98s3 1.29 3 2.98-1.3 2.982-3 2.982z"/>
 </svg>
index 1358969..c2a2e5e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced.png differ
index d0bd78b..a68158d 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M20 13.44v-2.88l-1.8-.3c-.1-.397-.3-.794-.6-1.39l1.1-1.49-2.1-2.088-1.5 1.093c-.5-.298-1-.497-1.4-.596L13.5 4h-2.9l-.3 1.79c-.5.098-.9.297-1.4.595L7.4 5.292 5.3 7.38l1 1.49c-.3.496-.4.894-.6 1.39l-1.7.2v2.882l1.8.298c.1.497.3.894.6 1.39l-1 1.492 2.1 2.087 1.5-.997c.4.2.9.397 1.4.596l.3 1.79h3l.3-1.79c.5-.1.9-.298 1.4-.596l1.5 1.093L19 16.62l-1.1-1.49c.3-.496.5-.993.6-1.39l1.5-.3zm-8 1.492c-1.7 0-3-1.292-3-2.982 0-1.69 1.3-2.98 3-2.98s3 1.29 3 2.98-1.3 2.982-3 2.982z"/>
+    <path d="M20 13.44v-2.88l-1.8-.3c-.1-.397-.3-.794-.6-1.39l1.1-1.49-2.1-2.088-1.5 1.093c-.5-.298-1-.497-1.4-.596L13.5 4h-2.9l-.3 1.79c-.5.098-.9.297-1.4.595L7.4 5.292 5.3 7.38l1 1.49c-.3.496-.4.894-.6 1.39l-1.7.2v2.882l1.8.298c.1.497.3.894.6 1.39l-1 1.492 2.1 2.087L9 17.61c.4.2.9.397 1.4.596l.3 1.79h3l.3-1.79c.5-.1.9-.298 1.4-.596l1.5 1.093L19 16.62l-1.1-1.49c.3-.496.5-.993.6-1.39l1.5-.3zm-8 1.492c-1.7 0-3-1.292-3-2.982 0-1.69 1.3-2.98 3-2.98s3 1.29 3 2.98-1.3 2.982-3 2.982z"/>
 </svg>
index 37b57fe..327e1dd 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr-invert.png differ
index 5b29c98..1414c99 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="-487 489 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M-472.8 494.7l6.3 5.7-6.3 5.7v-3.8h-1.3c-3.2 0-6.3 1.3-7.6 3.8 0-4.7 2.8-7.6 7.9-7.6h.9v-3.8z"/>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" id="svg3032"><style>* { fill: #FFFFFF }</style>
+    <path d="M13.3 6.3l6.3 5.7-6.3 5.7v-3.8H12c-3.2 0-6.3 1.3-7.6 3.8 0-4.7 2.8-7.6 7.9-7.6h.9V6.3z" id="path3034"/>
 </svg>
index 7d2113f..649cd14 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr.png differ
index 20835d2..266bc2a 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="-487 489 24 24">
-    <path d="M-472.8 494.7l6.3 5.7-6.3 5.7v-3.8h-1.3c-3.2 0-6.3 1.3-7.6 3.8 0-4.7 2.8-7.6 7.9-7.6h.9v-3.8z"/>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" id="svg3032">
+    <path d="M13.3 6.3l6.3 5.7-6.3 5.7v-3.8H12c-3.2 0-6.3 1.3-7.6 3.8 0-4.7 2.8-7.6 7.9-7.6h.9V6.3z" id="path3034"/>
 </svg>
index a50b306..f04017c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl-invert.png differ
index 6f69940..d577dde 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="-487 489 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M-476.3 494.7l-6.3 5.7 6.3 5.7v-3.8h1.3c3.2 0 6.3 1.3 7.6 3.8 0-4.7-2.8-7.6-7.9-7.6h-.9v-3.8z"/>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" id="svg3032"><style>* { fill: #FFFFFF }</style>
+    <path d="M10.7 6.3L4.4 12l6.3 5.7v-3.8H12c3.2 0 6.3 1.3 7.6 3.8 0-4.7-2.8-7.6-7.9-7.6h-.9V6.3z" id="path3034"/>
 </svg>
index ed69a01..d591768 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl.png differ
index e919d37..7c4779c 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="-487 489 24 24">
-    <path d="M-476.3 494.7l-6.3 5.7 6.3 5.7v-3.8h1.3c3.2 0 6.3 1.3 7.6 3.8 0-4.7-2.8-7.6-7.9-7.6h-.9v-3.8z"/>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" id="svg3032">
+    <path d="M10.7 6.3L4.4 12l6.3 5.7v-3.8H12c3.2 0 6.3 1.3 7.6 3.8 0-4.7-2.8-7.6-7.9-7.6h-.9V6.3z" id="path3034"/>
 </svg>
index b498481..30d7d20 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain-invert.png differ
index 4363d3e..e1a7c67 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="bold-arab-ain">
-        <path id="arab-ain" d="M9.337 13.616c0 1.35 1.386 2.1 4.16 2.258l2.186-.03.318.045c-.03.124-.25.342-.662.65l-.09.065c-1.235.93-2.422 1.393-3.56 1.393-1.142 0-2.045-.33-2.71-.99-.65-.66-.975-1.56-.975-2.7.006-1.353.567-2.572 1.685-3.657v-.043l-.606-.55c-.15-.18-.222-.39-.222-.63 0-.49.24-1.11.717-1.863.65-1.046 1.303-1.566 1.958-1.56.886.004 1.618.42 2.194 1.245.324.48-.03.55-1.065.22-.842-.328-1.527-.05-2.054.827l.015.074 1.123.866.052.005c1.403-.497 2.417-.74 3.042-.725-.058.116-.14.36-.243.732-.105.357-.206.684-.305.982l-.126.373-.385.05c-1.743.24-2.992.716-3.745 1.43-.463.463-.697.972-.702 1.524"/>
+        <path id="arab-ain" d="M9.337 13.616c0 1.35 1.386 2.1 4.16 2.258l2.186-.03.318.045c-.03.123-.25.34-.66.65l-.09.064c-1.236.93-2.423 1.393-3.56 1.393-1.143 0-2.046-.33-2.71-.99-.65-.66-.976-1.56-.976-2.7.006-1.353.567-2.572 1.685-3.657v-.043l-.607-.55c-.15-.18-.222-.39-.222-.63 0-.49.24-1.11.718-1.863.65-1.046 1.303-1.566 1.958-1.56.886.004 1.618.42 2.194 1.245.324.48-.03.55-1.065.22-.842-.33-1.527-.05-2.054.826l.016.074 1.123.866.05.005c1.404-.496 2.418-.74 3.043-.724-.058.116-.14.36-.243.732-.105.357-.206.684-.305.982l-.126.373-.386.05c-1.743.24-2.992.716-3.745 1.43-.464.463-.698.972-.703 1.524"/>
     </g>
 </svg>
index ad07634..e9dce68 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain.png differ
index 2f0edb7..23ed091 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="bold-arab-ain">
-        <path id="arab-ain" d="M9.337 13.616c0 1.35 1.386 2.1 4.16 2.258l2.186-.03.318.045c-.03.124-.25.342-.662.65l-.09.065c-1.235.93-2.422 1.393-3.56 1.393-1.142 0-2.045-.33-2.71-.99-.65-.66-.975-1.56-.975-2.7.006-1.353.567-2.572 1.685-3.657v-.043l-.606-.55c-.15-.18-.222-.39-.222-.63 0-.49.24-1.11.717-1.863.65-1.046 1.303-1.566 1.958-1.56.886.004 1.618.42 2.194 1.245.324.48-.03.55-1.065.22-.842-.328-1.527-.05-2.054.827l.015.074 1.123.866.052.005c1.403-.497 2.417-.74 3.042-.725-.058.116-.14.36-.243.732-.105.357-.206.684-.305.982l-.126.373-.385.05c-1.743.24-2.992.716-3.745 1.43-.463.463-.697.972-.702 1.524"/>
+        <path id="arab-ain" d="M9.337 13.616c0 1.35 1.386 2.1 4.16 2.258l2.186-.03.318.045c-.03.123-.25.34-.66.65l-.09.064c-1.236.93-2.423 1.393-3.56 1.393-1.143 0-2.046-.33-2.71-.99-.65-.66-.976-1.56-.976-2.7.006-1.353.567-2.572 1.685-3.657v-.043l-.607-.55c-.15-.18-.222-.39-.222-.63 0-.49.24-1.11.718-1.863.65-1.046 1.303-1.566 1.958-1.56.886.004 1.618.42 2.194 1.245.324.48-.03.55-1.065.22-.842-.33-1.527-.05-2.054.826l.016.074 1.123.866.05.005c1.404-.496 2.418-.74 3.043-.724-.058.116-.14.36-.243.732-.105.357-.206.684-.305.982l-.126.373-.386.05c-1.743.24-2.992.716-3.745 1.43-.464.463-.698.972-.703 1.524"/>
     </g>
 </svg>
index 42518e7..9eb593b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad-invert.png differ
index 6a2a9e3..8b75d71 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="bold-arab-dad">
-        <path id="arab-dad" d="M16.41 8.232l-1.675-.665L15.43 6l1.687.64-.707 1.592m.775 3.078c-.51-.286-1-.427-1.476-.423-.474 0-.985.205-1.535.616l-.506.38.006.024c1.084.066 1.934.1 2.55.1h.314c.57-.022.994-.065 1.278-.132-.067-.17-.275-.36-.625-.566h-.006m-6.803 3.293c-.017-.904-.33-1.87-.938-2.898l1.294-1.73.118.15c.267.336.504.924.713 1.766l.066.05c.496-.007.942-.17 1.338-.484v-.006l1.732-1.53c.68-.6 1.282-.9 1.807-.9.384.003.85.194 1.395.57.55.378.884.697 1 .96.063.15.094.385.094.71 0 .694-.11 1.227-.33 1.596-.193.31-.474.555-.845.734-.438.208-1.55.312-3.333.312-.8 0-1.794-.02-2.982-.062l-.144.43c-.254.67-.463 1.112-.625 1.323-.725.937-1.786 1.405-3.183 1.405C5.85 16.99 5 16.076 5 14.256c.003-.94.278-1.814.824-2.618.15-.216.298-.367.444-.454.225-.133.288-.09.188.124-.396.862-.596 1.548-.6 2.058.008 1.177.752 1.768 2.232 1.772 1.038-.004 1.803-.182 2.295-.535"/>
+        <path id="arab-dad" d="M16.41 8.232l-1.675-.665L15.43 6l1.687.64-.707 1.592m.775 3.078c-.51-.286-1-.427-1.476-.423-.475 0-.986.205-1.536.616l-.506.38.006.024c1.084.066 1.934.1 2.55.1h.314c.57-.022.994-.065 1.278-.132-.067-.17-.275-.36-.625-.566h-.005M10.382 14.6c-.017-.904-.33-1.87-.938-2.898l1.294-1.73.118.15c.267.336.504.924.713 1.766l.065.05c.496-.007.942-.17 1.338-.484v-.006l1.732-1.53c.68-.6 1.282-.9 1.807-.9.384.003.85.194 1.395.57.55.378.884.697 1 .96.063.15.094.385.094.71 0 .694-.11 1.227-.33 1.596-.192.31-.473.555-.844.734-.438.208-1.55.312-3.333.312-.8 0-1.794-.02-2.982-.062l-.143.43c-.254.67-.463 1.112-.625 1.323-.725.937-1.786 1.405-3.183 1.405C5.85 16.99 5 16.076 5 14.256c.003-.94.278-1.814.824-2.618.15-.216.298-.367.444-.454.225-.133.288-.09.188.124-.396.862-.596 1.548-.6 2.058.008 1.177.752 1.768 2.232 1.772 1.038-.004 1.803-.182 2.295-.535"/>
     </g>
 </svg>
index 0ade40c..46d579b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad.png differ
index ba7ffe1..7e6769d 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="bold-arab-dad">
-        <path id="arab-dad" d="M16.41 8.232l-1.675-.665L15.43 6l1.687.64-.707 1.592m.775 3.078c-.51-.286-1-.427-1.476-.423-.474 0-.985.205-1.535.616l-.506.38.006.024c1.084.066 1.934.1 2.55.1h.314c.57-.022.994-.065 1.278-.132-.067-.17-.275-.36-.625-.566h-.006m-6.803 3.293c-.017-.904-.33-1.87-.938-2.898l1.294-1.73.118.15c.267.336.504.924.713 1.766l.066.05c.496-.007.942-.17 1.338-.484v-.006l1.732-1.53c.68-.6 1.282-.9 1.807-.9.384.003.85.194 1.395.57.55.378.884.697 1 .96.063.15.094.385.094.71 0 .694-.11 1.227-.33 1.596-.193.31-.474.555-.845.734-.438.208-1.55.312-3.333.312-.8 0-1.794-.02-2.982-.062l-.144.43c-.254.67-.463 1.112-.625 1.323-.725.937-1.786 1.405-3.183 1.405C5.85 16.99 5 16.076 5 14.256c.003-.94.278-1.814.824-2.618.15-.216.298-.367.444-.454.225-.133.288-.09.188.124-.396.862-.596 1.548-.6 2.058.008 1.177.752 1.768 2.232 1.772 1.038-.004 1.803-.182 2.295-.535"/>
+        <path id="arab-dad" d="M16.41 8.232l-1.675-.665L15.43 6l1.687.64-.707 1.592m.775 3.078c-.51-.286-1-.427-1.476-.423-.475 0-.986.205-1.536.616l-.506.38.006.024c1.084.066 1.934.1 2.55.1h.314c.57-.022.994-.065 1.278-.132-.067-.17-.275-.36-.625-.566h-.005M10.382 14.6c-.017-.904-.33-1.87-.938-2.898l1.294-1.73.118.15c.267.336.504.924.713 1.766l.065.05c.496-.007.942-.17 1.338-.484v-.006l1.732-1.53c.68-.6 1.282-.9 1.807-.9.384.003.85.194 1.395.57.55.378.884.697 1 .96.063.15.094.385.094.71 0 .694-.11 1.227-.33 1.596-.192.31-.473.555-.844.734-.438.208-1.55.312-3.333.312-.8 0-1.794-.02-2.982-.062l-.143.43c-.254.67-.463 1.112-.625 1.323-.725.937-1.786 1.405-3.183 1.405C5.85 16.99 5 16.076 5 14.256c.003-.94.278-1.814.824-2.618.15-.216.298-.367.444-.454.225-.133.288-.09.188.124-.396.862-.596 1.548-.6 2.058.008 1.177.752 1.768 2.232 1.772 1.038-.004 1.803-.182 2.295-.535"/>
     </g>
 </svg>
index c11de3e..03a7931 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to-invert.png differ
index e3a0813..0176bb2 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="bold-armn-to">
-        <path id="armn-to" d="M13.86 16.257c.124 0 .254-.026.39-.078.135-.06.257-.15.367-.277.114-.13.205-.302.273-.516.073-.214.11-.48.11-.798V13h-1.14c-.14 0-.284.026-.43.078-.14.047-.27.133-.383.258-.11.125-.2.294-.274.508-.067.213-.1.487-.1.82 0 .34.035.47.108.695.08.215.178.392.29.53.12.133.25.23.386.29.14.05.276.074.406.074m-2.97-7.84c-.37.082-.694.247-.975.45-.28.198-.505.47-.672.813-.16.342-.242.78-.242 1.31V18H6v-7.188c0-.776.15-1.455.453-2.04.302-.587.714-1.077 1.234-1.467.52-.39 1.13-.685 1.83-.883.697-.198 1.44-.297 2.225-.297.526 0 1.04.044 1.54.133.504.088.98.22 1.43.398.447.172.858.388 1.233.65.375.26.698.564.97.913.275.345.49.735.64 1.17.15.43.226 1.09.226 1.61h1.356v2.04H17.78v1.6c0 .58-.103 1.09-.31 1.54-.21.44-.49.812-.845 1.114-.35.302-.834.53-1.297.687-.464.15-.953.227-1.47.227-.51 0-.996-.08-1.46-.235-.464-.156-.87-.39-1.22-.703-.348-.314-.626-.704-.835-1.173-.203-.473-.304-1.028-.304-1.663s.102-1.182.32-1.64c.21-.46.494-.685.85-.977.352-.297.76-.513 1.22-.648.455-.14.932-.21 1.43-.21h1.13c-.01-.49-.04-1.044-.24-1.36-.2-.324-.456-.58-.77-.767-.31-.193-.597-.332-.983-.426-.375-.09-.578-.094-1.1-.094-.52 0-.64.02-1.01.102z"/>
+        <path id="armn-to" d="M13.86 16.257c.124 0 .254-.026.39-.078.135-.06.257-.15.367-.278.114-.13.205-.302.273-.516.073-.214.11-.48.11-.798V13h-1.14c-.14 0-.284.026-.43.078-.14.047-.27.133-.383.258-.11.125-.2.294-.274.508-.067.213-.1.487-.1.82 0 .34.035.47.108.695.08.214.18.39.29.53.12.132.25.23.387.29.14.05.276.073.406.073m-2.97-7.84c-.37.082-.694.247-.975.45-.28.198-.505.47-.672.813-.16.342-.242.78-.242 1.31V18H6v-7.188c0-.776.15-1.455.453-2.04.302-.587.714-1.077 1.234-1.467.52-.39 1.13-.685 1.83-.883.697-.198 1.44-.297 2.225-.297.526 0 1.04.044 1.54.133.504.088.98.22 1.43.398.447.172.858.388 1.233.65.375.26.698.564.97.913.275.344.49.734.64 1.17.15.43.226 1.09.226 1.61h1.357v2.04H17.78v1.6c0 .58-.103 1.09-.31 1.54-.21.44-.49.81-.845 1.113-.35.302-.834.53-1.297.687-.464.15-.953.227-1.47.227-.51 0-.996-.08-1.46-.235-.464-.156-.87-.39-1.22-.703-.348-.315-.626-.705-.835-1.174-.203-.473-.304-1.028-.304-1.663s.1-1.182.32-1.64c.21-.46.493-.685.85-.977.35-.297.76-.513 1.22-.648.454-.14.93-.21 1.43-.21h1.13c-.01-.49-.04-1.044-.24-1.36-.2-.324-.457-.58-.77-.767-.31-.192-.598-.33-.984-.425-.375-.09-.578-.094-1.1-.094-.52 0-.64.02-1.01.103z"/>
     </g>
 </svg>
index 0a16f8c..5e16e38 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to.png differ
index 0dc8b52..7471d1a 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="bold-armn-to">
-        <path id="armn-to" d="M13.86 16.257c.124 0 .254-.026.39-.078.135-.06.257-.15.367-.277.114-.13.205-.302.273-.516.073-.214.11-.48.11-.798V13h-1.14c-.14 0-.284.026-.43.078-.14.047-.27.133-.383.258-.11.125-.2.294-.274.508-.067.213-.1.487-.1.82 0 .34.035.47.108.695.08.215.178.392.29.53.12.133.25.23.386.29.14.05.276.074.406.074m-2.97-7.84c-.37.082-.694.247-.975.45-.28.198-.505.47-.672.813-.16.342-.242.78-.242 1.31V18H6v-7.188c0-.776.15-1.455.453-2.04.302-.587.714-1.077 1.234-1.467.52-.39 1.13-.685 1.83-.883.697-.198 1.44-.297 2.225-.297.526 0 1.04.044 1.54.133.504.088.98.22 1.43.398.447.172.858.388 1.233.65.375.26.698.564.97.913.275.345.49.735.64 1.17.15.43.226 1.09.226 1.61h1.356v2.04H17.78v1.6c0 .58-.103 1.09-.31 1.54-.21.44-.49.812-.845 1.114-.35.302-.834.53-1.297.687-.464.15-.953.227-1.47.227-.51 0-.996-.08-1.46-.235-.464-.156-.87-.39-1.22-.703-.348-.314-.626-.704-.835-1.173-.203-.473-.304-1.028-.304-1.663s.102-1.182.32-1.64c.21-.46.494-.685.85-.977.352-.297.76-.513 1.22-.648.455-.14.932-.21 1.43-.21h1.13c-.01-.49-.04-1.044-.24-1.36-.2-.324-.456-.58-.77-.767-.31-.193-.597-.332-.983-.426-.375-.09-.578-.094-1.1-.094-.52 0-.64.02-1.01.102z"/>
+        <path id="armn-to" d="M13.86 16.257c.124 0 .254-.026.39-.078.135-.06.257-.15.367-.278.114-.13.205-.302.273-.516.073-.214.11-.48.11-.798V13h-1.14c-.14 0-.284.026-.43.078-.14.047-.27.133-.383.258-.11.125-.2.294-.274.508-.067.213-.1.487-.1.82 0 .34.035.47.108.695.08.214.18.39.29.53.12.132.25.23.387.29.14.05.276.073.406.073m-2.97-7.84c-.37.082-.694.247-.975.45-.28.198-.505.47-.672.813-.16.342-.242.78-.242 1.31V18H6v-7.188c0-.776.15-1.455.453-2.04.302-.587.714-1.077 1.234-1.467.52-.39 1.13-.685 1.83-.883.697-.198 1.44-.297 2.225-.297.526 0 1.04.044 1.54.133.504.088.98.22 1.43.398.447.172.858.388 1.233.65.375.26.698.564.97.913.275.344.49.734.64 1.17.15.43.226 1.09.226 1.61h1.357v2.04H17.78v1.6c0 .58-.103 1.09-.31 1.54-.21.44-.49.81-.845 1.113-.35.302-.834.53-1.297.687-.464.15-.953.227-1.47.227-.51 0-.996-.08-1.46-.235-.464-.156-.87-.39-1.22-.703-.348-.315-.626-.705-.835-1.174-.203-.473-.304-1.028-.304-1.663s.1-1.182.32-1.64c.21-.46.493-.685.85-.977.35-.297.76-.513 1.22-.648.454-.14.93-.21 1.43-.21h1.13c-.01-.49-.04-1.044-.24-1.36-.2-.324-.457-.58-.77-.767-.31-.192-.598-.33-.984-.425-.375-.09-.578-.094-1.1-.094-.52 0-.64.02-1.01.103z"/>
     </g>
 </svg>
index 5716249..396215d 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="bold-cyrl-be">
-        <path id="cyrl-be" d="M7 6h9v2h-6v3h2.65c.892 0 1.632.11 2.22.327.587.218 1.087.622 1.5 1.21.42.59.63 1.188.63 1.98 0 .812-.21 1.397-.63 1.976-.418.578-.897.974-1.436 1.187-.533.213-1.295.32-2.286.32h-5.65m4.768-2c.75 0 1.28-.05 1.584-.12.305-.077.57-.247.792-.51.23-.26.343-.472.343-.854 0-.557-.2-.868-.596-1.12-.395-.255-1.067-.397-2.02-.397H10v3"/>
+        <path id="cyrl-be" d="M7 6h9v2h-6v3h2.65c.892 0 1.632.11 2.22.327.587.218 1.087.622 1.5 1.21.42.59.63 1.188.63 1.98 0 .812-.21 1.397-.63 1.976-.418.578-.897.974-1.436 1.187-.533.213-1.295.32-2.286.32h-5.65m4.768-2c.75 0 1.28-.05 1.584-.12.305-.077.57-.247.792-.51.23-.26.343-.472.343-.854 0-.557-.2-.868-.596-1.12-.396-.255-1.068-.397-2.02-.397H10v3"/>
     </g>
 </svg>
index d87d0fc..383ef32 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="bold-cyrl-be">
-        <path id="cyrl-be" d="M7 6h9v2h-6v3h2.65c.892 0 1.632.11 2.22.327.587.218 1.087.622 1.5 1.21.42.59.63 1.188.63 1.98 0 .812-.21 1.397-.63 1.976-.418.578-.897.974-1.436 1.187-.533.213-1.295.32-2.286.32h-5.65m4.768-2c.75 0 1.28-.05 1.584-.12.305-.077.57-.247.792-.51.23-.26.343-.472.343-.854 0-.557-.2-.868-.596-1.12-.395-.255-1.067-.397-2.02-.397H10v3"/>
+        <path id="cyrl-be" d="M7 6h9v2h-6v3h2.65c.892 0 1.632.11 2.22.327.587.218 1.087.622 1.5 1.21.42.59.63 1.188.63 1.98 0 .812-.21 1.397-.63 1.976-.418.578-.897.974-1.436 1.187-.533.213-1.295.32-2.286.32h-5.65m4.768-2c.75 0 1.28-.05 1.584-.12.305-.077.57-.247.792-.51.23-.26.343-.472.343-.854 0-.557-.2-.868-.596-1.12-.396-.255-1.068-.397-2.02-.397H10v3"/>
     </g>
 </svg>
index 6085d9c..3d7523a 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="bold-cyrl-zhe">
-        <path id="cyrl-zhe" d="M13 6v5.154c.328-.033.537-.18.705-.447.168-.266.4-.873.698-1.82.39-1.242.79-2.034 1.197-2.375.403-.336 1.075-.504 2.014-.504L18 6v1.78l-.386-.008c-.4 0-.69.062-.878.187-.186.116-.337.3-.452.55-.115.25-.286.762-.512 1.537-.12.41-.25.755-.392 1.032-.137.275-.383.536-.738.78.44.156.8.465 1.084.926.288.454.603 1.102.944 1.942L18 18h-2.314l-1.17-3.08-.113-.253-.24-.56c-.247-.57-.45-.933-.61-1.09-.16-.157-.318-.236-.553-.236V18h-2v-5.22c-.226 0-.382.077-.546.23-.164.15-.368.517-.612 1.097l-.246.56-.113.253L8.313 18H6l1.33-3.267c.327-.808.635-1.447.923-1.92.293-.476.663-.793 1.11-.95-.355-.244-.603-.5-.745-.772-.137-.273-.268-.62-.392-1.04-.222-.76-.39-1.264-.505-1.52-.11-.253-.26-.442-.45-.57-.185-.122-.49-.184-.916-.184L6 7.782v-1.78l.386.008c.953 0 1.63.17 2.034.512.4.347.79 1.136 1.177 2.366.3.954.534 1.564.698 1.83.168.26.377.405.705.438V6.002"/>
+        <path id="cyrl-zhe" d="M13 6v5.154c.328-.033.537-.18.705-.447.168-.266.4-.873.698-1.82.39-1.242.79-2.034 1.197-2.375.403-.336 1.075-.504 2.014-.504L18 6v1.78l-.386-.008c-.4 0-.69.062-.878.187-.186.115-.337.3-.452.55-.115.25-.286.76-.512 1.536-.12.41-.25.755-.392 1.032-.137.275-.383.536-.738.78.44.156.8.465 1.084.926.288.454.603 1.102.944 1.942L18 18h-2.314l-1.17-3.08-.113-.253-.24-.56c-.247-.57-.45-.933-.61-1.09-.16-.157-.318-.236-.553-.236V18h-2v-5.22c-.226 0-.382.077-.546.23-.164.15-.368.517-.612 1.097l-.246.56-.113.253L8.313 18H6l1.33-3.267c.327-.808.635-1.447.923-1.92.293-.476.663-.793 1.11-.95-.355-.244-.603-.5-.745-.772-.137-.272-.268-.62-.392-1.04-.222-.76-.39-1.263-.505-1.52-.11-.252-.26-.44-.45-.57-.184-.12-.49-.183-.915-.183L6 7.782v-1.78l.386.008c.953 0 1.63.17 2.034.512.4.347.79 1.136 1.177 2.366.3.954.534 1.564.698 1.83.168.26.377.405.705.438V6.002"/>
     </g>
 </svg>
index 3c0a879..e349905 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="bold-cyrl-zhe">
-        <path id="cyrl-zhe" d="M13 6v5.154c.328-.033.537-.18.705-.447.168-.266.4-.873.698-1.82.39-1.242.79-2.034 1.197-2.375.403-.336 1.075-.504 2.014-.504L18 6v1.78l-.386-.008c-.4 0-.69.062-.878.187-.186.116-.337.3-.452.55-.115.25-.286.762-.512 1.537-.12.41-.25.755-.392 1.032-.137.275-.383.536-.738.78.44.156.8.465 1.084.926.288.454.603 1.102.944 1.942L18 18h-2.314l-1.17-3.08-.113-.253-.24-.56c-.247-.57-.45-.933-.61-1.09-.16-.157-.318-.236-.553-.236V18h-2v-5.22c-.226 0-.382.077-.546.23-.164.15-.368.517-.612 1.097l-.246.56-.113.253L8.313 18H6l1.33-3.267c.327-.808.635-1.447.923-1.92.293-.476.663-.793 1.11-.95-.355-.244-.603-.5-.745-.772-.137-.273-.268-.62-.392-1.04-.222-.76-.39-1.264-.505-1.52-.11-.253-.26-.442-.45-.57-.185-.122-.49-.184-.916-.184L6 7.782v-1.78l.386.008c.953 0 1.63.17 2.034.512.4.347.79 1.136 1.177 2.366.3.954.534 1.564.698 1.83.168.26.377.405.705.438V6.002"/>
+        <path id="cyrl-zhe" d="M13 6v5.154c.328-.033.537-.18.705-.447.168-.266.4-.873.698-1.82.39-1.242.79-2.034 1.197-2.375.403-.336 1.075-.504 2.014-.504L18 6v1.78l-.386-.008c-.4 0-.69.062-.878.187-.186.115-.337.3-.452.55-.115.25-.286.76-.512 1.536-.12.41-.25.755-.392 1.032-.137.275-.383.536-.738.78.44.156.8.465 1.084.926.288.454.603 1.102.944 1.942L18 18h-2.314l-1.17-3.08-.113-.253-.24-.56c-.247-.57-.45-.933-.61-1.09-.16-.157-.318-.236-.553-.236V18h-2v-5.22c-.226 0-.382.077-.546.23-.164.15-.368.517-.612 1.097l-.246.56-.113.253L8.313 18H6l1.33-3.267c.327-.808.635-1.447.923-1.92.293-.476.663-.793 1.11-.95-.355-.244-.603-.5-.745-.772-.137-.272-.268-.62-.392-1.04-.222-.76-.39-1.263-.505-1.52-.11-.252-.26-.44-.45-.57-.184-.12-.49-.183-.915-.183L6 7.782v-1.78l.386.008c.953 0 1.63.17 2.034.512.4.347.79 1.136 1.177 2.366.3.954.534 1.564.698 1.83.168.26.377.405.705.438V6.002"/>
     </g>
 </svg>
index 18de673..5dc39ee 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g-invert.png differ
index c840c51..88733e0 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="bold-g">
-        <path id="g" d="M12 14v-2h5v4.203c-.497.475-1.22.894-2.166 1.26-.94.358-1.896.537-2.864.537-1.23 0-2.303-.253-3.217-.76-.915-.512-1.602-1.24-2.062-2.185-.46-.95-.69-1.982-.69-3.095 0-1.208.26-2.282.77-3.222.516-.94 1.268-1.66 2.258-2.16.754-.386 1.693-.58 2.816-.58 1.46 0 2.6.304 3.418.91.825.603 1.354 1.436 1.59 2.502l-2.36.435c-.165-.57-.48-1.018-.94-1.346-.453-.335-1.022-.5-1.707-.5-1.038 0-1.864.323-2.48.972-.61.65-.914 1.612-.914 2.89 0 1.376.31 2.41.93 3.102.62.686 1.434 1.03 2.44 1.03.497 0 .995-.096 1.49-.286.505-.196 1.334-.57 1.69-.846v-.867"/>
+        <path id="g" d="M12 14v-2h5v4.203c-.497.475-1.22.894-2.166 1.26-.94.358-1.896.537-2.864.537-1.23 0-2.303-.253-3.217-.76-.915-.512-1.602-1.24-2.062-2.185-.46-.95-.69-1.982-.69-3.095 0-1.208.26-2.282.77-3.222.517-.94 1.27-1.66 2.26-2.16.753-.386 1.692-.58 2.815-.58 1.46 0 2.6.304 3.418.91.825.603 1.354 1.436 1.59 2.502l-2.36.435c-.165-.57-.48-1.018-.94-1.346-.453-.336-1.022-.5-1.707-.5-1.038 0-1.864.322-2.48.97-.61.65-.914 1.613-.914 2.89 0 1.377.31 2.41.93 3.103.62.686 1.434 1.03 2.44 1.03.497 0 .995-.096 1.49-.286.505-.196 1.334-.57 1.69-.846v-.866"/>
     </g>
 </svg>
index e809453..cc4be63 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g.png differ
index 277f17e..05b46e2 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="bold-g">
-        <path id="g" d="M12 14v-2h5v4.203c-.497.475-1.22.894-2.166 1.26-.94.358-1.896.537-2.864.537-1.23 0-2.303-.253-3.217-.76-.915-.512-1.602-1.24-2.062-2.185-.46-.95-.69-1.982-.69-3.095 0-1.208.26-2.282.77-3.222.516-.94 1.268-1.66 2.258-2.16.754-.386 1.693-.58 2.816-.58 1.46 0 2.6.304 3.418.91.825.603 1.354 1.436 1.59 2.502l-2.36.435c-.165-.57-.48-1.018-.94-1.346-.453-.335-1.022-.5-1.707-.5-1.038 0-1.864.323-2.48.972-.61.65-.914 1.612-.914 2.89 0 1.376.31 2.41.93 3.102.62.686 1.434 1.03 2.44 1.03.497 0 .995-.096 1.49-.286.505-.196 1.334-.57 1.69-.846v-.867"/>
+        <path id="g" d="M12 14v-2h5v4.203c-.497.475-1.22.894-2.166 1.26-.94.358-1.896.537-2.864.537-1.23 0-2.303-.253-3.217-.76-.915-.512-1.602-1.24-2.062-2.185-.46-.95-.69-1.982-.69-3.095 0-1.208.26-2.282.77-3.222.517-.94 1.27-1.66 2.26-2.16.753-.386 1.692-.58 2.815-.58 1.46 0 2.6.304 3.418.91.825.603 1.354 1.436 1.59 2.502l-2.36.435c-.165-.57-.48-1.018-.94-1.346-.453-.336-1.022-.5-1.707-.5-1.038 0-1.864.322-2.48.97-.61.65-.914 1.613-.914 2.89 0 1.377.31 2.41.93 3.103.62.686 1.434 1.03 2.44 1.03.497 0 .995-.096 1.49-.286.505-.196 1.334-.57 1.69-.846v-.866"/>
     </g>
 </svg>
index 1a1ce2e..212e16d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-invert.png differ
index 1708674..a90feeb 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="regular-expression">
-        <path id="upper-case" d="M7.53 7L4 17h2.063l.72-2.406h3.624l.72 2.406h2.062L9.655 7H7.533zm1.064 1.53L9.938 13H7.25l1.344-4.47z"/>
-        <path id="lower-case" d="M18.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.444.25-.564 0-.955-.208-1.377-.625-.42-.418-.628-1.012-.628-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.322-.04v-.335c0-.772-.395-1.158-1.186-1.158-.61 0-1.325.18-2.147.55l-.688-1.4c.877-.46 1.85-.69 2.916-.69 1.024 0 1.59.22 2.134.666.545.445.818 1.12.818 2.03V17h-1.45m-.394-3.527l-.803.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .583.336.875 1.008.875.48 0 .865-.138 1.152-.415.29-.276.436-.644.436-1.102v-.627"/>
+        <path id="upper-case" d="M7.53 7L4 17h2.063l.72-2.406h3.624l.72 2.406h2.062L9.654 7H7.533zm1.064 1.53L9.938 13H7.25l1.344-4.47z"/>
+        <path id="lower-case" d="M18.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.443.25-.564 0-.955-.208-1.377-.625-.42-.418-.628-1.012-.628-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.322-.04v-.335c0-.772-.395-1.158-1.186-1.158-.61 0-1.325.18-2.147.55l-.688-1.4c.877-.46 1.85-.69 2.916-.69 1.024 0 1.59.22 2.134.665.545.445.818 1.12.818 2.03V17h-1.45m-.394-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .582.336.874 1.008.874.48 0 .865-.138 1.152-.415.29-.277.436-.645.436-1.103v-.627"/>
     </g>
 </svg>
index 1b0a659..f36e52c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive.png differ
index 8de2583..2f0e406 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="regular-expression">
-        <path id="upper-case" d="M7.53 7L4 17h2.063l.72-2.406h3.624l.72 2.406h2.062L9.655 7H7.533zm1.064 1.53L9.938 13H7.25l1.344-4.47z"/>
-        <path id="lower-case" d="M18.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.444.25-.564 0-.955-.208-1.377-.625-.42-.418-.628-1.012-.628-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.322-.04v-.335c0-.772-.395-1.158-1.186-1.158-.61 0-1.325.18-2.147.55l-.688-1.4c.877-.46 1.85-.69 2.916-.69 1.024 0 1.59.22 2.134.666.545.445.818 1.12.818 2.03V17h-1.45m-.394-3.527l-.803.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .583.336.875 1.008.875.48 0 .865-.138 1.152-.415.29-.276.436-.644.436-1.102v-.627"/>
+        <path id="upper-case" d="M7.53 7L4 17h2.063l.72-2.406h3.624l.72 2.406h2.062L9.654 7H7.533zm1.064 1.53L9.938 13H7.25l1.344-4.47z"/>
+        <path id="lower-case" d="M18.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.443.25-.564 0-.955-.208-1.377-.625-.42-.418-.628-1.012-.628-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.322-.04v-.335c0-.772-.395-1.158-1.186-1.158-.61 0-1.325.18-2.147.55l-.688-1.4c.877-.46 1.85-.69 2.916-.69 1.024 0 1.59.22 2.134.665.545.445.818 1.12.818 2.03V17h-1.45m-.394-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .582.336.874 1.008.874.48 0 .865-.138 1.152-.415.29-.277.436-.645.436-1.103v-.627"/>
     </g>
 </svg>
index 6d8abc3..32d5ae8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-ltr-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-ltr-invert.png differ
index 89c5e25..cd7ce21 100644 (file)
@@ -1,4 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M18.4 8.1c.8-.8.8-2 0-2.8L12 11.8 6.4 6.2 5 7.6l5.6 5.6-5 5c-.8.8-.8 2 0 2.8l6.4-6.4 5.6 5.6 1.4-1.4-5.6-5.6 5-5.1z"/>
+    <g id="close">
+        <path id="cross" d="M17.4 9.1c.8-.8.8-2 0-2.8L12 11.8 7.4 7.2 6 8.6l4.6 4.6-4 4c-.8.8-.8 2 0 2.8l5.4-5.4 4.6 4.6 1.4-1.4-4.6-4.6z"/>
+    </g>
 </svg>
index ea65697..b05cc97 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-ltr.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-ltr.png differ
index 4dfa16a..1427670 100644 (file)
@@ -1,4 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M18.4 8.1c.8-.8.8-2 0-2.8L12 11.8 6.4 6.2 5 7.6l5.6 5.6-5 5c-.8.8-.8 2 0 2.8l6.4-6.4 5.6 5.6 1.4-1.4-5.6-5.6 5-5.1z"/>
+    <g id="close">
+        <path id="cross" d="M17.4 9.1c.8-.8.8-2 0-2.8L12 11.8 7.4 7.2 6 8.6l4.6 4.6-4 4c-.8.8-.8 2 0 2.8l5.4-5.4 4.6 4.6 1.4-1.4-4.6-4.6z"/>
+    </g>
 </svg>
index 004a518..731baf9 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-rtl-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-rtl-invert.png differ
index d20fff1..ee8a82d 100644 (file)
@@ -1,4 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M5.6 8.1c-.8-.8-.8-2 0-2.8l6.4 6.5 5.6-5.6L19 7.6l-5.6 5.6 5 5c.8.8.8 2 0 2.8L12 14.6l-5.6 5.6L5 18.8l5.6-5.6-5-5.1z" id="path140"/>
+    <g id="close">
+        <path id="cross" d="M6.6 9.1c-.8-.8-.8-2 0-2.8l5.4 5.5 4.6-4.6L18 8.6l-4.6 4.6 4 4c.8.8.8 2 0 2.8L12 14.6l-4.6 4.6L6 17.8l4.6-4.6z"/>
+    </g>
 </svg>
index 1cb898d..3752520 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-rtl.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-rtl.png differ
index 3666a34..6e0ca93 100644 (file)
@@ -1,4 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
-    <path d="M5.6 8.1c-.8-.8-.8-2 0-2.8l6.4 6.5 5.6-5.6L19 7.6l-5.6 5.6 5 5c.8.8.8 2 0 2.8L12 14.6l-5.6 5.6L5 18.8l5.6-5.6-5-5.1z" id="path140"/>
+    <g id="close">
+        <path id="cross" d="M6.6 9.1c-.8-.8-.8-2 0-2.8l5.4 5.5 4.6-4.6L18 8.6l-4.6 4.6 4 4c.8.8.8 2 0 2.8L12 14.6l-4.6 4.6L6 17.8l4.6-4.6z"/>
+    </g>
 </svg>
index 23c5983..97e0c2c 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/code-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/code-invert.png differ
index fab61c1..d62d230 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="code">
-        <path id="left-bracket" d="M4 12v-1h1c1 0 1 0 1-1V7.614c0-.514.024-.896.073-1.142.054-.252.14-.463.257-.633.204-.28.473-.478.808-.587C7.473 5.14 8.01 5 8.973 5H10v1h-.752c-.457 0-.77.19-.936.408C8.145 6.623 8 6.853 8 7.476v1.857c0 .73-.04 1.18-.244 1.493-.2.307-.562.53-1.09.667.535.155.9.385 1.096.688.2.306.238.76.238 1.487v1.862c0 .62.145.847.312 1.06.166.22.48.407.936.407L10 17v1H8.973c-.963 0-1.5-.133-1.835-.248-.335-.11-.604-.307-.808-.59-.118-.166-.203-.375-.257-.626-.05-.253-.073-.636-.073-1.15V13c0-1 0-1-1-1H4z"/>
+        <path id="left-bracket" d="M4 12v-1h1c1 0 1 0 1-1V7.614c0-.514.024-.896.073-1.142.054-.252.14-.463.257-.633.204-.28.473-.48.808-.588C7.473 5.14 8.01 5 8.973 5H10v1h-.752c-.457 0-.77.19-.936.408C8.145 6.623 8 6.853 8 7.476v1.857c0 .73-.04 1.18-.244 1.493-.2.307-.562.53-1.09.667.535.155.9.385 1.096.688.2.307.238.76.238 1.488v1.862c0 .62.145.847.312 1.06.166.22.48.407.936.407L10 17v1H8.973c-.963 0-1.5-.133-1.835-.248-.335-.11-.604-.307-.808-.59-.118-.166-.203-.375-.257-.626-.05-.253-.073-.636-.073-1.15V13c0-1 0-1-1-1H4z"/>
         <use transform="matrix(-1 0 0 1 24 0)" id="right-bracket" width="24" height="24" xlink:href="#left-bracket"/>
     </g>
 </svg>
index ee58c9a..6e678e2 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/code.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/code.png differ
index fe5309d..d3893b0 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24">
     <g id="code">
-        <path id="left-bracket" d="M4 12v-1h1c1 0 1 0 1-1V7.614c0-.514.024-.896.073-1.142.054-.252.14-.463.257-.633.204-.28.473-.478.808-.587C7.473 5.14 8.01 5 8.973 5H10v1h-.752c-.457 0-.77.19-.936.408C8.145 6.623 8 6.853 8 7.476v1.857c0 .73-.04 1.18-.244 1.493-.2.307-.562.53-1.09.667.535.155.9.385 1.096.688.2.306.238.76.238 1.487v1.862c0 .62.145.847.312 1.06.166.22.48.407.936.407L10 17v1H8.973c-.963 0-1.5-.133-1.835-.248-.335-.11-.604-.307-.808-.59-.118-.166-.203-.375-.257-.626-.05-.253-.073-.636-.073-1.15V13c0-1 0-1-1-1H4z"/>
+        <path id="left-bracket" d="M4 12v-1h1c1 0 1 0 1-1V7.614c0-.514.024-.896.073-1.142.054-.252.14-.463.257-.633.204-.28.473-.48.808-.588C7.473 5.14 8.01 5 8.973 5H10v1h-.752c-.457 0-.77.19-.936.408C8.145 6.623 8 6.853 8 7.476v1.857c0 .73-.04 1.18-.244 1.493-.2.307-.562.53-1.09.667.535.155.9.385 1.096.688.2.307.238.76.238 1.488v1.862c0 .62.145.847.312 1.06.166.22.48.407.936.407L10 17v1H8.973c-.963 0-1.5-.133-1.835-.248-.335-.11-.604-.307-.808-.59-.118-.166-.203-.375-.257-.626-.05-.253-.073-.636-.073-1.15V13c0-1 0-1-1-1H4z"/>
         <use transform="matrix(-1 0 0 1 24 0)" id="right-bracket" width="24" height="24" xlink:href="#left-bracket"/>
     </g>
 </svg>
index 3be50ba..eec3102 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr-invert.png differ
index 99ded02..0526f75 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><style>* { fill: #FFFFFF }</style>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="external">
-        <path id="box" d="M2 2h3v1H3v6h6V7h1v3H2z"/>
-        <path id="arrow" d="M6.21 2H10v3.79L8.58 4.367 6.446 6.5 5.5 5.553 7.632 3.42z"/>
+        <path id="box" d="M4 4h6v2H6v12h12v-4h2v6H4z"/>
+        <path id="arrow" d="M12.42 4H20v7.58l-2.84-2.846L12.892 13 11 11.106l4.264-4.266z"/>
     </g>
 </svg>
index 10927e1..4b59b2a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr.png differ
index e836361..1d7980d 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="external">
-        <path id="box" d="M2 2h3v1H3v6h6V7h1v3H2z"/>
-        <path id="arrow" d="M6.21 2H10v3.79L8.58 4.367 6.446 6.5 5.5 5.553 7.632 3.42z"/>
+        <path id="box" d="M4 4h6v2H6v12h12v-4h2v6H4z"/>
+        <path id="arrow" d="M12.42 4H20v7.58l-2.84-2.846L12.892 13 11 11.106l4.264-4.266z"/>
     </g>
 </svg>
index eaeaf6e..bf0ef13 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl-invert.png differ
index d1d7093..d747aa6 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><style>* { fill: #FFFFFF }</style>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="external">
-        <path id="box" d="M7 3h2v6H3V7H2v3h8V2H7z"/>
-        <path id="arrow" d="M2 5.79l1.42-1.422L5.554 6.5l.947-.947L4.37 3.42 5.788 2H2z"/>
+        <path id="box" d="M20 4h-6v2h4v12H6v-4H4v6h16z"/>
+        <path id="arrow" d="M11.58 4H4v7.58l2.84-2.846L11.108 13 13 11.106 8.736 6.84z"/>
     </g>
 </svg>
index 7a3454e..2978654 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl.png differ
index 9fdc8ca..7e25d03 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="external">
-        <path id="box" d="M7 3h2v6H3V7H2v3h8V2H7z"/>
-        <path id="arrow" d="M2 5.79l1.42-1.422L5.554 6.5l.947-.947L4.37 3.42 5.788 2H2z"/>
+        <path id="box" d="M20 4h-6v2h4v12H6v-4H4v6h16z"/>
+        <path id="arrow" d="M11.58 4H4v7.58l2.84-2.846L11.108 13 13 11.106 8.736 6.84z"/>
     </g>
 </svg>
index dd95034..010b224 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr-invert.png differ
index dc37aa1..5764ee6 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="find">
-        <path id="magnifying-glass" d="M13.656 11c-1.92 0-3.5 1.548-3.5 3.47 0 1.92 1.58 3.5 3.5 3.5.75 0 1.432-.253 2-.657l.094.156 2.375 2.372c.19.19.534.153.78-.094s.315-.59.126-.78L16.66 16.59l-.188-.093c.402-.567.655-1.283.655-2.03 0-1.92-1.55-3.47-3.47-3.47zm0 1.656c1.01 0 1.813.8 1.813 1.813 0 1.01-.804 1.84-1.816 1.84-1.01 0-1.844-.83-1.844-1.843s.833-1.814 1.845-1.814z"/>
+        <path id="magnifying-glass" d="M13.656 11c-1.92 0-3.5 1.548-3.5 3.47 0 1.92 1.58 3.5 3.5 3.5.75 0 1.432-.253 2-.657l.094.156 2.375 2.37c.19.19.534.154.78-.093s.315-.59.126-.78l-2.37-2.377-.188-.093c.402-.567.655-1.283.655-2.03 0-1.92-1.55-3.47-3.47-3.47zm0 1.656c1.01 0 1.813.8 1.813 1.813 0 1.01-.805 1.84-1.817 1.84-1.01 0-1.844-.83-1.844-1.844s.832-1.814 1.844-1.814z"/>
         <path id="text" d="M6 5v2h10V5H6zm0 3v2h11V8H6zm0 3v2h3.53c.284-.797.787-1.486 1.44-2H6zm0 3v2h3.53c-.177-.48-.28-.99-.28-1.53 0-.16.046-.315.063-.47H6z"/>
     </g>
 </svg>
index 5c66688..9f418b8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr.png differ
index bbfdaa0..67e6943 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="find">
-        <path id="magnifying-glass" d="M13.656 11c-1.92 0-3.5 1.548-3.5 3.47 0 1.92 1.58 3.5 3.5 3.5.75 0 1.432-.253 2-.657l.094.156 2.375 2.372c.19.19.534.153.78-.094s.315-.59.126-.78L16.66 16.59l-.188-.093c.402-.567.655-1.283.655-2.03 0-1.92-1.55-3.47-3.47-3.47zm0 1.656c1.01 0 1.813.8 1.813 1.813 0 1.01-.804 1.84-1.816 1.84-1.01 0-1.844-.83-1.844-1.843s.833-1.814 1.845-1.814z"/>
+        <path id="magnifying-glass" d="M13.656 11c-1.92 0-3.5 1.548-3.5 3.47 0 1.92 1.58 3.5 3.5 3.5.75 0 1.432-.253 2-.657l.094.156 2.375 2.37c.19.19.534.154.78-.093s.315-.59.126-.78l-2.37-2.377-.188-.093c.402-.567.655-1.283.655-2.03 0-1.92-1.55-3.47-3.47-3.47zm0 1.656c1.01 0 1.813.8 1.813 1.813 0 1.01-.805 1.84-1.817 1.84-1.01 0-1.844-.83-1.844-1.844s.832-1.814 1.844-1.814z"/>
         <path id="text" d="M6 5v2h10V5H6zm0 3v2h11V8H6zm0 3v2h3.53c.284-.797.787-1.486 1.44-2H6zm0 3v2h3.53c-.177-.48-.28-.99-.28-1.53 0-.16.046-.315.063-.47H6z"/>
     </g>
 </svg>
index 9f23f4a..4a70b13 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl-invert.png differ
index 083c2d3..6854553 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="find">
-        <path id="magnifying-glass" d="M11.344 11c1.92 0 3.5 1.548 3.5 3.47 0 1.92-1.58 3.5-3.5 3.5-.75 0-1.432-.253-2-.657l-.094.156-2.375 2.372c-.19.19-.534.153-.78-.094s-.315-.59-.126-.78L8.34 16.59l.188-.093c-.402-.567-.655-1.283-.655-2.03 0-1.92 1.55-3.47 3.47-3.47zm0 1.656c-1.01 0-1.813.8-1.813 1.813 0 1.01.804 1.84 1.816 1.84 1.01 0 1.844-.83 1.844-1.843s-.833-1.814-1.845-1.814z"/>
+        <path id="magnifying-glass" d="M11.344 11c1.92 0 3.5 1.548 3.5 3.47 0 1.92-1.58 3.5-3.5 3.5-.75 0-1.432-.253-2-.657l-.094.156-2.375 2.37c-.19.19-.534.154-.78-.093s-.315-.59-.126-.78l2.37-2.377.188-.093c-.402-.567-.655-1.283-.655-2.03 0-1.92 1.55-3.47 3.47-3.47zm0 1.656c-1.01 0-1.813.8-1.813 1.813 0 1.01.805 1.84 1.817 1.84 1.01 0 1.844-.83 1.844-1.844s-.832-1.814-1.844-1.814z"/>
         <path id="text" d="M19 5v2H9V5zm0 3v2H8V8zm0 3v2h-3.53c-.284-.797-.787-1.486-1.44-2zm0 3v2h-3.53c.177-.48.28-.99.28-1.53 0-.16-.046-.315-.063-.47z"/>
     </g>
 </svg>
index 28aab68..b63eb84 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl.png differ
index e70ae48..962165d 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="find">
-        <path id="magnifying-glass" d="M11.344 11c1.92 0 3.5 1.548 3.5 3.47 0 1.92-1.58 3.5-3.5 3.5-.75 0-1.432-.253-2-.657l-.094.156-2.375 2.372c-.19.19-.534.153-.78-.094s-.315-.59-.126-.78L8.34 16.59l.188-.093c-.402-.567-.655-1.283-.655-2.03 0-1.92 1.55-3.47 3.47-3.47zm0 1.656c-1.01 0-1.813.8-1.813 1.813 0 1.01.804 1.84 1.816 1.84 1.01 0 1.844-.83 1.844-1.843s-.833-1.814-1.845-1.814z"/>
+        <path id="magnifying-glass" d="M11.344 11c1.92 0 3.5 1.548 3.5 3.47 0 1.92-1.58 3.5-3.5 3.5-.75 0-1.432-.253-2-.657l-.094.156-2.375 2.37c-.19.19-.534.154-.78-.093s-.315-.59-.126-.78l2.37-2.377.188-.093c-.402-.567-.655-1.283-.655-2.03 0-1.92 1.55-3.47 3.47-3.47zm0 1.656c-1.01 0-1.813.8-1.813 1.813 0 1.01.805 1.84 1.817 1.84 1.01 0 1.844-.83 1.844-1.844s-.832-1.814-1.844-1.814z"/>
         <path id="text" d="M19 5v2H9V5zm0 3v2H8V8zm0 3v2h-3.53c-.284-.797-.787-1.486-1.44-2zm0 3v2h-3.53c.177-.48.28-.99.28-1.53 0-.16-.046-.315-.063-.47z"/>
     </g>
 </svg>
index 3f56009..fdefd97 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="help">
-        <path id="circle" d="M12 2.085c-5.477 0-9.915 4.438-9.915 9.916 0 5.48 4.438 9.917 9.916 9.917 5.48 0 9.917-4.438 9.917-9.914 0-5.477-4.438-9.915-9.914-9.915zm.002 18c-4.465 0-8.084-3.62-8.084-8.083 0-4.465 3.62-8.084 8.084-8.084 4.464 0 8.083 3.62 8.083 8.084 0 4.464-3.62 8.083-8.083 8.083z"/>
+        <path id="circle" d="M12 2.085c-5.477 0-9.915 4.438-9.915 9.916 0 5.48 4.438 9.918 9.916 9.918 5.48 0 9.918-4.438 9.918-9.914 0-5.477-4.438-9.915-9.914-9.915zm.002 18c-4.465 0-8.084-3.62-8.084-8.083 0-4.465 3.62-8.084 8.084-8.084 4.464 0 8.083 3.62 8.083 8.084 0 4.464-3.62 8.083-8.083 8.083z"/>
         <g id="question-mark">
             <path id="top" d="M11.766 6.688c-2.5 0-3.22 2.188-3.22 2.188l1.412.854s.298-.79.9-1.23c.517-.374 1.626-.624 2.22.126.7.885-.17 1.587-1.078 2.72C11.047 12.53 11 15 11 15h1.97s.134-2.318 1.04-3.38c.603-.708 1.443-1.34 1.443-2.495s-1.187-2.437-3.687-2.437z"/>
             <path id="bottom" d="M11 16h2v2h-2z"/>
index a9a0ebb..825435d 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="help">
-        <path id="circle" d="M12 2.085c-5.477 0-9.915 4.438-9.915 9.916 0 5.48 4.438 9.917 9.916 9.917 5.48 0 9.917-4.438 9.917-9.914 0-5.477-4.438-9.915-9.914-9.915zm.002 18c-4.465 0-8.084-3.62-8.084-8.083 0-4.465 3.62-8.084 8.084-8.084 4.464 0 8.083 3.62 8.083 8.084 0 4.464-3.62 8.083-8.083 8.083z"/>
+        <path id="circle" d="M12 2.085c-5.477 0-9.915 4.438-9.915 9.916 0 5.48 4.438 9.918 9.916 9.918 5.48 0 9.918-4.438 9.918-9.914 0-5.477-4.438-9.915-9.914-9.915zm.002 18c-4.465 0-8.084-3.62-8.084-8.083 0-4.465 3.62-8.084 8.084-8.084 4.464 0 8.083 3.62 8.083 8.084 0 4.464-3.62 8.083-8.083 8.083z"/>
         <g id="question-mark">
             <path id="top" d="M11.766 6.688c-2.5 0-3.22 2.188-3.22 2.188l1.412.854s.298-.79.9-1.23c.517-.374 1.626-.624 2.22.126.7.885-.17 1.587-1.078 2.72C11.047 12.53 11 15 11 15h1.97s.134-2.318 1.04-3.38c.603-.708 1.443-1.34 1.443-2.495s-1.187-2.437-3.687-2.437z"/>
             <path id="bottom" d="M11 16h2v2h-2z"/>
index 6866809..b369813 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="help">
-        <path id="circle" d="M12 2.085c5.477 0 9.915 4.438 9.915 9.916 0 5.48-4.438 9.917-9.916 9.917-5.48 0-9.917-4.438-9.917-9.914 0-5.477 4.438-9.915 9.914-9.915zm-.002 18c4.465 0 8.084-3.62 8.084-8.083 0-4.465-3.62-8.084-8.084-8.084-4.464 0-8.083 3.62-8.083 8.084 0 4.464 3.62 8.083 8.083 8.083z"/>
+        <path id="circle" d="M12 2.085c5.477 0 9.915 4.438 9.915 9.916 0 5.48-4.438 9.918-9.916 9.918-5.48 0-9.918-4.438-9.918-9.914 0-5.477 4.438-9.915 9.914-9.915zm-.002 18c4.465 0 8.084-3.62 8.084-8.083 0-4.465-3.62-8.084-8.084-8.084-4.464 0-8.083 3.62-8.083 8.084 0 4.464 3.62 8.083 8.083 8.083z"/>
         <g id="question-mark">
             <path id="top" d="M12.234 6.688c2.5 0 3.22 2.188 3.22 2.188l-1.412.854s-.298-.79-.9-1.23c-.517-.374-1.626-.624-2.22.126-.7.885.17 1.587 1.078 2.72C12.953 12.53 13 15 13 15h-1.97s-.134-2.318-1.04-3.38c-.603-.708-1.443-1.34-1.443-2.495 0-1.156 1.187-2.437 3.687-2.437z"/>
             <path id="bottom" d="M13 16h-2v2h2z"/>
index 1b513d0..0d8052f 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="help">
-        <path id="circle" d="M12 2.085c5.477 0 9.915 4.438 9.915 9.916 0 5.48-4.438 9.917-9.916 9.917-5.48 0-9.917-4.438-9.917-9.914 0-5.477 4.438-9.915 9.914-9.915zm-.002 18c4.465 0 8.084-3.62 8.084-8.083 0-4.465-3.62-8.084-8.084-8.084-4.464 0-8.083 3.62-8.083 8.084 0 4.464 3.62 8.083 8.083 8.083z"/>
+        <path id="circle" d="M12 2.085c5.477 0 9.915 4.438 9.915 9.916 0 5.48-4.438 9.918-9.916 9.918-5.48 0-9.918-4.438-9.918-9.914 0-5.477 4.438-9.915 9.914-9.915zm-.002 18c4.465 0 8.084-3.62 8.084-8.083 0-4.465-3.62-8.084-8.084-8.084-4.464 0-8.083 3.62-8.083 8.084 0 4.464 3.62 8.083 8.083 8.083z"/>
         <g id="question-mark">
             <path id="top" d="M12.234 6.688c2.5 0 3.22 2.188 3.22 2.188l-1.412.854s-.298-.79-.9-1.23c-.517-.374-1.626-.624-2.22.126-.7.885.17 1.587 1.078 2.72C12.953 12.53 13 15 13 15h-1.97s-.134-2.318-1.04-3.38c-.603-.708-1.443-1.34-1.443-2.495 0-1.156 1.187-2.437 3.687-2.437z"/>
             <path id="bottom" d="M13 16h-2v2h2z"/>
index 6fcd856..31287cd 100644 (file)
@@ -2,6 +2,6 @@
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="history">
         <path id="clock-hands" d="M17.26 15.076s-2.385-1.935-4.005-3.062c.72-2.397 1.702-6.56 1.702-6.56s-4.35 5.364-4.877 6.7c-.463 1.168 1.46 2.21 2.346 1.678 1.9.55 4.834 1.244 4.834 1.244z"/>
-        <path id="arrow" d="M12.086 2.085C6.608 2.085 2.17 6.523 2.17 12c0 1.784.476 3.455 1.3 4.9l-2.22 2.04h5.688v-5.22L4.87 15.616c-.55-1.088-.866-2.312-.866-3.615 0-4.462 3.62-8.08 8.084-8.08 4.464 0 8.083 3.62 8.083 8.083 0 4.465-3.616 8.084-8.08 8.084-1.145 0-2.23-.247-3.213-.678l-.833 1.633c1.235.557 2.602.874 4.045.874C17.562 21.914 22 17.477 22 12c0-5.477-4.438-9.915-9.914-9.915z"/>
+        <path id="arrow" d="M12.086 2.085C6.608 2.085 2.17 6.523 2.17 12c0 1.784.476 3.455 1.3 4.9l-2.22 2.04h5.688v-5.22L4.87 15.616c-.55-1.088-.866-2.312-.866-3.615 0-4.46 3.62-8.08 8.084-8.08 4.464 0 8.083 3.62 8.083 8.084 0 4.465-3.615 8.084-8.08 8.084-1.144 0-2.23-.247-3.212-.678l-.833 1.633c1.235.557 2.602.874 4.045.874C17.562 21.914 22 17.477 22 12c0-5.477-4.438-9.915-9.914-9.915z"/>
     </g>
 </svg>
index 9375751..10d1b81 100644 (file)
@@ -2,6 +2,6 @@
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="history">
         <path id="clock-hands" d="M17.26 15.076s-2.385-1.935-4.005-3.062c.72-2.397 1.702-6.56 1.702-6.56s-4.35 5.364-4.877 6.7c-.463 1.168 1.46 2.21 2.346 1.678 1.9.55 4.834 1.244 4.834 1.244z"/>
-        <path id="arrow" d="M12.086 2.085C6.608 2.085 2.17 6.523 2.17 12c0 1.784.476 3.455 1.3 4.9l-2.22 2.04h5.688v-5.22L4.87 15.616c-.55-1.088-.866-2.312-.866-3.615 0-4.462 3.62-8.08 8.084-8.08 4.464 0 8.083 3.62 8.083 8.083 0 4.465-3.616 8.084-8.08 8.084-1.145 0-2.23-.247-3.213-.678l-.833 1.633c1.235.557 2.602.874 4.045.874C17.562 21.914 22 17.477 22 12c0-5.477-4.438-9.915-9.914-9.915z"/>
+        <path id="arrow" d="M12.086 2.085C6.608 2.085 2.17 6.523 2.17 12c0 1.784.476 3.455 1.3 4.9l-2.22 2.04h5.688v-5.22L4.87 15.616c-.55-1.088-.866-2.312-.866-3.615 0-4.46 3.62-8.08 8.084-8.08 4.464 0 8.083 3.62 8.083 8.084 0 4.465-3.615 8.084-8.08 8.084-1.144 0-2.23-.247-3.212-.678l-.833 1.633c1.235.557 2.602.874 4.045.874C17.562 21.914 22 17.477 22 12c0-5.477-4.438-9.915-9.914-9.915z"/>
     </g>
 </svg>
index cf194aa..d899142 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem-invert.png differ
index 938c32e..b359c47 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="italic-arab-keheh-jeem">
-        <path id="arab-keheh-jeem" d="M18.125 5.844c-1.695.555-3.297 1.162-4.594 1.938-.49.3-.77.712-.872 1.125-.064.263-.035.572.063.78.19.406.54.575.844.814l.094-.122.53.625c.14.165.344.514.47.94.137.462.08.724 0 1.124H11.22c-.34 0-.593.007-.767-.02-.34-.053-.256-.208-.234-.34.33-.127.56-.173.935-.14.29-.495.593-.886.906-1.314-.98.037-1.877.015-2.687-.094-.346-.048-.698-.187-1.094-.157-.357.026-.768.24-1.03.72-.247.447-.435.838-.657 1.28l.75-.47c.23-.14.484-.226.72-.218.156.005.274.054.405.094-.233.204-.51.4-.72.562-.3.26-.703.688-.907 1-.402.615-.693 1.084-.874 1.78-.18.69.003 1.34.468 1.75.426.377.846.52 1.28.564.65.065 1.206.093 2-.188.658-.23 1.022-.553 1.5-.97-.882.11-1.816.09-2.53.032-.87-.07-1.268-.384-1.47-.594-.27-.283-.306-.64-.155-1.22.036-.14.097-.322.25-.53.17-.228.364-.435.594-.656.45-.436 1.01-.737 1.46-.938-.044.205-.106.442-.054.687.05.23.25.38.44.47.26.12.506.153.69.154 1.42.01 2.86 0 4.28 0 .246 0 .45-.163.593-.375.14-.21.25-.48.344-.845.13-.5.094-1.062-.094-1.625-.182-.543-.418-1.01-.72-1.406-.334-.443-.673-.83-1-1.22 1.258-.814 2.717-1.238 3.97-1.687.12-.452.224-.926.313-1.313zm-9.47 8.438c-.26.394-.583.69-.874 1 .378.286.75.556 1.097.813.335-.303.626-.674.875-.97-.39-.267-.77-.587-1.093-.843z"/>
+        <path id="arab-keheh-jeem" d="M18.125 5.844c-1.695.555-3.297 1.162-4.594 1.938-.49.3-.77.712-.87 1.125-.065.263-.036.572.062.78.19.406.54.575.844.814l.094-.12.53.624c.14.165.344.514.47.94.137.462.08.724 0 1.124h-3.44c-.34 0-.593.007-.767-.02-.34-.053-.256-.208-.234-.34.33-.127.56-.173.934-.14.29-.495.593-.886.906-1.314-.98.037-1.877.015-2.687-.094-.346-.048-.698-.187-1.094-.157-.358.026-.77.24-1.03.72-.248.447-.436.838-.658 1.28l.75-.47c.23-.14.484-.226.72-.218.156.005.274.054.405.094-.233.203-.51.4-.72.56-.3.26-.703.69-.907 1-.402.616-.693 1.085-.874 1.78-.18.69.003 1.34.468 1.75.426.378.846.52 1.28.565.65.065 1.206.093 2-.188.658-.23 1.022-.553 1.5-.97-.882.11-1.816.09-2.53.032-.87-.07-1.268-.385-1.47-.595-.27-.283-.306-.64-.155-1.22.035-.14.096-.322.25-.53.17-.228.363-.435.593-.656.45-.437 1.01-.738 1.46-.94-.044.206-.106.443-.054.688.05.23.25.38.44.47.26.12.505.153.69.154 1.42.01 2.86 0 4.28 0 .245 0 .45-.163.592-.375.14-.21.25-.48.344-.845.13-.5.094-1.062-.094-1.625-.182-.543-.418-1.01-.72-1.406-.334-.442-.673-.83-1-1.22 1.258-.813 2.717-1.237 3.97-1.686.12-.452.224-.926.313-1.313zm-9.47 8.438c-.26.394-.583.69-.874 1 .38.286.75.556 1.098.813.335-.303.626-.674.875-.97-.39-.267-.77-.587-1.093-.843z"/>
     </g>
 </svg>
index 3285ad9..9f603ea 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem.png differ
index 04cdebb..99980c0 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="italic-arab-keheh-jeem">
-        <path id="arab-keheh-jeem" d="M18.125 5.844c-1.695.555-3.297 1.162-4.594 1.938-.49.3-.77.712-.872 1.125-.064.263-.035.572.063.78.19.406.54.575.844.814l.094-.122.53.625c.14.165.344.514.47.94.137.462.08.724 0 1.124H11.22c-.34 0-.593.007-.767-.02-.34-.053-.256-.208-.234-.34.33-.127.56-.173.935-.14.29-.495.593-.886.906-1.314-.98.037-1.877.015-2.687-.094-.346-.048-.698-.187-1.094-.157-.357.026-.768.24-1.03.72-.247.447-.435.838-.657 1.28l.75-.47c.23-.14.484-.226.72-.218.156.005.274.054.405.094-.233.204-.51.4-.72.562-.3.26-.703.688-.907 1-.402.615-.693 1.084-.874 1.78-.18.69.003 1.34.468 1.75.426.377.846.52 1.28.564.65.065 1.206.093 2-.188.658-.23 1.022-.553 1.5-.97-.882.11-1.816.09-2.53.032-.87-.07-1.268-.384-1.47-.594-.27-.283-.306-.64-.155-1.22.036-.14.097-.322.25-.53.17-.228.364-.435.594-.656.45-.436 1.01-.737 1.46-.938-.044.205-.106.442-.054.687.05.23.25.38.44.47.26.12.506.153.69.154 1.42.01 2.86 0 4.28 0 .246 0 .45-.163.593-.375.14-.21.25-.48.344-.845.13-.5.094-1.062-.094-1.625-.182-.543-.418-1.01-.72-1.406-.334-.443-.673-.83-1-1.22 1.258-.814 2.717-1.238 3.97-1.687.12-.452.224-.926.313-1.313zm-9.47 8.438c-.26.394-.583.69-.874 1 .378.286.75.556 1.097.813.335-.303.626-.674.875-.97-.39-.267-.77-.587-1.093-.843z"/>
+        <path id="arab-keheh-jeem" d="M18.125 5.844c-1.695.555-3.297 1.162-4.594 1.938-.49.3-.77.712-.87 1.125-.065.263-.036.572.062.78.19.406.54.575.844.814l.094-.12.53.624c.14.165.344.514.47.94.137.462.08.724 0 1.124h-3.44c-.34 0-.593.007-.767-.02-.34-.053-.256-.208-.234-.34.33-.127.56-.173.934-.14.29-.495.593-.886.906-1.314-.98.037-1.877.015-2.687-.094-.346-.048-.698-.187-1.094-.157-.358.026-.77.24-1.03.72-.248.447-.436.838-.658 1.28l.75-.47c.23-.14.484-.226.72-.218.156.005.274.054.405.094-.233.203-.51.4-.72.56-.3.26-.703.69-.907 1-.402.616-.693 1.085-.874 1.78-.18.69.003 1.34.468 1.75.426.378.846.52 1.28.565.65.065 1.206.093 2-.188.658-.23 1.022-.553 1.5-.97-.882.11-1.816.09-2.53.032-.87-.07-1.268-.385-1.47-.595-.27-.283-.306-.64-.155-1.22.035-.14.096-.322.25-.53.17-.228.363-.435.593-.656.45-.437 1.01-.738 1.46-.94-.044.206-.106.443-.054.688.05.23.25.38.44.47.26.12.505.153.69.154 1.42.01 2.86 0 4.28 0 .245 0 .45-.163.592-.375.14-.21.25-.48.344-.845.13-.5.094-1.062-.094-1.625-.182-.543-.418-1.01-.72-1.406-.334-.442-.673-.83-1-1.22 1.258-.813 2.717-1.237 3.97-1.686.12-.452.224-.926.313-1.313zm-9.47 8.438c-.26.394-.583.69-.874 1 .38.286.75.556 1.098.813.335-.303.626-.674.875-.97-.39-.267-.77-.587-1.093-.843z"/>
     </g>
 </svg>
index 37282ef..960653e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem-invert.png differ
index 4b9da20..a0f9c0c 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="italic-arab-meem">
-        <path id="arab-meem" d="M16 9.73l-.93 2.19h-4.663c-.48 0-.857.12-1.135.366l-.06.11c-.185 2.016-.503 3.558-.956 4.627-.272.64-.633 1.252-1.082 1.833-.177.226-.22.186-.126-.12l.142-.503.17-.67.234-.87.002-.008.202-1.045.258-1.41.353-1.907c.19-.312.42-.638.696-.98.276-.342.59-.706.94-1.09.13-.092.697-.18 1.705-.266 1.05-.086 1.64-.183 1.766-.293l.065-.128c.008-.11-.01-.24-.053-.394-.044-.153-.12-.327-.232-.522-.22-.428-.438-.64-.654-.64-.293 0-.914.268-1.863.805-.36.208-.376.125-.05-.247 1.557-1.71 2.707-2.566 3.45-2.566.382 0 .67.13.862.394.134.195.25.6.343 1.21l.203 1.2c.105.586.24.895.408.925"/>
+        <path id="arab-meem" d="M16 9.73l-.93 2.19h-4.663c-.48 0-.857.12-1.135.366l-.06.11c-.185 2.016-.503 3.558-.956 4.627-.272.64-.633 1.252-1.082 1.833-.177.226-.22.186-.126-.12l.142-.503.17-.67.234-.87.002-.008.202-1.045.258-1.41.353-1.907c.19-.312.42-.638.695-.98.276-.342.59-.706.94-1.09.13-.092.697-.18 1.705-.266 1.05-.086 1.64-.183 1.766-.293l.065-.128c.01-.11-.01-.24-.052-.394-.044-.153-.12-.327-.232-.522-.22-.428-.438-.64-.654-.64-.293 0-.914.268-1.863.805-.36.208-.377.125-.05-.247 1.556-1.71 2.706-2.566 3.45-2.566.38 0 .67.13.86.394.135.195.25.6.344 1.21l.203 1.2c.105.586.24.895.408.925"/>
     </g>
 </svg>
index 3c5adc3..03493be 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem.png differ
index f315377..a9c7def 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="italic-arab-meem">
-        <path id="arab-meem" d="M16 9.73l-.93 2.19h-4.663c-.48 0-.857.12-1.135.366l-.06.11c-.185 2.016-.503 3.558-.956 4.627-.272.64-.633 1.252-1.082 1.833-.177.226-.22.186-.126-.12l.142-.503.17-.67.234-.87.002-.008.202-1.045.258-1.41.353-1.907c.19-.312.42-.638.696-.98.276-.342.59-.706.94-1.09.13-.092.697-.18 1.705-.266 1.05-.086 1.64-.183 1.766-.293l.065-.128c.008-.11-.01-.24-.053-.394-.044-.153-.12-.327-.232-.522-.22-.428-.438-.64-.654-.64-.293 0-.914.268-1.863.805-.36.208-.376.125-.05-.247 1.557-1.71 2.707-2.566 3.45-2.566.382 0 .67.13.862.394.134.195.25.6.343 1.21l.203 1.2c.105.586.24.895.408.925"/>
+        <path id="arab-meem" d="M16 9.73l-.93 2.19h-4.663c-.48 0-.857.12-1.135.366l-.06.11c-.185 2.016-.503 3.558-.956 4.627-.272.64-.633 1.252-1.082 1.833-.177.226-.22.186-.126-.12l.142-.503.17-.67.234-.87.002-.008.202-1.045.258-1.41.353-1.907c.19-.312.42-.638.695-.98.276-.342.59-.706.94-1.09.13-.092.697-.18 1.705-.266 1.05-.086 1.64-.183 1.766-.293l.065-.128c.01-.11-.01-.24-.052-.394-.044-.153-.12-.327-.232-.522-.22-.428-.438-.64-.654-.64-.293 0-.914.268-1.863.805-.36.208-.377.125-.05-.247 1.556-1.71 2.706-2.566 3.45-2.566.38 0 .67.13.86.394.135.195.25.6.344 1.21l.203 1.2c.105.586.24.895.408.925"/>
     </g>
 </svg>
index 91497a7..7f6d412 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha-invert.png differ
index c75dda0..fd60619 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="italic-armn-sha">
-        <path id="armn-sha" d="M11.564 7.678c-.268-.13-.578-.22-.93-.268-.35-.047-.75-.07-1.197-.07h-1.11L8.587 6h1.723c.558 0 1.042.032 1.45.095.416.063.794.173 1.136.33l4.483 2.033-.327 1.67-2.624-1.165c-.126-.058-.27-.103-.433-.134-.164-.04-.356-.06-.576-.06-.582 0-1.136.095-1.662.284-.526.19-1 .46-1.427.812-.42.35-.776.78-1.07 1.283-.294.504-.504 1.074-.63 1.71-.24 1.255-.15 2.21.27 2.87.424.65 1.19.976 2.292.976.55 0 1.045-.08 1.48-.237.437-.157.815-.378 1.136-.66.325-.29.59-.634.795-1.034.21-.4.362-.84.457-1.323l.11-.56h1.6l-.12.59c-.13.674-.356 1.288-.676 1.845-.32.55-.725 1.024-1.214 1.423-.488.395-1.053.7-1.694.923-.643.215-1.344.323-2.106.323-.767 0-1.434-.114-2-.34-.568-.226-1.025-.554-1.372-.985-.347-.435-.573-.97-.678-1.606-.105-.637-.078-1.364.08-2.184.125-.66.346-1.273.66-1.835.316-.568.697-1.067 1.144-1.497.445-.436.944-.794 1.496-1.072.55-.283 1.13-.474 1.733-.574l-.466-.23"/>
+        <path id="armn-sha" d="M11.564 7.678c-.268-.13-.578-.22-.93-.268-.35-.047-.75-.07-1.197-.07h-1.11L8.587 6h1.723c.558 0 1.042.032 1.45.095.416.063.794.173 1.136.33l4.483 2.033-.328 1.67-2.624-1.165c-.126-.058-.27-.103-.433-.134-.164-.04-.356-.06-.576-.06-.583 0-1.137.094-1.663.283-.526.19-1 .46-1.427.812-.42.35-.776.78-1.07 1.283-.294.504-.504 1.074-.63 1.71-.24 1.255-.15 2.21.27 2.87.424.65 1.19.976 2.292.976.55 0 1.045-.08 1.48-.237.437-.157.815-.378 1.136-.66.325-.29.59-.634.795-1.034.21-.4.362-.84.457-1.323l.11-.56h1.6l-.12.59c-.13.674-.356 1.288-.676 1.845-.32.55-.725 1.024-1.214 1.423-.488.395-1.053.7-1.694.923-.643.216-1.344.324-2.106.324-.767 0-1.434-.114-2-.34-.568-.226-1.025-.554-1.372-.985-.347-.436-.573-.97-.678-1.607-.105-.637-.078-1.364.08-2.184.125-.66.346-1.274.66-1.836.316-.568.697-1.067 1.144-1.497.445-.436.944-.794 1.496-1.072.55-.283 1.13-.474 1.733-.574l-.466-.23"/>
     </g>
 </svg>
index 15795c5..b5e55cc 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha.png differ
index f0d10d9..a653a27 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="italic-armn-sha">
-        <path id="armn-sha" d="M11.564 7.678c-.268-.13-.578-.22-.93-.268-.35-.047-.75-.07-1.197-.07h-1.11L8.587 6h1.723c.558 0 1.042.032 1.45.095.416.063.794.173 1.136.33l4.483 2.033-.327 1.67-2.624-1.165c-.126-.058-.27-.103-.433-.134-.164-.04-.356-.06-.576-.06-.582 0-1.136.095-1.662.284-.526.19-1 .46-1.427.812-.42.35-.776.78-1.07 1.283-.294.504-.504 1.074-.63 1.71-.24 1.255-.15 2.21.27 2.87.424.65 1.19.976 2.292.976.55 0 1.045-.08 1.48-.237.437-.157.815-.378 1.136-.66.325-.29.59-.634.795-1.034.21-.4.362-.84.457-1.323l.11-.56h1.6l-.12.59c-.13.674-.356 1.288-.676 1.845-.32.55-.725 1.024-1.214 1.423-.488.395-1.053.7-1.694.923-.643.215-1.344.323-2.106.323-.767 0-1.434-.114-2-.34-.568-.226-1.025-.554-1.372-.985-.347-.435-.573-.97-.678-1.606-.105-.637-.078-1.364.08-2.184.125-.66.346-1.273.66-1.835.316-.568.697-1.067 1.144-1.497.445-.436.944-.794 1.496-1.072.55-.283 1.13-.474 1.733-.574l-.466-.23"/>
+        <path id="armn-sha" d="M11.564 7.678c-.268-.13-.578-.22-.93-.268-.35-.047-.75-.07-1.197-.07h-1.11L8.587 6h1.723c.558 0 1.042.032 1.45.095.416.063.794.173 1.136.33l4.483 2.033-.328 1.67-2.624-1.165c-.126-.058-.27-.103-.433-.134-.164-.04-.356-.06-.576-.06-.583 0-1.137.094-1.663.283-.526.19-1 .46-1.427.812-.42.35-.776.78-1.07 1.283-.294.504-.504 1.074-.63 1.71-.24 1.255-.15 2.21.27 2.87.424.65 1.19.976 2.292.976.55 0 1.045-.08 1.48-.237.437-.157.815-.378 1.136-.66.325-.29.59-.634.795-1.034.21-.4.362-.84.457-1.323l.11-.56h1.6l-.12.59c-.13.674-.356 1.288-.676 1.845-.32.55-.725 1.024-1.214 1.423-.488.395-1.053.7-1.694.923-.643.216-1.344.324-2.106.324-.767 0-1.434-.114-2-.34-.568-.226-1.025-.554-1.372-.985-.347-.436-.573-.97-.678-1.607-.105-.637-.078-1.364.08-2.184.125-.66.346-1.274.66-1.836.316-.568.697-1.067 1.144-1.497.445-.436.944-.794 1.496-1.072.55-.283 1.13-.474 1.733-.574l-.466-.23"/>
     </g>
 </svg>
index f7851fa..a2a2c82 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c-invert.png differ
index 761aea3..f2850c4 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="italic-c">
-        <path id="c" d="M15.008 13.718l1.48.214c-.467 1.34-1.15 2.354-2.045 3.04-.896.686-1.9 1.03-3.015 1.03-1.36 0-2.438-.43-3.237-1.29C7.4 15.85 7 14.618 7 13.012c0-2.09.606-3.817 1.817-5.184C9.897 6.61 11.237 6 12.84 6c1.186 0 2.145.33 2.878.99.738.66 1.165 1.546 1.282 2.66l-1.397.135c-.148-.84-.453-1.464-.916-1.876-.458-.42-1.05-.628-1.78-.628-1.368 0-2.475.63-3.32 1.892-.733 1.087-1.1 2.377-1.1 3.87 0 1.194.283 2.104.848 2.732.565.628 1.3.942 2.206.942.777 0 1.476-.26 2.1-.785.628-.522 1.08-1.26 1.368-2.216"/>
+        <path id="c" d="M15.008 13.718l1.48.214c-.467 1.34-1.15 2.354-2.045 3.04-.896.686-1.9 1.03-3.015 1.03-1.36 0-2.438-.43-3.237-1.29C7.4 15.85 7 14.618 7 13.012c0-2.09.606-3.817 1.817-5.184C9.897 6.61 11.237 6 12.84 6c1.186 0 2.145.33 2.878.99.738.66 1.165 1.546 1.282 2.66l-1.397.135c-.148-.84-.453-1.464-.916-1.876-.458-.42-1.05-.63-1.78-.63-1.368 0-2.475.63-3.32 1.893-.733 1.087-1.1 2.377-1.1 3.87 0 1.194.283 2.104.848 2.732.565.628 1.3.942 2.206.942.778 0 1.477-.26 2.1-.785.63-.522 1.08-1.26 1.37-2.216"/>
     </g>
 </svg>
index 2b8b6e4..f46dea5 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c.png differ
index 2018e60..0a0d110 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="italic-c">
-        <path id="c" d="M15.008 13.718l1.48.214c-.467 1.34-1.15 2.354-2.045 3.04-.896.686-1.9 1.03-3.015 1.03-1.36 0-2.438-.43-3.237-1.29C7.4 15.85 7 14.618 7 13.012c0-2.09.606-3.817 1.817-5.184C9.897 6.61 11.237 6 12.84 6c1.186 0 2.145.33 2.878.99.738.66 1.165 1.546 1.282 2.66l-1.397.135c-.148-.84-.453-1.464-.916-1.876-.458-.42-1.05-.628-1.78-.628-1.368 0-2.475.63-3.32 1.892-.733 1.087-1.1 2.377-1.1 3.87 0 1.194.283 2.104.848 2.732.565.628 1.3.942 2.206.942.777 0 1.476-.26 2.1-.785.628-.522 1.08-1.26 1.368-2.216"/>
+        <path id="c" d="M15.008 13.718l1.48.214c-.467 1.34-1.15 2.354-2.045 3.04-.896.686-1.9 1.03-3.015 1.03-1.36 0-2.438-.43-3.237-1.29C7.4 15.85 7 14.618 7 13.012c0-2.09.606-3.817 1.817-5.184C9.897 6.61 11.237 6 12.84 6c1.186 0 2.145.33 2.878.99.738.66 1.165 1.546 1.282 2.66l-1.397.135c-.148-.84-.453-1.464-.916-1.876-.458-.42-1.05-.63-1.78-.63-1.368 0-2.475.63-3.32 1.893-.733 1.087-1.1 2.377-1.1 3.87 0 1.194.283 2.104.848 2.732.565.628 1.3.942 2.206.942.778 0 1.477-.26 2.1-.785.63-.522 1.08-1.26 1.37-2.216"/>
     </g>
 </svg>
index e9ce6db..8ca4218 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="italic-d">
-        <path id="d" d="M7 18L9.462 6h3.557c.85 0 1.502.063 1.952.188.644.17 1.194.472 1.65.91.456.43.8.97 1.03 1.62.23.65.346 1.378.346 2.186 0 .966-.146 1.847-.436 2.644-.284.79-.66 1.49-1.127 2.095-.46.6-.947 1.072-1.456 1.416-.504.335-1.1.586-1.794.75-.526.126-1.172.19-1.94.19H7m1.86-1.36h1.866c.842 0 1.59-.08 2.245-.238.41-.098.76-.243 1.05-.434.38-.247.726-.57 1.037-.975.408-.535.732-1.143.974-1.825.247-.687.37-1.467.37-2.34 0-.97-.166-1.716-.5-2.235-.332-.524-.755-.87-1.27-1.04-.38-.126-.974-.188-1.78-.188H11L9.095 16.64"/>
+        <path id="d" d="M7 18L9.462 6h3.557c.85 0 1.5.063 1.95.188.645.17 1.195.472 1.65.91.457.43.8.97 1.03 1.62.23.65.347 1.378.347 2.186 0 .966-.146 1.847-.436 2.644-.283.79-.66 1.49-1.126 2.095-.46.6-.947 1.072-1.456 1.416-.504.334-1.1.585-1.794.75-.526.125-1.172.19-1.94.19H7m1.86-1.36h1.866c.842 0 1.59-.08 2.245-.24.41-.097.76-.242 1.05-.433.38-.247.727-.57 1.038-.975.408-.535.732-1.143.974-1.825.247-.687.37-1.467.37-2.34 0-.97-.166-1.716-.5-2.235-.332-.524-.755-.87-1.27-1.04-.38-.126-.974-.188-1.78-.188H11L9.095 16.64"/>
     </g>
 </svg>
index c044c86..feadca0 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="italic-d">
-        <path id="d" d="M7 18L9.462 6h3.557c.85 0 1.502.063 1.952.188.644.17 1.194.472 1.65.91.456.43.8.97 1.03 1.62.23.65.346 1.378.346 2.186 0 .966-.146 1.847-.436 2.644-.284.79-.66 1.49-1.127 2.095-.46.6-.947 1.072-1.456 1.416-.504.335-1.1.586-1.794.75-.526.126-1.172.19-1.94.19H7m1.86-1.36h1.866c.842 0 1.59-.08 2.245-.238.41-.098.76-.243 1.05-.434.38-.247.726-.57 1.037-.975.408-.535.732-1.143.974-1.825.247-.687.37-1.467.37-2.34 0-.97-.166-1.716-.5-2.235-.332-.524-.755-.87-1.27-1.04-.38-.126-.974-.188-1.78-.188H11L9.095 16.64"/>
+        <path id="d" d="M7 18L9.462 6h3.557c.85 0 1.5.063 1.95.188.645.17 1.195.472 1.65.91.457.43.8.97 1.03 1.62.23.65.347 1.378.347 2.186 0 .966-.146 1.847-.436 2.644-.283.79-.66 1.49-1.126 2.095-.46.6-.947 1.072-1.456 1.416-.504.334-1.1.585-1.794.75-.526.125-1.172.19-1.94.19H7m1.86-1.36h1.866c.842 0 1.59-.08 2.245-.24.41-.097.76-.242 1.05-.433.38-.247.727-.57 1.038-.975.408-.535.732-1.143.974-1.825.247-.687.37-1.467.37-2.34 0-.97-.166-1.716-.5-2.235-.332-.524-.755-.87-1.27-1.04-.38-.126-.974-.188-1.78-.188H11L9.095 16.64"/>
     </g>
 </svg>
index c3feced..68e90a9 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan-invert.png differ
index d77fe40..8669961 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="italic-geor-kan">
-        <path id="geor-kan" d="M15.057 14.663C14.617 16.888 13.223 18 10.88 18 8.96 18 8 17.213 8 15.64c0-.298.036-.624.108-.977.083-.43.245-.836.488-1.217l1.24.605-.206.616c-.055.26-.083.497-.083.712 0 .972.52 1.458 1.564 1.458 1.31 0 2.104-.723 2.386-2.17l.058-.33c.044-.222.066-.426.066-.614 0-.927-.547-1.39-1.64-1.39h-1.116l.248-1.26h1.118c1.202-.004 1.908-.55 2.118-1.64.04-.18.058-.355.058-.52 0-1.144-.9-1.715-2.697-1.715L11.94 6C14.646 6 16 6.877 16 8.627c0 .248-.027.516-.082.803-.204 1.092-1.05 1.824-2.54 2.194l-.033.166c1.23.2 1.845.823 1.845 1.872 0 .21-.025.433-.074.67l-.058.332"/>
+        <path id="geor-kan" d="M15.057 14.663C14.617 16.888 13.223 18 10.88 18 8.96 18 8 17.213 8 15.64c0-.298.036-.624.108-.977.083-.43.245-.836.488-1.217l1.24.605-.206.617c-.055.26-.083.497-.083.712 0 .97.52 1.457 1.564 1.457 1.31 0 2.105-.723 2.387-2.17l.058-.33c.044-.222.066-.426.066-.614 0-.927-.546-1.39-1.64-1.39h-1.115l.248-1.26h1.118c1.203-.004 1.91-.55 2.12-1.64.04-.18.057-.355.057-.52 0-1.144-.9-1.715-2.697-1.715L11.94 6C14.646 6 16 6.877 16 8.627c0 .248-.027.516-.082.803-.204 1.092-1.05 1.824-2.54 2.194l-.033.166c1.23.2 1.845.823 1.845 1.872 0 .21-.025.433-.074.67l-.058.332"/>
     </g>
 </svg>
index 7f2512e..7f9da2a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan.png differ
index 867f458..65670ef 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="italic-geor-kan">
-        <path id="geor-kan" d="M15.057 14.663C14.617 16.888 13.223 18 10.88 18 8.96 18 8 17.213 8 15.64c0-.298.036-.624.108-.977.083-.43.245-.836.488-1.217l1.24.605-.206.616c-.055.26-.083.497-.083.712 0 .972.52 1.458 1.564 1.458 1.31 0 2.104-.723 2.386-2.17l.058-.33c.044-.222.066-.426.066-.614 0-.927-.547-1.39-1.64-1.39h-1.116l.248-1.26h1.118c1.202-.004 1.908-.55 2.118-1.64.04-.18.058-.355.058-.52 0-1.144-.9-1.715-2.697-1.715L11.94 6C14.646 6 16 6.877 16 8.627c0 .248-.027.516-.082.803-.204 1.092-1.05 1.824-2.54 2.194l-.033.166c1.23.2 1.845.823 1.845 1.872 0 .21-.025.433-.074.67l-.058.332"/>
+        <path id="geor-kan" d="M15.057 14.663C14.617 16.888 13.223 18 10.88 18 8.96 18 8 17.213 8 15.64c0-.298.036-.624.108-.977.083-.43.245-.836.488-1.217l1.24.605-.206.617c-.055.26-.083.497-.083.712 0 .97.52 1.457 1.564 1.457 1.31 0 2.105-.723 2.387-2.17l.058-.33c.044-.222.066-.426.066-.614 0-.927-.546-1.39-1.64-1.39h-1.115l.248-1.26h1.118c1.203-.004 1.91-.55 2.12-1.64.04-.18.057-.355.057-.52 0-1.144-.9-1.715-2.697-1.715L11.94 6C14.646 6 16 6.877 16 8.627c0 .248-.027.516-.082.803-.204 1.092-1.05 1.824-2.54 2.194l-.033.166c1.23.2 1.845.823 1.845 1.872 0 .21-.025.433-.074.67l-.058.332"/>
     </g>
 </svg>
index eb3dc91..954bfbf 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s-invert.png differ
index ef5a411..9515299 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="italic-s">
-        <path id="s" d="M16.474 6.59l-.302 1.525c-.522-.28-1.04-.488-1.557-.628-.51-.145-1.007-.217-1.487-.217-.935 0-1.68.204-2.23.612-.554.408-.83.95-.83 1.627 0 .37.1.655.302.86.207.193.733.405 1.58.632l.937.232c1.06.274 1.795.622 2.208 1.046.413.42.62 1.008.62 1.767 0 1.167-.46 2.117-1.38 2.85-.913.734-2.12 1.1-3.617 1.1-.615 0-1.232-.06-1.852-.185-.62-.12-1.242-.302-1.867-.55l.315-1.61c.573.355 1.147.624 1.72.805.578.18 1.154.27 1.728.27.976 0 1.76-.216 2.347-.65.59-.434.884-1 .884-1.697 0-.464-.12-.815-.356-1.053-.233-.243-.737-.462-1.512-.658l-.937-.24c-1.07-.28-1.8-.6-2.19-.964-.39-.367-.584-.878-.584-1.534 0-1.152.442-2.094 1.325-2.828.89-.74 2.044-1.108 3.464-1.108.553 0 1.1.05 1.642.147.542.098 1.085.245 1.627.442"/>
+        <path id="s" d="M16.474 6.59l-.302 1.525c-.522-.28-1.04-.488-1.557-.628-.51-.145-1.007-.217-1.487-.217-.935 0-1.68.204-2.23.612-.554.408-.83.95-.83 1.627 0 .37.1.654.302.86.207.192.733.404 1.58.63l.937.233c1.06.274 1.795.622 2.208 1.046.413.42.62 1.007.62 1.766 0 1.167-.46 2.117-1.38 2.85-.913.734-2.12 1.1-3.617 1.1-.615 0-1.232-.06-1.852-.185-.62-.12-1.242-.3-1.867-.55l.314-1.61c.573.356 1.147.625 1.72.806.578.18 1.154.27 1.728.27.976 0 1.76-.216 2.347-.65.59-.434.883-1 .883-1.697 0-.465-.12-.816-.356-1.054-.233-.243-.737-.462-1.512-.658l-.937-.24c-1.07-.28-1.8-.6-2.19-.964-.39-.367-.584-.878-.584-1.534 0-1.152.442-2.094 1.325-2.828.89-.74 2.043-1.108 3.463-1.108.553 0 1.1.05 1.642.147.542.1 1.085.246 1.627.443"/>
     </g>
 </svg>
index c3b1e6e..4a7b1fc 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s.png differ
index 1c5a4ca..615e5f2 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="italic-s">
-        <path id="s" d="M16.474 6.59l-.302 1.525c-.522-.28-1.04-.488-1.557-.628-.51-.145-1.007-.217-1.487-.217-.935 0-1.68.204-2.23.612-.554.408-.83.95-.83 1.627 0 .37.1.655.302.86.207.193.733.405 1.58.632l.937.232c1.06.274 1.795.622 2.208 1.046.413.42.62 1.008.62 1.767 0 1.167-.46 2.117-1.38 2.85-.913.734-2.12 1.1-3.617 1.1-.615 0-1.232-.06-1.852-.185-.62-.12-1.242-.302-1.867-.55l.315-1.61c.573.355 1.147.624 1.72.805.578.18 1.154.27 1.728.27.976 0 1.76-.216 2.347-.65.59-.434.884-1 .884-1.697 0-.464-.12-.815-.356-1.053-.233-.243-.737-.462-1.512-.658l-.937-.24c-1.07-.28-1.8-.6-2.19-.964-.39-.367-.584-.878-.584-1.534 0-1.152.442-2.094 1.325-2.828.89-.74 2.044-1.108 3.464-1.108.553 0 1.1.05 1.642.147.542.098 1.085.245 1.627.442"/>
+        <path id="s" d="M16.474 6.59l-.302 1.525c-.522-.28-1.04-.488-1.557-.628-.51-.145-1.007-.217-1.487-.217-.935 0-1.68.204-2.23.612-.554.408-.83.95-.83 1.627 0 .37.1.654.302.86.207.192.733.404 1.58.63l.937.233c1.06.274 1.795.622 2.208 1.046.413.42.62 1.007.62 1.766 0 1.167-.46 2.117-1.38 2.85-.913.734-2.12 1.1-3.617 1.1-.615 0-1.232-.06-1.852-.185-.62-.12-1.242-.3-1.867-.55l.314-1.61c.573.356 1.147.625 1.72.806.578.18 1.154.27 1.728.27.976 0 1.76-.216 2.347-.65.59-.434.883-1 .883-1.697 0-.465-.12-.816-.356-1.054-.233-.243-.737-.462-1.512-.658l-.937-.24c-1.07-.28-1.8-.6-2.19-.964-.39-.367-.584-.878-.584-1.534 0-1.152.442-2.094 1.325-2.828.89-.74 2.043-1.108 3.463-1.108.553 0 1.1.05 1.642.147.542.1 1.085.246 1.627.443"/>
     </g>
 </svg>
index 81930e3..ad816df 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-invert.png differ
index d857a04..abc618e 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="language">
-        <path id="japanese" d="M17.533 9.81l.27-.59 1.042.407-.18.363c.66.27 1.1.468 1.312.59.33.21.618.513.86.904.21.393.316.846.316 1.358 0 .786-.302 1.48-.905 2.083-.604.634-1.66 1.057-3.17 1.268-.12-.36-.257-.68-.407-.95.968-.15 1.648-.333 2.04-.545.454-.21.785-.48.998-.813.21-.303.314-.663.314-1.087 0-.482-.135-.905-.406-1.27-.33-.33-.8-.588-1.402-.77-.332.635-.648 1.118-.95 1.45-.242.332-.694.906-1.358 1.72.09.394.18.71.272.952l-1.042.362-.09-.498c-.424.36-.802.617-1.134.77-.36.15-.664.226-.905.226-.303 0-.574-.136-.814-.407-.243-.3-.362-.68-.362-1.132 0-.6.137-1.144.408-1.63.24-.45.603-.89 1.086-1.31.273-.24.726-.53 1.36-.86 0-.27.03-.8.09-1.585-.514.03-.92.045-1.222.045-.393 0-.71-.016-.95-.046l-.047-1.04c.726.09 1.495.134 2.31.134 0-.15.076-.738.228-1.766l1.177.184c-.15.542-.256 1.04-.316 1.493.24-.03.542-.077.905-.138.36-.06.572-.09.633-.09s.647-.15 1.765-.453l.046 1.04c-.966.243-2.144.44-3.53.59-.063.663-.093 1.086-.093 1.266.664-.15 1.285-.225 1.858-.225zm-2.672 3.893c-.06-.48-.133-1.252-.224-2.31-.573.424-1.04.86-1.403 1.313-.302.423-.45.875-.45 1.358 0 .24.043.438.135.588.09.092.195.137.316.137.364 0 .908-.364 1.63-1.09zm.774-2.763c0 .483.03 1.088.09 1.81.604-.904 1.057-1.598 1.36-2.08-.575.06-1.06.15-1.45.27z"/>
+        <path id="japanese" d="M17.533 9.81l.27-.59 1.042.407-.18.363c.66.27 1.1.468 1.312.59.33.21.618.513.86.904.21.393.316.846.316 1.358 0 .786-.302 1.48-.905 2.083-.604.634-1.66 1.057-3.17 1.268-.12-.36-.257-.68-.407-.95.97-.15 1.65-.333 2.04-.545.455-.21.786-.48 1-.813.21-.303.313-.663.313-1.087 0-.482-.135-.905-.406-1.27-.33-.33-.8-.588-1.402-.77-.332.635-.648 1.118-.95 1.45-.242.332-.694.906-1.358 1.72.09.394.18.71.272.952l-1.043.362-.09-.498c-.424.36-.802.617-1.134.77-.36.15-.664.226-.905.226-.303 0-.574-.136-.814-.407-.243-.3-.362-.68-.362-1.132 0-.6.137-1.143.408-1.63.24-.45.603-.89 1.086-1.31.273-.24.726-.53 1.36-.86 0-.27.03-.8.09-1.584-.514.03-.92.045-1.222.045-.393 0-.71-.015-.95-.045l-.047-1.04c.726.09 1.495.134 2.31.134 0-.15.076-.74.228-1.767l1.177.184c-.15.542-.256 1.04-.316 1.493.24-.03.542-.077.905-.138.36-.06.573-.09.634-.09s.647-.15 1.765-.453l.045 1.04c-.966.242-2.144.44-3.53.59-.063.662-.093 1.085-.093 1.265.664-.15 1.285-.225 1.858-.225zm-2.672 3.893c-.06-.48-.132-1.252-.223-2.31-.573.424-1.04.86-1.403 1.313-.302.423-.45.875-.45 1.358 0 .24.043.438.135.588.09.092.194.137.315.137.364 0 .908-.365 1.63-1.09zm.775-2.763c0 .483.03 1.088.09 1.81.604-.904 1.057-1.598 1.36-2.08-.575.06-1.06.15-1.45.27z"/>
         <path id="english" d="M9.497 15.98h1.85L8.265 7.033h-1.85l-3.08 8.95h1.85L5.74 14h3.21l.547 1.98zm-3.49-3.376L7.34 8.822l1.343 3.782H6.008z"/>
     </g>
 </svg>
index cae0e77..b4f0875 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/language.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/language.png differ
index 694d225..956aba1 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="language">
-        <path id="japanese" d="M17.533 9.81l.27-.59 1.042.407-.18.363c.66.27 1.1.468 1.312.59.33.21.618.513.86.904.21.393.316.846.316 1.358 0 .786-.302 1.48-.905 2.083-.604.634-1.66 1.057-3.17 1.268-.12-.36-.257-.68-.407-.95.968-.15 1.648-.333 2.04-.545.454-.21.785-.48.998-.813.21-.303.314-.663.314-1.087 0-.482-.135-.905-.406-1.27-.33-.33-.8-.588-1.402-.77-.332.635-.648 1.118-.95 1.45-.242.332-.694.906-1.358 1.72.09.394.18.71.272.952l-1.042.362-.09-.498c-.424.36-.802.617-1.134.77-.36.15-.664.226-.905.226-.303 0-.574-.136-.814-.407-.243-.3-.362-.68-.362-1.132 0-.6.137-1.144.408-1.63.24-.45.603-.89 1.086-1.31.273-.24.726-.53 1.36-.86 0-.27.03-.8.09-1.585-.514.03-.92.045-1.222.045-.393 0-.71-.016-.95-.046l-.047-1.04c.726.09 1.495.134 2.31.134 0-.15.076-.738.228-1.766l1.177.184c-.15.542-.256 1.04-.316 1.493.24-.03.542-.077.905-.138.36-.06.572-.09.633-.09s.647-.15 1.765-.453l.046 1.04c-.966.243-2.144.44-3.53.59-.063.663-.093 1.086-.093 1.266.664-.15 1.285-.225 1.858-.225zm-2.672 3.893c-.06-.48-.133-1.252-.224-2.31-.573.424-1.04.86-1.403 1.313-.302.423-.45.875-.45 1.358 0 .24.043.438.135.588.09.092.195.137.316.137.364 0 .908-.364 1.63-1.09zm.774-2.763c0 .483.03 1.088.09 1.81.604-.904 1.057-1.598 1.36-2.08-.575.06-1.06.15-1.45.27z"/>
+        <path id="japanese" d="M17.533 9.81l.27-.59 1.042.407-.18.363c.66.27 1.1.468 1.312.59.33.21.618.513.86.904.21.393.316.846.316 1.358 0 .786-.302 1.48-.905 2.083-.604.634-1.66 1.057-3.17 1.268-.12-.36-.257-.68-.407-.95.97-.15 1.65-.333 2.04-.545.455-.21.786-.48 1-.813.21-.303.313-.663.313-1.087 0-.482-.135-.905-.406-1.27-.33-.33-.8-.588-1.402-.77-.332.635-.648 1.118-.95 1.45-.242.332-.694.906-1.358 1.72.09.394.18.71.272.952l-1.043.362-.09-.498c-.424.36-.802.617-1.134.77-.36.15-.664.226-.905.226-.303 0-.574-.136-.814-.407-.243-.3-.362-.68-.362-1.132 0-.6.137-1.143.408-1.63.24-.45.603-.89 1.086-1.31.273-.24.726-.53 1.36-.86 0-.27.03-.8.09-1.584-.514.03-.92.045-1.222.045-.393 0-.71-.015-.95-.045l-.047-1.04c.726.09 1.495.134 2.31.134 0-.15.076-.74.228-1.767l1.177.184c-.15.542-.256 1.04-.316 1.493.24-.03.542-.077.905-.138.36-.06.573-.09.634-.09s.647-.15 1.765-.453l.045 1.04c-.966.242-2.144.44-3.53.59-.063.662-.093 1.085-.093 1.265.664-.15 1.285-.225 1.858-.225zm-2.672 3.893c-.06-.48-.132-1.252-.223-2.31-.573.424-1.04.86-1.403 1.313-.302.423-.45.875-.45 1.358 0 .24.043.438.135.588.09.092.194.137.315.137.364 0 .908-.365 1.63-1.09zm.775-2.763c0 .483.03 1.088.09 1.81.604-.904 1.057-1.598 1.36-2.08-.575.06-1.06.15-1.45.27z"/>
         <path id="english" d="M9.497 15.98h1.85L8.265 7.033h-1.85l-3.08 8.95h1.85L5.74 14h3.21l.547 1.98zm-3.49-3.376L7.34 8.822l1.343 3.782H6.008z"/>
     </g>
 </svg>
index ed0006c..ca5beaf 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr-invert.png differ
index 7b545ca..705645c 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="-487 489 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M-471.2 493.6c-2.1 0-3.6 1.9-5.1 3.3.2 0 .5-.1.8-.1.5 0 1 .1 1.5.3.8-.8 1.6-1.7 2.8-1.7.6 0 1.3.3 1.8.7 1 1 1 2.6 0 3.6l-2.6 2.6c-.4.4-1.2.7-1.8.7-1.4 0-2.1-.9-2.6-2l-1.3 1.3c.8 1.5 2 2.6 3.8 2.6 1.2 0 2.3-.5 3-1.3l2.6-2.6c.9-.9 1.5-2 1.5-3.3-.2-2.2-2.2-4.1-4.4-4.1zm-4.3 12.1l-.9.9c-.4.4-1.2.7-1.8.7-.6 0-1.3-.3-1.8-.7-1-1-1-2.7 0-3.6l2.6-2.6c.4-.4 1.2-.7 1.8-.7 1.4 0 2.1 1 2.6 2l1.3-1.3c-.8-1.5-2-2.6-3.8-2.6-1.2 0-2.3.5-3 1.3l-2.6 2.6c-1.7 1.7-1.7 4.4 0 6 1.6 1.6 4.4 1.7 5.9 0l1.9-1.9c-.3.1-.6.1-.9.1-.5 0-.9 0-1.3-.2z"/>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" id="svg3095"><style>* { fill: #FFFFFF }</style>
+    <g id="g3097">
+        <path d="M15.387 4.33c-2.1 0-3.6 1.9-5.1 3.3.2 0 .5-.1.8-.1.5 0 1 .1 1.5.3.8-.8 1.6-1.7 2.8-1.7.6 0 1.3.3 1.8.7 1 1 1 2.6 0 3.6l-2.6 2.6c-.4.4-1.2.7-1.8.7-1.4 0-2.1-.9-2.6-2l-1.3 1.3c.8 1.5 2 2.6 3.8 2.6 1.2 0 2.3-.5 3-1.3l2.6-2.6c.9-.9 1.5-2 1.5-3.3-.2-2.2-2.2-4.1-4.4-4.1zm-4.3 12.1l-.9.9c-.4.4-1.2.7-1.8.7-.6 0-1.3-.3-1.8-.7-1-1-1-2.7 0-3.6l2.6-2.6c.4-.4 1.2-.7 1.8-.7 1.4 0 2.1 1 2.6 2l1.3-1.3c-.8-1.5-2-2.6-3.8-2.6-1.2 0-2.3.5-3 1.3l-2.6 2.6c-1.7 1.7-1.7 4.4 0 6 1.6 1.6 4.4 1.7 5.9 0l1.9-1.9c-.3.1-.6.1-.9.1-.5 0-.9 0-1.3-.2z" id="path3099"/>
     </g>
 </svg>
index 3db2467..25980e6 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr.png differ
index 0d3c186..86f3ede 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="-487 489 24 24">
-    <g>
-        <path d="M-471.2 493.6c-2.1 0-3.6 1.9-5.1 3.3.2 0 .5-.1.8-.1.5 0 1 .1 1.5.3.8-.8 1.6-1.7 2.8-1.7.6 0 1.3.3 1.8.7 1 1 1 2.6 0 3.6l-2.6 2.6c-.4.4-1.2.7-1.8.7-1.4 0-2.1-.9-2.6-2l-1.3 1.3c.8 1.5 2 2.6 3.8 2.6 1.2 0 2.3-.5 3-1.3l2.6-2.6c.9-.9 1.5-2 1.5-3.3-.2-2.2-2.2-4.1-4.4-4.1zm-4.3 12.1l-.9.9c-.4.4-1.2.7-1.8.7-.6 0-1.3-.3-1.8-.7-1-1-1-2.7 0-3.6l2.6-2.6c.4-.4 1.2-.7 1.8-.7 1.4 0 2.1 1 2.6 2l1.3-1.3c-.8-1.5-2-2.6-3.8-2.6-1.2 0-2.3.5-3 1.3l-2.6 2.6c-1.7 1.7-1.7 4.4 0 6 1.6 1.6 4.4 1.7 5.9 0l1.9-1.9c-.3.1-.6.1-.9.1-.5 0-.9 0-1.3-.2z"/>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" id="svg3095">
+    <g id="g3097">
+        <path d="M15.387 4.33c-2.1 0-3.6 1.9-5.1 3.3.2 0 .5-.1.8-.1.5 0 1 .1 1.5.3.8-.8 1.6-1.7 2.8-1.7.6 0 1.3.3 1.8.7 1 1 1 2.6 0 3.6l-2.6 2.6c-.4.4-1.2.7-1.8.7-1.4 0-2.1-.9-2.6-2l-1.3 1.3c.8 1.5 2 2.6 3.8 2.6 1.2 0 2.3-.5 3-1.3l2.6-2.6c.9-.9 1.5-2 1.5-3.3-.2-2.2-2.2-4.1-4.4-4.1zm-4.3 12.1l-.9.9c-.4.4-1.2.7-1.8.7-.6 0-1.3-.3-1.8-.7-1-1-1-2.7 0-3.6l2.6-2.6c.4-.4 1.2-.7 1.8-.7 1.4 0 2.1 1 2.6 2l1.3-1.3c-.8-1.5-2-2.6-3.8-2.6-1.2 0-2.3.5-3 1.3l-2.6 2.6c-1.7 1.7-1.7 4.4 0 6 1.6 1.6 4.4 1.7 5.9 0l1.9-1.9c-.3.1-.6.1-.9.1-.5 0-.9 0-1.3-.2z" id="path3099"/>
     </g>
 </svg>
index 0246e4d..72bbf34 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/menu-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/menu-invert.png differ
index 59885e9..b104fab 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="-487 489 24 24"><style>* { fill: #FFFFFF }</style>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" id="svg3165"><style>* { fill: #FFFFFF }</style>
     <g id="menu">
-        <path id="lines" d="M-481 505h12c.6 0 1 .4 1 1v1c0 .6-.4 1-1 1h-12c-.6 0-1-.4-1-1v-1c0-.6.4-1 1-1zm-1-4v1c0 .6.4 1 1 1h12c.6 0 1-.4 1-1v-1c0-.6-.4-1-1-1h-12c-.6 0-1 .4-1 1zm0-5v1c0 .6.4 1 1 1h12c.6 0 1-.4 1-1v-1c0-.6-.4-1-1-1h-12c-.6 0-1 .4-1 1z"/>
+        <path id="lines" d="M6 15.5h12c.6 0 1 .4 1 1v1c0 .6-.4 1-1 1H6c-.6 0-1-.4-1-1v-1c0-.6.4-1 1-1zm-1-4v1c0 .6.4 1 1 1h12c.6 0 1-.4 1-1v-1c0-.6-.4-1-1-1H6c-.6 0-1 .4-1 1zm0-5v1c0 .6.4 1 1 1h12c.6 0 1-.4 1-1v-1c0-.6-.4-1-1-1H6c-.6 0-1 .4-1 1z"/>
     </g>
 </svg>
index de7b1d2..45daeab 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/menu.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/menu.png differ
index 9ef19fe..ec17daf 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="-487 489 24 24">
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" id="svg3165">
     <g id="menu">
-        <path id="lines" d="M-481 505h12c.6 0 1 .4 1 1v1c0 .6-.4 1-1 1h-12c-.6 0-1-.4-1-1v-1c0-.6.4-1 1-1zm-1-4v1c0 .6.4 1 1 1h12c.6 0 1-.4 1-1v-1c0-.6-.4-1-1-1h-12c-.6 0-1 .4-1 1zm0-5v1c0 .6.4 1 1 1h12c.6 0 1-.4 1-1v-1c0-.6-.4-1-1-1h-12c-.6 0-1 .4-1 1z"/>
+        <path id="lines" d="M6 15.5h12c.6 0 1 .4 1 1v1c0 .6-.4 1-1 1H6c-.6 0-1-.4-1-1v-1c0-.6.4-1 1-1zm-1-4v1c0 .6.4 1 1 1h12c.6 0 1-.4 1-1v-1c0-.6-.4-1-1-1H6c-.6 0-1 .4-1 1zm0-5v1c0 .6.4 1 1 1h12c.6 0 1-.4 1-1v-1c0-.6-.4-1-1-1H6c-.6 0-1 .4-1 1z"/>
     </g>
 </svg>
index 8ca43a3..9c859e4 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="move-rtl">
-        <path id="arrow" d="M15.065 17.786l-5.302-5.303 5.302-5.302-1.415-1.41-6.714 6.716L13.65 19.2z"/>
+        <path id="arrow" d="M15.065 17.786l-5.302-5.303 5.302-5.302-1.415-1.41-6.714 6.717L13.65 19.2z"/>
     </g>
 </svg>
index 48d2c7e..35b6375 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="move-rtl">
-        <path id="arrow" d="M15.065 17.786l-5.302-5.303 5.302-5.302-1.415-1.41-6.714 6.716L13.65 19.2z"/>
+        <path id="arrow" d="M15.065 17.786l-5.302-5.303 5.302-5.302-1.415-1.41-6.714 6.717L13.65 19.2z"/>
     </g>
 </svg>
index 48273f4..386ccc2 100644 (file)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" id="svg3116"><style>* { fill: #FFFFFF }</style>
     <g id="alert">
         <path d="M12 18c-3.314 0-6-2.686-6-6s2.686-6 6-6 6 2.686 6 6-2.686 6-6 6zm-1-5h2V8h-2zm0 3h2v-2h-2z" id="path3119"/>
index b7fb2e7..9334b50 100644 (file)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" id="svg3116">
     <g id="alert">
         <path d="M12 18c-3.314 0-6-2.686-6-6s2.686-6 6-6 6 2.686 6 6-2.686 6-6 6zm-1-5h2V8h-2zm0 3h2v-2h-2z" id="path3119"/>
index dbde6ed..472bb4f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr-invert.png differ
index e514672..db8484e 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="-487 489 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M-468.9 498.1c.2-.1.5-.2.6-.5s.2-.5.2-.9v-.7c-1 .2-1.5.2-2.6.6-.7.4-1.2.9-1.7 1.4-.5.5-1.9 2.6-1.9 5.8v3.1h4.7c.9 0 1.6-.7 1.6-1.6v-4.7h-3.1s.1-.7.6-1.4c.5-.5 1-.9 1.6-1.1zm-11.2-.1c-.5.5-1.9 2.9-1.9 6v2.9h4.7c.9 0 1.6-.7 1.6-1.6v-4.7h-3.1s.1-.7.6-1.4c.5-.5 1-.9 1.6-1.2.2-.1.5-.2.6-.5s.2-.5.2-.9v-.6c-1 .2-1.5.2-2.6.6-.6.4-1.2.9-1.7 1.4z"/>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" id="svg3224"><style>* { fill: #FFFFFF }</style>
+    <g id="g3226">
+        <path d="M18.1 8.65c.2-.1.5-.2.6-.5.1-.3.2-.5.2-.9v-.7c-1 .2-1.5.2-2.6.6-.7.4-1.2.9-1.7 1.4-.5.5-1.9 2.6-1.9 5.8v3.1h4.7c.9 0 1.6-.7 1.6-1.6v-4.7h-3.1s.1-.7.6-1.4c.5-.5 1-.9 1.6-1.1zm-11.2-.1c-.5.5-1.9 2.9-1.9 6v2.9h4.7c.9 0 1.6-.7 1.6-1.6v-4.7H8.2s.1-.7.6-1.4c.5-.5 1-.9 1.6-1.2.2-.1.5-.2.6-.5.1-.3.2-.5.2-.9v-.6c-1 .2-1.5.2-2.6.6-.6.4-1.2.9-1.7 1.4z" id="path3228"/>
     </g>
 </svg>
index 5f14322..72c7e3d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr.png differ
index c2925ca..c9f7d01 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="-487 489 24 24">
-    <g>
-        <path d="M-468.9 498.1c.2-.1.5-.2.6-.5s.2-.5.2-.9v-.7c-1 .2-1.5.2-2.6.6-.7.4-1.2.9-1.7 1.4-.5.5-1.9 2.6-1.9 5.8v3.1h4.7c.9 0 1.6-.7 1.6-1.6v-4.7h-3.1s.1-.7.6-1.4c.5-.5 1-.9 1.6-1.1zm-11.2-.1c-.5.5-1.9 2.9-1.9 6v2.9h4.7c.9 0 1.6-.7 1.6-1.6v-4.7h-3.1s.1-.7.6-1.4c.5-.5 1-.9 1.6-1.2.2-.1.5-.2.6-.5s.2-.5.2-.9v-.6c-1 .2-1.5.2-2.6.6-.6.4-1.2.9-1.7 1.4z"/>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" id="svg3224">
+    <g id="g3226">
+        <path d="M18.1 8.65c.2-.1.5-.2.6-.5.1-.3.2-.5.2-.9v-.7c-1 .2-1.5.2-2.6.6-.7.4-1.2.9-1.7 1.4-.5.5-1.9 2.6-1.9 5.8v3.1h4.7c.9 0 1.6-.7 1.6-1.6v-4.7h-3.1s.1-.7.6-1.4c.5-.5 1-.9 1.6-1.1zm-11.2-.1c-.5.5-1.9 2.9-1.9 6v2.9h4.7c.9 0 1.6-.7 1.6-1.6v-4.7H8.2s.1-.7.6-1.4c.5-.5 1-.9 1.6-1.2.2-.1.5-.2.6-.5.1-.3.2-.5.2-.9v-.6c-1 .2-1.5.2-2.6.6-.6.4-1.2.9-1.7 1.4z" id="path3228"/>
     </g>
 </svg>
index 0b7d107..47fd687 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl-invert.png differ
index be46adf..e085452 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="-487 489 24 24"><style>* { fill: #FFFFFF }</style>
-    <g>
-        <path d="M-479.5 499.3c.5.7.6 1.4.6 1.4h-3.1v4.7c0 .9.7 1.6 1.6 1.6h4.7v-3.1c0-3.1-1.5-5.2-1.9-5.8-.5-.5-1-1-1.7-1.4-1.1-.5-1.6-.5-2.6-.6v.8c0 .3.1.6.2.9s.4.4.6.5c.6 0 1.1.4 1.6 1zm7.8-2.7c-1.1-.5-1.6-.5-2.6-.6v.8c0 .3.1.6.2.9s.4.4.6.5c.6.2 1.2.6 1.6 1.2.5.7.6 1.4.6 1.4h-3.1v4.7c0 .9.7 1.6 1.6 1.6h4.7V504c0-3.1-1.5-5.4-1.9-6-.4-.5-1-1-1.7-1.4z"/>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" id="svg3224"><style>* { fill: #FFFFFF }</style>
+    <g id="g3226">
+        <path d="M5.9 8.65c-.2-.1-.5-.2-.6-.5-.1-.3-.2-.5-.2-.9v-.7c1 .2 1.5.2 2.6.6.7.4 1.2.9 1.7 1.4.5.5 1.9 2.6 1.9 5.8v3.1H6.6c-.9 0-1.6-.7-1.6-1.6v-4.7h3.1s-.1-.7-.6-1.4c-.5-.5-1-.9-1.6-1.1zm11.2-.1c.5.5 1.9 2.9 1.9 6v2.9h-4.7c-.9 0-1.6-.7-1.6-1.6v-4.7h3.1s-.1-.7-.6-1.4c-.5-.5-1-.9-1.6-1.2-.2-.1-.5-.2-.6-.5-.1-.3-.2-.5-.2-.9v-.6c1 .2 1.5.2 2.6.6.6.4 1.2.9 1.7 1.4z" id="path3228"/>
     </g>
 </svg>
index e5039fc..2b4c8d7 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl.png differ
index dd7bfb1..cf8a7a7 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="-487 489 24 24">
-    <g>
-        <path d="M-479.5 499.3c.5.7.6 1.4.6 1.4h-3.1v4.7c0 .9.7 1.6 1.6 1.6h4.7v-3.1c0-3.1-1.5-5.2-1.9-5.8-.5-.5-1-1-1.7-1.4-1.1-.5-1.6-.5-2.6-.6v.8c0 .3.1.6.2.9s.4.4.6.5c.6 0 1.1.4 1.6 1zm7.8-2.7c-1.1-.5-1.6-.5-2.6-.6v.8c0 .3.1.6.2.9s.4.4.6.5c.6.2 1.2.6 1.6 1.2.5.7.6 1.4.6 1.4h-3.1v4.7c0 .9.7 1.6 1.6 1.6h4.7V504c0-3.1-1.5-5.4-1.9-6-.4-.5-1-1-1.7-1.4z"/>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" id="svg3224">
+    <g id="g3226">
+        <path d="M5.9 8.65c-.2-.1-.5-.2-.6-.5-.1-.3-.2-.5-.2-.9v-.7c1 .2 1.5.2 2.6.6.7.4 1.2.9 1.7 1.4.5.5 1.9 2.6 1.9 5.8v3.1H6.6c-.9 0-1.6-.7-1.6-1.6v-4.7h3.1s-.1-.7-.6-1.4c-.5-.5-1-.9-1.6-1.1zm11.2-.1c.5.5 1.9 2.9 1.9 6v2.9h-4.7c-.9 0-1.6-.7-1.6-1.6v-4.7h3.1s-.1-.7-.6-1.4c-.5-.5-1-.9-1.6-1.2-.2-.1-.5-.2-.6-.5-.1-.3-.2-.5-.2-.9v-.6c1 .2 1.5.2 2.6.6.6.4 1.2.9 1.7 1.4z" id="path3228"/>
     </g>
 </svg>
index 0d34e60..21b4d79 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression-invert.png differ
index e7889c3..5d2ff77 100644 (file)
@@ -3,7 +3,7 @@
     <g id="regular-expression">
         <path id="left-bracket" d="M3 12.045c0-.99.15-1.915.45-2.777.306-.862.743-1.618 1.314-2.268H6.23c-.552.72-.968 1.512-1.25 2.374-.28.862-.42 1.75-.42 2.66 0 .915.142 1.8.427 2.654.29.85.7 1.622 1.23 2.312h-1.45c-.575-.635-1.013-1.376-1.314-2.223-.3-.847-.45-1.758-.45-2.732"/>
         <path id="dot" d="M10 16c0 .552-.448 1-1 1s-1-.448-1-1 .448-1 1-1 1 .448 1 1z"/>
-        <path id="star" d="M14.25 7.013l-.24 2.156 2.187-.61.193 1.475-1.992.14 1.307 1.74-1.33.71-.914-1.834-.8 1.823-1.383-.697 1.295-1.74-1.98-.152.23-1.465 2.14.61-.24-2.157h1.534"/>
-        <path id="right-bracket" d="M21 12.045c0 .982-.152 1.896-.457 2.744-.3.844-.737 1.582-1.307 2.21h-1.453c.527-.688.936-1.457 1.225-2.308.29-.855.434-1.74.434-2.66 0-.91-.14-1.797-.422-2.66-.28-.862-.697-1.654-1.248-2.374h1.465c.574.652 1.012 1.412 1.313 2.28.3.86.45 1.782.45 2.764"/>
+        <path id="star" d="M14.25 7.013l-.24 2.156 2.187-.61.193 1.474-1.992.14 1.307 1.74-1.33.71-.914-1.834-.8 1.823-1.382-.697 1.295-1.74-1.98-.152.23-1.465 2.14.61-.24-2.158h1.534"/>
+        <path id="right-bracket" d="M21 12.045c0 .982-.152 1.896-.457 2.744-.3.843-.737 1.58-1.307 2.21h-1.453c.527-.69.936-1.458 1.225-2.31.29-.854.434-1.74.434-2.66 0-.91-.14-1.796-.422-2.66-.28-.86-.697-1.653-1.248-2.373h1.465c.574.652 1.012 1.412 1.313 2.28.3.86.45 1.782.45 2.764"/>
     </g>
 </svg>
index b8736a0..00ace19 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression.png differ
index 5f10d4d..844013d 100644 (file)
@@ -3,7 +3,7 @@
     <g id="regular-expression">
         <path id="left-bracket" d="M3 12.045c0-.99.15-1.915.45-2.777.306-.862.743-1.618 1.314-2.268H6.23c-.552.72-.968 1.512-1.25 2.374-.28.862-.42 1.75-.42 2.66 0 .915.142 1.8.427 2.654.29.85.7 1.622 1.23 2.312h-1.45c-.575-.635-1.013-1.376-1.314-2.223-.3-.847-.45-1.758-.45-2.732"/>
         <path id="dot" d="M10 16c0 .552-.448 1-1 1s-1-.448-1-1 .448-1 1-1 1 .448 1 1z"/>
-        <path id="star" d="M14.25 7.013l-.24 2.156 2.187-.61.193 1.475-1.992.14 1.307 1.74-1.33.71-.914-1.834-.8 1.823-1.383-.697 1.295-1.74-1.98-.152.23-1.465 2.14.61-.24-2.157h1.534"/>
-        <path id="right-bracket" d="M21 12.045c0 .982-.152 1.896-.457 2.744-.3.844-.737 1.582-1.307 2.21h-1.453c.527-.688.936-1.457 1.225-2.308.29-.855.434-1.74.434-2.66 0-.91-.14-1.797-.422-2.66-.28-.862-.697-1.654-1.248-2.374h1.465c.574.652 1.012 1.412 1.313 2.28.3.86.45 1.782.45 2.764"/>
+        <path id="star" d="M14.25 7.013l-.24 2.156 2.187-.61.193 1.474-1.992.14 1.307 1.74-1.33.71-.914-1.834-.8 1.823-1.382-.697 1.295-1.74-1.98-.152.23-1.465 2.14.61-.24-2.158h1.534"/>
+        <path id="right-bracket" d="M21 12.045c0 .982-.152 1.896-.457 2.744-.3.843-.737 1.58-1.307 2.21h-1.453c.527-.69.936-1.458 1.225-2.31.29-.854.434-1.74.434-2.66 0-.91-.14-1.796-.422-2.66-.28-.86-.697-1.653-1.248-2.373h1.465c.574.652 1.012 1.412 1.313 2.28.3.86.45 1.782.45 2.764"/>
     </g>
 </svg>
index ce6f7b2..8660556 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><style>* { fill: #FFFFFF }</style>
     <g id="secure">
-        <path id="lock" d="M8 5h.02v-.997c0-.057.003-1.41-.833-2.255-.434-.438-.998-.66-1.68-.66s-1.244.222-1.677.66c-.837.846-.833 2.198-.832 2.25V5H3c-.553 0-1 .447-1 1v3c0 .553.447 1 1 1h5c.553 0 1-.447 1-1V6c0-.553-.447-1-1-1zM3.998 5V3.993c0-.01.005-1 .543-1.543.485-.485 1.45-.487 1.935-.002.544.546.546 1.536.546 1.55V5H3.998z"/>
+        <path id="lock" d="M8 5h.02v-.997c0-.057.003-1.41-.833-2.255-.434-.438-.998-.66-1.68-.66s-1.244.222-1.677.66c-.837.846-.833 2.198-.832 2.25V5H3c-.553 0-1 .447-1 1v3c0 .553.447 1 1 1h5c.553 0 1-.447 1-1V6c0-.553-.447-1-1-1zM3.998 5V3.993c0-.01.005-1 .543-1.543.486-.485 1.45-.487 1.936-.002.544.546.546 1.536.546 1.55V5H3.998z"/>
     </g>
 </svg>
index 6eefe90..e064672 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
     <g id="secure">
-        <path id="lock" d="M8 5h.02v-.997c0-.057.003-1.41-.833-2.255-.434-.438-.998-.66-1.68-.66s-1.244.222-1.677.66c-.837.846-.833 2.198-.832 2.25V5H3c-.553 0-1 .447-1 1v3c0 .553.447 1 1 1h5c.553 0 1-.447 1-1V6c0-.553-.447-1-1-1zM3.998 5V3.993c0-.01.005-1 .543-1.543.485-.485 1.45-.487 1.935-.002.544.546.546 1.536.546 1.55V5H3.998z"/>
+        <path id="lock" d="M8 5h.02v-.997c0-.057.003-1.41-.833-2.255-.434-.438-.998-.66-1.68-.66s-1.244.222-1.677.66c-.837.846-.833 2.198-.832 2.25V5H3c-.553 0-1 .447-1 1v3c0 .553.447 1 1 1h5c.553 0 1-.447 1-1V6c0-.553-.447-1-1-1zM3.998 5V3.993c0-.01.005-1 .543-1.543.486-.485 1.45-.487 1.936-.002.544.546.546 1.536.546 1.55V5H3.998z"/>
     </g>
 </svg>
index 10e7967..008efd0 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter-invert.png differ
index fbba082..5f3d914 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="special-character">
-        <path id="omega" d="M12 6.708c-.794 0-1.368.103-1.894.31-.525.207-.944.496-1.255.867-.31.366-.53.808-.66 1.327-.125.513-.19 1.08-.19 1.7 0 .512.06 1 .175 1.46.122.46.31.87.568 1.23.63.862 1.156 1.138 2.012 1.362L11 18H6v-3h.604l.53 1.353.395.053.602.044.75.035.457.01H10l-.09-.895c-.63-.094-.812-.268-1.337-.522-.525-.26-.98-.59-1.365-.99-.38-.402-.675-.868-.89-1.4-.213-.536-.32-1.13-.32-1.778 0-.82.13-1.537.394-2.15.27-.62.656-1.133 1.163-1.54.507-.407 1.133-.71 1.878-.912.745-.206 1.6-.31 2.565-.31.96 0 1.81.103 2.556.31.75.2 1.38.504 1.887.912.51.407.895.92 1.157 1.54.27.614.403 1.33.403 2.15 0 .65-.108 1.242-.32 1.78-.216.53-.515.996-.9 1.397-.38.4-.83.732-1.356.99-.525.255-.707.43-1.336.523l-.092.894h.66l.447-.01.75-.034.606-.044.4-.053.533-1.354H18v3h-5l.246-3.038c1.066-.11 1.337-.696 2.002-1.363.263-.36.452-.77.568-1.23.122-.46.183-.947.183-1.46 0-.62-.066-1.186-.194-1.7-.128-.52-.348-.96-.66-1.326-.31-.372-.73-.66-1.255-.867-.524-.206-1.1-.31-1.893-.31"/>
+        <path id="omega" d="M12 6.708c-.794 0-1.368.103-1.894.31-.525.207-.944.496-1.255.867-.31.366-.53.808-.66 1.327-.124.513-.19 1.08-.19 1.7 0 .512.06 1 .176 1.46.122.46.31.87.568 1.23.63.862 1.156 1.138 2.012 1.362L11 18H6v-3h.604l.53 1.353.395.053.6.044.75.035.458.01H10l-.09-.895c-.63-.094-.812-.268-1.337-.522-.525-.26-.98-.59-1.365-.99-.38-.402-.675-.868-.89-1.4-.213-.536-.32-1.13-.32-1.778 0-.82.13-1.537.394-2.15.27-.62.656-1.133 1.163-1.54.507-.407 1.133-.71 1.878-.912.745-.206 1.6-.31 2.565-.31.96 0 1.81.103 2.556.31.75.2 1.38.504 1.887.912.51.407.896.92 1.158 1.54.27.614.403 1.33.403 2.15 0 .65-.107 1.242-.32 1.78-.215.53-.514.996-.9 1.397-.38.4-.83.732-1.355.99-.525.255-.707.43-1.336.523l-.093.894h.66l.447-.01.75-.034.606-.044.4-.053.533-1.354H18v3h-5l.246-3.04c1.066-.11 1.337-.695 2.002-1.362.263-.36.452-.77.568-1.23.122-.46.183-.947.183-1.46 0-.62-.067-1.186-.195-1.7-.128-.52-.348-.96-.66-1.326-.31-.372-.73-.66-1.255-.867-.524-.206-1.1-.31-1.893-.31"/>
     </g>
 </svg>
index e632f8a..7f65881 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter.png differ
index bb81880..dbf6ed5 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="special-character">
-        <path id="omega" d="M12 6.708c-.794 0-1.368.103-1.894.31-.525.207-.944.496-1.255.867-.31.366-.53.808-.66 1.327-.125.513-.19 1.08-.19 1.7 0 .512.06 1 .175 1.46.122.46.31.87.568 1.23.63.862 1.156 1.138 2.012 1.362L11 18H6v-3h.604l.53 1.353.395.053.602.044.75.035.457.01H10l-.09-.895c-.63-.094-.812-.268-1.337-.522-.525-.26-.98-.59-1.365-.99-.38-.402-.675-.868-.89-1.4-.213-.536-.32-1.13-.32-1.778 0-.82.13-1.537.394-2.15.27-.62.656-1.133 1.163-1.54.507-.407 1.133-.71 1.878-.912.745-.206 1.6-.31 2.565-.31.96 0 1.81.103 2.556.31.75.2 1.38.504 1.887.912.51.407.895.92 1.157 1.54.27.614.403 1.33.403 2.15 0 .65-.108 1.242-.32 1.78-.216.53-.515.996-.9 1.397-.38.4-.83.732-1.356.99-.525.255-.707.43-1.336.523l-.092.894h.66l.447-.01.75-.034.606-.044.4-.053.533-1.354H18v3h-5l.246-3.038c1.066-.11 1.337-.696 2.002-1.363.263-.36.452-.77.568-1.23.122-.46.183-.947.183-1.46 0-.62-.066-1.186-.194-1.7-.128-.52-.348-.96-.66-1.326-.31-.372-.73-.66-1.255-.867-.524-.206-1.1-.31-1.893-.31"/>
+        <path id="omega" d="M12 6.708c-.794 0-1.368.103-1.894.31-.525.207-.944.496-1.255.867-.31.366-.53.808-.66 1.327-.124.513-.19 1.08-.19 1.7 0 .512.06 1 .176 1.46.122.46.31.87.568 1.23.63.862 1.156 1.138 2.012 1.362L11 18H6v-3h.604l.53 1.353.395.053.6.044.75.035.458.01H10l-.09-.895c-.63-.094-.812-.268-1.337-.522-.525-.26-.98-.59-1.365-.99-.38-.402-.675-.868-.89-1.4-.213-.536-.32-1.13-.32-1.778 0-.82.13-1.537.394-2.15.27-.62.656-1.133 1.163-1.54.507-.407 1.133-.71 1.878-.912.745-.206 1.6-.31 2.565-.31.96 0 1.81.103 2.556.31.75.2 1.38.504 1.887.912.51.407.896.92 1.158 1.54.27.614.403 1.33.403 2.15 0 .65-.107 1.242-.32 1.78-.215.53-.514.996-.9 1.397-.38.4-.83.732-1.355.99-.525.255-.707.43-1.336.523l-.093.894h.66l.447-.01.75-.034.606-.044.4-.053.533-1.354H18v3h-5l.246-3.04c1.066-.11 1.337-.695 2.002-1.362.263-.36.452-.77.568-1.23.122-.46.183-.947.183-1.46 0-.62-.067-1.186-.195-1.7-.128-.52-.348-.96-.66-1.326-.31-.372-.73-.66-1.255-.867-.524-.206-1.1-.31-1.893-.31"/>
     </g>
 </svg>
index b707280..fd1c16d 100644 (file)
@@ -2,6 +2,6 @@
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="strikethrough-s">
         <path id="strikethrough" d="M6 12h12v1H6v-1z"/>
-        <path id="s" d="M12.094 6c-1.133 0-2.076.287-2.75.9-.67.613-1 1.49-1 2.52 0 .89.22 1.602.72 2.13.497.528 1.278.91 2.31 1.14l.813.182v-.03c.656.147 1.128.375 1.375.63.252.256.375.607.375 1.11 0 .573-.172.97-.53 1.26-.36.29-.895.45-1.626.45-.474 0-.966-.074-1.466-.24-.502-.166-1.03-.417-1.562-.75l-.374-.238v2.158l.156.062c.58.237 1.144.417 1.69.54.548.12 1.07.18 1.56.18 1.287 0 2.298-.293 3-.9.71-.605 1.063-1.486 1.063-2.608 0-.943-.256-1.726-.78-2.312-.522-.592-1.306-1-2.345-1.23l-.812-.18c-.716-.148-1.204-.352-1.406-.54-.205-.202-.312-.484-.312-.934 0-.533.162-.9.5-1.17.342-.27.836-.42 1.53-.42.396 0 .82.052 1.25.18.434.128.91.334 1.407.6l.374.18V6.63s-1.188-.383-1.688-.48c-.5-.097-.984-.15-1.468-.15z"/>
+        <path id="s" d="M12.094 6c-1.133 0-2.076.287-2.75.9-.67.613-1 1.49-1 2.52 0 .89.22 1.602.72 2.13.497.528 1.278.91 2.31 1.14l.813.182v-.03c.656.147 1.128.375 1.375.63.252.256.375.607.375 1.11 0 .573-.172.97-.53 1.26-.36.29-.895.45-1.626.45-.473 0-.965-.074-1.465-.24-.502-.166-1.03-.417-1.562-.75l-.374-.238v2.158l.155.062c.58.237 1.144.417 1.69.54.548.12 1.07.18 1.56.18 1.287 0 2.298-.293 3-.9.71-.605 1.063-1.486 1.063-2.608 0-.943-.256-1.726-.78-2.312-.522-.592-1.306-1-2.345-1.23l-.812-.18c-.715-.148-1.203-.352-1.405-.54-.205-.202-.312-.484-.312-.934 0-.533.162-.9.5-1.17.342-.27.836-.42 1.53-.42.396 0 .82.052 1.25.18.434.128.91.334 1.407.6l.374.18V6.63s-1.188-.383-1.688-.48c-.5-.097-.984-.15-1.468-.15z"/>
     </g>
 </svg>
index 71fa960..46092a6 100644 (file)
@@ -2,6 +2,6 @@
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="strikethrough-s">
         <path id="strikethrough" d="M6 12h12v1H6v-1z"/>
-        <path id="s" d="M12.094 6c-1.133 0-2.076.287-2.75.9-.67.613-1 1.49-1 2.52 0 .89.22 1.602.72 2.13.497.528 1.278.91 2.31 1.14l.813.182v-.03c.656.147 1.128.375 1.375.63.252.256.375.607.375 1.11 0 .573-.172.97-.53 1.26-.36.29-.895.45-1.626.45-.474 0-.966-.074-1.466-.24-.502-.166-1.03-.417-1.562-.75l-.374-.238v2.158l.156.062c.58.237 1.144.417 1.69.54.548.12 1.07.18 1.56.18 1.287 0 2.298-.293 3-.9.71-.605 1.063-1.486 1.063-2.608 0-.943-.256-1.726-.78-2.312-.522-.592-1.306-1-2.345-1.23l-.812-.18c-.716-.148-1.204-.352-1.406-.54-.205-.202-.312-.484-.312-.934 0-.533.162-.9.5-1.17.342-.27.836-.42 1.53-.42.396 0 .82.052 1.25.18.434.128.91.334 1.407.6l.374.18V6.63s-1.188-.383-1.688-.48c-.5-.097-.984-.15-1.468-.15z"/>
+        <path id="s" d="M12.094 6c-1.133 0-2.076.287-2.75.9-.67.613-1 1.49-1 2.52 0 .89.22 1.602.72 2.13.497.528 1.278.91 2.31 1.14l.813.182v-.03c.656.147 1.128.375 1.375.63.252.256.375.607.375 1.11 0 .573-.172.97-.53 1.26-.36.29-.895.45-1.626.45-.473 0-.965-.074-1.465-.24-.502-.166-1.03-.417-1.562-.75l-.374-.238v2.158l.155.062c.58.237 1.144.417 1.69.54.548.12 1.07.18 1.56.18 1.287 0 2.298-.293 3-.9.71-.605 1.063-1.486 1.063-2.608 0-.943-.256-1.726-.78-2.312-.522-.592-1.306-1-2.345-1.23l-.812-.18c-.715-.148-1.203-.352-1.405-.54-.205-.202-.312-.484-.312-.934 0-.533.162-.9.5-1.17.342-.27.836-.42 1.53-.42.396 0 .82.052 1.25.18.434.128.91.334 1.407.6l.374.18V6.63s-1.188-.383-1.688-.48c-.5-.097-.984-.15-1.468-.15z"/>
     </g>
 </svg>
index b79e14c..aab025e 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #00AF89 }</style>
     <g id="tag">
-        <path d="M18.748 11.717c.39.39.39 1.025 0 1.414l-4.95 4.95c-.388.39-1.024.39-1.413 0l-6.01-6.01c-.39-.386-.707-1.154-.707-1.704V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457c-.58.575-.578 1.513 0 2.092.577.574 1.515.574 2.094 0 .576-.58.576-1.52 0-2.097-.58-.576-1.518-.577-2.094 0z"/>
+        <path d="M18.748 11.717c.39.39.39 1.025 0 1.414l-4.95 4.95c-.388.39-1.024.39-1.413 0l-6.01-6.01c-.39-.385-.707-1.153-.707-1.703V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457c-.58.575-.578 1.513 0 2.092.577.573 1.515.573 2.094 0 .576-.58.576-1.52 0-2.098-.58-.576-1.518-.577-2.094 0z"/>
     </g>
 </svg>
index 61848c7..1fe8f5a 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #D11D13 }</style>
     <g id="tag">
-        <path d="M18.748 11.717c.39.39.39 1.025 0 1.414l-4.95 4.95c-.388.39-1.024.39-1.413 0l-6.01-6.01c-.39-.386-.707-1.154-.707-1.704V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457c-.58.575-.578 1.513 0 2.092.577.574 1.515.574 2.094 0 .576-.58.576-1.52 0-2.097-.58-.576-1.518-.577-2.094 0z"/>
+        <path d="M18.748 11.717c.39.39.39 1.025 0 1.414l-4.95 4.95c-.388.39-1.024.39-1.413 0l-6.01-6.01c-.39-.385-.707-1.153-.707-1.703V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457c-.58.575-.578 1.513 0 2.092.577.573 1.515.573 2.094 0 .576-.58.576-1.52 0-2.098-.58-.576-1.518-.577-2.094 0z"/>
     </g>
 </svg>
index 71e05f1..394e431 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="tag">
-        <path d="M18.748 11.717c.39.39.39 1.025 0 1.414l-4.95 4.95c-.388.39-1.024.39-1.413 0l-6.01-6.01c-.39-.386-.707-1.154-.707-1.704V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457c-.58.575-.578 1.513 0 2.092.577.574 1.515.574 2.094 0 .576-.58.576-1.52 0-2.097-.58-.576-1.518-.577-2.094 0z"/>
+        <path d="M18.748 11.717c.39.39.39 1.025 0 1.414l-4.95 4.95c-.388.39-1.024.39-1.413 0l-6.01-6.01c-.39-.385-.707-1.153-.707-1.703V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457c-.58.575-.578 1.513 0 2.092.577.573 1.515.573 2.094 0 .576-.58.576-1.52 0-2.098-.58-.576-1.518-.577-2.094 0z"/>
     </g>
 </svg>
index d4b7032..0f140c3 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #347BFF }</style>
     <g id="tag">
-        <path d="M18.748 11.717c.39.39.39 1.025 0 1.414l-4.95 4.95c-.388.39-1.024.39-1.413 0l-6.01-6.01c-.39-.386-.707-1.154-.707-1.704V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457c-.58.575-.578 1.513 0 2.092.577.574 1.515.574 2.094 0 .576-.58.576-1.52 0-2.097-.58-.576-1.518-.577-2.094 0z"/>
+        <path d="M18.748 11.717c.39.39.39 1.025 0 1.414l-4.95 4.95c-.388.39-1.024.39-1.413 0l-6.01-6.01c-.39-.385-.707-1.153-.707-1.703V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457c-.58.575-.578 1.513 0 2.092.577.573 1.515.573 2.094 0 .576-.58.576-1.52 0-2.098-.58-.576-1.518-.577-2.094 0z"/>
     </g>
 </svg>
index 36e56b2..ed26598 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FF5D00 }</style>
     <g id="tag">
-        <path d="M18.748 11.717c.39.39.39 1.025 0 1.414l-4.95 4.95c-.388.39-1.024.39-1.413 0l-6.01-6.01c-.39-.386-.707-1.154-.707-1.704V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457c-.58.575-.578 1.513 0 2.092.577.574 1.515.574 2.094 0 .576-.58.576-1.52 0-2.097-.58-.576-1.518-.577-2.094 0z"/>
+        <path d="M18.748 11.717c.39.39.39 1.025 0 1.414l-4.95 4.95c-.388.39-1.024.39-1.413 0l-6.01-6.01c-.39-.385-.707-1.153-.707-1.703V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457c-.58.575-.578 1.513 0 2.092.577.573 1.515.573 2.094 0 .576-.58.576-1.52 0-2.098-.58-.576-1.518-.577-2.094 0z"/>
     </g>
 </svg>
index 71671c0..5265e04 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="tag">
-        <path d="M18.748 11.717c.39.39.39 1.025 0 1.414l-4.95 4.95c-.388.39-1.024.39-1.413 0l-6.01-6.01c-.39-.386-.707-1.154-.707-1.704V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457c-.58.575-.578 1.513 0 2.092.577.574 1.515.574 2.094 0 .576-.58.576-1.52 0-2.097-.58-.576-1.518-.577-2.094 0z"/>
+        <path d="M18.748 11.717c.39.39.39 1.025 0 1.414l-4.95 4.95c-.388.39-1.024.39-1.413 0l-6.01-6.01c-.39-.385-.707-1.153-.707-1.703V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457c-.58.575-.578 1.513 0 2.092.577.573 1.515.573 2.094 0 .576-.58.576-1.52 0-2.098-.58-.576-1.518-.577-2.094 0z"/>
     </g>
 </svg>
index 33089a0..0367cfe 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="text-style">
-        <path id="a" d="M15.296 18h2.79l-1.14-12h-2.79L6 18h2.79l2.038-3h4.183l.288 3zm-3.11-5L14.5 9.6l.323 3.4H12.19z"/>
+        <path id="a" d="M15.296 18h2.79l-1.14-12h-2.79L6 18h2.79l2.038-3h4.183l.29 3zm-3.11-5L14.5 9.6l.323 3.4H12.19z"/>
         <path id="underline" d="M6 19h12v1H6v-1z"/>
     </g>
 </svg>
index 77c66a0..466672e 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="text-style">
-        <path id="a" d="M15.296 18h2.79l-1.14-12h-2.79L6 18h2.79l2.038-3h4.183l.288 3zm-3.11-5L14.5 9.6l.323 3.4H12.19z"/>
+        <path id="a" d="M15.296 18h2.79l-1.14-12h-2.79L6 18h2.79l2.038-3h4.183l.29 3zm-3.11-5L14.5 9.6l.323 3.4H12.19z"/>
         <path id="underline" d="M6 19h12v1H6v-1z"/>
     </g>
 </svg>
index 342493b..c998822 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="underline-u">
-        <path id="u" d="M8 6h2v5.96c-.104 1.706.695 2 2 2.04 1.777.062 2.002-.88 2-2.04V6h2v6.123c0 1.28-.338 2.245-1.016 2.898-.672.654-1.666.98-2.98.98-1.32 0-2.32-.324-2.996-.98C8.336 14.37 8 13.405 8 12.126V6"/>
+        <path id="u" d="M8 6h2v5.96c-.104 1.706.695 2 2 2.04 1.777.062 2.002-.88 2-2.04V6h2v6.123c0 1.28-.338 2.245-1.016 2.898-.672.655-1.666.98-2.98.98-1.32 0-2.32-.323-2.996-.98C8.336 14.37 8 13.406 8 12.127V6"/>
         <path id="underline" d="M7 17h10v1H7v-1z"/>
     </g>
 </svg>
index 7378298..f5aaf5d 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="underline-u">
-        <path id="u" d="M8 6h2v5.96c-.104 1.706.695 2 2 2.04 1.777.062 2.002-.88 2-2.04V6h2v6.123c0 1.28-.338 2.245-1.016 2.898-.672.654-1.666.98-2.98.98-1.32 0-2.32-.324-2.996-.98C8.336 14.37 8 13.405 8 12.126V6"/>
+        <path id="u" d="M8 6h2v5.96c-.104 1.706.695 2 2 2.04 1.777.062 2.002-.88 2-2.04V6h2v6.123c0 1.28-.338 2.245-1.016 2.898-.672.655-1.666.98-2.98.98-1.32 0-2.32-.323-2.996-.98C8.336 14.37 8 13.406 8 12.127V6"/>
         <path id="underline" d="M7 17h10v1H7v-1z"/>
     </g>
 </svg>
index 3207aaf..0d17c02 100644 (file)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><style>* { fill: #FFFFFF }</style>
     <g id="alert">
         <path d="M6 12c-3.314 0-6-2.686-6-6s2.686-6 6-6 6 2.686 6 6-2.686 6-6 6zM5 7h2V2H5zm0 3h2V8H5z"/>
index cddc0db..868bcc9 100644 (file)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
     <g id="alert">
         <path d="M6 12c-3.314 0-6-2.686-6-6s2.686-6 6-6 6 2.686 6 6-2.686 6-6 6zM5 7h2V2H5zm0 3h2V8H5z"/>
index f18841d..fcb50d6 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down-invert.png differ
index 6330d97..dbf1c03 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000"><style>* { fill: #FFFFFF }</style>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 12"><style>* { fill: #FFFFFF }</style>
     <g id="down">
-        <path id="arrow" d="M883.3 341H116.7L500 724.3 883.3 341"/>
+        <path id="arrow" d="M1 4h10L6 9 1 4"/>
     </g>
 </svg>
index 15ec586..034fe2b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down.png and b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down.png differ
index d8979ae..9fbb784 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000">
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 12">
     <g id="down">
-        <path id="arrow" d="M883.3 341H116.7L500 724.3 883.3 341"/>
+        <path id="arrow" d="M1 4h10L6 9 1 4"/>
     </g>
 </svg>
index 476dbcc..708161e 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="-493 495 12 12"><style>* { fill: #FFFFFF }</style>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 12"><style>* { fill: #FFFFFF }</style>
     <g id="ltr">
-        <path id="arrow" d="M-489 496v10l5-5-5-5"/>
+        <path id="arrow" d="M4 1v10l5-5-5-5"/>
     </g>
 </svg>
index d824ff1..8618466 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="-493 495 12 12">
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 12">
     <g id="ltr">
-        <path id="arrow" d="M-489 496v10l5-5-5-5"/>
+        <path id="arrow" d="M4 1v10l5-5-5-5"/>
     </g>
 </svg>
index 276052b..6c34aa2 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="-493 495 12 12"><style>* { fill: #FFFFFF }</style>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 12"><style>* { fill: #FFFFFF }</style>
     <g id="rtl">
-        <path id="arrow" d="M-485 506v-10l-5 5 5 5"/>
+        <path id="arrow" d="M8 11V1L3 6l5 5"/>
     </g>
 </svg>
index 88ad88b..5d389cc 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="-493 495 12 12">
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 12">
     <g id="rtl">
-        <path id="arrow" d="M-485 506v-10l-5 5 5 5"/>
+        <path id="arrow" d="M8 11V1L3 6l5 5"/>
     </g>
 </svg>
index e33ba06..66c712b 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="-493 495 12 12"><style>* { fill: #FFFFFF }</style>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 12"><style>* { fill: #FFFFFF }</style>
     <g id="up">
-        <path id="arrow" d="M-492 503h10l-5-5-5 5"/>
+        <path id="arrow" d="M1 8h10L6 3 1 8"/>
     </g>
 </svg>
index 0640cc3..5ebef4b 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="-493 495 12 12">
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 12">
     <g id="up">
-        <path id="arrow" d="M-492 503h10l-5-5-5 5"/>
+        <path id="arrow" d="M1 8h10L6 3 1 8"/>
     </g>
 </svg>
index ba5fd1d..5b03054 100644 (file)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><style>* { fill: #FFFFFF }</style>
     <g id="clear">
         <path id="circle-with-cross" d="M6 0C2.7 0 0 2.7 0 6s2.7 6 6 6 6-2.7 6-6-2.7-6-6-6zM3.5 2.5L6 5l2.5-2.5 1 1L7 6l2.5 2.5-1 1L6 7 3.5 9.5l-1-1L5 6 2.5 3.5z"/>
index b18405d..3c010c1 100644 (file)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
     <g id="clear">
         <path id="circle-with-cross" d="M6 0C2.7 0 0 2.7 0 6s2.7 6 6 6 6-2.7 6-6-2.7-6-6-6zM3.5 2.5L6 5l2.5-2.5 1 1L7 6l2.5 2.5-1 1L6 7 3.5 9.5l-1-1L5 6 2.5 3.5z"/>
index 0d2e79a..4068699 100644 (file)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><style>* { fill: #FFFFFF }</style>
     <g id="required">
         <path d="M5 1h2v10H5zm4.83 1.634l1 1.732-8.66 5-1-1.732zM1.17 4.366l1-1.732 8.66 5-1 1.732z"/>
index 051ed5f..d1e0cba 100644 (file)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
     <g id="required">
         <path d="M5 1h2v10H5zm4.83 1.634l1 1.732-8.66 5-1-1.732zM1.17 4.366l1-1.732 8.66 5-1 1.732z"/>
index fbd6af1..68fcab8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr-invert.png differ
index 322b5b1..cf4de68 100644 (file)
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><style>* { fill: #FFFFFF }</style>
     <g id="search">
-        <path id="path3051" d="M10.37 9.474L7.994 7.1l-.17-.1c.404-.566.644-1.26.644-2.01-.002-1.92-1.56-3.476-3.478-3.476-1.92 0-3.478 1.557-3.478 3.478 0 1.92 1.557 3.477 3.478 3.477.75 0 1.442-.24 2.01-.646l.098.17 2.375 2.373c.19.188.543.142.79-.105s.293-.6.104-.79zm-5.38-2.27c-1.22 0-2.213-.99-2.213-2.213 0-1.22.99-2.21 2.212-2.21 1.22 0 2.21.99 2.21 2.213S6.21 7.207 4.99 7.207z"/>
+        <path id="path3051" d="M10.37 9.474L7.994 7.1l-.17-.1c.404-.566.644-1.26.644-2.01-.002-1.92-1.56-3.476-3.478-3.476-1.92 0-3.478 1.557-3.478 3.478 0 1.92 1.557 3.477 3.478 3.477.75 0 1.442-.24 2.01-.647l.098.17 2.375 2.373c.19.188.543.142.79-.105s.293-.6.104-.79zm-5.38-2.27c-1.22 0-2.213-.99-2.213-2.213 0-1.22.99-2.21 2.212-2.21 1.22 0 2.21.99 2.21 2.214s-.99 2.213-2.21 2.213z"/>
     </g>
 </svg>
index 985e602..2718a9b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr.png and b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr.png differ
index e5c4010..9b3c199 100644 (file)
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
     <g id="search">
-        <path id="path3051" d="M10.37 9.474L7.994 7.1l-.17-.1c.404-.566.644-1.26.644-2.01-.002-1.92-1.56-3.476-3.478-3.476-1.92 0-3.478 1.557-3.478 3.478 0 1.92 1.557 3.477 3.478 3.477.75 0 1.442-.24 2.01-.646l.098.17 2.375 2.373c.19.188.543.142.79-.105s.293-.6.104-.79zm-5.38-2.27c-1.22 0-2.213-.99-2.213-2.213 0-1.22.99-2.21 2.212-2.21 1.22 0 2.21.99 2.21 2.213S6.21 7.207 4.99 7.207z"/>
+        <path id="path3051" d="M10.37 9.474L7.994 7.1l-.17-.1c.404-.566.644-1.26.644-2.01-.002-1.92-1.56-3.476-3.478-3.476-1.92 0-3.478 1.557-3.478 3.478 0 1.92 1.557 3.477 3.478 3.477.75 0 1.442-.24 2.01-.647l.098.17 2.375 2.373c.19.188.543.142.79-.105s.293-.6.104-.79zm-5.38-2.27c-1.22 0-2.213-.99-2.213-2.213 0-1.22.99-2.21 2.212-2.21 1.22 0 2.21.99 2.21 2.214s-.99 2.213-2.21 2.213z"/>
     </g>
 </svg>
index bcafcd6..c8ebef4 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl-invert.png differ
index a90817d..41fe9bd 100644 (file)
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><style>* { fill: #FFFFFF }</style>
     <g id="search">
-        <path id="path3051" d="M1.63 9.474L4.006 7.1l.17-.1c-.404-.566-.644-1.26-.644-2.01.002-1.92 1.56-3.476 3.478-3.476 1.92 0 3.478 1.557 3.478 3.478 0 1.92-1.557 3.477-3.478 3.477-.75 0-1.442-.24-2.01-.646l-.098.17-2.375 2.373c-.19.188-.543.142-.79-.105s-.293-.6-.104-.79zm5.378-2.27c1.22 0 2.213-.99 2.213-2.213 0-1.22-.99-2.21-2.21-2.21-1.222 0-2.213.99-2.213 2.213S5.79 7.207 7.01 7.207z"/>
+        <path id="path3051" d="M1.63 9.474L4.006 7.1l.17-.1c-.404-.566-.644-1.26-.644-2.01.002-1.92 1.56-3.476 3.478-3.476 1.92 0 3.478 1.557 3.478 3.478 0 1.92-1.557 3.477-3.478 3.477-.75 0-1.442-.24-2.01-.647l-.098.17-2.375 2.373c-.19.188-.543.142-.79-.105s-.293-.6-.104-.79zm5.378-2.27c1.22 0 2.213-.99 2.213-2.213 0-1.22-.99-2.21-2.21-2.21S4.8 3.77 4.8 4.995 5.79 7.207 7.01 7.207z"/>
     </g>
 </svg>
index 4213d67..b7a8d22 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl.png and b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl.png differ
index 759f57e..3201301 100644 (file)
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
     <g id="search">
-        <path id="path3051" d="M1.63 9.474L4.006 7.1l.17-.1c-.404-.566-.644-1.26-.644-2.01.002-1.92 1.56-3.476 3.478-3.476 1.92 0 3.478 1.557 3.478 3.478 0 1.92-1.557 3.477-3.478 3.477-.75 0-1.442-.24-2.01-.646l-.098.17-2.375 2.373c-.19.188-.543.142-.79-.105s-.293-.6-.104-.79zm5.378-2.27c1.22 0 2.213-.99 2.213-2.213 0-1.22-.99-2.21-2.21-2.21-1.222 0-2.213.99-2.213 2.213S5.79 7.207 7.01 7.207z"/>
+        <path id="path3051" d="M1.63 9.474L4.006 7.1l.17-.1c-.404-.566-.644-1.26-.644-2.01.002-1.92 1.56-3.476 3.478-3.476 1.92 0 3.478 1.557 3.478 3.478 0 1.92-1.557 3.477-3.478 3.477-.75 0-1.442-.24-2.01-.647l-.098.17-2.375 2.373c-.19.188-.543.142-.79-.105s-.293-.6-.104-.79zm5.378-2.27c1.22 0 2.213-.99 2.213-2.213 0-1.22-.99-2.21-2.21-2.21S4.8 3.77 4.8 4.995 5.79 7.207 7.01 7.207z"/>
     </g>
 </svg>
index e413e75..cadec2a 100644 (file)
@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0, 0, 16, 16">
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
     <g id="transparency">
         <path d="M0 0h8v8H0zm8 8h8v8H8z" fill="#ccc"/>
         <path d="M8 0h8v8H8zM0 8h8v8H0z" fill="#fff"/>
index e2315d2..afff463 100644 (file)
         * "fobo", not "foba". Basically emulating the native maxlength by
         * reconstructing where the insertion occurred.
         *
-        * @private
+        * @static
         * @param {string} safeVal Known value that was previously returned by this
         * function, if none, pass empty string.
         * @param {string} newVal New value that may have to be trimmed down.
         * @param {number} byteLimit Number of bytes the value may be in size.
-        * @param {Function} [fn] See jQuery.byteLimit.
+        * @param {Function} [fn] See jQuery#byteLimit.
         * @return {Object}
         * @return {string} return.newVal
         * @return {boolean} return.trimmed
         */
-       function trimValueForByteLength( safeVal, newVal, byteLimit, fn ) {
+       $.trimByteLength = function ( safeVal, newVal, byteLimit, fn ) {
                var startMatches, endMatches, matchesLen, inpParts,
                        oldVal = safeVal;
 
@@ -92,7 +92,7 @@
                        newVal: newVal,
                        trimmed: true
                };
-       }
+       };
 
        var eventKeys = [
                'keyup.byteLimit',
                        // See http://www.w3.org/TR/DOM-Level-3-Events/#events-keyboard-event-order for
                        // the order and characteristics of the key events.
                        $el.on( eventKeys, function () {
-                               var res = trimValueForByteLength(
+                               var res = $.trimByteLength(
                                        prevSafeVal,
                                        this.value,
                                        elLimit,
                                        this.value = res.newVal;
                                }
                                // Always adjust prevSafeVal to reflect the input value. Not doing this could cause
-                               // trimValueForByteLength to compare the new value to an empty string instead of the
+                               // trimByteLength to compare the new value to an empty string instead of the
                                // old value, resulting in trimming always from the end (bug 40850).
                                prevSafeVal = res.newVal;
                        } );
                } );
        };
 
-       $.fn.byteLimit.trimValueForByteLength = trimValueForByteLength;
-
        /**
         * @class jQuery
         * @mixins jQuery.plugin.byteLimit
index 04f8047..5357a85 100644 (file)
@@ -28,7 +28,7 @@
        }
 
        // We override the animation for all of these color styles
-       $.each([
+       $.each( [
                'backgroundColor',
                'borderBottomColor',
                'borderLeftColor',
@@ -45,9 +45,9 @@
                        }
 
                        fx.elem.style[attr] = 'rgb(' + [
-                               Math.max( Math.min( parseInt( (fx.pos * (fx.end[0] - fx.start[0])) + fx.start[0], 10 ), 255 ), 0 ),
-                               Math.max( Math.min( parseInt( (fx.pos * (fx.end[1] - fx.start[1])) + fx.start[1], 10 ), 255 ), 0 ),
-                               Math.max( Math.min( parseInt( (fx.pos * (fx.end[2] - fx.start[2])) + fx.start[2], 10 ), 255 ), 0 )
+                               Math.max( Math.min( parseInt( ( fx.pos * ( fx.end[0] - fx.start[0] ) ) + fx.start[0], 10 ), 255 ), 0 ),
+                               Math.max( Math.min( parseInt( ( fx.pos * ( fx.end[1] - fx.start[1] ) ) + fx.start[1], 10 ), 255 ), 0 ),
+                               Math.max( Math.min( parseInt( ( fx.pos * ( fx.end[2] - fx.start[2] ) ) + fx.start[2], 10 ), 255 ), 0 )
                        ].join( ',' ) + ')';
                };
        } );
index a6ff8bc..d5bb051 100644 (file)
@@ -32,7 +32,7 @@
                        }
 
                        // Look for rgb(num,num,num)
-                       if (result = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color)) {
+                       if ( result = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec( color ) ) {
                                return [
                                        parseInt( result[1], 10 ),
                                        parseInt( result[2], 10 ),
@@ -41,7 +41,7 @@
                        }
 
                        // Look for rgb(num%,num%,num%)
-                       if (result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(color)) {
+                       if ( result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec( color ) ) {
                                return [
                                        parseFloat( result[1] ) * 2.55,
                                        parseFloat( result[2] ) * 2.55,
@@ -50,7 +50,7 @@
                        }
 
                        // Look for #a0b1c2
-                       if (result = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color)) {
+                       if ( result = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec( color ) ) {
                                return [
                                        parseInt( result[1], 16 ),
                                        parseInt( result[2], 16 ),
                        }
 
                        // Look for #fff
-                       if (result = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color)) {
+                       if ( result = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec( color ) ) {
                                return [
                                        parseInt( result[1] + result[1], 16 ),
                                        parseInt( result[2] + result[2], 16 ),
-                                       parseInt( result[3] + result[3], 16)
+                                       parseInt( result[3] + result[3], 16 )
                                ];
                        }
 
                        // Look for rgba(0, 0, 0, 0) == transparent in Safari 3
-                       if (result = /rgba\(0, 0, 0, 0\)/.exec(color)) {
+                       if ( result = /rgba\(0, 0, 0, 0\)/.exec( color ) ) {
                                return $.colorUtil.colors.transparent;
                        }
 
                        // Otherwise, we're most likely dealing with a named color
-                       return $.colorUtil.colors[$.trim(color).toLowerCase()];
+                       return $.colorUtil.colors[$.trim( color ).toLowerCase()];
                },
 
                /**
                                min = Math.min( r, g, b ),
                                h,
                                s,
-                               l = (max + min) / 2;
+                               l = ( max + min ) / 2;
 
                        if ( max === min ) {
                                // achromatic
                                h = s = 0;
                        } else {
                                d = max - min;
-                               s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
+                               s = l > 0.5 ? d / ( 2 - max - min ) : d / ( max + min );
                                switch ( max ) {
                                        case r:
-                                               h = (g - b) / d + (g < b ? 6 : 0);
+                                               h = ( g - b ) / d + ( g < b ? 6 : 0 );
                                                break;
                                        case g:
-                                               h = (b - r) / d + 2;
+                                               h = ( b - r ) / d + 2;
                                                break;
                                        case b:
-                                               h = (r - g) / d + 4;
+                                               h = ( r - g ) / d + 4;
                                                break;
                                }
                                h /= 6;
                                                t -= 1;
                                        }
                                        if ( t < 1 / 6 ) {
-                                               return p + (q - p) * 6 * t;
+                                               return p + ( q - p ) * 6 * t;
                                        }
                                        if ( t < 1 / 2 ) {
                                                return q;
                                        }
                                        if ( t < 2 / 3 ) {
-                                               return p + (q - p) * (2 / 3 - t) * 6;
+                                               return p + ( q - p ) * ( 2 / 3 - t ) * 6;
                                        }
                                        return p;
                                };
 
-                               q = l < 0.5 ? l * (1 + s) : l + s - l * s;
+                               q = l < 0.5 ? l * ( 1 + s ) : l + s - l * s;
                                p = 2 * l - q;
                                r = hue2rgb( p, q, h + 1 / 3 );
                                g = hue2rgb( p, q, h );
                 */
                getColorBrightness: function ( currentColor, mod ) {
                        var rgbArr = $.colorUtil.getRGB( currentColor ),
-                               hslArr = $.colorUtil.rgbToHsl(rgbArr[0], rgbArr[1], rgbArr[2] );
-                       rgbArr = $.colorUtil.hslToRgb(hslArr[0], hslArr[1], hslArr[2] + mod);
+                               hslArr = $.colorUtil.rgbToHsl( rgbArr[0], rgbArr[1], rgbArr[2] );
+                       rgbArr = $.colorUtil.hslToRgb( hslArr[0], hslArr[1], hslArr[2] + mod );
 
                        return 'rgb(' +
-                               [parseInt( rgbArr[0], 10), parseInt( rgbArr[1], 10 ), parseInt( rgbArr[2], 10 )].join( ',' ) +
+                               [parseInt( rgbArr[0], 10 ), parseInt( rgbArr[1], 10 ), parseInt( rgbArr[2], 10 )].join( ',' ) +
                                ')';
                }
 
index d50422e..bdd2cef 100644 (file)
  * @version 2.1.0
  * @license MIT
  */
-( function ($) {
+( function ( $ ) {
 
-       var isInputSupported = 'placeholder' in document.createElement('input'),
-               isTextareaSupported = 'placeholder' in document.createElement('textarea'),
+       var isInputSupported = 'placeholder' in document.createElement( 'input' ),
+               isTextareaSupported = 'placeholder' in document.createElement( 'textarea' ),
                prototype = $.fn,
                valHooks = $.valHooks,
                propHooks = $.propHooks,
                hooks,
                placeholder;
 
-       if (isInputSupported && isTextareaSupported) {
+       function safeActiveElement() {
+               // Avoid IE9 `document.activeElement` of death
+               // https://github.com/mathiasbynens/jquery-placeholder/pull/99
+               try {
+                       return document.activeElement;
+               } catch ( err ) {}
+       }
+
+       function args( elem ) {
+               // Return an object of element attributes
+               var newAttrs = {},
+                               rinlinejQuery = /^jQuery\d+$/;
+               $.each( elem.attributes, function ( i, attr ) {
+                       if ( attr.specified && !rinlinejQuery.test( attr.name ) ) {
+                               newAttrs[attr.name] = attr.value;
+                       }
+               } );
+               return newAttrs;
+       }
 
-               placeholder = prototype.placeholder = function (text) {
+       function clearPlaceholder( event, value ) {
+               var input = this,
+                               $input = $( input );
+               if ( input.value === $input.attr( 'placeholder' ) && $input.hasClass( 'placeholder' ) ) {
+                       if ( $input.data( 'placeholder-password' ) ) {
+                               $input = $input.hide().next().show().attr( 'id', $input.removeAttr( 'id' ).data( 'placeholder-id' ) );
+                               // If `clearPlaceholder` was called from `$.valHooks.input.set`
+                               if ( event === true ) {
+                                       $input[0].value = value;
+                                       return value;
+                               }
+                               $input.focus();
+                       } else {
+                               input.value = '';
+                               $input.removeClass( 'placeholder' );
+                               if ( input === safeActiveElement() ) {
+                                       input.select();
+                               }
+                       }
+               }
+       }
+
+       function setPlaceholder() {
+               var $replacement,
+                               input = this,
+                               $input = $( input ),
+                               id = this.id;
+               if ( !input.value ) {
+                       if ( input.type === 'password' ) {
+                               if ( !$input.data( 'placeholder-textinput' ) ) {
+                                       try {
+                                               $replacement = $input.clone().attr( { 'type': 'text' } );
+                                       } catch ( e ) {
+                                               $replacement = $( '<input>' ).attr( $.extend( args( this ), { 'type': 'text' } ) );
+                                       }
+                                       $replacement
+                                                       .removeAttr( 'name' )
+                                                       .data( {
+                                                               'placeholder-password': $input,
+                                                               'placeholder-id': id
+                                                       } )
+                                                       .bind( 'focus.placeholder drop.placeholder', clearPlaceholder );
+                                       $input
+                                                       .data( {
+                                                               'placeholder-textinput': $replacement,
+                                                               'placeholder-id': id
+                                                       } )
+                                                       .before( $replacement );
+                               }
+                               $input = $input.removeAttr( 'id' ).hide().prev().attr( 'id', id ).show();
+                               // Note: `$input[0] != input` now!
+                       }
+                       $input.addClass( 'placeholder' );
+                       $input[0].value = $input.attr( 'placeholder' );
+               } else {
+                       $input.removeClass( 'placeholder' );
+               }
+       }
+
+       function changePlaceholder( text ) {
+               var hasArgs = arguments.length,
+                               $input = this;
+               if ( hasArgs ) {
+                       if ( $input.attr( 'placeholder' ) !== text ) {
+                               $input.prop( 'placeholder', text );
+                               if ( $input.hasClass( 'placeholder' ) ) {
+                                       $input[0].value = text;
+                               }
+                       }
+               }
+       }
+
+       if ( isInputSupported && isTextareaSupported ) {
+
+               placeholder = prototype.placeholder = function ( text ) {
                        var hasArgs = arguments.length;
 
-                       if (hasArgs) {
-                               changePlaceholder.call(this, text);
+                       if ( hasArgs ) {
+                               changePlaceholder.call( this, text );
                        }
 
                        return this;
 
        } else {
 
-               placeholder = prototype.placeholder = function (text) {
+               placeholder = prototype.placeholder = function ( text ) {
                        var $this = this,
                                hasArgs = arguments.length;
 
-                       if (hasArgs) {
-                               changePlaceholder.call(this, text);
+                       if ( hasArgs ) {
+                               changePlaceholder.call( this, text );
                        }
 
                        $this
-                               .filter((isInputSupported ? 'textarea' : ':input') + '[placeholder]')
+                               .filter( ( isInputSupported ? 'textarea' : ':input' ) + '[placeholder]' )
                                .filter( function () {
-                                       return !$(this).data('placeholder-enabled');
-                               })
-                               .bind({
+                                       return !$( this ).data( 'placeholder-enabled' );
+                               } )
+                               .bind( {
                                        'focus.placeholder drop.placeholder': clearPlaceholder,
                                        'blur.placeholder': setPlaceholder
-                               })
-                               .data('placeholder-enabled', true)
-                               .trigger('blur.placeholder');
+                               } )
+                               .data( 'placeholder-enabled', true )
+                               .trigger( 'blur.placeholder' );
                        return $this;
                };
 
                placeholder.textarea = isTextareaSupported;
 
                hooks = {
-                       'get': function (element) {
-                               var $element = $(element),
-                                       $passwordInput = $element.data('placeholder-password');
-                               if ($passwordInput) {
+                       'get': function ( element ) {
+                               var $element = $( element ),
+                                       $passwordInput = $element.data( 'placeholder-password' );
+                               if ( $passwordInput ) {
                                        return $passwordInput[0].value;
                                }
 
-                               return $element.data('placeholder-enabled') && $element.hasClass('placeholder') ? '' : element.value;
+                               return $element.data( 'placeholder-enabled' ) && $element.hasClass( 'placeholder' ) ? '' : element.value;
                        },
-                       'set': function (element, value) {
-                               var $element = $(element),
-                                       $passwordInput = $element.data('placeholder-password');
-                               if ($passwordInput) {
+                       'set': function ( element, value ) {
+                               var $element = $( element ),
+                                       $passwordInput = $element.data( 'placeholder-password' );
+                               if ( $passwordInput ) {
                                        $passwordInput[0].value = value;
                                        return value;
                                }
 
-                               if (!$element.data('placeholder-enabled')) {
+                               if ( !$element.data( 'placeholder-enabled' ) ) {
                                        element.value = value;
                                        return value;
                                }
-                               if (!value) {
+                               if ( !value ) {
                                        element.value = value;
                                        // Issue #56: Setting the placeholder causes problems if the element continues to have focus.
-                                       if (element !== safeActiveElement()) {
+                                       if ( element !== safeActiveElement() ) {
                                                // We can't use `triggerHandler` here because of dummy text/password inputs :(
-                                               setPlaceholder.call(element);
+                                               setPlaceholder.call( element );
                                        }
-                               } else if ($element.hasClass('placeholder')) {
-                                       if (!clearPlaceholder.call(element, true, value)) {
+                               } else if ( $element.hasClass( 'placeholder' ) ) {
+                                       if ( !clearPlaceholder.call( element, true, value ) ) {
                                                element.value = value;
                                        }
                                } else {
                        }
                };
 
-               if (!isInputSupported) {
+               if ( !isInputSupported ) {
                        valHooks.input = hooks;
                        propHooks.value = hooks;
                }
-               if (!isTextareaSupported) {
+               if ( !isTextareaSupported ) {
                        valHooks.textarea = hooks;
                        propHooks.value = hooks;
                }
 
                $( function () {
                        // Look for forms
-                       $(document).delegate('form', 'submit.placeholder', function () {
+                       $( document ).delegate( 'form', 'submit.placeholder', function () {
                                // Clear the placeholder values so they don't get submitted
-                               var $inputs = $('.placeholder', this).each(clearPlaceholder);
+                               var $inputs = $( '.placeholder', this ).each( clearPlaceholder );
                                setTimeout( function () {
-                                       $inputs.each(setPlaceholder);
-                               }, 10);
-                       });
-               });
+                                       $inputs.each( setPlaceholder );
+                               }, 10 );
+                       } );
+               } );
 
                // Clear placeholder values upon page reload
-               $(window).bind('beforeunload.placeholder', function () {
-                       $('.placeholder').each( function () {
+               $( window ).bind( 'beforeunload.placeholder', function () {
+                       $( '.placeholder' ).each( function () {
                                this.value = '';
-                       });
-               });
+                       } );
+               } );
 
        }
-
-       function args(elem) {
-               // Return an object of element attributes
-               var newAttrs = {},
-                       rinlinejQuery = /^jQuery\d+$/;
-               $.each(elem.attributes, function (i, attr) {
-                       if (attr.specified && !rinlinejQuery.test(attr.name)) {
-                               newAttrs[attr.name] = attr.value;
-                       }
-               });
-               return newAttrs;
-       }
-
-       function clearPlaceholder(event, value) {
-               var input = this,
-                       $input = $(input);
-               if (input.value === $input.attr('placeholder') && $input.hasClass('placeholder')) {
-                       if ($input.data('placeholder-password')) {
-                               $input = $input.hide().next().show().attr('id', $input.removeAttr('id').data('placeholder-id'));
-                               // If `clearPlaceholder` was called from `$.valHooks.input.set`
-                               if (event === true) {
-                                       $input[0].value = value;
-                                       return value;
-                               }
-                               $input.focus();
-                       } else {
-                               input.value = '';
-                               $input.removeClass('placeholder');
-                               if (input === safeActiveElement()) {
-                                       input.select();
-                               }
-                       }
-               }
-       }
-
-       function setPlaceholder() {
-               var $replacement,
-                       input = this,
-                       $input = $(input),
-                       id = this.id;
-               if (!input.value) {
-                       if (input.type === 'password') {
-                               if (!$input.data('placeholder-textinput')) {
-                                       try {
-                                               $replacement = $input.clone().attr({ 'type': 'text' });
-                                       } catch (e) {
-                                               $replacement = $('<input>').attr($.extend(args(this), { 'type': 'text' }));
-                                       }
-                                       $replacement
-                                               .removeAttr('name')
-                                               .data({
-                                                       'placeholder-password': $input,
-                                                       'placeholder-id': id
-                                               })
-                                               .bind('focus.placeholder drop.placeholder', clearPlaceholder);
-                                       $input
-                                               .data({
-                                                       'placeholder-textinput': $replacement,
-                                                       'placeholder-id': id
-                                               })
-                                               .before($replacement);
-                               }
-                               $input = $input.removeAttr('id').hide().prev().attr('id', id).show();
-                               // Note: `$input[0] != input` now!
-                       }
-                       $input.addClass('placeholder');
-                       $input[0].value = $input.attr('placeholder');
-               } else {
-                       $input.removeClass('placeholder');
-               }
-       }
-
-       function safeActiveElement() {
-               // Avoid IE9 `document.activeElement` of death
-               // https://github.com/mathiasbynens/jquery-placeholder/pull/99
-               try {
-                       return document.activeElement;
-               } catch (err) {}
-       }
-
-       function changePlaceholder(text) {
-               var hasArgs = arguments.length,
-                       $input = this;
-               if (hasArgs) {
-                       if ($input.attr('placeholder') !== text) {
-                               $input.prop('placeholder', text);
-                               if ($input.hasClass('placeholder')) {
-                                       $input[0].value = text;
-                               }
-                       }
-               }
-       }
-
-}(jQuery));
+}( jQuery ) );
index 556bf8c..8908067 100644 (file)
                        // 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).
+                       // XXX: https://github.com/jshint/jshint/issues/2656
+                       /*jshint ignore:start */
                        /*jshint proto:true */
                        spy.__proto__ = val;
+                       /*jshint ignore:end */
 
                        // Objects are by reference, members (unless objects) are not.
                        obj[ key ] = spy;
index 8efbb1c..00fb480 100644 (file)
                }
        }
 
+       function uniqueElements( array ) {
+               var uniques = [];
+               $.each( array, function ( index, elem ) {
+                       if ( elem !== undefined && $.inArray( elem, uniques ) === -1 ) {
+                               uniques.push( elem );
+                       }
+               } );
+               return uniques;
+       }
+
        function buildHeaders( table, msg ) {
                var config = $( table ).data( 'tablesorter' ).config,
                        maxSeen = 0,
 
        }
 
+       function isValueInArray( v, a ) {
+               var i,
+                               len = a.length;
+               for ( i = 0; i < len; i++ ) {
+                       if ( a[i][0] === v ) {
+                               return true;
+                       }
+               }
+               return false;
+       }
+
        /**
         * Sets the sort count of the columns that are not affected by the sorting to have them sorted
         * in default (ascending) order when their header cell is clicked the next time.
                } );
        }
 
-       function isValueInArray( v, a ) {
-               var i,
-                       len = a.length;
-               for ( i = 0; i < len; i++ ) {
-                       if ( a[i][0] === v ) {
-                               return true;
-                       }
-               }
-               return false;
-       }
-
-       function uniqueElements( array ) {
-               var uniques = [];
-               $.each( array, function ( index, elem ) {
-                       if ( elem !== undefined && $.inArray( elem, uniques ) === -1 ) {
-                               uniques.push( elem );
-                       }
-               } );
-               return uniques;
-       }
-
        function setHeadersCss( table, $headers, list, css, msg, columnToHeader ) {
                // Remove all header information and reset titles to default message
                $headers.removeClass( css[0] ).removeClass( css[1] ).attr( 'title', msg[1] );
diff --git a/resources/src/mediawiki.action/images/checker.png b/resources/src/mediawiki.action/images/checker.png
new file mode 100644 (file)
index 0000000..3e9e3d0
Binary files /dev/null and b/resources/src/mediawiki.action/images/checker.png differ
diff --git a/resources/src/mediawiki.action/mediawiki.action.view.filepage.css b/resources/src/mediawiki.action/mediawiki.action.view.filepage.css
new file mode 100644 (file)
index 0000000..bfc201a
--- /dev/null
@@ -0,0 +1,71 @@
+/*!
+ * File description page
+ */
+
+div.mw-filepage-resolutioninfo {
+       font-size: smaller;
+}
+
+/*
+ * File histories
+ */
+h2#filehistory {
+       clear: both;
+}
+
+table.filehistory th,
+table.filehistory td {
+       vertical-align: top;
+}
+
+table.filehistory th {
+       text-align: left;
+}
+
+table.filehistory td.mw-imagepage-filesize,
+table.filehistory th.mw-imagepage-filesize {
+       white-space: nowrap;
+}
+
+table.filehistory td.filehistory-selected {
+       font-weight: bold;
+}
+
+/*
+ * Add a checkered background image on hover for file
+ * description pages. (bug 26470)
+ */
+.filehistory a img,
+#file img:hover {
+       /* @embed */
+       background: white url(images/checker.png) repeat;
+}
+
+/*
+ * filetoc
+ */
+ul#filetoc {
+       text-align: center;
+       border: 1px solid #aaaaaa;
+       background-color: #f9f9f9;
+       padding: 5px;
+       font-size: 95%;
+       margin-bottom: 0.5em;
+       margin-left: 0;
+       margin-right: 0;
+}
+
+#filetoc li {
+       display: inline;
+       list-style-type: none;
+       padding-right: 2em;
+}
+
+/*
+ * Shared images hint
+ */
+#shared-image-dup,
+#shared-image-conflict {
+       font-style: italic;
+}
+
diff --git a/resources/src/mediawiki.action/mediawiki.action.view.filepage.print.css b/resources/src/mediawiki.action/mediawiki.action.view.filepage.print.css
new file mode 100644 (file)
index 0000000..15b20f1
--- /dev/null
@@ -0,0 +1,8 @@
+/*!
+ * File description page - print style
+ */
+
+span.mw-filepage-other-resolutions,
+#filetoc {
+       display: none;
+}
index 9f786ec..b07965e 100644 (file)
@@ -14,3 +14,9 @@ table.collapsed tr.collapsable {
        -ms-user-select: none;
        user-select: none;
 }
+
+@media print {
+       tr.mw-metadata-show-hide-extended {
+               display: none;
+       }
+}
index c008dfd..31250c9 100644 (file)
                cookieVal = mw.cookie.get( cookieKey ),
                $div, id;
 
+       function removeConfirmation() {
+               $div.remove();
+               mw.hook( 'postEdit.afterRemoval' ).fire();
+       }
+
+       function fadeOutConfirmation() {
+               clearTimeout( id );
+               $div.find( '.postedit' ).addClass( 'postedit postedit-faded' );
+               setTimeout( removeConfirmation, 500 );
+
+               return false;
+       }
+
        function showConfirmation( data ) {
                data = data || {};
                if ( data.message === undefined ) {
                id = setTimeout( fadeOutConfirmation, 3000 );
        }
 
-       function fadeOutConfirmation() {
-               clearTimeout( id );
-               $div.find( '.postedit' ).addClass( 'postedit postedit-faded' );
-               setTimeout( removeConfirmation, 500 );
-
-               return false;
-       }
-
-       function removeConfirmation() {
-               $div.remove();
-               mw.hook( 'postEdit.afterRemoval' ).fire();
-       }
-
        mw.hook( 'postEdit' ).add( showConfirmation );
 
        if ( config.wgAction === 'view' && cookieVal ) {
index 74e80e2..b8cc059 100644 (file)
@@ -90,7 +90,7 @@
                var url, origin, newAjaxOptions;
 
                // 'origin' query parameter must be part of the request URI, and not just POST request body
-               if ( ajaxOptions.type !== 'GET' ) {
+               if ( ajaxOptions.type === 'POST' ) {
                        url = ( ajaxOptions && ajaxOptions.url ) || this.defaults.ajax.url;
                        origin = ( parameters && parameters.origin ) || this.defaults.parameters.origin;
                        url += ( url.indexOf( '?' ) !== -1 ? '&' : '?' ) +
index d05ba57..76df7c8 100644 (file)
@@ -42,7 +42,7 @@
         * @return {jQuery}
         */
        function getHiddenInput( name, val ) {
-               return $( '<input type="hidden" />')
+               return $( '<input type="hidden" />' )
                        .attr( 'name', name )
                        .val( val );
        }
index 52e8dd4..8dc589e 100644 (file)
@@ -30,7 +30,7 @@ mediaWiki.language.convertGrammar = function ( word, form ) {
                        word = word.replace( /nuntii$/i, 'nuntios' );// 2nd declension plural (partly)
                        word = word.replace( /tio$/i, 'tionem' ); // 3rd declension singular (partly)
                        word = word.replace( /ns$/i, 'ntem' );
-                       word = word.replace( /as$/i, 'atem');
+                       word = word.replace( /as$/i, 'atem' );
                        word = word.replace( /es$/i, 'em' ); // 5th declension singular
                        break;
                case 'ablative':
@@ -42,7 +42,7 @@ mediaWiki.language.convertGrammar = function ( word, form ) {
                        word = word.replace( /nuntii$/i, 'nuntiis' ); // 2nd declension plural (partly)
                        word = word.replace( /tio$/i, 'tione' ); // 3rd declension singular (partly)
                        word = word.replace( /ns$/i, 'nte' );
-                       word = word.replace( /as$/i, 'ate');
+                       word = word.replace( /as$/i, 'ate' );
                        word = word.replace( /es$/i, 'e' ); // 5th declension singular
                        break;
        }
index 550a388..a021533 100644 (file)
@@ -11,24 +11,24 @@ mediaWiki.language.convertGrammar = function ( word, form ) {
                case 'genitive': // родовий відмінок
                        if ( word.slice( -4 ) !== 'вікі' && word.slice( -4 ) !== 'Вікі' ) {
                                if ( word.slice( -1 ) === 'ь' ) {
-                                       word = word.slice(0, -1 ) + 'я';
+                                       word = word.slice( 0, -1 ) + 'я';
                                } else if ( word.slice( -2 ) === 'ія' ) {
-                                       word = word.slice(0, -2 ) + 'ії';
+                                       word = word.slice( 0, -2 ) + 'ії';
                                } else if ( word.slice( -2 ) === 'ка' ) {
-                                       word = word.slice(0, -2 ) + 'ки';
+                                       word = word.slice( 0, -2 ) + 'ки';
                                } else if ( word.slice( -2 ) === 'ти' ) {
-                                       word = word.slice(0, -2 ) + 'тей';
+                                       word = word.slice( 0, -2 ) + 'тей';
                                } else if ( word.slice( -2 ) === 'ды' ) {
-                                       word = word.slice(0, -2 ) + 'дов';
+                                       word = word.slice( 0, -2 ) + 'дов';
                                } else if ( word.slice( -3 ) === 'ник' ) {
-                                       word = word.slice(0, -3 ) + 'ника';
+                                       word = word.slice( 0, -3 ) + 'ника';
                                }
                        }
                        break;
                case 'accusative': // знахідний відмінок
                        if ( word.slice( -4 ) !== 'вікі' && word.slice( -4 ) !== 'Вікі' ) {
                                if ( word.slice( -2 ) === 'ія' ) {
-                                       word = word.slice(0, -2 ) + 'ію';
+                                       word = word.slice( 0, -2 ) + 'ію';
                                }
                        }
                        break;
index 3c13055..36c281c 100644 (file)
@@ -6,6 +6,26 @@
         * @class mw.language
         */
 
+       /**
+        * Replicate a string 'n' times.
+        *
+        * @private
+        * @param {string} str The string to replicate
+        * @param {number} num Number of times to replicate the string
+        * @return {string}
+        */
+       function replicate( str, num ) {
+               if ( num <= 0 || !str ) {
+                       return '';
+               }
+
+               var buf = [];
+               while ( num-- ) {
+                       buf.push( str );
+               }
+               return buf.join( '' );
+       }
+
        /**
         * Pad a string to guarantee that it is at least `size` length by
         * filling with the character `ch` at either the start or end of the
                return end ? out + padStr : padStr + out;
        }
 
-       /**
-        * Replicate a string 'n' times.
-        *
-        * @private
-        * @param {string} str The string to replicate
-        * @param {number} num Number of times to replicate the string
-        * @return {string}
-        */
-       function replicate( str, num ) {
-               if ( num <= 0 || !str ) {
-                       return '';
-               }
-
-               var buf = [];
-               while ( num-- ) {
-                       buf.push( str );
-               }
-               return buf.join( '' );
-       }
-
        /**
         * Apply numeric pattern to absolute value using options. Gives no
         * consideration to local customs.
@@ -74,7 +74,7 @@
                        decimal: '.'
                };
 
-               if ( isNaN( value) ) {
+               if ( isNaN( value ) ) {
                        return value;
                }
 
index e35b1cf..e1b3198 100644 (file)
@@ -16,7 +16,6 @@ div#jump-to-nav,
 .mw-jump,
 div.top,
 div#column-one,
-#colophon,
 .mw-editsection,
 .mw-editsection-like,
 .toctoggle,
@@ -29,9 +28,6 @@ li#mobileview,
 li#privacy,
 #footer-places,
 .mw-hidden-catlinks,
-tr.mw-metadata-show-hide-extended,
-span.mw-filepage-other-resolutions,
-#filetoc,
 .usermessage,
 .patrollink,
 .ns-0 .mw-redirectedfrom,
@@ -284,45 +280,6 @@ img.thumbborder {
        border: 1px solid #dddddd;
 }
 
-/**
- * Galleries (see shared.css for more info)
- */
-li.gallerybox {
-       vertical-align: top;
-       display: inline-block;
-}
-
-ul.gallery, li.gallerybox {
-       zoom: 1;
-       *display: inline;
-}
-
-ul.gallery {
-       margin: 2px;
-       padding: 2px;
-       display: block;
-}
-
-li.gallerycaption {
-       font-weight: bold;
-       text-align: center;
-       display: block;
-       word-wrap: break-word;
-}
-
-li.gallerybox div.thumb {
-       text-align: center;
-       border: 1px solid #ccc;
-       margin: 2px;
-}
-
-div.gallerytext {
-       overflow: hidden;
-       font-size: 94%;
-       padding: 2px 4px;
-       word-wrap: break-word;
-}
-
 /**
  * Table rendering
  * As on shared.css but with white background.
diff --git a/resources/src/mediawiki.legacy/images/checker.png b/resources/src/mediawiki.legacy/images/checker.png
deleted file mode 100644 (file)
index 3e9e3d0..0000000
Binary files a/resources/src/mediawiki.legacy/images/checker.png and /dev/null differ
index 196ea21..b0f86e6 100644 (file)
@@ -320,10 +320,6 @@ span.comment {
        font-style: italic;
 }
 
-span.changedby {
-       font-size: 95%;
-}
-
 .previewnote {
        text-align: center;
        color: #cc0000;
index 7e171cf..019d339 100644 (file)
@@ -126,15 +126,11 @@ abbr[title],
        font-style: italic;
 }
 
-/* Comment and username portions of RC entries */
+/* Comment portions of RC entries */
 span.comment {
        font-style: italic;
 }
 
-span.changedby {
-       font-size: 95%;
-}
-
 /* Math */
 .texvc {
        direction: ltr;
@@ -164,49 +160,6 @@ span.texhtml {
        clear: both;
 }
 
-/**
- * File description page
- */
-
-div.mw-filepage-resolutioninfo {
-       font-size: smaller;
-}
-
-/**
- * File histories
- */
-h2#filehistory {
-       clear: both;
-}
-
-table.filehistory th,
-table.filehistory td {
-       vertical-align: top;
-}
-
-table.filehistory th {
-       text-align: left;
-}
-
-table.filehistory td.mw-imagepage-filesize,
-table.filehistory th.mw-imagepage-filesize {
-       white-space: nowrap;
-}
-
-table.filehistory td.filehistory-selected {
-       font-weight: bold;
-}
-
-/**
- * Add a checkered background image on hover for file
- * description pages. (bug 26470)
- */
-.filehistory a img,
-#file img:hover {
-       /* @embed */
-       background: white url(images/checker.png) repeat;
-}
-
 /**
  * rev_deleted stuff
  */
@@ -417,11 +370,6 @@ p.mw-upload-editlicenses {
 /* The auto-generated edit comments */
 .autocomment {
        color: gray;
-       /* In RTL wikis, Latin heading sections can get jumbled with comments that
-          begin with Latin letters or numbers */
-       unicode-bidi: -moz-isolate;
-       unicode-bidi: -webkit-isolate;
-       unicode-bidi: isolate;
 }
 
 #pagehistory .history-user {
@@ -453,11 +401,6 @@ p.mw-upload-editlicenses {
        font-weight: bold;
 }
 
-#shared-image-dup,
-#shared-image-conflict {
-       font-style: italic;
-}
-
 /**
  * Recreating deleted page warning
  * Reupload file warning
@@ -677,24 +620,6 @@ table.wikitable > caption {
        background-color: #eeeeff;
 }
 
-/* filetoc */
-ul#filetoc {
-       text-align: center;
-       border: 1px solid #aaaaaa;
-       background-color: #f9f9f9;
-       padding: 5px;
-       font-size: 95%;
-       margin-bottom: 0.5em;
-       margin-left: 0;
-       margin-right: 0;
-}
-
-#filetoc li {
-       display: inline;
-       list-style-type: none;
-       padding-right: 2em;
-}
-
 /* Classes for Exif data display */
 table.mw_metadata {
        font-size: 0.8em;
@@ -787,108 +712,6 @@ table.mw_metadata ul.metadata-langlist {
        margin-left: 0;
 }
 
-/* Galleries */
-/* These display attributes look nonsensical, but are needed to support IE and FF2 */
-/* Don't forget to update commonPrint.css */
-li.gallerybox {
-       vertical-align: top;
-       display: -moz-inline-box;
-       display: inline-block;
-}
-
-ul.gallery,
-li.gallerybox {
-       zoom: 1;
-       *display: inline;
-}
-
-ul.gallery {
-       margin: 2px;
-       padding: 2px;
-       display: block;
-}
-
-li.gallerycaption {
-       font-weight: bold;
-       text-align: center;
-       display: block;
-       word-wrap: break-word;
-}
-
-li.gallerybox div.thumb {
-       text-align: center;
-       border: 1px solid #ccc;
-       background-color: #f9f9f9;
-       margin: 2px;
-}
-
-li.gallerybox div.thumb img {
-       display: block;
-       margin: 0 auto;
-}
-
-div.gallerytext {
-       overflow: hidden;
-       font-size: 94%;
-       padding: 2px 4px;
-       word-wrap: break-word;
-}
-
-/* new gallery stuff */
-ul.mw-gallery-nolines li.gallerybox div.thumb {
-       background-color: transparent;
-       border: none;
-}
-
-ul.mw-gallery-nolines li.gallerybox div.gallerytext {
-       text-align: center;
-}
-
-/* height constrained gallery */
-
-ul.mw-gallery-packed li.gallerybox div.thumb,
-ul.mw-gallery-packed-overlay li.gallerybox div.thumb,
-ul.mw-gallery-packed-hover li.gallerybox div.thumb {
-       background-color: transparent;
-       border: none;
-}
-
-ul.mw-gallery-packed li.gallerybox div.thumb img,
-ul.mw-gallery-packed-overlay li.gallerybox div.thumb img,
-ul.mw-gallery-packed-hover li.gallerybox div.thumb img {
-       margin: 0 auto;
-}
-
-ul.mw-gallery-packed-hover li.gallerybox,
-ul.mw-gallery-packed-overlay li.gallerybox {
-       position: relative;
-}
-
-ul.mw-gallery-packed-hover div.gallerytextwrapper {
-       overflow: hidden;
-       height: 0;
-}
-
-ul.mw-gallery-packed-hover li.gallerybox:hover div.gallerytextwrapper,
-ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper,
-ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper {
-       position: absolute;
-       background: white;
-       background: rgba(255, 255, 255, 0.8);
-       padding: 5px 10px;
-       bottom: 0;
-       left: 0; /* Needed for IE */
-       height: auto;
-       font-weight: bold;
-       margin: 2px; /* correspond to style on div.thumb */
-}
-
-ul.mw-gallery-packed-hover,
-ul.mw-gallery-packed-overlay,
-ul.mw-gallery-packed {
-       text-align: center;
-}
-
 .mw-ajax-loader {
        background-image: url(images/ajax-loader.gif);
        background-position: center center;
index b5720a4..2dcc772 100644 (file)
         * See https://www.mediawiki.org/wiki/ResourceLoader/Legacy_JavaScript#wikibits.js
         */
 
-       function importScript( page ) {
-               var uri = mw.config.get( 'wgScript' ) + '?title=' +
-                       mw.util.wikiUrlencode( page ) +
-                       '&action=raw&ctype=text/javascript';
-               return importScriptURI( uri );
-       }
-
        /**
         * @deprecated since 1.17 Use mw.loader instead. Warnings added in 1.25.
         */
                return s;
        }
 
-       function importStylesheet( page ) {
+       function importScript( page ) {
                var uri = mw.config.get( 'wgScript' ) + '?title=' +
                        mw.util.wikiUrlencode( page ) +
-                       '&action=raw&ctype=text/css';
-               return importStylesheetURI( uri );
+                       '&action=raw&ctype=text/javascript';
+               return importScriptURI( uri );
        }
 
        /**
                return l;
        }
 
+       function importStylesheet( page ) {
+               var uri = mw.config.get( 'wgScript' ) + '?title=' +
+                       mw.util.wikiUrlencode( page ) +
+                       '&action=raw&ctype=text/css';
+               return importStylesheetURI( uri );
+       }
+
        msg = 'Use mw.loader instead.';
        mw.log.deprecate( win, 'loadedScripts', loadedScripts, msg );
        mw.log.deprecate( win, 'importScriptURI', importScriptURI, msg );
diff --git a/resources/src/mediawiki.page/mediawiki.page.gallery.css b/resources/src/mediawiki.page/mediawiki.page.gallery.css
new file mode 100644 (file)
index 0000000..20deb21
--- /dev/null
@@ -0,0 +1,101 @@
+/* Galleries */
+/* These display attributes look nonsensical, but are needed to support IE and FF2 */
+/* Don't forget to update mediawiki.page.gallery.print.css */
+li.gallerybox {
+       vertical-align: top;
+       display: -moz-inline-box;
+       display: inline-block;
+}
+
+ul.gallery,
+li.gallerybox {
+       zoom: 1;
+       *display: inline;
+}
+
+ul.gallery {
+       margin: 2px;
+       padding: 2px;
+       display: block;
+}
+
+li.gallerycaption {
+       font-weight: bold;
+       text-align: center;
+       display: block;
+       word-wrap: break-word;
+}
+
+li.gallerybox div.thumb {
+       text-align: center;
+       border: 1px solid #ccc;
+       background-color: #f9f9f9;
+       margin: 2px;
+}
+
+li.gallerybox div.thumb img {
+       display: block;
+       margin: 0 auto;
+}
+
+div.gallerytext {
+       overflow: hidden;
+       font-size: 94%;
+       padding: 2px 4px;
+       word-wrap: break-word;
+}
+
+/* new gallery stuff */
+ul.mw-gallery-nolines li.gallerybox div.thumb {
+       background-color: transparent;
+       border: none;
+}
+
+ul.mw-gallery-nolines li.gallerybox div.gallerytext {
+       text-align: center;
+}
+
+/* height constrained gallery */
+
+ul.mw-gallery-packed li.gallerybox div.thumb,
+ul.mw-gallery-packed-overlay li.gallerybox div.thumb,
+ul.mw-gallery-packed-hover li.gallerybox div.thumb {
+       background-color: transparent;
+       border: none;
+}
+
+ul.mw-gallery-packed li.gallerybox div.thumb img,
+ul.mw-gallery-packed-overlay li.gallerybox div.thumb img,
+ul.mw-gallery-packed-hover li.gallerybox div.thumb img {
+       margin: 0 auto;
+}
+
+ul.mw-gallery-packed-hover li.gallerybox,
+ul.mw-gallery-packed-overlay li.gallerybox {
+       position: relative;
+}
+
+ul.mw-gallery-packed-hover div.gallerytextwrapper {
+       overflow: hidden;
+       height: 0;
+}
+
+ul.mw-gallery-packed-hover li.gallerybox:hover div.gallerytextwrapper,
+ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper,
+ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper {
+       position: absolute;
+       background: white;
+       background: rgba(255, 255, 255, 0.8);
+       padding: 5px 10px;
+       bottom: 0;
+       left: 0; /* Needed for IE */
+       height: auto;
+       font-weight: bold;
+       margin: 2px; /* correspond to style on div.thumb */
+}
+
+ul.mw-gallery-packed-hover,
+ul.mw-gallery-packed-overlay,
+ul.mw-gallery-packed {
+       text-align: center;
+}
diff --git a/resources/src/mediawiki.page/mediawiki.page.gallery.print.css b/resources/src/mediawiki.page/mediawiki.page.gallery.print.css
new file mode 100644 (file)
index 0000000..0c14865
--- /dev/null
@@ -0,0 +1,35 @@
+li.gallerybox {
+       vertical-align: top;
+       display: inline-block;
+}
+
+ul.gallery, li.gallerybox {
+       zoom: 1;
+       *display: inline;
+}
+
+ul.gallery {
+       margin: 2px;
+       padding: 2px;
+       display: block;
+}
+
+li.gallerycaption {
+       font-weight: bold;
+       text-align: center;
+       display: block;
+       word-wrap: break-word;
+}
+
+li.gallerybox div.thumb {
+       text-align: center;
+       border: 1px solid #ccc;
+       margin: 2px;
+}
+
+div.gallerytext {
+       overflow: hidden;
+       font-size: 94%;
+       padding: 2px 4px;
+       word-wrap: break-word;
+}
index 9ad9c30..7daf386 100644 (file)
@@ -2,6 +2,7 @@
  * Implement AJAX navigation for multi-page images so the user may browse without a full page reload.
  */
 ( function ( mw, $ ) {
+       /*jshint latedef:false */
        var jqXhr, $multipageimage, $spinner,
                cache = {},
                cacheOrder = [];
index 0e026af..a484350 100644 (file)
@@ -59,3 +59,7 @@ table.mw-enhanced-rc td.mw-enhanced-rc-nested {
 .mw-enhanced-watched .mw-enhanced-rc-time {
        font-weight: bold;
 }
+
+span.changedby {
+       font-size: 95%;
+}
index 0e71d30..8fb9a47 100644 (file)
@@ -20,7 +20,7 @@
        zoom: 1;
 }
 
-/* When JS is enabled, .successbox is replaced with a mw.notification */
-.successbox {
+/* When JS is enabled, .mw-preferences-messageboxes are replaced with mw.notifications */
+.mw-preferences-messagebox {
        display: none;
 }
index 893db98..570a7d3 100644 (file)
@@ -1,4 +1,3 @@
-
 /*!
  * JavaScript for Special:Preferences
  */
@@ -86,18 +85,23 @@ jQuery( function ( $ ) {
                }
        }
 
-       // If there is a #mw-preferences-success box and javascript is enabled, use a slick notification instead!
-       if ( $( '#mw-preferences-success' ).length ) {
-               notif = mediaWiki.notification.notify( mediaWiki.message( 'savedprefs' ), { autoHide: false } );
-               $( '#preftoc, .prefsection' ).one( 'change keydown mousedown', function () { // 'change' event not reliable!
-                       if ( notif ) {
-                               notif.close();
-                       }
-               } );
+       // Check for messageboxes (.successbox, .warningbox, .errorbox) to replace with notifications
+       if ( $( '.mw-preferences-messagebox' ).length ) {
+               // If there is a #mw-preferences-success box and javascript is enabled, use a slick notification instead!
+               if ( $( '#mw-preferences-success' ).length ) {
+                       notif = mediaWiki.notification.notify( mediaWiki.message( 'savedprefs' ), { autoHide: false } );
+                       // 'change' event not reliable!
+                       $( '#preftoc, .prefsection' ).one( 'change keydown mousedown', function () {
+                               if ( notif ) {
+                                       notif.close();
+                                       notif = null;
+                               }
+                       } );
 
-               // Remove now-unnecessary success=1 querystring to prevent reappearance of notification on reload
-               if ( history.replaceState ) {
-                       history.replaceState( {}, document.title, document.URL.replace( /&?success=1/, '' ) );
+                       // Remove now-unnecessary success=1 querystring to prevent reappearance of notification on reload
+                       if ( history.replaceState ) {
+                               history.replaceState( {}, document.title, location.href.replace( /&?success=1/, '' ) );
+                       }
                }
        }
 
@@ -130,7 +134,7 @@ jQuery( function ( $ ) {
        // Disable the button to save preferences unless preferences have changed
        $( '#prefcontrol' ).prop( 'disabled', true );
        $( '.prefsection' ).one( 'change keydown mousedown', function () {
-               $( '#prefcontrol' ).prop( 'disabled', false);
+               $( '#prefcontrol' ).prop( 'disabled', false );
        } );
 
        // Enable keyboard users to use left and right keys to switch tabs
index 7dd0369..2bacabe 100644 (file)
@@ -6,6 +6,7 @@
  * @singleton
  */
 ( function ( mw, $ ) {
+       /*jshint latedef:false */
        var uploadWarning, uploadLicense,
                ajaxUploadDestCheck = mw.config.get( 'wgAjaxUploadDestCheck' ),
                $license = $( '#wpLicense' );
                        return ( $.inArray( file.type, known ) !== -1 ) && file.size > 0 && file.size < tooHuge;
                }
 
+               /**
+                * Format a file size attractively.
+                *
+                * TODO: Match numeric formatting
+                *
+                * @param {number} s
+                * @return {string}
+                */
+               function prettySize( s ) {
+                       var sizeMsgs = ['size-bytes', 'size-kilobytes', 'size-megabytes', 'size-gigabytes'];
+                       while ( s >= 1024 && sizeMsgs.length > 1 ) {
+                               s /= 1024;
+                               sizeMsgs = sizeMsgs.slice( 1 );
+                       }
+                       return mw.msg( sizeMsgs[0], Math.round( s ) );
+               }
+
                /**
                 * Show a thumbnail preview of PNG, JPEG, GIF, and SVG files prior to upload
                 * in browsers supporting HTML5 FileAPI.
                                ctx,
                                meta,
                                previewSize = 180,
+                               $spinner = $.createSpinner( { size: 'small', type: 'block' } )
+                                       .css( { width: previewSize, height: previewSize } ),
                                thumb = mw.template.get( 'mediawiki.special.upload', 'thumbnail.html' ).render();
 
-                       thumb.find( '.filename' ).text( file.name ).end()
-                               .find( '.fileinfo' ).text( prettySize( file.size ) ).end();
+                       thumb
+                               .find( '.filename' ).text( file.name ).end()
+                               .find( '.fileinfo' ).text( prettySize( file.size ) ).end()
+                               .find( '.thumbinner' ).prepend( $spinner ).end();
 
-                       $canvas = $( '<canvas width="' + previewSize + '" height="' + previewSize + '" ></canvas>' );
+                       $canvas = $( '<canvas>' ).attr( { width: previewSize, height: previewSize } );
                        ctx = $canvas[0].getContext( '2d' );
                        $( '#mw-htmlform-source' ).parent().prepend( thumb );
 
                                        ctx.clearRect( 0, 0, 180, 180 );
                                        ctx.rotate( rotation / 180 * Math.PI );
                                        ctx.drawImage( img, x, y, width, height );
-                                       thumb.find( '.mw-spinner-small' ).replaceWith( $canvas );
+                                       $spinner.replaceWith( $canvas );
 
                                        // Image size
                                        info = mw.msg( 'widthheight', logicalWidth, logicalHeight ) +
                        }
                }
 
-               /**
-                * Format a file size attractively.
-                *
-                * TODO: Match numeric formatting
-                *
-                * @param {number} s
-                * @return {string}
-                */
-               function prettySize( s ) {
-                       var sizeMsgs = ['size-bytes', 'size-kilobytes', 'size-megabytes', 'size-gigabytes'];
-                       while ( s >= 1024 && sizeMsgs.length > 1 ) {
-                               s /= 1024;
-                               sizeMsgs = sizeMsgs.slice( 1 );
-                       }
-                       return mw.msg( sizeMsgs[0], Math.round( s ) );
-               }
-
                /**
                 * Clear the file upload preview area.
                 */
index 305f20c..bf0e701 100644 (file)
@@ -1,7 +1,5 @@
 <div id="mw-upload-thumbnail" class="thumb tright">
        <div class="thumbinner">
-               <!-- Note: Change showPreview() in mediawiki.special.upload.js if mw-spinner-small classname changes -->
-               <div class="mw-spinner mw-spinner-small" style="width: 180px; height: 180px"></div>
                <div class="thumbcaption">
                        <div class="filename"></div>
                        <div class="fileinfo"></div>
index 3697a1c..cf4d788 100644 (file)
        mw.widgets.TitleInputWidget.prototype.cleanUpValue = function ( value ) {
                var widget = this;
                value = mw.widgets.TitleInputWidget.parent.prototype.cleanUpValue.call( this, value );
-               return $.fn.byteLimit.trimValueForByteLength( this.value, value, this.maxLength, function ( value ) {
+               return $.trimByteLength( this.value, value, this.maxLength, function ( value ) {
                        var title = widget.getTitle( value );
                        return title ? title.getMain() : value;
                } ).newVal;
diff --git a/resources/src/mediawiki/mediawiki.ForeignStructuredUpload.js b/resources/src/mediawiki/mediawiki.ForeignStructuredUpload.js
new file mode 100644 (file)
index 0000000..be63936
--- /dev/null
@@ -0,0 +1,162 @@
+( function ( mw, OO ) {
+       /**
+        * @class mw.ForeignStructuredUpload
+        * @extends mw.ForeignUpload
+        *
+        * Used to represent an upload in progress on the frontend.
+        *
+        * This subclass will upload to a wiki using a structured metadata
+        * system similar to (or identical to) the one on Wikimedia Commons.
+        *
+        * See <https://commons.wikimedia.org/wiki/Commons:Structured_data> for
+        * a more detailed description of how that system works.
+        *
+        * TODO this currently only supports uploads under CC-BY-SA 4.0,
+        *     and should really have support for more licenses.
+        *
+        * @inheritdoc
+        */
+       function ForeignStructuredUpload( targetHost, apiconfig ) {
+               this.date = undefined;
+               this.descriptions = [];
+               this.categories = [];
+
+               mw.ForeignUpload.call( this, targetHost, apiconfig );
+       }
+
+       OO.inheritClass( ForeignStructuredUpload, mw.ForeignUpload );
+
+       /**
+        * Add categories to the upload.
+        * @param {string[]} categories Array of categories to which this upload will be added.
+        */
+       ForeignStructuredUpload.prototype.addCategories = function ( categories ) {
+               var i, category;
+
+               for ( i = 0; i < categories.length; i++ ) {
+                       category = categories[i];
+                       this.categories.push( category );
+               }
+       };
+
+       /**
+        * Add a description to the upload.
+        * @param {string} language The language code for the description's language. Must have a template on the target wiki to work properly.
+        * @param {string} description The description of the file.
+        */
+       ForeignStructuredUpload.prototype.addDescription = function ( language, description ) {
+               this.descriptions.push( {
+                       language: language,
+                       text: description
+               } );
+       };
+
+       /**
+        * Set the date of creation for the upload.
+        * @param {Date} date
+        */
+       ForeignStructuredUpload.prototype.setDate = function ( date ) {
+               this.date = date;
+       };
+
+       /**
+        * Get the text of the file page, to be created on upload. Brings together
+        * several different pieces of information to create useful text.
+        * @return {string}
+        */
+       ForeignStructuredUpload.prototype.getText = function () {
+               return (
+                       '{{' +
+                       this.getTemplateName() +
+                       '\n|description=' +
+                       this.getDescriptions() +
+                       '\n|date=' +
+                       this.getDate() +
+                       '\n|source=' +
+                       this.getUser() +
+                       '\n|author=' +
+                       this.getUser() +
+                       '\n}}\n\n' +
+                       this.getLicense() +
+                       '\n\n' +
+                       this.getCategories()
+               );
+       };
+
+       /**
+        * Gets the wikitext for the creation date of this upload.
+        * @private
+        * @return {string}
+        */
+       ForeignStructuredUpload.prototype.getDate = function () {
+               if ( !this.date ) {
+                       return '';
+               }
+
+               return this.date.toString();
+       };
+
+       /**
+        * Gets the name of the template to use for creating the file metadata.
+        * Override in subclasses for other templates.
+        * @private
+        * @return {string}
+        */
+       ForeignStructuredUpload.prototype.getTemplateName = function () {
+               return 'Information';
+       };
+
+       /**
+        * Fetches the wikitext for any descriptions that have been added
+        * to the upload.
+        * @private
+        * @return {string}
+        */
+       ForeignStructuredUpload.prototype.getDescriptions = function () {
+               var i, desc, templateCalls = [];
+
+               for ( i = 0; i < this.descriptions.length; i++ ) {
+                       desc = this.descriptions[i];
+                       templateCalls.push( '{{' + desc.language + '|' + desc.text + '}}' );
+               }
+
+               return templateCalls.join( '\n' );
+       };
+
+       /**
+        * Fetches the wikitext for the categories to which the upload will
+        * be added.
+        * @private
+        * @return {string}
+        */
+       ForeignStructuredUpload.prototype.getCategories = function () {
+               var i, cat, categoryLinks = [];
+
+               for ( i = 0; i < this.categories.length; i++ ) {
+                       cat = this.categories[i];
+                       categoryLinks.push( '[[Category:' + cat + ']]' );
+               }
+
+               return categoryLinks.join( '\n' );
+       };
+
+       /**
+        * Gets the wikitext for the license of the upload. Abstract for now.
+        * @private
+        * @return {string}
+        */
+       ForeignStructuredUpload.prototype.getLicense = function () {
+               return '';
+       };
+
+       /**
+        * Get the username.
+        * @private
+        * @return {string}
+        */
+       ForeignStructuredUpload.prototype.getUser = function () {
+               return mw.config.get( 'wgUserName' );
+       };
+
+       mw.ForeignStructuredUpload = ForeignStructuredUpload;
+}( mediaWiki, OO ) );
diff --git a/resources/src/mediawiki/mediawiki.ForeignUpload.js b/resources/src/mediawiki/mediawiki.ForeignUpload.js
new file mode 100644 (file)
index 0000000..0929661
--- /dev/null
@@ -0,0 +1,58 @@
+( function ( mw, OO ) {
+       /**
+        * @class mw.ForeignUpload
+        * @extends mw.Upload
+        *
+        * Used to represent an upload in progress on the frontend.
+        *
+        * Subclassed to upload to a foreign API, with no other goodies. Use
+        * this for a generic foreign image repository on your wiki farm.
+        *
+        * Note you can provide the {@link #targetHost targetHost} or not - if the first argument is
+        * an object, we assume you want the default, and treat it as apiconfig
+        * instead.
+        *
+        * @constructor
+        * @param {string} [targetHost="commons.wikimedia.org"] Used to set up the target
+        *     wiki. If not remote, this class behaves identically to mw.Upload (unless further subclassed)
+        * @param {Object} [apiconfig] Passed to the constructor of mw.ForeignApi or mw.Api, as needed.
+        */
+       function ForeignUpload( targetHost, apiconfig ) {
+               var api;
+
+               if ( typeof targetHost === 'object' ) {
+                       // targetHost probably wasn't passed in, it must
+                       // be apiconfig
+                       apiconfig = targetHost;
+               } else {
+                       // targetHost is a useful string, set it here
+                       this.targetHost = targetHost || this.targetHost;
+               }
+
+               if ( location.host !== this.targetHost ) {
+                       api = new mw.ForeignApi(
+                               location.protocol + '//' + this.targetHost + '/w/api.php',
+                               apiconfig
+                       );
+               } else {
+                       // We'll ignore the CORS and centralauth stuff if we're on Commons already
+                       api = new mw.Api( apiconfig );
+               }
+
+               mw.Upload.call( this, api );
+       }
+
+       OO.inheritClass( ForeignUpload, mw.Upload );
+
+       /**
+        * @property targetHost
+        * Used to specify the target repository of the upload.
+        *
+        * You could override this to point at something that isn't Commons,
+        * but be sure it has the correct templates and is CORS and CentralAuth
+        * ready.
+        */
+       ForeignUpload.prototype.targetHost = 'commons.wikimedia.org';
+
+       mw.ForeignUpload = ForeignUpload;
+}( mediaWiki, OO ) );
index 661ab74..e9d07ed 100644 (file)
@@ -4,6 +4,7 @@
  * @since 1.18
  */
 ( function ( mw, $ ) {
+       /*jshint latedef:false */
 
        /**
         * @class mw.Title
index 58c66c1..07a0b75 100644 (file)
         * Sets the filename based on the filename as it was on the upload.
         */
        UP.setFilenameFromFile = function () {
-               if ( this.file.nodeType && this.file.nodeType === Node.ELEMENT_NODE ) {
+               var file = this.getFile();
+               if ( file.nodeType && file.nodeType === Node.ELEMENT_NODE ) {
                        // File input element, use getBasename to cut out the path
-                       this.setFilename( this.getBasename( this.file.value ) );
-               } else if ( this.file.name && this.file.lastModified ) {
+                       this.setFilename( this.getBasename( file.value ) );
+               } else if ( file.name && file.lastModified ) {
                        // HTML5 FileAPI File object, but use getBasename to be safe
-                       this.setFilename( this.getBasename( this.file.name ) );
+                       this.setFilename( this.getBasename( file.name ) );
                }
        };
 
        UP.upload = function () {
                var upload = this;
 
-               if ( !this.file ) {
+               if ( !this.getFile() ) {
                        return $.Deferred().reject( 'No file to upload. Call setFile to add one.' );
                }
 
-               if ( !this.filename ) {
+               if ( !this.getFilename() ) {
                        return $.Deferred().reject( 'No filename set. Call setFilename to add one.' );
                }
 
                this.state = Upload.State.UPLOADING;
 
-               return this.api.upload( this.file, {
-                       watchlist: ( this.watchlist === true ) ? 1 : undefined,
-                       comment: this.comment,
-                       filename: this.filename,
-                       text: this.text
+               return this.api.upload( this.getFile(), {
+                       watchlist: ( this.getWatchlist() ) ? 1 : undefined,
+                       comment: this.getComment(),
+                       filename: this.getFilename(),
+                       text: this.getText()
                } ).then( function ( result ) {
                        upload.state = Upload.State.UPLOADED;
                        upload.imageinfo = result.upload.imageinfo;
        UP.uploadToStash = function () {
                var upload = this;
 
-               if ( !this.file ) {
+               if ( !this.getFile() ) {
                        return $.Deferred().reject( 'No file to upload. Call setFile to add one.' );
                }
 
-               if ( !this.filename ) {
+               if ( !this.getFilename() ) {
                        this.setFilenameFromFile();
                }
 
                this.state = Upload.State.UPLOADING;
 
-               this.stashPromise = this.api.uploadToStash( this.file, {
-                       filename: this.filename
+               this.stashPromise = this.api.uploadToStash( this.getFile(), {
+                       filename: this.getFilename()
                } ).then( function ( finishStash ) {
                        upload.state = Upload.State.STASHED;
                        return finishStash;
                        upload.state = Upload.State.UPLOADING;
 
                        return finishStash( {
-                               watchlist: ( upload.watchlist === true ) ? 1 : undefined,
+                               watchlist: ( upload.getWatchlist() ) ? 1 : undefined,
                                comment: upload.getComment(),
                                filename: upload.getFilename(),
                                text: upload.getText()
index 07d8900..7563ae4 100644 (file)
                if ( val === undefined || val === null || val === '' ) {
                        return '';
                }
+               /* jshint latedef:false */
                return pre + ( raw ? val : mw.Uri.encode( val ) ) + post;
+               /* jshint latedef:true */
        }
 
        /**
         * Regular expressions to parse many common URIs.
         *
+        * As they are gnarly, they have been moved to separate files to allow us to format them in the
+        * 'extended' regular expression format (which JavaScript normally doesn't support). The subset of
+        * features handled is minimal, but just the free whitespace gives us a lot.
+        *
         * @private
         * @static
         * @property {Object} parser
         */
        var parser = {
-               strict: /^(?:([^:\/?#]+):)?(?:\/\/(?:(?:([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?([^:\/?#]*)(?::(\d*))?)?((?:[^?#\/]*\/)*[^?#]*)(?:\?([^#]*))?(?:#(.*))?/,
-               loose:  /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?(?:(?:([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?([^:\/?#]*)(?::(\d*))?((?:\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?[^?#\/]*)(?:\?([^#]*))?(?:#(.*))?/
+               strict: mw.template.get( 'mediawiki.Uri', 'strict.regexp' ).render(),
+               loose: mw.template.get( 'mediawiki.Uri', 'loose.regexp' ).render()
        },
 
        /**
                 * @param {boolean} [options.overrideKeys=false] Whether to let duplicate query parameters
                 *  override each other (`true`) or automagically convert them to an array (`false`).
                 */
+               /* jshint latedef:false */
                function Uri( uri, options ) {
                        var prop,
                                defaultUri = getDefaultUri();
diff --git a/resources/src/mediawiki/mediawiki.Uri.loose.regexp b/resources/src/mediawiki/mediawiki.Uri.loose.regexp
new file mode 100644 (file)
index 0000000..300ab3b
--- /dev/null
@@ -0,0 +1,22 @@
+^
+(?:
+       (?![^:@]+:[^:@/]*@)
+       (?<protocol>[^:/?#.]+):
+)?
+(?://)?
+(?:(?:
+       (?<user>[^:@/?#]*)
+       (?::(?<password>[^:@/?#]*))?
+)?@)?
+(?<host>[^:/?#]*)
+(?::(?<port>\d*))?
+(
+       (?:/
+               (?:[^?#]
+                       (?![^?#/]*\.[^?#/.]+(?:[?#]|$))
+               )*/?
+       )?
+       [^?#/]*
+)
+(?:\?(?<query>[^#]*))?
+(?:\#(?<fragment>.*))?
diff --git a/resources/src/mediawiki/mediawiki.Uri.strict.regexp b/resources/src/mediawiki/mediawiki.Uri.strict.regexp
new file mode 100644 (file)
index 0000000..2ac7d2f
--- /dev/null
@@ -0,0 +1,13 @@
+^
+(?:(?<protocol>[^:/?#]+):)?
+(?://(?:
+       (?:
+               (?<user>[^:@/?#]*)
+               (?::(?<password>[^:@/?#]*))?
+       )?@)?
+       (?<host>[^:/?#]*)
+       (?::(?<port>\d*))?
+)?
+(?<path>(?:[^?#/]*/)*[^?#]*)
+(?:\?(?<query>[^#]*))?
+(?:\#(?<fragment>.*))?
diff --git a/resources/src/mediawiki/mediawiki.experiments.js b/resources/src/mediawiki/mediawiki.experiments.js
new file mode 100644 (file)
index 0000000..930bfec
--- /dev/null
@@ -0,0 +1,110 @@
+/* jshint bitwise:false */
+( function ( mw, $ ) {
+
+       var CONTROL_BUCKET = 'control',
+               MAX_INT32_UNSIGNED = 4294967295;
+
+       /**
+        * An implementation of Jenkins' one-at-a-time hash.
+        *
+        * @see http://en.wikipedia.org/wiki/Jenkins_hash_function
+        *
+        * @param {String} string String to hash
+        * @return {Number} The hash as a 32-bit unsigned integer
+        * @ignore
+        *
+        * @author Ori Livneh <ori@wikimedia.org>
+        * @see http://jsbin.com/kejewi/4/watch?js,console
+        */
+       function hashString( string ) {
+               var hash = 0,
+                       i = string.length;
+
+               while ( i-- ) {
+                       hash += string.charCodeAt( i );
+                       hash += ( hash << 10 );
+                       hash ^= ( hash >> 6 );
+               }
+               hash += ( hash << 3 );
+               hash ^= ( hash >> 11 );
+               hash += ( hash << 15 );
+
+               return hash >>> 0;
+       }
+
+       /**
+        * Provides an API for bucketing users in experiments.
+        *
+        * @class mw.experiments
+        * @singleton
+        */
+       mw.experiments = {
+
+               /**
+                * Gets the bucket for the experiment given the token.
+                *
+                * The name of the experiment and the token are hashed. The hash is converted
+                * to a number which is then used to get a bucket.
+                *
+                * Consider the following experiment specification:
+                *
+                * ```
+                * {
+                *   name: 'My first experiment',
+                *   enabled: true,
+                *   buckets: {
+                *     control: 0.5
+                *     A: 0.25,
+                *     B: 0.25
+                *   }
+                * }
+                * ```
+                *
+                * The experiment has three buckets: control, A, and B. The user has a 50%
+                * chance of being assigned to the control bucket, and a 25% chance of being
+                * assigned to either the A or B buckets. If the experiment were disabled,
+                * then the user would always be assigned to the control bucket.
+                *
+                * This function is based on the deprecated `mw.user.bucket` function.
+                *
+                * @param {Object} experiment
+                * @param {String} experiment.name The name of the experiment
+                * @param {Boolean} experiment.enabled Whether or not the experiment is
+                *  enabled. If the experiment is disabled, then the user is always assigned
+                *  to the control bucket
+                * @param {Object} experiment.buckets A map of bucket name to probability
+                *  that the user will be assigned to that bucket
+                * @param {String} token A token that uniquely identifies the user for the
+                *  duration of the experiment
+                * @returns {String} The bucket
+                */
+               getBucket: function ( experiment, token ) {
+                       var buckets = experiment.buckets,
+                               key,
+                               range = 0,
+                               hash,
+                               max,
+                               acc = 0;
+
+                       if ( !experiment.enabled || $.isEmptyObject( experiment.buckets ) ) {
+                               return CONTROL_BUCKET;
+                       }
+
+                       for ( key in buckets ) {
+                               range += buckets[key];
+                       }
+
+                       hash = hashString( experiment.name + ':' + token );
+                       max = ( hash / MAX_INT32_UNSIGNED ) * range;
+
+                       for ( key in buckets ) {
+                               acc += buckets[key];
+
+                               if ( max <= acc ) {
+                                       return key;
+                               }
+                       }
+               }
+       };
+
+}( mediaWiki, jQuery ) );
index 6548896..e110f90 100644 (file)
@@ -7,6 +7,7 @@
  * @alternateClassName mediaWiki
  * @singleton
  */
+/*jshint latedef:false */
 /*global sha1 */
 ( function ( $ ) {
        'use strict';
        function setGlobalMapValue( map, key, value ) {
                map.values[key] = value;
                mw.log.deprecate(
-                       window,
-                       key,
-                       value,
-                       // Deprecation notice for mw.config globals (T58550, T72470)
-                       map === mw.config && 'Use mw.config instead.'
+                               window,
+                               key,
+                               value,
+                               // Deprecation notice for mw.config globals (T58550, T72470)
+                               map === mw.config && 'Use mw.config instead.'
                );
        }
 
                        /**
                         * Mapping of registered modules.
                         *
-                        * See #implement for exact details on support for script, style and messages.
+                        * See #implement and #execute for exact details on support for script, style and messages.
                         *
                         * Format:
                         *
                         *     {
                         *         'moduleName': {
-                        *             // From startup mdoule
-                        *             'version': '################' (Hash)
+                        *             // From mw.loader.register()
+                        *             'version': '########' (hash)
                         *             'dependencies': ['required.foo', 'bar.also', ...], (or) function () {}
                         *             'group': 'somegroup', (or) null
                         *             'source': 'local', (or) 'anotherwiki'
                         *             'skip': 'return !!window.Example', (or) null
+                        *
+                        *             // Set from execute() or mw.loader.state()
                         *             'state': 'registered', 'loaded', 'loading', 'ready', 'error', or 'missing'
                         *
-                        *             // Added during implementation
+                        *             // Optionally added at run-time by mw.loader.implement()
                         *             'skipped': true
-                        *             'script': ...
-                        *             'style': ...
-                        *             'messages': { 'key': 'value' }
+                        *             'script': closure, array of urls, or string
+                        *             'style': { ... } (see #execute)
+                        *             'messages': { 'key': 'value', ... }
                         *         }
                         *     }
                         *
+                        * State machine:
+                        *
+                        * - `registered`:
+                        *    The module is known to the system but not yet requested.
+                        *    Meta data is registered via mw.loader#register. Calls to that method are
+                        *    generated server-side by the startup module.
+                        * - `loading` (1):
+                        *    The module is requested through mw.loader (either directly or as dependency of
+                        *    another module). The client will be fetching module contents from the server.
+                        *    The contents are then stashed in the registry via mw.loader#implement.
+                        * - `loaded`:
+                        *    The module has been requested from the server and stashed via mw.loader#implement.
+                        *    If the module has no more dependencies in-fight, the module will be executed
+                        *    right away. Otherwise execution is deferred, controlled via #handlePending.
+                        * - `loading` (2):
+                        *    The module is being executed.
+                        *    TODO: Create a new state instead of re-using the "loading" state.
+                        * - `ready`:
+                        *    The module has been successfully executed.
+                        * - `error`:
+                        *    The module (or one of its dependencies) produced an error during execution.
+                        * - `missing`:
+                        *    The module was registered client-side and requested, but the server denied knowledge
+                        *    of the module's existence.
+                        *
                         * @property
                         * @private
                         */
                                return sha1( hashes.join( '' ) ).slice( 0, 12 );
                        }
 
-                       /**
-                        * Resolve dependencies and detect circular references.
-                        *
-                        * @private
-                        * @param {string} module Name of the top-level module whose dependencies shall be
-                        *  resolved and sorted.
-                        * @param {Array} resolved Returns a topological sort of the given module and its
-                        *  dependencies, such that later modules depend on earlier modules. The array
-                        *  contains the module names. If the array contains already some module names,
-                        *  this function appends its result to the pre-existing array.
-                        * @param {Object} [unresolved] Hash used to track the current dependency
-                        *  chain; used to report loops in the dependency graph.
-                        * @throws {Error} If any unregistered module or a dependency loop is encountered
-                        */
-                       function sortDependencies( module, resolved, unresolved ) {
-                               var n, deps, len, skip;
-
-                               if ( !hasOwn.call( registry, module ) ) {
-                                       throw new Error( 'Unknown dependency: ' + module );
-                               }
-
-                               if ( registry[module].skip !== null ) {
-                                       /*jshint evil:true */
-                                       skip = new Function( registry[module].skip );
-                                       registry[module].skip = null;
-                                       if ( skip() ) {
-                                               registry[module].skipped = true;
-                                               registry[module].dependencies = [];
-                                               registry[module].state = 'ready';
-                                               handlePending( module );
-                                               return;
-                                       }
-                               }
-
-                               // Resolves dynamic loader function and replaces it with its own results
-                               if ( $.isFunction( registry[module].dependencies ) ) {
-                                       registry[module].dependencies = registry[module].dependencies();
-                                       // Ensures the module's dependencies are always in an array
-                                       if ( typeof registry[module].dependencies !== 'object' ) {
-                                               registry[module].dependencies = [registry[module].dependencies];
-                                       }
-                               }
-                               if ( $.inArray( module, resolved ) !== -1 ) {
-                                       // Module already resolved; nothing to do
-                                       return;
-                               }
-                               // Create unresolved if not passed in
-                               if ( !unresolved ) {
-                                       unresolved = {};
-                               }
-                               // Tracks down dependencies
-                               deps = registry[module].dependencies;
-                               len = deps.length;
-                               for ( n = 0; n < len; n += 1 ) {
-                                       if ( $.inArray( deps[n], resolved ) === -1 ) {
-                                               if ( unresolved[deps[n]] ) {
-                                                       throw new Error(
-                                                               'Circular reference detected: ' + module +
-                                                               ' -> ' + deps[n]
-                                                       );
-                                               }
-
-                                               // Add to unresolved
-                                               unresolved[module] = true;
-                                               sortDependencies( deps[n], resolved, unresolved );
-                                               delete unresolved[module];
-                                       }
-                               }
-                               resolved[resolved.length] = module;
-                       }
-
-                       /**
-                        * Get a list of module names that a module depends on in their proper dependency
-                        * order.
-                        *
-                        * @private
-                        * @param {string[]} module Array of string module names
-                        * @return {Array} List of dependencies, including 'module'.
-                        */
-                       function resolve( modules ) {
-                               var resolved = [];
-                               $.each( modules, function ( idx, module ) {
-                                       sortDependencies( module, resolved );
-                               } );
-                               return resolved;
-                       }
-
                        /**
                         * Determine whether all dependencies are in state 'ready', which means we may
                         * execute the module or job now.
                                }
                        }
 
+                       /**
+                        * Resolve dependencies and detect circular references.
+                        *
+                        * @private
+                        * @param {string} module Name of the top-level module whose dependencies shall be
+                        *  resolved and sorted.
+                        * @param {Array} resolved Returns a topological sort of the given module and its
+                        *  dependencies, such that later modules depend on earlier modules. The array
+                        *  contains the module names. If the array contains already some module names,
+                        *  this function appends its result to the pre-existing array.
+                        * @param {Object} [unresolved] Hash used to track the current dependency
+                        *  chain; used to report loops in the dependency graph.
+                        * @throws {Error} If any unregistered module or a dependency loop is encountered
+                        */
+                       function sortDependencies( module, resolved, unresolved ) {
+                               var n, deps, len, skip;
+
+                               if ( !hasOwn.call( registry, module ) ) {
+                                       throw new Error( 'Unknown dependency: ' + module );
+                               }
+
+                               if ( registry[module].skip !== null ) {
+                                       /*jshint evil:true */
+                                       skip = new Function( registry[module].skip );
+                                       registry[module].skip = null;
+                                       if ( skip() ) {
+                                               registry[module].skipped = true;
+                                               registry[module].dependencies = [];
+                                               registry[module].state = 'ready';
+                                               handlePending( module );
+                                               return;
+                                       }
+                               }
+
+                               // Resolves dynamic loader function and replaces it with its own results
+                               if ( $.isFunction( registry[module].dependencies ) ) {
+                                       registry[module].dependencies = registry[module].dependencies();
+                                       // Ensures the module's dependencies are always in an array
+                                       if ( typeof registry[module].dependencies !== 'object' ) {
+                                               registry[module].dependencies = [registry[module].dependencies];
+                                       }
+                               }
+                               if ( $.inArray( module, resolved ) !== -1 ) {
+                                       // Module already resolved; nothing to do
+                                       return;
+                               }
+                               // Create unresolved if not passed in
+                               if ( !unresolved ) {
+                                       unresolved = {};
+                               }
+                               // Tracks down dependencies
+                               deps = registry[module].dependencies;
+                               len = deps.length;
+                               for ( n = 0; n < len; n += 1 ) {
+                                       if ( $.inArray( deps[n], resolved ) === -1 ) {
+                                               if ( unresolved[deps[n]] ) {
+                                                       throw new Error(
+                                                               'Circular reference detected: ' + module +
+                                                               ' -> ' + deps[n]
+                                                       );
+                                               }
+
+                                               // Add to unresolved
+                                               unresolved[module] = true;
+                                               sortDependencies( deps[n], resolved, unresolved );
+                                               delete unresolved[module];
+                                       }
+                               }
+                               resolved[resolved.length] = module;
+                       }
+
+                       /**
+                        * Get a list of module names that a module depends on in their proper dependency
+                        * order.
+                        *
+                        * @private
+                        * @param {string[]} module Array of string module names
+                        * @return {Array} List of dependencies, including 'module'.
+                        */
+                       function resolve( modules ) {
+                               var resolved = [];
+                               $.each( modules, function ( idx, module ) {
+                                       sortDependencies( module, resolved );
+                               } );
+                               return resolved;
+                       }
+
                        /**
                         * Load and execute a script with callback.
                         *
                         * @param {string} module Module name to execute
                         */
                        function execute( module ) {
-                               var key, value, media, i, urls, cssHandle, checkCssHandles,
+                               var key, value, media, i, urls, cssHandle, checkCssHandles, runScript,
                                        cssHandlesRegistered = false;
 
                                if ( !hasOwn.call( registry, module ) ) {
                                        el.href = url;
                                }
 
-                               function runScript() {
+                               runScript = function () {
                                        var script, markModuleReady, nestedAddScript, legacyWait,
                                                // Expand to include dependencies since we have to exclude both legacy modules
                                                // and their dependencies from the legacyWait (to prevent a circular dependency).
                                                        } else if ( $.isFunction( script ) ) {
                                                                // Pass jQuery twice so that the signature of the closure which wraps
                                                                // the script can bind both '$' and 'jQuery'.
-                                                               registry[module].state = 'ready';
                                                                script( $, $ );
-                                                               handlePending( module );
+                                                               markModuleReady();
                                                        } else if ( typeof script === 'string' ) {
                                                                // Site and user modules are a legacy scripts that run in the global scope.
                                                                // This is transported as a string instead of a function to avoid needing
                                                                        // Implicit dependency on the site module. Not real dependency because
                                                                        // it should run after 'site' regardless of whether it succeeds or fails.
                                                                        mw.loader.using( 'site' ).always( function () {
-                                                                               registry[module].state = 'ready';
                                                                                $.globalEval( script );
-                                                                               handlePending( module );
+                                                                               markModuleReady();
                                                                        } );
                                                                } else {
-                                                                       registry[module].state = 'ready';
                                                                        $.globalEval( script );
-                                                                       handlePending( module );
+                                                                       markModuleReady();
                                                                }
                                                        }
                                                } );
                                                mw.track( 'resourceloader.exception', { exception: e, module: module, source: 'module-execute' } );
                                                handlePending( module );
                                        }
-                               }
+                               };
 
                                // This used to be inside runScript, but since that is now fired asychronously
                                // (after CSS is loaded) we need to set it here right away. It is crucial that
                                registry[module].state = 'loading';
 
                                // Add localizations to message system
-                               if ( $.isPlainObject( registry[module].messages ) ) {
+                               if ( registry[module].messages ) {
                                        mw.messages.set( registry[module].messages );
                                }
 
                                // * back-compat: { <media>: [url, ..] }
                                // * { "css": [css, ..] }
                                // * { "url": { <media>: [url, ..] } }
-                               if ( $.isPlainObject( registry[module].style ) ) {
+                               if ( registry[module].style ) {
                                        for ( key in registry[module].style ) {
                                                value = registry[module].style[key];
                                                media = undefined;
                                        currReqBase
                                );
                                request = sortQuery( request );
-                               // Support: IE6
-                               // Append &* to satisfy load.php's WebRequest::checkUrlExtension test.
-                               // This script isn't actually used in IE6, but MediaWiki enforces it in general.
-                               addScript( sourceLoadScript + '?' + $.param( request ) + '&*' );
+                               addScript( sourceLoadScript + '?' + $.param( request ) );
                        }
 
                        /**
                                 * The reason css strings are not concatenated anymore is bug 31676. We now check
                                 * whether it's safe to extend the stylesheet.
                                 *
-                                * @param {Object} [msgs] List of key/value pairs to be added to mw#messages.
+                                * @param {Object} [messages] List of key/value pairs to be added to mw#messages.
                                 * @param {Object} [templates] List of key/value pairs to be added to mw#templates.
                                 */
-                               implement: function ( module, script, style, msgs, templates ) {
+                               implement: function ( module, script, style, messages, templates ) {
                                        // Validate input
                                        if ( typeof module !== 'string' ) {
                                                throw new Error( 'module must be of type string, not ' + typeof module );
                                        if ( style && !$.isPlainObject( style ) ) {
                                                throw new Error( 'style must be of type object, not ' + typeof style );
                                        }
-                                       if ( msgs && !$.isPlainObject( msgs ) ) {
-                                               throw new Error( 'msgs must be of type object, not a ' + typeof msgs );
+                                       if ( messages && !$.isPlainObject( messages ) ) {
+                                               throw new Error( 'messages must be of type object, not a ' + typeof messages );
                                        }
                                        if ( templates && !$.isPlainObject( templates ) ) {
                                                throw new Error( 'templates must be of type object, not a ' + typeof templates );
                                        // Attach components
                                        registry[module].script = script || [];
                                        registry[module].style = style || {};
-                                       registry[module].messages = msgs || {};
+                                       registry[module].messages = messages || {};
                                        registry[module].templates = templates || {};
                                        // The module may already have been marked as erroneous
                                        if ( $.inArray( registry[module].state, ['error', 'missing'] ) === -1 ) {
index 5292e80..a20d7f0 100644 (file)
@@ -2,6 +2,20 @@
  * Add search suggestions to the search form.
  */
 ( function ( mw, $ ) {
+       mw.searchSuggest = {
+               request: function ( api, query, response, maxRows ) {
+                       return api.get( {
+                               action: 'opensearch',
+                               search: query,
+                               namespace: 0,
+                               limit: maxRows,
+                               suggest: ''
+                       } ).done( function ( data ) {
+                               response( data[ 1 ] );
+                       } );
+               }
+       };
+
        $( function () {
                var api, map, searchboxesSelectors,
                        // Region where the suggestions box will appear directly below
 
                                        api = api || new mw.Api();
 
-                                       $.data( node, 'request', api.get( {
-                                               action: 'opensearch',
-                                               search: query,
-                                               namespace: 0,
-                                               limit: maxRows,
-                                               suggest: ''
-                                       } ).done( function ( data ) {
-                                               response( data[ 1 ] );
-                                       } ) );
+                                       $.data( node, 'request', mw.searchSuggest.request( api, query, response, maxRows ) );
                                },
                                cancel: function () {
                                        var node = this[0],
diff --git a/resources/src/mediawiki/mediawiki.startUp.js b/resources/src/mediawiki/mediawiki.startUp.js
deleted file mode 100644 (file)
index 028784c..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-/*!
- * Auto-register from pre-loaded startup scripts
- */
-( function ( $ ) {
-       'use strict';
-
-       if ( $.isFunction( window.startUp ) ) {
-               window.startUp();
-               window.startUp = undefined;
-       }
-}( jQuery ) );
diff --git a/resources/src/mediawiki/mediawiki.template.regexp.js b/resources/src/mediawiki/mediawiki.template.regexp.js
new file mode 100644 (file)
index 0000000..3ec0a1f
--- /dev/null
@@ -0,0 +1,15 @@
+mediaWiki.template.registerCompiler( 'regexp', {
+       compile: function ( src ) {
+               return {
+                       render: function () {
+                               return new RegExp(
+                                       src
+                                               // Remove whitespace
+                                               .replace( /\s+/g, '' )
+                                               // Remove named capturing groups
+                                               .replace( /\?<\w+?>/g, '' )
+                               );
+                       }
+               };
+       }
+} );
index 3b79bd3..1d1455c 100644 (file)
@@ -12,7 +12,7 @@ if ( !window.performance ) {
 if ( !performance.mark ) {
        performance.mark = function () {};
 }
-performance.mark( 'mediaWikiStartUp' );
+performance.mark( 'mwLoadStart' );
 
 /**
  * Returns false for Grade C supported browsers.
@@ -68,39 +68,49 @@ function isCompatible( ua ) {
        );
 }
 
-/**
- * The $CODE and $VARS placeholders are substituted in ResourceLoaderStartUpModule.php.
- */
-function startUp() {
-       mw.config = new mw.Map( $VARS.wgLegacyJavaScriptGlobals );
+// Conditional script injection
+( function () {
+       if ( !isCompatible() ) {
+               // Undo class swapping in case of an unsupported browser.
+               // See OutputPage::getHeadScripts().
+               document.documentElement.className = document.documentElement.className
+                       .replace( /(^|\s)client-js(\s|$)/, '$1client-nojs$2' );
+               return;
+       }
+
+       /**
+        * The $CODE and $VARS placeholders are substituted in ResourceLoaderStartUpModule.php.
+        */
+       function startUp() {
+               mw.config = new mw.Map( $VARS.wgLegacyJavaScriptGlobals );
 
-       $CODE.registrations();
+               $CODE.registrations();
 
-       mw.config.set( $VARS.configuration );
+               mw.config.set( $VARS.configuration );
 
-       // Must be after mw.config.set because these callbacks may use mw.loader which
-       // needs to have values 'skin', 'debug' etc. from mw.config.
-       window.RLQ = window.RLQ || [];
-       while ( RLQ.length ) {
-               RLQ.shift()();
+               // Must be after mw.config.set because these callbacks may use mw.loader which
+               // needs to have values 'skin', 'debug' etc. from mw.config.
+               window.RLQ = window.RLQ || [];
+               while ( RLQ.length ) {
+                       RLQ.shift()();
+               }
+               window.RLQ = {
+                       push: function ( fn ) {
+                               fn();
+                       }
+               };
        }
-       window.RLQ = {
-               push: function ( fn ) {
-                       fn();
+
+       var script = document.createElement( 'script' );
+       script.src = $VARS.baseModulesUri;
+       script.onload = script.onreadystatechange = function () {
+               if ( !script.readyState || /loaded|complete/.test( script.readyState ) ) {
+                       // Clean up
+                       script.onload = script.onreadystatechange = null;
+                       script = null;
+                       // Callback
+                       startUp();
                }
        };
-}
-
-// Conditional script injection
-if ( isCompatible() ) {
-       ( function () {
-               var script = document.createElement( 'script' );
-               script.src = $VARS.baseModulesUri;
-               document.getElementsByTagName( 'head' )[0].appendChild( script );
-       }() );
-} else {
-       // Undo class swapping in case of an unsupported browser.
-       // See OutputPage::getHeadScripts().
-       document.documentElement.className = document.documentElement.className
-               .replace( /(^|\s)client-js(\s|$)/, '$1client-nojs$2' );
-}
+       document.getElementsByTagName( 'head' )[0].appendChild( script );
+}() );
index f70a1b0..aa8c9c8 100644 (file)
@@ -2057,13 +2057,28 @@ Tabs don't trigger preformatted text
         preformatted text.
  This is preformatted text.
        So is this.
-!! html
+!! html/php
 <p>    This is not
         preformatted text.
 </p>
 <pre>This is preformatted text.
        So is this.
 </pre>
+!! html/parsoid
+<p>    This is not
+        preformatted text.</p>
+<pre>This is preformatted text.
+       So is this.</pre>
+!! end
+
+!! test
+Space before tab needs nowiki pre protection
+!! options
+parsoid=html2wt
+!! html/parsoid
+<p>    a</p>
+!! wikitext
+<nowiki> </nowiki>     a
 !! end
 
 !! test
@@ -5234,38 +5249,6 @@ External link containing a single quote. (bug 63947)
 <p><a rel="mw:ExtLink" href="//foo.org/bar'baz">bang</a></p>
 !! end
 
-
-!! test
-External link containing a period in the anchor. (bug 63947)
-!! wikitext
-[//foo.org/bar#baz. bang]
-
-[//foo.org/bar. bang]
-!! html/php
-<p><a rel="nofollow" class="external text" href="//foo.org/bar#baz.">bang</a>
-</p><p><a rel="nofollow" class="external text" href="//foo.org/bar.">bang</a>
-</p>
-!! html/parsoid
-<p><a rel="mw:ExtLink" href="//foo.org/bar#baz.">bang</a></p>
-<p><a rel="mw:ExtLink" href="//foo.org/bar.">bang</a></p>
-!! end
-
-!! test
-External link containing a single quote. (bug 63947)
-!! wikitext
-[//foo.org/bar'baz]
-
-[//foo.org/bar'baz bang]
-!! html/php
-<p><a rel="nofollow" class="external autonumber" href="//foo.org/bar'baz">[1]</a>
-</p><p><a rel="nofollow" class="external text" href="//foo.org/bar'baz">bang</a>
-</p>
-!! html/parsoid
-<p><a rel="mw:ExtLink" href="//foo.org/bar'baz"></a></p>
-<p><a rel="mw:ExtLink" href="//foo.org/bar'baz">bang</a></p>
-!! end
-
-
 !! test
 External link containing double-single-quotes in text '' (bug 4598 sanity check)
 !! wikitext
@@ -5301,9 +5284,22 @@ External link containing double-single-quotes with no space separating the url f
 External link with comments in link text
 !! wikitext
 [http://www.google.com Google <!-- comment -->]
-!! html
+!! html/php
 <p><a rel="nofollow" class="external text" href="http://www.google.com">Google </a>
 </p>
+!! html/parsoid
+<p><a rel="mw:ExtLink" href="http://www.google.com">Google <!-- comment --></a></p>
+!! end
+
+!! test
+External link to bare IPv4 address
+!! wikitext
+[http://192.168.0.1 Link]
+!! html/php
+<p><a rel="nofollow" class="external text" href="http://192.168.0.1">Link</a>
+</p>
+!! html/parsoid
+<p><a rel="mw:ExtLink" href="http://192.168.0.1">Link</a></p>
 !! end
 
 !! test
@@ -5345,7 +5341,7 @@ IPv6 urls, autolink format (T23261)
 !! wikitext
 http://[2404:130:0:1000::187:2]/index.php
 
-Examples from RFC2373, section 2.2:
+Examples from RFC 2373, section 2.2:
 * http://[1080::8:800:200C:417A]/unicast
 * http://[FF01::101]/multicast
 * http://[::1]/loopback
@@ -5362,9 +5358,9 @@ Examples from RFC 2732, section 2:
 * http://[::FFFF:129.144.52.38]:80/index.html
 * http://[2010:836B:4179::836B:4179]
 
-!! html
+!! html/php
 <p><a rel="nofollow" class="external free" href="http://[2404:130:0:1000::187:2]/index.php">http://[2404:130:0:1000::187:2]/index.php</a>
-</p><p>Examples from RFC2373, section 2.2:
+</p><p>Examples from <a class="external mw-magiclink-rfc" rel="nofollow" href="//tools.ietf.org/html/rfc2373">RFC 2373</a>, section 2.2:
 </p>
 <ul><li> <a rel="nofollow" class="external free" href="http://[1080::8:800:200C:417A]/unicast">http://[1080::8:800:200C:417A]/unicast</a></li>
 <li> <a rel="nofollow" class="external free" href="http://[FF01::101]/multicast">http://[FF01::101]/multicast</a></li>
@@ -5382,6 +5378,25 @@ Examples from RFC 2732, section 2:
 <li> <a rel="nofollow" class="external free" href="http://[::FFFF:129.144.52.38]:80/index.html">http://[::FFFF:129.144.52.38]:80/index.html</a></li>
 <li> <a rel="nofollow" class="external free" href="http://[2010:836B:4179::836B:4179]">http://[2010:836B:4179::836B:4179]</a></li></ul>
 
+!! html/parsoid
+<p><a rel="mw:ExtLink" href="http://[2404:130:0:1000::187:2]/index.php">http://[2404:130:0:1000::187:2]/index.php</a></p>
+
+<p>Examples from <a href="//tools.ietf.org/html/rfc2373" rel="mw:ExtLink">RFC 2373</a>, section 2.2:</p>
+<ul><li> <a rel="mw:ExtLink" href="http://[1080::8:800:200C:417A]/unicast">http://[1080::8:800:200C:417A]/unicast</a></li>
+<li> <a rel="mw:ExtLink" href="http://[FF01::101]/multicast">http://[FF01::101]/multicast</a></li>
+<li> <a rel="mw:ExtLink" href="http://[::1]/loopback">http://[::1]/loopback</a></li>
+<li> <a rel="mw:ExtLink" href="http://[::]/unspecified">http://[::]/unspecified</a></li>
+<li> <a rel="mw:ExtLink" href="http://[::13.1.68.3]/ipv4compat">http://[::13.1.68.3]/ipv4compat</a></li>
+<li> <a rel="mw:ExtLink" href="http://[::FFFF:129.144.52.38]/ipv4compat">http://[::FFFF:129.144.52.38]/ipv4compat</a></li></ul>
+
+<p>Examples from <a href="//tools.ietf.org/html/rfc2732" rel="mw:ExtLink">RFC 2732</a>, section 2:</p>
+<ul><li> <a rel="mw:ExtLink" href="http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html">http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html</a></li>
+<li> <a rel="mw:ExtLink" href="http://[1080:0:0:0:8:800:200C:417A]/index.html">http://[1080:0:0:0:8:800:200C:417A]/index.html</a></li>
+<li> <a rel="mw:ExtLink" href="http://[3ffe:2a00:100:7031::1]">http://[3ffe:2a00:100:7031::1]</a></li>
+<li> <a rel="mw:ExtLink" href="http://[1080::8:800:200C:417A]/foo">http://[1080::8:800:200C:417A]/foo</a></li>
+<li> <a rel="mw:ExtLink" href="http://[::192.9.5.5]/ipng">http://[::192.9.5.5]/ipng</a></li>
+<li> <a rel="mw:ExtLink" href="http://[::FFFF:129.144.52.38]:80/index.html">http://[::FFFF:129.144.52.38]:80/index.html</a></li>
+<li> <a rel="mw:ExtLink" href="http://[2010:836B:4179::836B:4179]">http://[2010:836B:4179::836B:4179]</a></li></ul>
 !! end
 
 !! test
@@ -5389,7 +5404,7 @@ IPv6 urls, bracketed format (T23261)
 !! wikitext
 [http://[2404:130:0:1000::187:2]/index.php test]
 
-Examples from RFC2373, section 2.2:
+Examples from RFC 2373, section 2.2:
 * [http://[1080::8:800:200C:417A] unicast]
 * [http://[FF01::101] multicast]
 * [http://[::1]/ loopback]
@@ -5406,9 +5421,9 @@ Examples from RFC 2732, section 2:
 * [http://[::FFFF:129.144.52.38]:80/index.html 6]
 * [http://[2010:836B:4179::836B:4179] 7]
 
-!! html
+!! html/php
 <p><a rel="nofollow" class="external text" href="http://[2404:130:0:1000::187:2]/index.php">test</a>
-</p><p>Examples from RFC2373, section 2.2:
+</p><p>Examples from <a class="external mw-magiclink-rfc" rel="nofollow" href="//tools.ietf.org/html/rfc2373">RFC 2373</a>, section 2.2:
 </p>
 <ul><li> <a rel="nofollow" class="external text" href="http://[1080::8:800:200C:417A]">unicast</a></li>
 <li> <a rel="nofollow" class="external text" href="http://[FF01::101]">multicast</a></li>
@@ -5426,6 +5441,25 @@ Examples from RFC 2732, section 2:
 <li> <a rel="nofollow" class="external text" href="http://[::FFFF:129.144.52.38]:80/index.html">6</a></li>
 <li> <a rel="nofollow" class="external text" href="http://[2010:836B:4179::836B:4179]">7</a></li></ul>
 
+!! html/parsoid
+<p><a rel="mw:ExtLink" href="http://[2404:130:0:1000::187:2]/index.php">test</a></p>
+
+<p>Examples from <a href="//tools.ietf.org/html/rfc2373" rel="mw:ExtLink">RFC 2373</a>, section 2.2:</p>
+<ul><li> <a rel="mw:ExtLink" href="http://[1080::8:800:200C:417A]">unicast</a></li>
+<li> <a rel="mw:ExtLink" href="http://[FF01::101]">multicast</a></li>
+<li> <a rel="mw:ExtLink" href="http://[::1]/">loopback</a></li>
+<li> <a rel="mw:ExtLink" href="http://[::]">unspecified</a></li>
+<li> <a rel="mw:ExtLink" href="http://[::13.1.68.3]">ipv4compat</a></li>
+<li> <a rel="mw:ExtLink" href="http://[::FFFF:129.144.52.38]">ipv4compat</a></li></ul>
+
+<p>Examples from <a href="//tools.ietf.org/html/rfc2732" rel="mw:ExtLink">RFC 2732</a>, section 2:</p>
+<ul><li> <a rel="mw:ExtLink" href="http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html">1</a></li>
+<li> <a rel="mw:ExtLink" href="http://[1080:0:0:0:8:800:200C:417A]/index.html">2</a></li>
+<li> <a rel="mw:ExtLink" href="http://[3ffe:2a00:100:7031::1]">3</a></li>
+<li> <a rel="mw:ExtLink" href="http://[1080::8:800:200C:417A]/foo">4</a></li>
+<li> <a rel="mw:ExtLink" href="http://[::192.9.5.5]/ipng">5</a></li>
+<li> <a rel="mw:ExtLink" href="http://[::FFFF:129.144.52.38]:80/index.html">6</a></li>
+<li> <a rel="mw:ExtLink" href="http://[2010:836B:4179::836B:4179]">7</a></li></ul>
 !! end
 
 !! test
@@ -5443,7 +5477,8 @@ Non-extlinks in brackets
 [{{echo|foo}}l's errand]
 [url={{echo|foo}}]
 [url=http://example.com]
-!! html
+[http:// bare protocols don't count]
+!! html/php
 <p>[foo]
 [foo bar]
 [foo <i>bar</i>]
@@ -5456,7 +5491,22 @@ Non-extlinks in brackets
 [fool's errand]
 [url=foo]
 [url=<a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>]
+[http:// bare protocols don't count]
 </p>
+!! html/parsoid
+<p>[foo]
+[foo bar]
+[foo <i>bar</i>]
+[fool's] errand
+[fool's errand]
+[<span typeof="mw:Placeholder" data-parsoid='{"src":"{{echo|foo}}"}'>foo</span>]
+[<span typeof="mw:Placeholder" data-parsoid='{"src":"{{echo|foo}}"}'>foo</span> bar]
+[<span typeof="mw:Placeholder" data-parsoid='{"src":"{{echo|foo}}"}'>foo</span> <i>bar</i>]
+[<span typeof="mw:Placeholder" data-parsoid='{"src":"{{echo|foo}}l&#39;s"}'>fool's</span>] errand
+[<span typeof="mw:Placeholder" data-parsoid='{"src":"{{echo|foo}}l&#39;s"}'>fool's</span> errand]
+[<span typeof="mw:Placeholder" data-parsoid='{"src":"url={{echo|foo}}"}'>url=foo</span>]
+[url=<a rel="mw:ExtLink" href="http://example.com">http://example.com</a>]
+[http:// bare protocols don't count]</p>
 !! end
 
 !! test
@@ -6859,9 +6909,6 @@ parsoid=wt2html,wt2wt
 </tbody></table>
 !! end
 
-
-# PHP throws away the (semi-broken) "foo" class here; Parsoid
-# preserves it.
 !!test
 Parsoid: Recover better from broken table attributes
 !!options
@@ -6872,7 +6919,7 @@ parsoid=wt2html
 foo
 |}
 !!html/php+tidy
-<table>
+<table class="foo">
 <tr>
 <td class="bar">
 <p>foo</p>
@@ -9877,27 +9924,33 @@ __proto__
 Magic links: internal link to RFC (bug 479)
 !! wikitext
 [[RFC 123]]
-!! html
+!! html/php
 <p><a href="/index.php?title=RFC_123&amp;action=edit&amp;redlink=1" class="new" title="RFC 123 (page does not exist)">RFC 123</a>
 </p>
+!! html/parsoid
+<p><a rel="mw:WikiLink" href="./RFC_123" title="RFC 123">RFC 123</a></p>
 !! end
 
 !! test
 Magic links: RFC (bug 479)
 !! wikitext
 RFC 822
-!! html
+!! html/php
 <p><a class="external mw-magiclink-rfc" rel="nofollow" href="//tools.ietf.org/html/rfc822">RFC 822</a>
 </p>
+!! html/parsoid
+<p><a href="//tools.ietf.org/html/rfc822" rel="mw:ExtLink">RFC 822</a></p>
 !! end
 
 !! test
 Magic links: RFC (bug 65278)
 !! wikitext
 This is RFC 822 but thisRFC 822 is not RFC 822linked.
-!! html
+!! html/php
 <p>This is <a class="external mw-magiclink-rfc" rel="nofollow" href="//tools.ietf.org/html/rfc822">RFC 822</a> but thisRFC 822 is not RFC 822linked.
 </p>
+!! html/parsoid
+<p>This is <a href="//tools.ietf.org/html/rfc822" rel="mw:ExtLink">RFC 822</a> but thisRFC 822 is not RFC 822linked.</p>
 !! end
 
 !! test
@@ -9906,20 +9959,26 @@ Magic links: RFC (w/ non-newline whitespace, bug 28950/29025)
 RFC &nbsp;&#160;&#0160;&#xA0;&#Xa0; 822
 RFC
 822
-!! html
+!! html/php
 <p><a class="external mw-magiclink-rfc" rel="nofollow" href="//tools.ietf.org/html/rfc822">RFC 822</a>
 RFC
 822
 </p>
+!! html/parsoid
+<p><a href="//tools.ietf.org/html/rfc822" rel="mw:ExtLink">RFC <span typeof="mw:Entity" data-parsoid='{"src":"&amp;nbsp;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#160;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#0160;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#xA0;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#Xa0;","srcContent":" "}'> </span> 822</a>
+RFC
+822</p>
 !! end
 
 !! test
 Magic links: ISBN (bug 1937)
 !! wikitext
 ISBN 0-306-40615-2
-!! html
+!! html/php
 <p><a href="/wiki/Special:BookSources/0306406152" class="internal mw-magiclink-isbn">ISBN 0-306-40615-2</a>
 </p>
+!! html/parsoid
+<p><a href="./Special:BookSources/0306406152" rel="mw:WikiLink">ISBN 0-306-40615-2</a></p>
 !! end
 
 !! test
@@ -9930,7 +9989,7 @@ This is ISBN 978-0-316-09811-3 but thisISBN 978-0-316-09811-3 is not ISBN 978-0-
 <p>This is <a href="/wiki/Special:BookSources/9780316098113" class="internal mw-magiclink-isbn">ISBN 978-0-316-09811-3</a> but thisISBN 978-0-316-09811-3 is not ISBN 978-0-316-09811-3linked.
 </p>
 !! html/parsoid
-<p>This is <a href="./Special:BookSources/9780316098113" rel="mw:ExtLink">ISBN 978-0-316-09811-3</a> but thisISBN 978-0-316-09811-3 is not ISBN 978-0-316-09811-3linked.</p>
+<p>This is <a href="./Special:BookSources/9780316098113" rel="mw:WikiLink">ISBN 978-0-316-09811-3</a> but thisISBN 978-0-316-09811-3 is not ISBN 978-0-316-09811-3linked.</p>
 !! end
 
 !! test
@@ -9941,31 +10000,41 @@ ISBN
 9780316098113
 ISBN 978
 0316098113
-!! html
+!! html/php
 <p><a href="/wiki/Special:BookSources/9780316098113" class="internal mw-magiclink-isbn">ISBN 978 0 316 09811 3</a>
 ISBN
 9780316098113
 ISBN 978
 0316098113
 </p>
+!! html/parsoid
+<p><a href="./Special:BookSources/9780316098113" rel="mw:WikiLink">ISBN <span typeof="mw:Entity" data-parsoid='{"src":"&amp;nbsp;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#160;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#0160;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#xA0;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#Xa0;","srcContent":" "}'> </span> 978<span typeof="mw:Entity" data-parsoid='{"src":"&amp;nbsp;","srcContent":" "}'> </span>0<span typeof="mw:Entity" data-parsoid='{"src":"&amp;#160;","srcContent":" "}'> </span>316<span typeof="mw:Entity" data-parsoid='{"src":"&amp;#0160;","srcContent":" "}'> </span>09811<span typeof="mw:Entity" data-parsoid='{"src":"&amp;#xA0;","srcContent":" "}'> </span>3</a>
+ISBN
+9780316098113
+ISBN 978
+0316098113</p>
 !! end
 
 !! test
 Magic links: PMID incorrectly converts space to underscore
 !! wikitext
 PMID 1234
-!! html
+!! html/php
 <p><a class="external mw-magiclink-pmid" rel="nofollow" href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract">PMID 1234</a>
 </p>
+!! html/parsoid
+<p><a href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract" rel="mw:ExtLink">PMID 1234</a></p>
 !! end
 
 !! test
 Magic links: PMID (bug 65278)
 !! wikitext
 This is PMID 1234 but thisPMID 1234 is not PMID 1234linked.
-!! html
+!! html/php
 <p>This is <a class="external mw-magiclink-pmid" rel="nofollow" href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract">PMID 1234</a> but thisPMID 1234 is not PMID 1234linked.
 </p>
+!! html/parsoid
+<p>This is <a href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract" rel="mw:ExtLink">PMID 1234</a> but thisPMID 1234 is not PMID 1234linked.</p>
 !! end
 
 !! test
@@ -9974,11 +10043,15 @@ Magic links: PMID (w/ non-newline whitespace, bug 28950/29025)
 PMID &nbsp;&#160;&#0160;&#xA0;&#Xa0; 1234
 PMID
 1234
-!! html
+!! html/php
 <p><a class="external mw-magiclink-pmid" rel="nofollow" href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract">PMID 1234</a>
 PMID
 1234
 </p>
+!! html/parsoid
+<p><a href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract" rel="mw:ExtLink">PMID <span typeof="mw:Entity" data-parsoid='{"src":"&amp;nbsp;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#160;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#0160;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#xA0;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#Xa0;","srcContent":" "}'> </span> 1234</a>
+PMID
+1234</p>
 !! end
 
 ###
@@ -13267,7 +13340,7 @@ BUG 1887: A ISBN with a thumbnail
 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><a href="/wiki/Special:BookSources/1235467890" class="internal mw-magiclink-isbn">ISBN 1235467890</a></div></div></div>
 
 !! html/parsoid
-<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a href="./Special:BookSources/1235467890" rel="mw:ExtLink">ISBN 1235467890</a></figcaption></figure>
+<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a href="./Special:BookSources/1235467890" rel="mw:WikiLink">ISBN 1235467890</a></figcaption></figure>
 !! end
 
 !! test
@@ -18237,7 +18310,7 @@ ISBN  978-0-1234-56&#x20;789
 !! html+tidy
 <p><a href="/wiki/Special:BookSources/9780123456" class="internal mw-magiclink-isbn">ISBN 978-0-1234-56</a> 789</p>
 !! html/parsoid
-<p><a href="./Special:BookSources/9780123456" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>ISBN 978-0-1234-56</a><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#x20;","srcContent":" "}'> </span>789</p>
+<p><a href="./Special:BookSources/9780123456" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 978-0-1234-56</a><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#x20;","srcContent":" "}'> </span>789</p>
 !! end
 
 !! test
@@ -18257,7 +18330,7 @@ ISBN ISBN 1234567890
 <p>ISBN <a href="/wiki/Special:BookSources/1234567890" class="internal mw-magiclink-isbn">ISBN 1234567890</a>
 </p>
 !! html/parsoid
-<p>ISBN <a href="./Special:BookSources/1234567890" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>ISBN 1234567890</a></p>
+<p>ISBN <a href="./Special:BookSources/1234567890" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 1234567890</a></p>
 !! end
 
 # Uppercase X and lowercase x as well
@@ -18279,12 +18352,12 @@ ISBN 978080442957x
 <a href="/wiki/Special:BookSources/978080442957X" class="internal mw-magiclink-isbn">ISBN 978080442957x</a>
 </p>
 !! html/parsoid
-<p><a href="./Special:BookSources/346204561X" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>ISBN 3-462-04561-X</a>
-<a href="./Special:BookSources/346204561X" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>ISBN 3-462-04561-x</a>
-<a href="./Special:BookSources/080442957X" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>ISBN 080442957X</a>
-<a href="./Special:BookSources/080442957X" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>ISBN 080442957x</a>
-<a href="./Special:BookSources/978080442957X" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>ISBN 978080442957X</a>
-<a href="./Special:BookSources/978080442957X" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>ISBN 978080442957x</a></p>
+<p><a href="./Special:BookSources/346204561X" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 3-462-04561-X</a>
+<a href="./Special:BookSources/346204561X" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 3-462-04561-x</a>
+<a href="./Special:BookSources/080442957X" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 080442957X</a>
+<a href="./Special:BookSources/080442957X" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 080442957x</a>
+<a href="./Special:BookSources/978080442957X" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 978080442957X</a>
+<a href="./Special:BookSources/978080442957X" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 978080442957x</a></p>
 !! end
 
 !! test
@@ -18295,7 +18368,7 @@ ISBN 1234567890
 <p><a href="/wiki/Special:BookSources/1234567890" class="internal mw-magiclink-isbn">ISBN 1234567890</a>
 </p>
 !! html/parsoid
-<p><a href="./Special:BookSources/1234567890" rel="mw:ExtLink">ISBN 1234567890</a></p>
+<p><a href="./Special:BookSources/1234567890" rel="mw:WikiLink">ISBN 1234567890</a></p>
 !! end
 
 !! test
@@ -18306,7 +18379,7 @@ Bug 22905: <abbr> followed by ISBN followed by </a>
 <p><abbr>(fr)</abbr> <a href="/wiki/Special:BookSources/2753300917" class="internal mw-magiclink-isbn">ISBN 2753300917</a> <a rel="nofollow" class="external text" href="http://www.example.com">example.com</a>
 </p>
 !! html/parsoid
-<p><abbr data-parsoid='{"stx":"html"}'>(fr)</abbr> <a href="./Special:BookSources/2753300917" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>ISBN 2753300917</a> <a rel="mw:ExtLink" href="http://www.example.com">example.com</a></p>
+<p><abbr data-parsoid='{"stx":"html"}'>(fr)</abbr> <a href="./Special:BookSources/2753300917" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 2753300917</a> <a rel="mw:ExtLink" href="http://www.example.com">example.com</a></p>
 !! end
 
 !! test
@@ -20616,7 +20689,7 @@ __TOC__
 </div>
 
 <h2><span class="mw-headline" id="Hello"><sup class="in-h2">Hello</sup></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: Hello">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
-<h2><span class="mw-headline" id="b.22.3EEvilbye"><sup> b"&gt;Evilbye</sup></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: b&quot;&gt;Evilbye">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
+<h2><span class="mw-headline" id="b.22.3EEvilbye"><sup class="a"> b"&gt;Evilbye</sup></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: b&quot;&gt;Evilbye">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
 
 !! end
 
@@ -22930,9 +23003,9 @@ PMID 123&foo
 !! test
 Links 12. Add <nowiki/>s between text-nodes and ISBN-links when required (bug 64300)
 !! html/parsoid
-<p><a href="./Special:BookSources/1234567890" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>ISBN 1234567890</a>1
-<a href="./Special:BookSources/1234567890" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>ISBN 1234567890</a>x
-a<a href="./Special:BookSources/1234567890" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>ISBN 1234567890</a>b
+<p><a href="./Special:BookSources/1234567890" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 1234567890</a>1
+<a href="./Special:BookSources/1234567890" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 1234567890</a>x
+a<a href="./Special:BookSources/1234567890" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 1234567890</a>b
 </p>
 !! wikitext
 ISBN 1234567890<nowiki/>1
@@ -22943,7 +23016,7 @@ a<nowiki/>ISBN 1234567890<nowiki/>b
 !! test
 Links 13. Don't add spurious <nowiki/>s between text-nodes and ISBN-links (bug 64300)
 !! html/parsoid
-<p>-<a href="./Special:BookSources/1234567890" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>ISBN 1234567890</a>'s
+<p>-<a href="./Special:BookSources/1234567890" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 1234567890</a>'s
 !! wikitext
 -ISBN 1234567890's
 !! html/php
@@ -23126,38 +23199,58 @@ bar <span><nowiki>[[foo]]</nowiki></span>
 !! test
 1. Leading whitespace in SOL context should be escaped
 !! options
-parsoid
+parsoid=html2wt,wt2wt
+!! html/php
+<p> a
+</p><p>  a
+</p><p>        a(tab)
+</p><p>        a
+  a
+</p><p>a
+ b
+</p><p>a
+       b
+</p><p>a
+        b
+</p>
+!! html/parsoid
+<p> a</p>
+
+<p>  a</p>
+
+<p>    a(tab)</p>
+
+<p>    a
+<!--cmt-->
+  a</p>
+
+<p>a
+ b</p>
+
+<p>a
+       b</p>
+
+<p>a
+        b</p>
 !! wikitext
 <nowiki> </nowiki>a
 
 <nowiki> </nowiki> a
 
-<nowiki>       </nowiki>a(tab)
+       a(tab)
 
 <nowiki> </nowiki>     a
 <!--cmt-->
-<nowiki> </nowiki> a
+<nowiki>  </nowiki>a
 
 a
 <nowiki> </nowiki>b
 
 a
-<nowiki>       </nowiki>b
+       b
 
 a
-<nowiki>       </nowiki> b
-!! html
-<p> a</p>
-<p>  a</p>
-<p>    a(tab)</p>
-<p>    a</p>
-<p><!--cmt-->  a</p>
-<p>a
- b</p>
-<p>a
-       b</p>
-<p>a
-        b</p>
+        b
 !! end
 
 !! test
@@ -23407,20 +23500,9 @@ HTML tag with broken attribute value quoting
 !! wikitext
 <span title="Hello world>Foo</span>
 !! html/php
-<p><span>Foo</span>
-</p>
-!! html/parsoid
 <p><span title="Hello world">Foo</span>
 </p>
-!! end
-
-!! test
-Parsoid-only: HTML tag with broken attribute value quoting
-!! options
-parsoid
-!! wikitext
-<span title="Hello world>Foo</span>
-!! html
+!! html/parsoid
 <p><span title="Hello world">Foo</span>
 </p>
 !! end
@@ -23434,7 +23516,7 @@ Table with broken attribute value quoting
 !! html/php
 <table>
 <tr>
-<td>Foo
+<td title="Hello world">Foo
 </td></tr></table>
 
 !! html/parsoid
@@ -23455,9 +23537,9 @@ Table with broken attribute value quoting on consecutive lines
 !! html/php
 <table>
 <tr>
-<td>Foo
+<td title="Hello world">Foo
 </td>
-<td>Bar
+<td style="color:red">Bar
 </td></tr></table>
 
 !! html/parsoid
@@ -23470,7 +23552,7 @@ Table with broken attribute value quoting on consecutive lines
 !! end
 
 !! test
-Parsoid-only: Don't wrap broken template tags in <nowiki> on wt2wt (Bug 42353)
+2. Parsoid-only: Don't wrap broken template tags in <nowiki> on wt2wt (Bug 42353)
 !! options
 parsoid
 !! wikitext
@@ -23480,7 +23562,7 @@ parsoid
 !! end
 
 !! test
-Parsoid-only: Don't wrap broken template tags in <nowiki> on wt2wt (Bug 42353)
+1. Parsoid-only: Don't wrap broken template tags in <nowiki> on wt2wt (Bug 42353)
 !! options
 parsoid
 !! wikitext
@@ -24529,7 +24611,7 @@ parsoid={
 
 ==  [[Category:A2]] hi pal ==
 
-== <!--foo-->   [[Category:A3]]    how goes it ==
+==  <!--foo-->  [[Category:A3]]    how goes it ==
 
 == it goes well    [[Category:A4]]  <!--bar-->  ==
 
@@ -24981,7 +25063,7 @@ Edited ISBN links not serializable as ISBN links should serialize as wikilinks
 !! options
 parsoid=html2wt
 !! html/parsoid
-<a rel="mw:ExtLink" href="./Special:BookSources/1234567890">ISBN 1234567895</a>
+<a href="./Special:BookSources/1234567890" rel="mw:ExtLink">ISBN 1234567895</a>
 !! wikitext
 [[Special:BookSources/1234567890|ISBN 1234567895]]
 !! end
@@ -25091,6 +25173,92 @@ parsoid=html2wt
 http://example.com<nowiki> http://example.com is not a link.</nowiki>
 !! end
 
+!! test
+Magic links inside links (not autolinked)
+!! wikitext
+[[Foo|http://example.com]]
+[[Foo|RFC 1234]]
+[[Foo|PMID 1234]]
+[[Foo|ISBN 123456789x]]
+
+[http://foo.com http://example.com]
+[http://foo.com RFC 1234]
+[http://foo.com PMID 1234]
+[http://foo.com ISBN 123456789x]
+!! html+tidy
+<p><a href="/wiki/Foo" title="Foo">http://example.com</a> <a href="/wiki/Foo" title="Foo">RFC 1234</a> <a href="/wiki/Foo" title="Foo">PMID 1234</a> <a href="/wiki/Foo" title="Foo">ISBN 123456789x</a></p>
+<p><a rel="nofollow" class="external text" href="http://foo.com">http://example.com</a> <a rel="nofollow" class="external text" href="http://foo.com">RFC 1234</a> <a rel="nofollow" class="external text" href="http://foo.com">PMID 1234</a> <a rel="nofollow" class="external text" href="http://foo.com">ISBN 123456789x</a></p>
+!! html/parsoid
+<p><a rel="mw:WikiLink" href="./Foo" title="Foo">http://example.com</a>
+<a rel="mw:WikiLink" href="./Foo" title="Foo">RFC 1234</a>
+<a rel="mw:WikiLink" href="./Foo" title="Foo">PMID 1234</a>
+<a rel="mw:WikiLink" href="./Foo" title="Foo">ISBN 123456789x</a></p>
+
+<p><a rel="mw:ExtLink" href="http://foo.com">http://example.com</a>
+<a rel="mw:ExtLink" href="http://foo.com">RFC 1234</a>
+<a rel="mw:ExtLink" href="http://foo.com">PMID 1234</a>
+<a rel="mw:ExtLink" href="http://foo.com">ISBN 123456789x</a></p>
+!! end
+
+!! test
+Magic links inside image captions (autolinked)
+!! wikitext
+[[File:Foobar.jpg|thumb|http://example.com]]
+[[File:Foobar.jpg|thumb|RFC 1234]]
+[[File:Foobar.jpg|thumb|PMID 1234]]
+[[File:Foobar.jpg|thumb|ISBN 123456789x]]
+!! html+tidy
+<div class="thumb tright">
+<div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>
+<div class="thumbcaption">
+<div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>
+<a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></div>
+</div>
+</div>
+<div class="thumb tright">
+<div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>
+<div class="thumbcaption">
+<div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>
+<a class="external mw-magiclink-rfc" rel="nofollow" href="//tools.ietf.org/html/rfc1234">RFC 1234</a></div>
+</div>
+</div>
+<div class="thumb tright">
+<div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>
+<div class="thumbcaption">
+<div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>
+<a class="external mw-magiclink-pmid" rel="nofollow" href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract">PMID 1234</a></div>
+</div>
+</div>
+<div class="thumb tright">
+<div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>
+<div class="thumbcaption">
+<div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>
+<a href="/wiki/Special:BookSources/123456789X" class="internal mw-magiclink-isbn">ISBN 123456789x</a></div>
+</div>
+</div>
+!! html/parsoid
+<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a rel="mw:ExtLink" href="http://example.com">http://example.com</a></figcaption></figure>
+<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a href="//tools.ietf.org/html/rfc1234" rel="mw:ExtLink">RFC 1234</a></figcaption></figure>
+<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract" rel="mw:ExtLink">PMID 1234</a></figcaption></figure>
+<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a href="./Special:BookSources/123456789X" rel="mw:WikiLink">ISBN 123456789x</a></figcaption></figure>
+!! end
+
+!! test
+WTS of magic word text (T109371)
+!! options
+parsoid=html2wt
+!! html/parsoid
+<p>RFC 1234</p>
+<p><a href="http://foo.com" rel="mw:ExtLink">RFC 1234</a></p>
+<p><a href="./Foo" rel="mw:WikiLink">RFC 1234</a></p>
+!! wikitext
+<nowiki>RFC 1234</nowiki>
+
+[http://foo.com RFC 1234]
+
+[[Foo|RFC 1234]]
+!! end
+
 !! test
 Edited Redirect link should emit a non-piped wikitext link
 !! options
@@ -25796,6 +25964,16 @@ parsoid={
 </table>
 !! end
 
+!! test
+Escape nowiki DOM elements
+!! options
+parsoid=html2wt
+!! html/parsoid
+<nowiki><i>foo</i></nowiki>
+!! wikitext
+&lt;nowiki&gt;''foo''&lt;/nowiki&gt;
+!! end
+
 # ---------------------------------------------------
 # End of tests spec'ing wikitext serialization norms |
 # ---------------------------------------------------
index a33b86a..e1537bf 100644 (file)
@@ -73,7 +73,6 @@ help:
        #
        # Targets:
        #   phpunit (default)   Run all the tests with phpunit
-       #   install             Install PHPUnit from phpunit.de
        #   tap                 Run the tests individually through Test::Harness's prove(1)
        #   help                You're looking at it!
        #   coverage            Run the tests and generates an HTML code coverage report
index 2fbe9b7..4064729 100644 (file)
@@ -1,5 +1,4 @@
 .test-mixin (@value) {
        color: @value;
        border: @foo solid @Foo;
-       line-height: test-sum(@bar, 10, 20);
 }
index b78780a..e8099d1 100644 (file)
@@ -2,5 +2,4 @@
 .unit-tests {
   color: green;
   border: 2px solid #eeeeee;
-  line-height: 35;
 }
diff --git a/tests/phpunit/includes/GlobalFunctions/wfArrayPlus2dTest.php b/tests/phpunit/includes/GlobalFunctions/wfArrayPlus2dTest.php
new file mode 100644 (file)
index 0000000..88875bb
--- /dev/null
@@ -0,0 +1,94 @@
+<?php
+/**
+ * @group GlobalFunctions
+ * @covers ::wfArrayPlus2d
+ */
+class WfArrayPlus2dTest extends MediaWikiTestCase {
+       /**
+        * @dataProvider provideArrays
+        */
+       public function testWfArrayPlus2d( $baseArray, $newValues, $expected, $testName ) {
+               $this->assertEquals(
+                       $expected,
+                       wfArrayPlus2d( $baseArray, $newValues ),
+                       $testName
+               );
+       }
+
+       /**
+        * Provider for testing wfArrayPlus2d
+        *
+        * @return array
+        */
+       public static function provideArrays() {
+               return array(
+                       // target array, new values array, expected result
+                       array(
+                               array( 0 => '1dArray' ),
+                               array( 1 => '1dArray' ),
+                               array( 0 => '1dArray', 1 => '1dArray' ),
+                               "Test simple union of two arrays with different keys",
+                       ),
+                       array(
+                               array(
+                                       0 => array( 0 => '2dArray' ),
+                               ),
+                               array(
+                                       0 => array( 1 => '2dArray' ),
+                               ),
+                               array(
+                                       0 => array( 0 => '2dArray', 1 => '2dArray' ),
+                               ),
+                               "Test union of 2d arrays with different keys in the value array",
+                       ),
+                       array(
+                               array(
+                                       0 => array( 0 => '2dArray' ),
+                               ),
+                               array(
+                                       0 => array( 0 => '1dArray' ),
+                               ),
+                               array(
+                                       0 => array( 0 => '2dArray' ),
+                               ),
+                               "Test union of 2d arrays with same keys in the value array",
+                       ),
+                       array(
+                               array(
+                                       0 => array( 0 => array( 0 => '3dArray' ) ),
+                               ),
+                               array(
+                                       0 => array( 0 => array( 1 => '2dArray' ) ),
+                               ),
+                               array(
+                                       0 => array( 0 => array( 0 => '3dArray' ) ),
+                               ),
+                               "Test union of 3d array with different keys",
+                       ),
+                       array(
+                               array(
+                                       0 => array( 0 => array( 0 => '3dArray' ) ),
+                               ),
+                               array(
+                                       0 => array( 1 => array( 0 => '2dArray' ) ),
+                               ),
+                               array(
+                                       0 => array( 0 => array( 0 => '3dArray' ), 1 => array( 0 => '2dArray' ) ),
+                               ),
+                               "Test union of 3d array with different keys in the value array",
+                       ),
+                       array(
+                               array(
+                                       0 => array( 0 => array( 0 => '3dArray' ) ),
+                               ),
+                               array(
+                                       0 => array( 0 => array( 0 => '2dArray' ) ),
+                               ),
+                               array(
+                                       0 => array( 0 => array( 0 => '3dArray' ) ),
+                               ),
+                               "Test union of 3d array with same keys in the value array",
+                       ),
+               );
+       }
+}
index 8c8b8b2..ee2b278 100644 (file)
@@ -142,20 +142,20 @@ class OutputPageTest extends MediaWikiTestCase {
                        array(
                                array( 'test.foo', ResourceLoaderModule::TYPE_SCRIPTS ),
                                "<script>window.RLQ = window.RLQ || []; window.RLQ.push( function () {\n"
-                                       . 'mw.loader.load("http://127.0.0.1:8080/w/load.php?debug=false\u0026lang=en\u0026modules=test.foo\u0026only=scripts\u0026skin=fallback\u0026*");'
+                                       . 'mw.loader.load("http://127.0.0.1:8080/w/load.php?debug=false\u0026lang=en\u0026modules=test.foo\u0026only=scripts\u0026skin=fallback");'
                                        . "\n} );</script>"
                        ),
                        array(
                                // Don't condition wrap raw modules (like the startup module)
                                array( 'test.raw', ResourceLoaderModule::TYPE_SCRIPTS ),
-                               '<script async src="http://127.0.0.1:8080/w/load.php?debug=false&amp;lang=en&amp;modules=test.raw&amp;only=scripts&amp;skin=fallback&amp;*"></script>'
+                               '<script async src="http://127.0.0.1:8080/w/load.php?debug=false&amp;lang=en&amp;modules=test.raw&amp;only=scripts&amp;skin=fallback"></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=fallback&amp;*">'
+                               '<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=fallback">'
                        ),
                        // Load private module (only=scripts)
                        array(
@@ -180,16 +180,16 @@ class OutputPageTest extends MediaWikiTestCase {
                        // noscript group
                        array(
                                array( 'test.noscript', ResourceLoaderModule::TYPE_STYLES ),
-                               '<noscript><link rel=stylesheet href="http://127.0.0.1:8080/w/load.php?debug=false&amp;lang=en&amp;modules=test.noscript&amp;only=styles&amp;skin=fallback&amp;*"></noscript>'
+                               '<noscript><link rel=stylesheet href="http://127.0.0.1:8080/w/load.php?debug=false&amp;lang=en&amp;modules=test.noscript&amp;only=styles&amp;skin=fallback"></noscript>'
                        ),
                        // Load two modules in separate groups
                        array(
                                array( array( 'test.group.foo', 'test.group.bar' ), ResourceLoaderModule::TYPE_COMBINED ),
                                "<script>window.RLQ = window.RLQ || []; window.RLQ.push( function () {\n"
-                                       . 'mw.loader.load("http://127.0.0.1:8080/w/load.php?debug=false\u0026lang=en\u0026modules=test.group.bar\u0026skin=fallback\u0026*");'
+                                       . 'mw.loader.load("http://127.0.0.1:8080/w/load.php?debug=false\u0026lang=en\u0026modules=test.group.bar\u0026skin=fallback");'
                                        . "\n} );</script>\n"
                                        . "<script>window.RLQ = window.RLQ || []; window.RLQ.push( function () {\n"
-                                       . 'mw.loader.load("http://127.0.0.1:8080/w/load.php?debug=false\u0026lang=en\u0026modules=test.group.foo\u0026skin=fallback\u0026*");'
+                                       . 'mw.loader.load("http://127.0.0.1:8080/w/load.php?debug=false\u0026lang=en\u0026modules=test.group.foo\u0026skin=fallback");'
                                        . "\n} );</script>"
                        ),
                );
index f894f87..affb0fa 100644 (file)
@@ -674,6 +674,10 @@ class ApiResultTest extends MediaWikiTestCase {
                                ApiResult::META_TYPE => 'BCkvp',
                                ApiResult::META_KVP_KEY_NAME => 'key',
                        ),
+                       'kvpmerge' => array( 'x' => 'a', 'y' => array( 'b' ), 'z' => array( 'c' => 'd' ),
+                               ApiResult::META_TYPE => 'kvp',
+                               ApiResult::META_KVP_MERGE => true,
+                       ),
                        'emptyDefault' => array( '_dummy' => 1 ),
                        'emptyAssoc' => array( '_dummy' => 1, ApiResult::META_TYPE => 'assoc' ),
                        '_dummy' => 1,
@@ -858,6 +862,13 @@ class ApiResultTest extends MediaWikiTestCase {
                                                ApiResult::META_TYPE => 'assoc',
                                                ApiResult::META_KVP_KEY_NAME => 'key',
                                        ),
+                                       'kvpmerge' => array(
+                                               'x' => 'a',
+                                               'y' => array( 'b', ApiResult::META_TYPE => 'array' ),
+                                               'z' => array( 'c' => 'd', ApiResult::META_TYPE => 'assoc' ),
+                                               ApiResult::META_TYPE => 'assoc',
+                                               ApiResult::META_KVP_MERGE => true,
+                                       ),
                                        'emptyDefault' => array( '_dummy' => 1, ApiResult::META_TYPE => 'array' ),
                                        'emptyAssoc' => array( '_dummy' => 1, ApiResult::META_TYPE => 'assoc' ),
                                        '_dummy' => 1,
@@ -889,6 +900,13 @@ class ApiResultTest extends MediaWikiTestCase {
                                                ApiResult::META_TYPE => 'assoc',
                                                ApiResult::META_KVP_KEY_NAME => 'key',
                                        ),
+                                       'kvpmerge' => (object)array(
+                                               'x' => 'a',
+                                               'y' => array( 'b', ApiResult::META_TYPE => 'array' ),
+                                               'z' => (object)array( 'c' => 'd', ApiResult::META_TYPE => 'assoc' ),
+                                               ApiResult::META_TYPE => 'assoc',
+                                               ApiResult::META_KVP_MERGE => true,
+                                       ),
                                        'emptyDefault' => array( '_dummy' => 1, ApiResult::META_TYPE => 'array' ),
                                        'emptyAssoc' => (object)array( '_dummy' => 1, ApiResult::META_TYPE => 'assoc' ),
                                        '_dummy' => 1,
@@ -920,6 +938,13 @@ class ApiResultTest extends MediaWikiTestCase {
                                                ApiResult::META_TYPE => 'array',
                                                ApiResult::META_KVP_KEY_NAME => 'key',
                                        ),
+                                       'kvpmerge' => array(
+                                               $kvp( 'name', 'x', 'value', 'a' ),
+                                               $kvp( 'name', 'y', 'value', array( 'b', ApiResult::META_TYPE => 'array' ) ),
+                                               array( 'name' => 'z', 'c' => 'd', ApiResult::META_TYPE => 'assoc', ApiResult::META_PRESERVE_KEYS => array( 'name' ) ),
+                                               ApiResult::META_TYPE => 'array',
+                                               ApiResult::META_KVP_MERGE => true,
+                                       ),
                                        'emptyDefault' => array( '_dummy' => 1, ApiResult::META_TYPE => 'array' ),
                                        'emptyAssoc' => array( '_dummy' => 1, ApiResult::META_TYPE => 'assoc' ),
                                        '_dummy' => 1,
@@ -951,6 +976,13 @@ class ApiResultTest extends MediaWikiTestCase {
                                                ApiResult::META_TYPE => 'array',
                                                ApiResult::META_KVP_KEY_NAME => 'key',
                                        ),
+                                       'kvpmerge' => array(
+                                               $kvp( 'name', 'x', '*', 'a' ),
+                                               $kvp( 'name', 'y', '*', array( 'b', ApiResult::META_TYPE => 'array' ) ),
+                                               array( 'name' => 'z', 'c' => 'd', ApiResult::META_TYPE => 'assoc', ApiResult::META_PRESERVE_KEYS => array( 'name' ) ),
+                                               ApiResult::META_TYPE => 'array',
+                                               ApiResult::META_KVP_MERGE => true,
+                                       ),
                                        'emptyDefault' => array( '_dummy' => 1, ApiResult::META_TYPE => 'array' ),
                                        'emptyAssoc' => array( '_dummy' => 1, ApiResult::META_TYPE => 'assoc' ),
                                        '_dummy' => 1,
@@ -986,6 +1018,13 @@ class ApiResultTest extends MediaWikiTestCase {
                                                ApiResult::META_TYPE => 'array',
                                                ApiResult::META_KVP_KEY_NAME => 'key',
                                        ),
+                                       'kvpmerge' => array(
+                                               (object)$kvp( 'name', 'x', 'value', 'a' ),
+                                               (object)$kvp( 'name', 'y', 'value', array( 'b', ApiResult::META_TYPE => 'array' ) ),
+                                               (object)array( 'name' => 'z', 'c' => 'd', ApiResult::META_TYPE => 'assoc', ApiResult::META_PRESERVE_KEYS => array( 'name' ) ),
+                                               ApiResult::META_TYPE => 'array',
+                                               ApiResult::META_KVP_MERGE => true,
+                                       ),
                                        'emptyDefault' => array( '_dummy' => 1, ApiResult::META_TYPE => 'array' ),
                                        'emptyAssoc' => (object)array( '_dummy' => 1, ApiResult::META_TYPE => 'assoc' ),
                                        '_dummy' => 1,
@@ -1025,6 +1064,11 @@ class ApiResultTest extends MediaWikiTestCase {
                                                (object)array( 'key' => 'x', 'value' => 'a' ),
                                                (object)array( 'key' => 'y', 'value' => 'b' ),
                                        ),
+                                       'kvpmerge' => array(
+                                               (object)array( 'name' => 'x', 'value' => 'a' ),
+                                               (object)array( 'name' => 'y', 'value' => array( 'b' ) ),
+                                               (object)array( 'name' => 'z', 'c' => 'd' ),
+                                       ),
                                        'emptyDefault' => array(),
                                        'emptyAssoc' => (object)array(),
                                        '_dummy' => 1,
index 05c32a0..f12cf5b 100644 (file)
@@ -28,6 +28,13 @@ use TestingAccessWrapper;
 
 class LineFormatterTest extends MediaWikiTestCase {
 
+       public function setUp() {
+               if ( !class_exists( 'Monolog\Formatter\LineFormatter' ) ) {
+                       $this->markTestSkipped( 'This test requires monolog to be installed' );
+               }
+               parent::setUp();
+       }
+
        /**
         * @covers LineFormatter::normalizeException
         */
index 65db7e4..551d3a7 100644 (file)
@@ -75,11 +75,11 @@ class MigrateFileRepoLayoutTest extends MediaWikiTestCase {
        }
 
        protected function tearDown() {
-       foreach ( glob( $this->tmpPrefix . '*' ) as $directory ) {
-               $this->deleteFilesRecursively( $directory );
-       }
+               foreach ( glob( $this->tmpPrefix . '*' ) as $directory ) {
+                       $this->deleteFilesRecursively( $directory );
+               }
 
-       unlink( $this->tmpFilepath );
+               unlink( $this->tmpFilepath );
 
                parent::tearDown();
        }
index e96953e..57668e5 100644 (file)
@@ -170,4 +170,37 @@ class IEUrlExtensionTest extends PHPUnit_Framework_TestCase {
                        'Two dots'
                );
        }
+
+       /**
+        * @covers IEUrlExtension::findIE6Extension
+        */
+       public function testScriptQuery() {
+               $this->assertEquals(
+                       'php',
+                       IEUrlExtension::findIE6Extension( 'example.php?foo=a&bar=b' ),
+                       'Script with query'
+               );
+       }
+
+       /**
+        * @covers IEUrlExtension::findIE6Extension
+        */
+       public function testEscapedScriptQuery() {
+               $this->assertEquals(
+                       '',
+                       IEUrlExtension::findIE6Extension( 'example%2Ephp?foo=a&bar=b' ),
+                       'Script with urlencoded dot and query'
+               );
+       }
+
+       /**
+        * @covers IEUrlExtension::findIE6Extension
+        */
+       public function testEscapedScriptQueryDot() {
+               $this->assertEquals(
+                       'y',
+                       IEUrlExtension::findIE6Extension( 'example%2Ephp?foo=a.x&bar=b.y' ),
+                       'Script with urlencoded dot and query with dot'
+               );
+       }
 }
diff --git a/tests/phpunit/includes/libs/IPSetTest.php b/tests/phpunit/includes/libs/IPSetTest.php
deleted file mode 100644 (file)
index 5bbacef..0000000
+++ /dev/null
@@ -1,252 +0,0 @@
-<?php
-
-/**
- * @group IPSet
- */
-class IPSetTest extends PHPUnit_Framework_TestCase {
-       /**
-        * Provides test cases for IPSetTest::testIPSet
-        *
-        * Returns an array of test cases. Each case is an array of (description,
-        * config, tests).  Description is just text output for failure messages,
-        * config is an array constructor argument for IPSet, and the tests are
-        * an array of IP => expected (boolean) result against the config dataset.
-        */
-       public static function provideIPSets() {
-               return array(
-                       array(
-                               'old_list_subset',
-                               array(
-                                       '208.80.152.162',
-                                       '10.64.0.123',
-                                       '10.64.0.124',
-                                       '10.64.0.125',
-                                       '10.64.0.126',
-                                       '10.64.0.127',
-                                       '10.64.0.128',
-                                       '10.64.0.129',
-                                       '10.64.32.104',
-                                       '10.64.32.105',
-                                       '10.64.32.106',
-                                       '10.64.32.107',
-                                       '91.198.174.45',
-                                       '91.198.174.46',
-                                       '91.198.174.47',
-                                       '91.198.174.57',
-                                       '2620:0:862:1:A6BA:DBFF:FE30:CFB3',
-                                       '91.198.174.58',
-                                       '2620:0:862:1:A6BA:DBFF:FE38:FFDA',
-                                       '208.80.152.16',
-                                       '208.80.152.17',
-                                       '208.80.152.18',
-                                       '208.80.152.19',
-                                       '91.198.174.102',
-                                       '91.198.174.103',
-                                       '91.198.174.104',
-                                       '91.198.174.105',
-                                       '91.198.174.106',
-                                       '91.198.174.107',
-                                       '91.198.174.81',
-                                       '2620:0:862:1:26B6:FDFF:FEF5:B2D4',
-                                       '91.198.174.82',
-                                       '2620:0:862:1:26B6:FDFF:FEF5:ABB4',
-                                       '10.20.0.113',
-                                       '2620:0:862:102:26B6:FDFF:FEF5:AD9C',
-                                       '10.20.0.114',
-                                       '2620:0:862:102:26B6:FDFF:FEF5:7C38',
-                               ),
-                               array(
-                                       '0.0.0.0' => false,
-                                       '255.255.255.255' => false,
-                                       '10.64.0.122' => false,
-                                       '10.64.0.123' => true,
-                                       '10.64.0.124' => true,
-                                       '10.64.0.129' => true,
-                                       '10.64.0.130' => false,
-                                       '91.198.174.81' => true,
-                                       '91.198.174.80' => false,
-                                       '0::0' => false,
-                                       'ffff:ffff:ffff:ffff:FFFF:FFFF:FFFF:FFFF' => false,
-                                       '2001:db8::1234' => false,
-                                       '2620:0:862:1:26b6:fdff:fef5:abb3' => false,
-                                       '2620:0:862:1:26b6:fdff:fef5:abb4' => true,
-                                       '2620:0:862:1:26b6:fdff:fef5:abb5' => false,
-                               ),
-                       ),
-                       array(
-                               'new_cidr_set',
-                               array(
-                                       '208.80.154.0/26',
-                                       '2620:0:861:1::/64',
-                                       '208.80.154.128/26',
-                                       '2620:0:861:2::/64',
-                                       '208.80.154.64/26',
-                                       '2620:0:861:3::/64',
-                                       '208.80.155.96/27',
-                                       '2620:0:861:4::/64',
-                                       '10.64.0.0/22',
-                                       '2620:0:861:101::/64',
-                                       '10.64.16.0/22',
-                                       '2620:0:861:102::/64',
-                                       '10.64.32.0/22',
-                                       '2620:0:861:103::/64',
-                                       '10.64.48.0/22',
-                                       '2620:0:861:107::/64',
-                                       '91.198.174.0/25',
-                                       '2620:0:862:1::/64',
-                                       '10.20.0.0/24',
-                                       '2620:0:862:102::/64',
-                                       '10.128.0.0/24',
-                                       '2620:0:863:101::/64',
-                                       '10.2.4.26',
-                               ),
-                               array(
-                                       '0.0.0.0' => false,
-                                       '255.255.255.255' => false,
-                                       '10.2.4.25' => false,
-                                       '10.2.4.26' => true,
-                                       '10.2.4.27' => false,
-                                       '10.20.0.255' => true,
-                                       '10.128.0.0' => true,
-                                       '10.64.17.55' => true,
-                                       '10.64.20.0' => false,
-                                       '10.64.27.207' => false,
-                                       '10.64.31.255' => false,
-                                       '0::0' => false,
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff' => false,
-                                       '2001:DB8::1' => false,
-                                       '2620:0:861:106::45' => false,
-                                       '2620:0:862:103::' => false,
-                                       '2620:0:862:102:10:20:0:113' => true,
-                               ),
-                       ),
-                       array(
-                               'empty_set',
-                               array(),
-                               array(
-                                       '0.0.0.0' => false,
-                                       '255.255.255.255' => false,
-                                       '10.2.4.25' => false,
-                                       '10.2.4.26' => false,
-                                       '10.2.4.27' => false,
-                                       '10.20.0.255' => false,
-                                       '10.128.0.0' => false,
-                                       '10.64.17.55' => false,
-                                       '10.64.20.0' => false,
-                                       '10.64.27.207' => false,
-                                       '10.64.31.255' => false,
-                                       '0::0' => false,
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff' => false,
-                                       '2001:DB8::1' => false,
-                                       '2620:0:861:106::45' => false,
-                                       '2620:0:862:103::' => false,
-                                       '2620:0:862:102:10:20:0:113' => false,
-                               ),
-                       ),
-                       array(
-                               'edge_cases',
-                               array(
-                                       '0.0.0.0',
-                                       '255.255.255.255',
-                                       '::',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff',
-                                       '10.10.10.10/25', // host bits intentional
-                               ),
-                               array(
-                                       '0.0.0.0' => true,
-                                       '255.255.255.255' => true,
-                                       '10.2.4.25' => false,
-                                       '10.2.4.26' => false,
-                                       '10.2.4.27' => false,
-                                       '10.20.0.255' => false,
-                                       '10.128.0.0' => false,
-                                       '10.64.17.55' => false,
-                                       '10.64.20.0' => false,
-                                       '10.64.27.207' => false,
-                                       '10.64.31.255' => false,
-                                       '0::0' => true,
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff' => true,
-                                       '2001:DB8::1' => false,
-                                       '2620:0:861:106::45' => false,
-                                       '2620:0:862:103::' => false,
-                                       '2620:0:862:102:10:20:0:113' => false,
-                                       '10.10.9.255' => false,
-                                       '10.10.10.0' => true,
-                                       '10.10.10.1' => true,
-                                       '10.10.10.10' => true,
-                                       '10.10.10.126' => true,
-                                       '10.10.10.127' => true,
-                                       '10.10.10.128' => false,
-                                       '10.10.10.177' => false,
-                                       '10.10.10.255' => false,
-                                       '10.10.11.0' => false,
-                               ),
-                       ),
-                       array(
-                               'exercise_optimizer',
-                               array(
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffff:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fffe:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fffd:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fffc:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fffb:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fffa:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fff9:8000/113',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fff9:0/113',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fff8:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fff7:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fff6:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fff5:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fff4:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fff3:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fff2:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fff1:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fff0:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffef:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffee:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffec:0/111',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffeb:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffea:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffe9:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffe8:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffe7:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffe6:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffe5:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffe4:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffe3:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffe2:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffe1:0/112',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffe0:0/110',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffc0:0/107',
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffa0:0/107',
-                               ),
-                               array(
-                                       '0.0.0.0' => false,
-                                       '255.255.255.255' => false,
-                                       '::' => false,
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ff9f:ffff' => false,
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffa0:0' => true,
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffc0:1234' => true,
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffed:ffff' => true,
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fff4:4444' => true,
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:fff9:8080' => true,
-                                       'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff' => true,
-                               ),
-                       ),
-               );
-       }
-
-       /**
-        * Validates IPSet loading and matching code
-        *
-        * @covers IPSet
-        * @dataProvider provideIPSets
-        */
-       public function testIPSet( $desc, array $cfg, array $tests ) {
-               $ipset = new IPSet( $cfg );
-               foreach ( $tests as $ip => $expected ) {
-                       $result = $ipset->match( $ip );
-                       $this->assertEquals( $expected, $result, "Incorrect match() result for $ip in dataset $desc" );
-               }
-       }
-}
index 0964137..1cb8a5d 100644 (file)
@@ -113,11 +113,20 @@ class ExtensionProcessorTest extends MediaWikiTestCase {
                                '@IGNORED' => 'yes',
                        ),
                ) + self::$default;
+               $info2 = array(
+                       'config' => array(
+                               '_prefix' => 'eg',
+                               'Bar' => 'somevalue'
+                       ),
+               ) + self::$default;
                $processor->extractInfo( $this->dir, $info, 1 );
+               $processor->extractInfo( $this->dir, $info2, 1 );
                $extracted = $processor->getExtractedInfo();
                $this->assertEquals( 'somevalue', $extracted['globals']['wgBar'] );
                $this->assertEquals( 10, $extracted['globals']['wgFoo'] );
                $this->assertArrayNotHasKey( 'wg@IGNORED', $extracted['globals'] );
+               // Custom prefix:
+               $this->assertEquals( 'somevalue', $extracted['globals']['egBar'] );
        }
 
        public static function provideExtracttExtensionMessagesFiles() {
index cc20e7f..b683885 100644 (file)
@@ -6,15 +6,6 @@ class ResourceLoaderTest extends ResourceLoaderTestCase {
                parent::setUp();
 
                $this->setMwGlobals( array(
-                       'wgResourceLoaderLESSFunctions' => array(
-                               'test-sum' => function ( $frame, $less ) {
-                                       $sum = 0;
-                                       foreach ( $frame[2] as $arg ) {
-                                               $sum += (int)$arg[1];
-                                       }
-                                       return $sum;
-                               },
-                       ),
                        'wgResourceLoaderLESSImportPaths' => array(
                                dirname( dirname( __DIR__ ) ) . '/data/less/common',
                        ),
index d5d1188..8f9eabe 100644 (file)
@@ -20,7 +20,7 @@ class UploadStashTest extends MediaWikiTestCase {
                parent::setUp();
 
                // Setup a file for bug 29408
-               $this->bug29408File = __DIR__ . '/bug29408';
+               $this->bug29408File = wfTempDir() . '/bug29408';
                file_put_contents( $this->bug29408File, "\x00" );
 
                self::$users = array(
index ade8fc4..4fca002 100644 (file)
@@ -1030,7 +1030,7 @@ class LanguageTest extends LanguageClassesTestCase {
                return array(
                        array(
                                0,
-                               "0 B",
+                               "0 bytes",
                                "Zero bytes"
                        ),
                        array(
@@ -1046,7 +1046,7 @@ class LanguageTest extends LanguageClassesTestCase {
                        array(
                                1024 * 1024 * 1024,
                                "1 GB",
-                               "1 gigabytes"
+                               "1 gigabyte"
                        ),
                        array(
                                pow( 1024, 4 ),
index 60b2802..0a29af5 100644 (file)
@@ -71,6 +71,8 @@ return array(
                        'tests/qunit/suites/resources/mediawiki/mediawiki.storage.test.js',
                        'tests/qunit/suites/resources/mediawiki/mediawiki.template.test.js',
                        'tests/qunit/suites/resources/mediawiki/mediawiki.test.js',
+                       'tests/qunit/suites/resources/mediawiki/mediawiki.ForeignUpload.test.js',
+                       'tests/qunit/suites/resources/mediawiki/mediawiki.ForeignStructuredUpload.test.js',
                        'tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js',
                        'tests/qunit/suites/resources/mediawiki/mediawiki.toc.test.js',
                        'tests/qunit/suites/resources/mediawiki/mediawiki.track.test.js',
@@ -88,6 +90,7 @@ return array(
                        'tests/qunit/suites/resources/mediawiki/mediawiki.language.test.js',
                        'tests/qunit/suites/resources/mediawiki/mediawiki.cldr.test.js',
                        'tests/qunit/suites/resources/mediawiki/mediawiki.cookie.test.js',
+                       'tests/qunit/suites/resources/mediawiki/mediawiki.experiments.test.js',
                ),
                'dependencies' => array(
                        'jquery.accessKeyLabel',
@@ -113,6 +116,8 @@ return array(
                        'mediawiki.api.upload',
                        'mediawiki.api.watch',
                        'mediawiki.ForeignApi.core',
+                       'mediawiki.ForeignUpload',
+                       'mediawiki.ForeignStructuredUpload',
                        'mediawiki.jqueryMsg',
                        'mediawiki.messagePoster',
                        'mediawiki.RegExp',
@@ -127,6 +132,7 @@ return array(
                        'mediawiki.language',
                        'mediawiki.cldr',
                        'mediawiki.cookie',
+                       'mediawiki.experiments',
                        'test.mediawiki.qunit.testrunner',
                ),
        )
index 78771de..ab5229e 100644 (file)
@@ -13,7 +13,7 @@
         * @return {String} Such as 'data/foo.js?131031765087663960'
         */
        QUnit.fixurl = function ( value ) {
-               return value + (/\?/.test( value ) ? '&' : '?')
+               return value + ( /\?/.test( value ) ? '&' : '?' )
                        + String( new Date().getTime() )
                        + String( parseInt( Math.random() * 100000, 10 ) );
        };
                                                $.each( $.timers, function ( i, timer ) {
                                                        var node = timer.elem;
                                                        mw.log.warn( 'Unfinished animation #' + i + ' in ' + timer.queue + ' queue on ' +
-                                                               mw.html.element( node.nodeName.toLowerCase(), $(node).getAttrs() )
+                                                               mw.html.element( node.nodeName.toLowerCase(), $( node ).getAttrs() )
                                                        );
                                                } );
                                                // Force animations to stop to give the next test a clean start
index 911e9d0..1be8e0c 100644 (file)
@@ -8,7 +8,7 @@
                teardown: function () {
                        this.restoreWarnings();
                }
-       }) );
+       } ) );
 
        QUnit.test( 'String functions', 7, function ( assert ) {
                assert.equal( $.trimLeft( '  foo bar  ' ), 'foo bar  ', 'trimLeft' );
index 78c185f..23ad9d9 100644 (file)
@@ -1,13 +1,13 @@
-( function ($) {
+( function ( $ ) {
 
-       QUnit.module('jquery.placeholder', QUnit.newMwEnvironment());
+       QUnit.module( 'jquery.placeholder', QUnit.newMwEnvironment() );
 
-       QUnit.test('caches results of feature tests', 2, function (assert) {
-               assert.strictEqual( typeof $.fn.placeholder.input, 'boolean', '$.fn.placeholder.input');
-               assert.strictEqual( typeof $.fn.placeholder.textarea, 'boolean', '$.fn.placeholder.textarea');
-       });
+       QUnit.test( 'caches results of feature tests', 2, function ( assert ) {
+               assert.strictEqual( typeof $.fn.placeholder.input, 'boolean', '$.fn.placeholder.input' );
+               assert.strictEqual( typeof $.fn.placeholder.textarea, 'boolean', '$.fn.placeholder.textarea' );
+       } );
 
-       if ($.fn.placeholder.input && $.fn.placeholder.textarea) {
+       if ( $.fn.placeholder.input && $.fn.placeholder.textarea ) {
                return;
        }
 
                        '<input id="input-type-password" type="password" placeholder="e.g. hunter2">' +
                        '<textarea id="textarea" name="message" placeholder="Your message goes here"></textarea>' +
                '</form>',
-       testElement = function ($el, assert) {
+       testElement = function ( $el, assert ) {
 
                var el = $el[0],
-                       placeholder = el.getAttribute('placeholder');
+                       placeholder = el.getAttribute( 'placeholder' );
 
-               assert.strictEqual($el.placeholder(), $el, 'should be chainable');
+               assert.strictEqual( $el.placeholder(), $el, 'should be chainable' );
 
-               assert.strictEqual(el.value, placeholder, 'should set `placeholder` text as `value`');
-               assert.strictEqual($el.prop('value'), '', 'propHooks works properly');
-               assert.strictEqual($el.val(), '', 'valHooks works properly');
-               assert.ok($el.hasClass('placeholder'), 'should have `placeholder` class');
+               assert.strictEqual( el.value, placeholder, 'should set `placeholder` text as `value`' );
+               assert.strictEqual( $el.prop( 'value' ), '', 'propHooks works properly' );
+               assert.strictEqual( $el.val(), '', 'valHooks works properly' );
+               assert.ok( $el.hasClass( 'placeholder' ), 'should have `placeholder` class' );
 
                // test on focus
                $el.focus();
-               assert.strictEqual(el.value, '', '`value` should be the empty string on focus');
-               assert.strictEqual($el.prop('value'), '', 'propHooks works properly');
-               assert.strictEqual($el.val(), '', 'valHooks works properly');
-               assert.ok(!$el.hasClass('placeholder'), 'should not have `placeholder` class on focus');
+               assert.strictEqual( el.value, '', '`value` should be the empty string on focus' );
+               assert.strictEqual( $el.prop( 'value' ), '', 'propHooks works properly' );
+               assert.strictEqual( $el.val(), '', 'valHooks works properly' );
+               assert.ok( !$el.hasClass( 'placeholder' ), 'should not have `placeholder` class on focus' );
 
                // and unfocus (blur) again
                $el.blur();
 
-               assert.strictEqual(el.value, placeholder, 'should set `placeholder` text as `value`');
-               assert.strictEqual($el.prop('value'), '', 'propHooks works properly');
-               assert.strictEqual($el.val(), '', 'valHooks works properly');
-               assert.ok($el.hasClass('placeholder'), 'should have `placeholder` class');
+               assert.strictEqual( el.value, placeholder, 'should set `placeholder` text as `value`' );
+               assert.strictEqual( $el.prop( 'value' ), '', 'propHooks works properly' );
+               assert.strictEqual( $el.val(), '', 'valHooks works properly' );
+               assert.ok( $el.hasClass( 'placeholder' ), 'should have `placeholder` class' );
 
                // change the value
-               $el.val('lorem ipsum');
-               assert.strictEqual($el.prop('value'), 'lorem ipsum', '`$el.val(string)` should change the `value` property');
-               assert.strictEqual(el.value, 'lorem ipsum', '`$el.val(string)` should change the `value` attribute');
-               assert.ok(!$el.hasClass('placeholder'), '`$el.val(string)` should remove `placeholder` class');
+               $el.val( 'lorem ipsum' );
+               assert.strictEqual( $el.prop( 'value' ), 'lorem ipsum', '`$el.val(string)` should change the `value` property' );
+               assert.strictEqual( el.value, 'lorem ipsum', '`$el.val(string)` should change the `value` attribute' );
+               assert.ok( !$el.hasClass( 'placeholder' ), '`$el.val(string)` should remove `placeholder` class' );
 
                // and clear it again
-               $el.val('');
-               assert.strictEqual($el.prop('value'), '', '`$el.val("")` should change the `value` property');
-               assert.strictEqual(el.value, placeholder, '`$el.val("")` should change the `value` attribute');
-               assert.ok($el.hasClass('placeholder'), '`$el.val("")` should re-enable `placeholder` class');
+               $el.val( '' );
+               assert.strictEqual( $el.prop( 'value' ), '', '`$el.val("")` should change the `value` property' );
+               assert.strictEqual( el.value, placeholder, '`$el.val("")` should change the `value` attribute' );
+               assert.ok( $el.hasClass( 'placeholder' ), '`$el.val("")` should re-enable `placeholder` class' );
 
                // make sure the placeholder property works as expected.
-               assert.strictEqual($el.prop('placeholder'), placeholder, '$el.prop(`placeholder`) should return the placeholder value');
-               $el.placeholder('new placeholder');
-               assert.strictEqual(el.getAttribute('placeholder'), 'new placeholder', '$el.placeholder(<string>) should set the placeholder value');
-               assert.strictEqual(el.value, 'new placeholder', '$el.placeholder(<string>) should update the displayed placeholder value');
-               $el.placeholder(placeholder);
+               assert.strictEqual( $el.prop( 'placeholder' ), placeholder, '$el.prop(`placeholder`) should return the placeholder value' );
+               $el.placeholder( 'new placeholder' );
+               assert.strictEqual( el.getAttribute( 'placeholder' ), 'new placeholder', '$el.placeholder(<string>) should set the placeholder value' );
+               assert.strictEqual( el.value, 'new placeholder', '$el.placeholder(<string>) should update the displayed placeholder value' );
+               $el.placeholder( placeholder );
        };
 
-       QUnit.test('emulates placeholder for <input type=text>', 22, function (assert) {
-               $('<div>').html(html).appendTo($('#qunit-fixture'));
-               testElement($('#input-type-text'), assert);
-       });
+       QUnit.test( 'emulates placeholder for <input type=text>', 22, function ( assert ) {
+               $( '<div>' ).html( html ).appendTo( $( '#qunit-fixture' ) );
+               testElement( $( '#input-type-text' ), assert );
+       } );
 
-       QUnit.test('emulates placeholder for <input type=search>', 22, function (assert) {
-               $('<div>').html(html).appendTo($('#qunit-fixture'));
-               testElement($('#input-type-search'), assert);
-       });
+       QUnit.test( 'emulates placeholder for <input type=search>', 22, function ( assert ) {
+               $( '<div>' ).html( html ).appendTo( $( '#qunit-fixture' ) );
+               testElement( $( '#input-type-search' ), assert );
+       } );
 
-       QUnit.test('emulates placeholder for <input type=email>', 22, function (assert) {
-               $('<div>').html(html).appendTo($('#qunit-fixture'));
-               testElement($('#input-type-email'), assert);
-       });
+       QUnit.test( 'emulates placeholder for <input type=email>', 22, function ( assert ) {
+               $( '<div>' ).html( html ).appendTo( $( '#qunit-fixture' ) );
+               testElement( $( '#input-type-email' ), assert );
+       } );
 
-       QUnit.test('emulates placeholder for <input type=url>', 22, function (assert) {
-               $('<div>').html(html).appendTo($('#qunit-fixture'));
-               testElement($('#input-type-url'), assert);
-       });
+       QUnit.test( 'emulates placeholder for <input type=url>', 22, function ( assert ) {
+               $( '<div>' ).html( html ).appendTo( $( '#qunit-fixture' ) );
+               testElement( $( '#input-type-url' ), assert );
+       } );
 
-       QUnit.test('emulates placeholder for <input type=tel>', 22, function (assert) {
-               $('<div>').html(html).appendTo($('#qunit-fixture'));
-               testElement($('#input-type-tel'), assert);
-       });
+       QUnit.test( 'emulates placeholder for <input type=tel>', 22, function ( assert ) {
+               $( '<div>' ).html( html ).appendTo( $( '#qunit-fixture' ) );
+               testElement( $( '#input-type-tel' ), assert );
+       } );
 
-       QUnit.test('emulates placeholder for <input type=password>', 13, function (assert) {
-               $('<div>').html(html).appendTo($('#qunit-fixture'));
+       QUnit.test( 'emulates placeholder for <input type=password>', 13, function ( assert ) {
+               $( '<div>' ).html( html ).appendTo( $( '#qunit-fixture' ) );
 
                var selector = '#input-type-password',
-                       $el = $(selector),
+                       $el = $( selector ),
                        el = $el[0],
-                       placeholder = el.getAttribute('placeholder');
+                       placeholder = el.getAttribute( 'placeholder' );
 
-               assert.strictEqual($el.placeholder(), $el, 'should be chainable');
+               assert.strictEqual( $el.placeholder(), $el, 'should be chainable' );
 
                // Re-select the element, as it gets replaced by another one in some browsers
-               $el = $(selector);
+               $el = $( selector );
                el = $el[0];
 
-               assert.strictEqual(el.value, placeholder, 'should set `placeholder` text as `value`');
-               assert.strictEqual($el.prop('value'), '', 'propHooks works properly');
-               assert.strictEqual($el.val(), '', 'valHooks works properly');
-               assert.ok($el.hasClass('placeholder'), 'should have `placeholder` class');
+               assert.strictEqual( el.value, placeholder, 'should set `placeholder` text as `value`' );
+               assert.strictEqual( $el.prop( 'value' ), '', 'propHooks works properly' );
+               assert.strictEqual( $el.val(), '', 'valHooks works properly' );
+               assert.ok( $el.hasClass( 'placeholder' ), 'should have `placeholder` class' );
 
                // test on focus
                $el.focus();
 
                // Re-select the element, as it gets replaced by another one in some browsers
-               $el = $(selector);
+               $el = $( selector );
                el = $el[0];
 
-               assert.strictEqual(el.value, '', '`value` should be the empty string on focus');
-               assert.strictEqual($el.prop('value'), '', 'propHooks works properly');
-               assert.strictEqual($el.val(), '', 'valHooks works properly');
-               assert.ok(!$el.hasClass('placeholder'), 'should not have `placeholder` class on focus');
+               assert.strictEqual( el.value, '', '`value` should be the empty string on focus' );
+               assert.strictEqual( $el.prop( 'value' ), '', 'propHooks works properly' );
+               assert.strictEqual( $el.val(), '', 'valHooks works properly' );
+               assert.ok( !$el.hasClass( 'placeholder' ), 'should not have `placeholder` class on focus' );
 
                // and unfocus (blur) again
                $el.blur();
 
                // Re-select the element, as it gets replaced by another one in some browsers
-               $el = $(selector);
+               $el = $( selector );
                el = $el[0];
 
-               assert.strictEqual(el.value, placeholder, 'should set `placeholder` text as `value`');
-               assert.strictEqual($el.prop('value'), '', 'propHooks works properly');
-               assert.strictEqual($el.val(), '', 'valHooks works properly');
-               assert.ok($el.hasClass('placeholder'), 'should have `placeholder` class');
+               assert.strictEqual( el.value, placeholder, 'should set `placeholder` text as `value`' );
+               assert.strictEqual( $el.prop( 'value' ), '', 'propHooks works properly' );
+               assert.strictEqual( $el.val(), '', 'valHooks works properly' );
+               assert.ok( $el.hasClass( 'placeholder' ), 'should have `placeholder` class' );
 
-       });
+       } );
 
-       QUnit.test('emulates placeholder for <textarea></textarea>', 22, function (assert) {
-               $('<div>').html(html).appendTo($('#qunit-fixture'));
-               testElement($('#textarea'), assert);
-       });
+       QUnit.test( 'emulates placeholder for <textarea></textarea>', 22, function ( assert ) {
+               $( '<div>' ).html( html ).appendTo( $( '#qunit-fixture' ) );
+               testElement( $( '#textarea' ), assert );
+       } );
 
-}(jQuery));
+}( jQuery ) );
index 00d4a08..cc1e6df 100644 (file)
@@ -57,7 +57,7 @@
                QUnit.test( msg, data.length * 2, function ( assert ) {
                        var extractedR, extractedF, parser;
 
-                       if (callback !== undefined ) {
+                       if ( callback !== undefined ) {
                                callback();
                        }
 
index acd98a6..480e127 100644 (file)
                                '</tbody></table>' );
 
                        $table.tablesorter();
-                       assert.equal( $table.find( 'tr:eq(1) th:eq(1)').data('headerIndex'),
+                       assert.equal( $table.find( 'tr:eq(1) th:eq(1)' ).data( 'headerIndex' ),
                                2,
                                'Incorrect index of sort header'
                        );
diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.ForeignStructuredUpload.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.ForeignStructuredUpload.test.js
new file mode 100644 (file)
index 0000000..3007416
--- /dev/null
@@ -0,0 +1,30 @@
+( function ( mw ) {
+       QUnit.module( 'mediawiki.ForeignStructuredUpload', QUnit.newMwEnvironment( {} ) );
+
+       QUnit.test( 'Constructor check', function ( assert ) {
+               QUnit.expect( 3 );
+               var upload = new mw.ForeignStructuredUpload();
+
+               assert.ok( upload, 'The ForeignUpload constructor is working.' );
+               assert.ok( upload.descriptions, 'The descriptions array was initialized properly' );
+               assert.ok( upload.categories, 'The categories array was initialized properly' );
+       } );
+
+       QUnit.test( 'getText', function ( assert ) {
+               QUnit.expect( 1 );
+
+               var upload = new mw.ForeignStructuredUpload();
+
+               // Set basic information
+               upload.addDescription( 'en', 'Test description one two three' );
+               upload.addDescription( 'en-x-piglatin', 'Esttay escriptionday unway ootay eethray' );
+               upload.setDate( '1776-07-04' );
+               upload.addCategories( [ 'Test 1', 'Test 2' ] );
+               upload.addCategories( [ 'Test 3' ] );
+
+               // Fake the user
+               this.sandbox.stub( upload, 'getUser' ).returns( 'Test user' );
+
+               assert.strictEqual( upload.getText().trim(), '{{Information\n|description={{en|Test description one two three}}\n{{en-x-piglatin|Esttay escriptionday unway ootay eethray}}\n|date=1776-07-04\n|source=Test user\n|author=Test user\n}}\n\n\n\n[[Category:Test 1]]\n[[Category:Test 2]]\n[[Category:Test 3]]' );
+       } );
+}( mediaWiki ) );
diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.ForeignUpload.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.ForeignUpload.test.js
new file mode 100644 (file)
index 0000000..98b9678
--- /dev/null
@@ -0,0 +1,12 @@
+( function ( mw ) {
+       QUnit.module( 'mediawiki.ForeignUpload', QUnit.newMwEnvironment( {} ) );
+
+       QUnit.test( 'Constructor check', function ( assert ) {
+               QUnit.expect( 3 );
+               var upload = new mw.ForeignUpload();
+
+               assert.ok( upload, 'The ForeignUpload constructor is working.' );
+               assert.strictEqual( upload.targetHost, 'commons.wikimedia.org', 'Default target host is correct' );
+               assert.ok( upload.api instanceof mw.ForeignApi, 'API is correctly configured to point at a foreign wiki.' );
+       } );
+}( mediaWiki ) );
index 284f21a..253ac39 100644 (file)
 
                title = new mw.Title( 'Foobar' );
                assert.equal( title.getUrl(), '/wiki/Foobar', 'Basic functionality, getUrl uses mw.util.getUrl' );
-               assert.equal( title.getUrl({ action: 'edit' }), '/wiki/Foobar?action=edit', 'Basic functionality, \'params\' parameter' );
+               assert.equal( title.getUrl( { action: 'edit' } ), '/wiki/Foobar?action=edit', 'Basic functionality, \'params\' parameter' );
 
                title = new mw.Title( 'John Doe', 3 );
                assert.equal( title.getUrl(), '/wiki/User_talk:John_Doe', 'Escaping in title and namespace for urls' );
index 7c3f1ec..587c893 100644 (file)
@@ -7,7 +7,7 @@
                        errorUrl = 'http://example.com',
                        errorLine = '123',
                        errorColumn = '45',
-                       errorObject = new Error( 'Foo'),
+                       errorObject = new Error( 'Foo' ),
                        oldHandler = this.sandbox.stub();
 
                this.sandbox.stub( mw, 'track' );
diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.experiments.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.experiments.test.js
new file mode 100644 (file)
index 0000000..774b205
--- /dev/null
@@ -0,0 +1,63 @@
+( function ( mw ) {
+
+       var getBucket = mw.experiments.getBucket;
+
+       function createExperiment() {
+               return {
+                       name: 'experiment',
+                       enabled: true,
+                       buckets: {
+                               control: 0.25,
+                               A: 0.25,
+                               B: 0.25,
+                               C: 0.25
+                       }
+               };
+       }
+
+       QUnit.module( 'mediawiki.experiments' );
+
+       QUnit.test( 'getBucket( experiment, token )', 4, function ( assert ) {
+               var experiment = createExperiment(),
+                       token = '123457890';
+
+               assert.equal(
+                       getBucket( experiment, token ),
+                       getBucket( experiment, token ),
+                       'It returns the same bucket for the same experiment-token pair.'
+               );
+
+               // --------
+               experiment = createExperiment();
+               experiment.buckets = {
+                       A: 0.314159265359
+               };
+
+               assert.equal(
+                       'A',
+                       getBucket( experiment, token ),
+                       'It returns the bucket if only one is defined.'
+               );
+
+               // --------
+               experiment = createExperiment();
+               experiment.enabled = false;
+
+               assert.equal(
+                       'control',
+                       getBucket( experiment, token ),
+                       'It returns "control" if the experiment is disabled.'
+               );
+
+               // --------
+               experiment = createExperiment();
+               experiment.buckets = {};
+
+               assert.equal(
+                       'control',
+                       getBucket( experiment, token ),
+                       'It returns "control" if the experiment doesn\'t have any buckets.'
+               );
+       } );
+
+}( mediaWiki ) );
index d9fd6a7..7788360 100644 (file)
@@ -98,6 +98,7 @@
         * @return
         */
        function process( tasks, complete ) {
+               /*jshint latedef:false */
                function abort() {
                        tasks.splice( 0, tasks.length );
                        next();
index 3328ce3..3b5915a 100644 (file)
@@ -61,7 +61,7 @@
                        expected = repeat( '\n', n ) + 'some text';
 
                        $textarea = $( '<textarea>\n' + expected + '</textarea>' );
-                       assert.equal( $textarea.val(), expected, 'Expecting ' + n + ' newlines (HTML contained ' + (n + 1) + ')' );
+                       assert.equal( $textarea.val(), expected, 'Expecting ' + n + ' newlines (HTML contained ' + ( n + 1 ) + ')' );
 
                        $textarea = $( '<textarea>' ).val( expected );
                        assert.equal( $textarea.val(), expected, 'Expecting ' + n + ' newlines (from DOM set with ' + n + ')' );
index c8f0011..25db28a 100644 (file)
                this.restoreWarnings();
 
                // Change value via global Map
-               globalConf.set('anotherGlobalMapChecker', 'Again');
+               globalConf.set( 'anotherGlobalMapChecker', 'Again' );
                assert.equal( globalConf.get( 'anotherGlobalMapChecker' ), 'Again', 'Change in global Map reflected via get()' );
                this.suppressWarnings();
                assert.equal( window.anotherGlobalMapChecker, 'Again', 'Change in global Map reflected window object' );
        } );
 
        // @import (bug 31676)
-       QUnit.asyncTest( 'mw.loader.implement( styles has @import)', 5, function ( assert ) {
+       QUnit.asyncTest( 'mw.loader.implement( styles has @import)', 7, function ( assert ) {
                var isJsExecuted, $element;
 
                mw.loader.implement(
                        'test.implement.import',
                        function () {
-                               assert.strictEqual( isJsExecuted, undefined, 'javascript not executed multiple times' );
+                               assert.strictEqual( isJsExecuted, undefined, 'script not executed multiple times' );
                                isJsExecuted = true;
 
-                               assert.equal( mw.loader.getState( 'test.implement.import' ), 'ready', 'module state is "ready" while implement() is executing javascript' );
+                               assert.equal( mw.loader.getState( 'test.implement.import' ), 'loading', 'module state during implement() script execution' );
 
                                $element = $( '<div class="mw-test-implement-import">Foo bar</div>' ).appendTo( '#qunit-fixture' );
 
-                               assert.equal( mw.msg( 'test-foobar' ), 'Hello Foobar, $1!', 'Messages are loaded before javascript execution' );
+                               assert.equal( mw.msg( 'test-foobar' ), 'Hello Foobar, $1!', 'messages load before script execution' );
 
                                assertStyleAsync( assert, $element, 'float', 'right', function () {
                                        assert.equal( $element.css( 'text-align' ), 'center',
                        }
                );
 
-               mw.loader.load( 'test.implement' );
-
+               mw.loader.using( 'test.implement.import' ).always( function () {
+                       assert.strictEqual( isJsExecuted, true, 'script executed' );
+                       assert.equal( mw.loader.getState( 'test.implement.import' ), 'ready', 'module state after script execution' );
+               } );
        } );
 
        QUnit.asyncTest( 'mw.loader.implement( dependency with styles )', 4, function ( assert ) {
index 25bca87..d39d43b 100644 (file)
--- a/thumb.php
+++ b/thumb.php
@@ -190,6 +190,7 @@ function wfStreamThumb( array $params ) {
                                if ( $targetFile->exists() ) {
                                        $newThumbName = $targetFile->thumbName( $params );
                                        if ( $isOld ) {
+                                               /** @var array $bits */
                                                $newThumbUrl = $targetFile->getArchiveThumbUrl(
                                                        $bits[0] . '!' . $targetFile->getName(), $newThumbName );
                                        } else {
@@ -221,7 +222,7 @@ function wfStreamThumb( array $params ) {
                wfThumbErrorText( 404, "The source file '$fileName' does not exist." );
                return;
        } elseif ( $img->getPath() === false ) {
-               wfThumbErrorText( 500, "The source file '$fileName' is not locally accessible." );
+               wfThumbErrorText( 400, "The source file '$fileName' is not locally accessible." );
                return;
        }
 
@@ -316,22 +317,25 @@ function wfStreamThumb( array $params ) {
 
        $user = RequestContext::getMain()->getUser();
        if ( !wfThumbIsStandard( $img, $params ) && $user->pingLimiter( 'renderfile-nonstandard' ) ) {
-               wfThumbError( 500, wfMessage( 'actionthrottledtext' )->parse() );
+               wfThumbError( 429, wfMessage( 'actionthrottledtext' )->parse() );
                return;
        } elseif ( $user->pingLimiter( 'renderfile' ) ) {
-               wfThumbError( 500, wfMessage( 'actionthrottledtext' )->parse() );
+               wfThumbError( 429, wfMessage( 'actionthrottledtext' )->parse() );
                return;
        }
 
        list( $thumb, $errorMsg ) = wfGenerateThumbnail( $img, $params, $thumbName, $thumbPath );
 
-       /** @var MediaTransformOutput|bool $thumb */
+       /** @var MediaTransformOutput|MediaTransformError|bool $thumb */
 
        // Check for thumbnail generation errors...
        $msg = wfMessage( 'thumbnail_error' );
        $errorCode = 500;
        if ( !$thumb ) {
                $errorMsg = $errorMsg ?: $msg->rawParams( 'File::transform() returned false' )->escaped();
+               if ( $errorMsg instanceof MessageSpecifier && $errorMsg->getKey() === 'thumbnail_image-failure-limit' ) {
+                       $errorCode = 429;
+               }
        } elseif ( $thumb->isError() ) {
                $errorMsg = $thumb->getHtmlMsg();
        } elseif ( !$thumb->hasFile() ) {
@@ -412,7 +416,7 @@ function wfGenerateThumbnail( File $file, array $params, $thumbName, $thumbPath
                                'fallback' => function () {
                                        return wfMessage( 'generic-pool-error' )->parse();
                                },
-                               'error' => function ( $status ) {
+                               'error' => function ( Status $status ) {
                                        return $status->getHTML();
                                }
                        )
@@ -427,6 +431,7 @@ function wfGenerateThumbnail( File $file, array $params, $thumbName, $thumbPath
                // Tried to select a page on a non-paged file?
        }
 
+       /** @noinspection PhpUnusedLocalVariableInspection */
        $done = true; // no PHP fatal occured
 
        if ( !$thumb || $thumb->isError() ) {
@@ -497,7 +502,7 @@ function wfExtractThumbRequestInfo( $thumbRel ) {
  */
 function wfExtractThumbParams( $file, $params ) {
        if ( !isset( $params['thumbName'] ) ) {
-               throw new MWException( "No thumbnail name passed to wfExtractThumbParams" );
+               throw new InvalidArgumentException( "No thumbnail name passed to wfExtractThumbParams" );
        }
 
        $thumbname = $params['thumbName'];
@@ -536,7 +541,7 @@ function wfExtractThumbParams( $file, $params ) {
 
        // As a last ditch fallback, use the traditional common parameters
        if ( preg_match( '!^(page(\d*)-)*(\d*)px-[^/]*$!', $thumbname, $matches ) ) {
-               list( /* all */, $pagefull, $pagenum, $size ) = $matches;
+               list( /* all */, /* pagefull */, $pagenum, $size ) = $matches;
                $params['width'] = $size;
                if ( $pagenum ) {
                        $params['page'] = $pagenum;
@@ -551,11 +556,11 @@ function wfExtractThumbParams( $file, $params ) {
  * Output a thumbnail generation error message
  *
  * @param int $status
- * @param string $msg Plain text (will be html escaped)
+ * @param string $msgText Plain text (will be html escaped)
  * @return void
  */
 function wfThumbErrorText( $status, $msgText ) {
-       return wfThumbError( $status, htmlspecialchars( $msgText ) );
+       wfThumbError( $status, htmlspecialchars( $msgText ) );
 }
 
 /**
@@ -570,10 +575,8 @@ function wfThumbError( $status, $msgHtml ) {
 
        header( 'Cache-Control: no-cache' );
        header( 'Content-Type: text/html; charset=utf-8' );
-       if ( $status == 400 ) {
-               HttpStatus::header( 400 );
-       } elseif ( $status == 404 ) {
-               HttpStatus::header( 404 );
+       if ( $status == 400 || $status == 404 || $status == 429 ) {
+               HttpStatus::header( $status );
        } elseif ( $status == 403 ) {
                HttpStatus::header( 403 );
                header( 'Vary: Cookie' );