├── .eslintrc.json ├── .gitignore ├── .gitreview ├── .phan └── config.php ├── .phpcs.xml ├── .stylelintrc.json ├── .svgo.config.js ├── AUTHORS ├── CODE_OF_CONDUCT.md ├── COPYING ├── DEVELOPERS.md ├── Gruntfile.js ├── README.md ├── bundlesize.config.json ├── composer.json ├── extension.json ├── i18n ├── af.json ├── ar.json ├── as.json ├── ast.json ├── atj.json ├── az.json ├── ba.json ├── ban.json ├── bcl.json ├── be-tarask.json ├── be.json ├── bew.json ├── bg.json ├── bgc-arab.json ├── bjn.json ├── blk.json ├── bn.json ├── bqi.json ├── br.json ├── bs.json ├── btm.json ├── ca.json ├── ce.json ├── ckb.json ├── co.json ├── cs.json ├── cy.json ├── da.json ├── de-ch.json ├── de-formal.json ├── de.json ├── diq.json ├── dsb.json ├── el.json ├── en-gb.json ├── en.json ├── eo.json ├── es-formal.json ├── es.json ├── et.json ├── eu.json ├── fa.json ├── fi.json ├── fit.json ├── fr.json ├── frr.json ├── fy.json ├── gcr.json ├── gd.json ├── gl.json ├── gu.json ├── he.json ├── hi.json ├── hr.json ├── hsb.json ├── hu.json ├── hy.json ├── hyw.json ├── ia.json ├── id.json ├── ig.json ├── ilo.json ├── inh.json ├── io.json ├── is.json ├── it.json ├── ja.json ├── jv.json ├── ka.json ├── kaa.json ├── kjp.json ├── kk-cyrl.json ├── km.json ├── kn.json ├── ko.json ├── krc.json ├── ksh.json ├── ky.json ├── lb.json ├── lfn.json ├── lij.json ├── lki.json ├── lmo.json ├── lt.json ├── lv.json ├── lzh.json ├── mg.json ├── min.json ├── mk.json ├── ml.json ├── mr.json ├── ms.json ├── mwl.json ├── my.json ├── nah.json ├── nan-latn-pehoeji.json ├── nap.json ├── nb.json ├── nds-nl.json ├── ne.json ├── nl.json ├── nn.json ├── nqo.json ├── oc.json ├── or.json ├── os.json ├── pa.json ├── pl.json ├── pnb.json ├── ps.json ├── pt-br.json ├── pt.json ├── pwn.json ├── qqq.json ├── qu.json ├── ro.json ├── roa-tara.json ├── ru.json ├── sa.json ├── scn.json ├── sco.json ├── sd.json ├── sdc.json ├── se.json ├── sgs.json ├── shn.json ├── si.json ├── sje.json ├── sk.json ├── skr-arab.json ├── sl.json ├── sma.json ├── smj.json ├── smn.json ├── sms.json ├── sr-ec.json ├── sr-el.json ├── sv.json ├── sw.json ├── szy.json ├── ta.json ├── tcy.json ├── te.json ├── tg-cyrl.json ├── th.json ├── ti.json ├── tig.json ├── tl.json ├── tr.json ├── trv.json ├── tt-cyrl.json ├── uk.json ├── ur.json ├── uz.json ├── vec.json ├── vi.json ├── wa.json ├── xmf.json ├── xsy.json ├── yi.json ├── yue-hant.json ├── zh-hans.json └── zh-hant.json ├── includes └── Hooks.php ├── jsdoc.json ├── package-lock.json ├── package.json ├── resources ├── .eslintrc.json ├── mmv.bootstrap │ ├── mmv.Config.js │ ├── mmv.bootstrap.autostart.js │ ├── mmv.bootstrap.js │ ├── mmv.bootstrap.less │ └── mmv.lightboximage.js ├── mmv.ui.restriction │ ├── img │ │ ├── restrict-2257.svg │ │ ├── restrict-aus-reserve.svg │ │ ├── restrict-communist.svg │ │ ├── restrict-costume.svg │ │ ├── restrict-currency.svg │ │ ├── restrict-default.svg │ │ ├── restrict-design.svg │ │ ├── restrict-fan-art.svg │ │ ├── restrict-ihl.svg │ │ ├── restrict-insignia.svg │ │ ├── restrict-ita-mibac.svg │ │ ├── restrict-nazi.svg │ │ └── restrict-personality.svg │ └── mmv.ui.restriction.less ├── mmv.ui.reuse │ ├── index.js │ ├── mmv.EmbedFileFormatter.js │ ├── mmv.ui.download.dialog.js │ ├── mmv.ui.download.dialog.less │ ├── mmv.ui.download.pane.js │ ├── mmv.ui.reuse.dialog.js │ ├── mmv.ui.reuse.dialog.less │ ├── mmv.ui.reuse.embed.js │ ├── mmv.ui.reuse.share.js │ └── mmv.ui.utils.js └── mmv │ ├── logging │ └── mmv.logging.ViewLogger.js │ ├── mmv.HtmlUtils.js │ ├── mmv.ThumbnailWidthCalculator.js │ ├── mmv.js │ ├── mmv.lightboxinterface.js │ ├── mmv.lightboxinterface.less │ ├── mmv.variables.less │ ├── model │ ├── mmv.model.Image.js │ ├── mmv.model.License.js │ ├── mmv.model.TaskQueue.js │ ├── mmv.model.Thumbnail.js │ └── mmv.model.ThumbnailWidth.js │ ├── provider │ ├── mmv.provider.Api.js │ ├── mmv.provider.GuessedThumbnailInfo.js │ ├── mmv.provider.Image.js │ ├── mmv.provider.ImageInfo.js │ ├── mmv.provider.ThumbnailInfo.js │ └── mmv.provider.js │ └── ui │ ├── checker.png │ ├── img │ └── error-media-icon.svg │ ├── mmv.ui.canvas.js │ ├── mmv.ui.canvas.less │ ├── mmv.ui.canvasButtons.js │ ├── mmv.ui.canvasButtons.less │ ├── mmv.ui.description.js │ ├── mmv.ui.dialog.js │ ├── mmv.ui.dialog.less │ ├── mmv.ui.js │ ├── mmv.ui.metadataPanel.js │ ├── mmv.ui.metadataPanel.less │ ├── mmv.ui.metadataPanelScroller.js │ ├── mmv.ui.metadataPanelScroller.less │ ├── mmv.ui.permission.js │ ├── mmv.ui.permission.less │ ├── mmv.ui.progressBar.js │ ├── mmv.ui.progressBar.less │ ├── mmv.ui.stripeButtons.js │ ├── mmv.ui.stripeButtons.less │ ├── mmv.ui.truncatableTextField.js │ └── mmv.ui.truncatableTextField.less └── tests ├── phpunit ├── HooksTest.php └── structure │ └── BundleSizeTest.php └── qunit ├── .eslintrc.json └── mmv ├── index.js ├── logging └── mmv.logging.ViewLogger.test.js ├── mmv.Config.test.js ├── mmv.EmbedFileFormatter.test.js ├── mmv.HtmlUtils.test.js ├── mmv.ThumbnailWidthCalculator.test.js ├── mmv.bootstrap.test.js ├── mmv.lightboximage.test.js ├── mmv.lightboxinterface.test.js ├── mmv.test.js ├── mmv.testhelpers.js ├── model ├── mmv.model.Image.test.js ├── mmv.model.License.test.js ├── mmv.model.Repo.test.js ├── mmv.model.TaskQueue.test.js └── mmv.model.test.js ├── provider ├── mmv.provider.Api.test.js ├── mmv.provider.GuessedThumbnailInfo.test.js ├── mmv.provider.Image.test.js ├── mmv.provider.ImageInfo.test.js └── mmv.provider.ThumbnailInfo.test.js └── ui ├── mmv.ui.canvas.test.js ├── mmv.ui.canvasButtons.test.js ├── mmv.ui.description.test.js ├── mmv.ui.download.pane.test.js ├── mmv.ui.metadataPanel.test.js ├── mmv.ui.metadataPanelScroller.test.js ├── mmv.ui.permission.test.js ├── mmv.ui.progressBar.test.js ├── mmv.ui.reuse.dialog.test.js ├── mmv.ui.reuse.embed.test.js ├── mmv.ui.reuse.share.test.js ├── mmv.ui.reuse.utils.test.js ├── mmv.ui.stripeButtons.test.js ├── mmv.ui.test.js └── mmv.ui.truncatableTextField.test.js /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "extends": [ 4 | "wikimedia/server" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | docs/ 2 | node_modules/ 3 | vendor/ 4 | /composer.lock 5 | .eslintcache 6 | *swp 7 | /.stylelintcache 8 | -------------------------------------------------------------------------------- /.gitreview: -------------------------------------------------------------------------------- 1 | [gerrit] 2 | host=gerrit.wikimedia.org 3 | port=29418 4 | project=mediawiki/extensions/MultimediaViewer.git 5 | track=1 6 | defaultrebase=0 -------------------------------------------------------------------------------- /.phan/config.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | . 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.stylelintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "stylelint-config-wikimedia/mediawiki", 4 | "stylelint-config-wikimedia/support-modern" 5 | ], 6 | "reportNeedlessDisables": true, 7 | "rules": { 8 | "declaration-property-unit-disallowed-list": null, 9 | "no-descending-specificity": null, 10 | "unit-disallowed-list": null, 11 | "selector-class-pattern": null 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /.svgo.config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SVGO Configuration 3 | * Compatible to v3.0.0+ 4 | * Recommended options from: 5 | * https://www.mediawiki.org/wiki/Manual:Coding_conventions/SVG#Exemplified_safe_configuration 6 | */ 7 | 8 | module.exports = { 9 | plugins: [ 10 | { 11 | // Set of built-in plugins enabled by default. 12 | name: 'preset-default', 13 | params: { 14 | overrides: { 15 | cleanupIds: false, 16 | removeDesc: false, 17 | removeTitle: false, 18 | removeViewBox: false, 19 | // If the SVG doesn't start with an XML declaration, then its MIME type will 20 | // be detected as "text/plain" rather than "image/svg+xml" by libmagic and, 21 | // consequently, MediaWiki's CSSMin CSS minifier. libmagic's default database 22 | // currently requires that SVGs contain an XML declaration: 23 | // https://github.com/threatstack/libmagic/blob/master/magic/Magdir/sgml#L5 24 | removeXMLProcInst: false 25 | } 26 | } 27 | }, 28 | 'removeRasterImages', 29 | 'sortAttrs' 30 | ], 31 | // Set whitespace according to Wikimedia Coding Conventions. 32 | // @see https://github.com/svg/svgo/blob/main/lib/stringifier.js#L39 for more config options 33 | js2svg: { 34 | eol: 'lf', 35 | finalNewline: true, 36 | // Configure the indent to tabs (default 4 spaces) used by `--pretty` here. 37 | indent: '\t', 38 | pretty: true 39 | }, 40 | multipass: true 41 | }; 42 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | * Gergő Tisza 2 | * Gilles Dubuc 3 | * Mark Holmquist 4 | * Simon Legner 5 | * Ed Sanders 6 | * Pau Giner 7 | * James D. Forrester 8 | * Željko Filipin 9 | * fomafix 10 | * Volker E 11 | * Kunal Mehta 12 | * Umherirrender 13 | * Timo Tijhof 14 | * Aaron Arcos 15 | * Thiemo Kreuz 16 | * Matthias Mullie 17 | * Jon Robson 18 | * Derk-Jan Hartman 19 | * Chris McMahon 20 | * Bartosz Dziewoński 21 | 22 | Generated with git log --format='%aN <%aE>' | sort | uniq --count | sort --reverse --numeric-sort using https://github.com/wikimedia/mediawiki/blob/master/.mailmap 23 | Manually pruned for bots and cutoff at 10 contributions. 24 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | The development of this software is covered by a [Code of Conduct](https://www.mediawiki.org/wiki/Special:MyLanguage/Code_of_Conduct). 2 | -------------------------------------------------------------------------------- /DEVELOPERS.md: -------------------------------------------------------------------------------- 1 | # Developer tooling 2 | 3 | CI will test your patches for code style and quality issues. 4 | 5 | You can run this locally with `npm lint`, or `grunt lint` if you have `grunt` installed globally. 6 | 7 | If you wish, you can have the linting code try to auto-fix trivial style errors by passing the `fix` option in: `grunt lint --fix`. 8 | 9 | For an extensive series of fixes in this area, you may wish to add shell aliases like `alias lintfix='grunt lint --fix' ; alias jsfix='grunt eslint --fix' ; alias cssfix='grunt stylelint --fix'` to your `~/.bashrc` file or its equivalent, which will add three shorter commands to fix everything, just JavaScript, and just style files respectively. You could also use shorted custom commands if you wish. 10 | -------------------------------------------------------------------------------- /Gruntfile.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = function ( grunt ) { 4 | const conf = grunt.file.readJSON( 'extension.json' ); 5 | 6 | grunt.loadNpmTasks( 'grunt-banana-checker' ); 7 | grunt.loadNpmTasks( 'grunt-eslint' ); 8 | grunt.loadNpmTasks( 'grunt-stylelint' ); 9 | 10 | grunt.initConfig( { 11 | banana: conf.MessagesDirs, 12 | eslint: { 13 | options: { 14 | cache: true, 15 | fix: grunt.option( 'fix' ) 16 | }, 17 | all: [ 18 | '**/*.{js,json}', 19 | '!{vendor,node_modules,docs}/**' 20 | ] 21 | }, 22 | stylelint: { 23 | options: { 24 | fix: grunt.option( 'fix' ), 25 | cache: true 26 | }, 27 | src: 'resources/mmv/**/*.{css,less}' 28 | }, 29 | // Image Optimization 30 | svgmin: { 31 | options: { 32 | js2svg: { 33 | indent: '\t', 34 | pretty: true 35 | }, 36 | multipass: true, 37 | plugins: [ { 38 | cleanupIDs: false 39 | }, { 40 | removeDesc: false 41 | }, { 42 | removeRasterImages: true 43 | }, { 44 | removeTitle: false 45 | }, { 46 | removeViewBox: false 47 | }, { 48 | removeXMLProcInst: false 49 | }, { 50 | sortAttrs: true 51 | } ] 52 | }, 53 | all: { 54 | files: [ { 55 | expand: true, 56 | cwd: 'resources', 57 | src: [ 58 | '**/*.svg' 59 | ], 60 | dest: 'resources/', 61 | ext: '.svg' 62 | } ] 63 | } 64 | } 65 | } ); 66 | 67 | grunt.registerTask( 'lint', [ 'eslint', 'stylelint', 'banana' ] ); 68 | 69 | grunt.registerTask( 'test', 'lint' ); 70 | grunt.registerTask( 'default', [ 'test' ] ); 71 | }; 72 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # MultimediaViewer 2 | 3 | Provided interface for viewing full-size, or nearly full-size, images in their browser without extraneous page loads or confusing interstitial pages. 4 | -------------------------------------------------------------------------------- /bundlesize.config.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "resourceModule": "mmv", 4 | "maxSize": "25.3 kB" 5 | }, 6 | { 7 | "resourceModule": "mmv.ui.restriction", 8 | "maxSize": "0.5 kB" 9 | }, 10 | { 11 | "resourceModule": "mmv.codex", 12 | "maxSize": "5.7 kB" 13 | }, 14 | { 15 | "resourceModule": "mmv.ui.reuse", 16 | "maxSize": "5.7 kB" 17 | }, 18 | { 19 | "resourceModule": "mmv.bootstrap", 20 | "maxSize": "4.8 kB" 21 | } 22 | ] 23 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "require-dev": { 3 | "mediawiki/mediawiki-codesniffer": "47.0.0", 4 | "mediawiki/mediawiki-phan-config": "0.15.1", 5 | "mediawiki/minus-x": "1.1.3", 6 | "php-parallel-lint/php-console-highlighter": "1.0.0", 7 | "php-parallel-lint/php-parallel-lint": "1.4.0" 8 | }, 9 | "scripts": { 10 | "fix": [ 11 | "minus-x fix .", 12 | "phpcbf" 13 | ], 14 | "test": [ 15 | "parallel-lint . --exclude vendor --exclude node_modules", 16 | "@phpcs", 17 | "minus-x check ." 18 | ], 19 | "phan": "phan -d . --long-progress-bar", 20 | "phpcs": "phpcs -sp --cache" 21 | }, 22 | "config": { 23 | "allow-plugins": { 24 | "dealerdirect/phpcodesniffer-composer-installer": true 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /i18n/atj.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Benoit Rochon" 5 | ] 6 | }, 7 | "multimediaviewer-title-popup-text": "E witcikemakak" 8 | } 9 | -------------------------------------------------------------------------------- /i18n/ba.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Bashkorttan" 5 | ] 6 | }, 7 | "multimediaviewer-repository-local": "Ентеклерәк", 8 | "multimediaviewer-datetime-created": "Яһалған: $1", 9 | "multimediaviewer-datetime-uploaded": "Йөкләнгән: $1", 10 | "multimediaviewer-credit-fallback": "Авторҙ мәғлүмәттәрен ҡарау", 11 | "multimediaviewer-multiple-authors": "Тағы {{PLURAL:$1|бер автор|$1 автор}}", 12 | "multimediaviewer-multiple-authors-combine": "$1 һәм $2", 13 | "multimediaviewer-metadata-error": "Рәсем мәғлүмәттәрен йөкләп булманы (хата: $1)", 14 | "multimediaviewer-file-not-found-error": "Ағымдағы биттә булмағанлыҡтан $1 файлын күрһәтеп булмай.", 15 | "multimediaviewer-thumbnail-error": "Ғәфү итегеҙ, файлды күрһәтеп булмай", 16 | "multimediaviewer-thumbnail-error-description": "Техник проблема булған кеүек. Дауам иткән осраҡта $1 алаһығыҙ. Хата: $2", 17 | "multimediaviewer-thumbnail-error-retry": "ҡабатлай", 18 | "multimediaviewer-thumbnail-error-report": "хата белдерә" 19 | } 20 | -------------------------------------------------------------------------------- /i18n/bcl.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Brazal.dang", 5 | "Geopoet" 6 | ] 7 | }, 8 | "multimediaviewer-permission-title": "Detalye kan pagtugot", 9 | "multimediaviewer-permission-link": "Hilngon an mga termino" 10 | } 11 | -------------------------------------------------------------------------------- /i18n/be-tarask.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Red Winged Duck", 5 | "Renessaince" 6 | ] 7 | }, 8 | "multimediaviewer-desc": "Разгарнуць мініятуры большага памеру ў поўнаэкранным інтэрфэйсе", 9 | "multimediaviewer-optin-pref": "Уключыць [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Media_Viewer/About мэдыяпраглядальнік]", 10 | "multimediaviewer-file-page": "Перайсьці на старонку адпаведнага файлу", 11 | "multimediaviewer-repository-local": "Падрабязьней", 12 | "multimediaviewer-datetime-created": "Створаны: $1", 13 | "multimediaviewer-datetime-uploaded": "Загружана: $1", 14 | "multimediaviewer-credit": "$1 — $2", 15 | "multimediaviewer-credit-fallback": "Паказаць інфармацыю пра аўтара", 16 | "multimediaviewer-multiple-authors": "{{PLURAL:$1|яшчэ адзін аўтар|$1 іншыя аўтары|$1 іншых аўтараў}}", 17 | "multimediaviewer-multiple-authors-combine": "$1 і $2", 18 | "multimediaviewer-thumbnail-error-retry": "паўтарыць", 19 | "multimediaviewer-license-cc-pd": "Грамадзкі набытак", 20 | "multimediaviewer-permission-link": "паказаць умовы", 21 | "multimediaviewer-geolocation": "Месцазнаходжаньне: $1", 22 | "multimediaviewer-reuse-link": "Падзяліцца або выкарыстаць гэты файл", 23 | "multimediaviewer-share-tab": "Падзяліцца", 24 | "multimediaviewer-embed-tab": "Выкарыстаць", 25 | "multimediaviewer-download-link": "Спампаваць гэты файл", 26 | "multimediaviewer-share-explanation": "Скапіюйце і свабодна дзяліцеся спасылкай", 27 | "multimediaviewer-embed-wt": "Вікітэкст", 28 | "multimediaviewer-embed-html": "HTML", 29 | "multimediaviewer-embed-explanation": "Выкарыстоўвайце гэты код для ўстаўкі файла", 30 | "multimediaviewer-default-embed-dimensions": "Памер мініятуры па змоўчаньні", 31 | "multimediaviewer-original-embed-dimensions": "Першапачатковы файл $1", 32 | "multimediaviewer-large-embed-dimensions": "Вялікі памер $1", 33 | "multimediaviewer-medium-embed-dimensions": "Сярэдні памер $1", 34 | "multimediaviewer-small-embed-dimensions": "Малы памер $1", 35 | "multimediaviewer-view-expanded": "Адкрыць у мэдыяпраглядальніку", 36 | "multimediaviewer-close-popup-text": "Закрыць гэты інструмэнт (Esc)", 37 | "multimediaviewer-fullscreen-popup-text": "Паказаць на ўвесь экран", 38 | "multimediaviewer-disable-confirmation-header": "Вы адключылі мэдыяпраглядальнік", 39 | "multimediaviewer-disable-confirmation-text": "Наступны раз, калі вы націсьніце на мініятуру на сайце $1, вы наўпрост пабачыце ўсе зьвесткі пра файл.", 40 | "multimediaviewer-enable-text-header": "Уключыць гэтую функцыю мэдыяпрагляду па змоўчаньні для ўсіх файлаў.", 41 | "multimediaviewer-enable-submit-button": "Уключыць мэдыяпраглядальнік", 42 | "multimediaviewer-enable-confirmation-header": "Вы ўключылі мэдыяпраглядальнік для ўсіх файлаў", 43 | "multimediaviewer-enable-confirmation-text": "Наступны раз, калі вы націсьніце на мініятуру на сайце $1, будзе выкарыстаны мэдыяпраглядальнік.", 44 | "multimediaviewer-enable-alert": "Мэдыяпраглядальнік цяпер адключаны", 45 | "multimediaviewer-errorreport-privacywarning": "Падрабязнасьці памылкі далучаныя да справаздачы, якая будзе публічна даступнай. Калі вас гэта не задавальняе, можаце выправіць справаздачу ўнізе, выдаліўшы тыя зьвесткі, якімі вы ня хочаце дзяліцца." 46 | } 47 | -------------------------------------------------------------------------------- /i18n/bg.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "DCLXVI", 5 | "Kareyac", 6 | "Mitzev", 7 | "ShockD", 8 | "StanProg", 9 | "Vodnokon4e" 10 | ] 11 | }, 12 | "multimediaviewer-optin-pref": "Включване на [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Media_Viewer/About Media Viewer]", 13 | "multimediaviewer-datetime-created": "Създадено: $1", 14 | "multimediaviewer-multiple-authors-combine": "$1 и $2", 15 | "multimediaviewer-permission-title": "Данни за разрешението", 16 | "multimediaviewer-permission-link": "преглед на условията", 17 | "multimediaviewer-permission-viewmore": "Вижте още", 18 | "multimediaviewer-share-tab": "Споделяне", 19 | "multimediaviewer-embed-wt": "Уикитекст", 20 | "multimediaviewer-view-expanded": "Отваряне в Media Viewer", 21 | "multimediaviewer-title-popup-text": "Описание", 22 | "multimediaviewer-title-popup-text-more": "Преглед на пълното описание", 23 | "multimediaviewer-credit-popup-text-more": "Показване на цялостна информация за автора и източника", 24 | "multimediaviewer-disable-confirmation-header": "Вие изключихте Media Viewer", 25 | "multimediaviewer-enable-dialog-header": "Включване на Media Viewer?", 26 | "multimediaviewer-enable-submit-button": "Включване на Media Viewer", 27 | "multimediaviewer-enable-confirmation-header": "Вие включихте Media Viewer за всички файлове", 28 | "multimediaviewer-enable-alert": "Media Viewer е изключен", 29 | "multimediaviewer-disable-info-title": "Вие изключихте Media Viewer", 30 | "multimediaviewer-disable-info": "Все още можете да преглеждате отделни файлове с Media Viewer." 31 | } 32 | -------------------------------------------------------------------------------- /i18n/bgc-arab.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "امین اکبر" 5 | ] 6 | }, 7 | "multimediaviewer-download": "ڈاؤن لوڈ" 8 | } 9 | -------------------------------------------------------------------------------- /i18n/bjn.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Ezagren" 5 | ] 6 | }, 7 | "multimediaviewer-optin-pref": "Nyalaakan [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Media_Viewer/About Panampai Média]", 8 | "multimediaviewer-permission-link": "tampaiakan katantuan", 9 | "multimediaviewer-view-expanded": "Buka di Panampai Média", 10 | "multimediaviewer-enable-dialog-header": "Nyalaakan Panampai Média?", 11 | "multimediaviewer-enable-text-header": "Nyalaakan fitur panampai média ini gasan samunyaan barakas sacara baku.", 12 | "multimediaviewer-enable-submit-button": "Nyalaakan Panampai Média" 13 | } 14 | -------------------------------------------------------------------------------- /i18n/blk.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "咽頭べさ" 5 | ] 6 | }, 7 | "multimediaviewer-permission-viewmore": "ထွားသမ်းထဲင်း", 8 | "multimediaviewer-small-embed-dimensions": "အပေႏ $1" 9 | } 10 | -------------------------------------------------------------------------------- /i18n/bqi.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Mogoeilor" 5 | ] 6 | }, 7 | "multimediaviewer-repository-local": "جوزئیات بیشتر", 8 | "multimediaviewer-datetime-created": "راس ڤابی: $1", 9 | "multimediaviewer-datetime-uploaded": "سوڤارکرد ڤابی: $1", 10 | "multimediaviewer-multiple-authors-combine": "$1 و $2", 11 | "multimediaviewer-thumbnail-error-retry": "ز نۉ تلاش کردن", 12 | "multimediaviewer-license-cc-pd": "پۊشگر خٱلکمٱند", 13 | "multimediaviewer-license-pd": "پۊشگر خٱلکمٱند", 14 | "multimediaviewer-license-default": "دیڌن لایسنس", 15 | "multimediaviewer-permission-viewmore": "بیشتر ساٛیل کونین", 16 | "multimediaviewer-geolocation": "جاگٱ: $1", 17 | "multimediaviewer-reuse-loading-placeholder": "ب هال و بال سوڤار كرد...", 18 | "multimediaviewer-share-tab": "هومبٱئر کردن", 19 | "multimediaviewer-embed-tab": "رٱهڌاْ ڤامیٛن", 20 | "multimediaviewer-download-link": "ای جانیا ناْ سوڤار کونین", 21 | "multimediaviewer-download-original-button-name": "گرهڌن جانیا ٱسلی", 22 | "multimediaviewer-download-small-button-name": "گرهدن میٛن ٱندازاْ کۊچیر", 23 | "multimediaviewer-download-medium-button-name": "گرهڌن میٛن ٱندازاْ میٛنجقایی", 24 | "multimediaviewer-download-large-button-name": "گرهڌن میٛن ٱندازاْ گٱپ", 25 | "multimediaviewer-embed-wt": "ڤیکی تکست", 26 | "multimediaviewer-embed-html": "اْچ تی اْم اْل", 27 | "multimediaviewer-text-embed-credit-text-bl": "ڤا $1, $2, $3", 28 | "multimediaviewer-text-embed-credit-text-b": "ڤا $1, $2", 29 | "multimediaviewer-html-embed-credit-text-bl": "ڤا $1, $2, $3", 30 | "multimediaviewer-html-embed-credit-text-b": "ڤا $1, $2", 31 | "multimediaviewer-html-embed-credit-link-text": "هوم پاٛیڤٱند", 32 | "multimediaviewer-embed-byline": "ڤا $1", 33 | "multimediaviewer-embed-via": "ڤیا $1.", 34 | "multimediaviewer-original-embed-dimensions": "جانیا ٱسلی$1", 35 | "multimediaviewer-large-embed-dimensions": "گٱپ $1", 36 | "multimediaviewer-medium-embed-dimensions": "میٛنجقا $1", 37 | "multimediaviewer-small-embed-dimensions": "کۊچیر $1", 38 | "multimediaviewer-view-config": "میزونکاری", 39 | "multimediaviewer-close-popup-text": "چونو ٱڤزاری نٱ بیٛڤٱندین (Esc)", 40 | "multimediaviewer-title-popup-text": "تۉزی", 41 | "multimediaviewer-download-attribution-cta": "نشونم بڌاْ چ جۊراْ" 42 | } 43 | -------------------------------------------------------------------------------- /i18n/btm.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Simartampua" 5 | ] 6 | }, 7 | "multimediaviewer-thumbnail-error-description": "Songon nadong kasalahan teknis. Amu dapot $1 molo torus marlanjut. Error:$2" 8 | } 9 | -------------------------------------------------------------------------------- /i18n/ckb.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Aram", 5 | "Asoxor", 6 | "Lost Whispers", 7 | "Pirehelokan", 8 | "Sarchia", 9 | "Épine" 10 | ] 11 | }, 12 | "multimediaviewer-optin-pref": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Media_Viewer/About چاولێکەری میدیا] چالاک بکە", 13 | "multimediaviewer-repository-local": "وردەکاریی زیاتر", 14 | "multimediaviewer-datetime-created": "دروست کراوە لە: $1", 15 | "multimediaviewer-datetime-uploaded": "بارکراوە لە: $1", 16 | "multimediaviewer-credit-fallback": "زانیاری سەبارەت بە بەرھەمھێنەر", 17 | "multimediaviewer-multiple-authors-combine": "$1 و $2", 18 | "multimediaviewer-thumbnail-error-retry": "ھەوڵدانەوە", 19 | "multimediaviewer-license-cc-pd": "پاوانی گشتی", 20 | "multimediaviewer-license-pd": "پاوانی گشتی", 21 | "multimediaviewer-license-default": "مۆڵەتنامەکەی ببینە", 22 | "multimediaviewer-permission-viewmore": "زیاتر ببینە", 23 | "multimediaviewer-restriction-communist": "ئەم وێنەیە ئاڵای کۆمۆنیستی تێدایە کە ڕەنگە لە بڕێک وڵاتەکاندا قەدەغەکراو بێت.", 24 | "multimediaviewer-restriction-costume": "ئەم وێنەیە کاستومینگ پیشان دەدات و ڕەنگە کێشەی یاسایی ھەبێت.", 25 | "multimediaviewer-restriction-currency": "ئەم پەڕەیە یەکینەی پارەیەک پیشان دەدات کە ڕەنگە قەدەغەکراو بێت.", 26 | "multimediaviewer-restriction-design": " ڕەنگە داڕشتنی ناوەرۆکی ئەم وێنەیە لە ژێر مافی کۆپیدا بێت و کێشەی یاسایی ھەبێت.", 27 | "multimediaviewer-restriction-fan-art": "ئەم وێنەیە کاری ھۆگرێکی ھونەرە و ڕەنگە بەکارھێنانەوەی کێشەی یاسایی ھەبێت.", 28 | "multimediaviewer-restriction-ihl": "ئەم وێنەیە بڕێک نیشانەی تێدایە کە لە لایەن یاسای نێودەوڵەتیی مرۆڤایەتییەوە قەدەغە کراوە.", 29 | "multimediaviewer-restriction-nazi": "ئەم وێنەیە ئاڵای نازی یان ناوەرۆکی فاشیستیی تری تێدایە کە ڕەنگە لە بڕێک وڵاتەکاندا قەدەغەکراو بێت.", 30 | "multimediaviewer-restriction-default": "ڕەنگە ئەم وێنەیە کێشەی یاسایی ببێت سەبارەت بە مافی کۆپی کردنەوە. بۆ زانیاریی زیاتر پەڕەی وەسفی فایلەکە ببینە.", 31 | "multimediaviewer-geolocation": "شوێن: $1", 32 | "multimediaviewer-reuse-loading-placeholder": "بارکردن...", 33 | "multimediaviewer-download-link": "ئەم پەڕگەیە دابگرە", 34 | "multimediaviewer-embed-via": "لە ڕێگەی $1ـەوە.", 35 | "multimediaviewer-large-embed-dimensions": "گەورە $1", 36 | "multimediaviewer-medium-embed-dimensions": "نێونجی $1", 37 | "multimediaviewer-small-embed-dimensions": "بچووک $1", 38 | "multimediaviewer-view-expanded": "کردنەوە لە نیشاندەری میدیادا", 39 | "multimediaviewer-close-popup-text": "ئەم ئامرازە دا بخە (Esc)", 40 | "multimediaviewer-title-popup-text": "وەسف", 41 | "multimediaviewer-credit-popup-text": "زانیاریی بەرھەمھێنەر و سەرچاوە", 42 | "multimediaviewer-title-popup-text-more": "وەسفی تەواو ببینە", 43 | "multimediaviewer-credit-popup-text-more": "بەرھەمھێنەر و سەرچاوە بە تەواوی ببینە", 44 | "multimediaviewer-download-attribution-cta": "نیشانم بدە چۆن", 45 | "multimediaviewer-attr-plain": "ئاسایی", 46 | "multimediaviewer-enable-dialog-header": "چالاککردنی نیشاندەری میدیا؟", 47 | "multimediaviewer-enable-submit-button": "چالاککردنی نیشاندەری میدیا" 48 | } 49 | -------------------------------------------------------------------------------- /i18n/co.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Jumpy01" 5 | ] 6 | }, 7 | "multimediaviewer-repository-local": "Più detagli" 8 | } 9 | -------------------------------------------------------------------------------- /i18n/da.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Christian List", 5 | "Saederup92", 6 | "Weblars" 7 | ] 8 | }, 9 | "multimediaviewer-desc": "Udvid miniaturebilleder i en større størrelse på en fuld skærm.", 10 | "multimediaviewer-optin-pref": "Aktiver [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Media_Viewer/About Media Viewer]", 11 | "multimediaviewer-file-page": "Gå til tilsvarende filside", 12 | "multimediaviewer-repository-local": "Flere detaljer", 13 | "multimediaviewer-datetime-created": "Oprettet: $1", 14 | "multimediaviewer-datetime-uploaded": "Uploadet: $1", 15 | "multimediaviewer-multiple-authors-combine": "$1 og $2", 16 | "multimediaviewer-license-cc-pd": "Offentlig ejendom", 17 | "multimediaviewer-license-default": "Se licens", 18 | "multimediaviewer-permission-viewmore": "Vis mere", 19 | "multimediaviewer-geolocation": "Sted: $1", 20 | "multimediaviewer-reuse-link": "Brug eller indlejre denne fil", 21 | "multimediaviewer-reuse-loading-placeholder": "Indlæser...", 22 | "multimediaviewer-share-tab": "Del", 23 | "multimediaviewer-download-link": "Hent denne fil", 24 | "multimediaviewer-download-preview-link-title": "Se i browser", 25 | "multimediaviewer-embed-wt": "Wikitekst", 26 | "multimediaviewer-embed-html": "HTML", 27 | "multimediaviewer-text-embed-credit-text-bl": "Af $1, $2, $3", 28 | "multimediaviewer-text-embed-credit-text-b": "Af $1, $2", 29 | "multimediaviewer-html-embed-credit-text-bl": "Af $1, $2, $3", 30 | "multimediaviewer-html-embed-credit-text-b": "Af $1, $2", 31 | "multimediaviewer-embed-byline": "Af $1", 32 | "multimediaviewer-embed-via": "Via $1.", 33 | "multimediaviewer-large-embed-dimensions": "Stor $1", 34 | "multimediaviewer-medium-embed-dimensions": "Mellem $1", 35 | "multimediaviewer-small-embed-dimensions": "Lille $1", 36 | "multimediaviewer-fullscreen-popup-text": "Vis i fuldskærm", 37 | "multimediaviewer-defullscreen-popup-text": "Afslut fuldskærm", 38 | "multimediaviewer-next-image-alt-text": "Vis næste billede", 39 | "multimediaviewer-prev-image-alt-text": "Vis forrige billede", 40 | "multimediaviewer-title-popup-text": "Beskrivelse", 41 | "multimediaviewer-title-popup-text-more": "Se fuld beskrivelse", 42 | "multimediaviewer-download-attribution-cta": "Vis mig hvordan", 43 | "multimediaviewer-enable-dialog-header": "Aktiver Media Viewer?", 44 | "multimediaviewer-enable-submit-button": "Aktiver Media Viewer" 45 | } 46 | -------------------------------------------------------------------------------- /i18n/de-ch.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Filzstift" 5 | ] 6 | }, 7 | "multimediaviewer-desc": "Ermöglicht die Darstellung von Vorschaubildern in einer Vollbildschnittstelle" 8 | } 9 | -------------------------------------------------------------------------------- /i18n/de-formal.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Kghbln" 5 | ] 6 | }, 7 | "multimediaviewer-download-attribution-cta-header": "Sie müssen den Urheber angeben", 8 | "multimediaviewer-download-attribution-cta": "Zeigen Sie mir wie" 9 | } 10 | -------------------------------------------------------------------------------- /i18n/diq.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "1917 Ekim Devrimi", 5 | "Asmen", 6 | "Mirzali", 7 | "Orbot707" 8 | ] 9 | }, 10 | "multimediaviewer-datetime-created": "Tarixê vıraştışi: $1", 11 | "multimediaviewer-datetime-uploaded": "Tarixê barbiyayışi: $1", 12 | "multimediaviewer-thumbnail-error-retry": "anciya bıcerrebne", 13 | "multimediaviewer-permission-viewmore": "Zêde bıvêne", 14 | "multimediaviewer-geolocation": "Lokasyon:$1", 15 | "multimediaviewer-share-tab": "Vıla ke", 16 | "multimediaviewer-embed-tab": "Degusne", 17 | "multimediaviewer-download-link": "Na dosya biya war", 18 | "multimediaviewer-download-preview-link-title": "Browser de bıvinê", 19 | "multimediaviewer-download-original-button-name": "Dosya oricinal rone", 20 | "multimediaviewer-download-small-button-name": "Ebatê werdi rone", 21 | "multimediaviewer-download-medium-button-name": "Ebatê wertey rone", 22 | "multimediaviewer-download-large-button-name": "Ebatê gırsi rone", 23 | "multimediaviewer-download-xl-button-name": "Ebatê zêde gırsi rone", 24 | "multimediaviewer-embed-wt": "Wikimetin", 25 | "multimediaviewer-embed-html": "HTML", 26 | "multimediaviewer-text-embed-credit-text-bl": "$1, $2, $3", 27 | "multimediaviewer-text-embed-credit-text-b": "$1, $2", 28 | "multimediaviewer-text-embed-credit-text-l": "$1, $2", 29 | "multimediaviewer-html-embed-credit-text-bl": "$1, $2, $3", 30 | "multimediaviewer-html-embed-credit-text-b": "$1, $2", 31 | "multimediaviewer-html-embed-credit-text-l": "$1, $2", 32 | "multimediaviewer-html-embed-credit-link-text": "Gıre", 33 | "multimediaviewer-embed-byline": "$1 ra", 34 | "multimediaviewer-embed-license": "Bınê $1 de lisans kerdo", 35 | "multimediaviewer-embed-via": "$1 rayo", 36 | "multimediaviewer-original-embed-dimensions": "Dosyaya oricinale $1", 37 | "multimediaviewer-small-embed-dimensions": "Werdi $1", 38 | "multimediaviewer-title-popup-text": "Şınasnayış" 39 | } 40 | -------------------------------------------------------------------------------- /i18n/dsb.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Michawiki" 5 | ] 6 | }, 7 | "multimediaviewer-desc": "Miniaturki w pówjerchu połneje wobrazowki powětsyś.", 8 | "multimediaviewer-file-page": "K pśisłušnemu datajowemu bokoju", 9 | "multimediaviewer-repository-local": "Dalšne informacije", 10 | "multimediaviewer-datetime-created": "Napórany $1", 11 | "multimediaviewer-datetime-uploaded": "Nagraty $1", 12 | "multimediaviewer-license-cc-pd": "Zjawnosći pśistupny", 13 | "multimediaviewer-license-default": "Licencu se woglědaś", 14 | "multimediaviewer-geolocation": "Městno: $1", 15 | "multimediaviewer-reuse-link": "Toś tu dataju wužywaś" 16 | } 17 | -------------------------------------------------------------------------------- /i18n/en-gb.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Bjh21", 5 | "Caliburn", 6 | "Reedy", 7 | "Shirayuki" 8 | ] 9 | }, 10 | "multimediaviewer-license-default": "View licence", 11 | "multimediaviewer-reuse-warning-nonfree": "This file does not have a free licence." 12 | } 13 | -------------------------------------------------------------------------------- /i18n/es-formal.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Baffo", 5 | "DJ Nietzsche", 6 | "Jduranboger" 7 | ] 8 | }, 9 | "multimediaviewer-desc": "Expande las miniaturas a un tamaño mayor en modo de pantalla completa.", 10 | "multimediaviewer-optin-pref": "Habilita nueva experiencia de visualización multimedia", 11 | "multimediaviewer-file-page": "Ir a la página del archivo", 12 | "multimediaviewer-repository-local": "Aprende más", 13 | "multimediaviewer-datetime-created": "Creado en $1", 14 | "multimediaviewer-datetime-uploaded": "Subido en $1", 15 | "multimediaviewer-metadata-error": "Error: No se puede cargar datos de la imagen. $1", 16 | "multimediaviewer-thumbnail-error": "Error: No se puede cargar datos de la miniatura. $1", 17 | "multimediaviewer-license-cc-pd": "Dominio Público", 18 | "multimediaviewer-license-pd": "Dominio Público", 19 | "multimediaviewer-license-default": "Ver licencia", 20 | "multimediaviewer-permission-title": "Detalles de la licencia", 21 | "multimediaviewer-permission-link": "ver términos", 22 | "multimediaviewer-permission-viewmore": "Ver más", 23 | "multimediaviewer-geolocation": "Ubicación: $1", 24 | "multimediaviewer-reuse-link": "Compartir o Insertar este archivo", 25 | "multimediaviewer-reuse-loading-placeholder": "Cargando...", 26 | "multimediaviewer-share-tab": "Compartir", 27 | "multimediaviewer-embed-tab": "Incrustar", 28 | "multimediaviewer-download-link": "Descargar", 29 | "multimediaviewer-download-preview-link-title": "Previsualizar en navegador", 30 | "multimediaviewer-download-original-button-name": "Descargar tamaño original", 31 | "multimediaviewer-download-small-button-name": "Descargar tamaño pequeño", 32 | "multimediaviewer-download-medium-button-name": "Descargar tamaño mediano", 33 | "multimediaviewer-download-large-button-name": "Descargar tamaño grande", 34 | "multimediaviewer-link-to-page": "Enlace a la página de descripción del archivo", 35 | "multimediaviewer-link-to-file": "Enlace al archivo original", 36 | "multimediaviewer-share-explanation": "Copiar y compartir el enlace", 37 | "multimediaviewer-embed-wt": "Wikitexto", 38 | "multimediaviewer-embed-html": "HTML", 39 | "multimediaviewer-embed-explanation": "Utiliza este código para incrustar el archivo", 40 | "multimediaviewer-embed-byline": "Por $1", 41 | "multimediaviewer-embed-license": "Disponible bajo licencia $1.", 42 | "multimediaviewer-embed-via": "Via $1.", 43 | "multimediaviewer-default-embed-dimensions": "Tamaño de miniaturas predeterminado", 44 | "multimediaviewer-original-embed-dimensions": "Tamaño original $1", 45 | "multimediaviewer-large-embed-dimensions": "Grande $1", 46 | "multimediaviewer-medium-embed-dimensions": "Mediano $1", 47 | "multimediaviewer-small-embed-dimensions": "Pequeño $1", 48 | "multimediaviewer-description-page-button-text": "Más detalles", 49 | "multimediaviewer-description-page-popup-text": "Más detalles en $1", 50 | "multimediaviewer-commons-subtitle": "El repositorio multimedia libre", 51 | "multimediaviewer-view-expanded": "Vista expandida" 52 | } 53 | -------------------------------------------------------------------------------- /i18n/eu.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Sator", 5 | "Subi", 6 | "Xabier Armendaritz" 7 | ] 8 | }, 9 | "multimediaviewer-repository-local": "Xehetasun gehiago", 10 | "multimediaviewer-credit-fallback": "Egileari buruzko informazioa ikusi", 11 | "multimediaviewer-multiple-authors": "{{PLURAL:$1|egile bat gehiago|$1 egile gehiago}}", 12 | "multimediaviewer-multiple-authors-combine": "$1 eta $2", 13 | "multimediaviewer-thumbnail-error-retry": "saiatu berriro", 14 | "multimediaviewer-license-cc-pd": "Jabetza Publikoa", 15 | "multimediaviewer-license-pd": "Jabetza Publikoa", 16 | "multimediaviewer-license-default": "Lizentzia ikusi", 17 | "multimediaviewer-permission-title": "Baimenaren xehetasunak", 18 | "multimediaviewer-permission-link": "ikusi baldintzak", 19 | "multimediaviewer-permission-link-hide": "ezkutatu baldintzak", 20 | "multimediaviewer-permission-viewmore": "Ikusi gehiago", 21 | "multimediaviewer-reuse-loading-placeholder": "Kargatzen...", 22 | "multimediaviewer-download-preview-link-title": "Nabigatzailean ikusi", 23 | "multimediaviewer-html-embed-credit-link-text": "Esteka", 24 | "multimediaviewer-view-expanded": "Media Viewerren ireki", 25 | "multimediaviewer-download-attribution-cta": "Erakuts iezadazu nola" 26 | } 27 | -------------------------------------------------------------------------------- /i18n/fit.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Pyscowicz" 5 | ] 6 | }, 7 | "multimediaviewer-repository-local": "Lisätiot", 8 | "multimediaviewer-datetime-uploaded": "Säästetty: $1", 9 | "multimediaviewer-download-link": "Lattaa tämä fiili", 10 | "multimediaviewer-link-to-file": "Länkki alkuperäseen fiiliin", 11 | "multimediaviewer-share-explanation": "Jäljennä länkki ja levitä sitä vappaasti", 12 | "multimediaviewer-original-embed-dimensions": "Alkuperänen fiili $1", 13 | "multimediaviewer-title-popup-text": "Kuvvaus", 14 | "multimediaviewer-credit-popup-text": "Tekijä- ja lähetiot", 15 | "multimediaviewer-title-popup-text-more": "Näytä koko kuvvaus" 16 | } 17 | -------------------------------------------------------------------------------- /i18n/frr.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Murma174" 5 | ] 6 | }, 7 | "multimediaviewer-optin-pref": "Di [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Media_Viewer/About MediaViewer] aktiwiare" 8 | } 9 | -------------------------------------------------------------------------------- /i18n/fy.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "PiefPafPier", 5 | "Robin van der Vliet", 6 | "Robin0van0der0vliet" 7 | ] 8 | }, 9 | "multimediaviewer-optin-pref": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Media_Viewer/About Mediawerjouwer] ynskeakelje", 10 | "multimediaviewer-multiple-authors-combine": "$1 en $2", 11 | "multimediaviewer-geolocation": "Lokaasje: $1", 12 | "multimediaviewer-embed-html": "HTML", 13 | "multimediaviewer-large-embed-dimensions": "Grut $1", 14 | "multimediaviewer-small-embed-dimensions": "Lyts $1", 15 | "multimediaviewer-title-popup-text": "Beskriuwing", 16 | "multimediaviewer-enable-dialog-header": "Mediawerjouwer?", 17 | "multimediaviewer-enable-submit-button": "Mediawerjouwer" 18 | } 19 | -------------------------------------------------------------------------------- /i18n/gcr.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "LeGuyanaisPure" 5 | ] 6 | }, 7 | "multimediaviewer-view-config": "Konfigirasyon" 8 | } 9 | -------------------------------------------------------------------------------- /i18n/gu.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "KartikMistry" 5 | ] 6 | }, 7 | "multimediaviewer-permission-viewmore": "વધુ જુઓ" 8 | } 9 | -------------------------------------------------------------------------------- /i18n/hy.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Kareyac", 5 | "Սերգեյ Սաֆարյան" 6 | ] 7 | }, 8 | "multimediaviewer-multiple-authors-combine": "$1 և $2", 9 | "multimediaviewer-reuse-loading-placeholder": "Բեռնվում է…", 10 | "multimediaviewer-small-embed-dimensions": "Փոքր $1", 11 | "multimediaviewer-next-image-alt-text": "Ցույց տալ հաջորդ պատկերը", 12 | "multimediaviewer-prev-image-alt-text": "Ցույց տալ նախորդ պատկերը" 13 | } 14 | -------------------------------------------------------------------------------- /i18n/hyw.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Kareyac" 5 | ] 6 | }, 7 | "multimediaviewer-multiple-authors-combine": "$1 եւ $2" 8 | } 9 | -------------------------------------------------------------------------------- /i18n/ig.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Ukabia" 5 | ] 6 | }, 7 | "multimediaviewer-html-embed-credit-link-text": "Òjikọ" 8 | } 9 | -------------------------------------------------------------------------------- /i18n/inh.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Adam-Yourist", 5 | "ElizaMag", 6 | "Умар" 7 | ] 8 | }, 9 | "multimediaviewer-optin-pref": "«[https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Media_Viewer/About Медиа-хьежарг]» хьалсага", 10 | "multimediaviewer-download-original-button-name": "Хьаараяккха юххьанцара йола файл", 11 | "multimediaviewer-original-embed-dimensions": "Юххьанцара файл $1", 12 | "multimediaviewer-enable-dialog-header": "«Медиа-хьежарг» хьалсагеи?", 13 | "multimediaviewer-enable-submit-button": "«Медиа-хьежарг» хьалсага" 14 | } 15 | -------------------------------------------------------------------------------- /i18n/jv.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "NoiX180" 5 | ] 6 | }, 7 | "multimediaviewer-optin-pref": "Urubaké [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Media_Viewer/About Panontonan Médhia]", 8 | "multimediaviewer-file-page": "Menyang kaca barkas kang magepokan", 9 | "multimediaviewer-repository-local": "Rerincèn liyané", 10 | "multimediaviewer-datetime-created": "Digawé: $1", 11 | "multimediaviewer-datetime-uploaded": "Diunggah: $1", 12 | "multimediaviewer-credit-fallback": "Deleng katerangan pangripta", 13 | "multimediaviewer-multiple-authors": "{{PLURAL:$1|pangripta siji liyané|pangripta $1 liyané}}", 14 | "multimediaviewer-multiple-authors-combine": "$1 lan $2", 15 | "multimediaviewer-metadata-error": "Ora bisa ngamot rerincèn gambar (masalah: $1)", 16 | "multimediaviewer-thumbnail-error": "Nyuwun pangapura, barkasé ora bisa ditonton", 17 | "multimediaviewer-thumbnail-error-description": "Kayané ana masalah tèhnis. Panjenengan bisa $1 utawa $3 yèn masalahé isih ana. Masalah: $2", 18 | "multimediaviewer-thumbnail-error-retry": "jajal manèh", 19 | "multimediaviewer-thumbnail-error-report": "lapuraké masalahé", 20 | "multimediaviewer-license-cc-pd": "Kukuban Umum", 21 | "multimediaviewer-license-pd": "Kukuban Umum", 22 | "multimediaviewer-license-default": "Deleng lisènsi", 23 | "multimediaviewer-permission-title": "Rerincèn bab palilah", 24 | "multimediaviewer-permission-link": "deleng paugeran", 25 | "multimediaviewer-permission-link-hide": "dhelikaké paugeran", 26 | "multimediaviewer-permission-viewmore": "Tuduhaké liyané", 27 | "multimediaviewer-view-expanded": "Bukak ing Panontonan Médhia" 28 | } 29 | -------------------------------------------------------------------------------- /i18n/ka.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Chavch", 5 | "David1010", 6 | "MIKHEIL", 7 | "Otogi" 8 | ] 9 | }, 10 | "multimediaviewer-optin-pref": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Media_Viewer/About მედია-მაყურებლის] ჩართვა", 11 | "multimediaviewer-repository-local": "დამატებითი ინფორმაცია", 12 | "multimediaviewer-datetime-created": "შეიქმნა: $1", 13 | "multimediaviewer-datetime-uploaded": "ატვირთულია: $1", 14 | "multimediaviewer-credit-fallback": "ავტორის ინფოს ნახვა", 15 | "multimediaviewer-metadata-error": "სურათის ჩატვირთვა ვერ მოხერხდა (შეცდომა: $1)", 16 | "multimediaviewer-thumbnail-error": "სამწუხაროდ, ამ ფაილის ჩვენება შეუძლებელია", 17 | "multimediaviewer-thumbnail-error-retry": "ხელახლა ცდა", 18 | "multimediaviewer-license-cc-pd": "საზოგადოებრივი საკუთრება", 19 | "multimediaviewer-license-pd": "საზოგადოებრივი საკუთრება", 20 | "multimediaviewer-license-default": "ლიცენზიის ხილვა", 21 | "multimediaviewer-permission-title": "ნებართვის დეტალები", 22 | "multimediaviewer-permission-link": "პირობების ხილვა", 23 | "multimediaviewer-permission-link-hide": "პირობების დამალვა", 24 | "multimediaviewer-permission-viewmore": "იხილეთ მეტი", 25 | "multimediaviewer-geolocation": "მდებარეობა: $1", 26 | "multimediaviewer-reuse-loading-placeholder": "იტვირთება...", 27 | "multimediaviewer-share-tab": "გაზიარება", 28 | "multimediaviewer-embed-tab": "ჩასმა", 29 | "multimediaviewer-download-link": "ამ ფაილის ჩამოტვირთვა", 30 | "multimediaviewer-download-preview-link-title": "ბრაუზერში გახსნა", 31 | "multimediaviewer-download-original-button-name": "თავდაპირველი ფაილის ჩამოტვირთვა", 32 | "multimediaviewer-download-small-button-name": "მცირე ზომის ჩამოტვირთვა", 33 | "multimediaviewer-download-medium-button-name": "საშუალო ზომის ჩამოტვირთვა", 34 | "multimediaviewer-download-large-button-name": "დიდი ზომის ჩამოტვირთვა", 35 | "multimediaviewer-link-to-page": "ფაილი აღწერის გვერდის ბმული", 36 | "multimediaviewer-link-to-file": "თავდაპირველი ფაილის ბმული", 37 | "multimediaviewer-embed-wt": "ვიკიტექსტი", 38 | "multimediaviewer-embed-html": "HTML", 39 | "multimediaviewer-large-embed-dimensions": "დიდი $1", 40 | "multimediaviewer-medium-embed-dimensions": "საშუალო $1", 41 | "multimediaviewer-small-embed-dimensions": "პატარა $1", 42 | "multimediaviewer-view-config": "კონფიგურაცია", 43 | "multimediaviewer-close-popup-text": "ამ ხელსაწყოს დახურვა (Esc)", 44 | "multimediaviewer-fullscreen-popup-text": "მთელ ეკრანზე ჩვენება", 45 | "multimediaviewer-defullscreen-popup-text": "მთლიანი ეკრანიდან გამოსვლა", 46 | "multimediaviewer-title-popup-text": "აღწერა", 47 | "multimediaviewer-credit-popup-text": "ავტორი და წყაროს ინფორმაცია", 48 | "multimediaviewer-title-popup-text-more": "სრული აღწერის ხილვა", 49 | "multimediaviewer-credit-popup-text-more": "ავტორისა და წყაროს სრულად ხილვა", 50 | "multimediaviewer-download-optional-attribution-cta-header": "შეგიძლიათ მიუთითოთ ავტორი", 51 | "multimediaviewer-download-attribution-cta": "მაჩვენეთ, როგორ", 52 | "multimediaviewer-attr-plain": "მარტივი" 53 | } 54 | -------------------------------------------------------------------------------- /i18n/kaa.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Ajiniyaz Nurniyazov" 5 | ] 6 | }, 7 | "multimediaviewer-optin-pref": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Media_Viewer/About Media kóriwshi]ni qosıw", 8 | "multimediaviewer-metadata-error": "Súwret haqqındaǵı maǵlıwmatlardı júklep alıw sátsiz juwmaqlandı (qátelik:$ 1)", 9 | "multimediaviewer-thumbnail-error": "Keshirińiz, fayldı kórsetiw múmkinshiligi joq", 10 | "multimediaviewer-thumbnail-error-description": "Biymálim texnikalıq mashqala kelip shıqtı. Eger ol qaytalansa, siz $1 buyrıǵın basıwıńızǵa boladı. Qátelik: $2", 11 | "multimediaviewer-thumbnail-error-retry": "qayta urınıw", 12 | "multimediaviewer-view-expanded": "Media Viewerde keń etip kóriw" 13 | } 14 | -------------------------------------------------------------------------------- /i18n/kjp.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Rul1902" 5 | ] 6 | }, 7 | "multimediaviewer-download-link": "မ်ုကျုဂ်လင် ဖါင့်ယိုဝ်", 8 | "multimediaviewer-embed-wt": "ဝီးကေဝ်လိက်ယးထိုင့်" 9 | } 10 | -------------------------------------------------------------------------------- /i18n/km.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "គីមស៊្រុន", 5 | "វ័ណថារិទ្ធ" 6 | ] 7 | }, 8 | "multimediaviewer-optin-pref": "បើកប្រើ [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Media_Viewer/About Media Viewer]", 9 | "multimediaviewer-repository-local": "ព័ត៌មានលម្អិត", 10 | "multimediaviewer-datetime-created": "បង្កើតឡើងដោយ៖ $1", 11 | "multimediaviewer-datetime-uploaded": "ផ្ទុកឡើងដោយ៖ $1", 12 | "multimediaviewer-text-embed-credit-text-bl": "ដោយ $1, $2, $3", 13 | "multimediaviewer-text-embed-credit-text-b": "ដោយ $1, $2", 14 | "multimediaviewer-html-embed-credit-text-bl": "ដោយ $1, $2, $3", 15 | "multimediaviewer-html-embed-credit-text-b": "ដោយ $1, $2", 16 | "multimediaviewer-html-embed-credit-link-text": "តំណ​ភ្ជាប់", 17 | "multimediaviewer-embed-byline": "ដោយ $1" 18 | } 19 | -------------------------------------------------------------------------------- /i18n/kn.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "MSG17", 5 | "Nayvik", 6 | "Pavanaja", 7 | "Vikassy", 8 | "ಮಲ್ನಾಡಾಚ್ ಕೊಂಕ್ಣೊ" 9 | ] 10 | }, 11 | "multimediaviewer-desc": "ಚಿಕ್ಕ ಚಿತ್ರವನ್ನು ಪೂರ್ತಿ ಪರದೆಗೆ ದೊಡ್ಡದು ಮಾಡಿ", 12 | "multimediaviewer-optin-pref": "ಬಹುಮಾಧ್ಯಮ ವೀಕ್ಷಣೆಯ ಹೊಸ ಅನುಭವವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ", 13 | "multimediaviewer-file-page": "ಸಂಬಂಧಪಟ್ಟ ಫೈಲ್ ಪುಟಕ್ಕೆ ಹೋಗಿ", 14 | "multimediaviewer-repository-local": "ಹೆಚ್ಚಿನ ವಿವರಗಳು", 15 | "multimediaviewer-datetime-created": "$1 ರಂದು ತಯಾರಿಸಿದ್ದು", 16 | "multimediaviewer-datetime-uploaded": "$1 ರಂದು ಸೇರಿಸಿದ್ದು", 17 | "multimediaviewer-metadata-error": "$1 ದೋಷ: ಚಿತ್ರದ ಮಾಹಿತಿಯನ್ನು ತೆರೆಯಲು ಆಗಲಿಲ್ಲ", 18 | "multimediaviewer-thumbnail-error": "$1 ದೋಷ: ಚಿಕ್ಕಚಿತ್ರ ಸೇರಿಸಲು ಆಗಲಿಲ್ಲ", 19 | "multimediaviewer-license-cc-pd": "ಸಾರ್ವಜನಿಕರಿಗೆ ಸೇರಿದ್ದು", 20 | "multimediaviewer-license-pd": "ಸಾರ್ವಜನಿಕರಿಗೆ ಸೇರಿದ್ದು", 21 | "multimediaviewer-license-default": "ಪರವಾನಗಿ ವೀಕ್ಷಿಸಿ", 22 | "multimediaviewer-permission-title": "ಅನುಮತಿಯ ವಿವರಗಳು", 23 | "multimediaviewer-permission-link": "ಶರತ್ತುಗಳನ್ನು ವೀಕ್ಷಿಸಿ", 24 | "multimediaviewer-permission-viewmore": "ಹೆಚ್ಚಿನದ್ದನ್ನು ವೀಕ್ಷಿಸಿ", 25 | "multimediaviewer-geolocation": "ಸ್ಥಾನ: $1", 26 | "multimediaviewer-reuse-link": "ಈ ಫೈಲನ್ನು ಬಳಸಿ", 27 | "multimediaviewer-reuse-loading-placeholder": "ಉತ್ಪೂರಿತವಾಗುತ್ತಿದೆ", 28 | "multimediaviewer-share-tab": "ಹಂಚಿ", 29 | "multimediaviewer-embed-tab": "ಅಂತರ್ಗತಿಸಿ", 30 | "multimediaviewer-download-link": "ಈ ಫೈಲನ್ನು ಡೌನ್‍ಲೋಡ್ ಮಾಡಿ", 31 | "multimediaviewer-download-preview-link-title": "ಬ್ರೌಸರ್‌ನಲ್ಲಿ ನೋಡಿ", 32 | "multimediaviewer-download-original-button-name": "ಮೂಲ ಫೈಲನ್ನು ಡೌನ್‍ಲೋಡ್ ಮಾಡಿ", 33 | "multimediaviewer-download-small-button-name": "ಚಿಕ್ಕಗಾತ್ರದಲ್ಲಿ ಡೌನ್‍ಲೋಡ್ ಮಾಡಿ", 34 | "multimediaviewer-download-medium-button-name": "ಮಧ್ಯಮ ಗಾತ್ರದಲ್ಲಿ ಡೌನ್‍ಲೋಡ್ ಮಾಡಿ", 35 | "multimediaviewer-download-large-button-name": "ದೊಡ್ಡಗಾತ್ರದಲ್ಲಿ ಡೌನ್‍ಲೋಡ್ ಮಾಡಿ", 36 | "multimediaviewer-link-to-page": "ಫೈಲ್ ವಿವರಣೆ ಪುಟಕ್ಕೆ ಕೊಂಡಿ", 37 | "multimediaviewer-link-to-file": "ಮೂಲಫೈಲ್‍ಗೆ ಕೊಂಡಿ", 38 | "multimediaviewer-share-explanation": "ಕೊಂಡಿಯನ್ನು ನಕಲಿಸಿ ಮತ್ತು ಎಲ್ಲರಿಗೂ ಹಂಚಿ", 39 | "multimediaviewer-embed-wt": "ವಿಕಿಪಠ್ಯ", 40 | "multimediaviewer-embed-html": "ಎಚ್‍ಟಿಎಂಎಲ್", 41 | "multimediaviewer-embed-explanation": "ಫೈಲನ್ನು ಅಂತರ್ಗತಿಸಲು ಈ ಕೋಡ್ ಅನ್ನು ಬಳಸಿ", 42 | "multimediaviewer-description-page-button-text": "ಈ ಫೈಲಿನ ಕುರಿತ ಹೆಚ್ಚಿನ ವಿವರಗಳು", 43 | "multimediaviewer-description-page-popup-text": "ಈ ಫೈಲಿನ ಕುರಿತ ಹೆಚ್ಚಿನ ವಿವರಗಳು $1 ರಲ್ಲಿ", 44 | "multimediaviewer-commons-subtitle": "ಸ್ವತಂತ್ರ ಮಾಧ್ಯಮ ಕಣಜ", 45 | "multimediaviewer-view-expanded": "ಹಿಗ್ಗಿದ ವೀಕ್ಷಣೆ" 46 | } 47 | -------------------------------------------------------------------------------- /i18n/krc.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Ernác", 5 | "Iltever" 6 | ] 7 | }, 8 | "multimediaviewer-optin-pref": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Media_Viewer/About Медиа-къараучуну] джандыр", 9 | "multimediaviewer-enable-dialog-header": "Медиа-къараучу джандырылсынмы?", 10 | "multimediaviewer-enable-submit-button": "Медиа-къараучуну джандыр" 11 | } 12 | -------------------------------------------------------------------------------- /i18n/ksh.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Purodha" 5 | ] 6 | }, 7 | "multimediaviewer-repository-local": "Mih Einzelheijte", 8 | "multimediaviewer-datetime-created": "Aanjelaat: $1", 9 | "multimediaviewer-datetime-uploaded": "Huhjelahde: $1", 10 | "multimediaviewer-credit-fallback": "Dahte övver dä Schrihver belohre", 11 | "multimediaviewer-multiple-authors": "{{PLURAL:$1|norr_enne|noch $1 mih Schrihver|un söns keine}} Schrihver", 12 | "multimediaviewer-multiple-authors-combine": "$1 un $2", 13 | "multimediaviewer-metadata-error": "Mer kunnte kein Eijnzeljeijte övver dat bed lahde, der Jrond: $1", 14 | "multimediaviewer-thumbnail-error-retry": "norr_ens versöhke", 15 | "multimediaviewer-thumbnail-error-report": "donn dat mällde", 16 | "multimediaviewer-license-cc-pd": "Allmende (jemeinfrei, public domain)", 17 | "multimediaviewer-license-pd": "Allmende (jemeinfrei, public domain)", 18 | "multimediaviewer-license-default": "De Lezänz beraache", 19 | "multimediaviewer-permission-title": "Einzelheijte övver et Jebruche", 20 | "multimediaviewer-permission-viewmore": "Mih aanzeije", 21 | "multimediaviewer-geolocation": "Posizjuhn: $1", 22 | "multimediaviewer-reuse-link": "Donn heh di dattei wigger jävve udder woh ennboue", 23 | "multimediaviewer-reuse-loading-placeholder": "Ben am Lahde …", 24 | "multimediaviewer-share-tab": "Wigger jävve", 25 | "multimediaviewer-embed-tab": "Ennföhje", 26 | "multimediaviewer-download-link": "Heh di Dattei eronger lahde", 27 | "multimediaviewer-download-preview-link-title": "Em Brauser opmaache", 28 | "multimediaviewer-download-original-button-name": "Donn de Ojinahl_Dattei eronger lahde", 29 | "multimediaviewer-download-small-button-name": "Donn en verkleijnerte Väsjohn vun dä Dattei eronger lahde", 30 | "multimediaviewer-download-medium-button-name": "Donn en meddeljruhße Väsjohn vun dä Dattei eronger lahde", 31 | "multimediaviewer-download-large-button-name": "Donn en jruhße Väsjohn vun dä Dattei eronger lahde", 32 | "multimediaviewer-link-to-file": "Lengk op di Ojjinahl_Dattei", 33 | "multimediaviewer-embed-wt": "Wikkitäx", 34 | "multimediaviewer-embed-html": "\nHTML", 35 | "multimediaviewer-embed-explanation": "Nemm heh dä Kohd, öm di Dattei ennzebenge", 36 | "multimediaviewer-embed-byline": "Vum $1", 37 | "multimediaviewer-embed-license": "Veröffentlesch onger dä Lezänz $1.", 38 | "multimediaviewer-embed-via": "Övver $1", 39 | "multimediaviewer-default-embed-dimensions": "Schtandatt_Jrühße vum Minnibelldsche", 40 | "multimediaviewer-original-embed-dimensions": "Ojinal_Dattei $1", 41 | "multimediaviewer-large-embed-dimensions": "Jruhß $1", 42 | "multimediaviewer-medium-embed-dimensions": "Meddel $1", 43 | "multimediaviewer-small-embed-dimensions": "Klein $1", 44 | "multimediaviewer-description-page-button-text": "Mih Einzelheijte övver heh di Dattei", 45 | "multimediaviewer-description-page-popup-text": "Mih Einzelheijte övver heh di Dattei op $1", 46 | "multimediaviewer-commons-subtitle": "Dat freije Repossetohrejom för Mehdije", 47 | "multimediaviewer-view-config": "Enschtällonge", 48 | "multimediaviewer-close-popup-text": "Maach heh dat Wärkzüsch zuoh (Esc)", 49 | "multimediaviewer-fullscreen-popup-text": "Om jannze Beldscherrem zeije", 50 | "multimediaviewer-defullscreen-popup-text": "Nimmih om jannze Beldscherrem zeije", 51 | "multimediaviewer-title-popup-text": "Aanjahbe övver di Dattei", 52 | "multimediaviewer-credit-popup-text": "Övver de Hääkonnef vun dä dattei", 53 | "multimediaviewer-title-popup-text-more": "Ale Aanjahbe belohre", 54 | "multimediaviewer-credit-popup-text-more": "Alles övver der Könsler un de Quäll", 55 | "multimediaviewer-download-attribution-cta-header": "Do moß der Maacher nänne", 56 | "multimediaviewer-download-attribution-cta": "Zeijsch mer, wi", 57 | "multimediaviewer-attr-plain": "Pladd un eijfach" 58 | } 59 | -------------------------------------------------------------------------------- /i18n/ky.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Bosogo" 5 | ] 6 | }, 7 | "multimediaviewer-repository-local": "Чоо-жайы", 8 | "multimediaviewer-datetime-created": "Түзүлгөн датасы: $1", 9 | "multimediaviewer-datetime-uploaded": "Жүктөлгөн датасы: $1", 10 | "multimediaviewer-credit-fallback": "Автор тууралуу", 11 | "multimediaviewer-multiple-authors-combine": "$1 менен $2", 12 | "multimediaviewer-license-cc-pd": "Коомдук энчи", 13 | "multimediaviewer-license-pd": "Коомдук энчи", 14 | "multimediaviewer-license-default": "Лицензияны көрүү", 15 | "multimediaviewer-permission-viewmore": "Көбүрөөк көрүү", 16 | "multimediaviewer-reuse-loading-placeholder": "Жүктөлүүдө...", 17 | "multimediaviewer-share-tab": "Бөлүшүү", 18 | "multimediaviewer-download-link": "Бул файлды жүктөп алуу", 19 | "multimediaviewer-download-preview-link-title": "Браузерден көрүү", 20 | "multimediaviewer-download-original-button-name": "Түп нуска файлды жүктөп алуу", 21 | "multimediaviewer-embed-wt": "Викитекст", 22 | "multimediaviewer-html-embed-credit-link-text": "Шилтеме", 23 | "multimediaviewer-view-expanded": "Медиа көргөзгүчтөн көрүү", 24 | "multimediaviewer-view-config": "Параметр", 25 | "multimediaviewer-next-image-alt-text": "Кийинки сүрөт", 26 | "multimediaviewer-prev-image-alt-text": "Мурунку сүрөт", 27 | "multimediaviewer-title-popup-text": "Сыпаттама" 28 | } 29 | -------------------------------------------------------------------------------- /i18n/lfn.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Mafcadio", 5 | "Robin van der Vliet" 6 | ] 7 | }, 8 | "multimediaviewer-html-embed-credit-link-text": "Lia", 9 | "multimediaviewer-small-embed-dimensions": "Peti $1", 10 | "multimediaviewer-title-popup-text": "Descrive" 11 | } 12 | -------------------------------------------------------------------------------- /i18n/lki.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Lakzon" 5 | ] 6 | }, 7 | "multimediaviewer-link-to-page": "پیوند به صفحهٔ توضیحات پرونده", 8 | "multimediaviewer-title-popup-text": "توضیحۀل", 9 | "multimediaviewer-title-popup-text-more": "مشاهدهٔ کامل توضیحات" 10 | } 11 | -------------------------------------------------------------------------------- /i18n/lv.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Edgars2007", 5 | "Papuass" 6 | ] 7 | }, 8 | "multimediaviewer-file-page": "Doties uz atbilstošo faila lapu", 9 | "multimediaviewer-repository-local": "Vairāk informācijas", 10 | "multimediaviewer-datetime-created": "Izveidots: $1", 11 | "multimediaviewer-datetime-uploaded": "Augšupielādēts: $1", 12 | "multimediaviewer-multiple-authors-combine": "$1 un $2", 13 | "multimediaviewer-metadata-error": "Kļūda: Nevarēja ielādēt attēla datus. $1", 14 | "multimediaviewer-thumbnail-error": "Kļūda: Nevarēja ielādēt sīktēlu datus. $1", 15 | "multimediaviewer-thumbnail-error-report": "ziņot par problēmu", 16 | "multimediaviewer-license-cc-pd": "Neaizsargāts darbs", 17 | "multimediaviewer-license-pd": "Neaizsargāts darbs", 18 | "multimediaviewer-license-default": "Skatīt licenci", 19 | "multimediaviewer-permission-title": "Atļauju detaļas", 20 | "multimediaviewer-permission-link": "skatīt noteikumus", 21 | "multimediaviewer-permission-viewmore": "Skatīt vairāk", 22 | "multimediaviewer-geolocation": "Atrašanās vieta: $1", 23 | "multimediaviewer-reuse-link": "Dalīties vai iegult šo failu", 24 | "multimediaviewer-reuse-loading-placeholder": "Ielādē…", 25 | "multimediaviewer-share-tab": "Dalīties", 26 | "multimediaviewer-embed-tab": "Ievietot", 27 | "multimediaviewer-download-link": "Lejupielādēt šo failu", 28 | "multimediaviewer-download-preview-link-title": "Skatīt pārlūkprogrammā", 29 | "multimediaviewer-download-original-button-name": "Lejupielādēt oriģinālo failu", 30 | "multimediaviewer-download-small-button-name": "Lejupielādēt maza izmēra failu", 31 | "multimediaviewer-download-medium-button-name": "Lejupielādēt vidēja izmēra failu", 32 | "multimediaviewer-download-large-button-name": "Lejupielādēt liela izmēra failu", 33 | "multimediaviewer-link-to-page": "Saite uz attēla aprakstu lapu", 34 | "multimediaviewer-link-to-file": "Saite uz oriģinālo attēlu", 35 | "multimediaviewer-share-explanation": "Nokopējiet un brīvi dalieties ar saiti", 36 | "multimediaviewer-embed-wt": "Vikiteksts", 37 | "multimediaviewer-embed-html": "HTML", 38 | "multimediaviewer-embed-explanation": "Izmanto šo kodu, lai iegultu failu", 39 | "multimediaviewer-html-embed-credit-link-text": "Saite", 40 | "multimediaviewer-embed-license": "Licencēts saskaņā ar $1.", 41 | "multimediaviewer-default-embed-dimensions": "Noklusējuma sīktēlu izmērs", 42 | "multimediaviewer-original-embed-dimensions": "Sākotnējais fails $1", 43 | "multimediaviewer-large-embed-dimensions": "Liels $1", 44 | "multimediaviewer-medium-embed-dimensions": "Vidējs $1", 45 | "multimediaviewer-small-embed-dimensions": "Mazs $1", 46 | "multimediaviewer-description-page-button-text": "Vairāk datu par šo failu", 47 | "multimediaviewer-commons-subtitle": "Brīvā multimediju krātuve", 48 | "multimediaviewer-view-expanded": "Atvērt Media Viewer", 49 | "multimediaviewer-view-config": "Konfigurācija", 50 | "multimediaviewer-close-popup-text": "Aizvērt šo rīku (Esc)", 51 | "multimediaviewer-fullscreen-popup-text": "Parādīt pilnekrāna režīmā", 52 | "multimediaviewer-defullscreen-popup-text": "Iziet no pilnekrāna režīma", 53 | "multimediaviewer-next-image-alt-text": "Rādīt nākamo attēlu", 54 | "multimediaviewer-prev-image-alt-text": "Rādīt iepriekšējo attēlu", 55 | "multimediaviewer-title-popup-text": "Apraksts", 56 | "multimediaviewer-reuse-warning-nonfree": "Šim failam nav brīvas licences" 57 | } 58 | -------------------------------------------------------------------------------- /i18n/lzh.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Jason924tw", 5 | "StephDC" 6 | ] 7 | }, 8 | "multimediaviewer-repository-local": "顯細", 9 | "multimediaviewer-reuse-loading-placeholder": "載之…", 10 | "multimediaviewer-download-link": "取檔", 11 | "multimediaviewer-embed-html": "HTML", 12 | "multimediaviewer-attr-plain": "純字" 13 | } 14 | -------------------------------------------------------------------------------- /i18n/mg.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Jagwar" 5 | ] 6 | }, 7 | "multimediaviewer-permission-viewmore": "Hijery be kokoa" 8 | } 9 | -------------------------------------------------------------------------------- /i18n/min.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Iwan Novirion" 5 | ] 6 | }, 7 | "multimediaviewer-repository-local": "Caliak rincian", 8 | "multimediaviewer-datetime-created": "Dibuek: $1", 9 | "multimediaviewer-datetime-uploaded": "Diunggah: $1", 10 | "multimediaviewer-credit-fallback": "Caliak info pambuek", 11 | "multimediaviewer-multiple-authors": "{{PLURAL:$1|$1 lai pambuek}}", 12 | "multimediaviewer-multiple-authors-combine": "$1 jo $2", 13 | "multimediaviewer-metadata-error": "Indak dapek mamuek rincian gambar (galat: $1)", 14 | "multimediaviewer-thumbnail-error-retry": "cubo lai", 15 | "multimediaviewer-thumbnail-error-report": "laporkan masalah", 16 | "multimediaviewer-license-cc-pd": "Domain Publik", 17 | "multimediaviewer-license-pd": "Domain Publik", 18 | "multimediaviewer-license-default": "Caliak lisensi", 19 | "multimediaviewer-permission-title": "Rincian lisensi", 20 | "multimediaviewer-permission-link": "tunjuakan katantuan", 21 | "multimediaviewer-permission-link-hide": "suruakan katantuan", 22 | "multimediaviewer-permission-viewmore": "Caliak salengkapnyo", 23 | "multimediaviewer-geolocation": "Lokasi: $1", 24 | "multimediaviewer-reuse-link": "Bagikan atau samekkan berkas ko", 25 | "multimediaviewer-reuse-loading-placeholder": "Mamuek...", 26 | "multimediaviewer-share-tab": "Bagikan", 27 | "multimediaviewer-embed-tab": "Samekkan", 28 | "multimediaviewer-download-link": "Unduh berkas ko", 29 | "multimediaviewer-download-preview-link-title": "Caliak di peramban", 30 | "multimediaviewer-download-original-button-name": "Unduh berkas asli", 31 | "multimediaviewer-download-small-button-name": "Unduh ukuran ketek", 32 | "multimediaviewer-download-medium-button-name": "Unduh ukuran sadang", 33 | "multimediaviewer-download-large-button-name": "Unduh ukuran gadang", 34 | "multimediaviewer-link-to-page": "Pautan ka laman katerangan berkas", 35 | "multimediaviewer-link-to-file": "Pautan ka berkas asli", 36 | "multimediaviewer-embed-wt": "Teks wiki", 37 | "multimediaviewer-embed-html": "HTML", 38 | "multimediaviewer-text-embed-credit-text-bl": "Dek $1, $2, $3", 39 | "multimediaviewer-text-embed-credit-text-b": "Dek $1, $2", 40 | "multimediaviewer-html-embed-credit-text-bl": "Dek $1, $2, $3", 41 | "multimediaviewer-html-embed-credit-text-b": "Dek $1, $2", 42 | "multimediaviewer-html-embed-credit-link-text": "Pautan", 43 | "multimediaviewer-embed-byline": "Dek $1", 44 | "multimediaviewer-embed-license": "Dilisensikan di bawah $1.", 45 | "multimediaviewer-embed-via": "Lewaik $1.", 46 | "multimediaviewer-original-embed-dimensions": "Berkas asli $1", 47 | "multimediaviewer-large-embed-dimensions": "Gadang $1", 48 | "multimediaviewer-medium-embed-dimensions": "Sadang $1", 49 | "multimediaviewer-small-embed-dimensions": "Ketek $1", 50 | "multimediaviewer-view-expanded": "Bukak di Panampil Media", 51 | "multimediaviewer-view-config": "Konfigurasi", 52 | "multimediaviewer-close-popup-text": "Tutuik pakakeh ko (Esc)", 53 | "multimediaviewer-fullscreen-popup-text": "Caliak di layar panuah", 54 | "multimediaviewer-defullscreen-popup-text": "Kalua dari layar panuah", 55 | "multimediaviewer-next-image-alt-text": "Caliak gambar salanjuiknyo", 56 | "multimediaviewer-prev-image-alt-text": "Caliak gambar sabalumnyo", 57 | "multimediaviewer-title-popup-text": "Katarangan", 58 | "multimediaviewer-credit-popup-text": "Informasi pambuek jo sumber", 59 | "multimediaviewer-title-popup-text-more": "Caliak katarangan lengkap", 60 | "multimediaviewer-download-attribution-cta": "Tunjuakan caronyo", 61 | "multimediaviewer-reuse-warning-generic": "Pariso [$1 rinciannyo] sabalum manggunoan.", 62 | "multimediaviewer-attr-plain": "Polos", 63 | "multimediaviewer-enable-dialog-header": "Aktifkan Panampil Media?", 64 | "multimediaviewer-enable-submit-button": "Aktifkan Panampil Media" 65 | } 66 | -------------------------------------------------------------------------------- /i18n/mr.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "V.narsikar" 5 | ] 6 | }, 7 | "multimediaviewer-optin-pref": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Media_Viewer/About मिडिया व्ह्यूअर] सक्षम करा", 8 | "multimediaviewer-thumbnail-error-report": "याबाबतचा अहवाल द्या", 9 | "multimediaviewer-license-pd": "सार्वजनिक अधिक्षेत्र", 10 | "multimediaviewer-text-embed-credit-text-bl": "$1,$2,$3 द्वारे", 11 | "multimediaviewer-text-embed-credit-text-b": "$1,$2 द्वारे", 12 | "multimediaviewer-html-embed-credit-text-bl": "$1,$2,$3 द्वारे", 13 | "multimediaviewer-html-embed-credit-text-b": "$1,$2 द्वारे", 14 | "multimediaviewer-html-embed-credit-link-text": "दुवा" 15 | } 16 | -------------------------------------------------------------------------------- /i18n/ms.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Anakmalaysia" 5 | ] 6 | }, 7 | "multimediaviewer-optin-pref": "Hidupkan [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Media_Viewer/About Media Viewer]", 8 | "multimediaviewer-repository-local": "Maklumat lanjut", 9 | "multimediaviewer-credit-fallback": "Lihat maklumat pengarang", 10 | "multimediaviewer-license-pd": "Domain Awam", 11 | "multimediaviewer-reuse-link": "Sebarkan atau terapkan fail ini", 12 | "multimediaviewer-download-link": "Muat turun fail ini", 13 | "multimediaviewer-view-expanded": "Buka dalam Media Viewer", 14 | "multimediaviewer-disable-confirmation-header": "Anda telah mamtikan Media Viewer", 15 | "multimediaviewer-enable-dialog-header": "Hidupkan Media Viewer?", 16 | "multimediaviewer-enable-text-header": "Hidupkan ciri-ciri tayangan media untuk semua fail secara asal.", 17 | "multimediaviewer-enable-submit-button": "Hidupkan Media Viewer", 18 | "multimediaviewer-enable-confirmation-header": "Anda telah menghidupkan Media Viewer untuk semua fail", 19 | "multimediaviewer-disable-info-title": "Anda telah mematikan Media Viewer" 20 | } 21 | -------------------------------------------------------------------------------- /i18n/mwl.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Athena in Wonderland", 5 | "MokaAkashiyaPT" 6 | ] 7 | }, 8 | "multimediaviewer-optin-pref": "Atibar l [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Media_Viewer/About Bisualizador Multimédia]" 9 | } 10 | -------------------------------------------------------------------------------- /i18n/my.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Dr Lotus Black", 5 | "Ninjastrikers" 6 | ] 7 | }, 8 | "multimediaviewer-repository-local": "နောက်ထပ် အချက်အလက်များ", 9 | "multimediaviewer-datetime-created": "ဖန်တီးခဲ့- $1", 10 | "multimediaviewer-datetime-uploaded": "တင်ခဲ့သည့်နေ့: $1", 11 | "multimediaviewer-credit-fallback": "စာရေးသူ သတင်းအချက်အလက် ကြည့်ရန်", 12 | "multimediaviewer-multiple-authors-combine": "$1 နှင့် $2", 13 | "multimediaviewer-license-default": "လိုင်စင်ကြည့်ရန်", 14 | "multimediaviewer-permission-title": "ခွင့်ပြုချက် အသေးစိတ်များ", 15 | "multimediaviewer-permission-viewmore": "ပိုမိုကြည့်ရှုရန်", 16 | "multimediaviewer-geoloc-north": "N", 17 | "multimediaviewer-geoloc-east": "E", 18 | "multimediaviewer-geoloc-south": "S", 19 | "multimediaviewer-geoloc-west": "W", 20 | "multimediaviewer-geoloc-coord": "$1° $2′ $3″ $4", 21 | "multimediaviewer-geoloc-coords": "$1၊ $2", 22 | "multimediaviewer-geolocation": "တည်နေရာ: $1", 23 | "multimediaviewer-reuse-loading-placeholder": "ဝန်ဆွဲတင်နေသည်...", 24 | "multimediaviewer-share-tab": "မျှဝေ", 25 | "multimediaviewer-download-link": "ဤဖိုင်ကို ဒေါင်းလုတ်ယူရန်", 26 | "multimediaviewer-download-preview-link-title": "ဘရောက်ဆာတွင် ကြည့်ရန်", 27 | "multimediaviewer-download-original-button-name": "မူရင်းဖိုင်ကို ဒေါင်းလုတ်ယူရန်", 28 | "multimediaviewer-download-small-button-name": "ဆိုဒ်အသေး ဒေါင်းလုတ်ယူရန်", 29 | "multimediaviewer-download-medium-button-name": "အလယ်ဆိုဒ် ဒေါင်းလုတ်ယူရန်", 30 | "multimediaviewer-download-large-button-name": "အကြီးဆိုဒ် ဒေါင်းလုတ်ယူရန်", 31 | "multimediaviewer-download-xl-button-name": "အင်မတန်ကြီးသောဆိုဒ် ဒေါင်းလုတ်ယူရန်", 32 | "multimediaviewer-link-to-page": "ဖိုင်ဖော်ပြချက်စာမျက်နှာသို့ လင့်ခ်ချိတ်ရန်", 33 | "multimediaviewer-link-to-file": "မူရင်းဖိုင်သို့ လင့်ခ်ချိတ်ရန်", 34 | "multimediaviewer-html-embed-credit-link-text": "လင့်", 35 | "multimediaviewer-embed-license": "$1 အောက်တွင် လိုင်စင်သတ်မှတ်ထားသည်။", 36 | "multimediaviewer-embed-via": "$1 မှတဆင့်။", 37 | "multimediaviewer-original-embed-dimensions": "မူရင်းဖိုင် $1", 38 | "multimediaviewer-xl-embed-dimensions": "အင်မတန်ကြီး $1", 39 | "multimediaviewer-large-embed-dimensions": "အကြီး $1", 40 | "multimediaviewer-medium-embed-dimensions": "အလယ်အလတ် $1", 41 | "multimediaviewer-small-embed-dimensions": "အသေး $1", 42 | "multimediaviewer-description-page-popup-text": "$1 ရှိ ဤဖိုင်အကြောင်း နောက်ထပ် အချက်အလက်များ", 43 | "multimediaviewer-title-popup-text": "ဖော်ပြချက်", 44 | "multimediaviewer-title-popup-text-more": "ဖော်ပြချက်အပြည့်အစုံ ကြည့်မည်", 45 | "multimediaviewer-disable-confirmation-header": "မီဒီယာ မြင်ကွင်းကို ပိတ်လိုက်ပါပြီ", 46 | "multimediaviewer-enable-dialog-header": "မီဒီယာ မြင်ကွင်းကို ခွင့်ပြုမည်လား", 47 | "multimediaviewer-enable-submit-button": "မီဒီယာ မြင်ကွင်းကို ခွင့်ပြုမည်", 48 | "multimediaviewer-disable-info-title": "မီဒီယာ မြင်ကွင်းကို ပိတ်လိုက်ပါပြီ" 49 | } 50 | -------------------------------------------------------------------------------- /i18n/nah.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Languaeditor" 5 | ] 6 | }, 7 | "multimediaviewer-download-link": "Xiktemowi ni amatl" 8 | } 9 | -------------------------------------------------------------------------------- /i18n/nan-latn-pehoeji.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Winston Sung" 5 | ] 6 | }, 7 | "multimediaviewer-view-expanded": "Īng muî-thé kiám-sī-khì lâi khoàⁿ" 8 | } 9 | -------------------------------------------------------------------------------- /i18n/nap.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "C.R.", 5 | "Chelin" 6 | ] 7 | }, 8 | "multimediaviewer-repository-local": "Cchiù dettaglie", 9 | "multimediaviewer-license-pd": "Pubbreco duminio" 10 | } 11 | -------------------------------------------------------------------------------- /i18n/nds-nl.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Servien" 5 | ] 6 | }, 7 | "multimediaviewer-repository-local": "Meyr informaty", 8 | "multimediaviewer-datetime-created": "Upsteld: $1", 9 | "multimediaviewer-datetime-uploaded": "Upladen: $1", 10 | "multimediaviewer-credit-fallback": "Autöörsgegeavens bekyken", 11 | "multimediaviewer-multiple-authors": "{{PLURAL:$1|noch eyn autöör|noch $1 autöörs}}", 12 | "multimediaviewer-multiple-authors-combine": "$1 en $2", 13 | "multimediaviewer-license-default": "Licensy bekyken", 14 | "multimediaviewer-download-preview-link-title": "In webkyker bekyken", 15 | "multimediaviewer-download-original-button-name": "Oorsprungelik bestand daleladen", 16 | "multimediaviewer-fullscreen-popup-text": "Op volledig scharm laoten zien", 17 | "multimediaviewer-defullscreen-popup-text": "Volledig scharm sluten", 18 | "multimediaviewer-title-popup-text": "Bestaandsnaam", 19 | "multimediaviewer-download-optional-attribution-cta-header": "Jy künnet autöör vermelden", 20 | "multimediaviewer-download-attribution-cta": "Låt my seen ho", 21 | "multimediaviewer-reuse-warning-noattribution": "Dit bestand hevt geen naamsvermeldingsinformaty.", 22 | "multimediaviewer-attr-plain": "Platte tekst" 23 | } 24 | -------------------------------------------------------------------------------- /i18n/ne.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Bada Kaji", 5 | "NehalDaveND", 6 | "पर्वत सुबेदी", 7 | "बडा काजी", 8 | "सरोज कुमार ढकाल", 9 | "हिमाल सुबेदी" 10 | ] 11 | }, 12 | "multimediaviewer-repository-local": "अधिक जानकारी", 13 | "multimediaviewer-datetime-created": "सिर्जना गरिएको: $1", 14 | "multimediaviewer-datetime-uploaded": "उर्ध्वभरण गरिएको: $1", 15 | "multimediaviewer-credit-fallback": "लेखक जानकारी हेर्नुहोस्", 16 | "multimediaviewer-multiple-authors-combine": "$1 र $2", 17 | "multimediaviewer-thumbnail-error-retry": "पुनः प्रयास गर्नुहोस्", 18 | "multimediaviewer-license-cc-pd": "सार्वजनिक डोमेन", 19 | "multimediaviewer-license-pd": "सार्वजनिक डोमेन", 20 | "multimediaviewer-license-default": "अनुमति पत्र हेर्नुहोस्", 21 | "multimediaviewer-permission-title": "अनुमति विवरण", 22 | "multimediaviewer-permission-link": "सर्तहरू हेर्नुहोस्", 23 | "multimediaviewer-permission-link-hide": "सर्तहरू लुकाउनुहोस्", 24 | "multimediaviewer-permission-viewmore": "थप हेर्नुहोस्", 25 | "multimediaviewer-geoloc-north": "उ", 26 | "multimediaviewer-geoloc-east": "पू", 27 | "multimediaviewer-geoloc-south": "द", 28 | "multimediaviewer-geoloc-west": "प", 29 | "multimediaviewer-geolocation": "स्थान: $1", 30 | "multimediaviewer-reuse-loading-placeholder": "खुल्दै छ…", 31 | "multimediaviewer-share-tab": "बाड्ने", 32 | "multimediaviewer-embed-wt": "विकिपाठ", 33 | "multimediaviewer-embed-html": "HTML", 34 | "multimediaviewer-text-embed-credit-text-bl": "$1, $2, $3 द्वारा", 35 | "multimediaviewer-text-embed-credit-text-b": "$1, $2 द्वारा", 36 | "multimediaviewer-html-embed-credit-text-bl": "$1, $2, $3 द्वारा", 37 | "multimediaviewer-html-embed-credit-text-b": "$1, $2 द्वारा", 38 | "multimediaviewer-html-embed-credit-link-text": "कडी", 39 | "multimediaviewer-embed-byline": "$1 द्वारा", 40 | "multimediaviewer-embed-license": "$1 मुनि लाइसेन्स प्राप्त।", 41 | "multimediaviewer-embed-via": "$1 मार्फत।", 42 | "multimediaviewer-original-embed-dimensions": "मूल फाइल $1", 43 | "multimediaviewer-large-embed-dimensions": "ठूलो $1", 44 | "multimediaviewer-medium-embed-dimensions": "मध्यम $1", 45 | "multimediaviewer-small-embed-dimensions": "सानो $1", 46 | "multimediaviewer-description-page-button-text": "यस फाइलको बारेमा थप विवरणहरू", 47 | "multimediaviewer-view-config": "अभिरुचिहरू", 48 | "multimediaviewer-close-popup-text": "यो उपकरण बन्द गर्नुहोस् (Esc)", 49 | "multimediaviewer-fullscreen-popup-text": "पूर्ण स्क्रिनमा देखाउनुहोस्", 50 | "multimediaviewer-next-image-alt-text": "अर्को चित्र देखाउनुहोस्", 51 | "multimediaviewer-prev-image-alt-text": "अघिल्लो चित्र देखाउनुहोस्", 52 | "multimediaviewer-title-popup-text": "वर्णन", 53 | "multimediaviewer-credit-popup-text": "लेखक र स्रोत जानकारी", 54 | "multimediaviewer-title-popup-text-more": "पूरा विवरण हेर्नुहोस्", 55 | "multimediaviewer-credit-popup-text-more": "पूरा लेखक र स्रोत हेर्नुहोस्", 56 | "multimediaviewer-download-attribution-cta-header": "तपाईंले लेखकलाई श्रेय दिन आवश्यक छ", 57 | "multimediaviewer-download-optional-attribution-cta-header": "तपाई लेखकलाई श्रेय दिन सक्नुहुन्छ", 58 | "multimediaviewer-download-attribution-cta": "मलाई कसरी देखाउनुहोस्", 59 | "multimediaviewer-attr-plain": "सादा", 60 | "multimediaviewer-disable-confirmation-header": "तपाईंले मिडिया दर्शक असक्षम गर्नुभएको छ", 61 | "multimediaviewer-enable-dialog-header": "मिडिया दर्शक सक्षम गर्ने हो?", 62 | "multimediaviewer-enable-submit-button": "मिडिया दर्शक सक्षम गर्नुहोस्" 63 | } 64 | -------------------------------------------------------------------------------- /i18n/oc.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Cedric31", 5 | "Lhanars" 6 | ] 7 | }, 8 | "multimediaviewer-desc": "Agrandís las vinhetas dins una interfàcia en ecran complet.", 9 | "multimediaviewer-file-page": "Anar a la pagina del fichièr correspondent", 10 | "multimediaviewer-repository-local": "Mai de detalhs", 11 | "multimediaviewer-datetime-created": "Creacion : $1", 12 | "multimediaviewer-datetime-uploaded": "Mandat : $1", 13 | "multimediaviewer-license-cc-pd": "Domeni public", 14 | "multimediaviewer-license-pd": "Domeni public", 15 | "multimediaviewer-license-default": "Afichar la licéncia", 16 | "multimediaviewer-permission-title": "Detalhs dels dreits", 17 | "multimediaviewer-permission-link": "afichar las condicions", 18 | "multimediaviewer-permission-viewmore": "Veire mai", 19 | "multimediaviewer-geolocation": "Emplaçament : $1", 20 | "multimediaviewer-reuse-link": "Partejar o inclure aqueste fichièr", 21 | "multimediaviewer-reuse-loading-placeholder": "Cargament en cors…", 22 | "multimediaviewer-download-link": "Telecargar aqueste fichièr", 23 | "multimediaviewer-download-preview-link-title": "Afichar dins lo navigador", 24 | "multimediaviewer-download-original-button-name": "Telecargar lo fichièr d’origina", 25 | "multimediaviewer-download-small-button-name": "Telecargar en pichona talha", 26 | "multimediaviewer-download-medium-button-name": "Telecargar en talha mejana", 27 | "multimediaviewer-download-large-button-name": "Telecargar en granda talha", 28 | "multimediaviewer-default-embed-dimensions": "Talha de vinheta per defaut", 29 | "multimediaviewer-original-embed-dimensions": "Fichièr d’origina $1", 30 | "multimediaviewer-large-embed-dimensions": "Grand $1", 31 | "multimediaviewer-medium-embed-dimensions": "Mejan $1", 32 | "multimediaviewer-small-embed-dimensions": "Pichon $1", 33 | "multimediaviewer-description-page-button-text": "Mai de detalhs sus aqueste fichièr", 34 | "multimediaviewer-description-page-popup-text": "Mai de detalhs sus aqueste fichièr en $1", 35 | "multimediaviewer-commons-subtitle": "L'entrepaus de mèdia liure", 36 | "multimediaviewer-view-expanded": "Dobrir dins lo Visualizador de mèdias", 37 | "multimediaviewer-close-popup-text": "Tampar aquesta aisina (Esc)", 38 | "multimediaviewer-fullscreen-popup-text": "Mòstra la mapa complèta" 39 | } 40 | -------------------------------------------------------------------------------- /i18n/or.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Psubhashish" 5 | ] 6 | }, 7 | "multimediaviewer-desc": "ପୂରା ସ୍କ୍ରିନରେ ଥମ୍ବନେଲକୁ ବଡ଼ ଆକାର କରିଦିଅନ୍ତୁ ।", 8 | "multimediaviewer-optin-pref": "ନୂଆ ମିଡ଼ିଆ ଦେଖିବା ସକ୍ରିୟ କରନ୍ତୁ", 9 | "multimediaviewer-file-page": "ଏଥି ସମ୍ବନ୍ଧିତ ଫାଇଲ ପୃଷ୍ଠାକୁ ଯାଆନ୍ତୁ", 10 | "multimediaviewer-repository-local": "ଅଧିକ ଜାଣନ୍ତୁ", 11 | "multimediaviewer-datetime-created": "$1ରେ ତିଆରି ହେଲା", 12 | "multimediaviewer-datetime-uploaded": "$1ରେ ଅପଲୋଡ଼ ହେଲା", 13 | "multimediaviewer-metadata-error": "ଚେତାବନୀ: ଛବିର ତଥ୍ୟ ଲୋଡ଼ ହୋଇପାରିଲା ନାହିଁ । $1", 14 | "multimediaviewer-thumbnail-error": "ଚେତାବନୀ: ଥମ୍ବନେଲ ତଥ୍ୟ ଲୋଡ଼ ହୋଇପାରିଲା ନାହିଁ । $1", 15 | "multimediaviewer-license-cc-pd": "ପବ୍ଲିକ ଡୋମେନ", 16 | "multimediaviewer-license-pd": "ପବ୍ଲିକ ଡୋମେନ", 17 | "multimediaviewer-license-default": "ଲାଇସେନ୍ସ ଦେଖନ୍ତୁ", 18 | "multimediaviewer-permission-title": "ଲାଇସେନ୍ସ ସବିଶେଷ", 19 | "multimediaviewer-permission-link": "ସର୍ତ୍ତାବଳୀ ଦେଖନ୍ତୁ", 20 | "multimediaviewer-permission-viewmore": "ଅଧିକ ଦେଖନ୍ତୁ", 21 | "multimediaviewer-geolocation": "ଅବସ୍ଥିତି: $1", 22 | "multimediaviewer-reuse-link": "ଏହି ଫାଇଲ ବ୍ୟବହାର କରନ୍ତୁ", 23 | "multimediaviewer-reuse-loading-placeholder": "ଖୋଲୁଛି...", 24 | "multimediaviewer-share-tab": "ବିତରଣ କରନ୍ତୁ", 25 | "multimediaviewer-embed-tab": "ଏମବେଡ଼", 26 | "multimediaviewer-download-link": "ଡାଉନଲୋଡ଼", 27 | "multimediaviewer-download-preview-link-title": "ବ୍ରାଉଜରରେ ଦେଖନ୍ତୁ", 28 | "multimediaviewer-download-original-button-name": "ମୂଳ ଆକାର ଡାଉନଲୋଡ଼ କରନ୍ତୁ", 29 | "multimediaviewer-download-small-button-name": "ଛୋଟ ଆକାର ଡାଉନଲୋଡ଼ କରନ୍ତୁ", 30 | "multimediaviewer-download-medium-button-name": "ମଧ୍ୟମ ଆକାର ଡାଉନଲୋଡ଼ କରନ୍ତୁ", 31 | "multimediaviewer-download-large-button-name": "ବଡ଼ ଆକାର ଡାଉନଲୋଡ଼ କରନ୍ତୁ", 32 | "multimediaviewer-link-to-page": "ବିବରଣ ପୃଷ୍ଠା ସହିତ ଲିଙ୍କ କରନ୍ତୁ", 33 | "multimediaviewer-link-to-file": "ମୂଳ ପୃଷ୍ଠା ସହିତ ଲିଙ୍କ କରନ୍ତୁ", 34 | "multimediaviewer-share-explanation": "ନକଲ କରି ଖୋଲାରେ ଏହି ଲିଙ୍କଟି ବିତରଣ କରନ୍ତୁ", 35 | "multimediaviewer-embed-wt": "ଉଇକିଟେକ୍ସଟ", 36 | "multimediaviewer-embed-html": "ଏଚଟିଏମଏଲ", 37 | "multimediaviewer-embed-explanation": "ଫାଇଲଟି ଏମବେଡ଼ କରିବା ପାଇଁ ଏହି କୋଡ଼ ଦିଅନ୍ତୁ", 38 | "multimediaviewer-embed-byline": "$1ଙ୍କ ଦ୍ୱାରା", 39 | "multimediaviewer-embed-license": "$1 ଲାଇସେନ୍ସରେ ପ୍ରକାଶିତ ।", 40 | "multimediaviewer-embed-via": "$1ଙ୍କ ଦ୍ୱାରା", 41 | "multimediaviewer-default-embed-dimensions": "ଡିଫଲ୍ଟ ଥମ୍ବନେଲ ଆକାର", 42 | "multimediaviewer-original-embed-dimensions": "ମୂଳ ଆକାର $1", 43 | "multimediaviewer-large-embed-dimensions": "ଆକାର $1", 44 | "multimediaviewer-medium-embed-dimensions": "ମଧ୍ୟମ $1", 45 | "multimediaviewer-small-embed-dimensions": "ଛୋଟ $1", 46 | "multimediaviewer-description-page-button-text": "ସବିଶେଷ", 47 | "multimediaviewer-description-page-popup-text": "$1 ବାବଦରେ ଅଧିକ ସବିଶେଷ", 48 | "multimediaviewer-commons-subtitle": "ଖୋଲା ମିଡ଼ିଆ ଭଣ୍ଡାରଟିଏ", 49 | "multimediaviewer-view-expanded": "ବଡ଼କରି ଦେଖାଇବେ" 50 | } 51 | -------------------------------------------------------------------------------- /i18n/os.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Amikeco" 5 | ] 6 | }, 7 | "multimediaviewer-license-pd": "Æхсæнады хæзна" 8 | } 9 | -------------------------------------------------------------------------------- /i18n/pa.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Babanwalia", 5 | "Cabal" 6 | ] 7 | }, 8 | "multimediaviewer-repository-local": "ਹੋਰ ਵੇਰਵਾ", 9 | "multimediaviewer-download-link": "ਇਹ ਫ਼ਾਈਲ ਲਾਹੋ", 10 | "multimediaviewer-share-explanation": "ਕੜੀ ਦੀ ਨਕਲ ਕਰੋ ਅਤੇ ਖੁੱਲ੍ਹ ਕੇ ਸਾਂਝਾ ਕਰੋ", 11 | "multimediaviewer-view-expanded": "ਮੀਡੀਆ ਵਿਖਾਊ 'ਚ ਖੋਲ੍ਹੋ" 12 | } 13 | -------------------------------------------------------------------------------- /i18n/pnb.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Abbas dhothar" 5 | ] 6 | }, 7 | "multimediaviewer-repository-local": "ہور تفصیل", 8 | "multimediaviewer-permission-viewmore": "ہور دیکھو", 9 | "multimediaviewer-title-popup-text": "تفصیل" 10 | } 11 | -------------------------------------------------------------------------------- /i18n/ps.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Af420", 5 | "Ahmed-Najib-Biabani-Ibrahimkhel", 6 | "Amjad Khan", 7 | "Baloch Khan", 8 | "شاه زمان پټان" 9 | ] 10 | }, 11 | "multimediaviewer-optin-pref": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Media_Viewer/About رسنۍ کتونکی] چارنول", 12 | "multimediaviewer-repository-local": "نور تفصيل", 13 | "multimediaviewer-datetime-created": "جوړشوی: $1", 14 | "multimediaviewer-datetime-uploaded": "راپورته شوی: $1", 15 | "multimediaviewer-credit-fallback": "د ليکوال مالومات کتل", 16 | "multimediaviewer-license-cc-pd": "ټولگړی شپول", 17 | "multimediaviewer-license-default": "منښتليک کتل", 18 | "multimediaviewer-permission-title": "د اجازې تفصيل", 19 | "multimediaviewer-permission-link": "شرطونه وګورئ", 20 | "multimediaviewer-permission-link-hide": "شرطونه پټ کړئ", 21 | "multimediaviewer-reuse-link": "دا دوتنه ننه‌ايستل يا وېشل", 22 | "multimediaviewer-download-link": "همدا دوتنه ښکته کول", 23 | "multimediaviewer-download-preview-link-title": "په کتنمل کې کتل", 24 | "multimediaviewer-download-original-button-name": "اصلي دوتنه ښکته کول", 25 | "multimediaviewer-link-to-file": "اصلي دوتنې ته تړنه", 26 | "multimediaviewer-original-embed-dimensions": "اصلي دوتنه $1", 27 | "multimediaviewer-view-expanded": "په رسنۍ کتونکي کې پرانيستل", 28 | "multimediaviewer-close-popup-text": "دا اوزار تړل (Esc)", 29 | "multimediaviewer-fullscreen-popup-text": "پر لوی سکرين کتنه", 30 | "multimediaviewer-download-optional-attribution-cta-header": "ليکوال ته يې اړونده کولی شی", 31 | "multimediaviewer-disable-confirmation-text": "بل ځل ته چې تاسې د $1 په يو بټنوک ټک ورکوئ، نو سمدلاسه به د دوتنې ټول تفصيل درښکاره شي.", 32 | "multimediaviewer-enable-dialog-header": "رسنۍ کتونکی چارنوې؟", 33 | "multimediaviewer-enable-text-header": "د همدې رسنۍ د کتلو ځانتياوې په تلواليزه توگه د ټولو دوتنو لپاره چارنول.", 34 | "multimediaviewer-enable-submit-button": "رسنۍ کتونکی چارنول", 35 | "multimediaviewer-enable-confirmation-header": "تاسې د ټولو دوتنو لپاره رسنۍ کتونکی چارن کړی", 36 | "multimediaviewer-enable-confirmation-text": "بل ځل ته چې تاسې د $1 په يو بټنوک ټک ورکوئ، نو رسنۍ کتونکی به وکارېږي.", 37 | "multimediaviewer-disable-info-title": "تاسې رسنۍ کتونکی ناچارن کړ", 38 | "multimediaviewer-disable-info": "تاسې لا تر اوسه پورې د رسنۍ کتونکي په مرسته ځانگړې دوتنې کتلی شی." 39 | } 40 | -------------------------------------------------------------------------------- /i18n/pwn.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Akamycoco" 5 | ] 6 | }, 7 | "multimediaviewer-datetime-created": "kitjuveqac: $1", 8 | "multimediaviewer-original-embed-dimensions": "Kasicuayanan a sineqetj a vecik $1" 9 | } 10 | -------------------------------------------------------------------------------- /i18n/qu.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "AlimanRuna" 5 | ] 6 | }, 7 | "multimediaviewer-repository-local": "Astawan rikuy", 8 | "multimediaviewer-datetime-created": "Kamarisqa: $1", 9 | "multimediaviewer-datetime-uploaded": "Churkusqa: $1", 10 | "multimediaviewer-credit-fallback": "Ruraqmanta willaykunata qhaway", 11 | "multimediaviewer-license-cc-pd": "Sapsi Chaskinancha", 12 | "multimediaviewer-license-pd": "Sapsi Chaskinancha", 13 | "multimediaviewer-permission-title": "Imaymana saqillaymanta", 14 | "multimediaviewer-permission-viewmore": "Astawan qhaway", 15 | "multimediaviewer-geolocation": "Kay puystupi: $1", 16 | "multimediaviewer-reuse-loading-placeholder": "Chaqnamuspa…", 17 | "multimediaviewer-share-tab": "Rakinakuy", 18 | "multimediaviewer-embed-html": "HTML", 19 | "multimediaviewer-embed-byline": "$1-pa rurasqan", 20 | "multimediaviewer-original-embed-dimensions": "Qallariy willañiqi $1", 21 | "multimediaviewer-large-embed-dimensions": "Hatun $1", 22 | "multimediaviewer-medium-embed-dimensions": "Chawpi chhika $1", 23 | "multimediaviewer-small-embed-dimensions": "Uchuy $1", 24 | "multimediaviewer-description-page-popup-text": "Kay willañiqimanta astawan rikuy kaypi: $1", 25 | "multimediaviewer-view-expanded": "Multimidya qhawanapi kichariy", 26 | "multimediaviewer-title-popup-text": "T'iktuna" 27 | } 28 | -------------------------------------------------------------------------------- /i18n/roa-tara.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Joetaras" 5 | ] 6 | }, 7 | "multimediaviewer-optin-pref": "Abbilite 'u [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Media_Viewer/About Media Viewer]", 8 | "multimediaviewer-repository-local": "Cchiù dettaglie", 9 | "multimediaviewer-datetime-created": "Ccrejate: $1", 10 | "multimediaviewer-datetime-uploaded": "Carecate: $1", 11 | "multimediaviewer-credit-fallback": "'Ndruche le 'mbormaziune de l'autore", 12 | "multimediaviewer-multiple-authors": "{{PLURAL:$1|'n'otre autore|otre $1 auture}}", 13 | "multimediaviewer-multiple-authors-combine": "$1 e $2", 14 | "multimediaviewer-thumbnail-error-retry": "pruève arrete", 15 | "multimediaviewer-thumbnail-error-report": "segnale stu probbleme", 16 | "multimediaviewer-license-cc-pd": "Dominie pubbleche", 17 | "multimediaviewer-license-pd": "Dominie pubbleche", 18 | "multimediaviewer-license-default": "'Ndruche 'a licenze", 19 | "multimediaviewer-permission-title": "Dettaglie d'u permesse", 20 | "multimediaviewer-permission-link": "'ndruche le termine", 21 | "multimediaviewer-permission-link-hide": "scunne le termine", 22 | "multimediaviewer-permission-viewmore": "'Ndruche de cchiù", 23 | "multimediaviewer-geolocation": "Posizione: $1", 24 | "multimediaviewer-reuse-loading-placeholder": "Stoche a careche...", 25 | "multimediaviewer-share-tab": "Condivide", 26 | "multimediaviewer-embed-tab": "'Ngapsule", 27 | "multimediaviewer-download-link": "Scareche stu file", 28 | "multimediaviewer-attr-plain": "Normale" 29 | } 30 | -------------------------------------------------------------------------------- /i18n/sa.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Charunandan16", 5 | "NehalDaveND" 6 | ] 7 | }, 8 | "multimediaviewer-repository-local": "अधिकविवरणम्", 9 | "multimediaviewer-multiple-authors-combine": "$1, $2 च", 10 | "multimediaviewer-thumbnail-error-description": "तान्रिाःकः अयं दोषः।यदि अयम् अवशिष्यते तर्हि भवन्तः $1 त्रुटिः: $2", 11 | "multimediaviewer-thumbnail-error-retry": "पुनःप्रयासः", 12 | "multimediaviewer-reuse-loading-placeholder": "आरोपयति...", 13 | "multimediaviewer-share-tab": "वितरतु", 14 | "multimediaviewer-embed-html": "एच् टि एम् एल्", 15 | "multimediaviewer-embed-byline": "$1 द्वारा", 16 | "multimediaviewer-embed-via": "$1 भूत्वा", 17 | "multimediaviewer-title-popup-text": "वर्णनम्" 18 | } 19 | -------------------------------------------------------------------------------- /i18n/scn.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Ajeje Brazorf" 5 | ] 6 | }, 7 | "multimediaviewer-repository-local": "Àutri dittagghî", 8 | "multimediaviewer-datetime-created": "Criatu: $1", 9 | "multimediaviewer-credit-fallback": "Talìa nfurmazzioni supra l'auturi", 10 | "multimediaviewer-multiple-authors": "{{PLURAL:$1|n'àutru auturi|$1 àutri autura}}", 11 | "multimediaviewer-multiple-authors-combine": "$1 e $2", 12 | "multimediaviewer-license-default": "Talìa la licenza", 13 | "multimediaviewer-permission-viewmore": "Ammustra àutru", 14 | "multimediaviewer-download-link": "Scàrrica stu file", 15 | "multimediaviewer-link-to-file": "Liami ô file orìgginali", 16 | "multimediaviewer-embed-wt": "Wikitestu", 17 | "multimediaviewer-embed-html": "HTML", 18 | "multimediaviewer-html-embed-credit-link-text": "Liami", 19 | "multimediaviewer-original-embed-dimensions": "File orìgginali $1", 20 | "multimediaviewer-small-embed-dimensions": "Nicu $1", 21 | "multimediaviewer-description-page-button-text": "Àutri dittagghî supra stu file", 22 | "multimediaviewer-view-config": "Configurazzioni", 23 | "multimediaviewer-close-popup-text": "Chiudi stu strummrntu (Esc)", 24 | "multimediaviewer-title-popup-text": "Discrizzioni", 25 | "multimediaviewer-title-popup-text-more": "Talìa la discrizzioni cumpreta" 26 | } 27 | -------------------------------------------------------------------------------- /i18n/sco.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "AmaryllisGardener", 5 | "John Reid", 6 | "MJL" 7 | ] 8 | }, 9 | "multimediaviewer-optin-pref": "Enable [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Media_Viewer/About Media Viewer]", 10 | "multimediaviewer-metadata-error": "Mistak: Coudna laid eemage data. $1", 11 | "multimediaviewer-thumbnail-error": "Mistak: Coudna laid thummnail data. $1", 12 | "multimediaviewer-license-pd": "Public Domain", 13 | "multimediaviewer-permission-title": "Permeession details", 14 | "multimediaviewer-permission-link": "see the terms", 15 | "multimediaviewer-permission-viewmore": "See mair", 16 | "multimediaviewer-reuse-loading-placeholder": "Laidin...", 17 | "multimediaviewer-share-tab": "Shair", 18 | "multimediaviewer-embed-tab": "Embed", 19 | "multimediaviewer-download-link": "Dounlaid this file", 20 | "multimediaviewer-download-preview-link-title": "See in the brouser", 21 | "multimediaviewer-download-original-button-name": "Dounlaid the oreeginal file", 22 | "multimediaviewer-download-small-button-name": "Dounlaid wee size", 23 | "multimediaviewer-download-medium-button-name": "Dounlaid middlin size", 24 | "multimediaviewer-download-large-button-name": "Dounlaid muckle size", 25 | "multimediaviewer-link-to-page": "Link til file descreeption page", 26 | "multimediaviewer-link-to-file": "Airt til oreeginal file", 27 | "multimediaviewer-share-explanation": "Capie n freelie shair the airtin", 28 | "multimediaviewer-embed-wt": "Wikitex", 29 | "multimediaviewer-embed-html": "HTML", 30 | "multimediaviewer-embed-explanation": "Uise this code tae embed the file", 31 | "multimediaviewer-embed-byline": "Bi $1", 32 | "multimediaviewer-embed-license": "Licensed unner $1.", 33 | "multimediaviewer-embed-via": "Bi waa o $1.", 34 | "multimediaviewer-default-embed-dimensions": "Defaut thummnail size", 35 | "multimediaviewer-original-embed-dimensions": "Oreeginal file $1", 36 | "multimediaviewer-large-embed-dimensions": "Muckle $1", 37 | "multimediaviewer-medium-embed-dimensions": "Midlin $1", 38 | "multimediaviewer-small-embed-dimensions": "Smaw $1", 39 | "multimediaviewer-title-popup-text": "Descreeption" 40 | } 41 | -------------------------------------------------------------------------------- /i18n/sdc.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "F Samaritani", 5 | "Jun Misugi" 6 | ] 7 | }, 8 | "multimediaviewer-repository-local": "Imparà più", 9 | "multimediaviewer-multiple-authors-combine": "$1 e $2", 10 | "multimediaviewer-thumbnail-error-retry": "ribrubà", 11 | "multimediaviewer-geolocation": "Loggu: $1", 12 | "multimediaviewer-reuse-loading-placeholder": "Carrigghendi...", 13 | "multimediaviewer-embed-wt": "Wikitext", 14 | "multimediaviewer-embed-html": "HTML", 15 | "multimediaviewer-text-embed-credit-text-bl": "Di $1, $2, $3", 16 | "multimediaviewer-text-embed-credit-text-b": "Di $1, $2", 17 | "multimediaviewer-html-embed-credit-text-bl": "Di $1, $2, $3", 18 | "multimediaviewer-html-embed-credit-text-b": "Di $1, $2", 19 | "multimediaviewer-html-embed-credit-link-text": "Liaddura", 20 | "multimediaviewer-embed-byline": "Di $1", 21 | "multimediaviewer-original-embed-dimensions": "File d'orìgini $1", 22 | "multimediaviewer-title-popup-text": "Deschrizioni" 23 | } 24 | -------------------------------------------------------------------------------- /i18n/se.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Kimberli Mäkäräinen (WMNO)", 5 | "Yupik" 6 | ] 7 | }, 8 | "multimediaviewer-license-default": "Čájet liseanssa", 9 | "multimediaviewer-permission-viewmore": "Čájet eambbo", 10 | "multimediaviewer-share-tab": "Juoge", 11 | "multimediaviewer-download": "Viečča", 12 | "multimediaviewer-embed-wt": "Wikiteaksta", 13 | "multimediaviewer-html-embed-credit-link-text": "Liŋka", 14 | "multimediaviewer-original-embed-dimensions": "Álgovuolggalaš fiila $1", 15 | "multimediaviewer-title-popup-text": "Govvádus" 16 | } 17 | -------------------------------------------------------------------------------- /i18n/sgs.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Hugo.arg" 5 | ] 6 | }, 7 | "multimediaviewer-optin-pref": "Ijongtė [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Media_Viewer/About abruozdieliu parvaizas rakonda]", 8 | "multimediaviewer-repository-local": "Tėksliau", 9 | "multimediaviewer-datetime-created": "Padėrbts: $1", 10 | "multimediaviewer-datetime-uploaded": "Ikelts: $1", 11 | "multimediaviewer-credit-fallback": "Veizietė žėnēs aple autorio", 12 | "multimediaviewer-multiple-authors-combine": "$1 ė $2", 13 | "multimediaviewer-license-cc-pd": "Vėiša nauduojėma", 14 | "multimediaviewer-license-pd": "Vėiša nauduojėma", 15 | "multimediaviewer-license-default": "Veizietė lėcencėjė", 16 | "multimediaviewer-permission-link": "veizietė sālīgas", 17 | "multimediaviewer-permission-link-hide": "kavuotė sālīgas", 18 | "multimediaviewer-permission-viewmore": "Da veizietė", 19 | "multimediaviewer-geolocation": "Vėita: $1", 20 | "multimediaviewer-description-page-button-text": "Daugiau žėniū aple ta abruozdieli", 21 | "multimediaviewer-view-expanded": "Atverė so abruozdieliu parveiza", 22 | "multimediaviewer-title-popup-text": "Aprašīms" 23 | } 24 | -------------------------------------------------------------------------------- /i18n/shn.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Saimawnkham" 5 | ] 6 | }, 7 | "multimediaviewer-title-popup-text": "ၶေႃႈသပ်းလႅင်း" 8 | } 9 | -------------------------------------------------------------------------------- /i18n/si.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "1100100", 5 | "Sahan.ssw", 6 | "Susith Chandira Gts", 7 | "Thirsty" 8 | ] 9 | }, 10 | "multimediaviewer-metadata-error": "පින්තූරයේ විස්තර වලට ප්‍රෙව්ශනය විය නොහැක(දෝෂය:$1)", 11 | "multimediaviewer-thumbnail-error": "සමාවන්න, ගොනුව පෙන්විය නොහැක.", 12 | "multimediaviewer-thumbnail-error-retry": "නැවත උත්සහ කරන්න", 13 | "multimediaviewer-permission-title": "බලපත්‍ර විස්තර", 14 | "multimediaviewer-permission-link": "කොන්දේසි පෙන්වන්න", 15 | "multimediaviewer-permission-link-hide": "කොන්දේසි සඟවන්න", 16 | "multimediaviewer-permission-viewmore": "තවත් බලන්න", 17 | "multimediaviewer-embed-html": "HTML" 18 | } 19 | -------------------------------------------------------------------------------- /i18n/sje.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Olve Utne" 5 | ] 6 | }, 7 | "multimediaviewer-download-link": "Lässti dáv fijlav vulus", 8 | "multimediaviewer-title-popup-text": "Gåvådibme" 9 | } 10 | -------------------------------------------------------------------------------- /i18n/skr-arab.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Saraiki" 5 | ] 6 | }, 7 | "multimediaviewer-repository-local": "ٻیاں تفصیلاں", 8 | "multimediaviewer-datetime-created": "خلقیا: $1", 9 | "multimediaviewer-datetime-uploaded": "اپلوڈ تھیا: $1", 10 | "multimediaviewer-thumbnail-error-retry": "ولدا کوشش کرو", 11 | "multimediaviewer-thumbnail-error-report": "مسئلہ رپورٹ کرو", 12 | "multimediaviewer-license-cc-pd": "عوامی ڈومین", 13 | "multimediaviewer-license-pd": "عوامی ڈومین", 14 | "multimediaviewer-license-default": "لائسنس ݙیکھو", 15 | "multimediaviewer-permission-title": "اجازت تفصیلاں", 16 | "multimediaviewer-permission-link": "شرطاں ݙیکھو", 17 | "multimediaviewer-permission-link-hide": "شرطاں لکاؤ", 18 | "multimediaviewer-permission-viewmore": "ٻئے ݙیکھو", 19 | "multimediaviewer-reuse-loading-placeholder": "لوڈ تھین٘دا پئے۔۔۔", 20 | "multimediaviewer-share-tab": "شیئر", 21 | "multimediaviewer-embed-tab": "ایمبیڈ کرو", 22 | "multimediaviewer-download": "ڈاؤن لوڈ", 23 | "multimediaviewer-download-link": "ایہ فائل ڈاؤن لوڈ کرو", 24 | "multimediaviewer-download-preview-link-title": "براؤزر وچ ݙیکھو", 25 | "multimediaviewer-download-original-button-name": "اصل فائل ڈاؤن لوڈ کرو", 26 | "multimediaviewer-embed-wt": "وکی ٹیکسٹ", 27 | "multimediaviewer-embed-html": "ایچ ٹی ایم ایل", 28 | "multimediaviewer-html-embed-credit-link-text": "لنک", 29 | "multimediaviewer-original-embed-dimensions": "اصل فائل $1", 30 | "multimediaviewer-xl-embed-dimensions": "ٻہوں وݙا $1", 31 | "multimediaviewer-large-embed-dimensions": "وݙا $1", 32 | "multimediaviewer-medium-embed-dimensions": "درمیانہ $1", 33 | "multimediaviewer-small-embed-dimensions": "چھوٹا $1", 34 | "multimediaviewer-view-config": "کنفگریشن", 35 | "multimediaviewer-title-popup-text": "تفصیل", 36 | "multimediaviewer-copy-button": "نقل کرو", 37 | "multimediaviewer-attr-plain": "سادی" 38 | } 39 | -------------------------------------------------------------------------------- /i18n/sma.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Yupik" 5 | ] 6 | }, 7 | "multimediaviewer-html-embed-credit-link-text": "Svaalhtese" 8 | } 9 | -------------------------------------------------------------------------------- /i18n/smj.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Yupik" 5 | ] 6 | }, 7 | "multimediaviewer-html-embed-credit-link-text": "Sváldas" 8 | } 9 | -------------------------------------------------------------------------------- /i18n/smn.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Seipinne", 5 | "Yupik" 6 | ] 7 | }, 8 | "multimediaviewer-license-default": "Čääiti liiseens", 9 | "multimediaviewer-reuse-loading-placeholder": "Luođiimin…", 10 | "multimediaviewer-share-tab": "Jyevi", 11 | "multimediaviewer-download-link": "Luođii taam tiätuvuárhá", 12 | "multimediaviewer-download-original-button-name": "Luođii algâalgâlii tiätuvuárhá", 13 | "multimediaviewer-link-to-file": "Liŋkkâ algâalgâlâš tiätuvuárkán", 14 | "multimediaviewer-embed-wt": "Wikitekstâ", 15 | "multimediaviewer-html-embed-credit-link-text": "Liŋkkâ", 16 | "multimediaviewer-default-embed-dimensions": "Miniatyyrkuuvij nabdosstuárudâh", 17 | "multimediaviewer-original-embed-dimensions": "Algâalgâlâš tiätuvuárkká $1", 18 | "multimediaviewer-title-popup-text": "Kuvvim", 19 | "multimediaviewer-enable-dialog-header": "Vääldi Mediakeččee kiävtun?", 20 | "multimediaviewer-enable-submit-button": "Vääldi Mediakeččee kiävtun" 21 | } 22 | -------------------------------------------------------------------------------- /i18n/sms.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Yupik" 5 | ] 6 | }, 7 | "multimediaviewer-repository-local": "Lââʹssteâđ", 8 | "multimediaviewer-datetime-created": "Rajjum: $1", 9 | "multimediaviewer-multiple-authors-combine": "$1 da $2", 10 | "multimediaviewer-thumbnail-error-retry": "ǩiččlõõđ oʹđđest", 11 | "multimediaviewer-thumbnail-error-report": "iʹlmmted čuõlmâst", 12 | "multimediaviewer-license-default": "Čuäʹjet liseeʹns", 13 | "multimediaviewer-permission-link": "čuäʹjet ââʹnnem-määinaid", 14 | "multimediaviewer-permission-link-hide": "čiõǥǥ ââʹnnem-määinaid", 15 | "multimediaviewer-permission-viewmore": "Čuäʹjet lââʹzz", 16 | "multimediaviewer-share-tab": "Jueʹjj", 17 | "multimediaviewer-download-link": "Laadd tän teâttõõzz", 18 | "multimediaviewer-download-preview-link-title": "Čuäʹjet neʹttlookkjest", 19 | "multimediaviewer-download-original-button-name": "Laadd alggveärlaž teâttõõzz", 20 | "multimediaviewer-link-to-file": "Liŋkk alggveärlaž teâttõʹsse", 21 | "multimediaviewer-embed-wt": "Wikiteʹkstt", 22 | "multimediaviewer-embed-html": "HTML", 23 | "multimediaviewer-html-embed-credit-link-text": "Liŋkk", 24 | "multimediaviewer-embed-license": "Lisenssiõsttum liseeʹnsin $1.", 25 | "multimediaviewer-original-embed-dimensions": "Alggveärlaž teâttõs $1", 26 | "multimediaviewer-description-page-button-text": "Lââʹssteâđ tän teâttõõzzâst", 27 | "multimediaviewer-description-page-popup-text": "Lââʹssteâđ tän teâttõõzzâst seeidast $1", 28 | "multimediaviewer-title-popup-text": "Deskriptt" 29 | } 30 | -------------------------------------------------------------------------------- /i18n/sw.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Lloffiwr" 5 | ] 6 | }, 7 | "multimediaviewer-license-default": "Tazama leseni", 8 | "multimediaviewer-permission-title": "Maelezo ya leseni", 9 | "multimediaviewer-permission-viewmore": "Tazama zaidi", 10 | "multimediaviewer-reuse-link": "Tumia faili hili", 11 | "multimediaviewer-embed-html": "HTML" 12 | } 13 | -------------------------------------------------------------------------------- /i18n/szy.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Benel" 5 | ] 6 | }, 7 | "multimediaviewer-geolocation": "kahicelaan: $1", 8 | "multimediaviewer-reuse-loading-placeholder": "miasip henay ayza...", 9 | "multimediaviewer-embed-wt": "Wikitext" 10 | } 11 | -------------------------------------------------------------------------------- /i18n/ta.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "ElangoRamanujam", 5 | "Kalyanasundar" 6 | ] 7 | }, 8 | "multimediaviewer-optin-pref": "இயலச்செய்", 9 | "multimediaviewer-repository-local": "மேலதிக விபரங்கள்", 10 | "multimediaviewer-download-link": "இக்கோப்பைப் பதிவிறக்குக", 11 | "multimediaviewer-description-page-button-text": "மேலதிக விபரங்கள்" 12 | } 13 | -------------------------------------------------------------------------------- /i18n/tcy.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Bharathesha Alasandemajalu", 5 | "ChiK", 6 | "Soundarya shetty s" 7 | ] 8 | }, 9 | "multimediaviewer-thumbnail-error-report": "ಸಮಸ್ಯೆನ್ ವರದಿ ಮಲ್ಪುಲೆ", 10 | "multimediaviewer-view-expanded": "ಮಾದ್ಯಮೊ ವೀಕ್ಷಕೊಡು ತೂಲೆ" 11 | } 12 | -------------------------------------------------------------------------------- /i18n/te.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Chaduvari", 5 | "Ravichandra", 6 | "Veeven", 7 | "రహ్మానుద్దీన్" 8 | ] 9 | }, 10 | "multimediaviewer-desc": "పూర్తి స్క్రీను అంతరవర్తినిలో గోరంతబొమ్మను పెద్ద పరిణామంలోకి మార్చు.", 11 | "multimediaviewer-optin-pref": "సరికొత్త బొమ్మలను చూసే అనుభూతిని సచేతనం చేసుకోండి", 12 | "multimediaviewer-file-page": "సంబంధిత దస్త్రపు పేజీకు వెళ్ళండి", 13 | "multimediaviewer-repository-local": "మరిన్ని వివరాలు", 14 | "multimediaviewer-datetime-created": "$1 న సృష్టించబడింది", 15 | "multimediaviewer-datetime-uploaded": "$1 న ఎక్కించబడింది", 16 | "multimediaviewer-metadata-error": "దోషం : $1. బొమ్మ సమాచారాన్ని చూపలేకపోతున్నాం.", 17 | "multimediaviewer-thumbnail-error": "దోషం : $1. గోరంతబొమ్మ (నఖచిత్రం) సమాచారాన్ని చూపించలేకపోతున్నాం.", 18 | "multimediaviewer-license-cc-pd": "సార్వజనీనం", 19 | "multimediaviewer-license-pd": "సార్వజనీనం", 20 | "multimediaviewer-license-default": "లైసెన్స్ వివరాలు చూడండి", 21 | "multimediaviewer-permission-title": "అనుమతి వివరాలు", 22 | "multimediaviewer-permission-link": "నిబంధనలు చూడండి", 23 | "multimediaviewer-permission-viewmore": "మరింత చూడండి", 24 | "multimediaviewer-geolocation": "స్థానం : $1", 25 | "multimediaviewer-reuse-link": "ఈ దస్త్రాన్ని పంచుకోండి లేదా వాడండి", 26 | "multimediaviewer-reuse-loading-placeholder": "లోడవుతోంది...", 27 | "multimediaviewer-share-tab": "పంచుకోండి", 28 | "multimediaviewer-embed-tab": "ఇముడ్చు", 29 | "multimediaviewer-download-link": "ఈ దస్త్రాన్ని దింపుకోండి", 30 | "multimediaviewer-download-preview-link-title": "విహారిణిలో మునుజూపు చూడండి", 31 | "multimediaviewer-download-original-button-name": "అసలు పరిమాణంలో దింపుకోండి", 32 | "multimediaviewer-download-small-button-name": "చిన్ని పరిమాణంలో దింపుకోండి", 33 | "multimediaviewer-download-medium-button-name": "మధ్యస్థ పరిమాణంలో దింపుకోండి", 34 | "multimediaviewer-download-large-button-name": "పెద్ద పరిమాణంలో దింపుకోండి", 35 | "multimediaviewer-link-to-page": "దస్త్రపు వివరణ పేజీకి లంకె", 36 | "multimediaviewer-link-to-file": "అసలు దస్త్రానికి లంకె", 37 | "multimediaviewer-share-explanation": "నకలు తీసుకొని, స్వేచ్ఛగా లంకెను పంచుకోండి", 38 | "multimediaviewer-embed-wt": "వికీపాఠ్యం", 39 | "multimediaviewer-embed-html": "హెచ్.టి.ఎం.ఎల్", 40 | "multimediaviewer-embed-explanation": "దస్త్రాన్ని ఇమిడ్చేందుకు ఈ కోడ్ ను వాడండి", 41 | "multimediaviewer-embed-byline": "$1 ద్వారా", 42 | "multimediaviewer-embed-license": "$1 లైసెన్సుకు లోబడి", 43 | "multimediaviewer-embed-via": "$1 ద్వారా.", 44 | "multimediaviewer-default-embed-dimensions": "అప్రమేయ నఖచిత్ర(గోరంతబొమ్మ) పరిమాణం", 45 | "multimediaviewer-original-embed-dimensions": "అసలు దస్త్రం $1", 46 | "multimediaviewer-large-embed-dimensions": "పెద్ద పరిమాణం $1", 47 | "multimediaviewer-medium-embed-dimensions": "మధ్యస్థ పరిమాణం $1", 48 | "multimediaviewer-small-embed-dimensions": "చిన్న పరిమాణం $1", 49 | "multimediaviewer-description-page-button-text": "ఈ దస్త్రం గురించి మరిన్ని వివరాలు", 50 | "multimediaviewer-description-page-popup-text": "$1 పై మరిన్ని వివరాలు", 51 | "multimediaviewer-commons-subtitle": "స్వేచ్ఛా దస్త్రాల భాండాగారం", 52 | "multimediaviewer-view-expanded": "వీక్షణాన్ని పెద్దది చేయండి", 53 | "multimediaviewer-next-image-alt-text": "తర్వాతి బొమ్మను చూపించు", 54 | "multimediaviewer-prev-image-alt-text": "మునుపటి బొమ్మను చూపించు" 55 | } 56 | -------------------------------------------------------------------------------- /i18n/tg-cyrl.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "ToJack" 5 | ] 6 | }, 7 | "multimediaviewer-embed-wt": "Вики-матн" 8 | } 9 | -------------------------------------------------------------------------------- /i18n/ti.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Joanmp17" 5 | ] 6 | }, 7 | "multimediaviewer-repository-local": "ተወሳኺ ዝርዝራት", 8 | "multimediaviewer-datetime-created": "ዝተፈጠረ፦ $1", 9 | "multimediaviewer-datetime-uploaded": "ዝተሰቐለ፦ $1", 10 | "multimediaviewer-credit-fallback": "ሓበሬታ ደራሲ ርኣይ", 11 | "multimediaviewer-multiple-authors-combine": "$1ን $2ን", 12 | "multimediaviewer-thumbnail-error-retry": "እንደገና ፈትን", 13 | "multimediaviewer-license-cc-pd": "ህዝባዊ ዓውዲ", 14 | "multimediaviewer-license-pd": "ህዝባዊ ዓውዲ", 15 | "multimediaviewer-license-default": "ፍቓድ ርኣይ", 16 | "multimediaviewer-permission-title": "ዝርዝራት ፍቓድ", 17 | "multimediaviewer-permission-link": "ውዕላት ርኣይ", 18 | "multimediaviewer-permission-link-hide": "ውዕላት ሕባእ", 19 | "multimediaviewer-permission-viewmore": "ተወሳኺ ርኣይ", 20 | "multimediaviewer-geoloc-north": "ሰሜን", 21 | "multimediaviewer-geoloc-east": "ምብራቕ", 22 | "multimediaviewer-geoloc-south": "ደቡብ", 23 | "multimediaviewer-geoloc-west": "ምዕራብ", 24 | "multimediaviewer-geolocation": "ቦታ፦ $1", 25 | "multimediaviewer-reuse-loading-placeholder": "ይጽዕን ኣሎ...", 26 | "multimediaviewer-share-tab": "ኣካፍል", 27 | "multimediaviewer-download-link": "ነዚ ፋይል ኣውርድ", 28 | "multimediaviewer-download-preview-link-title": "ኣብ መዳህሰሲ ርኣይ", 29 | "multimediaviewer-download-original-button-name": "መበቆላዊ ፋይል ኣውርድ", 30 | "multimediaviewer-html-embed-credit-link-text": "መጋጠሚ", 31 | "multimediaviewer-original-embed-dimensions": "መበቆላዊ ፋይል $1", 32 | "multimediaviewer-view-expanded": "ኣብ መርኣዪ ሜድያ ክፈት", 33 | "multimediaviewer-view-config": "ኣሰራርዓ", 34 | "multimediaviewer-close-popup-text": "እዚ መሳርሒ ዕጸው (Esc)", 35 | "multimediaviewer-fullscreen-popup-text": "ኣብ ምሉእ ምርኢት ኣርእይ", 36 | "multimediaviewer-defullscreen-popup-text": "ምሉእ ምርኢት ውጻዕ", 37 | "multimediaviewer-title-popup-text": "መግለጺ", 38 | "multimediaviewer-download-attribution-cta": "ከመይ ከም ዝኾነ ኣርእየኒ" 39 | } 40 | -------------------------------------------------------------------------------- /i18n/tig.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Bbeshir" 5 | ] 6 | }, 7 | "multimediaviewer-download": "ኣውርድ" 8 | } 9 | -------------------------------------------------------------------------------- /i18n/tl.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Emem.calist", 5 | "Jewel457", 6 | "Leeheonjin" 7 | ] 8 | }, 9 | "multimediaviewer-repository-local": "Iba pang detalye tungkol sa file", 10 | "multimediaviewer-thumbnail-error-description": "Mukhang mayroong 'technical issue'. Pwedeng $1 kapag napasama. Error: $2", 11 | "multimediaviewer-thumbnail-error-report": "iulat ang palahatla (issue) na ito" 12 | } 13 | -------------------------------------------------------------------------------- /i18n/trv.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Iyuqciyang" 5 | ] 6 | }, 7 | "multimediaviewer-original-embed-dimensions": "Ida nkiya pusu patas $1", 8 | "multimediaviewer-title-popup-text": "Pgkla rmngaw" 9 | } 10 | -------------------------------------------------------------------------------- /i18n/tt-cyrl.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Don Alessandro", 5 | "Ерней", 6 | "Ильнар" 7 | ] 8 | }, 9 | "multimediaviewer-optin-pref": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Media_Viewer/About Медиа гизгечне] куллану", 10 | "multimediaviewer-repository-local": "Тулырак", 11 | "multimediaviewer-datetime-created": "Ясалу: $1", 12 | "multimediaviewer-datetime-uploaded": "Йөкләнү: $1", 13 | "multimediaviewer-credit": "$1 - $2", 14 | "multimediaviewer-credit-fallback": "Автор турында мәгълүмат", 15 | "multimediaviewer-multiple-authors": "тагын {{PLURAL:$1|бер автор|$1 автор}}", 16 | "multimediaviewer-multiple-authors-combine": "$1 һәм $2", 17 | "multimediaviewer-thumbnail-error": "Гафу итегез, файлны ачу мөмкин түгел", 18 | "multimediaviewer-thumbnail-error-retry": "кабатлау", 19 | "multimediaviewer-thumbnail-error-report": "хата турында хәбәр итү", 20 | "multimediaviewer-license-cc-pd": "Җәмгыять мирасы", 21 | "multimediaviewer-license-pd": "Җәмгыять мирасы", 22 | "multimediaviewer-license-default": "Лицензияне карау", 23 | "multimediaviewer-permission-title": "Шартлар турында мәгълүмат", 24 | "multimediaviewer-permission-link": "хокукларны карау", 25 | "multimediaviewer-permission-link-hide": "хокукларны яшерү", 26 | "multimediaviewer-permission-viewmore": "Тулырак мәгълүмат", 27 | "multimediaviewer-geolocation": "Географик урыны: $1", 28 | "multimediaviewer-reuse-link": "Бу файлны уртаклашу яки кертү", 29 | "multimediaviewer-reuse-loading-placeholder": "Төяү бара…", 30 | "multimediaviewer-share-tab": "Уртаклашу", 31 | "multimediaviewer-embed-tab": "Кую", 32 | "multimediaviewer-download-link": "Бу файлны күчереп алу", 33 | "multimediaviewer-download-preview-link-title": "Гизгечтә карау", 34 | "multimediaviewer-download-original-button-name": "Төп файлны күчереп алу", 35 | "multimediaviewer-download-small-button-name": "Кече зурлыкта күчереп алу", 36 | "multimediaviewer-download-medium-button-name": "Уртача зурлыкта күчереп алу", 37 | "multimediaviewer-download-large-button-name": "Югары зурлыкта күчереп алу", 38 | "multimediaviewer-embed-wt": "Викитекст", 39 | "multimediaviewer-embed-html": "HTML", 40 | "multimediaviewer-text-embed-credit-text-bl": "Автор: $1, $2, $3", 41 | "multimediaviewer-text-embed-credit-text-b": "Автор: $1, $2", 42 | "multimediaviewer-html-embed-credit-text-bl": "Автор: $1, $2, $3", 43 | "multimediaviewer-html-embed-credit-text-b": "Автор: $1, $2", 44 | "multimediaviewer-embed-byline": "Кулланучы $1", 45 | "multimediaviewer-embed-license": "$1 лицензиясе астында.", 46 | "multimediaviewer-embed-via": "$1 аркылы.", 47 | "multimediaviewer-original-embed-dimensions": "Төп файл $1", 48 | "multimediaviewer-large-embed-dimensions": "Зур $1", 49 | "multimediaviewer-medium-embed-dimensions": "Уратача $1", 50 | "multimediaviewer-small-embed-dimensions": "Кече $1", 51 | "multimediaviewer-view-expanded": "Медиа гизгечтә ачу", 52 | "multimediaviewer-view-config": "Көйләү", 53 | "multimediaviewer-close-popup-text": "Коралны ябу (Esc)", 54 | "multimediaviewer-fullscreen-popup-text": "Тулы экранда күрсәтү", 55 | "multimediaviewer-defullscreen-popup-text": "Тулы экран режимыннан чыгу", 56 | "multimediaviewer-title-popup-text": "Тасвирлама", 57 | "multimediaviewer-credit-popup-text": "Авторы һәм чыганагы турында мәгълүмат", 58 | "multimediaviewer-title-popup-text-more": "Тулы тасвирны карау", 59 | "multimediaviewer-credit-popup-text-more": "Автор һәм чыганак турында тулырак мәгълүмат", 60 | "multimediaviewer-download-attribution-cta-header": "Сезга авторын күрсәтү кирәк", 61 | "multimediaviewer-attr-plain": "Гади", 62 | "multimediaviewer-enable-dialog-header": "Медиа гизгечне ачу?", 63 | "multimediaviewer-enable-submit-button": "Медиа гизгечне ачу" 64 | } 65 | -------------------------------------------------------------------------------- /i18n/uz.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Malikxan" 5 | ] 6 | }, 7 | "multimediaviewer-optin-pref": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Media_Viewer/About Media Viewer]ni yoqish", 8 | "multimediaviewer-repository-local": "Batafsil tafsilotlar", 9 | "multimediaviewer-datetime-created": "Yaratilgan sana: $1", 10 | "multimediaviewer-datetime-uploaded": "Yuklangan sana: $1", 11 | "multimediaviewer-credit-fallback": "Muallif haqida maʼlumotni koʻrish", 12 | "multimediaviewer-multiple-authors": "{{PLURAL:$1|bittadan oshiq muallif|$1 tadan oshiq muallif}}", 13 | "multimediaviewer-multiple-authors-combine": "$1 va $2", 14 | "multimediaviewer-metadata-error": "Tasvir tafsilotlari yuklanmadi (xato: $1)", 15 | "multimediaviewer-thumbnail-error-retry": "qaytadan", 16 | "multimediaviewer-thumbnail-error-report": "muammo haqida xabar berish", 17 | "multimediaviewer-license-cc-pd": "Jamiyat mulki", 18 | "multimediaviewer-license-pd": "Jamiyat mulki", 19 | "multimediaviewer-license-default": "Litsenziyani koʻrish", 20 | "multimediaviewer-permission-link": "shartlarni koʻrish", 21 | "multimediaviewer-permission-link-hide": "shartlarni yashirish", 22 | "multimediaviewer-permission-viewmore": "Koʻproq koʻrish", 23 | "multimediaviewer-geoloc-north": "Shi", 24 | "multimediaviewer-geoloc-east": "Sha", 25 | "multimediaviewer-geoloc-south": "J", 26 | "multimediaviewer-geoloc-west": "Gʻ", 27 | "multimediaviewer-geolocation": "Joylashuv: $1", 28 | "multimediaviewer-reuse-loading-placeholder": "Yuklanmoqda…", 29 | "multimediaviewer-share-tab": "Ulashish", 30 | "multimediaviewer-download-link": "Bu faylni yuklash", 31 | "multimediaviewer-download-preview-link-title": "Brauzer orqali koʻrish", 32 | "multimediaviewer-download-original-button-name": "Asl faylni yuklash", 33 | "multimediaviewer-download-small-button-name": "Kichik hajmda yuklash", 34 | "multimediaviewer-download-medium-button-name": "Oʻrtacha hajmda yuklash", 35 | "multimediaviewer-download-large-button-name": "Katta hajmda yuklash", 36 | "multimediaviewer-link-to-file": "Asl faylga havola", 37 | "multimediaviewer-share-explanation": "Havoladan nusxa oling va bemalol ulashing!", 38 | "multimediaviewer-embed-wt": "Vikimatn", 39 | "multimediaviewer-embed-html": "HTML", 40 | "multimediaviewer-html-embed-credit-link-text": "Havola", 41 | "multimediaviewer-embed-license": "$1 litsensiyasi ostida.", 42 | "multimediaviewer-embed-via": "$1 orqali.", 43 | "multimediaviewer-original-embed-dimensions": "Asl fayl $1", 44 | "multimediaviewer-description-page-button-text": "Bu fayl haqida koʻproq tafsilotlar", 45 | "multimediaviewer-description-page-popup-text": "$1dagi ushbu fayl haqida koʻproq tafsilotlar", 46 | "multimediaviewer-view-expanded": "Media Viewer orqali ochish", 47 | "multimediaviewer-view-config": "Konfiguratsiya", 48 | "multimediaviewer-close-popup-text": "Bu asbobni yopish (Esc)", 49 | "multimediaviewer-next-image-alt-text": "Keyingi tasvirni koʻrsatish", 50 | "multimediaviewer-prev-image-alt-text": "Avvalgi tasvirni koʻrsatish", 51 | "multimediaviewer-title-popup-text": "Tavsif", 52 | "multimediaviewer-title-popup-text-more": "Toʻliq tavsifni koʻrish", 53 | "multimediaviewer-enable-dialog-header": "Media Viewer yoqilsinmi?", 54 | "multimediaviewer-enable-submit-button": "Media Viewermi yoqish" 55 | } 56 | -------------------------------------------------------------------------------- /i18n/vec.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Fierodelveneto" 5 | ] 6 | }, 7 | "multimediaviewer-repository-local": "Pì detaji", 8 | "multimediaviewer-reuse-link": "Spartisi o incastra sto file", 9 | "multimediaviewer-embed-tab": "Incastra", 10 | "multimediaviewer-download-link": "Descarga sto file", 11 | "multimediaviewer-share-explanation": "Copia e spartisi łibaramente el ligamento", 12 | "multimediaviewer-close-popup-text": "Sara sta toła (Esc)", 13 | "multimediaviewer-fullscreen-popup-text": "Varda a schermada intiera" 14 | } 15 | -------------------------------------------------------------------------------- /i18n/wa.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Srtxg" 5 | ] 6 | }, 7 | "multimediaviewer-optin-pref": "Mete en alaedje li [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Media_Viewer/About håyneu di medias]" 8 | } 9 | -------------------------------------------------------------------------------- /i18n/xmf.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Narazeni" 5 | ] 6 | }, 7 | "multimediaviewer-optin-pref": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Media_Viewer/About მედია-მიშმაჯინეშ] ჩართება", 8 | "multimediaviewer-file-page": "მანგური ფაილიშ ხასჷლაშა გინულა", 9 | "multimediaviewer-repository-local": "კილიშკილი ინფორმაცია", 10 | "multimediaviewer-datetime-created": "გიჭყჷ: $1", 11 | "multimediaviewer-datetime-uploaded": "ეხარგუაშ თარიღი: $1", 12 | "multimediaviewer-credit-fallback": "ავტორიშ ინფორმაციაშ ძირაფა", 13 | "multimediaviewer-multiple-authors": "ხოლო {{PLURAL:$1|ართი ავტორი|$1 ავტორი}}", 14 | "multimediaviewer-multiple-authors-combine": "$1 დო $2", 15 | "multimediaviewer-metadata-error": "სურათიშ ინოხარგუაქ ვემიხუჯინჷ (ჩილათა: $1)", 16 | "multimediaviewer-thumbnail-error": "სანარღოთ, ატე ფაილიშ ძირაფა ვეშილებე", 17 | "multimediaviewer-thumbnail-error-retry": "გომაჟირაფა", 18 | "multimediaviewer-thumbnail-error-report": "პრობლემაშ გინაფა", 19 | "multimediaviewer-license-cc-pd": "ჯარალობური დორხველუა", 20 | "multimediaviewer-license-pd": "ჯარალობური დორხველუა", 21 | "multimediaviewer-license-default": "ლიცენზიაშ ძირაფა", 22 | "multimediaviewer-permission-title": "ნჭაფაშ დეტალეფი", 23 | "multimediaviewer-permission-link": "პიჯალეფიშ ძირაფა", 24 | "multimediaviewer-permission-link-hide": "პიჯალეფიშ ინოკიჩუა", 25 | "multimediaviewer-permission-viewmore": "უმოსიშ ძირაფა", 26 | "multimediaviewer-geolocation": "ორენიː $1" 27 | } 28 | -------------------------------------------------------------------------------- /i18n/xsy.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Lalotahes" 5 | ] 6 | }, 7 | "multimediaviewer-original-embed-dimensions": "’a’aringan tang’an $1", 8 | "multimediaviewer-title-popup-text": " papapnabih" 9 | } 10 | -------------------------------------------------------------------------------- /i18n/yi.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Har-wradim", 5 | "Pacha Tchernof", 6 | "פוילישער" 7 | ] 8 | }, 9 | "multimediaviewer-repository-local": "מער פּרטים", 10 | "multimediaviewer-datetime-created": "געשאַפֿן: $1", 11 | "multimediaviewer-datetime-uploaded": "ארויפגעלאדן: $1", 12 | "multimediaviewer-credit-fallback": "באקוקן שאפֿער אינפארמאציע", 13 | "multimediaviewer-multiple-authors": "נאך {{PLURAL:$1|איין|$1}} שאפער", 14 | "multimediaviewer-multiple-authors-combine": "$1 און $2", 15 | "multimediaviewer-thumbnail-error": "אנטשולדיקט, מען קען נישט ווייזן די טעקע", 16 | "multimediaviewer-thumbnail-error-description": "עס זעט אויס אז ס׳איז פֿאראן א טעכנישער פראבלעם. איר קענט $1 טאמער עס האלט זיך אן ווייטער. פֿעלער: $2", 17 | "multimediaviewer-thumbnail-error-retry": "פרובירן ווידער", 18 | "multimediaviewer-thumbnail-error-report": "מעלדן דעם פראבלעם", 19 | "multimediaviewer-license-default": "באקוקן ליצענץ", 20 | "multimediaviewer-permission-title": "ערלויבניש פרטים", 21 | "multimediaviewer-permission-link": "באקוקן טערמינען", 22 | "multimediaviewer-permission-link-hide": "באהאלטן באדינגונגען", 23 | "multimediaviewer-permission-viewmore": "ווײזן נאך", 24 | "multimediaviewer-geolocation": "לאקאציע: $1", 25 | "multimediaviewer-reuse-loading-placeholder": "לאָדנדיק…", 26 | "multimediaviewer-share-tab": "טיילן", 27 | "multimediaviewer-download-link": "אַראָפלאָדן די טעקע", 28 | "multimediaviewer-download-preview-link-title": "באקוקן אין בלעטערער", 29 | "multimediaviewer-download-original-button-name": "אַראָפלאָדן אריגינעלע טעקע", 30 | "multimediaviewer-embed-wt": "וויקיטעקסט", 31 | "multimediaviewer-embed-html": "HTML", 32 | "multimediaviewer-text-embed-credit-text-bl": "פון $1, $2, $3", 33 | "multimediaviewer-text-embed-credit-text-b": "פון $1, $2", 34 | "multimediaviewer-html-embed-credit-text-bl": "פון $1, $2, $3", 35 | "multimediaviewer-html-embed-credit-text-b": "פון $1, $2", 36 | "multimediaviewer-html-embed-credit-link-text": "לינק", 37 | "multimediaviewer-embed-byline": "פֿון $1", 38 | "multimediaviewer-embed-license": "ליצענצירט אונטער $1.", 39 | "multimediaviewer-embed-via": "דורך $1.", 40 | "multimediaviewer-large-embed-dimensions": "גרויס $1", 41 | "multimediaviewer-medium-embed-dimensions": "מיטל $1", 42 | "multimediaviewer-small-embed-dimensions": "קליין $1", 43 | "multimediaviewer-description-page-button-text": "נאך פרטים וועגן דער טעקטע", 44 | "multimediaviewer-view-expanded": "עפֿענען אין מעדיע־ווייזער", 45 | "multimediaviewer-view-config": "קאנפֿיגוראציע", 46 | "multimediaviewer-title-popup-text": "באַשרײבונג", 47 | "multimediaviewer-download-attribution-cta": "ווײַז מיך וויאזוי", 48 | "multimediaviewer-attr-plain": "קלארטעקסט" 49 | } 50 | -------------------------------------------------------------------------------- /i18n/yue-hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Winston Sung" 5 | ] 6 | }, 7 | "multimediaviewer-repository-local": "更多細節" 8 | } 9 | -------------------------------------------------------------------------------- /jsdoc.json: -------------------------------------------------------------------------------- 1 | { 2 | "opts": { 3 | "destination": "docs/js", 4 | "package": "package.json", 5 | "pedantic": true, 6 | "readme": "README.md", 7 | "recurse": true, 8 | "template": "node_modules/jsdoc-wmf-theme" 9 | }, 10 | "plugins": [ 11 | "node_modules/jsdoc-wmf-theme/plugins/default" 12 | ], 13 | "source": { 14 | "include": [ "resources" ] 15 | }, 16 | "sourceType": "module", 17 | "templates": { 18 | "cleverLinks": true, 19 | "default": { 20 | "useLongnameInNav": true 21 | }, 22 | "wmf": { 23 | "repository": "https://gerrit.wikimedia.org/g/mediawiki/extensions/MultimediaViewer/", 24 | "prefixMap": { 25 | "mw.": "https://doc.wikimedia.org/mediawiki-core/master/js/{type}.html" 26 | }, 27 | "linkMap": { 28 | "OO.Router": "https://doc.wikimedia.org/oojs-router/master/#!/api/OO.Router" 29 | } 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "MultimediaViewer", 3 | "private": true, 4 | "scripts": { 5 | "build": "npm -s run minify", 6 | "test": "grunt test", 7 | "minify": "npm -s run minify:svg", 8 | "minify:svg": "svgo --config=.svgo.config.js --quiet --recursive --folder resources/", 9 | "doc": "jsdoc -c jsdoc.json" 10 | }, 11 | "devDependencies": { 12 | "eslint-config-wikimedia": "0.30.0", 13 | "grunt": "1.6.1", 14 | "grunt-banana-checker": "0.13.0", 15 | "grunt-eslint": "24.3.0", 16 | "grunt-stylelint": "0.20.1", 17 | "jsdoc": "4.0.4", 18 | "jsdoc-wmf-theme": "1.1.0", 19 | "stylelint-config-wikimedia": "0.18.0", 20 | "svgo": "3.2.0" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /resources/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "extends": [ 4 | "wikimedia/client", 5 | "wikimedia/jquery", 6 | "wikimedia/mediawiki" 7 | ], 8 | "rules": { 9 | "max-len": "off", 10 | "no-jquery/no-class-state": "off", 11 | "no-jquery/no-support": "off", 12 | "es-x/no-resizable-and-growable-arraybuffers": "off", 13 | "no-jquery/no-done-fail": "warn" 14 | }, 15 | "settings": { 16 | "jsdoc": { 17 | "preferredTypes": { 18 | "Config": "Config", 19 | "ImageModel": "ImageModel", 20 | "DownloadDialog": "DownloadDialog", 21 | "License": "License", 22 | "LightboxImage": "LightboxImage", 23 | "MultimediaViewer": "MultimediaViewer", 24 | "OptionsDialog": "OptionsDialog", 25 | "ReuseDialog": "ReuseDialog", 26 | "TaskQueue": "TaskQueue", 27 | "TaskQueueLightboxImage": "TaskQueueLightboxImage", 28 | "Thumbnail": "Thumbnail", 29 | "ThumbnailWidth": "ThumbnailWidth", 30 | "UiElement": "UiElement" 31 | } 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /resources/mmv.bootstrap/mmv.bootstrap.autostart.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the MediaWiki extension MultimediaViewer. 3 | * 4 | * MultimediaViewer is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * MultimediaViewer is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with MultimediaViewer. If not, see . 16 | */ 17 | 18 | // This file is used to do the global initialization that we want on the real pages, 19 | // but do not want in the tests. 20 | 21 | const Config = require( './mmv.Config.js' ); 22 | const MultimediaViewerBootstrap = require( './mmv.bootstrap.js' ); 23 | const LightboxImage = require( './mmv.lightboximage.js' ); 24 | 25 | const bootstrap = new MultimediaViewerBootstrap(); 26 | 27 | $( bootstrap.setupEventHandlers.bind( bootstrap ) ); 28 | 29 | module.exports = { MultimediaViewerBootstrap, LightboxImage, Config }; 30 | -------------------------------------------------------------------------------- /resources/mmv.bootstrap/mmv.bootstrap.less: -------------------------------------------------------------------------------- 1 | @import 'mediawiki.skin.variables.less'; 2 | 3 | .mw-mmv-overlay { 4 | position: fixed; 5 | top: 0; 6 | left: 0; 7 | right: 0; 8 | bottom: 0; 9 | z-index: 1000; 10 | background-color: #000; 11 | display: flex; 12 | justify-items: center; 13 | align-items: center; 14 | align-content: center; 15 | justify-content: center; 16 | 17 | .cdx-progress-bar { 18 | max-width: 80vw; 19 | min-width: 20vw; 20 | width: 20rem; 21 | } 22 | } 23 | 24 | body.mw-mmv-lightbox-open { 25 | overflow-y: auto; 26 | 27 | // This is to ensure the background area for the safe areas (notch) is black in fullscreen mode 28 | // Separate from above as not all browsers that we support, support has(). 29 | background-color: #000; 30 | 31 | // Stop the article from scrolling in the background 32 | > *:not( .mw-notification-area-overlay ) { 33 | display: none; 34 | } 35 | 36 | > .mw-mmv-overlay { 37 | display: flex; 38 | } 39 | 40 | > .mw-mmv-wrapper { 41 | display: block; 42 | } 43 | } 44 | 45 | .mw-mmv-view-expanded { 46 | .cdx-button__icon { 47 | .cdx-mixin-css-icon( @cdx-icon-image-gallery, @param-is-button-icon: true, 48 | @param-size-icon: @size-icon-small ); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /resources/mmv.bootstrap/mmv.lightboximage.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the MediaWiki extension MultimediaViewer. 3 | * 4 | * MultimediaViewer is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * MultimediaViewer is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with MultimediaViewer. If not, see . 16 | */ 17 | 18 | /** 19 | * Represents an image on the page. 20 | */ 21 | class LightboxImage { 22 | /** 23 | * @param {string} fileLink Link to the file - generally a thumb URL 24 | * @param {mw.Title} fileTitle Represents the File: page 25 | * @param {number} index Which number file this is 26 | * @param {number} position The relative position of this image to others with same file 27 | * @param {HTMLImageElement} thumb The thumbnail that represents this image on the page 28 | * @param {string} [caption] The caption, if any. 29 | */ 30 | constructor( fileLink, fileTitle, index, position, thumb, caption ) { 31 | /** @property {string} Link to the file - generally a thumb URL */ 32 | this.src = fileLink; 33 | 34 | /** @property {mw.Title} filePageTitle Title of the image's file page */ 35 | this.filePageTitle = fileTitle; 36 | 37 | /** @property {number} index What number this image is in the array of indexed images */ 38 | this.index = index; 39 | 40 | /** @property {number} position The relative position of this image to others with same file */ 41 | this.position = position; 42 | 43 | /** @property {HTMLImageElement} thumbnail The element that holds the already-loaded thumbnail of the image */ 44 | this.thumbnail = thumb; 45 | 46 | /** @property {string} caption The caption of the image, if any */ 47 | this.caption = caption; 48 | 49 | /** @property {string} The alt text of the image */ 50 | this.alt = $( this.thumbnail ).attr( 'alt' ); 51 | 52 | /** @property {number} originalWidth of the full-sized file (read from HTML data attribute, might be missing) */ 53 | this.originalWidth = parseInt( $( this.thumbnail ).data( 'file-width' ), 10 ); 54 | 55 | /** @property {number} originalHeight Height of the full-sized file (read from HTML data attribute, might be missing) */ 56 | this.originalHeight = parseInt( $( this.thumbnail ).data( 'file-height' ), 10 ); 57 | } 58 | } 59 | 60 | module.exports = LightboxImage; 61 | -------------------------------------------------------------------------------- /resources/mmv.ui.restriction/img/restrict-2257.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /resources/mmv.ui.restriction/img/restrict-aus-reserve.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /resources/mmv.ui.restriction/img/restrict-communist.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /resources/mmv.ui.restriction/img/restrict-costume.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /resources/mmv.ui.restriction/img/restrict-currency.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /resources/mmv.ui.restriction/img/restrict-default.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /resources/mmv.ui.restriction/img/restrict-design.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /resources/mmv.ui.restriction/img/restrict-fan-art.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /resources/mmv.ui.restriction/img/restrict-ihl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /resources/mmv.ui.restriction/img/restrict-ita-mibac.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /resources/mmv.ui.restriction/img/restrict-nazi.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /resources/mmv.ui.restriction/img/restrict-personality.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /resources/mmv.ui.restriction/mmv.ui.restriction.less: -------------------------------------------------------------------------------- 1 | @import 'mediawiki.skin.variables.less'; 2 | 3 | .restriction-mask( @restriction-image ) { 4 | background-color: @color-base; 5 | mask-size: 16px; 6 | -webkit-mask-image: @restriction-image; 7 | mask-image: @restriction-image; 8 | } 9 | 10 | .mw-mmv-restriction-2257 { 11 | /* @embed */ 12 | .restriction-mask( url( img/restrict-2257.svg ) ); 13 | } 14 | 15 | .mw-mmv-restriction-aus-reserve { 16 | /* @embed */ 17 | .restriction-mask( url( img/restrict-aus-reserve.svg ) ); 18 | } 19 | 20 | .mw-mmv-restriction-communist { 21 | /* @embed */ 22 | .restriction-mask( url( img/restrict-communist.svg ) ); 23 | } 24 | 25 | .mw-mmv-restriction-costume { 26 | /* @embed */ 27 | .restriction-mask( url( img/restrict-costume.svg ) ); 28 | } 29 | 30 | .mw-mmv-restriction-currency { 31 | /* @embed */ 32 | .restriction-mask( url( img/restrict-currency.svg ) ); 33 | } 34 | 35 | .mw-mmv-restriction-design { 36 | /* @embed */ 37 | .restriction-mask( url( img/restrict-design.svg ) ); 38 | } 39 | 40 | .mw-mmv-restriction-fan-art { 41 | /* @embed */ 42 | .restriction-mask( url( img/restrict-fan-art.svg ) ); 43 | } 44 | 45 | .mw-mmv-restriction-ihl { 46 | /* @embed */ 47 | .restriction-mask( url( img/restrict-ihl.svg ) ); 48 | } 49 | 50 | .mw-mmv-restriction-insignia { 51 | /* @embed */ 52 | .restriction-mask( url( img/restrict-insignia.svg ) ); 53 | } 54 | 55 | .mw-mmv-restriction-ita-mibac { 56 | /* @embed */ 57 | .restriction-mask( url( img/restrict-ita-mibac.svg ) ); 58 | } 59 | 60 | .mw-mmv-restriction-nazi { 61 | /* @embed */ 62 | .restriction-mask( url( img/restrict-nazi.svg ) ); 63 | } 64 | 65 | .mw-mmv-restriction-personality { 66 | /* @embed */ 67 | .restriction-mask( url( img/restrict-personality.svg ) ); 68 | } 69 | 70 | .mw-mmv-restriction-trademarked::after { 71 | content: '\002122'; 72 | } 73 | 74 | .mw-mmv-restriction-default { 75 | /* @embed */ 76 | .restriction-mask( url( img/restrict-default.svg ) ); 77 | } 78 | -------------------------------------------------------------------------------- /resources/mmv.ui.reuse/index.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the MediaWiki extension MediaViewer. 3 | * 4 | * MediaViewer is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * MediaViewer is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with MediaViewer. If not, see . 16 | */ 17 | 18 | const DownloadDialog = require( './mmv.ui.download.dialog.js' ); 19 | const ReuseDialog = require( './mmv.ui.reuse.dialog.js' ); 20 | const Download = require( './mmv.ui.download.pane.js' ); 21 | const Embed = require( './mmv.ui.reuse.embed.js' ); 22 | const EmbedFileFormatter = require( './mmv.EmbedFileFormatter.js' ); 23 | const Share = require( './mmv.ui.reuse.share.js' ); 24 | const Utils = require( './mmv.ui.utils.js' ); 25 | 26 | module.exports = { DownloadDialog, ReuseDialog, Download, Embed, EmbedFileFormatter, Share, Utils }; 27 | -------------------------------------------------------------------------------- /resources/mmv.ui.reuse/mmv.ui.download.dialog.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the MediaWiki extension MultimediaViewer. 3 | * 4 | * MultimediaViewer is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * MultimediaViewer is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with MultimediaViewer. If not, see . 16 | */ 17 | 18 | const { Dialog } = require( 'mmv' ); 19 | const DownloadPane = require( './mmv.ui.download.pane.js' ); 20 | 21 | /** 22 | * Represents the file download dialog and the link to open it. 23 | */ 24 | class DownloadDialog extends Dialog { 25 | /** 26 | * @param {jQuery} $container the element to which the dialog will be appended 27 | * @param {jQuery} $openButton the button which opens the dialog. Only used for positioning. 28 | */ 29 | constructor( $container, $openButton ) { 30 | super( $container, $openButton ); 31 | 32 | this.download = new DownloadPane( this.$dialog ); 33 | this.$dialog.addClass( 'mw-mmv-download-dialog' ); 34 | 35 | this.eventPrefix = 'download'; 36 | } 37 | 38 | /** 39 | * Registers listeners. 40 | */ 41 | attach() { 42 | this.download.attach(); 43 | 44 | this.handleEvent( 'mmv-download-open', this.handleOpenCloseClick.bind( this ) ); 45 | 46 | this.handleEvent( 'mmv-reuse-open', this.closeDialog.bind( this ) ); 47 | } 48 | 49 | /** 50 | * Sets data needed by contained tabs and makes dialog launch link visible. 51 | * 52 | * @param {ImageModel} image 53 | */ 54 | set( image ) { 55 | this.download.set( image ); 56 | this.showImageWarnings( image ); 57 | } 58 | 59 | /** 60 | * Fired when the dialog is opened. 61 | * 62 | * @event DownloadDialog#mmv-download-opened 63 | */ 64 | 65 | /** 66 | * Opens a dialog with information about file download. 67 | */ 68 | openDialog() { 69 | super.openDialog(); 70 | 71 | $( document ).trigger( 'mmv-download-opened' ); 72 | } 73 | 74 | /** 75 | * Fired when the dialog is closed. 76 | * 77 | * @event DownloadDialog#mmv-download-closed 78 | */ 79 | 80 | /** 81 | * Closes the download dialog. 82 | */ 83 | closeDialog() { 84 | super.closeDialog(); 85 | 86 | $( document ).trigger( 'mmv-download-closed' ); 87 | } 88 | } 89 | 90 | module.exports = DownloadDialog; 91 | -------------------------------------------------------------------------------- /resources/mmv.ui.reuse/mmv.ui.download.dialog.less: -------------------------------------------------------------------------------- 1 | @import 'mediawiki.skin.variables.less'; 2 | @import '../mmv/mmv.variables.less'; 3 | 4 | .mw-mmv-download-dialog { 5 | // resetting height (to overwrite .mw-mmv-dialog's bigger height), since the 6 | // height may have to change for warnings being added 7 | height: initial; 8 | // positioned relative to the download button 9 | position: fixed; 10 | @bottom-offset: @metadatabar-above-fold-height + @buttons-offset-edge + @buttons-offset-each; 11 | bottom: @bottom-offset - 5px; 12 | 13 | .mw-mmv-dialog-down-arrow { 14 | bottom: @bottom-offset + ( @buttons-size / 2 ) - ( @arrow-size / 2 ); 15 | background-color: @background-color-base; 16 | } 17 | 18 | .mw-mmv-dialog-warning { 19 | padding: 10px 30px; 20 | } 21 | 22 | .cdx-button__icon--download { 23 | .cdx-mixin-css-icon( @cdx-icon-download, @param-is-button-icon: true ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /resources/mmv.ui.reuse/mmv.ui.reuse.dialog.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the MediaWiki extension MultimediaViewer. 3 | * 4 | * MultimediaViewer is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * MultimediaViewer is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with MultimediaViewer. If not, see . 16 | */ 17 | 18 | const { Dialog } = require( 'mmv' ); 19 | const Embed = require( './mmv.ui.reuse.embed.js' ); 20 | const Share = require( './mmv.ui.reuse.share.js' ); 21 | 22 | /** 23 | * Represents the file reuse dialog and the link to open it. 24 | */ 25 | class ReuseDialog extends Dialog { 26 | /** 27 | * @param {jQuery} $container the element to which the dialog will be appended 28 | * @param {jQuery} $openButton the button which opens the dialog. Only used for positioning. 29 | */ 30 | constructor( $container, $openButton ) { 31 | super( $container, $openButton ); 32 | 33 | this.share = new Share( this.$dialog ); 34 | this.embed = new Embed( this.$dialog ); 35 | this.$dialog.addClass( 'mw-mmv-reuse-dialog' ); 36 | 37 | this.eventPrefix = 'use-this-file'; 38 | } 39 | 40 | /** 41 | * Registers listeners. 42 | */ 43 | attach() { 44 | this.share.attach(); 45 | this.embed.attach(); 46 | 47 | this.handleEvent( 'mmv-reuse-open', this.handleOpenCloseClick.bind( this ) ); 48 | 49 | this.handleEvent( 'mmv-download-open', this.closeDialog.bind( this ) ); 50 | } 51 | 52 | /** 53 | * Sets data needed by contained panes and makes dialog launch link visible. 54 | * 55 | * @param {ImageModel} image 56 | * @param {string} caption 57 | * @param {string} alt 58 | */ 59 | set( image, caption, alt ) { 60 | this.share.set( image ); 61 | this.embed.set( image, caption, alt ); 62 | this.showImageWarnings( image ); 63 | } 64 | 65 | /** 66 | * Fired when the dialog is opened. 67 | * 68 | * @event ReuseDialog#mmv-reuse-opened 69 | */ 70 | 71 | /** 72 | * Opens a dialog with information about file reuse. 73 | */ 74 | openDialog() { 75 | super.openDialog(); 76 | 77 | this.$warning.insertAfter( this.$container ); 78 | 79 | $( document ).trigger( 'mmv-reuse-opened' ); 80 | } 81 | 82 | /** 83 | * Fired when the dialog is closed. 84 | * 85 | * @event ReuseDialog#mmv-reuse-closed 86 | */ 87 | 88 | /** 89 | * Closes the reuse dialog. 90 | */ 91 | closeDialog() { 92 | super.closeDialog(); 93 | 94 | $( document ).trigger( 'mmv-reuse-closed' ); 95 | } 96 | } 97 | 98 | module.exports = ReuseDialog; 99 | -------------------------------------------------------------------------------- /resources/mmv.ui.reuse/mmv.ui.reuse.dialog.less: -------------------------------------------------------------------------------- 1 | @import 'mediawiki.skin.variables.less'; 2 | @import '../mmv/mmv.variables.less'; 3 | 4 | .mw-mmv-reuse-dialog { 5 | // resetting height (to overwrite .mw-mmv-dialog's bigger height), since the 6 | // height may have to change for warnings being added 7 | height: initial; 8 | // set a standard min-height that should be larger than both panels in 9 | // normal circumstances (without warnings) so that the height of the dialog 10 | // doesn't change when switching tabs 11 | min-height: 300px; 12 | // positioned relative to the reuse button 13 | @bottom-offset: @metadatabar-above-fold-height + @buttons-offset-edge; 14 | bottom: @bottom-offset - 5px; 15 | 16 | .mw-mmv-dialog-down-arrow { 17 | bottom: @bottom-offset + ( @buttons-size / 2 ) - ( @arrow-size / 2 ); 18 | } 19 | 20 | .mw-mmv-dialog-warning { 21 | padding: 15px 30px; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /resources/mmv.ui.reuse/mmv.ui.reuse.share.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the MediaWiki extension MultimediaViewer. 3 | * 4 | * MultimediaViewer is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * MultimediaViewer is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with MultimediaViewer. If not, see . 16 | */ 17 | 18 | const { Config } = require( 'mmv.bootstrap' ); 19 | const Utils = require( './mmv.ui.utils.js' ); 20 | const { UiElement } = require( 'mmv' ); 21 | 22 | /** 23 | * Represents the file reuse dialog and link to open it. 24 | */ 25 | class Share extends UiElement { 26 | /** 27 | * @param {jQuery} $container 28 | */ 29 | constructor( $container ) { 30 | super( $container ); 31 | 32 | Utils.createHeader( mw.msg( 'multimediaviewer-share-tab' ) ) 33 | .appendTo( $container ); 34 | 35 | const $body = $( '
' ) 36 | .addClass( 'cdx-dialog__body mw-mmv-pt-0' ) 37 | .appendTo( $container ); 38 | 39 | [ this.$pageInput, this.$pageInputDiv ] = Utils.createInputWithCopy( 40 | mw.msg( 'multimediaviewer-reuse-copy-share' ), 41 | mw.msg( 'multimediaviewer-reuse-loading-placeholder' ) 42 | ); 43 | this.$pageInput.attr( 'title', mw.msg( 'multimediaviewer-share-explanation' ) ); 44 | this.$pageInputDiv.appendTo( $body ); 45 | } 46 | 47 | /** 48 | * Shows the pane. 49 | */ 50 | show() { 51 | super.show(); 52 | } 53 | 54 | /** 55 | * @inheritdoc 56 | * @param {ImageModel} image 57 | */ 58 | set( image ) { 59 | const url = image.descriptionUrl + Config.getMediaHash( image.title ); 60 | this.$pageInput.val( url ); 61 | } 62 | 63 | /** 64 | * @inheritdoc 65 | */ 66 | empty() { 67 | this.$pageInput.val( '' ); 68 | } 69 | } 70 | 71 | module.exports = Share; 72 | -------------------------------------------------------------------------------- /resources/mmv/mmv.lightboxinterface.less: -------------------------------------------------------------------------------- 1 | @import 'mediawiki.skin.variables.less'; 2 | @import 'mmv.variables.less'; 3 | 4 | .mw-mmv-wrapper { 5 | top: 0; 6 | left: 0; 7 | right: 0; 8 | z-index: 1001; 9 | position: absolute; 10 | bottom: auto; 11 | 12 | .skin-monobook & { 13 | font-size: medium; 14 | } 15 | } 16 | 17 | .mw-mmv-main { 18 | width: 100%; 19 | height: auto; 20 | position: relative; 21 | 22 | .jq-fullscreened { 23 | background-color: #000; 24 | } 25 | } 26 | 27 | .mw-mmv-image-wrapper { 28 | position: fixed; 29 | top: 0; 30 | bottom: @metadatabar-above-fold-height; 31 | left: 0; 32 | right: 0; 33 | overflow-y: hidden; 34 | } 35 | 36 | .mw-mmv-image-inner-wrapper { 37 | display: table; 38 | width: 100%; 39 | height: 100%; 40 | } 41 | 42 | .mw-mmv-pre-image { 43 | position: absolute; 44 | top: 0; 45 | height: 32px; 46 | width: 100%; 47 | z-index: 1; 48 | } 49 | 50 | .mw-mmv-post-image { 51 | position: absolute; 52 | width: 100%; 53 | bottom: auto; 54 | height: auto; 55 | color: @color-base; 56 | background-color: @panel-above-fold-background-color; 57 | min-height: ( @metadatabar-above-fold-inner-height + 1 ); 58 | z-index: 1005; 59 | } 60 | 61 | // above-the-fold part of the metadata panel 62 | .mw-mmv-above-fold { 63 | width: 100%; 64 | height: @metadatabar-above-fold-inner-height; 65 | // min-height is used when the height is changed to auto to display long texts, to make sure the layout 66 | // is not messed up wheen the text is short and does not fill the available place. It is also used by 67 | // JavaScript to get the "default" height. 68 | min-height: @metadatabar-above-fold-inner-height; 69 | position: relative; 70 | // make sure there is no content in the part which is overlapped by the revealed part of the below-fold content 71 | // also used in JavaScript for the height calculations 72 | padding-bottom: @metadatabar-below-fold-pushup-height; 73 | 74 | .mw-mmv-untruncated & { 75 | height: auto; 76 | } 77 | } 78 | 79 | // Fullscreen styles 80 | 81 | .user-inactive { 82 | /* stylelint-disable-next-line plugin/no-unsupported-browser-features */ 83 | cursor: none; 84 | } 85 | 86 | .mw-mmv-main.jq-fullscreened { 87 | background-color: #000; 88 | } 89 | 90 | .jq-fullscreened { 91 | // make the image occupy the whole screen 92 | // make sure the panel fits in the screen and does not cause scrollbars to appear 93 | .mw-mmv-image-wrapper, 94 | .mw-mmv-post-image { 95 | bottom: 0; 96 | } 97 | 98 | .mw-mmv-post-image { 99 | position: fixed; 100 | min-height: 0; 101 | opacity: 0; 102 | transition: opacity 0.25s; 103 | 104 | &:hover { 105 | opacity: 1; 106 | } 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /resources/mmv/mmv.variables.less: -------------------------------------------------------------------------------- 1 | @import 'mediawiki.skin.variables.less'; 2 | 3 | // MultimediaViewer specific global variables 4 | // Height of the area of the metadata bar which is visible without scrolling. 5 | @metadatabar-above-fold-height: 86px; 6 | 7 | // adjust for @metadatabar-below-fold-pushup-height wide bottom padding - that area will be overlapped 8 | // by the revealed part of the below-the-fold content 9 | @metadatabar-above-fold-inner-height: @metadatabar-above-fold-height - @metadatabar-below-fold-pushup-height; 10 | 11 | // Height of the top part of the "below-fold" content which is actually above the fold, as a scrolling affordance 12 | @metadatabar-below-fold-pushup-height: 30px; 13 | 14 | @panel-above-fold-background-color: @background-color-base; 15 | 16 | // Height of the progress bar 17 | @progress-bar-height: 14px; 18 | 19 | // Height of dialogs 20 | @dialog-height: 350px; 21 | 22 | // Arrow size for dialogs 23 | @arrow-size: 20px; 24 | @arrow-border-size: 2px; 25 | 26 | // Some button things that get included all over 27 | @buttons-size: 32px; 28 | @buttons-size-large: 44px; 29 | @buttons-gap: 10px; 30 | @buttons-offset-edge: 14px; 31 | @buttons-offset-each: @buttons-size + @buttons-gap; 32 | 33 | @buttons-icon-size: 20px; //icon size medium 34 | @buttons-icon-size-large: 30px; 35 | 36 | // dark mode version of --background-color-interactive-subtle 37 | @buttons-background-color: #202122; 38 | // dark mode version of --background-color-interactive-subtle: #202122; 39 | @buttons-background-color-faded: ~'#20212274'; 40 | -------------------------------------------------------------------------------- /resources/mmv/model/mmv.model.Thumbnail.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the MediaWiki extension MultimediaViewer. 3 | * 4 | * MultimediaViewer is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * MultimediaViewer is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with MultimediaViewer. If not, see . 16 | */ 17 | 18 | /** 19 | * Represents information about an image thumbnail 20 | */ 21 | class Thumbnail { 22 | /** 23 | * @param {string} url URL to the thumbnail 24 | * @param {number} width Width in pixels 25 | * @param {number} height Height in pixels 26 | */ 27 | constructor( url, width, height ) { 28 | if ( !url || !width || !height ) { 29 | throw new Error( 'All parameters are required and cannot be empty or zero' ); 30 | } 31 | 32 | /** @property {string} url The URL to the thumbnail */ 33 | this.url = url; 34 | 35 | /** @property {number} width The width of the thumbnail in pixels */ 36 | this.width = width; 37 | 38 | /** @property {number} height The height of the thumbnail in pixels */ 39 | this.height = height; 40 | } 41 | } 42 | 43 | module.exports = Thumbnail; 44 | -------------------------------------------------------------------------------- /resources/mmv/model/mmv.model.ThumbnailWidth.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the MediaWiki extension MultimediaViewer. 3 | * 4 | * MultimediaViewer is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * MultimediaViewer is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with MultimediaViewer. If not, see . 16 | */ 17 | 18 | /** 19 | * Represents image width information. 20 | * 21 | * To utilize caching as much as possible, we use images which are displayed at a slightly 22 | * different size than their screen size. The ThumbnailWidth model stores the various types of 23 | * sizes and helps avoiding accidental incompatible assignments. (Think of it as a slightly 24 | * overcomplicated Hungarian notation) 25 | */ 26 | class ThumbnailWidth { 27 | /** 28 | * @param {number} cssWidth width in CSS pixels 29 | * @param {number} cssHeight height in CSS pixels 30 | * @param {number} screen width in screen pixels 31 | * @param {number} real width in real pixels 32 | */ 33 | constructor( cssWidth, cssHeight, screen, real ) { 34 | if ( !cssWidth || !cssHeight || !screen || !real ) { 35 | throw new Error( 'All parameters are required and cannot be empty or zero' ); 36 | } 37 | 38 | /** 39 | * Width of the thumbnail on the screen, in CSS pixels. This is the number which can be plugged 40 | * into UI code like $element.width(x). 41 | * 42 | * @property {number} 43 | */ 44 | this.cssWidth = cssWidth; 45 | 46 | /** 47 | * Height of the thumbnail on the screen, in CSS pixels. This is the number which can be plugged 48 | * into UI code like $element.height(x). 49 | * 50 | * @property {number} 51 | */ 52 | this.cssHeight = cssHeight; 53 | 54 | /** 55 | * Width of the thumbnail on the screen, in device pixels. On most devices this is the same as 56 | * the CSS width, but devices with high pixel density displays have multiple screen pixels 57 | * in a CSS pixel. 58 | * 59 | * This value is mostly used internally; for most purposes you will need one of the others. 60 | * 61 | * @property {number} 62 | */ 63 | this.screen = screen; 64 | 65 | /** 66 | * "Real" width of the thumbnail. This is the number you need to use in API requests when 67 | * obtaining the thumbnail URL. This is usually larger than the screen width, since 68 | * downscaling images via CSS looks OK but upscaling them looks ugly. However, for images 69 | * where the full size itself is very small, this can be smaller than the screen width, since 70 | * we cannot create a thumbnail which is larger than the original image. (In such cases the 71 | * image is just positioned to the center of the intended area and the space around it is 72 | * left empty.) 73 | * 74 | * @property {number} 75 | */ 76 | this.real = real; 77 | } 78 | } 79 | 80 | module.exports = ThumbnailWidth; 81 | -------------------------------------------------------------------------------- /resources/mmv/provider/mmv.provider.ImageInfo.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the MediaWiki extension MultimediaViewer. 3 | * 4 | * MultimediaViewer is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * MultimediaViewer is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with MultimediaViewer. If not, see . 16 | */ 17 | 18 | const Api = require( './mmv.provider.Api.js' ); 19 | const ImageModel = require( '../model/mmv.model.Image.js' ); 20 | 21 | /** 22 | * Gets file information. 23 | * 24 | * See https://www.mediawiki.org/wiki/API:Properties#imageinfo_.2F_ii 25 | */ 26 | class ImageInfo extends Api { 27 | /** 28 | * @param {mw.Api} api 29 | * @param {Object} [options] 30 | * @param {string} [options.language=null] image metadata language 31 | * @param {number} [options.maxage] cache expiration time, in seconds 32 | * Will be used for both client-side cache (maxage) and reverse proxies (s-maxage) 33 | */ 34 | constructor( api, options ) { 35 | options = Object.assign( { 36 | language: null 37 | }, options ); 38 | 39 | super( api, options ); 40 | } 41 | 42 | /** 43 | * Array of imageinfo API properties which are needed to construct an Image model. 44 | * 45 | * @return {string[]} 46 | */ 47 | get iiprop() { 48 | return [ 49 | 'timestamp', 50 | 'url', 51 | 'size', 52 | 'mime', 53 | 'mediatype', 54 | 'extmetadata' 55 | ]; 56 | } 57 | 58 | /** 59 | * Array of imageinfo extmetadata fields which are needed to construct an Image model. 60 | * 61 | * @return {string[]} 62 | */ 63 | get iiextmetadatafilter() { 64 | return [ 65 | 'DateTime', 66 | 'DateTimeOriginal', 67 | 'ObjectName', 68 | 'ImageDescription', 69 | 'License', 70 | 'LicenseShortName', 71 | 'UsageTerms', 72 | 'LicenseUrl', 73 | 'Credit', 74 | 'Artist', 75 | 'AuthorCount', 76 | 'GPSLatitude', 77 | 'GPSLongitude', 78 | 'Permission', 79 | 'Attribution', 80 | 'AttributionRequired', 81 | 'NonFree', 82 | 'Restrictions', 83 | 'DeletionReason' 84 | ]; 85 | } 86 | 87 | /** 88 | * Runs an API GET request to get the image info. 89 | * 90 | * @param {mw.Title} file 91 | * @return {jQuery.Promise} a promise which resolves to an Image object. 92 | */ 93 | get( file ) { 94 | return this.getCachedPromise( file.getPrefixedDb(), () => this.apiGetWithMaxAge( { 95 | formatversion: 2, 96 | action: 'query', 97 | prop: 'imageinfo', 98 | titles: file.getPrefixedDb(), 99 | iiprop: this.iiprop, 100 | iiextmetadatafilter: this.iiextmetadatafilter, 101 | iiextmetadatalanguage: this.options.language, 102 | uselang: 'content' 103 | } ).then( ( data ) => this.getQueryPage( data ) ).then( ( page ) => { 104 | if ( page.imageinfo && page.imageinfo.length ) { 105 | return ImageModel.newFromImageInfo( file, page ); 106 | } else if ( page.missing === true && page.imagerepository === '' ) { 107 | return $.Deferred().reject( `file does not exist: ${ file.getPrefixedDb() }` ); 108 | } else { 109 | return $.Deferred().reject( 'unknown error' ); 110 | } 111 | } ) ); 112 | } 113 | } 114 | 115 | module.exports = ImageInfo; 116 | -------------------------------------------------------------------------------- /resources/mmv/provider/mmv.provider.ThumbnailInfo.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the MediaWiki extension MultimediaViewer. 3 | * 4 | * MultimediaViewer is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * MultimediaViewer is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with MultimediaViewer. If not, see . 16 | */ 17 | 18 | const Api = require( './mmv.provider.Api.js' ); 19 | const Thumbnail = require( '../model/mmv.model.Thumbnail.js' ); 20 | 21 | /** 22 | * Gets thumbnail information. 23 | * 24 | * See https://www.mediawiki.org/wiki/API:Properties#imageinfo_.2F_ii 25 | */ 26 | class ThumbnailInfo extends Api { 27 | /** 28 | * @param {mw.Api} api 29 | * @param {Object} [options] 30 | * @param {number} [options.maxage] cache expiration time, in seconds 31 | * Will be used for both client-side cache (maxage) and reverse proxies (s-maxage) 32 | */ 33 | constructor( api, options ) { 34 | super( api, options ); 35 | } 36 | 37 | /** 38 | * Runs an API GET request to get the thumbnail info for the specified size. 39 | * The thumbnail always has the same aspect ratio as the full image. 40 | * One of width or height can be null; if both are set, the API will return the largest 41 | * thumbnail which fits into a width x height bounding box (or the full-sized image - whichever 42 | * is smaller). 43 | * 44 | * @param {mw.Title} file 45 | * @param {string} sampleUrl a thumbnail URL for the same file (but with different size). 46 | * @param {number} width thumbnail width in pixels 47 | * @param {number} height thumbnail height in pixels 48 | * @return {jQuery.Promise.} 49 | */ 50 | get( file, sampleUrl, width, height ) { 51 | const match = sampleUrl.match( /(lang|page)([\d\-a-z]+)-(\d+)px/ ); // multi lingual SVG or PDF page 52 | const iiurlparam = match ? `${ match[ 1 ] }${ match[ 2 ] }-${ width }px` : undefined; 53 | const cacheKey = [ file.getPrefixedDb(), width || '', height || '', iiurlparam || '' ].join(); 54 | 55 | return this.getCachedPromise( cacheKey, () => this.apiGetWithMaxAge( { 56 | formatversion: 2, 57 | action: 'query', 58 | prop: 'imageinfo', 59 | titles: file.getPrefixedDb(), 60 | iiprop: 'url', 61 | iiurlparam, 62 | iiurlwidth: width, 63 | iiurlheight: height 64 | } ).then( ( data ) => this.getQueryPage( data ) ).then( ( page ) => { 65 | let imageInfo; 66 | if ( page.imageinfo && page.imageinfo[ 0 ] ) { 67 | imageInfo = page.imageinfo[ 0 ]; 68 | if ( imageInfo.thumburl && imageInfo.thumbwidth && imageInfo.thumbheight ) { 69 | return $.Deferred().resolve( 70 | new Thumbnail( 71 | imageInfo.thumburl, 72 | imageInfo.thumbwidth, 73 | imageInfo.thumbheight 74 | ) 75 | ); 76 | } else { 77 | return $.Deferred().reject( 'error in provider, thumb info not found' ); 78 | } 79 | } else if ( page.missing === true && page.imagerepository === '' ) { 80 | return $.Deferred().reject( `file does not exist: ${ file.getPrefixedDb() }` ); 81 | } else { 82 | return $.Deferred().reject( 'unknown error' ); 83 | } 84 | } ) ); 85 | } 86 | } 87 | 88 | module.exports = ThumbnailInfo; 89 | -------------------------------------------------------------------------------- /resources/mmv/provider/mmv.provider.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the MediaWiki extension MultimediaViewer. 3 | * 4 | * MultimediaViewer is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * MultimediaViewer is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with MultimediaViewer. If not, see . 16 | */ 17 | 18 | const Api = require( './mmv.provider.Api.js' ); 19 | const GuessedThumbnailInfo = require( './mmv.provider.GuessedThumbnailInfo.js' ); 20 | const ImageProvider = require( './mmv.provider.Image.js' ); 21 | const ImageInfo = require( './mmv.provider.ImageInfo.js' ); 22 | const ThumbnailInfo = require( './mmv.provider.ThumbnailInfo.js' ); 23 | 24 | module.exports = { 25 | Api, 26 | GuessedThumbnailInfo, 27 | ImageInfo, 28 | ImageProvider, 29 | ThumbnailInfo 30 | }; 31 | -------------------------------------------------------------------------------- /resources/mmv/ui/checker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wikimedia/mediawiki-extensions-MultimediaViewer/9fe4a34792d158f7ac4cc137963f058ffecef138/resources/mmv/ui/checker.png -------------------------------------------------------------------------------- /resources/mmv/ui/img/error-media-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /resources/mmv/ui/mmv.ui.canvas.less: -------------------------------------------------------------------------------- 1 | @import 'mediawiki.skin.variables.less'; 2 | @import 'mediawiki.mixins.less'; 3 | 4 | .mw-mmv-image { 5 | display: table-cell; 6 | width: 100%; 7 | height: 100%; 8 | vertical-align: middle; 9 | .user-select( none ); 10 | 11 | &.empty { 12 | display: none; 13 | } 14 | 15 | &.error { 16 | background-color: #202122; 17 | 18 | a, 19 | a:visited { 20 | cursor: pointer; 21 | color: @color-progressive; 22 | } 23 | } 24 | 25 | .error-box { 26 | background: url( img/error-media-icon.svg ) no-repeat 0 0; 27 | background-size: 110px 110px; 28 | position: absolute; 29 | left: 50%; 30 | margin-left: -350px; 31 | top: 50%; 32 | margin-top: -100px; 33 | padding: 0 20px 0 160px; 34 | color: #fff; 35 | max-width: 520px; 36 | 37 | .mw-mmv-error-text { 38 | font-size: 48px; 39 | } 40 | 41 | .mw-mmv-error-description { 42 | margin-top: 30px; 43 | font-size: 22px; 44 | } 45 | } 46 | } 47 | 48 | .mw-mmv-image img { 49 | display: block; 50 | margin-right: auto; 51 | margin-left: auto; 52 | /* stylelint-disable-next-line plugin/no-unsupported-browser-features */ 53 | cursor: zoom-in; 54 | 55 | /* Allowlist file types that are potentially transparent. 56 | We don't set it for other file types because Media Viewer plugins 57 | can find that undesirable (eg. 3d) */ 58 | &.gif, 59 | &.png, 60 | &.webp, 61 | &.svg, 62 | &.tiff, 63 | &.tif { 64 | background: url( checker.png ) repeat; 65 | } 66 | 67 | &.mw-mmv-dialog-is-open { 68 | cursor: default; 69 | } 70 | 71 | .metadata-panel-is-open & { 72 | cursor: pointer; 73 | } 74 | } 75 | 76 | .mw-mmv-image.empty img { 77 | display: none; 78 | } 79 | 80 | .metadata-panel-is-open .mw-mmv-image-wrapper { 81 | cursor: pointer; 82 | } 83 | -------------------------------------------------------------------------------- /resources/mmv/ui/mmv.ui.description.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the MediaWiki extension MultimediaViewer. 3 | * 4 | * MultimediaViewer is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * MultimediaViewer is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with MultimediaViewer. If not, see . 16 | */ 17 | 18 | const HtmlUtils = require( '../mmv.HtmlUtils.js' ); 19 | const UiElement = require( './mmv.ui.js' ); 20 | 21 | /** 22 | * Description element in the UI. 23 | */ 24 | class Description extends UiElement { 25 | constructor( $container ) { 26 | super( $container ); 27 | 28 | this.$imageDescDiv = $( '
' ) 29 | .addClass( 'mw-mmv-image-desc-div empty' ) 30 | .appendTo( this.$container ); 31 | 32 | this.$imageDesc = $( '

' ) 33 | .addClass( 'mw-mmv-image-desc' ) 34 | .appendTo( this.$imageDescDiv ); 35 | } 36 | 37 | /** 38 | * Sets data on the element. 39 | * This complements MetadataPanel.setTitle() - information shown there will not be shown here. 40 | * 41 | * @param {string|null} description The text of the description 42 | * @param {string|null} caption The text of the caption 43 | */ 44 | set( description, caption ) { 45 | if ( caption && description ) { // panel header shows the caption - show description here 46 | this.$imageDesc.html( HtmlUtils.htmlToTextWithTags( description ) ); 47 | this.$imageDescDiv.removeClass( 'empty' ); 48 | } else { // either there is no description or the paner header already shows it - nothing to do here 49 | this.empty(); 50 | } 51 | } 52 | 53 | /** 54 | * @inheritdoc 55 | */ 56 | empty() { 57 | this.$imageDesc.empty(); 58 | this.$imageDescDiv.addClass( 'empty' ); 59 | } 60 | } 61 | 62 | module.exports = Description; 63 | -------------------------------------------------------------------------------- /resources/mmv/ui/mmv.ui.dialog.less: -------------------------------------------------------------------------------- 1 | @import 'mediawiki.skin.variables.less'; 2 | @import '../mmv.variables.less'; 3 | 4 | @background-color: @background-color-base; 5 | @dialog-width: 450px; 6 | 7 | /* Flexbox gap not supported in all browsers */ 8 | .mw-mmv-dialog { 9 | position: fixed; 10 | right: @buttons-offset-edge + @buttons-offset-each + ( @arrow-size / 2 ); 11 | display: none; 12 | width: @dialog-width; 13 | height: @dialog-height; 14 | background-color: @background-color; 15 | box-shadow: @box-shadow-drop-xx-large; 16 | z-index: 1004; 17 | 18 | .mw-mmv-dialog-down-arrow { 19 | right: @buttons-offset-edge + @buttons-offset-each; 20 | background-color: @background-color; 21 | width: @arrow-size; 22 | height: @arrow-size; 23 | transform: rotate( -45deg ); 24 | position: fixed; 25 | } 26 | 27 | .mw-mmv-dialog-warning { 28 | background-color: @background-color-warning-subtle; 29 | } 30 | 31 | .mw-mmv-pt-0 { 32 | padding-top: 0; 33 | } 34 | 35 | .mw-mmv-pb-0 { 36 | padding-bottom: 0; 37 | } 38 | 39 | .mw-mmv-mt-75 { 40 | margin-top: @spacing-75; 41 | } 42 | 43 | .mw-mmv-mb-75 { 44 | margin-bottom: @spacing-75; 45 | } 46 | 47 | .mw-mmv-pb-150 { 48 | padding-bottom: @spacing-150; 49 | } 50 | 51 | .mw-mmv-gap-50 { 52 | gap: @spacing-50; 53 | } 54 | 55 | .mw-mmv-flex { 56 | display: flex; 57 | } 58 | 59 | .mw-mmv-flex-grow-1 { 60 | flex-grow: 1; 61 | } 62 | 63 | .cdx-button__icon--copy { 64 | .cdx-mixin-css-icon( @cdx-icon-copy, @param-is-button-icon: true ); 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /resources/mmv/ui/mmv.ui.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the MediaWiki extension MultimediaViewer. 3 | * 4 | * MultimediaViewer is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * MultimediaViewer is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with MultimediaViewer. If not, see . 16 | */ 17 | 18 | /** 19 | * Represents a UI element. 20 | * 21 | * @abstract 22 | */ 23 | class UiElement { 24 | /** 25 | * @param {jQuery} $container 26 | */ 27 | constructor( $container ) { 28 | OO.EventEmitter.call( this ); 29 | 30 | /** @property {jQuery} $container The element that contains the UI element. */ 31 | this.$container = $container; 32 | 33 | /** @property {Object.} eventsRegistered Events that this element has registered with the DOM. */ 34 | this.eventsRegistered = {}; 35 | } 36 | 37 | /** 38 | * Sets the data for the element. 39 | * 40 | * @abstract 41 | */ 42 | set() { } 43 | 44 | /** 45 | * Empties the element. 46 | * 47 | * @abstract 48 | */ 49 | empty() { } 50 | 51 | /** 52 | * Registers listeners. 53 | * 54 | * @abstract 55 | */ 56 | attach() { } 57 | 58 | /** 59 | * Clears listeners. 60 | * 61 | * @abstract 62 | */ 63 | unattach() { 64 | this.clearEvents(); 65 | } 66 | 67 | /** 68 | * Add event handler in a way that will be auto-cleared on lightbox close 69 | * 70 | * TODO: Unit tests 71 | * 72 | * @param {string} name Name of event, like 'keydown' 73 | * @param {Function} handler Callback for the event 74 | */ 75 | handleEvent( name, handler ) { 76 | if ( this.eventsRegistered[ name ] === undefined ) { 77 | this.eventsRegistered[ name ] = []; 78 | } 79 | this.eventsRegistered[ name ].push( handler ); 80 | $( document ).on( name, handler ); 81 | } 82 | 83 | /** 84 | * Remove all events that have been registered on this element. 85 | * 86 | * TODO: Unit tests 87 | */ 88 | clearEvents() { 89 | for ( const ev in this.eventsRegistered ) { 90 | const handlers = this.eventsRegistered[ ev ]; 91 | while ( handlers.length > 0 ) { 92 | $( document ).off( ev, handlers.pop() ); 93 | } 94 | } 95 | } 96 | } 97 | 98 | OO.mixinClass( UiElement, OO.EventEmitter ); 99 | 100 | module.exports = UiElement; 101 | -------------------------------------------------------------------------------- /resources/mmv/ui/mmv.ui.metadataPanelScroller.less: -------------------------------------------------------------------------------- 1 | @import 'mediawiki.skin.variables.less'; 2 | @import '../mmv.variables.less'; 3 | 4 | .mw-mmv-post-image { 5 | animation: mw-mmv-appear-animation 0.5s ease 0s 1 normal forwards; 6 | transition: box-shadow 0.25s; 7 | 8 | &.invite { 9 | animation: mw-mmv-invite-animation 0.9s ease 0.2s 1 normal forwards; 10 | } 11 | 12 | .jq-fullscreened & { 13 | animation: none; 14 | } 15 | 16 | &.mw-mmv-untruncated, 17 | .jq-fullscreened & { 18 | box-shadow: 0 -4px 0 rgba( 0, 0, 0, 0.2 ); 19 | } 20 | } 21 | 22 | .mw-mmv-appear-animation() { 23 | 0% { 24 | opacity: 0.6; 25 | } 26 | 27 | 50% { 28 | opacity: 0.9; 29 | } 30 | 31 | 100% { 32 | opacity: 1; 33 | } 34 | } 35 | 36 | @keyframes mw-mmv-appear-animation { 37 | .mw-mmv-appear-animation; 38 | } 39 | 40 | .mw-mmv-invite-animation() { 41 | 0% { 42 | margin-top: 0; 43 | } 44 | 45 | 30% { 46 | margin-top: -15px; 47 | } 48 | 49 | 85% { 50 | margin-top: 0; 51 | } 52 | } 53 | 54 | @keyframes mw-mmv-invite-animation { 55 | .mw-mmv-invite-animation; 56 | } 57 | -------------------------------------------------------------------------------- /resources/mmv/ui/mmv.ui.permission.less: -------------------------------------------------------------------------------- 1 | @import 'mediawiki.skin.variables.less'; 2 | @import 'mediawiki.mixins.less'; 3 | 4 | .mw-mmv-permission-box { 5 | position: relative; 6 | width: 90%; 7 | margin: 10px 20px 0; 8 | 9 | &.empty { 10 | display: none; 11 | } 12 | 13 | h3 { 14 | margin: 10px; 15 | padding: 0; 16 | color: @color-subtle; 17 | font-size: 0.95em; 18 | } 19 | 20 | .mw-mmv-permission-close { 21 | position: absolute; 22 | top: 12px; 23 | right: 8px; 24 | .cdx-mixin-css-icon( @cdx-icon-close, @param-fill-color: @color-subtle, @param-size-icon: @size-icon-small ); 25 | cursor: pointer; 26 | display: none; // override display:inline-block from .cdx-mixin-css-icon 27 | } 28 | 29 | .mw-mmv-permission-text { 30 | @text-font-size: 0.9em; 31 | @text-line-height: 1.4; 32 | @lines-shown: 3; 33 | position: relative; 34 | max-height: @lines-shown * @text-line-height * @text-font-size; 35 | overflow: hidden; 36 | margin: 0 10px 10px; 37 | font-size: @text-font-size; 38 | line-height: @text-line-height; 39 | color: @color-subtle; 40 | 41 | .mw-mmv-permission-text-fader { 42 | background-image: linear-gradient( to bottom, @background-color-transparent 0%, @background-color-base 100% ); 43 | position: absolute; 44 | top: ( @lines-shown - 1 ) * @text-line-height * @text-font-size; 45 | width: 100%; 46 | height: @text-line-height * @text-font-size; 47 | text-align: right; 48 | 49 | a { 50 | padding: 3px 0 0 1em; 51 | background-color: @background-color-interactive-subtle; 52 | font-size: 1em; 53 | } 54 | } 55 | } 56 | 57 | .mw-mmv-permission-html { 58 | padding: 0 15px 15px; 59 | display: none; 60 | max-height: 400px; 61 | overflow: auto; 62 | } 63 | 64 | &.full-size { 65 | .mw-mmv-permission-close { 66 | display: block; 67 | } 68 | 69 | .mw-mmv-permission-text { 70 | display: none; 71 | } 72 | 73 | .mw-mmv-permission-html { 74 | display: block; 75 | border-top: 1px solid @border-color-base; 76 | } 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /resources/mmv/ui/mmv.ui.progressBar.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the MediaWiki extension MediaViewer. 3 | * 4 | * MediaViewer is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * MediaViewer is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with MediaViewer. If not, see . 16 | */ 17 | 18 | const UiElement = require( './mmv.ui.js' ); 19 | 20 | /** 21 | * A progress bar for the loading of the image. 22 | */ 23 | class ProgressBar extends UiElement { 24 | /** 25 | * @param {jQuery} $container 26 | */ 27 | constructor( $container ) { 28 | super( $container ); 29 | this.init(); 30 | } 31 | 32 | /** 33 | * Initializes the progress display at the top of the panel. 34 | */ 35 | init() { 36 | this.$progress = $( '

' ) 37 | .addClass( 'mw-mmv-progress empty' ) 38 | .appendTo( this.$container ); 39 | this.$percent = $( '
' ) 40 | .addClass( 'mw-mmv-progress-percent' ) 41 | .appendTo( this.$progress ); 42 | } 43 | 44 | empty() { 45 | this.hide(); 46 | } 47 | 48 | /** 49 | * Hides the bar, resets it to 0 and stops any animation in progress. 50 | */ 51 | hide() { 52 | this.$progress.addClass( 'empty' ); 53 | this.$percent.css( { width: 0 } ); 54 | } 55 | 56 | /** 57 | * Handles the progress display when a percentage of progress is received 58 | * 59 | * @param {number} percent a number between 0 and 100 60 | */ 61 | animateTo( percent ) { 62 | this.$progress.removeClass( 'empty' ); 63 | 64 | if ( percent === 100 ) { 65 | // When a 100% update comes in, we make sure that the bar is visible, we animate 66 | // fast to 100 and we hide the bar 67 | this.$percent.css( { width: `${ percent }%` } ); 68 | this.hide(); 69 | } else { 70 | // When any other % update comes in, we make sure the bar is visible 71 | // and we animate to the right position 72 | this.$percent.css( { width: `${ percent }%` } ); 73 | } 74 | } 75 | 76 | /** 77 | * Goes to the given percent (originally without animation) 78 | * 79 | * @param {number} percent a number between 0 and 100 80 | */ 81 | jumpTo( percent ) { 82 | this.animateTo( percent ); 83 | } 84 | } 85 | 86 | module.exports = ProgressBar; 87 | -------------------------------------------------------------------------------- /resources/mmv/ui/mmv.ui.progressBar.less: -------------------------------------------------------------------------------- 1 | @import 'mediawiki.skin.variables.less'; 2 | @import '../mmv.variables.less'; 3 | 4 | @progress-height: @progress-bar-height; 5 | 6 | .mw-mmv-progress { 7 | background-color: @background-color-disabled; 8 | background-color: rgba( 221, 221, 221, 0.5 ); 9 | width: 100%; 10 | height: @progress-height; 11 | overflow: hidden; 12 | position: absolute; 13 | top: -@progress-height; 14 | transition: height 0.2s ease-out, top 0.2s ease-out; 15 | } 16 | 17 | .mw-mmv-progress.empty { 18 | height: 0; 19 | top: 0; 20 | } 21 | 22 | .mw-mmv-progress-percent { 23 | width: 0; 24 | height: @progress-height; 25 | background: linear-gradient( -45deg, transparent 33%, rgba( 0, 0, 0, 0.1 ) 33%, rgba( 0, 0, 0, 0.1 ) 66%, transparent 66% ), #36c; 26 | background-size: 35px 20px, 100% 100%, 100% 100%; 27 | animation: mw-mmv-progress-percent-animation 1.5s linear infinite; 28 | transition: width ease 0.2s; 29 | } 30 | 31 | .mw-mmv-progress-percent-animation() { 32 | 0% { 33 | background-position: 0 0; 34 | } 35 | 36 | 100% { 37 | background-position: -70px 0; 38 | } 39 | } 40 | 41 | @keyframes mw-mmv-progress-percent-animation { 42 | .mw-mmv-progress-percent-animation; 43 | } 44 | -------------------------------------------------------------------------------- /resources/mmv/ui/mmv.ui.stripeButtons.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the MediaWiki extension MediaViewer. 3 | * 4 | * MediaViewer is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * MediaViewer is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with MediaViewer. If not, see . 16 | */ 17 | 18 | const UiElement = require( './mmv.ui.js' ); 19 | 20 | /** 21 | * Class for buttons which are placed on the metadata stripe (the always visible part of the 22 | * metadata panel). 23 | */ 24 | class StripeButtons extends UiElement { 25 | /** 26 | * @param {jQuery} $container the title block (.mw-mmv-title-contain) which wraps the buttons and all 27 | * other title elements 28 | */ 29 | constructor( $container ) { 30 | super( $container ); 31 | 32 | this.$buttonContainer = $( '
' ) 33 | .addClass( 'mw-mmv-stripe-button-container' ) 34 | .appendTo( $container ); 35 | 36 | /** 37 | * A button linking to the file description page. 38 | */ 39 | this.$descriptionPage = $( '' ) 40 | .addClass( 'mw-mmv-stripe-button empty mw-mmv-description-page-button cdx-button cdx-button--weight-primary cdx-button--action-progressive cdx-button--size-large cdx-button--fake-button cdx-button--fake-button--enabled' ) 41 | // elements are right-floated so we use prepend instead of append to keep the order 42 | .prependTo( this.$buttonContainer ); 43 | } 44 | 45 | /** 46 | * @inheritdoc 47 | * @param {LightboxImage} image 48 | * @param {ImageModel} imageInfo 49 | */ 50 | set( image, imageInfo ) { 51 | const match = image && image.src ? 52 | image.src.match( /(lang|page)([\d\-a-z]+)-(\d+)px/ ) : // multi lingual SVG or PDF page 53 | null; 54 | 55 | const commons = '//commons.wikimedia.org'; 56 | const isCommonsServer = String( mw.config.get( 'wgServer' ) ).includes( commons ); 57 | let descriptionUrl = imageInfo.descriptionUrl; 58 | let isCommons = String( descriptionUrl ).includes( commons ); 59 | 60 | if ( imageInfo.pageID && !isCommonsServer ) { 61 | const params = {}; 62 | if ( match ) { 63 | params[ match[ 1 ] ] = match[ 2 ]; 64 | } 65 | // The file has a local description page, override the description URL 66 | descriptionUrl = imageInfo.title.getUrl( params ); 67 | isCommons = false; 68 | } else { 69 | const parsedUrl = new URL( descriptionUrl, location ); 70 | if ( match ) { 71 | parsedUrl.searchParams.set( match[ 1 ], match[ 2 ] ); 72 | } 73 | descriptionUrl = parsedUrl.toString(); 74 | } 75 | 76 | this.$descriptionPage.empty() 77 | .append( $( '' ).addClass( 'cdx-button__icon' ) ) 78 | .append( mw.msg( 'multimediaviewer-repository-local' ) ) 79 | .attr( 'href', descriptionUrl ) 80 | .removeClass( 'empty' ) 81 | .toggleClass( 'mw-mmv-repo-button-commons', isCommons ); 82 | } 83 | 84 | /** 85 | * @inheritdoc 86 | */ 87 | empty() { 88 | this.$descriptionPage.attr( { href: null, title: null, 'original-title': null } ) 89 | .addClass( 'empty' ) 90 | .removeClass( 'mw-mmv-repo-button-commons' ); 91 | } 92 | } 93 | 94 | module.exports = StripeButtons; 95 | -------------------------------------------------------------------------------- /resources/mmv/ui/mmv.ui.stripeButtons.less: -------------------------------------------------------------------------------- 1 | @import 'mediawiki.skin.variables.less'; 2 | @import '../mmv.variables.less'; 3 | @import 'mediawiki.mixins.less'; 4 | 5 | @button-vertical-padding: 20px; 6 | @button-height: 25px; 7 | @repo-button-width: 50px; 8 | 9 | // The buttons need to be positioned to the bottom right corner of .mw-mmv-title-contain, and 10 | // other text in that element must not overlap them. Their width is not known (depends on the 11 | // translation) so we float them to the right and calculate the top margin required to make them 12 | // full height. 13 | .mw-mmv-stripe-button { 14 | float: right; 15 | 16 | &.empty { 17 | display: none; 18 | } 19 | 20 | &.mw-mmv-description-page-button { 21 | margin: 7px 10px; 22 | } 23 | 24 | &.mw-mmv-description-page-button .cdx-button__icon { 25 | .cdx-mixin-css-icon( @cdx-icon-article, @param-is-button-icon: true ); 26 | } 27 | 28 | &.mw-mmv-description-page-button.mw-mmv-repo-button-commons .cdx-button__icon { 29 | .cdx-mixin-css-icon( @cdx-icon-logo-wikimedia-commons, @param-is-button-icon: true ); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /resources/mmv/ui/mmv.ui.truncatableTextField.less: -------------------------------------------------------------------------------- 1 | @import 'mediawiki.skin.variables.less'; 2 | @import 'mediawiki.mixins.less'; 3 | @import '../mmv.variables.less'; 4 | 5 | .mw-mmv-ttf-container { 6 | position: relative; 7 | overflow: hidden; // need to create a block formatting context, otherwise adjacent floats would be problematic 8 | 9 | &.mw-mmv-ttf-small { 10 | font-size: 90%; 11 | } 12 | 13 | &.mw-mmv-ttf-smaller { 14 | font-size: 80%; 15 | } 16 | 17 | &.mw-mmv-ttf-smallest { 18 | font-size: 65%; 19 | } 20 | 21 | // used on containers which have been shortened and can be expanded 22 | &.mw-mmv-ttf-truncated { 23 | cursor: pointer; 24 | } 25 | 26 | // used on containers which have been expanded 27 | &.mw-mmv-ttf-untruncated { 28 | height: auto; 29 | } 30 | 31 | .mw-mmv-ttf-ellipsis { 32 | display: block; 33 | position: absolute; 34 | right: 0; 35 | bottom: 0; 36 | height: 1em; // make it scale with the font 37 | width: 1.5em; // SVG image has ~1.5 aspect ratio 38 | text-indent: -9999px; 39 | border-radius: @border-radius-base; 40 | background-size: contain; 41 | background-position: center center; 42 | background-repeat: no-repeat; 43 | .cdx-mixin-css-icon( @cdx-icon-ellipsis, @param-fill-color: @color-base ); 44 | box-shadow: -4px 6px 0 0 @box-shadow-color-inverted; 45 | opacity: 0.5; 46 | 47 | // Hovering over .mw-mmv-ttf-ellipsis-container will make the ellipsis more visible to attract 48 | // attention to it. Since it has to be set on a parent element which is not under control of 49 | // TruncatableTextField, setting it is the caller's responsibility. 50 | .mw-mmv-ttf-ellipsis-container:hover & { 51 | opacity: 0.75; 52 | } 53 | 54 | // second rule + ordering needed for specificity 55 | &:hover, 56 | .mw-mmv-ttf-ellipsis-container &:hover { 57 | opacity: 1; 58 | } 59 | 60 | // Fade-out effect via gradient for the ellipsis. 61 | &::before { 62 | background-image: linear-gradient( to right, @background-color-transparent 0%, @background-color-base 100% ); 63 | @fade-length: 2em; 64 | display: block; 65 | content: ''; 66 | height: 1.6em; // 1em would not cover high glyphs 67 | width: @fade-length; 68 | margin-left: -@fade-length; 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /tests/phpunit/HooksTest.php: -------------------------------------------------------------------------------- 1 | getServiceContainer()->getMainConfig(), 19 | $this->getServiceContainer()->getSpecialPageFactory(), 20 | $this->getServiceContainer()->getUserOptionsLookup(), 21 | null 22 | ); 23 | } 24 | 25 | public static function provideOnBeforePageDisplay() { 26 | return [ 27 | 'no files' => [ 'Main Page', 0, false ], 28 | 'with files' => [ 'Main Page', 1, true ], 29 | 'special with files' => [ 'Special:ListFiles', 0, true ], 30 | 'special no files' => [ 'Special:Watchlist', 0, false ], 31 | ]; 32 | } 33 | 34 | /** 35 | * @dataProvider provideOnBeforePageDisplay 36 | */ 37 | public function testOnBeforePageDisplay( $pagename, $fileCount, $modulesExpected ) { 38 | $t = Title::newFromText( $pagename ); 39 | // Force content model to avoid DB queries 40 | $t->setContentModel( CONTENT_MODEL_WIKITEXT ); 41 | $skin = new SkinTemplate(); 42 | $output = $this->createMock( OutputPage::class ); 43 | $output->method( 'getTitle' )->willReturn( $t ); 44 | $output->method( 'getFileSearchOptions' )->willReturn( array_fill( 0, $fileCount, null ) ); 45 | $output->expects( $this->exactly( $modulesExpected ? 1 : 0 ) )->method( 'addModules' ); 46 | $this->newHooksInstance()->onBeforePageDisplay( $output, $skin ); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /tests/phpunit/structure/BundleSizeTest.php: -------------------------------------------------------------------------------- 1 | . 16 | */ 17 | 18 | require( 'mmv' ); 19 | 20 | require( './mmv.bootstrap.test.js' ); 21 | require( './mmv.test.js' ); 22 | require( './mmv.lightboxinterface.test.js' ); 23 | require( './mmv.lightboximage.test.js' ); 24 | require( './mmv.ThumbnailWidthCalculator.test.js' ); 25 | require( './mmv.EmbedFileFormatter.test.js' ); 26 | require( './mmv.Config.test.js' ); 27 | require( './mmv.HtmlUtils.test.js' ); 28 | require( './logging/mmv.logging.ViewLogger.test.js' ); 29 | require( './model/mmv.model.test.js' ); 30 | require( './model/mmv.model.TaskQueue.test.js' ); 31 | require( './model/mmv.model.License.test.js' ); 32 | require( './model/mmv.model.Image.test.js' ); 33 | require( './provider/mmv.provider.Api.test.js' ); 34 | require( './provider/mmv.provider.ImageInfo.test.js' ); 35 | require( './provider/mmv.provider.ThumbnailInfo.test.js' ); 36 | require( './provider/mmv.provider.GuessedThumbnailInfo.test.js' ); 37 | require( './provider/mmv.provider.Image.test.js' ); 38 | require( './ui/mmv.ui.test.js' ); 39 | require( './ui/mmv.ui.canvas.test.js' ); 40 | require( './ui/mmv.ui.canvasButtons.test.js' ); 41 | require( './ui/mmv.ui.description.test.js' ); 42 | require( './ui/mmv.ui.download.pane.test.js' ); 43 | require( './ui/mmv.ui.metadataPanel.test.js' ); 44 | require( './ui/mmv.ui.metadataPanelScroller.test.js' ); 45 | require( './ui/mmv.ui.progressBar.test.js' ); 46 | require( './ui/mmv.ui.permission.test.js' ); 47 | require( './ui/mmv.ui.stripeButtons.test.js' ); 48 | require( './ui/mmv.ui.reuse.dialog.test.js' ); 49 | require( './ui/mmv.ui.reuse.embed.test.js' ); 50 | require( './ui/mmv.ui.reuse.share.test.js' ); 51 | require( './ui/mmv.ui.reuse.utils.test.js' ); 52 | require( './ui/mmv.ui.truncatableTextField.test.js' ); 53 | -------------------------------------------------------------------------------- /tests/qunit/mmv/logging/mmv.logging.ViewLogger.test.js: -------------------------------------------------------------------------------- 1 | const { ViewLogger } = require( 'mmv' ); 2 | 3 | QUnit.module( 'mmv.logging.ViewLogger', QUnit.newMwEnvironment( { 4 | beforeEach: function () { 5 | this.clock = this.sandbox.useFakeTimers(); 6 | 7 | // since jQuery 2/3, $.now will capture a reference to Date.now 8 | // before above fake timer gets a chance to override it, so I'll 9 | // override that new behavior in order to run these tests... 10 | // @see https://github.com/sinonjs/lolex/issues/76 11 | this.oldNow = $.now; 12 | $.now = () => Date.now(); 13 | }, 14 | 15 | afterEach: function () { 16 | $.now = this.oldNow; 17 | this.clock.restore(); 18 | } 19 | } ) ); 20 | 21 | QUnit.test( 'focus and blur', function ( assert ) { 22 | const $fakeWindow = $( '
' ); 23 | const viewLogger = new ViewLogger( $fakeWindow ); 24 | 25 | this.clock.tick( 1 ); // This is just so that the timer ticks up in the fake timer environment 26 | 27 | viewLogger.attach(); 28 | 29 | this.clock.tick( 5 ); 30 | 31 | $fakeWindow.triggerHandler( 'blur' ); 32 | 33 | this.clock.tick( 2 ); 34 | 35 | $fakeWindow.triggerHandler( 'focus' ); 36 | 37 | this.clock.tick( 3 ); 38 | 39 | $fakeWindow.triggerHandler( 'blur' ); 40 | 41 | this.clock.tick( 4 ); 42 | 43 | assert.strictEqual( viewLogger.viewDuration, 8, 'Only focus duration was logged' ); 44 | } ); 45 | 46 | QUnit.test( 'stopViewDuration before startViewDuration', function ( assert ) { 47 | const viewLogger = new ViewLogger( {} ); 48 | 49 | this.clock.tick( 1 ); // This is just so that the timer ticks up in the fake timer environment 50 | 51 | viewLogger.stopViewDuration(); 52 | 53 | this.clock.tick( 2 ); 54 | 55 | viewLogger.startViewDuration(); 56 | 57 | this.clock.tick( 3 ); 58 | 59 | viewLogger.stopViewDuration(); 60 | 61 | assert.strictEqual( viewLogger.viewDuration, 3, 'Only last timeframe was logged' ); 62 | } ); 63 | -------------------------------------------------------------------------------- /tests/qunit/mmv/mmv.lightboximage.test.js: -------------------------------------------------------------------------------- 1 | const { LightboxImage } = require( 'mmv.bootstrap' ); 2 | 3 | QUnit.module( 'mmv.lightboximage', QUnit.newMwEnvironment() ); 4 | 5 | QUnit.test( 'Sense test', ( assert ) => { 6 | const lightboxImage = new LightboxImage( 'foo.png' ); 7 | 8 | assert.true( lightboxImage instanceof LightboxImage, 'Object created' ); 9 | } ); 10 | -------------------------------------------------------------------------------- /tests/qunit/mmv/model/mmv.model.test.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the MediaWiki extension MultimediaViewer. 3 | * 4 | * MultimediaViewer is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * MultimediaViewer is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with MultimediaViewer. If not, see . 16 | */ 17 | 18 | const { Thumbnail, ThumbnailWidth } = require( 'mmv' ); 19 | 20 | QUnit.module( 'mmv.model', QUnit.newMwEnvironment() ); 21 | 22 | QUnit.test( 'Thumbnail constructor sense check', ( assert ) => { 23 | const width = 23; 24 | const height = 42; 25 | const url = 'http://example.com/foo.jpg'; 26 | let thumbnail = new Thumbnail( url, width, height ); 27 | 28 | assert.strictEqual( thumbnail.url, url, 'Url is set correctly' ); 29 | assert.strictEqual( thumbnail.width, width, 'Width is set correctly' ); 30 | assert.strictEqual( thumbnail.height, height, 'Height is set correctly' ); 31 | 32 | assert.throws( () => { 33 | thumbnail = new Thumbnail( url, width ); 34 | }, 'Exception is thrown when parameters are missing' ); 35 | } ); 36 | 37 | QUnit.test( 'ThumbnailWidth constructor sense check', ( assert ) => { 38 | const cssWidth = 23; 39 | const cssHeight = 29; 40 | const screenWidth = 42; 41 | const realWidth = 123; 42 | let thumbnailWidth = new ThumbnailWidth( 43 | cssWidth, cssHeight, screenWidth, realWidth ); 44 | 45 | assert.strictEqual( thumbnailWidth.cssWidth, cssWidth, 'Width is set correctly' ); 46 | assert.strictEqual( thumbnailWidth.cssHeight, cssHeight, 'Height is set correctly' ); 47 | assert.strictEqual( thumbnailWidth.screen, screenWidth, 'Screen width is set correctly' ); 48 | assert.strictEqual( thumbnailWidth.real, realWidth, 'Real width is set correctly' ); 49 | 50 | assert.throws( () => { 51 | thumbnailWidth = new ThumbnailWidth( cssWidth, screenWidth ); 52 | }, 'Exception is thrown when parameters are missing' ); 53 | } ); 54 | -------------------------------------------------------------------------------- /tests/qunit/mmv/ui/mmv.ui.canvasButtons.test.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the MediaWiki extension MediaViewer. 3 | * 4 | * MediaViewer is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * MediaViewer is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with MediaViewer. If not, see . 16 | */ 17 | 18 | const { CanvasButtons } = require( 'mmv' ); 19 | 20 | QUnit.module( 'mmv.ui.CanvasButtons', QUnit.newMwEnvironment() ); 21 | 22 | QUnit.test( 'Prev/Next', ( assert ) => { 23 | const $qf = $( '#qunit-fixture' ); 24 | const buttons = new CanvasButtons( $qf, $( '
' ), $( '
' ) ); 25 | 26 | buttons.on( 'next', () => { 27 | assert.true( true, 'Switched to next image' ); 28 | } ); 29 | 30 | buttons.on( 'prev', () => { 31 | assert.true( true, 'Switched to prev image' ); 32 | } ); 33 | 34 | buttons.$next.trigger( 'click' ); 35 | buttons.$prev.trigger( 'click' ); 36 | } ); 37 | -------------------------------------------------------------------------------- /tests/qunit/mmv/ui/mmv.ui.description.test.js: -------------------------------------------------------------------------------- 1 | const { Description } = require( 'mmv' ); 2 | 3 | QUnit.module( 'mmv.ui.description', QUnit.newMwEnvironment() ); 4 | 5 | QUnit.test( 'Sense test, object creation and UI construction', ( assert ) => { 6 | const description = new Description( $( '#qunit-fixture' ) ); 7 | 8 | assert.true( description instanceof Description, 'Image description UI element is created' ); 9 | assert.strictEqual( description.$imageDescDiv.length, 1, 'Image description div is created' ); 10 | assert.strictEqual( description.$imageDesc.length, 1, 'Image description element is created' ); 11 | } ); 12 | 13 | QUnit.test( 'Setting data in different combinations works well', ( assert ) => { 14 | const description = new Description( $( '#qunit-fixture' ) ); 15 | 16 | description.set( null, null ); 17 | assert.strictEqual( description.$imageDescDiv.hasClass( 'empty' ), true, 18 | 'Image description div is marked empty when neither description nor caption is available' ); 19 | 20 | description.set( null, 'foo' ); 21 | assert.strictEqual( description.$imageDescDiv.hasClass( 'empty' ), true, 22 | 'Image description div is marked empty when there is no description' ); 23 | 24 | description.set( 'blah', null ); 25 | assert.strictEqual( description.$imageDescDiv.hasClass( 'empty' ), true, 26 | 'Image description div is marked empty when there is no caption (description will be shown in title)' ); 27 | 28 | description.set( 'foo', 'bar' ); 29 | assert.strictEqual( description.$imageDescDiv.hasClass( 'empty' ), false, 30 | 'Image description div is not marked empty when both description and caption are available' ); 31 | assert.strictEqual( description.$imageDesc.text(), 'foo', 32 | 'Image description text is set correctly, caption is ignored' ); 33 | } ); 34 | 35 | QUnit.test( 'Emptying data works as expected', ( assert ) => { 36 | const description = new Description( $( '#qunit-fixture' ) ); 37 | 38 | description.set( 'foo', 'bar' ); 39 | description.empty(); 40 | assert.strictEqual( description.$imageDescDiv.hasClass( 'empty' ), true, 'Image description div is marked empty when emptied' ); 41 | assert.strictEqual( description.$imageDesc.text(), '', 'Image description text is emptied correctly' ); 42 | } ); 43 | -------------------------------------------------------------------------------- /tests/qunit/mmv/ui/mmv.ui.progressBar.test.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the MediaWiki extension MediaViewer. 3 | * 4 | * MediaViewer is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * MediaViewer is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with MediaViewer. If not, see . 16 | */ 17 | 18 | const { ProgressBar } = require( 'mmv' ); 19 | 20 | QUnit.module( 'mmv.ui.ProgressBar', QUnit.newMwEnvironment() ); 21 | 22 | QUnit.test( 'Constructor sense check', ( assert ) => { 23 | const progressBar = new ProgressBar( $( '
' ) ); 24 | assert.true( progressBar instanceof ProgressBar, 'ProgressBar created sccessfully' ); 25 | assert.strictEqual( progressBar.$progress.hasClass( 'empty' ), true, 'ProgressBar starts empty' ); 26 | } ); 27 | 28 | QUnit.test( 'animateTo()', ( assert ) => { 29 | const $qf = $( '#qunit-fixture' ); 30 | const $div = $( '
' ).css( { width: 250, position: 'relative' } ).appendTo( $qf ); 31 | const progress = new ProgressBar( $div ); 32 | 33 | assert.strictEqual( progress.$progress.width(), 250, 'Progress bar is 250 wide' ); 34 | assert.strictEqual( progress.$progress.hasClass( 'empty' ), true, 'Progress bar is hidden' ); 35 | assert.strictEqual( progress.$percent.width(), 0, 'Progress bar\'s indicator is at 0' ); 36 | 37 | // Disable transition, as it messes with qunit test 38 | progress.$percent.css( 'transition', 'unset' ); 39 | progress.animateTo( 50 ); 40 | 41 | assert.strictEqual( progress.$progress.hasClass( 'empty' ), false, 'Progress bar is visible' ); 42 | assert.strictEqual( progress.$percent.width(), 125, 'Progress bar\'s indicator is at half' ); 43 | 44 | progress.animateTo( 100 ); 45 | 46 | assert.strictEqual( progress.$progress.hasClass( 'empty' ), true, 'Progress bar is hidden' ); 47 | assert.strictEqual( progress.$percent.width(), 0, 'Progress bar\'s indicator is back to 0 and hidden' ); 48 | } ); 49 | 50 | QUnit.test( 'jumpTo()/hide()', ( assert ) => { 51 | const $qf = $( '#qunit-fixture' ); 52 | const $div = $( '
' ).css( { width: 250, position: 'relative' } ).appendTo( $qf ); 53 | const progress = new ProgressBar( $div ); 54 | assert.strictEqual( progress.$progress.width(), 250, 'progress bar should have width of 250px' ); 55 | 56 | // Disable transition, as it messes with qunit test 57 | progress.$percent.css( 'transition', 'unset' ); 58 | assert.strictEqual( progress.$progress.hasClass( 'empty' ), true, 'Progress bar is hidden' ); 59 | assert.strictEqual( progress.$percent.width(), 0, 'Progress bar\'s indicator is at 0' ); 60 | 61 | progress.jumpTo( 50 ); 62 | 63 | assert.strictEqual( progress.$progress.hasClass( 'empty' ), false, 'Progress bar is visible' ); 64 | assert.strictEqual( progress.$percent.width(), 125, 'Progress bar\'s indicator is at half' ); 65 | 66 | progress.hide(); 67 | 68 | assert.strictEqual( progress.$progress.hasClass( 'empty' ), true, 'Progress bar is hidden' ); 69 | assert.strictEqual( progress.$percent.width(), 0, 'Progress bar\'s indicator is at 0' ); 70 | } ); 71 | -------------------------------------------------------------------------------- /tests/qunit/mmv/ui/mmv.ui.reuse.share.test.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the MediaWiki extension MultimediaViewer. 3 | * 4 | * MultimediaViewer is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * MultimediaViewer is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with MultimediaViewer. If not, see . 16 | */ 17 | 18 | const { Share } = require( 'mmv.ui.reuse' ); 19 | 20 | function makeShare() { 21 | return new Share( $( '#qunit-fixture' ) ); 22 | } 23 | 24 | QUnit.module( 'mmv.ui.reuse.share', QUnit.newMwEnvironment() ); 25 | 26 | QUnit.test( 'Sense test, object creation and UI construction', ( assert ) => { 27 | const share = makeShare(); 28 | 29 | assert.true( share instanceof Share, 'Share UI element is created.' ); 30 | assert.true( share.$pageInput[ 0 ] instanceof HTMLElement, 'Text field created.' ); 31 | } ); 32 | 33 | QUnit.test( 'set()/empty():', ( assert ) => { 34 | const share = makeShare(); 35 | const image = { // fake ImageModel 36 | title: new mw.Title( 'File:Foobar.jpg' ), 37 | url: 'https://upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg', 38 | descriptionUrl: '//commons.wikimedia.org/wiki/File:Foobar.jpg' 39 | }; 40 | 41 | assert.notStrictEqual( !share.$pageInput.val(), '', 'pageInput is empty.' ); 42 | 43 | share.select = function () { 44 | assert.true( true, 'Text has been selected after data is set.' ); 45 | }; 46 | 47 | share.set( image ); 48 | 49 | assert.notStrictEqual( share.$pageInput.val(), '', 'pageInput is not empty.' ); 50 | 51 | share.empty(); 52 | 53 | assert.notStrictEqual( !share.$pageInput.val(), '', 'pageInput is empty.' ); 54 | } ); 55 | -------------------------------------------------------------------------------- /tests/qunit/mmv/ui/mmv.ui.stripeButtons.test.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the MediaWiki extension MediaViewer. 3 | * 4 | * MediaViewer is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * MediaViewer is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with MediaViewer. If not, see . 16 | */ 17 | 18 | const { StripeButtons } = require( 'mmv' ); 19 | 20 | QUnit.module( 'mmv.ui.StripeButtons', QUnit.newMwEnvironment() ); 21 | 22 | function createStripeButtons() { 23 | const $fixture = $( '#qunit-fixture' ); 24 | return new StripeButtons( $fixture ); 25 | } 26 | 27 | QUnit.test( 'Sense test, object creation and UI construction', ( assert ) => { 28 | const oldMwUserIsAnon = mw.user.isAnon; 29 | 30 | // first pretend we are anonymous 31 | mw.user.isAnon = () => true; 32 | let buttons = createStripeButtons(); 33 | 34 | assert.true( buttons instanceof StripeButtons, 'UI element is created.' ); 35 | assert.strictEqual( buttons.$descriptionPage.length, 1, 'File page button created for anon.' ); 36 | 37 | // now pretend we are logged in 38 | mw.user.isAnon = () => false; 39 | buttons = createStripeButtons(); 40 | 41 | assert.strictEqual( buttons.$descriptionPage.length, 1, 'File page button created for logged in.' ); 42 | 43 | mw.user.isAnon = oldMwUserIsAnon; 44 | } ); 45 | 46 | QUnit.test( 'set()/empty() sense test:', ( assert ) => { 47 | const buttons = createStripeButtons(); 48 | const fakeImageInfo = { descriptionUrl: '//commons.wikimedia.org/wiki/File:Foo.jpg' }; 49 | 50 | buttons.set( null, fakeImageInfo ); 51 | buttons.empty(); 52 | 53 | assert.true( true, 'No error on set()/empty().' ); 54 | } ); 55 | 56 | QUnit.test( 'Description page button', ( assert ) => { 57 | const $qf = $( '#qunit-fixture' ); 58 | const buttons = new StripeButtons( $qf ); 59 | const $button = buttons.$descriptionPage; 60 | const descriptionUrl = 'http://example.com/desc'; 61 | const descriptionUrlCommons = 'https://commons.wikimedia.org/desc'; 62 | const descriptionUrl2 = 'http://example.com/different-desc'; 63 | 64 | buttons.set( null, { descriptionUrl } ); 65 | 66 | assert.strictEqual( $button.hasClass( 'mw-mmv-repo-button-commons' ), false, 'Button does not have commons class non-Commons files' ); 67 | assert.strictEqual( $button.find( 'a' ).addBack().filter( 'a' ).attr( 'href' ), descriptionUrl, 'Description page link is correct' ); 68 | 69 | buttons.set( null, { descriptionUrl: descriptionUrlCommons } ); 70 | 71 | assert.strictEqual( $button.hasClass( 'mw-mmv-repo-button-commons' ), true, 'Button commons class for Commons files' ); 72 | 73 | buttons.set( null, { 74 | descriptionUrl, 75 | pageID: 1, 76 | title: { getUrl: () => descriptionUrl2 } 77 | } ); 78 | 79 | assert.strictEqual( 80 | $button.hasClass( 'mw-mmv-repo-button-commons' ), false, 81 | 'Button does not have commons class for Commons files with local description page' 82 | ); 83 | assert.strictEqual( 84 | $button.find( 'a' ).addBack().filter( 'a' ).attr( 'href' ), descriptionUrl2, 85 | 'Description page link for Commons files with local description page is correct' 86 | ); 87 | } ); 88 | -------------------------------------------------------------------------------- /tests/qunit/mmv/ui/mmv.ui.test.js: -------------------------------------------------------------------------------- 1 | const { UiElement } = require( 'mmv' ); 2 | 3 | QUnit.module( 'mmv.ui', QUnit.newMwEnvironment( { 4 | beforeEach: function () { 5 | this.clock = this.sandbox.useFakeTimers(); 6 | } 7 | } ) ); 8 | 9 | QUnit.test( 'handleEvent()', ( assert ) => { 10 | const element = new UiElement( $( '
' ) ); 11 | 12 | element.handleEvent( 'mmv-foo', () => { 13 | assert.true( true, 'Event is handled' ); 14 | } ); 15 | 16 | $( document ).trigger( new $.Event( 'mmv-foo' ) ); 17 | 18 | element.clearEvents(); 19 | 20 | $( document ).trigger( new $.Event( 'mmv-foo' ) ); 21 | } ); 22 | -------------------------------------------------------------------------------- /tests/qunit/mmv/ui/mmv.ui.truncatableTextField.test.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the MediaWiki extension MediaViewer. 3 | * 4 | * MediaViewer is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * MediaViewer is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with MediaViewer. If not, see . 16 | */ 17 | 18 | const { TruncatableTextField } = require( 'mmv' ); 19 | 20 | QUnit.module( 'mmv.ui.TruncatableTextField', QUnit.newMwEnvironment() ); 21 | 22 | /** 23 | * Create a textfield that can contain exactly width x height characters 24 | * 25 | * @param {number} width 26 | * @param {number} height 27 | * @param {jQuery} $qf fixture element 28 | * @param {Object} sandbox sinon instance 29 | * @return {TruncatableTextField} 30 | */ 31 | function getField( width, height, $qf ) { 32 | const $container = $( '
' ).appendTo( $qf ); 33 | const $element = $( '' ); 34 | const ttf = new TruncatableTextField( $container, $element, {} ); 35 | 36 | $container.css( { 37 | fontFamily: 'monospace', 38 | lineHeight: 1, 39 | width: width + 'ch', 40 | height: height + 'em' 41 | } ); 42 | 43 | return ttf; 44 | } 45 | 46 | QUnit.test( 'Normal constructor', ( assert ) => { 47 | const $container = $( '#qunit-fixture' ); 48 | const $element = $( '
' ).appendTo( $container ).text( 'This is a unique string.' ); 49 | const ttf = new TruncatableTextField( $container, $element ); 50 | 51 | assert.strictEqual( ttf.$element.text(), 'This is a unique string.', 'The constructor set the element to the right thing.' ); 52 | assert.strictEqual( ttf.$element.closest( '#qunit-fixture' ).length, 1, 'The constructor put the element into the container.' ); 53 | } ); 54 | 55 | QUnit.test( 'Set method', function ( assert ) { 56 | const $qf = $( '#qunit-fixture' ); 57 | const ttf = getField( 3, 2, $qf ); 58 | 59 | ttf.shrink = this.sandbox.stub(); 60 | ttf.set( 'abc' ); 61 | assert.strictEqual( ttf.$element.text(), 'abc', 'Text is set accurately.' ); 62 | } ); 63 | --------------------------------------------------------------------------------